module.exports = "324958\n{\"version\":0,\"id\":\"21c59a9e2c57a1e5e2d06d5b19ec0c7727dbffaf779dba102ff91aaa3207e3f7\",\"main\":\"/qvac/worker.entry.mjs\",\"imports\":{},\"resolutions\":{\"/node_modules/@hyperswarm/secret-stream/index.js\":{\"#package\":\"/node_modules/@hyperswarm/secret-stream/package.json\",\"./lib/bridge\":\"/node_modules/@hyperswarm/secret-stream/lib/bridge.js\",\"./lib/handshake\":\"/node_modules/@hyperswarm/secret-stream/lib/handshake.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\",\"sodium-secretstream\":\"/node_modules/sodium-secretstream/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\",\"streamx\":\"/node_modules/streamx/index.js\",\"timeout-refresh\":\"/node_modules/timeout-refresh/index.js\",\"unslab\":\"/node_modules/unslab/index.js\"},\"/node_modules/@hyperswarm/secret-stream/lib/bridge.js\":{\"#package\":\"/node_modules/@hyperswarm/secret-stream/package.json\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/@hyperswarm/secret-stream/lib/handshake.js\":{\"#package\":\"/node_modules/@hyperswarm/secret-stream/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"noise-curve-ed\":\"/node_modules/noise-curve-ed/index.js\",\"noise-handshake\":\"/node_modules/noise-handshake/noise.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/@hyperswarm/secret-stream/package.json\":{},\"/node_modules/@qvac/decoder-audio/constants.js\":{\"#package\":\"/node_modules/@qvac/decoder-audio/package.json\"},\"/node_modules/@qvac/decoder-audio/package.json\":{},\"/node_modules/@qvac/diagnostics/index.js\":{\"#package\":\"/node_modules/@qvac/diagnostics/package.json\",\"os\":\"/node_modules/bare-os/index.js\",\"which-runtime\":\"/node_modules/which-runtime/index.js\"},\"/node_modules/@qvac/diagnostics/package.json\":{},\"/node_modules/@qvac/error/index.js\":{\"#package\":\"/node_modules/@qvac/error/package.json\"},\"/node_modules/@qvac/error/package.json\":{},\"/node_modules/@qvac/infer-base/index.js\":{\"#package\":\"/node_modules/@qvac/infer-base/package.json\",\"./src/QvacResponse\":\"/node_modules/@qvac/infer-base/src/QvacResponse.js\",\"./src/error\":\"/node_modules/@qvac/infer-base/src/error.js\",\"./src/utils/createJobHandler\":\"/node_modules/@qvac/infer-base/src/utils/createJobHandler.js\",\"./src/utils/exclusiveRunQueue\":\"/node_modules/@qvac/infer-base/src/utils/exclusiveRunQueue.js\",\"./src/utils/getApiDefinition\":\"/node_modules/@qvac/infer-base/src/utils/getApiDefinition.js\",\"./src/utils/progressReport\":\"/node_modules/@qvac/infer-base/src/utils/progressReport.js\",\"@qvac/diagnostics\":\"/node_modules/@qvac/diagnostics/index.js\",\"@qvac/logging\":\"/node_modules/@qvac/logging/index.js\",\"bare-os\":\"/node_modules/bare-os/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/infer-base/package.json\":{},\"/node_modules/@qvac/infer-base/src/QvacResponse.js\":{\"#package\":\"/node_modules/@qvac/infer-base/package.json\",\"bare-events\":\"/node_modules/bare-events/index.js\"},\"/node_modules/@qvac/infer-base/src/error.js\":{\"#package\":\"/node_modules/@qvac/infer-base/package.json\",\"../package.json\":\"/node_modules/@qvac/infer-base/package.json\",\"@qvac/error\":\"/node_modules/@qvac/error/index.js\"},\"/node_modules/@qvac/infer-base/src/utils/createJobHandler.js\":{\"#package\":\"/node_modules/@qvac/infer-base/package.json\",\"../QvacResponse\":\"/node_modules/@qvac/infer-base/src/QvacResponse.js\"},\"/node_modules/@qvac/infer-base/src/utils/exclusiveRunQueue.js\":{\"#package\":\"/node_modules/@qvac/infer-base/package.json\"},\"/node_modules/@qvac/infer-base/src/utils/getApiDefinition.js\":{\"#package\":\"/node_modules/@qvac/infer-base/package.json\",\"bare-os\":\"/node_modules/bare-os/index.js\"},\"/node_modules/@qvac/infer-base/src/utils/progressReport.js\":{\"#package\":\"/node_modules/@qvac/infer-base/package.json\"},\"/node_modules/@qvac/langdetect-text/index.js\":{\"#package\":\"/node_modules/@qvac/langdetect-text/package.json\",\"tinyld/heavy\":\"/node_modules/tinyld/dist/tinyld.heavy.node.js\"},\"/node_modules/@qvac/langdetect-text/package.json\":{},\"/node_modules/@qvac/llm-llamacpp/addon.js\":{\"#package\":\"/node_modules/@qvac/llm-llamacpp/package.json\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/llm-llamacpp/addonLogging.js\":{\"#package\":\"/node_modules/@qvac/llm-llamacpp/package.json\",\"./binding\":\"/node_modules/@qvac/llm-llamacpp/binding.js\"},\"/node_modules/@qvac/llm-llamacpp/batchHandler.js\":{\"#package\":\"/node_modules/@qvac/llm-llamacpp/package.json\",\"@qvac/infer-base\":\"/node_modules/@qvac/infer-base/index.js\"},\"/node_modules/@qvac/llm-llamacpp/binding.js\":{\"#package\":\"/node_modules/@qvac/llm-llamacpp/package.json\",\".\":\"linked:qvac__llm-llamacpp.0.38.2.framework/qvac__llm-llamacpp.0.38.2\"},\"/node_modules/@qvac/llm-llamacpp/index.js\":{\"#package\":\"/node_modules/@qvac/llm-llamacpp/package.json\",\"./addon\":\"/node_modules/@qvac/llm-llamacpp/addon.js\",\"./batchHandler\":\"/node_modules/@qvac/llm-llamacpp/batchHandler.js\",\"./binding\":\"/node_modules/@qvac/llm-llamacpp/binding.js\",\"@qvac/infer-base\":\"/node_modules/@qvac/infer-base/index.js\",\"@qvac/logging\":\"/node_modules/@qvac/logging/index.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/llm-llamacpp/package.json\":{},\"/node_modules/@qvac/logging/constants.js\":{\"#package\":\"/node_modules/@qvac/logging/package.json\"},\"/node_modules/@qvac/logging/index.js\":{\"#package\":\"/node_modules/@qvac/logging/package.json\",\"./constants\":\"/node_modules/@qvac/logging/constants.js\",\"./env\":\"/node_modules/bare-env/index.js\"},\"/node_modules/@qvac/logging/package.json\":{},\"/node_modules/@qvac/rag/index.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"./src/RAG\":\"/node_modules/@qvac/rag/src/RAG.js\",\"./src/adapters/chunker/BaseChunkAdapter\":\"/node_modules/@qvac/rag/src/adapters/chunker/BaseChunkAdapter.js\",\"./src/adapters/chunker/LLMChunkAdapter\":\"/node_modules/@qvac/rag/src/adapters/chunker/LLMChunkAdapter.js\",\"./src/adapters/database/BaseDBAdapter\":\"/node_modules/@qvac/rag/src/adapters/database/BaseDBAdapter.js\",\"./src/adapters/database/HyperDBAdapter\":\"/node_modules/@qvac/rag/src/adapters/database/HyperDBAdapter.js\",\"./src/adapters/llm/BaseLlmAdapter\":\"/node_modules/@qvac/rag/src/adapters/llm/BaseLlmAdapter.js\",\"./src/adapters/llm/HttpLlmAdapter\":\"/node_modules/@qvac/rag/src/adapters/llm/HttpLlmAdapter.js\",\"./src/adapters/llm/QvacLlmAdapter\":\"/node_modules/@qvac/rag/src/adapters/llm/QvacLlmAdapter.js\",\"./src/errors\":\"/node_modules/@qvac/rag/src/errors.js\",\"./src/schemas/embedding\":\"/node_modules/@qvac/rag/src/schemas/embedding.js\",\"./src/types\":\"/node_modules/@qvac/rag/src/types.js\"},\"/node_modules/@qvac/rag/package.json\":{\"#package\":\"/node_modules/@qvac/rag/package.json\"},\"/node_modules/@qvac/rag/src/RAG.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"./adapters/llm/BaseLlmAdapter\":\"/node_modules/@qvac/rag/src/adapters/llm/BaseLlmAdapter.js\",\"./errors\":\"/node_modules/@qvac/rag/src/errors.js\",\"./services/IngestionService\":\"/node_modules/@qvac/rag/src/services/IngestionService.js\",\"./services/RetrievalService\":\"/node_modules/@qvac/rag/src/services/RetrievalService.js\",\"./services/core/ChunkingService\":\"/node_modules/@qvac/rag/src/services/core/ChunkingService.js\",\"./services/core/EmbeddingService\":\"/node_modules/@qvac/rag/src/services/core/EmbeddingService.js\",\"@qvac/logging\":\"/node_modules/@qvac/logging/index.js\",\"ready-resource\":\"/node_modules/ready-resource/index.js\"},\"/node_modules/@qvac/rag/src/adapters/chunker/BaseChunkAdapter.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../../errors\":\"/node_modules/@qvac/rag/src/errors.js\"},\"/node_modules/@qvac/rag/src/adapters/chunker/LLMChunkAdapter.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../../errors\":\"/node_modules/@qvac/rag/src/errors.js\",\"../../utils/helper\":\"/node_modules/@qvac/rag/src/utils/helper.js\",\"./BaseChunkAdapter\":\"/node_modules/@qvac/rag/src/adapters/chunker/BaseChunkAdapter.js\",\"./Tokenizer\":\"/node_modules/@qvac/rag/src/adapters/chunker/Tokenizer.js\",\"llm-splitter\":\"/node_modules/llm-splitter/dist/index.js\"},\"/node_modules/@qvac/rag/src/adapters/chunker/Tokenizer.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\"},\"/node_modules/@qvac/rag/src/adapters/database/BaseDBAdapter.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../../errors\":\"/node_modules/@qvac/rag/src/errors.js\",\"ready-resource\":\"/node_modules/ready-resource/index.js\"},\"/node_modules/@qvac/rag/src/adapters/database/HyperDBAdapter.js\":{\"#crypto\":\"/node_modules/bare-crypto/index.js\",\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../../errors\":\"/node_modules/@qvac/rag/src/errors.js\",\"../../utils/helper\":\"/node_modules/@qvac/rag/src/utils/helper.js\",\"./BaseDBAdapter\":\"/node_modules/@qvac/rag/src/adapters/database/BaseDBAdapter.js\",\"./hyperspec/hyperdb/index.js\":\"/node_modules/@qvac/rag/src/adapters/database/hyperspec/hyperdb/index.js\",\"@qvac/logging\":\"/node_modules/@qvac/logging/index.js\",\"hyperdb\":\"/node_modules/hyperdb/index.js\"},\"/node_modules/@qvac/rag/src/adapters/database/hyperspec/hyperdb/index.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"./messages.js\":\"/node_modules/@qvac/rag/src/adapters/database/hyperspec/hyperdb/messages.js\",\"hyperdb/runtime\":\"/node_modules/hyperdb/runtime.js\"},\"/node_modules/@qvac/rag/src/adapters/database/hyperspec/hyperdb/messages.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"hyperschema/runtime\":\"/node_modules/hyperschema/runtime.cjs\"},\"/node_modules/@qvac/rag/src/adapters/llm/BaseLlmAdapter.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../../errors\":\"/node_modules/@qvac/rag/src/errors.js\"},\"/node_modules/@qvac/rag/src/adapters/llm/HttpLlmAdapter.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../../errors\":\"/node_modules/@qvac/rag/src/errors.js\",\"../../shims/resolve-fetch\":\"/node_modules/@qvac/rag/src/shims/resolve-fetch.js\",\"./BaseLlmAdapter\":\"/node_modules/@qvac/rag/src/adapters/llm/BaseLlmAdapter.js\"},\"/node_modules/@qvac/rag/src/adapters/llm/QvacLlmAdapter.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../../errors\":\"/node_modules/@qvac/rag/src/errors.js\",\"./BaseLlmAdapter\":\"/node_modules/@qvac/rag/src/adapters/llm/BaseLlmAdapter.js\"},\"/node_modules/@qvac/rag/src/errors.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../package.json\":\"/node_modules/@qvac/rag/package.json\",\"@qvac/error\":\"/node_modules/@qvac/error/index.js\"},\"/node_modules/@qvac/rag/src/schemas/embedding.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"zod\":\"/node_modules/zod/index.cjs\"},\"/node_modules/@qvac/rag/src/services/IngestionService.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../errors\":\"/node_modules/@qvac/rag/src/errors.js\",\"../schemas/embedding\":\"/node_modules/@qvac/rag/src/schemas/embedding.js\",\"../utils/helper\":\"/node_modules/@qvac/rag/src/utils/helper.js\",\"@qvac/logging\":\"/node_modules/@qvac/logging/index.js\"},\"/node_modules/@qvac/rag/src/services/RetrievalService.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../errors\":\"/node_modules/@qvac/rag/src/errors.js\",\"../utils/helper\":\"/node_modules/@qvac/rag/src/utils/helper.js\",\"@qvac/logging\":\"/node_modules/@qvac/logging/index.js\"},\"/node_modules/@qvac/rag/src/services/core/ChunkingService.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../../adapters/chunker/BaseChunkAdapter\":\"/node_modules/@qvac/rag/src/adapters/chunker/BaseChunkAdapter.js\",\"../../adapters/chunker/LLMChunkAdapter\":\"/node_modules/@qvac/rag/src/adapters/chunker/LLMChunkAdapter.js\",\"../../errors\":\"/node_modules/@qvac/rag/src/errors.js\",\"@qvac/logging\":\"/node_modules/@qvac/logging/index.js\"},\"/node_modules/@qvac/rag/src/services/core/EmbeddingService.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../../errors\":\"/node_modules/@qvac/rag/src/errors.js\",\"../../schemas/embedding\":\"/node_modules/@qvac/rag/src/schemas/embedding.js\",\"@qvac/logging\":\"/node_modules/@qvac/logging/index.js\"},\"/node_modules/@qvac/rag/src/shims/resolve-fetch.js\":{\"#fetch\":\"/node_modules/bare-fetch/index.js\",\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../errors\":\"/node_modules/@qvac/rag/src/errors.js\"},\"/node_modules/@qvac/rag/src/types.js\":{\"#package\":\"/node_modules/@qvac/rag/package.json\"},\"/node_modules/@qvac/rag/src/utils/helper.js\":{\"#crypto\":\"/node_modules/bare-crypto/index.js\",\"#package\":\"/node_modules/@qvac/rag/package.json\",\"../errors\":\"/node_modules/@qvac/rag/src/errors.js\"},\"/node_modules/@qvac/registry-client/index.js\":{\"#package\":\"/node_modules/@qvac/registry-client/package.json\",\"./lib/client\":\"/node_modules/@qvac/registry-client/lib/client.js\"},\"/node_modules/@qvac/registry-client/lib/client.js\":{\"#fs\":\"/node_modules/bare-fs/index.js\",\"#package\":\"/node_modules/@qvac/registry-client/package.json\",\"#path\":\"/node_modules/bare-path/index.js\",\"../utils/error\":\"/node_modules/@qvac/registry-client/utils/error.js\",\"../utils/retry\":\"/node_modules/@qvac/registry-client/utils/retry.js\",\"./config\":\"/node_modules/@qvac/registry-client/lib/config.js\",\"./logger\":\"/node_modules/@qvac/registry-client/lib/logger.js\",\"@qvac/registry-schema\":\"/node_modules/@qvac/registry-schema/index.js\",\"corestore\":\"/node_modules/corestore/index.js\",\"hyperblobs\":\"/node_modules/hyperblobs/index.js\",\"hypercore-id-encoding\":\"/node_modules/hypercore-id-encoding/index.js\",\"hyperswarm\":\"/node_modules/hyperswarm/index.js\",\"ready-resource\":\"/node_modules/ready-resource/index.js\"},\"/node_modules/@qvac/registry-client/lib/config.js\":{\"#os\":\"/node_modules/bare-os/index.js\",\"#package\":\"/node_modules/@qvac/registry-client/package.json\",\"#path\":\"/node_modules/bare-path/index.js\",\"../utils/env\":\"/node_modules/@qvac/registry-client/utils/env.js\",\"./logger\":\"/node_modules/@qvac/registry-client/lib/logger.js\",\"@qvac/registry-schema\":\"/node_modules/@qvac/registry-schema/index.js\"},\"/node_modules/@qvac/registry-client/lib/logger.js\":{\"#package\":\"/node_modules/@qvac/registry-client/package.json\"},\"/node_modules/@qvac/registry-client/package.json\":{},\"/node_modules/@qvac/registry-client/utils/env.js\":{\"#package\":\"/node_modules/@qvac/registry-client/package.json\"},\"/node_modules/@qvac/registry-client/utils/error.js\":{\"#package\":\"/node_modules/@qvac/registry-client/package.json\",\"../package.json\":\"/node_modules/@qvac/registry-client/package.json\",\"@qvac/error\":\"/node_modules/@qvac/error/index.js\"},\"/node_modules/@qvac/registry-client/utils/retry.js\":{\"#package\":\"/node_modules/@qvac/registry-client/package.json\"},\"/node_modules/@qvac/registry-schema/constants.js\":{\"#package\":\"/node_modules/@qvac/registry-schema/package.json\"},\"/node_modules/@qvac/registry-schema/db-helpers.js\":{\"#package\":\"/node_modules/@qvac/registry-schema/package.json\"},\"/node_modules/@qvac/registry-schema/db.js\":{\"#package\":\"/node_modules/@qvac/registry-schema/package.json\",\"./constants\":\"/node_modules/@qvac/registry-schema/constants.js\",\"./spec/hyperdb\":\"/node_modules/@qvac/registry-schema/spec/hyperdb/index.js\",\"hyperdb\":\"/node_modules/hyperdb/index.js\",\"ready-resource\":\"/node_modules/ready-resource/index.js\"},\"/node_modules/@qvac/registry-schema/index.js\":{\"#package\":\"/node_modules/@qvac/registry-schema/package.json\",\"./constants\":\"/node_modules/@qvac/registry-schema/constants.js\",\"./db\":\"/node_modules/@qvac/registry-schema/db.js\",\"./db-helpers\":\"/node_modules/@qvac/registry-schema/db-helpers.js\",\"./spec/hyperdb\":\"/node_modules/@qvac/registry-schema/spec/hyperdb/index.js\",\"./spec/hyperdispatch\":\"/node_modules/@qvac/registry-schema/spec/hyperdispatch/index.js\",\"./spec/hyperschema\":\"/node_modules/@qvac/registry-schema/spec/hyperschema/index.js\"},\"/node_modules/@qvac/registry-schema/package.json\":{},\"/node_modules/@qvac/registry-schema/spec/hyperdb/index.js\":{\"#package\":\"/node_modules/@qvac/registry-schema/package.json\",\"../../db-helpers.js\":\"/node_modules/@qvac/registry-schema/db-helpers.js\",\"./messages.js\":\"/node_modules/@qvac/registry-schema/spec/hyperdb/messages.js\",\"hyperdb/runtime\":\"/node_modules/hyperdb/runtime.js\"},\"/node_modules/@qvac/registry-schema/spec/hyperdb/messages.js\":{\"#package\":\"/node_modules/@qvac/registry-schema/package.json\",\"hyperschema/runtime\":\"/node_modules/hyperschema/runtime.cjs\"},\"/node_modules/@qvac/registry-schema/spec/hyperdispatch/index.js\":{\"#package\":\"/node_modules/@qvac/registry-schema/package.json\",\"./messages.js\":\"/node_modules/@qvac/registry-schema/spec/hyperdispatch/messages.js\",\"hyperdispatch/runtime\":\"/node_modules/hyperdispatch/runtime.cjs\"},\"/node_modules/@qvac/registry-schema/spec/hyperdispatch/messages.js\":{\"#package\":\"/node_modules/@qvac/registry-schema/package.json\",\"hyperschema/runtime\":\"/node_modules/hyperschema/runtime.cjs\"},\"/node_modules/@qvac/registry-schema/spec/hyperschema/index.js\":{\"#package\":\"/node_modules/@qvac/registry-schema/package.json\",\"hyperschema/runtime\":\"/node_modules/hyperschema/runtime.cjs\"},\"/node_modules/@qvac/sdk/dist/constants/audio.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"@qvac/decoder-audio/constants.js\":\"/node_modules/@qvac/decoder-audio/constants.js\"},\"/node_modules/@qvac/sdk/dist/constants/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./audio.js\":\"/node_modules/@qvac/sdk/dist/constants/audio.js\",\"./registry.js\":\"/node_modules/@qvac/sdk/dist/constants/registry.js\"},\"/node_modules/@qvac/sdk/dist/constants/registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/logging/addon.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./registry.js\":\"/node_modules/@qvac/sdk/dist/logging/registry.js\"},\"/node_modules/@qvac/sdk/dist/logging/base-logger.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./registry.js\":\"/node_modules/@qvac/sdk/dist/logging/registry.js\",\"./utils.js\":\"/node_modules/@qvac/sdk/dist/logging/utils.js\",\"@qvac/logging\":\"/node_modules/@qvac/logging/index.js\",\"@qvac/logging/constants.js\":\"/node_modules/@qvac/logging/constants.js\"},\"/node_modules/@qvac/sdk/dist/logging/client-logger.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./logger.js\":\"/node_modules/@qvac/sdk/dist/logging/logger.js\"},\"/node_modules/@qvac/sdk/dist/logging/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./addon.js\":\"/node_modules/@qvac/sdk/dist/logging/addon.js\",\"./client-logger.js\":\"/node_modules/@qvac/sdk/dist/logging/client-logger.js\",\"./logger.js\":\"/node_modules/@qvac/sdk/dist/logging/logger.js\",\"./namespaces.js\":\"/node_modules/@qvac/sdk/dist/logging/namespaces.js\",\"./registry.js\":\"/node_modules/@qvac/sdk/dist/logging/registry.js\",\"./server-logger.js\":\"/node_modules/@qvac/sdk/dist/logging/server-logger.js\",\"./stream-logger.js\":\"/node_modules/@qvac/sdk/dist/logging/stream-logger.js\",\"./utils.js\":\"/node_modules/@qvac/sdk/dist/logging/utils.js\"},\"/node_modules/@qvac/sdk/dist/logging/logger.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./base-logger.js\":\"/node_modules/@qvac/sdk/dist/logging/base-logger.js\",\"./transport.js\":\"/node_modules/@qvac/sdk/dist/logging/transport.js\"},\"/node_modules/@qvac/sdk/dist/logging/namespaces.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../schemas/model-types.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-types.js\"},\"/node_modules/@qvac/sdk/dist/logging/registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/logging/server-logger.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./namespaces.js\":\"/node_modules/@qvac/sdk/dist/logging/namespaces.js\",\"./stream-logger.js\":\"/node_modules/@qvac/sdk/dist/logging/stream-logger.js\"},\"/node_modules/@qvac/sdk/dist/logging/stream-logger.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../server/bare/registry/logging-stream-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/logging-stream-registry.js\",\"./base-logger.js\":\"/node_modules/@qvac/sdk/dist/logging/base-logger.js\"},\"/node_modules/@qvac/sdk/dist/logging/transport.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/logging/utils.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"@qvac/logging/constants.js\":\"/node_modules/@qvac/logging/constants.js\",\"fast-safe-stringify\":\"/node_modules/fast-safe-stringify/index.js\"},\"/node_modules/@qvac/sdk/dist/models/registry/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./models.js\":\"/node_modules/@qvac/sdk/dist/models/registry/models.js\"},\"/node_modules/@qvac/sdk/dist/models/registry/models.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/profiling/aggregator.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../utils/global-singleton.js\":\"/node_modules/@qvac/sdk/dist/utils/global-singleton.js\",\"./ring-buffer.js\":\"/node_modules/@qvac/sdk/dist/profiling/ring-buffer.js\"},\"/node_modules/@qvac/sdk/dist/profiling/clock.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/profiling/controller.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../utils/global-singleton.js\":\"/node_modules/@qvac/sdk/dist/utils/global-singleton.js\",\"./aggregator.js\":\"/node_modules/@qvac/sdk/dist/profiling/aggregator.js\",\"./clock.js\":\"/node_modules/@qvac/sdk/dist/profiling/clock.js\"},\"/node_modules/@qvac/sdk/dist/profiling/envelope.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\"},\"/node_modules/@qvac/sdk/dist/profiling/events.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./clock.js\":\"/node_modules/@qvac/sdk/dist/profiling/clock.js\",\"./controller.js\":\"/node_modules/@qvac/sdk/dist/profiling/controller.js\"},\"/node_modules/@qvac/sdk/dist/profiling/exporters.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./aggregator.js\":\"/node_modules/@qvac/sdk/dist/profiling/aggregator.js\",\"./clock.js\":\"/node_modules/@qvac/sdk/dist/profiling/clock.js\",\"./controller.js\":\"/node_modules/@qvac/sdk/dist/profiling/controller.js\"},\"/node_modules/@qvac/sdk/dist/profiling/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./clock.js\":\"/node_modules/@qvac/sdk/dist/profiling/clock.js\",\"./controller.js\":\"/node_modules/@qvac/sdk/dist/profiling/controller.js\",\"./envelope.js\":\"/node_modules/@qvac/sdk/dist/profiling/envelope.js\",\"./events.js\":\"/node_modules/@qvac/sdk/dist/profiling/events.js\",\"./exporters.js\":\"/node_modules/@qvac/sdk/dist/profiling/exporters.js\"},\"/node_modules/@qvac/sdk/dist/profiling/model-execution.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\"},\"/node_modules/@qvac/sdk/dist/profiling/ring-buffer.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../utils/errors-client.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-client.js\"},\"/node_modules/@qvac/sdk/dist/schemas/archive.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/batch-completion-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./completion-event.js\":\"/node_modules/@qvac/sdk/dist/schemas/completion-event.js\",\"./completion-stream.js\":\"/node_modules/@qvac/sdk/dist/schemas/completion-stream.js\",\"./mcp-adapter.js\":\"/node_modules/@qvac/sdk/dist/schemas/mcp-adapter.js\",\"./tools.js\":\"/node_modules/@qvac/sdk/dist/schemas/tools.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/bci-config.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-src-utils.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/bci.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./transcription.js\":\"/node_modules/@qvac/sdk/dist/schemas/transcription.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/cancel.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/classification.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/common.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./batch-completion-stream.js\":\"/node_modules/@qvac/sdk/dist/schemas/batch-completion-stream.js\",\"./bci.js\":\"/node_modules/@qvac/sdk/dist/schemas/bci.js\",\"./cancel.js\":\"/node_modules/@qvac/sdk/dist/schemas/cancel.js\",\"./classification.js\":\"/node_modules/@qvac/sdk/dist/schemas/classification.js\",\"./completion-stream.js\":\"/node_modules/@qvac/sdk/dist/schemas/completion-stream.js\",\"./delete-cache.js\":\"/node_modules/@qvac/sdk/dist/schemas/delete-cache.js\",\"./download-asset.js\":\"/node_modules/@qvac/sdk/dist/schemas/download-asset.js\",\"./embed.js\":\"/node_modules/@qvac/sdk/dist/schemas/embed.js\",\"./error.js\":\"/node_modules/@qvac/sdk/dist/schemas/error.js\",\"./finetune.js\":\"/node_modules/@qvac/sdk/dist/schemas/finetune.js\",\"./get-loaded-model-info.js\":\"/node_modules/@qvac/sdk/dist/schemas/get-loaded-model-info.js\",\"./get-model-info.js\":\"/node_modules/@qvac/sdk/dist/schemas/get-model-info.js\",\"./heartbeat.js\":\"/node_modules/@qvac/sdk/dist/schemas/heartbeat.js\",\"./load-model.js\":\"/node_modules/@qvac/sdk/dist/schemas/load-model.js\",\"./logging-stream.js\":\"/node_modules/@qvac/sdk/dist/schemas/logging-stream.js\",\"./ocr.js\":\"/node_modules/@qvac/sdk/dist/schemas/ocr.js\",\"./plugin.js\":\"/node_modules/@qvac/sdk/dist/schemas/plugin.js\",\"./profiling.js\":\"/node_modules/@qvac/sdk/dist/schemas/profiling.js\",\"./provide.js\":\"/node_modules/@qvac/sdk/dist/schemas/provide.js\",\"./rag.js\":\"/node_modules/@qvac/sdk/dist/schemas/rag.js\",\"./registry.js\":\"/node_modules/@qvac/sdk/dist/schemas/registry.js\",\"./resume.js\":\"/node_modules/@qvac/sdk/dist/schemas/resume.js\",\"./sdcpp-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdcpp-config.js\",\"./state.js\":\"/node_modules/@qvac/sdk/dist/schemas/state.js\",\"./stop-provide.js\":\"/node_modules/@qvac/sdk/dist/schemas/stop-provide.js\",\"./suspend.js\":\"/node_modules/@qvac/sdk/dist/schemas/suspend.js\",\"./text-to-speech.js\":\"/node_modules/@qvac/sdk/dist/schemas/text-to-speech.js\",\"./transcription.js\":\"/node_modules/@qvac/sdk/dist/schemas/transcription.js\",\"./translate.js\":\"/node_modules/@qvac/sdk/dist/schemas/translate.js\",\"./unload-model.js\":\"/node_modules/@qvac/sdk/dist/schemas/unload-model.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/completion-event.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./tools.js\":\"/node_modules/@qvac/sdk/dist/schemas/tools.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/completion-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./completion-event.js\":\"/node_modules/@qvac/sdk/dist/schemas/completion-event.js\",\"./llamacpp-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/llamacpp-config.js\",\"./tools.js\":\"/node_modules/@qvac/sdk/dist/schemas/tools.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/delegate.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/delete-cache.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/download-asset.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-src-utils.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/embed.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/engine-addon-map.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-types.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-types.js\",\"./plugin.js\":\"/node_modules/@qvac/sdk/dist/schemas/plugin.js\",\"./registry.js\":\"/node_modules/@qvac/sdk/dist/schemas/registry.js\"},\"/node_modules/@qvac/sdk/dist/schemas/error.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../utils/zod-error.js\":\"/node_modules/@qvac/sdk/dist/utils/zod-error.js\",\"@qvac/error\":\"/node_modules/@qvac/error/index.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/finetune.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/get-loaded-model-info.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./completion-stream.js\":\"/node_modules/@qvac/sdk/dist/schemas/completion-stream.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/get-model-info.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/heartbeat.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./delegate.js\":\"/node_modules/@qvac/sdk/dist/schemas/delegate.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./archive.js\":\"/node_modules/@qvac/sdk/dist/schemas/archive.js\",\"./batch-completion-stream.js\":\"/node_modules/@qvac/sdk/dist/schemas/batch-completion-stream.js\",\"./bci-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/bci-config.js\",\"./bci.js\":\"/node_modules/@qvac/sdk/dist/schemas/bci.js\",\"./cancel.js\":\"/node_modules/@qvac/sdk/dist/schemas/cancel.js\",\"./classification.js\":\"/node_modules/@qvac/sdk/dist/schemas/classification.js\",\"./common.js\":\"/node_modules/@qvac/sdk/dist/schemas/common.js\",\"./completion-event.js\":\"/node_modules/@qvac/sdk/dist/schemas/completion-event.js\",\"./completion-stream.js\":\"/node_modules/@qvac/sdk/dist/schemas/completion-stream.js\",\"./delegate.js\":\"/node_modules/@qvac/sdk/dist/schemas/delegate.js\",\"./delete-cache.js\":\"/node_modules/@qvac/sdk/dist/schemas/delete-cache.js\",\"./download-asset.js\":\"/node_modules/@qvac/sdk/dist/schemas/download-asset.js\",\"./embed.js\":\"/node_modules/@qvac/sdk/dist/schemas/embed.js\",\"./error.js\":\"/node_modules/@qvac/sdk/dist/schemas/error.js\",\"./finetune.js\":\"/node_modules/@qvac/sdk/dist/schemas/finetune.js\",\"./get-loaded-model-info.js\":\"/node_modules/@qvac/sdk/dist/schemas/get-loaded-model-info.js\",\"./get-model-info.js\":\"/node_modules/@qvac/sdk/dist/schemas/get-model-info.js\",\"./heartbeat.js\":\"/node_modules/@qvac/sdk/dist/schemas/heartbeat.js\",\"./json-schema.js\":\"/node_modules/@qvac/sdk/dist/schemas/json-schema.js\",\"./llamacpp-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/llamacpp-config.js\",\"./load-model.js\":\"/node_modules/@qvac/sdk/dist/schemas/load-model.js\",\"./logging-stream.js\":\"/node_modules/@qvac/sdk/dist/schemas/logging-stream.js\",\"./mcp-adapter.js\":\"/node_modules/@qvac/sdk/dist/schemas/mcp-adapter.js\",\"./model-src-utils.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\",\"./model-types.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-types.js\",\"./ocr.js\":\"/node_modules/@qvac/sdk/dist/schemas/ocr.js\",\"./plugin.js\":\"/node_modules/@qvac/sdk/dist/schemas/plugin.js\",\"./profiling.js\":\"/node_modules/@qvac/sdk/dist/schemas/profiling.js\",\"./provide.js\":\"/node_modules/@qvac/sdk/dist/schemas/provide.js\",\"./rag.js\":\"/node_modules/@qvac/sdk/dist/schemas/rag.js\",\"./registry.js\":\"/node_modules/@qvac/sdk/dist/schemas/registry.js\",\"./reload-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/reload-config.js\",\"./resume.js\":\"/node_modules/@qvac/sdk/dist/schemas/resume.js\",\"./runtime-context.js\":\"/node_modules/@qvac/sdk/dist/schemas/runtime-context.js\",\"./sdcpp-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdcpp-config.js\",\"./sdk-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdk-config.js\",\"./sdk-errors-client.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-client.js\",\"./sdk-errors-registry.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-registry.js\",\"./sdk-errors-server.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-server.js\",\"./shard.js\":\"/node_modules/@qvac/sdk/dist/schemas/shard.js\",\"./state.js\":\"/node_modules/@qvac/sdk/dist/schemas/state.js\",\"./stop-provide.js\":\"/node_modules/@qvac/sdk/dist/schemas/stop-provide.js\",\"./suspend.js\":\"/node_modules/@qvac/sdk/dist/schemas/suspend.js\",\"./text-to-speech.js\":\"/node_modules/@qvac/sdk/dist/schemas/text-to-speech.js\",\"./tools.js\":\"/node_modules/@qvac/sdk/dist/schemas/tools.js\",\"./transcription-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/transcription-config.js\",\"./transcription.js\":\"/node_modules/@qvac/sdk/dist/schemas/transcription.js\",\"./translate.js\":\"/node_modules/@qvac/sdk/dist/schemas/translate.js\",\"./translation-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/translation-config.js\",\"./unload-model.js\":\"/node_modules/@qvac/sdk/dist/schemas/unload-model.js\",\"./vla.js\":\"/node_modules/@qvac/sdk/dist/schemas/vla.js\",\"@qvac/rag/errors.js\":\"/node_modules/@qvac/rag/src/errors.js\"},\"/node_modules/@qvac/sdk/dist/schemas/json-schema.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/schemas/llamacpp-config.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-src-utils.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\",\"./tools.js\":\"/node_modules/@qvac/sdk/dist/schemas/tools.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/load-model.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./bci-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/bci-config.js\",\"./classification.js\":\"/node_modules/@qvac/sdk/dist/schemas/classification.js\",\"./delegate.js\":\"/node_modules/@qvac/sdk/dist/schemas/delegate.js\",\"./llamacpp-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/llamacpp-config.js\",\"./model-src-utils.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\",\"./model-types.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-types.js\",\"./ocr.js\":\"/node_modules/@qvac/sdk/dist/schemas/ocr.js\",\"./reload-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/reload-config.js\",\"./sdcpp-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdcpp-config.js\",\"./text-to-speech.js\":\"/node_modules/@qvac/sdk/dist/schemas/text-to-speech.js\",\"./transcription-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/transcription-config.js\",\"./translation-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/translation-config.js\",\"./vla.js\":\"/node_modules/@qvac/sdk/dist/schemas/vla.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/logging-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/mcp-adapter.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./engine-addon-map.js\":\"/node_modules/@qvac/sdk/dist/schemas/engine-addon-map.js\",\"./model-types.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-types.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/model-types.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/ocr.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-src-utils.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/path-validation.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/plugin.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/profiling.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/provide.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/rag.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./path-validation.js\":\"/node_modules/@qvac/sdk/dist/schemas/path-validation.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-types.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-types.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/reload-config.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-types.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-types.js\",\"./transcription-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/transcription-config.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/resume.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/runtime-context.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/sdcpp-config.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-src-utils.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/sdk-config.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./llamacpp-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/llamacpp-config.js\",\"./logging-stream.js\":\"/node_modules/@qvac/sdk/dist/schemas/logging-stream.js\",\"./model-types.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-types.js\",\"./ocr.js\":\"/node_modules/@qvac/sdk/dist/schemas/ocr.js\",\"./runtime-context.js\":\"/node_modules/@qvac/sdk/dist/schemas/runtime-context.js\",\"./sdcpp-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdcpp-config.js\",\"./transcription-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/transcription-config.js\",\"./vla.js\":\"/node_modules/@qvac/sdk/dist/schemas/vla.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-client.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"@qvac/error\":\"/node_modules/@qvac/error/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-server.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"@qvac/error\":\"/node_modules/@qvac/error/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/shard.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/state.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/stop-provide.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/suspend.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/text-to-speech.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-src-utils.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/tools.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/transcription-config.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-src-utils.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/transcription.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/translate.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-types.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-types.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/translation-config.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./model-src-utils.js\":\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/unload-model.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/schemas/vla.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/delegate-connect-diagnostics.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../utils/withTimeout.js\":\"/node_modules/@qvac/sdk/dist/utils/withTimeout.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/delegate-rpc-client.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../utils/withTimeout.js\":\"/node_modules/@qvac/sdk/dist/utils/withTimeout.js\",\"../rpc/profiling/delegation-profiler.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/delegation-profiler.js\",\"../rpc/rpc-utils.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/rpc-utils.js\",\"./delegate-connect-diagnostics.js\":\"/node_modules/@qvac/sdk/dist/server/bare/delegate-connect-diagnostics.js\",\"./hyperswarm.js\":\"/node_modules/@qvac/sdk/dist/server/bare/hyperswarm.js\",\"./registry/config-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/config-registry.js\",\"bare-buffer\":\"/node_modules/bare-buffer/index.js\",\"bare-rpc\":\"/node_modules/bare-rpc/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/hyperswarm.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../schemas/provide.js\":\"/node_modules/@qvac/sdk/dist/schemas/provide.js\",\"./registry/config-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/config-registry.js\",\"./runtime-lifecycle.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime-lifecycle.js\",\"bare-buffer\":\"/node_modules/bare-buffer/index.js\",\"bare-crypto\":\"/node_modules/bare-crypto/index.js\",\"bare-env\":\"/node_modules/bare-env/index.js\",\"hyperswarm\":\"/node_modules/hyperswarm/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/ops/cancel.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../runtime/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/ops/embed.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"../../../profiling/model-execution.js\":\"/node_modules/@qvac/sdk/dist/profiling/model-execution.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../runtime/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\",\"../runtime/request-id.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-id.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/ops/kv-cache-utils.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"bare-buffer\":\"/node_modules/bare-buffer/index.js\",\"bare-crypto\":\"/node_modules/bare-crypto/index.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/ops/load-model.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../profiling/clock.js\":\"/node_modules/@qvac/sdk/dist/profiling/clock.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../plugins/index.js\":\"/node_modules/@qvac/sdk/dist/server/plugins/index.js\",\"../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"../registry/logging-stream-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/logging-stream-registry.js\",\"../registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/ops/translate.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"../../../profiling/model-execution.js\":\"/node_modules/@qvac/sdk/dist/profiling/model-execution.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../runtime/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\",\"../runtime/request-id.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-id.js\",\"@qvac/langdetect-text\":\"/node_modules/@qvac/langdetect-text/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/ops/unload-model.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../utils/cache/paths.js\":\"/node_modules/@qvac/sdk/dist/server/utils/cache/paths.js\",\"../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"../plugins/llamacpp-completion/ops/finetune.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js\",\"../registry/logging-stream-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/logging-stream-registry.js\",\"../registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/batch-cancelled.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/batch-completion-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"../../../../../profiling/model-execution.js\":\"/node_modules/@qvac/sdk/dist/profiling/model-execution.js\",\"../../../../../schemas/tools.js\":\"/node_modules/@qvac/sdk/dist/schemas/tools.js\",\"../../../../utils/response-format.js\":\"/node_modules/@qvac/sdk/dist/server/utils/response-format.js\",\"../../../../utils/tool-integration.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tool-integration.js\",\"../../../registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"./completion-stats.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.js\",\"./completion-stream.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"../../../../../profiling/model-execution.js\":\"/node_modules/@qvac/sdk/dist/profiling/model-execution.js\",\"../../../../../schemas/tools.js\":\"/node_modules/@qvac/sdk/dist/schemas/tools.js\",\"../../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"../../../../utils/response-format.js\":\"/node_modules/@qvac/sdk/dist/server/utils/response-format.js\",\"../../../../utils/tool-integration.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tool-integration.js\",\"../../../../utils/tools/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/index.js\",\"../../../ops/kv-cache-utils.js\":\"/node_modules/@qvac/sdk/dist/server/bare/ops/kv-cache-utils.js\",\"../../../registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"./cache-logger.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js\",\"./completion-stats.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.js\",\"./kv-cache-session.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.js\",\"./kv-cache-state.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../../../runtime/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\",\"../../../runtime/request-id.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-id.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../ops/kv-cache-utils.js\":\"/node_modules/@qvac/sdk/dist/server/bare/ops/kv-cache-utils.js\",\"./cache-logger.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/plugin.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../profiling/model-execution.js\":\"/node_modules/@qvac/sdk/dist/profiling/model-execution.js\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../utils/completion-normalizer.js\":\"/node_modules/@qvac/sdk/dist/server/utils/completion-normalizer.js\",\"../../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"../../../utils/multi-gpu-mobile.js\":\"/node_modules/@qvac/sdk/dist/server/utils/multi-gpu-mobile.js\",\"../../../utils/tool-integration.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tool-integration.js\",\"../../ops/translate.js\":\"/node_modules/@qvac/sdk/dist/server/bare/ops/translate.js\",\"../../registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../../registry/runtime-context-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/runtime-context-registry.js\",\"../../runtime/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\",\"../../runtime/request-id.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-id.js\",\"./ops/batch-cancelled.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/batch-cancelled.js\",\"./ops/batch-completion-stream.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/batch-completion-stream.js\",\"./ops/completion-stream.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js\",\"./ops/context-overflow.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.js\",\"./ops/finetune.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js\",\"./transform.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/transform.js\",\"@qvac/llm-llamacpp\":\"/node_modules/@qvac/llm-llamacpp/index.js\",\"@qvac/llm-llamacpp/addonLogging.js\":\"/node_modules/@qvac/llm-llamacpp/addonLogging.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/transform.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/chunk.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"@qvac/rag\":\"/node_modules/@qvac/rag/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/close-workspace.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../rag-workspace-manager.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-workspace-manager.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../rag-workspace-manager.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-workspace-manager.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../rag-workspace-manager.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-workspace-manager.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/ingest.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../ops/embed.js\":\"/node_modules/@qvac/sdk/dist/server/bare/ops/embed.js\",\"../rag-workspace-manager.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-workspace-manager.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../rag-workspace-manager.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-workspace-manager.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/reindex.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../rag-workspace-manager.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-workspace-manager.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../rag-workspace-manager.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-workspace-manager.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/search.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../ops/embed.js\":\"/node_modules/@qvac/sdk/dist/server/bare/ops/embed.js\",\"../rag-workspace-manager.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-workspace-manager.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./handlers/chunk.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/chunk.js\",\"./handlers/close-workspace.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/close-workspace.js\",\"./handlers/delete-embeddings.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js\",\"./handlers/delete-workspace.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js\",\"./handlers/ingest.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/ingest.js\",\"./handlers/list-workspaces.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js\",\"./handlers/reindex.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/reindex.js\",\"./handlers/save-embeddings.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js\",\"./handlers/search.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/search.js\",\"./rag-operation-manager.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-operation-manager.js\",\"./rag-workspace-manager.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-workspace-manager.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-operation-manager.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../runtime/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-workspace-manager.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../utils/path-security.js\":\"/node_modules/@qvac/sdk/dist/server/utils/path-security.js\",\"../registry/config-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/config-registry.js\",\"../runtime-lifecycle.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime-lifecycle.js\",\"./rag-operation-manager.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-operation-manager.js\",\"@qvac/rag\":\"/node_modules/@qvac/rag/index.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\",\"corestore\":\"/node_modules/corestore/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/registry/config-registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../utils/qvac-paths.js\":\"/node_modules/@qvac/sdk/dist/server/utils/qvac-paths.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/registry/logging-stream-registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/namespaces.js\":\"/node_modules/@qvac/sdk/dist/logging/namespaces.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-config-registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"./config-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/config-registry.js\",\"./model-config-utils.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-config-utils.js\",\"./runtime-context-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/runtime-context-registry.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-config-utils.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../schemas/bci-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/bci-config.js\",\"../../../schemas/classification.js\":\"/node_modules/@qvac/sdk/dist/schemas/classification.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../schemas/llamacpp-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/llamacpp-config.js\",\"../../../schemas/ocr.js\":\"/node_modules/@qvac/sdk/dist/schemas/ocr.js\",\"../../../schemas/sdcpp-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdcpp-config.js\",\"../../../schemas/transcription-config.js\":\"/node_modules/@qvac/sdk/dist/schemas/transcription-config.js\",\"../../../schemas/vla.js\":\"/node_modules/@qvac/sdk/dist/schemas/vla.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/registry/registry-client.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../constants/index.js\":\"/node_modules/@qvac/sdk/dist/constants/index.js\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../utils/cache/paths.js\":\"/node_modules/@qvac/sdk/dist/server/utils/cache/paths.js\",\"../runtime-lifecycle.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime-lifecycle.js\",\"@qvac/registry-client\":\"/node_modules/@qvac/registry-client/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/registry/runtime-context-registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/bare/runtime-lifecycle.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/disposable-scope.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./disposable-scope.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/disposable-scope.js\",\"./request-registry-singleton.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-registry-singleton.js\",\"./with-request-context.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/with-request-context.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-id.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"bare-crypto\":\"/node_modules/bare-crypto/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-registry-singleton.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./request-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-registry.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"./disposable-scope.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/disposable-scope.js\",\"bare-abort-controller\":\"/node_modules/bare-abort-controller/index.js\"},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/with-request-context.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/env.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"bare-env\":\"/node_modules/bare-env/index.js\",\"which-runtime\":\"/node_modules/which-runtime/index.js\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/dist/server/error-handlers.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"./rpc/profiling/index.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/index.js\"},\"/node_modules/@qvac/sdk/dist/server/plugins/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./registry.js\":\"/node_modules/@qvac/sdk/dist/server/plugins/registry.js\"},\"/node_modules/@qvac/sdk/dist/server/plugins/registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../logging/addon.js\":\"/node_modules/@qvac/sdk/dist/logging/addon.js\",\"../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../schemas/plugin.js\":\"/node_modules/@qvac/sdk/dist/schemas/plugin.js\",\"../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../utils/zod-error.js\":\"/node_modules/@qvac/sdk/dist/utils/zod-error.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/create-server.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"./handle-request.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handle-request.js\",\"bare-net\":\"/node_modules/bare-net/index.js\",\"bare-rpc\":\"/node_modules/bare-rpc/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/delegate-transport.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../utils/withTimeout.js\":\"/node_modules/@qvac/sdk/dist/utils/withTimeout.js\",\"../bare/delegate-rpc-client.js\":\"/node_modules/@qvac/sdk/dist/server/bare/delegate-rpc-client.js\",\"./profiling/delegation-profiler.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/delegation-profiler.js\",\"./rpc-utils.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/rpc-utils.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handle-request.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../bare/registry/model-config-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-config-registry.js\",\"../bare/runtime-lifecycle.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime-lifecycle.js\",\"../error-handlers.js\":\"/node_modules/@qvac/sdk/dist/server/error-handlers.js\",\"./handler-registry.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handler-registry.js\",\"./handler-utils.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handler-utils.js\",\"./profiling/index.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/index.js\",\"./transport-selector.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/transport-selector.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handler-registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"./handlers/batch-completion-stream.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/batch-completion-stream.js\",\"./handlers/bci-transcribe-stream.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/bci-transcribe-stream.js\",\"./handlers/bci-transcribe.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/bci-transcribe.js\",\"./handlers/cancel-delegated.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/cancel-delegated.js\",\"./handlers/cancelHandler.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/cancelHandler.js\",\"./handlers/classify.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/classify.js\",\"./handlers/completion-orchestrate.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/completion-orchestrate.js\",\"./handlers/completion-stream-delegated.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/completion-stream-delegated.js\",\"./handlers/completion-stream.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/completion-stream.js\",\"./handlers/delete-cache.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/delete-cache.js\",\"./handlers/diffusion-stream.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/diffusion-stream.js\",\"./handlers/download-asset.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/download-asset.js\",\"./handlers/embed.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/embed.js\",\"./handlers/finetune.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/finetune.js\",\"./handlers/get-loaded-model-info.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/get-loaded-model-info.js\",\"./handlers/get-model-info.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/get-model-info.js\",\"./handlers/heartbeat-delegated.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/heartbeat-delegated.js\",\"./handlers/heartbeat.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/heartbeat.js\",\"./handlers/load-model-delegated.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model-delegated.js\",\"./handlers/load-model/index.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/index.js\",\"./handlers/logging-stream.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/logging-stream.js\",\"./handlers/ocr-stream.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/ocr-stream.js\",\"./handlers/plugin-invoke.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-invoke.js\",\"./handlers/provideHandler.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler.js\",\"./handlers/rag.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/rag.js\",\"./handlers/registry.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/registry.js\",\"./handlers/resume.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/resume.js\",\"./handlers/state.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/state.js\",\"./handlers/stopProvideHandler.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/stopProvideHandler.js\",\"./handlers/suspend.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/suspend.js\",\"./handlers/text-to-speech-stream.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/text-to-speech-stream.js\",\"./handlers/text-to-speech.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/text-to-speech.js\",\"./handlers/transcribe-stream.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/transcribe-stream.js\",\"./handlers/transcribe.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/transcribe.js\",\"./handlers/translate.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/translate.js\",\"./handlers/unload-model-delegated.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/unload-model-delegated.js\",\"./handlers/unload-model.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/unload-model.js\",\"./handlers/upscale-stream.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/upscale-stream.js\",\"./handlers/video-stream.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/video-stream.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handler-selection.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handler-utils.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../bare/registry/config-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/config-registry.js\",\"../bare/registry/runtime-context-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/runtime-context-registry.js\",\"../error-handlers.js\":\"/node_modules/@qvac/sdk/dist/server/error-handlers.js\",\"../worker-core.js\":\"/node_modules/@qvac/sdk/dist/server/worker-core.js\",\"./handler-selection.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handler-selection.js\",\"./profiling/index.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/index.js\",\"./progress-throttle.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/progress-throttle.js\",\"./rpc-utils.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/rpc-utils.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/batch-completion-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/bci-transcribe-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/bci-transcribe.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/cancel-delegated.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../bare/delegate-rpc-client.js\":\"/node_modules/@qvac/sdk/dist/server/bare/delegate-rpc-client.js\",\"../../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../delegate-transport.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/delegate-transport.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/cancelHandler.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../bare/ops/cancel.js\":\"/node_modules/@qvac/sdk/dist/server/bare/ops/cancel.js\",\"../../bare/runtime/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\",\"./load-model/download-manager.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-manager.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/classify.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/completion-orchestrate.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../schemas/completion-stream.js\":\"/node_modules/@qvac/sdk/dist/schemas/completion-stream.js\",\"../../../utils/aggregate-events.js\":\"/node_modules/@qvac/sdk/dist/utils/aggregate-events.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/completion-stream-delegated.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../bare/delegate-rpc-client.js\":\"/node_modules/@qvac/sdk/dist/server/bare/delegate-rpc-client.js\",\"../../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../delegate-transport.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/delegate-transport.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/completion-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/delete-cache.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../bare/plugins/llamacpp-completion/ops/kv-cache-session.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/diffusion-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/download-asset.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../profiling/clock.js\":\"/node_modules/@qvac/sdk/dist/profiling/clock.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../bare/runtime/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\",\"../../bare/runtime/request-id.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-id.js\",\"./load-model/resolve.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/resolve.js\",\"./load-model/types.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/types.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/embed.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/finetune.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../bare/plugins/llamacpp-completion/ops/finetune.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/get-loaded-model-info.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../../plugins/registry.js\":\"/node_modules/@qvac/sdk/dist/server/plugins/registry.js\",\"../../utils/tools/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/get-model-info.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../models/registry/models.js\":\"/node_modules/@qvac/sdk/dist/models/registry/models.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../../utils/cache/paths.js\":\"/node_modules/@qvac/sdk/dist/server/utils/cache/paths.js\",\"../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"../../utils/path-security.js\":\"/node_modules/@qvac/sdk/dist/server/utils/path-security.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/heartbeat-delegated.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../bare/delegate-rpc-client.js\":\"/node_modules/@qvac/sdk/dist/server/bare/delegate-rpc-client.js\",\"../delegate-transport.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/delegate-transport.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/heartbeat.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model-delegated.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../bare/delegate-rpc-client.js\":\"/node_modules/@qvac/sdk/dist/server/bare/delegate-rpc-client.js\",\"../../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../delegate-transport.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/delegate-transport.js\",\"./load-model/index.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-manager.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../bare/runtime/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\",\"bare-abort-controller\":\"/node_modules/bare-abort-controller/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-stats.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"./http.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/http.js\",\"./hyperdrive.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/hyperdrive.js\",\"./registry.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/handler.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../profiling/clock.js\":\"/node_modules/@qvac/sdk/dist/profiling/clock.js\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../../utils/zod-error.js\":\"/node_modules/@qvac/sdk/dist/utils/zod-error.js\",\"../../../bare/ops/load-model.js\":\"/node_modules/@qvac/sdk/dist/server/bare/ops/load-model.js\",\"../../../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../../../bare/runtime/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\",\"../../../bare/runtime/request-id.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-id.js\",\"../../../plugins/index.js\":\"/node_modules/@qvac/sdk/dist/server/plugins/index.js\",\"../../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"./resolve-session.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/resolve-session.js\",\"./types.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/types.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/http.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../../utils/withTimeout.js\":\"/node_modules/@qvac/sdk/dist/utils/withTimeout.js\",\"../../../bare/registry/config-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/config-registry.js\",\"../../../bare/runtime-lifecycle.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime-lifecycle.js\",\"../../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"./download-manager.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-manager.js\",\"bare-abort-controller\":\"/node_modules/bare-abort-controller/index.js\",\"bare-fetch\":\"/node_modules/bare-fetch/index.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/hyperdrive.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../models/registry/index.js\":\"/node_modules/@qvac/sdk/dist/models/registry/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../bare/registry/config-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/config-registry.js\",\"../../../bare/runtime-lifecycle.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime-lifecycle.js\",\"../../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"../../../utils/qvac-paths.js\":\"/node_modules/@qvac/sdk/dist/server/utils/qvac-paths.js\",\"./download-manager.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-manager.js\",\"bare-buffer\":\"/node_modules/bare-buffer/index.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\",\"corestore\":\"/node_modules/corestore/index.js\",\"hyperdrive\":\"/node_modules/hyperdrive/index.js\",\"hyperswarm\":\"/node_modules/hyperswarm/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./handler.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/handler.js\",\"./resolve.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/resolve.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-client-options.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-companion-set.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../utils/checksum.js\":\"/node_modules/@qvac/sdk/dist/server/utils/checksum.js\",\"../../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"../../../utils/path-security.js\":\"/node_modules/@qvac/sdk/dist/server/utils/path-security.js\",\"./registry-download-utils.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-download-utils.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-download-utils.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../bare/registry/config-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/config-registry.js\",\"../../../bare/registry/registry-client.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/registry-client.js\",\"../../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"./registry-client-options.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-client-options.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-metadata.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../models/registry/index.js\":\"/node_modules/@qvac/sdk/dist/models/registry/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../bare/registry/registry-client.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/registry-client.js\",\"../../../utils/cache/paths.js\":\"/node_modules/@qvac/sdk/dist/server/utils/cache/paths.js\",\"../../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"./download-manager.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-manager.js\",\"./registry-companion-set.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-companion-set.js\",\"./registry-download-utils.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-download-utils.js\",\"./registry-metadata.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-metadata.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/resolve-session.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./download-manager.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-manager.js\",\"./download-stats.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-stats.js\",\"./resolve.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/resolve.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/resolve.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../../models/registry/models.js\":\"/node_modules/@qvac/sdk/dist/models/registry/models.js\",\"../../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../utils/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/index.js\",\"../../../utils/path-security.js\":\"/node_modules/@qvac/sdk/dist/server/utils/path-security.js\",\"./download-stats.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-stats.js\",\"./http.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/http.js\",\"./hyperdrive.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/hyperdrive.js\",\"./registry-metadata.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-metadata.js\",\"./registry.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/types.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/logging-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../bare/registry/logging-stream-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/logging-stream-registry.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/ocr-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../../plugins/index.js\":\"/node_modules/@qvac/sdk/dist/server/plugins/index.js\",\"../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-invoke.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../../utils/zod-error.js\":\"/node_modules/@qvac/sdk/dist/utils/zod-error.js\",\"../../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../../plugins/index.js\":\"/node_modules/@qvac/sdk/dist/server/plugins/index.js\",\"../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./provideHandler/handler.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler/handler.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler/connection.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../bare/hyperswarm.js\":\"/node_modules/@qvac/sdk/dist/server/bare/hyperswarm.js\",\"./proxy.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler/proxy.js\",\"bare-rpc\":\"/node_modules/bare-rpc/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler/handler.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../bare/hyperswarm.js\":\"/node_modules/@qvac/sdk/dist/server/bare/hyperswarm.js\",\"./connection.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler/connection.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler/proxy.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../handle-request.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handle-request.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/rag.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../bare/rag-hyperdb/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/index.js\",\"../../bare/runtime/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\",\"../../bare/runtime/request-id.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-id.js\",\"../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/registry.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../schemas/engine-addon-map.js\":\"/node_modules/@qvac/sdk/dist/schemas/engine-addon-map.js\",\"../../../schemas/sdk-errors-registry.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-registry.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../bare/registry/registry-client.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/registry-client.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/resume.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../bare/runtime-lifecycle.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime-lifecycle.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/state.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../bare/runtime-lifecycle.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime-lifecycle.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/stopProvideHandler.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../bare/hyperswarm.js\":\"/node_modules/@qvac/sdk/dist/server/bare/hyperswarm.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/suspend.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../bare/runtime-lifecycle.js\":\"/node_modules/@qvac/sdk/dist/server/bare/runtime-lifecycle.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/text-to-speech-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/text-to-speech.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/transcribe-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/transcribe.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/translate.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/unload-model-delegated.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../bare/delegate-rpc-client.js\":\"/node_modules/@qvac/sdk/dist/server/bare/delegate-rpc-client.js\",\"../../bare/hyperswarm.js\":\"/node_modules/@qvac/sdk/dist/server/bare/hyperswarm.js\",\"../../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"../delegate-transport.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/delegate-transport.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/unload-model.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../bare/hyperswarm.js\":\"/node_modules/@qvac/sdk/dist/server/bare/hyperswarm.js\",\"../../bare/ops/unload-model.js\":\"/node_modules/@qvac/sdk/dist/server/bare/ops/unload-model.js\",\"../../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/upscale-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/video-stream.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./plugin-dispatch.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/context.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/delegation-profiler.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./delegation-profiler.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/delegation-profiler.js\",\"./operation-metrics.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/operation-metrics.js\",\"./operation-wrappers.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/operation-wrappers.js\",\"./profiler.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/profiler.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/operation-metrics.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../profiling/model-execution.js\":\"/node_modules/@qvac/sdk/dist/profiling/model-execution.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/operation-wrappers.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../profiling/clock.js\":\"/node_modules/@qvac/sdk/dist/profiling/clock.js\",\"../../../profiling/controller.js\":\"/node_modules/@qvac/sdk/dist/profiling/controller.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"../rpc-utils\":\"/node_modules/@qvac/sdk/dist/server/rpc/rpc-utils.js\",\"./operation-metrics.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/operation-metrics.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/profiler.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"../../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\",\"./context.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/context.js\"},\"/node_modules/@qvac/sdk/dist/server/rpc/progress-throttle.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/rpc/rpc-utils.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/rpc/transport-selector.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/utils/archive.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../schemas/archive.js\":\"/node_modules/@qvac/sdk/dist/schemas/archive.js\",\"../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"./path-security.js\":\"/node_modules/@qvac/sdk/dist/server/utils/path-security.js\",\"./shard-utils.js\":\"/node_modules/@qvac/sdk/dist/server/utils/shard-utils.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\",\"bare-zlib\":\"/node_modules/bare-zlib/index.js\",\"tar-stream\":\"/node_modules/tar-stream/index.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/cache/auto-history.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../utils/cache-normalize.js\":\"/node_modules/@qvac/sdk/dist/utils/cache-normalize.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/cache/paths.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"../../bare/registry/config-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/config-registry.js\",\"../checksum.js\":\"/node_modules/@qvac/sdk/dist/server/utils/checksum.js\",\"../clear-storage.js\":\"/node_modules/@qvac/sdk/dist/server/utils/clear-storage.js\",\"../formatting.js\":\"/node_modules/@qvac/sdk/dist/server/utils/formatting.js\",\"../path-security.js\":\"/node_modules/@qvac/sdk/dist/server/utils/path-security.js\",\"../qvac-paths.js\":\"/node_modules/@qvac/sdk/dist/server/utils/qvac-paths.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/cache/types.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/utils/checksum.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../profiling/index.js\":\"/node_modules/@qvac/sdk/dist/profiling/index.js\",\"bare-buffer\":\"/node_modules/bare-buffer/index.js\",\"bare-crypto\":\"/node_modules/bare-crypto/index.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/clear-storage.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/utils/completion-normalizer.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./tools/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/index.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/config-transform.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../schemas/index.js\":\"/node_modules/@qvac/sdk/dist/schemas/index.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/expand-gguf-shards.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/utils/formatting.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"bare-buffer\":\"/node_modules/bare-buffer/index.js\",\"bare-crypto\":\"/node_modules/bare-crypto/index.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/gguf-tensor-extractor.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"./path-security.js\":\"/node_modules/@qvac/sdk/dist/server/utils/path-security.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./archive.js\":\"/node_modules/@qvac/sdk/dist/server/utils/archive.js\",\"./cache/auto-history.js\":\"/node_modules/@qvac/sdk/dist/server/utils/cache/auto-history.js\",\"./cache/paths.js\":\"/node_modules/@qvac/sdk/dist/server/utils/cache/paths.js\",\"./cache/types.js\":\"/node_modules/@qvac/sdk/dist/server/utils/cache/types.js\",\"./checksum.js\":\"/node_modules/@qvac/sdk/dist/server/utils/checksum.js\",\"./config-transform.js\":\"/node_modules/@qvac/sdk/dist/server/utils/config-transform.js\",\"./expand-gguf-shards.js\":\"/node_modules/@qvac/sdk/dist/server/utils/expand-gguf-shards.js\",\"./formatting.js\":\"/node_modules/@qvac/sdk/dist/server/utils/formatting.js\",\"./gguf-tensor-extractor.js\":\"/node_modules/@qvac/sdk/dist/server/utils/gguf-tensor-extractor.js\",\"./path-security.js\":\"/node_modules/@qvac/sdk/dist/server/utils/path-security.js\",\"./shard-utils.js\":\"/node_modules/@qvac/sdk/dist/server/utils/shard-utils.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/multi-gpu-mobile.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/utils/path-security.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"../../utils/path-sanitize.js\":\"/node_modules/@qvac/sdk/dist/utils/path-sanitize.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/qvac-paths.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../env.js\":\"/node_modules/@qvac/sdk/dist/server/env.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/response-format.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/utils/shard-utils.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../utils/errors-server.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\",\"./formatting.js\":\"/node_modules/@qvac/sdk/dist/server/utils/formatting.js\",\"./gguf-tensor-extractor.js\":\"/node_modules/@qvac/sdk/dist/server/utils/gguf-tensor-extractor.js\",\"./path-security.js\":\"/node_modules/@qvac/sdk/dist/server/utils/path-security.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/tool-integration.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"./tools/index.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/index.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/tools/dialect.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/utils/tools/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./dialect.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/dialect.js\",\"./parser.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/parser.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parser.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./parsers/gemma4native.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/gemma4native.js\",\"./parsers/harmony.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/harmony.js\",\"./parsers/hermes.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/hermes.js\",\"./parsers/json.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/json.js\",\"./parsers/pythonic.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/pythonic.js\",\"./parsers/qwen35.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/qwen35.js\",\"./shared.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/shared.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/gemma4native.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../shared.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/shared.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/harmony.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../shared.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/shared.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/hermes.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../shared.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/shared.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/json.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../shared.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/shared.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/pythonic.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../shared.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/shared.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/qwen35.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../shared.js\":\"/node_modules/@qvac/sdk/dist/server/utils/tools/shared.js\"},\"/node_modules/@qvac/sdk/dist/server/utils/tools/shared.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/server/utils/worker-lock.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"./qvac-paths.js\":\"/node_modules/@qvac/sdk/dist/server/utils/qvac-paths.js\",\"bare-fs\":\"/node_modules/bare-fs/index.js\",\"bare-os\":\"/node_modules/bare-os/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/@qvac/sdk/dist/server/worker-core.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"./bare/hyperswarm.js\":\"/node_modules/@qvac/sdk/dist/server/bare/hyperswarm.js\",\"./bare/rag-hyperdb/index.js\":\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/index.js\",\"./bare/registry/logging-stream-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/logging-stream-registry.js\",\"./bare/registry/model-registry.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\",\"./bare/registry/registry-client.js\":\"/node_modules/@qvac/sdk/dist/server/bare/registry/registry-client.js\",\"./env.js\":\"/node_modules/@qvac/sdk/dist/server/env.js\",\"./plugins/index.js\":\"/node_modules/@qvac/sdk/dist/server/plugins/index.js\",\"./rpc/create-server.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/create-server.js\",\"./rpc/handlers/load-model/download-manager.js\":\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-manager.js\",\"./utils/worker-lock.js\":\"/node_modules/@qvac/sdk/dist/server/utils/worker-lock.js\",\"bare-os\":\"/node_modules/bare-os/index.js\",\"bare-signals\":\"/node_modules/@qvac/sdk/node_modules/bare-signals/index.js\"},\"/node_modules/@qvac/sdk/dist/utils/aggregate-events.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"./cache-normalize.js\":\"/node_modules/@qvac/sdk/dist/utils/cache-normalize.js\",\"./tool-helpers.js\":\"/node_modules/@qvac/sdk/dist/utils/tool-helpers.js\"},\"/node_modules/@qvac/sdk/dist/utils/cache-normalize.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/utils/errors-base.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/utils/errors-client.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../schemas/sdk-errors-client.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-client.js\",\"../schemas/sdk-errors-server.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-server.js\",\"./errors-base.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-base.js\",\"@qvac/error\":\"/node_modules/@qvac/error/index.js\"},\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../schemas/sdk-errors-server.js\":\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-server.js\",\"./errors-base.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-base.js\",\"@qvac/error\":\"/node_modules/@qvac/error/index.js\"},\"/node_modules/@qvac/sdk/dist/utils/global-singleton.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/utils/path-sanitize.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/utils/tool-helpers.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"../schemas/tools.js\":\"/node_modules/@qvac/sdk/dist/schemas/tools.js\",\"./errors-client.js\":\"/node_modules/@qvac/sdk/dist/utils/errors-client.js\"},\"/node_modules/@qvac/sdk/dist/utils/withTimeout.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\"},\"/node_modules/@qvac/sdk/dist/utils/zod-error.js\":{\"#package\":\"/node_modules/@qvac/sdk/package.json\",\"zod\":\"/node_modules/zod/index.js\"},\"/node_modules/@qvac/sdk/node_modules/bare-signals/binding.js\":{\"#package\":\"/node_modules/@qvac/sdk/node_modules/bare-signals/package.json\",\".\":\"linked:bare-signals.4.2.0.framework/bare-signals.4.2.0\"},\"/node_modules/@qvac/sdk/node_modules/bare-signals/index.js\":{\"#package\":\"/node_modules/@qvac/sdk/node_modules/bare-signals/package.json\",\"./binding\":\"/node_modules/@qvac/sdk/node_modules/bare-signals/binding.js\",\"./lib/emitter\":\"/node_modules/@qvac/sdk/node_modules/bare-signals/lib/emitter.js\",\"./lib/errors\":\"/node_modules/@qvac/sdk/node_modules/bare-signals/lib/errors.js\",\"bare-events\":\"/node_modules/bare-events/index.js\",\"bare-os\":\"/node_modules/bare-os/index.js\"},\"/node_modules/@qvac/sdk/node_modules/bare-signals/lib/emitter.js\":{\"#package\":\"/node_modules/@qvac/sdk/node_modules/bare-signals/package.json\",\"..\":\"/node_modules/@qvac/sdk/node_modules/bare-signals/index.js\",\"bare-events\":\"/node_modules/bare-events/index.js\"},\"/node_modules/@qvac/sdk/node_modules/bare-signals/lib/errors.js\":{\"#package\":\"/node_modules/@qvac/sdk/node_modules/bare-signals/package.json\"},\"/node_modules/@qvac/sdk/node_modules/bare-signals/package.json\":{},\"/node_modules/@qvac/sdk/package.json\":{},\"/node_modules/adaptive-timeout/index.js\":{\"#package\":\"/node_modules/adaptive-timeout/package.json\",\"xache\":\"/node_modules/xache/index.js\"},\"/node_modules/adaptive-timeout/package.json\":{},\"/node_modules/b4a/index.js\":{\"#package\":\"/node_modules/b4a/package.json\"},\"/node_modules/b4a/package.json\":{},\"/node_modules/bare-abort-controller/index.js\":{\"#package\":\"/node_modules/bare-abort-controller/package.json\",\"bare-events/web\":\"/node_modules/bare-events/web.js\"},\"/node_modules/bare-abort-controller/package.json\":{},\"/node_modules/bare-ansi-escapes/index.js\":{\"#package\":\"/node_modules/bare-ansi-escapes/package.json\"},\"/node_modules/bare-ansi-escapes/package.json\":{},\"/node_modules/bare-assert/index.js\":{\"#package\":\"/node_modules/bare-assert/package.json\",\"bare-inspect\":\"/node_modules/bare-inspect/index.js\"},\"/node_modules/bare-assert/package.json\":{},\"/node_modules/bare-buffer/binding.js\":{\"#package\":\"/node_modules/bare-buffer/package.json\",\".\":\"linked:bare-buffer.3.6.2.framework/bare-buffer.3.6.2\"},\"/node_modules/bare-buffer/index.js\":{\"#package\":\"/node_modules/bare-buffer/package.json\",\"./binding\":\"/node_modules/bare-buffer/binding.js\",\"./lib/ascii\":\"/node_modules/bare-buffer/lib/ascii.js\",\"./lib/base64\":\"/node_modules/bare-buffer/lib/base64.js\",\"./lib/base64url\":\"/node_modules/bare-buffer/lib/base64url.js\",\"./lib/constants\":\"/node_modules/bare-buffer/lib/constants.js\",\"./lib/hex\":\"/node_modules/bare-buffer/lib/hex.js\",\"./lib/latin1\":\"/node_modules/bare-buffer/lib/latin1.js\",\"./lib/utf16le\":\"/node_modules/bare-buffer/lib/utf16le.js\",\"./lib/utf8\":\"/node_modules/bare-buffer/lib/utf8.js\"},\"/node_modules/bare-buffer/lib/ascii.js\":{\"#package\":\"/node_modules/bare-buffer/package.json\",\"../binding\":\"/node_modules/bare-buffer/binding.js\"},\"/node_modules/bare-buffer/lib/base64.js\":{\"#package\":\"/node_modules/bare-buffer/package.json\",\"../binding\":\"/node_modules/bare-buffer/binding.js\"},\"/node_modules/bare-buffer/lib/base64url.js\":{\"#package\":\"/node_modules/bare-buffer/package.json\",\"../binding\":\"/node_modules/bare-buffer/binding.js\"},\"/node_modules/bare-buffer/lib/constants.js\":{\"#package\":\"/node_modules/bare-buffer/package.json\",\"../binding\":\"/node_modules/bare-buffer/binding.js\"},\"/node_modules/bare-buffer/lib/hex.js\":{\"#package\":\"/node_modules/bare-buffer/package.json\",\"../binding\":\"/node_modules/bare-buffer/binding.js\"},\"/node_modules/bare-buffer/lib/latin1.js\":{\"#package\":\"/node_modules/bare-buffer/package.json\",\"../binding\":\"/node_modules/bare-buffer/binding.js\"},\"/node_modules/bare-buffer/lib/utf16le.js\":{\"#package\":\"/node_modules/bare-buffer/package.json\",\"../binding\":\"/node_modules/bare-buffer/binding.js\"},\"/node_modules/bare-buffer/lib/utf8.js\":{\"#package\":\"/node_modules/bare-buffer/package.json\",\"../binding\":\"/node_modules/bare-buffer/binding.js\"},\"/node_modules/bare-buffer/package.json\":{},\"/node_modules/bare-crypto/binding.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\".\":\"linked:bare-crypto.1.15.3.framework/bare-crypto.1.15.3\"},\"/node_modules/bare-crypto/index.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"./lib/cipher\":\"/node_modules/bare-crypto/lib/cipher.js\",\"./lib/constants\":\"/node_modules/bare-crypto/lib/constants.js\",\"./lib/hash\":\"/node_modules/bare-crypto/lib/hash.js\",\"./lib/hmac\":\"/node_modules/bare-crypto/lib/hmac.js\",\"./lib/key\":\"/node_modules/bare-crypto/lib/key.js\",\"./lib/pbkdf2\":\"/node_modules/bare-crypto/lib/pbkdf2.js\",\"./lib/random\":\"/node_modules/bare-crypto/lib/random.js\",\"./lib/signature\":\"/node_modules/bare-crypto/lib/signature.js\",\"./lib/timing\":\"/node_modules/bare-crypto/lib/timing.js\",\"./web\":\"/node_modules/bare-crypto/web.js\"},\"/node_modules/bare-crypto/lib/cipher.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../binding\":\"/node_modules/bare-crypto/binding.js\",\"./constants\":\"/node_modules/bare-crypto/lib/constants.js\",\"bare-assert\":\"/node_modules/bare-assert/index.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-crypto/lib/constants.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../binding\":\"/node_modules/bare-crypto/binding.js\",\"./errors\":\"/node_modules/bare-crypto/lib/errors.js\",\"bare-assert\":\"/node_modules/bare-assert/index.js\"},\"/node_modules/bare-crypto/lib/errors.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\"},\"/node_modules/bare-crypto/lib/hash.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../binding\":\"/node_modules/bare-crypto/binding.js\",\"./constants\":\"/node_modules/bare-crypto/lib/constants.js\",\"bare-assert\":\"/node_modules/bare-assert/index.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-crypto/lib/hmac.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../binding\":\"/node_modules/bare-crypto/binding.js\",\"./constants\":\"/node_modules/bare-crypto/lib/constants.js\",\"bare-assert\":\"/node_modules/bare-assert/index.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-crypto/lib/key.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../binding\":\"/node_modules/bare-crypto/binding.js\",\"./constants\":\"/node_modules/bare-crypto/lib/constants.js\"},\"/node_modules/bare-crypto/lib/pbkdf2.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../binding\":\"/node_modules/bare-crypto/binding.js\",\"./constants\":\"/node_modules/bare-crypto/lib/constants.js\",\"bare-assert\":\"/node_modules/bare-assert/index.js\"},\"/node_modules/bare-crypto/lib/random.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../binding\":\"/node_modules/bare-crypto/binding.js\",\"bare-assert\":\"/node_modules/bare-assert/index.js\"},\"/node_modules/bare-crypto/lib/signature.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../binding\":\"/node_modules/bare-crypto/binding.js\",\"./constants\":\"/node_modules/bare-crypto/lib/constants.js\",\"./key\":\"/node_modules/bare-crypto/lib/key.js\",\"bare-assert\":\"/node_modules/bare-assert/index.js\"},\"/node_modules/bare-crypto/lib/timing.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../binding\":\"/node_modules/bare-crypto/binding.js\",\"bare-assert\":\"/node_modules/bare-assert/index.js\"},\"/node_modules/bare-crypto/lib/web/algorithm/ed25519.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../../..\":\"/node_modules/bare-crypto/index.js\",\"../../../binding\":\"/node_modules/bare-crypto/binding.js\",\"../../errors\":\"/node_modules/bare-crypto/lib/errors.js\",\"../../key\":\"/node_modules/bare-crypto/lib/key.js\",\"../crypto-key\":\"/node_modules/bare-crypto/lib/web/crypto-key.js\"},\"/node_modules/bare-crypto/lib/web/algorithm/hmac.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../../..\":\"/node_modules/bare-crypto/index.js\",\"../../errors\":\"/node_modules/bare-crypto/lib/errors.js\",\"../../key\":\"/node_modules/bare-crypto/lib/key.js\",\"../crypto-key\":\"/node_modules/bare-crypto/lib/web/crypto-key.js\"},\"/node_modules/bare-crypto/lib/web/algorithm/pbkdf2.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../../..\":\"/node_modules/bare-crypto/index.js\",\"../../errors\":\"/node_modules/bare-crypto/lib/errors.js\",\"../../key\":\"/node_modules/bare-crypto/lib/key.js\",\"../crypto-key\":\"/node_modules/bare-crypto/lib/web/crypto-key.js\"},\"/node_modules/bare-crypto/lib/web/algorithm/sha.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\"../../..\":\"/node_modules/bare-crypto/index.js\"},\"/node_modules/bare-crypto/lib/web/crypto-key.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\"},\"/node_modules/bare-crypto/package.json\":{},\"/node_modules/bare-crypto/web.js\":{\"#package\":\"/node_modules/bare-crypto/package.json\",\".\":\"/node_modules/bare-crypto/index.js\",\"./lib/errors\":\"/node_modules/bare-crypto/lib/errors.js\",\"./lib/web/algorithm/ed25519\":\"/node_modules/bare-crypto/lib/web/algorithm/ed25519.js\",\"./lib/web/algorithm/hmac\":\"/node_modules/bare-crypto/lib/web/algorithm/hmac.js\",\"./lib/web/algorithm/pbkdf2\":\"/node_modules/bare-crypto/lib/web/algorithm/pbkdf2.js\",\"./lib/web/algorithm/sha\":\"/node_modules/bare-crypto/lib/web/algorithm/sha.js\",\"./lib/web/crypto-key\":\"/node_modules/bare-crypto/lib/web/crypto-key.js\"},\"/node_modules/bare-dns/binding.js\":{\"#package\":\"/node_modules/bare-dns/package.json\",\".\":\"linked:bare-dns.2.1.4.framework/bare-dns.2.1.4\"},\"/node_modules/bare-dns/index.js\":{\"#package\":\"/node_modules/bare-dns/package.json\",\"./binding\":\"/node_modules/bare-dns/binding.js\"},\"/node_modules/bare-dns/package.json\":{},\"/node_modules/bare-env/index.js\":{\"#package\":\"/node_modules/bare-env/package.json\",\"bare-os\":\"/node_modules/bare-os/index.js\"},\"/node_modules/bare-env/package.json\":{},\"/node_modules/bare-events/index.js\":{\"#package\":\"/node_modules/bare-events/package.json\",\"./lib/errors\":\"/node_modules/bare-events/lib/errors.js\"},\"/node_modules/bare-events/lib/errors.js\":{\"#package\":\"/node_modules/bare-events/package.json\"},\"/node_modules/bare-events/package.json\":{},\"/node_modules/bare-events/web.js\":{\"#package\":\"/node_modules/bare-events/package.json\"},\"/node_modules/bare-fetch/index.js\":{\"#package\":\"/node_modules/bare-fetch/package.json\",\"./lib/errors\":\"/node_modules/bare-fetch/lib/errors.js\",\"./lib/headers\":\"/node_modules/bare-fetch/lib/headers.js\",\"./lib/request\":\"/node_modules/bare-fetch/lib/request.js\",\"./lib/response\":\"/node_modules/bare-fetch/lib/response.js\",\"./lib/response-stream\":\"/node_modules/bare-fetch/lib/response-stream.js\",\"bare-http1\":\"/node_modules/bare-http1/index.js\",\"bare-https\":\"/node_modules/bare-https/index.js\",\"bare-performance\":\"/node_modules/bare-performance/index.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\",\"bare-stream/web\":\"/node_modules/bare-stream/web.js\"},\"/node_modules/bare-fetch/lib/body.js\":{\"#package\":\"/node_modules/bare-fetch/package.json\",\"./errors\":\"/node_modules/bare-fetch/lib/errors.js\",\"./headers\":\"/node_modules/bare-fetch/lib/headers.js\",\"bare-form-data\":\"/node_modules/bare-form-data/index.js\",\"bare-stream/web\":\"/node_modules/bare-stream/web.js\",\"bare-url\":\"/node_modules/bare-url/index.js\"},\"/node_modules/bare-fetch/lib/errors.js\":{\"#package\":\"/node_modules/bare-fetch/package.json\"},\"/node_modules/bare-fetch/lib/headers.js\":{\"#package\":\"/node_modules/bare-fetch/package.json\",\"./errors\":\"/node_modules/bare-fetch/lib/errors.js\",\"bare-mime\":\"/node_modules/bare-mime/index.js\"},\"/node_modules/bare-fetch/lib/request.js\":{\"#package\":\"/node_modules/bare-fetch/package.json\",\"./body\":\"/node_modules/bare-fetch/lib/body.js\",\"./errors\":\"/node_modules/bare-fetch/lib/errors.js\",\"./headers\":\"/node_modules/bare-fetch/lib/headers.js\",\"bare-url\":\"/node_modules/bare-url/index.js\"},\"/node_modules/bare-fetch/lib/response-stream.js\":{\"#package\":\"/node_modules/bare-fetch/package.json\",\"bare-stream\":\"/node_modules/bare-stream/index.js\",\"bare-zlib\":\"/node_modules/bare-zlib/index.js\"},\"/node_modules/bare-fetch/lib/response.js\":{\"#package\":\"/node_modules/bare-fetch/package.json\",\"./body\":\"/node_modules/bare-fetch/lib/body.js\",\"./errors\":\"/node_modules/bare-fetch/lib/errors.js\",\"./headers\":\"/node_modules/bare-fetch/lib/headers.js\"},\"/node_modules/bare-fetch/package.json\":{},\"/node_modules/bare-form-data/index.js\":{\"#package\":\"/node_modules/bare-form-data/package.json\",\"./lib/errors\":\"/node_modules/bare-form-data/lib/errors.js\",\"bare-buffer\":\"/node_modules/bare-buffer/index.js\",\"bare-stream/web\":\"/node_modules/bare-stream/web.js\"},\"/node_modules/bare-form-data/lib/errors.js\":{\"#package\":\"/node_modules/bare-form-data/package.json\"},\"/node_modules/bare-form-data/package.json\":{},\"/node_modules/bare-fs/binding.js\":{\"#package\":\"/node_modules/bare-fs/package.json\",\".\":\"linked:bare-fs.4.7.4.framework/bare-fs.4.7.4\"},\"/node_modules/bare-fs/index.js\":{\"#package\":\"/node_modules/bare-fs/package.json\",\"./binding\":\"/node_modules/bare-fs/binding.js\",\"./lib/constants\":\"/node_modules/bare-fs/lib/constants.js\",\"./lib/errors\":\"/node_modules/bare-fs/lib/errors.js\",\"./promises\":\"/node_modules/bare-fs/promises.js\",\"bare-events\":\"/node_modules/bare-events/index.js\",\"bare-path\":\"/node_modules/bare-path/index.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\",\"bare-url\":\"/node_modules/bare-url/index.js\",\"fast-fifo\":\"/node_modules/fast-fifo/index.js\"},\"/node_modules/bare-fs/lib/constants.js\":{\"#package\":\"/node_modules/bare-fs/package.json\",\"../binding\":\"/node_modules/bare-fs/binding.js\"},\"/node_modules/bare-fs/lib/errors.js\":{\"#package\":\"/node_modules/bare-fs/package.json\",\"../binding\":\"/node_modules/bare-fs/binding.js\"},\"/node_modules/bare-fs/package.json\":{},\"/node_modules/bare-fs/promises.js\":{\"#package\":\"/node_modules/bare-fs/package.json\",\".\":\"/node_modules/bare-fs/index.js\",\"bare-events\":\"/node_modules/bare-events/index.js\"},\"/node_modules/bare-http-parser/index.js\":{\"#package\":\"/node_modules/bare-http-parser/package.json\",\"./lib/errors\":\"/node_modules/bare-http-parser/lib/errors.js\"},\"/node_modules/bare-http-parser/lib/errors.js\":{\"#package\":\"/node_modules/bare-http-parser/package.json\"},\"/node_modules/bare-http-parser/package.json\":{},\"/node_modules/bare-http1/index.js\":{\"#package\":\"/node_modules/bare-http1/package.json\",\"./lib/agent\":\"/node_modules/bare-http1/lib/agent.js\",\"./lib/client-connection\":\"/node_modules/bare-http1/lib/client-connection.js\",\"./lib/client-request\":\"/node_modules/bare-http1/lib/client-request.js\",\"./lib/constants\":\"/node_modules/bare-http1/lib/constants.js\",\"./lib/errors\":\"/node_modules/bare-http1/lib/errors.js\",\"./lib/incoming-message\":\"/node_modules/bare-http1/lib/incoming-message.js\",\"./lib/outgoing-message\":\"/node_modules/bare-http1/lib/outgoing-message.js\",\"./lib/server\":\"/node_modules/bare-http1/lib/server.js\",\"./lib/server-connection\":\"/node_modules/bare-http1/lib/server-connection.js\",\"./lib/server-response\":\"/node_modules/bare-http1/lib/server-response.js\"},\"/node_modules/bare-http1/lib/agent.js\":{\"#package\":\"/node_modules/bare-http1/package.json\",\"./client-connection\":\"/node_modules/bare-http1/lib/client-connection.js\",\"./errors\":\"/node_modules/bare-http1/lib/errors.js\",\"bare-events\":\"/node_modules/bare-events/index.js\",\"bare-tcp\":\"/node_modules/bare-tcp/index.js\"},\"/node_modules/bare-http1/lib/client-connection.js\":{\"#package\":\"/node_modules/bare-http1/package.json\",\"./errors\":\"/node_modules/bare-http1/lib/errors.js\",\"./incoming-message\":\"/node_modules/bare-http1/lib/incoming-message.js\",\"bare-http-parser\":\"/node_modules/bare-http-parser/index.js\"},\"/node_modules/bare-http1/lib/client-request.js\":{\"#package\":\"/node_modules/bare-http1/package.json\",\"./agent\":\"/node_modules/bare-http1/lib/agent.js\",\"./outgoing-message\":\"/node_modules/bare-http1/lib/outgoing-message.js\",\"./validate\":\"/node_modules/bare-http1/lib/validate.js\"},\"/node_modules/bare-http1/lib/constants.js\":{\"#package\":\"/node_modules/bare-http1/package.json\"},\"/node_modules/bare-http1/lib/errors.js\":{\"#package\":\"/node_modules/bare-http1/package.json\"},\"/node_modules/bare-http1/lib/incoming-message.js\":{\"#package\":\"/node_modules/bare-http1/package.json\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-http1/lib/outgoing-message.js\":{\"#package\":\"/node_modules/bare-http1/package.json\",\"./errors\":\"/node_modules/bare-http1/lib/errors.js\",\"./validate\":\"/node_modules/bare-http1/lib/validate.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-http1/lib/server-connection.js\":{\"#package\":\"/node_modules/bare-http1/package.json\",\"./incoming-message\":\"/node_modules/bare-http1/lib/incoming-message.js\",\"./server-response\":\"/node_modules/bare-http1/lib/server-response.js\",\"bare-http-parser\":\"/node_modules/bare-http-parser/index.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-http1/lib/server-response.js\":{\"#package\":\"/node_modules/bare-http1/package.json\",\"./constants\":\"/node_modules/bare-http1/lib/constants.js\",\"./outgoing-message\":\"/node_modules/bare-http1/lib/outgoing-message.js\",\"./validate\":\"/node_modules/bare-http1/lib/validate.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-http1/lib/server.js\":{\"#package\":\"/node_modules/bare-http1/package.json\",\"./server-connection\":\"/node_modules/bare-http1/lib/server-connection.js\",\"bare-tcp\":\"/node_modules/bare-tcp/index.js\"},\"/node_modules/bare-http1/lib/validate.js\":{\"#package\":\"/node_modules/bare-http1/package.json\",\"./errors\":\"/node_modules/bare-http1/lib/errors.js\"},\"/node_modules/bare-http1/package.json\":{},\"/node_modules/bare-https/index.js\":{\"#package\":\"/node_modules/bare-https/package.json\",\"./lib/agent\":\"/node_modules/bare-https/lib/agent.js\",\"./lib/client-request\":\"/node_modules/bare-https/lib/client-request.js\",\"./lib/server\":\"/node_modules/bare-https/lib/server.js\"},\"/node_modules/bare-https/lib/agent.js\":{\"#package\":\"/node_modules/bare-https/package.json\",\"./socket\":\"/node_modules/bare-https/lib/socket.js\",\"bare-http1\":\"/node_modules/bare-http1/index.js\"},\"/node_modules/bare-https/lib/client-request.js\":{\"#package\":\"/node_modules/bare-https/package.json\",\"./agent\":\"/node_modules/bare-https/lib/agent.js\",\"bare-http1\":\"/node_modules/bare-http1/index.js\"},\"/node_modules/bare-https/lib/server.js\":{\"#package\":\"/node_modules/bare-https/package.json\",\"./socket\":\"/node_modules/bare-https/lib/socket.js\",\"bare-http1\":\"/node_modules/bare-http1/index.js\",\"bare-tcp\":\"/node_modules/bare-tcp/index.js\"},\"/node_modules/bare-https/lib/socket.js\":{\"#package\":\"/node_modules/bare-https/package.json\",\"bare-tls\":\"/node_modules/bare-tls/index.js\"},\"/node_modules/bare-https/package.json\":{},\"/node_modules/bare-inspect/binding.js\":{\"#package\":\"/node_modules/bare-inspect/package.json\",\".\":\"linked:bare-inspect.3.1.4.framework/bare-inspect.3.1.4\"},\"/node_modules/bare-inspect/index.js\":{\"#package\":\"/node_modules/bare-inspect/package.json\",\"./binding\":\"/node_modules/bare-inspect/binding.js\",\"bare-ansi-escapes\":\"/node_modules/bare-ansi-escapes/index.js\",\"bare-type\":\"/node_modules/bare-type/index.js\"},\"/node_modules/bare-inspect/package.json\":{},\"/node_modules/bare-mime/index.js\":{\"#package\":\"/node_modules/bare-mime/package.json\"},\"/node_modules/bare-mime/package.json\":{},\"/node_modules/bare-net/index.js\":{\"#package\":\"/node_modules/bare-net/package.json\",\"./lib/constants\":\"/node_modules/bare-net/lib/constants.js\",\"bare-events\":\"/node_modules/bare-events/index.js\",\"bare-pipe\":\"/node_modules/bare-pipe/index.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\",\"bare-tcp\":\"/node_modules/bare-tcp/index.js\"},\"/node_modules/bare-net/lib/constants.js\":{\"#package\":\"/node_modules/bare-net/package.json\"},\"/node_modules/bare-net/package.json\":{},\"/node_modules/bare-os/binding.js\":{\"#package\":\"/node_modules/bare-os/package.json\",\".\":\"linked:bare-os.3.9.3.framework/bare-os.3.9.3\"},\"/node_modules/bare-os/index.js\":{\"#package\":\"/node_modules/bare-os/package.json\",\"./binding\":\"/node_modules/bare-os/binding.js\",\"./lib/constants\":\"/node_modules/bare-os/lib/constants.js\",\"./lib/errors\":\"/node_modules/bare-os/lib/errors.js\"},\"/node_modules/bare-os/lib/constants.js\":{\"#package\":\"/node_modules/bare-os/package.json\",\"../binding\":\"/node_modules/bare-os/binding.js\"},\"/node_modules/bare-os/lib/errors.js\":{\"#package\":\"/node_modules/bare-os/package.json\"},\"/node_modules/bare-os/package.json\":{},\"/node_modules/bare-path/binding.js\":{\"#package\":\"/node_modules/bare-path/package.json\",\".\":\"linked:bare-path.3.1.1.framework/bare-path.3.1.1\"},\"/node_modules/bare-path/index.js\":{\"#package\":\"/node_modules/bare-path/package.json\",\"./lib/posix\":\"/node_modules/bare-path/lib/posix.js\",\"./lib/win32\":\"/node_modules/bare-path/lib/win32.js\"},\"/node_modules/bare-path/lib/constants.js\":{\"#package\":\"/node_modules/bare-path/package.json\"},\"/node_modules/bare-path/lib/posix.js\":{\"#package\":\"/node_modules/bare-path/package.json\",\"../binding\":\"/node_modules/bare-path/binding.js\",\"./constants\":\"/node_modules/bare-path/lib/constants.js\",\"./shared\":\"/node_modules/bare-path/lib/shared.js\",\"./win32\":\"/node_modules/bare-path/lib/win32.js\"},\"/node_modules/bare-path/lib/shared.js\":{\"#package\":\"/node_modules/bare-path/package.json\",\"./constants\":\"/node_modules/bare-path/lib/constants.js\"},\"/node_modules/bare-path/lib/win32.js\":{\"#package\":\"/node_modules/bare-path/package.json\",\"../binding\":\"/node_modules/bare-path/binding.js\",\"./constants\":\"/node_modules/bare-path/lib/constants.js\",\"./posix\":\"/node_modules/bare-path/lib/posix.js\",\"./shared\":\"/node_modules/bare-path/lib/shared.js\"},\"/node_modules/bare-path/package.json\":{},\"/node_modules/bare-performance/binding.js\":{\"#package\":\"/node_modules/bare-performance/package.json\",\".\":\"linked:bare-performance.2.1.1.framework/bare-performance.2.1.1\"},\"/node_modules/bare-performance/index.js\":{\"#package\":\"/node_modules/bare-performance/package.json\",\"./binding\":\"/node_modules/bare-performance/binding.js\",\"./lib/histogram\":\"/node_modules/bare-performance/lib/histogram.js\",\"./lib/hr-time\":\"/node_modules/bare-performance/lib/hr-time.js\",\"./lib/timing\":\"/node_modules/bare-performance/lib/timing.js\",\"bare-events/web\":\"/node_modules/bare-events/web.js\"},\"/node_modules/bare-performance/lib/constants.js\":{\"#package\":\"/node_modules/bare-performance/package.json\"},\"/node_modules/bare-performance/lib/errors.js\":{\"#package\":\"/node_modules/bare-performance/package.json\"},\"/node_modules/bare-performance/lib/histogram.js\":{\"#package\":\"/node_modules/bare-performance/package.json\",\"../binding\":\"/node_modules/bare-performance/binding.js\"},\"/node_modules/bare-performance/lib/hr-time.js\":{\"#package\":\"/node_modules/bare-performance/package.json\",\"../binding\":\"/node_modules/bare-performance/binding.js\"},\"/node_modules/bare-performance/lib/timing.js\":{\"#package\":\"/node_modules/bare-performance/package.json\",\"../binding\":\"/node_modules/bare-performance/binding.js\",\"./constants\":\"/node_modules/bare-performance/lib/constants.js\",\"./errors\":\"/node_modules/bare-performance/lib/errors.js\",\"./hr-time\":\"/node_modules/bare-performance/lib/hr-time.js\"},\"/node_modules/bare-performance/package.json\":{},\"/node_modules/bare-pipe/binding.js\":{\"#package\":\"/node_modules/bare-pipe/package.json\",\".\":\"linked:bare-pipe.4.2.2.framework/bare-pipe.4.2.2\"},\"/node_modules/bare-pipe/index.js\":{\"#package\":\"/node_modules/bare-pipe/package.json\",\"./binding\":\"/node_modules/bare-pipe/binding.js\",\"./lib/constants\":\"/node_modules/bare-pipe/lib/constants.js\",\"./lib/errors\":\"/node_modules/bare-pipe/lib/errors.js\",\"bare-events\":\"/node_modules/bare-events/index.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-pipe/lib/constants.js\":{\"#package\":\"/node_modules/bare-pipe/package.json\",\"../binding\":\"/node_modules/bare-pipe/binding.js\"},\"/node_modules/bare-pipe/lib/errors.js\":{\"#package\":\"/node_modules/bare-pipe/package.json\"},\"/node_modules/bare-pipe/package.json\":{},\"/node_modules/bare-rpc/index.js\":{\"#package\":\"/node_modules/bare-rpc/package.json\",\"./lib/command-router\":\"/node_modules/bare-rpc/lib/command-router.js\",\"./lib/constants\":\"/node_modules/bare-rpc/lib/constants.js\",\"./lib/errors\":\"/node_modules/bare-rpc/lib/errors.js\",\"./lib/incoming-event\":\"/node_modules/bare-rpc/lib/incoming-event.js\",\"./lib/incoming-request\":\"/node_modules/bare-rpc/lib/incoming-request.js\",\"./lib/incoming-stream\":\"/node_modules/bare-rpc/lib/incoming-stream.js\",\"./lib/messages\":\"/node_modules/bare-rpc/lib/messages.js\",\"./lib/outgoing-event\":\"/node_modules/bare-rpc/lib/outgoing-event.js\",\"./lib/outgoing-request\":\"/node_modules/bare-rpc/lib/outgoing-request.js\",\"./lib/outgoing-stream\":\"/node_modules/bare-rpc/lib/outgoing-stream.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\"},\"/node_modules/bare-rpc/lib/command-router.js\":{\"#package\":\"/node_modules/bare-rpc/package.json\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/bare-rpc/lib/constants.js\":{\"#package\":\"/node_modules/bare-rpc/package.json\"},\"/node_modules/bare-rpc/lib/errors.js\":{\"#package\":\"/node_modules/bare-rpc/package.json\"},\"/node_modules/bare-rpc/lib/incoming-event.js\":{\"#package\":\"/node_modules/bare-rpc/package.json\"},\"/node_modules/bare-rpc/lib/incoming-request.js\":{\"#package\":\"/node_modules/bare-rpc/package.json\",\"./errors\":\"/node_modules/bare-rpc/lib/errors.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/bare-rpc/lib/incoming-stream.js\":{\"#package\":\"/node_modules/bare-rpc/package.json\",\"./constants\":\"/node_modules/bare-rpc/lib/constants.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-rpc/lib/messages.js\":{\"#package\":\"/node_modules/bare-rpc/package.json\",\"./constants\":\"/node_modules/bare-rpc/lib/constants.js\",\"./errors\":\"/node_modules/bare-rpc/lib/errors.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/bare-rpc/lib/outgoing-event.js\":{\"#package\":\"/node_modules/bare-rpc/package.json\",\"./errors\":\"/node_modules/bare-rpc/lib/errors.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/bare-rpc/lib/outgoing-request.js\":{\"#package\":\"/node_modules/bare-rpc/package.json\",\"./errors\":\"/node_modules/bare-rpc/lib/errors.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/bare-rpc/lib/outgoing-stream.js\":{\"#package\":\"/node_modules/bare-rpc/package.json\",\"./constants\":\"/node_modules/bare-rpc/lib/constants.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-rpc/package.json\":{},\"/node_modules/bare-stream/index.js\":{\"#package\":\"/node_modules/bare-stream/package.json\",\"./web\":\"/node_modules/bare-stream/web.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/bare-stream/package.json\":{},\"/node_modules/bare-stream/web.js\":{\"#package\":\"/node_modules/bare-stream/package.json\",\"streamx\":\"/node_modules/streamx/index.js\",\"teex\":\"/node_modules/teex/index.js\"},\"/node_modules/bare-tcp/binding.js\":{\"#package\":\"/node_modules/bare-tcp/package.json\",\".\":\"linked:bare-tcp.2.5.2.framework/bare-tcp.2.5.2\"},\"/node_modules/bare-tcp/index.js\":{\"#package\":\"/node_modules/bare-tcp/package.json\",\"./binding\":\"/node_modules/bare-tcp/binding.js\",\"./lib/constants\":\"/node_modules/bare-tcp/lib/constants.js\",\"./lib/errors\":\"/node_modules/bare-tcp/lib/errors.js\",\"./lib/ip\":\"/node_modules/bare-tcp/lib/ip.js\",\"bare-dns\":\"/node_modules/bare-dns/index.js\",\"bare-events\":\"/node_modules/bare-events/index.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-tcp/lib/constants.js\":{\"#package\":\"/node_modules/bare-tcp/package.json\"},\"/node_modules/bare-tcp/lib/errors.js\":{\"#package\":\"/node_modules/bare-tcp/package.json\"},\"/node_modules/bare-tcp/lib/ip.js\":{\"#package\":\"/node_modules/bare-tcp/package.json\"},\"/node_modules/bare-tcp/package.json\":{},\"/node_modules/bare-tls/binding.js\":{\"#package\":\"/node_modules/bare-tls/package.json\",\".\":\"linked:bare-tls.3.1.7.framework/bare-tls.3.1.7\"},\"/node_modules/bare-tls/index.js\":{\"#package\":\"/node_modules/bare-tls/package.json\",\"./binding\":\"/node_modules/bare-tls/binding.js\",\"./lib/constants\":\"/node_modules/bare-tls/lib/constants.js\",\"./lib/errors\":\"/node_modules/bare-tls/lib/errors.js\",\"./net\":\"/node_modules/bare-tls/net.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-tls/lib/constants.js\":{\"#package\":\"/node_modules/bare-tls/package.json\"},\"/node_modules/bare-tls/lib/errors.js\":{\"#package\":\"/node_modules/bare-tls/package.json\"},\"/node_modules/bare-tls/net.js\":{\"#package\":\"/node_modules/bare-tls/package.json\",\"bare-events\":\"/node_modules/bare-events/index.js\",\"bare-net\":\"/node_modules/bare-net/index.js\",\"bare-tls\":\"/node_modules/bare-tls/index.js\"},\"/node_modules/bare-tls/package.json\":{},\"/node_modules/bare-type/binding.js\":{\"#package\":\"/node_modules/bare-type/package.json\",\".\":\"linked:bare-type.1.1.0.framework/bare-type.1.1.0\"},\"/node_modules/bare-type/index.js\":{\"#package\":\"/node_modules/bare-type/package.json\",\"./binding\":\"/node_modules/bare-type/binding.js\"},\"/node_modules/bare-type/package.json\":{},\"/node_modules/bare-url/binding.js\":{\"#package\":\"/node_modules/bare-url/package.json\",\".\":\"linked:bare-url.2.4.5.framework/bare-url.2.4.5\"},\"/node_modules/bare-url/index.js\":{\"#package\":\"/node_modules/bare-url/package.json\",\"./binding\":\"/node_modules/bare-url/binding.js\",\"./lib/errors\":\"/node_modules/bare-url/lib/errors.js\",\"./lib/url-search-params\":\"/node_modules/bare-url/lib/url-search-params.js\",\"bare-path\":\"/node_modules/bare-path/index.js\"},\"/node_modules/bare-url/lib/errors.js\":{\"#package\":\"/node_modules/bare-url/package.json\"},\"/node_modules/bare-url/lib/url-search-params.js\":{\"#package\":\"/node_modules/bare-url/package.json\"},\"/node_modules/bare-url/package.json\":{},\"/node_modules/bare-zlib/binding.js\":{\"#package\":\"/node_modules/bare-zlib/package.json\",\".\":\"linked:bare-zlib.1.4.1.framework/bare-zlib.1.4.1\"},\"/node_modules/bare-zlib/index.js\":{\"#package\":\"/node_modules/bare-zlib/package.json\",\"./binding\":\"/node_modules/bare-zlib/binding.js\",\"./lib/constants\":\"/node_modules/bare-zlib/lib/constants.js\",\"./lib/errors\":\"/node_modules/bare-zlib/lib/errors.js\",\"bare-stream\":\"/node_modules/bare-stream/index.js\"},\"/node_modules/bare-zlib/lib/constants.js\":{\"#package\":\"/node_modules/bare-zlib/package.json\",\"../binding\":\"/node_modules/bare-zlib/binding.js\"},\"/node_modules/bare-zlib/lib/errors.js\":{\"#package\":\"/node_modules/bare-zlib/package.json\"},\"/node_modules/bare-zlib/package.json\":{},\"/node_modules/big-sparse-array/index.js\":{\"#package\":\"/node_modules/big-sparse-array/package.json\"},\"/node_modules/big-sparse-array/package.json\":{},\"/node_modules/binary-stream-equals/index.js\":{\"#package\":\"/node_modules/binary-stream-equals/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/binary-stream-equals/package.json\":{},\"/node_modules/bits-to-bytes/index.js\":{\"#package\":\"/node_modules/bits-to-bytes/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/bits-to-bytes/package.json\":{},\"/node_modules/blind-relay/index.js\":{\"#package\":\"/node_modules/blind-relay/package.json\",\"./lib/errors\":\"/node_modules/blind-relay/lib/errors.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"bits-to-bytes\":\"/node_modules/bits-to-bytes/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"compact-encoding-bitfield\":\"/node_modules/compact-encoding-bitfield/index.js\",\"events\":\"/node_modules/bare-events/index.js\",\"protomux\":\"/node_modules/protomux/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/blind-relay/lib/errors.js\":{\"#package\":\"/node_modules/blind-relay/package.json\"},\"/node_modules/blind-relay/package.json\":{},\"/node_modules/bogon/index.js\":{\"#package\":\"/node_modules/bogon/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/bogon/package.json\":{},\"/node_modules/codecs/index.js\":{\"#package\":\"/node_modules/codecs/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/codecs/package.json\":{},\"/node_modules/compact-encoding-bitfield/index.js\":{\"#package\":\"/node_modules/compact-encoding-bitfield/package.json\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/compact-encoding-bitfield/package.json\":{},\"/node_modules/compact-encoding/endian.js\":{\"#package\":\"/node_modules/compact-encoding/package.json\"},\"/node_modules/compact-encoding/index.js\":{\"#package\":\"/node_modules/compact-encoding/package.json\",\"./endian\":\"/node_modules/compact-encoding/endian.js\",\"./lexint\":\"/node_modules/compact-encoding/lexint.js\",\"./raw\":\"/node_modules/compact-encoding/raw.js\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/compact-encoding/lexint.js\":{\"#package\":\"/node_modules/compact-encoding/package.json\"},\"/node_modules/compact-encoding/package.json\":{},\"/node_modules/compact-encoding/raw.js\":{\"#package\":\"/node_modules/compact-encoding/package.json\",\"./endian\":\"/node_modules/compact-encoding/endian.js\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/corestore/index.js\":{\"#package\":\"/node_modules/corestore/package.json\",\"./lib/audit.js\":\"/node_modules/corestore/lib/audit.js\",\"./lib/notify.js\":\"/node_modules/corestore/lib/notify.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"hypercore\":\"/node_modules/hypercore/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\",\"hypercore-errors\":\"/node_modules/hypercore-errors/index.js\",\"hypercore-id-encoding\":\"/node_modules/hypercore-id-encoding/index.js\",\"ready-resource\":\"/node_modules/ready-resource/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\",\"which-runtime\":\"/node_modules/which-runtime/index.js\"},\"/node_modules/corestore/lib/audit.js\":{\"#package\":\"/node_modules/corestore/package.json\"},\"/node_modules/corestore/lib/notify.js\":{\"#package\":\"/node_modules/corestore/package.json\",\"events\":\"/node_modules/bare-events/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/corestore/package.json\":{},\"/node_modules/debounceify/index.js\":{\"#package\":\"/node_modules/debounceify/package.json\"},\"/node_modules/debounceify/package.json\":{},\"/node_modules/device-file/index.js\":{\"#package\":\"/node_modules/device-file/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"fd-lock\":\"/node_modules/fd-lock/index.js\",\"fs\":\"/node_modules/bare-fs/index.js\",\"fs-native-extensions\":\"/node_modules/fs-native-extensions/index.js\",\"path\":\"/node_modules/bare-path/index.js\",\"ready-resource\":\"/node_modules/ready-resource/index.js\"},\"/node_modules/device-file/package.json\":{},\"/node_modules/dht-rpc/index.js\":{\"#package\":\"/node_modules/dht-rpc/package.json\",\"./lib/commands\":\"/node_modules/dht-rpc/lib/commands.js\",\"./lib/errors\":\"/node_modules/dht-rpc/lib/errors.js\",\"./lib/health\":\"/node_modules/dht-rpc/lib/health.js\",\"./lib/io\":\"/node_modules/dht-rpc/lib/io.js\",\"./lib/peer\":\"/node_modules/dht-rpc/lib/peer.js\",\"./lib/query\":\"/node_modules/dht-rpc/lib/query.js\",\"./lib/session\":\"/node_modules/dht-rpc/lib/session.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"events\":\"/node_modules/bare-events/index.js\",\"kademlia-routing-table\":\"/node_modules/kademlia-routing-table/index.js\",\"nat-sampler\":\"/node_modules/nat-sampler/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\",\"time-ordered-set\":\"/node_modules/time-ordered-set/index.js\",\"udx-native\":\"/node_modules/udx-native/lib/udx.js\"},\"/node_modules/dht-rpc/lib/commands.js\":{\"#package\":\"/node_modules/dht-rpc/package.json\"},\"/node_modules/dht-rpc/lib/errors.js\":{\"#package\":\"/node_modules/dht-rpc/package.json\"},\"/node_modules/dht-rpc/lib/health.js\":{\"#package\":\"/node_modules/dht-rpc/package.json\"},\"/node_modules/dht-rpc/lib/io.js\":{\"#package\":\"/node_modules/dht-rpc/package.json\",\"./errors\":\"/node_modules/dht-rpc/lib/errors.js\",\"./peer\":\"/node_modules/dht-rpc/lib/peer.js\",\"adaptive-timeout\":\"/node_modules/adaptive-timeout/index.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"fast-fifo\":\"/node_modules/fast-fifo/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/dht-rpc/lib/peer.js\":{\"#package\":\"/node_modules/dht-rpc/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/dht-rpc/lib/query.js\":{\"#package\":\"/node_modules/dht-rpc/package.json\",\"./commands\":\"/node_modules/dht-rpc/lib/commands.js\",\"./peer\":\"/node_modules/dht-rpc/lib/peer.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/dht-rpc/lib/session.js\":{\"#package\":\"/node_modules/dht-rpc/package.json\"},\"/node_modules/dht-rpc/package.json\":{},\"/node_modules/events-universal/bare.js\":{\"#package\":\"/node_modules/events-universal/package.json\",\"bare-events\":\"/node_modules/bare-events/index.js\"},\"/node_modules/events-universal/package.json\":{},\"/node_modules/fast-fifo/fixed-size.js\":{\"#package\":\"/node_modules/fast-fifo/package.json\"},\"/node_modules/fast-fifo/index.js\":{\"#package\":\"/node_modules/fast-fifo/package.json\",\"./fixed-size\":\"/node_modules/fast-fifo/fixed-size.js\"},\"/node_modules/fast-fifo/package.json\":{},\"/node_modules/fast-safe-stringify/index.js\":{\"#package\":\"/node_modules/fast-safe-stringify/package.json\"},\"/node_modules/fast-safe-stringify/package.json\":{},\"/node_modules/fd-lock/index.js\":{\"#package\":\"/node_modules/fd-lock/package.json\",\"fs\":\"/node_modules/bare-fs/index.js\",\"fs-native-extensions\":\"/node_modules/fs-native-extensions/index.js\",\"ready-resource\":\"/node_modules/ready-resource/index.js\",\"resource-on-exit\":\"/node_modules/resource-on-exit/index.js\"},\"/node_modules/fd-lock/package.json\":{},\"/node_modules/flat-tree/index.js\":{\"#package\":\"/node_modules/flat-tree/package.json\"},\"/node_modules/flat-tree/package.json\":{},\"/node_modules/fs-native-extensions/binding.js\":{\"#package\":\"/node_modules/fs-native-extensions/package.json\",\".\":\"linked:fs-native-extensions.1.5.0.framework/fs-native-extensions.1.5.0\",\"require-addon\":\"/node_modules/require-addon/lib/bare.js\"},\"/node_modules/fs-native-extensions/index.js\":{\"#package\":\"/node_modules/fs-native-extensions/package.json\",\"./binding\":\"/node_modules/fs-native-extensions/binding.js\",\"which-runtime\":\"/node_modules/which-runtime/index.js\"},\"/node_modules/fs-native-extensions/package.json\":{},\"/node_modules/hyperbee/index.js\":{\"#package\":\"/node_modules/hyperbee/package.json\",\"./iterators/diff\":\"/node_modules/hyperbee/iterators/diff.js\",\"./iterators/history\":\"/node_modules/hyperbee/iterators/history.js\",\"./iterators/local\":\"/node_modules/hyperbee/iterators/local.js\",\"./iterators/range\":\"/node_modules/hyperbee/iterators/range.js\",\"./lib/extension\":\"/node_modules/hyperbee/lib/extension.js\",\"./lib/messages\":\"/node_modules/hyperbee/lib/messages.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"codecs\":\"/node_modules/codecs/index.js\",\"debounceify\":\"/node_modules/debounceify/index.js\",\"hypercore-errors\":\"/node_modules/hypercore-errors/index.js\",\"mutexify/promise\":\"/node_modules/mutexify/promise.js\",\"rache\":\"/node_modules/rache/index.js\",\"ready-resource\":\"/node_modules/ready-resource/index.js\",\"resolve-reject-promise\":\"/node_modules/resolve-reject-promise/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\",\"streamx\":\"/node_modules/streamx/index.js\",\"unslab\":\"/node_modules/unslab/index.js\"},\"/node_modules/hyperbee/iterators/diff.js\":{\"#package\":\"/node_modules/hyperbee/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/hyperbee/iterators/history.js\":{\"#package\":\"/node_modules/hyperbee/package.json\"},\"/node_modules/hyperbee/iterators/local.js\":{\"#package\":\"/node_modules/hyperbee/package.json\"},\"/node_modules/hyperbee/iterators/range.js\":{\"#package\":\"/node_modules/hyperbee/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/hyperbee/lib/extension.js\":{\"#package\":\"/node_modules/hyperbee/package.json\",\"./messages\":\"/node_modules/hyperbee/lib/messages.js\"},\"/node_modules/hyperbee/lib/messages.js\":{\"#package\":\"/node_modules/hyperbee/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"protocol-buffers-encodings\":\"/node_modules/protocol-buffers-encodings/index.js\"},\"/node_modules/hyperbee/package.json\":{},\"/node_modules/hyperblobs/index.js\":{\"#package\":\"/node_modules/hyperblobs/package.json\",\"./lib/block-map\":\"/node_modules/hyperblobs/lib/block-map.js\",\"./lib/monitor\":\"/node_modules/hyperblobs/lib/monitor.js\",\"./lib/streams\":\"/node_modules/hyperblobs/lib/streams.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"mutexify\":\"/node_modules/mutexify/index.js\"},\"/node_modules/hyperblobs/lib/block-map.js\":{\"#package\":\"/node_modules/hyperblobs/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\"},\"/node_modules/hyperblobs/lib/monitor.js\":{\"#package\":\"/node_modules/hyperblobs/package.json\",\"events\":\"/node_modules/bare-events/index.js\",\"speedometer\":\"/node_modules/speedometer/index.js\"},\"/node_modules/hyperblobs/lib/streams.js\":{\"#package\":\"/node_modules/hyperblobs/package.json\",\"./block-map\":\"/node_modules/hyperblobs/lib/block-map.js\",\"hypercore-errors\":\"/node_modules/hypercore-errors/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/hyperblobs/package.json\":{},\"/node_modules/hypercore-crypto/index.js\":{\"#package\":\"/node_modules/hypercore-crypto/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/hypercore-crypto/package.json\":{},\"/node_modules/hypercore-errors/index.js\":{\"#package\":\"/node_modules/hypercore-errors/package.json\",\"hypercore-id-encoding\":\"/node_modules/hypercore-id-encoding/index.js\"},\"/node_modules/hypercore-errors/package.json\":{},\"/node_modules/hypercore-id-encoding/index.js\":{\"#package\":\"/node_modules/hypercore-id-encoding/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"z32\":\"/node_modules/z32/index.js\"},\"/node_modules/hypercore-id-encoding/package.json\":{},\"/node_modules/hypercore-storage/encoding/external.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\"},\"/node_modules/hypercore-storage/encoding/spec/hyperschema/index.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\",\"../../external.js\":\"/node_modules/hypercore-storage/encoding/external.js\",\"hyperschema/runtime\":\"/node_modules/hyperschema/runtime.cjs\"},\"/node_modules/hypercore-storage/index.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\",\"./lib/keys.js\":\"/node_modules/hypercore-storage/lib/keys.js\",\"./lib/streams.js\":\"/node_modules/hypercore-storage/lib/streams.js\",\"./lib/tx.js\":\"/node_modules/hypercore-storage/lib/tx.js\",\"./lib/view.js\":\"/node_modules/hypercore-storage/lib/view.js\",\"./migrations/0\":\"/node_modules/hypercore-storage/migrations/0/index.js\",\"./migrations/1\":\"/node_modules/hypercore-storage/migrations/1/index.js\",\"device-file\":\"/node_modules/device-file/index.js\",\"fs\":\"/node_modules/bare-fs/index.js\",\"path\":\"/node_modules/bare-path/index.js\",\"resolve-reject-promise\":\"/node_modules/resolve-reject-promise/index.js\",\"rocksdb-native\":\"/node_modules/rocksdb-native/index.js\",\"scope-lock\":\"/node_modules/scope-lock/index.js\",\"xache\":\"/node_modules/xache/index.js\"},\"/node_modules/hypercore-storage/lib/block-dependency-stream.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\",\"./keys\":\"/node_modules/hypercore-storage/lib/keys.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/hypercore-storage/lib/close-error-stream.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/hypercore-storage/lib/keys.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"index-encoder\":\"/node_modules/index-encoder/index.js\"},\"/node_modules/hypercore-storage/lib/streams.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\",\"../encoding/spec/hyperschema\":\"/node_modules/hypercore-storage/encoding/spec/hyperschema/index.js\",\"./block-dependency-stream.js\":\"/node_modules/hypercore-storage/lib/block-dependency-stream.js\",\"./keys.js\":\"/node_modules/hypercore-storage/lib/keys.js\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/hypercore-storage/lib/tx.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\",\"../encoding/spec/hyperschema\":\"/node_modules/hypercore-storage/encoding/spec/hyperschema/index.js\",\"./keys.js\":\"/node_modules/hypercore-storage/lib/keys.js\",\"./view.js\":\"/node_modules/hypercore-storage/lib/view.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"flat-tree\":\"/node_modules/flat-tree/index.js\"},\"/node_modules/hypercore-storage/lib/view.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\",\"./close-error-stream.js\":\"/node_modules/hypercore-storage/lib/close-error-stream.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/hypercore-storage/migrations/0/index.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\",\"../../lib/tx.js\":\"/node_modules/hypercore-storage/lib/tx.js\",\"../../lib/view.js\":\"/node_modules/hypercore-storage/lib/view.js\",\"./messages.js\":\"/node_modules/hypercore-storage/migrations/0/messages.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"flat-tree\":\"/node_modules/flat-tree/index.js\",\"fs\":\"/node_modules/bare-fs/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\",\"path\":\"/node_modules/bare-path/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/hypercore-storage/migrations/0/messages.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/hypercore-storage/migrations/1/index.js\":{\"#package\":\"/node_modules/hypercore-storage/package.json\",\"../../encoding/spec/hyperschema\":\"/node_modules/hypercore-storage/encoding/spec/hyperschema/index.js\",\"../../lib/keys.js\":\"/node_modules/hypercore-storage/lib/keys.js\",\"../../lib/tx.js\":\"/node_modules/hypercore-storage/lib/tx.js\",\"../../lib/view.js\":\"/node_modules/hypercore-storage/lib/view.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/hypercore-storage/package.json\":{},\"/node_modules/hypercore/index.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./lib/caps\":\"/node_modules/hypercore/lib/caps.js\",\"./lib/core\":\"/node_modules/hypercore/lib/core.js\",\"./lib/default-encryption\":\"/node_modules/hypercore/lib/default-encryption.js\",\"./lib/download\":\"/node_modules/hypercore/lib/download.js\",\"./lib/feature-flags\":\"/node_modules/hypercore/lib/feature-flags.js\",\"./lib/fully-remote-proof\":\"/node_modules/hypercore/lib/fully-remote-proof.js\",\"./lib/info\":\"/node_modules/hypercore/lib/info.js\",\"./lib/inspect\":\"/node_modules/hypercore/lib/inspect.js\",\"./lib/mark-bitfield\":\"/node_modules/hypercore/lib/mark-bitfield.js\",\"./lib/merkle-tree\":\"/node_modules/hypercore/lib/merkle-tree.js\",\"./lib/replicator\":\"/node_modules/hypercore/lib/replicator.js\",\"./lib/streams\":\"/node_modules/hypercore/lib/streams.js\",\"./lib/verifier\":\"/node_modules/hypercore/lib/verifier.js\",\"./lib/wants\":\"/node_modules/hypercore/lib/wants.js\",\"@hyperswarm/secret-stream\":\"/node_modules/@hyperswarm/secret-stream/index.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"events\":\"/node_modules/bare-events/index.js\",\"flat-tree\":\"/node_modules/flat-tree/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\",\"hypercore-errors\":\"/node_modules/hypercore-errors/index.js\",\"hypercore-id-encoding\":\"/node_modules/hypercore-id-encoding/index.js\",\"hypercore-storage\":\"/node_modules/hypercore-storage/index.js\",\"is-options\":\"/node_modules/is-options/index.js\",\"nanoassert\":\"/node_modules/nanoassert/index.js\",\"protomux\":\"/node_modules/protomux/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\",\"unslab\":\"/node_modules/unslab/index.js\"},\"/node_modules/hypercore/lib/audit.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./merkle-tree\":\"/node_modules/hypercore/lib/merkle-tree.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"flat-tree\":\"/node_modules/flat-tree/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\"},\"/node_modules/hypercore/lib/bit-interlude.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./compat\":\"/node_modules/hypercore/lib/compat.js\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/hypercore/lib/bitfield.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./compat\":\"/node_modules/hypercore/lib/compat.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"big-sparse-array\":\"/node_modules/big-sparse-array/index.js\"},\"/node_modules/hypercore/lib/caps.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/hypercore/lib/compat.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"quickbit-universal\":\"/node_modules/quickbit-universal/index.js\",\"quickbit-universal/fallback\":\"/node_modules/quickbit-universal/fallback.js\"},\"/node_modules/hypercore/lib/copy-prologue.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./bitfield\":\"/node_modules/hypercore/lib/bitfield.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"flat-tree\":\"/node_modules/flat-tree/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\",\"quickbit-universal\":\"/node_modules/quickbit-universal/index.js\"},\"/node_modules/hypercore/lib/core.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./audit\":\"/node_modules/hypercore/lib/audit.js\",\"./bit-interlude\":\"/node_modules/hypercore/lib/bit-interlude.js\",\"./bitfield\":\"/node_modules/hypercore/lib/bitfield.js\",\"./copy-prologue\":\"/node_modules/hypercore/lib/copy-prologue.js\",\"./merkle-tree\":\"/node_modules/hypercore/lib/merkle-tree.js\",\"./mutex\":\"/node_modules/hypercore/lib/mutex.js\",\"./remote-bitfield\":\"/node_modules/hypercore/lib/remote-bitfield.js\",\"./replicator\":\"/node_modules/hypercore/lib/replicator.js\",\"./session-state\":\"/node_modules/hypercore/lib/session-state.js\",\"./verifier\":\"/node_modules/hypercore/lib/verifier.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\",\"hypercore-errors\":\"/node_modules/hypercore-errors/index.js\",\"unslab\":\"/node_modules/unslab/index.js\",\"z32\":\"/node_modules/z32/index.js\"},\"/node_modules/hypercore/lib/default-encryption.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./caps\":\"/node_modules/hypercore/lib/caps.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/hypercore/lib/download.js\":{\"#package\":\"/node_modules/hypercore/package.json\"},\"/node_modules/hypercore/lib/feature-flags.js\":{\"#package\":\"/node_modules/hypercore/package.json\"},\"/node_modules/hypercore/lib/fully-remote-proof.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./merkle-tree.js\":\"/node_modules/hypercore/lib/merkle-tree.js\",\"./messages.js\":\"/node_modules/hypercore/lib/messages.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"flat-tree\":\"/node_modules/flat-tree/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\"},\"/node_modules/hypercore/lib/hotswap-queue.js\":{\"#package\":\"/node_modules/hypercore/package.json\"},\"/node_modules/hypercore/lib/info.js\":{\"#package\":\"/node_modules/hypercore/package.json\"},\"/node_modules/hypercore/lib/inspect.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/hypercore/lib/mark-bitfield.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./compat\":\"/node_modules/hypercore/lib/compat.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"big-sparse-array\":\"/node_modules/big-sparse-array/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/hypercore/lib/merkle-tree.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./caps\":\"/node_modules/hypercore/lib/caps.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"flat-tree\":\"/node_modules/flat-tree/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\",\"hypercore-errors\":\"/node_modules/hypercore-errors/index.js\",\"unslab\":\"/node_modules/unslab/index.js\"},\"/node_modules/hypercore/lib/messages.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./caps\":\"/node_modules/hypercore/lib/caps.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"hypercore-errors\":\"/node_modules/hypercore-errors/index.js\",\"unslab\":\"/node_modules/unslab/index.js\"},\"/node_modules/hypercore/lib/multisig.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./merkle-tree\":\"/node_modules/hypercore/lib/merkle-tree.js\",\"./messages\":\"/node_modules/hypercore/lib/messages.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"flat-tree\":\"/node_modules/flat-tree/index.js\"},\"/node_modules/hypercore/lib/mutex.js\":{\"#package\":\"/node_modules/hypercore/package.json\"},\"/node_modules/hypercore/lib/receiver-queue.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"fast-fifo\":\"/node_modules/fast-fifo/index.js\"},\"/node_modules/hypercore/lib/remote-bitfield.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./compat\":\"/node_modules/hypercore/lib/compat.js\",\"big-sparse-array\":\"/node_modules/big-sparse-array/index.js\"},\"/node_modules/hypercore/lib/replicator.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./caps\":\"/node_modules/hypercore/lib/caps.js\",\"./hotswap-queue\":\"/node_modules/hypercore/lib/hotswap-queue.js\",\"./merkle-tree\":\"/node_modules/hypercore/lib/merkle-tree.js\",\"./messages\":\"/node_modules/hypercore/lib/messages.js\",\"./mutex\":\"/node_modules/hypercore/lib/mutex.js\",\"./receiver-queue\":\"/node_modules/hypercore/lib/receiver-queue.js\",\"./remote-bitfield\":\"/node_modules/hypercore/lib/remote-bitfield.js\",\"./wants\":\"/node_modules/hypercore/lib/wants.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"flat-tree\":\"/node_modules/flat-tree/index.js\",\"hypercore-errors\":\"/node_modules/hypercore-errors/index.js\",\"random-array-iterator\":\"/node_modules/random-array-iterator/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\"},\"/node_modules/hypercore/lib/session-state.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./bitfield\":\"/node_modules/hypercore/lib/bitfield.js\",\"./merkle-tree\":\"/node_modules/hypercore/lib/merkle-tree.js\",\"./mutex\":\"/node_modules/hypercore/lib/mutex.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"flat-tree\":\"/node_modules/flat-tree/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\",\"hypercore-errors\":\"/node_modules/hypercore-errors/index.js\",\"hypercore-storage\":\"/node_modules/hypercore-storage/index.js\",\"nanoassert\":\"/node_modules/nanoassert/index.js\",\"quickbit-universal\":\"/node_modules/quickbit-universal/index.js\"},\"/node_modules/hypercore/lib/streams.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/hypercore/lib/verifier.js\":{\"#package\":\"/node_modules/hypercore/package.json\",\"./caps\":\"/node_modules/hypercore/lib/caps.js\",\"./messages\":\"/node_modules/hypercore/lib/messages.js\",\"./multisig\":\"/node_modules/hypercore/lib/multisig.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"flat-tree\":\"/node_modules/flat-tree/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\",\"hypercore-errors\":\"/node_modules/hypercore-errors/index.js\",\"unslab\":\"/node_modules/unslab/index.js\"},\"/node_modules/hypercore/lib/wants.js\":{\"#package\":\"/node_modules/hypercore/package.json\"},\"/node_modules/hypercore/package.json\":{},\"/node_modules/hyperdb/index.js\":{\"#package\":\"/node_modules/hyperdb/package.json\",\"./lib/definition.js\":\"/node_modules/hyperdb/lib/definition.js\",\"./lib/engine/bee.js\":\"/node_modules/hyperdb/lib/engine/bee.js\",\"./lib/engine/bee2.js\":\"/node_modules/hyperdb/lib/engine/bee2.js\",\"./lib/engine/rocks.js\":\"/node_modules/hyperdb/lib/engine/rocks.js\",\"./lib/stream.js\":\"/node_modules/hyperdb/lib/stream.js\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/hyperdb/lib/changes-stream.js\":{\"#package\":\"/node_modules/hyperdb/package.json\"},\"/node_modules/hyperdb/lib/definition.js\":{\"#package\":\"/node_modules/hyperdb/package.json\"},\"/node_modules/hyperdb/lib/engine/bee.js\":{\"#package\":\"/node_modules/hyperdb/package.json\",\"../changes-stream.js\":\"/node_modules/hyperdb/lib/changes-stream.js\",\"../sessions.js\":\"/node_modules/hyperdb/lib/sessions.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"hyperbee\":\"/node_modules/hyperbee/index.js\",\"hypercore\":\"/node_modules/hypercore/index.js\",\"refcounter\":\"/node_modules/refcounter/index.js\",\"scope-lock\":\"/node_modules/scope-lock/index.js\"},\"/node_modules/hyperdb/lib/engine/bee2.js\":{\"#package\":\"/node_modules/hyperdb/package.json\",\"../changes-stream.js\":\"/node_modules/hyperdb/lib/changes-stream.js\",\"../sessions.js\":\"/node_modules/hyperdb/lib/sessions.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"hypercore\":\"/node_modules/hypercore/index.js\",\"refcounter\":\"/node_modules/refcounter/index.js\",\"scope-lock\":\"/node_modules/scope-lock/index.js\"},\"/node_modules/hyperdb/lib/engine/rocks.js\":{\"#package\":\"/node_modules/hyperdb/package.json\",\"../sessions.js\":\"/node_modules/hyperdb/lib/sessions.js\",\"rocksdb-native\":\"/node_modules/rocksdb-native/index.js\",\"scope-lock\":\"/node_modules/scope-lock/index.js\"},\"/node_modules/hyperdb/lib/sessions.js\":{\"#package\":\"/node_modules/hyperdb/package.json\"},\"/node_modules/hyperdb/lib/stream.js\":{\"#package\":\"/node_modules/hyperdb/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/hyperdb/package.json\":{},\"/node_modules/hyperdb/runtime.js\":{\"#package\":\"/node_modules/hyperdb/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"index-encoder\":\"/node_modules/index-encoder/index.js\"},\"/node_modules/hyperdht-address/index.js\":{\"#package\":\"/node_modules/hyperdht-address/package.json\",\"./spec/hyperschema\":\"/node_modules/hyperdht-address/spec/hyperschema/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/hyperdht-address/package.json\":{},\"/node_modules/hyperdht-address/spec/hyperschema/index.js\":{\"#package\":\"/node_modules/hyperdht-address/package.json\",\"hyperschema/runtime\":\"/node_modules/hyperschema/runtime.cjs\"},\"/node_modules/hyperdht/index.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"./lib/connect\":\"/node_modules/hyperdht/lib/connect.js\",\"./lib/connection-pool\":\"/node_modules/hyperdht/lib/connection-pool.js\",\"./lib/constants\":\"/node_modules/hyperdht/lib/constants.js\",\"./lib/crypto\":\"/node_modules/hyperdht/lib/crypto.js\",\"./lib/errors\":\"/node_modules/hyperdht/lib/errors.js\",\"./lib/messages\":\"/node_modules/hyperdht/lib/messages.js\",\"./lib/persistent\":\"/node_modules/hyperdht/lib/persistent.js\",\"./lib/raw-stream-set\":\"/node_modules/hyperdht/lib/raw-stream-set.js\",\"./lib/router\":\"/node_modules/hyperdht/lib/router.js\",\"./lib/server\":\"/node_modules/hyperdht/lib/server.js\",\"./lib/socket-pool\":\"/node_modules/hyperdht/lib/socket-pool.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"dht-rpc\":\"/node_modules/dht-rpc/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\",\"xache\":\"/node_modules/xache/index.js\"},\"/node_modules/hyperdht/lib/announcer.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"./constants\":\"/node_modules/hyperdht/lib/constants.js\",\"./encode\":\"/node_modules/hyperdht/lib/encode.js\",\"./messages\":\"/node_modules/hyperdht/lib/messages.js\",\"./persistent\":\"/node_modules/hyperdht/lib/persistent.js\",\"./sleeper\":\"/node_modules/hyperdht/lib/sleeper.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\",\"signal-promise\":\"/node_modules/signal-promise/index.js\"},\"/node_modules/hyperdht/lib/connect.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"./constants\":\"/node_modules/hyperdht/lib/constants.js\",\"./crypto\":\"/node_modules/hyperdht/lib/crypto.js\",\"./errors\":\"/node_modules/hyperdht/lib/errors.js\",\"./holepuncher\":\"/node_modules/hyperdht/lib/holepuncher.js\",\"./noise-wrap\":\"/node_modules/hyperdht/lib/noise-wrap.js\",\"./relay-connection\":\"/node_modules/hyperdht/lib/relay-connection.js\",\"./secure-payload\":\"/node_modules/hyperdht/lib/secure-payload.js\",\"./semaphore\":\"/node_modules/hyperdht/lib/semaphore.js\",\"./sleeper\":\"/node_modules/hyperdht/lib/sleeper.js\",\"@hyperswarm/secret-stream\":\"/node_modules/@hyperswarm/secret-stream/index.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"blind-relay\":\"/node_modules/blind-relay/index.js\",\"bogon\":\"/node_modules/bogon/index.js\",\"hypercore-id-encoding\":\"/node_modules/hypercore-id-encoding/index.js\",\"hyperdht-address\":\"/node_modules/hyperdht-address/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\",\"unslab\":\"/node_modules/unslab/index.js\"},\"/node_modules/hyperdht/lib/connection-pool.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"./errors\":\"/node_modules/hyperdht/lib/errors.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"events\":\"/node_modules/bare-events/index.js\"},\"/node_modules/hyperdht/lib/constants.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\"},\"/node_modules/hyperdht/lib/crypto.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/hyperdht/lib/encode.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/hyperdht/lib/errors.js\":{\"#package\":\"/node_modules/hyperdht/package.json\"},\"/node_modules/hyperdht/lib/holepuncher.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"./constants\":\"/node_modules/hyperdht/lib/constants.js\",\"./nat\":\"/node_modules/hyperdht/lib/nat.js\",\"./sleeper\":\"/node_modules/hyperdht/lib/sleeper.js\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/hyperdht/lib/messages.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/hyperdht/lib/nat.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"../lib/constants\":\"/node_modules/hyperdht/lib/constants.js\"},\"/node_modules/hyperdht/lib/noise-wrap.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"./constants\":\"/node_modules/hyperdht/lib/constants.js\",\"./errors\":\"/node_modules/hyperdht/lib/errors.js\",\"./messages\":\"/node_modules/hyperdht/lib/messages.js\",\"@hyperswarm/secret-stream\":\"/node_modules/@hyperswarm/secret-stream/index.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"noise-curve-ed\":\"/node_modules/noise-curve-ed/index.js\",\"noise-handshake\":\"/node_modules/noise-handshake/noise.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/hyperdht/lib/persistent.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"./constants\":\"/node_modules/hyperdht/lib/constants.js\",\"./encode\":\"/node_modules/hyperdht/lib/encode.js\",\"./messages\":\"/node_modules/hyperdht/lib/messages.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"record-cache\":\"/node_modules/record-cache/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\",\"unslab\":\"/node_modules/unslab/index.js\",\"xache\":\"/node_modules/xache/index.js\"},\"/node_modules/hyperdht/lib/raw-stream-set.js\":{\"#package\":\"/node_modules/hyperdht/package.json\"},\"/node_modules/hyperdht/lib/relay-connection.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\"},\"/node_modules/hyperdht/lib/router.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"./constants\":\"/node_modules/hyperdht/lib/constants.js\",\"./errors\":\"/node_modules/hyperdht/lib/errors.js\",\"./messages\":\"/node_modules/hyperdht/lib/messages.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\",\"xache\":\"/node_modules/xache/index.js\"},\"/node_modules/hyperdht/lib/secure-payload.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"./messages\":\"/node_modules/hyperdht/lib/messages.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/hyperdht/lib/semaphore.js\":{\"#package\":\"/node_modules/hyperdht/package.json\"},\"/node_modules/hyperdht/lib/server.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"./announcer\":\"/node_modules/hyperdht/lib/announcer.js\",\"./constants\":\"/node_modules/hyperdht/lib/constants.js\",\"./crypto\":\"/node_modules/hyperdht/lib/crypto.js\",\"./errors\":\"/node_modules/hyperdht/lib/errors.js\",\"./holepuncher\":\"/node_modules/hyperdht/lib/holepuncher.js\",\"./noise-wrap\":\"/node_modules/hyperdht/lib/noise-wrap.js\",\"./relay-connection\":\"/node_modules/hyperdht/lib/relay-connection.js\",\"./secure-payload\":\"/node_modules/hyperdht/lib/secure-payload.js\",\"@hyperswarm/secret-stream\":\"/node_modules/@hyperswarm/secret-stream/index.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"blind-relay\":\"/node_modules/blind-relay/index.js\",\"bogon\":\"/node_modules/bogon/index.js\",\"events\":\"/node_modules/bare-events/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\"},\"/node_modules/hyperdht/lib/sleeper.js\":{\"#package\":\"/node_modules/hyperdht/package.json\"},\"/node_modules/hyperdht/lib/socket-pool.js\":{\"#package\":\"/node_modules/hyperdht/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/hyperdht/package.json\":{},\"/node_modules/hyperdispatch/lib/errors.js\":{\"#package\":\"/node_modules/hyperdispatch/package.json\"},\"/node_modules/hyperdispatch/package.json\":{},\"/node_modules/hyperdispatch/runtime.cjs\":{\"#package\":\"/node_modules/hyperdispatch/package.json\",\"./lib/errors.js\":\"/node_modules/hyperdispatch/lib/errors.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"nanoassert\":\"/node_modules/nanoassert/index.js\"},\"/node_modules/hyperdrive/index.js\":{\"#package\":\"/node_modules/hyperdrive/package.json\",\"./lib/download\":\"/node_modules/hyperdrive/lib/download.js\",\"./lib/monitor\":\"/node_modules/hyperdrive/lib/monitor.js\",\"hyperbee\":\"/node_modules/hyperbee/index.js\",\"hyperblobs\":\"/node_modules/hyperblobs/index.js\",\"hypercore\":\"/node_modules/hypercore/index.js\",\"hypercore-crypto\":\"/node_modules/hypercore-crypto/index.js\",\"hypercore-errors\":\"/node_modules/hypercore-errors/index.js\",\"is-options\":\"/node_modules/is-options/index.js\",\"mirror-drive\":\"/node_modules/mirror-drive/index.js\",\"ready-resource\":\"/node_modules/ready-resource/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\",\"streamx\":\"/node_modules/streamx/index.js\",\"sub-encoder\":\"/node_modules/sub-encoder/index.js\",\"unix-path-resolve\":\"/node_modules/unix-path-resolve/index.js\"},\"/node_modules/hyperdrive/lib/download.js\":{\"#package\":\"/node_modules/hyperdrive/package.json\",\"ready-resource\":\"/node_modules/ready-resource/index.js\"},\"/node_modules/hyperdrive/lib/monitor.js\":{\"#package\":\"/node_modules/hyperdrive/package.json\",\"ready-resource\":\"/node_modules/ready-resource/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\",\"speedometer\":\"/node_modules/speedometer/index.js\"},\"/node_modules/hyperdrive/package.json\":{},\"/node_modules/hyperschema/package.json\":{},\"/node_modules/hyperschema/runtime.cjs\":{\"#package\":\"/node_modules/hyperschema/package.json\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/hyperswarm/index.js\":{\"#package\":\"/node_modules/hyperswarm/package.json\",\"./lib/connection-set\":\"/node_modules/hyperswarm/lib/connection-set.js\",\"./lib/peer-discovery\":\"/node_modules/hyperswarm/lib/peer-discovery.js\",\"./lib/peer-info\":\"/node_modules/hyperswarm/lib/peer-info.js\",\"./lib/retry-timer\":\"/node_modules/hyperswarm/lib/retry-timer.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"events\":\"/node_modules/bare-events/index.js\",\"hyperdht\":\"/node_modules/hyperdht/index.js\",\"shuffled-priority-queue\":\"/node_modules/shuffled-priority-queue/index.js\",\"streamx\":\"/node_modules/streamx/index.js\",\"unslab\":\"/node_modules/unslab/index.js\"},\"/node_modules/hyperswarm/lib/bulk-timer.js\":{\"#package\":\"/node_modules/hyperswarm/package.json\"},\"/node_modules/hyperswarm/lib/connection-set.js\":{\"#package\":\"/node_modules/hyperswarm/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/hyperswarm/lib/peer-discovery.js\":{\"#package\":\"/node_modules/hyperswarm/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\"},\"/node_modules/hyperswarm/lib/peer-info.js\":{\"#package\":\"/node_modules/hyperswarm/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"events\":\"/node_modules/bare-events/index.js\",\"unslab\":\"/node_modules/unslab/index.js\"},\"/node_modules/hyperswarm/lib/retry-timer.js\":{\"#package\":\"/node_modules/hyperswarm/package.json\",\"./bulk-timer\":\"/node_modules/hyperswarm/lib/bulk-timer.js\"},\"/node_modules/hyperswarm/package.json\":{},\"/node_modules/index-encoder/index.js\":{\"#package\":\"/node_modules/index-encoder/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/index-encoder/package.json\":{},\"/node_modules/is-options/index.js\":{\"#package\":\"/node_modules/is-options/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/is-options/package.json\":{},\"/node_modules/kademlia-routing-table/index.js\":{\"#package\":\"/node_modules/kademlia-routing-table/package.json\",\"events\":\"/node_modules/bare-events/index.js\"},\"/node_modules/kademlia-routing-table/package.json\":{},\"/node_modules/llm-splitter/dist/get-chunk.js\":{\"#package\":\"/node_modules/llm-splitter/package.json\"},\"/node_modules/llm-splitter/dist/index.js\":{\"#package\":\"/node_modules/llm-splitter/package.json\",\"./get-chunk.js\":\"/node_modules/llm-splitter/dist/get-chunk.js\",\"./split.js\":\"/node_modules/llm-splitter/dist/split.js\"},\"/node_modules/llm-splitter/dist/split.js\":{\"#package\":\"/node_modules/llm-splitter/package.json\",\"./get-chunk.js\":\"/node_modules/llm-splitter/dist/get-chunk.js\"},\"/node_modules/llm-splitter/package.json\":{},\"/node_modules/mirror-drive/index.js\":{\"#package\":\"/node_modules/mirror-drive/package.json\",\"binary-stream-equals\":\"/node_modules/binary-stream-equals/index.js\",\"events\":\"/node_modules/bare-events/index.js\",\"rabin-stream\":\"/node_modules/rabin-stream/index.js\",\"same-data\":\"/node_modules/same-data/index.js\",\"speedometer\":\"/node_modules/speedometer/index.js\",\"streamx\":\"/node_modules/streamx/index.js\",\"unix-path-resolve\":\"/node_modules/unix-path-resolve/index.js\"},\"/node_modules/mirror-drive/package.json\":{},\"/node_modules/mutexify/index.js\":{\"#package\":\"/node_modules/mutexify/package.json\",\"queue-tick\":\"/node_modules/queue-tick/process-next-tick.js\"},\"/node_modules/mutexify/package.json\":{},\"/node_modules/mutexify/promise.js\":{\"#package\":\"/node_modules/mutexify/package.json\",\".\":\"/node_modules/mutexify/index.js\"},\"/node_modules/nanoassert/index.js\":{\"#package\":\"/node_modules/nanoassert/package.json\"},\"/node_modules/nanoassert/package.json\":{},\"/node_modules/nat-sampler/index.js\":{\"#package\":\"/node_modules/nat-sampler/package.json\"},\"/node_modules/nat-sampler/package.json\":{},\"/node_modules/noise-curve-ed/index.js\":{\"#package\":\"/node_modules/noise-curve-ed/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"nanoassert\":\"/node_modules/nanoassert/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/noise-curve-ed/package.json\":{},\"/node_modules/noise-handshake/cipher.js\":{\"#package\":\"/node_modules/noise-handshake/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/noise-handshake/dh.js\":{\"#package\":\"/node_modules/noise-handshake/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"nanoassert\":\"/node_modules/nanoassert/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/noise-handshake/hkdf.js\":{\"#package\":\"/node_modules/noise-handshake/package.json\",\"./hmac\":\"/node_modules/noise-handshake/hmac.js\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/noise-handshake/hmac.js\":{\"#package\":\"/node_modules/noise-handshake/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/noise-handshake/noise.js\":{\"#package\":\"/node_modules/noise-handshake/package.json\",\"./hkdf\":\"/node_modules/noise-handshake/hkdf.js\",\"./symmetric-state\":\"/node_modules/noise-handshake/symmetric-state.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"nanoassert\":\"/node_modules/nanoassert/index.js\"},\"/node_modules/noise-handshake/package.json\":{},\"/node_modules/noise-handshake/symmetric-state.js\":{\"#package\":\"/node_modules/noise-handshake/package.json\",\"./cipher\":\"/node_modules/noise-handshake/cipher.js\",\"./dh\":\"/node_modules/noise-handshake/dh.js\",\"./hkdf\":\"/node_modules/noise-handshake/hkdf.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"nanoassert\":\"/node_modules/nanoassert/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/protocol-buffers-encodings/index.js\":{\"#package\":\"/node_modules/protocol-buffers-encodings/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"signed-varint\":\"/node_modules/signed-varint/index.js\",\"varint\":\"/node_modules/varint/index.js\"},\"/node_modules/protocol-buffers-encodings/package.json\":{},\"/node_modules/protomux/index.js\":{\"#package\":\"/node_modules/protomux/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"queue-tick\":\"/node_modules/queue-tick/process-next-tick.js\",\"safety-catch\":\"/node_modules/safety-catch/index.js\",\"unslab\":\"/node_modules/unslab/index.js\"},\"/node_modules/protomux/package.json\":{},\"/node_modules/queue-tick/package.json\":{},\"/node_modules/queue-tick/process-next-tick.js\":{\"#package\":\"/node_modules/queue-tick/package.json\",\"./queue-microtask\":\"/node_modules/queue-tick/queue-microtask.js\"},\"/node_modules/queue-tick/queue-microtask.js\":{\"#package\":\"/node_modules/queue-tick/package.json\"},\"/node_modules/quickbit-native/binding.js\":{\"#package\":\"/node_modules/quickbit-native/package.json\",\".\":\"linked:quickbit-native.2.4.8.framework/quickbit-native.2.4.8\",\"require-addon\":\"/node_modules/require-addon/lib/bare.js\"},\"/node_modules/quickbit-native/index.js\":{\"#package\":\"/node_modules/quickbit-native/package.json\",\"./binding\":\"/node_modules/quickbit-native/binding.js\"},\"/node_modules/quickbit-native/package.json\":{},\"/node_modules/quickbit-universal/fallback.js\":{\"#package\":\"/node_modules/quickbit-universal/package.json\",\"simdle-universal\":\"/node_modules/simdle-universal/index.js\"},\"/node_modules/quickbit-universal/index.js\":{\"#package\":\"/node_modules/quickbit-universal/package.json\",\"./fallback\":\"/node_modules/quickbit-universal/fallback.js\",\"quickbit-native\":\"/node_modules/quickbit-native/index.js\"},\"/node_modules/quickbit-universal/package.json\":{},\"/node_modules/rabin-native/binding.js\":{\"#package\":\"/node_modules/rabin-native/package.json\",\".\":\"linked:rabin-native.2.0.0.framework/rabin-native.2.0.0\",\"require-addon\":\"/node_modules/require-addon/lib/bare.js\"},\"/node_modules/rabin-native/index.js\":{\"#package\":\"/node_modules/rabin-native/package.json\",\"./binding\":\"/node_modules/rabin-native/binding.js\"},\"/node_modules/rabin-native/package.json\":{},\"/node_modules/rabin-stream/index.js\":{\"#package\":\"/node_modules/rabin-stream/package.json\",\"rabin-native\":\"/node_modules/rabin-native/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/rabin-stream/package.json\":{},\"/node_modules/rache/index.js\":{\"#package\":\"/node_modules/rache/package.json\"},\"/node_modules/rache/package.json\":{},\"/node_modules/random-array-iterator/index.js\":{\"#package\":\"/node_modules/random-array-iterator/package.json\"},\"/node_modules/random-array-iterator/package.json\":{},\"/node_modules/ready-resource/index.js\":{\"#package\":\"/node_modules/ready-resource/package.json\",\"events\":\"/node_modules/bare-events/index.js\"},\"/node_modules/ready-resource/package.json\":{},\"/node_modules/record-cache/index.js\":{\"#package\":\"/node_modules/record-cache/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/record-cache/package.json\":{},\"/node_modules/refcounter/index.js\":{\"#package\":\"/node_modules/refcounter/package.json\"},\"/node_modules/refcounter/package.json\":{},\"/node_modules/require-addon/lib/bare.js\":{\"#package\":\"/node_modules/require-addon/package.json\"},\"/node_modules/require-addon/package.json\":{},\"/node_modules/resolve-reject-promise/index.js\":{\"#package\":\"/node_modules/resolve-reject-promise/package.json\"},\"/node_modules/resolve-reject-promise/package.json\":{},\"/node_modules/resource-on-exit/index.js\":{\"#package\":\"/node_modules/resource-on-exit/package.json\"},\"/node_modules/resource-on-exit/package.json\":{},\"/node_modules/rocksdb-native/binding.js\":{\"#package\":\"/node_modules/rocksdb-native/package.json\",\".\":\"linked:rocksdb-native.3.17.2.framework/rocksdb-native.3.17.2\",\"require-addon\":\"/node_modules/require-addon/lib/bare.js\"},\"/node_modules/rocksdb-native/index.js\":{\"#package\":\"/node_modules/rocksdb-native/package.json\",\"./lib/column-family\":\"/node_modules/rocksdb-native/lib/column-family.js\",\"./lib/constants\":\"/node_modules/rocksdb-native/lib/constants.js\",\"./lib/filter-policy\":\"/node_modules/rocksdb-native/lib/filter-policy.js\",\"./lib/iterator\":\"/node_modules/rocksdb-native/lib/iterator.js\",\"./lib/snapshot\":\"/node_modules/rocksdb-native/lib/snapshot.js\",\"./lib/state\":\"/node_modules/rocksdb-native/lib/state.js\"},\"/node_modules/rocksdb-native/lib/batch.js\":{\"#package\":\"/node_modules/rocksdb-native/package.json\",\"../binding\":\"/node_modules/rocksdb-native/binding.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\"},\"/node_modules/rocksdb-native/lib/column-family.js\":{\"#package\":\"/node_modules/rocksdb-native/package.json\",\"../binding\":\"/node_modules/rocksdb-native/binding.js\",\"./constants\":\"/node_modules/rocksdb-native/lib/constants.js\",\"./filter-policy\":\"/node_modules/rocksdb-native/lib/filter-policy.js\"},\"/node_modules/rocksdb-native/lib/constants.js\":{\"#package\":\"/node_modules/rocksdb-native/package.json\"},\"/node_modules/rocksdb-native/lib/filter-policy.js\":{\"#package\":\"/node_modules/rocksdb-native/package.json\"},\"/node_modules/rocksdb-native/lib/iterator.js\":{\"#package\":\"/node_modules/rocksdb-native/package.json\",\"../binding\":\"/node_modules/rocksdb-native/binding.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/rocksdb-native/lib/snapshot.js\":{\"#package\":\"/node_modules/rocksdb-native/package.json\",\"../binding\":\"/node_modules/rocksdb-native/binding.js\"},\"/node_modules/rocksdb-native/lib/state.js\":{\"#package\":\"/node_modules/rocksdb-native/package.json\",\"../binding\":\"/node_modules/rocksdb-native/binding.js\",\"./batch\":\"/node_modules/rocksdb-native/lib/batch.js\",\"./column-family\":\"/node_modules/rocksdb-native/lib/column-family.js\",\"./constants\":\"/node_modules/rocksdb-native/lib/constants.js\",\"compact-encoding\":\"/node_modules/compact-encoding/index.js\",\"ready-resource\":\"/node_modules/ready-resource/index.js\",\"refcounter\":\"/node_modules/refcounter/index.js\",\"resolve-reject-promise\":\"/node_modules/resolve-reject-promise/index.js\",\"signal-promise\":\"/node_modules/signal-promise/index.js\"},\"/node_modules/rocksdb-native/package.json\":{},\"/node_modules/safety-catch/index.js\":{\"#package\":\"/node_modules/safety-catch/package.json\"},\"/node_modules/safety-catch/package.json\":{},\"/node_modules/same-data/index.js\":{\"#package\":\"/node_modules/same-data/package.json\"},\"/node_modules/same-data/package.json\":{},\"/node_modules/scope-lock/index.js\":{\"#package\":\"/node_modules/scope-lock/package.json\"},\"/node_modules/scope-lock/package.json\":{},\"/node_modules/shuffled-priority-queue/index.js\":{\"#package\":\"/node_modules/shuffled-priority-queue/package.json\",\"unordered-set\":\"/node_modules/unordered-set/index.js\"},\"/node_modules/shuffled-priority-queue/package.json\":{},\"/node_modules/signal-promise/index.js\":{\"#package\":\"/node_modules/signal-promise/package.json\"},\"/node_modules/signal-promise/package.json\":{},\"/node_modules/signed-varint/index.js\":{\"#package\":\"/node_modules/signed-varint/package.json\",\"varint\":\"/node_modules/varint/index.js\"},\"/node_modules/signed-varint/package.json\":{},\"/node_modules/simdle-native/binding.js\":{\"#package\":\"/node_modules/simdle-native/package.json\",\".\":\"linked:simdle-native.1.3.9.framework/simdle-native.1.3.9\",\"require-addon\":\"/node_modules/require-addon/lib/bare.js\"},\"/node_modules/simdle-native/index.js\":{\"#package\":\"/node_modules/simdle-native/package.json\",\"./binding\":\"/node_modules/simdle-native/binding.js\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/simdle-native/package.json\":{},\"/node_modules/simdle-universal/fallback.js\":{\"#package\":\"/node_modules/simdle-universal/package.json\",\"./scalar\":\"/node_modules/simdle-universal/scalar.js\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/simdle-universal/index.js\":{\"#package\":\"/node_modules/simdle-universal/package.json\",\"./fallback\":\"/node_modules/simdle-universal/fallback.js\",\"simdle-native\":\"/node_modules/simdle-native/index.js\"},\"/node_modules/simdle-universal/package.json\":{},\"/node_modules/simdle-universal/scalar.js\":{\"#package\":\"/node_modules/simdle-universal/package.json\"},\"/node_modules/sodium-native/binding.js\":{\"#package\":\"/node_modules/sodium-native/package.json\",\".\":\"linked:sodium-native.5.1.0.framework/sodium-native.5.1.0\",\"require-addon\":\"/node_modules/require-addon/lib/bare.js\"},\"/node_modules/sodium-native/index.js\":{\"#package\":\"/node_modules/sodium-native/package.json\",\"./binding\":\"/node_modules/sodium-native/binding.js\",\"assert\":\"/node_modules/bare-assert/index.js\",\"which-runtime\":\"/node_modules/which-runtime/index.js\"},\"/node_modules/sodium-native/package.json\":{},\"/node_modules/sodium-secretstream/index.js\":{\"#package\":\"/node_modules/sodium-secretstream/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"sodium-universal\":\"/node_modules/sodium-universal/index.js\"},\"/node_modules/sodium-secretstream/package.json\":{},\"/node_modules/sodium-universal/index.js\":{\"#package\":\"/node_modules/sodium-universal/package.json\",\"sodium-native\":\"/node_modules/sodium-native/index.js\"},\"/node_modules/sodium-universal/package.json\":{},\"/node_modules/speedometer/index.js\":{\"#package\":\"/node_modules/speedometer/package.json\"},\"/node_modules/speedometer/package.json\":{},\"/node_modules/streamx/index.js\":{\"#package\":\"/node_modules/streamx/package.json\",\"./lib/errors.js\":\"/node_modules/streamx/lib/errors.js\",\"events-universal\":\"/node_modules/events-universal/bare.js\",\"fast-fifo\":\"/node_modules/fast-fifo/index.js\",\"text-decoder\":\"/node_modules/text-decoder/index.js\"},\"/node_modules/streamx/lib/errors.js\":{\"#package\":\"/node_modules/streamx/package.json\"},\"/node_modules/streamx/package.json\":{},\"/node_modules/sub-encoder/index.js\":{\"#package\":\"/node_modules/sub-encoder/package.json\",\"b4a\":\"/node_modules/b4a/index.js\",\"codecs\":\"/node_modules/codecs/index.js\"},\"/node_modules/sub-encoder/package.json\":{},\"/node_modules/tar-stream/constants.js\":{\"#package\":\"/node_modules/tar-stream/package.json\",\"fs\":\"/node_modules/bare-fs/index.js\"},\"/node_modules/tar-stream/extract.js\":{\"#package\":\"/node_modules/tar-stream/package.json\",\"./headers\":\"/node_modules/tar-stream/headers.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"fast-fifo\":\"/node_modules/fast-fifo/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/tar-stream/headers.js\":{\"#package\":\"/node_modules/tar-stream/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/tar-stream/index.js\":{\"#package\":\"/node_modules/tar-stream/package.json\",\"./extract\":\"/node_modules/tar-stream/extract.js\",\"./pack\":\"/node_modules/tar-stream/pack.js\"},\"/node_modules/tar-stream/pack.js\":{\"#package\":\"/node_modules/tar-stream/package.json\",\"./constants\":\"/node_modules/tar-stream/constants.js\",\"./headers\":\"/node_modules/tar-stream/headers.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/tar-stream/package.json\":{},\"/node_modules/teex/index.js\":{\"#package\":\"/node_modules/teex/package.json\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/teex/package.json\":{},\"/node_modules/text-decoder/index.js\":{\"#package\":\"/node_modules/text-decoder/package.json\",\"./lib/pass-through-decoder\":\"/node_modules/text-decoder/lib/pass-through-decoder.js\",\"./lib/utf8-decoder\":\"/node_modules/text-decoder/lib/utf8-decoder.js\"},\"/node_modules/text-decoder/lib/pass-through-decoder.js\":{\"#package\":\"/node_modules/text-decoder/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/text-decoder/lib/utf8-decoder.js\":{\"#package\":\"/node_modules/text-decoder/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/text-decoder/package.json\":{},\"/node_modules/time-ordered-set/index.js\":{\"#package\":\"/node_modules/time-ordered-set/package.json\"},\"/node_modules/time-ordered-set/package.json\":{},\"/node_modules/timeout-refresh/browser.js\":{\"#package\":\"/node_modules/timeout-refresh/package.json\"},\"/node_modules/timeout-refresh/index.js\":{\"#package\":\"/node_modules/timeout-refresh/package.json\",\"./browser\":\"/node_modules/timeout-refresh/browser.js\",\"./node\":\"/node_modules/timeout-refresh/node.js\"},\"/node_modules/timeout-refresh/node.js\":{\"#package\":\"/node_modules/timeout-refresh/package.json\"},\"/node_modules/timeout-refresh/package.json\":{},\"/node_modules/tinyld/dist/tinyld.heavy.node.js\":{\"#package\":\"/node_modules/tinyld/package.json\"},\"/node_modules/tinyld/package.json\":{},\"/node_modules/udx-native/binding.js\":{\"#package\":\"/node_modules/udx-native/package.json\",\".\":\"linked:udx-native.1.20.7.framework/udx-native.1.20.7\",\"require-addon\":\"/node_modules/require-addon/lib/bare.js\"},\"/node_modules/udx-native/lib/ip.js\":{\"#package\":\"/node_modules/udx-native/package.json\"},\"/node_modules/udx-native/lib/network-interfaces.js\":{\"#package\":\"/node_modules/udx-native/package.json\",\"../binding\":\"/node_modules/udx-native/binding.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"events\":\"/node_modules/bare-events/index.js\"},\"/node_modules/udx-native/lib/socket.js\":{\"#package\":\"/node_modules/udx-native/package.json\",\"../binding\":\"/node_modules/udx-native/binding.js\",\"./ip\":\"/node_modules/udx-native/lib/ip.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"events\":\"/node_modules/bare-events/index.js\"},\"/node_modules/udx-native/lib/stream.js\":{\"#package\":\"/node_modules/udx-native/package.json\",\"../binding\":\"/node_modules/udx-native/binding.js\",\"./ip\":\"/node_modules/udx-native/lib/ip.js\",\"b4a\":\"/node_modules/b4a/index.js\",\"streamx\":\"/node_modules/streamx/index.js\"},\"/node_modules/udx-native/lib/udx.js\":{\"#package\":\"/node_modules/udx-native/package.json\",\"../binding\":\"/node_modules/udx-native/binding.js\",\"./ip\":\"/node_modules/udx-native/lib/ip.js\",\"./network-interfaces\":\"/node_modules/udx-native/lib/network-interfaces.js\",\"./socket\":\"/node_modules/udx-native/lib/socket.js\",\"./stream\":\"/node_modules/udx-native/lib/stream.js\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/udx-native/package.json\":{},\"/node_modules/unix-path-resolve/index.js\":{\"#package\":\"/node_modules/unix-path-resolve/package.json\"},\"/node_modules/unix-path-resolve/package.json\":{},\"/node_modules/unordered-set/index.js\":{\"#package\":\"/node_modules/unordered-set/package.json\"},\"/node_modules/unordered-set/package.json\":{},\"/node_modules/unslab/index.js\":{\"#package\":\"/node_modules/unslab/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/unslab/package.json\":{},\"/node_modules/varint/decode.js\":{\"#package\":\"/node_modules/varint/package.json\"},\"/node_modules/varint/encode.js\":{\"#package\":\"/node_modules/varint/package.json\"},\"/node_modules/varint/index.js\":{\"#package\":\"/node_modules/varint/package.json\",\"./decode.js\":\"/node_modules/varint/decode.js\",\"./encode.js\":\"/node_modules/varint/encode.js\",\"./length.js\":\"/node_modules/varint/length.js\"},\"/node_modules/varint/length.js\":{\"#package\":\"/node_modules/varint/package.json\"},\"/node_modules/varint/package.json\":{},\"/node_modules/which-runtime/index.js\":{\"#package\":\"/node_modules/which-runtime/package.json\"},\"/node_modules/which-runtime/package.json\":{},\"/node_modules/xache/index.js\":{\"#package\":\"/node_modules/xache/package.json\"},\"/node_modules/xache/package.json\":{},\"/node_modules/z32/index.js\":{\"#package\":\"/node_modules/z32/package.json\",\"b4a\":\"/node_modules/b4a/index.js\"},\"/node_modules/z32/package.json\":{},\"/node_modules/zod/index.cjs\":{\"#package\":\"/node_modules/zod/package.json\",\"./v4/classic/external.cjs\":\"/node_modules/zod/v4/classic/external.cjs\"},\"/node_modules/zod/index.js\":{\"#package\":\"/node_modules/zod/package.json\",\"./v4/classic/external.js\":\"/node_modules/zod/v4/classic/external.js\"},\"/node_modules/zod/package.json\":{},\"/node_modules/zod/v4/classic/checks.cjs\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.cjs\":\"/node_modules/zod/v4/core/index.cjs\"},\"/node_modules/zod/v4/classic/checks.js\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.js\":\"/node_modules/zod/v4/core/index.js\"},\"/node_modules/zod/v4/classic/coerce.cjs\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.cjs\":\"/node_modules/zod/v4/core/index.cjs\",\"./schemas.cjs\":\"/node_modules/zod/v4/classic/schemas.cjs\"},\"/node_modules/zod/v4/classic/coerce.js\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.js\":\"/node_modules/zod/v4/core/index.js\",\"./schemas.js\":\"/node_modules/zod/v4/classic/schemas.js\"},\"/node_modules/zod/v4/classic/compat.cjs\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.cjs\":\"/node_modules/zod/v4/core/index.cjs\"},\"/node_modules/zod/v4/classic/compat.js\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.js\":\"/node_modules/zod/v4/core/index.js\"},\"/node_modules/zod/v4/classic/errors.cjs\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.cjs\":\"/node_modules/zod/v4/core/index.cjs\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/classic/errors.js\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.js\":\"/node_modules/zod/v4/core/index.js\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/classic/external.cjs\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.cjs\":\"/node_modules/zod/v4/core/index.cjs\",\"../core/json-schema-processors.cjs\":\"/node_modules/zod/v4/core/json-schema-processors.cjs\",\"../locales/en.cjs\":\"/node_modules/zod/v4/locales/en.cjs\",\"../locales/index.cjs\":\"/node_modules/zod/v4/locales/index.cjs\",\"./checks.cjs\":\"/node_modules/zod/v4/classic/checks.cjs\",\"./coerce.cjs\":\"/node_modules/zod/v4/classic/coerce.cjs\",\"./compat.cjs\":\"/node_modules/zod/v4/classic/compat.cjs\",\"./errors.cjs\":\"/node_modules/zod/v4/classic/errors.cjs\",\"./from-json-schema.cjs\":\"/node_modules/zod/v4/classic/from-json-schema.cjs\",\"./iso.cjs\":\"/node_modules/zod/v4/classic/iso.cjs\",\"./parse.cjs\":\"/node_modules/zod/v4/classic/parse.cjs\",\"./schemas.cjs\":\"/node_modules/zod/v4/classic/schemas.cjs\"},\"/node_modules/zod/v4/classic/external.js\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.js\":\"/node_modules/zod/v4/core/index.js\",\"../core/json-schema-processors.js\":\"/node_modules/zod/v4/core/json-schema-processors.js\",\"../locales/en.js\":\"/node_modules/zod/v4/locales/en.js\",\"../locales/index.js\":\"/node_modules/zod/v4/locales/index.js\",\"./checks.js\":\"/node_modules/zod/v4/classic/checks.js\",\"./coerce.js\":\"/node_modules/zod/v4/classic/coerce.js\",\"./compat.js\":\"/node_modules/zod/v4/classic/compat.js\",\"./errors.js\":\"/node_modules/zod/v4/classic/errors.js\",\"./from-json-schema.js\":\"/node_modules/zod/v4/classic/from-json-schema.js\",\"./iso.js\":\"/node_modules/zod/v4/classic/iso.js\",\"./parse.js\":\"/node_modules/zod/v4/classic/parse.js\",\"./schemas.js\":\"/node_modules/zod/v4/classic/schemas.js\"},\"/node_modules/zod/v4/classic/from-json-schema.cjs\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/registries.cjs\":\"/node_modules/zod/v4/core/registries.cjs\",\"./checks.cjs\":\"/node_modules/zod/v4/classic/checks.cjs\",\"./iso.cjs\":\"/node_modules/zod/v4/classic/iso.cjs\",\"./schemas.cjs\":\"/node_modules/zod/v4/classic/schemas.cjs\"},\"/node_modules/zod/v4/classic/from-json-schema.js\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/registries.js\":\"/node_modules/zod/v4/core/registries.js\",\"./checks.js\":\"/node_modules/zod/v4/classic/checks.js\",\"./iso.js\":\"/node_modules/zod/v4/classic/iso.js\",\"./schemas.js\":\"/node_modules/zod/v4/classic/schemas.js\"},\"/node_modules/zod/v4/classic/iso.cjs\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.cjs\":\"/node_modules/zod/v4/core/index.cjs\",\"./schemas.cjs\":\"/node_modules/zod/v4/classic/schemas.cjs\"},\"/node_modules/zod/v4/classic/iso.js\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.js\":\"/node_modules/zod/v4/core/index.js\",\"./schemas.js\":\"/node_modules/zod/v4/classic/schemas.js\"},\"/node_modules/zod/v4/classic/package.json\":{},\"/node_modules/zod/v4/classic/parse.cjs\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.cjs\":\"/node_modules/zod/v4/core/index.cjs\",\"./errors.cjs\":\"/node_modules/zod/v4/classic/errors.cjs\"},\"/node_modules/zod/v4/classic/parse.js\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.js\":\"/node_modules/zod/v4/core/index.js\",\"./errors.js\":\"/node_modules/zod/v4/classic/errors.js\"},\"/node_modules/zod/v4/classic/schemas.cjs\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.cjs\":\"/node_modules/zod/v4/core/index.cjs\",\"../core/json-schema-processors.cjs\":\"/node_modules/zod/v4/core/json-schema-processors.cjs\",\"../core/to-json-schema.cjs\":\"/node_modules/zod/v4/core/to-json-schema.cjs\",\"./checks.cjs\":\"/node_modules/zod/v4/classic/checks.cjs\",\"./iso.cjs\":\"/node_modules/zod/v4/classic/iso.cjs\",\"./parse.cjs\":\"/node_modules/zod/v4/classic/parse.cjs\"},\"/node_modules/zod/v4/classic/schemas.js\":{\"#package\":\"/node_modules/zod/v4/classic/package.json\",\"../core/index.js\":\"/node_modules/zod/v4/core/index.js\",\"../core/json-schema-processors.js\":\"/node_modules/zod/v4/core/json-schema-processors.js\",\"../core/to-json-schema.js\":\"/node_modules/zod/v4/core/to-json-schema.js\",\"./checks.js\":\"/node_modules/zod/v4/classic/checks.js\",\"./iso.js\":\"/node_modules/zod/v4/classic/iso.js\",\"./parse.js\":\"/node_modules/zod/v4/classic/parse.js\"},\"/node_modules/zod/v4/core/api.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./checks.cjs\":\"/node_modules/zod/v4/core/checks.cjs\",\"./registries.cjs\":\"/node_modules/zod/v4/core/registries.cjs\",\"./schemas.cjs\":\"/node_modules/zod/v4/core/schemas.cjs\",\"./util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/core/api.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./checks.js\":\"/node_modules/zod/v4/core/checks.js\",\"./registries.js\":\"/node_modules/zod/v4/core/registries.js\",\"./schemas.js\":\"/node_modules/zod/v4/core/schemas.js\",\"./util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/core/checks.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./core.cjs\":\"/node_modules/zod/v4/core/core.cjs\",\"./regexes.cjs\":\"/node_modules/zod/v4/core/regexes.cjs\",\"./util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/core/checks.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./core.js\":\"/node_modules/zod/v4/core/core.js\",\"./regexes.js\":\"/node_modules/zod/v4/core/regexes.js\",\"./util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/core/core.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\"},\"/node_modules/zod/v4/core/core.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\"},\"/node_modules/zod/v4/core/doc.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\"},\"/node_modules/zod/v4/core/doc.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\"},\"/node_modules/zod/v4/core/errors.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./core.cjs\":\"/node_modules/zod/v4/core/core.cjs\",\"./util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/core/errors.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./core.js\":\"/node_modules/zod/v4/core/core.js\",\"./util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/core/index.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"../locales/index.cjs\":\"/node_modules/zod/v4/locales/index.cjs\",\"./api.cjs\":\"/node_modules/zod/v4/core/api.cjs\",\"./checks.cjs\":\"/node_modules/zod/v4/core/checks.cjs\",\"./core.cjs\":\"/node_modules/zod/v4/core/core.cjs\",\"./doc.cjs\":\"/node_modules/zod/v4/core/doc.cjs\",\"./errors.cjs\":\"/node_modules/zod/v4/core/errors.cjs\",\"./json-schema-generator.cjs\":\"/node_modules/zod/v4/core/json-schema-generator.cjs\",\"./json-schema-processors.cjs\":\"/node_modules/zod/v4/core/json-schema-processors.cjs\",\"./json-schema.cjs\":\"/node_modules/zod/v4/core/json-schema.cjs\",\"./parse.cjs\":\"/node_modules/zod/v4/core/parse.cjs\",\"./regexes.cjs\":\"/node_modules/zod/v4/core/regexes.cjs\",\"./registries.cjs\":\"/node_modules/zod/v4/core/registries.cjs\",\"./schemas.cjs\":\"/node_modules/zod/v4/core/schemas.cjs\",\"./to-json-schema.cjs\":\"/node_modules/zod/v4/core/to-json-schema.cjs\",\"./util.cjs\":\"/node_modules/zod/v4/core/util.cjs\",\"./versions.cjs\":\"/node_modules/zod/v4/core/versions.cjs\"},\"/node_modules/zod/v4/core/index.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"../locales/index.js\":\"/node_modules/zod/v4/locales/index.js\",\"./api.js\":\"/node_modules/zod/v4/core/api.js\",\"./checks.js\":\"/node_modules/zod/v4/core/checks.js\",\"./core.js\":\"/node_modules/zod/v4/core/core.js\",\"./doc.js\":\"/node_modules/zod/v4/core/doc.js\",\"./errors.js\":\"/node_modules/zod/v4/core/errors.js\",\"./json-schema-generator.js\":\"/node_modules/zod/v4/core/json-schema-generator.js\",\"./json-schema-processors.js\":\"/node_modules/zod/v4/core/json-schema-processors.js\",\"./json-schema.js\":\"/node_modules/zod/v4/core/json-schema.js\",\"./parse.js\":\"/node_modules/zod/v4/core/parse.js\",\"./regexes.js\":\"/node_modules/zod/v4/core/regexes.js\",\"./registries.js\":\"/node_modules/zod/v4/core/registries.js\",\"./schemas.js\":\"/node_modules/zod/v4/core/schemas.js\",\"./to-json-schema.js\":\"/node_modules/zod/v4/core/to-json-schema.js\",\"./util.js\":\"/node_modules/zod/v4/core/util.js\",\"./versions.js\":\"/node_modules/zod/v4/core/versions.js\"},\"/node_modules/zod/v4/core/json-schema-generator.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./json-schema-processors.cjs\":\"/node_modules/zod/v4/core/json-schema-processors.cjs\",\"./to-json-schema.cjs\":\"/node_modules/zod/v4/core/to-json-schema.cjs\"},\"/node_modules/zod/v4/core/json-schema-generator.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./json-schema-processors.js\":\"/node_modules/zod/v4/core/json-schema-processors.js\",\"./to-json-schema.js\":\"/node_modules/zod/v4/core/to-json-schema.js\"},\"/node_modules/zod/v4/core/json-schema-processors.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./to-json-schema.cjs\":\"/node_modules/zod/v4/core/to-json-schema.cjs\",\"./util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/core/json-schema-processors.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./to-json-schema.js\":\"/node_modules/zod/v4/core/to-json-schema.js\",\"./util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/core/json-schema.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\"},\"/node_modules/zod/v4/core/json-schema.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\"},\"/node_modules/zod/v4/core/package.json\":{},\"/node_modules/zod/v4/core/parse.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./core.cjs\":\"/node_modules/zod/v4/core/core.cjs\",\"./errors.cjs\":\"/node_modules/zod/v4/core/errors.cjs\",\"./util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/core/parse.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./core.js\":\"/node_modules/zod/v4/core/core.js\",\"./errors.js\":\"/node_modules/zod/v4/core/errors.js\",\"./util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/core/regexes.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/core/regexes.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/core/registries.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\"},\"/node_modules/zod/v4/core/registries.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\"},\"/node_modules/zod/v4/core/schemas.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./checks.cjs\":\"/node_modules/zod/v4/core/checks.cjs\",\"./core.cjs\":\"/node_modules/zod/v4/core/core.cjs\",\"./doc.cjs\":\"/node_modules/zod/v4/core/doc.cjs\",\"./parse.cjs\":\"/node_modules/zod/v4/core/parse.cjs\",\"./regexes.cjs\":\"/node_modules/zod/v4/core/regexes.cjs\",\"./util.cjs\":\"/node_modules/zod/v4/core/util.cjs\",\"./versions.cjs\":\"/node_modules/zod/v4/core/versions.cjs\"},\"/node_modules/zod/v4/core/schemas.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./checks.js\":\"/node_modules/zod/v4/core/checks.js\",\"./core.js\":\"/node_modules/zod/v4/core/core.js\",\"./doc.js\":\"/node_modules/zod/v4/core/doc.js\",\"./parse.js\":\"/node_modules/zod/v4/core/parse.js\",\"./regexes.js\":\"/node_modules/zod/v4/core/regexes.js\",\"./util.js\":\"/node_modules/zod/v4/core/util.js\",\"./versions.js\":\"/node_modules/zod/v4/core/versions.js\"},\"/node_modules/zod/v4/core/to-json-schema.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./registries.cjs\":\"/node_modules/zod/v4/core/registries.cjs\"},\"/node_modules/zod/v4/core/to-json-schema.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./registries.js\":\"/node_modules/zod/v4/core/registries.js\"},\"/node_modules/zod/v4/core/util.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./core.cjs\":\"/node_modules/zod/v4/core/core.cjs\"},\"/node_modules/zod/v4/core/util.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\",\"./core.js\":\"/node_modules/zod/v4/core/core.js\"},\"/node_modules/zod/v4/core/versions.cjs\":{\"#package\":\"/node_modules/zod/v4/core/package.json\"},\"/node_modules/zod/v4/core/versions.js\":{\"#package\":\"/node_modules/zod/v4/core/package.json\"},\"/node_modules/zod/v4/locales/ar.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ar.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/az.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/az.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/be.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/be.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/bg.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/bg.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ca.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ca.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/cs.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/cs.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/da.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/da.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/de.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/de.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/el.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/el.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/en.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/en.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/eo.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/eo.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/es.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/es.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/fa.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/fa.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/fi.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/fi.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/fr-CA.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/fr-CA.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/fr.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/fr.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/he.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/he.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/hr.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/hr.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/hu.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/hu.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/hy.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/hy.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/id.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/id.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/index.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"./ar.cjs\":\"/node_modules/zod/v4/locales/ar.cjs\",\"./az.cjs\":\"/node_modules/zod/v4/locales/az.cjs\",\"./be.cjs\":\"/node_modules/zod/v4/locales/be.cjs\",\"./bg.cjs\":\"/node_modules/zod/v4/locales/bg.cjs\",\"./ca.cjs\":\"/node_modules/zod/v4/locales/ca.cjs\",\"./cs.cjs\":\"/node_modules/zod/v4/locales/cs.cjs\",\"./da.cjs\":\"/node_modules/zod/v4/locales/da.cjs\",\"./de.cjs\":\"/node_modules/zod/v4/locales/de.cjs\",\"./el.cjs\":\"/node_modules/zod/v4/locales/el.cjs\",\"./en.cjs\":\"/node_modules/zod/v4/locales/en.cjs\",\"./eo.cjs\":\"/node_modules/zod/v4/locales/eo.cjs\",\"./es.cjs\":\"/node_modules/zod/v4/locales/es.cjs\",\"./fa.cjs\":\"/node_modules/zod/v4/locales/fa.cjs\",\"./fi.cjs\":\"/node_modules/zod/v4/locales/fi.cjs\",\"./fr-CA.cjs\":\"/node_modules/zod/v4/locales/fr-CA.cjs\",\"./fr.cjs\":\"/node_modules/zod/v4/locales/fr.cjs\",\"./he.cjs\":\"/node_modules/zod/v4/locales/he.cjs\",\"./hr.cjs\":\"/node_modules/zod/v4/locales/hr.cjs\",\"./hu.cjs\":\"/node_modules/zod/v4/locales/hu.cjs\",\"./hy.cjs\":\"/node_modules/zod/v4/locales/hy.cjs\",\"./id.cjs\":\"/node_modules/zod/v4/locales/id.cjs\",\"./is.cjs\":\"/node_modules/zod/v4/locales/is.cjs\",\"./it.cjs\":\"/node_modules/zod/v4/locales/it.cjs\",\"./ja.cjs\":\"/node_modules/zod/v4/locales/ja.cjs\",\"./ka.cjs\":\"/node_modules/zod/v4/locales/ka.cjs\",\"./kh.cjs\":\"/node_modules/zod/v4/locales/kh.cjs\",\"./km.cjs\":\"/node_modules/zod/v4/locales/km.cjs\",\"./ko.cjs\":\"/node_modules/zod/v4/locales/ko.cjs\",\"./lt.cjs\":\"/node_modules/zod/v4/locales/lt.cjs\",\"./mk.cjs\":\"/node_modules/zod/v4/locales/mk.cjs\",\"./ms.cjs\":\"/node_modules/zod/v4/locales/ms.cjs\",\"./nl.cjs\":\"/node_modules/zod/v4/locales/nl.cjs\",\"./no.cjs\":\"/node_modules/zod/v4/locales/no.cjs\",\"./ota.cjs\":\"/node_modules/zod/v4/locales/ota.cjs\",\"./pl.cjs\":\"/node_modules/zod/v4/locales/pl.cjs\",\"./ps.cjs\":\"/node_modules/zod/v4/locales/ps.cjs\",\"./pt.cjs\":\"/node_modules/zod/v4/locales/pt.cjs\",\"./ro.cjs\":\"/node_modules/zod/v4/locales/ro.cjs\",\"./ru.cjs\":\"/node_modules/zod/v4/locales/ru.cjs\",\"./sl.cjs\":\"/node_modules/zod/v4/locales/sl.cjs\",\"./sv.cjs\":\"/node_modules/zod/v4/locales/sv.cjs\",\"./ta.cjs\":\"/node_modules/zod/v4/locales/ta.cjs\",\"./th.cjs\":\"/node_modules/zod/v4/locales/th.cjs\",\"./tr.cjs\":\"/node_modules/zod/v4/locales/tr.cjs\",\"./ua.cjs\":\"/node_modules/zod/v4/locales/ua.cjs\",\"./uk.cjs\":\"/node_modules/zod/v4/locales/uk.cjs\",\"./ur.cjs\":\"/node_modules/zod/v4/locales/ur.cjs\",\"./uz.cjs\":\"/node_modules/zod/v4/locales/uz.cjs\",\"./vi.cjs\":\"/node_modules/zod/v4/locales/vi.cjs\",\"./yo.cjs\":\"/node_modules/zod/v4/locales/yo.cjs\",\"./zh-CN.cjs\":\"/node_modules/zod/v4/locales/zh-CN.cjs\",\"./zh-TW.cjs\":\"/node_modules/zod/v4/locales/zh-TW.cjs\"},\"/node_modules/zod/v4/locales/index.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"./ar.js\":\"/node_modules/zod/v4/locales/ar.js\",\"./az.js\":\"/node_modules/zod/v4/locales/az.js\",\"./be.js\":\"/node_modules/zod/v4/locales/be.js\",\"./bg.js\":\"/node_modules/zod/v4/locales/bg.js\",\"./ca.js\":\"/node_modules/zod/v4/locales/ca.js\",\"./cs.js\":\"/node_modules/zod/v4/locales/cs.js\",\"./da.js\":\"/node_modules/zod/v4/locales/da.js\",\"./de.js\":\"/node_modules/zod/v4/locales/de.js\",\"./el.js\":\"/node_modules/zod/v4/locales/el.js\",\"./en.js\":\"/node_modules/zod/v4/locales/en.js\",\"./eo.js\":\"/node_modules/zod/v4/locales/eo.js\",\"./es.js\":\"/node_modules/zod/v4/locales/es.js\",\"./fa.js\":\"/node_modules/zod/v4/locales/fa.js\",\"./fi.js\":\"/node_modules/zod/v4/locales/fi.js\",\"./fr-CA.js\":\"/node_modules/zod/v4/locales/fr-CA.js\",\"./fr.js\":\"/node_modules/zod/v4/locales/fr.js\",\"./he.js\":\"/node_modules/zod/v4/locales/he.js\",\"./hr.js\":\"/node_modules/zod/v4/locales/hr.js\",\"./hu.js\":\"/node_modules/zod/v4/locales/hu.js\",\"./hy.js\":\"/node_modules/zod/v4/locales/hy.js\",\"./id.js\":\"/node_modules/zod/v4/locales/id.js\",\"./is.js\":\"/node_modules/zod/v4/locales/is.js\",\"./it.js\":\"/node_modules/zod/v4/locales/it.js\",\"./ja.js\":\"/node_modules/zod/v4/locales/ja.js\",\"./ka.js\":\"/node_modules/zod/v4/locales/ka.js\",\"./kh.js\":\"/node_modules/zod/v4/locales/kh.js\",\"./km.js\":\"/node_modules/zod/v4/locales/km.js\",\"./ko.js\":\"/node_modules/zod/v4/locales/ko.js\",\"./lt.js\":\"/node_modules/zod/v4/locales/lt.js\",\"./mk.js\":\"/node_modules/zod/v4/locales/mk.js\",\"./ms.js\":\"/node_modules/zod/v4/locales/ms.js\",\"./nl.js\":\"/node_modules/zod/v4/locales/nl.js\",\"./no.js\":\"/node_modules/zod/v4/locales/no.js\",\"./ota.js\":\"/node_modules/zod/v4/locales/ota.js\",\"./pl.js\":\"/node_modules/zod/v4/locales/pl.js\",\"./ps.js\":\"/node_modules/zod/v4/locales/ps.js\",\"./pt.js\":\"/node_modules/zod/v4/locales/pt.js\",\"./ro.js\":\"/node_modules/zod/v4/locales/ro.js\",\"./ru.js\":\"/node_modules/zod/v4/locales/ru.js\",\"./sl.js\":\"/node_modules/zod/v4/locales/sl.js\",\"./sv.js\":\"/node_modules/zod/v4/locales/sv.js\",\"./ta.js\":\"/node_modules/zod/v4/locales/ta.js\",\"./th.js\":\"/node_modules/zod/v4/locales/th.js\",\"./tr.js\":\"/node_modules/zod/v4/locales/tr.js\",\"./ua.js\":\"/node_modules/zod/v4/locales/ua.js\",\"./uk.js\":\"/node_modules/zod/v4/locales/uk.js\",\"./ur.js\":\"/node_modules/zod/v4/locales/ur.js\",\"./uz.js\":\"/node_modules/zod/v4/locales/uz.js\",\"./vi.js\":\"/node_modules/zod/v4/locales/vi.js\",\"./yo.js\":\"/node_modules/zod/v4/locales/yo.js\",\"./zh-CN.js\":\"/node_modules/zod/v4/locales/zh-CN.js\",\"./zh-TW.js\":\"/node_modules/zod/v4/locales/zh-TW.js\"},\"/node_modules/zod/v4/locales/is.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/is.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/it.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/it.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ja.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ja.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ka.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ka.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/kh.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"./km.cjs\":\"/node_modules/zod/v4/locales/km.cjs\"},\"/node_modules/zod/v4/locales/kh.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"./km.js\":\"/node_modules/zod/v4/locales/km.js\"},\"/node_modules/zod/v4/locales/km.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/km.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ko.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ko.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/lt.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/lt.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/mk.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/mk.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ms.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ms.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/nl.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/nl.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/no.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/no.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ota.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ota.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/package.json\":{},\"/node_modules/zod/v4/locales/pl.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/pl.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ps.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ps.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/pt.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/pt.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ro.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ro.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ru.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ru.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/sl.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/sl.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/sv.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/sv.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ta.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ta.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/th.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/th.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/tr.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/tr.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ua.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"./uk.cjs\":\"/node_modules/zod/v4/locales/uk.cjs\"},\"/node_modules/zod/v4/locales/ua.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"./uk.js\":\"/node_modules/zod/v4/locales/uk.js\"},\"/node_modules/zod/v4/locales/uk.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/uk.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/ur.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/ur.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/uz.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/uz.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/vi.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/vi.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/yo.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/yo.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/zh-CN.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/zh-CN.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/node_modules/zod/v4/locales/zh-TW.cjs\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.cjs\":\"/node_modules/zod/v4/core/util.cjs\"},\"/node_modules/zod/v4/locales/zh-TW.js\":{\"#package\":\"/node_modules/zod/v4/locales/package.json\",\"../core/util.js\":\"/node_modules/zod/v4/core/util.js\"},\"/package.json\":{},\"/qvac/worker.entry.mjs\":{\"#package\":\"/package.json\",\"file:///Users/raven/dev/peardata/node_modules/@qvac/sdk/dist/logging/index.js\":\"/node_modules/@qvac/sdk/dist/logging/index.js\",\"file:///Users/raven/dev/peardata/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/plugin.js\":\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/plugin.js\",\"file:///Users/raven/dev/peardata/node_modules/@qvac/sdk/dist/server/plugins/index.js\":\"/node_modules/@qvac/sdk/dist/server/plugins/index.js\",\"file:///Users/raven/dev/peardata/node_modules/@qvac/sdk/dist/server/worker-core.js\":\"/node_modules/@qvac/sdk/dist/server/worker-core.js\"}},\"addons\":[\"linked:bare-buffer.3.6.2.framework/bare-buffer.3.6.2\",\"linked:bare-crypto.1.15.3.framework/bare-crypto.1.15.3\",\"linked:bare-dns.2.1.4.framework/bare-dns.2.1.4\",\"linked:bare-fs.4.7.4.framework/bare-fs.4.7.4\",\"linked:bare-inspect.3.1.4.framework/bare-inspect.3.1.4\",\"linked:bare-os.3.9.3.framework/bare-os.3.9.3\",\"linked:bare-path.3.1.1.framework/bare-path.3.1.1\",\"linked:bare-performance.2.1.1.framework/bare-performance.2.1.1\",\"linked:bare-pipe.4.2.2.framework/bare-pipe.4.2.2\",\"linked:bare-signals.4.2.0.framework/bare-signals.4.2.0\",\"linked:bare-tcp.2.5.2.framework/bare-tcp.2.5.2\",\"linked:bare-tls.3.1.7.framework/bare-tls.3.1.7\",\"linked:bare-type.1.1.0.framework/bare-type.1.1.0\",\"linked:bare-url.2.4.5.framework/bare-url.2.4.5\",\"linked:bare-zlib.1.4.1.framework/bare-zlib.1.4.1\",\"linked:fs-native-extensions.1.5.0.framework/fs-native-extensions.1.5.0\",\"linked:quickbit-native.2.4.8.framework/quickbit-native.2.4.8\",\"linked:qvac__llm-llamacpp.0.38.2.framework/qvac__llm-llamacpp.0.38.2\",\"linked:rabin-native.2.0.0.framework/rabin-native.2.0.0\",\"linked:rocksdb-native.3.17.2.framework/rocksdb-native.3.17.2\",\"linked:simdle-native.1.3.9.framework/simdle-native.1.3.9\",\"linked:sodium-native.5.1.0.framework/sodium-native.5.1.0\",\"linked:udx-native.1.20.7.framework/udx-native.1.20.7\"],\"assets\":[],\"files\":{\"/node_modules/@hyperswarm/secret-stream/index.js\":{\"offset\":0,\"length\":16722,\"mode\":420},\"/node_modules/@hyperswarm/secret-stream/lib/bridge.js\":{\"offset\":16722,\"length\":1273,\"mode\":420},\"/node_modules/@hyperswarm/secret-stream/lib/handshake.js\":{\"offset\":17995,\"length\":1950,\"mode\":420},\"/node_modules/@hyperswarm/secret-stream/package.json\":{\"offset\":19945,\"length\":1132,\"mode\":420},\"/node_modules/@qvac/decoder-audio/constants.js\":{\"offset\":21077,\"length\":410,\"mode\":420},\"/node_modules/@qvac/decoder-audio/package.json\":{\"offset\":21487,\"length\":2447,\"mode\":420},\"/node_modules/@qvac/diagnostics/index.js\":{\"offset\":23934,\"length\":5888,\"mode\":420},\"/node_modules/@qvac/diagnostics/package.json\":{\"offset\":29822,\"length\":1296,\"mode\":420},\"/node_modules/@qvac/error/index.js\":{\"offset\":31118,\"length\":8248,\"mode\":420},\"/node_modules/@qvac/error/package.json\":{\"offset\":39366,\"length\":946,\"mode\":420},\"/node_modules/@qvac/infer-base/index.js\":{\"offset\":40312,\"length\":12222,\"mode\":420},\"/node_modules/@qvac/infer-base/package.json\":{\"offset\":52534,\"length\":1180,\"mode\":420},\"/node_modules/@qvac/infer-base/src/QvacResponse.js\":{\"offset\":53714,\"length\":8100,\"mode\":420},\"/node_modules/@qvac/infer-base/src/error.js\":{\"offset\":61814,\"length\":1724,\"mode\":420},\"/node_modules/@qvac/infer-base/src/utils/createJobHandler.js\":{\"offset\":63538,\"length\":3235,\"mode\":420},\"/node_modules/@qvac/infer-base/src/utils/exclusiveRunQueue.js\":{\"offset\":66773,\"length\":852,\"mode\":420},\"/node_modules/@qvac/infer-base/src/utils/getApiDefinition.js\":{\"offset\":67625,\"length\":488,\"mode\":420},\"/node_modules/@qvac/infer-base/src/utils/progressReport.js\":{\"offset\":68113,\"length\":3356,\"mode\":420},\"/node_modules/@qvac/langdetect-text/index.js\":{\"offset\":71469,\"length\":3466,\"mode\":420},\"/node_modules/@qvac/langdetect-text/package.json\":{\"offset\":74935,\"length\":1289,\"mode\":420},\"/node_modules/@qvac/llm-llamacpp/addon.js\":{\"offset\":76224,\"length\":5160,\"mode\":420},\"/node_modules/@qvac/llm-llamacpp/addonLogging.js\":{\"offset\":81384,\"length\":130,\"mode\":420},\"/node_modules/@qvac/llm-llamacpp/batchHandler.js\":{\"offset\":81514,\"length\":4056,\"mode\":420},\"/node_modules/@qvac/llm-llamacpp/binding.js\":{\"offset\":85570,\"length\":33,\"mode\":420},\"/node_modules/@qvac/llm-llamacpp/index.js\":{\"offset\":85603,\"length\":19203,\"mode\":420},\"/node_modules/@qvac/llm-llamacpp/package.json\":{\"offset\":104806,\"length\":5971,\"mode\":420},\"/node_modules/@qvac/logging/constants.js\":{\"offset\":110777,\"length\":726,\"mode\":420},\"/node_modules/@qvac/logging/index.js\":{\"offset\":111503,\"length\":4415,\"mode\":420},\"/node_modules/@qvac/logging/package.json\":{\"offset\":115918,\"length\":1197,\"mode\":420},\"/node_modules/@qvac/rag/index.js\":{\"offset\":117115,\"length\":977,\"mode\":420},\"/node_modules/@qvac/rag/package.json\":{\"offset\":118092,\"length\":2109,\"mode\":420},\"/node_modules/@qvac/rag/src/RAG.js\":{\"offset\":120201,\"length\":8064,\"mode\":420},\"/node_modules/@qvac/rag/src/adapters/chunker/BaseChunkAdapter.js\":{\"offset\":128265,\"length\":2612,\"mode\":420},\"/node_modules/@qvac/rag/src/adapters/chunker/LLMChunkAdapter.js\":{\"offset\":130877,\"length\":3288,\"mode\":420},\"/node_modules/@qvac/rag/src/adapters/chunker/Tokenizer.js\":{\"offset\":134165,\"length\":5468,\"mode\":420},\"/node_modules/@qvac/rag/src/adapters/database/BaseDBAdapter.js\":{\"offset\":139633,\"length\":1981,\"mode\":420},\"/node_modules/@qvac/rag/src/adapters/database/HyperDBAdapter.js\":{\"offset\":141614,\"length\":39017,\"mode\":420},\"/node_modules/@qvac/rag/src/adapters/database/hyperspec/hyperdb/index.js\":{\"offset\":180631,\"length\":10934,\"mode\":420},\"/node_modules/@qvac/rag/src/adapters/database/hyperspec/hyperdb/messages.js\":{\"offset\":191565,\"length\":9954,\"mode\":420},\"/node_modules/@qvac/rag/src/adapters/llm/BaseLlmAdapter.js\":{\"offset\":201519,\"length\":1024,\"mode\":420},\"/node_modules/@qvac/rag/src/adapters/llm/HttpLlmAdapter.js\":{\"offset\":202543,\"length\":4735,\"mode\":420},\"/node_modules/@qvac/rag/src/adapters/llm/QvacLlmAdapter.js\":{\"offset\":207278,\"length\":2775,\"mode\":420},\"/node_modules/@qvac/rag/src/errors.js\":{\"offset\":210053,\"length\":3102,\"mode\":420},\"/node_modules/@qvac/rag/src/schemas/embedding.js\":{\"offset\":213155,\"length\":1477,\"mode\":420},\"/node_modules/@qvac/rag/src/services/IngestionService.js\":{\"offset\":214632,\"length\":6400,\"mode\":420},\"/node_modules/@qvac/rag/src/services/RetrievalService.js\":{\"offset\":221032,\"length\":3516,\"mode\":420},\"/node_modules/@qvac/rag/src/services/core/ChunkingService.js\":{\"offset\":224548,\"length\":2138,\"mode\":420},\"/node_modules/@qvac/rag/src/services/core/EmbeddingService.js\":{\"offset\":226686,\"length\":4970,\"mode\":420},\"/node_modules/@qvac/rag/src/shims/resolve-fetch.js\":{\"offset\":231656,\"length\":732,\"mode\":420},\"/node_modules/@qvac/rag/src/types.js\":{\"offset\":232388,\"length\":6127,\"mode\":420},\"/node_modules/@qvac/rag/src/utils/helper.js\":{\"offset\":238515,\"length\":7872,\"mode\":420},\"/node_modules/@qvac/registry-client/index.js\":{\"offset\":246387,\"length\":108,\"mode\":420},\"/node_modules/@qvac/registry-client/lib/client.js\":{\"offset\":246495,\"length\":22871,\"mode\":420},\"/node_modules/@qvac/registry-client/lib/config.js\":{\"offset\":269366,\"length\":1575,\"mode\":420},\"/node_modules/@qvac/registry-client/lib/logger.js\":{\"offset\":270941,\"length\":819,\"mode\":420},\"/node_modules/@qvac/registry-client/package.json\":{\"offset\":271760,\"length\":1992,\"mode\":420},\"/node_modules/@qvac/registry-client/utils/env.js\":{\"offset\":273752,\"length\":240,\"mode\":420},\"/node_modules/@qvac/registry-client/utils/error.js\":{\"offset\":273992,\"length\":874,\"mode\":420},\"/node_modules/@qvac/registry-client/utils/retry.js\":{\"offset\":274866,\"length\":1431,\"mode\":420},\"/node_modules/@qvac/registry-schema/constants.js\":{\"offset\":276297,\"length\":2367,\"mode\":420},\"/node_modules/@qvac/registry-schema/db-helpers.js\":{\"offset\":278664,\"length\":463,\"mode\":420},\"/node_modules/@qvac/registry-schema/db.js\":{\"offset\":279127,\"length\":3753,\"mode\":420},\"/node_modules/@qvac/registry-schema/index.js\":{\"offset\":282880,\"length\":434,\"mode\":420},\"/node_modules/@qvac/registry-schema/package.json\":{\"offset\":283314,\"length\":776,\"mode\":420},\"/node_modules/@qvac/registry-schema/spec/hyperdb/index.js\":{\"offset\":284090,\"length\":10554,\"mode\":420},\"/node_modules/@qvac/registry-schema/spec/hyperdb/messages.js\":{\"offset\":294644,\"length\":11687,\"mode\":420},\"/node_modules/@qvac/registry-schema/spec/hyperdispatch/index.js\":{\"offset\":306331,\"length\":4300,\"mode\":420},\"/node_modules/@qvac/registry-schema/spec/hyperdispatch/messages.js\":{\"offset\":310631,\"length\":7573,\"mode\":420},\"/node_modules/@qvac/registry-schema/spec/hyperschema/index.js\":{\"offset\":318204,\"length\":7573,\"mode\":420},\"/node_modules/@qvac/sdk/dist/constants/audio.js\":{\"offset\":325777,\"length\":100,\"mode\":420},\"/node_modules/@qvac/sdk/dist/constants/index.js\":{\"offset\":325877,\"length\":59,\"mode\":420},\"/node_modules/@qvac/sdk/dist/constants/registry.js\":{\"offset\":325936,\"length\":97,\"mode\":420},\"/node_modules/@qvac/sdk/dist/logging/addon.js\":{\"offset\":326033,\"length\":2275,\"mode\":420},\"/node_modules/@qvac/sdk/dist/logging/base-logger.js\":{\"offset\":328308,\"length\":2623,\"mode\":420},\"/node_modules/@qvac/sdk/dist/logging/client-logger.js\":{\"offset\":330931,\"length\":795,\"mode\":420},\"/node_modules/@qvac/sdk/dist/logging/index.js\":{\"offset\":331726,\"length\":583,\"mode\":420},\"/node_modules/@qvac/sdk/dist/logging/logger.js\":{\"offset\":332309,\"length\":1589,\"mode\":420},\"/node_modules/@qvac/sdk/dist/logging/namespaces.js\":{\"offset\":333898,\"length\":353,\"mode\":420},\"/node_modules/@qvac/sdk/dist/logging/registry.js\":{\"offset\":334251,\"length\":2344,\"mode\":420},\"/node_modules/@qvac/sdk/dist/logging/server-logger.js\":{\"offset\":336595,\"length\":424,\"mode\":420},\"/node_modules/@qvac/sdk/dist/logging/stream-logger.js\":{\"offset\":337019,\"length\":485,\"mode\":420},\"/node_modules/@qvac/sdk/dist/logging/transport.js\":{\"offset\":337504,\"length\":545,\"mode\":420},\"/node_modules/@qvac/sdk/dist/logging/utils.js\":{\"offset\":338049,\"length\":4156,\"mode\":420},\"/node_modules/@qvac/sdk/dist/models/registry/index.js\":{\"offset\":342205,\"length\":861,\"mode\":420},\"/node_modules/@qvac/sdk/dist/models/registry/models.js\":{\"offset\":343066,\"length\":1022382,\"mode\":420},\"/node_modules/@qvac/sdk/dist/profiling/aggregator.js\":{\"offset\":1365448,\"length\":3332,\"mode\":420},\"/node_modules/@qvac/sdk/dist/profiling/clock.js\":{\"offset\":1368780,\"length\":1609,\"mode\":420},\"/node_modules/@qvac/sdk/dist/profiling/controller.js\":{\"offset\":1370389,\"length\":3978,\"mode\":420},\"/node_modules/@qvac/sdk/dist/profiling/envelope.js\":{\"offset\":1374367,\"length\":1021,\"mode\":420},\"/node_modules/@qvac/sdk/dist/profiling/events.js\":{\"offset\":1375388,\"length\":1686,\"mode\":420},\"/node_modules/@qvac/sdk/dist/profiling/exporters.js\":{\"offset\":1377074,\"length\":8072,\"mode\":420},\"/node_modules/@qvac/sdk/dist/profiling/index.js\":{\"offset\":1385146,\"length\":3195,\"mode\":420},\"/node_modules/@qvac/sdk/dist/profiling/model-execution.js\":{\"offset\":1388341,\"length\":1075,\"mode\":420},\"/node_modules/@qvac/sdk/dist/profiling/ring-buffer.js\":{\"offset\":1389416,\"length\":2642,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/archive.js\":{\"offset\":1392058,\"length\":441,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/batch-completion-stream.js\":{\"offset\":1392499,\"length\":4939,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/bci-config.js\":{\"offset\":1397438,\"length\":2152,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/bci.js\":{\"offset\":1399590,\"length\":4305,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/cancel.js\":{\"offset\":1403895,\"length\":5688,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/classification.js\":{\"offset\":1409583,\"length\":1343,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/common.js\":{\"offset\":1410926,\"length\":6536,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/completion-event.js\":{\"offset\":1417462,\"length\":3075,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/completion-stream.js\":{\"offset\":1420537,\"length\":11597,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/delegate.js\":{\"offset\":1432134,\"length\":1166,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/delete-cache.js\":{\"offset\":1433300,\"length\":577,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/download-asset.js\":{\"offset\":1433877,\"length\":2615,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/embed.js\":{\"offset\":1436492,\"length\":1818,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/engine-addon-map.js\":{\"offset\":1438310,\"length\":3387,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/error.js\":{\"offset\":1441697,\"length\":2495,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/finetune.js\":{\"offset\":1444192,\"length\":5862,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/get-loaded-model-info.js\":{\"offset\":1450054,\"length\":1886,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/get-model-info.js\":{\"offset\":1451940,\"length\":3976,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/heartbeat.js\":{\"offset\":1455916,\"length\":319,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/index.js\":{\"offset\":1456235,\"length\":2462,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/json-schema.js\":{\"offset\":1458697,\"length\":62,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/llamacpp-config.js\":{\"offset\":1458759,\"length\":5930,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/load-model.js\":{\"offset\":1464689,\"length\":22451,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/logging-stream.js\":{\"offset\":1487140,\"length\":540,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/mcp-adapter.js\":{\"offset\":1487680,\"length\":11,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/model-src-utils.js\":{\"offset\":1487691,\"length\":2387,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/model-types.js\":{\"offset\":1490078,\"length\":8111,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/ocr.js\":{\"offset\":1498189,\"length\":2156,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/path-validation.js\":{\"offset\":1500345,\"length\":808,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/plugin.js\":{\"offset\":1501153,\"length\":8818,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/profiling.js\":{\"offset\":1509971,\"length\":3102,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/provide.js\":{\"offset\":1513073,\"length\":651,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/rag.js\":{\"offset\":1513724,\"length\":8280,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/registry.js\":{\"offset\":1522004,\"length\":4280,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/reload-config.js\":{\"offset\":1526284,\"length\":1546,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/resume.js\":{\"offset\":1527830,\"length\":186,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/runtime-context.js\":{\"offset\":1528016,\"length\":302,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/sdcpp-config.js\":{\"offset\":1528318,\"length\":29911,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/sdk-config.js\":{\"offset\":1558229,\"length\":7052,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-client.js\":{\"offset\":1565281,\"length\":10901,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-registry.js\":{\"offset\":1576182,\"length\":337,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/sdk-errors-server.js\":{\"offset\":1576519,\"length\":25711,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/shard.js\":{\"offset\":1602230,\"length\":494,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/state.js\":{\"offset\":1602724,\"length\":310,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/stop-provide.js\":{\"offset\":1603034,\"length\":285,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/suspend.js\":{\"offset\":1603319,\"length\":190,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/text-to-speech.js\":{\"offset\":1603509,\"length\":9749,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/tools.js\":{\"offset\":1613258,\"length\":1824,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/transcription-config.js\":{\"offset\":1615082,\"length\":7071,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/transcription.js\":{\"offset\":1622153,\"length\":5936,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/translate.js\":{\"offset\":1628089,\"length\":4709,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/translation-config.js\":{\"offset\":1632798,\"length\":4638,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/unload-model.js\":{\"offset\":1637436,\"length\":593,\"mode\":420},\"/node_modules/@qvac/sdk/dist/schemas/vla.js\":{\"offset\":1638029,\"length\":6661,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/delegate-connect-diagnostics.js\":{\"offset\":1644690,\"length\":2144,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/delegate-rpc-client.js\":{\"offset\":1646834,\"length\":9831,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/hyperswarm.js\":{\"offset\":1656665,\"length\":3631,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/ops/cancel.js\":{\"offset\":1660296,\"length\":2300,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/ops/embed.js\":{\"offset\":1662596,\"length\":9178,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/ops/kv-cache-utils.js\":{\"offset\":1671774,\"length\":4128,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/ops/load-model.js\":{\"offset\":1675902,\"length\":3840,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/ops/translate.js\":{\"offset\":1679742,\"length\":12311,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/ops/unload-model.js\":{\"offset\":1692053,\"length\":2089,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/batch-cancelled.js\":{\"offset\":1694142,\"length\":1528,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/batch-completion-stream.js\":{\"offset\":1695670,\"length\":4071,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js\":{\"offset\":1699741,\"length\":1518,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.js\":{\"offset\":1701259,\"length\":1415,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js\":{\"offset\":1702674,\"length\":17878,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.js\":{\"offset\":1720552,\"length\":3091,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js\":{\"offset\":1723643,\"length\":8463,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.js\":{\"offset\":1732106,\"length\":19996,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.js\":{\"offset\":1752102,\"length\":2554,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/plugin.js\":{\"offset\":1754656,\"length\":25962,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/transform.js\":{\"offset\":1780618,\"length\":1486,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/chunk.js\":{\"offset\":1782104,\"length\":337,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/close-workspace.js\":{\"offset\":1782441,\"length\":446,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js\":{\"offset\":1782887,\"length\":594,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js\":{\"offset\":1783481,\"length\":709,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/ingest.js\":{\"offset\":1784190,\"length\":787,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js\":{\"offset\":1784977,\"length\":168,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/reindex.js\":{\"offset\":1785145,\"length\":712,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js\":{\"offset\":1785857,\"length\":607,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/handlers/search.js\":{\"offset\":1786464,\"length\":694,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/index.js\":{\"offset\":1787158,\"length\":727,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-operation-manager.js\":{\"offset\":1787885,\"length\":3661,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/rag-hyperdb/rag-workspace-manager.js\":{\"offset\":1791546,\"length\":4743,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/registry/config-registry.js\":{\"offset\":1796289,\"length\":4327,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/registry/logging-stream-registry.js\":{\"offset\":1800616,\"length\":4810,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-config-registry.js\":{\"offset\":1805426,\"length\":968,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-config-utils.js\":{\"offset\":1806394,\"length\":4904,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/registry/model-registry.js\":{\"offset\":1811298,\"length\":4000,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/registry/registry-client.js\":{\"offset\":1815298,\"length\":4645,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/registry/runtime-context-registry.js\":{\"offset\":1819943,\"length\":668,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/runtime-lifecycle.js\":{\"offset\":1820611,\"length\":5731,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/disposable-scope.js\":{\"offset\":1826342,\"length\":2351,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/index.js\":{\"offset\":1828693,\"length\":220,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-id.js\":{\"offset\":1828913,\"length\":592,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-registry-singleton.js\":{\"offset\":1829505,\"length\":2454,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/request-registry.js\":{\"offset\":1831959,\"length\":24535,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/bare/runtime/with-request-context.js\":{\"offset\":1856494,\"length\":2054,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/env.js\":{\"offset\":1858548,\"length\":1632,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/error-handlers.js\":{\"offset\":1860180,\"length\":1353,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/plugins/index.js\":{\"offset\":1861533,\"length\":152,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/plugins/registry.js\":{\"offset\":1861685,\"length\":3025,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/create-server.js\":{\"offset\":1864710,\"length\":1836,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/delegate-transport.js\":{\"offset\":1866546,\"length\":10514,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handle-request.js\":{\"offset\":1877060,\"length\":7008,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handler-registry.js\":{\"offset\":1884068,\"length\":8311,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handler-selection.js\":{\"offset\":1892379,\"length\":520,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handler-utils.js\":{\"offset\":1892899,\"length\":6749,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/batch-completion-stream.js\":{\"offset\":1899648,\"length\":209,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/bci-transcribe-stream.js\":{\"offset\":1899857,\"length\":231,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/bci-transcribe.js\":{\"offset\":1900088,\"length\":193,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/cancel-delegated.js\":{\"offset\":1900281,\"length\":2544,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/cancelHandler.js\":{\"offset\":1902825,\"length\":3432,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/classify.js\":{\"offset\":1906257,\"length\":183,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/completion-orchestrate.js\":{\"offset\":1906440,\"length\":8283,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/completion-stream-delegated.js\":{\"offset\":1914723,\"length\":2152,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/completion-stream.js\":{\"offset\":1916875,\"length\":199,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/delete-cache.js\":{\"offset\":1917074,\"length\":1383,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/diffusion-stream.js\":{\"offset\":1918457,\"length\":197,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/download-asset.js\":{\"offset\":1918654,\"length\":6645,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/embed.js\":{\"offset\":1925299,\"length\":174,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/finetune.js\":{\"offset\":1925473,\"length\":717,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/get-loaded-model-info.js\":{\"offset\":1926190,\"length\":1885,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/get-model-info.js\":{\"offset\":1928075,\"length\":7191,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/heartbeat-delegated.js\":{\"offset\":1935266,\"length\":1293,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/heartbeat.js\":{\"offset\":1936559,\"length\":101,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model-delegated.js\":{\"offset\":1936660,\"length\":5984,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-manager.js\":{\"offset\":1942644,\"length\":11494,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/download-stats.js\":{\"offset\":1954138,\"length\":5558,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/handler.js\":{\"offset\":1959696,\"length\":13711,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/http.js\":{\"offset\":1973407,\"length\":38523,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/hyperdrive.js\":{\"offset\":2011930,\"length\":24962,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/index.js\":{\"offset\":2036892,\"length\":97,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-client-options.js\":{\"offset\":2036989,\"length\":755,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-companion-set.js\":{\"offset\":2037744,\"length\":8694,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-download-utils.js\":{\"offset\":2046438,\"length\":4991,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry-metadata.js\":{\"offset\":2051429,\"length\":1017,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/registry.js\":{\"offset\":2052446,\"length\":13641,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/resolve-session.js\":{\"offset\":2066087,\"length\":2370,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/resolve.js\":{\"offset\":2068457,\"length\":8245,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/load-model/types.js\":{\"offset\":2076702,\"length\":1082,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/logging-stream.js\":{\"offset\":2077784,\"length\":1322,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/ocr-stream.js\":{\"offset\":2079106,\"length\":185,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-dispatch.js\":{\"offset\":2079291,\"length\":2872,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/plugin-invoke.js\":{\"offset\":2082163,\"length\":3913,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler.js\":{\"offset\":2086076,\"length\":137,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler/connection.js\":{\"offset\":2086213,\"length\":1952,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler/handler.js\":{\"offset\":2088165,\"length\":3099,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/provideHandler/proxy.js\":{\"offset\":2091264,\"length\":1061,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/rag.js\":{\"offset\":2092325,\"length\":10838,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/registry.js\":{\"offset\":2103163,\"length\":6590,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/resume.js\":{\"offset\":2109753,\"length\":401,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/state.js\":{\"offset\":2110154,\"length\":181,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/stopProvideHandler.js\":{\"offset\":2110335,\"length\":1160,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/suspend.js\":{\"offset\":2111495,\"length\":407,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/text-to-speech-stream.js\":{\"offset\":2111902,\"length\":229,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/text-to-speech.js\":{\"offset\":2112131,\"length\":191,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/transcribe-stream.js\":{\"offset\":2112322,\"length\":225,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/transcribe.js\":{\"offset\":2112547,\"length\":187,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/translate.js\":{\"offset\":2112734,\"length\":185,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/unload-model-delegated.js\":{\"offset\":2112919,\"length\":1589,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/unload-model.js\":{\"offset\":2114508,\"length\":1091,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/upscale-stream.js\":{\"offset\":2115599,\"length\":193,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/handlers/video-stream.js\":{\"offset\":2115792,\"length\":189,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/context.js\":{\"offset\":2115981,\"length\":1483,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/delegation-profiler.js\":{\"offset\":2117464,\"length\":5771,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/index.js\":{\"offset\":2123235,\"length\":560,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/operation-metrics.js\":{\"offset\":2123795,\"length\":14063,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/operation-wrappers.js\":{\"offset\":2137858,\"length\":4821,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/profiling/profiler.js\":{\"offset\":2142679,\"length\":3543,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/progress-throttle.js\":{\"offset\":2146222,\"length\":1397,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/rpc-utils.js\":{\"offset\":2147619,\"length\":300,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/rpc/transport-selector.js\":{\"offset\":2147919,\"length\":508,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/archive.js\":{\"offset\":2148427,\"length\":7408,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/cache/auto-history.js\":{\"offset\":2155835,\"length\":881,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/cache/paths.js\":{\"offset\":2156716,\"length\":5125,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/cache/types.js\":{\"offset\":2161841,\"length\":11,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/checksum.js\":{\"offset\":2161852,\"length\":1097,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/clear-storage.js\":{\"offset\":2162949,\"length\":743,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/completion-normalizer.js\":{\"offset\":2163692,\"length\":16293,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/config-transform.js\":{\"offset\":2179985,\"length\":885,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/expand-gguf-shards.js\":{\"offset\":2180870,\"length\":1066,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/formatting.js\":{\"offset\":2181936,\"length\":1879,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/gguf-tensor-extractor.js\":{\"offset\":2183815,\"length\":11118,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/index.js\":{\"offset\":2194933,\"length\":397,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/multi-gpu-mobile.js\":{\"offset\":2195330,\"length\":515,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/path-security.js\":{\"offset\":2195845,\"length\":1136,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/qvac-paths.js\":{\"offset\":2196981,\"length\":174,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/response-format.js\":{\"offset\":2197155,\"length\":984,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/shard-utils.js\":{\"offset\":2198139,\"length\":5308,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/tool-integration.js\":{\"offset\":2203447,\"length\":1234,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/tools/dialect.js\":{\"offset\":2204681,\"length\":688,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/tools/index.js\":{\"offset\":2205369,\"length\":104,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parser.js\":{\"offset\":2205473,\"length\":2793,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/gemma4native.js\":{\"offset\":2208266,\"length\":2686,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/harmony.js\":{\"offset\":2210952,\"length\":2020,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/hermes.js\":{\"offset\":2212972,\"length\":4569,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/json.js\":{\"offset\":2217541,\"length\":3880,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/pythonic.js\":{\"offset\":2221421,\"length\":8347,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/tools/parsers/qwen35.js\":{\"offset\":2229768,\"length\":4807,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/tools/shared.js\":{\"offset\":2234575,\"length\":1661,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/utils/worker-lock.js\":{\"offset\":2236236,\"length\":1984,\"mode\":420},\"/node_modules/@qvac/sdk/dist/server/worker-core.js\":{\"offset\":2238220,\"length\":8723,\"mode\":420},\"/node_modules/@qvac/sdk/dist/utils/aggregate-events.js\":{\"offset\":2246943,\"length\":2566,\"mode\":420},\"/node_modules/@qvac/sdk/dist/utils/cache-normalize.js\":{\"offset\":2249509,\"length\":1111,\"mode\":420},\"/node_modules/@qvac/sdk/dist/utils/errors-base.js\":{\"offset\":2250620,\"length\":381,\"mode\":420},\"/node_modules/@qvac/sdk/dist/utils/errors-client.js\":{\"offset\":2251001,\"length\":13667,\"mode\":420},\"/node_modules/@qvac/sdk/dist/utils/errors-server.js\":{\"offset\":2264668,\"length\":25885,\"mode\":420},\"/node_modules/@qvac/sdk/dist/utils/global-singleton.js\":{\"offset\":2290553,\"length\":253,\"mode\":420},\"/node_modules/@qvac/sdk/dist/utils/path-sanitize.js\":{\"offset\":2290806,\"length\":2145,\"mode\":420},\"/node_modules/@qvac/sdk/dist/utils/tool-helpers.js\":{\"offset\":2292951,\"length\":3719,\"mode\":420},\"/node_modules/@qvac/sdk/dist/utils/withTimeout.js\":{\"offset\":2296670,\"length\":1540,\"mode\":420},\"/node_modules/@qvac/sdk/dist/utils/zod-error.js\":{\"offset\":2298210,\"length\":102,\"mode\":420},\"/node_modules/@qvac/sdk/node_modules/bare-signals/binding.js\":{\"offset\":2298312,\"length\":33,\"mode\":420},\"/node_modules/@qvac/sdk/node_modules/bare-signals/index.js\":{\"offset\":2298345,\"length\":1517,\"mode\":420},\"/node_modules/@qvac/sdk/node_modules/bare-signals/lib/emitter.js\":{\"offset\":2299862,\"length\":1278,\"mode\":420},\"/node_modules/@qvac/sdk/node_modules/bare-signals/lib/errors.js\":{\"offset\":2301140,\"length\":479,\"mode\":420},\"/node_modules/@qvac/sdk/node_modules/bare-signals/package.json\":{\"offset\":2301619,\"length\":1112,\"mode\":420},\"/node_modules/@qvac/sdk/package.json\":{\"offset\":2302731,\"length\":11507,\"mode\":420},\"/node_modules/adaptive-timeout/index.js\":{\"offset\":2314238,\"length\":2424,\"mode\":420},\"/node_modules/adaptive-timeout/package.json\":{\"offset\":2316662,\"length\":972,\"mode\":420},\"/node_modules/b4a/index.js\":{\"offset\":2317634,\"length\":4054,\"mode\":420},\"/node_modules/b4a/package.json\":{\"offset\":2321688,\"length\":1245,\"mode\":420},\"/node_modules/bare-abort-controller/index.js\":{\"offset\":2322933,\"length\":3271,\"mode\":420},\"/node_modules/bare-abort-controller/package.json\":{\"offset\":2326204,\"length\":1225,\"mode\":420},\"/node_modules/bare-ansi-escapes/index.js\":{\"offset\":2327429,\"length\":2255,\"mode\":420},\"/node_modules/bare-ansi-escapes/package.json\":{\"offset\":2329684,\"length\":1178,\"mode\":420},\"/node_modules/bare-assert/index.js\":{\"offset\":2330862,\"length\":2192,\"mode\":420},\"/node_modules/bare-assert/package.json\":{\"offset\":2333054,\"length\":835,\"mode\":420},\"/node_modules/bare-buffer/binding.js\":{\"offset\":2333889,\"length\":33,\"mode\":420},\"/node_modules/bare-buffer/index.js\":{\"offset\":2333922,\"length\":28020,\"mode\":420},\"/node_modules/bare-buffer/lib/ascii.js\":{\"offset\":2361942,\"length\":613,\"mode\":420},\"/node_modules/bare-buffer/lib/base64.js\":{\"offset\":2362555,\"length\":531,\"mode\":420},\"/node_modules/bare-buffer/lib/base64url.js\":{\"offset\":2363086,\"length\":534,\"mode\":420},\"/node_modules/bare-buffer/lib/constants.js\":{\"offset\":2363620,\"length\":74,\"mode\":420},\"/node_modules/bare-buffer/lib/hex.js\":{\"offset\":2363694,\"length\":392,\"mode\":420},\"/node_modules/bare-buffer/lib/latin1.js\":{\"offset\":2364086,\"length\":392,\"mode\":420},\"/node_modules/bare-buffer/lib/utf16le.js\":{\"offset\":2364478,\"length\":398,\"mode\":420},\"/node_modules/bare-buffer/lib/utf8.js\":{\"offset\":2364876,\"length\":519,\"mode\":420},\"/node_modules/bare-buffer/package.json\":{\"offset\":2365395,\"length\":1324,\"mode\":420},\"/node_modules/bare-crypto/binding.js\":{\"offset\":2366719,\"length\":33,\"mode\":420},\"/node_modules/bare-crypto/index.js\":{\"offset\":2366752,\"length\":1706,\"mode\":420},\"/node_modules/bare-crypto/lib/cipher.js\":{\"offset\":2368458,\"length\":8357,\"mode\":420},\"/node_modules/bare-crypto/lib/constants.js\":{\"offset\":2376815,\"length\":2504,\"mode\":420},\"/node_modules/bare-crypto/lib/errors.js\":{\"offset\":2379319,\"length\":957,\"mode\":420},\"/node_modules/bare-crypto/lib/hash.js\":{\"offset\":2380276,\"length\":2121,\"mode\":420},\"/node_modules/bare-crypto/lib/hmac.js\":{\"offset\":2382397,\"length\":1311,\"mode\":420},\"/node_modules/bare-crypto/lib/key.js\":{\"offset\":2383708,\"length\":2535,\"mode\":420},\"/node_modules/bare-crypto/lib/pbkdf2.js\":{\"offset\":2386243,\"length\":1059,\"mode\":420},\"/node_modules/bare-crypto/lib/random.js\":{\"offset\":2387302,\"length\":2014,\"mode\":420},\"/node_modules/bare-crypto/lib/signature.js\":{\"offset\":2389316,\"length\":1369,\"mode\":420},\"/node_modules/bare-crypto/lib/timing.js\":{\"offset\":2390685,\"length\":660,\"mode\":420},\"/node_modules/bare-crypto/lib/web/algorithm/ed25519.js\":{\"offset\":2391345,\"length\":7039,\"mode\":420},\"/node_modules/bare-crypto/lib/web/algorithm/hmac.js\":{\"offset\":2398384,\"length\":5356,\"mode\":420},\"/node_modules/bare-crypto/lib/web/algorithm/pbkdf2.js\":{\"offset\":2403740,\"length\":1563,\"mode\":420},\"/node_modules/bare-crypto/lib/web/algorithm/sha.js\":{\"offset\":2405303,\"length\":299,\"mode\":420},\"/node_modules/bare-crypto/lib/web/crypto-key.js\":{\"offset\":2405602,\"length\":1185,\"mode\":420},\"/node_modules/bare-crypto/package.json\":{\"offset\":2406787,\"length\":1618,\"mode\":420},\"/node_modules/bare-crypto/web.js\":{\"offset\":2408405,\"length\":7537,\"mode\":420},\"/node_modules/bare-dns/binding.js\":{\"offset\":2415942,\"length\":33,\"mode\":420},\"/node_modules/bare-dns/index.js\":{\"offset\":2415975,\"length\":1345,\"mode\":420},\"/node_modules/bare-dns/package.json\":{\"offset\":2417320,\"length\":968,\"mode\":420},\"/node_modules/bare-env/index.js\":{\"offset\":2418288,\"length\":1017,\"mode\":420},\"/node_modules/bare-env/package.json\":{\"offset\":2419305,\"length\":944,\"mode\":420},\"/node_modules/bare-events/index.js\":{\"offset\":2420249,\"length\":8307,\"mode\":420},\"/node_modules/bare-events/lib/errors.js\":{\"offset\":2428556,\"length\":671,\"mode\":420},\"/node_modules/bare-events/package.json\":{\"offset\":2429227,\"length\":1504,\"mode\":420},\"/node_modules/bare-events/web.js\":{\"offset\":2430731,\"length\":7800,\"mode\":420},\"/node_modules/bare-fetch/index.js\":{\"offset\":2438531,\"length\":4523,\"mode\":420},\"/node_modules/bare-fetch/lib/body.js\":{\"offset\":2443054,\"length\":6410,\"mode\":420},\"/node_modules/bare-fetch/lib/errors.js\":{\"offset\":2449464,\"length\":1619,\"mode\":420},\"/node_modules/bare-fetch/lib/headers.js\":{\"offset\":2451083,\"length\":5064,\"mode\":420},\"/node_modules/bare-fetch/lib/request.js\":{\"offset\":2456147,\"length\":2287,\"mode\":420},\"/node_modules/bare-fetch/lib/response-stream.js\":{\"offset\":2458434,\"length\":1134,\"mode\":420},\"/node_modules/bare-fetch/lib/response.js\":{\"offset\":2459568,\"length\":3192,\"mode\":420},\"/node_modules/bare-fetch/package.json\":{\"offset\":2462760,\"length\":2100,\"mode\":420},\"/node_modules/bare-form-data/index.js\":{\"offset\":2464860,\"length\":5715,\"mode\":420},\"/node_modules/bare-form-data/lib/errors.js\":{\"offset\":2470575,\"length\":412,\"mode\":420},\"/node_modules/bare-form-data/package.json\":{\"offset\":2470987,\"length\":1004,\"mode\":420},\"/node_modules/bare-fs/binding.js\":{\"offset\":2471991,\"length\":33,\"mode\":420},\"/node_modules/bare-fs/index.js\":{\"offset\":2472024,\"length\":58907,\"mode\":420},\"/node_modules/bare-fs/lib/constants.js\":{\"offset\":2530931,\"length\":1494,\"mode\":420},\"/node_modules/bare-fs/lib/errors.js\":{\"offset\":2532425,\"length\":1166,\"mode\":420},\"/node_modules/bare-fs/package.json\":{\"offset\":2533591,\"length\":1654,\"mode\":420},\"/node_modules/bare-fs/promises.js\":{\"offset\":2535245,\"length\":2401,\"mode\":420},\"/node_modules/bare-http-parser/index.js\":{\"offset\":2537646,\"length\":17995,\"mode\":420},\"/node_modules/bare-http-parser/lib/errors.js\":{\"offset\":2555641,\"length\":845,\"mode\":420},\"/node_modules/bare-http-parser/package.json\":{\"offset\":2556486,\"length\":907,\"mode\":420},\"/node_modules/bare-http1/index.js\":{\"offset\":2557393,\"length\":2188,\"mode\":420},\"/node_modules/bare-http1/lib/agent.js\":{\"offset\":2559581,\"length\":4498,\"mode\":420},\"/node_modules/bare-http1/lib/client-connection.js\":{\"offset\":2564079,\"length\":3663,\"mode\":420},\"/node_modules/bare-http1/lib/client-request.js\":{\"offset\":2567742,\"length\":3734,\"mode\":420},\"/node_modules/bare-http1/lib/constants.js\":{\"offset\":2571476,\"length\":2016,\"mode\":420},\"/node_modules/bare-http1/lib/errors.js\":{\"offset\":2573492,\"length\":889,\"mode\":420},\"/node_modules/bare-http1/lib/incoming-message.js\":{\"offset\":2574381,\"length\":1568,\"mode\":420},\"/node_modules/bare-http1/lib/outgoing-message.js\":{\"offset\":2575949,\"length\":1635,\"mode\":420},\"/node_modules/bare-http1/lib/server-connection.js\":{\"offset\":2577584,\"length\":4041,\"mode\":420},\"/node_modules/bare-http1/lib/server-response.js\":{\"offset\":2581625,\"length\":3704,\"mode\":420},\"/node_modules/bare-http1/lib/server.js\":{\"offset\":2585329,\"length\":977,\"mode\":420},\"/node_modules/bare-http1/lib/validate.js\":{\"offset\":2586306,\"length\":1458,\"mode\":420},\"/node_modules/bare-http1/package.json\":{\"offset\":2587764,\"length\":1510,\"mode\":420},\"/node_modules/bare-https/index.js\":{\"offset\":2589274,\"length\":1498,\"mode\":420},\"/node_modules/bare-https/lib/agent.js\":{\"offset\":2590772,\"length\":394,\"mode\":420},\"/node_modules/bare-https/lib/client-request.js\":{\"offset\":2591166,\"length\":464,\"mode\":420},\"/node_modules/bare-https/lib/server.js\":{\"offset\":2591630,\"length\":1072,\"mode\":420},\"/node_modules/bare-https/lib/socket.js\":{\"offset\":2592702,\"length\":464,\"mode\":420},\"/node_modules/bare-https/package.json\":{\"offset\":2593166,\"length\":1028,\"mode\":420},\"/node_modules/bare-inspect/binding.js\":{\"offset\":2594194,\"length\":33,\"mode\":420},\"/node_modules/bare-inspect/index.js\":{\"offset\":2594227,\"length\":23856,\"mode\":420},\"/node_modules/bare-inspect/package.json\":{\"offset\":2618083,\"length\":1041,\"mode\":420},\"/node_modules/bare-mime/index.js\":{\"offset\":2619124,\"length\":4184,\"mode\":420},\"/node_modules/bare-mime/package.json\":{\"offset\":2623308,\"length\":808,\"mode\":420},\"/node_modules/bare-net/index.js\":{\"offset\":2624116,\"length\":9005,\"mode\":420},\"/node_modules/bare-net/lib/constants.js\":{\"offset\":2633121,\"length\":91,\"mode\":420},\"/node_modules/bare-net/package.json\":{\"offset\":2633212,\"length\":1149,\"mode\":420},\"/node_modules/bare-os/binding.js\":{\"offset\":2634361,\"length\":33,\"mode\":420},\"/node_modules/bare-os/index.js\":{\"offset\":2634394,\"length\":5216,\"mode\":420},\"/node_modules/bare-os/lib/constants.js\":{\"offset\":2639610,\"length\":143,\"mode\":420},\"/node_modules/bare-os/lib/errors.js\":{\"offset\":2639753,\"length\":453,\"mode\":420},\"/node_modules/bare-os/package.json\":{\"offset\":2640206,\"length\":1257,\"mode\":420},\"/node_modules/bare-path/binding.js\":{\"offset\":2641463,\"length\":33,\"mode\":420},\"/node_modules/bare-path/index.js\":{\"offset\":2641496,\"length\":287,\"mode\":420},\"/node_modules/bare-path/lib/constants.js\":{\"offset\":2641783,\"length\":247,\"mode\":420},\"/node_modules/bare-path/lib/posix.js\":{\"offset\":2642030,\"length\":6399,\"mode\":420},\"/node_modules/bare-path/lib/shared.js\":{\"offset\":2648429,\"length\":2148,\"mode\":420},\"/node_modules/bare-path/lib/win32.js\":{\"offset\":2650577,\"length\":13987,\"mode\":420},\"/node_modules/bare-path/package.json\":{\"offset\":2664564,\"length\":1106,\"mode\":420},\"/node_modules/bare-performance/binding.js\":{\"offset\":2665670,\"length\":33,\"mode\":420},\"/node_modules/bare-performance/index.js\":{\"offset\":2665703,\"length\":3844,\"mode\":420},\"/node_modules/bare-performance/lib/constants.js\":{\"offset\":2669547,\"length\":92,\"mode\":420},\"/node_modules/bare-performance/lib/errors.js\":{\"offset\":2669639,\"length\":167,\"mode\":420},\"/node_modules/bare-performance/lib/histogram.js\":{\"offset\":2669806,\"length\":2448,\"mode\":420},\"/node_modules/bare-performance/lib/hr-time.js\":{\"offset\":2672254,\"length\":182,\"mode\":420},\"/node_modules/bare-performance/lib/timing.js\":{\"offset\":2672436,\"length\":11935,\"mode\":420},\"/node_modules/bare-performance/package.json\":{\"offset\":2684371,\"length\":1138,\"mode\":420},\"/node_modules/bare-pipe/binding.js\":{\"offset\":2685509,\"length\":33,\"mode\":420},\"/node_modules/bare-pipe/index.js\":{\"offset\":2685542,\"length\":14357,\"mode\":420},\"/node_modules/bare-pipe/lib/constants.js\":{\"offset\":2699899,\"length\":352,\"mode\":420},\"/node_modules/bare-pipe/lib/errors.js\":{\"offset\":2700251,\"length\":699,\"mode\":420},\"/node_modules/bare-pipe/package.json\":{\"offset\":2700950,\"length\":1396,\"mode\":420},\"/node_modules/bare-rpc/index.js\":{\"offset\":2702346,\"length\":15494,\"mode\":420},\"/node_modules/bare-rpc/lib/command-router.js\":{\"offset\":2717840,\"length\":1073,\"mode\":420},\"/node_modules/bare-rpc/lib/constants.js\":{\"offset\":2718913,\"length\":270,\"mode\":420},\"/node_modules/bare-rpc/lib/errors.js\":{\"offset\":2719183,\"length\":705,\"mode\":420},\"/node_modules/bare-rpc/lib/incoming-event.js\":{\"offset\":2719888,\"length\":151,\"mode\":420},\"/node_modules/bare-rpc/lib/incoming-request.js\":{\"offset\":2720039,\"length\":1241,\"mode\":420},\"/node_modules/bare-rpc/lib/incoming-stream.js\":{\"offset\":2721280,\"length\":1263,\"mode\":420},\"/node_modules/bare-rpc/lib/messages.js\":{\"offset\":2722543,\"length\":4008,\"mode\":420},\"/node_modules/bare-rpc/lib/outgoing-event.js\":{\"offset\":2726551,\"length\":595,\"mode\":420},\"/node_modules/bare-rpc/lib/outgoing-request.js\":{\"offset\":2727146,\"length\":2036,\"mode\":420},\"/node_modules/bare-rpc/lib/outgoing-stream.js\":{\"offset\":2729182,\"length\":2374,\"mode\":420},\"/node_modules/bare-rpc/package.json\":{\"offset\":2731556,\"length\":1401,\"mode\":420},\"/node_modules/bare-stream/index.js\":{\"offset\":2732957,\"length\":10904,\"mode\":420},\"/node_modules/bare-stream/package.json\":{\"offset\":2743861,\"length\":1676,\"mode\":420},\"/node_modules/bare-stream/web.js\":{\"offset\":2745537,\"length\":13980,\"mode\":420},\"/node_modules/bare-tcp/binding.js\":{\"offset\":2759517,\"length\":33,\"mode\":420},\"/node_modules/bare-tcp/index.js\":{\"offset\":2759550,\"length\":17298,\"mode\":420},\"/node_modules/bare-tcp/lib/constants.js\":{\"offset\":2776848,\"length\":167,\"mode\":420},\"/node_modules/bare-tcp/lib/errors.js\":{\"offset\":2777015,\"length\":797,\"mode\":420},\"/node_modules/bare-tcp/lib/ip.js\":{\"offset\":2777812,\"length\":2204,\"mode\":420},\"/node_modules/bare-tcp/package.json\":{\"offset\":2780016,\"length\":1400,\"mode\":420},\"/node_modules/bare-tls/binding.js\":{\"offset\":2781416,\"length\":33,\"mode\":420},\"/node_modules/bare-tls/index.js\":{\"offset\":2781449,\"length\":6951,\"mode\":420},\"/node_modules/bare-tls/lib/constants.js\":{\"offset\":2788400,\"length\":74,\"mode\":420},\"/node_modules/bare-tls/lib/errors.js\":{\"offset\":2788474,\"length\":358,\"mode\":420},\"/node_modules/bare-tls/net.js\":{\"offset\":2788832,\"length\":2563,\"mode\":420},\"/node_modules/bare-tls/package.json\":{\"offset\":2791395,\"length\":1454,\"mode\":420},\"/node_modules/bare-type/binding.js\":{\"offset\":2792849,\"length\":33,\"mode\":420},\"/node_modules/bare-type/index.js\":{\"offset\":2792882,\"length\":4566,\"mode\":420},\"/node_modules/bare-type/package.json\":{\"offset\":2797448,\"length\":938,\"mode\":420},\"/node_modules/bare-url/binding.js\":{\"offset\":2798386,\"length\":33,\"mode\":420},\"/node_modules/bare-url/index.js\":{\"offset\":2798419,\"length\":9449,\"mode\":420},\"/node_modules/bare-url/lib/errors.js\":{\"offset\":2807868,\"length\":778,\"mode\":420},\"/node_modules/bare-url/lib/url-search-params.js\":{\"offset\":2808646,\"length\":4331,\"mode\":420},\"/node_modules/bare-url/package.json\":{\"offset\":2812977,\"length\":1219,\"mode\":420},\"/node_modules/bare-zlib/binding.js\":{\"offset\":2814196,\"length\":33,\"mode\":420},\"/node_modules/bare-zlib/index.js\":{\"offset\":2814229,\"length\":8166,\"mode\":420},\"/node_modules/bare-zlib/lib/constants.js\":{\"offset\":2822395,\"length\":74,\"mode\":420},\"/node_modules/bare-zlib/lib/errors.js\":{\"offset\":2822469,\"length\":1096,\"mode\":420},\"/node_modules/bare-zlib/package.json\":{\"offset\":2823565,\"length\":1463,\"mode\":420},\"/node_modules/big-sparse-array/index.js\":{\"offset\":2825028,\"length\":2471,\"mode\":420},\"/node_modules/big-sparse-array/package.json\":{\"offset\":2827499,\"length\":636,\"mode\":420},\"/node_modules/binary-stream-equals/index.js\":{\"offset\":2828135,\"length\":2018,\"mode\":420},\"/node_modules/binary-stream-equals/package.json\":{\"offset\":2830153,\"length\":687,\"mode\":420},\"/node_modules/bits-to-bytes/index.js\":{\"offset\":2830840,\"length\":3083,\"mode\":420},\"/node_modules/bits-to-bytes/package.json\":{\"offset\":2833923,\"length\":708,\"mode\":420},\"/node_modules/blind-relay/index.js\":{\"offset\":2834631,\"length\":13411,\"mode\":420},\"/node_modules/blind-relay/lib/errors.js\":{\"offset\":2848042,\"length\":1036,\"mode\":420},\"/node_modules/blind-relay/package.json\":{\"offset\":2849078,\"length\":1231,\"mode\":420},\"/node_modules/bogon/index.js\":{\"offset\":2850309,\"length\":4004,\"mode\":420},\"/node_modules/bogon/package.json\":{\"offset\":2854313,\"length\":656,\"mode\":420},\"/node_modules/codecs/index.js\":{\"offset\":2854969,\"length\":2416,\"mode\":420},\"/node_modules/codecs/package.json\":{\"offset\":2857385,\"length\":655,\"mode\":420},\"/node_modules/compact-encoding-bitfield/index.js\":{\"offset\":2858040,\"length\":1967,\"mode\":420},\"/node_modules/compact-encoding-bitfield/package.json\":{\"offset\":2860007,\"length\":1109,\"mode\":420},\"/node_modules/compact-encoding/endian.js\":{\"offset\":2861116,\"length\":105,\"mode\":420},\"/node_modules/compact-encoding/index.js\":{\"offset\":2861221,\"length\":26406,\"mode\":420},\"/node_modules/compact-encoding/lexint.js\":{\"offset\":2887627,\"length\":2851,\"mode\":420},\"/node_modules/compact-encoding/package.json\":{\"offset\":2890478,\"length\":866,\"mode\":420},\"/node_modules/compact-encoding/raw.js\":{\"offset\":2891344,\"length\":3977,\"mode\":420},\"/node_modules/corestore/index.js\":{\"offset\":2895321,\"length\":19884,\"mode\":420},\"/node_modules/corestore/lib/audit.js\":{\"offset\":2915205,\"length\":475,\"mode\":420},\"/node_modules/corestore/lib/notify.js\":{\"offset\":2915680,\"length\":630,\"mode\":420},\"/node_modules/corestore/package.json\":{\"offset\":2916310,\"length\":1350,\"mode\":420},\"/node_modules/debounceify/index.js\":{\"offset\":2917660,\"length\":585,\"mode\":420},\"/node_modules/debounceify/package.json\":{\"offset\":2918245,\"length\":567,\"mode\":420},\"/node_modules/device-file/index.js\":{\"offset\":2918812,\"length\":6394,\"mode\":420},\"/node_modules/device-file/package.json\":{\"offset\":2925206,\"length\":1190,\"mode\":420},\"/node_modules/dht-rpc/index.js\":{\"offset\":2926396,\"length\":29079,\"mode\":420},\"/node_modules/dht-rpc/lib/commands.js\":{\"offset\":2955475,\"length\":107,\"mode\":420},\"/node_modules/dht-rpc/lib/errors.js\":{\"offset\":2955582,\"length\":719,\"mode\":420},\"/node_modules/dht-rpc/lib/health.js\":{\"offset\":2956301,\"length\":2998,\"mode\":420},\"/node_modules/dht-rpc/lib/io.js\":{\"offset\":2959299,\"length\":16605,\"mode\":420},\"/node_modules/dht-rpc/lib/peer.js\":{\"offset\":2975904,\"length\":583,\"mode\":420},\"/node_modules/dht-rpc/lib/query.js\":{\"offset\":2976487,\"length\":9899,\"mode\":420},\"/node_modules/dht-rpc/lib/session.js\":{\"offset\":2986386,\"length\":1103,\"mode\":420},\"/node_modules/dht-rpc/package.json\":{\"offset\":2987489,\"length\":1396,\"mode\":420},\"/node_modules/events-universal/bare.js\":{\"offset\":2988885,\"length\":40,\"mode\":420},\"/node_modules/events-universal/package.json\":{\"offset\":2988925,\"length\":908,\"mode\":420},\"/node_modules/fast-fifo/fixed-size.js\":{\"offset\":2989833,\"length\":875,\"mode\":420},\"/node_modules/fast-fifo/index.js\":{\"offset\":2990708,\"length\":972,\"mode\":420},\"/node_modules/fast-fifo/package.json\":{\"offset\":2991680,\"length\":682,\"mode\":420},\"/node_modules/fast-safe-stringify/index.js\":{\"offset\":2992362,\"length\":5794,\"mode\":420},\"/node_modules/fast-safe-stringify/package.json\":{\"offset\":2998156,\"length\":1118,\"mode\":420},\"/node_modules/fd-lock/index.js\":{\"offset\":2999274,\"length\":1755,\"mode\":420},\"/node_modules/fd-lock/package.json\":{\"offset\":3001029,\"length\":1099,\"mode\":420},\"/node_modules/flat-tree/index.js\":{\"offset\":3002128,\"length\":8164,\"mode\":420},\"/node_modules/flat-tree/package.json\":{\"offset\":3010292,\"length\":631,\"mode\":420},\"/node_modules/fs-native-extensions/binding.js\":{\"offset\":3010923,\"length\":90,\"mode\":420},\"/node_modules/fs-native-extensions/index.js\":{\"offset\":3011013,\"length\":7239,\"mode\":420},\"/node_modules/fs-native-extensions/package.json\":{\"offset\":3018252,\"length\":1790,\"mode\":420},\"/node_modules/hyperbee/index.js\":{\"offset\":3020042,\"length\":46445,\"mode\":420},\"/node_modules/hyperbee/iterators/diff.js\":{\"offset\":3066487,\"length\":5358,\"mode\":420},\"/node_modules/hyperbee/iterators/history.js\":{\"offset\":3071845,\"length\":1631,\"mode\":420},\"/node_modules/hyperbee/iterators/local.js\":{\"offset\":3073476,\"length\":1170,\"mode\":420},\"/node_modules/hyperbee/iterators/range.js\":{\"offset\":3074646,\"length\":5869,\"mode\":420},\"/node_modules/hyperbee/lib/extension.js\":{\"offset\":3080515,\"length\":3488,\"mode\":420},\"/node_modules/hyperbee/lib/messages.js\":{\"offset\":3084003,\"length\":28162,\"mode\":420},\"/node_modules/hyperbee/package.json\":{\"offset\":3112165,\"length\":1585,\"mode\":420},\"/node_modules/hyperblobs/index.js\":{\"offset\":3113750,\"length\":6097,\"mode\":420},\"/node_modules/hyperblobs/lib/block-map.js\":{\"offset\":3119847,\"length\":3382,\"mode\":420},\"/node_modules/hyperblobs/lib/monitor.js\":{\"offset\":3123229,\"length\":2384,\"mode\":420},\"/node_modules/hyperblobs/lib/streams.js\":{\"offset\":3125613,\"length\":8022,\"mode\":420},\"/node_modules/hyperblobs/package.json\":{\"offset\":3133635,\"length\":1325,\"mode\":420},\"/node_modules/hypercore-crypto/index.js\":{\"offset\":3134960,\"length\":5031,\"mode\":420},\"/node_modules/hypercore-crypto/package.json\":{\"offset\":3139991,\"length\":1007,\"mode\":420},\"/node_modules/hypercore-errors/index.js\":{\"offset\":3140998,\"length\":4896,\"mode\":420},\"/node_modules/hypercore-errors/package.json\":{\"offset\":3145894,\"length\":688,\"mode\":420},\"/node_modules/hypercore-id-encoding/index.js\":{\"offset\":3146582,\"length\":923,\"mode\":420},\"/node_modules/hypercore-id-encoding/package.json\":{\"offset\":3147505,\"length\":799,\"mode\":420},\"/node_modules/hypercore-storage/encoding/external.js\":{\"offset\":3148304,\"length\":264,\"mode\":420},\"/node_modules/hypercore-storage/encoding/spec/hyperschema/index.js\":{\"offset\":3148568,\"length\":16796,\"mode\":420},\"/node_modules/hypercore-storage/index.js\":{\"offset\":3165364,\"length\":33493,\"mode\":420},\"/node_modules/hypercore-storage/lib/block-dependency-stream.js\":{\"offset\":3198857,\"length\":2557,\"mode\":420},\"/node_modules/hypercore-storage/lib/close-error-stream.js\":{\"offset\":3201414,\"length\":276,\"mode\":420},\"/node_modules/hypercore-storage/lib/keys.js\":{\"offset\":3201690,\"length\":8751,\"mode\":420},\"/node_modules/hypercore-storage/lib/streams.js\":{\"offset\":3210441,\"length\":5686,\"mode\":420},\"/node_modules/hypercore-storage/lib/tx.js\":{\"offset\":3216127,\"length\":11683,\"mode\":420},\"/node_modules/hypercore-storage/lib/view.js\":{\"offset\":3227810,\"length\":8379,\"mode\":420},\"/node_modules/hypercore-storage/migrations/0/index.js\":{\"offset\":3236189,\"length\":20125,\"mode\":420},\"/node_modules/hypercore-storage/migrations/0/messages.js\":{\"offset\":3256314,\"length\":26402,\"mode\":420},\"/node_modules/hypercore-storage/migrations/1/index.js\":{\"offset\":3282716,\"length\":1181,\"mode\":420},\"/node_modules/hypercore-storage/package.json\":{\"offset\":3283897,\"length\":1827,\"mode\":420},\"/node_modules/hypercore/index.js\":{\"offset\":3285724,\"length\":40241,\"mode\":420},\"/node_modules/hypercore/lib/audit.js\":{\"offset\":3325965,\"length\":3834,\"mode\":420},\"/node_modules/hypercore/lib/bit-interlude.js\":{\"offset\":3329799,\"length\":4257,\"mode\":420},\"/node_modules/hypercore/lib/bitfield.js\":{\"offset\":3334056,\"length\":12115,\"mode\":420},\"/node_modules/hypercore/lib/caps.js\":{\"offset\":3346171,\"length\":1537,\"mode\":420},\"/node_modules/hypercore/lib/compat.js\":{\"offset\":3347708,\"length\":477,\"mode\":420},\"/node_modules/hypercore/lib/copy-prologue.js\":{\"offset\":3348185,\"length\":5999,\"mode\":420},\"/node_modules/hypercore/lib/core.js\":{\"offset\":3354184,\"length\":28356,\"mode\":420},\"/node_modules/hypercore/lib/default-encryption.js\":{\"offset\":3382540,\"length\":3453,\"mode\":420},\"/node_modules/hypercore/lib/download.js\":{\"offset\":3385993,\"length\":1278,\"mode\":420},\"/node_modules/hypercore/lib/feature-flags.js\":{\"offset\":3387271,\"length\":38,\"mode\":420},\"/node_modules/hypercore/lib/fully-remote-proof.js\":{\"offset\":3387309,\"length\":3470,\"mode\":420},\"/node_modules/hypercore/lib/hotswap-queue.js\":{\"offset\":3390779,\"length\":1498,\"mode\":420},\"/node_modules/hypercore/lib/info.js\":{\"offset\":3392277,\"length\":1517,\"mode\":420},\"/node_modules/hypercore/lib/inspect.js\":{\"offset\":3393794,\"length\":1983,\"mode\":420},\"/node_modules/hypercore/lib/mark-bitfield.js\":{\"offset\":3395777,\"length\":2589,\"mode\":420},\"/node_modules/hypercore/lib/merkle-tree.js\":{\"offset\":3398366,\"length\":34353,\"mode\":420},\"/node_modules/hypercore/lib/messages.js\":{\"offset\":3432719,\"length\":28313,\"mode\":420},\"/node_modules/hypercore/lib/multisig.js\":{\"offset\":3461032,\"length\":2851,\"mode\":420},\"/node_modules/hypercore/lib/mutex.js\":{\"offset\":3463883,\"length\":1028,\"mode\":420},\"/node_modules/hypercore/lib/receiver-queue.js\":{\"offset\":3464911,\"length\":1413,\"mode\":420},\"/node_modules/hypercore/lib/remote-bitfield.js\":{\"offset\":3466324,\"length\":8124,\"mode\":420},\"/node_modules/hypercore/lib/replicator.js\":{\"offset\":3474448,\"length\":89305,\"mode\":420},\"/node_modules/hypercore/lib/session-state.js\":{\"offset\":3563753,\"length\":36297,\"mode\":420},\"/node_modules/hypercore/lib/streams.js\":{\"offset\":3600050,\"length\":3034,\"mode\":420},\"/node_modules/hypercore/lib/verifier.js\":{\"offset\":3603084,\"length\":9926,\"mode\":420},\"/node_modules/hypercore/lib/wants.js\":{\"offset\":3613010,\"length\":7204,\"mode\":420},\"/node_modules/hypercore/package.json\":{\"offset\":3620214,\"length\":2196,\"mode\":420},\"/node_modules/hyperdb/index.js\":{\"offset\":3622410,\"length\":21368,\"mode\":420},\"/node_modules/hyperdb/lib/changes-stream.js\":{\"offset\":3643778,\"length\":327,\"mode\":420},\"/node_modules/hyperdb/lib/definition.js\":{\"offset\":3644105,\"length\":910,\"mode\":420},\"/node_modules/hyperdb/lib/engine/bee.js\":{\"offset\":3645015,\"length\":4520,\"mode\":420},\"/node_modules/hyperdb/lib/engine/bee2.js\":{\"offset\":3649535,\"length\":5083,\"mode\":420},\"/node_modules/hyperdb/lib/engine/rocks.js\":{\"offset\":3654618,\"length\":4370,\"mode\":420},\"/node_modules/hyperdb/lib/sessions.js\":{\"offset\":3658988,\"length\":711,\"mode\":420},\"/node_modules/hyperdb/lib/stream.js\":{\"offset\":3659699,\"length\":6213,\"mode\":420},\"/node_modules/hyperdb/package.json\":{\"offset\":3665912,\"length\":1756,\"mode\":420},\"/node_modules/hyperdb/runtime.js\":{\"offset\":3667668,\"length\":119,\"mode\":420},\"/node_modules/hyperdht-address/index.js\":{\"offset\":3667787,\"length\":357,\"mode\":420},\"/node_modules/hyperdht-address/package.json\":{\"offset\":3668144,\"length\":1046,\"mode\":420},\"/node_modules/hyperdht-address/spec/hyperschema/index.js\":{\"offset\":3669190,\"length\":2106,\"mode\":420},\"/node_modules/hyperdht/index.js\":{\"offset\":3671296,\"length\":16589,\"mode\":420},\"/node_modules/hyperdht/lib/announcer.js\":{\"offset\":3687885,\"length\":7533,\"mode\":420},\"/node_modules/hyperdht/lib/connect.js\":{\"offset\":3695418,\"length\":25203,\"mode\":420},\"/node_modules/hyperdht/lib/connection-pool.js\":{\"offset\":3720621,\"length\":3050,\"mode\":420},\"/node_modules/hyperdht/lib/constants.js\":{\"offset\":3723671,\"length\":1178,\"mode\":420},\"/node_modules/hyperdht/lib/crypto.js\":{\"offset\":3724849,\"length\":632,\"mode\":420},\"/node_modules/hyperdht/lib/encode.js\":{\"offset\":3725481,\"length\":446,\"mode\":420},\"/node_modules/hyperdht/lib/errors.js\":{\"offset\":3725927,\"length\":3713,\"mode\":420},\"/node_modules/hyperdht/lib/holepuncher.js\":{\"offset\":3729640,\"length\":10003,\"mode\":420},\"/node_modules/hyperdht/lib/messages.js\":{\"offset\":3739643,\"length\":12057,\"mode\":420},\"/node_modules/hyperdht/lib/nat.js\":{\"offset\":3751700,\"length\":4714,\"mode\":420},\"/node_modules/hyperdht/lib/noise-wrap.js\":{\"offset\":3756414,\"length\":1669,\"mode\":420},\"/node_modules/hyperdht/lib/persistent.js\":{\"offset\":3758083,\"length\":8361,\"mode\":420},\"/node_modules/hyperdht/lib/raw-stream-set.js\":{\"offset\":3766444,\"length\":1511,\"mode\":420},\"/node_modules/hyperdht/lib/relay-connection.js\":{\"offset\":3767955,\"length\":2062,\"mode\":420},\"/node_modules/hyperdht/lib/router.js\":{\"offset\":3770017,\"length\":6978,\"mode\":420},\"/node_modules/hyperdht/lib/secure-payload.js\":{\"offset\":3776995,\"length\":1491,\"mode\":420},\"/node_modules/hyperdht/lib/semaphore.js\":{\"offset\":3778486,\"length\":1577,\"mode\":420},\"/node_modules/hyperdht/lib/server.js\":{\"offset\":3780063,\"length\":22065,\"mode\":420},\"/node_modules/hyperdht/lib/sleeper.js\":{\"offset\":3802128,\"length\":690,\"mode\":420},\"/node_modules/hyperdht/lib/socket-pool.js\":{\"offset\":3802818,\"length\":4343,\"mode\":420},\"/node_modules/hyperdht/package.json\":{\"offset\":3807161,\"length\":2007,\"mode\":420},\"/node_modules/hyperdispatch/lib/errors.js\":{\"offset\":3809168,\"length\":1055,\"mode\":420},\"/node_modules/hyperdispatch/package.json\":{\"offset\":3810223,\"length\":1622,\"mode\":420},\"/node_modules/hyperdispatch/runtime.cjs\":{\"offset\":3811845,\"length\":199,\"mode\":420},\"/node_modules/hyperdrive/index.js\":{\"offset\":3812044,\"length\":19901,\"mode\":420},\"/node_modules/hyperdrive/lib/download.js\":{\"offset\":3831945,\"length\":3308,\"mode\":420},\"/node_modules/hyperdrive/lib/monitor.js\":{\"offset\":3835253,\"length\":4334,\"mode\":420},\"/node_modules/hyperdrive/package.json\":{\"offset\":3839587,\"length\":1794,\"mode\":420},\"/node_modules/hyperschema/package.json\":{\"offset\":3841381,\"length\":1555,\"mode\":420},\"/node_modules/hyperschema/runtime.cjs\":{\"offset\":3842936,\"length\":54,\"mode\":420},\"/node_modules/hyperswarm/index.js\":{\"offset\":3842990,\"length\":18589,\"mode\":420},\"/node_modules/hyperswarm/lib/bulk-timer.js\":{\"offset\":3861579,\"length\":728,\"mode\":420},\"/node_modules/hyperswarm/lib/connection-set.js\":{\"offset\":3862307,\"length\":823,\"mode\":420},\"/node_modules/hyperswarm/lib/peer-discovery.js\":{\"offset\":3863130,\"length\":9296,\"mode\":420},\"/node_modules/hyperswarm/lib/peer-info.js\":{\"offset\":3872426,\"length\":2688,\"mode\":420},\"/node_modules/hyperswarm/lib/retry-timer.js\":{\"offset\":3875114,\"length\":1889,\"mode\":420},\"/node_modules/hyperswarm/package.json\":{\"offset\":3877003,\"length\":1515,\"mode\":420},\"/node_modules/index-encoder/index.js\":{\"offset\":3878518,\"length\":10596,\"mode\":420},\"/node_modules/index-encoder/package.json\":{\"offset\":3889114,\"length\":928,\"mode\":420},\"/node_modules/is-options/index.js\":{\"offset\":3890042,\"length\":140,\"mode\":420},\"/node_modules/is-options/package.json\":{\"offset\":3890182,\"length\":605,\"mode\":420},\"/node_modules/kademlia-routing-table/index.js\":{\"offset\":3890787,\"length\":4145,\"mode\":420},\"/node_modules/kademlia-routing-table/package.json\":{\"offset\":3894932,\"length\":967,\"mode\":420},\"/node_modules/llm-splitter/dist/get-chunk.js\":{\"offset\":3895899,\"length\":1654,\"mode\":420},\"/node_modules/llm-splitter/dist/index.js\":{\"offset\":3897553,\"length\":126,\"mode\":420},\"/node_modules/llm-splitter/dist/split.js\":{\"offset\":3897679,\"length\":13355,\"mode\":420},\"/node_modules/llm-splitter/package.json\":{\"offset\":3911034,\"length\":1780,\"mode\":420},\"/node_modules/mirror-drive/index.js\":{\"offset\":3912814,\"length\":13006,\"mode\":420},\"/node_modules/mirror-drive/package.json\":{\"offset\":3925820,\"length\":1498,\"mode\":420},\"/node_modules/mutexify/index.js\":{\"offset\":3927318,\"length\":536,\"mode\":420},\"/node_modules/mutexify/package.json\":{\"offset\":3927854,\"length\":679,\"mode\":420},\"/node_modules/mutexify/promise.js\":{\"offset\":3928533,\"length\":324,\"mode\":420},\"/node_modules/nanoassert/index.js\":{\"offset\":3928857,\"length\":438,\"mode\":420},\"/node_modules/nanoassert/package.json\":{\"offset\":3929295,\"length\":647,\"mode\":420},\"/node_modules/nat-sampler/index.js\":{\"offset\":3929942,\"length\":1550,\"mode\":420},\"/node_modules/nat-sampler/package.json\":{\"offset\":3931492,\"length\":608,\"mode\":420},\"/node_modules/noise-curve-ed/index.js\":{\"offset\":3932100,\"length\":1642,\"mode\":420},\"/node_modules/noise-curve-ed/package.json\":{\"offset\":3933742,\"length\":808,\"mode\":420},\"/node_modules/noise-handshake/cipher.js\":{\"offset\":3934550,\"length\":2817,\"mode\":420},\"/node_modules/noise-handshake/dh.js\":{\"offset\":3937367,\"length\":1439,\"mode\":420},\"/node_modules/noise-handshake/hkdf.js\":{\"offset\":3938806,\"length\":1092,\"mode\":420},\"/node_modules/noise-handshake/hmac.js\":{\"offset\":3939898,\"length\":1273,\"mode\":420},\"/node_modules/noise-handshake/noise.js\":{\"offset\":3941171,\"length\":6437,\"mode\":420},\"/node_modules/noise-handshake/package.json\":{\"offset\":3947608,\"length\":638,\"mode\":420},\"/node_modules/noise-handshake/symmetric-state.js\":{\"offset\":3948246,\"length\":2206,\"mode\":420},\"/node_modules/protocol-buffers-encodings/index.js\":{\"offset\":3950452,\"length\":6489,\"mode\":420},\"/node_modules/protocol-buffers-encodings/package.json\":{\"offset\":3956941,\"length\":719,\"mode\":420},\"/node_modules/protomux/index.js\":{\"offset\":3957660,\"length\":19741,\"mode\":420},\"/node_modules/protomux/package.json\":{\"offset\":3977401,\"length\":1059,\"mode\":420},\"/node_modules/queue-tick/package.json\":{\"offset\":3978460,\"length\":669,\"mode\":420},\"/node_modules/queue-tick/process-next-tick.js\":{\"offset\":3979129,\"length\":160,\"mode\":420},\"/node_modules/queue-tick/queue-microtask.js\":{\"offset\":3979289,\"length\":108,\"mode\":420},\"/node_modules/quickbit-native/binding.js\":{\"offset\":3979397,\"length\":90,\"mode\":420},\"/node_modules/quickbit-native/index.js\":{\"offset\":3979487,\"length\":4683,\"mode\":420},\"/node_modules/quickbit-native/package.json\":{\"offset\":3984170,\"length\":1104,\"mode\":420},\"/node_modules/quickbit-universal/fallback.js\":{\"offset\":3985274,\"length\":10204,\"mode\":420},\"/node_modules/quickbit-universal/index.js\":{\"offset\":3995478,\"length\":442,\"mode\":420},\"/node_modules/quickbit-universal/package.json\":{\"offset\":3995920,\"length\":908,\"mode\":420},\"/node_modules/rabin-native/binding.js\":{\"offset\":3996828,\"length\":90,\"mode\":420},\"/node_modules/rabin-native/index.js\":{\"offset\":3996918,\"length\":673,\"mode\":420},\"/node_modules/rabin-native/package.json\":{\"offset\":3997591,\"length\":1423,\"mode\":420},\"/node_modules/rabin-stream/index.js\":{\"offset\":3999014,\"length\":944,\"mode\":420},\"/node_modules/rabin-stream/package.json\":{\"offset\":3999958,\"length\":1202,\"mode\":420},\"/node_modules/rache/index.js\":{\"offset\":4001160,\"length\":2463,\"mode\":420},\"/node_modules/rache/package.json\":{\"offset\":4003623,\"length\":602,\"mode\":420},\"/node_modules/random-array-iterator/index.js\":{\"offset\":4004225,\"length\":1001,\"mode\":420},\"/node_modules/random-array-iterator/package.json\":{\"offset\":4005226,\"length\":700,\"mode\":420},\"/node_modules/ready-resource/index.js\":{\"offset\":4005926,\"length\":1091,\"mode\":420},\"/node_modules/ready-resource/package.json\":{\"offset\":4007017,\"length\":812,\"mode\":420},\"/node_modules/record-cache/index.js\":{\"offset\":4007829,\"length\":3668,\"mode\":420},\"/node_modules/record-cache/package.json\":{\"offset\":4011497,\"length\":612,\"mode\":420},\"/node_modules/refcounter/index.js\":{\"offset\":4012109,\"length\":611,\"mode\":420},\"/node_modules/refcounter/package.json\":{\"offset\":4012720,\"length\":451,\"mode\":420},\"/node_modules/require-addon/lib/bare.js\":{\"offset\":4013171,\"length\":45,\"mode\":420},\"/node_modules/require-addon/package.json\":{\"offset\":4013216,\"length\":1449,\"mode\":420},\"/node_modules/resolve-reject-promise/index.js\":{\"offset\":4014665,\"length\":443,\"mode\":420},\"/node_modules/resolve-reject-promise/package.json\":{\"offset\":4015108,\"length\":581,\"mode\":420},\"/node_modules/resource-on-exit/index.js\":{\"offset\":4015689,\"length\":361,\"mode\":420},\"/node_modules/resource-on-exit/package.json\":{\"offset\":4016050,\"length\":496,\"mode\":420},\"/node_modules/rocksdb-native/binding.js\":{\"offset\":4016546,\"length\":90,\"mode\":420},\"/node_modules/rocksdb-native/index.js\":{\"offset\":4016636,\"length\":5304,\"mode\":420},\"/node_modules/rocksdb-native/lib/batch.js\":{\"offset\":4021940,\"length\":9605,\"mode\":420},\"/node_modules/rocksdb-native/lib/column-family.js\":{\"offset\":4031545,\"length\":2930,\"mode\":420},\"/node_modules/rocksdb-native/lib/constants.js\":{\"offset\":4034475,\"length\":621,\"mode\":420},\"/node_modules/rocksdb-native/lib/filter-policy.js\":{\"offset\":4035096,\"length\":437,\"mode\":420},\"/node_modules/rocksdb-native/lib/iterator.js\":{\"offset\":4035533,\"length\":4311,\"mode\":420},\"/node_modules/rocksdb-native/lib/snapshot.js\":{\"offset\":4039844,\"length\":503,\"mode\":420},\"/node_modules/rocksdb-native/lib/state.js\":{\"offset\":4040347,\"length\":13115,\"mode\":420},\"/node_modules/rocksdb-native/package.json\":{\"offset\":4053462,\"length\":1863,\"mode\":420},\"/node_modules/safety-catch/index.js\":{\"offset\":4055325,\"length\":543,\"mode\":420},\"/node_modules/safety-catch/package.json\":{\"offset\":4055868,\"length\":547,\"mode\":420},\"/node_modules/same-data/index.js\":{\"offset\":4056415,\"length\":1126,\"mode\":420},\"/node_modules/same-data/package.json\":{\"offset\":4057541,\"length\":629,\"mode\":420},\"/node_modules/scope-lock/index.js\":{\"offset\":4058170,\"length\":1821,\"mode\":420},\"/node_modules/scope-lock/package.json\":{\"offset\":4059991,\"length\":611,\"mode\":420},\"/node_modules/shuffled-priority-queue/index.js\":{\"offset\":4060602,\"length\":2607,\"mode\":420},\"/node_modules/shuffled-priority-queue/package.json\":{\"offset\":4063209,\"length\":691,\"mode\":420},\"/node_modules/signal-promise/index.js\":{\"offset\":4063900,\"length\":1252,\"mode\":420},\"/node_modules/signal-promise/package.json\":{\"offset\":4065152,\"length\":503,\"mode\":420},\"/node_modules/signed-varint/index.js\":{\"offset\":4065655,\"length\":435,\"mode\":420},\"/node_modules/signed-varint/package.json\":{\"offset\":4066090,\"length\":523,\"mode\":420},\"/node_modules/simdle-native/binding.js\":{\"offset\":4066613,\"length\":90,\"mode\":420},\"/node_modules/simdle-native/index.js\":{\"offset\":4066703,\"length\":3474,\"mode\":420},\"/node_modules/simdle-native/package.json\":{\"offset\":4070177,\"length\":1115,\"mode\":420},\"/node_modules/simdle-universal/fallback.js\":{\"offset\":4071292,\"length\":5137,\"mode\":420},\"/node_modules/simdle-universal/index.js\":{\"offset\":4076429,\"length\":103,\"mode\":420},\"/node_modules/simdle-universal/package.json\":{\"offset\":4076532,\"length\":879,\"mode\":420},\"/node_modules/simdle-universal/scalar.js\":{\"offset\":4077411,\"length\":469,\"mode\":420},\"/node_modules/sodium-native/binding.js\":{\"offset\":4077880,\"length\":89,\"mode\":420},\"/node_modules/sodium-native/index.js\":{\"offset\":4077969,\"length\":107894,\"mode\":420},\"/node_modules/sodium-native/package.json\":{\"offset\":4185863,\"length\":1478,\"mode\":420},\"/node_modules/sodium-secretstream/index.js\":{\"offset\":4187341,\"length\":2257,\"mode\":420},\"/node_modules/sodium-secretstream/package.json\":{\"offset\":4189598,\"length\":657,\"mode\":420},\"/node_modules/sodium-universal/index.js\":{\"offset\":4190255,\"length\":42,\"mode\":420},\"/node_modules/sodium-universal/package.json\":{\"offset\":4190297,\"length\":1217,\"mode\":420},\"/node_modules/speedometer/index.js\":{\"offset\":4191514,\"length\":906,\"mode\":420},\"/node_modules/speedometer/package.json\":{\"offset\":4192420,\"length\":333,\"mode\":420},\"/node_modules/streamx/index.js\":{\"offset\":4192753,\"length\":34248,\"mode\":420},\"/node_modules/streamx/lib/errors.js\":{\"offset\":4227001,\"length\":1096,\"mode\":420},\"/node_modules/streamx/package.json\":{\"offset\":4228097,\"length\":1225,\"mode\":420},\"/node_modules/sub-encoder/index.js\":{\"offset\":4229322,\"length\":1968,\"mode\":420},\"/node_modules/sub-encoder/package.json\":{\"offset\":4231290,\"length\":908,\"mode\":420},\"/node_modules/tar-stream/constants.js\":{\"offset\":4232198,\"length\":258,\"mode\":420},\"/node_modules/tar-stream/extract.js\":{\"offset\":4232456,\"length\":9595,\"mode\":420},\"/node_modules/tar-stream/headers.js\":{\"offset\":4242051,\"length\":8621,\"mode\":420},\"/node_modules/tar-stream/index.js\":{\"offset\":4250672,\"length\":72,\"mode\":420},\"/node_modules/tar-stream/pack.js\":{\"offset\":4250744,\"length\":6291,\"mode\":420},\"/node_modules/tar-stream/package.json\":{\"offset\":4257035,\"length\":1037,\"mode\":420},\"/node_modules/teex/index.js\":{\"offset\":4258072,\"length\":1107,\"mode\":420},\"/node_modules/teex/package.json\":{\"offset\":4259179,\"length\":608,\"mode\":420},\"/node_modules/text-decoder/index.js\":{\"offset\":4259787,\"length\":1371,\"mode\":420},\"/node_modules/text-decoder/lib/pass-through-decoder.js\":{\"offset\":4261158,\"length\":269,\"mode\":420},\"/node_modules/text-decoder/lib/utf8-decoder.js\":{\"offset\":4261427,\"length\":4429,\"mode\":420},\"/node_modules/text-decoder/package.json\":{\"offset\":4265856,\"length\":990,\"mode\":420},\"/node_modules/time-ordered-set/index.js\":{\"offset\":4266846,\"length\":1444,\"mode\":420},\"/node_modules/time-ordered-set/package.json\":{\"offset\":4268290,\"length\":666,\"mode\":420},\"/node_modules/timeout-refresh/browser.js\":{\"offset\":4268956,\"length\":1098,\"mode\":420},\"/node_modules/timeout-refresh/index.js\":{\"offset\":4270054,\"length\":184,\"mode\":420},\"/node_modules/timeout-refresh/node.js\":{\"offset\":4270238,\"length\":928,\"mode\":420},\"/node_modules/timeout-refresh/package.json\":{\"offset\":4271166,\"length\":619,\"mode\":420},\"/node_modules/tinyld/dist/tinyld.heavy.node.js\":{\"offset\":4271785,\"length\":2088660,\"mode\":420},\"/node_modules/tinyld/package.json\":{\"offset\":6360445,\"length\":6283,\"mode\":420},\"/node_modules/udx-native/binding.js\":{\"offset\":6366728,\"length\":90,\"mode\":420},\"/node_modules/udx-native/lib/ip.js\":{\"offset\":6366818,\"length\":2204,\"mode\":420},\"/node_modules/udx-native/lib/network-interfaces.js\":{\"offset\":6369022,\"length\":1341,\"mode\":420},\"/node_modules/udx-native/lib/socket.js\":{\"offset\":6370363,\"length\":7557,\"mode\":420},\"/node_modules/udx-native/lib/stream.js\":{\"offset\":6377920,\"length\":13050,\"mode\":420},\"/node_modules/udx-native/lib/udx.js\":{\"offset\":6390970,\"length\":2868,\"mode\":420},\"/node_modules/udx-native/package.json\":{\"offset\":6393838,\"length\":1665,\"mode\":420},\"/node_modules/unix-path-resolve/index.js\":{\"offset\":6395503,\"length\":1356,\"mode\":420},\"/node_modules/unix-path-resolve/package.json\":{\"offset\":6396859,\"length\":651,\"mode\":420},\"/node_modules/unordered-set/index.js\":{\"offset\":6397510,\"length\":677,\"mode\":420},\"/node_modules/unordered-set/package.json\":{\"offset\":6398187,\"length\":654,\"mode\":420},\"/node_modules/unslab/index.js\":{\"offset\":6398841,\"length\":913,\"mode\":420},\"/node_modules/unslab/package.json\":{\"offset\":6399754,\"length\":613,\"mode\":420},\"/node_modules/varint/decode.js\":{\"offset\":6400367,\"length\":508,\"mode\":420},\"/node_modules/varint/encode.js\":{\"offset\":6400875,\"length\":452,\"mode\":420},\"/node_modules/varint/index.js\":{\"offset\":6401327,\"length\":134,\"mode\":420},\"/node_modules/varint/length.js\":{\"offset\":6401461,\"length\":471,\"mode\":420},\"/node_modules/varint/package.json\":{\"offset\":6401932,\"length\":511,\"mode\":420},\"/node_modules/which-runtime/index.js\":{\"offset\":6402443,\"length\":1469,\"mode\":420},\"/node_modules/which-runtime/package.json\":{\"offset\":6403912,\"length\":863,\"mode\":420},\"/node_modules/xache/index.js\":{\"offset\":6404775,\"length\":2477,\"mode\":420},\"/node_modules/xache/package.json\":{\"offset\":6407252,\"length\":672,\"mode\":420},\"/node_modules/z32/index.js\":{\"offset\":6407924,\"length\":2654,\"mode\":420},\"/node_modules/z32/package.json\":{\"offset\":6410578,\"length\":701,\"mode\":420},\"/node_modules/zod/index.cjs\":{\"offset\":6411279,\"length\":1486,\"mode\":420},\"/node_modules/zod/index.js\":{\"offset\":6412765,\"length\":121,\"mode\":420},\"/node_modules/zod/package.json\":{\"offset\":6412886,\"length\":3796,\"mode\":420},\"/node_modules/zod/v4/classic/checks.cjs\":{\"offset\":6416682,\"length\":4016,\"mode\":420},\"/node_modules/zod/v4/classic/checks.js\":{\"offset\":6420698,\"length\":663,\"mode\":420},\"/node_modules/zod/v4/classic/coerce.cjs\":{\"offset\":6421361,\"length\":1772,\"mode\":420},\"/node_modules/zod/v4/classic/coerce.js\":{\"offset\":6423133,\"length\":550,\"mode\":420},\"/node_modules/zod/v4/classic/compat.cjs\":{\"offset\":6423683,\"length\":2602,\"mode\":420},\"/node_modules/zod/v4/classic/compat.js\":{\"offset\":6426285,\"length\":1090,\"mode\":420},\"/node_modules/zod/v4/classic/errors.cjs\":{\"offset\":6427375,\"length\":2769,\"mode\":420},\"/node_modules/zod/v4/classic/errors.js\":{\"offset\":6430144,\"length\":1609,\"mode\":420},\"/node_modules/zod/v4/classic/external.cjs\":{\"offset\":6431753,\"length\":5444,\"mode\":420},\"/node_modules/zod/v4/classic/external.js\":{\"offset\":6437197,\"length\":907,\"mode\":420},\"/node_modules/zod/v4/classic/from-json-schema.cjs\":{\"offset\":6438104,\"length\":25363,\"mode\":420},\"/node_modules/zod/v4/classic/from-json-schema.js\":{\"offset\":6463467,\"length\":24161,\"mode\":420},\"/node_modules/zod/v4/classic/iso.cjs\":{\"offset\":6487628,\"length\":2413,\"mode\":420},\"/node_modules/zod/v4/classic/iso.js\":{\"offset\":6490041,\"length\":1151,\"mode\":420},\"/node_modules/zod/v4/classic/package.json\":{\"offset\":6491192,\"length\":127,\"mode\":420},\"/node_modules/zod/v4/classic/parse.cjs\":{\"offset\":6491319,\"length\":2271,\"mode\":420},\"/node_modules/zod/v4/classic/parse.js\":{\"offset\":6493590,\"length\":997,\"mode\":420},\"/node_modules/zod/v4/classic/schemas.cjs\":{\"offset\":6494587,\"length\":56344,\"mode\":420},\"/node_modules/zod/v4/classic/schemas.js\":{\"offset\":6550931,\"length\":51378,\"mode\":420},\"/node_modules/zod/v4/core/api.cjs\":{\"offset\":6602309,\"length\":31685,\"mode\":420},\"/node_modules/zod/v4/core/api.js\":{\"offset\":6633994,\"length\":28054,\"mode\":420},\"/node_modules/zod/v4/core/checks.cjs\":{\"offset\":6662048,\"length\":21559,\"mode\":420},\"/node_modules/zod/v4/core/checks.js\":{\"offset\":6683607,\"length\":20005,\"mode\":420},\"/node_modules/zod/v4/core/core.cjs\":{\"offset\":6703612,\"length\":2850,\"mode\":420},\"/node_modules/zod/v4/core/core.js\":{\"offset\":6706462,\"length\":2578,\"mode\":420},\"/node_modules/zod/v4/core/doc.cjs\":{\"offset\":6709040,\"length\":1199,\"mode\":420},\"/node_modules/zod/v4/core/doc.js\":{\"offset\":6710239,\"length\":1088,\"mode\":420},\"/node_modules/zod/v4/core/errors.cjs\":{\"offset\":6711327,\"length\":7747,\"mode\":420},\"/node_modules/zod/v4/core/errors.js\":{\"offset\":6719074,\"length\":6413,\"mode\":420},\"/node_modules/zod/v4/core/index.cjs\":{\"offset\":6725487,\"length\":2609,\"mode\":420},\"/node_modules/zod/v4/core/index.js\":{\"offset\":6728096,\"length\":594,\"mode\":420},\"/node_modules/zod/v4/core/json-schema-generator.cjs\":{\"offset\":6728690,\"length\":3492,\"mode\":420},\"/node_modules/zod/v4/core/json-schema-generator.js\":{\"offset\":6732182,\"length\":3218,\"mode\":420},\"/node_modules/zod/v4/core/json-schema-processors.cjs\":{\"offset\":6735400,\"length\":24338,\"mode\":420},\"/node_modules/zod/v4/core/json-schema-processors.js\":{\"offset\":6759738,\"length\":20716,\"mode\":420},\"/node_modules/zod/v4/core/json-schema.cjs\":{\"offset\":6780454,\"length\":77,\"mode\":420},\"/node_modules/zod/v4/core/json-schema.js\":{\"offset\":6780531,\"length\":11,\"mode\":420},\"/node_modules/zod/v4/core/package.json\":{\"offset\":6780542,\"length\":127,\"mode\":420},\"/node_modules/zod/v4/core/parse.cjs\":{\"offset\":6780669,\"length\":6481,\"mode\":420},\"/node_modules/zod/v4/core/parse.js\":{\"offset\":6787150,\"length\":4444,\"mode\":420},\"/node_modules/zod/v4/core/regexes.cjs\":{\"offset\":6791594,\"length\":10964,\"mode\":420},\"/node_modules/zod/v4/core/regexes.js\":{\"offset\":6802558,\"length\":9078,\"mode\":420},\"/node_modules/zod/v4/core/registries.cjs\":{\"offset\":6811636,\"length\":1717,\"mode\":420},\"/node_modules/zod/v4/core/registries.js\":{\"offset\":6813353,\"length\":1512,\"mode\":420},\"/node_modules/zod/v4/core/schemas.cjs\":{\"offset\":6814865,\"length\":85629,\"mode\":420},\"/node_modules/zod/v4/core/schemas.js\":{\"offset\":6900494,\"length\":83322,\"mode\":420},\"/node_modules/zod/v4/core/to-json-schema.cjs\":{\"offset\":6983816,\"length\":17442,\"mode\":420},\"/node_modules/zod/v4/core/to-json-schema.js\":{\"offset\":7001258,\"length\":17006,\"mode\":420},\"/node_modules/zod/v4/core/util.cjs\":{\"offset\":7018264,\"length\":23884,\"mode\":420},\"/node_modules/zod/v4/core/util.js\":{\"offset\":7042148,\"length\":22018,\"mode\":420},\"/node_modules/zod/v4/core/versions.cjs\":{\"offset\":7064166,\"length\":168,\"mode\":420},\"/node_modules/zod/v4/core/versions.js\":{\"offset\":7064334,\"length\":70,\"mode\":420},\"/node_modules/zod/v4/locales/ar.cjs\":{\"offset\":7064404,\"length\":6364,\"mode\":420},\"/node_modules/zod/v4/locales/ar.js\":{\"offset\":7070768,\"length\":5188,\"mode\":420},\"/node_modules/zod/v4/locales/az.cjs\":{\"offset\":7075956,\"length\":5687,\"mode\":420},\"/node_modules/zod/v4/locales/az.js\":{\"offset\":7081643,\"length\":4511,\"mode\":420},\"/node_modules/zod/v4/locales/be.cjs\":{\"offset\":7086154,\"length\":7795,\"mode\":420},\"/node_modules/zod/v4/locales/be.js\":{\"offset\":7093949,\"length\":6619,\"mode\":420},\"/node_modules/zod/v4/locales/bg.cjs\":{\"offset\":7100568,\"length\":6961,\"mode\":420},\"/node_modules/zod/v4/locales/bg.js\":{\"offset\":7107529,\"length\":5785,\"mode\":420},\"/node_modules/zod/v4/locales/ca.cjs\":{\"offset\":7113314,\"length\":5886,\"mode\":420},\"/node_modules/zod/v4/locales/ca.js\":{\"offset\":7119200,\"length\":4710,\"mode\":420},\"/node_modules/zod/v4/locales/cs.cjs\":{\"offset\":7123910,\"length\":5948,\"mode\":420},\"/node_modules/zod/v4/locales/cs.js\":{\"offset\":7129858,\"length\":4772,\"mode\":420},\"/node_modules/zod/v4/locales/da.cjs\":{\"offset\":7134630,\"length\":5980,\"mode\":420},\"/node_modules/zod/v4/locales/da.js\":{\"offset\":7140610,\"length\":4804,\"mode\":420},\"/node_modules/zod/v4/locales/de.cjs\":{\"offset\":7145414,\"length\":5764,\"mode\":420},\"/node_modules/zod/v4/locales/de.js\":{\"offset\":7151178,\"length\":4588,\"mode\":420},\"/node_modules/zod/v4/locales/el.cjs\":{\"offset\":7155766,\"length\":6720,\"mode\":420},\"/node_modules/zod/v4/locales/el.js\":{\"offset\":7162486,\"length\":5544,\"mode\":420},\"/node_modules/zod/v4/locales/en.cjs\":{\"offset\":7168030,\"length\":5981,\"mode\":420},\"/node_modules/zod/v4/locales/en.js\":{\"offset\":7174011,\"length\":4805,\"mode\":420},\"/node_modules/zod/v4/locales/eo.cjs\":{\"offset\":7178816,\"length\":5779,\"mode\":420},\"/node_modules/zod/v4/locales/eo.js\":{\"offset\":7184595,\"length\":4603,\"mode\":420},\"/node_modules/zod/v4/locales/es.cjs\":{\"offset\":7189198,\"length\":6615,\"mode\":420},\"/node_modules/zod/v4/locales/es.js\":{\"offset\":7195813,\"length\":5439,\"mode\":420},\"/node_modules/zod/v4/locales/fa.cjs\":{\"offset\":7201252,\"length\":6307,\"mode\":420},\"/node_modules/zod/v4/locales/fa.js\":{\"offset\":7207559,\"length\":5131,\"mode\":420},\"/node_modules/zod/v4/locales/fi.cjs\":{\"offset\":7212690,\"length\":5994,\"mode\":420},\"/node_modules/zod/v4/locales/fi.js\":{\"offset\":7218684,\"length\":4818,\"mode\":420},\"/node_modules/zod/v4/locales/fr-CA.cjs\":{\"offset\":7223502,\"length\":5730,\"mode\":420},\"/node_modules/zod/v4/locales/fr-CA.js\":{\"offset\":7229232,\"length\":4554,\"mode\":420},\"/node_modules/zod/v4/locales/fr.cjs\":{\"offset\":7233786,\"length\":6313,\"mode\":420},\"/node_modules/zod/v4/locales/fr.js\":{\"offset\":7240099,\"length\":5137,\"mode\":420},\"/node_modules/zod/v4/locales/he.cjs\":{\"offset\":7245236,\"length\":13181,\"mode\":420},\"/node_modules/zod/v4/locales/he.js\":{\"offset\":7258417,\"length\":12005,\"mode\":420},\"/node_modules/zod/v4/locales/hr.cjs\":{\"offset\":7270422,\"length\":6228,\"mode\":420},\"/node_modules/zod/v4/locales/hr.js\":{\"offset\":7276650,\"length\":5052,\"mode\":420},\"/node_modules/zod/v4/locales/hu.cjs\":{\"offset\":7281702,\"length\":5872,\"mode\":420},\"/node_modules/zod/v4/locales/hu.js\":{\"offset\":7287574,\"length\":4696,\"mode\":420},\"/node_modules/zod/v4/locales/hy.cjs\":{\"offset\":7292270,\"length\":7566,\"mode\":420},\"/node_modules/zod/v4/locales/hy.js\":{\"offset\":7299836,\"length\":6390,\"mode\":420},\"/node_modules/zod/v4/locales/id.cjs\":{\"offset\":7306226,\"length\":5753,\"mode\":420},\"/node_modules/zod/v4/locales/id.js\":{\"offset\":7311979,\"length\":4577,\"mode\":420},\"/node_modules/zod/v4/locales/index.cjs\":{\"offset\":7316556,\"length\":9168,\"mode\":420},\"/node_modules/zod/v4/locales/index.js\":{\"offset\":7325724,\"length\":2149,\"mode\":420},\"/node_modules/zod/v4/locales/is.cjs\":{\"offset\":7327873,\"length\":5811,\"mode\":420},\"/node_modules/zod/v4/locales/is.js\":{\"offset\":7333684,\"length\":4635,\"mode\":420},\"/node_modules/zod/v4/locales/it.cjs\":{\"offset\":7338319,\"length\":5758,\"mode\":420},\"/node_modules/zod/v4/locales/it.js\":{\"offset\":7344077,\"length\":4582,\"mode\":420},\"/node_modules/zod/v4/locales/ja.cjs\":{\"offset\":7348659,\"length\":6027,\"mode\":420},\"/node_modules/zod/v4/locales/ja.js\":{\"offset\":7354686,\"length\":4851,\"mode\":420},\"/node_modules/zod/v4/locales/ka.cjs\":{\"offset\":7359537,\"length\":7378,\"mode\":420},\"/node_modules/zod/v4/locales/ka.js\":{\"offset\":7366915,\"length\":6202,\"mode\":420},\"/node_modules/zod/v4/locales/kh.cjs\":{\"offset\":7373117,\"length\":430,\"mode\":420},\"/node_modules/zod/v4/locales/kh.js\":{\"offset\":7373547,\"length\":111,\"mode\":420},\"/node_modules/zod/v4/locales/km.cjs\":{\"offset\":7373658,\"length\":7418,\"mode\":420},\"/node_modules/zod/v4/locales/km.js\":{\"offset\":7381076,\"length\":6242,\"mode\":420},\"/node_modules/zod/v4/locales/ko.cjs\":{\"offset\":7387318,\"length\":6105,\"mode\":420},\"/node_modules/zod/v4/locales/ko.js\":{\"offset\":7393423,\"length\":4929,\"mode\":420},\"/node_modules/zod/v4/locales/lt.cjs\":{\"offset\":7398352,\"length\":9258,\"mode\":420},\"/node_modules/zod/v4/locales/lt.js\":{\"offset\":7407610,\"length\":8082,\"mode\":420},\"/node_modules/zod/v4/locales/mk.cjs\":{\"offset\":7415692,\"length\":6333,\"mode\":420},\"/node_modules/zod/v4/locales/mk.js\":{\"offset\":7422025,\"length\":5157,\"mode\":420},\"/node_modules/zod/v4/locales/ms.cjs\":{\"offset\":7427182,\"length\":5667,\"mode\":420},\"/node_modules/zod/v4/locales/ms.js\":{\"offset\":7432849,\"length\":4491,\"mode\":420},\"/node_modules/zod/v4/locales/nl.cjs\":{\"offset\":7437340,\"length\":5938,\"mode\":420},\"/node_modules/zod/v4/locales/nl.js\":{\"offset\":7443278,\"length\":4762,\"mode\":420},\"/node_modules/zod/v4/locales/no.cjs\":{\"offset\":7448040,\"length\":5682,\"mode\":420},\"/node_modules/zod/v4/locales/no.js\":{\"offset\":7453722,\"length\":4506,\"mode\":420},\"/node_modules/zod/v4/locales/ota.cjs\":{\"offset\":7458228,\"length\":5701,\"mode\":420},\"/node_modules/zod/v4/locales/ota.js\":{\"offset\":7463929,\"length\":4525,\"mode\":420},\"/node_modules/zod/v4/locales/package.json\":{\"offset\":7468454,\"length\":127,\"mode\":420},\"/node_modules/zod/v4/locales/pl.cjs\":{\"offset\":7468581,\"length\":6142,\"mode\":420},\"/node_modules/zod/v4/locales/pl.js\":{\"offset\":7474723,\"length\":4966,\"mode\":420},\"/node_modules/zod/v4/locales/ps.cjs\":{\"offset\":7479689,\"length\":6085,\"mode\":420},\"/node_modules/zod/v4/locales/ps.js\":{\"offset\":7485774,\"length\":4909,\"mode\":420},\"/node_modules/zod/v4/locales/pt.cjs\":{\"offset\":7490683,\"length\":5744,\"mode\":420},\"/node_modules/zod/v4/locales/pt.js\":{\"offset\":7496427,\"length\":4568,\"mode\":420},\"/node_modules/zod/v4/locales/ro.cjs\":{\"offset\":7500995,\"length\":5950,\"mode\":420},\"/node_modules/zod/v4/locales/ro.js\":{\"offset\":7506945,\"length\":4774,\"mode\":420},\"/node_modules/zod/v4/locales/ru.cjs\":{\"offset\":7511719,\"length\":7890,\"mode\":420},\"/node_modules/zod/v4/locales/ru.js\":{\"offset\":7519609,\"length\":6714,\"mode\":420},\"/node_modules/zod/v4/locales/sl.cjs\":{\"offset\":7526323,\"length\":5743,\"mode\":420},\"/node_modules/zod/v4/locales/sl.js\":{\"offset\":7532066,\"length\":4567,\"mode\":420},\"/node_modules/zod/v4/locales/sv.cjs\":{\"offset\":7536633,\"length\":5839,\"mode\":420},\"/node_modules/zod/v4/locales/sv.js\":{\"offset\":7542472,\"length\":4663,\"mode\":420},\"/node_modules/zod/v4/locales/ta.cjs\":{\"offset\":7547135,\"length\":7545,\"mode\":420},\"/node_modules/zod/v4/locales/ta.js\":{\"offset\":7554680,\"length\":6369,\"mode\":420},\"/node_modules/zod/v4/locales/th.cjs\":{\"offset\":7561049,\"length\":7466,\"mode\":420},\"/node_modules/zod/v4/locales/th.js\":{\"offset\":7568515,\"length\":6290,\"mode\":420},\"/node_modules/zod/v4/locales/tr.cjs\":{\"offset\":7574805,\"length\":5630,\"mode\":420},\"/node_modules/zod/v4/locales/tr.js\":{\"offset\":7580435,\"length\":4454,\"mode\":420},\"/node_modules/zod/v4/locales/ua.cjs\":{\"offset\":7584889,\"length\":430,\"mode\":420},\"/node_modules/zod/v4/locales/ua.js\":{\"offset\":7585319,\"length\":111,\"mode\":420},\"/node_modules/zod/v4/locales/uk.cjs\":{\"offset\":7585430,\"length\":6606,\"mode\":420},\"/node_modules/zod/v4/locales/uk.js\":{\"offset\":7592036,\"length\":5430,\"mode\":420},\"/node_modules/zod/v4/locales/ur.cjs\":{\"offset\":7597466,\"length\":6447,\"mode\":420},\"/node_modules/zod/v4/locales/ur.js\":{\"offset\":7603913,\"length\":5271,\"mode\":420},\"/node_modules/zod/v4/locales/uz.cjs\":{\"offset\":7609184,\"length\":5915,\"mode\":420},\"/node_modules/zod/v4/locales/uz.js\":{\"offset\":7615099,\"length\":4739,\"mode\":420},\"/node_modules/zod/v4/locales/vi.cjs\":{\"offset\":7619838,\"length\":5948,\"mode\":420},\"/node_modules/zod/v4/locales/vi.js\":{\"offset\":7625786,\"length\":4772,\"mode\":420},\"/node_modules/zod/v4/locales/yo.cjs\":{\"offset\":7630558,\"length\":5841,\"mode\":420},\"/node_modules/zod/v4/locales/yo.js\":{\"offset\":7636399,\"length\":4665,\"mode\":420},\"/node_modules/zod/v4/locales/zh-CN.cjs\":{\"offset\":7641064,\"length\":5628,\"mode\":420},\"/node_modules/zod/v4/locales/zh-CN.js\":{\"offset\":7646692,\"length\":4452,\"mode\":420},\"/node_modules/zod/v4/locales/zh-TW.cjs\":{\"offset\":7651144,\"length\":5674,\"mode\":420},\"/node_modules/zod/v4/locales/zh-TW.js\":{\"offset\":7656818,\"length\":4498,\"mode\":420},\"/package.json\":{\"offset\":7661316,\"length\":13697,\"mode\":420},\"/qvac/worker.entry.mjs\":{\"offset\":7675013,\"length\":942,\"mode\":420}}}\nconst { Pull, Push, HEADERBYTES, KEYBYTES, ABYTES } = require('sodium-secretstream')\nconst sodium = require('sodium-universal')\nconst crypto = require('hypercore-crypto')\nconst { Duplex, Writable, getStreamError } = require('streamx')\nconst b4a = require('b4a')\nconst Timeout = require('timeout-refresh')\nconst unslab = require('unslab')\nconst Bridge = require('./lib/bridge')\nconst Handshake = require('./lib/handshake')\n\nconst IDHEADERBYTES = HEADERBYTES + 32\nconst [NS_INITIATOR, NS_RESPONDER, NS_SEND] = crypto.namespace('hyperswarm/secret-stream', 3)\nconst MAX_ATOMIC_WRITE = 256 * 256 * 256 - 1\n\nmodule.exports = class NoiseSecretStream extends Duplex {\n constructor(isInitiator, rawStream, opts = {}) {\n super({ mapWritable: toBuffer })\n\n if (typeof isInitiator !== 'boolean') {\n throw new Error('isInitiator should be a boolean')\n }\n\n this.noiseStream = this\n this.isInitiator = isInitiator\n this.rawStream = null\n\n this.publicKey = opts.publicKey || null\n this.remotePublicKey = opts.remotePublicKey || null\n this.handshakeHash = null\n this.connected = false\n this.keepAlive = opts.keepAlive || 0\n this.timeout = 0\n this.enableSend = opts.enableSend !== false\n\n // pointer for upstream to set data here if they want\n this.userData = null\n\n let openedDone = null\n this.opened = new Promise((resolve) => {\n openedDone = resolve\n })\n\n this.rawBytesWritten = 0\n this.rawBytesRead = 0\n\n // metadata used by 'hyperdht'\n this.relay = null\n this.puncher = null\n\n // unwrapped raw stream\n this._rawStream = null\n\n // handshake state\n this._handshake = null\n this._handshakePattern = opts.pattern || null\n this._handshakeDone = null\n\n // message parsing state\n this._state = 0\n this._len = 0\n this._tmp = 1\n this._message = null\n\n this._openedDone = openedDone\n this._startDone = null\n this._drainDone = null\n this._outgoingPlain = null\n this._outgoingWrapped = null\n this._utp = null\n this._setup = true\n this._ended = 2\n this._encrypt = null\n this._decrypt = null\n this._timeoutTimer = null\n this._keepAliveTimer = null\n this._sendState = null\n\n if (opts.autoStart !== false) this.start(rawStream, opts)\n\n // wiggle it to trigger open immediately (TODO add streamx option for this)\n this.resume()\n this.pause()\n }\n\n static keyPair(seed) {\n return Handshake.keyPair(seed)\n }\n\n static id(handshakeHash, isInitiator, id) {\n return streamId(handshakeHash, isInitiator, id)\n }\n\n setTimeout(ms) {\n if (!ms) ms = 0\n\n this._clearTimeout()\n this.timeout = ms\n\n if (!ms || this.rawStream === null) return\n\n this._timeoutTimer = Timeout.once(ms, destroyTimeout, this)\n this._timeoutTimer.unref()\n }\n\n setKeepAlive(ms) {\n if (!ms) ms = 0\n\n this._clearKeepAlive()\n\n this.keepAlive = ms\n\n if (!ms || this.rawStream === null) return\n\n this._keepAliveTimer = Timeout.on(ms, sendKeepAlive, this)\n this._keepAliveTimer.unref()\n }\n\n sendKeepAlive() {\n const empty = this.alloc(0)\n this.write(empty)\n }\n\n start(rawStream, opts = {}) {\n if (rawStream) {\n this.rawStream = rawStream\n this._rawStream = rawStream\n if (typeof this.rawStream.setContentSize === 'function') {\n this._utp = rawStream\n }\n } else {\n this.rawStream = new Bridge(this)\n this._rawStream = this.rawStream.reverse\n }\n\n this.rawStream.on('error', this._onrawerror.bind(this))\n this.rawStream.on('close', this._onrawclose.bind(this))\n\n this._startHandshake(opts.handshake, opts.keyPair || null)\n this._continueOpen(null)\n\n if (this.destroying) return\n\n if (opts.data) this._onrawdata(opts.data)\n if (opts.ended) this._onrawend()\n\n if (this.keepAlive > 0 && this._keepAliveTimer === null) {\n this.setKeepAlive(this.keepAlive)\n }\n\n if (this.timeout > 0 && this._timeoutTimer === null) {\n this.setTimeout(this.timeout)\n }\n }\n\n async flush() {\n if ((await this.opened) === false) return false\n if ((await Writable.drained(this)) === false) return false\n if (this.destroying) return false\n\n if (this.rawStream !== null && this.rawStream.flush) {\n return await this.rawStream.flush()\n }\n\n return true\n }\n\n _continueOpen(err) {\n if (err) this.destroy(err)\n if (this._startDone === null) return\n const done = this._startDone\n this._startDone = null\n this._open(done)\n }\n\n _onkeypairpromise(p) {\n const self = this\n const cont = this._continueOpen.bind(this)\n\n p.then(onkeypair, cont)\n\n function onkeypair(kp) {\n self._onkeypair(kp)\n cont(null)\n }\n }\n\n _onkeypair(keyPair) {\n const pattern = this._handshakePattern || 'XX'\n const remotePublicKey = this.remotePublicKey\n\n this._handshake = new Handshake(this.isInitiator, keyPair, remotePublicKey, pattern)\n this.publicKey = this._handshake.keyPair.publicKey\n }\n\n _startHandshake(handshake, keyPair) {\n if (handshake) {\n const { tx, rx, hash, publicKey, remotePublicKey } = handshake\n this._setupSecretStream(tx, rx, hash, publicKey, remotePublicKey)\n return\n }\n\n if (!keyPair) keyPair = Handshake.keyPair()\n\n if (typeof keyPair.then === 'function') {\n this._onkeypairpromise(keyPair)\n } else {\n this._onkeypair(keyPair)\n }\n }\n\n _onrawerror(err) {\n this.destroy(err)\n }\n\n _onrawclose() {\n if (this._ended !== 0) this.destroy()\n }\n\n _onrawdata(data) {\n let offset = 0\n\n if (this._timeoutTimer !== null) {\n this._timeoutTimer.refresh()\n }\n\n do {\n switch (this._state) {\n case 0: {\n while (this._tmp !== 0x1000000 && offset < data.byteLength) {\n const v = data[offset++]\n this._len += this._tmp * v\n this._tmp *= 256\n }\n\n if (this._tmp === 0x1000000) {\n this._tmp = 0\n this._state = 1\n const unprocessed = data.byteLength - offset\n if (unprocessed < this._len && this._utp !== null)\n this._utp.setContentSize(this._len - unprocessed)\n }\n\n break\n }\n\n case 1: {\n const missing = this._len - this._tmp\n const end = missing + offset\n\n if (this._message === null && end <= data.byteLength) {\n this._message = data.subarray(offset, end)\n offset += missing\n this._incoming()\n break\n }\n\n const unprocessed = data.byteLength - offset\n\n if (this._message === null) {\n this._message = b4a.allocUnsafe(this._len)\n }\n\n b4a.copy(data, this._message, this._tmp, offset)\n this._tmp += unprocessed\n\n if (end <= data.byteLength) {\n offset += missing\n this._incoming()\n } else {\n offset += unprocessed\n }\n\n break\n }\n }\n } while (offset < data.byteLength && !this.destroying)\n }\n\n _onrawend() {\n this._ended--\n this.push(null)\n }\n\n _onrawdrain() {\n const drain = this._drainDone\n if (drain === null) return\n this._drainDone = null\n drain()\n }\n\n _read(cb) {\n this.rawStream.resume()\n cb(null)\n }\n\n _incoming() {\n const message = this._message\n\n this._state = 0\n this._len = 0\n this._tmp = 1\n this._message = null\n\n if (this._setup === true) {\n if (this._handshake) {\n this._onhandshakert(this._handshake.recv(message))\n } else {\n if (message.byteLength !== IDHEADERBYTES) {\n this.destroy(new Error('Invalid header message received'))\n return\n }\n\n const remoteId = message.subarray(0, 32)\n const expectedId = streamId(this.handshakeHash, !this.isInitiator)\n const header = message.subarray(32)\n\n if (!b4a.equals(expectedId, remoteId)) {\n this.destroy(new Error('Invalid header received'))\n return\n }\n\n this._decrypt.init(header)\n this._setup = false // setup is now done\n }\n return\n }\n\n if (message.byteLength < ABYTES) {\n this.destroy(new Error('Invalid message received'))\n return\n }\n\n this.rawBytesRead += message.byteLength\n\n const plain = message.subarray(1, message.byteLength - ABYTES + 1)\n\n try {\n this._decrypt.next(message, plain)\n } catch (err) {\n this.destroy(err)\n return\n }\n\n // If keep alive is selective, eat the empty buffers (ie assume the other side has it enabled also)\n if (plain.byteLength === 0 && this.keepAlive !== 0) return\n\n if (this.push(plain) === false) {\n this.rawStream.pause()\n }\n }\n\n _onhandshakert(h) {\n if (this._handshakeDone === null) return\n\n if (h !== null) {\n if (h.data) this._rawStream.write(h.data)\n if (!h.tx) return\n }\n\n const done = this._handshakeDone\n const publicKey = this._handshake.keyPair.publicKey\n\n this._handshakeDone = null\n this._handshake = null\n\n if (h === null) return done(new Error('Noise handshake failed'))\n\n this._setupSecretStream(h.tx, h.rx, h.hash, publicKey, h.remotePublicKey)\n this._resolveOpened(true)\n done(null)\n }\n\n _setupSecretStream(tx, rx, handshakeHash, publicKey, remotePublicKey) {\n const buf = b4a.allocUnsafeSlow(3 + IDHEADERBYTES)\n writeUint24le(IDHEADERBYTES, buf)\n\n this._encrypt = new Push(unslab(tx.subarray(0, KEYBYTES)), undefined, buf.subarray(3 + 32))\n this._decrypt = new Pull(unslab(rx.subarray(0, KEYBYTES)))\n\n this.publicKey = publicKey\n this.remotePublicKey = remotePublicKey\n this.handshakeHash = handshakeHash\n\n const id = buf.subarray(3, 3 + 32)\n streamId(handshakeHash, this.isInitiator, id)\n\n // initialize secretbox state for unordered messages\n this._setupSecretSend(handshakeHash)\n\n this.emit('handshake')\n // if rawStream is a bridge, also emit it there\n if (this.rawStream !== this._rawStream) this.rawStream.emit('handshake')\n\n if (this.destroying) return\n\n this._rawStream.write(buf)\n }\n\n _setupSecretSend(handshakeHash) {\n this._sendState = b4a.allocUnsafeSlow(32 + 32 + 8 + 8)\n const encrypt = this._sendState.subarray(0, 32) // secrets\n const decrypt = this._sendState.subarray(32, 64)\n const counter = this._sendState.subarray(64, 72) // nonce\n const initial = this._sendState.subarray(72)\n\n const inputs = this.isInitiator\n ? [\n [NS_INITIATOR, NS_SEND],\n [NS_RESPONDER, NS_SEND]\n ]\n : [\n [NS_RESPONDER, NS_SEND],\n [NS_INITIATOR, NS_SEND]\n ]\n\n sodium.crypto_generichash_batch(encrypt, inputs[0], handshakeHash)\n sodium.crypto_generichash_batch(decrypt, inputs[1], handshakeHash)\n\n sodium.randombytes_buf(initial)\n counter.set(initial)\n }\n\n _open(cb) {\n // no autostart or no handshake yet\n if (this._rawStream === null || (this._handshake === null && this._encrypt === null)) {\n this._startDone = cb\n return\n }\n\n this._rawStream.on('data', this._onrawdata.bind(this))\n this._rawStream.on('end', this._onrawend.bind(this))\n this._rawStream.on('drain', this._onrawdrain.bind(this))\n\n if (this.enableSend) this._rawStream.on('message', this._onmessage.bind(this))\n\n if (this._encrypt !== null) {\n this._resolveOpened(true)\n return cb(null)\n }\n\n this._handshakeDone = cb\n\n if (this.isInitiator) this._onhandshakert(this._handshake.send())\n }\n\n _predestroy() {\n if (this.rawStream) {\n const error = getStreamError(this)\n this.rawStream.destroy(error)\n }\n\n if (this._startDone !== null) {\n const done = this._startDone\n this._startDone = null\n done(new Error('Stream destroyed'))\n }\n\n if (this._handshakeDone !== null) {\n const done = this._handshakeDone\n this._handshakeDone = null\n done(new Error('Stream destroyed'))\n }\n\n if (this._drainDone !== null) {\n const done = this._drainDone\n this._drainDone = null\n done(new Error('Stream destroyed'))\n }\n }\n\n _write(data, cb) {\n let wrapped = this._outgoingWrapped\n\n if (data !== this._outgoingPlain) {\n wrapped = b4a.allocUnsafe(data.byteLength + 3 + ABYTES)\n wrapped.set(data, 4)\n } else {\n this._outgoingWrapped = this._outgoingPlain = null\n }\n\n if (wrapped.byteLength - 3 > MAX_ATOMIC_WRITE) {\n return cb(\n new Error(\n 'Message is too large for an atomic write. Max size is ' + MAX_ATOMIC_WRITE + ' bytes.'\n )\n )\n }\n this.rawBytesWritten += wrapped.byteLength\n\n writeUint24le(wrapped.byteLength - 3, wrapped)\n // offset 4 so we can do it in-place\n this._encrypt.next(wrapped.subarray(4, 4 + data.byteLength), wrapped.subarray(3))\n\n if (this._keepAliveTimer !== null) this._keepAliveTimer.refresh()\n\n if (this._rawStream.write(wrapped) === false) {\n this._drainDone = cb\n } else {\n cb(null)\n }\n }\n\n _final(cb) {\n this._clearKeepAlive()\n this._ended--\n this._rawStream.end()\n cb(null)\n }\n\n _resolveOpened(val) {\n if (this._openedDone === null) return\n const opened = this._openedDone\n this._openedDone = null\n opened(val)\n if (!val) return\n this.connected = true\n this.emit('connect')\n }\n\n _clearTimeout() {\n if (this._timeoutTimer === null) return\n this._timeoutTimer.destroy()\n this._timeoutTimer = null\n this.timeout = 0\n }\n\n _clearKeepAlive() {\n if (this._keepAliveTimer === null) return\n this._keepAliveTimer.destroy()\n this._keepAliveTimer = null\n this.keepAlive = 0\n }\n\n _destroy(cb) {\n this._clearKeepAlive()\n this._clearTimeout()\n this._resolveOpened(false)\n cb(null)\n }\n\n _boxMessage(buffer) {\n const MB = sodium.crypto_secretbox_MACBYTES // 16\n const NB = sodium.crypto_secretbox_NONCEBYTES // 24\n\n const counter = this._sendState.subarray(64, 72)\n sodium.sodium_increment(counter)\n if (b4a.equals(counter, this._sendState.subarray(72))) {\n this.destroy(new Error('udp send nonce exchausted'))\n return\n }\n\n const secret = this._sendState.subarray(0, 32)\n const envelope = b4a.allocUnsafe(8 + MB + buffer.byteLength)\n const nonce = envelope.subarray(0, NB)\n const ciphertext = envelope.subarray(8)\n\n b4a.fill(nonce, 0) // pad suffix\n nonce.set(counter)\n\n sodium.crypto_secretbox_easy(ciphertext, buffer, nonce, secret)\n return envelope\n }\n\n send(buffer) {\n if (!this._sendState) return\n if (!this.rawStream?.send) return // udx-stream expected\n\n const message = this._boxMessage(buffer)\n return this.rawStream.send(message)\n }\n\n trySend(buffer) {\n if (!this._sendState) return\n if (!this.rawStream?.trySend) return // udx-stream expected\n\n const message = this._boxMessage(buffer)\n this.rawStream.trySend(message)\n }\n\n _onmessage(buffer) {\n if (!this._sendState) return // messages before handshake are dropped\n\n const MB = sodium.crypto_secretbox_MACBYTES // 16\n const NB = sodium.crypto_secretbox_NONCEBYTES // 24\n\n if (buffer.byteLength < NB) return // Invalid message\n\n const nonce = b4a.allocUnsafe(NB)\n b4a.fill(nonce, 0)\n nonce.set(buffer.subarray(0, 8))\n\n const secret = this._sendState.subarray(32, 64)\n const ciphertext = buffer.subarray(8)\n const plain = buffer.subarray(8, buffer.byteLength - MB)\n\n if (ciphertext.byteLength < MB) return // invalid message\n\n const success = sodium.crypto_secretbox_open_easy(plain, ciphertext, nonce, secret)\n\n if (success) this.emit('message', plain)\n }\n\n alloc(len) {\n const buf = b4a.allocUnsafe(len + 3 + ABYTES)\n this._outgoingWrapped = buf\n this._outgoingPlain = buf.subarray(4, buf.byteLength - ABYTES + 1)\n return this._outgoingPlain\n }\n\n toJSON() {\n return {\n isInitiator: this.isInitiator,\n publicKey: this.publicKey && b4a.toString(this.publicKey, 'hex'),\n remotePublicKey: this.remotePublicKey && b4a.toString(this.remotePublicKey, 'hex'),\n connected: this.connected,\n destroying: this.destroying,\n destroyed: this.destroyed,\n rawStream: this.rawStream && this.rawStream.toJSON ? this.rawStream.toJSON() : null\n }\n }\n}\n\nfunction writeUint24le(n, buf) {\n buf[0] = n & 255\n buf[1] = (n >>> 8) & 255\n buf[2] = (n >>> 16) & 255\n}\n\nfunction streamId(handshakeHash, isInitiator, out = b4a.allocUnsafe(32)) {\n sodium.crypto_generichash(out, isInitiator ? NS_INITIATOR : NS_RESPONDER, handshakeHash)\n return out\n}\n\nfunction toBuffer(data) {\n return typeof data === 'string' ? b4a.from(data) : data\n}\n\nfunction destroyTimeout() {\n this.destroy(new Error('Stream timed out'))\n}\n\nfunction sendKeepAlive() {\n const empty = this.alloc(0)\n this.write(empty)\n}\nconst { Duplex, Writable } = require('streamx')\n\nclass ReversePassThrough extends Duplex {\n constructor(s) {\n super()\n this._stream = s\n this._ondrain = null\n }\n\n _write(data, cb) {\n if (this._stream.push(data) === false) {\n this._stream._ondrain = cb\n } else {\n cb(null)\n }\n }\n\n _final(cb) {\n this._stream.push(null)\n cb(null)\n }\n\n _read(cb) {\n const ondrain = this._ondrain\n this._ondrain = null\n if (ondrain) ondrain()\n cb(null)\n }\n}\n\nmodule.exports = class Bridge extends Duplex {\n constructor(noiseStream) {\n super()\n\n this.noiseStream = noiseStream\n\n this._ondrain = null\n this.reverse = new ReversePassThrough(this)\n }\n\n get publicKey() {\n return this.noiseStream.publicKey\n }\n\n get remotePublicKey() {\n return this.noiseStream.remotePublicKey\n }\n\n get handshakeHash() {\n return this.noiseStream.handshakeHash\n }\n\n flush() {\n return Writable.drained(this)\n }\n\n _read(cb) {\n const ondrain = this._ondrain\n this._ondrain = null\n if (ondrain) ondrain()\n cb(null)\n }\n\n _write(data, cb) {\n if (this.reverse.push(data) === false) {\n this.reverse._ondrain = cb\n } else {\n cb(null)\n }\n }\n\n _final(cb) {\n this.reverse.push(null)\n cb(null)\n }\n}\nconst sodium = require('sodium-universal')\nconst curve = require('noise-curve-ed')\nconst Noise = require('noise-handshake')\nconst b4a = require('b4a')\n\nconst EMPTY = b4a.alloc(0)\n\nmodule.exports = class Handshake {\n constructor(isInitiator, keyPair, remotePublicKey, pattern) {\n this.isInitiator = isInitiator\n this.keyPair = keyPair\n this.noise = new Noise(pattern, isInitiator, keyPair, { curve })\n this.noise.initialise(EMPTY, remotePublicKey)\n this.destroyed = false\n }\n\n static keyPair(seed) {\n const publicKey = b4a.alloc(32)\n const secretKey = b4a.alloc(64)\n if (seed) sodium.crypto_sign_seed_keypair(publicKey, secretKey, seed)\n else sodium.crypto_sign_keypair(publicKey, secretKey)\n return { publicKey, secretKey }\n }\n\n recv(data) {\n try {\n this.noise.recv(data)\n if (this.noise.complete) return this._return(null)\n return this.send()\n } catch {\n this.destroy()\n return null\n }\n }\n\n // note that the data returned here is framed so we don't have to do an extra copy\n // when sending it...\n send() {\n try {\n const data = this.noise.send()\n const wrap = b4a.allocUnsafe(data.byteLength + 3)\n\n writeUint24le(data.byteLength, wrap)\n wrap.set(data, 3)\n\n return this._return(wrap)\n } catch {\n this.destroy()\n return null\n }\n }\n\n destroy() {\n if (this.destroyed) return\n this.destroyed = true\n }\n\n _return(data) {\n const tx = this.noise.complete ? b4a.toBuffer(this.noise.tx) : null\n const rx = this.noise.complete ? b4a.toBuffer(this.noise.rx) : null\n const hash = this.noise.complete ? b4a.toBuffer(this.noise.hash) : null\n const remotePublicKey = this.noise.complete ? b4a.toBuffer(this.noise.rs) : null\n\n return {\n data,\n remotePublicKey,\n hash,\n tx,\n rx\n }\n }\n}\n\nfunction writeUint24le(n, buf) {\n buf[0] = n & 255\n buf[1] = (n >>> 8) & 255\n buf[2] = (n >>> 16) & 255\n}\n{\n \"name\": \"@hyperswarm/secret-stream\",\n \"version\": \"6.9.1\",\n \"description\": \"Secret stream backed by Noise and libsodium's secretstream\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"lib/**.js\"\n ],\n \"dependencies\": {\n \"b4a\": \"^1.1.0\",\n \"hypercore-crypto\": \"^3.3.1\",\n \"noise-curve-ed\": \"^2.0.1\",\n \"noise-handshake\": \"^4.0.0\",\n \"sodium-secretstream\": \"^1.1.0\",\n \"sodium-universal\": \"^5.0.0\",\n \"streamx\": \"^2.14.0\",\n \"timeout-refresh\": \"^2.0.0\",\n \"unslab\": \"^1.3.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"udx-native\": \"^1.13.2\"\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check .\",\n \"test\": \"brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/hyperswarm-secret-stream.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hyperswarm-secret-stream/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hyperswarm-secret-stream\"\n}\n'use strict'\n\n/**\n * Audio formats that require decoding before processing\n */\nconst FORMATS_NEEDING_DECODE = [\n '.mp3',\n '.m4a',\n '.ogg',\n '.flac',\n '.aac',\n '.wav'\n]\n\n/**\n * All supported audio formats (including raw)\n */\nconst SUPPORTED_AUDIO_FORMATS = [\n '.mp3',\n '.m4a',\n '.ogg',\n '.wav',\n '.flac',\n '.aac',\n '.raw'\n]\n\nmodule.exports = {\n FORMATS_NEEDING_DECODE,\n SUPPORTED_AUDIO_FORMATS\n}\n{\n \"name\": \"@qvac/decoder-audio\",\n \"version\": \"0.5.0\",\n \"description\": \"\",\n \"license\": \"Apache-2.0\",\n \"author\": \"Tether\",\n \"type\": \"commonjs\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test:dts\": \"tsc index.d.ts --noEmit --esModuleInterop --skipLibCheck\",\n \"test:unit\": \"brittle-bare test/unit/*.test.js\",\n \"test\": \"npm run test:unit && npm run test:integration\",\n \"coverage:unit\": \"brittle-bare --coverage --cov-dir=coverage/unit test/unit/*.test.js && mkdir -p .nyc_output && cp coverage/unit/coverage-final.json .nyc_output/out.json && npx nyc report --reporter=html --report-dir=coverage/html\",\n \"coverage\": \"brittle-bare --coverage --cov-dir=coverage/unit test/unit/*.test.js && mkdir -p .nyc_output && cp coverage/unit/coverage-final.json .nyc_output/out.json && npx nyc report --reporter=html --report-dir=coverage/html\",\n \"lint\": \"standard \\\"test/**/*.js\\\" \\\"*.js\\\" \\\"scripts/**/*.js\\\"\",\n \"lint:fix\": \"standard --fix \\\"test/**/*.js\\\" \\\"*.js\\\" \\\"scripts/**/*.js\\\"\",\n \"test:integration\": \"npm run test:integration:generate && brittle-bare test/integration/*.test.js\",\n \"test:integration:generate\": \"brittle -r test/integration/all.js test/integration/*.test.js && npm run test:mobile:generate\",\n \"test:mobile:generate\": \"bare ./scripts/generate-mobile-integration-tests.js\",\n \"test:mobile:validate\": \"node scripts/validate-mobile-tests.js\"\n },\n \"files\": [\n \"index.js\",\n \"constants.js\",\n \"constants.d.ts\",\n \"utils\",\n \"index.d.ts\",\n \"test/mobile\",\n \"LICENSE\",\n \"NOTICE\"\n ],\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": \"./index.js\",\n \"./constants\": \"./constants.js\",\n \"./constants.js\": \"./constants.js\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.14.1\",\n \"bare-os\": \"^3.6.2\",\n \"bare-url\": \"^2.1.6\",\n \"bare-fs\": \"^4.5.1\",\n \"bare-path\": \"^3.0.0\",\n \"bare-process\": \"^4.2.2\",\n \"brittle\": \"^3.13.1\",\n \"nyc\": \"^17.1.0\",\n \"standard\": \"^17.1.2\",\n \"typescript\": \"^5.3.0\"\n },\n \"dependencies\": {\n \"@qvac/error\": \"^0.1.0\",\n \"@qvac/infer-base\": \"^0.4.0\",\n \"@qvac/logging\": \"^0.1.0\",\n \"bare-ffmpeg\": \"^1.0.0-32\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/tetherto/qvac.git\",\n \"directory\": \"packages/decoder-audio\"\n },\n \"bugs\": \"https://github.com/tetherto/qvac/issues\",\n \"homepage\": \"https://github.com/tetherto/qvac/tree/main/packages/decoder-audio#readme\",\n \"types\": \"index.d.ts\"\n}\n'use strict'\n\nconst w = require('which-runtime')\nconst os = (w.isNode || w.isBare) ? require('os') : null\n\n/**\n * Version of the diagnostic report format\n * @type {string}\n */\nconst REPORT_VERSION = '1.0.0'\n\n/**\n * @typedef {Object} AppInfo\n * @property {string} name - Application name\n * @property {string} version - Application version\n */\n\n/**\n * @typedef {Object} EnvironmentInfo\n * @property {string} os - Operating system platform\n * @property {string} arch - CPU architecture\n * @property {string} osVersion - OS version/release string\n * @property {string} runtime - Runtime environment (e.g. 'bare', 'node')\n */\n\n/**\n * @typedef {Object} HardwareInfo\n * @property {string} cpuModel - CPU model name\n * @property {number} cpuCores - Number of CPU cores\n * @property {number} totalMemoryMB - Total system memory in megabytes\n */\n\n/**\n * @typedef {Object} AddonEntry\n * @property {string} name - Addon name\n * @property {string} version - Addon version\n * @property {string} diagnostics - Opaque JSON string returned by getDiagnostics callback\n */\n\n/**\n * @typedef {Object} ExtensionSection\n * @property {string} name - Extension name\n * @property {*} data - Extension data (any JSON-serializable value)\n */\n\n/**\n * @typedef {Object} DiagnosticReport\n * @property {string} reportVersion - Report format version\n * @property {string} generatedAt - ISO timestamp when report was generated\n * @property {AppInfo} app - Application information\n * @property {EnvironmentInfo} environment - Environment information\n * @property {HardwareInfo} hardware - Hardware information\n * @property {AddonEntry[]} addons - Registered addon diagnostics\n * @property {ExtensionSection[]} extensions - Registered extension sections\n */\n\n/**\n * Singleton addon registry: name -> { version, getDiagnostics }\n * @private\n * @type {Map string }>}\n */\nconst _addonRegistry = new Map()\n\n/**\n * Singleton extension registry: name -> data\n * @private\n * @type {Map}\n */\nconst _extensions = new Map()\n\n/**\n * Registers an addon that can contribute diagnostics to the report.\n * The getDiagnostics callback will be called at report generation time\n * and must return an opaque JSON string.\n *\n * @param {{ name: string, version: string, getDiagnostics: () => string }} addon\n */\nfunction registerAddon (addon) {\n if (!addon || typeof addon.name !== 'string' || !addon.name) {\n throw new Error('addon.name must be a non-empty string')\n }\n if (typeof addon.version !== 'string') {\n throw new Error('addon.version must be a string')\n }\n if (typeof addon.getDiagnostics !== 'function') {\n throw new Error('addon.getDiagnostics must be a function')\n }\n _addonRegistry.set(addon.name, {\n version: addon.version,\n getDiagnostics: addon.getDiagnostics\n })\n}\n\n/**\n * Unregisters a previously registered addon.\n *\n * @param {string} name - Addon name to remove\n */\nfunction unregisterAddon (name) {\n _addonRegistry.delete(name)\n}\n\n/**\n * Registers an extension section to be included in the report.\n *\n * @param {string} name - Extension section name\n * @param {*} data - Extension data (any JSON-serializable value)\n */\nfunction registerExtension (name, data) {\n if (typeof name !== 'string' || !name) {\n throw new Error('extension name must be a non-empty string')\n }\n _extensions.set(name, data)\n}\n\n/**\n * Collects environment information from the current runtime.\n *\n * @returns {EnvironmentInfo}\n */\nfunction collectEnvironment () {\n const runtime = w.isBare ? 'bare' + w.version : (w.isNode ? 'node' + w.version : 'unknown')\n const osVersion = os ? os.release() : 'unknown'\n\n return { os: w.platform, arch: w.arch, osVersion, runtime }\n}\n\n/**\n * Collects hardware information from the current system.\n *\n * @returns {HardwareInfo}\n */\nfunction collectHardware () {\n let cpuModel = 'unknown'\n let cpuCores = 0\n let totalMemoryMB = 0\n\n if (os) {\n try {\n const cpuList = typeof os.cpus === 'function' ? os.cpus() : []\n if (cpuList && cpuList.length > 0) {\n cpuModel = cpuList[0].model || 'unknown'\n cpuCores = cpuList.length\n }\n } catch (e) {\n cpuModel = 'unknown'\n cpuCores = 0\n }\n try {\n const totalBytes = typeof os.totalmem === 'function' ? os.totalmem() : 0\n totalMemoryMB = Math.floor(totalBytes / (1024 * 1024))\n } catch (e) {\n totalMemoryMB = 0\n }\n }\n\n return { cpuModel, cpuCores, totalMemoryMB }\n}\n\n/**\n * Generates a full diagnostic report.\n *\n * @param {{ app: AppInfo }} opts\n * @returns {DiagnosticReport}\n */\nfunction generateReport (opts) {\n const app = (opts && opts.app) ? opts.app : { name: 'unknown', version: 'unknown' }\n const environment = collectEnvironment()\n const hardware = collectHardware()\n\n const addons = []\n for (const [name, entry] of _addonRegistry) {\n let diagnostics = ''\n try {\n diagnostics = entry.getDiagnostics()\n } catch (e) {\n diagnostics = JSON.stringify({ error: String(e) })\n }\n addons.push({ name, version: entry.version, diagnostics })\n }\n\n const extensions = []\n for (const [name, data] of _extensions) {\n extensions.push({ name, data })\n }\n\n return {\n reportVersion: REPORT_VERSION,\n generatedAt: new Date().toISOString(),\n app,\n environment,\n hardware,\n addons,\n extensions\n }\n}\n\n/**\n * Serializes a diagnostic report to a JSON string.\n *\n * @param {DiagnosticReport} report\n * @returns {string}\n */\nfunction serializeReport (report) {\n return JSON.stringify(report, null, 2)\n}\n\n/**\n * Resets all singleton state (addon registry and extensions).\n * Primarily useful for testing.\n */\nfunction reset () {\n _addonRegistry.clear()\n _extensions.clear()\n}\n\nmodule.exports = {\n REPORT_VERSION,\n registerAddon,\n unregisterAddon,\n registerExtension,\n collectEnvironment,\n collectHardware,\n generateReport,\n serializeReport,\n reset\n}\n{\n \"name\": \"@qvac/diagnostics\",\n \"version\": \"0.1.2\",\n \"description\": \"Diagnostic report generation library for QVAC\",\n \"main\": \"index.js\",\n \"types\": \"index.d.ts\",\n \"scripts\": {\n \"lint\": \"standard\",\n \"lint:fix\": \"standard --fix\",\n \"build:types\": \"tsc\",\n \"test:unit\": \"npm run test:unit:generate && bare test/unit/all.js\",\n \"test:unit:generate\": \"brittle -r test/unit/all.js test/unit/*.test.js\",\n \"test\": \"npm run test:unit\"\n },\n \"author\": \"Tether\",\n \"keywords\": [\n \"tether\",\n \"diagnostics\",\n \"qvac\"\n ],\n \"license\": \"Apache-2.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/tetherto/qvac.git\",\n \"directory\": \"packages/diagnostics\"\n },\n \"bugs\": \"https://github.com/tetherto/qvac/issues\",\n \"homepage\": \"https://github.com/tetherto/qvac/tree/main/packages/diagnostics#readme\",\n \"imports\": {\n \"os\": {\n \"bare\": \"bare-os\",\n \"default\": \"os\"\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n }\n },\n \"dependencies\": {\n \"bare-os\": \"^3.4.0\",\n \"which-runtime\": \"^1.4.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.10.1\",\n \"standard\": \"17.1.0\",\n \"typescript\": \"^5.9.3\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"LICENSE\",\n \"NOTICE\"\n ]\n}\n'use strict'\n\n/**\n * @typedef {Object} ErrorDefinition\n * @property {string} name - Error name identifier\n * @property {string | ((...args: any[]) => string)} message - Error message or message factory\n */\n\n/**\n * @typedef {{ [code: number]: ErrorDefinition }} ErrorCodesMap\n */\n\n/**\n * @typedef {Object} QvacErrorOptions\n * @property {number} [code] - The error code\n * @property {any[] | string} [adds] - Additional arguments to format the message\n * @property {Error} [cause] - The original error that caused this one\n */\n\n/**\n * @typedef {Object} SerializedError\n * @property {string} name\n * @property {number} code\n * @property {string} message\n * @property {string} [stack]\n * @property {Error} [cause]\n */\n\n/**\n * @typedef {Object} PackageInfo\n * @property {string} name - Package name (e.g., '@tetherto/qvac-lib-inference-addon-mlc-base')\n * @property {string} version - Package version (semantic version)\n */\n\n/**\n * Reserved internal error codes\n * @private\n */\nconst ERR_CODES = Object.freeze({\n // Internal error codes (0-999)\n UNKNOWN_ERROR_CODE: 0,\n INVALID_CODE_DEFINITION: 1,\n ERROR_CODE_ALREADY_EXISTS: 2,\n MISSING_ERROR_DEFINITION: 3,\n PACKAGE_VERSION_CONFLICT: 4,\n INVALID_PACKAGE_INFO: 5\n})\n\n/**\n * Map of error codes to their content (name and message)\n * @private\n */\nconst codeToContent = {\n [ERR_CODES.UNKNOWN_ERROR_CODE]: {\n name: 'UNKNOWN_ERROR_CODE',\n message: code => `Unknown QVAC error code: ${code}`\n },\n [ERR_CODES.INVALID_CODE_DEFINITION]: {\n name: 'INVALID_CODE_DEFINITION',\n message: code => `Invalid definition for error code: ${code}`\n },\n [ERR_CODES.ERROR_CODE_ALREADY_EXISTS]: {\n name: 'ERROR_CODE_ALREADY_EXISTS',\n message: code => `Error code already exists: ${code}`\n },\n [ERR_CODES.MISSING_ERROR_DEFINITION]: {\n name: 'MISSING_ERROR_DEFINITION',\n message: code => `Missing name or message for error code: ${code}`\n },\n [ERR_CODES.PACKAGE_VERSION_CONFLICT]: {\n name: 'PACKAGE_VERSION_CONFLICT',\n message: (pkg, existingVer, newVer) => `Package ${pkg} version conflict: existing ${existingVer}, attempted ${newVer}`\n },\n [ERR_CODES.INVALID_PACKAGE_INFO]: {\n name: 'INVALID_PACKAGE_INFO',\n message: () => 'Package name and version are required for registration'\n }\n}\n\n/**\n * Registry of packages and their registered code ranges\n * @private\n */\nconst packageRegistry = new Map()\n\n/**\n * Compares two semantic version strings\n * @param {string} version1\n * @param {string} version2\n * @returns {number} -1 if v1 < v2, 0 if equal, 1 if v1 > v2\n */\nfunction compareVersions (version1, version2) {\n const v1Parts = version1.split('.').map(Number)\n const v2Parts = version2.split('.').map(Number)\n\n const maxLength = Math.max(v1Parts.length, v2Parts.length)\n\n for (let i = 0; i < maxLength; i++) {\n const v1Part = v1Parts[i] || 0\n const v2Part = v2Parts[i] || 0\n\n if (v1Part < v2Part) return -1\n if (v1Part > v2Part) return 1\n }\n\n return 0\n}\n\n/**\n * Base class for all QVAC errors\n * Extends the standard Error class with QVAC-specific functionality\n */\nclass QvacErrorBase extends Error {\n /** @type {number} */\n code\n /** @type {string} */\n name\n /** @type {Error | undefined} */\n cause\n\n /**\n * Creates a new QVAC error\n * @param {QvacErrorOptions} [options] - Error options\n */\n constructor (options = {}) {\n const { code, adds, cause } = options\n let msgContent = ''\n /** @type {number} */\n let errorCode = ERR_CODES.UNKNOWN_ERROR_CODE\n /** @type {string} */\n let errorName = new.target.name\n\n const unknownError = codeToContent[ERR_CODES.UNKNOWN_ERROR_CODE]\n const codeObj = code !== undefined ? codeToContent[code] : undefined\n\n if (code === undefined) {\n msgContent = 'Unknown QVAC error'\n errorCode = ERR_CODES.UNKNOWN_ERROR_CODE\n errorName = new.target.name\n } else if (!codeObj) {\n msgContent = unknownError.message(code)\n errorCode = ERR_CODES.UNKNOWN_ERROR_CODE\n errorName = unknownError.name\n } else {\n if (typeof codeObj.message === 'function') {\n msgContent = codeObj.message(...(Array.isArray(adds) ? adds : [adds]))\n } else if (typeof codeObj.message === 'string') {\n msgContent = codeObj.message + (adds ? ` ${adds}` : '')\n }\n errorCode = code\n errorName = codeObj.name\n }\n\n super(msgContent, cause !== undefined ? { cause } : undefined)\n this.code = errorCode\n this.name = errorName\n this.cause = cause\n\n Object.setPrototypeOf(this, new.target.prototype)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n if (cause && cause.stack) {\n this.stack += '\\n\\nCaused by: ' + cause.stack\n }\n }\n\n /**\n * Serializes the error to a plain object\n * @returns {SerializedError}\n */\n toJSON () {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n stack: this.stack,\n cause: this.cause\n }\n }\n}\n\n/**\n * Registers new error codes with optional package information for collision avoidance\n * @param {ErrorCodesMap} codes - Map of error codes to their definitions\n * @param {PackageInfo} [packageInfo] - Optional package information for collision management\n * @throws {QvacErrorBase} If there are conflicts or invalid definitions\n */\nfunction addCodes (codes, packageInfo) {\n // If no package info provided, use legacy behavior\n if (!packageInfo) {\n for (const [code, def] of Object.entries(codes)) {\n const numericCode = Number(code)\n\n if (codeToContent[numericCode]) {\n throw new QvacErrorBase({ code: ERR_CODES.ERROR_CODE_ALREADY_EXISTS, adds: numericCode })\n }\n\n if (!def || typeof def !== 'object') {\n throw new QvacErrorBase({ code: ERR_CODES.INVALID_CODE_DEFINITION, adds: numericCode })\n }\n\n if (!def.name || !def.message) {\n throw new QvacErrorBase({ code: ERR_CODES.MISSING_ERROR_DEFINITION, adds: numericCode })\n }\n\n codeToContent[numericCode] = {\n name: def.name,\n message: def.message\n }\n }\n\n return\n }\n\n if (!packageInfo.name || !packageInfo.version) {\n throw new QvacErrorBase({ code: ERR_CODES.INVALID_PACKAGE_INFO })\n }\n\n const { name: packageName, version: packageVersion } = packageInfo\n const existingPackage = packageRegistry.get(packageName)\n\n // Check if package is already registered\n if (existingPackage) {\n const versionComparison = compareVersions(packageVersion, existingPackage.version)\n\n if (versionComparison > 0) {\n // Newer version - remove old codes first\n for (const code of existingPackage.codes) {\n delete codeToContent[code]\n }\n } else {\n return\n }\n }\n\n // Validate and register new codes\n const registeredCodes = []\n\n for (const [code, def] of Object.entries(codes)) {\n const numericCode = Number(code)\n\n // Check if code is already registered by another package\n if (codeToContent[numericCode] && (!existingPackage || !existingPackage.codes.includes(numericCode))) {\n throw new QvacErrorBase({ code: ERR_CODES.ERROR_CODE_ALREADY_EXISTS, adds: numericCode })\n }\n\n if (!def || typeof def !== 'object') {\n throw new QvacErrorBase({ code: ERR_CODES.INVALID_CODE_DEFINITION, adds: numericCode })\n }\n\n if (!def.name || !def.message) {\n throw new QvacErrorBase({ code: ERR_CODES.MISSING_ERROR_DEFINITION, adds: numericCode })\n }\n\n codeToContent[numericCode] = {\n name: def.name,\n message: def.message\n }\n\n registeredCodes.push(numericCode)\n }\n\n // Update package registry\n packageRegistry.set(packageName, {\n version: packageVersion,\n codes: registeredCodes\n })\n}\n\n/**\n * Gets all registered error codes and their definitions\n * @returns {ErrorCodesMap}\n */\nfunction getRegisteredCodes () {\n return JSON.parse(JSON.stringify(codeToContent))\n}\n\n/**\n * Checks if a code is already registered\n * @param {number} code - The error code to check\n * @returns {boolean} True if the code is already registered\n */\nfunction isCodeRegistered (code) {\n return !!codeToContent[code]\n}\n\nmodule.exports = {\n QvacErrorBase,\n addCodes,\n getRegisteredCodes,\n isCodeRegistered,\n INTERNAL_ERROR_CODES: ERR_CODES\n}\n\nmodule.exports.default = QvacErrorBase\n{\n \"name\": \"@qvac/error\",\n \"version\": \"0.1.1\",\n \"description\": \"Base error handling library for QVAC\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"lint\": \"standard\",\n \"lint:fix\": \"standard --fix\",\n \"build:types\": \"tsc\",\n \"test:unit\": \"npm run test:unit:generate && bare test/unit/all.js\",\n \"test:dts\": \"tsc index.d.ts --noEmit\",\n \"test:unit:generate\": \"brittle -r test/unit/all.js test/unit/*.test.js\",\n \"test\": \"npm run test:unit && npm run test:dts\",\n \"test:coverage\": \"brittle --coverage test/**/*.test.js\",\n \"prepare\": \"husky || true\"\n },\n \"author\": \"Tether\",\n \"keywords\": [\n \"tether\",\n \"error\",\n \"qvac\"\n ],\n \"license\": \"Apache-2.0\",\n \"devDependencies\": {\n \"brittle\": \"^3.10.1\",\n \"husky\": \"^9.1.7\",\n \"standard\": \"17.1.0\",\n \"typescript\": \"^5.9.3\"\n },\n \"bugs\": \"https://github.com/tetherto/qvac-lib-error-base/issues\",\n \"files\": [\n \"src\",\n \"index.d.ts\"\n ],\n \"types\": \"index.d.ts\"\n}'use strict'\n\nlet diagnostics\ntry { diagnostics = require('@qvac/diagnostics') } catch (e) { diagnostics = null }\n\nconst QvacLogger = require('@qvac/logging')\nconst { platform } = require('bare-os')\nconst path = require('bare-path')\nconst ProgressReport = require('./src/utils/progressReport')\nconst { QvacInferenceBaseError, ERR_CODES } = require('./src/error')\nconst QvacResponse = require('./src/QvacResponse')\n\nconst platformDefinitions = {\n android: 'vulkan',\n darwin: 'metal',\n ios: 'metal',\n win32: 'vulkan-32',\n linux: 'vulkan'\n}\n\n/**\n * Base class for inference client implementations\n */\nclass BaseInference {\n constructor ({ opts = {}, loader = null, ...args }) {\n this.opts = opts\n this.logger = new QvacLogger(args?.logger)\n this.loader = loader\n this._jobToResponse = new Map()\n\n this.state = {\n configLoaded: false,\n weightsLoaded: false,\n destroyed: false\n }\n }\n\n /**\n * Identifies which model API should be used on current environment\n */\n getApiDefinition () {\n const definition = platformDefinitions[platform()]\n const api = definition ?? 'vulkan'\n this.logger.debug(\n `Using API definition: ${api} for platform: ${platform()}`\n )\n return api\n }\n\n /**\n * Returns the current state of the inference client.\n * @return{ {configLoaded: boolean, weightsLoaded: boolean, destroyed: boolean } }\n */\n getState () {\n return this.state\n }\n\n /**\n * Supplies model and all the required files to the addon\n */\n async load (...args) {\n if (this.state.configLoaded || this.state.weightsLoaded) {\n this.logger.info('Reload requested - unloading existing model first')\n await this.unload()\n }\n\n await this._load(...args)\n this.state.configLoaded = true\n\n if (diagnostics && this._packageName) {\n diagnostics.registerAddon({\n name: this._packageName,\n version: this._packageVersion || 'unknown',\n getDiagnostics: () => this._getDiagnosticsJSON ? this._getDiagnosticsJSON() : '{}'\n })\n }\n }\n\n async _load () {\n throw new QvacInferenceBaseError({ code: ERR_CODES.NOT_IMPLEMENTED, adds: '_load' })\n }\n\n /**\n * Loads the model weights from the provided loader.\n * @param loader - loader to fetch model weights from.\n * @param close - Optional boolean to close the loader after it finish (default: false).\n * @param reportProgressCallback - Optional callback function for reporting progress.\n * @returns {Promise} - A promise that resolves when the weights are fully loaded.\n */\n async loadWeights (loader, close = false, reportProgressCallback) {\n // Call internal _loadWeights method if it exists\n await this._loadWeights(loader, close, reportProgressCallback)\n\n this.state.weightsLoaded = true\n }\n\n async _loadWeights (loader, close = false, reportProgressCallback) {\n this.logger.debug('No _loadWeights method defined, skipping weight loading')\n }\n\n /**\n * Unloads weights from the memory.\n * @returns {Promise} - A promise that resolves when the weights are unloaded.\n */\n async unloadWeights () {\n // Call internal _unloadWeights method if it exists\n await this._unloadWeights()\n\n this.state.weightsLoaded = false\n }\n\n async _unloadWeights () {\n this.logger.debug(\n 'No _unloadWeights method defined, skipping weight unloading'\n )\n }\n\n /**\n * Downloads the model weights from the provided loader.\n * @param source - source to fetch model weights from.\n * @param diskPath - path to download the weights to.\n * @param reportProgressCallback - Optional callback function for reporting progress.\n * @returns {Promise} - A promise that resolves when the weights are fully downloaded.\n */\n async downloadWeights (source, diskPath = '', reportProgressCallback) {\n await this._downloadWeights(source, diskPath, reportProgressCallback)\n }\n\n async _downloadWeights (source, diskPath = '', reportProgressCallback) {\n this.logger.debug(\n 'No _downloadWeights method defined, skipping weight downloading'\n )\n }\n\n /**\n * Initializes progress reporting for model loading\n */\n async initProgressReport (weightFiles, callbackFunction) {\n if (this.loader?.getFileSize && callbackFunction) {\n this.logger.info(\n `Initializing progress report for ${weightFiles.length} weight files`\n )\n const filesizeMapping = {}\n\n await Promise.all(\n weightFiles.map(async filepath => {\n const currentFileName = path.basename(filepath)\n this.logger.debug(`Getting file size for: ${currentFileName}`)\n const currentFileSize = await this.loader.getFileSize(filepath)\n filesizeMapping[currentFileName] = currentFileSize\n this.logger.debug(\n `File size for ${currentFileName}: ${currentFileSize} bytes`\n )\n })\n )\n\n const totalSize = Object.values(filesizeMapping).reduce(\n (sum, size) => sum + size,\n 0\n )\n this.logger.info(\n `Progress report initialized. Total size to download: ${totalSize} bytes across ${weightFiles.length} files`\n )\n const progressReport = new ProgressReport(\n filesizeMapping,\n callbackFunction\n )\n return progressReport\n } else {\n if (!this.loader?.getFileSize) {\n this.logger.warn(\n 'Progress report initialization skipped - loader missing getFileSize capability'\n )\n }\n if (!callbackFunction) {\n this.logger.warn(\n 'Progress report initialization skipped - no callback function provided'\n )\n }\n return null\n }\n }\n\n /**\n * Deletes local model files\n */\n async delete () {\n if (!this.loader?.deleteLocal) {\n throw new QvacInferenceBaseError({\n code: ERR_CODES.LOAD_NOT_IMPLEMENTED,\n adds: 'deleteLocal'\n })\n }\n await this.loader.deleteLocal()\n }\n\n /**\n * Runs the process of inference output for a given input\n */\n async run (input) {\n if (!this._runInternal) {\n throw new QvacInferenceBaseError({\n code: ERR_CODES.NOT_IMPLEMENTED,\n adds: '_runInternal'\n })\n }\n return await this._runInternal(input)\n }\n\n /**\n * Unloads the configuration and weights from the memory.\n */\n async unload () {\n if (!this.addon?.unload) {\n throw new QvacInferenceBaseError({\n code: ERR_CODES.ADDON_METHOD_NOT_IMPLEMENTED,\n adds: 'unload'\n })\n }\n\n await this.addon.unload()\n\n this.state.configLoaded = false\n this.state.weightsLoaded = false\n }\n\n /**\n * Pauses the inference process\n */\n async pause () {\n if (!this.addon?.pause) {\n throw new QvacInferenceBaseError({\n code: ERR_CODES.ADDON_METHOD_NOT_IMPLEMENTED,\n adds: 'pause'\n })\n }\n await this.addon.pause()\n }\n\n /**\n * Unpauses the inference process\n */\n async unpause () {\n if (!this.addon?.activate) {\n throw new QvacInferenceBaseError({\n code: ERR_CODES.ADDON_METHOD_NOT_IMPLEMENTED,\n adds: 'activate'\n })\n }\n await this.addon.activate()\n }\n\n /**\n * Stops the inference process\n */\n async stop () {\n if (!this.addon?.stop) {\n throw new QvacInferenceBaseError({\n code: ERR_CODES.ADDON_METHOD_NOT_IMPLEMENTED,\n adds: 'stop'\n })\n }\n await this.addon.stop()\n }\n\n /**\n * Gets the current status\n */\n async status () {\n if (!this.addon?.status) {\n throw new QvacInferenceBaseError({\n code: ERR_CODES.ADDON_METHOD_NOT_IMPLEMENTED,\n adds: 'status'\n })\n }\n return await this.addon.status()\n }\n\n /**\n * Saves job to response mapping\n */\n _saveJobToResponseMapping (jobId, response) {\n this._jobToResponse.set(jobId, response)\n }\n\n /**\n * Deletes job mapping\n */\n _deleteJobMapping (jobId) {\n this._jobToResponse.delete(jobId)\n }\n\n /**\n * Unload the model and all the resources associated with it. Making the model unusable.\n * @returns {Promise} - A promise that resolves when the model is fully destroyed.\n */\n async destroy () {\n if (!this.addon?.destroyInstance) {\n throw new QvacInferenceBaseError({\n code: ERR_CODES.ADDON_METHOD_NOT_IMPLEMENTED,\n adds: 'destroyInstance'\n })\n }\n\n await this.addon.destroyInstance()\n\n this.state.configLoaded = false\n this.state.weightsLoaded = false\n this.state.destroyed = true\n\n if (diagnostics && this._packageName) {\n diagnostics.unregisterAddon(this._packageName)\n }\n }\n\n /**\n * Gets configuration files content\n */\n async _getConfigs () {\n const configs = {}\n for (const path of this._getConfigPathNames()) {\n configs[path] = await this._getFileContent(path)\n }\n return configs\n }\n\n /**\n * Gets file content from loader\n */\n async _getFileContent (filepath) {\n if (!this.loader) {\n this.logger.error('Failed to get file content - loader not initialized')\n throw new QvacInferenceBaseError({ code: ERR_CODES.LOADER_NOT_FOUND })\n }\n\n this.logger.debug(`Reading file content from: ${filepath}`)\n const content = []\n const cStream = await this.loader.getStream(filepath)\n for await (const c of cStream) {\n content.push(c)\n }\n return Buffer.concat(content)\n }\n\n /**\n * Gets configuration file paths\n */\n _getConfigPathNames () {\n throw new QvacInferenceBaseError({\n code: ERR_CODES.NOT_IMPLEMENTED,\n adds: '_getConfigPathNames'\n })\n }\n\n /**\n * Internal method to run inference\n */\n async _runInternal (input) {\n throw new QvacInferenceBaseError({ code: ERR_CODES.NOT_IMPLEMENTED, adds: '_runInternal' })\n }\n\n /**\n * Creates addon instance with the provided configuration and interface\n * @param {Object} AddonInterface - Interface class to instantiate\n * @param {...any} args - Arguments to pass to the interface constructor\n */\n _createAddon (AddonInterface, ...args) {\n if (!AddonInterface) {\n throw new QvacInferenceBaseError({ code: ERR_CODES.ADDON_INTERFACE_REQUIRED })\n }\n return new AddonInterface(...args)\n }\n\n /**\n * Creates a response instance for a job\n * @param {string} jobId - Job identifier\n * @returns {QvacResponse} Response instance with handlers\n */\n _createResponse (jobId) {\n if (!this.addon) {\n throw new QvacInferenceBaseError({ code: ERR_CODES.ADDON_NOT_INITIALIZED })\n }\n return new QvacResponse({\n cancelHandler: () => {\n return this.addon.cancel(jobId)\n },\n pauseHandler: () => {\n return this.addon.pause()\n },\n continueHandler: () => {\n return this.addon.activate()\n }\n })\n }\n\n /**\n * Handles output callbacks from the inference process\n */\n _outputCallback (addon, event, jobId, data, error) {\n const response = this._jobToResponse.get(jobId)\n if (!response) {\n this.logger.warn(`No response found for job ${jobId}`)\n return\n }\n\n if (event === 'Error') {\n this.logger.error(`Job ${jobId} failed with error: ${error}`)\n response.failed(error)\n this._deleteJobMapping(jobId)\n } else if (event === 'Output') {\n this.logger.debug(`Job ${jobId} produced output: ${dataAsString(data)}`)\n response.updateOutput(data)\n } else if (event === 'JobEnded') {\n this.logger.info(`Job ${jobId} completed. Stats: ${JSON.stringify(data)}`)\n if (this.opts?.stats) {\n response.updateStats(data)\n }\n response.ended()\n this._deleteJobMapping(jobId)\n } else {\n this.logger.debug(`Received event for job ${jobId}: ${event}`)\n }\n }\n}\n\n/**\n * Converts data to a string representation\n * @param {any} data - The data to convert to a string\n * @returns {string} - The string representation of the data\n */\nfunction dataAsString (data) {\n if (!data) return ''\n if (typeof data === 'object') {\n return JSON.stringify(data)\n }\n return data.toString()\n}\n\nmodule.exports = BaseInference\nmodule.exports.QvacResponse = QvacResponse\nmodule.exports.exclusiveRunQueue = require('./src/utils/exclusiveRunQueue')\nmodule.exports.getApiDefinition = require('./src/utils/getApiDefinition')\nmodule.exports.createJobHandler = require('./src/utils/createJobHandler')\n{\n \"name\": \"@qvac/infer-base\",\n \"version\": \"0.4.2\",\n \"description\": \"Base class for inference clients\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"lint\": \"standard\",\n \"lint:fix\": \"standard --fix\",\n \"test:dts\": \"tsc index.d.ts --noEmit\",\n \"test:unit\": \"brittle-bare test/unit/**/*.test.js\",\n \"test\": \"npm run test:unit\"\n },\n \"author\": \"Tether\",\n \"keywords\": [\n \"tether\",\n \"inference\",\n \"qvac\"\n ],\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@qvac/error\": \"^0.1.0\",\n \"@qvac/logging\": \"^0.1.0\",\n \"bare-events\": \"^2.9.1\",\n \"bare-os\": \"^3.2.0\",\n \"bare-path\": \"^3.0.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.15.0\",\n \"standard\": \"^17.1.0\"\n },\n \"optionalDependencies\": {\n \"@qvac/diagnostics\": \"^0.1.0\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/tetherto/qvac.git\",\n \"directory\": \"packages/qvac-lib-infer-base\"\n },\n \"bugs\": \"https://github.com/tetherto/qvac/issues\",\n \"homepage\": \"https://github.com/tetherto/qvac/tree/main/packages/qvac-lib-infer-base#readme\",\n \"files\": [\n \"src\",\n \"index.d.ts\",\n \"WeightsProvider\",\n \"LICENSE\",\n \"NOTICE\"\n ],\n \"types\": \"index.d.ts\"\n}\n'use strict'\n\nconst EventEmitter = require('bare-events')\n\nconst statuses = Object.freeze({\n RUNNING: 'running',\n ENDED: 'ended',\n ERRORED: 'errored',\n CANCELLED: 'cancelled',\n PAUSED: 'paused'\n})\n\nconst _deprecationWarned = {}\nfunction _warnDeprecated (method) {\n if (_deprecationWarned[method]) return\n _deprecationWarned[method] = true\n console.warn(`@qvac/infer-base: QvacResponse.${method}() is deprecated and will be removed in a future version.`)\n}\n\n/**\n * QvacResponse provides an interface for handling asynchronous responses\n * with update notifications, error handling, pause/resume functionality, and more.\n * It extends EventEmitter to allow event-based interaction.\n */\nclass QvacResponse extends EventEmitter {\n _status = statuses.RUNNING\n\n /**\n * Creates a new QvacResponse instance.\n * @param {Object} handlers - An object containing handler functions.\n * @param {Function} handlers.cancelHandler - A function that returns a Promise, called to cancel the response.\n * @param {Function} [handlers.pauseHandler] - @deprecated A function that returns a Promise, called to pause the response.\n * @param {Function} [handlers.continueHandler] - @deprecated A function that returns a Promise, called to continue the response.\n * @param {number} [pollInterval=100] - Polling interval in milliseconds for the async iterator.\n */\n constructor (\n { cancelHandler, pauseHandler, continueHandler } = {},\n pollInterval = 100\n ) {\n super()\n this.output = []\n this.stats = {}\n this._cancelHandler = cancelHandler\n this._pauseHandler = pauseHandler\n this._continueHandler = continueHandler\n this._pollInterval = pollInterval\n\n this._finishPromise = new Promise((resolve, reject) => {\n this._resolveFinish = resolve\n this._rejectFinish = reject\n })\n\n this._finishPromise.catch(() => {}) // Error already handled via error event if listener exists\n }\n\n /**\n * Registers a callback to be invoked on each output update.\n * @param {Function} callback - Function invoked with each output update.\n * @returns {QvacResponse} The current instance for chaining.\n */\n onUpdate (callback) {\n this.on('output', callback)\n return this\n }\n\n /**\n * Registers a callback for when the response finishes.\n * If a callback is provided, it is invoked with the terminal result.\n * @param {Function} [callback] - Optional callback invoked with the terminal result.\n * @returns {QvacResponse} The current instance for chaining.\n */\n onFinish (callback) {\n if (callback) {\n this.once('end', (result) => callback(result))\n }\n return this\n }\n\n /**\n * Returns a promise that resolves with the terminal result when the response finishes.\n * @returns {Promise} A promise that resolves with the terminal result or rejects if an error occurs.\n */\n await () {\n return this._finishPromise\n }\n\n /**\n * Registers a callback to be invoked when an error occurs.\n * @param {Function} callback - Function invoked with the error.\n * @returns {QvacResponse} The current instance for chaining.\n */\n onError (callback) {\n this.on('error', callback)\n return this\n }\n\n /**\n * Registers a callback to be invoked when the response is cancelled.\n * @param {Function} callback - Function invoked when a cancel event occurs.\n * @returns {QvacResponse} The current instance for chaining.\n */\n onCancel (callback) {\n this.on('cancel', callback)\n return this\n }\n\n /**\n * @deprecated Will be removed in a future version.\n * Registers a callback to be invoked when the response is paused.\n * @param {Function} callback - Function invoked when a pause event occurs.\n * @returns {QvacResponse} The current instance for chaining.\n */\n onPause (callback) {\n _warnDeprecated('onPause')\n this.on('pause', callback)\n return this\n }\n\n /**\n * @deprecated Will be removed in a future version.\n * Registers a callback to be invoked when the response continues from a paused state.\n * @param {Function} callback - Function invoked when a continue event occurs.\n * @returns {QvacResponse} The current instance for chaining.\n */\n onContinue (callback) {\n _warnDeprecated('onContinue')\n this.on('continue', callback)\n return this\n }\n\n /**\n * Adds an output update and emits an 'output' event.\n * @param {*} output - The output data to add.\n */\n updateOutput (output) {\n this.output.push(output)\n this.emit('output', output)\n }\n\n /**\n * Updates the response statistics and emits a 'stats' event.\n * @param {*} stats - Statistics data.\n */\n updateStats (stats) {\n this.stats = stats\n this.emit('stats', stats)\n }\n\n /**\n * Marks the response as failed, emits an 'error' event, and rejects the finish promise.\n * @param {Error} error - The error that caused the failure.\n */\n failed (error) {\n if (!(error instanceof Error)) {\n error = new Error(String(error).trim())\n }\n\n this._status = statuses.ERRORED\n this._error = error\n const errorListeners = this.listenerCount('error')\n if (errorListeners > 0) {\n this.emit('error', error)\n }\n this._rejectFinish(error)\n }\n\n /**\n * Marks the response as ended, emits an 'end' event, and resolves the finish promise.\n */\n ended (result = this.output) {\n this._status = statuses.ENDED\n this.emit('end', result)\n this._resolveFinish(result)\n }\n\n /**\n * Returns the most recent output.\n * @returns {*} The latest output, or null if no output exists.\n */\n getLatest () {\n return this.output.length ? this.output.at(-1) : null\n }\n\n /**\n * Async generator that yields each output update until the response stops running.\n * @async\n * @generator\n * @yields {*} Each output update.\n * @throws {*} Throws an error if the response ends with an error status.\n */\n async * iterate () {\n if (this._status === statuses.ERRORED) {\n throw this._error\n }\n\n const sleep = delay => new Promise(resolve => setTimeout(resolve, delay))\n let i = 0\n while (true) {\n while (i < this.output.length) {\n yield this.output[i++]\n }\n if (this._status !== statuses.RUNNING) break\n await sleep(this._pollInterval)\n }\n\n if (this._status === statuses.ERRORED) throw this._error\n }\n\n /**\n * Cancels the response by invoking the cancel handler and emitting a 'cancel' event.\n * @returns {Promise}\n * @throws {Error} If the response is not in a running state.\n */\n async cancel () {\n if (this._status !== statuses.RUNNING && this._status !== statuses.PAUSED) {\n return // Already finished/errored/cancelled\n }\n await this._cancelHandler()\n this.emit('cancel')\n }\n\n /**\n * @deprecated Will be removed in a future version. The single-job addon model has no pause semantics.\n * Pauses the response by invoking the pause handler and emitting a 'pause' event.\n * @returns {Promise}\n * @throws {Error} If the response is not in a running state.\n */\n async pause () {\n _warnDeprecated('pause')\n if (this._status !== statuses.RUNNING) {\n throw new Error('ERR_NOT_RUNNING')\n }\n\n this._status = statuses.PAUSED\n await this._pauseHandler()\n this.emit('pause')\n }\n\n /**\n * @deprecated Will be removed in a future version. The single-job addon model has no pause semantics.\n * Continues a paused response by invoking the continue handler and emitting a 'continue' event.\n * @returns {Promise}\n * @throws {Error} If the response is not in a paused state.\n */\n async continue () {\n _warnDeprecated('continue')\n if (this._status !== statuses.PAUSED) {\n throw new Error('ERR_NOT_PAUSED')\n }\n\n this._status = statuses.RUNNING\n await this._continueHandler()\n this.emit('continue')\n }\n\n /**\n * @deprecated Will be removed in a future version. Use response event listeners instead.\n * Returns the current status of the response.\n * @returns {string} The current status.\n */\n getStatus () {\n _warnDeprecated('getStatus')\n return this._status\n }\n}\n\nmodule.exports = QvacResponse\n'use strict'\n\nconst { QvacErrorBase, addCodes } = require('@qvac/error')\nconst { name, version } = require('../package.json')\n\n// Define error codes specific to this library - range 3001-4000\nconst ERR_CODES = Object.freeze({\n NOT_IMPLEMENTED: 3101,\n LOAD_NOT_IMPLEMENTED: 3102,\n ADDON_METHOD_NOT_IMPLEMENTED: 3103,\n LOADER_NOT_FOUND: 3104,\n ADDON_INTERFACE_REQUIRED: 3105,\n ADDON_NOT_INITIALIZED: 3106,\n\n // WeightsProvider\n DOWNLOAD_FAILED: 4001\n})\n\n// Register error definitions\naddCodes({\n [ERR_CODES.NOT_IMPLEMENTED]: {\n name: 'NOT_IMPLEMENTED',\n message: (funcName) => `${funcName} function is not implemented`\n },\n [ERR_CODES.LOAD_NOT_IMPLEMENTED]:\n {\n name: 'LOAD_NOT_IMPLEMENTED',\n message:\n (funcName) => `${funcName} function is not implemented by the loader`\n },\n [ERR_CODES.ADDON_METHOD_NOT_IMPLEMENTED]:\n {\n name: 'ADDON_METHOD_NOT_IMPLEMENTED',\n message:\n (methodName) => `addon does not implement method ${methodName}`\n },\n [ERR_CODES.LOADER_NOT_FOUND]:\n {\n name: 'LOADER_NOT_FOUND',\n message: 'Loader not found'\n },\n [ERR_CODES.ADDON_INTERFACE_REQUIRED]:\n {\n name: 'ADDON_INTERFACE_REQUIRED',\n message: 'AddonInterface is required for this operation'\n },\n [ERR_CODES.ADDON_NOT_INITIALIZED]:\n {\n name: 'ADDON_NOT_INITIALIZED',\n message: 'Addon has not been initialized'\n },\n [ERR_CODES.DOWNLOAD_FAILED]:\n {\n name: 'DOWNLOAD_FAILED',\n message: (error) => `Error while downloading file with message: ${error.message}`\n }\n}, {\n name,\n version\n})\n\n// Create a specialized error class for the inference base library\nclass QvacInferenceBaseError extends QvacErrorBase { }\n\nmodule.exports = {\n QvacInferenceBaseError,\n ERR_CODES\n}\n'use strict'\n\nconst QvacResponse = require('../QvacResponse')\n\n/**\n * Creates a single-job handler that manages the lifecycle of a QvacResponse.\n * Replaces the _jobToResponse Map / _saveJobToResponseMapping / _deleteJobMapping\n * boilerplate used by every addon.\n *\n * @param {Object} opts\n * @param {Function} opts.cancel - Called when the consumer cancels the active response.\n * @returns {{ start, output, end, fail, active }}\n *\n * @example\n * // In addon constructor:\n * this._job = createJobHandler({ cancel: () => this.addon.cancel() })\n *\n * // In run method:\n * const response = this._job.start()\n * await this.addon.runJob(input)\n * return response\n *\n * // In output callback:\n * this._job.output(data)\n * this._job.end(stats)\n */\nfunction createJobHandler (opts) {\n let active = null\n\n return {\n /**\n * Creates a new QvacResponse and stores it as the active response.\n * If a previous response is still active, it is failed with a stale-job error\n * before the new one is created.\n *\n * @returns {QvacResponse}\n */\n start () {\n if (active) {\n active.failed(new Error('Stale job replaced by new run'))\n active = null\n }\n\n const response = new QvacResponse({\n cancelHandler: () => opts.cancel()\n })\n\n active = response\n return response\n },\n\n /**\n * Registers a pre-built response (e.g. a custom subclass) as the active response.\n * If a previous response is still active, it is failed with a stale-job error.\n * Use this instead of start() when you need a QvacResponse subclass.\n *\n * @param {QvacResponse} response\n * @returns {QvacResponse} The same response, for convenience.\n */\n startWith (response) {\n if (active) {\n active.failed(new Error('Stale job replaced by new run'))\n active = null\n }\n\n active = response\n return response\n },\n\n /**\n * Routes output data to the active response.\n * No-op if no active response (defensive guard).\n *\n * @param {*} data\n */\n output (data) {\n if (!active) return\n active.updateOutput(data)\n },\n\n /**\n * Ends the active response. Optionally forwards stats before ending.\n * Clears the active response.\n *\n * @param {*} [stats] - If provided (non-null), forwarded via updateStats() before ending.\n * @param {*} [result] - If provided, passed to ended(result). Otherwise ended() uses default (output array).\n */\n end (stats, result) {\n if (!active) return\n const ref = active\n active = null\n if (stats != null) {\n ref.updateStats(stats)\n }\n if (result !== undefined) {\n ref.ended(result)\n } else {\n ref.ended()\n }\n },\n\n /**\n * Fails the active response with an error. Clears the active response.\n *\n * @param {Error|string} error\n */\n fail (error) {\n if (!active) return\n const ref = active\n active = null\n ref.failed(error)\n },\n\n /**\n * Returns the current active QvacResponse, or null if idle.\n * @type {QvacResponse|null}\n */\n get active () {\n return active\n }\n }\n}\n\nmodule.exports = createJobHandler\n'use strict'\n\n/**\n * Creates a serialized execution queue. Calls to the returned function\n * are guaranteed to run one at a time, in order, even when fired concurrently.\n *\n * @returns {function(fn: () => Promise): Promise} A function that accepts\n * an async thunk and returns its result after all previously queued thunks complete.\n *\n * @example\n * const run = exclusiveRunQueue()\n * const responseA = run(() => addon.runJob(inputA))\n * const responseB = run(() => addon.runJob(inputB)) // waits for A\n */\nfunction exclusiveRunQueue () {\n let waiter = Promise.resolve()\n\n return async function run (fn) {\n const prev = waiter\n let release\n waiter = new Promise(resolve => { release = resolve })\n await prev\n try {\n return await fn()\n } finally {\n release()\n }\n }\n}\n\nmodule.exports = exclusiveRunQueue\n'use strict'\n\nconst { platform } = require('bare-os')\n\nconst platformDefinitions = {\n android: 'vulkan',\n darwin: 'metal',\n ios: 'metal',\n win32: 'vulkan-32',\n linux: 'vulkan'\n}\n\n/**\n * Returns the graphics API identifier for the current platform.\n * Falls back to 'vulkan' on unknown platforms.\n *\n * @returns {string} One of 'vulkan', 'metal', 'vulkan-32'\n */\nfunction getApiDefinition () {\n return platformDefinitions[platform()] ?? 'vulkan'\n}\n\nmodule.exports = getApiDefinition\n'use strict'\n\nclass ProgressReport {\n /**\n * Initializes a new instance of ProgressReport.\n * @param {Object} filesizeMapping - Mapping between filename and total size.\n * @param {Function} progressCallback - Optional callback function to report progress.\n */\n constructor (filesizeMapping, progressCallback = null) {\n this.filesizeMapping = filesizeMapping\n this.progressCallback = progressCallback\n\n this.totalSize = Object.values(filesizeMapping).reduce((sum, size) => sum + size, 0)\n this.totalFiles = Object.keys(filesizeMapping).length\n\n this.downloadedSizeMapping = {}\n\n this.overallDownloaded = 0\n this.overallProgress = '0.00'\n this.filesProcessed = 0\n }\n\n /**\n * Updates the progress with the number of bytes downloaded for a specific file.\n * @param {string} filename - Name of the file being downloaded.\n * @param {number} bytes - Number of bytes downloaded in the current chunk.\n */\n update (filename, bytes) {\n if (!this.downloadedSizeMapping[filename]) {\n this.downloadedSizeMapping[filename] = 0\n }\n this.downloadedSizeMapping[filename] += bytes\n\n this.overallDownloaded += bytes\n\n this.overallProgress = this._calculateProgress(this.overallDownloaded, this.totalSize)\n\n const currentFileDownloaded = this.downloadedSizeMapping[filename]\n const currentFileSize = this.filesizeMapping[filename]\n const currentFileProgress = this._calculateProgress(currentFileDownloaded, currentFileSize)\n\n this._reportProgress('loadingFile', filename, currentFileProgress)\n }\n\n /**\n * Marks the file as completed.\n * @param {string} filename - Name of the file that has been fully downloaded.\n */\n completeFile (filename) {\n const fileSize = this.filesizeMapping[filename]\n const downloadedSize = this.downloadedSizeMapping[filename] || 0\n const remainingBytes = fileSize - downloadedSize\n\n if (remainingBytes > 0) {\n this.overallDownloaded += remainingBytes\n this.downloadedSizeMapping[filename] = fileSize\n }\n\n this.overallProgress = this._calculateProgress(this.overallDownloaded, this.totalSize)\n\n this.filesProcessed += 1\n\n this._reportProgress('completeFile', filename, '100.00')\n }\n\n /**\n * Internal method to calculate progress percentages.\n * @param {number} downloaded - Number of bytes downloaded.\n * @param {number} total - Total number of bytes.\n * @returns {string} Progress percentage formatted to two decimal places.\n */\n _calculateProgress (downloaded, total) {\n return total ? ((downloaded / total) * 100).toFixed(2) : '0.00'\n }\n\n /**\n * Internal method to invoke the progress callback with current progress data.\n * @param {string} action - Action that triggered the progress report.\n * @param {string} filename - Name of the file being reported.\n * @param {string} currentFileProgress - Progress percentage of the current file.\n */\n _reportProgress (action, filename, currentFileProgress) {\n if (this.progressCallback) {\n const progressData = {\n action,\n totalSize: this.totalSize,\n totalFiles: this.totalFiles,\n filesProcessed: this.filesProcessed,\n currentFile: filename,\n currentFileProgress,\n overallProgress: this.overallProgress\n }\n\n this.progressCallback(progressData)\n }\n }\n}\n\nmodule.exports = ProgressReport\n'use strict'\n\nconst { detectAll, toISO3, toISO2, langName, supportedLanguages } = require('tinyld/heavy')\n\n/**\n * @typedef {Object} Language\n * @property {string} code - ISO 639-1 code.\n * @property {string} language - The language name.\n */\n\n/**\n * @typedef {Object} LanguageProbability\n * @property {string} code - ISO 639-1 code.\n * @property {string} language - The language name.\n * @property {number} probability - The probability of the language being detected.\n */\n\nlet langNameMap = null\n\n/**\n * Detects the most probable language for a given text.\n * @param {string} text The text to analyze.\n * @returns {Object} The detected language or `Undetermined` if no language is detected.\n */\nfunction detectOne (text) {\n if (typeof text !== 'string' || text.trim().length === 0) {\n return {\n code: 'und',\n language: 'Undetermined'\n }\n }\n\n const results = detectAll(text)\n if (results.length === 0) {\n return {\n code: 'und',\n language: 'Undetermined'\n }\n }\n\n const code = results[0].lang\n return {\n code,\n language: langName(toISO3(code))\n }\n}\n\n/**\n * Detect multiple probable languages for a given text.\n * @param {string} text The text to analyze.\n * @param {number} topK Number of top probable languages to return.\n * @returns {Array} A list of probable languages with probabilities.\n */\nfunction detectMultiple (text, topK = 3) {\n if (typeof text !== 'string' || text.trim().length === 0) {\n return [{\n code: 'und',\n language: 'Undetermined',\n probability: 1\n }]\n }\n\n if (typeof topK !== 'number' || topK <= 0) {\n topK = 3\n }\n\n const results = detectAll(text)\n if (results.length === 0) {\n return [{\n code: 'und',\n language: 'Undetermined',\n probability: 1\n }]\n }\n return results.slice(0, topK).map(({ lang, accuracy }) => {\n const code = lang\n return { code, language: langName(toISO3(code)), probability: accuracy }\n })\n}\n\n/**\n * Gets the language name from either an ISO2 or ISO3 language code.\n * @param {string} code The ISO2 or ISO3 language code.\n * @returns {string | null} The language name or null if code is not found.\n */\nfunction getLangName (code) {\n if (typeof code !== 'string' || code.trim().length === 0) {\n return null\n }\n\n const normalizedCode = code.trim().toLowerCase()\n\n try {\n let result = ''\n\n if (normalizedCode.length === 2) {\n const iso3 = toISO3(normalizedCode)\n if (iso3) {\n result = langName(iso3)\n }\n } else if (normalizedCode.length === 3) {\n result = langName(normalizedCode)\n }\n\n return (result && result.trim().length > 0) ? result : null\n } catch (error) {\n return null\n }\n}\n\n/**\n * Gets the ISO2 code from a language name.\n * @param {string} languageName The language name.\n * @returns {string | null} The ISO2 code or null if language name is not found.\n */\nfunction getISO2FromName (languageName) {\n if (typeof languageName !== 'string' || languageName.trim().length === 0) {\n return null\n }\n\n if (langNameMap === null) {\n langNameMap = {}\n supportedLanguages.forEach(iso3 => {\n const name = langName(iso3).toLowerCase()\n const iso2 = toISO2(iso3)\n langNameMap[name] = { iso2, iso3 }\n })\n }\n\n const normalizedName = languageName.trim().toLowerCase()\n const langInfo = langNameMap[normalizedName]\n\n return langInfo ? langInfo.iso2 : null\n}\n\nmodule.exports = {\n detectOne,\n detectMultiple,\n getLangName,\n getISO2FromName\n}\n{\n \"name\": \"@qvac/langdetect-text\",\n \"version\": \"0.1.2\",\n \"description\": \"\",\n \"main\": \"index.js\",\n \"types\": \"index.d.ts\",\n \"scripts\": {\n \"coverage\": \"nyc npm run test\",\n \"test\": \"npm run test:unit && npm run test:integration\",\n \"lint\": \"standard\",\n \"lint:fix\": \"standard --fix\",\n \"test:dts\": \"tsc index.d.ts --noEmit\",\n \"test:unit:generate\": \"brittle -r test/unit/all.js test/unit/*.test.js\",\n \"test:unit\": \"npm run test:unit:generate && bare test/unit/all.js\",\n \"test:integration:generate\": \"brittle -r test/integration/all.js test/integration/*.test.js\",\n \"test:integration\": \"npm run test:integration:generate && bare test/integration/all.js\"\n },\n \"author\": \"Tether\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tinyld\": \"1.3.4\"\n },\n \"devDependencies\": {\n \"@types/node\": \"22.12.0\",\n \"brittle\": \"3.10.0\",\n \"nyc\": \"17.1.0\",\n \"standard\": \"17.1.2\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/tetherto/qvac.git\",\n \"directory\": \"packages/qvac-lib-langdetect-text\"\n },\n \"bugs\": \"https://github.com/tetherto/qvac/issues\",\n \"homepage\": \"https://github.com/tetherto/qvac/tree/main/packages/qvac-lib-langdetect-text#readme\",\n \"files\": [\n \"src\",\n \"index.d.ts\",\n \"LICENSE\",\n \"NOTICE\"\n ]\n}\nconst path = require('bare-path')\n\n// Index-matched to the C++ GenerationStopReason enum (SequenceDriver.hpp).\nconst STOP_REASONS = [\n 'none',\n 'eos',\n 'antiprompt',\n 'predictionLimit',\n 'sequenceLimit',\n 'contextOverflow'\n]\n\n/**\n * Normalize a raw native event into `Output` / `Error` / `JobEnded` /\n * `FinetuneProgress`, or `null` to drop it. `state.skipNextRuntimeStats`\n * is used to swallow the TPS trailer that follows a finetune terminal.\n *\n * @param {string} rawEvent\n * @param {*} rawData\n * @param {*} rawError\n * @param {{ skipNextRuntimeStats: boolean }} state\n * @returns {{ type: string, data: *, error: * } | null}\n */\nfunction mapAddonEvent(rawEvent, rawData, rawError, state) {\n // TPS-shaped runtime stats — either a real inference terminal or the stale\n // trailer that follows a finetune terminal.\n if (rawData && typeof rawData === 'object' && 'TPS' in rawData) {\n if (state.skipNextRuntimeStats) {\n state.skipNextRuntimeStats = false\n return null\n }\n const stats = { ...rawData }\n if (stats.backendDevice === 0) {\n stats.backendDevice = 'cpu'\n } else if (stats.backendDevice === 1) {\n stats.backendDevice = 'gpu'\n }\n if (typeof stats.stopReason === 'number') {\n stats.stopReason = STOP_REASONS[stats.stopReason] || 'none'\n }\n return { type: 'JobEnded', data: stats, error: null }\n }\n\n // Finetune terminal: dispatch JobEnded carrying the finetune payload and arm\n // the skip flag so the TPS the C++ addon emits right after is not mistaken\n // for an inference result that would clobber `_hasActiveResponse`.\n if (\n rawData &&\n typeof rawData === 'object' &&\n rawData.op === 'finetune' &&\n typeof rawData.status === 'string'\n ) {\n state.skipNextRuntimeStats = true\n return { type: 'JobEnded', data: rawData, error: null }\n }\n\n // Per-iteration finetune metrics.\n if (rawData && typeof rawData === 'object' && rawData.type === 'finetune_progress') {\n return { type: 'FinetuneProgress', data: rawData, error: null }\n }\n if (\n rawData &&\n typeof rawData === 'object' &&\n rawData.type === 'batch_output' &&\n typeof rawData.id === 'string'\n ) {\n return { type: 'BatchOutput', data: rawData, error: null }\n }\n if (Array.isArray(rawData)) {\n return { type: 'BatchResult', data: rawData, error: null }\n }\n\n // Name-based mapping. LogMsg must be checked before the string-to-Output\n // fallback: `JsLogMsgOutputHandler` delivers the log as a plain string,\n // so without this branch it would be misrouted into the job output.\n let type = rawEvent\n if (typeof rawEvent === 'string' && rawEvent.includes('Error')) {\n type = 'Error'\n } else if (typeof rawEvent === 'string' && rawEvent.includes('LogMsg')) {\n type = 'LogMsg'\n } else if (typeof rawData === 'string') {\n type = 'Output'\n }\n return { type, data: rawData, error: rawError }\n}\n\n/**\n * An interface between Bare addon in C++ and JS runtime.\n */\nclass LlamaInterface {\n /**\n *\n * @param {Object} configurationParams - all the required configuration for inference setup\n * @param {Function} outputCb - to be called on any inference event ( started, new output, error, etc )\n */\n constructor(binding, configurationParams, outputCb) {\n this._binding = binding\n\n if (!configurationParams.config) {\n configurationParams.config = {}\n }\n\n if (!configurationParams.config.backendsDir) {\n configurationParams.config.backendsDir = path.join(__dirname, 'prebuilds')\n }\n\n this._handle = this._binding.createInstance(this, configurationParams, outputCb, null)\n }\n\n /**\n * @param {Object} weightsData\n * @param {String} weightsData.filename\n * @param {Uint8Array|null} weightsData.chunk\n * @param {Boolean} weightsData.completed\n */\n async loadWeights(weightsData) {\n this._binding.loadWeights(this._handle, weightsData)\n }\n\n /**\n * Moves addon to the LISTENING state after all the initialization is done\n */\n async activate() {\n this._binding.activate(this._handle)\n }\n\n /**\n * Cancel current inference job\n */\n async cancel(savePauseCheckpoint = 1) {\n if (!this._handle) return\n await this._binding.cancel(this._handle, savePauseCheckpoint)\n }\n\n /**\n * Run finetuning when native binding provides support.\n */\n async finetune(finetuningParams) {\n if (typeof this._binding.finetune !== 'function') {\n throw new Error('Finetuning is not exposed by this native binding')\n }\n if (finetuningParams === undefined) {\n throw new Error('Finetuning parameters are required')\n }\n return this._binding.finetune(this._handle, finetuningParams)\n }\n\n /**\n * Run one inference job with an array of message objects.\n * @param {Array<{type: string, input?: string, content?: Uint8Array}>} data - messages (text and/or media)\n */\n async runJob(data) {\n return this._binding.runJob(this._handle, data)\n }\n\n /**\n * Unload the model and clear resources (including memory).\n */\n async unload() {\n if (!this._handle) return\n this._binding.destroyInstance(this._handle)\n this._handle = null\n }\n}\n\nmodule.exports = {\n LlamaInterface,\n mapAddonEvent\n}\nconst binding = require('./binding')\n\nmodule.exports = {\n setLogger: binding.setLogger,\n releaseLogger: binding.releaseLogger\n}\n'use strict'\n\nconst { QvacResponse } = require('@qvac/infer-base')\n\nconst RUN_BUSY_ERROR_MESSAGE = 'Cannot set new job: a job is already set or being processed'\n\n/**\n * Encapsulates the JS-side continuous-batching flow that sits on top of\n * `LlmLlamacpp`: input classification, prompt unwrapping, native\n * `runJob` admission, and reassembly of streaming `BatchOutput` chunks\n * plus the final ordered `BatchResult` array delivered alongside the\n * addon's terminal `JobEnded` event.\n */\nclass BatchHandler {\n /**\n * @param {Object} deps\n * @param {Object} deps.job - exclusive job handler from LlmLlamacpp\n * @param {Function} deps.parsePrompt - (prompt, runOptions) -> addon messages\n * @param {Function} deps.cancelHandler - cancels the in-flight job\n * @param {Function} deps.runJob - (items) => Promise<{accepted, ids}> admission result\n */\n constructor({ job, parsePrompt, cancelHandler, runJob }) {\n this._job = job\n this._parsePrompt = parsePrompt\n this._cancelHandler = cancelHandler\n this._runJob = runJob\n this._activeIds = null\n this._pendingResult = null\n }\n\n /**\n * Classify a `run()` argument. Batch inputs are arrays of either raw\n * `Message[]` prompts or `{ id?, prompt, runOptions? }` wrappers; the\n * single-prompt path keeps the legacy `Message[]` shape.\n */\n static isBatchInput(prompt) {\n if (!Array.isArray(prompt) || prompt.length === 0) return false\n const first = prompt[0]\n return (\n Array.isArray(first) ||\n (first && typeof first === 'object' && !Array.isArray(first) && Array.isArray(first.prompt))\n )\n }\n\n get isActive() {\n return this._activeIds !== null\n }\n\n /**\n * Ship a batch input to the native addon. Returns the `QvacResponse`\n * carrying `response.ids` so consumers can correlate streaming chunks.\n * Caller guards against busy state before invoking; this method only\n * mutates active-batch state once admission succeeds.\n */\n async run(batchInput) {\n const items = this._unwrapItems(batchInput)\n const response = new QvacResponse({ cancelHandler: this._cancelHandler })\n this._job.startWith(response)\n\n let result\n try {\n result = await this._runJob(items)\n } catch (err) {\n this._job.fail(err)\n throw err\n }\n if (!result.accepted) {\n this._job.fail(new Error(RUN_BUSY_ERROR_MESSAGE))\n throw new Error(RUN_BUSY_ERROR_MESSAGE)\n }\n\n response.ids = result.ids\n this._activeIds = result.ids\n this._pendingResult = null\n return response\n }\n\n /** Forward a streaming `BatchOutput` event into the active job. */\n onOutput(data) {\n this._job.output({ id: data.id, chunk: data.output })\n }\n\n /** Stash the final ordered output array so JobEnded can package it. */\n onResult(data) {\n this._pendingResult = data\n }\n\n /**\n * If a batch is in flight, build the `[ { id, output } ]` array that\n * the consumer-facing `await()` resolves with. Returns `null` for\n * non-batch jobs so the caller can fall back to its own JobEnded path.\n */\n buildFinalResultIfActive() {\n if (!this._activeIds) return null\n const outputs = Array.isArray(this._pendingResult) ? this._pendingResult : []\n return this._activeIds.map((id, index) => ({\n id,\n output: outputs[index] || ''\n }))\n }\n\n /** Drop active-batch state; called from the response-finalized hook. */\n clear() {\n this._activeIds = null\n this._pendingResult = null\n }\n\n _unwrapItems(batchInput) {\n return batchInput.map((item) => {\n const isWrapped =\n item && typeof item === 'object' && !Array.isArray(item) && Array.isArray(item.prompt)\n const prompt = isWrapped ? item.prompt : item\n const itemRunOptions = isWrapped && item.runOptions !== undefined ? item.runOptions : {}\n const unwrapped = { messages: this._parsePrompt(prompt, itemRunOptions) }\n if (isWrapped && item.id !== undefined) unwrapped.id = item.id\n return unwrapped\n })\n }\n}\n\nmodule.exports = BatchHandler\nmodule.exports.RUN_BUSY_ERROR_MESSAGE = RUN_BUSY_ERROR_MESSAGE\nmodule.exports = require.addon()\n'use strict'\n\nconst fs = require('bare-fs')\nconst path = require('bare-path')\nconst QvacLogger = require('@qvac/logging')\nconst { createJobHandler, exclusiveRunQueue } = require('@qvac/infer-base')\nconst { LlamaInterface, mapAddonEvent } = require('./addon')\nconst BatchHandler = require('./batchHandler')\n\nconst { RUN_BUSY_ERROR_MESSAGE } = BatchHandler\n\nfunction normalizeRunOptions(runOptions) {\n if (runOptions === undefined) {\n return {\n prefill: false,\n generationParams: undefined,\n cacheKey: undefined,\n saveCacheToDisk: false\n }\n }\n\n if (!runOptions || typeof runOptions !== 'object' || Array.isArray(runOptions)) {\n throw new TypeError('Run options must be an object when provided')\n }\n\n if (runOptions.prefill !== undefined && typeof runOptions.prefill !== 'boolean') {\n throw new TypeError('prefill must be a boolean when provided')\n }\n\n if (\n runOptions.generationParams !== undefined &&\n (typeof runOptions.generationParams !== 'object' ||\n runOptions.generationParams === null ||\n Array.isArray(runOptions.generationParams))\n ) {\n throw new TypeError('generationParams must be a plain object when provided')\n }\n\n if (runOptions.cacheKey !== undefined && typeof runOptions.cacheKey !== 'string') {\n throw new TypeError('cacheKey must be a string when provided')\n }\n\n if (runOptions.saveCacheToDisk !== undefined && typeof runOptions.saveCacheToDisk !== 'boolean') {\n throw new TypeError('saveCacheToDisk must be a boolean when provided')\n }\n\n return {\n prefill: runOptions.prefill === true,\n generationParams: normalizeGenerationParams(runOptions.generationParams),\n cacheKey: runOptions.cacheKey,\n saveCacheToDisk: runOptions.saveCacheToDisk === true\n }\n}\n\nfunction promptToAddonMessages(prompt, runOptions) {\n if (!Array.isArray(prompt)) {\n throw new TypeError('Prompt input must be Message[]')\n }\n\n const { prefill, generationParams, cacheKey, saveCacheToDisk } = normalizeRunOptions(runOptions)\n\n const textMessages = []\n const mediaItems = []\n\n for (const message of prompt) {\n if (\n message.role === 'user' &&\n message.type === 'media' &&\n message.content instanceof Uint8Array\n ) {\n mediaItems.push(message.content)\n textMessages.push({ ...message, content: '' })\n } else {\n textMessages.push(message)\n }\n }\n\n const promptMessages = []\n\n for (const mediaData of mediaItems) {\n promptMessages.push({ type: 'media', content: mediaData })\n }\n\n promptMessages.push({\n type: 'text',\n input: JSON.stringify(textMessages),\n prefill,\n generationParams,\n cacheKey,\n saveCacheToDisk\n })\n\n return promptMessages\n}\n\n// Normalizes the per-request `generationParams.json_schema` field. The\n// addon binding expects a string; callers commonly pass a plain object\n// (a JSON Schema literal) for ergonomics, so we stringify it here. Also\n// validates the mutual exclusion with `grammar`, since enforcing it at\n// the JS boundary gives a clearer error than letting the C++ throw.\nfunction normalizeGenerationParams(generationParams) {\n if (generationParams === undefined) return undefined\n\n if (\n generationParams.remove_thinking_from_context !== undefined &&\n typeof generationParams.remove_thinking_from_context !== 'boolean'\n ) {\n throw new TypeError(\n 'generationParams.remove_thinking_from_context must be a boolean when provided'\n )\n }\n\n const hasGrammar =\n typeof generationParams.grammar === 'string' && generationParams.grammar.length > 0\n const hasJsonSchema =\n generationParams.json_schema !== undefined &&\n generationParams.json_schema !== null &&\n !(typeof generationParams.json_schema === 'string' && generationParams.json_schema.length === 0)\n\n if (hasGrammar && hasJsonSchema) {\n throw new TypeError(\n 'generationParams.grammar and generationParams.json_schema are mutually exclusive'\n )\n }\n\n if (!hasJsonSchema) return generationParams\n\n let jsonSchemaString\n if (typeof generationParams.json_schema === 'string') {\n jsonSchemaString = generationParams.json_schema\n } else if (\n typeof generationParams.json_schema === 'object' &&\n !Array.isArray(generationParams.json_schema)\n ) {\n try {\n jsonSchemaString = JSON.stringify(generationParams.json_schema)\n } catch (err) {\n throw new TypeError('generationParams.json_schema is not JSON-serializable: ' + err.message)\n }\n } else {\n throw new TypeError(\n 'generationParams.json_schema must be a JSON Schema object or a JSON Schema string'\n )\n }\n\n return { ...generationParams, json_schema: jsonSchemaString }\n}\n\nconst VALIDATION_TYPES = ['none', 'split', 'dataset']\nconst DEFAULT_VALIDATION_FRACTION = 0.05\n\nfunction normalizeFinetuneParams(opts) {\n const validation = opts.validation\n if (Object.prototype.hasOwnProperty.call(opts, 'evalDatasetPath')) {\n throw new Error(\n \"Top-level evalDatasetPath is no longer supported. Use validation.path with validation.type set to 'dataset'.\"\n )\n }\n if (validation == null || typeof validation !== 'object' || !('type' in validation)) {\n throw new Error(\n \"Finetuning options must include validation: { type: 'none' | 'split' | 'dataset'[, fraction?: number][, path?: string] }. \" +\n \"Example: validation: { type: 'split', fraction: 0.05 }, validation: { type: 'dataset', path: './eval.jsonl' }, or validation: { type: 'none' }.\"\n )\n }\n const out = { ...opts }\n const type = validation.type\n if (!VALIDATION_TYPES.includes(type)) {\n throw new Error(`validation.type must be one of ${VALIDATION_TYPES.join(', ')}; got: ${type}`)\n }\n if (type === 'none') {\n out.validationSplit = 0\n out.useEvalDatasetForValidation = false\n delete out.evalDatasetPath\n } else if (type === 'split') {\n const fraction = validation.fraction ?? DEFAULT_VALIDATION_FRACTION\n out.validationSplit = Math.max(0, Math.min(1, Number(fraction)))\n out.useEvalDatasetForValidation = false\n delete out.evalDatasetPath\n } else {\n const evalPath = validation.path\n if (!evalPath || typeof evalPath !== 'string' || evalPath.trim() === '') {\n throw new Error(\n \"validation.type is 'dataset' but no path is provided. Set validation.path to the eval dataset file path (e.g. validation: { type: 'dataset', path: './eval.jsonl' }).\"\n )\n }\n if (evalPath === opts.trainDatasetDir) {\n throw new Error(\n \"validation.type is 'dataset' but validation.path is the same as trainDatasetDir. Provide a separate eval dataset path.\"\n )\n }\n out.evalDatasetPath = evalPath\n out.validationSplit = 0\n out.useEvalDatasetForValidation = true\n }\n delete out.validation\n return out\n}\n\n/**\n * Returns the first shard (matching `-NNNNN-of-MMMMM.gguf`) or the sole\n * entry for single-file models. Matches the C++ shard-expansion contract\n * in `GGUFShards::expandGGUFIntoShards`.\n *\n * @param {string[]} files - ordered array of absolute paths\n * @returns {string}\n */\nfunction pickPrimaryGgufPath(files) {\n const SHARD_REGEX = /-\\d+-of-\\d+\\.gguf$/\n return files.find((p) => SHARD_REGEX.test(p)) || files[0]\n}\n\n// Replace media Uint8Array contents with a small summary so the logger never\n// asks V8 to JSON.stringify multi-MB binary blobs.\nfunction sanitizePromptForLog(prompt) {\n if (!Array.isArray(prompt)) return prompt\n return prompt.map((msg) => {\n if (msg && msg.type === 'media' && msg.content instanceof Uint8Array) {\n return { ...msg, content: `[Uint8Array byteLength=${msg.content.byteLength}]` }\n }\n return msg\n })\n}\n\n/** LLM client wrapping the native LlamaInterface for inference, finetuning, and pause/resume. */\nclass LlmLlamacpp {\n constructor({ files, config, logger = null, opts = {} }) {\n if (!files || !Array.isArray(files.model) || files.model.length === 0) {\n throw new TypeError('files.model must be a non-empty array of absolute paths')\n }\n for (const [i, entry] of files.model.entries()) {\n if (typeof entry !== 'string' || entry.length === 0) {\n throw new TypeError(`files.model[${i}] must be an absolute path string`)\n }\n if (!path.isAbsolute(entry)) {\n throw new TypeError(`files.model[${i}] must be an absolute path (got: ${entry})`)\n }\n }\n if (files.projectionModel !== undefined) {\n if (typeof files.projectionModel !== 'string' || files.projectionModel.length === 0) {\n throw new TypeError('files.projectionModel must be an absolute path string')\n }\n if (!path.isAbsolute(files.projectionModel)) {\n throw new TypeError(\n `files.projectionModel must be an absolute path (got: ${files.projectionModel})`\n )\n }\n }\n this._files = files.model\n this._projectionModelPath = files.projectionModel || ''\n this._config = config\n this.logger = new QvacLogger(logger)\n this.opts = opts\n // Lazy deref + optional chain: safe before `_load()` and after `unload()`.\n this._job = createJobHandler({ cancel: () => this.addon?.cancel() })\n this._run = exclusiveRunQueue()\n this.addon = null\n this._checkpointSaveDir = null\n this._hasActiveResponse = false\n this._batchHandler = new BatchHandler({\n job: this._job,\n parsePrompt: promptToAddonMessages,\n cancelHandler: () => this.addon?.cancel(),\n runJob: (items) => this.addon.runJob(items)\n })\n // Carried across mapAddonEvent calls to drop the post-finetune TPS trailer.\n this._addonEventState = { skipNextRuntimeStats: false }\n this.state = { configLoaded: false }\n }\n\n async load() {\n return this._run(async () => {\n if (this.state.configLoaded) return\n await this._load()\n this.state.configLoaded = true\n })\n }\n\n async _load() {\n this.logger.info('Starting model load')\n const primaryGgufPath = pickPrimaryGgufPath(this._files)\n const configurationParams = {\n path: primaryGgufPath,\n projectionPath: this._projectionModelPath,\n config: { ...this._config }\n }\n\n this.logger.info('Creating addon with configuration:', configurationParams)\n\n try {\n this.addon = this._createAddon(configurationParams)\n if (this._files.length > 1) {\n await this._streamShards()\n }\n this.logger.info('Activating addon')\n await this.addon.activate()\n } catch (loadError) {\n this.logger.error('Error during model load:', loadError)\n // Best-effort cleanup of the partially-initialized addon so a subsequent\n // load() does not leak a zombie native instance.\n try {\n await this.addon?.unload?.()\n } catch (_) {}\n this.addon = null\n throw loadError\n }\n this.logger.info('Model load completed successfully')\n }\n\n async _streamShards() {\n for (const filePath of this._files) {\n const filename = path.basename(filePath)\n const stream = fs.createReadStream(filePath)\n for await (const chunk of stream) {\n await this.addon.loadWeights({ filename, chunk, completed: false })\n }\n await this.addon.loadWeights({ filename, chunk: null, completed: true })\n this.logger.info(`Streamed weights for ${filename}`)\n }\n }\n\n /**\n * Public API entrypoint for inference.\n * @param {Message[]} prompt - Input prompt array of messages\n * @param {RunOptions} [runOptions] - Optional run settings (prefill, generationParams, cacheKey, saveCacheToDisk)\n * @returns {Promise}\n */\n async run(prompt, runOptions) {\n if (BatchHandler.isBatchInput(prompt)) {\n if (runOptions !== undefined) {\n throw new TypeError('Batch run options must be set per BatchPrompt item')\n }\n return this._run(() => this._runBatchInternal(prompt))\n }\n return this._run(() => this._runInternal(prompt, runOptions))\n }\n\n async _runBatchInternal(batchInput) {\n if (!this.addon) {\n throw new Error('Addon not initialized. Call load() first.')\n }\n if (this._hasActiveResponse) {\n throw new Error(RUN_BUSY_ERROR_MESSAGE)\n }\n\n const response = await this._batchHandler.run(batchInput)\n\n this._hasActiveResponse = true\n const finalized = response.await().finally(() => {\n this._hasActiveResponse = false\n this._batchHandler.clear()\n })\n finalized.catch((err) => {\n this.logger?.warn?.('Batch inference response rejected:', err?.message || err)\n })\n response.await = () => finalized\n\n return response\n }\n\n async _runInternal(prompt, runOptions = {}) {\n if (!this.addon) {\n throw new Error('Addon not initialized. Call load() first.')\n }\n if (this._hasActiveResponse) {\n throw new Error(RUN_BUSY_ERROR_MESSAGE)\n }\n\n this.logger.info('Starting inference with prompt:', sanitizePromptForLog(prompt))\n const promptMessages = promptToAddonMessages(prompt, runOptions)\n\n const response = this._job.start()\n\n let accepted\n try {\n accepted = await this.addon.runJob(promptMessages)\n } catch (error) {\n this._job.fail(error)\n throw error\n }\n if (!accepted) {\n this._job.fail(new Error(RUN_BUSY_ERROR_MESSAGE))\n throw new Error(RUN_BUSY_ERROR_MESSAGE)\n }\n\n this._hasActiveResponse = true\n const finalized = response.await().finally(() => {\n this._hasActiveResponse = false\n })\n finalized.catch((err) => {\n this.logger?.warn?.('Inference response rejected:', err?.message || err)\n })\n response.await = () => finalized\n\n this.logger.info('Inference job started successfully')\n return response\n }\n\n async finetune(finetuningOptions = undefined) {\n if (!finetuningOptions) {\n throw new Error('Finetuning parameters are required.')\n }\n const paramsToSend = normalizeFinetuneParams(finetuningOptions)\n this.logger.info('finetune() called')\n this.logger.info('Finetuning parameters:', finetuningOptions)\n\n return this._run(async () => {\n if (!this.addon) {\n throw new Error('Addon not initialized. Call load() first.')\n }\n if (this._hasActiveResponse) {\n throw new Error(RUN_BUSY_ERROR_MESSAGE)\n }\n if (finetuningOptions.checkpointSaveDir) {\n this._checkpointSaveDir = finetuningOptions.checkpointSaveDir\n }\n\n const response = this._job.start()\n let accepted\n try {\n accepted = await this.addon.finetune(paramsToSend)\n } catch (err) {\n this._job.fail(err)\n throw err\n }\n\n if (!accepted) {\n this._job.fail(new Error(RUN_BUSY_ERROR_MESSAGE))\n throw new Error(RUN_BUSY_ERROR_MESSAGE)\n }\n\n this._hasActiveResponse = true\n const finalized = response.await().finally(() => {\n this._hasActiveResponse = false\n })\n finalized.catch((err) => {\n this.logger?.warn?.('Finetune response rejected:', err?.message || err)\n })\n response.await = () => finalized\n return response\n })\n }\n\n _handleAddonOutputEvent(eventType, data, error) {\n if (eventType === 'LogMsg') {\n const logMsg = typeof data === 'string' ? data : data?.message || JSON.stringify(data)\n this.logger?.info?.(logMsg)\n return\n }\n\n if (eventType === 'Error') {\n this.logger.error('Job failed with error:', error)\n this._job.fail(error)\n } else if (eventType === 'BatchOutput') {\n this._batchHandler.onOutput(data)\n } else if (eventType === 'BatchResult') {\n this._batchHandler.onResult(data)\n } else if (eventType === 'Output') {\n this._job.output(data)\n } else if (eventType === 'FinetuneProgress') {\n if (this.opts.stats && data && data.stats) {\n this._job.active?.updateStats(data.stats)\n }\n } else if (eventType === 'JobEnded') {\n this.logger.info('Job completed')\n const isFinetuneTerminal =\n data &&\n typeof data === 'object' &&\n data.op === 'finetune' &&\n typeof data.status === 'string'\n if (isFinetuneTerminal) {\n this._job.end(null, data)\n } else {\n const batchResult = this._batchHandler.buildFinalResultIfActive()\n if (batchResult !== null) {\n this._job.end(this.opts.stats ? data : null, batchResult)\n } else {\n this._job.end(this.opts.stats ? data : null)\n }\n }\n }\n }\n\n _addonOutputCallback(addon, event, data, error) {\n const mapped = mapAddonEvent(event, data, error, this._addonEventState)\n if (mapped === null) return\n this._handleAddonOutputEvent(mapped.type, mapped.data, mapped.error)\n }\n\n /**\n * Instantiate the native addon with the given parameters.\n * @param {Object} configurationParams - Configuration parameters for the addon\n * @param {string} configurationParams.path - Absolute path to the primary model file (first shard for sharded models)\n * @param {string} configurationParams.projectionPath - Absolute path to the multimodal projection model, or '' when not provided\n * @param {Object} configurationParams.config - LLM-specific settings\n * @returns {Addon} The instantiated addon interface\n */\n _createAddon(configurationParams) {\n const binding = require('./binding')\n return new LlamaInterface(binding, configurationParams, this._addonOutputCallback.bind(this))\n }\n\n /**\n * Pause finetuning, saving a checkpoint so training can resume later.\n * Also cancels any inference job in flight.\n */\n async pause() {\n if (this.addon?.cancel) {\n await this.addon.cancel(1)\n }\n }\n\n /**\n * Cancel finetuning and remove the pause checkpoint so the next\n * `finetune()` call starts fresh instead of resuming. Also cancels\n * any inference job in flight.\n */\n async cancel() {\n if (this.addon?.cancel) {\n await this.addon.cancel(0)\n }\n this._clearPauseCheckpoints()\n }\n\n _clearPauseCheckpoints() {\n const checkpointDir = this._checkpointSaveDir\n if (!checkpointDir) return\n try {\n const entries = fs.readdirSync(checkpointDir, { withFileTypes: true })\n for (const entry of entries) {\n if (entry.isDirectory() && entry.name.startsWith('pause_checkpoint_step_')) {\n fs.rmSync(path.join(checkpointDir, entry.name), { recursive: true, force: true })\n }\n }\n } catch (err) {\n this.logger.error('Failed to clear pause checkpoints:', err)\n }\n }\n\n /**\n * Unload the model safely by cancelling the in-flight job and releasing\n * native resources. Subsequent calls to `run()` / `finetune()` / `cancel()`\n * are safe; they hit the `!this.addon` guard and throw or no-op.\n * @returns {Promise}\n */\n async unload() {\n return this._run(async () => {\n try {\n await this.pause()\n } catch (_) {}\n if (this._job.active) {\n this._job.fail(new Error('Model was unloaded'))\n }\n this._hasActiveResponse = false\n if (this.addon) {\n await this.addon.unload()\n // Null the addon reference so post-unload `cancel()` / `run()` calls hit the\n // `if (!this.addon)` guard instead of dereferencing a disposed native handle.\n this.addon = null\n }\n this.state.configLoaded = false\n })\n }\n\n getState() {\n return this.state\n }\n}\n\nmodule.exports = LlmLlamacpp\nmodule.exports.pickPrimaryGgufPath = pickPrimaryGgufPath\n{\n \"name\": \"@qvac/llm-llamacpp\",\n \"version\": \"0.38.2\",\n \"description\": \"llama addon for qvac\",\n \"addon\": true,\n \"scripts\": {\n \"build\": \"bare-make generate && bare-make build && bare-make install\",\n \"build:pack\": \"mkdir -p dist && npm pack --pack-destination dist\",\n \"mobile:copy-prebuilds\": \"cp -r prebuilds/android-arm64 prebuilds/android-ia32 || echo 'Warning: Failed to copy llamacpp prebuilds to android-ia32'; cp -r prebuilds/android-arm64 prebuilds/android-arm || echo 'Warning: Failed to copy llamacpp prebuilds to android-arm'; cp -r prebuilds/android-arm64 prebuilds/android-x64 || echo 'Warning: Failed to copy llamacpp prebuilds to android-x64'; cp -r prebuilds/ios-arm64 prebuilds/ios-arm64-simulator 2>/dev/null || echo 'iOS prebuilds already present'; cp -r prebuilds/ios-arm64 prebuilds/ios-x64-simulator 2>/dev/null || echo 'iOS prebuilds already present'\",\n \"lint\": \"prettier --check \\\"**/*.{js,cjs,mjs}\\\" && lunte\",\n \"format\": \"prettier --write \\\"**/*.{js,cjs,mjs}\\\"\",\n \"lint-cpp\": \"clang-tidy -p build $(find addon -name '*.cpp')\",\n \"quickstart\": \"node -e \\\"const fs=require('fs');const path=require('path');const {execSync}=require('child_process');const prebuilds=path.join(process.cwd(),'prebuilds');const source=path.join(process.cwd(),'node_modules','@qvac','llm-llamacpp','prebuilds');if(!fs.existsSync(prebuilds)){if(!fs.existsSync(source)){execSync('npm install @qvac/llm-llamacpp@latest',{stdio:'inherit'});}if(!fs.existsSync(source)){throw new Error('Prebuilds not found after install.');}fs.cpSync(source,prebuilds,{recursive:true});}execSync('bare examples/quickstart.js',{stdio:'inherit'});\\\"\",\n \"update:quickstart-section\": \"node ./scripts/quickstart-testing/update_readme.js\",\n \"test:integration\": \"npm run test:integration:generate && bare test/integration/all.js --exit\",\n \"test:mobile:generate\": \"npm run generate:benchmark-shards && bare ./scripts/generate-mobile-integration-tests.js\",\n \"test:mobile:validate\": \"npm run generate:benchmark-shards && node scripts/validate-mobile-tests.js\",\n \"test:dts\": \"tsc -p tsconfig.dts.json\",\n \"generate:benchmark-shards\": \"node scripts/generate-benchmark-shards.js\",\n \"verify:benchmark-shards\": \"node scripts/generate-benchmark-shards.js --check\",\n \"test:integration:generate\": \"npm run generate:benchmark-shards && brittle -r test/integration/all.js test/integration/*.test.js && npm run test:mobile:generate\",\n \"test:unit:generate\": \"brittle -r test/unit/all.js test/unit/*.test.js\",\n \"test:prestage\": \"node --test scripts/__tests__/*.test.js ../../.github/actions/cache-models/warm-models.test.mjs\",\n \"test:unit\": \"npm run test:unit:generate && bare test/unit/all.js --exit && npm run test:prestage\",\n \"test:cpp:build\": \"bare-make generate -D BUILD_TESTING=ON && bare-make build --target addon-test\",\n \"test:cpp:models\": \"node scripts/download-unit-test-models.js\",\n \"test:cpp:models:ci\": \"node scripts/download-unit-test-models.js --ci\",\n \"test:cpp:run\": \"node scripts/run-cpp-tests.js\",\n \"test:cpp:run:ci\": \"node scripts/run-cpp-tests.js --ci\",\n \"test:cpp\": \"npm run test:cpp:build && npm run test:cpp:run\",\n \"coverage:cpp:build\": \"bare-make generate -D BUILD_TESTING=ON -D ENABLE_COVERAGE=ON && bare-make build --target addon-test\",\n \"coverage:cpp:run\": \"node scripts/run-cpp-tests.js --coverage\",\n \"coverage:cpp:run:ci\": \"node scripts/run-cpp-tests.js --coverage --ci\",\n \"coverage:cpp:summary\": \"cd build/test/unit && llvm-cov report ./addon-test --instr-profile=coverage.profdata -ignore-filename-regex='(tests|build|node_modules|gtest|gmock|\\\\.vcpkg|/usr)/' > coverage-summary.txt\",\n \"coverage:cpp:report\": \"cd build/test/unit/ && ls -lha && llvm-profdata merge -sparse default.profraw -o coverage.profdata && llvm-cov show ./addon-test -instr-profile=coverage.profdata -format=html -output-dir=coverage-html -ignore-filename-regex='(tests|build|node_modules|gtest|gmock|\\\\.vcpkg|/usr)/' && llvm-cov export ./addon-test -instr-profile=coverage.profdata -format=lcov -ignore-filename-regex='(tests|build|node_modules|gtest|gmock|\\\\.vcpkg|/usr)/' > lcov.info && npm run coverage:cpp:summary\",\n \"coverage:cpp\": \"npm run coverage:cpp:build && npm run coverage:cpp:run && npm run coverage:cpp:report\",\n \"test:all\": \"npm run test:unit && npm run test:integration && npm run test:cpp\",\n \"benchmarks\": \"./benchmarks/run-benchmarks.sh\",\n \"benchmarks:windows\": \"powershell -ExecutionPolicy Bypass -File ./benchmarks/run-benchmarks.ps1\"\n },\n \"files\": [\n \"binding.js\",\n \"index.js\",\n \"batchHandler.js\",\n \"addon.js\",\n \"addonLogging.js\",\n \"addonLogging.d.ts\",\n \"prebuilds\",\n \"index.d.ts\",\n \"LICENSE\",\n \"NOTICE\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/tetherto/qvac.git\",\n \"directory\": \"packages/llm-llamacpp\"\n },\n \"author\": \"Tether\",\n \"license\": \"Apache-2.0\",\n \"bugs\": \"https://github.com/tetherto/qvac/issues\",\n \"homepage\": \"https://qvac.tether.io\",\n \"devDependencies\": {\n \"@types/node\": \"^24.2.1\",\n \"bare-crypto\": \"^1.15.3\",\n \"bare-process\": \"^4.2.2\",\n \"bare-subprocess\": \"^5.2.3\",\n \"bare-url\": \"^2.1.6\",\n \"brittle\": \"^3.16.5\",\n \"cmake-bare\": \"^1.7.5\",\n \"cmake-vcpkg\": \"^1.1.0\",\n \"lunte\": \"^1.8.4\",\n \"prettier\": \"^3.9.4\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"typescript\": \"^5.9.2\"\n },\n \"dependencies\": {\n \"@qvac/infer-base\": \"^0.4.0\",\n \"@qvac/logging\": \"^0.1.0\",\n \"bare-fs\": \"^4.5.1\",\n \"bare-path\": \"^3.0.0\"\n },\n \"engines\": {\n \"bare\": \">=1.24.0\"\n },\n \"peerDependencies\": {},\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./addonLogging\": {\n \"types\": \"./addonLogging.d.ts\",\n \"default\": \"./addonLogging.js\"\n },\n \"./addonLogging.js\": \"./addonLogging.js\",\n \"./addon.js\": \"./addon.js\",\n \"./binding.js\": \"./binding.js\"\n },\n \"types\": \"index.d.ts\"\n}\n'use strict'\n\n/**\n * Named log levels.\n * @readonly\n * @enum {string}\n */\nconst LOG_LEVELS = Object.freeze({\n ERROR: 'error',\n WARN: 'warn',\n INFO: 'info',\n DEBUG: 'debug',\n OFF: 'off'\n})\n\n/**\n * Numeric priorities for each log level (lower is higher priority).\n * @readonly\n * @type {Object.}\n */\nconst LEVEL_PRIORITIES = Object.freeze({\n [LOG_LEVELS.ERROR]: 0,\n [LOG_LEVELS.WARN]: 1,\n [LOG_LEVELS.INFO]: 2,\n [LOG_LEVELS.DEBUG]: 3,\n [LOG_LEVELS.OFF]: 4\n})\n\n/**\n * Default logging level when none is specified.\n * @type {string}\n */\nconst DEFAULT_LEVEL = LOG_LEVELS.INFO\n\nconst ENV_LOG_LEVEL = 'QVAC_LOG_LEVEL'\n\nmodule.exports = {\n LOG_LEVELS,\n DEFAULT_LEVEL,\n LEVEL_PRIORITIES,\n ENV_LOG_LEVEL\n}\n'use strict'\n\nconst {\n LOG_LEVELS, LEVEL_PRIORITIES, DEFAULT_LEVEL, ENV_LOG_LEVEL\n} = require('./constants')\n\nconst env = require('./env')\n\n/**\n * Ensures the provided logger implements the required interface.\n * @param {Object} logger - Logger object to validate.\n * @throws {Error} If any required logging method is missing.\n */\nfunction assertLoggerInterface (logger) {\n Object.values(LOG_LEVELS)\n .filter(level => level !== LOG_LEVELS.OFF)\n .forEach(method => {\n if (typeof logger[method] !== 'function') {\n throw new Error(`Logger must implement method: ${method}`)\n }\n })\n}\n\n/**\n * Attempt to detect an existing log‐level setting on a wrapped logger.\n *\n * @param {object} logger\n * The wrapped logger to inspect. May implement:\n * - `logger.getLevel(): string` returning one of LOG_LEVELS,\n * - `logger.level(): string` returning one of LOG_LEVELS (case-insensitive),\n * - or a `logger.level` string property.\n *\n * @returns {string|null}\n * The detected log level (one of LOG_LEVELS) if found, otherwise `null`.\n */\nfunction getLevelFromLogger (logger) {\n if (typeof logger.getLevel === 'function') {\n const lvl = logger.getLevel()\n if (typeof lvl === 'string' &&\n Object.values(LOG_LEVELS).includes(lvl.toLowerCase())\n ) {\n return lvl\n }\n }\n\n if (typeof logger.level === 'function') {\n const lvl = logger.level()\n if (typeof lvl === 'string' &&\n Object.values(LOG_LEVELS).includes(lvl.toLowerCase())\n ) {\n return lvl\n }\n }\n\n if (\n typeof logger.level === 'string' &&\n Object.values(LOG_LEVELS).includes(logger.level.toLowerCase())\n ) {\n return logger.level\n }\n\n return null\n}\n\n/**\n * Check the environment variable for a log level setting.\n * @returns {null|string} Valid log level or null if not set or invalid.\n */\nfunction getLogLevelFromEnv () {\n const envLevel = env[ENV_LOG_LEVEL] || env[`EXPO_PUBLIC_${ENV_LOG_LEVEL}`]\n if (envLevel && Object.values(LOG_LEVELS).includes(envLevel.toLowerCase())) {\n return envLevel.toLowerCase()\n }\n return null\n}\n\n/**\n * A wrapper around any logger implementing .error/.warn/.info/.debug,\n * with runtime-configurable log levels and an OFF state.\n */\nclass QvacLogger {\n /**\n * Expose the available log level constants.\n * @type {Object.}\n * @static\n * @memberof QvacLogger\n */\n static LOG_LEVELS = LOG_LEVELS\n\n /**\n * Create a new QvacLogger.\n *\n * If no `logger` is provided, defaults to `console` and starts at OFF.\n * Otherwise, it will inherit the wrapped logger’s own level (via .getLevel()\n * or .level), falling back to DEFAULT_LEVEL if none is found.\n *\n * @param {Object} [logger] - Underlying logger with the required methods.\n */\n constructor (logger) {\n this._logger = logger\n\n if (!this._logger) {\n this._level = LOG_LEVELS.OFF\n return\n }\n\n assertLoggerInterface(this._logger)\n\n // Environment variable takes precedence over the logger's level.\n this._level = getLogLevelFromEnv() ?? getLevelFromLogger(this._logger) ?? DEFAULT_LEVEL\n }\n\n /**\n * Update the current log level.\n *\n * @param {string} newLevel - One of the LOG_LEVELS constants.\n * @throws {Error} If `newLevel` is not a valid level.\n */\n setLevel (newLevel) {\n if (!Object.values(LOG_LEVELS).includes(newLevel)) {\n throw new Error(`Invalid log level: ${newLevel}`)\n }\n this._level = newLevel\n }\n\n /**\n * Get the current log level.\n *\n * @returns {string} The active log level.\n */\n getLevel () {\n return this._level\n }\n\n /**\n * Internal helper to route messages to the underlying logger\n * if the message’s level is at-or-above the current threshold.\n *\n * @private\n * @param {string} level - Level of this message.\n * @param {...*} messages - Data or strings to log.\n */\n _log (level, ...messages) {\n if (!this._logger || this._level === LOG_LEVELS.OFF || LEVEL_PRIORITIES[level] > LEVEL_PRIORITIES[this._level]) {\n return\n }\n this._logger[level](...messages)\n }\n\n error (...msgs) {\n this._log(LOG_LEVELS.ERROR, ...msgs)\n }\n\n warn (...msgs) {\n this._log(LOG_LEVELS.WARN, ...msgs)\n }\n\n info (...msgs) {\n this._log(LOG_LEVELS.INFO, ...msgs)\n }\n\n debug (...msgs) {\n this._log(LOG_LEVELS.DEBUG, ...msgs)\n }\n}\n\nmodule.exports = QvacLogger\n{\n \"name\": \"@qvac/logging\",\n \"version\": \"0.1.1\",\n \"main\": \"index.js\",\n \"types\": \"index.d.ts\",\n \"scripts\": {\n \"lint\": \"standard\",\n \"lint:fix\": \"standard --fix\",\n \"test\": \"npm run test:unit\",\n \"test:unit\": \"npm run test:unit:generate && bare test/unit/all.js\",\n \"test:unit:generate\": \"brittle -r test/unit/all.js test/unit/*.test.js\"\n },\n \"author\": \"Tether\",\n \"license\": \"Apache-2.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/tetherto/qvac.git\",\n \"directory\": \"packages/logging\"\n },\n \"bugs\": \"https://github.com/tetherto/qvac/issues\",\n \"homepage\": \"https://github.com/tetherto/qvac/tree/main/packages/logging#readme\",\n \"devDependencies\": {\n \"brittle\": \"^3.15.0\",\n \"standard\": \"^17.1.2\"\n },\n \"imports\": {\n \"./env\": {\n \"bare\": \"bare-env\",\n \"default\": \"./env.js\"\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./constants\": {\n \"types\": \"./constants.d.ts\",\n \"default\": \"./constants.js\"\n },\n \"./constants.js\": {\n \"types\": \"./constants.d.ts\",\n \"default\": \"./constants.js\"\n }\n },\n \"dependencies\": {\n \"bare-env\": \"^3.0.0\"\n }\n}\n'use strict'\n\nconst { QvacErrorRAG, ERR_CODES } = require('./src/errors')\n\nrequire('./src/types')\n\n// RAG\nconst RAG = require('./src/RAG')\n\n// Database Adapters\nconst BaseDBAdapter = require('./src/adapters/database/BaseDBAdapter')\nconst HyperDBAdapter = require('./src/adapters/database/HyperDBAdapter')\n\n// Chunker Adapters\nconst BaseChunkAdapter = require('./src/adapters/chunker/BaseChunkAdapter')\nconst LLMChunkAdapter = require('./src/adapters/chunker/LLMChunkAdapter')\n\n// LLM Adapters\nconst BaseLlmAdapter = require('./src/adapters/llm/BaseLlmAdapter')\nconst QvacLlmAdapter = require('./src/adapters/llm/QvacLlmAdapter')\nconst HttpLlmAdapter = require('./src/adapters/llm/HttpLlmAdapter')\n\n// Schemas\nconst embeddingSchemas = require('./src/schemas/embedding')\n\nmodule.exports = {\n RAG,\n HyperDBAdapter,\n LLMChunkAdapter,\n BaseDBAdapter,\n BaseChunkAdapter,\n BaseLlmAdapter,\n HttpLlmAdapter,\n QvacLlmAdapter,\n QvacErrorRAG,\n ERR_CODES,\n ...embeddingSchemas\n}\n{\n \"name\": \"@qvac/rag\",\n \"version\": \"0.6.4\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"lint\": \"standard\",\n \"lint:fix\": \"standard --fix\",\n \"test:unit\": \"brittle-bare test/unit/*.test.js\",\n \"test:integration\": \"brittle-bare test/integration/*.test.js\",\n \"test\": \"npm run lint && npm run test:unit && npm run test:integration\",\n \"build:hyperdb-spec\": \"bare scripts/build-hyperdb-spec.js\"\n },\n \"license\": \"Apache-2.0\",\n \"author\": \"Tether\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/tetherto/qvac.git\",\n \"directory\": \"packages/rag\"\n },\n \"bugs\": \"https://github.com/tetherto/qvac/issues\",\n \"homepage\": \"https://github.com/tetherto/qvac/tree/main/packages/rag#readme\",\n \"files\": [\n \"src\",\n \"index.js\",\n \"index.d.ts\",\n \"LICENSE\",\n \"NOTICE\"\n ],\n \"types\": \"index.d.ts\",\n \"exports\": {\n \"./package.json\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./errors\": {\n \"types\": \"./src/errors.d.ts\",\n \"default\": \"./src/errors.js\"\n },\n \"./errors.js\": {\n \"types\": \"./src/errors.d.ts\",\n \"default\": \"./src/errors.js\"\n }\n },\n \"imports\": {\n \"#crypto\": {\n \"bare\": \"bare-crypto\",\n \"node\": \"node:crypto\",\n \"react-native\": \"./src/shims/crypto.js\",\n \"default\": \"./src/shims/crypto.js\"\n },\n \"#fetch\": {\n \"bare\": \"bare-fetch\",\n \"node\": \"./src/shims/fetch.js\",\n \"react-native\": \"./src/shims/fetch.js\",\n \"default\": \"./src/shims/fetch.js\"\n }\n },\n \"devDependencies\": {\n \"@qvac/embed-llamacpp\": \"^0.14.0\",\n \"@qvac/llm-llamacpp\": \"^0.16.0\",\n \"@qvac/registry-client\": \"^0.6.0\",\n \"bare-fs\": \"^4.1.6\",\n \"bare-path\": \"^3.0.0\",\n \"brittle\": \"^3.14.0\",\n \"corestore\": \"^7.4.7\",\n \"standard\": \"^17.1.2\",\n \"test-tmp\": \"^1.4.0\"\n },\n \"dependencies\": {\n \"@qvac/error\": \"^0.1.1\",\n \"bare-crypto\": \"^1.13.4\",\n \"bare-fetch\": \"^3.0.1\",\n \"hyperdb\": \"^6.7.0\",\n \"hyperdht\": \"^6.23.0\",\n \"hyperschema\": \"^1.13.0\",\n \"llm-splitter\": \"^0.2.0\",\n \"ready-resource\": \"^1.1.2\",\n \"zod\": \"^4.1.13\"\n }\n}\n'use strict'\n\nconst IngestionService = require('./services/IngestionService')\nconst RetrievalService = require('./services/RetrievalService')\nconst ChunkingService = require('./services/core/ChunkingService')\nconst EmbeddingService = require('./services/core/EmbeddingService')\nconst BaseLlmAdapter = require('./adapters/llm/BaseLlmAdapter')\nconst ReadyResource = require('ready-resource')\nconst { QvacErrorRAG, ERR_CODES } = require('./errors')\nconst QvacLogger = require('@qvac/logging')\n\nclass RAG extends ReadyResource {\n /**\n * RAG (Retrieval-Augmented Generation) class.\n * @param {Object} config - Configuration object.\n * @param {EmbeddingFunction} config.embeddingFunction - The embedding function\n * @param {BaseDBAdapter} config.dbAdapter - The database adapter instance.\n * @param {BaseLlmAdapter} [config.llm] - Optional LLM adapter for inference\n * @param {BaseChunkAdapter} [config.chunker] - Optional custom chunker instance.\n * @param {ChunkOpts} [config.chunkOpts] - Optional chunking options for document processing.\n * @param {Logger} [config.logger] - Optional logger instance\n */\n constructor ({ llm, embeddingFunction, dbAdapter, chunker, chunkOpts = {}, logger }) {\n super()\n if (!embeddingFunction) throw new QvacErrorRAG({ code: ERR_CODES.EMBEDDING_FUNCTION_REQUIRED })\n if (!dbAdapter) throw new QvacErrorRAG({ code: ERR_CODES.DB_ADAPTER_REQUIRED })\n\n this.logger = logger || new QvacLogger()\n\n this.chunkingService = new ChunkingService({ chunker, chunkOpts, logger: this.logger })\n this.embeddingService = new EmbeddingService({ embeddingFunction, logger: this.logger })\n this.ingestionService = new IngestionService({\n dbAdapter,\n chunkingService: this.chunkingService,\n embeddingService: this.embeddingService,\n logger: this.logger\n })\n this.retrievalService = new RetrievalService({\n dbAdapter,\n chunkingService: this.chunkingService,\n embeddingService: this.embeddingService,\n logger: this.logger\n })\n this.dbAdapter = dbAdapter\n this.llmAdapter = llm\n\n this.logger.debug('RAG instance created')\n }\n\n /**\n * Chunks text into multiple chunks using the configured chunker.\n * @param {string|Array} input - The text or array of texts to chunk.\n * @param {ChunkOpts} [opts] - Optional chunking options to override the default.\n * @returns {Promise>} - Array of chunked documents with IDs and content.\n */\n async chunk (input, opts = {}) {\n return this.chunkingService.chunkText(input, opts)\n }\n\n /**\n * Generate embeddings for a single text.\n * @param {string} text - The text to generate embeddings for.\n * @returns {Promise>} The embeddings.\n */\n async generateEmbeddings (text) {\n return this.embeddingService.generateEmbeddings(text)\n }\n\n /**\n * Generate embeddings for a set of documents.\n * @param {string|Array} docs - The documents to generate embeddings for.\n * @param {GenerateEmbeddingsOpts} [opts] - Options for the embedding generation.\n * @returns {Promise<{[key: string]: Array}>} A map of document IDs to their embeddings.\n */\n async generateEmbeddingsForDocs (docs, opts = {}) {\n return this.retrievalService.generateEmbeddingsForDocs(docs, opts)\n }\n\n /**\n * Save embedded documents directly to the vector database.\n * Documents must have id, content, embedding, and embeddingModelId fields.\n * @param {Array} embeddedDocs - Documents with embeddings.\n * @param {SaveEmbeddingsOpts} [opts] - Options for saving.\n * @returns {Promise>} - Array of processing results.\n */\n async saveEmbeddings (embeddedDocs, opts = {}) {\n return this.ingestionService.saveEmbeddings(embeddedDocs, opts)\n }\n\n /**\n * Ingest documents: chunk, embed, and save to the vector database.\n * Convenience method that handles the full pipeline.\n * @param {string|Array} docs - Documents to ingest (text or Doc objects without embeddings).\n * @param {string} embeddingModelId - The embedding model identifier.\n * @param {IngestOpts} [opts] - Options for the ingestion pipeline.\n * @returns {Promise<{processed: Array, droppedIndices: Array}>} - Processing results and dropped indices.\n */\n async ingest (docs, embeddingModelId, opts = {}) {\n return this.ingestionService.ingest(docs, embeddingModelId, opts)\n }\n\n /**\n * Delete embeddings for a set of documents inside the vector database.\n * @param {Array} ids - The ids of the documents to be deleted.\n * @returns {Promise} True if the embeddings were deleted\n */\n async deleteEmbeddings (ids) {\n return this.ingestionService.deleteEmbeddings(ids)\n }\n\n /**\n * Searches for context based on the prompt and generates a response.\n * @param {string} query - The user query.\n * @param {InferOpts} [opts] - Options for inference and search.\n * @returns {Promise} The generated response (format depends on LLM adapter) or null if no context found.\n */\n async infer (query, { llmAdapter = this.llmAdapter, signal, ...opts } = {}) {\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n if (!llmAdapter || !(llmAdapter instanceof BaseLlmAdapter)) {\n throw new QvacErrorRAG({ code: ERR_CODES.LLM_REQUIRED })\n }\n\n this.logger.debug(`Infer started: \"${query.substring(0, 50)}${query.length > 50 ? '...' : ''}\"`)\n const startTime = Date.now()\n\n const searchResults = await this.retrievalService.search(query, { signal, ...opts })\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n if (searchResults.length === 0) {\n this.logger.debug('Infer: no context found')\n return null\n }\n\n const result = await llmAdapter.run(query, searchResults, { signal, ...opts })\n const duration = Date.now() - startTime\n\n this.logger.info(`Infer complete: ${searchResults.length} context(s) in ${duration}ms`)\n\n return result\n }\n\n /**\n * Searches for documents based on a query string.\n * @param {string} query - The user query.\n * @param {SearchOpts} [params] - Parameters for search.\n * @returns {Promise>} The search results.\n */\n async search (query, params = {}) {\n return this.retrievalService.search(query, params)\n }\n\n /**\n * Sets the chunker for the RAG.\n * @param {BaseChunkAdapter} chunker - The chunker instance.\n * @param {ChunkOpts} [chunkOpts] - The options for the chunking.\n */\n setChunker (chunker, chunkOpts = {}) {\n this.chunkingService.setChunker(chunker, chunkOpts)\n }\n\n /**\n * Sets the default LLM for the RAG.\n * @param {BaseLlmAdapter} llm - The LLM instance or adapter.\n */\n setLlm (llmAdapter) {\n if (!llmAdapter || !(llmAdapter instanceof BaseLlmAdapter)) {\n throw new QvacErrorRAG({ code: ERR_CODES.LLM_REQUIRED })\n }\n this.llmAdapter = llmAdapter\n }\n\n /**\n * Reindex the database to optimize search performance.\n * For HyperDBAdapter, this rebalances centroids using k-means clustering.\n * @param {ReindexOpts} [opts] - Options for reindexing.\n * @returns {Promise}\n */\n reindex (opts) {\n return this.dbAdapter.reindex(opts)\n }\n\n /**\n * Get stored adapter configuration.\n * Returns the persisted config including embeddingModelId.\n * @returns {Promise} The stored config or null if not configured\n */\n async getDBConfig () {\n return this.dbAdapter.getConfig()\n }\n\n /**\n * Initializes RAG adapter\n * @returns {Promise}\n * @private\n */\n async _open () {\n this.logger.info('Initializing RAG...')\n await this.dbAdapter.ready()\n this.logger.info('RAG ready')\n }\n\n /**\n * Closes and cleans up resources for the RAG.\n * @returns {Promise}\n * @private\n */\n async _close () {\n this.logger.info('Closing RAG...')\n await this.dbAdapter.close()\n this.logger.debug('RAG closed')\n }\n}\n\nmodule.exports = RAG\n'use strict'\n\nconst { QvacErrorRAG, ERR_CODES } = require('../../errors')\n\n/**\n * Abstract base class for text chunking implementations.\n * Provides a common interface for different chunking strategies.\n * @param {ChunkOpts} opts - The options for the chunker.\n */\nclass BaseChunkAdapter {\n constructor (opts = {}) {\n if (new.target === BaseChunkAdapter) {\n throw new QvacErrorRAG({ code: ERR_CODES.ABSTRACT_CLASS })\n }\n this.opts = opts\n }\n\n /**\n * Chunks text(s) into smaller pieces.\n * @param {string|Array} input - The text or array of texts to chunk.\n * @param {ChunkOpts} opts - Chunking options specific to the implementation.\n * @returns {Promise>} - Array of Docs.\n * @throws {Error} - If chunking fails.\n */\n async chunkText (input, opts = {}) {\n throw new QvacErrorRAG({ code: ERR_CODES.NOT_IMPLEMENTED })\n }\n\n /**\n * Validates the input for chunking.\n * @param {string|Array} input - The input to validate.\n * @throws {Error} - If input is invalid.\n */\n validateInput (input) {\n if (!input) {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'Input cannot be empty, null or undefined' })\n }\n\n if (typeof input === 'string') {\n if (input.trim().length === 0) {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'Input string cannot be empty' })\n }\n } else if (Array.isArray(input)) {\n if (input.length === 0) {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'Input array cannot be empty' })\n }\n\n for (let i = 0; i < input.length; i++) {\n if (typeof input[i] !== 'string') {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: `Input array element at index ${i} must be a string` })\n }\n if (input[i].trim().length === 0) {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: `Input array element at index ${i} cannot be empty` })\n }\n }\n } else {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'Input must be a string or array of strings' })\n }\n }\n\n /**\n * Updates the default options for this chunker instance.\n * @param {ChunkOpts} opts - New options to merge with existing defaults.\n */\n updateOptions (opts = {}) {\n if (!this.opts) {\n this.opts = {}\n }\n this.opts = { ...this.opts, ...opts }\n }\n\n /**\n * Gets the current options for this chunker instance.\n * @returns {ChunkOpts} - Current chunker options.\n */\n getOptions () {\n return { ...this.opts }\n }\n}\n\nmodule.exports = BaseChunkAdapter\n'use strict'\n\nconst { split } = require('llm-splitter')\n\nconst BaseChunkAdapter = require('./BaseChunkAdapter')\nconst { QvacErrorRAG, ERR_CODES } = require('../../errors')\nconst { generateId } = require('../../utils/helper')\nconst { tokenizeText } = require('./Tokenizer')\n\n/**\n * Predefined splitter strategies for common tokenization needs.\n */\nconst PREDEFINED_SPLITTERS = {\n character: text => text.split(''),\n word: text => text.split(/\\s+/).filter(word => word.length > 0),\n sentence: text => text.split(/[.!?]+/).filter(s => s.trim().length > 0),\n line: text => text.split(/\\n/),\n token: text => tokenizeText(text).tokens.map(t => t.text)\n}\n\n/**\n * Chunking implementation using the llm-splitter library.\n * Provides predefined split strategies (character, word, token, sentence, line) and supports custom splitters.\n */\nclass LLMChunkAdapter extends BaseChunkAdapter {\n constructor (opts = {}) {\n super()\n const defaultOpts = {\n chunkSize: 256,\n chunkOverlap: 50,\n chunkStrategy: 'paragraph'\n }\n\n if (!opts.splitStrategy && !opts.splitter) {\n defaultOpts.splitStrategy = 'token'\n }\n\n this.opts = { ...defaultOpts, ...opts }\n }\n\n /**\n * Chunks text(s) using the llm-splitter library.\n * Supports predefined split strategies (character, word, token, sentence, line) or custom splitter functions.\n * @param {string|Array} input - The text or array of texts to chunk.\n * @param {LLMChunkOpts} opts - Chunking options.\n * @returns {Promise>} - Array of chunk objects with content and id.\n */\n async chunkText (input, opts = {}) {\n try {\n this.validateInput(input)\n\n const chunkOptions = { ...this.opts, ...opts }\n\n if (chunkOptions.splitStrategy && !PREDEFINED_SPLITTERS[chunkOptions.splitStrategy]) {\n throw new QvacErrorRAG({\n code: ERR_CODES.INVALID_PARAMS,\n adds: `splitStrategy must be one of: ${Object.keys(PREDEFINED_SPLITTERS).join(', ')}, received: ${chunkOptions.splitStrategy}`\n })\n }\n\n if (!chunkOptions.splitter) {\n if (chunkOptions.splitStrategy) {\n chunkOptions.splitter = PREDEFINED_SPLITTERS[chunkOptions.splitStrategy]\n } else {\n chunkOptions.splitter = PREDEFINED_SPLITTERS.token\n }\n }\n\n delete chunkOptions.splitStrategy\n\n const chunks = split(input, chunkOptions)\n return this._processChunks(chunks)\n } catch (error) {\n if (error instanceof QvacErrorRAG) {\n throw error\n }\n throw new QvacErrorRAG({ code: ERR_CODES.CHUNKING_FAILED, adds: `Failed to chunk text: ${error.message}`, cause: error })\n }\n }\n\n /**\n * Process chunks from llm-splitter into Doc objects.\n * @param {Array} chunks - The chunks from llm-splitter.\n * @returns {Array} Array of Doc objects.\n * @private\n */\n _processChunks (chunks) {\n const result = []\n for (const chunk of chunks) {\n if (Array.isArray(chunk.text)) {\n for (const text of chunk.text) {\n result.push({\n id: generateId(),\n content: text\n })\n }\n } else {\n result.push({\n id: generateId(),\n content: chunk.text\n })\n }\n }\n return result\n }\n}\n\nmodule.exports = LLMChunkAdapter\n'use strict'\n\nconst encoder = {\n encode (str) {\n const out = []\n for (let i = 0; i < str.length; i++) {\n const code = str.codePointAt(i)\n if (code > 0xFFFF) i++\n if (code <= 0x7F) {\n out.push(code)\n } else if (code <= 0x7FF) {\n out.push(\n 0xC0 | (code >> 6),\n 0x80 | (code & 0x3F)\n )\n } else if (code <= 0xFFFF) {\n out.push(\n 0xE0 | (code >> 12),\n 0x80 | ((code >> 6) & 0x3F),\n 0x80 | (code & 0x3F)\n )\n } else {\n out.push(\n 0xF0 | (code >> 18),\n 0x80 | ((code >> 12) & 0x3F),\n 0x80 | ((code >> 6) & 0x3F),\n 0x80 | (code & 0x3F)\n )\n }\n }\n return new Uint8Array(out)\n }\n}\n\n// Encode once and return both length and non-ASCII check\nconst analyzeUtf8 = (s) => {\n const bytes = encoder.encode(s)\n let hasNonAscii = false\n for (let i = 0; i < bytes.length; i++) {\n if (bytes[i] > 0x7F) {\n hasNonAscii = true\n }\n }\n return { length: bytes.length, hasNonAscii }\n}\n\nconst SUPPORTS_UNICODE_PROPS = (() => {\n try {\n // eslint-disable-next-line prefer-regex-literals\n new RegExp('\\\\p{L}', 'u').test('a')\n return true\n } catch (e) {\n return false\n }\n})()\n\n// Use the original pattern but with better weight tuning\nconst PRETOKEN_RE = SUPPORTS_UNICODE_PROPS\n // eslint-disable-next-line prefer-regex-literals\n ? new RegExp('\\'s|\\'t|\\'re|\\'ve|\\'m|\\'ll|\\'d| ?[\\\\p{L}]+| ?[\\\\p{N}]+| ?[^\\\\s\\\\p{L}\\\\p{N}]+|\\\\s+(?!\\\\S)|\\\\s+', 'gu')\n : /'s|'t|'re|'ve|'m|'ll|'d| ?[A-Za-z]+| ?[0-9]+| ?[^\\sA-Za-z0-9]+|\\s+(?!\\S)|\\s+/g\n\n// Cached regex patterns\nconst WHITESPACE_RE = /^\\s+$/\nconst LETTERS_RE = SUPPORTS_UNICODE_PROPS\n // eslint-disable-next-line prefer-regex-literals\n ? new RegExp('^[\\\\p{L}]+$', 'u')\n : /^[A-Za-z]+$/\nconst NUMBERS_RE = SUPPORTS_UNICODE_PROPS\n // eslint-disable-next-line prefer-regex-literals\n ? new RegExp('^[\\\\p{N}]+$', 'u')\n : /^[0-9]+$/\n\nconst isWhitespace = (s) => WHITESPACE_RE.test(s)\nconst isLetters = (s) => LETTERS_RE.test(s)\nconst isNumbers = (s) => NUMBERS_RE.test(s)\n\n// Basic URL detection\nconst isURLish = (s) => {\n if (/^https?:\\/\\//i.test(s)) return true\n if (s.indexOf('://') !== -1) return true\n if (/\\w\\.\\w/.test(s) && /[/;?#]/.test(s)) return true\n if (/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}/.test(s)) return true\n // Consider encoded URL components\n if (/%[0-9A-F]{2}/i.test(s)) return true\n return false\n}\n\n// Check if this looks like markdown syntax\nconst isMarkdownSyntax = (s) => {\n return /^(\\*{1,2}|#{1,6}|\\[|\\]|\\(|\\)|-)$/.test(s)\n}\n\n// Token estimation weights calibrated for language model compatibility\nconst DEFAULT_WEIGHTS = {\n lettersDivisor: 4.8, // Most words stay as single tokens\n numbersDivisor: 3.0, // Numbers get moderate splitting\n symbolsDivisor: 1.6, // Symbols split more but not always individual\n whitespaceDivisor: 6.5, // Whitespace tokens\n urlDivisor: 2.8, // URLs split moderately\n markdownDivisor: 1.2, // Markdown syntax usually gets own tokens\n nonAsciiPenalty: 1.05, // Small penalty for non-ASCII\n globalBias: 0.88 // Global adjustment factor\n}\n\nfunction estimateTokenCount (text, weights) {\n const w = { ...DEFAULT_WEIGHTS, ...weights }\n let tokens = 0\n\n PRETOKEN_RE.lastIndex = 0\n let m\n\n while ((m = PRETOKEN_RE.exec(text)) !== null) {\n const seg = m[0]\n const core = seg.charAt(0) === ' ' ? seg.slice(1) : seg\n\n const utf8Info = analyzeUtf8(seg)\n\n let divisor\n if (isWhitespace(seg)) {\n divisor = w.whitespaceDivisor\n } else if (isMarkdownSyntax(core)) {\n divisor = w.markdownDivisor\n } else if (isURLish(core)) {\n divisor = w.urlDivisor\n } else if (isLetters(core)) {\n // Adjust for word length - shorter words more likely to be single tokens\n const lengthFactor = core.length <= 5 ? 1.2 : core.length <= 10 ? 1.0 : 0.9\n divisor = w.lettersDivisor * lengthFactor\n } else if (isNumbers(core)) {\n divisor = w.numbersDivisor\n } else {\n divisor = w.symbolsDivisor\n }\n\n let est = Math.ceil(utf8Info.length / divisor)\n if (utf8Info.hasNonAscii) est = Math.ceil(est * w.nonAsciiPenalty)\n\n tokens += est\n }\n\n return Math.round(tokens * w.globalBias)\n}\n\nfunction tokenizeText (text, weights) {\n const w = { ...DEFAULT_WEIGHTS, ...weights }\n const tokens = []\n let total = 0\n\n PRETOKEN_RE.lastIndex = 0\n let m\n\n while ((m = PRETOKEN_RE.exec(text)) !== null) {\n const seg = m[0]\n const core = seg.charAt(0) === ' ' ? seg.slice(1) : seg\n\n const utf8Info = analyzeUtf8(seg)\n\n let divisor\n if (isWhitespace(seg)) {\n divisor = w.whitespaceDivisor\n } else if (isMarkdownSyntax(core)) {\n divisor = w.markdownDivisor\n } else if (isURLish(core)) {\n divisor = w.urlDivisor\n } else if (isLetters(core)) {\n // Adjust for word length - shorter words more likely to be single tokens\n const lengthFactor = core.length <= 5 ? 1.2 : core.length <= 10 ? 1.0 : 0.9\n divisor = w.lettersDivisor * lengthFactor\n } else if (isNumbers(core)) {\n divisor = w.numbersDivisor\n } else {\n divisor = w.symbolsDivisor\n }\n\n let est = Math.ceil(utf8Info.length / divisor)\n if (utf8Info.hasNonAscii) est = Math.ceil(est * w.nonAsciiPenalty)\n\n tokens.push({ text: seg, count: est })\n total += est\n }\n\n total = Math.round(total * w.globalBias)\n return { tokens, total }\n}\n\nmodule.exports = {\n tokenizeText,\n estimateTokenCount\n}\n'use strict'\n\nconst ReadyResource = require('ready-resource')\nconst { QvacErrorRAG, ERR_CODES } = require('../../errors')\n\nclass BaseDBAdapter extends ReadyResource {\n /**\n * @param {Object} config - Configuration object.\n */\n constructor (config = {}) {\n super()\n if (new.target === BaseDBAdapter) {\n throw new QvacErrorRAG({ code: ERR_CODES.ABSTRACT_CLASS })\n }\n this.isInitialized = false\n }\n\n /**\n * Save embeddings for a set of documents inside the vector database.\n * @param {Array} docs - The documents with embeddings to be processed.\n * @param {DbOpts} [opts] - The options for the processing.\n * @returns {Promise>} - Array of processing results.\n */\n async saveEmbeddings (docs, opts) {\n throw new QvacErrorRAG({ code: ERR_CODES.NOT_IMPLEMENTED })\n }\n\n /**\n * Delete embeddings for a set of documents inside the vector database.\n * @param {Array} ids - The ids of the documents to be deleted.\n * @returns {Promise} - True if the embeddings were deleted\n */\n async deleteEmbeddings (ids) {\n throw new QvacErrorRAG({ code: ERR_CODES.NOT_IMPLEMENTED })\n }\n\n /**\n * Search for documents given a text query.\n * @param {string} query - The search query.\n * @param {Array} queryVector - The query vector.\n * @param {Object} [params] - The parameters for the search..\n * @returns {Promise>} - An array of search results.\n */\n async search (query, queryVector, params) {\n throw new QvacErrorRAG({ code: ERR_CODES.NOT_IMPLEMENTED })\n }\n\n /**\n * Reindex the database to optimize search performance.\n * Default implementation returns not reindexed. Adapters can override.\n * @param {ReindexOpts} [opts] - Options for reindexing.\n * @returns {Promise} - Result of the reindex operation.\n */\n async reindex (opts) {\n return { reindexed: false, details: {} }\n }\n}\n\nmodule.exports = BaseDBAdapter\n'use strict'\n\nconst BaseDBAdapter = require('./BaseDBAdapter')\nconst { QvacErrorRAG, ERR_CODES } = require('../../errors')\nconst {\n cosineSimilarity,\n calculateTextScore,\n heapifyUp,\n heapifyDown,\n reservoirSample,\n createLRUCache\n} = require('../../utils/helper')\nconst QvacLogger = require('@qvac/logging')\nconst HyperDB = require('hyperdb')\nconst dbSpec = require('./hyperspec/hyperdb/index.js')\n\nconst qvacCrypto = require('#crypto')\n\nclass HyperDBAdapter extends BaseDBAdapter {\n /**\n * @param {Object} config - Configuration object.\n * @param {Corestore} [config.store] - An existing Corestore instance. Required when not providing a hyperdb instance.\n * @param {HyperDB} [config.db] - An existing HyperDB instance to use.\n * @param {string} [config.dbName] - The name of the underlying hypercore.\n * @param {number} [config.NUM_CENTROIDS=16] - The number of centroids to use for the IVF index.\n * @param {number} [config.BUCKET_SIZE=30] - The size of the bucket for the IVF index.\n * @param {number} [config.BATCH_SIZE=100] - The batch size for ingesting documents.\n * @param {number} [config.PROGRESS_INTERVAL=10] - Report progress every N documents during preparation.\n * @param {number} [config.CACHE_SIZE=1000] - The cache size for the document and vector caches.\n * @param {string} [config.documentsTable='@rag/documents'] - The name of the documents table.\n * @param {string} [config.vectorsTable='@rag/vectors'] - The name of the vectors table.\n * @param {string} [config.centroidsTable='@rag/centroids'] - The name of the centroids table.\n * @param {string} [config.invertedIndexTable='@rag/ivfBuckets'] - The name of the inverted index table.\n * @param {string} [config.configTable='@rag/config'] - The name of the config table.\n * @param {Logger} [config.logger] - Optional logger instance\n */\n constructor (config = {}) {\n super(config)\n this.store = config.store || null\n this.db = config.db || null\n this.dbName = config.dbName || 'rag-vector-store'\n this.NUM_CENTROIDS = config.NUM_CENTROIDS || 16\n this.BUCKET_SIZE = config.BUCKET_SIZE || 50\n this.BATCH_SIZE = config.BATCH_SIZE || 100\n this.PROGRESS_INTERVAL = config.PROGRESS_INTERVAL || 10\n this.CACHE_SIZE = config.CACHE_SIZE || 1000\n\n this.documentsTable = config.documentsTable || '@rag/documents'\n this.vectorsTable = config.vectorsTable || '@rag/vectors'\n this.centroidsTable = config.centroidsTable || '@rag/centroids'\n this.invertedIndexTable = config.invertedIndexTable || '@rag/ivfBuckets'\n this.configTable = config.configTable || '@rag/config'\n\n this.hypercore = null\n this.documentCache = createLRUCache(this.CACHE_SIZE)\n this.vectorCache = createLRUCache(this.CACHE_SIZE)\n this.centroids = []\n this.logger = config.logger || new QvacLogger()\n }\n\n /**\n * Get the hypercore instance.\n * @returns {Hypercore} The hypercore instance.\n */\n get core () { return this.hypercore }\n\n /**\n * Saves embeddings for a set of documents by processing them in batches.\n * Progress is reported with stages: 'deduplicating', 'preparing', 'writing'.\n * @param {Array} embeddedDocs - Documents with embeddings to save.\n * @param {SaveEmbeddingsOpts} [opts] - Options for saving.\n * @returns {Promise>} - Array of processing results.\n */\n async saveEmbeddings (embeddedDocs, opts = {}) {\n const { onProgress, signal, progressInterval } = opts\n const results = []\n\n // Validate embeddingModelId is present and consistent across all docs\n if (embeddedDocs.length > 0) {\n const modelIds = new Set(embeddedDocs.map(doc => doc.embeddingModelId).filter(Boolean))\n\n if (modelIds.size === 0) {\n throw new QvacErrorRAG({\n code: ERR_CODES.INVALID_PARAMS,\n adds: 'embeddingModelId is required on all EmbeddedDoc objects'\n })\n }\n\n if (modelIds.size > 1) {\n throw new QvacErrorRAG({\n code: ERR_CODES.INVALID_PARAMS,\n adds: `All documents must have the same embeddingModelId. Found: ${Array.from(modelIds).join(', ')}`\n })\n }\n\n const docEmbeddingModelId = Array.from(modelIds)[0]\n const docDimension = embeddedDocs[0].embedding.length\n\n this.logger.debug(`Saving ${embeddedDocs.length} embedding(s)`)\n\n if (!this.isInitialized) {\n await this._initialize(embeddedDocs, opts)\n }\n await this._ensureConfig(docEmbeddingModelId, docDimension)\n }\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n const totalDocs = embeddedDocs.length\n\n // Stage 1: Deduplicating\n onProgress?.('deduplicating', 0, totalDocs)\n const { unique, duplicates } = await this._filterDuplicates(embeddedDocs)\n onProgress?.('deduplicating', totalDocs, totalDocs)\n\n if (duplicates.length > 0) {\n this.logger.warn(`${duplicates.length} duplicate(s) found`)\n }\n\n results.push(...duplicates.map(doc => ({\n id: doc.id,\n status: 'rejected',\n error: doc.error\n })))\n\n const processedDocs = unique\n const uniqueTotal = processedDocs.length\n let preparedCount = 0\n let writtenCount = 0\n\n for (let i = 0; i < processedDocs.length; i += this.BATCH_SIZE) {\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n const batch = processedDocs.slice(i, i + this.BATCH_SIZE)\n\n // Stage 2: Preparing (hash + centroid computation)\n const batchResults = await this._processBatch(batch, {\n signal,\n progressInterval,\n onPrepareProgress: (current) => {\n onProgress?.('preparing', preparedCount + current, uniqueTotal)\n }\n })\n preparedCount += batch.length\n\n // Stage 3: Writing (after batch transaction completes)\n writtenCount += batch.length\n onProgress?.('writing', writtenCount, uniqueTotal)\n\n results.push(...batchResults)\n }\n\n this.logger.info(`Saved ${results.length} embedding(s)`)\n\n return results\n }\n\n /**\n * Delete embeddings for a set of documents inside the vector database.\n * @param {Array} ids - The IDs of the documents to be deleted.\n * @returns {Promise} - True if the embeddings were deleted\n */\n async deleteEmbeddings (ids) {\n if (!Array.isArray(ids) || ids.length === 0) throw new QvacErrorRAG({ code: ERR_CODES.INVALID_PARAMS })\n\n this.logger.debug(`Deleting ${ids.length} document(s) from HyperDB`)\n\n const ops = []\n const tx = await this.db.exclusiveTransaction()\n try {\n for (const id of ids) {\n ops.push(tx.delete(this.documentsTable, { id }))\n ops.push(tx.delete(this.vectorsTable, { docId: id }))\n this.documentCache.delete(id)\n this.vectorCache.delete(id)\n }\n\n for (let i = 0; i < this.NUM_CENTROIDS; i++) {\n const centroidId = `centroid-${i}`\n const bucket = await this._getBucket(tx, centroidId)\n const updatedBucket = bucket.filter(docId => !ids.includes(docId))\n if (updatedBucket.length !== bucket.length) {\n ops.push(tx.insert(this.invertedIndexTable, {\n centroidId,\n documentIds: updatedBucket,\n capacity: this.BUCKET_SIZE,\n createdAt: new Date(),\n updatedAt: new Date()\n }))\n }\n }\n await Promise.all(ops)\n await tx.flush()\n\n this.logger.info(`Deleted ${ids.length} document(s) from HyperDB`)\n\n return true\n } catch (error) {\n this.logger.error('Delete embeddings failed:', error)\n throw new QvacErrorRAG({ code: ERR_CODES.DB_OPERATION_FAILED, adds: error.message, cause: error })\n } finally {\n await tx.close()\n }\n }\n\n /**\n * Search for documents given a text query.\n * Uses IVF buckets and ranking based on cosine similarity and text score.\n * @param {string} query - The search query.\n * @param {Array} queryVector - The query vector.\n * @param {Object} [params] - Parameters for the search.\n * @param {number} [params.topK=5] - The number of results to return.\n * @param {number} [params.n=3] - The number of centroids to use for the IVF index.\n * @param {AbortSignal} [params.signal] - Signal for cancellation.\n * @returns {Promise>} The top matching results.\n */\n async search (query, queryVector, params = {}) {\n const { topK = 5, n = 3, signal } = params\n if (!this.isInitialized) throw new QvacErrorRAG({ code: ERR_CODES.DB_ADAPTER_NOT_INITIALIZED })\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n this.logger.debug(`HyperDB search: topK=${topK}, n=${n}, centroids=${this.centroids.length}`)\n\n let candidateIds = new Set()\n const topCentroids = this._findTopNCentroids(queryVector, n)\n const dbSnapshot = this.db.snapshot()\n\n const bucketPromises = topCentroids.map(({ index }) => {\n const centroidId = `centroid-${index}`\n return this._getBucket(dbSnapshot, centroidId)\n })\n const buckets = await Promise.all(bucketPromises)\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n buckets.forEach(bucket => {\n bucket.forEach(id => candidateIds.add(id))\n })\n\n if (!candidateIds.size) {\n this.logger.debug('No candidates in top centroids, expanding search')\n candidateIds = await this._progressiveCentroidExpansion(dbSnapshot, queryVector, n)\n }\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n const candidateIdsArray = Array.from(candidateIds)\n this.logger.debug(`Scoring ${candidateIdsArray.length} candidate(s)`)\n\n const [vectorMap, contentMap] = await Promise.all([\n this._getVectors(dbSnapshot, candidateIdsArray),\n this._getDocumentContents(dbSnapshot, candidateIdsArray)\n ])\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n const results = []\n for (const id of candidateIdsArray) {\n const vector = vectorMap.get(id)\n const content = contentMap.get(id)\n if (!vector || !content) continue\n\n const vectorScore = cosineSimilarity(queryVector, vector)\n const textScore = calculateTextScore(query, content)\n const finalScore = (vectorScore * 0.7) + (textScore * 0.3) // todo: would weight be configurable?\n\n results.push({ id, content, score: finalScore })\n }\n\n return results.sort((a, b) => b.score - a.score).slice(0, topK)\n }\n\n /**\n * Reindex the database by rebalancing centroids using k-means clustering.\n * Call periodically for large datasets to improve search quality.\n * @param {ReindexOpts} [opts] - Options for reindexing.\n * @returns {Promise}\n */\n async reindex (opts = {}) {\n const { onProgress, signal } = opts\n\n if (!this.isInitialized) {\n throw new QvacErrorRAG({ code: ERR_CODES.DB_ADAPTER_NOT_INITIALIZED })\n }\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n this.logger.info('Starting reindex...')\n\n const snapshot = this.db.snapshot()\n\n // Stage 1: Collect all vectors\n onProgress?.('collecting', 0, 1)\n const allVectors = await this._getAllEntries(snapshot, this.vectorsTable)\n\n if (allVectors.length < this.NUM_CENTROIDS) {\n this.logger.warn(`Insufficient documents for reindex: ${allVectors.length} < ${this.NUM_CENTROIDS}`)\n return { reindexed: false, details: { reason: 'insufficient documents', documentCount: allVectors.length, centroidCount: this.centroids.length } }\n }\n\n this.logger.debug(`Collected ${allVectors.length} vectors`)\n onProgress?.('collecting', 1, 1)\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n // Stage 2: Run k-means clustering\n onProgress?.('clustering', 0, 1)\n const vectors = allVectors.map(v => v.vector)\n const docIds = allVectors.map(v => v.docId)\n const newCentroids = this._kMeans(vectors, this.NUM_CENTROIDS, 10)\n onProgress?.('clustering', 1, 1)\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n // Stage 3: Reassign documents to new centroids\n onProgress?.('reassigning', 0, vectors.length)\n const newBuckets = new Map()\n for (let i = 0; i < this.NUM_CENTROIDS; i++) {\n newBuckets.set(`centroid-${i}`, [])\n }\n\n for (let i = 0; i < vectors.length; i++) {\n const vector = vectors[i]\n const docId = docIds[i]\n\n // Find nearest centroid\n let bestIdx = 0\n let bestSim = -Infinity\n for (let j = 0; j < newCentroids.length; j++) {\n const sim = cosineSimilarity(vector, newCentroids[j])\n if (sim > bestSim) {\n bestSim = sim\n bestIdx = j\n }\n }\n\n newBuckets.get(`centroid-${bestIdx}`).push(docId)\n\n if ((i + 1) % 100 === 0 || i === vectors.length - 1) {\n onProgress?.('reassigning', i + 1, vectors.length)\n }\n }\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n // Stage 4: Update database\n onProgress?.('updating', 0, this.NUM_CENTROIDS * 2)\n const tx = await this.db.exclusiveTransaction()\n const now = new Date()\n\n try {\n // Update centroids\n for (let i = 0; i < newCentroids.length; i++) {\n const centroidId = `centroid-${i}`\n await tx.insert(this.centroidsTable, {\n id: centroidId,\n vector: newCentroids[i],\n index: i,\n createdAt: now,\n updatedAt: now\n })\n onProgress?.('updating', i + 1, this.NUM_CENTROIDS * 2)\n }\n\n // Update buckets\n for (let i = 0; i < this.NUM_CENTROIDS; i++) {\n const centroidId = `centroid-${i}`\n const documentIds = newBuckets.get(centroidId) || []\n await tx.insert(this.invertedIndexTable, {\n centroidId,\n documentIds,\n capacity: this.BUCKET_SIZE,\n createdAt: now,\n updatedAt: now\n })\n onProgress?.('updating', this.NUM_CENTROIDS + i + 1, this.NUM_CENTROIDS * 2)\n }\n\n await tx.flush()\n\n // Update in-memory centroids\n this.centroids = newCentroids\n\n this.logger.info(`Reindex complete: ${vectors.length} document(s), ${newCentroids.length} centroid(s)`)\n\n return { reindexed: true, details: { documentCount: vectors.length, centroidCount: newCentroids.length } }\n } catch (error) {\n this.logger.error('Reindex failed:', error)\n throw new QvacErrorRAG({ code: ERR_CODES.DB_OPERATION_FAILED, adds: error.message, cause: error })\n } finally {\n await tx.close()\n }\n }\n\n /**\n * @private\n */\n _kMeans (vectors, k, maxIterations = 10) {\n if (vectors.length === 0) return []\n if (vectors.length <= k) return vectors.slice()\n\n const dim = vectors[0].length\n\n const centroids = []\n const usedIndices = new Set()\n\n // First centroid: random\n const idx = Math.floor(Math.random() * vectors.length)\n centroids.push([...vectors[idx]])\n usedIndices.add(idx)\n\n // Remaining centroids: weighted by distance to nearest existing centroid\n while (centroids.length < k) {\n let maxDist = -Infinity\n let bestIdx = 0\n\n for (let i = 0; i < vectors.length; i++) {\n if (usedIndices.has(i)) continue\n\n // Find distance to nearest centroid\n let minDist = Infinity\n for (const c of centroids) {\n const sim = cosineSimilarity(vectors[i], c)\n const dist = 1 - sim\n if (dist < minDist) minDist = dist\n }\n\n if (minDist > maxDist) {\n maxDist = minDist\n bestIdx = i\n }\n }\n\n centroids.push([...vectors[bestIdx]])\n usedIndices.add(bestIdx)\n }\n\n // Run k-means iterations\n for (let iter = 0; iter < maxIterations; iter++) {\n const assignments = new Array(k).fill(null).map(() => [])\n\n for (const vector of vectors) {\n let bestIdx = 0\n let bestSim = -Infinity\n for (let j = 0; j < centroids.length; j++) {\n const sim = cosineSimilarity(vector, centroids[j])\n if (sim > bestSim) {\n bestSim = sim\n bestIdx = j\n }\n }\n assignments[bestIdx].push(vector)\n }\n\n // Update centroids to be mean of assigned vectors\n let converged = true\n for (let j = 0; j < k; j++) {\n if (assignments[j].length === 0) continue\n\n const newCentroid = new Array(dim).fill(0)\n for (const v of assignments[j]) {\n for (let d = 0; d < dim; d++) {\n newCentroid[d] += v[d]\n }\n }\n for (let d = 0; d < dim; d++) {\n newCentroid[d] /= assignments[j].length\n }\n\n // Check convergence\n const sim = cosineSimilarity(centroids[j], newCentroid)\n if (sim < 0.9999) converged = false\n\n centroids[j] = newCentroid\n }\n\n if (converged) break\n }\n\n return centroids\n }\n\n /**\n * Replicate the hypercore with another hypercore.\n * @param {Hypercore} otherHypercore - The other hypercore to replicate with.\n * @returns {Promise} An object containing the two streams and a destroy function.\n */\n async replicateWith (otherHypercore) {\n if (!this.isInitialized || !this.hypercore) {\n throw new QvacErrorRAG({ code: ERR_CODES.DB_ADAPTER_NOT_INITIALIZED })\n }\n const s1 = this.hypercore.replicate(true)\n const s2 = otherHypercore.replicate(false)\n s1.pipe(s2).pipe(s1)\n return {\n stream1: s1,\n stream2: s2,\n destroy: () => {\n s1.destroy()\n s2.destroy()\n }\n }\n }\n\n /**\n * Initializes the underlying database connection and ensures that it is ready for use.\n * @private\n */\n async _open () {\n this.logger.info('Opening HyperDB connection...')\n\n // If a HyperDB instance was provided in constructor, use it\n if (this.db) {\n await this.db.ready()\n this.hypercore = this.db.core\n await this._checkIsInitialized()\n this.logger.info('HyperDB ready (using provided instance)')\n return\n }\n\n if (!this.hypercore) {\n if (!this.store) {\n throw new QvacErrorRAG({\n code: ERR_CODES.INVALID_PARAMS,\n adds: 'A Corestore instance is required when not providing an existing HyperDB instance. '\n })\n }\n await this.store.ready()\n this.hypercore = this.store.get({ name: this.dbName })\n }\n this.db = HyperDB.bee(this.hypercore, dbSpec, { autoUpdate: true })\n await this.db.ready()\n await this._checkIsInitialized()\n\n this.logger.info('HyperDB ready')\n }\n\n /**\n * Close the adapter and release resources.\n * @private\n */\n async _close () {\n if (this.db) {\n this.logger.info('Closing HyperDB connection...')\n this.documentCache.clear()\n this.vectorCache.clear()\n this.centroids = []\n this.isInitialized = false\n await this.db.close()\n this.logger.debug('HyperDB closed')\n }\n }\n\n /**\n * Finds the top N centroids based on cosine similarity.\n * @param {Array} vector - The vector to find centroids for.\n * @param {number} [n=3] - The number of centroids to return.\n * @returns {Array<{index: number, similarity: number}>} Top N centroids.\n */\n _findTopNCentroids (vector, n = 3) {\n const topCentroids = []\n\n for (let i = 0; i < this.centroids.length; i++) {\n const centroid = this.centroids[i]\n if (!Array.isArray(centroid) || centroid.length === 0) continue\n\n const similarity = cosineSimilarity(vector, centroid)\n const centroidInfo = { index: i, similarity }\n\n if (topCentroids.length < n) {\n topCentroids.push(centroidInfo)\n heapifyUp(topCentroids, topCentroids.length - 1)\n } else {\n if (similarity > topCentroids[0].similarity) {\n topCentroids[0] = centroidInfo\n heapifyDown(topCentroids, 0)\n }\n }\n }\n return topCentroids.sort((a, b) => b.similarity - a.similarity)\n }\n\n /**\n * Initialize the adapter by setting up centroids.\n * @param {Array} [docs] - Array of documents with embeddings for initial ingestion.\n * @param {DbOpts} [opts] - Additional options.\n * @private\n */\n async _initialize (docs, opts = {}) {\n this.logger.info('Initializing HyperDB...')\n\n const tx = await this.db.exclusiveTransaction()\n try {\n if (docs && docs.length) {\n this.logger.debug(`Creating ${this.NUM_CENTROIDS} centroids from initial documents`)\n const shuffled = docs.slice()\n for (let i = shuffled.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]\n }\n const docsForCreatingCentroids = shuffled.slice(0, this.NUM_CENTROIDS)\n const embeddingsForCentroids = docsForCreatingCentroids\n .filter(doc => doc.embedding && Array.isArray(doc.embedding))\n .map(doc => doc.embedding)\n\n this.centroids = embeddingsForCentroids\n\n const ops = this.centroids.map((centroid, i) => {\n const centroidId = `centroid-${i}`\n const now = new Date()\n return tx.insert(this.centroidsTable, {\n id: centroidId,\n vector: centroid,\n index: i,\n createdAt: now\n })\n })\n await Promise.all(ops)\n await tx.flush()\n } else {\n this.logger.debug('Loading existing centroids from database')\n for (let i = 0; i < this.NUM_CENTROIDS; i++) {\n const centroidId = `centroid-${i}`\n const entry = await tx.get(this.centroidsTable, { id: centroidId })\n if (entry && entry.vector) {\n this.centroids[i] = Array.isArray(entry.vector) ? entry.vector : []\n }\n }\n }\n this.centroids = this.centroids.filter(v => Array.isArray(v) && v.length > 0)\n this.isInitialized = this.centroids.length > 0\n if (!this.isInitialized) throw new QvacErrorRAG({ code: ERR_CODES.CENTROIDS_INITIALIZATION_FAILURE })\n this.logger.info(`HyperDB initialized with ${this.centroids.length} centroid(s)`)\n } catch (error) {\n this.logger.error('HyperDB initialization failed:', error)\n throw new QvacErrorRAG({ code: ERR_CODES.DB_OPERATION_FAILED, adds: error.message, cause: error })\n } finally {\n await tx.close()\n }\n }\n\n async _checkIsInitialized () {\n if (this.isInitialized) return\n\n this.centroids = [] // reset centroids\n\n const tx = await this.db.exclusiveTransaction()\n try {\n for (let i = 0; i < this.NUM_CENTROIDS; i++) {\n const centroidId = `centroid-${i}`\n const entry = await tx.get(this.centroidsTable, { id: centroidId })\n if (entry && entry.vector) {\n this.centroids[i] = Array.isArray(entry.vector) ? entry.vector : []\n }\n }\n this.centroids = this.centroids.filter(v => Array.isArray(v) && v.length > 0)\n this.isInitialized = this.centroids.length > 0\n } catch (error) {\n throw new QvacErrorRAG({ code: ERR_CODES.DB_ADAPTER_NOT_INITIALIZED, adds: error.message, cause: error })\n } finally {\n await tx.close()\n }\n }\n\n /**\n * Ensure config exists with the given embeddingModelId.\n * Creates config if not exists, validates if exists.\n * @param {string} embeddingModelId - The embedding model ID\n * @private\n */\n async _ensureConfig (embeddingModelId, dimension) {\n const storedConfig = await this.getConfig()\n\n if (!storedConfig) {\n await this._persistConfig(embeddingModelId, dimension)\n this.logger?.info(`Initialized config: embeddingModelId=${embeddingModelId}, dimension=${dimension}`)\n } else if (storedConfig.embeddingModelId !== embeddingModelId) {\n throw new QvacErrorRAG({\n code: ERR_CODES.EMBEDDING_MODEL_MISMATCH,\n adds: `RAG DB configured for model '${storedConfig.embeddingModelId}', but documents use '${embeddingModelId}'`\n })\n } else if (storedConfig.dimension !== dimension) {\n throw new QvacErrorRAG({\n code: ERR_CODES.EMBEDDING_DIMENSION_MISMATCH,\n adds: `RAG DB configured for dimension '${storedConfig.dimension}', but documents use '${dimension}'`\n })\n }\n }\n\n /**\n * Persist config to database.\n * @param {string} embeddingModelId - The embedding model ID from the documents\n * @param {number} dimension - The embedding dimension from the documents\n * @private\n */\n async _persistConfig (embeddingModelId, dimension) {\n const now = new Date()\n const tx = await this.db.exclusiveTransaction()\n try {\n await tx.insert(this.configTable, {\n key: 'adapter',\n embeddingModelId,\n dimension,\n NUM_CENTROIDS: this.NUM_CENTROIDS,\n BUCKET_SIZE: this.BUCKET_SIZE,\n BATCH_SIZE: this.BATCH_SIZE,\n createdAt: now\n })\n await tx.flush()\n } catch (error) {\n throw new QvacErrorRAG({ code: ERR_CODES.DB_OPERATION_FAILED, adds: `Failed to persist config: ${error.message}`, cause: error })\n } finally {\n await tx.close()\n }\n }\n\n /**\n * Get stored adapter configuration.\n * @returns {Promise} The stored config or null if not configured\n */\n async getConfig () {\n if (!this.db) {\n throw new QvacErrorRAG({ code: ERR_CODES.DB_ADAPTER_NOT_INITIALIZED })\n }\n const snapshot = this.db.snapshot()\n try {\n const result = await snapshot.get(this.configTable, { key: 'adapter' })\n return result || null\n } catch (error) {\n // If config table doesn't exist yet or other DB errors, return null\n return null\n }\n }\n\n /**\n * Generates and stores embeddings for a batch of documents.\n * @param {Array} docs - Array of documents with embeddings.\n * @param {SaveEmbeddingsOpts} [opts] - Options for saving.\n * @returns {Promise>} - Array of processing results.\n * @private\n */\n async _processBatch (docs, opts = {}) {\n if (!this.isInitialized) throw new QvacErrorRAG({ code: ERR_CODES.DB_ADAPTER_NOT_INITIALIZED })\n\n const { signal, onPrepareProgress, progressInterval = this.PROGRESS_INTERVAL } = opts\n const results = []\n const bucketUpdates = new Map()\n const now = new Date()\n\n // Prepare docs with progress reporting\n const preparedDocs = []\n for (let i = 0; i < docs.length; i++) {\n const doc = docs[i]\n const contentHash = qvacCrypto.createHash('sha256').update(doc.content).digest('hex')\n const centroidId = this.centroids.length\n ? `centroid-${this._findTopNCentroids(doc.embedding, 1)[0].index}`\n : null\n\n preparedDocs.push({\n id: doc.id,\n index: i,\n vector: doc.embedding,\n content: doc.content,\n contentHash,\n metadata: doc.metadata || {},\n embeddingModelId: doc.embeddingModelId,\n dimension: doc.embedding.length,\n centroidId\n })\n\n if ((i + 1) % progressInterval === 0 || i === docs.length - 1) {\n onPrepareProgress?.(i + 1)\n }\n }\n\n // Handle insertions of documents and vectors\n if (preparedDocs.length > 0) {\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n const tx = await this.db.exclusiveTransaction()\n try {\n const operations = []\n\n preparedDocs.forEach(doc => {\n operations.push({\n type: 'document',\n index: doc.index,\n operation: () => tx.insert(this.documentsTable, {\n id: doc.id,\n content: doc.content,\n contentHash: doc.contentHash,\n metadata: doc.metadata,\n createdAt: now,\n updatedAt: now\n })\n })\n\n operations.push({\n type: 'vector',\n index: doc.index,\n operation: () => tx.insert(this.vectorsTable, {\n docId: doc.id,\n vector: doc.vector,\n createdAt: now\n })\n })\n\n this._updateCaches({ id: doc.id, content: doc.content }, doc.vector)\n\n // Prepare bucket updates\n if (doc.centroidId) {\n if (!bucketUpdates.has(doc.centroidId)) {\n bucketUpdates.set(doc.centroidId, {\n docIds: new Set(),\n updatedAt: now\n })\n }\n bucketUpdates.get(doc.centroidId).docIds.add(doc.id)\n }\n })\n\n // Execute all operations within the transaction\n const operationPromises = operations.map((op) => {\n return op.operation()\n .then(() => ({ type: op.type, index: op.index, status: 'fulfilled' }))\n .catch(error => ({\n type: op.type,\n index: op.index,\n status: 'rejected',\n error: error.message || 'Database operation failed'\n }))\n })\n const operationResults = await Promise.all(operationPromises)\n\n // Process results\n const docResults = new Map()\n operationResults.forEach((result, index) => {\n const op = operations[index]\n if (op && (op.type === 'document' || op.type === 'vector')) {\n const docIndex = op.index\n if (!docResults.has(docIndex)) {\n docResults.set(docIndex, {\n id: preparedDocs[docIndex].id,\n status: result.status,\n error: result.status === 'rejected' ? result.error : undefined\n })\n }\n }\n })\n\n if (bucketUpdates.size > 0) {\n await this._updateBuckets(tx, bucketUpdates, now)\n }\n\n await tx.flush()\n results.push(...Array.from(docResults.values()))\n } catch (error) {\n preparedDocs.forEach(doc => {\n results.push({\n id: doc.id,\n status: 'rejected',\n error: error.message || 'Batch insertion failed'\n })\n })\n } finally {\n await tx.close()\n }\n }\n return results\n }\n\n /**\n * Updates the caches with the new document and vector.\n * @param {Doc} doc - The document to update the caches with.\n * @param {Array} vector - The vector to update the caches with.\n * @private\n */\n _updateCaches (doc, vector) {\n this.documentCache.set(doc.id, doc.content)\n this.vectorCache.set(doc.id, vector)\n }\n\n /**\n * Updates the inverted index buckets with new document IDs.\n * @param {Transaction} tx - The database snapshot to use for the updates.\n * @param {Map, updatedAt: Date}>} bucketUpdates - Map of centroid IDs to updates.\n * @param {Date} now - Current timestamp.\n * @private\n */\n async _updateBuckets (tx, bucketUpdates, now) {\n const bucketPromises = Array.from(bucketUpdates.entries()).map(([centroidId, update]) => {\n return tx.get(this.invertedIndexTable, { centroidId })\n .then(existingBucket => {\n const newDocIds = Array.from(update.docIds)\n\n if (!existingBucket) {\n return tx.insert(this.invertedIndexTable, {\n centroidId,\n documentIds: newDocIds,\n capacity: this.BUCKET_SIZE,\n createdAt: now,\n updatedAt: now\n })\n }\n\n const updatedBucket = [...existingBucket.documentIds]\n let hasChanges = false\n\n newDocIds.forEach(docId => {\n if (!updatedBucket.includes(docId)) {\n updatedBucket.push(docId)\n hasChanges = true\n if (updatedBucket.length > this.BUCKET_SIZE) {\n updatedBucket.shift()\n }\n }\n })\n\n if (hasChanges) {\n return tx.insert(this.invertedIndexTable, {\n centroidId,\n documentIds: updatedBucket,\n capacity: this.BUCKET_SIZE,\n createdAt: existingBucket.createdAt,\n updatedAt: now\n })\n }\n })\n .catch(error => {\n throw new QvacErrorRAG({ code: ERR_CODES.DB_OPERATION_FAILED, adds: `Failed to update bucket ${centroidId}: ${error.message}`, cause: error })\n })\n })\n await Promise.all(bucketPromises)\n }\n\n /**\n * Retrieves the bucket associated with the specified centroid ID from the inverted index table.\n * @param {HyperDB} snapshot - The database snapshot to use.\n * @param {string} centroidId - The centroid ID to get the bucket for.\n * @returns {Promise>} The document IDs in the bucket.\n * @private\n */\n async _getBucket (snapshot, centroidId) {\n let bucket = []\n const bucketEntry = await snapshot.get(this.invertedIndexTable, { centroidId })\n if (bucketEntry && Array.isArray(bucketEntry.documentIds)) {\n bucket = bucketEntry.documentIds\n }\n return bucket\n }\n\n /**\n * Retrieves all entries from a table.\n * @param {string} table - The table to retrieve entries from.\n * @returns {Promise} The entries.\n * @private\n */\n async _getAllEntries (snapshot, table) {\n return snapshot.find(table).toArray()\n }\n\n /**\n * Batch retrieve multiple vectors by docIds.\n * @param {HyperDB} snapshot - The database snapshot to use.\n * @param {Array} docIds - Array of document IDs.\n * @returns {Promise>>} Map of docId to vector.\n * @private\n */\n async _getVectors (snapshot, docIds) {\n const vectorMap = new Map()\n const vectorPromises = docIds.map((docId) => {\n let vector = this.vectorCache.get(docId)\n if (vector) {\n return Promise.resolve({ docId, vector })\n }\n return snapshot.get(this.vectorsTable, { docId })\n .then(vectorEntry => {\n if (vectorEntry && Array.isArray(vectorEntry.vector)) {\n vector = vectorEntry.vector\n this.vectorCache.set(docId, vector)\n }\n return { docId, vector }\n })\n })\n const results = await Promise.all(vectorPromises)\n results.forEach(({ docId, vector }) => {\n if (vector) {\n vectorMap.set(docId, vector)\n }\n })\n\n return vectorMap\n }\n\n /**\n * Batch retrieve multiple document contents by IDs.\n * @param {HyperDB} snapshot - The database snapshot to use.\n * @param {Array} ids - Array of document IDs.\n * @returns {Promise>} Map of id to content.\n * @private\n */\n async _getDocumentContents (snapshot, ids) {\n const contentMap = new Map()\n const contentPromises = ids.map((id) => {\n let content = this.documentCache.get(id)\n if (content) {\n return Promise.resolve({ id, content })\n }\n return snapshot.get(this.documentsTable, { id })\n .then(docEntry => {\n if (docEntry) {\n content = docEntry.content\n this.documentCache.set(id, content)\n }\n return { id, content }\n })\n })\n\n const results = await Promise.all(contentPromises)\n results.forEach(({ id, content }) => {\n if (content) {\n contentMap.set(id, content)\n }\n })\n return contentMap\n }\n\n /**\n * Progressive centroid expansion for smart fallback when no candidates are found.\n * Gradually expands the search scope by including more centroids until sufficient candidates are found.\n * @param {HyperDB} snapshot - The database snapshot to use.\n * @param {Array} queryVector - The query vector.\n * @param {number} initialN - The initial number of centroids to try.\n * @param {number} [minCandidates=10] - Minimum number of candidates to find before stopping.\n * @param {number} [maxExpansions=5] - Maximum number of expansion steps.\n * @returns {Promise>} Set of candidate document IDs.\n * @private\n */\n async _progressiveCentroidExpansion (snapshot, queryVector, initialN, minCandidates = 10, maxExpansions = 5) {\n const candidateIds = new Set()\n let centroidCount = initialN\n let expansionStep = 0\n\n while (candidateIds.size < minCandidates && expansionStep < maxExpansions && centroidCount <= this.NUM_CENTROIDS) {\n const topCentroids = this._findTopNCentroids(queryVector, centroidCount)\n const bucketPromises = topCentroids.map(({ index }) => {\n const centroidId = `centroid-${index}`\n return this._getBucket(snapshot, centroidId)\n })\n const buckets = await Promise.all(bucketPromises)\n buckets.forEach(bucket => {\n bucket.forEach(docId => {\n candidateIds.add(docId)\n })\n })\n if (candidateIds.size >= minCandidates) {\n break\n }\n centroidCount = Math.min(centroidCount + 3, this.NUM_CENTROIDS)\n expansionStep++\n }\n\n if (candidateIds.size < minCandidates && expansionStep >= maxExpansions) {\n const allDocs = await this._getAllEntries(snapshot, this.documentsTable)\n const sampleSize = Math.min(50, allDocs.length)\n const sample = reservoirSample(allDocs, sampleSize)\n sample.forEach(doc => {\n candidateIds.add(doc.id)\n })\n }\n return candidateIds\n }\n\n /**\n * Filter out duplicate documents that already exist in the database.\n * Uses contentHash field on documents table for efficient duplicate detection.\n * @param {Array} docs - The documents to check for duplicates.\n * @returns {Promise<{unique: Array, duplicates: Array<{id: string, error: string}>}>} Separated unique and duplicate documents.\n * @private\n */\n async _filterDuplicates (docs) {\n const dbSnapshot = this.db.snapshot()\n const unique = []\n const duplicates = []\n const seenInBatch = new Map()\n\n const docsWithHashes = docs.map(doc => ({\n doc,\n hash: qvacCrypto.createHash('sha256').update(doc.content).digest('hex')\n }))\n\n // Check for duplicates within the batch first\n const batchUnique = []\n for (const { doc, hash } of docsWithHashes) {\n if (seenInBatch.has(hash)) {\n duplicates.push({\n id: seenInBatch.get(hash),\n error: 'Duplicate document found in current batch'\n })\n } else {\n batchUnique.push({ doc, hash })\n seenInBatch.set(hash, doc.id)\n }\n }\n\n const dbLookupPromises = batchUnique.map(({ doc, hash }) =>\n dbSnapshot.findOne('@rag/doc-by-content-hash', { gte: { contentHash: hash }, lte: { contentHash: hash } })\n .then(existingDoc => ({ doc, hash, existingDoc }))\n )\n\n const dbResults = await Promise.all(dbLookupPromises)\n\n for (const { doc, existingDoc } of dbResults) {\n if (existingDoc) {\n duplicates.push({\n id: existingDoc.id,\n error: 'Document already exists in database'\n })\n } else {\n unique.push(doc)\n }\n }\n return { unique, duplicates }\n }\n}\n\nmodule.exports = HyperDBAdapter\n// This file is autogenerated by the hyperdb compiler\n/* eslint-disable camelcase */\n\nconst { IndexEncoder, b4a } = require('hyperdb/runtime')\nconst { version, getEncoding, setVersion } = require('./messages.js')\n\nconst versions = { schema: version, db: 0 }\n\n// '@rag/documents' collection key\nconst collection0_key = new IndexEncoder([\n IndexEncoder.STRING\n], { prefix: 0 })\n\nfunction collection0_indexify (record) {\n const a = record.id\n return a === undefined ? [] : [a]\n}\n\n// '@rag/documents' value encoding\nconst collection0_enc = getEncoding('@rag/documents/hyperdb#0')\n\n// '@rag/documents' reconstruction function\nfunction collection0_reconstruct (schemaVersion, keyBuf, valueBuf) {\n const key = collection0_key.decode(keyBuf)\n setVersion(schemaVersion)\n const state = { start: 0, end: valueBuf.byteLength, buffer: valueBuf }\n const record = collection0_enc.decode(state)\n record.id = key[0]\n return record\n}\n// '@rag/documents' key reconstruction function\nfunction collection0_reconstruct_key (keyBuf) {\n const key = collection0_key.decode(keyBuf)\n return {\n id: key[0]\n }\n}\n\n// '@rag/documents'\nconst collection0 = {\n name: '@rag/documents',\n id: 0,\n version: 0,\n encodeKey (record) {\n const key = [record.id]\n return collection0_key.encode(key)\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return collection0_key.encodeRange({\n gt: gt ? collection0_indexify(gt) : null,\n lt: lt ? collection0_indexify(lt) : null,\n gte: gte ? collection0_indexify(gte) : null,\n lte: lte ? collection0_indexify(lte) : null\n })\n },\n encodeValue (schemaVersion, collectionVersion, record) {\n setVersion(schemaVersion)\n const state = { start: 0, end: 0, buffer: null }\n collection0_enc.preencode(state, record)\n state.buffer = b4a.allocUnsafe(state.end)\n collection0_enc.encode(state, record)\n return state.buffer\n },\n trigger: null,\n reconstruct: collection0_reconstruct,\n reconstructKey: collection0_reconstruct_key,\n indexes: [],\n decodedVersion: 0\n}\n\n// '@rag/vectors' collection key\nconst collection1_key = new IndexEncoder([\n IndexEncoder.STRING\n], { prefix: 1 })\n\nfunction collection1_indexify (record) {\n const a = record.docId\n return a === undefined ? [] : [a]\n}\n\n// '@rag/vectors' value encoding\nconst collection1_enc = getEncoding('@rag/vectors/hyperdb#1')\n\n// '@rag/vectors' reconstruction function\nfunction collection1_reconstruct (schemaVersion, keyBuf, valueBuf) {\n const key = collection1_key.decode(keyBuf)\n setVersion(schemaVersion)\n const state = { start: 0, end: valueBuf.byteLength, buffer: valueBuf }\n const record = collection1_enc.decode(state)\n record.docId = key[0]\n return record\n}\n// '@rag/vectors' key reconstruction function\nfunction collection1_reconstruct_key (keyBuf) {\n const key = collection1_key.decode(keyBuf)\n return {\n docId: key[0]\n }\n}\n\n// '@rag/vectors'\nconst collection1 = {\n name: '@rag/vectors',\n id: 1,\n version: 0,\n encodeKey (record) {\n const key = [record.docId]\n return collection1_key.encode(key)\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return collection1_key.encodeRange({\n gt: gt ? collection1_indexify(gt) : null,\n lt: lt ? collection1_indexify(lt) : null,\n gte: gte ? collection1_indexify(gte) : null,\n lte: lte ? collection1_indexify(lte) : null\n })\n },\n encodeValue (schemaVersion, collectionVersion, record) {\n setVersion(schemaVersion)\n const state = { start: 0, end: 0, buffer: null }\n collection1_enc.preencode(state, record)\n state.buffer = b4a.allocUnsafe(state.end)\n collection1_enc.encode(state, record)\n return state.buffer\n },\n trigger: null,\n reconstruct: collection1_reconstruct,\n reconstructKey: collection1_reconstruct_key,\n indexes: [],\n decodedVersion: 0\n}\n\n// '@rag/centroids' collection key\nconst collection2_key = new IndexEncoder([\n IndexEncoder.STRING\n], { prefix: 2 })\n\nfunction collection2_indexify (record) {\n const a = record.id\n return a === undefined ? [] : [a]\n}\n\n// '@rag/centroids' value encoding\nconst collection2_enc = getEncoding('@rag/centroids/hyperdb#2')\n\n// '@rag/centroids' reconstruction function\nfunction collection2_reconstruct (schemaVersion, keyBuf, valueBuf) {\n const key = collection2_key.decode(keyBuf)\n setVersion(schemaVersion)\n const state = { start: 0, end: valueBuf.byteLength, buffer: valueBuf }\n const record = collection2_enc.decode(state)\n record.id = key[0]\n return record\n}\n// '@rag/centroids' key reconstruction function\nfunction collection2_reconstruct_key (keyBuf) {\n const key = collection2_key.decode(keyBuf)\n return {\n id: key[0]\n }\n}\n\n// '@rag/centroids'\nconst collection2 = {\n name: '@rag/centroids',\n id: 2,\n version: 0,\n encodeKey (record) {\n const key = [record.id]\n return collection2_key.encode(key)\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return collection2_key.encodeRange({\n gt: gt ? collection2_indexify(gt) : null,\n lt: lt ? collection2_indexify(lt) : null,\n gte: gte ? collection2_indexify(gte) : null,\n lte: lte ? collection2_indexify(lte) : null\n })\n },\n encodeValue (schemaVersion, collectionVersion, record) {\n setVersion(schemaVersion)\n const state = { start: 0, end: 0, buffer: null }\n collection2_enc.preencode(state, record)\n state.buffer = b4a.allocUnsafe(state.end)\n collection2_enc.encode(state, record)\n return state.buffer\n },\n trigger: null,\n reconstruct: collection2_reconstruct,\n reconstructKey: collection2_reconstruct_key,\n indexes: [],\n decodedVersion: 0\n}\n\n// '@rag/ivfBuckets' collection key\nconst collection3_key = new IndexEncoder([\n IndexEncoder.STRING\n], { prefix: 3 })\n\nfunction collection3_indexify (record) {\n const a = record.centroidId\n return a === undefined ? [] : [a]\n}\n\n// '@rag/ivfBuckets' value encoding\nconst collection3_enc = getEncoding('@rag/ivfBuckets/hyperdb#3')\n\n// '@rag/ivfBuckets' reconstruction function\nfunction collection3_reconstruct (schemaVersion, keyBuf, valueBuf) {\n const key = collection3_key.decode(keyBuf)\n setVersion(schemaVersion)\n const state = { start: 0, end: valueBuf.byteLength, buffer: valueBuf }\n const record = collection3_enc.decode(state)\n record.centroidId = key[0]\n return record\n}\n// '@rag/ivfBuckets' key reconstruction function\nfunction collection3_reconstruct_key (keyBuf) {\n const key = collection3_key.decode(keyBuf)\n return {\n centroidId: key[0]\n }\n}\n\n// '@rag/ivfBuckets'\nconst collection3 = {\n name: '@rag/ivfBuckets',\n id: 3,\n version: 0,\n encodeKey (record) {\n const key = [record.centroidId]\n return collection3_key.encode(key)\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return collection3_key.encodeRange({\n gt: gt ? collection3_indexify(gt) : null,\n lt: lt ? collection3_indexify(lt) : null,\n gte: gte ? collection3_indexify(gte) : null,\n lte: lte ? collection3_indexify(lte) : null\n })\n },\n encodeValue (schemaVersion, collectionVersion, record) {\n setVersion(schemaVersion)\n const state = { start: 0, end: 0, buffer: null }\n collection3_enc.preencode(state, record)\n state.buffer = b4a.allocUnsafe(state.end)\n collection3_enc.encode(state, record)\n return state.buffer\n },\n trigger: null,\n reconstruct: collection3_reconstruct,\n reconstructKey: collection3_reconstruct_key,\n indexes: [],\n decodedVersion: 0\n}\n\n// '@rag/doc-by-content-hash' collection key\nconst index4_key = new IndexEncoder([\n IndexEncoder.STRING,\n IndexEncoder.STRING\n], { prefix: 4 })\n\nfunction index4_indexify (record) {\n const arr = []\n\n const a0 = record.contentHash\n if (a0 === undefined) return arr\n arr.push(a0)\n\n const a1 = record.id\n if (a1 === undefined) return arr\n arr.push(a1)\n\n return arr\n}\n\n// '@rag/doc-by-content-hash'\nconst index4 = {\n name: '@rag/doc-by-content-hash',\n version: 0,\n id: 4,\n encodeKey (record) {\n return index4_key.encode(index4_indexify(record))\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return index4_key.encodeRange({\n gt: gt ? index4_indexify(gt) : null,\n lt: lt ? index4_indexify(lt) : null,\n gte: gte ? index4_indexify(gte) : null,\n lte: lte ? index4_indexify(lte) : null\n })\n },\n encodeValue: (record) => index4.collection.encodeKey(record),\n encodeIndexKeys (record, context) {\n return [index4_key.encode([record.contentHash, record.id])]\n },\n reconstruct: (keyBuf, valueBuf) => valueBuf,\n offset: collection0.indexes.length,\n collection: collection0\n}\ncollection0.indexes.push(index4)\n\n// '@rag/config' collection key\nconst collection5_key = new IndexEncoder([\n IndexEncoder.STRING\n], { prefix: 5 })\n\nfunction collection5_indexify (record) {\n const a = record.key\n return a === undefined ? [] : [a]\n}\n\n// '@rag/config' value encoding\nconst collection5_enc = getEncoding('@rag/config/hyperdb#5')\n\n// '@rag/config' reconstruction function\nfunction collection5_reconstruct (schemaVersion, keyBuf, valueBuf) {\n const key = collection5_key.decode(keyBuf)\n setVersion(schemaVersion)\n const state = { start: 0, end: valueBuf.byteLength, buffer: valueBuf }\n const record = collection5_enc.decode(state)\n record.key = key[0]\n return record\n}\n// '@rag/config' key reconstruction function\nfunction collection5_reconstruct_key (keyBuf) {\n const key = collection5_key.decode(keyBuf)\n return {\n key: key[0]\n }\n}\n\n// '@rag/config'\nconst collection5 = {\n name: '@rag/config',\n id: 5,\n version: 0,\n encodeKey (record) {\n const key = [record.key]\n return collection5_key.encode(key)\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return collection5_key.encodeRange({\n gt: gt ? collection5_indexify(gt) : null,\n lt: lt ? collection5_indexify(lt) : null,\n gte: gte ? collection5_indexify(gte) : null,\n lte: lte ? collection5_indexify(lte) : null\n })\n },\n encodeValue (schemaVersion, collectionVersion, record) {\n setVersion(schemaVersion)\n const state = { start: 0, end: 0, buffer: null }\n collection5_enc.preencode(state, record)\n state.buffer = b4a.allocUnsafe(state.end)\n collection5_enc.encode(state, record)\n return state.buffer\n },\n trigger: null,\n reconstruct: collection5_reconstruct,\n reconstructKey: collection5_reconstruct_key,\n indexes: [],\n decodedVersion: 0\n}\n\nconst collections = [\n collection0,\n collection1,\n collection2,\n collection3,\n collection5\n]\n\nconst indexes = [\n index4\n]\n\nmodule.exports = { versions, collections, indexes, resolveCollection, resolveIndex }\n\nfunction resolveCollection (name) {\n switch (name) {\n case '@rag/documents': return collection0\n case '@rag/vectors': return collection1\n case '@rag/centroids': return collection2\n case '@rag/ivfBuckets': return collection3\n case '@rag/config': return collection5\n default: return null\n }\n}\n\nfunction resolveIndex (name) {\n switch (name) {\n case '@rag/doc-by-content-hash': return index4\n default: return null\n }\n}\n// This file is autogenerated by the hyperschema compiler\n// Schema Version: 1\n/* eslint-disable camelcase */\n/* eslint-disable quotes */\n/* eslint-disable space-before-function-paren */\n\nconst { c } = require('hyperschema/runtime')\n\nconst VERSION = 1\n\n// eslint-disable-next-line no-unused-vars\nlet version = VERSION\n\n// @rag/documents\nconst encoding0 = {\n preencode(state, m) {\n c.string.preencode(state, m.id)\n c.string.preencode(state, m.content)\n c.string.preencode(state, m.contentHash)\n c.date.preencode(state, m.createdAt)\n c.date.preencode(state, m.updatedAt)\n state.end++ // max flag is 1 so always one byte\n\n if (m.metadata) c.json.preencode(state, m.metadata)\n },\n encode(state, m) {\n const flags = m.metadata ? 1 : 0\n\n c.string.encode(state, m.id)\n c.string.encode(state, m.content)\n c.string.encode(state, m.contentHash)\n c.date.encode(state, m.createdAt)\n c.date.encode(state, m.updatedAt)\n c.uint.encode(state, flags)\n\n if (m.metadata) c.json.encode(state, m.metadata)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.string.decode(state)\n const r2 = c.string.decode(state)\n const r3 = c.date.decode(state)\n const r4 = c.date.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n id: r0,\n content: r1,\n contentHash: r2,\n createdAt: r3,\n updatedAt: r4,\n metadata: (flags & 1) !== 0 ? c.json.decode(state) : null\n }\n }\n}\n\n// @rag/vectors\nconst encoding1 = {\n preencode(state, m) {\n c.string.preencode(state, m.docId)\n c.json.preencode(state, m.vector)\n c.date.preencode(state, m.createdAt)\n },\n encode(state, m) {\n c.string.encode(state, m.docId)\n c.json.encode(state, m.vector)\n c.date.encode(state, m.createdAt)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.json.decode(state)\n const r2 = c.date.decode(state)\n\n return {\n docId: r0,\n vector: r1,\n createdAt: r2\n }\n }\n}\n\n// @rag/centroids\nconst encoding2 = {\n preencode(state, m) {\n c.string.preencode(state, m.id)\n c.json.preencode(state, m.vector)\n c.uint32.preencode(state, m.index)\n c.date.preencode(state, m.createdAt)\n },\n encode(state, m) {\n c.string.encode(state, m.id)\n c.json.encode(state, m.vector)\n c.uint32.encode(state, m.index)\n c.date.encode(state, m.createdAt)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.json.decode(state)\n const r2 = c.uint32.decode(state)\n const r3 = c.date.decode(state)\n\n return {\n id: r0,\n vector: r1,\n index: r2,\n createdAt: r3\n }\n }\n}\n\n// @rag/ivfBuckets\nconst encoding3 = {\n preencode(state, m) {\n c.string.preencode(state, m.centroidId)\n c.json.preencode(state, m.documentIds)\n c.uint32.preencode(state, m.capacity)\n c.date.preencode(state, m.createdAt)\n c.date.preencode(state, m.updatedAt)\n },\n encode(state, m) {\n c.string.encode(state, m.centroidId)\n c.json.encode(state, m.documentIds)\n c.uint32.encode(state, m.capacity)\n c.date.encode(state, m.createdAt)\n c.date.encode(state, m.updatedAt)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.json.decode(state)\n const r2 = c.uint32.decode(state)\n const r3 = c.date.decode(state)\n const r4 = c.date.decode(state)\n\n return {\n centroidId: r0,\n documentIds: r1,\n capacity: r2,\n createdAt: r3,\n updatedAt: r4\n }\n }\n}\n\n// @rag/config\nconst encoding4 = {\n preencode(state, m) {\n c.string.preencode(state, m.key)\n c.string.preencode(state, m.embeddingModelId)\n c.uint32.preencode(state, m.dimension)\n c.uint32.preencode(state, m.NUM_CENTROIDS)\n c.uint32.preencode(state, m.BUCKET_SIZE)\n c.uint32.preencode(state, m.BATCH_SIZE)\n c.date.preencode(state, m.createdAt)\n },\n encode(state, m) {\n c.string.encode(state, m.key)\n c.string.encode(state, m.embeddingModelId)\n c.uint32.encode(state, m.dimension)\n c.uint32.encode(state, m.NUM_CENTROIDS)\n c.uint32.encode(state, m.BUCKET_SIZE)\n c.uint32.encode(state, m.BATCH_SIZE)\n c.date.encode(state, m.createdAt)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.string.decode(state)\n const r2 = c.uint32.decode(state)\n const r3 = c.uint32.decode(state)\n const r4 = c.uint32.decode(state)\n const r5 = c.uint32.decode(state)\n const r6 = c.date.decode(state)\n\n return {\n key: r0,\n embeddingModelId: r1,\n dimension: r2,\n NUM_CENTROIDS: r3,\n BUCKET_SIZE: r4,\n BATCH_SIZE: r5,\n createdAt: r6\n }\n }\n}\n\n// @rag/documents/hyperdb#0\nconst encoding5 = {\n preencode(state, m) {\n c.string.preencode(state, m.content)\n c.string.preencode(state, m.contentHash)\n c.date.preencode(state, m.createdAt)\n c.date.preencode(state, m.updatedAt)\n state.end++ // max flag is 1 so always one byte\n\n if (m.metadata) c.json.preencode(state, m.metadata)\n },\n encode(state, m) {\n const flags = m.metadata ? 1 : 0\n\n c.string.encode(state, m.content)\n c.string.encode(state, m.contentHash)\n c.date.encode(state, m.createdAt)\n c.date.encode(state, m.updatedAt)\n c.uint.encode(state, flags)\n\n if (m.metadata) c.json.encode(state, m.metadata)\n },\n decode(state) {\n const r1 = c.string.decode(state)\n const r2 = c.string.decode(state)\n const r3 = c.date.decode(state)\n const r4 = c.date.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n id: null,\n content: r1,\n contentHash: r2,\n createdAt: r3,\n updatedAt: r4,\n metadata: (flags & 1) !== 0 ? c.json.decode(state) : null\n }\n }\n}\n\n// @rag/vectors/hyperdb#1\nconst encoding6 = {\n preencode(state, m) {\n c.json.preencode(state, m.vector)\n c.date.preencode(state, m.createdAt)\n },\n encode(state, m) {\n c.json.encode(state, m.vector)\n c.date.encode(state, m.createdAt)\n },\n decode(state) {\n const r1 = c.json.decode(state)\n const r2 = c.date.decode(state)\n\n return {\n docId: null,\n vector: r1,\n createdAt: r2\n }\n }\n}\n\n// @rag/centroids/hyperdb#2\nconst encoding7 = {\n preencode(state, m) {\n c.json.preencode(state, m.vector)\n c.uint32.preencode(state, m.index)\n c.date.preencode(state, m.createdAt)\n },\n encode(state, m) {\n c.json.encode(state, m.vector)\n c.uint32.encode(state, m.index)\n c.date.encode(state, m.createdAt)\n },\n decode(state) {\n const r1 = c.json.decode(state)\n const r2 = c.uint32.decode(state)\n const r3 = c.date.decode(state)\n\n return {\n id: null,\n vector: r1,\n index: r2,\n createdAt: r3\n }\n }\n}\n\n// @rag/ivfBuckets/hyperdb#3\nconst encoding8 = {\n preencode(state, m) {\n c.json.preencode(state, m.documentIds)\n c.uint32.preencode(state, m.capacity)\n c.date.preencode(state, m.createdAt)\n c.date.preencode(state, m.updatedAt)\n },\n encode(state, m) {\n c.json.encode(state, m.documentIds)\n c.uint32.encode(state, m.capacity)\n c.date.encode(state, m.createdAt)\n c.date.encode(state, m.updatedAt)\n },\n decode(state) {\n const r1 = c.json.decode(state)\n const r2 = c.uint32.decode(state)\n const r3 = c.date.decode(state)\n const r4 = c.date.decode(state)\n\n return {\n centroidId: null,\n documentIds: r1,\n capacity: r2,\n createdAt: r3,\n updatedAt: r4\n }\n }\n}\n\n// @rag/config/hyperdb#5\nconst encoding9 = {\n preencode(state, m) {\n c.string.preencode(state, m.embeddingModelId)\n c.uint32.preencode(state, m.dimension)\n c.uint32.preencode(state, m.NUM_CENTROIDS)\n c.uint32.preencode(state, m.BUCKET_SIZE)\n c.uint32.preencode(state, m.BATCH_SIZE)\n c.date.preencode(state, m.createdAt)\n },\n encode(state, m) {\n c.string.encode(state, m.embeddingModelId)\n c.uint32.encode(state, m.dimension)\n c.uint32.encode(state, m.NUM_CENTROIDS)\n c.uint32.encode(state, m.BUCKET_SIZE)\n c.uint32.encode(state, m.BATCH_SIZE)\n c.date.encode(state, m.createdAt)\n },\n decode(state) {\n const r1 = c.string.decode(state)\n const r2 = c.uint32.decode(state)\n const r3 = c.uint32.decode(state)\n const r4 = c.uint32.decode(state)\n const r5 = c.uint32.decode(state)\n const r6 = c.date.decode(state)\n\n return {\n key: null,\n embeddingModelId: r1,\n dimension: r2,\n NUM_CENTROIDS: r3,\n BUCKET_SIZE: r4,\n BATCH_SIZE: r5,\n createdAt: r6\n }\n }\n}\n\nfunction setVersion(v) {\n version = v\n}\n\nfunction encode(name, value, v = VERSION) {\n version = v\n return c.encode(getEncoding(name), value)\n}\n\nfunction decode(name, buffer, v = VERSION) {\n version = v\n return c.decode(getEncoding(name), buffer)\n}\n\nfunction getEnum(name) {\n switch (name) {\n default:\n throw new Error('Enum not found ' + name)\n }\n}\n\nfunction getEncoding(name) {\n switch (name) {\n case '@rag/documents':\n return encoding0\n case '@rag/vectors':\n return encoding1\n case '@rag/centroids':\n return encoding2\n case '@rag/ivfBuckets':\n return encoding3\n case '@rag/config':\n return encoding4\n case '@rag/documents/hyperdb#0':\n return encoding5\n case '@rag/vectors/hyperdb#1':\n return encoding6\n case '@rag/centroids/hyperdb#2':\n return encoding7\n case '@rag/ivfBuckets/hyperdb#3':\n return encoding8\n case '@rag/config/hyperdb#5':\n return encoding9\n default:\n throw new Error('Encoder not found ' + name)\n }\n}\n\nfunction getStruct(name, v = VERSION) {\n const enc = getEncoding(name)\n return {\n preencode(state, m) {\n version = v\n enc.preencode(state, m)\n },\n encode(state, m) {\n version = v\n enc.encode(state, m)\n },\n decode(state) {\n version = v\n return enc.decode(state)\n }\n }\n}\n\nconst resolveStruct = getStruct // compat\n\nmodule.exports = {\n resolveStruct,\n getStruct,\n getEnum,\n getEncoding,\n encode,\n decode,\n setVersion,\n version\n}\n'use strict'\n\nconst { QvacErrorRAG, ERR_CODES } = require('../../errors')\n\n/**\n * Abstract base class for LLM implementations.\n * Provides a common interface for different LLM types (QVAC-based, HTTP-based, etc.).\n */\nclass BaseLlmAdapter {\n constructor () {\n if (new.target === BaseLlmAdapter) {\n throw new QvacErrorRAG({ code: ERR_CODES.ABSTRACT_CLASS, adds: 'BaseLlmAdapter cannot be instantiated directly' })\n }\n }\n\n /**\n * Run inference with the LLM using query and search results.\n * @param {string} query - The user query\n * @param {Array} searchResults - Search results from the embedder\n * @param {InferOpts} [opts] - Additional options for the inference\n * @returns {Promise} The generated response (format depends on LLM adapter implementation)\n */\n async run (query, searchResults, opts = {}) {\n throw new QvacErrorRAG({ code: ERR_CODES.NOT_IMPLEMENTED, adds: 'run method must be implemented by concrete adapter classes' })\n }\n}\n\nmodule.exports = BaseLlmAdapter\n'use strict'\n\nconst BaseLlmAdapter = require('./BaseLlmAdapter')\nconst { QvacErrorRAG, ERR_CODES } = require('../../errors')\nconst resolveFetch = require('../../shims/resolve-fetch')\n\n/**\n * HTTP-based LLM adapter that can work with various HTTP LLM APIs.\n * Requires bare-fetch as an optional dependency for HTTP requests.\n */\nclass HttpLlmAdapter extends BaseLlmAdapter {\n /**\n * @param {Object} httpConfig - Configuration for the LLM API\n * @param {string} httpConfig.apiUrl - The API endpoint URL\n * @param {string} [httpConfig.method='POST'] - HTTP method to use\n * @param {Object} [httpConfig.headers={}] - HTTP headers to send\n * @param {Function} requestBodyFormatter - Function that takes input(query & searchResults) and returns the request body\n * @param {Function} responseBodyFormatter - Function that takes API response and returns the final result\n */\n constructor (httpConfig, requestBodyFormatter, responseBodyFormatter) {\n super()\n\n if (!httpConfig || typeof httpConfig !== 'object') {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'HTTP configuration is required' })\n }\n\n if (!httpConfig.apiUrl || typeof httpConfig.apiUrl !== 'string') {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'API URL is required and must be a string' })\n }\n\n if (!requestBodyFormatter || typeof requestBodyFormatter !== 'function') {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'Request body formatter function is required' })\n }\n\n if (!responseBodyFormatter || typeof responseBodyFormatter !== 'function') {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'Response body formatter function is required' })\n }\n\n this.httpConfig = {\n method: 'POST',\n ...httpConfig,\n headers: {\n 'Content-Type': 'application/json',\n ...httpConfig.headers\n }\n }\n this.requestBodyFormatter = requestBodyFormatter\n this.responseBodyFormatter = responseBodyFormatter\n }\n\n /**\n * Run inference with the HTTP LLM API using query and search results.\n * @param {string} query - The user query\n * @param {Array} searchResults - Search results from the embedder\n * @param {InferOpts} [opts] - Additional options for the inference\n * @returns {Promise} The generated response (formatted by responseBodyFormatter)\n */\n async run (query, searchResults, opts = {}) {\n try {\n const requestBody = this.requestBodyFormatter(query, searchResults, opts)\n if (!requestBody || typeof requestBody !== 'object') {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'Request body formatter must return an object' })\n }\n const response = await this._makeHttpRequest(requestBody)\n const result = this.responseBodyFormatter(response)\n return result\n } catch (error) {\n if (error instanceof QvacErrorRAG) {\n throw error\n }\n throw new QvacErrorRAG({ code: ERR_CODES.GENERATION_FAILED, adds: `HTTP LLM request failed: ${error.message}`, cause: error })\n }\n }\n\n /**\n * Make an HTTP request to the LLM API.\n * @param {Object} requestBody - The request body to send\n * @returns {Promise} The parsed response object\n * @private\n */\n async _makeHttpRequest (requestBody) {\n const fetch = resolveFetch()\n\n const response = await fetch(this.httpConfig.apiUrl, {\n method: this.httpConfig.method,\n headers: this.httpConfig.headers,\n body: JSON.stringify(requestBody)\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`HTTP ${response.status}: ${errorText}`)\n }\n\n return response.json()\n }\n\n /**\n * Update the HTTP configuration.\n * @param {Object} newHttpConfig - New HTTP configuration to merge\n */\n updateHttpConfig (newHttpConfig) {\n this.httpConfig = { ...this.httpConfig, ...newHttpConfig }\n }\n\n /**\n * Update the request body formatter function.\n * @param {Function} newFormatter - New formatter function\n */\n updateRequestBodyFormatter (newFormatter) {\n if (typeof newFormatter !== 'function') {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'Request body formatter must be a function' })\n }\n this.requestBodyFormatter = newFormatter\n }\n\n /**\n * Update the response body formatter function.\n * @param {Function} newFormatter - New formatter function\n */\n updateResponseBodyFormatter (newFormatter) {\n if (typeof newFormatter !== 'function') {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'Response body formatter must be a function' })\n }\n this.responseBodyFormatter = newFormatter\n }\n}\n\nmodule.exports = HttpLlmAdapter\n'use strict'\n\nconst BaseLlmAdapter = require('./BaseLlmAdapter')\nconst { QvacErrorRAG, ERR_CODES } = require('../../errors')\n\n/**\n * QVAC-based LLM adapter that wraps QVAC LLM instances.\n */\nclass QvacLlmAdapter extends BaseLlmAdapter {\n /**\n * @param {QvacLlmAddon} llm - The QVAC LLM instance\n */\n constructor (llm) {\n super()\n\n if (!llm) {\n throw new QvacErrorRAG({ code: ERR_CODES.LLM_REQUIRED, adds: 'QVAC LLM instance is required' })\n }\n if (typeof llm.run !== 'function') {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'QVAC LLM must have a run method' })\n }\n this.llm = llm\n }\n\n /**\n * Run inference with the QVAC LLM using query and search results.\n * @param {string} query - The user query\n * @param {Array} searchResults - Search results from the embedder\n * @param {Object} [opts] - Additional options for the inference\n * @returns {Promise} The generated response from QVAC\n * @throws {QvacErrorRAG} If the QVAC LLM inference fails\n */\n async run (query, searchResults, opts = {}) {\n if (!query || typeof query !== 'string') {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'Query must be a non-empty string' })\n }\n\n let contextString = ''\n if (searchResults && searchResults.length > 0) {\n contextString = searchResults\n .map(c => `[Relevance: ${Math.round(c.score * 100)}%]\\n${c.content}`)\n .join('\\n\\n')\n }\n\n const systemPrompt = opts.systemPrompt ||\n 'You are a helpful assistant. Base your answer ONLY on the provided context information. ' +\n \"If no context is provided, say that you don't have enough information to answer. \" +\n 'Each context piece has a relevance score - use this to weight the importance of each piece.'\n\n const userPrompt = contextString.length > 0\n ? `Context:\\n${contextString}\\n\\nQuestion: ${query}`\n : `Question: ${query}`\n\n const messages = [\n { role: 'system', content: systemPrompt },\n { role: 'user', content: userPrompt }\n ]\n\n try {\n return await this.llm.run(messages, opts)\n } catch (error) {\n throw new QvacErrorRAG({ code: ERR_CODES.GENERATION_FAILED, adds: `QVAC LLM inference failed: ${error.message}`, cause: error })\n }\n }\n\n /**\n * Update the QVAC LLM instance.\n * @param {QvacLlmAddon} newQvacLlm - New QVAC LLM instance\n */\n updateLLM (newLLM) {\n if (!newLLM) {\n throw new QvacErrorRAG({ code: ERR_CODES.LLM_REQUIRED, adds: 'QVAC LLM instance is required' })\n }\n if (typeof newLLM.run !== 'function') {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT, adds: 'QVAC LLM must have a run method' })\n }\n this.llm = newLLM\n }\n}\n\nmodule.exports = QvacLlmAdapter\n'use strict'\n\nconst { QvacErrorBase, addCodes } = require('@qvac/error')\nconst { name, version } = require('../package.json')\n\nclass QvacErrorRAG extends QvacErrorBase { }\n\nconst ERR_CODES = Object.freeze({\n ABSTRACT_CLASS: 14001,\n DB_ADAPTER_NOT_INITIALIZED: 14002,\n DB_ADAPTER_REQUIRED: 14003,\n CENTROIDS_INITIALIZATION_FAILURE: 14004,\n LLM_REQUIRED: 14005,\n EMBEDDING_FUNCTION_REQUIRED: 14006,\n NOT_IMPLEMENTED: 14007,\n INVALID_INPUT: 14008,\n INVALID_PARAMS: 14009,\n DUPLICATE_DOCUMENT_ID: 14010,\n GENERATION_FAILED: 14011,\n CHUNKING_FAILED: 14012,\n INVALID_CHUNKER: 14013,\n DB_OPERATION_FAILED: 14014,\n DEPENDENCY_REQUIRED: 14015,\n OPERATION_CANCELLED: 14016,\n EMBEDDING_MODEL_MISMATCH: 14017,\n EMBEDDING_DIMENSION_MISMATCH: 14018\n})\n\naddCodes({\n [ERR_CODES.ABSTRACT_CLASS]: {\n name: 'ABSTRACT_CLASS',\n message: 'Abstract class cannot be instantiated directly'\n },\n [ERR_CODES.DB_ADAPTER_NOT_INITIALIZED]: {\n name: 'DB_ADAPTER_NOT_INITIALIZED',\n message: 'Adapter not initialized'\n },\n [ERR_CODES.DB_ADAPTER_REQUIRED]: {\n name: 'DB_ADAPTER_REQUIRED',\n message: 'Database adapter required'\n },\n [ERR_CODES.CENTROIDS_INITIALIZATION_FAILURE]: {\n name: 'CENTROIDS_INITIALIZATION_FAILURE',\n message: 'Centroids initialization failure'\n },\n [ERR_CODES.LLM_REQUIRED]: {\n name: 'LLM_REQUIRED',\n message: 'LLM required'\n },\n [ERR_CODES.EMBEDDING_FUNCTION_REQUIRED]: {\n name: 'EMBEDDING_FUNCTION_REQUIRED',\n message: 'Embedding function required'\n },\n [ERR_CODES.NOT_IMPLEMENTED]: {\n name: 'NOT_IMPLEMENTED',\n message: 'Not implemented'\n },\n [ERR_CODES.INVALID_INPUT]: {\n name: 'INVALID_INPUT',\n message: 'Invalid input'\n },\n [ERR_CODES.INVALID_PARAMS]: {\n name: 'INVALID_PARAMS',\n message: 'Invalid params'\n },\n [ERR_CODES.DUPLICATE_DOCUMENT_ID]: {\n name: 'DUPLICATE_DOCUMENT_ID',\n message: (id) => `Duplicate document id detected: ${id}`\n },\n [ERR_CODES.GENERATION_FAILED]: {\n name: 'GENERATION_FAILED',\n message: (message) => `Failed to generate, error: ${message}`\n },\n [ERR_CODES.CHUNKING_FAILED]: {\n name: 'CHUNKING_FAILED',\n message: (message) => `Failed to chunk document: ${message}`\n },\n [ERR_CODES.INVALID_CHUNKER]: {\n name: 'INVALID_CHUNKER',\n message: 'Invalid chunker instance provided'\n },\n [ERR_CODES.DB_OPERATION_FAILED]: {\n name: 'DB_OPERATION_FAILED',\n message: (message) => `Database operation failed: ${message}`\n },\n [ERR_CODES.DEPENDENCY_REQUIRED]: {\n name: 'DEPENDENCY_REQUIRED',\n message: (message) => `Required dependency missing: ${message}`\n },\n [ERR_CODES.OPERATION_CANCELLED]: {\n name: 'OPERATION_CANCELLED',\n message: 'Operation was cancelled'\n },\n [ERR_CODES.EMBEDDING_MODEL_MISMATCH]: {\n name: 'EMBEDDING_MODEL_MISMATCH',\n message: (message) => `Embedding model mismatch: ${message}`\n },\n [ERR_CODES.EMBEDDING_DIMENSION_MISMATCH]: {\n name: 'EMBEDDING_DIMENSION_MISMATCH',\n message: (message) => `Embedding dimension mismatch: ${message}`\n }\n}, { name, version })\n\nmodule.exports = {\n ERR_CODES,\n QvacErrorRAG\n}\n'use strict'\n\nconst { z } = require('zod')\n\n// ============== Input Schemas ==============\n\nconst embeddingInputSchema = z.union([\n z.string().trim().min(1, 'Text cannot be empty'),\n z.array(z.string().trim().min(1, 'Text array element cannot be empty')).min(1, 'Text array cannot be empty')\n])\n\n// ============== Output Schemas ==============\n\nconst singleEmbeddingSchema = z.array(z.number()).min(1, 'Embedding cannot be empty')\n\nconst batchEmbeddingSchema = z.array(\n z.array(z.number()).min(1, 'Individual embedding cannot be empty')\n).min(1, 'Batch embeddings cannot be empty')\n\n// ============== Document Schemas ==============\n\n// Base document (for embedding generation)\nconst docSchema = z.object({\n id: z.string().trim().min(1, 'Document id is required'),\n content: z.string().trim().min(1, 'Document content is required')\n})\n\nconst docsArraySchema = z.array(docSchema).min(1, 'Documents array cannot be empty')\n\n// Embedded document (for saving)\nconst embeddedDocSchema = docSchema.extend({\n embedding: z.array(z.number()).min(1, 'Embedding cannot be empty'),\n embeddingModelId: z.string().min(1, 'embeddingModelId is required'),\n metadata: z.record(z.any()).optional()\n}).strict()\n\nconst embeddedDocsArraySchema = z.array(embeddedDocSchema).min(1, 'Documents array cannot be empty')\n\nmodule.exports = {\n embeddingInputSchema,\n singleEmbeddingSchema,\n batchEmbeddingSchema,\n docSchema,\n docsArraySchema,\n embeddedDocSchema,\n embeddedDocsArraySchema\n}\n'use strict'\n\nconst { normalizeDocs } = require('../utils/helper')\nconst { QvacErrorRAG, ERR_CODES } = require('../errors')\nconst { embeddedDocsArraySchema } = require('../schemas/embedding')\nconst QvacLogger = require('@qvac/logging')\n\nclass IngestionService {\n /**\n * @param {Object} config\n * @param {BaseDBAdapter} config.dbAdapter - Database adapter for storing embeddings\n * @param {ChunkingService} config.chunkingService - Service for chunking documents\n * @param {EmbeddingService} config.embeddingService - Service for generating embeddings\n * @param {Logger} [config.logger] - Optional logger instance\n */\n constructor ({ dbAdapter, chunkingService, embeddingService, logger }) {\n if (!dbAdapter) throw new QvacErrorRAG({ code: ERR_CODES.DB_ADAPTER_REQUIRED })\n if (!chunkingService) throw new QvacErrorRAG({ code: ERR_CODES.INVALID_CHUNKER })\n if (!embeddingService) throw new QvacErrorRAG({ code: ERR_CODES.EMBEDDING_FUNCTION_REQUIRED })\n\n this.dbAdapter = dbAdapter\n this.chunkingService = chunkingService\n this.embeddingService = embeddingService\n this.logger = logger || new QvacLogger()\n }\n\n /**\n * Chunks a large text into multiple chunks using the configured chunking options.\n * @param {string|Array} input - The text or array of texts to chunk.\n * @param {ChunkOpts} [opts] - Optional chunking options to override the default.\n * @returns {Promise>} - Array of chunked documents with IDs and content.\n */\n async chunk (input, opts = {}) {\n return this.chunkingService.chunkText(input, opts)\n }\n\n /**\n * Validate embedded docs structure.\n * @param {Array} embeddedDocs - Documents with embeddings\n * @throws {QvacErrorRAG} If validation fails\n * @private\n */\n _validateEmbeddedDocs (embeddedDocs) {\n try {\n embeddedDocsArraySchema.parse(embeddedDocs)\n } catch (error) {\n if (error.name === 'ZodError') {\n const zodIssue = error.issues?.[0]\n throw new QvacErrorRAG({\n code: ERR_CODES.INVALID_INPUT,\n adds: `Embedded document validation failed: ${zodIssue?.message || 'Invalid embedded documents'}`,\n cause: error\n })\n }\n throw error\n }\n }\n\n /**\n * Save embedded documents directly to the vector database.\n * Documents must have id, content, embedding, and embeddingModelId fields.\n * @param {Array} embeddedDocs - Documents with embeddings.\n * @param {SaveEmbeddingsOpts} [opts] - Options for saving.\n * @returns {Promise>} - Array of processing results.\n */\n async saveEmbeddings (embeddedDocs, opts = {}) {\n const { onProgress, signal, dbOpts } = opts\n\n this._validateEmbeddedDocs(embeddedDocs)\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n return this.dbAdapter.saveEmbeddings(embeddedDocs, {\n ...dbOpts,\n onProgress,\n signal\n })\n }\n\n /**\n * Ingest documents: chunk, embed, and save to the vector database.\n * Convenience method that handles the full pipeline.\n * @param {string|Array} docs - Documents to ingest (text or Doc objects without embeddings).\n * @param {string} embeddingModelId - The embedding model identifier.\n * @param {IngestOpts} [opts] - Options for the ingestion pipeline.\n * @returns {Promise<{processed: Array, droppedIndices: Array}>} - Processing results and dropped indices.\n */\n async ingest (docs, embeddingModelId, opts = {}) {\n const { onProgress, signal, dbOpts, chunkOpts, progressInterval } = opts\n if (opts.chunk === undefined) opts.chunk = true\n\n if (!embeddingModelId || typeof embeddingModelId !== 'string') {\n throw new QvacErrorRAG({\n code: ERR_CODES.INVALID_PARAMS,\n adds: 'embeddingModelId is required and must be a string'\n })\n }\n\n // Prepare documents: convert to {id, content} objects\n let preparedDocs = null\n let droppedIndices = []\n\n const inputDocs = typeof docs === 'string' ? [docs] : docs\n const inputCount = inputDocs.length\n this.logger.info(`Starting ingestion of ${inputCount} document(s)`)\n\n if (opts.chunk) {\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n this.logger.debug('Phase: Chunking')\n onProgress?.('chunking', 0, inputCount)\n preparedDocs = await this.chunkingService.chunkText(docs, chunkOpts)\n onProgress?.('chunking', inputCount, inputCount)\n } else {\n const result = normalizeDocs(inputDocs)\n preparedDocs = result.normalizedDocs\n droppedIndices = result.droppedIndices\n }\n\n if (preparedDocs.length === 0) {\n this.logger.warn('No documents to ingest after preparation')\n return {\n processed: [],\n droppedIndices\n }\n }\n\n // Phase 2: Embedding\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n this.logger.debug('Phase: Embedding')\n const embeddingMap = await this.embeddingService.generateEmbeddingsForDocs(\n preparedDocs,\n {\n onProgress: (current, total) => {\n onProgress?.('embedding', current, total)\n },\n signal\n }\n )\n\n // Attach embeddings to documents\n const embeddedDocs = preparedDocs.map(doc => ({\n ...doc,\n embeddingModelId,\n embedding: embeddingMap[doc.id]\n }))\n\n // Phase 3: Saving\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n this.logger.debug('Phase: Saving')\n const processed = await this.dbAdapter.saveEmbeddings(embeddedDocs, {\n ...dbOpts,\n progressInterval,\n onProgress: (stage, current, total) => {\n onProgress?.(`saving:${stage}`, current, total)\n },\n signal\n })\n\n this.logger.info(`Ingestion complete: ${processed.length} saved, ${droppedIndices.length} dropped`)\n\n return {\n processed,\n droppedIndices\n }\n }\n\n /**\n * Delete embeddings for a set of documents inside the vector database.\n * @param {Array} ids - The ids of the documents to be deleted.\n * @returns {Promise} True if the embeddings were deleted\n */\n async deleteEmbeddings (ids) {\n return this.dbAdapter.deleteEmbeddings(ids)\n }\n}\n\nmodule.exports = IngestionService\n'use strict'\n\nconst { normalizeDocs } = require('../utils/helper')\nconst { QvacErrorRAG, ERR_CODES } = require('../errors')\nconst QvacLogger = require('@qvac/logging')\n\nclass RetrievalService {\n /**\n * @param {Object} config\n * @param {BaseDBAdapter} config.dbAdapter - Database adapter for searching embeddings\n * @param {ChunkingService} config.chunkingService - Service for chunking documents\n * @param {EmbeddingService} config.embeddingService - Service for generating embeddings\n * @param {Logger} [config.logger] - Optional logger instance\n */\n constructor ({ dbAdapter, chunkingService, embeddingService, logger }) {\n if (!dbAdapter) throw new QvacErrorRAG({ code: ERR_CODES.DB_ADAPTER_REQUIRED })\n if (!chunkingService) throw new QvacErrorRAG({ code: ERR_CODES.INVALID_CHUNKER })\n if (!embeddingService) throw new QvacErrorRAG({ code: ERR_CODES.EMBEDDING_FUNCTION_REQUIRED })\n\n this.dbAdapter = dbAdapter\n this.chunkingService = chunkingService\n this.embeddingService = embeddingService\n this.logger = logger || new QvacLogger()\n }\n\n /**\n * Generate embeddings for a text.\n * @param {string} text - The text to generate embeddings for.\n * @returns {Promise>} The embeddings.\n */\n async generateEmbeddings (text) {\n return this.embeddingService.generateEmbeddings(text)\n }\n\n /**\n * Generate embeddings for a set of documents.\n * @param {string|Array} docs - The documents to generate embeddings for.\n * @param {GenerateEmbeddingsOpts} [opts] - Options for the embedding generation.\n * @returns {Promise<{[key: string]: Array}>} A map of document IDs to their embeddings.\n */\n async generateEmbeddingsForDocs (docs, opts = {}) {\n const { signal, chunk = true, chunkOpts } = opts\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n let normalizedDocs = null\n if (chunk) {\n normalizedDocs = await this.chunkingService.chunkText(docs, chunkOpts)\n } else {\n const docsToNormalize = typeof docs === 'string' ? [docs] : docs\n const result = normalizeDocs(docsToNormalize)\n normalizedDocs = result.normalizedDocs\n }\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n return this.embeddingService.generateEmbeddingsForDocs(normalizedDocs, { signal })\n }\n\n /**\n * Search for documents based on a query string.\n * @param {string} query - The search query.\n * @param {Object} [params] - The parameters for the search.\n * @returns {Promise>} An array of search results.\n */\n async search (query, params = {}) {\n const { signal } = params\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n this.logger.debug(`Search started: \"${query.substring(0, 50)}${query.length > 50 ? '...' : ''}\"`)\n const startTime = Date.now()\n\n if (typeof query !== 'string' || query.trim() === '') throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT })\n const queryVector = await this.embeddingService.generateEmbeddings(query)\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n const results = await this.dbAdapter.search(query, queryVector, params)\n const duration = Date.now() - startTime\n\n this.logger.info(`Search complete: ${results.length} result(s) in ${duration}ms`)\n\n return results\n }\n}\n\nmodule.exports = RetrievalService\n'use strict'\n\nconst BaseChunkAdapter = require('../../adapters/chunker/BaseChunkAdapter')\nconst LLMChunkAdapter = require('../../adapters/chunker/LLMChunkAdapter')\nconst { QvacErrorRAG, ERR_CODES } = require('../../errors')\nconst QvacLogger = require('@qvac/logging')\n\nclass ChunkingService {\n /**\n * @param {Object} config\n * @param {BaseChunkAdapter} [config.chunker] - Chunker instance, defaults to LLMChunker\n * @param {ChunkOpts} [config.chunkOpts] - Optional chunking options\n * @param {Logger} [config.logger] - Optional logger instance\n */\n constructor ({ chunker, chunkOpts = {}, logger }) {\n if (chunker && !(chunker instanceof BaseChunkAdapter)) {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_CHUNKER })\n }\n\n this.chunker = chunker || new LLMChunkAdapter(chunkOpts)\n this.chunkOpts = chunkOpts\n this.logger = logger || new QvacLogger()\n }\n\n /**\n * Splits text into multiple chunks using the configured chunker.\n * @param {string|string[]} input - The text or array of texts to chunk.\n * @param {Object} [opts] - Chunking options to override defaults.\n * @returns {Promise>} Array of chunked documents with IDs and content.\n */\n async chunkText (input, opts = {}) {\n const inputCount = typeof input === 'string' ? 1 : input.length\n this.logger.debug(`Chunking ${inputCount} text(s)`)\n const startTime = Date.now()\n\n const chunkOpts = { ...this.chunkOpts, ...opts }\n const chunks = await this.chunker.chunkText(input, chunkOpts)\n\n const duration = Date.now() - startTime\n this.logger.info(`Chunking complete: ${chunks.length} chunk(s) in ${duration}ms`)\n\n return chunks\n }\n\n /**\n * Sets the chunker for the service.\n * @param {BaseChunkAdapter} chunker - The chunker instance.\n * @param {ChunkOpts} [chunkOpts] - The options for the chunking.\n */\n setChunker (chunker, chunkOpts = {}) {\n if (!(chunker instanceof BaseChunkAdapter)) {\n throw new QvacErrorRAG({ code: ERR_CODES.INVALID_CHUNKER })\n }\n this.chunker = chunker\n this.chunkOpts = { ...this.chunkOpts, ...chunkOpts }\n }\n}\n\nmodule.exports = ChunkingService\n'use strict'\n\nconst { QvacErrorRAG, ERR_CODES } = require('../../errors')\nconst {\n embeddingInputSchema,\n singleEmbeddingSchema,\n batchEmbeddingSchema,\n docsArraySchema\n} = require('../../schemas/embedding')\nconst QvacLogger = require('@qvac/logging')\n\nclass EmbeddingService {\n /**\n * @param {Object} config\n * @param {EmbeddingFunction} config.embeddingFunction - The embedding function\n * @param {Logger} [config.logger] - Optional logger instance\n */\n constructor ({ embeddingFunction, logger }) {\n if (!embeddingFunction || typeof embeddingFunction !== 'function') {\n throw new QvacErrorRAG({ code: ERR_CODES.EMBEDDING_FUNCTION_REQUIRED, adds: 'embeddingFunction must be a function that takes text and returns an array of numbers' })\n }\n this.embeddingFunction = embeddingFunction\n this.logger = logger || new QvacLogger()\n }\n\n /**\n * Generate embeddings for text(s).\n * Supports both single text and batch processing.\n * @param {string|Array} text - The text or array of texts to generate embeddings for.\n * @returns {Promise|Array>>} The embeddings (single array for text, array of arrays for batch).\n */\n async generateEmbeddings (text) {\n let validatedInput\n try {\n validatedInput = embeddingInputSchema.parse(text)\n } catch (error) {\n if (error.name === 'ZodError') {\n const zodIssue = error.issues?.[0]\n throw new QvacErrorRAG({\n code: ERR_CODES.INVALID_INPUT,\n adds: `Input validation failed: ${zodIssue?.message || 'Invalid input'}`,\n cause: error\n })\n }\n throw error\n }\n\n let embeddings\n try {\n embeddings = await this.embeddingFunction(validatedInput)\n } catch (error) {\n if (error instanceof QvacErrorRAG) {\n throw error\n }\n throw new QvacErrorRAG({\n code: ERR_CODES.GENERATION_FAILED,\n adds: `Failed to generate embeddings: ${error.message}`,\n cause: error\n })\n }\n\n try {\n if (Array.isArray(validatedInput)) {\n batchEmbeddingSchema.parse(embeddings)\n } else {\n singleEmbeddingSchema.parse(embeddings)\n }\n } catch (error) {\n if (error.name === 'ZodError') {\n const zodIssue = error.issues?.[0]\n throw new QvacErrorRAG({\n code: ERR_CODES.GENERATION_FAILED,\n adds: `Embedding function returned invalid output: ${zodIssue?.message || 'Invalid output format'}`,\n cause: error\n })\n }\n throw error\n }\n\n return embeddings\n }\n\n /**\n * Generate embeddings for multiple texts with IDs.\n * Leverages the addon's automatic batch management for optimal performance.\n * Note: Batch embedding is atomic - only reports start/end, not incremental progress.\n * @param {Array} docs - Array of documents with id and content.\n * @param {EmbeddingOpts} [opts] - Options for embedding generation.\n * @returns {Promise<{[key: string]: Array}>} Map of document IDs to embeddings.\n */\n async generateEmbeddingsForDocs (docs, opts = {}) {\n let validatedDocs\n try {\n validatedDocs = docsArraySchema.parse(docs)\n } catch (error) {\n if (error.name === 'ZodError') {\n const zodIssue = error.issues?.[0]\n throw new QvacErrorRAG({\n code: ERR_CODES.INVALID_INPUT,\n adds: `Document validation failed: ${zodIssue?.message || 'Invalid documents'}`,\n cause: error\n })\n }\n throw error\n }\n\n const { onProgress, signal } = opts\n\n if (signal?.aborted) {\n throw new QvacErrorRAG({ code: ERR_CODES.OPERATION_CANCELLED })\n }\n\n this.logger.debug(`Generating embeddings for ${validatedDocs.length} document(s)`)\n\n const allTexts = validatedDocs.map(doc => doc.content)\n\n onProgress?.(0, validatedDocs.length)\n\n let batchEmbeddings\n try {\n batchEmbeddings = await this.embeddingFunction(allTexts)\n } catch (error) {\n if (error instanceof QvacErrorRAG) {\n throw error\n }\n throw new QvacErrorRAG({\n code: ERR_CODES.GENERATION_FAILED,\n adds: `Failed to generate batch embeddings: ${error.message}`,\n cause: error\n })\n }\n\n try {\n batchEmbeddingSchema.parse(batchEmbeddings)\n } catch (error) {\n if (error.name === 'ZodError') {\n const zodIssue = error.issues?.[0]\n throw new QvacErrorRAG({\n code: ERR_CODES.GENERATION_FAILED,\n adds: `Embedding function returned invalid batch output: ${zodIssue?.message || 'Invalid output format'}`,\n cause: error\n })\n }\n throw error\n }\n\n const embeddings = {}\n validatedDocs.forEach((doc, idx) => {\n embeddings[doc.id] = batchEmbeddings[idx]\n })\n\n this.logger.debug(`Embeddings generated: ${Object.keys(embeddings).length}`)\n\n onProgress?.(validatedDocs.length, validatedDocs.length)\n\n return embeddings\n }\n}\n\nmodule.exports = EmbeddingService\n'use strict'\n\nconst { QvacErrorRAG, ERR_CODES } = require('../errors')\n\nfunction resolveFetch () {\n try {\n const fetchMod = require('#fetch')\n return fetchMod.default || fetchMod\n } catch (error) {\n if (error instanceof QvacErrorRAG) {\n throw error\n }\n if (error.code === 'MODULE_NOT_FOUND' || error.code === 'ERR_MODULE_NOT_FOUND') {\n throw new QvacErrorRAG({\n code: ERR_CODES.DEPENDENCY_REQUIRED,\n adds: 'Fetch unavailable: #fetch could not resolve. Bare: install bare-fetch; otherwise ensure globalThis.fetch exists and your bundler supports package imports.',\n cause: error\n })\n }\n throw error\n }\n}\n\nmodule.exports = resolveFetch\nmodule.exports.default = resolveFetch\n'use strict'\n\n/**\n * @typedef {Object} PartialDoc\n * @property {string} content - The content of the document.\n * @property {string} [id] - The identifier of the document.\n */\n\n/**\n * @typedef {Object} Doc\n * @property {string} content - The content of the document.\n * @property {string} id - The identifier of the document.\n */\n\n/**\n * @typedef {Object} EmbeddedDoc\n * @property {string} content - The content of the document.\n * @property {string} id - The identifier of the document.\n * @property {string} embeddingModelId - The ID of the embedding model used to generate the embedding.\n * @property {Array} embedding - The embedding of the document.\n */\n\n/**\n * @typedef {Object} BaseDBAdapterConfig\n * @property {string} embeddingModelId - The embedding model ID.\n * @property {number} dimension - The embedding vector dimension.\n * @property {Date} createdAt - The timestamp when config was created.\n */\n\n/**\n * @typedef {Object} HyperDBAdapterConfig\n * @property {string} key - The config key (always 'adapter').\n * @property {string} embeddingModelId - The embedding model ID.\n * @property {number} dimension - The embedding vector dimension.\n * @property {Date} createdAt - The timestamp when config was created.\n * @property {number} NUM_CENTROIDS - The number of centroids for IVF index.\n * @property {number} BUCKET_SIZE - The bucket size for IVF index.\n * @property {number} BATCH_SIZE - The batch size for document processing.\n */\n\n/**\n * @typedef {Object} SaveEmbeddingsResult\n * @property {'fulfilled' | 'rejected'} status - The status of the processing\n * @property {string} [id] - The ID of the document.\n * @property {string} [error] - The error that occurred during processing.\n */\n\n/**\n * @typedef {Object} SearchResult\n * @property {string} id - The ID of the document.\n * @property {string} content - The content of the document.\n * @property {number} score - The score of the document.\n * @property {Object} _debug - Debug information\n */\n\n/**\n * @typedef {Object} ChunkOpts\n * @property {*} [key] - Additional chunking options.\n */\n\n/**\n * @typedef {Object} DbOpts\n * @property {*} [key] - Additional database options.\n */\n\n/**\n * @typedef {Object} LLMChunkOpts\n * @property {number} [chunkSize=256] - Maximum size of each chunk in tokens. (default: 256)\n * @property {number} [chunkOverlap=50] - Number of tokens to overlap between chunks. (default: 50)\n * @property {'character'|'paragraph'} [chunkStrategy='paragraph'] - Chunking strategy to use. Determines how chunks are grouped. (default: 'paragraph')\n * @property {'character'|'word'|'sentence'|'line'} [splitStrategy='word'] - Predefined split strategy for tokenization. If both splitter and splitStrategy are provided, splitter takes precedence. (default: 'word')\n * @property {Function} [splitter] - Custom function to split text into tokens. Takes a string and returns an array of strings. If provided, takes precedence over splitStrategy.\n */\n\n/**\n * @typedef {Object} QvacLlmAddon\n * @property {Function} run - Function that runs LLM inference. Takes (messages, opts) and returns Promise\n */\n\n/**\n * @typedef {Function} EmbeddingFunction\n * @param {string|Array} text - Single text or array of texts to generate embeddings for\n * @returns {Promise|Array>>} Single embedding or array of embeddings\n */\n\n/**\n * @typedef {Object} EmbeddingOpts\n * @property {Function} [onProgress] - Progress callback (current, total)\n * @property {AbortSignal} [signal] - Signal for cancellation\n */\n\n/**\n * @typedef {'deduplicating' | 'preparing' | 'writing'} SaveStage\n */\n\n/**\n * @typedef {Object} SaveEmbeddingsOpts\n * @property {DbOpts} [dbOpts] - Options for the database adapter\n * @property {Function} [onProgress] - Progress callback: onProgress(stage, current, total). Stage: 'deduplicating' | 'preparing' | 'writing'\n * @property {number} [progressInterval] - Report 'preparing' progress every N documents (default: 10)\n * @property {AbortSignal} [signal] - Signal for cancellation\n */\n\n/**\n * @typedef {'chunking' | 'embedding' | 'saving:deduplicating' | 'saving:preparing' | 'saving:writing'} IngestStage\n */\n\n/**\n * @typedef {Object} IngestOpts\n * @property {boolean} [chunk] - Whether to chunk the documents (default: true)\n * @property {ChunkOpts} [chunkOpts] - Options for chunking\n * @property {DbOpts} [dbOpts] - Options for the database adapter\n * @property {Function} [onProgress] - Progress callback: onProgress(stage, current, total). Stage: 'chunking' | 'embedding' | 'saving:deduplicating' | 'saving:preparing' | 'saving:writing'\n * @property {number} [progressInterval] - Report 'saving:preparing' progress every N documents (default: 10)\n * @property {AbortSignal} [signal] - Signal for cancellation\n */\n\n/**\n * @typedef {'collecting' | 'clustering' | 'reassigning' | 'updating'} ReindexStage\n */\n\n/**\n * @typedef {Object} ReindexOpts\n * @property {Function} [onProgress] - Progress callback: onProgress(stage, current, total). Stage: 'collecting' | 'clustering' | 'reassigning' | 'updating'\n * @property {AbortSignal} [signal] - Signal for cancellation\n */\n\n/**\n * @typedef {Object} ReindexResult\n * @property {boolean} reindexed - Whether reindexing was performed\n * @property {Object} [details] - Adapter-specific details about the reindex operation\n */\n\n/**\n * @typedef {Object} SearchOpts\n * @property {number} [topK=5] - Number of top results to retrieve\n * @property {number} [n=3] - Number of centroids to use for IVF index\n * @property {AbortSignal} [signal] - Signal for cancellation\n */\n\n/**\n * @typedef {Object} InferOpts\n * @property {number} [topK=5] - Number of top results to retrieve for context\n * @property {number} [n=3] - Number of centroids to use for IVF index\n * @property {BaseLlmAdapter} [llmAdapter] - Override the default LLM adapter\n * @property {AbortSignal} [signal] - Signal for cancellation\n */\n\n/**\n * @typedef {Object} GenerateEmbeddingsOpts\n * @property {boolean} [chunk=true] - Whether to chunk the documents\n * @property {ChunkOpts} [chunkOpts] - Options for chunking\n * @property {AbortSignal} [signal] - Signal for cancellation\n */\n'use strict'\n\nconst { QvacErrorRAG, ERR_CODES } = require('../errors')\n\nconst UUID_BYTES = 16\nconst BYTE_TO_HEX = Array.from({ length: 256 }, (_, i) => (i + 0x100).toString(16).slice(1))\n\n/**\n * Calculate the cosine similarity between two vectors.\n * @param {Array} a - The first vector.\n * @param {Array} b - The second vector.\n * @returns {number} - The cosine similarity between the two vectors.\n */\nfunction cosineSimilarity (a, b) {\n let dot = 0; let normA = 0; let normB = 0\n const len = Math.min(a.length, b.length)\n for (let i = 0; i < len; i++) {\n dot += a[i] * b[i]\n normA += a[i] ** 2\n normB += b[i] ** 2\n }\n if (normA === 0 || normB === 0) return 0\n return dot / (Math.sqrt(normA) * Math.sqrt(normB))\n}\n\n/**\n * Calculate the text score between a query and a content.\n * @param {string} query - The query.\n * @param {string} content - The content.\n * @returns {number} - The text score between the query and the content.\n */\nfunction calculateTextScore (query, content) {\n const queryTerms = query.toLowerCase().split(/\\s+/)\n const contentLower = content.toLowerCase()\n const exactMatches = queryTerms.filter(term => contentLower.includes(term)).length\n const contentTerms = contentLower.split(/\\s+/)\n const positions = queryTerms.reduce((map, term) => {\n const pos = contentTerms.indexOf(term)\n if (pos !== -1) map.set(term, pos)\n return map\n }, new Map())\n let proximityScore = 0\n if (positions.size > 1) {\n const posArray = Array.from(positions.values())\n const spread = Math.max(...posArray) - Math.min(...posArray)\n proximityScore = 1 / (1 + spread / 10)\n }\n return (exactMatches / queryTerms.length * 0.7) + (proximityScore * 0.3)\n}\n\n/**\n * Normalizes the documents input to ensure it's an array of documents.\n * Each document is expected to be an object with a `content` property.\n * If an element is a string, it is wrapped in an object as { content: }\n * @param {Array} docs - The documents to normalize.\n * @returns {{normalizedDocs: Array, droppedIndices: Array}} An array of normalized documents and the indices of the dropped documents.\n */\nfunction normalizeDocs (docs) {\n if (!Array.isArray(docs)) throw new QvacErrorRAG({ code: ERR_CODES.INVALID_INPUT })\n\n const seenIds = new Set()\n const normalizedDocs = []\n const droppedIndices = []\n\n docs.forEach((rawDoc, idx) => {\n const doc = typeof rawDoc === 'string'\n ? { content: rawDoc }\n : rawDoc\n if (!doc || !doc.content || (typeof doc.content === 'string' && doc.content.trim() === '')) {\n droppedIndices.push(idx)\n return\n }\n const id = doc.id || generateId()\n if (seenIds.has(id)) {\n throw new QvacErrorRAG({ code: ERR_CODES.DUPLICATE_DOCUMENT_ID, adds: id })\n }\n seenIds.add(id)\n normalizedDocs.push({ ...doc, id })\n })\n return {\n normalizedDocs,\n droppedIndices\n }\n}\n\n/**\n * Generates a unique ID using UUID v4.\n * @returns {string} A unique identifier.\n */\nfunction generateId () {\n const bytes = randomBytes(UUID_BYTES)\n bytes[6] = (bytes[6] & 0x0f) | 0x40\n bytes[8] = (bytes[8] & 0x3f) | 0x80\n\n return BYTE_TO_HEX[bytes[0]] + BYTE_TO_HEX[bytes[1]] +\n BYTE_TO_HEX[bytes[2]] + BYTE_TO_HEX[bytes[3]] + '-' +\n BYTE_TO_HEX[bytes[4]] + BYTE_TO_HEX[bytes[5]] + '-' +\n BYTE_TO_HEX[bytes[6]] + BYTE_TO_HEX[bytes[7]] + '-' +\n BYTE_TO_HEX[bytes[8]] + BYTE_TO_HEX[bytes[9]] + '-' +\n BYTE_TO_HEX[bytes[10]] + BYTE_TO_HEX[bytes[11]] +\n BYTE_TO_HEX[bytes[12]] + BYTE_TO_HEX[bytes[13]] +\n BYTE_TO_HEX[bytes[14]] + BYTE_TO_HEX[bytes[15]]\n}\n\nfunction randomBytes (size) {\n try {\n const crypto = typeof globalThis !== 'undefined' ? globalThis.crypto : null\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(size))\n }\n } catch {}\n\n try {\n const cryptoMod = require('#crypto')\n if (cryptoMod && typeof cryptoMod.randomBytes === 'function') {\n return toUint8Array(cryptoMod.randomBytes(size))\n }\n if (cryptoMod && typeof cryptoMod.getRandomValues === 'function') {\n return cryptoMod.getRandomValues(new Uint8Array(size))\n }\n } catch {}\n\n throw new QvacErrorRAG({\n code: ERR_CODES.DEPENDENCY_REQUIRED,\n adds: 'No secure random byte source available for UUID generation. Provide globalThis.crypto.getRandomValues or a #crypto implementation with randomBytes/getRandomValues.'\n })\n}\n\nfunction toUint8Array (bytes) {\n if (bytes instanceof Uint8Array) return bytes\n if (typeof ArrayBuffer !== 'undefined' && bytes instanceof ArrayBuffer) return new Uint8Array(bytes)\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView(bytes)) {\n return new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength)\n }\n return Uint8Array.from(bytes)\n}\n\n/**\n * Maintain min-heap property when adding elements.\n * @param {Array} heap - The heap array.\n * @param {number} index - The index of the element to heapify up.\n * @private\n */\nfunction heapifyUp (heap, index) {\n while (index > 0) {\n const parentIndex = Math.floor((index - 1) / 2)\n if (heap[parentIndex].similarity <= heap[index].similarity) break\n [heap[parentIndex], heap[index]] = [heap[index], heap[parentIndex]]\n index = parentIndex\n }\n}\n\n/**\n * Maintain min-heap property when removing elements.\n * @param {Array} heap - The heap array.\n * @param {number} index - The index of the element to heapify down.\n * @private\n */\nfunction heapifyDown (heap, index) {\n const heapSize = heap.length\n\n while (true) {\n let smallest = index\n const leftChild = 2 * index + 1\n const rightChild = 2 * index + 2\n if (leftChild < heapSize && heap[leftChild].similarity < heap[smallest].similarity) {\n smallest = leftChild\n }\n if (rightChild < heapSize && heap[rightChild].similarity < heap[smallest].similarity) {\n smallest = rightChild\n }\n if (smallest === index) break\n [heap[index], heap[smallest]] = [heap[smallest], heap[index]]\n index = smallest\n }\n}\n\n/**\n * Reservoir sampling algorithm for efficient random sampling.\n * @param {Array} array - The array to sample from.\n * @param {number} sampleSize - The number of items to sample.\n * @returns {Array} A random sample of the specified size.\n * @private\n */\nfunction reservoirSample (array, sampleSize) {\n if (sampleSize >= array.length) {\n return array.slice()\n }\n const sample = array.slice(0, sampleSize)\n for (let i = sampleSize; i < array.length; i++) {\n const randomIndex = Math.floor(Math.random() * (i + 1))\n if (randomIndex < sampleSize) {\n sample[randomIndex] = array[i]\n }\n }\n return sample\n}\n\n/**\n * Creates an LRU (Least Recently Used) cache.\n * @param {number} maxSize - Maximum number of entries to cache.\n * @returns {Object} Cache object with get, set, has, delete, clear, and size methods.\n */\nfunction createLRUCache (maxSize) {\n const cache = new Map()\n\n return {\n get (key) {\n if (!cache.has(key)) return undefined\n // Move to end (most recently used)\n const value = cache.get(key)\n cache.delete(key)\n cache.set(key, value)\n return value\n },\n\n set (key, value) {\n // If key exists, delete first to update position\n if (cache.has(key)) {\n cache.delete(key)\n }\n cache.set(key, value)\n // Evict LRU (first entry) if over capacity\n if (cache.size > maxSize) {\n const lruKey = cache.keys().next().value\n cache.delete(lruKey)\n }\n },\n\n has (key) {\n return cache.has(key)\n },\n\n delete (key) {\n return cache.delete(key)\n },\n\n clear () {\n cache.clear()\n },\n\n get size () {\n return cache.size\n }\n }\n}\n\nmodule.exports = {\n cosineSimilarity,\n calculateTextScore,\n normalizeDocs,\n generateId,\n reservoirSample,\n heapifyUp,\n heapifyDown,\n createLRUCache\n}\n'use strict'\n\nconst QVACRegistryClient = require('./lib/client')\n\nmodule.exports = {\n QVACRegistryClient\n}\n'use strict'\n\nconst { QvacErrorRegistryClient, ERR_CODES } = require('../utils/error')\nconst { withRetry } = require('../utils/retry')\nconst RegistryConfig = require('./config')\nconst { RegistryDatabase } = require('@qvac/registry-schema')\nconst ReadyResource = require('ready-resource')\nconst Logger = require('./logger')\nconst Corestore = require('corestore')\nconst Hyperswarm = require('hyperswarm')\nconst Hyperblobs = require('hyperblobs')\nconst IdEnc = require('hypercore-id-encoding')\nconst path = require('#path')\nconst fs = require('#fs')\n\nconst DEFAULT_DOWNLOAD_MAX_RETRIES = 3\nconst RETRIABLE_DOWNLOAD_CODES = ['REQUEST_TIMEOUT']\n\n// While the app is backgrounded the swarm is suspended; a retry must wait for\n// resume rather than burn its (small) retry budget timing out against a dead\n// swarm. Bounded so a never-resumed runtime still fails instead of hanging.\nconst RESUME_WAIT_MAX_MS = 5 * 60 * 1000\nconst RESUME_WAIT_POLL_MS = 200\n\nclass QVACRegistryClient extends ReadyResource {\n constructor (opts = {}) {\n super()\n\n this.logger = new Logger(opts.logger)\n this.registryConfig = new RegistryConfig({ logger: this.logger })\n\n this.db = null\n this.hyperswarm = null\n this._connectionHandler = null\n this._metadataReady = null\n\n this.storage = this.registryConfig.getRegistryStorage(opts.storage)\n this.registryCoreKey = this.registryConfig.getRegistryCoreKey(opts.registryCoreKey)\n this.corestore = new Corestore(this.storage, opts.corestoreOpts || {})\n\n this.logger.debug('Initializing QVAC Registry Client', {\n mode: 'read',\n registryCoreKey: opts.registryCoreKey ? '***' : 'not provided'\n })\n\n this.ready()\n }\n\n async _open () {\n this.logger.debug('_open called')\n\n this.logger.debug('Opening corestore')\n await this.corestore.ready()\n\n this.logger.debug('Creating Hyperswarm for open')\n this.hyperswarm = new Hyperswarm()\n\n this._connectionHandler = (conn, peerInfo) => {\n this.logger.debug('Client peer connected', { peer: IdEnc.normalize(peerInfo.publicKey) })\n this.corestore.replicate(conn)\n }\n this.hyperswarm.on('connection', this._connectionHandler)\n\n this._metadataReady = this._connectMetadataCore()\n await this._metadataReady\n }\n\n async _connectMetadataCore () {\n if (!this.registryCoreKey) {\n this.logger.error('Missing registry core key for read mode')\n throw new QvacErrorRegistryClient({ code: ERR_CODES.FAILED_TO_CONNECT, adds: 'Missing registry core key. Set QVAC_REGISTRY_CORE_KEY environment variable.' })\n }\n\n const viewKey = IdEnc.decode(this.registryCoreKey)\n const viewCore = this.corestore.get({ key: viewKey })\n await viewCore.ready()\n\n this.logger.debug('Joining hyperswarm for registry view', {\n viewKey: IdEnc.normalize(viewCore.key),\n discoveryKey: IdEnc.normalize(viewCore.discoveryKey)\n })\n\n const foundPeers = viewCore.findingPeers()\n this.hyperswarm.join(viewCore.discoveryKey, { client: true, server: false })\n this.hyperswarm.flush().then(() => foundPeers())\n\n this.logger.debug('Waiting for view core sync')\n await viewCore.update()\n\n this.logger.debug('Creating RegistryDatabase from view core')\n this.db = new RegistryDatabase(viewCore, { extension: false })\n await this.db.ready()\n\n this.logger.debug('QVACRegistryClient metadata ready', {\n length: viewCore.length\n })\n }\n\n async _ensureMetadata () {\n await this.ready()\n await this._metadataReady\n if (!this.db) {\n throw new QvacErrorRegistryClient({ code: ERR_CODES.FAILED_TO_CONNECT, adds: 'Registry database not available.' })\n }\n }\n\n async getModel (path, source) {\n this._validateString(path, 'path')\n this._validateString(source, 'source')\n\n try {\n this.logger.info('Getting model', { path, source })\n await this._ensureMetadata()\n\n const result = await this.db.getModel(path, source)\n this.logger.debug('getModel result', { result })\n return result ?? null\n } catch (error) {\n this.logger.error('Error getting model', error)\n throw error\n }\n }\n\n async findModels (query = {}, opts = {}) {\n await this._ensureMetadata()\n const { includeDeprecated = false } = opts\n this.logger.debug('findModels called', { query, includeDeprecated })\n\n let models = await this.db.findModelsByPath(query).toArray()\n\n if (!includeDeprecated) {\n models = models.filter(m => !m.deprecated)\n }\n\n return models\n }\n\n async findModelsByEngine (query = {}) {\n await this._ensureMetadata()\n this.logger.debug('findModelsByEngine called', { query })\n return this.db.findModelsByEngine(query).toArray()\n }\n\n async findModelsByName (query = {}) {\n await this._ensureMetadata()\n this.logger.debug('findModelsByName called', { query })\n return this.db.findModelsByName(query).toArray()\n }\n\n async findModelsByQuantization (query = {}) {\n await this._ensureMetadata()\n this.logger.debug('findModelsByQuantization called', { query })\n return this.db.findModelsByQuantization(query).toArray()\n }\n\n /**\n * Find models with optional filters.\n * Uses the database's findBy method for efficient indexed queries.\n * @param {Object} params - Filter parameters\n * @param {string} [params.name] - Filter by name (partial match)\n * @param {string} [params.engine] - Filter by engine (exact match)\n * @param {string} [params.quantization] - Filter by quantization (partial match)\n * @param {boolean} [params.includeDeprecated=false] - Include deprecated models\n * @returns {Promise} Array of matching models\n */\n async findBy (params = {}) {\n await this._ensureMetadata()\n this.logger.debug('findBy called', { params })\n return this.db.findBy(params)\n }\n\n _validateString (value, name) {\n if (typeof value !== 'string' || value.length === 0) {\n throw new Error(`Invalid ${name}: ${value}`)\n }\n }\n\n async _checkBlobProgress (core, blobPointer) {\n const totalBlocks = blobPointer.blockLength\n const totalBytes = blobPointer.byteLength\n\n if (totalBlocks === 0) {\n return { cachedBlocks: 0, totalBlocks: 0, totalBytes: 0 }\n }\n\n let cachedBlocks = 0\n for (let i = blobPointer.blockOffset; i < blobPointer.blockOffset + totalBlocks; i++) {\n const hasBlock = await core.has(i)\n if (hasBlock) cachedBlocks++\n }\n\n return { cachedBlocks, totalBlocks, totalBytes }\n }\n\n async _getBlobsCore (blobsCoreKey) {\n let keyBuffer\n if (Buffer.isBuffer(blobsCoreKey)) {\n keyBuffer = blobsCoreKey\n } else if (typeof blobsCoreKey === 'object' && blobsCoreKey.data) {\n keyBuffer = Buffer.from(blobsCoreKey.data)\n } else {\n keyBuffer = IdEnc.decode(blobsCoreKey)\n }\n\n this.logger.debug('Creating hyperblobs core', {\n blobCore: IdEnc.normalize(keyBuffer)\n })\n\n const core = this.corestore.get({ key: keyBuffer })\n await core.ready()\n\n const blobs = new Hyperblobs(core)\n await blobs.ready()\n\n return { core, blobs }\n }\n\n /**\n * Blocks while the swarm is suspended (app backgrounded), so a retry does not\n * fire against a swarm that cannot connect yet and exhaust the retry budget.\n * Bounded by RESUME_WAIT_MAX_MS; returns (and lets the retry proceed/fail) if\n * the runtime never resumes.\n */\n async _waitForSwarmResumed (signal) {\n if (!this.hyperswarm || !this.hyperswarm.suspended) return\n\n const start = Date.now()\n while (this.hyperswarm.suspended) {\n if (signal && signal.aborted) throw new Error('Download cancelled')\n if (Date.now() - start > RESUME_WAIT_MAX_MS) {\n this.logger.warn('Swarm still suspended after resume wait; retrying anyway')\n return\n }\n await new Promise(resolve => setTimeout(resolve, RESUME_WAIT_POLL_MS))\n }\n }\n\n /**\n * Blocks until at least one peer is replicating the core, so a retry after a\n * network drop waits for the network to actually return instead of firing\n * (and timing out) against zero peers and burning the retry budget. Bounded\n * by RESUME_WAIT_MAX_MS. No-op when peer info is unavailable.\n */\n async _waitForPeers (core, signal) {\n if (!core || !Array.isArray(core.peers)) return\n if (core.peers.length > 0) return\n\n const start = Date.now()\n while (core.peers.length === 0) {\n if (signal && signal.aborted) throw new Error('Download cancelled')\n if (Date.now() - start > RESUME_WAIT_MAX_MS) {\n this.logger.warn('No peers after reconnect wait; retrying anyway')\n return\n }\n await new Promise(resolve => setTimeout(resolve, RESUME_WAIT_POLL_MS))\n }\n }\n\n /**\n * Re-establish peers for a blobs core before retrying a download. After the\n * app backgrounds (or the network drops) the swarm connection for this core\n * is gone; this waits for the swarm to resume and for a peer to be replicating\n * the core, then re-runs the join + findingPeers + update sequence and awaits\n * it. Resume itself is cheap: the next attempt reuses the blocks already\n * cached in the core (the output file is re-streamed from those blocks, not\n * appended to).\n *\n * Honours `signal`: a foreground cancel during the (bounded but up to\n * RESUME_WAIT_MAX_MS) swarm/peer waits aborts promptly instead of blocking\n * until peers return or the cap elapses.\n */\n async _reconnectCore (core, signal) {\n if (!core || !this.hyperswarm) return\n if (signal && signal.aborted) throw new Error('Download cancelled')\n\n await this._waitForSwarmResumed(signal)\n\n this.logger.debug('Re-establishing peers before download retry', {\n discoveryKey: IdEnc.normalize(core.discoveryKey)\n })\n\n const done = core.findingPeers()\n this.hyperswarm.join(core.discoveryKey, { client: true, server: false })\n try {\n await this.hyperswarm.flush()\n } finally {\n done()\n }\n await this._waitForPeers(core, signal)\n await core.update()\n }\n\n async downloadModel (path, source, options = {}) {\n this._validateString(path, 'path')\n this._validateString(source, 'source')\n\n if (options && typeof options !== 'object') {\n throw new Error(`Invalid options: ${typeof options}`)\n }\n\n let core, blobs\n\n try {\n this.logger.info('Downloading model', { path, source })\n await this._ensureMetadata()\n\n const model = await this.getModel(path, source)\n if (!model) {\n throw new QvacErrorRegistryClient({ code: ERR_CODES.MODEL_NOT_FOUND, adds: `Model not found: ${path} (source: ${source})` })\n }\n\n if (!model.blobBinding || !model.blobBinding.coreKey) {\n throw new QvacErrorRegistryClient({ code: ERR_CODES.MODEL_NOT_FOUND, adds: 'Model missing blob binding' })\n }\n\n this.logger.debug('Model metadata retrieved', { model })\n\n const blobsCore = await this._getBlobsCore(model.blobBinding.coreKey)\n core = blobsCore.core\n blobs = blobsCore.blobs\n\n this.logger.debug('Joining swarm for blobs core', {\n discoveryKey: IdEnc.normalize(core.discoveryKey)\n })\n\n const foundBlobPeers = core.findingPeers()\n this.hyperswarm.join(core.discoveryKey, { client: true, server: false })\n this.hyperswarm.flush().then(() => foundBlobPeers())\n\n await core.update()\n this.logger.debug('Blobs core updated')\n\n const totalSize = model.blobBinding.byteLength\n\n const rangeDownload = core.download({\n start: model.blobBinding.blockOffset,\n length: model.blobBinding.blockLength\n })\n\n const blockStart = model.blobBinding.blockOffset\n const blockEnd = blockStart + model.blobBinding.blockLength\n\n let artifact\n if (options.outputFile) {\n await withRetry(\n () => this._streamBlobToFile(blobs, core, model.blobBinding, options.outputFile, options),\n {\n maxRetries: options.maxRetries != null ? options.maxRetries : DEFAULT_DOWNLOAD_MAX_RETRIES,\n retryCodes: RETRIABLE_DOWNLOAD_CODES,\n // Wait for the swarm to resume + reconnect peers before retrying,\n // so the retry doesn't immediately time out again against a dead\n // swarm (e.g. after the app backgrounded). The core's cached blocks\n // are not cleared until success, so the retry re-streams cheaply.\n beforeRetry: () => this._reconnectCore(core, options.signal),\n logger: this.logger\n }\n )\n artifact = { path: options.outputFile, totalSize }\n\n rangeDownload.destroy()\n await this._clearBlobBlocks(core, blockStart, blockEnd)\n if (blobs) await blobs.close()\n if (core) await core.close()\n } else {\n const stream = blobs.createReadStream(model.blobBinding, {\n wait: true,\n timeout: options.timeout || 30000\n })\n artifact = { stream, totalSize }\n\n const cleanup = async () => {\n rangeDownload.destroy()\n await this._clearBlobBlocks(core, blockStart, blockEnd)\n if (blobs) {\n try {\n await blobs.close()\n } catch (cleanupError) {\n this.logger.warn('Error closing blob instance', { error: cleanupError.message })\n }\n }\n if (core) {\n try {\n await core.close()\n } catch (cleanupError) {\n this.logger.warn('Error closing blob core', { error: cleanupError.message })\n }\n }\n this.logger.debug('Blob resources closed after stream end')\n }\n\n stream.once('end', cleanup)\n }\n\n this.logger.info('Model downloaded successfully')\n\n return {\n model,\n artifact\n }\n } catch (error) {\n this.logger.error('Error downloading model', error)\n\n if (blobs) {\n try {\n await blobs.close()\n } catch (cleanupError) {\n this.logger.warn('Error closing blob instance on error', { error: cleanupError.message })\n }\n }\n if (core) {\n try {\n await core.close()\n } catch (cleanupError) {\n this.logger.warn('Error closing blob core on error', { error: cleanupError.message })\n }\n }\n\n throw error\n }\n }\n\n async downloadBlob (blobBinding, options = {}) {\n if (!blobBinding || !blobBinding.coreKey) {\n throw new Error('Invalid blobBinding: coreKey is required')\n }\n if (typeof blobBinding.blockOffset !== 'number' ||\n typeof blobBinding.blockLength !== 'number' ||\n typeof blobBinding.byteLength !== 'number') {\n throw new Error('Invalid blobBinding: blockOffset, blockLength, and byteLength are required numbers')\n }\n\n if (options && typeof options !== 'object') {\n throw new Error(`Invalid options: ${typeof options}`)\n }\n\n let core, blobs\n\n try {\n this.logger.info('Downloading blob directly', {\n coreKey: typeof blobBinding.coreKey === 'string' ? blobBinding.coreKey.slice(0, 12) + '...' : '(buffer)',\n blockOffset: blobBinding.blockOffset,\n blockLength: blobBinding.blockLength,\n byteLength: blobBinding.byteLength\n })\n\n await this.ready()\n\n const blobsCore = await this._getBlobsCore(blobBinding.coreKey)\n core = blobsCore.core\n blobs = blobsCore.blobs\n\n this.logger.debug('Joining swarm for blobs core (direct)', {\n discoveryKey: IdEnc.normalize(core.discoveryKey)\n })\n\n const foundBlobPeers = core.findingPeers()\n this.hyperswarm.join(core.discoveryKey, { client: true, server: false })\n this.hyperswarm.flush().then(() => foundBlobPeers())\n\n await core.update()\n this.logger.debug('Blobs core updated (direct)')\n\n const pointer = {\n blockOffset: blobBinding.blockOffset,\n blockLength: blobBinding.blockLength,\n byteOffset: blobBinding.byteOffset || 0,\n byteLength: blobBinding.byteLength\n }\n const totalSize = blobBinding.byteLength\n\n const blockStart = pointer.blockOffset\n const blockEnd = blockStart + pointer.blockLength\n\n const rangeDownload = core.download({\n start: pointer.blockOffset,\n length: pointer.blockLength\n })\n\n let artifact\n if (options.outputFile) {\n await withRetry(\n () => this._streamBlobToFile(blobs, core, pointer, options.outputFile, options),\n {\n maxRetries: options.maxRetries != null ? options.maxRetries : DEFAULT_DOWNLOAD_MAX_RETRIES,\n retryCodes: RETRIABLE_DOWNLOAD_CODES,\n // Wait for swarm resume + peer reconnect before retrying (see\n // downloadModel). Cached blocks are reused; the file is re-streamed.\n beforeRetry: () => this._reconnectCore(core, options.signal),\n logger: this.logger\n }\n )\n artifact = { path: options.outputFile, totalSize }\n\n rangeDownload.destroy()\n await this._clearBlobBlocks(core, blockStart, blockEnd)\n if (blobs) await blobs.close()\n if (core) await core.close()\n } else {\n const stream = blobs.createReadStream(pointer, {\n wait: true,\n timeout: options.timeout || 30000\n })\n artifact = { stream, totalSize }\n\n const cleanup = async () => {\n rangeDownload.destroy()\n await this._clearBlobBlocks(core, blockStart, blockEnd)\n if (blobs) {\n try { await blobs.close() } catch (e) {\n this.logger.warn('Error closing blob instance', { error: e.message })\n }\n }\n if (core) {\n try { await core.close() } catch (e) {\n this.logger.warn('Error closing blob core', { error: e.message })\n }\n }\n this.logger.debug('Blob resources closed after stream end')\n }\n\n stream.once('end', cleanup)\n }\n\n this.logger.info('Blob download complete (direct)')\n\n return { artifact }\n } catch (error) {\n this.logger.error('Error downloading blob directly', error)\n\n if (blobs) {\n try { await blobs.close() } catch (e) {\n this.logger.warn('Error closing blob instance on error', { error: e.message })\n }\n }\n if (core) {\n try { await core.close() } catch (e) {\n this.logger.warn('Error closing blob core on error', { error: e.message })\n }\n }\n\n throw error\n }\n }\n\n async _clearBlobBlocks (core, start, end) {\n try {\n const cleared = await core.clear(start, end, { diff: true })\n await core.compact()\n this.logger.info('Cleared blob blocks from corestore', { start, end, blocks: cleared ? cleared.blocks : end - start })\n } catch (err) {\n this.logger.warn('Failed to clear blob blocks from corestore', { error: err.message })\n }\n }\n\n async _streamBlobToFile (blobs, core, blobPointer, filePath, options) {\n const { cachedBlocks, totalBlocks, totalBytes } = await this._checkBlobProgress(core, blobPointer)\n\n this.logger.debug('Blob progress before download', {\n cachedBlocks,\n totalBlocks,\n totalBytes,\n resuming: cachedBlocks > 0 && cachedBlocks < totalBlocks\n })\n\n const bytesPerBlock = totalBlocks > 0 ? totalBytes / totalBlocks : 0\n let downloadedBytes = Math.floor(cachedBlocks * bytesPerBlock)\n\n if (options.onProgress && downloadedBytes > 0) {\n options.onProgress({\n downloaded: downloadedBytes,\n total: totalBytes,\n cachedBlocks,\n totalBlocks\n })\n }\n\n const progressHandler = (index, bytes) => {\n if (index >= blobPointer.blockOffset && index < blobPointer.blockOffset + blobPointer.blockLength) {\n downloadedBytes += bytes\n const capped = Math.min(downloadedBytes, totalBytes)\n if (options.onProgress) {\n options.onProgress({\n downloaded: capped,\n total: totalBytes,\n cachedBlocks,\n totalBlocks\n })\n }\n }\n }\n\n core.on('download', progressHandler)\n\n const rangeDownload = core.download({\n start: blobPointer.blockOffset,\n length: blobPointer.blockLength\n })\n\n const stream = blobs.createReadStream(blobPointer, {\n wait: true,\n timeout: options.timeout || 30000\n })\n\n const dir = path.dirname(filePath)\n await fs.promises.mkdir(dir, { recursive: true })\n\n const writeStream = fs.createWriteStream(filePath)\n\n try {\n await new Promise((resolve, reject) => {\n stream.pipe(writeStream)\n writeStream.on('finish', resolve)\n writeStream.on('error', reject)\n stream.on('error', reject)\n\n if (options.signal) {\n if (options.signal.aborted) {\n stream.destroy()\n writeStream.destroy()\n reject(new Error('Download cancelled'))\n return\n }\n options.signal.addEventListener('abort', () => {\n stream.destroy()\n writeStream.destroy()\n reject(new Error('Download cancelled'))\n }, { once: true })\n }\n })\n } finally {\n rangeDownload.destroy()\n core.off('download', progressHandler)\n }\n }\n\n async suspend (opts = {}) {\n this.logger.debug('suspend called')\n\n if (!this.opened || this.closing) {\n this.logger.debug('Skipping suspend while client is not open or is closing')\n return\n }\n\n if (this.hyperswarm && !this.hyperswarm.suspended) {\n await this.hyperswarm.suspend(opts)\n }\n if (this.corestore) {\n await this.corestore.suspend(opts)\n }\n\n this.logger.debug('QVACRegistryClient suspended')\n }\n\n async resume (opts = {}) {\n this.logger.debug('resume called')\n\n if (!this.opened || this.closing) {\n this.logger.debug('Skipping resume while client is not open or is closing')\n return\n }\n\n if (this.corestore) {\n await this.corestore.resume()\n }\n if (this.hyperswarm && this.hyperswarm.suspended) {\n await this.hyperswarm.resume(opts)\n }\n\n this.logger.debug('QVACRegistryClient resumed')\n }\n\n async _close () {\n this.logger.debug('_close called')\n\n if (this._metadataReady) {\n await this._metadataReady.catch(() => {})\n this._metadataReady = null\n }\n\n if (this.db) {\n this.logger.debug('Closing database')\n await this.db.close()\n this.db = null\n }\n\n if (this.hyperswarm) {\n if (this._connectionHandler) {\n this.hyperswarm.off('connection', this._connectionHandler)\n this._connectionHandler = null\n }\n this.logger.debug('Destroying hyperswarm')\n await this.hyperswarm.destroy()\n this.hyperswarm = null\n }\n\n if (this.corestore) {\n this.logger.debug('Closing corestore')\n await this.corestore.close()\n this.corestore = null\n }\n\n this.logger.debug('QVACRegistryClient closed')\n }\n}\n\nmodule.exports = QVACRegistryClient\n'use strict'\n\nconst { getEnv } = require('../utils/env')\nconst { ENV_KEYS } = require('@qvac/registry-schema')\nconst Logger = require('./logger')\nconst os = require('#os')\nconst path = require('#path')\n\nconst DEFAULT_REGISTRY_CORE_KEY = 'uf1fm44uzockp6azhcdiqt1esjgm65fwtimsh946e8kwysdes9ko'\n\nclass RegistryConfig {\n constructor (opts = {}) {\n this.logger = new Logger(opts.logger)\n this.logger.debug('RegistryConfig initialized', { opts })\n }\n\n getRegistryStorage (providedPath) {\n if (providedPath) {\n this.logger.debug('getRegistryStorage called with providedPath', { providedPath })\n return providedPath\n }\n\n const envPath = getEnv(ENV_KEYS.REGISTRY_STORAGE)\n const result = envPath || this._createTempStoragePath()\n this.logger.debug('getRegistryStorage resolved', { envPath, result })\n return result\n }\n\n _createTempStoragePath () {\n const tmpBase = os.tmpdir()\n const storageDir = path.join(tmpBase, `qvac-registry-client-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`)\n this.logger.debug('Created temp storage path', { storageDir })\n return storageDir\n }\n\n getRegistryCoreKey (providedKey) {\n if (providedKey) {\n this.logger.debug('getRegistryCoreKey called with providedKey', { providedKey })\n return providedKey\n }\n\n const envKey = getEnv(ENV_KEYS.QVAC_REGISTRY_CORE_KEY)\n const result = envKey || DEFAULT_REGISTRY_CORE_KEY\n this.logger.debug('getRegistryCoreKey resolved', { fromEnv: !!envKey, usingDefault: !envKey })\n return result\n }\n}\n\nmodule.exports = RegistryConfig\n'use strict'\n\nclass Logger {\n constructor (opts = {}) {\n this.level = opts.level || 'info'\n this.name = opts.name || 'QVACRegistryClient'\n this.enabled = opts.enabled !== false\n\n this.levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3\n }\n }\n\n _shouldLog (level) {\n if (!this.enabled) return false\n return this.levels[level] >= this.levels[this.level]\n }\n\n _log (level, ...args) {\n if (!this._shouldLog(level)) return\n const prefix = `[${this.name}] [${level.toUpperCase()}]`\n console[level](prefix, ...args)\n }\n\n debug (...args) {\n this._log('debug', ...args)\n }\n\n info (...args) {\n this._log('info', ...args)\n }\n\n warn (...args) {\n this._log('warn', ...args)\n }\n\n error (...args) {\n this._log('error', ...args)\n }\n}\n\nmodule.exports = Logger\n{\n \"name\": \"@qvac/registry-client\",\n \"version\": \"0.6.1\",\n \"description\": \"QVAC Registry client library for read-only queries via Hyperswarm\",\n \"license\": \"Apache-2.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/tetherto/qvac.git\",\n \"directory\": \"packages/registry-server/client\"\n },\n \"bugs\": \"https://github.com/tetherto/qvac/issues\",\n \"homepage\": \"https://github.com/tetherto/qvac/tree/main/packages/registry-server/client#readme\",\n \"type\": \"commonjs\",\n \"main\": \"index.js\",\n \"bin\": {\n \"qvac-registry\": \"./bin/cli.js\"\n },\n \"exports\": {\n \".\": \"./index.js\",\n \"./types\": \"./index.d.ts\"\n },\n \"imports\": {\n \"#os\": {\n \"bare\": \"bare-os\",\n \"default\": \"./lib/compat/os.js\"\n },\n \"#path\": {\n \"bare\": \"bare-path\",\n \"default\": \"./lib/compat/path.js\"\n },\n \"#fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"./lib/compat/fs.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"bin/\",\n \"lib/\",\n \"utils/\",\n \"README.md\",\n \"LICENSE\",\n \"NOTICE\"\n ],\n \"scripts\": {\n \"test:unit\": \"brittle tests/unit/*.test.js\",\n \"test:unit:bare\": \"brittle-bare tests/unit/*.test.js\",\n \"test\": \"npm run test:unit && npm run test:integration\",\n \"lint\": \"standard\",\n \"lint:fix\": \"standard --fix\",\n \"typecheck\": \"npx tsc --noEmit\"\n },\n \"dependencies\": {\n \"@qvac/error\": \"^0.1.0\",\n \"@qvac/registry-schema\": \"^0.3.0\",\n \"b4a\": \"^1.6.7\",\n \"bare-fs\": \"^4.5.2\",\n \"bare-os\": \"^3.6.2\",\n \"bare-path\": \"^3.0.0\",\n \"bare-process\": \"^4.2.2\",\n \"corestore\": \"^7.4.5\",\n \"hyperblobs\": \"^2.8.0\",\n \"hyperswarm\": \"^4.14.0\",\n \"hypercore-id-encoding\": \"^1.3.0\",\n \"hypercore-stats\": \"^2.4.0\",\n \"hyperswarm-stats\": \"^1.3.0\",\n \"paparam\": \"^1.10.0\",\n \"ready-resource\": \"^1.0.1\",\n \"tiny-byte-size\": \"^1.1.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.4.0\",\n \"dotenv\": \"^17.2.3\",\n \"standard\": \"^17.1.0\",\n \"test-tmp\": \"^1.4.0\",\n \"typescript\": \"^5.9.3\"\n }\n}\n'use strict'\n\nfunction getEnv (key, defaultValue = undefined) {\n if (typeof process !== 'undefined' && process.env && process.env[key] !== undefined) {\n return process.env[key]\n }\n return defaultValue\n}\n\nmodule.exports = {\n getEnv\n}\n'use strict'\n\nconst { QvacErrorBase, addCodes } = require('@qvac/error')\nconst { name, version } = require('../package.json')\n\nclass QvacErrorRegistryClient extends QvacErrorBase { }\n\n// This library has error code range from 19,001 to 20,000\nconst ERR_CODES = Object.freeze({\n FAILED_TO_CONNECT: 19001,\n FAILED_TO_CLOSE: 19002,\n MODEL_NOT_FOUND: 19003\n})\n\naddCodes({\n [ERR_CODES.FAILED_TO_CONNECT]: {\n name: 'FAILED_TO_CONNECT',\n message: (message) => `Failed to connect to registry, error: ${message}`\n },\n [ERR_CODES.FAILED_TO_CLOSE]: {\n name: 'FAILED_TO_CLOSE',\n message: (message) => `Failed to close registry, error: ${message}`\n },\n [ERR_CODES.MODEL_NOT_FOUND]: {\n name: 'MODEL_NOT_FOUND',\n message: (message) => `Model not found, error: ${message}`\n }\n}, {\n name,\n version\n})\n\nmodule.exports = {\n ERR_CODES,\n QvacErrorRegistryClient\n}\n'use strict'\n\n/**\n * Executes an async function with automatic retry on specific error codes.\n *\n * @param {() => Promise} fn - The async operation to attempt\n * @param {object} opts\n * @param {number} [opts.maxRetries=3] - Maximum number of attempts (including the first)\n * @param {string[]} [opts.retryCodes=[]] - Error codes that trigger a retry\n * @param {() => Promise} [opts.onRetry] - Called before each retry attempt (e.g. cleanup)\n * @param {() => Promise} [opts.beforeRetry] - Awaited before the next attempt runs.\n * Use to re-establish prerequisites (e.g. wait for peers to reconnect) so the\n * retry doesn't immediately fail again against a dead connection.\n * @param {{ warn: Function }} [opts.logger] - Logger instance for retry warnings\n * @returns {Promise}\n */\nasync function withRetry (fn, opts = {}) {\n const { maxRetries = 3, retryCodes = [], onRetry, beforeRetry, logger } = opts\n\n for (let attempt = 1; attempt <= maxRetries; attempt++) {\n try {\n return await fn()\n } catch (err) {\n const isRetriable = retryCodes.length > 0 && retryCodes.includes(err && err.code)\n if (!isRetriable || attempt >= maxRetries) throw err\n logger && logger.warn(`Retrying after ${err.code} (attempt ${attempt}/${maxRetries}): ${err.message}`)\n if (onRetry) await onRetry()\n if (beforeRetry) await beforeRetry()\n }\n }\n}\n\nmodule.exports = { withRetry }\n'use strict'\n\n// Registry constants\nconst QVAC_MAIN_REGISTRY = 'qvac-main-registry'\n\n// Autobase namespace\nconst AUTOBASE_NAMESPACE = 'registry'\n\n// Legacy hypercore names (deprecated)\nconst HYPERCORE_NAMES = {\n REGISTRY: 'qvac-registry'\n}\n\n// Environment variable keys\nconst ENV_KEYS = {\n // Seed for registry corestore\n QVAC_REGISTRY_SEED: 'QVAC_REGISTRY_SEED',\n // Seed for model hyperdrives corestore\n QVAC_REGISTRY_DATA_SEED: 'QVAC_REGISTRY_DATA_SEED',\n // Primary key for registry corestore\n QVAC_PRIMARY_KEY: 'QVAC_PRIMARY_KEY',\n // Primary key for writer corestore (separate from registry)\n QVAC_WRITER_PRIMARY_KEY: 'QVAC_WRITER_PRIMARY_KEY',\n // Primary key for model hyperdrives corestore\n QVAC_MODEL_PRIMARY_KEY: 'QVAC_MODEL_PRIMARY_KEY',\n\n // Storage path for registry corestore\n REGISTRY_STORAGE: 'REGISTRY_STORAGE',\n // Storage path for model hyperdrives corestore\n MODEL_DRIVES_STORAGE: 'MODEL_DRIVES_STORAGE',\n\n // Registry discovery key\n QVAC_REGISTRY_DISCOVERY_KEY: 'QVAC_REGISTRY_DISCOVERY_KEY',\n // Registry core key\n QVAC_REGISTRY_CORE_KEY: 'QVAC_REGISTRY_CORE_KEY',\n // Autobase key\n QVAC_AUTOBASE_KEY: 'QVAC_AUTOBASE_KEY',\n // Allowlisted writer public keys (comma-separated)\n QVAC_ALLOWED_WRITER_KEYS: 'QVAC_ALLOWED_WRITER_KEYS',\n // Blind peer mirrors (comma-separated public keys)\n QVAC_BLIND_PEER_KEYS: 'QVAC_BLIND_PEER_KEYS',\n // Writer keypair for add-model RPC (CI/CD)\n QVAC_WRITER_PUBLIC_KEY: 'QVAC_WRITER_PUBLIC_KEY',\n QVAC_WRITER_SECRET_KEY: 'QVAC_WRITER_SECRET_KEY',\n // Additional indexer writer local keys (comma-separated z-base-32 keys)\n QVAC_ADDITIONAL_INDEXERS: 'QVAC_ADDITIONAL_INDEXERS',\n // Indexer keys to remove from quorum on startup (comma-separated z-base-32, one-shot)\n QVAC_REMOVE_INDEXERS: 'QVAC_REMOVE_INDEXERS',\n\n // AWS S3 credentials\n AWS_ACCESS_KEY_ID: 'AWS_ACCESS_KEY_ID',\n AWS_SECRET_ACCESS_KEY: 'AWS_SECRET_ACCESS_KEY',\n AWS_REGION: 'AWS_REGION',\n // S3 bucket name (required for S3 source URLs)\n QVAC_S3_BUCKET: 'QVAC_S3_BUCKET',\n\n // HuggingFace token\n HUGGINGFACE_TOKEN: 'HUGGINGFACE_TOKEN'\n}\n\n// Default storage paths\nconst DEFAULT_PATHS = {\n REGISTRY_STORAGE: './corestore',\n MODEL_DRIVES_STORAGE: './model-drives',\n CLIENT_STORAGE: './storage'\n}\n\nmodule.exports = {\n QVAC_MAIN_REGISTRY,\n AUTOBASE_NAMESPACE,\n HYPERCORE_NAMES,\n ENV_KEYS,\n DEFAULT_PATHS\n}\n'use strict'\n\n/**\n * HyperDB index mapping helpers\n * Used by build-db-spec.js for computed index keys\n */\n\n/**\n * Maps a model record's path to its filename for indexing\n * @param {Object} record - The model record\n * @returns {Array} Array with the filename, or empty if path is missing\n */\nexports.mapPathToName = function mapPathToName (record) {\n if (!record.path) return []\n const name = record.path.split('/').pop()\n return name ? [name] : []\n}\n'use strict'\n\nconst ReadyResource = require('ready-resource')\nconst HyperDB = require('hyperdb')\n\nconst { QVAC_MAIN_REGISTRY } = require('./constants')\nconst dbSpec = require('./spec/hyperdb')\n\nclass RegistryDatabase extends ReadyResource {\n constructor (core, { extension = true } = {}) {\n super()\n this.db = HyperDB.bee(core, dbSpec, { autoUpdate: true, extension })\n }\n\n get core () {\n return this.db.core\n }\n\n get publicKey () {\n return this.db.core.key\n }\n\n get discoveryKey () {\n return this.db.core.discoveryKey\n }\n\n async _open () {\n await this.db.ready()\n }\n\n async _close () {\n await this.db.close()\n }\n\n async putModel (record) {\n if (!this.opened) await this.ready()\n const tx = this.db.transaction()\n await tx.insert(`@${QVAC_MAIN_REGISTRY}/model`, record)\n await tx.flush()\n }\n\n async getModel (path, source) {\n if (!this.opened) await this.ready()\n if (source) {\n return this.db.get(`@${QVAC_MAIN_REGISTRY}/model`, { path, source })\n }\n // When source is not provided, use find with path filter and return first match\n const results = await this.db.find(`@${QVAC_MAIN_REGISTRY}/model`, {\n gte: { path },\n lte: { path }\n }).toArray()\n return results[0] || null\n }\n\n async deleteModel (path, source) {\n if (!this.opened) await this.ready()\n const tx = this.db.transaction()\n await tx.delete(`@${QVAC_MAIN_REGISTRY}/model`, { path, source })\n await tx.flush()\n }\n\n findModelsByPath (query = {}) {\n return this.db.find(`@${QVAC_MAIN_REGISTRY}/model`, query)\n }\n\n findModelsByEngine (query = {}) {\n return this.db.find(`@${QVAC_MAIN_REGISTRY}/models-by-engine`, query)\n }\n\n findModelsByName (query = {}) {\n return this.db.find(`@${QVAC_MAIN_REGISTRY}/models-by-name`, query)\n }\n\n findModelsByQuantization (query = {}) {\n return this.db.find(`@${QVAC_MAIN_REGISTRY}/models-by-quantization`, query)\n }\n\n findModelsByEngineQuantization (query = {}) {\n return this.db.find(`@${QVAC_MAIN_REGISTRY}/models-by-engine-quantization`, query)\n }\n\n async findBy (params = {}) {\n if (!this.opened) await this.ready()\n\n const { name, engine, quantization, includeDeprecated = false } = params\n\n let models\n\n if (engine) {\n const query = { gte: { engine }, lte: { engine } }\n if (quantization) {\n query.gte.quantization = quantization\n query.lte.quantization = quantization + '\\uffff'\n }\n models = await this.db.find(`@${QVAC_MAIN_REGISTRY}/models-by-engine-quantization`, query).toArray()\n } else if (quantization) {\n models = await this.db.find(`@${QVAC_MAIN_REGISTRY}/models-by-quantization`, {\n gte: { quantization },\n lte: { quantization: quantization + '\\uffff' }\n }).toArray()\n } else if (name) {\n models = await this.db.find(`@${QVAC_MAIN_REGISTRY}/models-by-name`, {\n gte: name,\n lte: name + '\\uffff'\n }).toArray()\n } else {\n models = await this.db.find(`@${QVAC_MAIN_REGISTRY}/model`, {}).toArray()\n }\n\n if (name && engine) {\n models = models.filter(m => m.path?.split('/').pop()?.toLowerCase().includes(name.toLowerCase()))\n }\n\n if (!includeDeprecated) models = models.filter(m => !m.deprecated)\n\n return models\n }\n\n async putLicense (record) {\n if (!this.opened) await this.ready()\n const tx = this.db.transaction()\n await tx.insert(`@${QVAC_MAIN_REGISTRY}/license`, record)\n await tx.flush()\n }\n\n async getLicense (spdxId) {\n if (!this.opened) await this.ready()\n return this.db.get(`@${QVAC_MAIN_REGISTRY}/license`, { spdxId })\n }\n\n findLicenses (query = {}) {\n return this.db.find(`@${QVAC_MAIN_REGISTRY}/license`, query)\n }\n}\n\nmodule.exports = RegistryDatabase\n'use strict'\n\nconst constants = require('./constants')\nconst RegistryDatabase = require('./db')\nconst dbHelpers = require('./db-helpers')\nconst hyperdbSpec = require('./spec/hyperdb')\nconst hyperdispatchSpec = require('./spec/hyperdispatch')\nconst hyperschemaSpec = require('./spec/hyperschema')\n\nmodule.exports = {\n ...constants,\n constants,\n RegistryDatabase,\n dbHelpers,\n hyperdbSpec,\n hyperdispatchSpec,\n hyperschemaSpec\n}\n{\n \"name\": \"@qvac/registry-schema\",\n \"version\": \"0.3.0\",\n \"description\": \"HyperDB schema and database wrapper for QVAC Registry\",\n \"license\": \"Apache-2.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/tetherto/qvac.git\",\n \"directory\": \"packages/registry-server/shared\"\n },\n \"bugs\": \"https://github.com/tetherto/qvac/issues\",\n \"homepage\": \"https://github.com/tetherto/qvac/tree/main/packages/registry-server/shared#readme\",\n \"type\": \"commonjs\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"constants.js\",\n \"db.js\",\n \"db-helpers.js\",\n \"spec/\",\n \"LICENSE\",\n \"NOTICE\"\n ],\n \"dependencies\": {\n \"hyperdb\": \"^6.7.0\",\n \"hyperdispatch\": \"^1.4.0\",\n \"hyperschema\": \"^1.13.0\",\n \"ready-resource\": \"^1.2.0\"\n }\n}\n// This file is autogenerated by the hyperdb compiler\n/* eslint-disable camelcase */\n\nconst { IndexEncoder, b4a } = require('hyperdb/runtime')\nconst { version, getEncoding, setVersion } = require('./messages.js')\n\nconst versions = { schema: version, db: 0 }\n\nconst helpers0 = require('../../db-helpers.js')\n\n// '@qvac-main-registry/license' collection key\nconst collection0_key = new IndexEncoder([\n IndexEncoder.STRING\n], { prefix: 0 })\n\nfunction collection0_indexify (record) {\n const a = record.spdxId\n return a === undefined ? [] : [a]\n}\n\n// '@qvac-main-registry/license' value encoding\nconst collection0_enc = getEncoding('@qvac-main-registry/license/hyperdb#0')\n\n// '@qvac-main-registry/license' reconstruction function\nfunction collection0_reconstruct (schemaVersion, keyBuf, valueBuf) {\n const key = collection0_key.decode(keyBuf)\n setVersion(schemaVersion)\n const state = { start: 0, end: valueBuf.byteLength, buffer: valueBuf }\n const record = collection0_enc.decode(state)\n record.spdxId = key[0]\n return record\n}\n// '@qvac-main-registry/license' key reconstruction function\nfunction collection0_reconstruct_key (keyBuf) {\n const key = collection0_key.decode(keyBuf)\n return {\n spdxId: key[0]\n }\n}\n\n// '@qvac-main-registry/license'\nconst collection0 = {\n name: '@qvac-main-registry/license',\n id: 0,\n version: 0,\n encodeKey (record) {\n const key = [record.spdxId]\n return collection0_key.encode(key)\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return collection0_key.encodeRange({\n gt: gt ? collection0_indexify(gt) : null,\n lt: lt ? collection0_indexify(lt) : null,\n gte: gte ? collection0_indexify(gte) : null,\n lte: lte ? collection0_indexify(lte) : null\n })\n },\n encodeValue (schemaVersion, collectionVersion, record) {\n setVersion(schemaVersion)\n const state = { start: 0, end: 0, buffer: null }\n collection0_enc.preencode(state, record)\n state.buffer = b4a.allocUnsafe(state.end)\n collection0_enc.encode(state, record)\n return state.buffer\n },\n trigger: null,\n reconstruct: collection0_reconstruct,\n reconstructKey: collection0_reconstruct_key,\n indexes: [],\n decodedVersion: 0\n}\n\n// '@qvac-main-registry/model' collection key\nconst collection1_key = new IndexEncoder([\n IndexEncoder.STRING,\n IndexEncoder.STRING\n], { prefix: 1 })\n\nfunction collection1_indexify (record) {\n const arr = []\n\n const a0 = record.path\n if (a0 === undefined) return arr\n arr.push(a0)\n\n const a1 = record.source\n if (a1 === undefined) return arr\n arr.push(a1)\n\n return arr\n}\n\n// '@qvac-main-registry/model' value encoding\nconst collection1_enc = getEncoding('@qvac-main-registry/model/hyperdb#1')\n\n// '@qvac-main-registry/model' reconstruction function\nfunction collection1_reconstruct (schemaVersion, keyBuf, valueBuf) {\n const key = collection1_key.decode(keyBuf)\n setVersion(schemaVersion)\n const state = { start: 0, end: valueBuf.byteLength, buffer: valueBuf }\n const record = collection1_enc.decode(state)\n record.path = key[0]\n record.source = key[1]\n return record\n}\n// '@qvac-main-registry/model' key reconstruction function\nfunction collection1_reconstruct_key (keyBuf) {\n const key = collection1_key.decode(keyBuf)\n return {\n path: key[0],\n source: key[1]\n }\n}\n\n// '@qvac-main-registry/model'\nconst collection1 = {\n name: '@qvac-main-registry/model',\n id: 1,\n version: 0,\n encodeKey (record) {\n const key = [record.path, record.source]\n return collection1_key.encode(key)\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return collection1_key.encodeRange({\n gt: gt ? collection1_indexify(gt) : null,\n lt: lt ? collection1_indexify(lt) : null,\n gte: gte ? collection1_indexify(gte) : null,\n lte: lte ? collection1_indexify(lte) : null\n })\n },\n encodeValue (schemaVersion, collectionVersion, record) {\n setVersion(schemaVersion)\n const state = { start: 0, end: 0, buffer: null }\n collection1_enc.preencode(state, record)\n state.buffer = b4a.allocUnsafe(state.end)\n collection1_enc.encode(state, record)\n return state.buffer\n },\n trigger: null,\n reconstruct: collection1_reconstruct,\n reconstructKey: collection1_reconstruct_key,\n indexes: [],\n decodedVersion: 0\n}\n\n// '@qvac-main-registry/models-by-engine' collection key\nconst index2_key = new IndexEncoder([\n IndexEncoder.STRING,\n IndexEncoder.STRING,\n IndexEncoder.STRING\n], { prefix: 2 })\n\nfunction index2_indexify (record) {\n const arr = []\n\n const a0 = record.engine\n if (a0 === undefined) return arr\n arr.push(a0)\n\n const a1 = record.path\n if (a1 === undefined) return arr\n arr.push(a1)\n\n const a2 = record.source\n if (a2 === undefined) return arr\n arr.push(a2)\n\n return arr\n}\n\n// '@qvac-main-registry/models-by-engine'\nconst index2 = {\n name: '@qvac-main-registry/models-by-engine',\n version: 0,\n id: 2,\n encodeKey (record) {\n return index2_key.encode(index2_indexify(record))\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return index2_key.encodeRange({\n gt: gt ? index2_indexify(gt) : null,\n lt: lt ? index2_indexify(lt) : null,\n gte: gte ? index2_indexify(gte) : null,\n lte: lte ? index2_indexify(lte) : null\n })\n },\n encodeValue: (record) => index2.collection.encodeKey(record),\n encodeIndexKeys (record, context) {\n return [index2_key.encode([record.engine, record.path, record.source])]\n },\n reconstruct: (keyBuf, valueBuf) => valueBuf,\n offset: collection1.indexes.length,\n collection: collection1\n}\ncollection1.indexes.push(index2)\n\n// '@qvac-main-registry/models-by-name' collection key\nconst index3_key = new IndexEncoder([\n IndexEncoder.STRING,\n IndexEncoder.STRING,\n IndexEncoder.STRING\n], { prefix: 3 })\n\n// '@qvac-main-registry/models-by-name' has the following schema defined key map\nconst index3_map = helpers0.mapPathToName\n\nfunction index3_indexify (record) {\n const a = record\n return a === undefined ? [] : [a]\n}\n\n// '@qvac-main-registry/models-by-name'\nconst index3 = {\n name: '@qvac-main-registry/models-by-name',\n version: 0,\n id: 3,\n encodeKey (record) {\n return index3_key.encode(index3_indexify(record))\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return index3_key.encodeRange({\n gt: (gt || gt === '') ? index3_indexify(gt) : null,\n lt: (lt || lt === '') ? index3_indexify(lt) : null,\n gte: (gte || gte === '') ? index3_indexify(gte) : null,\n lte: (lte || lte === '') ? index3_indexify(lte) : null\n })\n },\n encodeValue: (record) => index3.collection.encodeKey(record),\n encodeIndexKeys (record, context) {\n const mapped = index3_map(record, context)\n const keys = new Array(mapped.length)\n for (let i = 0; i < mapped.length; i++) {\n const mappedRecord = mapped[i]\n keys[i] = index3_key.encode([mappedRecord, record.path, record.source])\n }\n return keys\n },\n reconstruct: (keyBuf, valueBuf) => valueBuf,\n offset: collection1.indexes.length,\n collection: collection1\n}\ncollection1.indexes.push(index3)\n\n// '@qvac-main-registry/models-by-quantization' collection key\nconst index4_key = new IndexEncoder([\n IndexEncoder.STRING,\n IndexEncoder.STRING,\n IndexEncoder.STRING\n], { prefix: 4 })\n\nfunction index4_indexify (record) {\n const arr = []\n\n const a0 = record.quantization\n if (a0 === undefined) return arr\n arr.push(a0)\n\n const a1 = record.path\n if (a1 === undefined) return arr\n arr.push(a1)\n\n const a2 = record.source\n if (a2 === undefined) return arr\n arr.push(a2)\n\n return arr\n}\n\n// '@qvac-main-registry/models-by-quantization'\nconst index4 = {\n name: '@qvac-main-registry/models-by-quantization',\n version: 0,\n id: 4,\n encodeKey (record) {\n return index4_key.encode(index4_indexify(record))\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return index4_key.encodeRange({\n gt: gt ? index4_indexify(gt) : null,\n lt: lt ? index4_indexify(lt) : null,\n gte: gte ? index4_indexify(gte) : null,\n lte: lte ? index4_indexify(lte) : null\n })\n },\n encodeValue: (record) => index4.collection.encodeKey(record),\n encodeIndexKeys (record, context) {\n return [index4_key.encode([record.quantization, record.path, record.source])]\n },\n reconstruct: (keyBuf, valueBuf) => valueBuf,\n offset: collection1.indexes.length,\n collection: collection1\n}\ncollection1.indexes.push(index4)\n\n// '@qvac-main-registry/models-by-engine-quantization' collection key\nconst index5_key = new IndexEncoder([\n IndexEncoder.STRING,\n IndexEncoder.STRING,\n IndexEncoder.STRING,\n IndexEncoder.STRING\n], { prefix: 5 })\n\nfunction index5_indexify (record) {\n const arr = []\n\n const a0 = record.engine\n if (a0 === undefined) return arr\n arr.push(a0)\n\n const a1 = record.quantization\n if (a1 === undefined) return arr\n arr.push(a1)\n\n const a2 = record.path\n if (a2 === undefined) return arr\n arr.push(a2)\n\n const a3 = record.source\n if (a3 === undefined) return arr\n arr.push(a3)\n\n return arr\n}\n\n// '@qvac-main-registry/models-by-engine-quantization'\nconst index5 = {\n name: '@qvac-main-registry/models-by-engine-quantization',\n version: 0,\n id: 5,\n encodeKey (record) {\n return index5_key.encode(index5_indexify(record))\n },\n encodeKeyRange ({ gt, lt, gte, lte } = {}) {\n return index5_key.encodeRange({\n gt: gt ? index5_indexify(gt) : null,\n lt: lt ? index5_indexify(lt) : null,\n gte: gte ? index5_indexify(gte) : null,\n lte: lte ? index5_indexify(lte) : null\n })\n },\n encodeValue: (record) => index5.collection.encodeKey(record),\n encodeIndexKeys (record, context) {\n return [index5_key.encode([record.engine, record.quantization, record.path, record.source])]\n },\n reconstruct: (keyBuf, valueBuf) => valueBuf,\n offset: collection1.indexes.length,\n collection: collection1\n}\ncollection1.indexes.push(index5)\n\nconst collections = [\n collection0,\n collection1\n]\n\nconst indexes = [\n index2,\n index3,\n index4,\n index5\n]\n\nmodule.exports = { versions, collections, indexes, resolveCollection, resolveIndex }\n\nfunction resolveCollection (name) {\n switch (name) {\n case '@qvac-main-registry/license': return collection0\n case '@qvac-main-registry/model': return collection1\n default: return null\n }\n}\n\nfunction resolveIndex (name) {\n switch (name) {\n case '@qvac-main-registry/models-by-engine': return index2\n case '@qvac-main-registry/models-by-name': return index3\n case '@qvac-main-registry/models-by-quantization': return index4\n case '@qvac-main-registry/models-by-engine-quantization': return index5\n default: return null\n }\n}\n// This file is autogenerated by the hyperschema compiler\n// Schema Version: 2\n/* eslint-disable camelcase */\n/* eslint-disable quotes */\n/* eslint-disable space-before-function-paren */\n\nconst { c } = require('hyperschema/runtime')\n\nconst VERSION = 2\n\n// eslint-disable-next-line no-unused-vars\nlet version = VERSION\n\n// @qvac-main-registry/model-blob-binding\nconst encoding0 = {\n preencode(state, m) {\n c.fixed32.preencode(state, m.coreKey)\n c.uint.preencode(state, m.blockOffset)\n c.uint.preencode(state, m.blockLength)\n c.uint.preencode(state, m.byteOffset)\n c.uint.preencode(state, m.byteLength)\n c.string.preencode(state, m.sha256)\n },\n encode(state, m) {\n c.fixed32.encode(state, m.coreKey)\n c.uint.encode(state, m.blockOffset)\n c.uint.encode(state, m.blockLength)\n c.uint.encode(state, m.byteOffset)\n c.uint.encode(state, m.byteLength)\n c.string.encode(state, m.sha256)\n },\n decode(state) {\n const r0 = c.fixed32.decode(state)\n const r1 = c.uint.decode(state)\n const r2 = c.uint.decode(state)\n const r3 = c.uint.decode(state)\n const r4 = c.uint.decode(state)\n const r5 = c.string.decode(state)\n\n return {\n coreKey: r0,\n blockOffset: r1,\n blockLength: r2,\n byteOffset: r3,\n byteLength: r4,\n sha256: r5\n }\n }\n}\n\n// @qvac-main-registry/license\nconst encoding1 = {\n preencode(state, m) {\n c.string.preencode(state, m.spdxId)\n c.string.preencode(state, m.name)\n c.string.preencode(state, m.url)\n c.string.preencode(state, m.text)\n },\n encode(state, m) {\n c.string.encode(state, m.spdxId)\n c.string.encode(state, m.name)\n c.string.encode(state, m.url)\n c.string.encode(state, m.text)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.string.decode(state)\n const r2 = c.string.decode(state)\n const r3 = c.string.decode(state)\n\n return {\n spdxId: r0,\n name: r1,\n url: r2,\n text: r3\n }\n }\n}\n\n// @qvac-main-registry/model.blobBinding\nconst encoding2_4 = c.frame(encoding0)\n// @qvac-main-registry/model.tags\nconst encoding2_9 = c.array(c.string)\n\n// @qvac-main-registry/model\nconst encoding2 = {\n preencode(state, m) {\n const flags =\n (m.quantization ? 1 : 0) |\n (m.params ? 2 : 0) |\n (m.description ? 4 : 0) |\n (m.notes ? 8 : 0) |\n (m.tags ? 16 : 0) |\n (m.deprecated ? 32 : 0) |\n (m.deprecatedAt ? 64 : 0) |\n (m.replacedBy ? 128 : 0) |\n (m.deprecationReason ? 256 : 0) |\n ((version >= 2 && m.ggufMetadata) ? 512 : 0)\n\n c.string.preencode(state, m.path)\n c.string.preencode(state, m.source)\n c.string.preencode(state, m.engine)\n c.string.preencode(state, m.licenseId)\n encoding2_4.preencode(state, m.blobBinding)\n c.uint.preencode(state, flags)\n\n if (m.quantization) c.string.preencode(state, m.quantization)\n if (m.params) c.string.preencode(state, m.params)\n if (m.description) c.string.preencode(state, m.description)\n if (m.notes) c.string.preencode(state, m.notes)\n if (m.tags) encoding2_9.preencode(state, m.tags)\n if (m.deprecatedAt) c.string.preencode(state, m.deprecatedAt)\n if (m.replacedBy) c.string.preencode(state, m.replacedBy)\n if (m.deprecationReason) c.string.preencode(state, m.deprecationReason)\n if (version >= 2 && m.ggufMetadata) c.string.preencode(state, m.ggufMetadata)\n },\n encode(state, m) {\n const flags =\n (m.quantization ? 1 : 0) |\n (m.params ? 2 : 0) |\n (m.description ? 4 : 0) |\n (m.notes ? 8 : 0) |\n (m.tags ? 16 : 0) |\n (m.deprecated ? 32 : 0) |\n (m.deprecatedAt ? 64 : 0) |\n (m.replacedBy ? 128 : 0) |\n (m.deprecationReason ? 256 : 0) |\n ((version >= 2 && m.ggufMetadata) ? 512 : 0)\n\n c.string.encode(state, m.path)\n c.string.encode(state, m.source)\n c.string.encode(state, m.engine)\n c.string.encode(state, m.licenseId)\n encoding2_4.encode(state, m.blobBinding)\n c.uint.encode(state, flags)\n\n if (m.quantization) c.string.encode(state, m.quantization)\n if (m.params) c.string.encode(state, m.params)\n if (m.description) c.string.encode(state, m.description)\n if (m.notes) c.string.encode(state, m.notes)\n if (m.tags) encoding2_9.encode(state, m.tags)\n if (m.deprecatedAt) c.string.encode(state, m.deprecatedAt)\n if (m.replacedBy) c.string.encode(state, m.replacedBy)\n if (m.deprecationReason) c.string.encode(state, m.deprecationReason)\n if (version >= 2 && m.ggufMetadata) c.string.encode(state, m.ggufMetadata)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.string.decode(state)\n const r2 = c.string.decode(state)\n const r3 = c.string.decode(state)\n const r4 = encoding2_4.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n path: r0,\n source: r1,\n engine: r2,\n licenseId: r3,\n blobBinding: r4,\n quantization: (flags & 1) !== 0 ? c.string.decode(state) : null,\n params: (flags & 2) !== 0 ? c.string.decode(state) : null,\n description: (flags & 4) !== 0 ? c.string.decode(state) : null,\n notes: (flags & 8) !== 0 ? c.string.decode(state) : null,\n tags: (flags & 16) !== 0 ? encoding2_9.decode(state) : null,\n deprecated: (flags & 32) !== 0,\n deprecatedAt: (flags & 64) !== 0 ? c.string.decode(state) : null,\n replacedBy: (flags & 128) !== 0 ? c.string.decode(state) : null,\n deprecationReason: (flags & 256) !== 0 ? c.string.decode(state) : null,\n ggufMetadata: (version >= 2 && (flags & 512) !== 0) ? c.string.decode(state) : null\n }\n }\n}\n\n// @qvac-main-registry/model-key\nconst encoding3 = {\n preencode(state, m) {\n c.string.preencode(state, m.path)\n c.string.preencode(state, m.source)\n },\n encode(state, m) {\n c.string.encode(state, m.path)\n c.string.encode(state, m.source)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.string.decode(state)\n\n return {\n path: r0,\n source: r1\n }\n }\n}\n\n// @qvac-main-registry/writer\nconst encoding4 = {\n preencode(state, m) {\n c.fixed32.preencode(state, m.key)\n },\n encode(state, m) {\n c.fixed32.encode(state, m.key)\n },\n decode(state) {\n const r0 = c.fixed32.decode(state)\n\n return {\n key: r0\n }\n }\n}\n\n// @qvac-main-registry/license/hyperdb#0\nconst encoding5 = {\n preencode(state, m) {\n c.string.preencode(state, m.name)\n c.string.preencode(state, m.url)\n c.string.preencode(state, m.text)\n },\n encode(state, m) {\n c.string.encode(state, m.name)\n c.string.encode(state, m.url)\n c.string.encode(state, m.text)\n },\n decode(state) {\n const r1 = c.string.decode(state)\n const r2 = c.string.decode(state)\n const r3 = c.string.decode(state)\n\n return {\n spdxId: null,\n name: r1,\n url: r2,\n text: r3\n }\n }\n}\n\n// @qvac-main-registry/model/hyperdb#1.blobBinding\nconst encoding6_4 = encoding2_4\n// @qvac-main-registry/model/hyperdb#1.tags\nconst encoding6_9 = encoding2_9\n\n// @qvac-main-registry/model/hyperdb#1\nconst encoding6 = {\n preencode(state, m) {\n const flags =\n (m.quantization ? 1 : 0) |\n (m.params ? 2 : 0) |\n (m.description ? 4 : 0) |\n (m.notes ? 8 : 0) |\n (m.tags ? 16 : 0) |\n (m.deprecated ? 32 : 0) |\n (m.deprecatedAt ? 64 : 0) |\n (m.replacedBy ? 128 : 0) |\n (m.deprecationReason ? 256 : 0) |\n ((version >= 2 && m.ggufMetadata) ? 512 : 0)\n\n c.string.preencode(state, m.engine)\n c.string.preencode(state, m.licenseId)\n encoding6_4.preencode(state, m.blobBinding)\n c.uint.preencode(state, flags)\n\n if (m.quantization) c.string.preencode(state, m.quantization)\n if (m.params) c.string.preencode(state, m.params)\n if (m.description) c.string.preencode(state, m.description)\n if (m.notes) c.string.preencode(state, m.notes)\n if (m.tags) encoding6_9.preencode(state, m.tags)\n if (m.deprecatedAt) c.string.preencode(state, m.deprecatedAt)\n if (m.replacedBy) c.string.preencode(state, m.replacedBy)\n if (m.deprecationReason) c.string.preencode(state, m.deprecationReason)\n if (version >= 2 && m.ggufMetadata) c.string.preencode(state, m.ggufMetadata)\n },\n encode(state, m) {\n const flags =\n (m.quantization ? 1 : 0) |\n (m.params ? 2 : 0) |\n (m.description ? 4 : 0) |\n (m.notes ? 8 : 0) |\n (m.tags ? 16 : 0) |\n (m.deprecated ? 32 : 0) |\n (m.deprecatedAt ? 64 : 0) |\n (m.replacedBy ? 128 : 0) |\n (m.deprecationReason ? 256 : 0) |\n ((version >= 2 && m.ggufMetadata) ? 512 : 0)\n\n c.string.encode(state, m.engine)\n c.string.encode(state, m.licenseId)\n encoding6_4.encode(state, m.blobBinding)\n c.uint.encode(state, flags)\n\n if (m.quantization) c.string.encode(state, m.quantization)\n if (m.params) c.string.encode(state, m.params)\n if (m.description) c.string.encode(state, m.description)\n if (m.notes) c.string.encode(state, m.notes)\n if (m.tags) encoding6_9.encode(state, m.tags)\n if (m.deprecatedAt) c.string.encode(state, m.deprecatedAt)\n if (m.replacedBy) c.string.encode(state, m.replacedBy)\n if (m.deprecationReason) c.string.encode(state, m.deprecationReason)\n if (version >= 2 && m.ggufMetadata) c.string.encode(state, m.ggufMetadata)\n },\n decode(state) {\n const r2 = c.string.decode(state)\n const r3 = c.string.decode(state)\n const r4 = encoding6_4.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n path: null,\n source: null,\n engine: r2,\n licenseId: r3,\n blobBinding: r4,\n quantization: (flags & 1) !== 0 ? c.string.decode(state) : null,\n params: (flags & 2) !== 0 ? c.string.decode(state) : null,\n description: (flags & 4) !== 0 ? c.string.decode(state) : null,\n notes: (flags & 8) !== 0 ? c.string.decode(state) : null,\n tags: (flags & 16) !== 0 ? encoding6_9.decode(state) : null,\n deprecated: (flags & 32) !== 0,\n deprecatedAt: (flags & 64) !== 0 ? c.string.decode(state) : null,\n replacedBy: (flags & 128) !== 0 ? c.string.decode(state) : null,\n deprecationReason: (flags & 256) !== 0 ? c.string.decode(state) : null,\n ggufMetadata: (version >= 2 && (flags & 512) !== 0) ? c.string.decode(state) : null\n }\n }\n}\n\nfunction setVersion(v) {\n version = v\n}\n\nfunction encode(name, value, v = VERSION) {\n version = v\n return c.encode(getEncoding(name), value)\n}\n\nfunction decode(name, buffer, v = VERSION) {\n version = v\n return c.decode(getEncoding(name), buffer)\n}\n\nfunction getEnum(name) {\n switch (name) {\n default:\n throw new Error('Enum not found ' + name)\n }\n}\n\nfunction getEncoding(name) {\n switch (name) {\n case '@qvac-main-registry/model-blob-binding':\n return encoding0\n case '@qvac-main-registry/license':\n return encoding1\n case '@qvac-main-registry/model':\n return encoding2\n case '@qvac-main-registry/model-key':\n return encoding3\n case '@qvac-main-registry/writer':\n return encoding4\n case '@qvac-main-registry/license/hyperdb#0':\n return encoding5\n case '@qvac-main-registry/model/hyperdb#1':\n return encoding6\n default:\n throw new Error('Encoder not found ' + name)\n }\n}\n\nfunction getStruct(name, v = VERSION) {\n const enc = getEncoding(name)\n return {\n preencode(state, m) {\n version = v\n enc.preencode(state, m)\n },\n encode(state, m) {\n version = v\n enc.encode(state, m)\n },\n decode(state) {\n version = v\n return enc.decode(state)\n }\n }\n}\n\nconst resolveStruct = getStruct // compat\n\nmodule.exports = {\n resolveStruct,\n getStruct,\n getEnum,\n getEncoding,\n encode,\n decode,\n setVersion,\n version\n}\n// This file is autogenerated by the hyperdispatch compiler\n/* eslint-disable camelcase */\n\nconst { c, b4a, assert, DispatchError, ERRORS } = require('hyperdispatch/runtime')\nconst { version, getEncoding, setVersion } = require('./messages.js')\n\nconst defaultVersion = version\n\nclass Router {\n constructor () {\n this._handler0 = null\n this._handler1 = null\n this._handler2 = null\n this._handler3 = null\n this._handler4 = null\n\n this._missing = 5\n }\n\n add (name, handler) {\n switch (name) {\n case '@qvac-main-registry/put-model':\n this._handler0 = handler\n break\n case '@qvac-main-registry/put-license':\n this._handler1 = handler\n break\n case '@qvac-main-registry/add-indexer':\n this._handler2 = handler\n break\n case '@qvac-main-registry/remove-indexer':\n this._handler3 = handler\n break\n case '@qvac-main-registry/delete-model':\n this._handler4 = handler\n break\n default:\n throw DispatchError.NONEXISTENT_ROUTE(name)\n }\n this._missing--\n }\n\n _checkAll () {\n assert(this._handler0 !== null, 'Missing handler for \"@qvac-main-registry/put-model\"')\n assert(this._handler1 !== null, 'Missing handler for \"@qvac-main-registry/put-license\"')\n assert(this._handler2 !== null, 'Missing handler for \"@qvac-main-registry/add-indexer\"')\n assert(this._handler3 !== null, 'Missing handler for \"@qvac-main-registry/remove-indexer\"')\n assert(this._handler4 !== null, 'Missing handler for \"@qvac-main-registry/delete-model\"')\n }\n\n async dispatch (message, context) {\n if (this._missing > 0) {\n this._checkAll()\n }\n\n setVersion(defaultVersion)\n\n const op = b4a.isBuffer(message) ? decode(message) : message\n\n switch (op.id) {\n case 0:\n return this._handler0(op.value, context)\n case 1:\n return this._handler1(op.value, context)\n case 2:\n return this._handler2(op.value, context)\n case 3:\n return this._handler3(op.value, context)\n case 4:\n return this._handler4(op.value, context)\n default:\n throw DispatchError.HANDLER_NOT_FOUND_BY_ID(op.id)\n }\n }\n}\n\nfunction encode (name, message, { version = defaultVersion } = {}) {\n const state = { buffer: null, start: 0, end: 0 }\n\n const route = getRouteByName(name)\n setVersion(version)\n\n c.uint.preencode(state, route.id)\n route.enc.preencode(state, message)\n\n state.buffer = b4a.allocUnsafe(state.end)\n c.uint.encode(state, route.id)\n route.enc.encode(state, message)\n\n return state.buffer\n}\n\nfunction decode (buffer, { version = defaultVersion } = {}) {\n const state = { buffer, start: 0, end: buffer.length }\n\n const id = c.uint.decode(state)\n const route = getRouteById(id)\n setVersion(version)\n\n const value = route.enc.decode(state)\n return { id, name: route.name, value }\n}\n\nconst route0 = {\n name: '@qvac-main-registry/put-model',\n id: 0,\n enc: getEncoding('@qvac-main-registry/model')\n}\n\nconst route1 = {\n name: '@qvac-main-registry/put-license',\n id: 1,\n enc: getEncoding('@qvac-main-registry/license')\n}\n\nconst route2 = {\n name: '@qvac-main-registry/add-indexer',\n id: 2,\n enc: getEncoding('@qvac-main-registry/writer')\n}\n\nconst route3 = {\n name: '@qvac-main-registry/remove-indexer',\n id: 3,\n enc: getEncoding('@qvac-main-registry/writer')\n}\n\nconst route4 = {\n name: '@qvac-main-registry/delete-model',\n id: 4,\n enc: getEncoding('@qvac-main-registry/model-key')\n}\n\nfunction getRouteByName (name) {\n switch (name) {\n case '@qvac-main-registry/put-model':\n return route0\n case '@qvac-main-registry/put-license':\n return route1\n case '@qvac-main-registry/add-indexer':\n return route2\n case '@qvac-main-registry/remove-indexer':\n return route3\n case '@qvac-main-registry/delete-model':\n return route4\n default:\n throw DispatchError.ROUTE_NOT_FOUND_BY_NAME(name)\n }\n}\n\nfunction getRouteById (id) {\n switch (id) {\n case 0:\n return route0\n case 1:\n return route1\n case 2:\n return route2\n case 3:\n return route3\n case 4:\n return route4\n default:\n throw DispatchError.HANDLER_NOT_FOUND_BY_ID(id)\n }\n}\n\nmodule.exports = {\n version,\n encode,\n decode,\n Router,\n DispatchError,\n ERRORS\n}\n// This file is autogenerated by the hyperschema compiler\n// Schema Version: 2\n/* eslint-disable camelcase */\n/* eslint-disable quotes */\n/* eslint-disable space-before-function-paren */\n\nconst { c } = require('hyperschema/runtime')\n\nconst VERSION = 2\n\n// eslint-disable-next-line no-unused-vars\nlet version = VERSION\n\n// @qvac-main-registry/model-blob-binding\nconst encoding0 = {\n preencode(state, m) {\n c.fixed32.preencode(state, m.coreKey)\n c.uint.preencode(state, m.blockOffset)\n c.uint.preencode(state, m.blockLength)\n c.uint.preencode(state, m.byteOffset)\n c.uint.preencode(state, m.byteLength)\n c.string.preencode(state, m.sha256)\n },\n encode(state, m) {\n c.fixed32.encode(state, m.coreKey)\n c.uint.encode(state, m.blockOffset)\n c.uint.encode(state, m.blockLength)\n c.uint.encode(state, m.byteOffset)\n c.uint.encode(state, m.byteLength)\n c.string.encode(state, m.sha256)\n },\n decode(state) {\n const r0 = c.fixed32.decode(state)\n const r1 = c.uint.decode(state)\n const r2 = c.uint.decode(state)\n const r3 = c.uint.decode(state)\n const r4 = c.uint.decode(state)\n const r5 = c.string.decode(state)\n\n return {\n coreKey: r0,\n blockOffset: r1,\n blockLength: r2,\n byteOffset: r3,\n byteLength: r4,\n sha256: r5\n }\n }\n}\n\n// @qvac-main-registry/license\nconst encoding1 = {\n preencode(state, m) {\n c.string.preencode(state, m.spdxId)\n c.string.preencode(state, m.name)\n c.string.preencode(state, m.url)\n c.string.preencode(state, m.text)\n },\n encode(state, m) {\n c.string.encode(state, m.spdxId)\n c.string.encode(state, m.name)\n c.string.encode(state, m.url)\n c.string.encode(state, m.text)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.string.decode(state)\n const r2 = c.string.decode(state)\n const r3 = c.string.decode(state)\n\n return {\n spdxId: r0,\n name: r1,\n url: r2,\n text: r3\n }\n }\n}\n\n// @qvac-main-registry/model.blobBinding\nconst encoding2_4 = c.frame(encoding0)\n// @qvac-main-registry/model.tags\nconst encoding2_9 = c.array(c.string)\n\n// @qvac-main-registry/model\nconst encoding2 = {\n preencode(state, m) {\n const flags =\n (m.quantization ? 1 : 0) |\n (m.params ? 2 : 0) |\n (m.description ? 4 : 0) |\n (m.notes ? 8 : 0) |\n (m.tags ? 16 : 0) |\n (m.deprecated ? 32 : 0) |\n (m.deprecatedAt ? 64 : 0) |\n (m.replacedBy ? 128 : 0) |\n (m.deprecationReason ? 256 : 0) |\n ((version >= 2 && m.ggufMetadata) ? 512 : 0)\n\n c.string.preencode(state, m.path)\n c.string.preencode(state, m.source)\n c.string.preencode(state, m.engine)\n c.string.preencode(state, m.licenseId)\n encoding2_4.preencode(state, m.blobBinding)\n c.uint.preencode(state, flags)\n\n if (m.quantization) c.string.preencode(state, m.quantization)\n if (m.params) c.string.preencode(state, m.params)\n if (m.description) c.string.preencode(state, m.description)\n if (m.notes) c.string.preencode(state, m.notes)\n if (m.tags) encoding2_9.preencode(state, m.tags)\n if (m.deprecatedAt) c.string.preencode(state, m.deprecatedAt)\n if (m.replacedBy) c.string.preencode(state, m.replacedBy)\n if (m.deprecationReason) c.string.preencode(state, m.deprecationReason)\n if (version >= 2 && m.ggufMetadata) c.string.preencode(state, m.ggufMetadata)\n },\n encode(state, m) {\n const flags =\n (m.quantization ? 1 : 0) |\n (m.params ? 2 : 0) |\n (m.description ? 4 : 0) |\n (m.notes ? 8 : 0) |\n (m.tags ? 16 : 0) |\n (m.deprecated ? 32 : 0) |\n (m.deprecatedAt ? 64 : 0) |\n (m.replacedBy ? 128 : 0) |\n (m.deprecationReason ? 256 : 0) |\n ((version >= 2 && m.ggufMetadata) ? 512 : 0)\n\n c.string.encode(state, m.path)\n c.string.encode(state, m.source)\n c.string.encode(state, m.engine)\n c.string.encode(state, m.licenseId)\n encoding2_4.encode(state, m.blobBinding)\n c.uint.encode(state, flags)\n\n if (m.quantization) c.string.encode(state, m.quantization)\n if (m.params) c.string.encode(state, m.params)\n if (m.description) c.string.encode(state, m.description)\n if (m.notes) c.string.encode(state, m.notes)\n if (m.tags) encoding2_9.encode(state, m.tags)\n if (m.deprecatedAt) c.string.encode(state, m.deprecatedAt)\n if (m.replacedBy) c.string.encode(state, m.replacedBy)\n if (m.deprecationReason) c.string.encode(state, m.deprecationReason)\n if (version >= 2 && m.ggufMetadata) c.string.encode(state, m.ggufMetadata)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.string.decode(state)\n const r2 = c.string.decode(state)\n const r3 = c.string.decode(state)\n const r4 = encoding2_4.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n path: r0,\n source: r1,\n engine: r2,\n licenseId: r3,\n blobBinding: r4,\n quantization: (flags & 1) !== 0 ? c.string.decode(state) : null,\n params: (flags & 2) !== 0 ? c.string.decode(state) : null,\n description: (flags & 4) !== 0 ? c.string.decode(state) : null,\n notes: (flags & 8) !== 0 ? c.string.decode(state) : null,\n tags: (flags & 16) !== 0 ? encoding2_9.decode(state) : null,\n deprecated: (flags & 32) !== 0,\n deprecatedAt: (flags & 64) !== 0 ? c.string.decode(state) : null,\n replacedBy: (flags & 128) !== 0 ? c.string.decode(state) : null,\n deprecationReason: (flags & 256) !== 0 ? c.string.decode(state) : null,\n ggufMetadata: (version >= 2 && (flags & 512) !== 0) ? c.string.decode(state) : null\n }\n }\n}\n\n// @qvac-main-registry/model-key\nconst encoding3 = {\n preencode(state, m) {\n c.string.preencode(state, m.path)\n c.string.preencode(state, m.source)\n },\n encode(state, m) {\n c.string.encode(state, m.path)\n c.string.encode(state, m.source)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.string.decode(state)\n\n return {\n path: r0,\n source: r1\n }\n }\n}\n\n// @qvac-main-registry/writer\nconst encoding4 = {\n preencode(state, m) {\n c.fixed32.preencode(state, m.key)\n },\n encode(state, m) {\n c.fixed32.encode(state, m.key)\n },\n decode(state) {\n const r0 = c.fixed32.decode(state)\n\n return {\n key: r0\n }\n }\n}\n\nfunction setVersion(v) {\n version = v\n}\n\nfunction encode(name, value, v = VERSION) {\n version = v\n return c.encode(getEncoding(name), value)\n}\n\nfunction decode(name, buffer, v = VERSION) {\n version = v\n return c.decode(getEncoding(name), buffer)\n}\n\nfunction getEnum(name) {\n switch (name) {\n default:\n throw new Error('Enum not found ' + name)\n }\n}\n\nfunction getEncoding(name) {\n switch (name) {\n case '@qvac-main-registry/model-blob-binding':\n return encoding0\n case '@qvac-main-registry/license':\n return encoding1\n case '@qvac-main-registry/model':\n return encoding2\n case '@qvac-main-registry/model-key':\n return encoding3\n case '@qvac-main-registry/writer':\n return encoding4\n default:\n throw new Error('Encoder not found ' + name)\n }\n}\n\nfunction getStruct(name, v = VERSION) {\n const enc = getEncoding(name)\n return {\n preencode(state, m) {\n version = v\n enc.preencode(state, m)\n },\n encode(state, m) {\n version = v\n enc.encode(state, m)\n },\n decode(state) {\n version = v\n return enc.decode(state)\n }\n }\n}\n\nconst resolveStruct = getStruct // compat\n\nmodule.exports = {\n resolveStruct,\n getStruct,\n getEnum,\n getEncoding,\n encode,\n decode,\n setVersion,\n version\n}\n// This file is autogenerated by the hyperschema compiler\n// Schema Version: 2\n/* eslint-disable camelcase */\n/* eslint-disable quotes */\n/* eslint-disable space-before-function-paren */\n\nconst { c } = require('hyperschema/runtime')\n\nconst VERSION = 2\n\n// eslint-disable-next-line no-unused-vars\nlet version = VERSION\n\n// @qvac-main-registry/model-blob-binding\nconst encoding0 = {\n preencode(state, m) {\n c.fixed32.preencode(state, m.coreKey)\n c.uint.preencode(state, m.blockOffset)\n c.uint.preencode(state, m.blockLength)\n c.uint.preencode(state, m.byteOffset)\n c.uint.preencode(state, m.byteLength)\n c.string.preencode(state, m.sha256)\n },\n encode(state, m) {\n c.fixed32.encode(state, m.coreKey)\n c.uint.encode(state, m.blockOffset)\n c.uint.encode(state, m.blockLength)\n c.uint.encode(state, m.byteOffset)\n c.uint.encode(state, m.byteLength)\n c.string.encode(state, m.sha256)\n },\n decode(state) {\n const r0 = c.fixed32.decode(state)\n const r1 = c.uint.decode(state)\n const r2 = c.uint.decode(state)\n const r3 = c.uint.decode(state)\n const r4 = c.uint.decode(state)\n const r5 = c.string.decode(state)\n\n return {\n coreKey: r0,\n blockOffset: r1,\n blockLength: r2,\n byteOffset: r3,\n byteLength: r4,\n sha256: r5\n }\n }\n}\n\n// @qvac-main-registry/license\nconst encoding1 = {\n preencode(state, m) {\n c.string.preencode(state, m.spdxId)\n c.string.preencode(state, m.name)\n c.string.preencode(state, m.url)\n c.string.preencode(state, m.text)\n },\n encode(state, m) {\n c.string.encode(state, m.spdxId)\n c.string.encode(state, m.name)\n c.string.encode(state, m.url)\n c.string.encode(state, m.text)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.string.decode(state)\n const r2 = c.string.decode(state)\n const r3 = c.string.decode(state)\n\n return {\n spdxId: r0,\n name: r1,\n url: r2,\n text: r3\n }\n }\n}\n\n// @qvac-main-registry/model.blobBinding\nconst encoding2_4 = c.frame(encoding0)\n// @qvac-main-registry/model.tags\nconst encoding2_9 = c.array(c.string)\n\n// @qvac-main-registry/model\nconst encoding2 = {\n preencode(state, m) {\n const flags =\n (m.quantization ? 1 : 0) |\n (m.params ? 2 : 0) |\n (m.description ? 4 : 0) |\n (m.notes ? 8 : 0) |\n (m.tags ? 16 : 0) |\n (m.deprecated ? 32 : 0) |\n (m.deprecatedAt ? 64 : 0) |\n (m.replacedBy ? 128 : 0) |\n (m.deprecationReason ? 256 : 0) |\n ((version >= 2 && m.ggufMetadata) ? 512 : 0)\n\n c.string.preencode(state, m.path)\n c.string.preencode(state, m.source)\n c.string.preencode(state, m.engine)\n c.string.preencode(state, m.licenseId)\n encoding2_4.preencode(state, m.blobBinding)\n c.uint.preencode(state, flags)\n\n if (m.quantization) c.string.preencode(state, m.quantization)\n if (m.params) c.string.preencode(state, m.params)\n if (m.description) c.string.preencode(state, m.description)\n if (m.notes) c.string.preencode(state, m.notes)\n if (m.tags) encoding2_9.preencode(state, m.tags)\n if (m.deprecatedAt) c.string.preencode(state, m.deprecatedAt)\n if (m.replacedBy) c.string.preencode(state, m.replacedBy)\n if (m.deprecationReason) c.string.preencode(state, m.deprecationReason)\n if (version >= 2 && m.ggufMetadata) c.string.preencode(state, m.ggufMetadata)\n },\n encode(state, m) {\n const flags =\n (m.quantization ? 1 : 0) |\n (m.params ? 2 : 0) |\n (m.description ? 4 : 0) |\n (m.notes ? 8 : 0) |\n (m.tags ? 16 : 0) |\n (m.deprecated ? 32 : 0) |\n (m.deprecatedAt ? 64 : 0) |\n (m.replacedBy ? 128 : 0) |\n (m.deprecationReason ? 256 : 0) |\n ((version >= 2 && m.ggufMetadata) ? 512 : 0)\n\n c.string.encode(state, m.path)\n c.string.encode(state, m.source)\n c.string.encode(state, m.engine)\n c.string.encode(state, m.licenseId)\n encoding2_4.encode(state, m.blobBinding)\n c.uint.encode(state, flags)\n\n if (m.quantization) c.string.encode(state, m.quantization)\n if (m.params) c.string.encode(state, m.params)\n if (m.description) c.string.encode(state, m.description)\n if (m.notes) c.string.encode(state, m.notes)\n if (m.tags) encoding2_9.encode(state, m.tags)\n if (m.deprecatedAt) c.string.encode(state, m.deprecatedAt)\n if (m.replacedBy) c.string.encode(state, m.replacedBy)\n if (m.deprecationReason) c.string.encode(state, m.deprecationReason)\n if (version >= 2 && m.ggufMetadata) c.string.encode(state, m.ggufMetadata)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.string.decode(state)\n const r2 = c.string.decode(state)\n const r3 = c.string.decode(state)\n const r4 = encoding2_4.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n path: r0,\n source: r1,\n engine: r2,\n licenseId: r3,\n blobBinding: r4,\n quantization: (flags & 1) !== 0 ? c.string.decode(state) : null,\n params: (flags & 2) !== 0 ? c.string.decode(state) : null,\n description: (flags & 4) !== 0 ? c.string.decode(state) : null,\n notes: (flags & 8) !== 0 ? c.string.decode(state) : null,\n tags: (flags & 16) !== 0 ? encoding2_9.decode(state) : null,\n deprecated: (flags & 32) !== 0,\n deprecatedAt: (flags & 64) !== 0 ? c.string.decode(state) : null,\n replacedBy: (flags & 128) !== 0 ? c.string.decode(state) : null,\n deprecationReason: (flags & 256) !== 0 ? c.string.decode(state) : null,\n ggufMetadata: (version >= 2 && (flags & 512) !== 0) ? c.string.decode(state) : null\n }\n }\n}\n\n// @qvac-main-registry/model-key\nconst encoding3 = {\n preencode(state, m) {\n c.string.preencode(state, m.path)\n c.string.preencode(state, m.source)\n },\n encode(state, m) {\n c.string.encode(state, m.path)\n c.string.encode(state, m.source)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.string.decode(state)\n\n return {\n path: r0,\n source: r1\n }\n }\n}\n\n// @qvac-main-registry/writer\nconst encoding4 = {\n preencode(state, m) {\n c.fixed32.preencode(state, m.key)\n },\n encode(state, m) {\n c.fixed32.encode(state, m.key)\n },\n decode(state) {\n const r0 = c.fixed32.decode(state)\n\n return {\n key: r0\n }\n }\n}\n\nfunction setVersion(v) {\n version = v\n}\n\nfunction encode(name, value, v = VERSION) {\n version = v\n return c.encode(getEncoding(name), value)\n}\n\nfunction decode(name, buffer, v = VERSION) {\n version = v\n return c.decode(getEncoding(name), buffer)\n}\n\nfunction getEnum(name) {\n switch (name) {\n default:\n throw new Error('Enum not found ' + name)\n }\n}\n\nfunction getEncoding(name) {\n switch (name) {\n case '@qvac-main-registry/model-blob-binding':\n return encoding0\n case '@qvac-main-registry/license':\n return encoding1\n case '@qvac-main-registry/model':\n return encoding2\n case '@qvac-main-registry/model-key':\n return encoding3\n case '@qvac-main-registry/writer':\n return encoding4\n default:\n throw new Error('Encoder not found ' + name)\n }\n}\n\nfunction getStruct(name, v = VERSION) {\n const enc = getEncoding(name)\n return {\n preencode(state, m) {\n version = v\n enc.preencode(state, m)\n },\n encode(state, m) {\n version = v\n enc.encode(state, m)\n },\n decode(state) {\n version = v\n return enc.decode(state)\n }\n }\n}\n\nconst resolveStruct = getStruct // compat\n\nmodule.exports = {\n resolveStruct,\n getStruct,\n getEnum,\n getEncoding,\n encode,\n decode,\n setVersion,\n version\n}\nexport { FORMATS_NEEDING_DECODE, SUPPORTED_AUDIO_FORMATS } from '@qvac/decoder-audio/constants.js';\nexport * from './audio.js';\nexport * from './registry.js';\nexport const DEFAULT_REGISTRY_CORE_KEY = 'uf1fm44uzockp6azhcdiqt1esjgm65fwtimsh946e8kwysdes9ko';\nimport { unregisterLogger } from './registry.js';\n// Map C++ addon priority (0-4) to SDK LogLevel\nconst PRIORITY_TO_LEVEL = {\n 0: 'error',\n 1: 'warn',\n 2: 'info',\n 3: 'debug',\n 4: 'debug'\n};\nconst ADDON_LOGGERS_KEY = Symbol.for('@qvac/sdk:addon-loggers');\nconst MODEL_LOGGERS_KEY = Symbol.for('@qvac/sdk:model-loggers');\nfunction getAddonLoggers() {\n const global = globalThis;\n if (!global[ADDON_LOGGERS_KEY]) {\n global[ADDON_LOGGERS_KEY] = new Map();\n }\n return global[ADDON_LOGGERS_KEY];\n}\nfunction getModelLoggers() {\n const global = globalThis;\n if (!global[MODEL_LOGGERS_KEY]) {\n global[MODEL_LOGGERS_KEY] = new Map();\n }\n return global[MODEL_LOGGERS_KEY];\n}\nexport function registerAddonLogger(modelId, namespace, logger) {\n const addonLoggers = getAddonLoggers();\n const modelLoggers = getModelLoggers();\n if (!addonLoggers.has(namespace)) {\n addonLoggers.set(namespace, new Set());\n }\n addonLoggers.get(namespace).add(logger);\n modelLoggers.set(modelId, { namespace, logger });\n}\nexport function unregisterAddonLogger(modelId) {\n const addonLoggers = getAddonLoggers();\n const modelLoggers = getModelLoggers();\n const entry = modelLoggers.get(modelId);\n if (entry) {\n addonLoggers.get(entry.namespace)?.delete(entry.logger);\n unregisterLogger(entry.logger);\n modelLoggers.delete(modelId);\n }\n}\nfunction routeLog(logger, level, message) {\n switch (level) {\n case 'error':\n logger.error(message);\n break;\n case 'warn':\n logger.warn(message);\n break;\n case 'info':\n logger.info(message);\n break;\n case 'debug':\n logger.debug(message);\n break;\n }\n}\nexport function createAddonLoggerCallback(namespace) {\n return (priority, message) => {\n const loggers = getAddonLoggers().get(namespace);\n if (!loggers || loggers.size === 0)\n return;\n const level = PRIORITY_TO_LEVEL[priority] ?? 'debug';\n for (const logger of loggers) {\n routeLog(logger, level, message);\n }\n };\n}\nexport function clearAllAddonLoggers() {\n getAddonLoggers().clear();\n getModelLoggers().clear();\n}\nimport QvacLogger, {} from '@qvac/logging';\nimport { LOG_LEVELS } from '@qvac/logging/constants.js';\nimport { isLevelEnabled, formatArg } from './utils.js';\nimport { registerLogger } from './registry.js';\nexport function createBaseLogger(namespace, options, extensions) {\n const qvacLogger = new QvacLogger(console);\n const initialLevel = options?.level ?? LOG_LEVELS.INFO;\n qvacLogger.setLevel(initialLevel);\n const transports = options?.transports || [];\n let consoleEnabled = options?.enableConsole !== false;\n const log = (level, ...args) => {\n if (!isLevelEnabled(level, qvacLogger.getLevel())) {\n return;\n }\n const message = args.map(formatArg).join(' ');\n // Log to console if enabled\n if (consoleEnabled) {\n switch (level) {\n case LOG_LEVELS.ERROR:\n qvacLogger.error(`[${namespace}]`, ...args);\n break;\n case LOG_LEVELS.WARN:\n qvacLogger.warn(`[${namespace}]`, ...args);\n break;\n case LOG_LEVELS.INFO:\n qvacLogger.info(`[${namespace}]`, ...args);\n break;\n case LOG_LEVELS.DEBUG:\n qvacLogger.debug(`[${namespace}]`, ...args);\n break;\n }\n }\n extensions?.onLog?.(level, namespace, message);\n for (const transport of transports) {\n try {\n const result = transport(level, namespace, message);\n if (result instanceof Promise) {\n result.catch((error) => {\n console.error(`Transport error in ${namespace}:`, error); // fallback (avoid recursion)\n });\n }\n }\n catch (error) {\n console.error(`Transport error in ${namespace}:`, error); // fallback (avoid recursion)\n }\n }\n };\n const logger = {\n error: (...args) => log(LOG_LEVELS.ERROR, ...args),\n warn: (...args) => log(LOG_LEVELS.WARN, ...args),\n info: (...args) => log(LOG_LEVELS.INFO, ...args),\n debug: (...args) => log(LOG_LEVELS.DEBUG, ...args),\n trace: (...args) => log(LOG_LEVELS.DEBUG, ...args),\n setLevel: (level) => qvacLogger.setLevel(level),\n getLevel: () => qvacLogger.getLevel(),\n addTransport: (transport) => {\n transports.push(transport);\n },\n setConsoleOutput: (enabled) => {\n consoleEnabled = enabled;\n }\n };\n registerLogger(logger);\n return logger;\n}\nimport { getLogger } from './logger.js';\nconst CLIENT_NAMESPACE = 'sdk:client';\nconst CLIENT_LOGGER_KEY = Symbol.for('@qvac/sdk:client-logger');\nfunction getCachedClientLogger() {\n const global = globalThis;\n return global[CLIENT_LOGGER_KEY] ?? null;\n}\nfunction setCachedClientLogger(logger) {\n const global = globalThis;\n global[CLIENT_LOGGER_KEY] = logger;\n}\nexport function getClientLogger(options) {\n if (!options) {\n const cached = getCachedClientLogger();\n if (cached) {\n return cached;\n }\n }\n // The SDK's own logs stay off the console unless the caller opts in.\n const logger = getLogger(CLIENT_NAMESPACE, { enableConsole: false, ...options });\n if (!options) {\n setCachedClientLogger(logger);\n }\n return logger;\n}\nexport { getLogger } from './logger.js';\nexport { setGlobalLogLevel, setGlobalConsoleOutput, registerLogger, unregisterLogger } from './registry.js';\nexport { createStreamLogger } from './stream-logger.js';\nexport { getServerLogger } from './server-logger.js';\nexport { getClientLogger } from './client-logger.js';\nexport { RAG_NAMESPACE, SDK_LOG_ID, SDK_ALL_LOG_ID, SDK_SERVER_NAMESPACE } from './namespaces.js';\nexport { registerAddonLogger, unregisterAddonLogger, createAddonLoggerCallback, clearAllAddonLoggers } from './addon.js';\nexport { summarizeRequest } from './utils.js';\nimport { safeTransport } from './transport.js';\nimport { createBaseLogger } from './base-logger.js';\nconst LOGGER_CACHE_KEY = Symbol.for('@qvac/sdk:logger-cache');\nfunction getLoggerCache() {\n const global = globalThis;\n if (!global[LOGGER_CACHE_KEY]) {\n global[LOGGER_CACHE_KEY] = new Map();\n }\n return global[LOGGER_CACHE_KEY];\n}\nfunction createLogger(namespace, options) {\n const safeOptions = options\n ? {\n ...options,\n transports: options.transports?.map((t) => safeTransport(t, namespace)) || []\n }\n : undefined;\n return createBaseLogger(namespace, safeOptions);\n}\n/**\n * Creates or retrieves a namespaced logger instance.\n *\n * Loggers are cached per namespace when `options` is omitted, so repeated\n * calls with the same namespace return the same instance. When `options` is\n * supplied, a fresh logger is returned and the cache is bypassed.\n *\n * @param namespace - Namespace used to prefix log messages from this logger (e.g. `\"my-app\"`, `\"@qvac/sdk:embed\"`).\n * @param options - Optional logger configuration (custom transports, log level, etc.). When provided, a new logger is always constructed.\n * @returns A `Logger` instance scoped to `namespace`.\n */\nexport function getLogger(namespace, options) {\n const cache = getLoggerCache();\n if (!options) {\n const cached = cache.get(namespace);\n if (cached) {\n return cached;\n }\n }\n const logger = createLogger(namespace, options);\n if (!options) {\n cache.set(namespace, logger);\n }\n return logger;\n}\nimport {} from '../schemas/model-types.js';\nexport const RAG_NAMESPACE = 'rag:hyperdb';\n// Reserved ID for SDK server logs\nexport const SDK_LOG_ID = '__sdk__';\n// Reserved ID for the stream that receives all server-side logs\nexport const SDK_ALL_LOG_ID = '__all__';\n// Namespace for all SDK server logs\nexport const SDK_SERVER_NAMESPACE = 'sdk:server';\n/**\n * Logger Instance Registry (Per-Process)\n *\n * Manages the lifecycle of all Logger instances in the CURRENT PROCESS.\n * Client and server run as separate processes, each with their own registry instance.\n *\n * Purpose:\n * - Tracks all Logger objects in this process (getLogger, createStreamLogger, etc.)\n * - Enables process-wide log level control via setGlobalLogLevel()\n * - Enables process-wide console output control via setGlobalConsoleOutput()\n * - Ensures proper cleanup when loggers are no longer needed\n *\n * Config Integration:\n * - loggerLevel and loggerConsoleOutput from config file apply to both processes\n * - Client applies settings after loading config, server applies during __init_config\n *\n * NOTE: This is separate from server/bare/registry/logging-stream-registry.ts\n * which manages RPC subscriptions for streaming logs to connected clients.\n *\n * IMPORTANT: Some bundlers may evaluate the same logical module multiple times with\n * subpath imports like `#rpc`, which can duplicate internal module state.\n * We use globalThis + Symbol.for() to guarantees a single instance across all\n * module evaluations and runtimes.\n */\nconst REGISTRY_KEY = Symbol.for('@qvac/sdk:logger-registry');\nconst GLOBAL_LEVEL_KEY = Symbol.for('@qvac/sdk:global-log-level');\nconst GLOBAL_CONSOLE_KEY = Symbol.for('@qvac/sdk:global-console-output');\nfunction getGlobal() {\n return globalThis;\n}\nfunction getRegistry() {\n const global = getGlobal();\n if (!global[REGISTRY_KEY]) {\n global[REGISTRY_KEY] = new Set();\n }\n return global[REGISTRY_KEY];\n}\nexport function registerLogger(logger) {\n const global = getGlobal();\n getRegistry().add(logger);\n if (global[GLOBAL_LEVEL_KEY] !== undefined) {\n logger.setLevel(global[GLOBAL_LEVEL_KEY]);\n }\n if (global[GLOBAL_CONSOLE_KEY] !== undefined) {\n logger.setConsoleOutput(global[GLOBAL_CONSOLE_KEY]);\n }\n}\nexport function unregisterLogger(logger) {\n getRegistry().delete(logger);\n}\nexport function setGlobalLogLevel(level) {\n getGlobal()[GLOBAL_LEVEL_KEY] = level;\n for (const logger of getRegistry()) {\n logger.setLevel(level);\n }\n}\nexport function setGlobalConsoleOutput(enabled) {\n getGlobal()[GLOBAL_CONSOLE_KEY] = enabled;\n for (const logger of getRegistry()) {\n logger.setConsoleOutput(enabled);\n }\n}\nimport { createStreamLogger } from './stream-logger.js';\nimport { SDK_LOG_ID, SDK_SERVER_NAMESPACE } from './namespaces.js';\nlet cachedLogger = null;\nexport function getServerLogger(options) {\n if (!options && cachedLogger) {\n return cachedLogger;\n }\n const logger = createStreamLogger(SDK_LOG_ID, SDK_SERVER_NAMESPACE, options);\n if (!options) {\n cachedLogger = logger;\n }\n return logger;\n}\nimport { sendLogToStreams } from '../server/bare/registry/logging-stream-registry.js';\nimport { createBaseLogger } from './base-logger.js';\nexport function createStreamLogger(id, namespace, options) {\n return createBaseLogger(namespace, {\n enableConsole: false, // Default to disable console output for stream loggers\n ...options\n }, {\n onLog: (level, namespace, message) => {\n sendLogToStreams(id, level, namespace, message);\n }\n });\n}\nexport function safeTransport(transport, namespace) {\n return (level, ns, message) => {\n try {\n const result = transport(level, ns, message);\n if (result instanceof Promise) {\n result.catch((error) => {\n console.error(`Transport error in ${namespace}:`, error); // fallback (avoid recursion)\n });\n }\n }\n catch (error) {\n console.error(`Transport error in ${namespace}:`, error); // fallback (avoid recursion)\n }\n };\n}\nimport { LEVEL_PRIORITIES, LOG_LEVELS } from '@qvac/logging/constants.js';\nimport stringify from 'fast-safe-stringify';\nexport function isLevelEnabled(messageLevel, currentLevel) {\n // \"off\" suppresses every emission (console, streams, and transports alike),\n // even though its priority sits above the real levels.\n if (currentLevel === LOG_LEVELS.OFF || messageLevel === LOG_LEVELS.OFF) {\n return false;\n }\n const messagePriority = LEVEL_PRIORITIES[messageLevel];\n const currentPriority = LEVEL_PRIORITIES[currentLevel];\n if (messagePriority === undefined || currentPriority === undefined) {\n return false;\n }\n return messagePriority <= currentPriority;\n}\nexport function formatArg(arg) {\n // Primitives\n if (arg === null ||\n arg === undefined ||\n typeof arg === 'string' ||\n typeof arg === 'number' ||\n typeof arg === 'boolean' ||\n typeof arg === 'symbol') {\n return String(arg);\n }\n // Functions - avoid printing source code\n if (typeof arg === 'function') {\n return '[function]';\n }\n // Errors - preserve message and stack\n if (arg instanceof Error) {\n return `${arg.name || 'Error'}: ${arg.message}${arg.stack ? `\\n${arg.stack}` : ''}`;\n }\n // All other objects with a custom replacer\n try {\n const replacer = (_key, value) => {\n if (value instanceof Set)\n return Array.from(value);\n if (value instanceof Map)\n return Object.fromEntries(value);\n if (value instanceof RegExp)\n return String(value);\n if (typeof value === 'bigint')\n return value.toString();\n return value;\n };\n return stringify(arg, replacer);\n }\n catch {\n return '[object]';\n }\n}\nexport function summarizeRequest(request) {\n const summary = { type: request.type };\n if ('modelId' in request)\n summary['modelId'] = request['modelId'];\n // Only summarize requests with large payloads\n if (request.type === 'transcribe') {\n const chunk = request['audioChunk'];\n summary['audioChunk'] = `[${chunk.type}: ${chunk.value.length} bytes]`;\n return summary;\n }\n if (request.type === 'ocrStream') {\n const img = request['image'];\n summary['image'] = `[${img.type}: ${img.value.length} bytes]`;\n return summary;\n }\n if (request.type === 'embed') {\n const text = request['text'];\n if (Array.isArray(text)) {\n const totalLen = text.reduce((sum, t) => sum + t.length, 0);\n summary['text'] = `[${text.length} items, ${totalLen} chars]`;\n }\n else if (text.length > 200) {\n summary['text'] = `[${text.length} chars]`;\n }\n else {\n summary['text'] = text;\n }\n return summary;\n }\n if (request.type === 'rag') {\n const op = request['operation'];\n if (op === 'ingest' || op === 'chunk') {\n summary['operation'] = op;\n if ('workspace' in request)\n summary['workspace'] = request['workspace'];\n const docs = request['documents'];\n if (Array.isArray(docs)) {\n const totalLen = docs.reduce((sum, d) => sum + d.length, 0);\n summary['documents'] = `[${docs.length} docs, ${totalLen} chars]`;\n }\n else if (docs.length > 200) {\n summary['documents'] = `[${docs.length} chars]`;\n }\n else {\n summary['documents'] = docs;\n }\n return summary;\n }\n if (op === 'saveEmbeddings') {\n summary['operation'] = op;\n if ('workspace' in request)\n summary['workspace'] = request['workspace'];\n const docs = request['documents'];\n const dims = docs[0]?.embedding?.length ?? 0;\n summary['documents'] = `[${docs.length} docs with ${dims}-dim embeddings]`;\n return summary;\n }\n }\n // All other requests - return full request (no large payloads)\n return request;\n}\nimport { models } from './models.js';\n// Re-export all generated models\nexport * from './models.js';\nconst bciEmbedder = models.find((model) => model.name === 'BCI_EMBEDDER');\nexport const BCI_EMBEDDER = {\n name: 'BCI_EMBEDDER',\n src: `registry://${bciEmbedder.registrySource}/${bciEmbedder.registryPath}`,\n registryPath: bciEmbedder.registryPath,\n registrySource: bciEmbedder.registrySource,\n blobCoreKey: bciEmbedder.blobCoreKey,\n blobBlockOffset: bciEmbedder.blobBlockOffset,\n blobBlockLength: bciEmbedder.blobBlockLength,\n blobByteOffset: bciEmbedder.blobByteOffset,\n modelId: bciEmbedder.modelId,\n expectedSize: bciEmbedder.expectedSize,\n sha256Checksum: bciEmbedder.sha256Checksum,\n addon: bciEmbedder.addon,\n engine: bciEmbedder.engine,\n quantization: bciEmbedder.quantization,\n params: bciEmbedder.params\n};\n// THIS FILE IS AUTO-GENERATED BY models/update-models\n// DO NOT MODIFY MANUALLY\nexport const models = [\n {\n name: 'BCI_EMBEDDER',\n registryPath: 'qvac_models_compiled/bci-whispercpp/2026-05-07/bci-embedder.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2263987,\n blobBlockLength: 382,\n blobByteOffset: 148361525869,\n modelId: 'bci-embedder.bin',\n addon: 'bci',\n expectedSize: 25028476,\n sha256Checksum: 'cca7eeee5b421675edece9f4bb88b34e53e26b2c30fe65f3b70ae98d294274ff',\n engine: 'bci-whispercpp-transcription',\n quantization: '',\n params: ''\n },\n {\n name: 'BCI_WINDOWED',\n registryPath: 'qvac_models_compiled/bci-whispercpp/2026-05-07/ggml-bci-windowed.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2264369,\n blobBlockLength: 1340,\n blobByteOffset: 148386554345,\n modelId: 'ggml-bci-windowed.bin',\n addon: 'bci',\n expectedSize: 87756577,\n sha256Checksum: '2871d1b11349d7434801d0029d8bb372bf24dab4342ee5d23d65e3d9092554e7',\n engine: 'bci-whispercpp-transcription',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'abc845adefe27931',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bci-whispercpp/2026-05-07/ggml-bci-windowed.bin',\n registrySource: 's3',\n targetName: 'ggml-bci-windowed.bin',\n expectedSize: 87756577,\n sha256Checksum: '2871d1b11349d7434801d0029d8bb372bf24dab4342ee5d23d65e3d9092554e7',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2264369,\n blobBlockLength: 1340,\n blobByteOffset: 148386554345,\n primary: true\n },\n {\n key: 'embedderPath',\n registryPath: 'qvac_models_compiled/bci-whispercpp/2026-05-07/bci-embedder.bin',\n registrySource: 's3',\n targetName: 'bci-embedder.bin',\n expectedSize: 25028476,\n sha256Checksum: 'cca7eeee5b421675edece9f4bb88b34e53e26b2c30fe65f3b70ae98d294274ff',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2263987,\n blobBlockLength: 382,\n blobByteOffset: 148361525869\n }\n ]\n }\n },\n {\n name: 'FLUX_2_KLEIN_4B_VAE',\n registryPath: 'black-forest-labs/FLUX.2-klein-4B/resolve/5e67da950fce4a097bc150c22958a05716994cea/vae/diffusion_pytorch_model.safetensors',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1020767,\n blobBlockLength: 2566,\n blobByteOffset: 66887747769,\n modelId: 'diffusion_pytorch_model.safetensors',\n addon: 'diffusion',\n expectedSize: 168120878,\n sha256Checksum: 'ca70d2202afe6415bdbcb8793ba8cd99fd159cfe6192381504d6c4d3036e0f04',\n engine: 'sdcpp-generation',\n quantization: '',\n params: ''\n },\n {\n name: 'WAN2_1_I2V_14B_Q4_K_M',\n registryPath: 'city96/Wan2.1-I2V-14B-480P-gguf/resolve/b4b6b3b3f0f64975fb33b1d5d1a46ca24e065f03/wan2.1-i2v-14b-480p-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1717352,\n blobBlockLength: 173053,\n blobByteOffset: 112542474225,\n modelId: 'wan2.1-i2v-14b-480p-Q4_K_M.gguf',\n addon: 'diffusion',\n expectedSize: 11341184384,\n sha256Checksum: 'd91f7139acadb42ea05cdf97b311e5099f714f11fbe4d90916500e2f53cbba82',\n engine: 'sdcpp-generation',\n quantization: 'Q4_K_M',\n params: '14B'\n },\n {\n name: 'WAN2_1_I2V_14B_Q4_K_M_1',\n registryPath: 'city96/Wan2.1-I2V-14B-720P-gguf/resolve/ea36d5421cc5f5c57e50067a432a8b2c16dd0dae/wan2.1-i2v-14b-720p-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1890405,\n blobBlockLength: 173053,\n blobByteOffset: 123883658609,\n modelId: 'wan2.1-i2v-14b-720p-Q4_K_M.gguf',\n addon: 'diffusion',\n expectedSize: 11341184384,\n sha256Checksum: 'ffecd91e4b636d8e3e43f3fa388218158ba447109547bde777c6d67ef4fe42a4',\n engine: 'sdcpp-generation',\n quantization: 'Q4_K_M',\n params: '14B'\n },\n {\n name: 'WAN2_1_T2V_14B_Q8_0',\n registryPath: 'city96/Wan2.1-T2V-14B-gguf/resolve/511cbce9f475a6ca0269be901d23b125f44f5c0d/wan2.1-t2v-14b-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1180671,\n blobBlockLength: 242302,\n blobByteOffset: 77371235522,\n modelId: 'wan2.1-t2v-14b-Q8_0.gguf',\n addon: 'diffusion',\n expectedSize: 15879461504,\n sha256Checksum: 'cd4f1cc5cd4b63f25898340e997d6299984114e8755be5407bc585a1e0ec9f38',\n engine: 'sdcpp-generation',\n quantization: 'Q8_0',\n params: '14B'\n },\n {\n name: 'CLIP_VISION_H',\n registryPath: 'Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/06e001fc51048fb03433a6fb25334de7836704a5/split_files/clip_vision/clip_vision_h.safetensors',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2063458,\n blobBlockLength: 19291,\n blobByteOffset: 135224842993,\n modelId: 'clip_vision_h.safetensors',\n addon: 'diffusion',\n expectedSize: 1264219396,\n sha256Checksum: '64a7ef761bfccbadbaa3da77366aac4185a6c58fa5de5f589b42a65bcc21f161',\n engine: 'sdcpp-generation',\n quantization: '',\n params: ''\n },\n {\n name: 'WAN2_1_T2V_1_3B_FP16',\n registryPath: 'Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/06e001fc51048fb03433a6fb25334de7836704a5/split_files/diffusion_models/wan2.1_t2v_1.3B_fp16.safetensors',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1137361,\n blobBlockLength: 43310,\n blobByteOffset: 74532931962,\n modelId: 'wan2.1_t2v_1.3B_fp16.safetensors',\n addon: 'diffusion',\n expectedSize: 2838303560,\n sha256Checksum: 'be531024cd9018cb5b48c40cfbb6a6191645b1c792eb8bf4f8c1c6e10f924dc5',\n engine: 'sdcpp-generation',\n quantization: 'fp16',\n params: '1.3B'\n },\n {\n name: 'UMT5_XXL_FP16',\n registryPath: 'Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/06e001fc51048fb03433a6fb25334de7836704a5/split_files/text_encoders/umt5_xxl_fp16.safetensors',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1426846,\n blobBlockLength: 173438,\n blobByteOffset: 93504512344,\n modelId: 'umt5_xxl_fp16.safetensors',\n addon: 'diffusion',\n expectedSize: 11366399385,\n sha256Checksum: '7b8850f1961e1cf8a77cca4c964a358d303f490833c6c087d0cff4b2f99db2af',\n engine: 'sdcpp-generation',\n quantization: 'fp16',\n params: ''\n },\n {\n name: 'WAN_2_1_COMFYUI_REPACKAGED_VAE',\n registryPath: 'Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/06e001fc51048fb03433a6fb25334de7836704a5/split_files/vae/wan_2.1_vae.safetensors',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1422973,\n blobBlockLength: 3873,\n blobByteOffset: 93250697026,\n modelId: 'wan_2.1_vae.safetensors',\n addon: 'diffusion',\n expectedSize: 253815318,\n sha256Checksum: '2fc39d31359a4b0a64f55876d8ff7fa8d780956ae2cb13463b0223e15148976b',\n engine: 'sdcpp-generation',\n quantization: '',\n params: ''\n },\n {\n name: 'SD_V2_1_1B_Q4_0',\n registryPath: 'gpustack/stable-diffusion-v2-1-GGUF/resolve/12ddc22724f6da35f0b6006e459fae66eaf56931/stable-diffusion-v2-1-Q4_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1220879,\n blobBlockLength: 33348,\n blobByteOffset: 80001604971,\n modelId: 'stable-diffusion-v2-1-Q4_0.gguf',\n addon: 'diffusion',\n expectedSize: 2185459424,\n sha256Checksum: '27740067fae2c988f64839ae806d989eb6d5aa6cfe5d47c8994c100677ef97e4',\n engine: 'sdcpp-generation',\n quantization: 'Q4_0',\n params: '1B'\n },\n {\n name: 'SD_V2_1_1B_Q8_0',\n registryPath: 'gpustack/stable-diffusion-v2-1-GGUF/resolve/12ddc22724f6da35f0b6006e459fae66eaf56931/stable-diffusion-v2-1-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1185437,\n blobBlockLength: 35442,\n blobByteOffset: 77678899947,\n modelId: 'stable-diffusion-v2-1-Q8_0.gguf',\n addon: 'diffusion',\n expectedSize: 2322705024,\n sha256Checksum: '7b73fa47b4d1401bdf3a0898827fac94bced6633bf64ef7fe55492b6115cc74b',\n engine: 'sdcpp-generation',\n quantization: 'Q8_0',\n params: '1B'\n },\n {\n name: 'SDXL_BASE_1_0_3B_Q4_0',\n registryPath: 'gpustack/stable-diffusion-xl-base-1.0-GGUF/resolve/5f58340891db3ef66a79758c2dcddad92b1de169/stable-diffusion-xl-base-1.0-Q4_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1254227,\n blobBlockLength: 60120,\n blobByteOffset: 82187064395,\n modelId: 'stable-diffusion-xl-base-1.0-Q4_0.gguf',\n addon: 'diffusion',\n expectedSize: 3940010720,\n sha256Checksum: '4ab9818c9b3428eca96834c51fe294885608480991463f55bd9be53c822567c3',\n engine: 'sdcpp-generation',\n quantization: 'Q4_0',\n params: '3B'\n },\n {\n name: 'SDXL_BASE_1_0_3B_Q8_0',\n registryPath: 'gpustack/stable-diffusion-xl-base-1.0-GGUF/resolve/5f58340891db3ef66a79758c2dcddad92b1de169/stable-diffusion-xl-base-1.0-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1314347,\n blobBlockLength: 76919,\n blobByteOffset: 86127075115,\n modelId: 'stable-diffusion-xl-base-1.0-Q8_0.gguf',\n addon: 'diffusion',\n expectedSize: 5040957760,\n sha256Checksum: '2ef973152d2fbe27e37e4fd5ec3569dec1f828ee279975e60acc12bc78c9f981',\n engine: 'sdcpp-generation',\n quantization: 'Q8_0',\n params: '3B'\n },\n {\n name: 'REALESRGAN_X4PLUS_ANIME_6B',\n registryPath: 'qvac_models_compiled/esrgan/2026-05-07/RealESRGAN_x4plus_anime_6B.pth',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 713679,\n blobBlockLength: 274,\n blobByteOffset: 46769206479,\n modelId: 'RealESRGAN_x4plus_anime_6B.pth',\n addon: 'diffusion',\n expectedSize: 17938799,\n sha256Checksum: 'f872d837d3c90ed2e05227bed711af5671a6fd1c9f7d7e91c911a61f155e99da',\n engine: 'sdcpp-generation',\n quantization: '',\n params: ''\n },\n {\n name: 'REALESRGAN_X4PLUS',\n registryPath: 'qvac_models_compiled/esrgan/2026-05-07/RealESRGAN_x4plus.pth',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 711633,\n blobBlockLength: 1023,\n blobByteOffset: 46635124501,\n modelId: 'RealESRGAN_x4plus.pth',\n addon: 'diffusion',\n expectedSize: 67040989,\n sha256Checksum: '4fa0d38905f75ac06eb49a7951b426670021be3018265fd191d2125df9d682f1',\n engine: 'sdcpp-generation',\n quantization: '',\n params: ''\n },\n {\n name: 'REALESRNET_X4PLUS',\n registryPath: 'qvac_models_compiled/esrgan/2026-05-07/RealESRNet_x4plus.pth',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 712656,\n blobBlockLength: 1023,\n blobByteOffset: 46702165490,\n modelId: 'RealESRNet_x4plus.pth',\n addon: 'diffusion',\n expectedSize: 67040989,\n sha256Checksum: 'a820b9bde89a874d7599d545567308ce6c128fc8754a53208eda016d40aa81df',\n engine: 'sdcpp-generation',\n quantization: '',\n params: ''\n },\n {\n name: 'FLUX_2_KLEIN_4B_Q4_0',\n registryPath: 'unsloth/FLUX.2-klein-4B-GGUF/resolve/8342a6a97b2d18acae5d62124735c39ba23060e2/flux-2-klein-4b-Q4_0.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 101752,\n blobBlockLength: 37543,\n blobByteOffset: 6666784333,\n modelId: 'flux-2-klein-4b-Q4_0.gguf',\n addon: 'diffusion',\n expectedSize: 2460394048,\n sha256Checksum: '6b00d254ded73de7e40be79e0682dc8a5e9bd61e5eebe97199ed33615a52ba62',\n engine: 'sdcpp-generation',\n quantization: 'Q4_0',\n params: '4B'\n },\n {\n name: 'FLUX_2_KLEIN_4B_Q4_K_M',\n registryPath: 'unsloth/FLUX.2-klein-4B-GGUF/resolve/8342a6a97b2d18acae5d62124735c39ba23060e2/flux-2-klein-4b-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 256940,\n blobBlockLength: 39739,\n blobByteOffset: 16837096717,\n modelId: 'flux-2-klein-4b-Q4_K_M.gguf',\n addon: 'diffusion',\n expectedSize: 2604311104,\n sha256Checksum: '0b25d143c8469b342bc5af3bce92b783bf6b0636d285f7b2f75e38af63af9a15',\n engine: 'sdcpp-generation',\n quantization: 'Q4_K_M',\n params: '4B'\n },\n {\n name: 'FLUX_2_KLEIN_4B_Q6_K',\n registryPath: 'unsloth/FLUX.2-klein-4B-GGUF/resolve/8342a6a97b2d18acae5d62124735c39ba23060e2/flux-2-klein-4b-Q6_K.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 204918,\n blobBlockLength: 52022,\n blobByteOffset: 13427823309,\n modelId: 'flux-2-klein-4b-Q6_K.gguf',\n addon: 'diffusion',\n expectedSize: 3409273408,\n sha256Checksum: 'fb3b5430d9229f982616c7db084deff1db5035d0cb6558f2d4f704cfe5e609e2',\n engine: 'sdcpp-generation',\n quantization: 'Q6_K',\n params: '4B'\n },\n {\n name: 'FLUX_2_KLEIN_4B_Q8_0',\n registryPath: 'unsloth/FLUX.2-klein-4B-GGUF/resolve/8342a6a97b2d18acae5d62124735c39ba23060e2/flux-2-klein-4b-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 139295,\n blobBlockLength: 65623,\n blobByteOffset: 9127178381,\n modelId: 'flux-2-klein-4b-Q8_0.gguf',\n addon: 'diffusion',\n expectedSize: 4300644928,\n sha256Checksum: '24a812e8f9b640e21c784164ea48571d8017ca22873696f4badeeabb006d509c',\n engine: 'sdcpp-generation',\n quantization: 'Q8_0',\n params: '4B'\n },\n {\n name: 'GTE_LARGE_FP16',\n registryPath: 'ChristianAzinn/gte-large-gguf/blob/f9fa5479908e72c2a8b9d6ba112911cd1e51be53/gte-large_fp16.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 180512,\n blobBlockLength: 10218,\n blobByteOffset: 11829586648,\n modelId: 'gte-large_fp16.gguf',\n addon: 'embeddings',\n expectedSize: 669603712,\n sha256Checksum: '939f1fb3fcc70f2a250a7e7ad7c2fbdc1397d46f9a8055d053e451829c5293fb',\n engine: 'llamacpp-embedding',\n quantization: 'fp16',\n params: ''\n },\n {\n name: 'GTE_LARGE_335M_FP16_SHARD',\n registryPath: 'qvac_models_compiled/ggml/gte-large_fp6/2025-08-21/gte-large_fp16-00001-of-00005.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 193622,\n blobBlockLength: 2393,\n blobByteOffset: 12688680895,\n modelId: 'gte-large_fp16-00001-of-00005.gguf',\n addon: 'embeddings',\n expectedSize: 669604320,\n sha256Checksum: '81c871b0433ed75adb4b1888f4396248c0a587f509f45050b2b65de9b8e86a3b',\n engine: 'llamacpp-embedding',\n quantization: 'fp16',\n params: '335M',\n shardMetadata: [\n {\n filename: 'gte-large_fp16-00001-of-00005.gguf',\n expectedSize: 156815424,\n sha256Checksum: '81c871b0433ed75adb4b1888f4396248c0a587f509f45050b2b65de9b8e86a3b',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 193622,\n blobBlockLength: 2393,\n blobByteOffset: 12688680895\n },\n {\n filename: 'gte-large_fp16-00002-of-00005.gguf',\n expectedSize: 159721216,\n sha256Checksum: 'da7f5a2e0ba4f6769599cb7d2735f19a8022eb065973d7584081cf67617a064d',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 196015,\n blobBlockLength: 2438,\n blobByteOffset: 12845496319\n },\n {\n filename: 'gte-large_fp16-00003-of-00005.gguf',\n expectedSize: 159737792,\n sha256Checksum: 'd95b830af36d2dfa1d4c7c156ac59be767a5f9b5d37288533d3add7a90ec3822',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 198453,\n blobBlockLength: 2438,\n blobByteOffset: 13005217535\n },\n {\n filename: 'gte-large_fp16-00004-of-00005.gguf',\n expectedSize: 159721120,\n sha256Checksum: '6def2c28f1b6314403a39c54250d870333d273e31446717f8670a4e1d5861d20',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 200891,\n blobBlockLength: 2438,\n blobByteOffset: 13164955327\n },\n {\n filename: 'gte-large_fp16-00005-of-00005.gguf',\n expectedSize: 33608768,\n sha256Checksum: 'f5ff10900f675900a1838536746d23ccc6adcfed074f89f7a4ac4d3167401d08',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 203329,\n blobBlockLength: 513,\n blobByteOffset: 13324676447\n }\n ]\n },\n {\n name: 'GTE_LARGE_335M_FP16_TENSORS',\n registryPath: 'qvac_models_compiled/ggml/gte-large_fp6/2025-08-21/gte-large_fp16.tensors.txt',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 203842,\n blobBlockLength: 1,\n blobByteOffset: 13358285215,\n modelId: 'gte-large_fp16.tensors.txt',\n addon: 'embeddings',\n expectedSize: 8966,\n sha256Checksum: 'd2142d8ae97857656b227fef6733ea46e82da3b7546cd944dec88ba280aadfeb',\n engine: 'llamacpp-embedding',\n quantization: 'fp16',\n params: '335M'\n },\n {\n name: 'EMBEDDINGGEMMA_300M_BF16',\n registryPath: 'unsloth/embeddinggemma-300m-GGUF/resolve/6661a6504c30d8304af13455cb4a5d4f5bc6011f/embeddinggemma-300M-BF16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 338934,\n blobBlockLength: 9345,\n blobByteOffset: 22210537506,\n modelId: 'embeddinggemma-300M-BF16.gguf',\n addon: 'embeddings',\n expectedSize: 612429792,\n sha256Checksum: '95a1f284251f78a1409a9c9e52dd4026c2180b13a90a5ede2a878bb8141fba08',\n engine: 'llamacpp-embedding',\n quantization: 'BF16',\n params: '300M'\n },\n {\n name: 'EMBEDDINGGEMMA_300M_F32',\n registryPath: 'unsloth/embeddinggemma-300m-GGUF/resolve/6661a6504c30d8304af13455cb4a5d4f5bc6011f/embeddinggemma-300M-F32.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 348279,\n blobBlockLength: 18585,\n blobByteOffset: 22822967298,\n modelId: 'embeddinggemma-300M-F32.gguf',\n addon: 'embeddings',\n expectedSize: 1217982432,\n sha256Checksum: 'a3125072128fc76d1c1d8d19f7b095c7e3bfbf00594dcf8a8bd3bcb334935d57',\n engine: 'llamacpp-embedding',\n quantization: 'F32',\n params: '300M'\n },\n {\n name: 'EMBEDDINGGEMMA_300M_Q4_0',\n registryPath: 'unsloth/embeddinggemma-300m-GGUF/resolve/6661a6504c30d8304af13455cb4a5d4f5bc6011f/embeddinggemma-300m-Q4_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 329680,\n blobBlockLength: 4240,\n blobByteOffset: 21604108258,\n modelId: 'embeddinggemma-300m-Q4_0.gguf',\n addon: 'embeddings',\n expectedSize: 277852192,\n sha256Checksum: 'edc6015cb15694c27be7d1d33f1bc015db9a358ff51ed524628c027504907ba9',\n engine: 'llamacpp-embedding',\n quantization: 'q4_0',\n params: '300M'\n },\n {\n name: 'EMBEDDINGGEMMA_300M_Q8_0',\n registryPath: 'unsloth/embeddinggemma-300m-GGUF/resolve/6661a6504c30d8304af13455cb4a5d4f5bc6011f/embeddinggemma-300M-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 333920,\n blobBlockLength: 5014,\n blobByteOffset: 21881960450,\n modelId: 'embeddinggemma-300M-Q8_0.gguf',\n addon: 'embeddings',\n expectedSize: 328577056,\n sha256Checksum: 'a0f7b4e13c397a6e1b32c2de75b1f65a14c92ec524d5f674d94a4290a1c4969b',\n engine: 'llamacpp-embedding',\n quantization: 'q8_0',\n params: '300M'\n },\n {\n name: 'GEMMA4_31B_MULTIMODAL_Q4_K_M',\n registryPath: 'bartowski/google_gemma-4-31B-it-GGUF/resolve/dbdaa0588c16bed9aa3897f81ad3f48cbdd4244b/google_gemma-4-31B-it-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2286223,\n blobBlockLength: 299050,\n blobByteOffset: 149818671882,\n modelId: 'google_gemma-4-31B-it-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 19598488192,\n sha256Checksum: '35dacd53f9dde83fe20a4596efce2b2f72d2ebb6e4141186533419e9e98bc269',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '31B'\n },\n {\n name: 'GEMMA4_31B_MULTIMODAL_Q6_K',\n registryPath: 'bartowski/google_gemma-4-31B-it-GGUF/resolve/dbdaa0588c16bed9aa3897f81ad3f48cbdd4244b/google_gemma-4-31B-it-Q6_K.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2655585,\n blobBlockLength: 407818,\n blobByteOffset: 174024891338,\n modelId: 'google_gemma-4-31B-it-Q6_K.gguf',\n addon: 'llm',\n expectedSize: 26726720128,\n sha256Checksum: '7961268b989e16ec846fc7077e27f78212cc33553688d59066df4491f057f928',\n engine: 'llamacpp-completion',\n quantization: 'q6_k',\n params: '31B'\n },\n {\n name: 'MMPROJ_GEMMA4_31B_MULTIMODAL_BF16',\n registryPath: 'bartowski/google_gemma-4-31B-it-GGUF/resolve/dbdaa0588c16bed9aa3897f81ad3f48cbdd4244b/mmproj-google_gemma-4-31B-it-bf16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3081698,\n blobBlockLength: 18322,\n blobByteOffset: 201950568202,\n modelId: 'mmproj-google_gemma-4-31B-it-bf16.gguf',\n addon: 'llm',\n expectedSize: 1200726208,\n sha256Checksum: '21487ff26d08f7ddd1d654d3bbfc1ae1020aab3119f5bf654742ce4697732e4e',\n engine: 'llamacpp-completion',\n quantization: 'bf16',\n params: '31B'\n },\n {\n name: 'MMPROJ_GEMMA4_31B_MULTIMODAL_F16',\n registryPath: 'bartowski/google_gemma-4-31B-it-GGUF/resolve/dbdaa0588c16bed9aa3897f81ad3f48cbdd4244b/mmproj-google_gemma-4-31B-it-f16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3063403,\n blobBlockLength: 18295,\n blobByteOffset: 200751611466,\n modelId: 'mmproj-google_gemma-4-31B-it-f16.gguf',\n addon: 'llm',\n expectedSize: 1198956736,\n sha256Checksum: '3e3f3f593b34bb4f518ada3e7999e4cbcd2a5864fa86ebc23fad3cbc4fbeba40',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '31B'\n },\n {\n name: 'GEMMA4_2B_MULTIMODAL_Q4_K_M',\n registryPath: 'bartowski/google_gemma-4-E2B-it-GGUF/resolve/b5e99bd964eaacc27ba484bb2eb3e9f6160b9143/google_gemma-4-E2B-it-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 740907,\n blobBlockLength: 52837,\n blobByteOffset: 48553481566,\n modelId: 'google_gemma-4-E2B-it-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 3462678272,\n sha256Checksum: 'b5310340b3a23d31655d7119d100d5df1b2d8ee17b3ca8b0a23ad7e9eb5fa705',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '2B'\n },\n {\n name: 'GEMMA4_2B_MULTIMODAL_Q6_K',\n registryPath: 'bartowski/google_gemma-4-E2B-it-GGUF/resolve/b5e99bd964eaacc27ba484bb2eb3e9f6160b9143/google_gemma-4-E2B-it-Q6_K.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 793744,\n blobBlockLength: 59487,\n blobByteOffset: 52016159838,\n modelId: 'google_gemma-4-E2B-it-Q6_K.gguf',\n addon: 'llm',\n expectedSize: 3898484480,\n sha256Checksum: 'd453e776dac188abb702146b70e105ef5306212785f1b1f31c40831044b31ffc',\n engine: 'llamacpp-completion',\n quantization: 'q6_k',\n params: '2B'\n },\n {\n name: 'GEMMA4_2B_MULTIMODAL_Q8_0',\n registryPath: 'bartowski/google_gemma-4-E2B-it-GGUF/resolve/b5e99bd964eaacc27ba484bb2eb3e9f6160b9143/google_gemma-4-E2B-it-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4341686,\n blobBlockLength: 75798,\n blobByteOffset: 284524569674,\n modelId: 'google_gemma-4-E2B-it-Q8_0.gguf',\n addon: 'llm',\n expectedSize: 4967495424,\n sha256Checksum: 'f1a9243ad2da99b3c4706dd0d549b9dcb0a3f49c7e1a46e01f9f582f876265b0',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '2B'\n },\n {\n name: 'MMPROJ_GEMMA4_2B_MULTIMODAL_BF16',\n registryPath: 'bartowski/google_gemma-4-E2B-it-GGUF/resolve/b5e99bd964eaacc27ba484bb2eb3e9f6160b9143/mmproj-google_gemma-4-E2B-it-bf16.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 853231,\n blobBlockLength: 15058,\n blobByteOffset: 55914644318,\n modelId: 'mmproj-google_gemma-4-E2B-it-bf16.gguf',\n addon: 'llm',\n expectedSize: 986833408,\n sha256Checksum: 'd460bb51ce5115232a723a7366694c8ee70d8aa8f60159d182a1da0777d10db3',\n engine: 'llamacpp-completion',\n quantization: 'bf16',\n params: '2B'\n },\n {\n name: 'MMPROJ_GEMMA4_2B_MULTIMODAL_F16',\n registryPath: 'bartowski/google_gemma-4-E2B-it-GGUF/resolve/b5e99bd964eaacc27ba484bb2eb3e9f6160b9143/mmproj-google_gemma-4-E2B-it-f16.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 868289,\n blobBlockLength: 15040,\n blobByteOffset: 56901477726,\n modelId: 'mmproj-google_gemma-4-E2B-it-f16.gguf',\n addon: 'llm',\n expectedSize: 985653760,\n sha256Checksum: '3397f2e15859d268dc91782e92e70c485c7780448d57d622d145374390168f71',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '2B'\n },\n {\n name: 'GEMMA4_4B_MULTIMODAL_Q4_K_M',\n registryPath: 'bartowski/google_gemma-4-E4B-it-GGUF/resolve/c04cb322fd63e347db759a08b6249b867488ccf8/google_gemma-4-E4B-it-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 883329,\n blobBlockLength: 82477,\n blobByteOffset: 57887131486,\n modelId: 'google_gemma-4-E4B-it-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 5405168384,\n sha256Checksum: '51865750adafd22de56994a343d5a887cc1a589b9bae41d62b748c8bd0ca9c76',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '4B'\n },\n {\n name: 'GEMMA4_4B_MULTIMODAL_Q6_K',\n registryPath: 'bartowski/google_gemma-4-E4B-it-GGUF/resolve/c04cb322fd63e347db759a08b6249b867488ccf8/google_gemma-4-E4B-it-Q6_K.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 965806,\n blobBlockLength: 96588,\n blobByteOffset: 63292299870,\n modelId: 'google_gemma-4-E4B-it-Q6_K.gguf',\n addon: 'llm',\n expectedSize: 6329953024,\n sha256Checksum: 'd964e22c8439ca6b52e288d2eb055f59de90703235a680fb09effe550c128870',\n engine: 'llamacpp-completion',\n quantization: 'q6_k',\n params: '4B'\n },\n {\n name: 'MMPROJ_GEMMA4_4B_MULTIMODAL_BF16',\n registryPath: 'bartowski/google_gemma-4-E4B-it-GGUF/resolve/c04cb322fd63e347db759a08b6249b867488ccf8/mmproj-google_gemma-4-E4B-it-bf16.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1062394,\n blobBlockLength: 15130,\n blobByteOffset: 69622252894,\n modelId: 'mmproj-google_gemma-4-E4B-it-bf16.gguf',\n addon: 'llm',\n expectedSize: 991552000,\n sha256Checksum: 'ffa64aebf7144bbadd5a1e143b77794d88e76a81cc0168d91de0770eb49e88e0',\n engine: 'llamacpp-completion',\n quantization: 'bf16',\n params: '4B'\n },\n {\n name: 'MMPROJ_GEMMA4_4B_MULTIMODAL_F16',\n registryPath: 'bartowski/google_gemma-4-E4B-it-GGUF/resolve/c04cb322fd63e347db759a08b6249b867488ccf8/mmproj-google_gemma-4-E4B-it-f16.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1077524,\n blobBlockLength: 15112,\n blobByteOffset: 70613804894,\n modelId: 'mmproj-google_gemma-4-E4B-it-f16.gguf',\n addon: 'llm',\n expectedSize: 990372352,\n sha256Checksum: 'fd29ffa385f51ed8df3e8f48a865c7997ff6d01ed50c11bed2ae90f0d75f104e',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '4B'\n },\n {\n name: 'SALAMANDRATA_2B_INST_Q4',\n registryPath: 'BSC-LT/salamandraTA-2B-instruct-GGUF/blob/60046856fcac87c47fb0c706e994e70f01eda62b/salamandrata_2b_inst_q4.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 36638,\n blobBlockLength: 23158,\n blobByteOffset: 2401075552,\n modelId: 'salamandrata_2b_inst_q4.gguf',\n addon: 'llm',\n expectedSize: 1517617504,\n sha256Checksum: '15238732917ba7151857dbce6f8c547a0d1bbd77663508522ae2d6a788cee3a5',\n engine: 'llamacpp-completion',\n quantization: 'q4',\n params: '2B'\n },\n {\n name: 'SALAMANDRATA_2B_INST_Q8',\n registryPath: 'BSC-LT/salamandraTA-2B-instruct-GGUF/blob/60046856fcac87c47fb0c706e994e70f01eda62b/salamandrata_2b_inst_q8.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 0,\n blobBlockLength: 36638,\n blobByteOffset: 0,\n modelId: 'salamandrata_2b_inst_q8.gguf',\n addon: 'llm',\n expectedSize: 2401075552,\n sha256Checksum: '9cfebb63cd7e6b6d1755ea8ef001fcdadfa17831da1db96eafe3fc554913d5e1',\n engine: 'llamacpp-completion',\n quantization: 'q8',\n params: '2B'\n },\n {\n name: 'MMPROJ_GEMMA4_2B_MULTIMODAL_Q8_0',\n registryPath: 'ggml-org/gemma-4-E2B-it-GGUF/resolve/a1dac71d3ab220618f5a7573a52acdc4baf3ae3b/mmproj-gemma-4-E2B-it-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2082749,\n blobBlockLength: 8505,\n blobByteOffset: 136489062389,\n modelId: 'mmproj-gemma-4-E2B-it-Q8_0.gguf',\n addon: 'llm',\n expectedSize: 557367776,\n sha256Checksum: '8a82e0fd831bb7cb5c8898b86393eb14042986b950a60e1034bf21d061aac8a8',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '2B'\n },\n {\n name: 'MMPROJ_SMOLVLM2_500M_MULTIMODAL_F16',\n registryPath: 'ggml-org/SmolVLM2-500M-Video-Instruct-GGUF/resolve/ccd7aae53bcb1997355c2f094959e72b3642ce17/mmproj-SmolVLM2-500M-Video-Instruct-f16.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 377382,\n blobBlockLength: 3044,\n blobByteOffset: 24729912473,\n modelId: 'mmproj-SmolVLM2-500M-Video-Instruct-f16.gguf',\n addon: 'llm',\n expectedSize: 199470624,\n sha256Checksum: 'b5dc8ebe7cbeab66a5369693960a52515d7824f13d4063ceca78431f2a6b59b0',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '500M'\n },\n {\n name: 'MMPROJ_SMOLVLM2_500M_MULTIMODAL_Q8_0',\n registryPath: 'ggml-org/SmolVLM2-500M-Video-Instruct-GGUF/resolve/ccd7aae53bcb1997355c2f094959e72b3642ce17/mmproj-SmolVLM2-500M-Video-Instruct-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 89807,\n blobBlockLength: 1660,\n blobByteOffset: 5885417605,\n modelId: 'mmproj-SmolVLM2-500M-Video-Instruct-Q8_0.gguf',\n addon: 'llm',\n expectedSize: 108785184,\n sha256Checksum: '921dc7e259f308e5b027111fa185efcbf33db13f6e35749ddf7f5cdb60ef520b',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '500M'\n },\n {\n name: 'SMOLVLM2_500M_MULTIMODAL_F16',\n registryPath: 'ggml-org/SmolVLM2-500M-Video-Instruct-GGUF/resolve/ccd7aae53bcb1997355c2f094959e72b3642ce17/SmolVLM2-500M-Video-Instruct-f16.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 364863,\n blobBlockLength: 12519,\n blobByteOffset: 23909487769,\n modelId: 'SmolVLM2-500M-Video-Instruct-f16.gguf',\n addon: 'llm',\n expectedSize: 820424704,\n sha256Checksum: '80f7e3f04bc2d3324ac1a9f52f5776fe13a69912adf74f8e7edacf773d140d77',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '500M'\n },\n {\n name: 'SMOLVLM2_500M_MULTIMODAL_Q8_0',\n registryPath: 'ggml-org/SmolVLM2-500M-Video-Instruct-GGUF/resolve/ccd7aae53bcb1997355c2f094959e72b3642ce17/SmolVLM2-500M-Video-Instruct-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 262444,\n blobBlockLength: 6666,\n blobByteOffset: 17198936248,\n modelId: 'SmolVLM2-500M-Video-Instruct-Q8_0.gguf',\n addon: 'llm',\n expectedSize: 436808704,\n sha256Checksum: '6f67b8036b2469fcd71728702720c6b51aebd759b78137a8120733b4d66438bc',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '500M'\n },\n {\n name: 'SMOLLM2_360M_INST_Q8',\n registryPath: 'HuggingFaceTB/SmolLM2-360M-Instruct-GGUF/resolve/593b5a2e04c8f3e4ee880263f93e0bd2901ad47f/smollm2-360m-instruct-q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1607599,\n blobBlockLength: 5897,\n blobByteOffset: 105350167985,\n modelId: 'smollm2-360m-instruct-q8_0.gguf',\n addon: 'llm',\n expectedSize: 386404992,\n sha256Checksum: '48ab3034d0dd401fbc721eb1df3217902fee7dab9078992d66431f09b7750201',\n engine: 'llamacpp-completion',\n quantization: 'q8',\n params: '360M'\n },\n {\n name: 'LASER_DOLPHIN_2X7B_INST_Q2_K',\n registryPath: 'jmb95/laser-dolphin-mixtral-2x7b-dpo-GGUF/resolve/448afcb8afc647d0c565071222fb8b0c7f9860b4/dolphin-mixtral-2x7b-dop-Q2_K.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 366864,\n blobBlockLength: 72645,\n blobByteOffset: 24040949730,\n modelId: 'dolphin-mixtral-2x7b-dop-Q2_K.gguf',\n addon: 'llm',\n expectedSize: 4760823264,\n sha256Checksum: '35a4fa1142dbacb42656f7a9e7ae59e3ae8b3b8f6ee370e64e5e1023ddd19510',\n engine: 'llamacpp-completion',\n quantization: 'Q2_K',\n params: '2x7B'\n },\n {\n name: 'LLAMA_TOOL_CALLING_1B_INST_Q4_K',\n registryPath: 'mav23/Llama_3.2_1B_Intruct_Tool_Calling_V2-GGUF/blob/main/llama_3.2_1b_intruct_tool_calling_v2.Q4_K.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 529475,\n blobBlockLength: 12325,\n blobByteOffset: 34696195331,\n modelId: 'llama_3.2_1b_intruct_tool_calling_v2.Q4_K.gguf',\n addon: 'llm',\n expectedSize: 807691648,\n sha256Checksum: '406bd5983096cc49e1019e9c295e1b011d7b17ccae9e066266eb1734a4743bf7',\n engine: 'llamacpp-completion',\n quantization: 'q4_k',\n params: '1B'\n },\n {\n name: 'AFRICAN_4B_TRANSLATION_Q4_K_M',\n registryPath: 'mradermacher/AfriqueGemma-4B-GGUF/blob/e1324d25db75de68b604093e527272f6c5aba69f/AfriqueGemma-4B.Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1023333,\n blobBlockLength: 43755,\n blobByteOffset: 67055868647,\n modelId: 'AfriqueGemma-4B.Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 2867473376,\n sha256Checksum: 'e93654673bf653f1f7b9badca759cea9cf89a4af300d4dbfbb4d20c255b6ca82',\n engine: 'llamacpp-completion',\n quantization: 'Q4_K_M',\n params: '4B'\n },\n {\n name: 'MMPROJ_QWEN3_5_0_8B_MULTIMODAL_Q8_0',\n registryPath: 'mradermacher/Qwen3.5-0.8B-GGUF/resolve/9d48fdbc0d8f133716da87ec1d904e5d2c7175a6/Qwen3.5-0.8B.mmproj-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2091254,\n blobBlockLength: 1769,\n blobByteOffset: 137046430165,\n modelId: 'Qwen3.5-0.8B.mmproj-Q8_0.gguf',\n addon: 'llm',\n expectedSize: 115923680,\n sha256Checksum: '5a6b15da0f483b9e320a5b86b787ad1831953dfaa706e2c5d91de830ea70d784',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '0.8B'\n },\n {\n name: 'MMPROJ_QWEN3_5_2B_MULTIMODAL_Q8_0',\n registryPath: 'mradermacher/Qwen3.5-2B-GGUF/resolve/33cc6944e40cb93e38332cd46b2a6e3c6acf081e/Qwen3.5-2B.mmproj-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2096998,\n blobBlockLength: 5565,\n blobByteOffset: 137422520270,\n modelId: 'Qwen3.5-2B.mmproj-Q8_0.gguf',\n addon: 'llm',\n expectedSize: 364664384,\n sha256Checksum: '526dbf85f350baf3a5107b1f14e629e94571c7cbab4277476fbdaaa8c4a31a64',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '2B'\n },\n {\n name: 'MMPROJ_QWEN3_5_4B_MULTIMODAL_Q8_0',\n registryPath: 'mradermacher/Qwen3.5-4B-GGUF/resolve/1a5df2c0cba51dae8ac5888420360d8703707171/Qwen3.5-4B.mmproj-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2102563,\n blobBlockLength: 5599,\n blobByteOffset: 137787184654,\n modelId: 'Qwen3.5-4B.mmproj-Q8_0.gguf',\n addon: 'llm',\n expectedSize: 366894656,\n sha256Checksum: '40a4f07d7bbdbb43011d6cf35ef751e4b1829ff47ee8aa4964c6296f571725ad',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '4B'\n },\n {\n name: 'OCR_0_6B_MULTIMODAL_Q4_K_M',\n registryPath: 'noctrex/LightOnOCR-2-1B-ocr-soup-GGUF/resolve/main/LightOnOCR-2-1B-ocr-soup-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1067088,\n blobBlockLength: 6054,\n blobByteOffset: 69923342023,\n modelId: 'LightOnOCR-2-1B-ocr-soup-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 396701664,\n sha256Checksum: '6bdf9fdc6ef74237f1edb42bb8710ade5ea622619364efa488391eed0657bc3b',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '0.6B'\n },\n {\n name: 'MMPROJ_OCR_0_6B_MULTIMODAL_F16',\n registryPath: 'noctrex/LightOnOCR-2-1B-ocr-soup-GGUF/resolve/main/mmproj-F16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1073142,\n blobBlockLength: 12502,\n blobByteOffset: 70320043687,\n modelId: 'mmproj-F16.gguf',\n addon: 'llm',\n expectedSize: 819313056,\n sha256Checksum: 'fefd91bc5551877762cd0d0cbe583080f8e636d5aa65a9a5f42b369654df778b',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '0.6B'\n },\n {\n name: 'BITNET_B1_58_3B_INST_TQ2_0',\n registryPath: 'qvac_models_compiled/ggml/bitnet/2026-03-05/bitnet_b1_58-3B-TQ2_0.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1391266,\n blobBlockLength: 29352,\n blobByteOffset: 91168032875,\n modelId: 'bitnet_b1_58-3B-TQ2_0.gguf',\n addon: 'llm',\n expectedSize: 1923554016,\n sha256Checksum: 'ac3083c2e5d835d2728fa838fbf2df462e21e4f032d5b5b50a5d52f97c16101f',\n engine: 'llamacpp-completion',\n quantization: 'TQ2_0',\n params: '3B'\n },\n {\n name: 'BITNET_0_7B_INST_TQ2_0',\n registryPath: 'qvac_models_compiled/ggml/bitnet/2026-03-05/bitnet_b1_58-large-TQ2_0.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1420618,\n blobBlockLength: 3313,\n blobByteOffset: 93091586891,\n modelId: 'bitnet_b1_58-large-TQ2_0.gguf',\n addon: 'llm',\n expectedSize: 217082208,\n sha256Checksum: '281aafb18a9f4a3124c10a1d8683e2296f0cfe8a2944da0a5667d17488a951bb',\n engine: 'llamacpp-completion',\n quantization: 'TQ2_0',\n params: '0.7B'\n },\n {\n name: 'BITNET_1B_INST_TQ2_0',\n registryPath: 'qvac_models_compiled/ggml/bitnet/2026-03-05/bitnet_b1_58-xl-TQ2_0.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1423931,\n blobBlockLength: 12735,\n blobByteOffset: 93308669099,\n modelId: 'bitnet_b1_58-xl-TQ2_0.gguf',\n addon: 'llm',\n expectedSize: 834553152,\n sha256Checksum: '3c32e12dc1eadb8eb6327d0d4dc3ab0a579835b0a12220f1e78000851eb28a76',\n engine: 'llamacpp-completion',\n quantization: 'TQ2_0',\n params: '1B'\n },\n {\n name: 'DOLPHIN_MIXTRAL_2X7B_MOE_Q2_K_SHARD',\n registryPath: 'qvac_models_compiled/ggml/dolphin-mixtral-2x7b-dop_q2/2025-09-17/dolphin-mixtral-2x7b-dop-Q2_K-00001-of-00005.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 280910,\n blobBlockLength: 17107,\n blobByteOffset: 18407947370,\n modelId: 'dolphin-mixtral-2x7b-dop-Q2_K-00001-of-00005.gguf',\n addon: 'llm',\n expectedSize: 4760823808,\n sha256Checksum: 'd7b900fae41cd466dd16a4b1fbf8083b8f00578deb59a2d0619a52672d872493',\n engine: 'llamacpp-completion',\n quantization: 'Q2_K',\n params: '2x7B',\n shardMetadata: [\n {\n filename: 'dolphin-mixtral-2x7b-dop-Q2_K-00001-of-00005.gguf',\n expectedSize: 1121068864,\n sha256Checksum: 'd7b900fae41cd466dd16a4b1fbf8083b8f00578deb59a2d0619a52672d872493',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 280910,\n blobBlockLength: 17107,\n blobByteOffset: 18407947370\n },\n {\n filename: 'dolphin-mixtral-2x7b-dop-Q2_K-00002-of-00005.gguf',\n expectedSize: 1113805728,\n sha256Checksum: '086236731567ca7c27047bcbcffc4acaddff3825101337e34269413ea2b9bd18',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 298017,\n blobBlockLength: 16996,\n blobByteOffset: 19529016234\n },\n {\n filename: 'dolphin-mixtral-2x7b-dop-Q2_K-00003-of-00005.gguf',\n expectedSize: 1101927488,\n sha256Checksum: '1208536e6b934638b51764485c5a76c17bd27893d8187d755dcc526a3a2f364c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 315013,\n blobBlockLength: 16815,\n blobByteOffset: 20642821962\n },\n {\n filename: 'dolphin-mixtral-2x7b-dop-Q2_K-00004-of-00005.gguf',\n expectedSize: 1135924064,\n sha256Checksum: '6987ae5a392e9682e70d5ec6c7af6139895a886ad7e9d781308d70a8cf2f0772',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 331828,\n blobBlockLength: 17333,\n blobByteOffset: 21744749450\n },\n {\n filename: 'dolphin-mixtral-2x7b-dop-Q2_K-00005-of-00005.gguf',\n expectedSize: 288097664,\n sha256Checksum: '47e84383b16ad16c159cb4edc2cbc52e8b1be369053805e722a2318bc5645587',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 349161,\n blobBlockLength: 4397,\n blobByteOffset: 22880673514\n }\n ]\n },\n {\n name: 'DOLPHIN_MIXTRAL_2X7B_MOE_Q2_K_TENSORS',\n registryPath: 'qvac_models_compiled/ggml/dolphin-mixtral-2x7b-dop_q2/2025-09-17/dolphin-mixtral-2x7b-dop-Q2_K.tensors.txt',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 353558,\n blobBlockLength: 1,\n blobByteOffset: 23168771178,\n modelId: 'dolphin-mixtral-2x7b-dop-Q2_K.tensors.txt',\n addon: 'llm',\n expectedSize: 7791,\n sha256Checksum: 'ed622129ba8da77af4fd21976dc442365724cde643fd8cbeadc92c7f047ab245',\n engine: 'llamacpp-completion',\n quantization: 'Q2_K',\n params: '2x7B'\n },\n {\n name: 'GPT_OSS_120B_INST_Q4_K_M_SHARD',\n registryPath: 'qvac_models_compiled/ggml/gpt-oss120b/2026-03-17/gpt-oss-120b-Q4_K_M-00001-of-00002.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1436666,\n blobBlockLength: 757308,\n blobByteOffset: 94143222251,\n modelId: 'gpt-oss-120b-Q4_K_M-00001-of-00002.gguf',\n addon: 'llm',\n expectedSize: 62768723552,\n sha256Checksum: 'b1d7474caa92717b8a7f75e3c1d1006eb40f3bd3591522e5a2b095f36b12757d',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '120B',\n shardMetadata: [\n {\n filename: 'gpt-oss-120b-Q4_K_M-00001-of-00002.gguf',\n expectedSize: 49630904192,\n sha256Checksum: 'b1d7474caa92717b8a7f75e3c1d1006eb40f3bd3591522e5a2b095f36b12757d',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 1436666,\n blobBlockLength: 757308,\n blobByteOffset: 94143222251\n },\n {\n filename: 'gpt-oss-120b-Q4_K_M-00002-of-00002.gguf',\n expectedSize: 13137819360,\n sha256Checksum: 'b7cc4f7dd8dfd252900d79ab462abc0ad4bf06e4bcf0e59e491b6625bfee36e6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 585945,\n blobBlockLength: 200468,\n blobByteOffset: 38397442374\n }\n ]\n },\n {\n name: 'GPT_OSS_120B_INST_Q4_K_M_TENSORS',\n registryPath: 'qvac_models_compiled/ggml/gpt-oss120b/2026-03-17/gpt-oss-120b-Q4_K_M.tensors.txt',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786413,\n blobBlockLength: 1,\n blobByteOffset: 51535261734,\n modelId: 'gpt-oss-120b-Q4_K_M.tensors.txt',\n addon: 'llm',\n expectedSize: 16529,\n sha256Checksum: '0b746c8e3a4a7e9508e1f86ce8dfa8d1d6c2aa7110348685e3f533b09eb5fae0',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '120B'\n },\n {\n name: 'LLAMA_3_2_1B_INST_Q4_0_SHARD',\n registryPath: 'qvac_models_compiled/ggml/Llama-3.2-1B/2025-12-04/Llama-3.2-1B-Instruct-Q4_0-00001-of-00008.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 203843,\n blobBlockLength: 120,\n blobByteOffset: 13358294181,\n modelId: 'Llama-3.2-1B-Instruct-Q4_0-00001-of-00008.gguf',\n addon: 'llm',\n expectedSize: 773026848,\n sha256Checksum: 'fafc6166dc5e7a9791b053cda2e71924c037b16f09fa41d69383cedd37cd91d8',\n engine: 'llamacpp-completion',\n quantization: 'q4_0',\n params: '1B',\n shardMetadata: [\n {\n filename: 'Llama-3.2-1B-Instruct-Q4_0-00001-of-00008.gguf',\n expectedSize: 7823136,\n sha256Checksum: 'fafc6166dc5e7a9791b053cda2e71924c037b16f09fa41d69383cedd37cd91d8',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 203843,\n blobBlockLength: 120,\n blobByteOffset: 13358294181\n },\n {\n filename: 'Llama-3.2-1B-Instruct-Q4_0-00002-of-00008.gguf',\n expectedSize: 215470272,\n sha256Checksum: 'a74db7a0871a97b2f82bff0e8bcd675b47f1b71b2604ae532d53e830d8929128',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 203963,\n blobBlockLength: 3288,\n blobByteOffset: 13366117317\n },\n {\n filename: 'Llama-3.2-1B-Instruct-Q4_0-00003-of-00008.gguf',\n expectedSize: 99468800,\n sha256Checksum: 'ef6bf88818090ae955c9701ebd1c20e182abf52bbf2b57c06aeebaf98db9b764',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 207251,\n blobBlockLength: 1518,\n blobByteOffset: 13581587589\n },\n {\n filename: 'Llama-3.2-1B-Instruct-Q4_0-00004-of-00008.gguf',\n expectedSize: 92644896,\n sha256Checksum: '8370dbdbbf6ad993971a1270e34b6648b6a238b2e177e8c2361a5e1976bd803e',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 208769,\n blobBlockLength: 1414,\n blobByteOffset: 13681056389\n },\n {\n filename: 'Llama-3.2-1B-Instruct-Q4_0-00005-of-00008.gguf',\n expectedSize: 93243008,\n sha256Checksum: '924cae739e6fc9bcf613cfcd92ffd6b8e766cf3fc90a62a8cd49a02ccd30383b',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 210183,\n blobBlockLength: 1423,\n blobByteOffset: 13773701285\n },\n {\n filename: 'Llama-3.2-1B-Instruct-Q4_0-00006-of-00008.gguf',\n expectedSize: 93242976,\n sha256Checksum: '4eb85c7c807d593fd9e91dad6fb7b18c715ddfa667a3b47cee1176b3331921f0',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 211606,\n blobBlockLength: 1423,\n blobByteOffset: 13866944293\n },\n {\n filename: 'Llama-3.2-1B-Instruct-Q4_0-00007-of-00008.gguf',\n expectedSize: 99722752,\n sha256Checksum: 'ad86b62f5270613771fb5c3dd69e9f94103beb4b74f8d63687f7f0578b728788',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 213029,\n blobBlockLength: 1522,\n blobByteOffset: 13960187269\n },\n {\n filename: 'Llama-3.2-1B-Instruct-Q4_0-00008-of-00008.gguf',\n expectedSize: 71411008,\n sha256Checksum: '51ca922125a8a543daea7fb30a71e6d683e025148ce6a4c335accbdec0f7a2ad',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 214551,\n blobBlockLength: 1090,\n blobByteOffset: 14059910021\n }\n ]\n },\n {\n name: 'LLAMA_3_2_1B_INST_Q4_0_TENSORS',\n registryPath: 'qvac_models_compiled/ggml/Llama-3.2-1B/2025-12-04/Llama-3.2-1B-Instruct-Q4_0.tensors.txt',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 215641,\n blobBlockLength: 1,\n blobByteOffset: 14131321029,\n modelId: 'Llama-3.2-1B-Instruct-Q4_0.tensors.txt',\n addon: 'llm',\n expectedSize: 3213,\n sha256Checksum: '94d891c22bca7700d422a3974b6aaa8095a4b2f132a53c89e7312b8435412cbf',\n engine: 'llamacpp-completion',\n quantization: 'q4_0',\n params: '1B'\n },\n {\n name: 'MEDGEMMA_4B_IT_Q4_1_SHARD',\n registryPath: 'qvac_models_compiled/ggml/medgemma-4b-it-Q4/2025-08-21/medgemma-4b-it-Q4_1-00001-of-00005.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 91467,\n blobBlockLength: 9428,\n blobByteOffset: 5994202789,\n modelId: 'medgemma-4b-it-Q4_1-00001-of-00005.gguf',\n addon: 'llm',\n expectedSize: 2564053312,\n sha256Checksum: 'df8f007c52173c7ffd4a385205805f1f0b8312bec7548460b42c20b74b00c344',\n engine: 'llamacpp-completion',\n quantization: 'q4_1',\n params: '4B',\n shardMetadata: [\n {\n filename: 'medgemma-4b-it-Q4_1-00001-of-00005.gguf',\n expectedSize: 617838720,\n sha256Checksum: 'df8f007c52173c7ffd4a385205805f1f0b8312bec7548460b42c20b74b00c344',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 91467,\n blobBlockLength: 9428,\n blobByteOffset: 5994202789\n },\n {\n filename: 'medgemma-4b-it-Q4_1-00002-of-00005.gguf',\n expectedSize: 598455104,\n sha256Checksum: '6c24b60b160420f9c6d3b243d0283e57a7aced67142f17e32e0418aef8e29cef',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 100895,\n blobBlockLength: 9132,\n blobByteOffset: 6612041509\n },\n {\n filename: 'medgemma-4b-it-Q4_1-00003-of-00005.gguf',\n expectedSize: 606646016,\n sha256Checksum: '65d97e751eb0cbb6900cec6960c54d3ac402a12f49eaf6453b458da17489ceb8',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 110027,\n blobBlockLength: 9257,\n blobByteOffset: 7210496613\n },\n {\n filename: 'medgemma-4b-it-Q4_1-00004-of-00005.gguf',\n expectedSize: 606656320,\n sha256Checksum: 'ab081005a0db7bd37c78ecfa6d0b58f8d811a5f6e3e87531d51338c011209a9f',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 119284,\n blobBlockLength: 9257,\n blobByteOffset: 7817142629\n },\n {\n filename: 'medgemma-4b-it-Q4_1-00005-of-00005.gguf',\n expectedSize: 134457152,\n sha256Checksum: '7738264eb3d1846419c71cdf2f5a628a93b4801092da56806957a8dd207f7f4d',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 128541,\n blobBlockLength: 2052,\n blobByteOffset: 8423798949\n }\n ]\n },\n {\n name: 'MEDGEMMA_4B_IT_Q4_1_TENSORS',\n registryPath: 'qvac_models_compiled/ggml/medgemma-4b-it-Q4/2025-08-21/medgemma-4b-it-Q4_1.tensors.txt',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 130593,\n blobBlockLength: 1,\n blobByteOffset: 8558256101,\n modelId: 'medgemma-4b-it-Q4_1.tensors.txt',\n addon: 'llm',\n expectedSize: 10685,\n sha256Checksum: '188c42777d3b107623b5e8f1c3601fee86bb6ba8f9dfa0a576a2b11ca4dc9838',\n engine: 'llamacpp-completion',\n quantization: 'q4_1',\n params: '4B'\n },\n {\n name: 'MEDGEMMA_4B_IT_Q8_0_SHARD',\n registryPath: 'qvac_models_compiled/ggml/medgemma-4b-it-Q8/2025-08-21/medgemma-4b-it-Q8_0-00001-of-00005.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 130594,\n blobBlockLength: 14724,\n blobByteOffset: 8558266786,\n modelId: 'medgemma-4b-it-Q8_0-00001-of-00005.gguf',\n addon: 'llm',\n expectedSize: 4130403424,\n sha256Checksum: 'eee391a8709570399797a48490ff123a86e82e9ed46e54f301c89b0cd8a87c24',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '4B',\n shardMetadata: [\n {\n filename: 'medgemma-4b-it-Q8_0-00001-of-00005.gguf',\n expectedSize: 964936608,\n sha256Checksum: 'eee391a8709570399797a48490ff123a86e82e9ed46e54f301c89b0cd8a87c24',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 130594,\n blobBlockLength: 14724,\n blobByteOffset: 8558266786\n },\n {\n filename: 'medgemma-4b-it-Q8_0-00002-of-00005.gguf',\n expectedSize: 975285792,\n sha256Checksum: '39cc15b09ddd54518b95f7f663ee427cb381a9eaf87ce63c011391a78bfdaee3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 145318,\n blobBlockLength: 14882,\n blobByteOffset: 9523203394\n },\n {\n filename: 'medgemma-4b-it-Q8_0-00003-of-00005.gguf',\n expectedSize: 958540928,\n sha256Checksum: 'da3a9079e8bd787e9bca72f6e31af0e08bc84ff4bc855c0516ffe800ef06a16f',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 160200,\n blobBlockLength: 14627,\n blobByteOffset: 10498489186\n },\n {\n filename: 'medgemma-4b-it-Q8_0-00004-of-00005.gguf',\n expectedSize: 975275616,\n sha256Checksum: '3d107beef3ef34e3d284881932ce1709e04fd8f8a790d32074db0832613bbbba',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 174827,\n blobBlockLength: 14882,\n blobByteOffset: 11457030114\n },\n {\n filename: 'medgemma-4b-it-Q8_0-00005-of-00005.gguf',\n expectedSize: 256364480,\n sha256Checksum: '4a343ee2e0d440de96379deaedb82157c2b102dcb0429bc3a642f84956664479',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 189709,\n blobBlockLength: 3912,\n blobByteOffset: 12432305730\n }\n ]\n },\n {\n name: 'QWEN3_1_7B_INST_Q4_SHARD',\n registryPath: 'qvac_models_compiled/ggml/Qwen3-1.7B/2025-08-21/Qwen3-1.7B-Q4_0-00001-of-00005.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 313551,\n blobBlockLength: 4004,\n blobByteOffset: 20547317735,\n modelId: 'Qwen3-1.7B-Q4_0-00001-of-00005.gguf',\n addon: 'llm',\n expectedSize: 1056783456,\n sha256Checksum: '3c431cbd66b097bca68e2445e94398092e4bbacba1b1fce1a82bb0c7c4548163',\n engine: 'llamacpp-completion',\n quantization: 'q4',\n params: '1.7B',\n shardMetadata: [\n {\n filename: 'Qwen3-1.7B-Q4_0-00001-of-00005.gguf',\n expectedSize: 262374368,\n sha256Checksum: '3c431cbd66b097bca68e2445e94398092e4bbacba1b1fce1a82bb0c7c4548163',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 313551,\n blobBlockLength: 4004,\n blobByteOffset: 20547317735\n },\n {\n filename: 'Qwen3-1.7B-Q4_0-00002-of-00005.gguf',\n expectedSize: 249068160,\n sha256Checksum: 'be625ac56ec660a1e57096ff4cb708e5b0bf48de8881af0de7b63ff97e77500e',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 317555,\n blobBlockLength: 3801,\n blobByteOffset: 20809692103\n },\n {\n filename: 'Qwen3-1.7B-Q4_0-00003-of-00005.gguf',\n expectedSize: 247880416,\n sha256Checksum: '7a38d01c2c44b7d3cbe5c5e81c9bbd24049e5401afbe7d8d3bd21cb534e1c05a',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 321356,\n blobBlockLength: 3783,\n blobByteOffset: 21058760263\n },\n {\n filename: 'Qwen3-1.7B-Q4_0-00004-of-00005.gguf',\n expectedSize: 247888672,\n sha256Checksum: '943d1ad1cbe8bf581ff4ea2ea6a9009b76d7ab5594ed0c771d3fee392956c1c5',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 325139,\n blobBlockLength: 3783,\n blobByteOffset: 21306640679\n },\n {\n filename: 'Qwen3-1.7B-Q4_0-00005-of-00005.gguf',\n expectedSize: 49571840,\n sha256Checksum: '2febc30e9f6152ad0d077e6f6b932db865384ab6324d5ccc2210d17875c294d3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 328922,\n blobBlockLength: 757,\n blobByteOffset: 21554529351\n }\n ]\n },\n {\n name: 'QWEN3_1_7B_INST_Q4_TENSORS',\n registryPath: 'qvac_models_compiled/ggml/Qwen3-1.7B/2025-08-21/Qwen3-1.7B-Q4_0.tensors.txt',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 329679,\n blobBlockLength: 1,\n blobByteOffset: 21604101191,\n modelId: 'Qwen3-1.7B-Q4_0.tensors.txt',\n addon: 'llm',\n expectedSize: 7067,\n sha256Checksum: 'c10b950a18ec75d3ee61b55ed1ba5b4c3ff3d7afd726651b813d48165bd5847a',\n engine: 'llamacpp-completion',\n quantization: 'q4',\n params: '1.7B'\n },\n {\n name: 'QWEN3_4B_INST_Q4_K_M',\n registryPath: 'qvac_models_compiled/ggml/Qwen3-4B/2025-06-27/Qwen3-4B-Q4_K_M.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 28460,\n blobBlockLength: 38106,\n blobByteOffset: 1864824888,\n modelId: 'Qwen3-4B-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 2497280256,\n sha256Checksum: '7485fe6f11af29433bc51cab58009521f205840f5b4ae3a32fa7f92e8534fdf5',\n engine: 'llamacpp-completion',\n quantization: 'q4_K_M',\n params: '4B'\n },\n {\n name: 'QWEN3_4B_INST_Q4_SHARD',\n registryPath: 'qvac_models_compiled/ggml/Qwen3-4B/2025-08-21/Qwen3-4B-Q4_0-00001-of-00005.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 215642,\n blobBlockLength: 9084,\n blobByteOffset: 14131324242,\n modelId: 'Qwen3-4B-Q4_0-00001-of-00005.gguf',\n addon: 'llm',\n expectedSize: 2497280864,\n sha256Checksum: '44855a5795d7cc494e1bc45d023b9fa1ba99e59a937859d3227d00bcf8d4bf09',\n engine: 'llamacpp-completion',\n quantization: 'q4',\n params: '4B',\n shardMetadata: [\n {\n filename: 'Qwen3-4B-Q4_0-00001-of-00005.gguf',\n expectedSize: 595322272,\n sha256Checksum: '44855a5795d7cc494e1bc45d023b9fa1ba99e59a937859d3227d00bcf8d4bf09',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 215642,\n blobBlockLength: 9084,\n blobByteOffset: 14131324242\n },\n {\n filename: 'Qwen3-4B-Q4_0-00002-of-00005.gguf',\n expectedSize: 589216192,\n sha256Checksum: '22fbb31f804bb7dae0c46423675f37fdde82ff473b45a21266a97049c2ba75fa',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 224726,\n blobBlockLength: 8991,\n blobByteOffset: 14726646514\n },\n {\n filename: 'Qwen3-4B-Q4_0-00003-of-00005.gguf',\n expectedSize: 589892096,\n sha256Checksum: '45cd8d3b40d72fd2f5afd3f013ef59b59626f3489ac39bb91565783eb1cf67cb',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 233717,\n blobBlockLength: 9002,\n blobByteOffset: 15315862706\n },\n {\n filename: 'Qwen3-4B-Q4_0-00004-of-00005.gguf',\n expectedSize: 595072096,\n sha256Checksum: 'ff24652aac8790c5f5810057710bec19a6872d4f29b2f61663b05fe7c57605a4',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 242719,\n blobBlockLength: 9081,\n blobByteOffset: 15905754802\n },\n {\n filename: 'Qwen3-4B-Q4_0-00005-of-00005.gguf',\n expectedSize: 127778208,\n sha256Checksum: 'edecb6b27de377761d97ab88c75709b2b6cc8466bde4a43baf9744ff9a3ed19e',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 251800,\n blobBlockLength: 1950,\n blobByteOffset: 16500826898\n }\n ]\n },\n {\n name: 'QWEN3_4B_INST_Q4_TENSORS',\n registryPath: 'qvac_models_compiled/ggml/Qwen3-4B/2025-08-21/Qwen3-4B-Q4_0.tensors.txt',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 253750,\n blobBlockLength: 1,\n blobByteOffset: 16628605106,\n modelId: 'Qwen3-4B-Q4_0.tensors.txt',\n addon: 'llm',\n expectedSize: 9107,\n sha256Checksum: '4168384d4ab9eb0d773b31da5f8cd13747e3a45f3bbcff14485a5cc7679e7ed4',\n engine: 'llamacpp-completion',\n quantization: 'q4',\n params: '4B'\n },\n {\n name: 'SALAMANDRATA_2B_INST_Q4_SHARD',\n registryPath: 'qvac_models_compiled/ggml/salamandrata_2b_inst_q4/2025-08-21/salamandrata_2b_inst_q4-00001-of-00003.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 253751,\n blobBlockLength: 11701,\n blobByteOffset: 16628614213,\n modelId: 'salamandrata_2b_inst_q4-00001-of-00003.gguf',\n addon: 'llm',\n expectedSize: 1517617856,\n sha256Checksum: 'f682eeb7c52b55328c84c9e6a6775b7be8cade81493f0f3399b67e29fccbd5e6',\n engine: 'llamacpp-completion',\n quantization: 'q4',\n params: '2B',\n shardMetadata: [\n {\n filename: 'salamandrata_2b_inst_q4-00001-of-00003.gguf',\n expectedSize: 766824416,\n sha256Checksum: 'f682eeb7c52b55328c84c9e6a6775b7be8cade81493f0f3399b67e29fccbd5e6',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 253751,\n blobBlockLength: 11701,\n blobByteOffset: 16628614213\n },\n {\n filename: 'salamandrata_2b_inst_q4-00002-of-00003.gguf',\n expectedSize: 454328000,\n sha256Checksum: '05c6e127c41391dbbfe06a508c2eadf0ec80e9fe713c306a88cdd39e46c832d6',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 265452,\n blobBlockLength: 6933,\n blobByteOffset: 17395438629\n },\n {\n filename: 'salamandrata_2b_inst_q4-00003-of-00003.gguf',\n expectedSize: 296465440,\n sha256Checksum: '06f750c9e82485f89d0aeaac8830c57cfde107de522371bb0b6d7a6d9935ea25',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 272385,\n blobBlockLength: 4524,\n blobByteOffset: 17849766629\n }\n ]\n },\n {\n name: 'SALAMANDRATA_2B_INST_Q4_TENSORS',\n registryPath: 'qvac_models_compiled/ggml/salamandrata_2b_inst_q4/2025-08-21/salamandrata_2b_inst_q4.tensors.txt',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 276909,\n blobBlockLength: 1,\n blobByteOffset: 18146232069,\n modelId: 'salamandrata_2b_inst_q4.tensors.txt',\n addon: 'llm',\n expectedSize: 4833,\n sha256Checksum: '70a5b9f52d53b14d8c00240b2ca9752c0e9578b5faaedc6911b7ba21c273c858',\n engine: 'llamacpp-completion',\n quantization: 'q4',\n params: '2B'\n },\n {\n name: 'SALAMANDRATA_2B_INST_Q8_SHARD',\n registryPath: 'qvac_models_compiled/ggml/salamandrata_2b_inst_q8/2025-08-21/salamandrata_2b_inst_q8-00001-of-00004.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 276910,\n blobBlockLength: 17167,\n blobByteOffset: 18146236902,\n modelId: 'salamandrata_2b_inst_q8-00001-of-00004.gguf',\n addon: 'llm',\n expectedSize: 2401076000,\n sha256Checksum: '2bff3b74fd628d009a0a7e63ca7c5141322ab1dbdcae48b5c51846c8d115e769',\n engine: 'llamacpp-completion',\n quantization: 'q8',\n params: '2B',\n shardMetadata: [\n {\n filename: 'salamandrata_2b_inst_q8-00001-of-00004.gguf',\n expectedSize: 1125011424,\n sha256Checksum: '2bff3b74fd628d009a0a7e63ca7c5141322ab1dbdcae48b5c51846c8d115e769',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 276910,\n blobBlockLength: 17167,\n blobByteOffset: 18146236902\n },\n {\n filename: 'salamandrata_2b_inst_q8-00002-of-00004.gguf',\n expectedSize: 570611392,\n sha256Checksum: '044dd6b733e45f05e47009a1cdb8f78437fa8b879a09429b9d8bb65c76a2759b',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 294077,\n blobBlockLength: 8707,\n blobByteOffset: 19271248326\n },\n {\n filename: 'salamandrata_2b_inst_q8-00003-of-00004.gguf',\n expectedSize: 563222240,\n sha256Checksum: 'c1ddbd27c401f049dbe6adae996aadd3309da91d58d97851f9ab6725653a1feb',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 302784,\n blobBlockLength: 8595,\n blobByteOffset: 19841859718\n },\n {\n filename: 'salamandrata_2b_inst_q8-00004-of-00004.gguf',\n expectedSize: 142230944,\n sha256Checksum: 'a47c2287be8bfa4575f4ea2d5065452d254dacff2b9a07eea43f34de31c44120',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 311379,\n blobBlockLength: 2171,\n blobByteOffset: 20405081958\n }\n ]\n },\n {\n name: 'HEALTHCARE_1_7B_MEDICAL_BF16',\n registryPath: 'qvac/MedPsy-1.7B-GGUF/resolve/fd4cecc90c2de8dce4b112795456a54be9c59363/medpsy-1.7b-bf16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3703310,\n blobBlockLength: 62099,\n blobByteOffset: 242688318154,\n modelId: 'medpsy-1.7b-bf16.gguf',\n addon: 'llm',\n expectedSize: 4069679040,\n sha256Checksum: '97ee99dfc4845218b369fbb16c85106bcfcf38f89e623346c891c3dc1b4b5ab1',\n engine: 'llamacpp-completion',\n quantization: 'bf16',\n params: '1.7B'\n },\n {\n name: 'HEALTHCARE_1_7B_MEDICAL_IQ3_M',\n registryPath: 'qvac/MedPsy-1.7B-GGUF/resolve/fd4cecc90c2de8dce4b112795456a54be9c59363/medpsy-1.7b-iq3_m-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3765409,\n blobBlockLength: 15707,\n blobByteOffset: 246757997194,\n modelId: 'medpsy-1.7b-iq3_m-imat.gguf',\n addon: 'llm',\n expectedSize: 1029365952,\n sha256Checksum: '4f2aeaba2db768a80637a2b9666317d8453b7bcb59fcc2fc8f0e44e1178e2758',\n engine: 'llamacpp-completion',\n quantization: 'iq3_m',\n params: '1.7B'\n },\n {\n name: 'HEALTHCARE_1_7B_MEDICAL_IQ3_XXS',\n registryPath: 'qvac/MedPsy-1.7B-GGUF/resolve/fd4cecc90c2de8dce4b112795456a54be9c59363/medpsy-1.7b-iq3_xxs-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3781116,\n blobBlockLength: 13551,\n blobByteOffset: 247787363146,\n modelId: 'medpsy-1.7b-iq3_xxs-imat.gguf',\n addon: 'llm',\n expectedSize: 888064192,\n sha256Checksum: 'fce8d5870bb9b22d29ff89f29491cb2b5662ec121ef0214c50cf7988068c37c8',\n engine: 'llamacpp-completion',\n quantization: 'iq3_xxs',\n params: '1.7B'\n },\n {\n name: 'HEALTHCARE_1_7B_MEDICAL_IQ4_NL',\n registryPath: 'qvac/MedPsy-1.7B-GGUF/resolve/fd4cecc90c2de8dce4b112795456a54be9c59363/medpsy-1.7b-iq4_nl-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3794667,\n blobBlockLength: 18760,\n blobByteOffset: 248675427338,\n modelId: 'medpsy-1.7b-iq4_nl-imat.gguf',\n addon: 'llm',\n expectedSize: 1229453504,\n sha256Checksum: 'e1a9cc5390e02007fc6a5c5a74a23e4c20e6e25ba81d99b6d21f491887e04979',\n engine: 'llamacpp-completion',\n quantization: 'iq4_nl',\n params: '1.7B'\n },\n {\n name: 'HEALTHCARE_1_7B_MEDICAL_IQ4_XS',\n registryPath: 'qvac/MedPsy-1.7B-GGUF/resolve/fd4cecc90c2de8dce4b112795456a54be9c59363/medpsy-1.7b-iq4_xs-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3813427,\n blobBlockLength: 17940,\n blobByteOffset: 249904880842,\n modelId: 'medpsy-1.7b-iq4_xs-imat.gguf',\n addon: 'llm',\n expectedSize: 1175689408,\n sha256Checksum: '7816dbcdc90dcea1ec7ae3fe8a54d702e8d5c478493ee3a4605f71dfcb970409',\n engine: 'llamacpp-completion',\n quantization: 'iq4_xs',\n params: '1.7B'\n },\n {\n name: 'HEALTHCARE_1_7B_MEDICAL_Q4_K_M',\n registryPath: 'qvac/MedPsy-1.7B-GGUF/resolve/fd4cecc90c2de8dce4b112795456a54be9c59363/medpsy-1.7b-q4_k_m-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3831367,\n blobBlockLength: 19569,\n blobByteOffset: 251080570250,\n modelId: 'medpsy-1.7b-q4_k_m-imat.gguf',\n addon: 'llm',\n expectedSize: 1282439360,\n sha256Checksum: '41ee947d9cce72ec657577219fd1798fabeabf0d832217fe23c9d6d3d18d5880',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '1.7B'\n },\n {\n name: 'HEALTHCARE_1_7B_MEDICAL_Q5_K_M',\n registryPath: 'qvac/MedPsy-1.7B-GGUF/resolve/fd4cecc90c2de8dce4b112795456a54be9c59363/medpsy-1.7b-q5_k_m-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3850936,\n blobBlockLength: 22458,\n blobByteOffset: 252363009610,\n modelId: 'medpsy-1.7b-q5_k_m-imat.gguf',\n addon: 'llm',\n expectedSize: 1471805632,\n sha256Checksum: '05e8e51af9a09ebe06433971f66ba86f5ce1be2e8b53db9dc83b13244c33c00e',\n engine: 'llamacpp-completion',\n quantization: 'q5_k_m',\n params: '1.7B'\n },\n {\n name: 'HEALTHCARE_1_7B_MEDICAL_Q8_0',\n registryPath: 'qvac/MedPsy-1.7B-GGUF/resolve/fd4cecc90c2de8dce4b112795456a54be9c59363/medpsy-1.7b-q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3873394,\n blobBlockLength: 33036,\n blobByteOffset: 253834815242,\n modelId: 'medpsy-1.7b-q8_0.gguf',\n addon: 'llm',\n expectedSize: 2165039040,\n sha256Checksum: '03ebb130aa6e818a8cf733301381c9edb69c94e0e1ad556595b1d5545a1c5073',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '1.7B'\n },\n {\n name: 'HEALTHCARE_4B_MEDICAL_BF16',\n registryPath: 'qvac/MedPsy-4B-GGUF/resolve/ad85e5a6f745027a576595df9acf745b071353b3/medpsy-4b-bf16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3906430,\n blobBlockLength: 134723,\n blobByteOffset: 255999854282,\n modelId: 'medpsy-4b-bf16.gguf',\n addon: 'llm',\n expectedSize: 8829197344,\n sha256Checksum: '0ca2678e1fea2547fabe6c9859605e69425942538f5cc190e12dcffeebfa78c4',\n engine: 'llamacpp-completion',\n quantization: 'bf16',\n params: '4B'\n },\n {\n name: 'HEALTHCARE_4B_MEDICAL_IQ3_M',\n registryPath: 'qvac/MedPsy-4B-GGUF/resolve/ad85e5a6f745027a576595df9acf745b071353b3/medpsy-4b-iq3_m-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4041153,\n blobBlockLength: 32502,\n blobByteOffset: 264829051626,\n modelId: 'medpsy-4b-iq3_m-imat.gguf',\n addon: 'llm',\n expectedSize: 2130025760,\n sha256Checksum: 'd4bb000febb07d70342be8964aa02fd747b8574617526f8a9abdeadc38c287b9',\n engine: 'llamacpp-completion',\n quantization: 'iq3_m',\n params: '4B'\n },\n {\n name: 'HEALTHCARE_4B_MEDICAL_IQ3_XXS',\n registryPath: 'qvac/MedPsy-4B-GGUF/resolve/ad85e5a6f745027a576595df9acf745b071353b3/medpsy-4b-iq3_xxs-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4073655,\n blobBlockLength: 28036,\n blobByteOffset: 266959077386,\n modelId: 'medpsy-4b-iq3_xxs-imat.gguf',\n addon: 'llm',\n expectedSize: 1837317920,\n sha256Checksum: '00358ed1f556b4c6801986c10f81e142095c69b3e94997b878dd3604560ed6c5',\n engine: 'llamacpp-completion',\n quantization: 'iq3_xxs',\n params: '4B'\n },\n {\n name: 'HEALTHCARE_4B_MEDICAL_IQ4_NL',\n registryPath: 'qvac/MedPsy-4B-GGUF/resolve/ad85e5a6f745027a576595df9acf745b071353b3/medpsy-4b-iq4_nl-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4101691,\n blobBlockLength: 39675,\n blobByteOffset: 268796395306,\n modelId: 'medpsy-4b-iq4_nl-imat.gguf',\n addon: 'llm',\n expectedSize: 2600131360,\n sha256Checksum: '7deecba2614a1e8bd8b549f57f4e507be90d88dbea704fda2a355373fbb781df',\n engine: 'llamacpp-completion',\n quantization: 'iq4_nl',\n params: '4B'\n },\n {\n name: 'HEALTHCARE_4B_MEDICAL_IQ4_XS',\n registryPath: 'qvac/MedPsy-4B-GGUF/resolve/ad85e5a6f745027a576595df9acf745b071353b3/medpsy-4b-iq4_xs-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4141366,\n blobBlockLength: 37802,\n blobByteOffset: 271396526666,\n modelId: 'medpsy-4b-iq4_xs-imat.gguf',\n addon: 'llm',\n expectedSize: 2477384480,\n sha256Checksum: '0098a76248d769b6e8e041d8fced2270c66962e257c5da4d4008cedd45ef051c',\n engine: 'llamacpp-completion',\n quantization: 'iq4_xs',\n params: '4B'\n },\n {\n name: 'HEALTHCARE_4B_MEDICAL_Q4_K_M',\n registryPath: 'qvac/MedPsy-4B-GGUF/resolve/ad85e5a6f745027a576595df9acf745b071353b3/medpsy-4b-q4_k_m-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4179168,\n blobBlockLength: 41444,\n blobByteOffset: 273873911146,\n modelId: 'medpsy-4b-q4_k_m-imat.gguf',\n addon: 'llm',\n expectedSize: 2716068640,\n sha256Checksum: '2ecbf622a2856f631001f20f593669aa03acba39977f521bef80cd8600864980',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '4B'\n },\n {\n name: 'HEALTHCARE_4B_MEDICAL_Q5_K_M',\n registryPath: 'qvac/MedPsy-4B-GGUF/resolve/ad85e5a6f745027a576595df9acf745b071353b3/medpsy-4b-q5_k_m-imat.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4220612,\n blobBlockLength: 48171,\n blobByteOffset: 276589979786,\n modelId: 'medpsy-4b-q5_k_m-imat.gguf',\n addon: 'llm',\n expectedSize: 3156921120,\n sha256Checksum: '68bd5e14cd87ff40bba5d08fbef2da9a6088b11aacab8466ef3f13a602e2d868',\n engine: 'llamacpp-completion',\n quantization: 'q5_k_m',\n params: '4B'\n },\n {\n name: 'HEALTHCARE_4B_MEDICAL_Q8_0',\n registryPath: 'qvac/MedPsy-4B-GGUF/resolve/ad85e5a6f745027a576595df9acf745b071353b3/medpsy-4b-q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4268783,\n blobBlockLength: 71620,\n blobByteOffset: 279746900906,\n modelId: 'medpsy-4b-q8_0.gguf',\n addon: 'llm',\n expectedSize: 4693670944,\n sha256Checksum: 'b754795a8415d4ba56952da3cb3b994e69c04d61111eec6239938c80aebe93a7',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '4B'\n },\n {\n name: 'QWEN3_8B_INST_Q4_K_M',\n registryPath: 'Qwen/Qwen3-8B-GGUF/blob/main/Qwen3-8B-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 719180,\n blobBlockLength: 76718,\n blobByteOffset: 47128646467,\n modelId: 'Qwen3-8B-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 5027783488,\n sha256Checksum: 'd98cdcbd03e17ce47681435b5150e34c1417f50b5c0019dd560e4882c5745785',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '8B'\n },\n {\n name: 'MMPROJ_QWEN3VL_2B_MULTIMODAL_Q4_K',\n registryPath: 'Qwen/Qwen3-VL-2B-Instruct-GGUF/resolve/main/mmproj-Qwen3VL-2B-Instruct-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 522684,\n blobBlockLength: 6791,\n blobByteOffset: 34251142115,\n modelId: 'mmproj-Qwen3VL-2B-Instruct-Q8_0.gguf',\n addon: 'llm',\n expectedSize: 445053216,\n sha256Checksum: 'f9a68fabba69c3b81e153367b2c7521030b0fa8bb0de400c9599c8e6725f9c82',\n engine: 'llamacpp-completion',\n quantization: 'q4_k',\n params: '2B'\n },\n {\n name: 'QWEN3VL_2B_MULTIMODAL_Q4_K',\n registryPath: 'Qwen/Qwen3-VL-2B-Instruct-GGUF/resolve/main/Qwen3VL-2B-Instruct-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 505786,\n blobBlockLength: 16898,\n blobByteOffset: 33143732163,\n modelId: 'Qwen3VL-2B-Instruct-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 1107409952,\n sha256Checksum: '089d75c52f4b7ffc56ba998ffc50aae89fcafc755f9e7208aacca281dca6c2ae',\n engine: 'llamacpp-completion',\n quantization: 'q4_k',\n params: '2B'\n },\n {\n name: 'GPT_OSS_20B_INST_Q4_K_M',\n registryPath: 'unsloth/gpt-oss-20b-GGUF/blob/main/gpt-oss-20b-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 541800,\n blobBlockLength: 177380,\n blobByteOffset: 35503886979,\n modelId: 'gpt-oss-20b-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 11624759488,\n sha256Checksum: 'c27536640e410032865dc68781d80a08b98f8db5e93575919af8ccc0568aeb4f',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '20B'\n },\n {\n name: 'LLAMA_3_2_1B_INST_Q4_0',\n registryPath: 'unsloth/Llama-3.2-1B-Instruct-GGUF/blob/b69aef112e9f895e6f98d7ae0949f72ff09aa401/Llama-3.2-1B-Instruct-Q4_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 168716,\n blobBlockLength: 11796,\n blobByteOffset: 11056560824,\n modelId: 'Llama-3.2-1B-Instruct-Q4_0.gguf',\n addon: 'llm',\n expectedSize: 773025824,\n sha256Checksum: '66bfbb2d48bdb77cd56bd03ef820deff3c4a74b1a09de3b917ae13e72c1a70c2',\n engine: 'llamacpp-completion',\n quantization: 'q4_0',\n params: '1B'\n },\n {\n name: 'MEDGEMMA_4B_IT_Q4_1',\n registryPath: 'unsloth/medgemma-4b-it-GGUF/blob/fa17ea2647ef236db91adfe1465a61ab6562cf2c/medgemma-4b-it-Q4_1.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 66566,\n blobBlockLength: 39125,\n blobByteOffset: 4362105144,\n modelId: 'medgemma-4b-it-Q4_1.gguf',\n addon: 'llm',\n expectedSize: 2564052800,\n sha256Checksum: '8e1a72c5dc9e89cde340114ad1d7915686b16bcb6fef1372a2c3ee564fb721e0',\n engine: 'llamacpp-completion',\n quantization: 'q4_1',\n params: '4B'\n },\n {\n name: 'MEDGEMMA_4B_IT_Q8_0',\n registryPath: 'unsloth/medgemma-4b-it-GGUF/resolve/fa17ea2647ef236db91adfe1465a61ab6562cf2c/medgemma-4b-it-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 105691,\n blobBlockLength: 63025,\n blobByteOffset: 6926157944,\n modelId: 'medgemma-4b-it-Q8_0.gguf',\n addon: 'llm',\n expectedSize: 4130402880,\n sha256Checksum: 'd49d917bccd3e569ddf282ea597f1e255eb3b891254cc5c931d669e646bd77cf',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '4B'\n },\n {\n name: 'QWEN3_600M_INST_Q4',\n registryPath: 'unsloth/Qwen3-0.6B-GGUF/blob/50968a4468ef4233ed78cd7c3de230dd1d61a56b/Qwen3-0.6B-Q4_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 380426,\n blobBlockLength: 5832,\n blobByteOffset: 24929383097,\n modelId: 'Qwen3-0.6B-Q4_0.gguf',\n addon: 'llm',\n expectedSize: 382156480,\n sha256Checksum: '33bcc57074ec7b6eada5a90651ee546ec0c2b271002c22baf9f1b2dd1e8f75cb',\n engine: 'llamacpp-completion',\n quantization: 'q4',\n params: '600M'\n },\n {\n name: 'QWEN3_1_7B_INST_Q4',\n registryPath: 'unsloth/Qwen3-1.7B-GGUF/resolve/d7f544eead698dbd1f15126ef60b45a1e1933222/Qwen3-1.7B-Q4_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 246318,\n blobBlockLength: 16126,\n blobByteOffset: 16142153336,\n modelId: 'Qwen3-1.7B-Q4_0.gguf',\n addon: 'llm',\n expectedSize: 1056782912,\n sha256Checksum: 'c876f159707a4e4f70e045106c69db15bfc935a4981706fd4f65c6e7ea1e81c5',\n engine: 'llamacpp-completion',\n quantization: 'q4',\n params: '1.7B'\n },\n {\n name: 'QWEN3_4B_Q4_K_M',\n registryPath: 'unsloth/Qwen3-4B-GGUF/resolve/9b5c4f3506ac99d74e59ecd9aa9abb05537b7f59/Qwen3-4B-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 296679,\n blobBlockLength: 38106,\n blobByteOffset: 19441407821,\n modelId: 'Qwen3-4B-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 2497281312,\n sha256Checksum: 'f6f851777709861056efcdad3af01da38b31223a3ba26e61a4f8bf3a2195813a',\n engine: 'llamacpp-completion',\n quantization: 'q4_K_M',\n params: '4B'\n },\n {\n name: 'MMPROJ_QWEN3_5_0_8B_MULTIMODAL_BF16',\n registryPath: 'unsloth/Qwen3.5-0.8B-GGUF/resolve/6ab461498e2023f6e3c1baea90a8f0fe38ab64d0/mmproj-BF16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2588401,\n blobBlockLength: 3164,\n blobByteOffset: 169622147306,\n modelId: 'mmproj-BF16.gguf',\n addon: 'llm',\n expectedSize: 207346528,\n sha256Checksum: 'd312c4d02fd46eea7a16e4f3bbb58840e6222209322ca1e33ca03247ad8935d6',\n engine: 'llamacpp-completion',\n quantization: 'bf16',\n params: '0.8B'\n },\n {\n name: 'MMPROJ_QWEN3_5_0_8B_MULTIMODAL_F16',\n registryPath: 'unsloth/Qwen3.5-0.8B-GGUF/resolve/6ab461498e2023f6e3c1baea90a8f0fe38ab64d0/mmproj-F16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2585273,\n blobBlockLength: 3128,\n blobByteOffset: 169417160074,\n modelId: 'mmproj-F16.gguf',\n addon: 'llm',\n expectedSize: 204987232,\n sha256Checksum: '56e4c6cfe73b0c82e3e82bc518d7591997e61d81f723fc41a586f4fa69ea2453',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '0.8B'\n },\n {\n name: 'QWEN3_5_0_8B_MULTIMODAL_Q4_K_M',\n registryPath: 'unsloth/Qwen3.5-0.8B-GGUF/resolve/6ab461498e2023f6e3c1baea90a8f0fe38ab64d0/Qwen3.5-0.8B-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2278097,\n blobBlockLength: 8126,\n blobByteOffset: 149286154762,\n modelId: 'Qwen3.5-0.8B-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 532517120,\n sha256Checksum: 'bd258782e35f7f458f8aced1adc053e6e92e89bc735ba3be89d38a06121dc517',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '0.8B'\n },\n {\n name: 'QWEN3_5_0_8B_MULTIMODAL_Q6_K',\n registryPath: 'unsloth/Qwen3.5-0.8B-GGUF/resolve/6ab461498e2023f6e3c1baea90a8f0fe38ab64d0/Qwen3.5-0.8B-Q6_K.gguf',\n registrySource: 'hf',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1621918,\n blobBlockLength: 9751,\n blobByteOffset: 106288450129,\n modelId: 'Qwen3.5-0.8B-Q6_K.gguf',\n addon: 'llm',\n expectedSize: 639029504,\n sha256Checksum: '8408c5c222111cec253682b49eece2a02ed641ded68490001ec4ee160e71098e',\n engine: 'llamacpp-completion',\n quantization: 'q6_k',\n params: '0.8B'\n },\n {\n name: 'QWEN3_5_0_8B_MULTIMODAL_Q8_0',\n registryPath: 'unsloth/Qwen3.5-0.8B-GGUF/resolve/6ab461498e2023f6e3c1baea90a8f0fe38ab64d0/Qwen3.5-0.8B-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2265709,\n blobBlockLength: 12388,\n blobByteOffset: 148474310922,\n modelId: 'Qwen3.5-0.8B-Q8_0.gguf',\n addon: 'llm',\n expectedSize: 811843840,\n sha256Checksum: '0ad885ffd4bb022fc4f0d33a3308fa108ef8613159d3b3a67e23abca056b7a6c',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '0.8B'\n },\n {\n name: 'MMPROJ_QWEN3_5_2B_MULTIMODAL_BF16',\n registryPath: 'unsloth/Qwen3.5-2B-GGUF/resolve/f6d5376be1edb4d416d56da11e5397a961aca8ae/mmproj-BF16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2645340,\n blobBlockLength: 10245,\n blobByteOffset: 173353518346,\n modelId: 'mmproj-BF16.gguf',\n addon: 'llm',\n expectedSize: 671372992,\n sha256Checksum: 'f17196c0d8fc756bc65be60075bd4a359917eee8a438505639511727c585d3c2',\n engine: 'llamacpp-completion',\n quantization: 'bf16',\n params: '2B'\n },\n {\n name: 'MMPROJ_QWEN3_5_2B_MULTIMODAL_F16',\n registryPath: 'unsloth/Qwen3.5-2B-GGUF/resolve/f6d5376be1edb4d416d56da11e5397a961aca8ae/mmproj-F16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2635143,\n blobBlockLength: 10197,\n blobByteOffset: 172685291082,\n modelId: 'mmproj-F16.gguf',\n addon: 'llm',\n expectedSize: 668227264,\n sha256Checksum: '7035e9cb8d7c6a9681d07eef9a364783e86ea4cd73faab2eabb4f43a101830c7',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '2B'\n },\n {\n name: 'QWEN3_5_2B_MULTIMODAL_Q4_K_M',\n registryPath: 'unsloth/Qwen3.5-2B-GGUF/resolve/f6d5376be1edb4d416d56da11e5397a961aca8ae/Qwen3.5-2B-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2591565,\n blobBlockLength: 19545,\n blobByteOffset: 169829493834,\n modelId: 'Qwen3.5-2B-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 1280835840,\n sha256Checksum: 'aaf42c8b7c3cab2bf3d69c355048d4a0ee9973d48f16c731c0520ee914699223',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '2B'\n },\n {\n name: 'QWEN3_5_2B_MULTIMODAL_Q6_K',\n registryPath: 'unsloth/Qwen3.5-2B-GGUF/resolve/f6d5376be1edb4d416d56da11e5397a961aca8ae/Qwen3.5-2B-Q6_K.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2611110,\n blobBlockLength: 24033,\n blobByteOffset: 171110329674,\n modelId: 'Qwen3.5-2B-Q6_K.gguf',\n addon: 'llm',\n expectedSize: 1574961408,\n sha256Checksum: 'fc90339420b4298887aafb307a4291c55440b730133bbffe6ba9630503dcb548',\n engine: 'llamacpp-completion',\n quantization: 'q6_k',\n params: '2B'\n },\n {\n name: 'QWEN3_5_2B_MULTIMODAL_Q8_0',\n registryPath: 'unsloth/Qwen3.5-2B-GGUF/resolve/f6d5376be1edb4d416d56da11e5397a961aca8ae/Qwen3.5-2B-Q8_0.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4417484,\n blobBlockLength: 30701,\n blobByteOffset: 289492065098,\n modelId: 'Qwen3.5-2B-Q8_0.gguf',\n addon: 'llm',\n expectedSize: 2012012800,\n sha256Checksum: '1b04acba824817554f4ce23639bc8495ff70453b8fcb047900c731521021f2c1',\n engine: 'llamacpp-completion',\n quantization: 'q8_0',\n params: '2B'\n },\n {\n name: 'MMPROJ_QWEN3_5_4B_MULTIMODAL_BF16',\n registryPath: 'unsloth/Qwen3.5-4B-GGUF/resolve/e87f176479d0855a907a41277aca2f8ee7a09523/mmproj-BF16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3195646,\n blobBlockLength: 10309,\n blobByteOffset: 209418189066,\n modelId: 'mmproj-BF16.gguf',\n addon: 'llm',\n expectedSize: 675569344,\n sha256Checksum: '302b92d565080b9cc0281186979ae75a7429ec23d14f6f7607a035539b21f3a6',\n engine: 'llamacpp-completion',\n quantization: 'bf16',\n params: '4B'\n },\n {\n name: 'MMPROJ_QWEN3_5_4B_MULTIMODAL_F16',\n registryPath: 'unsloth/Qwen3.5-4B-GGUF/resolve/e87f176479d0855a907a41277aca2f8ee7a09523/mmproj-F16.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3205955,\n blobBlockLength: 10261,\n blobByteOffset: 210093758410,\n modelId: 'mmproj-F16.gguf',\n addon: 'llm',\n expectedSize: 672423616,\n sha256Checksum: 'cd88edcf8d031894960bb0c9c5b9b7e1fea6ebee02b9f7ce925a00d12891f864',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '4B'\n },\n {\n name: 'QWEN3_5_4B_MULTIMODAL_Q4_K_M',\n registryPath: 'unsloth/Qwen3.5-4B-GGUF/resolve/e87f176479d0855a907a41277aca2f8ee7a09523/Qwen3.5-4B-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3100020,\n blobBlockLength: 41824,\n blobByteOffset: 203151294410,\n modelId: 'Qwen3.5-4B-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 2740937888,\n sha256Checksum: '00fe7986ff5f6b463e62455821146049db6f9313603938a70800d1fb69ef11a4',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '4B'\n },\n {\n name: 'QWEN3_5_4B_MULTIMODAL_Q6_K',\n registryPath: 'unsloth/Qwen3.5-4B-GGUF/resolve/e87f176479d0855a907a41277aca2f8ee7a09523/Qwen3.5-4B-Q6_K.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3141844,\n blobBlockLength: 53802,\n blobByteOffset: 205892232298,\n modelId: 'Qwen3.5-4B-Q6_K.gguf',\n addon: 'llm',\n expectedSize: 3525956768,\n sha256Checksum: 'fdedd781c9ce676ab66b018ca247ff78e8a33c98098a822c1e2d5075e7718f66',\n engine: 'llamacpp-completion',\n quantization: 'q6_k',\n params: '4B'\n },\n {\n name: 'MMPROJ_QWEN3_5_9B_MULTIMODAL_BF16',\n registryPath: 'unsloth/Qwen3.5-9B-GGUF/resolve/3885219b6810b007914f3a7950a8d1b469d598a5/mmproj-BF16.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 832270,\n blobBlockLength: 14065,\n blobByteOffset: 54527968226,\n modelId: 'mmproj-BF16.gguf',\n addon: 'llm',\n expectedSize: 921705024,\n sha256Checksum: '853698ce7aa6c7ba732478bad280240969ddf7b0fcbf93900046f63903a83383',\n engine: 'llamacpp-completion',\n quantization: 'bf16',\n params: '9B'\n },\n {\n name: 'MMPROJ_QWEN3_5_9B_MULTIMODAL_F16',\n registryPath: 'unsloth/Qwen3.5-9B-GGUF/resolve/3885219b6810b007914f3a7950a8d1b469d598a5/mmproj-F16.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 818259,\n blobBlockLength: 14011,\n blobByteOffset: 53609802146,\n modelId: 'mmproj-F16.gguf',\n addon: 'llm',\n expectedSize: 918166080,\n sha256Checksum: 'f70dc3509053962b0d0d3ee8a7eacebf5d60aa560cad78254ae8698516ae029f',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '9B'\n },\n {\n name: 'QWEN3_5_9B_MULTIMODAL_Q4_K_M',\n registryPath: 'unsloth/Qwen3.5-9B-GGUF/resolve/3885219b6810b007914f3a7950a8d1b469d598a5/Qwen3.5-9B-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3216216,\n blobBlockLength: 86678,\n blobByteOffset: 210766182026,\n modelId: 'Qwen3.5-9B-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 5680522464,\n sha256Checksum: '03b74727a860a56338e042c4420bb3f04b2fec5734175f4cb9fa853daf52b7e8',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '9B'\n },\n {\n name: 'QWEN3_5_9B_MULTIMODAL_Q6_K',\n registryPath: 'unsloth/Qwen3.5-9B-GGUF/resolve/3885219b6810b007914f3a7950a8d1b469d598a5/Qwen3.5-9B-Q6_K.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 1508691,\n blobBlockLength: 113805,\n blobByteOffset: 98857626914,\n modelId: 'Qwen3.5-9B-Q6_K.gguf',\n addon: 'llm',\n expectedSize: 7458301152,\n sha256Checksum: '91898433cf5ce0a8f45516a4cc3e9343b6e01d052d01f684309098c66a326c59',\n engine: 'llamacpp-completion',\n quantization: 'q6_k',\n params: '9B'\n },\n {\n name: 'MMPROJ_QWEN3_6_27B_MULTIMODAL_BF16',\n registryPath: 'unsloth/Qwen3.6-27B-GGUF/resolve/82d411acf4a06cfb8d9b073a5211bf410bfc29bf/mmproj-BF16.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 1115082,\n blobBlockLength: 14209,\n blobByteOffset: 73062237954,\n modelId: 'mmproj-BF16.gguf',\n addon: 'llm',\n expectedSize: 931146304,\n sha256Checksum: '05353347512982ee62317b9d8c89372bc815f4b4043580e7ef3ad411ec1a1cd3',\n engine: 'llamacpp-completion',\n quantization: 'bf16',\n params: '27B'\n },\n {\n name: 'MMPROJ_QWEN3_6_27B_MULTIMODAL_F16',\n registryPath: 'unsloth/Qwen3.6-27B-GGUF/resolve/82d411acf4a06cfb8d9b073a5211bf410bfc29bf/mmproj-F16.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 1129291,\n blobBlockLength: 14155,\n blobByteOffset: 73993384258,\n modelId: 'mmproj-F16.gguf',\n addon: 'llm',\n expectedSize: 927607360,\n sha256Checksum: 'eacf610d1ee4bd5ed0197a0777dd8f4fceb8eefa27009067c7d496cb68fbde45',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '27B'\n },\n {\n name: 'QWEN3_6_27B_MULTIMODAL_Q4_K_XL',\n registryPath: 'unsloth/Qwen3.6-27B-GGUF/resolve/82d411acf4a06cfb8d9b073a5211bf410bfc29bf/Qwen3.6-27B-UD-Q4_K_XL.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 846335,\n blobBlockLength: 268747,\n blobByteOffset: 55449673250,\n modelId: 'Qwen3.6-27B-UD-Q4_K_XL.gguf',\n addon: 'llm',\n expectedSize: 17612564704,\n sha256Checksum: 'ff6941ded525b34eb159496762c29dd0ec6e71dc31b74d57e75d871a03eec259',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_xl',\n params: '27B'\n },\n {\n name: 'QWEN3_6_27B_MULTIMODAL_Q6_K_XL',\n registryPath: 'unsloth/Qwen3.6-27B-GGUF/resolve/82d411acf4a06cfb8d9b073a5211bf410bfc29bf/Qwen3.6-27B-UD-Q6_K_XL.gguf',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3302894,\n blobBlockLength: 391182,\n blobByteOffset: 216446704490,\n modelId: 'Qwen3.6-27B-UD-Q6_K_XL.gguf',\n addon: 'llm',\n expectedSize: 25636485344,\n sha256Checksum: '8746881d40f280b1b6b858c656a347c754ed3d9cc8d2e1ad46b3635b87f611f8',\n engine: 'llamacpp-completion',\n quantization: 'q6_k_xl',\n params: '27B'\n },\n {\n name: 'MMPROJ_QWEN3_6_35B_A3B_MULTIMODAL_BF16',\n registryPath: 'unsloth/Qwen3.6-35B-A3B-GGUF/resolve/a483e9e6cbd595906af30beda3187c2663a1118c/mmproj-BF16.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 1481193,\n blobBlockLength: 13776,\n blobByteOffset: 97055520610,\n modelId: 'mmproj-BF16.gguf',\n addon: 'llm',\n expectedSize: 902822624,\n sha256Checksum: '356dfaa3111376a4f7165e32e8749713378d1700b37cf52e0c50d9f23322334d',\n engine: 'llamacpp-completion',\n quantization: 'bf16',\n params: '35B-A3B'\n },\n {\n name: 'MMPROJ_QWEN3_6_35B_A3B_MULTIMODAL_F16',\n registryPath: 'unsloth/Qwen3.6-35B-A3B-GGUF/resolve/a483e9e6cbd595906af30beda3187c2663a1118c/mmproj-F16.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 1494969,\n blobBlockLength: 13722,\n blobByteOffset: 97958343234,\n modelId: 'mmproj-F16.gguf',\n addon: 'llm',\n expectedSize: 899283680,\n sha256Checksum: '8971ee4f331ff0a4c609374f32984b3d4e6dc086c0aa35f1d637fad1829e887f',\n engine: 'llamacpp-completion',\n quantization: 'f16',\n params: '35B-A3B'\n },\n {\n name: 'QWEN3_6_35B_A3B_MULTIMODAL_Q4_K_M',\n registryPath: 'unsloth/Qwen3.6-35B-A3B-GGUF/resolve/a483e9e6cbd595906af30beda3187c2663a1118c/Qwen3.6-35B-A3B-UD-Q4_K_M.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 1143446,\n blobBlockLength: 337747,\n blobByteOffset: 74920991618,\n modelId: 'Qwen3.6-35B-A3B-UD-Q4_K_M.gguf',\n addon: 'llm',\n expectedSize: 22134528992,\n sha256Checksum: 'ac0e2c1189e055faa36eff361580e79c5bd6f8e76bffb4ce547f167d53e31a61',\n engine: 'llamacpp-completion',\n quantization: 'q4_k_m',\n params: '35B-A3B'\n },\n {\n name: 'QWEN3_6_35B_A3B_MULTIMODAL_Q6_K_XL',\n registryPath: 'unsloth/Qwen3.6-35B-A3B-GGUF/resolve/a483e9e6cbd595906af30beda3187c2663a1118c/Qwen3.6-35B-A3B-UD-Q6_K_XL.gguf',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 1622496,\n blobBlockLength: 485898,\n blobByteOffset: 106315928066,\n modelId: 'Qwen3.6-35B-A3B-UD-Q6_K_XL.gguf',\n addon: 'llm',\n expectedSize: 31843777504,\n sha256Checksum: 'f6b6c6d5cfa6f00d964eeb7add28eb14ce7481734d506b90681007678cd2c484',\n engine: 'llamacpp-completion',\n quantization: 'q6_k_xl',\n params: '35B-A3B'\n },\n {\n name: 'BERGAMOT_AR_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-aren/2025-12-18/lex.50.50.aren.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 817546,\n blobBlockLength: 71,\n blobByteOffset: 53574760140,\n modelId: 'lex.50.50.aren.s2t.bin',\n addon: 'nmt',\n expectedSize: 4627200,\n sha256Checksum: '4b45f14dbea40d368093a13563fc1ca48457ee70c1291c82b206f3baff210081',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-aren/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 817617,\n blobBlockLength: 1,\n blobByteOffset: 53579387340,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '3d51ad945784c5dd05577f6f4f8355f2736fce5f2da6ecfefe13c1face6d2878',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_AR_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-aren/2025-12-18/model.aren.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 817618,\n blobBlockLength: 482,\n blobByteOffset: 53579389578,\n modelId: 'model.aren.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '7b7af0282dc5f4d8805b9a298c2fa828967e3f09ca10f1942ebeea0b2cfc12fa',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'afb824ed1f243daf',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-aren/2025-12-18/model.aren.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.aren.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '7b7af0282dc5f4d8805b9a298c2fa828967e3f09ca10f1942ebeea0b2cfc12fa',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 817618,\n blobBlockLength: 482,\n blobByteOffset: 53579389578,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-aren/2025-12-18/lex.50.50.aren.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.aren.s2t.bin',\n expectedSize: 4627200,\n sha256Checksum: '4b45f14dbea40d368093a13563fc1ca48457ee70c1291c82b206f3baff210081',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 817546,\n blobBlockLength: 71,\n blobByteOffset: 53574760140\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-aren/2025-12-18/vocab.aren.spm',\n registrySource: 's3',\n targetName: 'vocab.aren.spm',\n expectedSize: 860035,\n sha256Checksum: '51b4ee3f828d10015464523d0b4f5a6c086b0b2a9bde716a581001cf6c260366',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818100,\n blobBlockLength: 14,\n blobByteOffset: 53610951365\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-aren/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '3d51ad945784c5dd05577f6f4f8355f2736fce5f2da6ecfefe13c1face6d2878',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 817617,\n blobBlockLength: 1,\n blobByteOffset: 53579387340\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_AR_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-aren/2025-12-18/vocab.aren.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818100,\n blobBlockLength: 14,\n blobByteOffset: 53610951365,\n modelId: 'vocab.aren.spm',\n addon: 'nmt',\n expectedSize: 860035,\n sha256Checksum: '51b4ee3f828d10015464523d0b4f5a6c086b0b2a9bde716a581001cf6c260366',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_AZ_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-azen/2025-12-18/lex.50.50.azen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786414,\n blobBlockLength: 74,\n blobByteOffset: 51535278263,\n modelId: 'lex.50.50.azen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4820648,\n sha256Checksum: 'd534a8a29537e2539cac09d23360f27291765a030d424e108b9b0cabaa593672',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_1',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-azen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786488,\n blobBlockLength: 1,\n blobByteOffset: 51540098911,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: 'cbb59e93620b47365f4acd2adf52ecfa51d5347dfa0306cd6c105e5d5d5571b0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_AZ_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-azen/2025-12-18/model.azen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786489,\n blobBlockLength: 262,\n blobByteOffset: 51540101139,\n modelId: 'model.azen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'fff0b00229e42e3df56be33ec903013aea80dbdd8fc0c3673f6249ab6102490f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'e97e6b9f1d0d3203',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-azen/2025-12-18/model.azen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.azen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'fff0b00229e42e3df56be33ec903013aea80dbdd8fc0c3673f6249ab6102490f',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786489,\n blobBlockLength: 262,\n blobByteOffset: 51540101139,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-azen/2025-12-18/lex.50.50.azen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.azen.s2t.bin',\n expectedSize: 4820648,\n sha256Checksum: 'd534a8a29537e2539cac09d23360f27291765a030d424e108b9b0cabaa593672',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786414,\n blobBlockLength: 74,\n blobByteOffset: 51535278263\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-azen/2025-12-18/vocab.azen.spm',\n registrySource: 's3',\n targetName: 'vocab.azen.spm',\n expectedSize: 835773,\n sha256Checksum: '9ae0beed517ad39a95b4e1ae95be4ddfdeba8b004139886d40a3a50874e16aa6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786751,\n blobBlockLength: 13,\n blobByteOffset: 51557242190\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-azen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: 'cbb59e93620b47365f4acd2adf52ecfa51d5347dfa0306cd6c105e5d5d5571b0',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786488,\n blobBlockLength: 1,\n blobByteOffset: 51540098911\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_AZ_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-azen/2025-12-18/vocab.azen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786751,\n blobBlockLength: 13,\n blobByteOffset: 51557242190,\n modelId: 'vocab.azen.spm',\n addon: 'nmt',\n expectedSize: 835773,\n sha256Checksum: '9ae0beed517ad39a95b4e1ae95be4ddfdeba8b004139886d40a3a50874e16aa6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_BE_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-been/2025-12-18/lex.50.50.been.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786764,\n blobBlockLength: 70,\n blobByteOffset: 51558077963,\n modelId: 'lex.50.50.been.s2t.bin',\n addon: 'nmt',\n expectedSize: 4565784,\n sha256Checksum: 'eec822f871f570f99ac70b13fe480fc6f612d37c69c047834676f1c9919d4aca',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_2',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-been/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786834,\n blobBlockLength: 1,\n blobByteOffset: 51562643747,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: 'a908cec72179edbbf61f3e2572c83f16739b31267371be3f59f6c4f783ffb519',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_BE_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-been/2025-12-18/model.been.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786835,\n blobBlockLength: 262,\n blobByteOffset: 51562645975,\n modelId: 'model.been.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '3fcff7ef3102b082aeb165a6fc3e332ead2affcf7a6c91c43bb36da5add2dbb7',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '14ff3e19a57f11b9',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-been/2025-12-18/model.been.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.been.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '3fcff7ef3102b082aeb165a6fc3e332ead2affcf7a6c91c43bb36da5add2dbb7',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786835,\n blobBlockLength: 262,\n blobByteOffset: 51562645975,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-been/2025-12-18/lex.50.50.been.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.been.s2t.bin',\n expectedSize: 4565784,\n sha256Checksum: 'eec822f871f570f99ac70b13fe480fc6f612d37c69c047834676f1c9919d4aca',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786764,\n blobBlockLength: 70,\n blobByteOffset: 51558077963\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-been/2025-12-18/vocab.been.spm',\n registrySource: 's3',\n targetName: 'vocab.been.spm',\n expectedSize: 931896,\n sha256Checksum: 'dc235e4bfc4cdc25e0e1b36e07e29435b140861b4b94b8197bc715ddc7be912f',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787097,\n blobBlockLength: 15,\n blobByteOffset: 51579787026\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-been/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: 'a908cec72179edbbf61f3e2572c83f16739b31267371be3f59f6c4f783ffb519',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 786834,\n blobBlockLength: 1,\n blobByteOffset: 51562643747\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_BE_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-been/2025-12-18/vocab.been.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787097,\n blobBlockLength: 15,\n blobByteOffset: 51579787026,\n modelId: 'vocab.been.spm',\n addon: 'nmt',\n expectedSize: 931896,\n sha256Checksum: 'dc235e4bfc4cdc25e0e1b36e07e29435b140861b4b94b8197bc715ddc7be912f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_BG_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bgen/2025-12-18/lex.50.50.bgen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787112,\n blobBlockLength: 67,\n blobByteOffset: 51580718922,\n modelId: 'lex.50.50.bgen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4355920,\n sha256Checksum: 'e661dfdd88aa9ff9606f237a60c910d97c2e710960199589579f628c5d8aa899',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_3',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bgen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787179,\n blobBlockLength: 1,\n blobByteOffset: 51585074842,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2237,\n sha256Checksum: 'edfd20aca66a2f049f5430f44b5c43a501edb67b513e67cfce0a5eee631ea59b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_BG_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bgen/2025-12-18/model.bgen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787180,\n blobBlockLength: 482,\n blobByteOffset: 51585077079,\n modelId: 'model.bgen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '78f7e6e1435cc2d4a29cf597f493187fe29ddb9ce9d3766c287e2e6d37052d01',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '829410b4d0ee9bf7',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bgen/2025-12-18/model.bgen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.bgen.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '78f7e6e1435cc2d4a29cf597f493187fe29ddb9ce9d3766c287e2e6d37052d01',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787180,\n blobBlockLength: 482,\n blobByteOffset: 51585077079,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bgen/2025-12-18/lex.50.50.bgen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.bgen.s2t.bin',\n expectedSize: 4355920,\n sha256Checksum: 'e661dfdd88aa9ff9606f237a60c910d97c2e710960199589579f628c5d8aa899',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787112,\n blobBlockLength: 67,\n blobByteOffset: 51580718922\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bgen/2025-12-18/vocab.bgen.spm',\n registrySource: 's3',\n targetName: 'vocab.bgen.spm',\n expectedSize: 922482,\n sha256Checksum: '4bafad5fcc0e771ed82233d1e99d69dcb96487b430702f7e688615c8a61f3df4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787662,\n blobBlockLength: 15,\n blobByteOffset: 51616638866\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bgen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2237,\n sha256Checksum: 'edfd20aca66a2f049f5430f44b5c43a501edb67b513e67cfce0a5eee631ea59b',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787179,\n blobBlockLength: 1,\n blobByteOffset: 51585074842\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_BG_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bgen/2025-12-18/vocab.bgen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787662,\n blobBlockLength: 15,\n blobByteOffset: 51616638866,\n modelId: 'vocab.bgen.spm',\n addon: 'nmt',\n expectedSize: 922482,\n sha256Checksum: '4bafad5fcc0e771ed82233d1e99d69dcb96487b430702f7e688615c8a61f3df4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_BN_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bnen/2025-12-18/lex.50.50.bnen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787677,\n blobBlockLength: 74,\n blobByteOffset: 51617561348,\n modelId: 'lex.50.50.bnen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4793596,\n sha256Checksum: 'aea901a6bd8722962551c0349b8570af684444028b62bbff465be9931e6e9800',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_4',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bnen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787751,\n blobBlockLength: 1,\n blobByteOffset: 51622354944,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '7c8ee65ba580d162c9c4c06a6bc45b6aaa2215ff7bfdd27751581f61179495a5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_BN_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bnen/2025-12-18/model.bnen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787752,\n blobBlockLength: 262,\n blobByteOffset: 51622357172,\n modelId: 'model.bnen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '14c1d9e92918e8d04cb0ed351ae386c3b5d5c62a6dc601d9515f4c7e6c2a3a56',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'b5197154cc3e05f1',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bnen/2025-12-18/model.bnen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.bnen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '14c1d9e92918e8d04cb0ed351ae386c3b5d5c62a6dc601d9515f4c7e6c2a3a56',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787752,\n blobBlockLength: 262,\n blobByteOffset: 51622357172,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bnen/2025-12-18/lex.50.50.bnen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.bnen.s2t.bin',\n expectedSize: 4793596,\n sha256Checksum: 'aea901a6bd8722962551c0349b8570af684444028b62bbff465be9931e6e9800',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787677,\n blobBlockLength: 74,\n blobByteOffset: 51617561348\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bnen/2025-12-18/vocab.bnen.spm',\n registrySource: 's3',\n targetName: 'vocab.bnen.spm',\n expectedSize: 981300,\n sha256Checksum: '8a6a4de992ccd47bae4227ec6420866374137d6cc88ed6e8b2f16b36322a9d37',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788014,\n blobBlockLength: 15,\n blobByteOffset: 51639498223\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bnen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '7c8ee65ba580d162c9c4c06a6bc45b6aaa2215ff7bfdd27751581f61179495a5',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 787751,\n blobBlockLength: 1,\n blobByteOffset: 51622354944\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_BN_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bnen/2025-12-18/vocab.bnen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788014,\n blobBlockLength: 15,\n blobByteOffset: 51639498223,\n modelId: 'vocab.bnen.spm',\n addon: 'nmt',\n expectedSize: 981300,\n sha256Checksum: '8a6a4de992ccd47bae4227ec6420866374137d6cc88ed6e8b2f16b36322a9d37',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_BS_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bsen/2025-12-18/lex.50.50.bsen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788029,\n blobBlockLength: 44,\n blobByteOffset: 51640479523,\n modelId: 'lex.50.50.bsen.s2t.bin',\n addon: 'nmt',\n expectedSize: 2830904,\n sha256Checksum: 'f19947ad4c95c8f2ded27052af2007dc9facbaba5dfac6e84c5ea2c0a0899c09',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_5',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bsen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788073,\n blobBlockLength: 1,\n blobByteOffset: 51643310427,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2250,\n sha256Checksum: '48162b9ae086ad8e72275ece2245215975186de3601d5a74719de19ad88741b6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_BS_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bsen/2025-12-18/model.bsen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788074,\n blobBlockLength: 262,\n blobByteOffset: 51643312677,\n modelId: 'model.bsen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '47cf33ca3ebadf7e541e19b7cb5ff82d5be8c793fbdcd6133f68cb53333ac0cb',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'e759221d51cd5cf6',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bsen/2025-12-18/model.bsen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.bsen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '47cf33ca3ebadf7e541e19b7cb5ff82d5be8c793fbdcd6133f68cb53333ac0cb',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788074,\n blobBlockLength: 262,\n blobByteOffset: 51643312677,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bsen/2025-12-18/lex.50.50.bsen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.bsen.s2t.bin',\n expectedSize: 2830904,\n sha256Checksum: 'f19947ad4c95c8f2ded27052af2007dc9facbaba5dfac6e84c5ea2c0a0899c09',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788029,\n blobBlockLength: 44,\n blobByteOffset: 51640479523\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bsen/2025-12-18/vocab.bsen.spm',\n registrySource: 's3',\n targetName: 'vocab.bsen.spm',\n expectedSize: 796425,\n sha256Checksum: '712cf46266895164bf58903654b5d5f9d02c927c34a3b9f2784f082f356f3434',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788336,\n blobBlockLength: 13,\n blobByteOffset: 51660453728\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bsen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2250,\n sha256Checksum: '48162b9ae086ad8e72275ece2245215975186de3601d5a74719de19ad88741b6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788073,\n blobBlockLength: 1,\n blobByteOffset: 51643310427\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_BS_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-bsen/2025-12-18/vocab.bsen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788336,\n blobBlockLength: 13,\n blobByteOffset: 51660453728,\n modelId: 'vocab.bsen.spm',\n addon: 'nmt',\n expectedSize: 796425,\n sha256Checksum: '712cf46266895164bf58903654b5d5f9d02c927c34a3b9f2784f082f356f3434',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_CA_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-caen/2025-12-18/lex.50.50.caen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788349,\n blobBlockLength: 67,\n blobByteOffset: 51661250153,\n modelId: 'lex.50.50.caen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4359552,\n sha256Checksum: '74880047539925630601d61aa6c29a0672046236ca6cf33eeaf6f6f6690e914e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_6',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-caen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788416,\n blobBlockLength: 1,\n blobByteOffset: 51665609705,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: 'b24dc3ac173865a305d931eb6628ae4dd3c38efdbda585a93f76ff086f623d80',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_CA_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-caen/2025-12-18/model.caen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788417,\n blobBlockLength: 482,\n blobByteOffset: 51665611943,\n modelId: 'model.caen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'b7f9c70823052f60c257eb1c4eff893abea3648aa9d1c23c8774e1e5ef061434',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '67643864e93b3332',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-caen/2025-12-18/model.caen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.caen.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'b7f9c70823052f60c257eb1c4eff893abea3648aa9d1c23c8774e1e5ef061434',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788417,\n blobBlockLength: 482,\n blobByteOffset: 51665611943,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-caen/2025-12-18/lex.50.50.caen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.caen.s2t.bin',\n expectedSize: 4359552,\n sha256Checksum: '74880047539925630601d61aa6c29a0672046236ca6cf33eeaf6f6f6690e914e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788349,\n blobBlockLength: 67,\n blobByteOffset: 51661250153\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-caen/2025-12-18/vocab.caen.spm',\n registrySource: 's3',\n targetName: 'vocab.caen.spm',\n expectedSize: 810273,\n sha256Checksum: '6d22da90905873c2793d0805e34e5c27901b16e7e7a7a427696696f67dfe1f0e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788899,\n blobBlockLength: 13,\n blobByteOffset: 51697173730\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-caen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: 'b24dc3ac173865a305d931eb6628ae4dd3c38efdbda585a93f76ff086f623d80',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788416,\n blobBlockLength: 1,\n blobByteOffset: 51665609705\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_CA_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-caen/2025-12-18/vocab.caen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788899,\n blobBlockLength: 13,\n blobByteOffset: 51697173730,\n modelId: 'vocab.caen.spm',\n addon: 'nmt',\n expectedSize: 810273,\n sha256Checksum: '6d22da90905873c2793d0805e34e5c27901b16e7e7a7a427696696f67dfe1f0e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_CS_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-csen/2025-12-18/lex.50.50.csen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818114,\n blobBlockLength: 77,\n blobByteOffset: 53611811400,\n modelId: 'lex.50.50.csen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4990588,\n sha256Checksum: 'eba6bd9575251525f1941640ea0b6527a06e72a46421579eafea04d635ee20a8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_7',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-csen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818191,\n blobBlockLength: 1,\n blobByteOffset: 53616801988,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: 'b2f44477cb1d92ca92217a195808eef830afd7ef525a3633215ca24d7da6396f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_CS_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-csen/2025-12-18/model.csen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818192,\n blobBlockLength: 482,\n blobByteOffset: 53616804226,\n modelId: 'model.csen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'c815273b31074492eaab0ccd78d33d7ac16f94088707ab2492abaedcb9ee0b75',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '35e18b8d74f554e4',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-csen/2025-12-18/model.csen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.csen.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'c815273b31074492eaab0ccd78d33d7ac16f94088707ab2492abaedcb9ee0b75',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818192,\n blobBlockLength: 482,\n blobByteOffset: 53616804226,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-csen/2025-12-18/lex.50.50.csen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.csen.s2t.bin',\n expectedSize: 4990588,\n sha256Checksum: 'eba6bd9575251525f1941640ea0b6527a06e72a46421579eafea04d635ee20a8',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818114,\n blobBlockLength: 77,\n blobByteOffset: 53611811400\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-csen/2025-12-18/vocab.csen.spm',\n registrySource: 's3',\n targetName: 'vocab.csen.spm',\n expectedSize: 815154,\n sha256Checksum: 'ee4b8ce15c8e1237c5f7a2d04741341beb0a5d5c09820f7ec08f13ee2b212755',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818674,\n blobBlockLength: 13,\n blobByteOffset: 53648366013\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-csen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: 'b2f44477cb1d92ca92217a195808eef830afd7ef525a3633215ca24d7da6396f',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818191,\n blobBlockLength: 1,\n blobByteOffset: 53616801988\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_CS_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-csen/2025-12-18/vocab.csen.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818674,\n blobBlockLength: 13,\n blobByteOffset: 53648366013,\n modelId: 'vocab.csen.spm',\n addon: 'nmt',\n expectedSize: 815154,\n sha256Checksum: 'ee4b8ce15c8e1237c5f7a2d04741341beb0a5d5c09820f7ec08f13ee2b212755',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_DA_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-daen/2025-12-18/lex.50.50.daen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788912,\n blobBlockLength: 69,\n blobByteOffset: 51697984003,\n modelId: 'lex.50.50.daen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4489412,\n sha256Checksum: 'e5f50fba646e0d3cedf2957575aa84c3bdca6798ce32ccd63c956fc043d774a3',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_8',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-daen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788981,\n blobBlockLength: 1,\n blobByteOffset: 51702473415,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: '165556236135e9344e132f08100f2ad8bbd738d73973e85b5afd1edc4c9a46ee',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_DA_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-daen/2025-12-18/model.daen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788982,\n blobBlockLength: 262,\n blobByteOffset: 51702475663,\n modelId: 'model.daen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '2c1ace24220c905404bbb1de14bfeda8a391ef8d6c56f3b193a9d3e340d99b12',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '50b60f57ab2b67ce',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-daen/2025-12-18/model.daen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.daen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '2c1ace24220c905404bbb1de14bfeda8a391ef8d6c56f3b193a9d3e340d99b12',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788982,\n blobBlockLength: 262,\n blobByteOffset: 51702475663,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-daen/2025-12-18/lex.50.50.daen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.daen.s2t.bin',\n expectedSize: 4489412,\n sha256Checksum: 'e5f50fba646e0d3cedf2957575aa84c3bdca6798ce32ccd63c956fc043d774a3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788912,\n blobBlockLength: 69,\n blobByteOffset: 51697984003\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-daen/2025-12-18/vocab.daen.spm',\n registrySource: 's3',\n targetName: 'vocab.daen.spm',\n expectedSize: 796018,\n sha256Checksum: 'b9392fcd9c53b802628d33a160f6eb52ca3d25a07ec9e015ab93b6bd5c7e8033',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789244,\n blobBlockLength: 13,\n blobByteOffset: 51719616714\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-daen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: '165556236135e9344e132f08100f2ad8bbd738d73973e85b5afd1edc4c9a46ee',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 788981,\n blobBlockLength: 1,\n blobByteOffset: 51702473415\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_DA_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-daen/2025-12-18/vocab.daen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789244,\n blobBlockLength: 13,\n blobByteOffset: 51719616714,\n modelId: 'vocab.daen.spm',\n addon: 'nmt',\n expectedSize: 796018,\n sha256Checksum: 'b9392fcd9c53b802628d33a160f6eb52ca3d25a07ec9e015ab93b6bd5c7e8033',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_DE_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-deen/2025-12-18/lex.50.50.deen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789257,\n blobBlockLength: 76,\n blobByteOffset: 51720412732,\n modelId: 'lex.50.50.deen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4945796,\n sha256Checksum: '113b98460468360cca68c042e1cddf49c4e1931cbb975ed04349c9a3bd607010',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_9',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-deen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789333,\n blobBlockLength: 1,\n blobByteOffset: 51725358528,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '30a0329a98515bd2b595186b047f980213a9759dad0757a1b5f7cdff8046f0d4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_DE_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-deen/2025-12-18/model.deen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789334,\n blobBlockLength: 482,\n blobByteOffset: 51725360766,\n modelId: 'model.deen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '3e6f7c2c2425d10824797270b382bee718ff34af2cab9308841c82ca46dc6f20',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '42c96007182cb8a3',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-deen/2025-12-18/model.deen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.deen.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '3e6f7c2c2425d10824797270b382bee718ff34af2cab9308841c82ca46dc6f20',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789334,\n blobBlockLength: 482,\n blobByteOffset: 51725360766,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-deen/2025-12-18/lex.50.50.deen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.deen.s2t.bin',\n expectedSize: 4945796,\n sha256Checksum: '113b98460468360cca68c042e1cddf49c4e1931cbb975ed04349c9a3bd607010',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789257,\n blobBlockLength: 76,\n blobByteOffset: 51720412732\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-deen/2025-12-18/vocab.deen.spm',\n registrySource: 's3',\n targetName: 'vocab.deen.spm',\n expectedSize: 810073,\n sha256Checksum: '69f730becafa48e3bb2c244eab66456877c08959a02f2bd5519b5a3088b62f9c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789816,\n blobBlockLength: 13,\n blobByteOffset: 51756922553\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-deen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '30a0329a98515bd2b595186b047f980213a9759dad0757a1b5f7cdff8046f0d4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789333,\n blobBlockLength: 1,\n blobByteOffset: 51725358528\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_DE_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-deen/2025-12-18/vocab.deen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789816,\n blobBlockLength: 13,\n blobByteOffset: 51756922553,\n modelId: 'vocab.deen.spm',\n addon: 'nmt',\n expectedSize: 810073,\n sha256Checksum: '69f730becafa48e3bb2c244eab66456877c08959a02f2bd5519b5a3088b62f9c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EL_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-elen/2025-12-18/lex.50.50.elen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789829,\n blobBlockLength: 66,\n blobByteOffset: 51757732626,\n modelId: 'lex.50.50.elen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4295860,\n sha256Checksum: '2c969b069b3d230feddd17db2d74eb658a9b33b960d2d40adbca5496c9784e85',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_10',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-elen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789895,\n blobBlockLength: 1,\n blobByteOffset: 51762028486,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: 'ec29a92f76d64539344ef5f36e2d843f5fb96e39a7f80d278f8e977a7d115b08',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EL_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-elen/2025-12-18/model.elen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789896,\n blobBlockLength: 262,\n blobByteOffset: 51762030734,\n modelId: 'model.elen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '0a43c3716156061494d995d0c88113e789f8d919e0c88a15bc1ad360e0482a8c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '478b6f98554b4620',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-elen/2025-12-18/model.elen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.elen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '0a43c3716156061494d995d0c88113e789f8d919e0c88a15bc1ad360e0482a8c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789896,\n blobBlockLength: 262,\n blobByteOffset: 51762030734,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-elen/2025-12-18/lex.50.50.elen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.elen.s2t.bin',\n expectedSize: 4295860,\n sha256Checksum: '2c969b069b3d230feddd17db2d74eb658a9b33b960d2d40adbca5496c9784e85',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789829,\n blobBlockLength: 66,\n blobByteOffset: 51757732626\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-elen/2025-12-18/vocab.elen.spm',\n registrySource: 's3',\n targetName: 'vocab.elen.spm',\n expectedSize: 894960,\n sha256Checksum: 'e1a1298cc2cf3968f3d7cc3b36bc463a4e1bf154272e8fb2f15142b54edc4349',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790158,\n blobBlockLength: 14,\n blobByteOffset: 51779171785\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-elen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: 'ec29a92f76d64539344ef5f36e2d843f5fb96e39a7f80d278f8e977a7d115b08',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 789895,\n blobBlockLength: 1,\n blobByteOffset: 51762028486\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EL_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-elen/2025-12-18/vocab.elen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790158,\n blobBlockLength: 14,\n blobByteOffset: 51779171785,\n modelId: 'vocab.elen.spm',\n addon: 'nmt',\n expectedSize: 894960,\n sha256Checksum: 'e1a1298cc2cf3968f3d7cc3b36bc463a4e1bf154272e8fb2f15142b54edc4349',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_AR_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enar/2025-12-18/lex.50.50.enar.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818687,\n blobBlockLength: 48,\n blobByteOffset: 53649181167,\n modelId: 'lex.50.50.enar.s2t.bin',\n addon: 'nmt',\n expectedSize: 3139692,\n sha256Checksum: '2b7194817c5dd9225ca90c0d908cc92e1d6d1f45625781a5feb037ac568d6a61',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_11',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enar/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818735,\n blobBlockLength: 1,\n blobByteOffset: 53652320859,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: 'cecd66082bbfdec98e9948ef0480e992de00e5054fd915aa89c76683f14f71ac',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_AR',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enar/2025-12-18/model.enar.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818736,\n blobBlockLength: 482,\n blobByteOffset: 53652323097,\n modelId: 'model.enar.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'ae659d7045fc2e5d6ba50583586a5d94ee4358d92c019847e37b57a0e627faa8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'e5cb4ce92312b46c',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enar/2025-12-18/model.enar.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enar.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'ae659d7045fc2e5d6ba50583586a5d94ee4358d92c019847e37b57a0e627faa8',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818736,\n blobBlockLength: 482,\n blobByteOffset: 53652323097,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enar/2025-12-18/lex.50.50.enar.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enar.s2t.bin',\n expectedSize: 3139692,\n sha256Checksum: '2b7194817c5dd9225ca90c0d908cc92e1d6d1f45625781a5feb037ac568d6a61',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818687,\n blobBlockLength: 48,\n blobByteOffset: 53649181167\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enar/2025-12-18/vocab.enar.spm',\n registrySource: 's3',\n targetName: 'vocab.enar.spm',\n expectedSize: 863591,\n sha256Checksum: '8d93c54aa5e2044c416ec680b5ff9af0227bd698521666e8b1a1ea1b041fbae8',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819218,\n blobBlockLength: 14,\n blobByteOffset: 53683884884\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enar/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: 'cecd66082bbfdec98e9948ef0480e992de00e5054fd915aa89c76683f14f71ac',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 818735,\n blobBlockLength: 1,\n blobByteOffset: 53652320859\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_AR_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enar/2025-12-18/vocab.enar.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819218,\n blobBlockLength: 14,\n blobByteOffset: 53683884884,\n modelId: 'vocab.enar.spm',\n addon: 'nmt',\n expectedSize: 863591,\n sha256Checksum: '8d93c54aa5e2044c416ec680b5ff9af0227bd698521666e8b1a1ea1b041fbae8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_AZ_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enaz/2025-12-18/lex.50.50.enaz.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790172,\n blobBlockLength: 51,\n blobByteOffset: 51780066745,\n modelId: 'lex.50.50.enaz.s2t.bin',\n addon: 'nmt',\n expectedSize: 3332384,\n sha256Checksum: 'f87f5de2674cf48562df60843a658e0000bedfd75aa8ffa5e251e2cb1321f255',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_12',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enaz/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790223,\n blobBlockLength: 1,\n blobByteOffset: 51783399129,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '6a154ec41e390aaaaf579f6e891042cee03f22ced96f6027182565cb64d298f5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_AZ',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enaz/2025-12-18/model.enaz.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790224,\n blobBlockLength: 262,\n blobByteOffset: 51783401357,\n modelId: 'model.enaz.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '9c87aa09ff4f81c320993fe412624ca3584fe9ccf5371247d64f1117dffcf168',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'c68ecaa88ac22553',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enaz/2025-12-18/model.enaz.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enaz.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '9c87aa09ff4f81c320993fe412624ca3584fe9ccf5371247d64f1117dffcf168',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790224,\n blobBlockLength: 262,\n blobByteOffset: 51783401357,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enaz/2025-12-18/lex.50.50.enaz.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enaz.s2t.bin',\n expectedSize: 3332384,\n sha256Checksum: 'f87f5de2674cf48562df60843a658e0000bedfd75aa8ffa5e251e2cb1321f255',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790172,\n blobBlockLength: 51,\n blobByteOffset: 51780066745\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enaz/2025-12-18/vocab.enaz.spm',\n registrySource: 's3',\n targetName: 'vocab.enaz.spm',\n expectedSize: 835729,\n sha256Checksum: 'afc1f4d7d20cd04addd3bc605acfdb83afbf62fb76d1a6bbc94cf42bf0286108',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790486,\n blobBlockLength: 13,\n blobByteOffset: 51800542408\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enaz/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '6a154ec41e390aaaaf579f6e891042cee03f22ced96f6027182565cb64d298f5',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790223,\n blobBlockLength: 1,\n blobByteOffset: 51783399129\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_AZ_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enaz/2025-12-18/vocab.enaz.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790486,\n blobBlockLength: 13,\n blobByteOffset: 51800542408,\n modelId: 'vocab.enaz.spm',\n addon: 'nmt',\n expectedSize: 835729,\n sha256Checksum: 'afc1f4d7d20cd04addd3bc605acfdb83afbf62fb76d1a6bbc94cf42bf0286108',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_BG_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbg/2026-04-28/lex.50.50.enbg.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1092636,\n blobBlockLength: 47,\n blobByteOffset: 71604177246,\n modelId: 'lex.50.50.enbg.s2t.bin',\n addon: 'nmt',\n expectedSize: 3075948,\n sha256Checksum: '93d4ca4412db269cc4164cbfa04c08edd0f65690c8264d6215a0522d4a13ec1a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_13',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbg/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1092683,\n blobBlockLength: 1,\n blobByteOffset: 71607253194,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 519,\n sha256Checksum: '5c36964474cc83d2a1a1372183df5e5d14840eb84de970fd91f762ffed084f18',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_BG',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbg/2026-04-28/model.enbg.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1092684,\n blobBlockLength: 482,\n blobByteOffset: 71607253713,\n modelId: 'model.enbg.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'e2b30db98ac6706efc893067a74e51f36f015a8f820fe8a4f0f5052fa6a22f30',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '69a6b211d3b9d1ba',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbg/2026-04-28/model.enbg.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enbg.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'e2b30db98ac6706efc893067a74e51f36f015a8f820fe8a4f0f5052fa6a22f30',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1092684,\n blobBlockLength: 482,\n blobByteOffset: 71607253713,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbg/2026-04-28/lex.50.50.enbg.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enbg.s2t.bin',\n expectedSize: 3075948,\n sha256Checksum: '93d4ca4412db269cc4164cbfa04c08edd0f65690c8264d6215a0522d4a13ec1a',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1092636,\n blobBlockLength: 47,\n blobByteOffset: 71604177246\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbg/2026-04-28/vocab.enbg.spm',\n registrySource: 's3',\n targetName: 'vocab.enbg.spm',\n expectedSize: 922482,\n sha256Checksum: '4bafad5fcc0e771ed82233d1e99d69dcb96487b430702f7e688615c8a61f3df4',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093166,\n blobBlockLength: 15,\n blobByteOffset: 71638815500\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbg/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 519,\n sha256Checksum: '5c36964474cc83d2a1a1372183df5e5d14840eb84de970fd91f762ffed084f18',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1092683,\n blobBlockLength: 1,\n blobByteOffset: 71607253194\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_BG_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbg/2026-04-28/vocab.enbg.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093166,\n blobBlockLength: 15,\n blobByteOffset: 71638815500,\n modelId: 'vocab.enbg.spm',\n addon: 'nmt',\n expectedSize: 922482,\n sha256Checksum: '4bafad5fcc0e771ed82233d1e99d69dcb96487b430702f7e688615c8a61f3df4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_BN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbn/2025-12-18/lex.50.50.enbn.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790863,\n blobBlockLength: 49,\n blobByteOffset: 51825048450,\n modelId: 'lex.50.50.enbn.s2t.bin',\n addon: 'nmt',\n expectedSize: 3207488,\n sha256Checksum: '74ad4234a0a9cf57b21d99b34fefc14f7c731d7e76da7940eb0155c13a234b5e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_14',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbn/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790912,\n blobBlockLength: 1,\n blobByteOffset: 51828255938,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '24a0fcdfdb627a7af2c16ed09de26b751b405a58d5601bd87fb4f1f15bd15a0c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_BN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbn/2025-12-18/model.enbn.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790913,\n blobBlockLength: 262,\n blobByteOffset: 51828258166,\n modelId: 'model.enbn.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'b63c8d5f8fdc1fcb8bbb2d20c751faab94af67ee1822427665119c93a11f6596',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '24f397fef654c109',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbn/2025-12-18/model.enbn.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enbn.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'b63c8d5f8fdc1fcb8bbb2d20c751faab94af67ee1822427665119c93a11f6596',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790913,\n blobBlockLength: 262,\n blobByteOffset: 51828258166,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbn/2025-12-18/lex.50.50.enbn.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enbn.s2t.bin',\n expectedSize: 3207488,\n sha256Checksum: '74ad4234a0a9cf57b21d99b34fefc14f7c731d7e76da7940eb0155c13a234b5e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790863,\n blobBlockLength: 49,\n blobByteOffset: 51825048450\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbn/2025-12-18/vocab.enbn.spm',\n registrySource: 's3',\n targetName: 'vocab.enbn.spm',\n expectedSize: 981226,\n sha256Checksum: '8895bebb290adc2a5ef46710d81be13d341883a8c6c233e0c060f968df0deef4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791175,\n blobBlockLength: 15,\n blobByteOffset: 51845399217\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbn/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '24a0fcdfdb627a7af2c16ed09de26b751b405a58d5601bd87fb4f1f15bd15a0c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 790912,\n blobBlockLength: 1,\n blobByteOffset: 51828255938\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_BN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbn/2025-12-18/vocab.enbn.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791175,\n blobBlockLength: 15,\n blobByteOffset: 51845399217,\n modelId: 'vocab.enbn.spm',\n addon: 'nmt',\n expectedSize: 981226,\n sha256Checksum: '8895bebb290adc2a5ef46710d81be13d341883a8c6c233e0c060f968df0deef4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_BS_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbs/2026-04-28/lex.50.50.enbs.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094285,\n blobBlockLength: 50,\n blobByteOffset: 71711754345,\n modelId: 'lex.50.50.enbs.s2t.bin',\n addon: 'nmt',\n expectedSize: 3214628,\n sha256Checksum: '6847523f4d5df9425cda606e73f404c07e19452dac7659bdcc92743c46cba3c0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_15',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbs/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094335,\n blobBlockLength: 1,\n blobByteOffset: 71714968973,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 518,\n sha256Checksum: '77e9bbcb1e6648909203ff2aa7779dabcf5260233bd92998ab57d5d7a8cf93e0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_BS',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbs/2026-04-28/model.enbs.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094336,\n blobBlockLength: 482,\n blobByteOffset: 71714969491,\n modelId: 'model.enbs.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '27575113fffad6c45a0bad36bd1823c4f319ed30f65ec134815b67bdae0d9f8d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'eda67b30f3be8551',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbs/2026-04-28/model.enbs.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enbs.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '27575113fffad6c45a0bad36bd1823c4f319ed30f65ec134815b67bdae0d9f8d',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094336,\n blobBlockLength: 482,\n blobByteOffset: 71714969491,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbs/2026-04-28/lex.50.50.enbs.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enbs.s2t.bin',\n expectedSize: 3214628,\n sha256Checksum: '6847523f4d5df9425cda606e73f404c07e19452dac7659bdcc92743c46cba3c0',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094285,\n blobBlockLength: 50,\n blobByteOffset: 71711754345\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbs/2026-04-28/vocab.enbs.spm',\n registrySource: 's3',\n targetName: 'vocab.enbs.spm',\n expectedSize: 823444,\n sha256Checksum: 'dfed9c3e08e85a22feac7748a20fa981dca94f358115af2f45d704b9cc944cc8',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094818,\n blobBlockLength: 13,\n blobByteOffset: 71746531278\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbs/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 518,\n sha256Checksum: '77e9bbcb1e6648909203ff2aa7779dabcf5260233bd92998ab57d5d7a8cf93e0',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094335,\n blobBlockLength: 1,\n blobByteOffset: 71714968973\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_BS_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enbs/2026-04-28/vocab.enbs.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094818,\n blobBlockLength: 13,\n blobByteOffset: 71746531278,\n modelId: 'vocab.enbs.spm',\n addon: 'nmt',\n expectedSize: 823444,\n sha256Checksum: 'dfed9c3e08e85a22feac7748a20fa981dca94f358115af2f45d704b9cc944cc8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_CA_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enca/2025-12-18/lex.50.50.enca.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791190,\n blobBlockLength: 67,\n blobByteOffset: 51846380443,\n modelId: 'lex.50.50.enca.s2t.bin',\n addon: 'nmt',\n expectedSize: 4344092,\n sha256Checksum: '8f2151a7fb75454f5167a8df8758ec02ab02c0302893851bad7caa6b729822fb',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_16',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enca/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791257,\n blobBlockLength: 1,\n blobByteOffset: 51850724535,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: 'b31e318055c5a566958eff737b11aec1d11c7acf353a59f5a8c98e65b4185fd6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_CA',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enca/2025-12-18/model.enca.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791258,\n blobBlockLength: 482,\n blobByteOffset: 51850726773,\n modelId: 'model.enca.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '735881c99ff303e55eb2e92a3b86762523d5dd1a4797b2574b851062051426ee',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '49bf0fb229473648',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enca/2025-12-18/model.enca.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enca.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '735881c99ff303e55eb2e92a3b86762523d5dd1a4797b2574b851062051426ee',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791258,\n blobBlockLength: 482,\n blobByteOffset: 51850726773,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enca/2025-12-18/lex.50.50.enca.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enca.s2t.bin',\n expectedSize: 4344092,\n sha256Checksum: '8f2151a7fb75454f5167a8df8758ec02ab02c0302893851bad7caa6b729822fb',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791190,\n blobBlockLength: 67,\n blobByteOffset: 51846380443\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enca/2025-12-18/vocab.enca.spm',\n registrySource: 's3',\n targetName: 'vocab.enca.spm',\n expectedSize: 810653,\n sha256Checksum: '64ebcb5f6cb5a954ced615e48a44a85e77a644e4910544014b299b8ee0fa1b1f',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791740,\n blobBlockLength: 13,\n blobByteOffset: 51882288560\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enca/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: 'b31e318055c5a566958eff737b11aec1d11c7acf353a59f5a8c98e65b4185fd6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791257,\n blobBlockLength: 1,\n blobByteOffset: 51850724535\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_CA_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enca/2025-12-18/vocab.enca.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791740,\n blobBlockLength: 13,\n blobByteOffset: 51882288560,\n modelId: 'vocab.enca.spm',\n addon: 'nmt',\n expectedSize: 810653,\n sha256Checksum: '64ebcb5f6cb5a954ced615e48a44a85e77a644e4910544014b299b8ee0fa1b1f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_CS_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-encs/2025-12-18/lex.50.50.encs.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819232,\n blobBlockLength: 55,\n blobByteOffset: 53684748475,\n modelId: 'lex.50.50.encs.s2t.bin',\n addon: 'nmt',\n expectedSize: 3572436,\n sha256Checksum: '699b9b59fe3acbcddf831380024b2e139f2cbe225dce96d59ade2b159318f58b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_17',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-encs/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819287,\n blobBlockLength: 1,\n blobByteOffset: 53688320911,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '3020fbce4d4629677a2cb4b8216cc33a79b0829f95fe193c23a6342949ed05fd',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_CS',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-encs/2025-12-18/model.encs.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819288,\n blobBlockLength: 482,\n blobByteOffset: 53688323149,\n modelId: 'model.encs.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '1d7855f91c3e2b8ef79fbea62707d46ceb8a1ad01834ef6dd500f32a7006cc2c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '904e5a118f3e5696',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-encs/2025-12-18/model.encs.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.encs.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '1d7855f91c3e2b8ef79fbea62707d46ceb8a1ad01834ef6dd500f32a7006cc2c',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819288,\n blobBlockLength: 482,\n blobByteOffset: 53688323149,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-encs/2025-12-18/lex.50.50.encs.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.encs.s2t.bin',\n expectedSize: 3572436,\n sha256Checksum: '699b9b59fe3acbcddf831380024b2e139f2cbe225dce96d59ade2b159318f58b',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819232,\n blobBlockLength: 55,\n blobByteOffset: 53684748475\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-encs/2025-12-18/vocab.encs.spm',\n registrySource: 's3',\n targetName: 'vocab.encs.spm',\n expectedSize: 815154,\n sha256Checksum: 'ee4b8ce15c8e1237c5f7a2d04741341beb0a5d5c09820f7ec08f13ee2b212755',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819770,\n blobBlockLength: 13,\n blobByteOffset: 53719884936\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-encs/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '3020fbce4d4629677a2cb4b8216cc33a79b0829f95fe193c23a6342949ed05fd',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819287,\n blobBlockLength: 1,\n blobByteOffset: 53688320911\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_CS_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-encs/2025-12-18/vocab.encs.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819770,\n blobBlockLength: 13,\n blobByteOffset: 53719884936,\n modelId: 'vocab.encs.spm',\n addon: 'nmt',\n expectedSize: 815154,\n sha256Checksum: 'ee4b8ce15c8e1237c5f7a2d04741341beb0a5d5c09820f7ec08f13ee2b212755',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_DA_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enda/2025-12-18/lex.50.50.enda.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791753,\n blobBlockLength: 59,\n blobByteOffset: 51883099213,\n modelId: 'lex.50.50.enda.s2t.bin',\n addon: 'nmt',\n expectedSize: 3864788,\n sha256Checksum: 'd183786cae59a5df06d5b00c58e3ec2a5791d302240a65540fc6a1da2b66eada',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_18',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enda/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791812,\n blobBlockLength: 1,\n blobByteOffset: 51886964001,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: '479af477059449d8c3e74af5da3232ad959d6e14e27a8bd81f4eaf3dd7d4656c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_DA',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enda/2025-12-18/model.enda.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791813,\n blobBlockLength: 262,\n blobByteOffset: 51886966249,\n modelId: 'model.enda.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '0157ed1162dd5a7a0fc6a3cc86014ec21cb47a8febf77164df24d8921270bb29',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'e8c8bd8ed62cfcfb',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enda/2025-12-18/model.enda.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enda.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '0157ed1162dd5a7a0fc6a3cc86014ec21cb47a8febf77164df24d8921270bb29',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791813,\n blobBlockLength: 262,\n blobByteOffset: 51886966249,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enda/2025-12-18/lex.50.50.enda.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enda.s2t.bin',\n expectedSize: 3864788,\n sha256Checksum: 'd183786cae59a5df06d5b00c58e3ec2a5791d302240a65540fc6a1da2b66eada',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791753,\n blobBlockLength: 59,\n blobByteOffset: 51883099213\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enda/2025-12-18/vocab.enda.spm',\n registrySource: 's3',\n targetName: 'vocab.enda.spm',\n expectedSize: 795349,\n sha256Checksum: 'b06349522bf053e4a6f01efc4d1450e4fe35717a938a82831988c087229c9619',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792075,\n blobBlockLength: 13,\n blobByteOffset: 51904107300\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enda/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: '479af477059449d8c3e74af5da3232ad959d6e14e27a8bd81f4eaf3dd7d4656c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 791812,\n blobBlockLength: 1,\n blobByteOffset: 51886964001\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_DA_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enda/2025-12-18/vocab.enda.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792075,\n blobBlockLength: 13,\n blobByteOffset: 51904107300,\n modelId: 'vocab.enda.spm',\n addon: 'nmt',\n expectedSize: 795349,\n sha256Checksum: 'b06349522bf053e4a6f01efc4d1450e4fe35717a938a82831988c087229c9619',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_DE_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ende/2025-12-18/lex.50.50.ende.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792088,\n blobBlockLength: 67,\n blobByteOffset: 51904902649,\n modelId: 'lex.50.50.ende.s2t.bin',\n addon: 'nmt',\n expectedSize: 4347672,\n sha256Checksum: '7ed39f1cffbd68a27ddf05bbfe068de2060f1d7e69f1a20e27ae923551dd7393',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_19',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ende/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792155,\n blobBlockLength: 1,\n blobByteOffset: 51909250321,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '674f6655d63caf6da1d33395d22a38dbd5479e1344f2ef98ab9b24ab05940599',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_DE',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ende/2025-12-18/model.ende.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792156,\n blobBlockLength: 482,\n blobByteOffset: 51909252559,\n modelId: 'model.ende.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '8df29d9494d19f47fd5d97c6a73474c6f657e9f81c1a607c431d02befdf3810f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '585e779c399b8334',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ende/2025-12-18/model.ende.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.ende.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '8df29d9494d19f47fd5d97c6a73474c6f657e9f81c1a607c431d02befdf3810f',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792156,\n blobBlockLength: 482,\n blobByteOffset: 51909252559,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ende/2025-12-18/lex.50.50.ende.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.ende.s2t.bin',\n expectedSize: 4347672,\n sha256Checksum: '7ed39f1cffbd68a27ddf05bbfe068de2060f1d7e69f1a20e27ae923551dd7393',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792088,\n blobBlockLength: 67,\n blobByteOffset: 51904902649\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ende/2025-12-18/vocab.ende.spm',\n registrySource: 's3',\n targetName: 'vocab.ende.spm',\n expectedSize: 810073,\n sha256Checksum: '69f730becafa48e3bb2c244eab66456877c08959a02f2bd5519b5a3088b62f9c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792638,\n blobBlockLength: 13,\n blobByteOffset: 51940814346\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ende/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '674f6655d63caf6da1d33395d22a38dbd5479e1344f2ef98ab9b24ab05940599',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792155,\n blobBlockLength: 1,\n blobByteOffset: 51909250321\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_DE_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ende/2025-12-18/vocab.ende.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792638,\n blobBlockLength: 13,\n blobByteOffset: 51940814346,\n modelId: 'vocab.ende.spm',\n addon: 'nmt',\n expectedSize: 810073,\n sha256Checksum: '69f730becafa48e3bb2c244eab66456877c08959a02f2bd5519b5a3088b62f9c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_EL_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enel/2025-12-18/lex.50.50.enel.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792651,\n blobBlockLength: 44,\n blobByteOffset: 51941624419,\n modelId: 'lex.50.50.enel.s2t.bin',\n addon: 'nmt',\n expectedSize: 2856724,\n sha256Checksum: 'c2acd9241eb8a1e5b13a43efa5723628839d6e3b3dc7b93e2f20990a6ab81e24',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_20',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enel/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792695,\n blobBlockLength: 1,\n blobByteOffset: 51944481143,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: '7a9f0cbfe0595f3e2d395e997b02fb559352b48b11cd00ea344c62e15f9de2ba',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_EL',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enel/2025-12-18/model.enel.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792696,\n blobBlockLength: 262,\n blobByteOffset: 51944483391,\n modelId: 'model.enel.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '724b358d399c6b23444de36d76e9e2630c7024c29d9e617323b820a11631535a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '30633191689e1afa',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enel/2025-12-18/model.enel.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enel.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '724b358d399c6b23444de36d76e9e2630c7024c29d9e617323b820a11631535a',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792696,\n blobBlockLength: 262,\n blobByteOffset: 51944483391,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enel/2025-12-18/lex.50.50.enel.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enel.s2t.bin',\n expectedSize: 2856724,\n sha256Checksum: 'c2acd9241eb8a1e5b13a43efa5723628839d6e3b3dc7b93e2f20990a6ab81e24',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792651,\n blobBlockLength: 44,\n blobByteOffset: 51941624419\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enel/2025-12-18/vocab.enel.spm',\n registrySource: 's3',\n targetName: 'vocab.enel.spm',\n expectedSize: 896168,\n sha256Checksum: '0ffc5569d7f400f03539c5fc3e28ff35f1d0381eba0ec866c44aef0c26f3ce5e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792958,\n blobBlockLength: 14,\n blobByteOffset: 51961624442\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enel/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: '7a9f0cbfe0595f3e2d395e997b02fb559352b48b11cd00ea344c62e15f9de2ba',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792695,\n blobBlockLength: 1,\n blobByteOffset: 51944481143\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_EL_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enel/2025-12-18/vocab.enel.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792958,\n blobBlockLength: 14,\n blobByteOffset: 51961624442,\n modelId: 'vocab.enel.spm',\n addon: 'nmt',\n expectedSize: 896168,\n sha256Checksum: '0ffc5569d7f400f03539c5fc3e28ff35f1d0381eba0ec866c44aef0c26f3ce5e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_ES_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enes/2025-12-18/lex.50.50.enes.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819783,\n blobBlockLength: 65,\n blobByteOffset: 53720700090,\n modelId: 'lex.50.50.enes.s2t.bin',\n addon: 'nmt',\n expectedSize: 4198436,\n sha256Checksum: '7d51237c0a07027dcd61643cfbbb0f8c48597d19907ef53d2cae9d6bec2cf25c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_21',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enes/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819848,\n blobBlockLength: 1,\n blobByteOffset: 53724898526,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: 'bafcb48a25fe7fa2b05ae0721822773ec1d2232bed1124295be9f22a5f26e313',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_ES',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enes/2025-12-18/model.enes.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819849,\n blobBlockLength: 482,\n blobByteOffset: 53724900764,\n modelId: 'model.enes.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '3b1c399511c01c84c36fae5c0524df44096288efdc8236e182b5c97d7ad2244c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'a73f318e7a20c2d3',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enes/2025-12-18/model.enes.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enes.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '3b1c399511c01c84c36fae5c0524df44096288efdc8236e182b5c97d7ad2244c',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819849,\n blobBlockLength: 482,\n blobByteOffset: 53724900764,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enes/2025-12-18/lex.50.50.enes.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enes.s2t.bin',\n expectedSize: 4198436,\n sha256Checksum: '7d51237c0a07027dcd61643cfbbb0f8c48597d19907ef53d2cae9d6bec2cf25c',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819783,\n blobBlockLength: 65,\n blobByteOffset: 53720700090\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enes/2025-12-18/vocab.enes.spm',\n registrySource: 's3',\n targetName: 'vocab.enes.spm',\n expectedSize: 816054,\n sha256Checksum: '5ae254fa9b15aa182e70fd2a6186b1333c63a29a48043a9224c6aa4fcac058ad',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 820331,\n blobBlockLength: 13,\n blobByteOffset: 53756462551\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enes/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: 'bafcb48a25fe7fa2b05ae0721822773ec1d2232bed1124295be9f22a5f26e313',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 819848,\n blobBlockLength: 1,\n blobByteOffset: 53724898526\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_ES_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enes/2025-12-18/vocab.enes.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 820331,\n blobBlockLength: 13,\n blobByteOffset: 53756462551,\n modelId: 'vocab.enes.spm',\n addon: 'nmt',\n expectedSize: 816054,\n sha256Checksum: '5ae254fa9b15aa182e70fd2a6186b1333c63a29a48043a9224c6aa4fcac058ad',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_ET_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enet/2025-12-18/lex.50.50.enet.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792972,\n blobBlockLength: 54,\n blobByteOffset: 51962520610,\n modelId: 'lex.50.50.enet.s2t.bin',\n addon: 'nmt',\n expectedSize: 3488368,\n sha256Checksum: '259c60582f49449c226a6e5a369481c68322013f367e459e54c595686c05d4d8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_22',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enet/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793026,\n blobBlockLength: 1,\n blobByteOffset: 51966008978,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '3dec5709f5cf880653a510aaed5af8a89a8bfc73cb25f132e4945e78139756df',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_ET',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enet/2025-12-18/model.enet.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793027,\n blobBlockLength: 482,\n blobByteOffset: 51966011216,\n modelId: 'model.enet.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '36bdc87f8d500861a5d286ebd3ea58df530da87e31b8a233f5e9c46c300c281d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'dfa145dd7905e610',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enet/2025-12-18/model.enet.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enet.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '36bdc87f8d500861a5d286ebd3ea58df530da87e31b8a233f5e9c46c300c281d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793027,\n blobBlockLength: 482,\n blobByteOffset: 51966011216,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enet/2025-12-18/lex.50.50.enet.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enet.s2t.bin',\n expectedSize: 3488368,\n sha256Checksum: '259c60582f49449c226a6e5a369481c68322013f367e459e54c595686c05d4d8',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 792972,\n blobBlockLength: 54,\n blobByteOffset: 51962520610\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enet/2025-12-18/vocab.enet.spm',\n registrySource: 's3',\n targetName: 'vocab.enet.spm',\n expectedSize: 817574,\n sha256Checksum: '89a3deea4ae7d674fb46a4dae39135dd4dfaac9786f2868d0b5bc5c0aca2ef83',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793509,\n blobBlockLength: 13,\n blobByteOffset: 51997573003\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enet/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '3dec5709f5cf880653a510aaed5af8a89a8bfc73cb25f132e4945e78139756df',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793026,\n blobBlockLength: 1,\n blobByteOffset: 51966008978\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_ET_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enet/2025-12-18/vocab.enet.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793509,\n blobBlockLength: 13,\n blobByteOffset: 51997573003,\n modelId: 'vocab.enet.spm',\n addon: 'nmt',\n expectedSize: 817574,\n sha256Checksum: '89a3deea4ae7d674fb46a4dae39135dd4dfaac9786f2868d0b5bc5c0aca2ef83',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_FA_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfa/2025-12-18/lex.50.50.enfa.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793522,\n blobBlockLength: 56,\n blobByteOffset: 51998390577,\n modelId: 'lex.50.50.enfa.s2t.bin',\n addon: 'nmt',\n expectedSize: 3631332,\n sha256Checksum: '8542e7fb2bfa3a11b89f8392b8adb0dbbf863cd34569488b7c4535a91c3ae6b4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_23',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfa/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793578,\n blobBlockLength: 1,\n blobByteOffset: 52002021909,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '7758c27215394ba439c4c2e65fbcd2ebed56fb583df8c66498d714fc743cafa5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_FA',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfa/2025-12-18/model.enfa.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793579,\n blobBlockLength: 262,\n blobByteOffset: 52002024137,\n modelId: 'model.enfa.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '456ad3952bcc59d208c76baba4dcef340ee4239416bd760d6fec27f9a16228f8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '3cd847a5eedc6d5f',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfa/2025-12-18/model.enfa.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enfa.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '456ad3952bcc59d208c76baba4dcef340ee4239416bd760d6fec27f9a16228f8',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793579,\n blobBlockLength: 262,\n blobByteOffset: 52002024137,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfa/2025-12-18/lex.50.50.enfa.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enfa.s2t.bin',\n expectedSize: 3631332,\n sha256Checksum: '8542e7fb2bfa3a11b89f8392b8adb0dbbf863cd34569488b7c4535a91c3ae6b4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793522,\n blobBlockLength: 56,\n blobByteOffset: 51998390577\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfa/2025-12-18/vocab.enfa.spm',\n registrySource: 's3',\n targetName: 'vocab.enfa.spm',\n expectedSize: 843133,\n sha256Checksum: '6435d3d9d766159fe192ab90892540b438ad7adb7ab4ea4049f68d0b4cdea3bd',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793841,\n blobBlockLength: 13,\n blobByteOffset: 52019165188\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfa/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '7758c27215394ba439c4c2e65fbcd2ebed56fb583df8c66498d714fc743cafa5',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793578,\n blobBlockLength: 1,\n blobByteOffset: 52002021909\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_FA_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfa/2025-12-18/vocab.enfa.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793841,\n blobBlockLength: 13,\n blobByteOffset: 52019165188,\n modelId: 'vocab.enfa.spm',\n addon: 'nmt',\n expectedSize: 843133,\n sha256Checksum: '6435d3d9d766159fe192ab90892540b438ad7adb7ab4ea4049f68d0b4cdea3bd',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_FI_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfi/2025-12-18/lex.50.50.enfi.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793854,\n blobBlockLength: 54,\n blobByteOffset: 52020008321,\n modelId: 'lex.50.50.enfi.s2t.bin',\n addon: 'nmt',\n expectedSize: 3490092,\n sha256Checksum: '26e95a87f87e4b0fa9a35524cf9fea691204504453877ba4ac81ccc66af1488c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_24',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfi/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793908,\n blobBlockLength: 1,\n blobByteOffset: 52023498413,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '7a56828427a548c8ee43e548ca27ca9492d743aef68336c3dd61ff4e5ab68af6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_FI',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfi/2025-12-18/model.enfi.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793909,\n blobBlockLength: 482,\n blobByteOffset: 52023500651,\n modelId: 'model.enfi.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '88b0caa4cc6980d632801cb2b1950748f1dc43ad2ac83678917ad86c720b5cdd',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'be42f2348c0b9828',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfi/2025-12-18/model.enfi.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enfi.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '88b0caa4cc6980d632801cb2b1950748f1dc43ad2ac83678917ad86c720b5cdd',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793909,\n blobBlockLength: 482,\n blobByteOffset: 52023500651,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfi/2025-12-18/lex.50.50.enfi.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enfi.s2t.bin',\n expectedSize: 3490092,\n sha256Checksum: '26e95a87f87e4b0fa9a35524cf9fea691204504453877ba4ac81ccc66af1488c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793854,\n blobBlockLength: 54,\n blobByteOffset: 52020008321\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfi/2025-12-18/vocab.enfi.spm',\n registrySource: 's3',\n targetName: 'vocab.enfi.spm',\n expectedSize: 818770,\n sha256Checksum: '6a866911427f2916609ae89c7f2f04a78de3fdd8aa183039ecba986635d4f246',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794391,\n blobBlockLength: 13,\n blobByteOffset: 52055062438\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfi/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '7a56828427a548c8ee43e548ca27ca9492d743aef68336c3dd61ff4e5ab68af6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 793908,\n blobBlockLength: 1,\n blobByteOffset: 52023498413\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_FI_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfi/2025-12-18/vocab.enfi.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794391,\n blobBlockLength: 13,\n blobByteOffset: 52055062438,\n modelId: 'vocab.enfi.spm',\n addon: 'nmt',\n expectedSize: 818770,\n sha256Checksum: '6a866911427f2916609ae89c7f2f04a78de3fdd8aa183039ecba986635d4f246',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_FR_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfr/2025-12-18/lex.50.50.enfr.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 820344,\n blobBlockLength: 67,\n blobByteOffset: 53757278605,\n modelId: 'lex.50.50.enfr.s2t.bin',\n addon: 'nmt',\n expectedSize: 4372936,\n sha256Checksum: '2585ed98d3af0bc949865aedeb390493d591f56870814376e73e4144c41ed059',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_25',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfr/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 820411,\n blobBlockLength: 1,\n blobByteOffset: 53761651541,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '0c21df488924402f479517d2551e1c44ef72f3063e1424d49e3bd777f1c2b701',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_FR',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfr/2025-12-18/model.enfr.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 820412,\n blobBlockLength: 482,\n blobByteOffset: 53761653779,\n modelId: 'model.enfr.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '6322e296d4fecfe395a8d5723da4ec37ecbe6d7613bb1dfcf4b28e2a47498b68',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'ac55acec3c2f95f2',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfr/2025-12-18/model.enfr.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enfr.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '6322e296d4fecfe395a8d5723da4ec37ecbe6d7613bb1dfcf4b28e2a47498b68',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 820412,\n blobBlockLength: 482,\n blobByteOffset: 53761653779,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfr/2025-12-18/lex.50.50.enfr.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enfr.s2t.bin',\n expectedSize: 4372936,\n sha256Checksum: '2585ed98d3af0bc949865aedeb390493d591f56870814376e73e4144c41ed059',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 820344,\n blobBlockLength: 67,\n blobByteOffset: 53757278605\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfr/2025-12-18/vocab.enfr.spm',\n registrySource: 's3',\n targetName: 'vocab.enfr.spm',\n expectedSize: 814404,\n sha256Checksum: '783abf3abe075afdf8d85d233994bef2c3a064e935ab1bed946820aff6ac002a',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 820894,\n blobBlockLength: 13,\n blobByteOffset: 53793215566\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfr/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '0c21df488924402f479517d2551e1c44ef72f3063e1424d49e3bd777f1c2b701',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 820411,\n blobBlockLength: 1,\n blobByteOffset: 53761651541\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_FR_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enfr/2025-12-18/vocab.enfr.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 820894,\n blobBlockLength: 13,\n blobByteOffset: 53793215566,\n modelId: 'vocab.enfr.spm',\n addon: 'nmt',\n expectedSize: 814404,\n sha256Checksum: '783abf3abe075afdf8d85d233994bef2c3a064e935ab1bed946820aff6ac002a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_GU_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-engu/2025-12-18/lex.50.50.engu.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794404,\n blobBlockLength: 49,\n blobByteOffset: 52055881208,\n modelId: 'lex.50.50.engu.s2t.bin',\n addon: 'nmt',\n expectedSize: 3179500,\n sha256Checksum: '5699d5f0f6265766c57e8e860596091d16a7ea68e9e181a3310b8b52d79f8b5e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_26',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-engu/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794453,\n blobBlockLength: 1,\n blobByteOffset: 52059060708,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: 'd7f05aba5e913b77afeda33b2101dcbc2a9fa27462bec7a3a512bb4425ce2996',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_GU',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-engu/2025-12-18/model.engu.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794454,\n blobBlockLength: 262,\n blobByteOffset: 52059062936,\n modelId: 'model.engu.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '0f2c8bc7f13ecb9b89459e8fd9af6d8736e0f6b1c8f8a80f747fcdc030d0a588',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '1ad0bac29a43a4ff',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-engu/2025-12-18/model.engu.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.engu.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '0f2c8bc7f13ecb9b89459e8fd9af6d8736e0f6b1c8f8a80f747fcdc030d0a588',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794454,\n blobBlockLength: 262,\n blobByteOffset: 52059062936,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-engu/2025-12-18/lex.50.50.engu.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.engu.s2t.bin',\n expectedSize: 3179500,\n sha256Checksum: '5699d5f0f6265766c57e8e860596091d16a7ea68e9e181a3310b8b52d79f8b5e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794404,\n blobBlockLength: 49,\n blobByteOffset: 52055881208\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-engu/2025-12-18/vocab.engu.spm',\n registrySource: 's3',\n targetName: 'vocab.engu.spm',\n expectedSize: 965095,\n sha256Checksum: '74ce11b041bfc527eedded78594498419c781c81a3fcb3384a3485af70cc2325',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794716,\n blobBlockLength: 15,\n blobByteOffset: 52076203987\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-engu/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: 'd7f05aba5e913b77afeda33b2101dcbc2a9fa27462bec7a3a512bb4425ce2996',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794453,\n blobBlockLength: 1,\n blobByteOffset: 52059060708\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_GU_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-engu/2025-12-18/vocab.engu.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794716,\n blobBlockLength: 15,\n blobByteOffset: 52076203987,\n modelId: 'vocab.engu.spm',\n addon: 'nmt',\n expectedSize: 965095,\n sha256Checksum: '74ce11b041bfc527eedded78594498419c781c81a3fcb3384a3485af70cc2325',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_HE_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhe/2025-12-18/lex.50.50.enhe.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794731,\n blobBlockLength: 47,\n blobByteOffset: 52077169082,\n modelId: 'lex.50.50.enhe.s2t.bin',\n addon: 'nmt',\n expectedSize: 3066048,\n sha256Checksum: '8795f4c5e19b4a196c9ed394c275a28a09e5ddbbf47ae16faa4446bf2b8bc7d9',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_27',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhe/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794778,\n blobBlockLength: 1,\n blobByteOffset: 52080235130,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '0335a32669c6707270ca4fb8dc4cba84704a33d2a81c002833b0ec24066fae6a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_HE',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhe/2025-12-18/model.enhe.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794779,\n blobBlockLength: 262,\n blobByteOffset: 52080237358,\n modelId: 'model.enhe.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'e37ac6e6f131704c85deb94a657aa20afbb44db2879f44aec9c33a34f4467587',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '2a58be11def651e0',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhe/2025-12-18/model.enhe.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enhe.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'e37ac6e6f131704c85deb94a657aa20afbb44db2879f44aec9c33a34f4467587',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794779,\n blobBlockLength: 262,\n blobByteOffset: 52080237358,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhe/2025-12-18/lex.50.50.enhe.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enhe.s2t.bin',\n expectedSize: 3066048,\n sha256Checksum: '8795f4c5e19b4a196c9ed394c275a28a09e5ddbbf47ae16faa4446bf2b8bc7d9',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794731,\n blobBlockLength: 47,\n blobByteOffset: 52077169082\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhe/2025-12-18/vocab.enhe.spm',\n registrySource: 's3',\n targetName: 'vocab.enhe.spm',\n expectedSize: 845017,\n sha256Checksum: '672b334afa84011200fdaee02c2fc7810910c35ae9ea7619be073c851703ce9e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795041,\n blobBlockLength: 13,\n blobByteOffset: 52097378409\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhe/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '0335a32669c6707270ca4fb8dc4cba84704a33d2a81c002833b0ec24066fae6a',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 794778,\n blobBlockLength: 1,\n blobByteOffset: 52080235130\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_HE_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhe/2025-12-18/vocab.enhe.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795041,\n blobBlockLength: 13,\n blobByteOffset: 52097378409,\n modelId: 'vocab.enhe.spm',\n addon: 'nmt',\n expectedSize: 845017,\n sha256Checksum: '672b334afa84011200fdaee02c2fc7810910c35ae9ea7619be073c851703ce9e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_HI_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhi/2025-12-18/lex.50.50.enhi.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795054,\n blobBlockLength: 54,\n blobByteOffset: 52098223426,\n modelId: 'lex.50.50.enhi.s2t.bin',\n addon: 'nmt',\n expectedSize: 3504820,\n sha256Checksum: 'b473f6fe41cdb7c1dbeeb714fc50314feab77b0af2b2da6f7830ee14492dd847',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_28',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhi/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795108,\n blobBlockLength: 1,\n blobByteOffset: 52101728246,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '1bf2ff8415508214fe61f55e7b78d1dca7e1356a2a3ad7e5789c6871186639d2',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_HI',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhi/2025-12-18/model.enhi.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795109,\n blobBlockLength: 262,\n blobByteOffset: 52101730474,\n modelId: 'model.enhi.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '18682fa6aa1c1b2f78a6fcbcb354755094d623e65436ef7821720c5213e11a49',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '8b09981cf49478a5',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhi/2025-12-18/model.enhi.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enhi.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '18682fa6aa1c1b2f78a6fcbcb354755094d623e65436ef7821720c5213e11a49',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795109,\n blobBlockLength: 262,\n blobByteOffset: 52101730474,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhi/2025-12-18/lex.50.50.enhi.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enhi.s2t.bin',\n expectedSize: 3504820,\n sha256Checksum: 'b473f6fe41cdb7c1dbeeb714fc50314feab77b0af2b2da6f7830ee14492dd847',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795054,\n blobBlockLength: 54,\n blobByteOffset: 52098223426\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhi/2025-12-18/vocab.enhi.spm',\n registrySource: 's3',\n targetName: 'vocab.enhi.spm',\n expectedSize: 925360,\n sha256Checksum: '8017cbf812bae400794c424699b89de90db06ac7a4ca67a420013a9f68b270c1',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795371,\n blobBlockLength: 15,\n blobByteOffset: 52118871525\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhi/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '1bf2ff8415508214fe61f55e7b78d1dca7e1356a2a3ad7e5789c6871186639d2',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795108,\n blobBlockLength: 1,\n blobByteOffset: 52101728246\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_HI_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhi/2025-12-18/vocab.enhi.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795371,\n blobBlockLength: 15,\n blobByteOffset: 52118871525,\n modelId: 'vocab.enhi.spm',\n addon: 'nmt',\n expectedSize: 925360,\n sha256Checksum: '8017cbf812bae400794c424699b89de90db06ac7a4ca67a420013a9f68b270c1',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_HR_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhr/2026-04-28/lex.50.50.enhr.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093181,\n blobBlockLength: 50,\n blobByteOffset: 71639737982,\n modelId: 'lex.50.50.enhr.s2t.bin',\n addon: 'nmt',\n expectedSize: 3232644,\n sha256Checksum: '70cf1afc8aeb6d7ed7dc269ccdd4e40e2d139a2b1106313c94210d32b14bc845',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_29',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhr/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093231,\n blobBlockLength: 1,\n blobByteOffset: 71642970626,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 519,\n sha256Checksum: '425250f23fcd6daa7db4a8fd1454def0ec6f89d52320306cfb0a767133a2959c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_HR',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhr/2026-04-28/model.enhr.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093232,\n blobBlockLength: 482,\n blobByteOffset: 71642971145,\n modelId: 'model.enhr.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '2f34590dff70aec009d3c6e9bee7a4a18aa6a0a1978c7dc49c686eb454b77704',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'd79feb19fb0cfe11',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhr/2026-04-28/model.enhr.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enhr.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '2f34590dff70aec009d3c6e9bee7a4a18aa6a0a1978c7dc49c686eb454b77704',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093232,\n blobBlockLength: 482,\n blobByteOffset: 71642971145,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhr/2026-04-28/lex.50.50.enhr.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enhr.s2t.bin',\n expectedSize: 3232644,\n sha256Checksum: '70cf1afc8aeb6d7ed7dc269ccdd4e40e2d139a2b1106313c94210d32b14bc845',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093181,\n blobBlockLength: 50,\n blobByteOffset: 71639737982\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhr/2026-04-28/vocab.enhr.spm',\n registrySource: 's3',\n targetName: 'vocab.enhr.spm',\n expectedSize: 820766,\n sha256Checksum: '6b86a23aac0ba7aae69218826600afe1c70b3e5830814d9428f7248d23e016f8',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093714,\n blobBlockLength: 13,\n blobByteOffset: 71674532932\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhr/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 519,\n sha256Checksum: '425250f23fcd6daa7db4a8fd1454def0ec6f89d52320306cfb0a767133a2959c',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093231,\n blobBlockLength: 1,\n blobByteOffset: 71642970626\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_HR_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhr/2026-04-28/vocab.enhr.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093714,\n blobBlockLength: 13,\n blobByteOffset: 71674532932,\n modelId: 'vocab.enhr.spm',\n addon: 'nmt',\n expectedSize: 820766,\n sha256Checksum: '6b86a23aac0ba7aae69218826600afe1c70b3e5830814d9428f7248d23e016f8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_HU_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhu/2025-12-18/lex.50.50.enhu.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795713,\n blobBlockLength: 54,\n blobByteOffset: 52141057015,\n modelId: 'lex.50.50.enhu.s2t.bin',\n addon: 'nmt',\n expectedSize: 3490288,\n sha256Checksum: 'f3d1e61003597d1cc9d87e05d2b398a7ae2b3941e3f96947764aac239df1a808',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_30',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhu/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795767,\n blobBlockLength: 1,\n blobByteOffset: 52144547303,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: 'a807dd5f0362ab6f450e195244db2e51110e1c985591ab282362dfdb412fff4b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_HU',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhu/2025-12-18/model.enhu.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795768,\n blobBlockLength: 482,\n blobByteOffset: 52144549541,\n modelId: 'model.enhu.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'ec0c210d09cd5d8a5edf7a50462db0a8fb5dd78d03bbc6d4d72d91074f0490e4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'cb23770d52ae27c0',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhu/2025-12-18/model.enhu.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enhu.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'ec0c210d09cd5d8a5edf7a50462db0a8fb5dd78d03bbc6d4d72d91074f0490e4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795768,\n blobBlockLength: 482,\n blobByteOffset: 52144549541,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhu/2025-12-18/lex.50.50.enhu.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enhu.s2t.bin',\n expectedSize: 3490288,\n sha256Checksum: 'f3d1e61003597d1cc9d87e05d2b398a7ae2b3941e3f96947764aac239df1a808',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795713,\n blobBlockLength: 54,\n blobByteOffset: 52141057015\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhu/2025-12-18/vocab.enhu.spm',\n registrySource: 's3',\n targetName: 'vocab.enhu.spm',\n expectedSize: 806121,\n sha256Checksum: '2eee837cfdcc45c091d025f585d3fcdb293db7794e316b38a0aeff8c47a659e0',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796250,\n blobBlockLength: 13,\n blobByteOffset: 52176111328\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhu/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: 'a807dd5f0362ab6f450e195244db2e51110e1c985591ab282362dfdb412fff4b',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 795767,\n blobBlockLength: 1,\n blobByteOffset: 52144547303\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_HU_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enhu/2025-12-18/vocab.enhu.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796250,\n blobBlockLength: 13,\n blobByteOffset: 52176111328,\n modelId: 'vocab.enhu.spm',\n addon: 'nmt',\n expectedSize: 806121,\n sha256Checksum: '2eee837cfdcc45c091d025f585d3fcdb293db7794e316b38a0aeff8c47a659e0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_ID_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enid/2025-12-18/lex.50.50.enid.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796263,\n blobBlockLength: 54,\n blobByteOffset: 52176917449,\n modelId: 'lex.50.50.enid.s2t.bin',\n addon: 'nmt',\n expectedSize: 3515428,\n sha256Checksum: 'd37f72bcab6e7bc52fd223350f95521b5810bb2486a97275f86077988fced3f4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_31',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enid/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796317,\n blobBlockLength: 1,\n blobByteOffset: 52180432877,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: '0ef40b6da04478bb1b723538aadb9c4aa388328b89f213dee1aa528aca96283b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_ID',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enid/2025-12-18/model.enid.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796318,\n blobBlockLength: 262,\n blobByteOffset: 52180435125,\n modelId: 'model.enid.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'f81f13eef703a4e0650ffc3138a0f4bab7b6c8bfd173ef1b7bda68d16b8bc7e8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '10967eb573178e2e',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enid/2025-12-18/model.enid.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enid.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'f81f13eef703a4e0650ffc3138a0f4bab7b6c8bfd173ef1b7bda68d16b8bc7e8',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796318,\n blobBlockLength: 262,\n blobByteOffset: 52180435125,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enid/2025-12-18/lex.50.50.enid.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enid.s2t.bin',\n expectedSize: 3515428,\n sha256Checksum: 'd37f72bcab6e7bc52fd223350f95521b5810bb2486a97275f86077988fced3f4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796263,\n blobBlockLength: 54,\n blobByteOffset: 52176917449\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enid/2025-12-18/vocab.enid.spm',\n registrySource: 's3',\n targetName: 'vocab.enid.spm',\n expectedSize: 773211,\n sha256Checksum: '61bc7db24d3b6de638a02a280580a273fe0c942ecbe8a8204b2f81978211db22',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796580,\n blobBlockLength: 12,\n blobByteOffset: 52197576176\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enid/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: '0ef40b6da04478bb1b723538aadb9c4aa388328b89f213dee1aa528aca96283b',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796317,\n blobBlockLength: 1,\n blobByteOffset: 52180432877\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_ID_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enid/2025-12-18/vocab.enid.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796580,\n blobBlockLength: 12,\n blobByteOffset: 52197576176,\n modelId: 'vocab.enid.spm',\n addon: 'nmt',\n expectedSize: 773211,\n sha256Checksum: '61bc7db24d3b6de638a02a280580a273fe0c942ecbe8a8204b2f81978211db22',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_IS_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enis/2025-12-18/lex.50.50.enis.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796592,\n blobBlockLength: 59,\n blobByteOffset: 52198349387,\n modelId: 'lex.50.50.enis.s2t.bin',\n addon: 'nmt',\n expectedSize: 3837564,\n sha256Checksum: '4927d2bed702141b4ddd8a5e7034b27fb17312fdb7e3cc5f455ccf2e2f6670e0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_32',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enis/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796651,\n blobBlockLength: 1,\n blobByteOffset: 52202186951,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '22804b779fd2eff9c0ca0534905ba4ac3b7cf96b2cae1d6204304bb469a87f73',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_IS',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enis/2025-12-18/model.enis.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796652,\n blobBlockLength: 482,\n blobByteOffset: 52202189189,\n modelId: 'model.enis.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '459626236a49158aa555facd23e5f594e2f8416f4ebad32e0548af94c5b1ae0c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '9c7231e4fb97c6da',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enis/2025-12-18/model.enis.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enis.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '459626236a49158aa555facd23e5f594e2f8416f4ebad32e0548af94c5b1ae0c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796652,\n blobBlockLength: 482,\n blobByteOffset: 52202189189,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enis/2025-12-18/lex.50.50.enis.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enis.s2t.bin',\n expectedSize: 3837564,\n sha256Checksum: '4927d2bed702141b4ddd8a5e7034b27fb17312fdb7e3cc5f455ccf2e2f6670e0',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796592,\n blobBlockLength: 59,\n blobByteOffset: 52198349387\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enis/2025-12-18/vocab.enis.spm',\n registrySource: 's3',\n targetName: 'vocab.enis.spm',\n expectedSize: 809991,\n sha256Checksum: '61b2ea10edbe4cc61e36c833cacc2f55778ed9ca860cd382729060634d4b0adb',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797134,\n blobBlockLength: 13,\n blobByteOffset: 52233750976\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enis/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '22804b779fd2eff9c0ca0534905ba4ac3b7cf96b2cae1d6204304bb469a87f73',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 796651,\n blobBlockLength: 1,\n blobByteOffset: 52202186951\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_IS_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enis/2025-12-18/vocab.enis.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797134,\n blobBlockLength: 13,\n blobByteOffset: 52233750976,\n modelId: 'vocab.enis.spm',\n addon: 'nmt',\n expectedSize: 809991,\n sha256Checksum: '61b2ea10edbe4cc61e36c833cacc2f55778ed9ca860cd382729060634d4b0adb',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_IT_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enit/2026-04-28/lex.50.50.enit.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817132,\n blobBlockLength: 64,\n blobByteOffset: 53536279308,\n modelId: 'lex.50.50.enit.s2t.bin',\n addon: 'nmt',\n expectedSize: 4133192,\n sha256Checksum: '8b21914804625b2777dae7fdb636eb78f02a3eb8b7bceaa50f29ac740961da93',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_33',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enit/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817196,\n blobBlockLength: 1,\n blobByteOffset: 53540412500,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 529,\n sha256Checksum: 'bf642df48f3b9d46b76b9c2e9e91011269b287a5247418ccbf0fbab65762a5f2',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_IT',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enit/2026-04-28/model.enit.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817197,\n blobBlockLength: 482,\n blobByteOffset: 53540413029,\n modelId: 'model.enit.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '248f47568788ecc351da7e5e07064d4153b4f71e011364ae2c931ffeec4d1cc2',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '5474b6958a5d2152',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enit/2026-04-28/model.enit.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enit.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '248f47568788ecc351da7e5e07064d4153b4f71e011364ae2c931ffeec4d1cc2',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817197,\n blobBlockLength: 482,\n blobByteOffset: 53540413029,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enit/2026-04-28/lex.50.50.enit.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enit.s2t.bin',\n expectedSize: 4133192,\n sha256Checksum: '8b21914804625b2777dae7fdb636eb78f02a3eb8b7bceaa50f29ac740961da93',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817132,\n blobBlockLength: 64,\n blobByteOffset: 53536279308\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enit/2026-04-28/vocab.enit.spm',\n registrySource: 's3',\n targetName: 'vocab.enit.spm',\n expectedSize: 812724,\n sha256Checksum: '3ef0211d4ae6db21440892f180f2019fe2bfc110a330ffa9d2eca9665e4f2bc5',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817679,\n blobBlockLength: 13,\n blobByteOffset: 53571974816\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enit/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 529,\n sha256Checksum: 'bf642df48f3b9d46b76b9c2e9e91011269b287a5247418ccbf0fbab65762a5f2',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817196,\n blobBlockLength: 1,\n blobByteOffset: 53540412500\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_IT_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enit/2026-04-28/vocab.enit.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817679,\n blobBlockLength: 13,\n blobByteOffset: 53571974816,\n modelId: 'vocab.enit.spm',\n addon: 'nmt',\n expectedSize: 812724,\n sha256Checksum: '3ef0211d4ae6db21440892f180f2019fe2bfc110a330ffa9d2eca9665e4f2bc5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_JA_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enja/2025-12-18/lex.50.50.enja.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 821252,\n blobBlockLength: 63,\n blobByteOffset: 53816480715,\n modelId: 'lex.50.50.enja.s2t.bin',\n addon: 'nmt',\n expectedSize: 4128360,\n sha256Checksum: 'edfb7eb47b98a2689b804ab3614c31b24f1257aa54b1154da3d85e1ae8152d9f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_34',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enja/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 821315,\n blobBlockLength: 1,\n blobByteOffset: 53820609075,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2233,\n sha256Checksum: '976e75eddb222c4a9280e311e6cc5fbeb2a0a846d9f70955cfde01ee579cfd94',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_JA',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enja/2025-12-18/model.enja.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 821316,\n blobBlockLength: 670,\n blobByteOffset: 53820611308,\n modelId: 'model.enja.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 43849787,\n sha256Checksum: '59ae659f9bb63e4f81f474fe3c03d3f4499434b5f9e779fab7c12a45f31fd562',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '5754c092bd0241be',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enja/2025-12-18/model.enja.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enja.intgemm.alphas.bin',\n expectedSize: 43849787,\n sha256Checksum: '59ae659f9bb63e4f81f474fe3c03d3f4499434b5f9e779fab7c12a45f31fd562',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 821316,\n blobBlockLength: 670,\n blobByteOffset: 53820611308,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enja/2025-12-18/lex.50.50.enja.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enja.s2t.bin',\n expectedSize: 4128360,\n sha256Checksum: 'edfb7eb47b98a2689b804ab3614c31b24f1257aa54b1154da3d85e1ae8152d9f',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 821252,\n blobBlockLength: 63,\n blobByteOffset: 53816480715\n },\n {\n key: 'srcVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enja/2025-12-18/srcvocab.enja.spm',\n registrySource: 's3',\n targetName: 'srcvocab.enja.spm',\n expectedSize: 796275,\n sha256Checksum: '970c98d174fc01e0339fbabbf45af36a4be3f26f819ec1a5ea1189f71e091889',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 821986,\n blobBlockLength: 13,\n blobByteOffset: 53864461095\n },\n {\n key: 'dstVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enja/2025-12-18/trgvocab.enja.spm',\n registrySource: 's3',\n targetName: 'trgvocab.enja.spm',\n expectedSize: 827144,\n sha256Checksum: '3b3d9f8f3a034d98d0a476f1794fa79c01e4e98a967ceb6777a66ba2d03ec1e1',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 821999,\n blobBlockLength: 13,\n blobByteOffset: 53865257370\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enja/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2233,\n sha256Checksum: '976e75eddb222c4a9280e311e6cc5fbeb2a0a846d9f70955cfde01ee579cfd94',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 821315,\n blobBlockLength: 1,\n blobByteOffset: 53820609075\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_JA_SRCVOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enja/2025-12-18/srcvocab.enja.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 821986,\n blobBlockLength: 13,\n blobByteOffset: 53864461095,\n modelId: 'srcvocab.enja.spm',\n addon: 'nmt',\n expectedSize: 796275,\n sha256Checksum: '970c98d174fc01e0339fbabbf45af36a4be3f26f819ec1a5ea1189f71e091889',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_JA_TRGVOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enja/2025-12-18/trgvocab.enja.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 821999,\n blobBlockLength: 13,\n blobByteOffset: 53865257370,\n modelId: 'trgvocab.enja.spm',\n addon: 'nmt',\n expectedSize: 827144,\n sha256Checksum: '3b3d9f8f3a034d98d0a476f1794fa79c01e4e98a967ceb6777a66ba2d03ec1e1',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_KN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enkn/2025-12-18/lex.50.50.enkn.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797147,\n blobBlockLength: 43,\n blobByteOffset: 52234560967,\n modelId: 'lex.50.50.enkn.s2t.bin',\n addon: 'nmt',\n expectedSize: 2808304,\n sha256Checksum: '94b660f37c9c29a904b48498a7202846faaeef16f30668f356336c29cefc0f63',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_35',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enkn/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797190,\n blobBlockLength: 1,\n blobByteOffset: 52237369271,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '1b776431413fbeabcff7b79f2fcf66c861568f666639559ea43cfbc786b0cd6b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_KN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enkn/2025-12-18/model.enkn.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797191,\n blobBlockLength: 262,\n blobByteOffset: 52237371499,\n modelId: 'model.enkn.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '17a5ddc86e24f62c04aa15272930275812b5c1674bec50a877528680d5834d2d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'a1275d60d78e13ef',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enkn/2025-12-18/model.enkn.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enkn.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '17a5ddc86e24f62c04aa15272930275812b5c1674bec50a877528680d5834d2d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797191,\n blobBlockLength: 262,\n blobByteOffset: 52237371499,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enkn/2025-12-18/lex.50.50.enkn.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enkn.s2t.bin',\n expectedSize: 2808304,\n sha256Checksum: '94b660f37c9c29a904b48498a7202846faaeef16f30668f356336c29cefc0f63',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797147,\n blobBlockLength: 43,\n blobByteOffset: 52234560967\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enkn/2025-12-18/vocab.enkn.spm',\n registrySource: 's3',\n targetName: 'vocab.enkn.spm',\n expectedSize: 1065180,\n sha256Checksum: '1d41f1f6b67a8c29fa3aabbc7758b766bdd9acdbeec7d1277ab60c8e492c8b7a',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797453,\n blobBlockLength: 17,\n blobByteOffset: 52254512550\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enkn/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '1b776431413fbeabcff7b79f2fcf66c861568f666639559ea43cfbc786b0cd6b',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797190,\n blobBlockLength: 1,\n blobByteOffset: 52237369271\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_KN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enkn/2025-12-18/vocab.enkn.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797453,\n blobBlockLength: 17,\n blobByteOffset: 52254512550,\n modelId: 'vocab.enkn.spm',\n addon: 'nmt',\n expectedSize: 1065180,\n sha256Checksum: '1d41f1f6b67a8c29fa3aabbc7758b766bdd9acdbeec7d1277ab60c8e492c8b7a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_KO_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enko/2025-12-18/lex.50.50.enko.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797470,\n blobBlockLength: 99,\n blobByteOffset: 52255577730,\n modelId: 'lex.50.50.enko.s2t.bin',\n addon: 'nmt',\n expectedSize: 6449612,\n sha256Checksum: '96efba97d4bb93ab362e5569bea0f115184d2f68d63b67305ee663c18e32fbeb',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_36',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enko/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797569,\n blobBlockLength: 1,\n blobByteOffset: 52262027342,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2233,\n sha256Checksum: '7939009b975b68a9842f3de285a38338729ecdbcf2358702ca2cc66b5bd7a89c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_KO',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enko/2025-12-18/model.enko.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797570,\n blobBlockLength: 670,\n blobByteOffset: 52262029575,\n modelId: 'model.enko.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 43849787,\n sha256Checksum: 'ffe5ef2ce3f2e944055e35310bab186f6a70d533a0ee4394adf716a0e383afbb',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'e017fa0b95ae3526',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enko/2025-12-18/model.enko.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enko.intgemm.alphas.bin',\n expectedSize: 43849787,\n sha256Checksum: 'ffe5ef2ce3f2e944055e35310bab186f6a70d533a0ee4394adf716a0e383afbb',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797570,\n blobBlockLength: 670,\n blobByteOffset: 52262029575,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enko/2025-12-18/lex.50.50.enko.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enko.s2t.bin',\n expectedSize: 6449612,\n sha256Checksum: '96efba97d4bb93ab362e5569bea0f115184d2f68d63b67305ee663c18e32fbeb',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797470,\n blobBlockLength: 99,\n blobByteOffset: 52255577730\n },\n {\n key: 'srcVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enko/2025-12-18/srcvocab.enko.spm',\n registrySource: 's3',\n targetName: 'srcvocab.enko.spm',\n expectedSize: 791280,\n sha256Checksum: '8d4e3141868efd410eb86c2b60d41aa6bc6b46e4c4b2c0b85e3792493c69d802',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 711607,\n blobBlockLength: 13,\n blobByteOffset: 46633517868\n },\n {\n key: 'dstVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enko/2025-12-18/trgvocab.enko.spm',\n registrySource: 's3',\n targetName: 'trgvocab.enko.spm',\n expectedSize: 815353,\n sha256Checksum: '2ece21b28dd7022d36127d17423a74dabf544787dfc1cf614f7b565f93a4a1d3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 711620,\n blobBlockLength: 13,\n blobByteOffset: 46634309148\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enko/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2233,\n sha256Checksum: '7939009b975b68a9842f3de285a38338729ecdbcf2358702ca2cc66b5bd7a89c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 797569,\n blobBlockLength: 1,\n blobByteOffset: 52262027342\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_KO_SRCVOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enko/2025-12-18/srcvocab.enko.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 711607,\n blobBlockLength: 13,\n blobByteOffset: 46633517868,\n modelId: 'srcvocab.enko.spm',\n addon: 'nmt',\n expectedSize: 791280,\n sha256Checksum: '8d4e3141868efd410eb86c2b60d41aa6bc6b46e4c4b2c0b85e3792493c69d802',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_KO_TRGVOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enko/2025-12-18/trgvocab.enko.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 711620,\n blobBlockLength: 13,\n blobByteOffset: 46634309148,\n modelId: 'trgvocab.enko.spm',\n addon: 'nmt',\n expectedSize: 815353,\n sha256Checksum: '2ece21b28dd7022d36127d17423a74dabf544787dfc1cf614f7b565f93a4a1d3',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_LT_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlt/2025-12-18/lex.50.50.enlt.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798240,\n blobBlockLength: 53,\n blobByteOffset: 52305879362,\n modelId: 'lex.50.50.enlt.s2t.bin',\n addon: 'nmt',\n expectedSize: 3421640,\n sha256Checksum: '5972c834218c7beea241dc8fe77c2e577a8d8b4eb3d3dc286d10ad890c64d374',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_37',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlt/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798293,\n blobBlockLength: 1,\n blobByteOffset: 52309301002,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2260,\n sha256Checksum: 'b6c7b8fd3a8427abf4b0df61dd472d4f628fb80e9ec194c87e96e209d0208c4b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_LT',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlt/2025-12-18/model.enlt.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798294,\n blobBlockLength: 482,\n blobByteOffset: 52309303262,\n modelId: 'model.enlt.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'd27c676d9d761c2abfffec83956e32b2923f3f745b56acdbd84c49d888cdc94e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'd2d315e2976f17ed',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlt/2025-12-18/model.enlt.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enlt.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'd27c676d9d761c2abfffec83956e32b2923f3f745b56acdbd84c49d888cdc94e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798294,\n blobBlockLength: 482,\n blobByteOffset: 52309303262,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlt/2025-12-18/lex.50.50.enlt.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enlt.s2t.bin',\n expectedSize: 3421640,\n sha256Checksum: '5972c834218c7beea241dc8fe77c2e577a8d8b4eb3d3dc286d10ad890c64d374',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798240,\n blobBlockLength: 53,\n blobByteOffset: 52305879362\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlt/2025-12-18/vocab.enlt.spm',\n registrySource: 's3',\n targetName: 'vocab.enlt.spm',\n expectedSize: 806827,\n sha256Checksum: '5d38fe70ff4a50368af756b715b69519c9ee064c27cbceeabc90d4e1a10f25a8',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798776,\n blobBlockLength: 13,\n blobByteOffset: 52340865049\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlt/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2260,\n sha256Checksum: 'b6c7b8fd3a8427abf4b0df61dd472d4f628fb80e9ec194c87e96e209d0208c4b',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798293,\n blobBlockLength: 1,\n blobByteOffset: 52309301002\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_LT_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlt/2025-12-18/vocab.enlt.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798776,\n blobBlockLength: 13,\n blobByteOffset: 52340865049,\n modelId: 'vocab.enlt.spm',\n addon: 'nmt',\n expectedSize: 806827,\n sha256Checksum: '5d38fe70ff4a50368af756b715b69519c9ee064c27cbceeabc90d4e1a10f25a8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_LV_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlv/2025-12-18/lex.50.50.enlv.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798789,\n blobBlockLength: 52,\n blobByteOffset: 52341671876,\n modelId: 'lex.50.50.enlv.s2t.bin',\n addon: 'nmt',\n expectedSize: 3359096,\n sha256Checksum: 'd54b9bc278558444c5c25df5ae7339b73eee55cf79705f19fec672b6d55d959c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_38',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlv/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798841,\n blobBlockLength: 1,\n blobByteOffset: 52345030972,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2260,\n sha256Checksum: '565da730c6cc5e513c3b1700fc4a87865af8e4adb2c356e7c514f9823f665c37',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_LV',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlv/2025-12-18/model.enlv.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798842,\n blobBlockLength: 482,\n blobByteOffset: 52345033232,\n modelId: 'model.enlv.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '715f9f444dffa0b39e71955c28bffd30afa4cc8300a192ec8fabb766cc5ba11d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'f2b4dd82877bcf35',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlv/2025-12-18/model.enlv.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enlv.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '715f9f444dffa0b39e71955c28bffd30afa4cc8300a192ec8fabb766cc5ba11d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798842,\n blobBlockLength: 482,\n blobByteOffset: 52345033232,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlv/2025-12-18/lex.50.50.enlv.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enlv.s2t.bin',\n expectedSize: 3359096,\n sha256Checksum: 'd54b9bc278558444c5c25df5ae7339b73eee55cf79705f19fec672b6d55d959c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798789,\n blobBlockLength: 52,\n blobByteOffset: 52341671876\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlv/2025-12-18/vocab.enlv.spm',\n registrySource: 's3',\n targetName: 'vocab.enlv.spm',\n expectedSize: 816287,\n sha256Checksum: '63146b49ce46ba1283b6956e38efdd4899d1a409cad9d2b6a06cbd4e32ca0808',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799324,\n blobBlockLength: 13,\n blobByteOffset: 52376595019\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlv/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2260,\n sha256Checksum: '565da730c6cc5e513c3b1700fc4a87865af8e4adb2c356e7c514f9823f665c37',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 798841,\n blobBlockLength: 1,\n blobByteOffset: 52345030972\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_LV_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enlv/2025-12-18/vocab.enlv.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799324,\n blobBlockLength: 13,\n blobByteOffset: 52376595019,\n modelId: 'vocab.enlv.spm',\n addon: 'nmt',\n expectedSize: 816287,\n sha256Checksum: '63146b49ce46ba1283b6956e38efdd4899d1a409cad9d2b6a06cbd4e32ca0808',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_ML_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enml/2025-12-18/lex.50.50.enml.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799337,\n blobBlockLength: 39,\n blobByteOffset: 52377411306,\n modelId: 'lex.50.50.enml.s2t.bin',\n addon: 'nmt',\n expectedSize: 2532960,\n sha256Checksum: '4a37286742244a130548b79823c9707bc0e56f373361e2cb56402f82e862c2b0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_39',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enml/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799376,\n blobBlockLength: 1,\n blobByteOffset: 52379944266,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '772fb27e3ca7f6eee5726f8b2c347520ee3f7675145620bdd6528242a8d2b393',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_ML',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enml/2025-12-18/model.enml.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799377,\n blobBlockLength: 262,\n blobByteOffset: 52379946494,\n modelId: 'model.enml.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'c461749c8315f6417104cf4df32e5063e86cb101203f9629512294c1c8ab5337',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'efd81c323cfec584',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enml/2025-12-18/model.enml.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enml.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'c461749c8315f6417104cf4df32e5063e86cb101203f9629512294c1c8ab5337',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799377,\n blobBlockLength: 262,\n blobByteOffset: 52379946494,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enml/2025-12-18/lex.50.50.enml.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enml.s2t.bin',\n expectedSize: 2532960,\n sha256Checksum: '4a37286742244a130548b79823c9707bc0e56f373361e2cb56402f82e862c2b0',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799337,\n blobBlockLength: 39,\n blobByteOffset: 52377411306\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enml/2025-12-18/vocab.enml.spm',\n registrySource: 's3',\n targetName: 'vocab.enml.spm',\n expectedSize: 1109000,\n sha256Checksum: '8282614894087e4ffab325cbdb3aeeba35677f770ef8f253c189b392fe1f4d52',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799639,\n blobBlockLength: 17,\n blobByteOffset: 52397087545\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enml/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '772fb27e3ca7f6eee5726f8b2c347520ee3f7675145620bdd6528242a8d2b393',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799376,\n blobBlockLength: 1,\n blobByteOffset: 52379944266\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_ML_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enml/2025-12-18/vocab.enml.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799639,\n blobBlockLength: 17,\n blobByteOffset: 52397087545,\n modelId: 'vocab.enml.spm',\n addon: 'nmt',\n expectedSize: 1109000,\n sha256Checksum: '8282614894087e4ffab325cbdb3aeeba35677f770ef8f253c189b392fe1f4d52',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_MS_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enms/2025-12-18/lex.50.50.enms.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799656,\n blobBlockLength: 61,\n blobByteOffset: 52398196545,\n modelId: 'lex.50.50.enms.s2t.bin',\n addon: 'nmt',\n expectedSize: 3936428,\n sha256Checksum: 'be8fec4866c9ed2cf669adaea2e259c4c22f34838032eb0ee117c10fcb968c4c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_40',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enms/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799717,\n blobBlockLength: 1,\n blobByteOffset: 52402132973,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '50fcf85cd3936d66ea9d31b1ab37c04faa8f32d66527147763db0f2df9f62dd5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_MS',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enms/2025-12-18/model.enms.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799718,\n blobBlockLength: 262,\n blobByteOffset: 52402135201,\n modelId: 'model.enms.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '3d6961462ffa711413d513624d7e6399b3560c2b0994daa73b0a45699e657af8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '6a8ec122e1880a74',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enms/2025-12-18/model.enms.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enms.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '3d6961462ffa711413d513624d7e6399b3560c2b0994daa73b0a45699e657af8',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799718,\n blobBlockLength: 262,\n blobByteOffset: 52402135201,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enms/2025-12-18/lex.50.50.enms.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enms.s2t.bin',\n expectedSize: 3936428,\n sha256Checksum: 'be8fec4866c9ed2cf669adaea2e259c4c22f34838032eb0ee117c10fcb968c4c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799656,\n blobBlockLength: 61,\n blobByteOffset: 52398196545\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enms/2025-12-18/vocab.enms.spm',\n registrySource: 's3',\n targetName: 'vocab.enms.spm',\n expectedSize: 802440,\n sha256Checksum: 'c1f182330fb8c80778da36dd6e5bde59464db2390f623ea62817081cc759695a',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799980,\n blobBlockLength: 13,\n blobByteOffset: 52419276252\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enms/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '50fcf85cd3936d66ea9d31b1ab37c04faa8f32d66527147763db0f2df9f62dd5',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799717,\n blobBlockLength: 1,\n blobByteOffset: 52402132973\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_MS_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enms/2025-12-18/vocab.enms.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 799980,\n blobBlockLength: 13,\n blobByteOffset: 52419276252,\n modelId: 'vocab.enms.spm',\n addon: 'nmt',\n expectedSize: 802440,\n sha256Checksum: 'c1f182330fb8c80778da36dd6e5bde59464db2390f623ea62817081cc759695a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_NB_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennb/2026-04-28/lex.50.50.ennb.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094831,\n blobBlockLength: 65,\n blobByteOffset: 71747354722,\n modelId: 'lex.50.50.ennb.s2t.bin',\n addon: 'nmt',\n expectedSize: 4234572,\n sha256Checksum: '0780a1659ef460864ba92da6d58ca6f9056fb8ec8be507c189aeb25ce23e429f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_41',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennb/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094896,\n blobBlockLength: 1,\n blobByteOffset: 71751589294,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 507,\n sha256Checksum: '865e5e47dbab13aa91319071f38c08c663caf76a18b3858ca2ead49d93f7c08e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_NB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennb/2026-04-28/model.ennb.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094897,\n blobBlockLength: 262,\n blobByteOffset: 71751589801,\n modelId: 'model.ennb.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '78429eb7f544361061c9d9ec2f0872adf30b76e4c9ef3dbaab1210a0f2aa19b5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '1e9f0a89d6ec2563',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennb/2026-04-28/model.ennb.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.ennb.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '78429eb7f544361061c9d9ec2f0872adf30b76e4c9ef3dbaab1210a0f2aa19b5',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094897,\n blobBlockLength: 262,\n blobByteOffset: 71751589801,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennb/2026-04-28/lex.50.50.ennb.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.ennb.s2t.bin',\n expectedSize: 4234572,\n sha256Checksum: '0780a1659ef460864ba92da6d58ca6f9056fb8ec8be507c189aeb25ce23e429f',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094831,\n blobBlockLength: 65,\n blobByteOffset: 71747354722\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennb/2026-04-28/vocab.ennb.spm',\n registrySource: 's3',\n targetName: 'vocab.ennb.spm',\n expectedSize: 802190,\n sha256Checksum: 'cad75f2c3eccb9545b571ca32f235e6ffaae6d8a77bfa808cf8068948c421f10',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095159,\n blobBlockLength: 13,\n blobByteOffset: 71768730852\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennb/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 507,\n sha256Checksum: '865e5e47dbab13aa91319071f38c08c663caf76a18b3858ca2ead49d93f7c08e',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094896,\n blobBlockLength: 1,\n blobByteOffset: 71751589294\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_NB_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennb/2026-04-28/vocab.ennb.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095159,\n blobBlockLength: 13,\n blobByteOffset: 71768730852,\n modelId: 'vocab.ennb.spm',\n addon: 'nmt',\n expectedSize: 802190,\n sha256Checksum: 'cad75f2c3eccb9545b571ca32f235e6ffaae6d8a77bfa808cf8068948c421f10',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_NL_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennl/2026-04-28/lex.50.50.ennl.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093727,\n blobBlockLength: 62,\n blobByteOffset: 71675353698,\n modelId: 'lex.50.50.ennl.s2t.bin',\n addon: 'nmt',\n expectedSize: 4030624,\n sha256Checksum: 'bb4922718f8ca6d746ad090c0a88110a664dc050ee3f311bce33698b4e1679e9',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_42',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennl/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093789,\n blobBlockLength: 1,\n blobByteOffset: 71679384322,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 528,\n sha256Checksum: 'afdaaeae8dad04f48563cf16bdcac9ff7c9aaccd2c0af355c1d61b20f7581be8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_NL',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennl/2026-04-28/model.ennl.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093790,\n blobBlockLength: 482,\n blobByteOffset: 71679384850,\n modelId: 'model.ennl.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '7e8402da61972dc2fdcf7147c7f1e12f7916a6d9349514ee7a731288357575a9',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '32344f9aab0e5268',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennl/2026-04-28/model.ennl.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.ennl.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '7e8402da61972dc2fdcf7147c7f1e12f7916a6d9349514ee7a731288357575a9',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093790,\n blobBlockLength: 482,\n blobByteOffset: 71679384850,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennl/2026-04-28/lex.50.50.ennl.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.ennl.s2t.bin',\n expectedSize: 4030624,\n sha256Checksum: 'bb4922718f8ca6d746ad090c0a88110a664dc050ee3f311bce33698b4e1679e9',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093727,\n blobBlockLength: 62,\n blobByteOffset: 71675353698\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennl/2026-04-28/vocab.ennl.spm',\n registrySource: 's3',\n targetName: 'vocab.ennl.spm',\n expectedSize: 807708,\n sha256Checksum: 'c09588ca5662b230ed65bd39a07f58d9f7dd21c3a19e4aeb1bff39bf3b297c56',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094272,\n blobBlockLength: 13,\n blobByteOffset: 71710946637\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennl/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 528,\n sha256Checksum: 'afdaaeae8dad04f48563cf16bdcac9ff7c9aaccd2c0af355c1d61b20f7581be8',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1093789,\n blobBlockLength: 1,\n blobByteOffset: 71679384322\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_NL_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ennl/2026-04-28/vocab.ennl.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1094272,\n blobBlockLength: 13,\n blobByteOffset: 71710946637,\n modelId: 'vocab.ennl.spm',\n addon: 'nmt',\n expectedSize: 807708,\n sha256Checksum: 'c09588ca5662b230ed65bd39a07f58d9f7dd21c3a19e4aeb1bff39bf3b297c56',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_NO_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enno/2026-04-28/lex.50.50.enno.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095172,\n blobBlockLength: 65,\n blobByteOffset: 71769533042,\n modelId: 'lex.50.50.enno.s2t.bin',\n addon: 'nmt',\n expectedSize: 4234572,\n sha256Checksum: '0780a1659ef460864ba92da6d58ca6f9056fb8ec8be507c189aeb25ce23e429f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_43',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enno/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095237,\n blobBlockLength: 1,\n blobByteOffset: 71773767614,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 507,\n sha256Checksum: 'f496dd47a386da28c0400bbe6a956be1e98f3720c1ed765b57900952010f0589',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_NO',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enno/2026-04-28/model.enno.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095238,\n blobBlockLength: 262,\n blobByteOffset: 71773768121,\n modelId: 'model.enno.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '78429eb7f544361061c9d9ec2f0872adf30b76e4c9ef3dbaab1210a0f2aa19b5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '5ed19875896c2d47',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enno/2026-04-28/model.enno.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enno.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '78429eb7f544361061c9d9ec2f0872adf30b76e4c9ef3dbaab1210a0f2aa19b5',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095238,\n blobBlockLength: 262,\n blobByteOffset: 71773768121,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enno/2026-04-28/lex.50.50.enno.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enno.s2t.bin',\n expectedSize: 4234572,\n sha256Checksum: '0780a1659ef460864ba92da6d58ca6f9056fb8ec8be507c189aeb25ce23e429f',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095172,\n blobBlockLength: 65,\n blobByteOffset: 71769533042\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enno/2026-04-28/vocab.enno.spm',\n registrySource: 's3',\n targetName: 'vocab.enno.spm',\n expectedSize: 802190,\n sha256Checksum: 'cad75f2c3eccb9545b571ca32f235e6ffaae6d8a77bfa808cf8068948c421f10',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095500,\n blobBlockLength: 13,\n blobByteOffset: 71790909172\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enno/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 507,\n sha256Checksum: 'f496dd47a386da28c0400bbe6a956be1e98f3720c1ed765b57900952010f0589',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095237,\n blobBlockLength: 1,\n blobByteOffset: 71773767614\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_NO_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enno/2026-04-28/vocab.enno.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095500,\n blobBlockLength: 13,\n blobByteOffset: 71790909172,\n modelId: 'vocab.enno.spm',\n addon: 'nmt',\n expectedSize: 802190,\n sha256Checksum: 'cad75f2c3eccb9545b571ca32f235e6ffaae6d8a77bfa808cf8068948c421f10',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_PL_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpl/2025-12-18/lex.50.50.enpl.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800338,\n blobBlockLength: 55,\n blobByteOffset: 52442524085,\n modelId: 'lex.50.50.enpl.s2t.bin',\n addon: 'nmt',\n expectedSize: 3540052,\n sha256Checksum: 'd7d7b364673f633763c9f8f2e8ee9c7a184e92f4086e8b84abe870a2a8dbe5d5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_44',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpl/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800393,\n blobBlockLength: 1,\n blobByteOffset: 52446064137,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '9f90fc4aad773cb7f2b861ef83bed22f8ebdc4e4998db5a3a2709a368c740f9e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_PL',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpl/2025-12-18/model.enpl.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800394,\n blobBlockLength: 482,\n blobByteOffset: 52446066375,\n modelId: 'model.enpl.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'b0b59716bcc8f46b8dc6ab5c32a2732acaad42a5a6d9ae9b472526a1bb0d71d4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'cf49b2f176f0ced2',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpl/2025-12-18/model.enpl.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enpl.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'b0b59716bcc8f46b8dc6ab5c32a2732acaad42a5a6d9ae9b472526a1bb0d71d4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800394,\n blobBlockLength: 482,\n blobByteOffset: 52446066375,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpl/2025-12-18/lex.50.50.enpl.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enpl.s2t.bin',\n expectedSize: 3540052,\n sha256Checksum: 'd7d7b364673f633763c9f8f2e8ee9c7a184e92f4086e8b84abe870a2a8dbe5d5',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800338,\n blobBlockLength: 55,\n blobByteOffset: 52442524085\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpl/2025-12-18/vocab.enpl.spm',\n registrySource: 's3',\n targetName: 'vocab.enpl.spm',\n expectedSize: 821612,\n sha256Checksum: '2000f182efa8ce5f69bc3f9e574666b5bc2c0af684eedd32f69d15aa9021ea85',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800876,\n blobBlockLength: 13,\n blobByteOffset: 52477628162\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpl/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '9f90fc4aad773cb7f2b861ef83bed22f8ebdc4e4998db5a3a2709a368c740f9e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800393,\n blobBlockLength: 1,\n blobByteOffset: 52446064137\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_PL_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpl/2025-12-18/vocab.enpl.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800876,\n blobBlockLength: 13,\n blobByteOffset: 52477628162,\n modelId: 'vocab.enpl.spm',\n addon: 'nmt',\n expectedSize: 821612,\n sha256Checksum: '2000f182efa8ce5f69bc3f9e574666b5bc2c0af684eedd32f69d15aa9021ea85',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_PT_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpt/2025-12-18/lex.50.50.enpt.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822012,\n blobBlockLength: 61,\n blobByteOffset: 53866084514,\n modelId: 'lex.50.50.enpt.s2t.bin',\n addon: 'nmt',\n expectedSize: 3970340,\n sha256Checksum: 'ccb4c31c9e1899d77a200e71a86958e6ef6c8649627d0bbf3f873b57d9f236bd',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_45',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpt/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822073,\n blobBlockLength: 1,\n blobByteOffset: 53870054854,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2237,\n sha256Checksum: '661fa25e4955a7d63099021c04fe86cf4e58a3b141f8851696e2009b6596020d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_PT',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpt/2025-12-18/model.enpt.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822074,\n blobBlockLength: 482,\n blobByteOffset: 53870057091,\n modelId: 'model.enpt.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '07892fd2544ee79dcb643615d8f2debb9793fae16842e87c328e27a3dd26a770',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'bdd03a0f46fd4a97',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpt/2025-12-18/model.enpt.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enpt.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '07892fd2544ee79dcb643615d8f2debb9793fae16842e87c328e27a3dd26a770',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822074,\n blobBlockLength: 482,\n blobByteOffset: 53870057091,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpt/2025-12-18/lex.50.50.enpt.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enpt.s2t.bin',\n expectedSize: 3970340,\n sha256Checksum: 'ccb4c31c9e1899d77a200e71a86958e6ef6c8649627d0bbf3f873b57d9f236bd',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822012,\n blobBlockLength: 61,\n blobByteOffset: 53866084514\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpt/2025-12-18/vocab.enpt.spm',\n registrySource: 's3',\n targetName: 'vocab.enpt.spm',\n expectedSize: 816726,\n sha256Checksum: 'd9f46182823d5bbc84201252b2dfcac28f63e561f0ec827ed858f241864c9def',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822556,\n blobBlockLength: 13,\n blobByteOffset: 53901618878\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpt/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2237,\n sha256Checksum: '661fa25e4955a7d63099021c04fe86cf4e58a3b141f8851696e2009b6596020d',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822073,\n blobBlockLength: 1,\n blobByteOffset: 53870054854\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_PT_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enpt/2025-12-18/vocab.enpt.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822556,\n blobBlockLength: 13,\n blobByteOffset: 53901618878,\n modelId: 'vocab.enpt.spm',\n addon: 'nmt',\n expectedSize: 816726,\n sha256Checksum: 'd9f46182823d5bbc84201252b2dfcac28f63e561f0ec827ed858f241864c9def',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_RO_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enro/2025-12-18/lex.50.50.enro.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800889,\n blobBlockLength: 58,\n blobByteOffset: 52478449774,\n modelId: 'lex.50.50.enro.s2t.bin',\n addon: 'nmt',\n expectedSize: 3739880,\n sha256Checksum: '508bce64a8bc906a99043ad2f4855b4662e06f8827c1c6a75ab83181b4f17f81',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_46',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enro/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800947,\n blobBlockLength: 1,\n blobByteOffset: 52482189654,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: '0409f57014b16eb0bbcf56ed00d9f8ea4654722ff3cb3462e269b660dbc96028',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_RO',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enro/2025-12-18/model.enro.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800948,\n blobBlockLength: 262,\n blobByteOffset: 52482191902,\n modelId: 'model.enro.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'aa98c415e5beb1c5ee2f7d2508a3bbba949be223d7d9e5e1788ad0ae8598dda5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '0b5a05f2638de419',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enro/2025-12-18/model.enro.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enro.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'aa98c415e5beb1c5ee2f7d2508a3bbba949be223d7d9e5e1788ad0ae8598dda5',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800948,\n blobBlockLength: 262,\n blobByteOffset: 52482191902,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enro/2025-12-18/lex.50.50.enro.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enro.s2t.bin',\n expectedSize: 3739880,\n sha256Checksum: '508bce64a8bc906a99043ad2f4855b4662e06f8827c1c6a75ab83181b4f17f81',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800889,\n blobBlockLength: 58,\n blobByteOffset: 52478449774\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enro/2025-12-18/vocab.enro.spm',\n registrySource: 's3',\n targetName: 'vocab.enro.spm',\n expectedSize: 801522,\n sha256Checksum: 'd89eedf6cbbcb30d7ed4b0b092189196ac2b010ec0c3ede33a6676b17ea1c95e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801210,\n blobBlockLength: 13,\n blobByteOffset: 52499332953\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enro/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: '0409f57014b16eb0bbcf56ed00d9f8ea4654722ff3cb3462e269b660dbc96028',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 800947,\n blobBlockLength: 1,\n blobByteOffset: 52482189654\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_RO_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enro/2025-12-18/vocab.enro.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801210,\n blobBlockLength: 13,\n blobByteOffset: 52499332953,\n modelId: 'vocab.enro.spm',\n addon: 'nmt',\n expectedSize: 801522,\n sha256Checksum: 'd89eedf6cbbcb30d7ed4b0b092189196ac2b010ec0c3ede33a6676b17ea1c95e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_RU_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enru/2025-12-18/lex.50.50.enru.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822569,\n blobBlockLength: 43,\n blobByteOffset: 53902435604,\n modelId: 'lex.50.50.enru.s2t.bin',\n addon: 'nmt',\n expectedSize: 2774540,\n sha256Checksum: '4d91839726b960e70b6d05c53d0cffd16262832b1c0e1ea99d66f412dcc6a239',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_47',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enru/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822612,\n blobBlockLength: 1,\n blobByteOffset: 53905210144,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '6e77797aa8a3099017dbe7f6c3412b136c0d38089e1878a14248ee4a721540f8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_RU',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enru/2025-12-18/model.enru.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822613,\n blobBlockLength: 482,\n blobByteOffset: 53905212382,\n modelId: 'model.enru.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '184cb5cda528eeefc0f75f5d0035d787b71d74af135e3c5608d01ae02ecfb920',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '9f4ba8fbf01c04f4',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enru/2025-12-18/model.enru.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enru.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '184cb5cda528eeefc0f75f5d0035d787b71d74af135e3c5608d01ae02ecfb920',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822613,\n blobBlockLength: 482,\n blobByteOffset: 53905212382,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enru/2025-12-18/lex.50.50.enru.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enru.s2t.bin',\n expectedSize: 2774540,\n sha256Checksum: '4d91839726b960e70b6d05c53d0cffd16262832b1c0e1ea99d66f412dcc6a239',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822569,\n blobBlockLength: 43,\n blobByteOffset: 53902435604\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enru/2025-12-18/vocab.enru.spm',\n registrySource: 's3',\n targetName: 'vocab.enru.spm',\n expectedSize: 904455,\n sha256Checksum: '56ee63e14e8cb926c394242adc3ed7cc602644c3d33058cff2ce2959d52a6258',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823095,\n blobBlockLength: 14,\n blobByteOffset: 53936774169\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enru/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '6e77797aa8a3099017dbe7f6c3412b136c0d38089e1878a14248ee4a721540f8',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 822612,\n blobBlockLength: 1,\n blobByteOffset: 53905210144\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_RU_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enru/2025-12-18/vocab.enru.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823095,\n blobBlockLength: 14,\n blobByteOffset: 53936774169,\n modelId: 'vocab.enru.spm',\n addon: 'nmt',\n expectedSize: 904455,\n sha256Checksum: '56ee63e14e8cb926c394242adc3ed7cc602644c3d33058cff2ce2959d52a6258',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_SK_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensk/2025-12-18/lex.50.50.ensk.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801223,\n blobBlockLength: 52,\n blobByteOffset: 52500134475,\n modelId: 'lex.50.50.ensk.s2t.bin',\n addon: 'nmt',\n expectedSize: 3356348,\n sha256Checksum: 'f3d1aec4ee5246d6a6ee5dc7ed4c6b18f6071c7baca69bf1344aef675b95515d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_48',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensk/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801275,\n blobBlockLength: 1,\n blobByteOffset: 52503490823,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2260,\n sha256Checksum: '2a8d1469b2b3806dfcd1e1ad493b7f9492c83daf59a3f3cf32a8fea0add61cfe',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_SK',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensk/2025-12-18/model.ensk.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801276,\n blobBlockLength: 482,\n blobByteOffset: 52503493083,\n modelId: 'model.ensk.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'e33af359fd58c8958104b1b74b3ea302800ccba2f125c1629e09d7f9dd9a3804',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '673f5348de4a0a51',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensk/2025-12-18/model.ensk.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.ensk.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'e33af359fd58c8958104b1b74b3ea302800ccba2f125c1629e09d7f9dd9a3804',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801276,\n blobBlockLength: 482,\n blobByteOffset: 52503493083,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensk/2025-12-18/lex.50.50.ensk.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.ensk.s2t.bin',\n expectedSize: 3356348,\n sha256Checksum: 'f3d1aec4ee5246d6a6ee5dc7ed4c6b18f6071c7baca69bf1344aef675b95515d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801223,\n blobBlockLength: 52,\n blobByteOffset: 52500134475\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensk/2025-12-18/vocab.ensk.spm',\n registrySource: 's3',\n targetName: 'vocab.ensk.spm',\n expectedSize: 808888,\n sha256Checksum: 'cfa6a9e601d74686b117f041eb1ad9de94c34219110b67367d570a9e27026a46',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801758,\n blobBlockLength: 13,\n blobByteOffset: 52535054870\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensk/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2260,\n sha256Checksum: '2a8d1469b2b3806dfcd1e1ad493b7f9492c83daf59a3f3cf32a8fea0add61cfe',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801275,\n blobBlockLength: 1,\n blobByteOffset: 52503490823\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_SK_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensk/2025-12-18/vocab.ensk.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801758,\n blobBlockLength: 13,\n blobByteOffset: 52535054870,\n modelId: 'vocab.ensk.spm',\n addon: 'nmt',\n expectedSize: 808888,\n sha256Checksum: 'cfa6a9e601d74686b117f041eb1ad9de94c34219110b67367d570a9e27026a46',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_SL_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensl/2025-12-18/lex.50.50.ensl.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801771,\n blobBlockLength: 53,\n blobByteOffset: 52535863758,\n modelId: 'lex.50.50.ensl.s2t.bin',\n addon: 'nmt',\n expectedSize: 3428300,\n sha256Checksum: '2190798297bc12505f917189defcf451ab5bd2e815bc05df244dc291dc2ae63b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_49',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensl/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801824,\n blobBlockLength: 1,\n blobByteOffset: 52539292058,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2260,\n sha256Checksum: 'b4831bb55aa1c235b9bf6b4125aa96a39689cdbe9eef167241435b50e40c1fa8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_SL',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensl/2025-12-18/model.ensl.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801825,\n blobBlockLength: 482,\n blobByteOffset: 52539294318,\n modelId: 'model.ensl.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'a34fc5cc2f52733f64e37f8512cf1ddc4723c08a7a1a59d01fc2b6e641fc2280',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'f7dadfabc3033b07',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensl/2025-12-18/model.ensl.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.ensl.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'a34fc5cc2f52733f64e37f8512cf1ddc4723c08a7a1a59d01fc2b6e641fc2280',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801825,\n blobBlockLength: 482,\n blobByteOffset: 52539294318,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensl/2025-12-18/lex.50.50.ensl.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.ensl.s2t.bin',\n expectedSize: 3428300,\n sha256Checksum: '2190798297bc12505f917189defcf451ab5bd2e815bc05df244dc291dc2ae63b',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801771,\n blobBlockLength: 53,\n blobByteOffset: 52535863758\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensl/2025-12-18/vocab.ensl.spm',\n registrySource: 's3',\n targetName: 'vocab.ensl.spm',\n expectedSize: 803212,\n sha256Checksum: '7cd295383c46824c05a05db76b543d3595f2516537dd22b77190a45c8919224d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802307,\n blobBlockLength: 13,\n blobByteOffset: 52570856105\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensl/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2260,\n sha256Checksum: 'b4831bb55aa1c235b9bf6b4125aa96a39689cdbe9eef167241435b50e40c1fa8',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 801824,\n blobBlockLength: 1,\n blobByteOffset: 52539292058\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_SL_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensl/2025-12-18/vocab.ensl.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802307,\n blobBlockLength: 13,\n blobByteOffset: 52570856105,\n modelId: 'vocab.ensl.spm',\n addon: 'nmt',\n expectedSize: 803212,\n sha256Checksum: '7cd295383c46824c05a05db76b543d3595f2516537dd22b77190a45c8919224d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_SQ_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensq/2025-12-18/lex.50.50.ensq.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802320,\n blobBlockLength: 51,\n blobByteOffset: 52571659317,\n modelId: 'lex.50.50.ensq.s2t.bin',\n addon: 'nmt',\n expectedSize: 3303648,\n sha256Checksum: 'c901d1f5910315e0791720fa6f1275d79565e59d85013cf66b2f98cd9ba58ce1',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_50',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensq/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802371,\n blobBlockLength: 1,\n blobByteOffset: 52574962965,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2226,\n sha256Checksum: 'e4be386beb520141482dad11fd0f0ffe43587d56c491738cadee03fb5b99fdf5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_SQ',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensq/2025-12-18/model.ensq.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802372,\n blobBlockLength: 262,\n blobByteOffset: 52574965191,\n modelId: 'model.ensq.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '8a90d17ab2798509e639e544caa1d577f7cf87c31b9ab7e53890c8d1d59b6eee',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '9a159b9a3ea22560',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensq/2025-12-18/model.ensq.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.ensq.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '8a90d17ab2798509e639e544caa1d577f7cf87c31b9ab7e53890c8d1d59b6eee',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802372,\n blobBlockLength: 262,\n blobByteOffset: 52574965191,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensq/2025-12-18/lex.50.50.ensq.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.ensq.s2t.bin',\n expectedSize: 3303648,\n sha256Checksum: 'c901d1f5910315e0791720fa6f1275d79565e59d85013cf66b2f98cd9ba58ce1',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802320,\n blobBlockLength: 51,\n blobByteOffset: 52571659317\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensq/2025-12-18/vocab.ensq.spm',\n registrySource: 's3',\n targetName: 'vocab.ensq.spm',\n expectedSize: 820048,\n sha256Checksum: 'f27814dffca6102255ed7a338f2a83c16905a07e09444016187c768aaf9ac7b6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802634,\n blobBlockLength: 13,\n blobByteOffset: 52592106242\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensq/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2226,\n sha256Checksum: 'e4be386beb520141482dad11fd0f0ffe43587d56c491738cadee03fb5b99fdf5',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802371,\n blobBlockLength: 1,\n blobByteOffset: 52574962965\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_SQ_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensq/2025-12-18/vocab.ensq.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802634,\n blobBlockLength: 13,\n blobByteOffset: 52592106242,\n modelId: 'vocab.ensq.spm',\n addon: 'nmt',\n expectedSize: 820048,\n sha256Checksum: 'f27814dffca6102255ed7a338f2a83c16905a07e09444016187c768aaf9ac7b6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_SR_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensr/2026-04-28/lex.50.50.ensr.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095513,\n blobBlockLength: 39,\n blobByteOffset: 71791711362,\n modelId: 'lex.50.50.ensr.s2t.bin',\n addon: 'nmt',\n expectedSize: 2542096,\n sha256Checksum: 'b2ae22b4d7bc4295d25b8a55559ebbdbd8f728bc8de5c3d6f110bd44ce7d8962',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_51',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensr/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095552,\n blobBlockLength: 1,\n blobByteOffset: 71794253458,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 518,\n sha256Checksum: '6e6d9fd41118c8bc648c37f6ac58839b13319f25bc9eccc221aec4997225ed90',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_SR',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensr/2026-04-28/model.ensr.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095553,\n blobBlockLength: 482,\n blobByteOffset: 71794253976,\n modelId: 'model.ensr.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'd26e1c5a01f917c38ccda17d1bf116024ac4d988105e1bbf70bc5e8f9191c57a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '84e5bc4a9fd5dcf6',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensr/2026-04-28/model.ensr.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.ensr.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'd26e1c5a01f917c38ccda17d1bf116024ac4d988105e1bbf70bc5e8f9191c57a',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095553,\n blobBlockLength: 482,\n blobByteOffset: 71794253976,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensr/2026-04-28/lex.50.50.ensr.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.ensr.s2t.bin',\n expectedSize: 2542096,\n sha256Checksum: 'b2ae22b4d7bc4295d25b8a55559ebbdbd8f728bc8de5c3d6f110bd44ce7d8962',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095513,\n blobBlockLength: 39,\n blobByteOffset: 71791711362\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensr/2026-04-28/vocab.ensr.spm',\n registrySource: 's3',\n targetName: 'vocab.ensr.spm',\n expectedSize: 922599,\n sha256Checksum: '7f54ba1554b7b1a89299a0ec5950535432f062b50a5f8c9bcd664a2444fa882a',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096035,\n blobBlockLength: 15,\n blobByteOffset: 71825815763\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensr/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 518,\n sha256Checksum: '6e6d9fd41118c8bc648c37f6ac58839b13319f25bc9eccc221aec4997225ed90',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1095552,\n blobBlockLength: 1,\n blobByteOffset: 71794253458\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_SR_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensr/2026-04-28/vocab.ensr.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096035,\n blobBlockLength: 15,\n blobByteOffset: 71825815763,\n modelId: 'vocab.ensr.spm',\n addon: 'nmt',\n expectedSize: 922599,\n sha256Checksum: '7f54ba1554b7b1a89299a0ec5950535432f062b50a5f8c9bcd664a2444fa882a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_SV_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensv/2025-12-18/lex.50.50.ensv.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802647,\n blobBlockLength: 61,\n blobByteOffset: 52592926290,\n modelId: 'lex.50.50.ensv.s2t.bin',\n addon: 'nmt',\n expectedSize: 3948180,\n sha256Checksum: '5761c39887a0e0cd3dd38d22cadc31cecd2a43b0514c4bba96b426736e7fd72d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_52',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensv/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802708,\n blobBlockLength: 1,\n blobByteOffset: 52596874470,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: 'ca22866fc8ce6ddf8ed081cfad181850684ebafaec8ded47131b35014b76c3fa',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_SV',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensv/2025-12-18/model.ensv.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802709,\n blobBlockLength: 262,\n blobByteOffset: 52596876718,\n modelId: 'model.ensv.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '65ea0db8e658435846f297384face62dbf1804cfc92de8388b0e368e6ecc25a7',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '84b6bc14be653d76',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensv/2025-12-18/model.ensv.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.ensv.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '65ea0db8e658435846f297384face62dbf1804cfc92de8388b0e368e6ecc25a7',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802709,\n blobBlockLength: 262,\n blobByteOffset: 52596876718,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensv/2025-12-18/lex.50.50.ensv.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.ensv.s2t.bin',\n expectedSize: 3948180,\n sha256Checksum: '5761c39887a0e0cd3dd38d22cadc31cecd2a43b0514c4bba96b426736e7fd72d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802647,\n blobBlockLength: 61,\n blobByteOffset: 52592926290\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensv/2025-12-18/vocab.ensv.spm',\n registrySource: 's3',\n targetName: 'vocab.ensv.spm',\n expectedSize: 793868,\n sha256Checksum: 'ff7e366ff4228107e58d76ca348e7dea2eb325452363d68e0047e97fb483e40e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802971,\n blobBlockLength: 13,\n blobByteOffset: 52614017769\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensv/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: 'ca22866fc8ce6ddf8ed081cfad181850684ebafaec8ded47131b35014b76c3fa',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802708,\n blobBlockLength: 1,\n blobByteOffset: 52596874470\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_SV_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ensv/2025-12-18/vocab.ensv.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802971,\n blobBlockLength: 13,\n blobByteOffset: 52614017769,\n modelId: 'vocab.ensv.spm',\n addon: 'nmt',\n expectedSize: 793868,\n sha256Checksum: 'ff7e366ff4228107e58d76ca348e7dea2eb325452363d68e0047e97fb483e40e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_TA_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enta/2025-12-18/lex.50.50.enta.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802984,\n blobBlockLength: 44,\n blobByteOffset: 52614811637,\n modelId: 'lex.50.50.enta.s2t.bin',\n addon: 'nmt',\n expectedSize: 2862696,\n sha256Checksum: '1c8a503dd72f1c59e0ee0a231bda8acfba510e38f767039c1daedf21d2e84fc4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_53',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enta/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803028,\n blobBlockLength: 1,\n blobByteOffset: 52617674333,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: 'fb5c89056dbb62e6281993f99ba36a2ac9a8e8013405b359b146a30c0cadcedf',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_TA',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enta/2025-12-18/model.enta.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803029,\n blobBlockLength: 262,\n blobByteOffset: 52617676561,\n modelId: 'model.enta.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '8c7d9ba830c15e2ba89a70307f301a62b7b2a51ae1e9f9a3938843eaa875af3d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'dda694a149e2303d',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enta/2025-12-18/model.enta.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enta.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '8c7d9ba830c15e2ba89a70307f301a62b7b2a51ae1e9f9a3938843eaa875af3d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803029,\n blobBlockLength: 262,\n blobByteOffset: 52617676561,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enta/2025-12-18/lex.50.50.enta.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enta.s2t.bin',\n expectedSize: 2862696,\n sha256Checksum: '1c8a503dd72f1c59e0ee0a231bda8acfba510e38f767039c1daedf21d2e84fc4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 802984,\n blobBlockLength: 44,\n blobByteOffset: 52614811637\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enta/2025-12-18/vocab.enta.spm',\n registrySource: 's3',\n targetName: 'vocab.enta.spm',\n expectedSize: 1090089,\n sha256Checksum: '52a02652818903c82d4f2dd680aa89ee8993eaad40c04d3496ef119cb75fb710',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803291,\n blobBlockLength: 17,\n blobByteOffset: 52634817612\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enta/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: 'fb5c89056dbb62e6281993f99ba36a2ac9a8e8013405b359b146a30c0cadcedf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803028,\n blobBlockLength: 1,\n blobByteOffset: 52617674333\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_TA_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enta/2025-12-18/vocab.enta.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803291,\n blobBlockLength: 17,\n blobByteOffset: 52634817612,\n modelId: 'vocab.enta.spm',\n addon: 'nmt',\n expectedSize: 1090089,\n sha256Checksum: '52a02652818903c82d4f2dd680aa89ee8993eaad40c04d3496ef119cb75fb710',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_TE_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ente/2025-12-18/lex.50.50.ente.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803308,\n blobBlockLength: 44,\n blobByteOffset: 52635907701,\n modelId: 'lex.50.50.ente.s2t.bin',\n addon: 'nmt',\n expectedSize: 2832156,\n sha256Checksum: 'ea44d146f6b4614586654d91d7b677ee617e2367be2eccd72e81aa0fa359b92c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_54',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ente/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803352,\n blobBlockLength: 1,\n blobByteOffset: 52638739857,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2227,\n sha256Checksum: '3dd8752c133799247167677a48e4040a6742e4fad9fdc2896ad02bc8c8c45b39',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_TE',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ente/2025-12-18/model.ente.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803353,\n blobBlockLength: 262,\n blobByteOffset: 52638742084,\n modelId: 'model.ente.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'a3fee2fcd39df975da28666c536adff60147dce59062fca6097bb42fb2a52500',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'dc2d65a741147ffd',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ente/2025-12-18/model.ente.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.ente.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'a3fee2fcd39df975da28666c536adff60147dce59062fca6097bb42fb2a52500',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803353,\n blobBlockLength: 262,\n blobByteOffset: 52638742084,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ente/2025-12-18/lex.50.50.ente.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.ente.s2t.bin',\n expectedSize: 2832156,\n sha256Checksum: 'ea44d146f6b4614586654d91d7b677ee617e2367be2eccd72e81aa0fa359b92c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803308,\n blobBlockLength: 44,\n blobByteOffset: 52635907701\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ente/2025-12-18/vocab.ente.spm',\n registrySource: 's3',\n targetName: 'vocab.ente.spm',\n expectedSize: 1056424,\n sha256Checksum: '41d0828d103a07e0608c604102ba4418fcb06e82b3742c1abc6d3ec343673e93',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803615,\n blobBlockLength: 17,\n blobByteOffset: 52655883135\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ente/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2227,\n sha256Checksum: '3dd8752c133799247167677a48e4040a6742e4fad9fdc2896ad02bc8c8c45b39',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803352,\n blobBlockLength: 1,\n blobByteOffset: 52638739857\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_TE_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ente/2025-12-18/vocab.ente.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803615,\n blobBlockLength: 17,\n blobByteOffset: 52655883135,\n modelId: 'vocab.ente.spm',\n addon: 'nmt',\n expectedSize: 1056424,\n sha256Checksum: '41d0828d103a07e0608c604102ba4418fcb06e82b3742c1abc6d3ec343673e93',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_TH_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enth/2026-04-28/lex.50.50.enth.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096050,\n blobBlockLength: 47,\n blobByteOffset: 71826738362,\n modelId: 'lex.50.50.enth.s2t.bin',\n addon: 'nmt',\n expectedSize: 3016612,\n sha256Checksum: '6961ce07f38e6c113a70855706aa7cad4cc828f986d1751c33f14699f885a2e8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_55',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enth/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096097,\n blobBlockLength: 1,\n blobByteOffset: 71829754974,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 545,\n sha256Checksum: '46a192e5114e4e252d951a8f47f847a384443284940a5f9b6dbf03982e5739eb',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_TH',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enth/2026-04-28/model.enth.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096098,\n blobBlockLength: 482,\n blobByteOffset: 71829755519,\n modelId: 'model.enth.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '80e326097655fca75f841130da3338a849aa245374e1616448bcf37b9523a05a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '52d9580dbc73fc27',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enth/2026-04-28/model.enth.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enth.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '80e326097655fca75f841130da3338a849aa245374e1616448bcf37b9523a05a',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096098,\n blobBlockLength: 482,\n blobByteOffset: 71829755519,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enth/2026-04-28/lex.50.50.enth.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enth.s2t.bin',\n expectedSize: 3016612,\n sha256Checksum: '6961ce07f38e6c113a70855706aa7cad4cc828f986d1751c33f14699f885a2e8',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096050,\n blobBlockLength: 47,\n blobByteOffset: 71826738362\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enth/2026-04-28/vocab.enth.spm',\n registrySource: 's3',\n targetName: 'vocab.enth.spm',\n expectedSize: 993517,\n sha256Checksum: '5deff7093d558768f8c22406449202e27595f023cc383a2b66beed240ed46443',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096580,\n blobBlockLength: 16,\n blobByteOffset: 71861317306\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enth/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 545,\n sha256Checksum: '46a192e5114e4e252d951a8f47f847a384443284940a5f9b6dbf03982e5739eb',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096097,\n blobBlockLength: 1,\n blobByteOffset: 71829754974\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_TH_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enth/2026-04-28/vocab.enth.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096580,\n blobBlockLength: 16,\n blobByteOffset: 71861317306,\n modelId: 'vocab.enth.spm',\n addon: 'nmt',\n expectedSize: 993517,\n sha256Checksum: '5deff7093d558768f8c22406449202e27595f023cc383a2b66beed240ed46443',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_TR_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-entr/2025-12-18/lex.50.50.entr.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803632,\n blobBlockLength: 50,\n blobByteOffset: 52656939559,\n modelId: 'lex.50.50.entr.s2t.bin',\n addon: 'nmt',\n expectedSize: 3261300,\n sha256Checksum: '3aba0be842bd4c192659c781e6fdce8eb9b2b1fff29a40d22f75da369d59f46f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_56',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-entr/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803682,\n blobBlockLength: 1,\n blobByteOffset: 52660200859,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: '12f55292aaa411d81250234fb3ccc6cb5842a86f426e5cf2d08807bf2938f7cd',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_TR',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-entr/2025-12-18/model.entr.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803683,\n blobBlockLength: 262,\n blobByteOffset: 52660203107,\n modelId: 'model.entr.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'ea3cd4ee09de190df265c78d84260e277a9a8a3ddff05eb55d72afe7fc0fdbf4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '4001e8412ef245b9',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-entr/2025-12-18/model.entr.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.entr.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'ea3cd4ee09de190df265c78d84260e277a9a8a3ddff05eb55d72afe7fc0fdbf4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803683,\n blobBlockLength: 262,\n blobByteOffset: 52660203107,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-entr/2025-12-18/lex.50.50.entr.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.entr.s2t.bin',\n expectedSize: 3261300,\n sha256Checksum: '3aba0be842bd4c192659c781e6fdce8eb9b2b1fff29a40d22f75da369d59f46f',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803632,\n blobBlockLength: 50,\n blobByteOffset: 52656939559\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-entr/2025-12-18/vocab.entr.spm',\n registrySource: 's3',\n targetName: 'vocab.entr.spm',\n expectedSize: 798793,\n sha256Checksum: 'a220363d60391f7ce3df8ec9785424dbc00c24d5786d1a4308cf8ca3ed3385c2',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803945,\n blobBlockLength: 13,\n blobByteOffset: 52677344158\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-entr/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: '12f55292aaa411d81250234fb3ccc6cb5842a86f426e5cf2d08807bf2938f7cd',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803682,\n blobBlockLength: 1,\n blobByteOffset: 52660200859\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_TR_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-entr/2025-12-18/vocab.entr.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803945,\n blobBlockLength: 13,\n blobByteOffset: 52677344158,\n modelId: 'vocab.entr.spm',\n addon: 'nmt',\n expectedSize: 798793,\n sha256Checksum: 'a220363d60391f7ce3df8ec9785424dbc00c24d5786d1a4308cf8ca3ed3385c2',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_UK_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enuk/2025-12-18/lex.50.50.enuk.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803958,\n blobBlockLength: 47,\n blobByteOffset: 52678142951,\n modelId: 'lex.50.50.enuk.s2t.bin',\n addon: 'nmt',\n expectedSize: 3054364,\n sha256Checksum: 'dbfd4f8dc95da9c575164f7fc95ef00a2fb5f7d9f51b656559f99eeebdb57c87',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_57',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enuk/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804005,\n blobBlockLength: 1,\n blobByteOffset: 52681197315,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '4605a65deec4c18fd9503399360619eb31a8393755ac574e1fa106e0b48a6b57',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_UK',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enuk/2025-12-18/model.enuk.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804006,\n blobBlockLength: 482,\n blobByteOffset: 52681199553,\n modelId: 'model.enuk.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'ed8bb4a811e1c45a259e91052080d25e5c8b4e2df0e59cb1521c04a57855ef97',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '01b5b1147cf64759',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enuk/2025-12-18/model.enuk.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enuk.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'ed8bb4a811e1c45a259e91052080d25e5c8b4e2df0e59cb1521c04a57855ef97',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804006,\n blobBlockLength: 482,\n blobByteOffset: 52681199553,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enuk/2025-12-18/lex.50.50.enuk.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enuk.s2t.bin',\n expectedSize: 3054364,\n sha256Checksum: 'dbfd4f8dc95da9c575164f7fc95ef00a2fb5f7d9f51b656559f99eeebdb57c87',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 803958,\n blobBlockLength: 47,\n blobByteOffset: 52678142951\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enuk/2025-12-18/vocab.enuk.spm',\n registrySource: 's3',\n targetName: 'vocab.enuk.spm',\n expectedSize: 922077,\n sha256Checksum: '4dd6a91feff71e745395dcc0d52f885848ca0d843d5f70628ca51b3be1b70b45',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804488,\n blobBlockLength: 15,\n blobByteOffset: 52712761340\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enuk/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '4605a65deec4c18fd9503399360619eb31a8393755ac574e1fa106e0b48a6b57',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804005,\n blobBlockLength: 1,\n blobByteOffset: 52681197315\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_UK_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enuk/2025-12-18/vocab.enuk.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804488,\n blobBlockLength: 15,\n blobByteOffset: 52712761340,\n modelId: 'vocab.enuk.spm',\n addon: 'nmt',\n expectedSize: 922077,\n sha256Checksum: '4dd6a91feff71e745395dcc0d52f885848ca0d843d5f70628ca51b3be1b70b45',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_VI_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-envi/2026-04-28/lex.50.50.envi.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096596,\n blobBlockLength: 71,\n blobByteOffset: 71862310823,\n modelId: 'lex.50.50.envi.s2t.bin',\n addon: 'nmt',\n expectedSize: 4597684,\n sha256Checksum: '18116817fcd3d24dcdfd97cb57e9e60472800dae3b8a007f6f36d61d645f699c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_58',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-envi/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096667,\n blobBlockLength: 1,\n blobByteOffset: 71866908507,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 521,\n sha256Checksum: 'a0bd28041b9a48c56db942c1f12c59c355b04ff117ad940a68cad6212e3fcb99',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_VI',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-envi/2026-04-28/model.envi.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096668,\n blobBlockLength: 482,\n blobByteOffset: 71866909028,\n modelId: 'model.envi.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '04fa6044593a404c2aa02b3096f203880852df6f8f41e5eb966ed9f2b4366737',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '45d87022106b1265',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-envi/2026-04-28/model.envi.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.envi.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '04fa6044593a404c2aa02b3096f203880852df6f8f41e5eb966ed9f2b4366737',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096668,\n blobBlockLength: 482,\n blobByteOffset: 71866909028,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-envi/2026-04-28/lex.50.50.envi.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.envi.s2t.bin',\n expectedSize: 4597684,\n sha256Checksum: '18116817fcd3d24dcdfd97cb57e9e60472800dae3b8a007f6f36d61d645f699c',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096596,\n blobBlockLength: 71,\n blobByteOffset: 71862310823\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-envi/2026-04-28/vocab.envi.spm',\n registrySource: 's3',\n targetName: 'vocab.envi.spm',\n expectedSize: 785200,\n sha256Checksum: '76daa9a49e393e50c865c889290e4dc36e9453e5e1ec9df7b9f3bc39ea782537',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097150,\n blobBlockLength: 12,\n blobByteOffset: 71898470815\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-envi/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 521,\n sha256Checksum: 'a0bd28041b9a48c56db942c1f12c59c355b04ff117ad940a68cad6212e3fcb99',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1096667,\n blobBlockLength: 1,\n blobByteOffset: 71866908507\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_VI_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-envi/2026-04-28/vocab.envi.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097150,\n blobBlockLength: 12,\n blobByteOffset: 71898470815,\n modelId: 'vocab.envi.spm',\n addon: 'nmt',\n expectedSize: 785200,\n sha256Checksum: '76daa9a49e393e50c865c889290e4dc36e9453e5e1ec9df7b9f3bc39ea782537',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_ZH_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enzh/2025-12-18/lex.50.50.enzh.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823109,\n blobBlockLength: 100,\n blobByteOffset: 53937678624,\n modelId: 'lex.50.50.enzh.s2t.bin',\n addon: 'nmt',\n expectedSize: 6506248,\n sha256Checksum: '4a5e5827788060f1d718a8132b69440929387514a045796e9b77f935db68c055',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_59',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enzh/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823209,\n blobBlockLength: 1,\n blobByteOffset: 53944184872,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2233,\n sha256Checksum: '42d277178bca7f757463067ff659467e1b0d300f8408b6de6c7e891b4c19075b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_ZH',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enzh/2025-12-18/model.enzh.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823210,\n blobBlockLength: 670,\n blobByteOffset: 53944187105,\n modelId: 'model.enzh.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 43849787,\n sha256Checksum: '4e5accc141373565ddc8fa1565bceaa8d0c3482a82cab8131c719ebcc6c2157c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '6f1a3e74eddcdedc',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enzh/2025-12-18/model.enzh.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.enzh.intgemm.alphas.bin',\n expectedSize: 43849787,\n sha256Checksum: '4e5accc141373565ddc8fa1565bceaa8d0c3482a82cab8131c719ebcc6c2157c',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823210,\n blobBlockLength: 670,\n blobByteOffset: 53944187105,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enzh/2025-12-18/lex.50.50.enzh.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.enzh.s2t.bin',\n expectedSize: 6506248,\n sha256Checksum: '4a5e5827788060f1d718a8132b69440929387514a045796e9b77f935db68c055',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823109,\n blobBlockLength: 100,\n blobByteOffset: 53937678624\n },\n {\n key: 'srcVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enzh/2025-12-18/srcvocab.enzh.spm',\n registrySource: 's3',\n targetName: 'srcvocab.enzh.spm',\n expectedSize: 806952,\n sha256Checksum: 'bd9b65504acc6d9726dd281f7defc2adb7c2c22d0688fe2f84697de25197c8c5',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823880,\n blobBlockLength: 13,\n blobByteOffset: 53988036892\n },\n {\n key: 'dstVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enzh/2025-12-18/trgvocab.enzh.spm',\n registrySource: 's3',\n targetName: 'trgvocab.enzh.spm',\n expectedSize: 772004,\n sha256Checksum: 'aded6993c36e440284d11cec3f6b8aef9c0e43188a772d80be342a713adf223d',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823893,\n blobBlockLength: 12,\n blobByteOffset: 53988843844\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enzh/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2233,\n sha256Checksum: '42d277178bca7f757463067ff659467e1b0d300f8408b6de6c7e891b4c19075b',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823209,\n blobBlockLength: 1,\n blobByteOffset: 53944184872\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_EN_ZH_SRCVOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enzh/2025-12-18/srcvocab.enzh.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823880,\n blobBlockLength: 13,\n blobByteOffset: 53988036892,\n modelId: 'srcvocab.enzh.spm',\n addon: 'nmt',\n expectedSize: 806952,\n sha256Checksum: 'bd9b65504acc6d9726dd281f7defc2adb7c2c22d0688fe2f84697de25197c8c5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_EN_ZH_TRGVOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-enzh/2025-12-18/trgvocab.enzh.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 823893,\n blobBlockLength: 12,\n blobByteOffset: 53988843844,\n modelId: 'trgvocab.enzh.spm',\n addon: 'nmt',\n expectedSize: 772004,\n sha256Checksum: 'aded6993c36e440284d11cec3f6b8aef9c0e43188a772d80be342a713adf223d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_ES_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-esen/2026-04-28/lex.50.50.esen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817692,\n blobBlockLength: 71,\n blobByteOffset: 53572787540,\n modelId: 'lex.50.50.esen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4636248,\n sha256Checksum: 'e2610211d3b9577d012638fe7e7e74ed7b4b708ce96b9e792e67c282a6492daa',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_60',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-esen/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817763,\n blobBlockLength: 1,\n blobByteOffset: 53577423788,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 517,\n sha256Checksum: '14365f5f960bb23fed9507d11eb8c2c29416670a34187e652ac09b8b2fa1fadf',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_ES_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-esen/2026-04-28/model.esen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817764,\n blobBlockLength: 482,\n blobByteOffset: 53577424305,\n modelId: 'model.esen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '4aed7734152ae0045d1a69ae49c86cfda18f53c61f90e95e1d1de1c7c7c3b033',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '5cf6be4b68346772',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-esen/2026-04-28/model.esen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.esen.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '4aed7734152ae0045d1a69ae49c86cfda18f53c61f90e95e1d1de1c7c7c3b033',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817764,\n blobBlockLength: 482,\n blobByteOffset: 53577424305,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-esen/2026-04-28/lex.50.50.esen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.esen.s2t.bin',\n expectedSize: 4636248,\n sha256Checksum: 'e2610211d3b9577d012638fe7e7e74ed7b4b708ce96b9e792e67c282a6492daa',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817692,\n blobBlockLength: 71,\n blobByteOffset: 53572787540\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-esen/2026-04-28/vocab.esen.spm',\n registrySource: 's3',\n targetName: 'vocab.esen.spm',\n expectedSize: 816054,\n sha256Checksum: '5ae254fa9b15aa182e70fd2a6186b1333c63a29a48043a9224c6aa4fcac058ad',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 818246,\n blobBlockLength: 13,\n blobByteOffset: 53608986092\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-esen/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 517,\n sha256Checksum: '14365f5f960bb23fed9507d11eb8c2c29416670a34187e652ac09b8b2fa1fadf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817763,\n blobBlockLength: 1,\n blobByteOffset: 53577423788\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_ES_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-esen/2026-04-28/vocab.esen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 818246,\n blobBlockLength: 13,\n blobByteOffset: 53608986092,\n modelId: 'vocab.esen.spm',\n addon: 'nmt',\n expectedSize: 816054,\n sha256Checksum: '5ae254fa9b15aa182e70fd2a6186b1333c63a29a48043a9224c6aa4fcac058ad',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_ET_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-eten/2025-12-18/lex.50.50.eten.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804503,\n blobBlockLength: 71,\n blobByteOffset: 52713683417,\n modelId: 'lex.50.50.eten.s2t.bin',\n addon: 'nmt',\n expectedSize: 4625968,\n sha256Checksum: 'ad9750f3b41cb5686e561608271a0dc935fc827bf43226e579a6f48a3f6b5f11',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_61',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-eten/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804574,\n blobBlockLength: 1,\n blobByteOffset: 52718309385,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '76ff9f4f4d12ee9ff693c759e9e7f9793e6866ad37b206a82acb54d3c05e88c8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_ET_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-eten/2025-12-18/model.eten.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804575,\n blobBlockLength: 482,\n blobByteOffset: 52718311623,\n modelId: 'model.eten.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'df844b3a6df906b2e0682fb7765694f35b351854db00f964896d9c8c365fbff3',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '914ed81b98754490',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-eten/2025-12-18/model.eten.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.eten.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'df844b3a6df906b2e0682fb7765694f35b351854db00f964896d9c8c365fbff3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804575,\n blobBlockLength: 482,\n blobByteOffset: 52718311623,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-eten/2025-12-18/lex.50.50.eten.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.eten.s2t.bin',\n expectedSize: 4625968,\n sha256Checksum: 'ad9750f3b41cb5686e561608271a0dc935fc827bf43226e579a6f48a3f6b5f11',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804503,\n blobBlockLength: 71,\n blobByteOffset: 52713683417\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-eten/2025-12-18/vocab.eten.spm',\n registrySource: 's3',\n targetName: 'vocab.eten.spm',\n expectedSize: 817574,\n sha256Checksum: '89a3deea4ae7d674fb46a4dae39135dd4dfaac9786f2868d0b5bc5c0aca2ef83',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805057,\n blobBlockLength: 13,\n blobByteOffset: 52749873410\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-eten/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '76ff9f4f4d12ee9ff693c759e9e7f9793e6866ad37b206a82acb54d3c05e88c8',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 804574,\n blobBlockLength: 1,\n blobByteOffset: 52718309385\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_ET_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-eten/2025-12-18/vocab.eten.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805057,\n blobBlockLength: 13,\n blobByteOffset: 52749873410,\n modelId: 'vocab.eten.spm',\n addon: 'nmt',\n expectedSize: 817574,\n sha256Checksum: '89a3deea4ae7d674fb46a4dae39135dd4dfaac9786f2868d0b5bc5c0aca2ef83',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_FA_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-faen/2025-12-18/lex.50.50.faen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805070,\n blobBlockLength: 60,\n blobByteOffset: 52750690984,\n modelId: 'lex.50.50.faen.s2t.bin',\n addon: 'nmt',\n expectedSize: 3896420,\n sha256Checksum: '4828cb060bd4375f8aabb85fed39c18aca52b738838394546f2ddbf707a6f28e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_62',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-faen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805130,\n blobBlockLength: 1,\n blobByteOffset: 52754587404,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: 'ad7bec88566f377ddc317682c0df0d6a187977c7713c3f4e75dc328a3967b28a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_FA_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-faen/2025-12-18/model.faen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805131,\n blobBlockLength: 262,\n blobByteOffset: 52754589632,\n modelId: 'model.faen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'aa326306c177e11129de5bfeba518abc499c0b6005492766748a9c9ea6f4c712',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '1881940a89560eb5',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-faen/2025-12-18/model.faen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.faen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'aa326306c177e11129de5bfeba518abc499c0b6005492766748a9c9ea6f4c712',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805131,\n blobBlockLength: 262,\n blobByteOffset: 52754589632,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-faen/2025-12-18/lex.50.50.faen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.faen.s2t.bin',\n expectedSize: 3896420,\n sha256Checksum: '4828cb060bd4375f8aabb85fed39c18aca52b738838394546f2ddbf707a6f28e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805070,\n blobBlockLength: 60,\n blobByteOffset: 52750690984\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-faen/2025-12-18/vocab.faen.spm',\n registrySource: 's3',\n targetName: 'vocab.faen.spm',\n expectedSize: 843153,\n sha256Checksum: 'bf36943053883d6c0fc98c2985f676a0a37042e796bad0e3df0a813d9d5393f4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805393,\n blobBlockLength: 13,\n blobByteOffset: 52771730683\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-faen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: 'ad7bec88566f377ddc317682c0df0d6a187977c7713c3f4e75dc328a3967b28a',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805130,\n blobBlockLength: 1,\n blobByteOffset: 52754587404\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_FA_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-faen/2025-12-18/vocab.faen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805393,\n blobBlockLength: 13,\n blobByteOffset: 52771730683,\n modelId: 'vocab.faen.spm',\n addon: 'nmt',\n expectedSize: 843153,\n sha256Checksum: 'bf36943053883d6c0fc98c2985f676a0a37042e796bad0e3df0a813d9d5393f4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_FI_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fien/2025-12-18/lex.50.50.fien.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805406,\n blobBlockLength: 80,\n blobByteOffset: 52772573836,\n modelId: 'lex.50.50.fien.s2t.bin',\n addon: 'nmt',\n expectedSize: 5195132,\n sha256Checksum: '8bad431e07b062ba47f363b76e4656cc743fd608316d8a4830a4315e44ac9abb',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_63',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fien/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805486,\n blobBlockLength: 1,\n blobByteOffset: 52777768968,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '5d70d133d68950e0a4d5d54bbcb705148711498aa843dbce1d7c569042aa0f27',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_FI_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fien/2025-12-18/model.fien.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805487,\n blobBlockLength: 482,\n blobByteOffset: 52777771206,\n modelId: 'model.fien.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'e3887341f18bcc7787d9b59eb1229b56eefce18d49b7ebf1e62c55d65a377321',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '281a6766e3060090',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fien/2025-12-18/model.fien.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.fien.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'e3887341f18bcc7787d9b59eb1229b56eefce18d49b7ebf1e62c55d65a377321',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805487,\n blobBlockLength: 482,\n blobByteOffset: 52777771206,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fien/2025-12-18/lex.50.50.fien.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.fien.s2t.bin',\n expectedSize: 5195132,\n sha256Checksum: '8bad431e07b062ba47f363b76e4656cc743fd608316d8a4830a4315e44ac9abb',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805406,\n blobBlockLength: 80,\n blobByteOffset: 52772573836\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fien/2025-12-18/vocab.fien.spm',\n registrySource: 's3',\n targetName: 'vocab.fien.spm',\n expectedSize: 818770,\n sha256Checksum: '6a866911427f2916609ae89c7f2f04a78de3fdd8aa183039ecba986635d4f246',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805969,\n blobBlockLength: 13,\n blobByteOffset: 52809332993\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fien/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '5d70d133d68950e0a4d5d54bbcb705148711498aa843dbce1d7c569042aa0f27',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805486,\n blobBlockLength: 1,\n blobByteOffset: 52777768968\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_FI_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fien/2025-12-18/vocab.fien.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805969,\n blobBlockLength: 13,\n blobByteOffset: 52809332993,\n modelId: 'vocab.fien.spm',\n addon: 'nmt',\n expectedSize: 818770,\n sha256Checksum: '6a866911427f2916609ae89c7f2f04a78de3fdd8aa183039ecba986635d4f246',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_FR_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fren/2025-12-18/lex.50.50.fren.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824240,\n blobBlockLength: 74,\n blobByteOffset: 54011444827,\n modelId: 'lex.50.50.fren.s2t.bin',\n addon: 'nmt',\n expectedSize: 4824120,\n sha256Checksum: '87c6752ea908f5f0347c10ac0cf7d80d9c2f4f20c81c90168f3e8230b56d4440',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_64',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fren/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824314,\n blobBlockLength: 1,\n blobByteOffset: 54016268947,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '3f274b8aa7445b76e17c5106d31f8675b0112d29899e1c8422db66a42e1e2f7c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_FR_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fren/2025-12-18/model.fren.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824315,\n blobBlockLength: 482,\n blobByteOffset: 54016271185,\n modelId: 'model.fren.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '15f997bc0d13808b0b0fbd0786e684a3c8a52adcd8071844b76123fdacbf2b90',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '81426898c9cc9eb6',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fren/2025-12-18/model.fren.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.fren.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '15f997bc0d13808b0b0fbd0786e684a3c8a52adcd8071844b76123fdacbf2b90',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824315,\n blobBlockLength: 482,\n blobByteOffset: 54016271185,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fren/2025-12-18/lex.50.50.fren.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.fren.s2t.bin',\n expectedSize: 4824120,\n sha256Checksum: '87c6752ea908f5f0347c10ac0cf7d80d9c2f4f20c81c90168f3e8230b56d4440',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824240,\n blobBlockLength: 74,\n blobByteOffset: 54011444827\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fren/2025-12-18/vocab.fren.spm',\n registrySource: 's3',\n targetName: 'vocab.fren.spm',\n expectedSize: 814404,\n sha256Checksum: '783abf3abe075afdf8d85d233994bef2c3a064e935ab1bed946820aff6ac002a',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824797,\n blobBlockLength: 13,\n blobByteOffset: 54047832972\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fren/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '3f274b8aa7445b76e17c5106d31f8675b0112d29899e1c8422db66a42e1e2f7c',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824314,\n blobBlockLength: 1,\n blobByteOffset: 54016268947\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_FR_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-fren/2025-12-18/vocab.fren.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824797,\n blobBlockLength: 13,\n blobByteOffset: 54047832972,\n modelId: 'vocab.fren.spm',\n addon: 'nmt',\n expectedSize: 814404,\n sha256Checksum: '783abf3abe075afdf8d85d233994bef2c3a064e935ab1bed946820aff6ac002a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_GU_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-guen/2025-12-18/lex.50.50.guen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805982,\n blobBlockLength: 65,\n blobByteOffset: 52810151763,\n modelId: 'lex.50.50.guen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4197836,\n sha256Checksum: 'af01dbec5a1555ddad7c4b19878ecda00e6f9d179ca76a40ab2413de6b081cb0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_65',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-guen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806047,\n blobBlockLength: 1,\n blobByteOffset: 52814349599,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: 'e83ffa5b334b6181f2aac1b2ec6f24621ecae387a34b83fae3b3bd822358794a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_GU_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-guen/2025-12-18/model.guen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806048,\n blobBlockLength: 262,\n blobByteOffset: 52814351827,\n modelId: 'model.guen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '7b16e4e64f2776c73d87db01922c091738566b6a6092a42488cbaee1385cb4ab',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '7dbc98d86322a365',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-guen/2025-12-18/model.guen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.guen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '7b16e4e64f2776c73d87db01922c091738566b6a6092a42488cbaee1385cb4ab',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806048,\n blobBlockLength: 262,\n blobByteOffset: 52814351827,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-guen/2025-12-18/lex.50.50.guen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.guen.s2t.bin',\n expectedSize: 4197836,\n sha256Checksum: 'af01dbec5a1555ddad7c4b19878ecda00e6f9d179ca76a40ab2413de6b081cb0',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 805982,\n blobBlockLength: 65,\n blobByteOffset: 52810151763\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-guen/2025-12-18/vocab.guen.spm',\n registrySource: 's3',\n targetName: 'vocab.guen.spm',\n expectedSize: 965143,\n sha256Checksum: '6ad2aa442cc04398bd06b4f03a1027939bbfbaac5f87b3d21f667406f4f62704',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806310,\n blobBlockLength: 15,\n blobByteOffset: 52831492878\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-guen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: 'e83ffa5b334b6181f2aac1b2ec6f24621ecae387a34b83fae3b3bd822358794a',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806047,\n blobBlockLength: 1,\n blobByteOffset: 52814349599\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_GU_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-guen/2025-12-18/vocab.guen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806310,\n blobBlockLength: 15,\n blobByteOffset: 52831492878,\n modelId: 'vocab.guen.spm',\n addon: 'nmt',\n expectedSize: 965143,\n sha256Checksum: '6ad2aa442cc04398bd06b4f03a1027939bbfbaac5f87b3d21f667406f4f62704',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hbsen/2026-04-28/lex.50.50.hbsen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097162,\n blobBlockLength: 79,\n blobByteOffset: 71899256015,\n modelId: 'lex.50.50.hbsen.s2t.bin',\n addon: 'nmt',\n expectedSize: 5155408,\n sha256Checksum: 'dccff06320cb87aaa6f93c246038b453d0d0c6f47fa3acd1162f104ac6a2c43f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_66',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hbsen/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097241,\n blobBlockLength: 1,\n blobByteOffset: 71904411423,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 510,\n sha256Checksum: '38dc69742d14bbb90f56038fa826aa840ab05c211afcf38367e58e9bbfc196fd',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hbsen/2026-04-28/model.hbsen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097242,\n blobBlockLength: 482,\n blobByteOffset: 71904411933,\n modelId: 'model.hbsen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '744c61ec0b987c44717f192fcebda7c2a1ac34f5cbfb56672771d28ff79c82c7',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'e7279cdb7974c23b',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hbsen/2026-04-28/model.hbsen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.hbsen.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '744c61ec0b987c44717f192fcebda7c2a1ac34f5cbfb56672771d28ff79c82c7',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097242,\n blobBlockLength: 482,\n blobByteOffset: 71904411933,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hbsen/2026-04-28/lex.50.50.hbsen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.hbsen.s2t.bin',\n expectedSize: 5155408,\n sha256Checksum: 'dccff06320cb87aaa6f93c246038b453d0d0c6f47fa3acd1162f104ac6a2c43f',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097162,\n blobBlockLength: 79,\n blobByteOffset: 71899256015\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hbsen/2026-04-28/vocab.hbsen.spm',\n registrySource: 's3',\n targetName: 'vocab.hbsen.spm',\n expectedSize: 817335,\n sha256Checksum: '320561e2cef014a6d626a64822add3a387c91f609f23ea3b7f421d194075c14c',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097724,\n blobBlockLength: 13,\n blobByteOffset: 71935973720\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hbsen/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 510,\n sha256Checksum: '38dc69742d14bbb90f56038fa826aa840ab05c211afcf38367e58e9bbfc196fd',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097241,\n blobBlockLength: 1,\n blobByteOffset: 71904411423\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hbsen/2026-04-28/vocab.hbsen.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097724,\n blobBlockLength: 13,\n blobByteOffset: 71935973720,\n modelId: 'vocab.hbsen.spm',\n addon: 'nmt',\n expectedSize: 817335,\n sha256Checksum: '320561e2cef014a6d626a64822add3a387c91f609f23ea3b7f421d194075c14c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_HE_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-heen/2025-12-18/lex.50.50.heen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806325,\n blobBlockLength: 71,\n blobByteOffset: 52832458021,\n modelId: 'lex.50.50.heen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4636028,\n sha256Checksum: '427c88732cb93b28d2a947cace79f62aabceb7d6f4438516e85994b14a73b68e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_67',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-heen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806396,\n blobBlockLength: 1,\n blobByteOffset: 52837094049,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '19fc82a5d4ee5b18121979635f181e4adb72a5e6856c6e393c73c55ebafd06e6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_HE_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-heen/2025-12-18/model.heen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806397,\n blobBlockLength: 262,\n blobByteOffset: 52837096277,\n modelId: 'model.heen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '7291cab3ec483b8cf524da96201fe947dca8c550132be21a06badeb946b5c079',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'edaafacf9a5209e6',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-heen/2025-12-18/model.heen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.heen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '7291cab3ec483b8cf524da96201fe947dca8c550132be21a06badeb946b5c079',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806397,\n blobBlockLength: 262,\n blobByteOffset: 52837096277,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-heen/2025-12-18/lex.50.50.heen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.heen.s2t.bin',\n expectedSize: 4636028,\n sha256Checksum: '427c88732cb93b28d2a947cace79f62aabceb7d6f4438516e85994b14a73b68e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806325,\n blobBlockLength: 71,\n blobByteOffset: 52832458021\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-heen/2025-12-18/vocab.heen.spm',\n registrySource: 's3',\n targetName: 'vocab.heen.spm',\n expectedSize: 845177,\n sha256Checksum: '45f5d413b9208c5f24340ab0e20a63604a572784d289baa2d788deea946f79a2',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806659,\n blobBlockLength: 13,\n blobByteOffset: 52854237328\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-heen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '19fc82a5d4ee5b18121979635f181e4adb72a5e6856c6e393c73c55ebafd06e6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806396,\n blobBlockLength: 1,\n blobByteOffset: 52837094049\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_HE_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-heen/2025-12-18/vocab.heen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806659,\n blobBlockLength: 13,\n blobByteOffset: 52854237328,\n modelId: 'vocab.heen.spm',\n addon: 'nmt',\n expectedSize: 845177,\n sha256Checksum: '45f5d413b9208c5f24340ab0e20a63604a572784d289baa2d788deea946f79a2',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_HI_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hien/2025-12-18/lex.50.50.hien.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806672,\n blobBlockLength: 71,\n blobByteOffset: 52855082505,\n modelId: 'lex.50.50.hien.s2t.bin',\n addon: 'nmt',\n expectedSize: 4605984,\n sha256Checksum: 'e789be33dfdb639e98f5cf9eb01aa945ec3c882f68f3c8860389cf846f0112d8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_68',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hien/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806743,\n blobBlockLength: 1,\n blobByteOffset: 52859688489,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '021e7c56d6fc5bb2f674a817a7e7ac34cc0d3d544c0f7194267c411f69381df0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_HI_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hien/2025-12-18/model.hien.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806744,\n blobBlockLength: 262,\n blobByteOffset: 52859690717,\n modelId: 'model.hien.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'c82fd6ed3794b79fb9dde0718a22324502a408a9eca73497b5d0a4b8024ec6de',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '5c3f06787a30d11a',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hien/2025-12-18/model.hien.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.hien.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'c82fd6ed3794b79fb9dde0718a22324502a408a9eca73497b5d0a4b8024ec6de',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806744,\n blobBlockLength: 262,\n blobByteOffset: 52859690717,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hien/2025-12-18/lex.50.50.hien.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.hien.s2t.bin',\n expectedSize: 4605984,\n sha256Checksum: 'e789be33dfdb639e98f5cf9eb01aa945ec3c882f68f3c8860389cf846f0112d8',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806672,\n blobBlockLength: 71,\n blobByteOffset: 52855082505\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hien/2025-12-18/vocab.hien.spm',\n registrySource: 's3',\n targetName: 'vocab.hien.spm',\n expectedSize: 925436,\n sha256Checksum: '9cbc02094ac2ebd75211b3bb6789a9d6fa112ce3c08e897f1645f18b21fbab00',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807006,\n blobBlockLength: 15,\n blobByteOffset: 52876831768\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hien/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '021e7c56d6fc5bb2f674a817a7e7ac34cc0d3d544c0f7194267c411f69381df0',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 806743,\n blobBlockLength: 1,\n blobByteOffset: 52859688489\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_HI_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hien/2025-12-18/vocab.hien.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807006,\n blobBlockLength: 15,\n blobByteOffset: 52876831768,\n modelId: 'vocab.hien.spm',\n addon: 'nmt',\n expectedSize: 925436,\n sha256Checksum: '9cbc02094ac2ebd75211b3bb6789a9d6fa112ce3c08e897f1645f18b21fbab00',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_HR_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hren/2025-12-18/lex.50.50.hren.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807021,\n blobBlockLength: 59,\n blobByteOffset: 52877757204,\n modelId: 'lex.50.50.hren.s2t.bin',\n addon: 'nmt',\n expectedSize: 3860080,\n sha256Checksum: 'c9ef83603e41f78d41fa601ba9c7196be58518bd964bfe364f325665bc8bc7d0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_69',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hren/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807080,\n blobBlockLength: 1,\n blobByteOffset: 52881617284,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: 'dd9f9a7acca1d503bff03b6b179c2e03e450211d619e0972ca80d35a4b2c7dda',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_HR_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hren/2025-12-18/model.hren.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807081,\n blobBlockLength: 262,\n blobByteOffset: 52881619532,\n modelId: 'model.hren.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'fa6c8220d3f1c41eb75b720859971dbe3acb6bf63691656c58faa4cdc28d918d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '23151c82c420b0c9',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hren/2025-12-18/model.hren.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.hren.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'fa6c8220d3f1c41eb75b720859971dbe3acb6bf63691656c58faa4cdc28d918d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807081,\n blobBlockLength: 262,\n blobByteOffset: 52881619532,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hren/2025-12-18/lex.50.50.hren.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.hren.s2t.bin',\n expectedSize: 3860080,\n sha256Checksum: 'c9ef83603e41f78d41fa601ba9c7196be58518bd964bfe364f325665bc8bc7d0',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807021,\n blobBlockLength: 59,\n blobByteOffset: 52877757204\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hren/2025-12-18/vocab.hren.spm',\n registrySource: 's3',\n targetName: 'vocab.hren.spm',\n expectedSize: 796159,\n sha256Checksum: '4e9cc10e8ff4a4ed64fc90b45835385690e55f49b40e8efe471597d2e3a9cd24',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807343,\n blobBlockLength: 13,\n blobByteOffset: 52898760583\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hren/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: 'dd9f9a7acca1d503bff03b6b179c2e03e450211d619e0972ca80d35a4b2c7dda',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807080,\n blobBlockLength: 1,\n blobByteOffset: 52881617284\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_HR_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-hren/2025-12-18/vocab.hren.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807343,\n blobBlockLength: 13,\n blobByteOffset: 52898760583,\n modelId: 'vocab.hren.spm',\n addon: 'nmt',\n expectedSize: 796159,\n sha256Checksum: '4e9cc10e8ff4a4ed64fc90b45835385690e55f49b40e8efe471597d2e3a9cd24',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_HU_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-huen/2025-12-18/lex.50.50.huen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807356,\n blobBlockLength: 79,\n blobByteOffset: 52899556742,\n modelId: 'lex.50.50.huen.s2t.bin',\n addon: 'nmt',\n expectedSize: 5162428,\n sha256Checksum: 'fff56b2501258ec4c46a8fc715caee7aeb15d853f859cdfacd3ef9903ed2fff1',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_70',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-huen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807435,\n blobBlockLength: 1,\n blobByteOffset: 52904719170,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2061,\n sha256Checksum: '54fcb8278317d1b1b4d70768749b7521aee1367102c4eb87ff73df3e26830d74',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_HU_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-huen/2025-12-18/model.huen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807436,\n blobBlockLength: 262,\n blobByteOffset: 52904721231,\n modelId: 'model.huen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17140899,\n sha256Checksum: '518356dbb0c071739318601963a87580fb41732652f52bd3635246330c186d9e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '8e320da8390029da',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-huen/2025-12-18/model.huen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.huen.intgemm.alphas.bin',\n expectedSize: 17140899,\n sha256Checksum: '518356dbb0c071739318601963a87580fb41732652f52bd3635246330c186d9e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807436,\n blobBlockLength: 262,\n blobByteOffset: 52904721231,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-huen/2025-12-18/lex.50.50.huen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.huen.s2t.bin',\n expectedSize: 5162428,\n sha256Checksum: 'fff56b2501258ec4c46a8fc715caee7aeb15d853f859cdfacd3ef9903ed2fff1',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807356,\n blobBlockLength: 79,\n blobByteOffset: 52899556742\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-huen/2025-12-18/vocab.huen.spm',\n registrySource: 's3',\n targetName: 'vocab.huen.spm',\n expectedSize: 820746,\n sha256Checksum: '0db772702235b02d1f29abafb7a49ed77e54c60245b3a46e90716e74263aedd6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807698,\n blobBlockLength: 13,\n blobByteOffset: 52921862130\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-huen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2061,\n sha256Checksum: '54fcb8278317d1b1b4d70768749b7521aee1367102c4eb87ff73df3e26830d74',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807435,\n blobBlockLength: 1,\n blobByteOffset: 52904719170\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_HU_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-huen/2025-12-18/vocab.huen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807698,\n blobBlockLength: 13,\n blobByteOffset: 52921862130,\n modelId: 'vocab.huen.spm',\n addon: 'nmt',\n expectedSize: 820746,\n sha256Checksum: '0db772702235b02d1f29abafb7a49ed77e54c60245b3a46e90716e74263aedd6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_ID_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iden/2025-12-18/lex.50.50.iden.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807711,\n blobBlockLength: 62,\n blobByteOffset: 52922682876,\n modelId: 'lex.50.50.iden.s2t.bin',\n addon: 'nmt',\n expectedSize: 4050348,\n sha256Checksum: '7a543087d4e9c1fe2f6b6f735b5e31aeadab80235e734c0388278722042ee3a2',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_71',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iden/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807773,\n blobBlockLength: 1,\n blobByteOffset: 52926733224,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: 'f7cd6333d85cfa1978f50284575f1d5bcfff79f79b0c429de58993a55f2d9c38',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_ID_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iden/2025-12-18/model.iden.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807774,\n blobBlockLength: 262,\n blobByteOffset: 52926735472,\n modelId: 'model.iden.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'eeed3d8c2c78ec7011b31b2419e1d2dfdf2a7cc0ee0dbb1fcd164c934cb5d328',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '0e22a7df91d2d88c',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iden/2025-12-18/model.iden.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.iden.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'eeed3d8c2c78ec7011b31b2419e1d2dfdf2a7cc0ee0dbb1fcd164c934cb5d328',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807774,\n blobBlockLength: 262,\n blobByteOffset: 52926735472,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iden/2025-12-18/lex.50.50.iden.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.iden.s2t.bin',\n expectedSize: 4050348,\n sha256Checksum: '7a543087d4e9c1fe2f6b6f735b5e31aeadab80235e734c0388278722042ee3a2',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807711,\n blobBlockLength: 62,\n blobByteOffset: 52922682876\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iden/2025-12-18/vocab.iden.spm',\n registrySource: 's3',\n targetName: 'vocab.iden.spm',\n expectedSize: 772941,\n sha256Checksum: 'a2dd1462abd17cccbbf3fefc562131f06b293f8ff6a5efad73ebb0176810d835',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808036,\n blobBlockLength: 12,\n blobByteOffset: 52943876523\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iden/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: 'f7cd6333d85cfa1978f50284575f1d5bcfff79f79b0c429de58993a55f2d9c38',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 807773,\n blobBlockLength: 1,\n blobByteOffset: 52926733224\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_ID_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iden/2025-12-18/vocab.iden.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808036,\n blobBlockLength: 12,\n blobByteOffset: 52943876523,\n modelId: 'vocab.iden.spm',\n addon: 'nmt',\n expectedSize: 772941,\n sha256Checksum: 'a2dd1462abd17cccbbf3fefc562131f06b293f8ff6a5efad73ebb0176810d835',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_IS_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-isen/2025-12-18/lex.50.50.isen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808048,\n blobBlockLength: 61,\n blobByteOffset: 52944649464,\n modelId: 'lex.50.50.isen.s2t.bin',\n addon: 'nmt',\n expectedSize: 3951884,\n sha256Checksum: '0655d05ccaf3cd2a01f910ef542455b7b14e66d96f6c95889079b9ca1ee168cf',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_72',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-isen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808109,\n blobBlockLength: 1,\n blobByteOffset: 52948601348,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '67471af48a4a52c380175f968129600040019f9af1f048ae9a7f54fe6631c2e1',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_IS_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-isen/2025-12-18/model.isen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808110,\n blobBlockLength: 482,\n blobByteOffset: 52948603586,\n modelId: 'model.isen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'd2c285755d37f710458f1a49db5391a123e4e41ca7bd9829dd87cc61e4907ee6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '9e381c652690984e',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-isen/2025-12-18/model.isen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.isen.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'd2c285755d37f710458f1a49db5391a123e4e41ca7bd9829dd87cc61e4907ee6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808110,\n blobBlockLength: 482,\n blobByteOffset: 52948603586,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-isen/2025-12-18/lex.50.50.isen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.isen.s2t.bin',\n expectedSize: 3951884,\n sha256Checksum: '0655d05ccaf3cd2a01f910ef542455b7b14e66d96f6c95889079b9ca1ee168cf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808048,\n blobBlockLength: 61,\n blobByteOffset: 52944649464\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-isen/2025-12-18/vocab.isen.spm',\n registrySource: 's3',\n targetName: 'vocab.isen.spm',\n expectedSize: 808315,\n sha256Checksum: '5c69f0c81f6198f5615ac5aad9d89eb81a46ae8ea396a9e8e274a76409d35e13',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808592,\n blobBlockLength: 13,\n blobByteOffset: 52980165373\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-isen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '67471af48a4a52c380175f968129600040019f9af1f048ae9a7f54fe6631c2e1',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808109,\n blobBlockLength: 1,\n blobByteOffset: 52948601348\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_IS_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-isen/2025-12-18/vocab.isen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808592,\n blobBlockLength: 13,\n blobByteOffset: 52980165373,\n modelId: 'vocab.isen.spm',\n addon: 'nmt',\n expectedSize: 808315,\n sha256Checksum: '5c69f0c81f6198f5615ac5aad9d89eb81a46ae8ea396a9e8e274a76409d35e13',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_IT_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iten/2025-12-18/lex.50.50.iten.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824810,\n blobBlockLength: 72,\n blobByteOffset: 54048647376,\n modelId: 'lex.50.50.iten.s2t.bin',\n addon: 'nmt',\n expectedSize: 4713616,\n sha256Checksum: '0700d6d70b30490e68ff9deca0b45b80310745b491855bde3a13e1692d0cbce1',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_73',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iten/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824882,\n blobBlockLength: 1,\n blobByteOffset: 54053360992,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '0bca85e2c3eacb2a6ed3c168730bdafb3398d158e0d72ba1adb78a437dae8874',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_IT_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iten/2025-12-18/model.iten.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824883,\n blobBlockLength: 482,\n blobByteOffset: 54053363230,\n modelId: 'model.iten.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '21b70978ce2f3b4da7a06b5de86a09abe3acd30b9eee1b2ebb3582b9bad790bf',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'ebc981d270d4b81c',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iten/2025-12-18/model.iten.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.iten.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '21b70978ce2f3b4da7a06b5de86a09abe3acd30b9eee1b2ebb3582b9bad790bf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824883,\n blobBlockLength: 482,\n blobByteOffset: 54053363230,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iten/2025-12-18/lex.50.50.iten.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.iten.s2t.bin',\n expectedSize: 4713616,\n sha256Checksum: '0700d6d70b30490e68ff9deca0b45b80310745b491855bde3a13e1692d0cbce1',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824810,\n blobBlockLength: 72,\n blobByteOffset: 54048647376\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iten/2025-12-18/vocab.iten.spm',\n registrySource: 's3',\n targetName: 'vocab.iten.spm',\n expectedSize: 812724,\n sha256Checksum: '3ef0211d4ae6db21440892f180f2019fe2bfc110a330ffa9d2eca9665e4f2bc5',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 825365,\n blobBlockLength: 13,\n blobByteOffset: 54084925017\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iten/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '0bca85e2c3eacb2a6ed3c168730bdafb3398d158e0d72ba1adb78a437dae8874',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 824882,\n blobBlockLength: 1,\n blobByteOffset: 54053360992\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_IT_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-iten/2025-12-18/vocab.iten.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 825365,\n blobBlockLength: 13,\n blobByteOffset: 54084925017,\n modelId: 'vocab.iten.spm',\n addon: 'nmt',\n expectedSize: 812724,\n sha256Checksum: '3ef0211d4ae6db21440892f180f2019fe2bfc110a330ffa9d2eca9665e4f2bc5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_JA_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-jaen/2025-12-18/lex.50.50.jaen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 825378,\n blobBlockLength: 143,\n blobByteOffset: 54085737741,\n modelId: 'lex.50.50.jaen.s2t.bin',\n addon: 'nmt',\n expectedSize: 9348172,\n sha256Checksum: '525f412f0d210536c2933c78ae395fa0bf2b5ee6cc5dda61ebc2e79410ebaee4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_74',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-jaen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 825521,\n blobBlockLength: 1,\n blobByteOffset: 54095085913,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: 'aa5c56afcdd54a3e67ee767391da68d13618b2c56a938dd93e325afb51a44cba',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_JA_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-jaen/2025-12-18/model.jaen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 825522,\n blobBlockLength: 672,\n blobByteOffset: 54095088151,\n modelId: 'model.jaen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 43977787,\n sha256Checksum: '3a603e20bfe1be86071913f9e23ab5129075bc0a8490151020ac4821e4f17302',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'fc7f9bec840f2f41',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-jaen/2025-12-18/model.jaen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.jaen.intgemm.alphas.bin',\n expectedSize: 43977787,\n sha256Checksum: '3a603e20bfe1be86071913f9e23ab5129075bc0a8490151020ac4821e4f17302',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 825522,\n blobBlockLength: 672,\n blobByteOffset: 54095088151,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-jaen/2025-12-18/lex.50.50.jaen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.jaen.s2t.bin',\n expectedSize: 9348172,\n sha256Checksum: '525f412f0d210536c2933c78ae395fa0bf2b5ee6cc5dda61ebc2e79410ebaee4',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 825378,\n blobBlockLength: 143,\n blobByteOffset: 54085737741\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-jaen/2025-12-18/vocab.jaen.spm',\n registrySource: 's3',\n targetName: 'vocab.jaen.spm',\n expectedSize: 1443222,\n sha256Checksum: '5cb217758bae05877bb3f0c2f612e4e7c1e4cb03c10db11f4a47098d7ae62919',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826194,\n blobBlockLength: 23,\n blobByteOffset: 54139065938\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-jaen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: 'aa5c56afcdd54a3e67ee767391da68d13618b2c56a938dd93e325afb51a44cba',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 825521,\n blobBlockLength: 1,\n blobByteOffset: 54095085913\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_JA_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-jaen/2025-12-18/vocab.jaen.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826194,\n blobBlockLength: 23,\n blobByteOffset: 54139065938,\n modelId: 'vocab.jaen.spm',\n addon: 'nmt',\n expectedSize: 1443222,\n sha256Checksum: '5cb217758bae05877bb3f0c2f612e4e7c1e4cb03c10db11f4a47098d7ae62919',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_KN_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-knen/2025-12-18/lex.50.50.knen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808605,\n blobBlockLength: 72,\n blobByteOffset: 52980973688,\n modelId: 'lex.50.50.knen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4655776,\n sha256Checksum: 'aa50a74f15e9ef8cf27a5b905c17037bd9d67883afde71b34c4138f9507fedfc',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_75',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-knen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808677,\n blobBlockLength: 1,\n blobByteOffset: 52985629464,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: 'b3a0a9a70174e40a26b3b26647d5b11a7d0201304f338d7a9710089182c6f266',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_KN_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-knen/2025-12-18/model.knen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808678,\n blobBlockLength: 262,\n blobByteOffset: 52985631692,\n modelId: 'model.knen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '49e8d3bd794b098047f7b177d9d0e6d3e49ac798c2b75bc132149cb46c5bfbfd',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'e461ae8a56f1c421',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-knen/2025-12-18/model.knen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.knen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '49e8d3bd794b098047f7b177d9d0e6d3e49ac798c2b75bc132149cb46c5bfbfd',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808678,\n blobBlockLength: 262,\n blobByteOffset: 52985631692,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-knen/2025-12-18/lex.50.50.knen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.knen.s2t.bin',\n expectedSize: 4655776,\n sha256Checksum: 'aa50a74f15e9ef8cf27a5b905c17037bd9d67883afde71b34c4138f9507fedfc',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808605,\n blobBlockLength: 72,\n blobByteOffset: 52980973688\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-knen/2025-12-18/vocab.knen.spm',\n registrySource: 's3',\n targetName: 'vocab.knen.spm',\n expectedSize: 1065636,\n sha256Checksum: 'd729397a42dba5801f330927a9956527161d6e0711b59fcea7cd2e862e6f36cc',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808940,\n blobBlockLength: 17,\n blobByteOffset: 53002772743\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-knen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: 'b3a0a9a70174e40a26b3b26647d5b11a7d0201304f338d7a9710089182c6f266',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808677,\n blobBlockLength: 1,\n blobByteOffset: 52985629464\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_KN_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-knen/2025-12-18/vocab.knen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808940,\n blobBlockLength: 17,\n blobByteOffset: 53002772743,\n modelId: 'vocab.knen.spm',\n addon: 'nmt',\n expectedSize: 1065636,\n sha256Checksum: 'd729397a42dba5801f330927a9956527161d6e0711b59fcea7cd2e862e6f36cc',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_KO_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-koen/2025-12-18/lex.50.50.koen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808957,\n blobBlockLength: 132,\n blobByteOffset: 53003838379,\n modelId: 'lex.50.50.koen.s2t.bin',\n addon: 'nmt',\n expectedSize: 8617516,\n sha256Checksum: 'b26291f063ce216a74239275f0485534a38111203e59d42a2a56ba62d6eeb196',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_76',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-koen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809089,\n blobBlockLength: 1,\n blobByteOffset: 53012455895,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '352a63a3919aa1e714a7ea76065b0fb00f02f7979c8eef03cd53dbb7c1133160',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_KO_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-koen/2025-12-18/model.koen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809090,\n blobBlockLength: 672,\n blobByteOffset: 53012458133,\n modelId: 'model.koen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 43977787,\n sha256Checksum: '7cb30cbc0a86e242084756445268a2346136771c92b884d9b4ebb077f67d5507',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '65dbbc275174c0a8',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-koen/2025-12-18/model.koen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.koen.intgemm.alphas.bin',\n expectedSize: 43977787,\n sha256Checksum: '7cb30cbc0a86e242084756445268a2346136771c92b884d9b4ebb077f67d5507',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809090,\n blobBlockLength: 672,\n blobByteOffset: 53012458133,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-koen/2025-12-18/lex.50.50.koen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.koen.s2t.bin',\n expectedSize: 8617516,\n sha256Checksum: 'b26291f063ce216a74239275f0485534a38111203e59d42a2a56ba62d6eeb196',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 808957,\n blobBlockLength: 132,\n blobByteOffset: 53003838379\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-koen/2025-12-18/vocab.koen.spm',\n registrySource: 's3',\n targetName: 'vocab.koen.spm',\n expectedSize: 1410063,\n sha256Checksum: '1c72b740ab793cdc3a8f16913dd6b4e806c77421077dd2d85edeb7be38418598',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809762,\n blobBlockLength: 22,\n blobByteOffset: 53056435920\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-koen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '352a63a3919aa1e714a7ea76065b0fb00f02f7979c8eef03cd53dbb7c1133160',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809089,\n blobBlockLength: 1,\n blobByteOffset: 53012455895\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_KO_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-koen/2025-12-18/vocab.koen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809762,\n blobBlockLength: 22,\n blobByteOffset: 53056435920,\n modelId: 'vocab.koen.spm',\n addon: 'nmt',\n expectedSize: 1410063,\n sha256Checksum: '1c72b740ab793cdc3a8f16913dd6b4e806c77421077dd2d85edeb7be38418598',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_LT_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lten/2025-12-18/lex.50.50.lten.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809784,\n blobBlockLength: 73,\n blobByteOffset: 53057845983,\n modelId: 'lex.50.50.lten.s2t.bin',\n addon: 'nmt',\n expectedSize: 4724124,\n sha256Checksum: 'f687821f4074063031b7857bd61232b4ef520f3cbac5a80d59993b27bf10a032',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_77',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lten/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809857,\n blobBlockLength: 1,\n blobByteOffset: 53062570107,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: 'faad83abe1317f8172550ec3485dfdd4c7399fdae1c13116be929bab6247588f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_LT_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lten/2025-12-18/model.lten.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809858,\n blobBlockLength: 262,\n blobByteOffset: 53062572355,\n modelId: 'model.lten.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '0aa4571ede6f68db2f14d2662875b4d2e6323aeccd75e3b4377ab9072a22db70',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '0908a25d6fab2378',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lten/2025-12-18/model.lten.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.lten.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '0aa4571ede6f68db2f14d2662875b4d2e6323aeccd75e3b4377ab9072a22db70',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809858,\n blobBlockLength: 262,\n blobByteOffset: 53062572355,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lten/2025-12-18/lex.50.50.lten.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.lten.s2t.bin',\n expectedSize: 4724124,\n sha256Checksum: 'f687821f4074063031b7857bd61232b4ef520f3cbac5a80d59993b27bf10a032',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809784,\n blobBlockLength: 73,\n blobByteOffset: 53057845983\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lten/2025-12-18/vocab.lten.spm',\n registrySource: 's3',\n targetName: 'vocab.lten.spm',\n expectedSize: 807623,\n sha256Checksum: 'df3c6b7e9aa74ab4cce9f4ec73a44aac80be05fcd41ae55198a92c07c5ee3109',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810120,\n blobBlockLength: 13,\n blobByteOffset: 53079713406\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lten/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: 'faad83abe1317f8172550ec3485dfdd4c7399fdae1c13116be929bab6247588f',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 809857,\n blobBlockLength: 1,\n blobByteOffset: 53062570107\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_LT_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lten/2025-12-18/vocab.lten.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810120,\n blobBlockLength: 13,\n blobByteOffset: 53079713406,\n modelId: 'vocab.lten.spm',\n addon: 'nmt',\n expectedSize: 807623,\n sha256Checksum: 'df3c6b7e9aa74ab4cce9f4ec73a44aac80be05fcd41ae55198a92c07c5ee3109',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_LV_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lven/2025-12-18/lex.50.50.lven.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810133,\n blobBlockLength: 65,\n blobByteOffset: 53080521029,\n modelId: 'lex.50.50.lven.s2t.bin',\n addon: 'nmt',\n expectedSize: 4214476,\n sha256Checksum: 'dff852d317f80169899e2e1132277cf922fa7a117b060e09a14dd19c0e1a02b8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_78',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lven/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810198,\n blobBlockLength: 1,\n blobByteOffset: 53084735505,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: 'b0241e56b0849e99f72f9508beaab4a95e55f34ef5e5fdc989a2912ed9f0901b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_LV_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lven/2025-12-18/model.lven.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810199,\n blobBlockLength: 262,\n blobByteOffset: 53084737753,\n modelId: 'model.lven.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '7a96dd363ae9b4485aa254ddbff042223a565a20bfe5ba0ba29b94d8ded0406a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '24a4cdd88ec28191',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lven/2025-12-18/model.lven.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.lven.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '7a96dd363ae9b4485aa254ddbff042223a565a20bfe5ba0ba29b94d8ded0406a',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810199,\n blobBlockLength: 262,\n blobByteOffset: 53084737753,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lven/2025-12-18/lex.50.50.lven.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.lven.s2t.bin',\n expectedSize: 4214476,\n sha256Checksum: 'dff852d317f80169899e2e1132277cf922fa7a117b060e09a14dd19c0e1a02b8',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810133,\n blobBlockLength: 65,\n blobByteOffset: 53080521029\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lven/2025-12-18/vocab.lven.spm',\n registrySource: 's3',\n targetName: 'vocab.lven.spm',\n expectedSize: 815278,\n sha256Checksum: '585a265757c071f5694d1bb7e65b73f38b1d065a62cda61510fa6c54fb87d2c9',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810461,\n blobBlockLength: 13,\n blobByteOffset: 53101878804\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lven/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: 'b0241e56b0849e99f72f9508beaab4a95e55f34ef5e5fdc989a2912ed9f0901b',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810198,\n blobBlockLength: 1,\n blobByteOffset: 53084735505\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_LV_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-lven/2025-12-18/vocab.lven.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810461,\n blobBlockLength: 13,\n blobByteOffset: 53101878804,\n modelId: 'vocab.lven.spm',\n addon: 'nmt',\n expectedSize: 815278,\n sha256Checksum: '585a265757c071f5694d1bb7e65b73f38b1d065a62cda61510fa6c54fb87d2c9',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_ML_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mlen/2025-12-18/lex.50.50.mlen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810474,\n blobBlockLength: 77,\n blobByteOffset: 53102694082,\n modelId: 'lex.50.50.mlen.s2t.bin',\n addon: 'nmt',\n expectedSize: 5017972,\n sha256Checksum: 'afb882ad10c9540c12fa105e1e5418a54ec8117f11c4f17d998adf1d445e308c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_79',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mlen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810551,\n blobBlockLength: 1,\n blobByteOffset: 53107712054,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '9506bbc62bc05a66454d8de1fc13ab8ae553a0a813013aba77f82e6200b99815',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_ML_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mlen/2025-12-18/model.mlen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810552,\n blobBlockLength: 262,\n blobByteOffset: 53107714282,\n modelId: 'model.mlen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '5480719a5a8ac43acdf28db1c89a4d60837a475e1120ea0c4e021c4d5b7e6fd6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '57db6fd7c341470b',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mlen/2025-12-18/model.mlen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.mlen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '5480719a5a8ac43acdf28db1c89a4d60837a475e1120ea0c4e021c4d5b7e6fd6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810552,\n blobBlockLength: 262,\n blobByteOffset: 53107714282,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mlen/2025-12-18/lex.50.50.mlen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.mlen.s2t.bin',\n expectedSize: 5017972,\n sha256Checksum: 'afb882ad10c9540c12fa105e1e5418a54ec8117f11c4f17d998adf1d445e308c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810474,\n blobBlockLength: 77,\n blobByteOffset: 53102694082\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mlen/2025-12-18/vocab.mlen.spm',\n registrySource: 's3',\n targetName: 'vocab.mlen.spm',\n expectedSize: 1109047,\n sha256Checksum: 'c6b2150c85a18cae437d4e7245ef29d4b3629b2c611fce812d115a59c3b80efe',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810814,\n blobBlockLength: 17,\n blobByteOffset: 53124855333\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mlen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '9506bbc62bc05a66454d8de1fc13ab8ae553a0a813013aba77f82e6200b99815',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810551,\n blobBlockLength: 1,\n blobByteOffset: 53107712054\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_ML_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mlen/2025-12-18/vocab.mlen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810814,\n blobBlockLength: 17,\n blobByteOffset: 53124855333,\n modelId: 'vocab.mlen.spm',\n addon: 'nmt',\n expectedSize: 1109047,\n sha256Checksum: 'c6b2150c85a18cae437d4e7245ef29d4b3629b2c611fce812d115a59c3b80efe',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_MS_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-msen/2025-12-18/lex.50.50.msen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810831,\n blobBlockLength: 67,\n blobByteOffset: 53125964380,\n modelId: 'lex.50.50.msen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4371896,\n sha256Checksum: '1ef575be54a310eeace84c52e609f2a8c292f3c4b170376ee6ee3524c0c30316',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_80',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-msen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810898,\n blobBlockLength: 1,\n blobByteOffset: 53130336276,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '7bbfc639516ff96e6385aa8572a518f5862769c452625fcea6babc28d65bfe88',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_MS_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-msen/2025-12-18/model.msen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810899,\n blobBlockLength: 262,\n blobByteOffset: 53130338504,\n modelId: 'model.msen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'db5c9415591f8a35c5c72046227b9c9398acade5df8afb5e6ac9f11f7d6650d5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '3809cc381fdbe20e',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-msen/2025-12-18/model.msen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.msen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'db5c9415591f8a35c5c72046227b9c9398acade5df8afb5e6ac9f11f7d6650d5',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810899,\n blobBlockLength: 262,\n blobByteOffset: 53130338504,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-msen/2025-12-18/lex.50.50.msen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.msen.s2t.bin',\n expectedSize: 4371896,\n sha256Checksum: '1ef575be54a310eeace84c52e609f2a8c292f3c4b170376ee6ee3524c0c30316',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810831,\n blobBlockLength: 67,\n blobByteOffset: 53125964380\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-msen/2025-12-18/vocab.msen.spm',\n registrySource: 's3',\n targetName: 'vocab.msen.spm',\n expectedSize: 802191,\n sha256Checksum: '6db8c20803d5f9c9fff2b6c3950f5bda4a9fa14aaef1d92818f8a3d53fd850f9',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811161,\n blobBlockLength: 13,\n blobByteOffset: 53147479555\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-msen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '7bbfc639516ff96e6385aa8572a518f5862769c452625fcea6babc28d65bfe88',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 810898,\n blobBlockLength: 1,\n blobByteOffset: 53130336276\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_MS_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-msen/2025-12-18/vocab.msen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811161,\n blobBlockLength: 13,\n blobByteOffset: 53147479555,\n modelId: 'vocab.msen.spm',\n addon: 'nmt',\n expectedSize: 802191,\n sha256Checksum: '6db8c20803d5f9c9fff2b6c3950f5bda4a9fa14aaef1d92818f8a3d53fd850f9',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_MT_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mten/2025-12-18/lex.50.50.mten.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811174,\n blobBlockLength: 46,\n blobByteOffset: 53148281746,\n modelId: 'lex.50.50.mten.s2t.bin',\n addon: 'nmt',\n expectedSize: 3000868,\n sha256Checksum: '27fba2f530dc4e459e2acdcb0f575f20660bb18f20126a02327061dc5cd34ccd',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_81',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mten/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811220,\n blobBlockLength: 1,\n blobByteOffset: 53151282614,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 1977,\n sha256Checksum: '22bfcb4c843f5625a807391d1b10e2075c3a3b0af348e367ff1f99cf489a967d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_MT_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mten/2025-12-18/model.mten.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811221,\n blobBlockLength: 262,\n blobByteOffset: 53151284591,\n modelId: 'model.mten.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17140836,\n sha256Checksum: '7d86de7e2136b5ecf0b61f5cbd01418a1fdbb52f08b8eb9d7dfe2379bbdf2486',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '93ee79c88b9af034',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mten/2025-12-18/model.mten.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.mten.intgemm.alphas.bin',\n expectedSize: 17140836,\n sha256Checksum: '7d86de7e2136b5ecf0b61f5cbd01418a1fdbb52f08b8eb9d7dfe2379bbdf2486',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811221,\n blobBlockLength: 262,\n blobByteOffset: 53151284591,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mten/2025-12-18/lex.50.50.mten.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.mten.s2t.bin',\n expectedSize: 3000868,\n sha256Checksum: '27fba2f530dc4e459e2acdcb0f575f20660bb18f20126a02327061dc5cd34ccd',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811174,\n blobBlockLength: 46,\n blobByteOffset: 53148281746\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mten/2025-12-18/vocab.mten.spm',\n registrySource: 's3',\n targetName: 'vocab.mten.spm',\n expectedSize: 817199,\n sha256Checksum: '01937c1cc6ea5c9d6ad93a42d3888a54bf12a7193411fed25327b698fdd4650d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811483,\n blobBlockLength: 13,\n blobByteOffset: 53168425427\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mten/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 1977,\n sha256Checksum: '22bfcb4c843f5625a807391d1b10e2075c3a3b0af348e367ff1f99cf489a967d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811220,\n blobBlockLength: 1,\n blobByteOffset: 53151282614\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_MT_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-mten/2025-12-18/vocab.mten.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811483,\n blobBlockLength: 13,\n blobByteOffset: 53168425427,\n modelId: 'vocab.mten.spm',\n addon: 'nmt',\n expectedSize: 817199,\n sha256Checksum: '01937c1cc6ea5c9d6ad93a42d3888a54bf12a7193411fed25327b698fdd4650d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_NB_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nben/2025-12-18/lex.50.50.nben.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811496,\n blobBlockLength: 23,\n blobByteOffset: 53169242626,\n modelId: 'lex.50.50.nben.s2t.bin',\n addon: 'nmt',\n expectedSize: 1487760,\n sha256Checksum: '5ec9a1eb849cf8fde0908904808e65a0c5a3027f85b1b5b9944c6b15d424598d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_82',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nben/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811519,\n blobBlockLength: 1,\n blobByteOffset: 53170730386,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 1907,\n sha256Checksum: '90c6dcca1eb387db2380a82aca98919f2db5932bebb7920c9322c531a488c2e6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_NB_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nben/2025-12-18/model.nben.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811520,\n blobBlockLength: 199,\n blobByteOffset: 53170732293,\n modelId: 'model.nben.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 12980780,\n sha256Checksum: '03cef6aa909d2397420201551354c21010324fe155753d62b4eb190adca071be',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'ae4df82fe7a6860f',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nben/2025-12-18/model.nben.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.nben.intgemm.alphas.bin',\n expectedSize: 12980780,\n sha256Checksum: '03cef6aa909d2397420201551354c21010324fe155753d62b4eb190adca071be',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811520,\n blobBlockLength: 199,\n blobByteOffset: 53170732293,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nben/2025-12-18/lex.50.50.nben.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.nben.s2t.bin',\n expectedSize: 1487760,\n sha256Checksum: '5ec9a1eb849cf8fde0908904808e65a0c5a3027f85b1b5b9944c6b15d424598d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811496,\n blobBlockLength: 23,\n blobByteOffset: 53169242626\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nben/2025-12-18/vocab.nben.spm',\n registrySource: 's3',\n targetName: 'vocab.nben.spm',\n expectedSize: 511372,\n sha256Checksum: '3cb4f4efc382d6e7242304e8649050da297469b69a604dd7480d8704fe4877b6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811719,\n blobBlockLength: 8,\n blobByteOffset: 53183713073\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nben/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 1907,\n sha256Checksum: '90c6dcca1eb387db2380a82aca98919f2db5932bebb7920c9322c531a488c2e6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811519,\n blobBlockLength: 1,\n blobByteOffset: 53170730386\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_NB_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nben/2025-12-18/vocab.nben.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811719,\n blobBlockLength: 8,\n blobByteOffset: 53183713073,\n modelId: 'vocab.nben.spm',\n addon: 'nmt',\n expectedSize: 511372,\n sha256Checksum: '3cb4f4efc382d6e7242304e8649050da297469b69a604dd7480d8704fe4877b6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_NL_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nlen/2025-12-18/lex.50.50.nlen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811727,\n blobBlockLength: 75,\n blobByteOffset: 53184224445,\n modelId: 'lex.50.50.nlen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4862412,\n sha256Checksum: '811ac8f9dcbd12706e2d73a7057a7bbe6b9f0607d15170ffe9439977e8229b41',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_83',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nlen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811802,\n blobBlockLength: 1,\n blobByteOffset: 53189086857,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: 'd5af8352d1011776ce4c4fd23866a87354f8207e1387049c8a6a2e47fc7d8712',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_NL_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nlen/2025-12-18/model.nlen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811803,\n blobBlockLength: 482,\n blobByteOffset: 53189089095,\n modelId: 'model.nlen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'ff987741ff15a5d94fff16cbef28f2b0a85a6e9547d982fad60ac09d16d11270',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '3576d29271c5a420',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nlen/2025-12-18/model.nlen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.nlen.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'ff987741ff15a5d94fff16cbef28f2b0a85a6e9547d982fad60ac09d16d11270',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811803,\n blobBlockLength: 482,\n blobByteOffset: 53189089095,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nlen/2025-12-18/lex.50.50.nlen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.nlen.s2t.bin',\n expectedSize: 4862412,\n sha256Checksum: '811ac8f9dcbd12706e2d73a7057a7bbe6b9f0607d15170ffe9439977e8229b41',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811727,\n blobBlockLength: 75,\n blobByteOffset: 53184224445\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nlen/2025-12-18/vocab.nlen.spm',\n registrySource: 's3',\n targetName: 'vocab.nlen.spm',\n expectedSize: 807708,\n sha256Checksum: 'c09588ca5662b230ed65bd39a07f58d9f7dd21c3a19e4aeb1bff39bf3b297c56',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812285,\n blobBlockLength: 13,\n blobByteOffset: 53220650882\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nlen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: 'd5af8352d1011776ce4c4fd23866a87354f8207e1387049c8a6a2e47fc7d8712',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 811802,\n blobBlockLength: 1,\n blobByteOffset: 53189086857\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_NL_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nlen/2025-12-18/vocab.nlen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812285,\n blobBlockLength: 13,\n blobByteOffset: 53220650882,\n modelId: 'vocab.nlen.spm',\n addon: 'nmt',\n expectedSize: 807708,\n sha256Checksum: 'c09588ca5662b230ed65bd39a07f58d9f7dd21c3a19e4aeb1bff39bf3b297c56',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_NN_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nnen/2025-12-18/lex.50.50.nnen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812298,\n blobBlockLength: 23,\n blobByteOffset: 53221458590,\n modelId: 'lex.50.50.nnen.s2t.bin',\n addon: 'nmt',\n expectedSize: 1506236,\n sha256Checksum: 'b19abe7154430c1ee321e29391b14b2752c3350c3fbfcd1caf1ef7a0f9a30a97',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_84',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nnen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812321,\n blobBlockLength: 1,\n blobByteOffset: 53222964826,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 1905,\n sha256Checksum: 'b4cdc78c64819536e2c8ea3691f101c2137dbfdf71f7a431f6871c7609086d55',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_NN_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nnen/2025-12-18/model.nnen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812322,\n blobBlockLength: 199,\n blobByteOffset: 53222966731,\n modelId: 'model.nnen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 12980780,\n sha256Checksum: '17550943381bdfae30b1d8ee29b33b2da2c9ae4d4b9749e2e66b2946e27dce7d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '2e66e1fd1269c32d',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nnen/2025-12-18/model.nnen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.nnen.intgemm.alphas.bin',\n expectedSize: 12980780,\n sha256Checksum: '17550943381bdfae30b1d8ee29b33b2da2c9ae4d4b9749e2e66b2946e27dce7d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812322,\n blobBlockLength: 199,\n blobByteOffset: 53222966731,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nnen/2025-12-18/lex.50.50.nnen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.nnen.s2t.bin',\n expectedSize: 1506236,\n sha256Checksum: 'b19abe7154430c1ee321e29391b14b2752c3350c3fbfcd1caf1ef7a0f9a30a97',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812298,\n blobBlockLength: 23,\n blobByteOffset: 53221458590\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nnen/2025-12-18/vocab.nnen.spm',\n registrySource: 's3',\n targetName: 'vocab.nnen.spm',\n expectedSize: 510942,\n sha256Checksum: '14625622062046b7c44eb79652efb113518bf4b52fa1b98a949934b7a94b0273',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812521,\n blobBlockLength: 8,\n blobByteOffset: 53235947511\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nnen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 1905,\n sha256Checksum: 'b4cdc78c64819536e2c8ea3691f101c2137dbfdf71f7a431f6871c7609086d55',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812321,\n blobBlockLength: 1,\n blobByteOffset: 53222964826\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_NN_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-nnen/2025-12-18/vocab.nnen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812521,\n blobBlockLength: 8,\n blobByteOffset: 53235947511,\n modelId: 'vocab.nnen.spm',\n addon: 'nmt',\n expectedSize: 510942,\n sha256Checksum: '14625622062046b7c44eb79652efb113518bf4b52fa1b98a949934b7a94b0273',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_NO_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-noen/2026-04-28/lex.50.50.noen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097737,\n blobBlockLength: 69,\n blobByteOffset: 71936791055,\n modelId: 'lex.50.50.noen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4517876,\n sha256Checksum: 'cc07976874c905e859918be71d3fe993c9ec8696d986db2418bb1a16ff4ea500',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_85',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-noen/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097806,\n blobBlockLength: 1,\n blobByteOffset: 71941308931,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 507,\n sha256Checksum: '6a96d91a5bf6f1cd4c85f04cde0cfd6dd3d93af9f3af3e49a80e66fa49a997e4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_NO_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-noen/2026-04-28/model.noen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097807,\n blobBlockLength: 262,\n blobByteOffset: 71941309438,\n modelId: 'model.noen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '00ab7b969156f6c948be59dad4755e47a24eeb31aa39f02f1de7bce43081cc2a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '2187c60908aa9a40',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-noen/2026-04-28/model.noen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.noen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '00ab7b969156f6c948be59dad4755e47a24eeb31aa39f02f1de7bce43081cc2a',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097807,\n blobBlockLength: 262,\n blobByteOffset: 71941309438,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-noen/2026-04-28/lex.50.50.noen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.noen.s2t.bin',\n expectedSize: 4517876,\n sha256Checksum: 'cc07976874c905e859918be71d3fe993c9ec8696d986db2418bb1a16ff4ea500',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097737,\n blobBlockLength: 69,\n blobByteOffset: 71936791055\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-noen/2026-04-28/vocab.noen.spm',\n registrySource: 's3',\n targetName: 'vocab.noen.spm',\n expectedSize: 802367,\n sha256Checksum: '23eb1743070efac5a447f4f72aafda69b1985af272cece85a2f0bb08e6fcdeef',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1098069,\n blobBlockLength: 13,\n blobByteOffset: 71958450489\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-noen/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 507,\n sha256Checksum: '6a96d91a5bf6f1cd4c85f04cde0cfd6dd3d93af9f3af3e49a80e66fa49a997e4',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1097806,\n blobBlockLength: 1,\n blobByteOffset: 71941308931\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_NO_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-noen/2026-04-28/vocab.noen.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1098069,\n blobBlockLength: 13,\n blobByteOffset: 71958450489,\n modelId: 'vocab.noen.spm',\n addon: 'nmt',\n expectedSize: 802367,\n sha256Checksum: '23eb1743070efac5a447f4f72aafda69b1985af272cece85a2f0bb08e6fcdeef',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_PL_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-plen/2025-12-18/lex.50.50.plen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812529,\n blobBlockLength: 76,\n blobByteOffset: 53236458453,\n modelId: 'lex.50.50.plen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4964208,\n sha256Checksum: 'b295dfefa7022a62e105276e8c39fdfd67bffe588f4fd78583edd4e04ee0cb3b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_86',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-plen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812605,\n blobBlockLength: 1,\n blobByteOffset: 53241422661,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '894baaa6c126e291bdd509ed9266ee1594e8cb1df000e5cc74724fe67e7bfbe4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_PL_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-plen/2025-12-18/model.plen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812606,\n blobBlockLength: 482,\n blobByteOffset: 53241424899,\n modelId: 'model.plen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '06dbab3baa3bbceab746bc6a3bba807878f38536382c03acddf59d3edf3b5d94',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'a02b707f140ac571',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-plen/2025-12-18/model.plen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.plen.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '06dbab3baa3bbceab746bc6a3bba807878f38536382c03acddf59d3edf3b5d94',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812606,\n blobBlockLength: 482,\n blobByteOffset: 53241424899,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-plen/2025-12-18/lex.50.50.plen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.plen.s2t.bin',\n expectedSize: 4964208,\n sha256Checksum: 'b295dfefa7022a62e105276e8c39fdfd67bffe588f4fd78583edd4e04ee0cb3b',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812529,\n blobBlockLength: 76,\n blobByteOffset: 53236458453\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-plen/2025-12-18/vocab.plen.spm',\n registrySource: 's3',\n targetName: 'vocab.plen.spm',\n expectedSize: 821612,\n sha256Checksum: '2000f182efa8ce5f69bc3f9e574666b5bc2c0af684eedd32f69d15aa9021ea85',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813088,\n blobBlockLength: 13,\n blobByteOffset: 53272986686\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-plen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '894baaa6c126e291bdd509ed9266ee1594e8cb1df000e5cc74724fe67e7bfbe4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 812605,\n blobBlockLength: 1,\n blobByteOffset: 53241422661\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_PL_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-plen/2025-12-18/vocab.plen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813088,\n blobBlockLength: 13,\n blobByteOffset: 53272986686,\n modelId: 'vocab.plen.spm',\n addon: 'nmt',\n expectedSize: 821612,\n sha256Checksum: '2000f182efa8ce5f69bc3f9e574666b5bc2c0af684eedd32f69d15aa9021ea85',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_PT_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-pten/2025-12-18/lex.50.50.pten.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826217,\n blobBlockLength: 71,\n blobByteOffset: 54140509160,\n modelId: 'lex.50.50.pten.s2t.bin',\n addon: 'nmt',\n expectedSize: 4634492,\n sha256Checksum: '2685d8b6530be92a4db4cc61f15a097eb114552be15cb6c1699e9d2d99d24470',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_87',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-pten/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826288,\n blobBlockLength: 1,\n blobByteOffset: 54145143652,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: 'afd1fce3f2ffff597481700140b0e0a58eb4e094dd9006587a035aca26fde26d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_PT_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-pten/2025-12-18/model.pten.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826289,\n blobBlockLength: 482,\n blobByteOffset: 54145145890,\n modelId: 'model.pten.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '7b854f1ec5a485dd33efd7c1bc01dd7d5a57f566957c5e47722af333f0ce9157',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '0054950e7d34708a',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-pten/2025-12-18/model.pten.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.pten.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '7b854f1ec5a485dd33efd7c1bc01dd7d5a57f566957c5e47722af333f0ce9157',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826289,\n blobBlockLength: 482,\n blobByteOffset: 54145145890,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-pten/2025-12-18/lex.50.50.pten.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.pten.s2t.bin',\n expectedSize: 4634492,\n sha256Checksum: '2685d8b6530be92a4db4cc61f15a097eb114552be15cb6c1699e9d2d99d24470',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826217,\n blobBlockLength: 71,\n blobByteOffset: 54140509160\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-pten/2025-12-18/vocab.pten.spm',\n registrySource: 's3',\n targetName: 'vocab.pten.spm',\n expectedSize: 816726,\n sha256Checksum: 'd9f46182823d5bbc84201252b2dfcac28f63e561f0ec827ed858f241864c9def',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826771,\n blobBlockLength: 13,\n blobByteOffset: 54176707677\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-pten/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: 'afd1fce3f2ffff597481700140b0e0a58eb4e094dd9006587a035aca26fde26d',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826288,\n blobBlockLength: 1,\n blobByteOffset: 54145143652\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_PT_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-pten/2025-12-18/vocab.pten.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826771,\n blobBlockLength: 13,\n blobByteOffset: 54176707677,\n modelId: 'vocab.pten.spm',\n addon: 'nmt',\n expectedSize: 816726,\n sha256Checksum: 'd9f46182823d5bbc84201252b2dfcac28f63e561f0ec827ed858f241864c9def',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_RO_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-roen/2025-12-18/lex.50.50.roen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813101,\n blobBlockLength: 72,\n blobByteOffset: 53273808298,\n modelId: 'lex.50.50.roen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4691708,\n sha256Checksum: 'd242745eadff6f345784fccf1d58046061501b28c8190ba5912a9da5f056cd2f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_88',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-roen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813173,\n blobBlockLength: 1,\n blobByteOffset: 53278500006,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: '8a2cefae6c268143462ad8d244e31db169a204f1b2128b120c6e7bfff6f30fa1',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_RO_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-roen/2025-12-18/model.roen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813174,\n blobBlockLength: 262,\n blobByteOffset: 53278502254,\n modelId: 'model.roen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'e7542557fc6dbafacddae7b48e67fcdb07bd67b3fb55a76139edf366eca5dbdb',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'eae4e42a95769ca3',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-roen/2025-12-18/model.roen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.roen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'e7542557fc6dbafacddae7b48e67fcdb07bd67b3fb55a76139edf366eca5dbdb',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813174,\n blobBlockLength: 262,\n blobByteOffset: 53278502254,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-roen/2025-12-18/lex.50.50.roen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.roen.s2t.bin',\n expectedSize: 4691708,\n sha256Checksum: 'd242745eadff6f345784fccf1d58046061501b28c8190ba5912a9da5f056cd2f',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813101,\n blobBlockLength: 72,\n blobByteOffset: 53273808298\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-roen/2025-12-18/vocab.roen.spm',\n registrySource: 's3',\n targetName: 'vocab.roen.spm',\n expectedSize: 800832,\n sha256Checksum: '2a690fbcd1b79bc9b99c43d582252720e0900245c82ecc813c8eb05cf063fd0c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813436,\n blobBlockLength: 13,\n blobByteOffset: 53295643305\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-roen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: '8a2cefae6c268143462ad8d244e31db169a204f1b2128b120c6e7bfff6f30fa1',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813173,\n blobBlockLength: 1,\n blobByteOffset: 53278500006\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_RO_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-roen/2025-12-18/vocab.roen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813436,\n blobBlockLength: 13,\n blobByteOffset: 53295643305,\n modelId: 'vocab.roen.spm',\n addon: 'nmt',\n expectedSize: 800832,\n sha256Checksum: '2a690fbcd1b79bc9b99c43d582252720e0900245c82ecc813c8eb05cf063fd0c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_RU_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ruen/2025-12-18/lex.50.50.ruen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826784,\n blobBlockLength: 69,\n blobByteOffset: 54177524403,\n modelId: 'lex.50.50.ruen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4483844,\n sha256Checksum: 'f654693577505fd38b1f3d220cdd4ffffbb45afb900a60cf751f0724eadc74e0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_89',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ruen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826853,\n blobBlockLength: 1,\n blobByteOffset: 54182008247,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: 'e9f8d86c32eb82441c8b2558c9c2843f39d73fe03fc3fbe294e239707ca4b36e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_RU_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ruen/2025-12-18/model.ruen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826854,\n blobBlockLength: 262,\n blobByteOffset: 54182010495,\n modelId: 'model.ruen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'b1d85c13cfbb05e1d326dd6f0fb5ef270a2011b547450260f96567a93f446c94',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '59a4276a8ae954e6',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ruen/2025-12-18/model.ruen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.ruen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'b1d85c13cfbb05e1d326dd6f0fb5ef270a2011b547450260f96567a93f446c94',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826854,\n blobBlockLength: 262,\n blobByteOffset: 54182010495,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ruen/2025-12-18/lex.50.50.ruen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.ruen.s2t.bin',\n expectedSize: 4483844,\n sha256Checksum: 'f654693577505fd38b1f3d220cdd4ffffbb45afb900a60cf751f0724eadc74e0',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826784,\n blobBlockLength: 69,\n blobByteOffset: 54177524403\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ruen/2025-12-18/vocab.ruen.spm',\n registrySource: 's3',\n targetName: 'vocab.ruen.spm',\n expectedSize: 905257,\n sha256Checksum: '93bdc941b16e523695c319f74778bca9fd8b75a25ad75020cdc98aef74cdc0fc',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 827116,\n blobBlockLength: 14,\n blobByteOffset: 54199151546\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ruen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: 'e9f8d86c32eb82441c8b2558c9c2843f39d73fe03fc3fbe294e239707ca4b36e',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 826853,\n blobBlockLength: 1,\n blobByteOffset: 54182008247\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_RU_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-ruen/2025-12-18/vocab.ruen.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 827116,\n blobBlockLength: 14,\n blobByteOffset: 54199151546,\n modelId: 'vocab.ruen.spm',\n addon: 'nmt',\n expectedSize: 905257,\n sha256Checksum: '93bdc941b16e523695c319f74778bca9fd8b75a25ad75020cdc98aef74cdc0fc',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_SK_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sken/2025-12-18/lex.50.50.sken.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813449,\n blobBlockLength: 75,\n blobByteOffset: 53296444137,\n modelId: 'lex.50.50.sken.s2t.bin',\n addon: 'nmt',\n expectedSize: 4913324,\n sha256Checksum: '18577a7ded6b9957c948f2a384683f7ce09def42336c8141eee7ba86b79e2c8e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_90',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sken/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813524,\n blobBlockLength: 1,\n blobByteOffset: 53301357461,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2247,\n sha256Checksum: '92cdcc0f62c7e149fadc014fd2b92afcfab9fc6d355a67b3041c5c934b609463',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_SK_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sken/2025-12-18/model.sken.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813525,\n blobBlockLength: 262,\n blobByteOffset: 53301359708,\n modelId: 'model.sken.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '1686f94838ace314719e945606a09a66dafd40847dd3fd352ad3f7a969aac62f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'f6d4af8bba24dfc0',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sken/2025-12-18/model.sken.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.sken.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '1686f94838ace314719e945606a09a66dafd40847dd3fd352ad3f7a969aac62f',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813525,\n blobBlockLength: 262,\n blobByteOffset: 53301359708,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sken/2025-12-18/lex.50.50.sken.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.sken.s2t.bin',\n expectedSize: 4913324,\n sha256Checksum: '18577a7ded6b9957c948f2a384683f7ce09def42336c8141eee7ba86b79e2c8e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813449,\n blobBlockLength: 75,\n blobByteOffset: 53296444137\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sken/2025-12-18/vocab.sken.spm',\n registrySource: 's3',\n targetName: 'vocab.sken.spm',\n expectedSize: 808082,\n sha256Checksum: '7d25655bd15f34d77db5d2cb96a51c7943c5528f37f83b677a09bb0ea4e4f59b',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813787,\n blobBlockLength: 13,\n blobByteOffset: 53318500759\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sken/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2247,\n sha256Checksum: '92cdcc0f62c7e149fadc014fd2b92afcfab9fc6d355a67b3041c5c934b609463',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813524,\n blobBlockLength: 1,\n blobByteOffset: 53301357461\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_SK_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sken/2025-12-18/vocab.sken.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813787,\n blobBlockLength: 13,\n blobByteOffset: 53318500759,\n modelId: 'vocab.sken.spm',\n addon: 'nmt',\n expectedSize: 808082,\n sha256Checksum: '7d25655bd15f34d77db5d2cb96a51c7943c5528f37f83b677a09bb0ea4e4f59b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_SL_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-slen/2025-12-18/lex.50.50.slen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813800,\n blobBlockLength: 66,\n blobByteOffset: 53319308841,\n modelId: 'lex.50.50.slen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4320484,\n sha256Checksum: 'f456a49e437ccb4a547e4b51480e29c8b83f11e26a3713af35b078cd4dd255cc',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_91',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-slen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813866,\n blobBlockLength: 1,\n blobByteOffset: 53323629325,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2260,\n sha256Checksum: '26369bf7e23e5689b14efeb2551976a4425e62cbd1db9524d5626899ee1299a5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_SL_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-slen/2025-12-18/model.slen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813867,\n blobBlockLength: 482,\n blobByteOffset: 53323631585,\n modelId: 'model.slen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: '9d15df58b60048366de4f7b6e727157ffdaea3a0fd1c1759ce232b057e2f991c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '2350c79aff6e7c31',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-slen/2025-12-18/model.slen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.slen.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: '9d15df58b60048366de4f7b6e727157ffdaea3a0fd1c1759ce232b057e2f991c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813867,\n blobBlockLength: 482,\n blobByteOffset: 53323631585,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-slen/2025-12-18/lex.50.50.slen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.slen.s2t.bin',\n expectedSize: 4320484,\n sha256Checksum: 'f456a49e437ccb4a547e4b51480e29c8b83f11e26a3713af35b078cd4dd255cc',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813800,\n blobBlockLength: 66,\n blobByteOffset: 53319308841\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-slen/2025-12-18/vocab.slen.spm',\n registrySource: 's3',\n targetName: 'vocab.slen.spm',\n expectedSize: 803078,\n sha256Checksum: '54ed331d3435e2bdc5b02462180197b77631f466fc0e61897b5469449857dd2b',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814349,\n blobBlockLength: 13,\n blobByteOffset: 53355193372\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-slen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2260,\n sha256Checksum: '26369bf7e23e5689b14efeb2551976a4425e62cbd1db9524d5626899ee1299a5',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 813866,\n blobBlockLength: 1,\n blobByteOffset: 53323629325\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_SL_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-slen/2025-12-18/vocab.slen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814349,\n blobBlockLength: 13,\n blobByteOffset: 53355193372,\n modelId: 'vocab.slen.spm',\n addon: 'nmt',\n expectedSize: 803078,\n sha256Checksum: '54ed331d3435e2bdc5b02462180197b77631f466fc0e61897b5469449857dd2b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_SQ_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sqen/2025-12-18/lex.50.50.sqen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814362,\n blobBlockLength: 65,\n blobByteOffset: 53355996450,\n modelId: 'lex.50.50.sqen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4256516,\n sha256Checksum: 'b2f51df0bc14b9f89a29d39652a80167ef413eb1579957ecea825cb0a7575c60',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_92',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sqen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814427,\n blobBlockLength: 1,\n blobByteOffset: 53360252966,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2226,\n sha256Checksum: 'd1984ec744bc7b12d9f7c94a5d02dd6afc3191a2b400bc366fb3904c2904195e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_SQ_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sqen/2025-12-18/model.sqen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814428,\n blobBlockLength: 262,\n blobByteOffset: 53360255192,\n modelId: 'model.sqen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '4b0ce319e7c8f7e1836ce18cb6522c83268e8cff54f2a7f5dcef270250a44475',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '6d31b0adc1abe637',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sqen/2025-12-18/model.sqen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.sqen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '4b0ce319e7c8f7e1836ce18cb6522c83268e8cff54f2a7f5dcef270250a44475',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814428,\n blobBlockLength: 262,\n blobByteOffset: 53360255192,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sqen/2025-12-18/lex.50.50.sqen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.sqen.s2t.bin',\n expectedSize: 4256516,\n sha256Checksum: 'b2f51df0bc14b9f89a29d39652a80167ef413eb1579957ecea825cb0a7575c60',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814362,\n blobBlockLength: 65,\n blobByteOffset: 53355996450\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sqen/2025-12-18/vocab.sqen.spm',\n registrySource: 's3',\n targetName: 'vocab.sqen.spm',\n expectedSize: 820200,\n sha256Checksum: '6b7ce057b54ed983eb47087254ea8673e20a857739fc5b57874c80c3301bb91d',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814690,\n blobBlockLength: 13,\n blobByteOffset: 53377396243\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sqen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2226,\n sha256Checksum: 'd1984ec744bc7b12d9f7c94a5d02dd6afc3191a2b400bc366fb3904c2904195e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814427,\n blobBlockLength: 1,\n blobByteOffset: 53360252966\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_SQ_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sqen/2025-12-18/vocab.sqen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814690,\n blobBlockLength: 13,\n blobByteOffset: 53377396243,\n modelId: 'vocab.sqen.spm',\n addon: 'nmt',\n expectedSize: 820200,\n sha256Checksum: '6b7ce057b54ed983eb47087254ea8673e20a857739fc5b57874c80c3301bb91d',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_SR_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sren/2025-12-18/lex.50.50.sren.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814703,\n blobBlockLength: 71,\n blobByteOffset: 53378216443,\n modelId: 'lex.50.50.sren.s2t.bin',\n addon: 'nmt',\n expectedSize: 4628048,\n sha256Checksum: '476d9731a1fd44811466abf2292523f11eaad57f0fb7a5cd30391e7720c7071a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_93',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sren/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814774,\n blobBlockLength: 1,\n blobByteOffset: 53382844491,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: 'd9a520047894fa4b409ad164c4d6b4b07316fbd22aaf10648c04b8db7f3537e5',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_SR_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sren/2025-12-18/model.sren.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814775,\n blobBlockLength: 262,\n blobByteOffset: 53382846739,\n modelId: 'model.sren.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '99c44e9690a7ed2c1f13468765c3b1db2b8a8ae739980e4056d45dca613a1966',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '670a5aaf84c97b54',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sren/2025-12-18/model.sren.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.sren.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '99c44e9690a7ed2c1f13468765c3b1db2b8a8ae739980e4056d45dca613a1966',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814775,\n blobBlockLength: 262,\n blobByteOffset: 53382846739,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sren/2025-12-18/lex.50.50.sren.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.sren.s2t.bin',\n expectedSize: 4628048,\n sha256Checksum: '476d9731a1fd44811466abf2292523f11eaad57f0fb7a5cd30391e7720c7071a',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814703,\n blobBlockLength: 71,\n blobByteOffset: 53378216443\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sren/2025-12-18/vocab.sren.spm',\n registrySource: 's3',\n targetName: 'vocab.sren.spm',\n expectedSize: 822509,\n sha256Checksum: '5cdbad076c8f5b11e3342f5011e9f56f22558523ca82aec9bab621ddc7614bdc',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815037,\n blobBlockLength: 13,\n blobByteOffset: 53399987790\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sren/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: 'd9a520047894fa4b409ad164c4d6b4b07316fbd22aaf10648c04b8db7f3537e5',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 814774,\n blobBlockLength: 1,\n blobByteOffset: 53382844491\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_SR_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sren/2025-12-18/vocab.sren.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815037,\n blobBlockLength: 13,\n blobByteOffset: 53399987790,\n modelId: 'vocab.sren.spm',\n addon: 'nmt',\n expectedSize: 822509,\n sha256Checksum: '5cdbad076c8f5b11e3342f5011e9f56f22558523ca82aec9bab621ddc7614bdc',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_SV_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sven/2025-12-18/lex.50.50.sven.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815050,\n blobBlockLength: 71,\n blobByteOffset: 53400810299,\n modelId: 'lex.50.50.sven.s2t.bin',\n addon: 'nmt',\n expectedSize: 4645680,\n sha256Checksum: '1c4640765e806d905cdc4f51158f6f869c78709b9e8a43070877965fa13c160e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_94',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sven/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815121,\n blobBlockLength: 1,\n blobByteOffset: 53405455979,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: 'ee6fd75264db65b578d7ffd0cfce4951930ebd6ef64c5bcc22de47ebdb304b4f',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_SV_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sven/2025-12-18/model.sven.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815122,\n blobBlockLength: 262,\n blobByteOffset: 53405458227,\n modelId: 'model.sven.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '92d79e2725718b84aed486473bdfcbe6bba3e7094922d4bead8a121cfa346372',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '287dfb0570bab98f',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sven/2025-12-18/model.sven.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.sven.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '92d79e2725718b84aed486473bdfcbe6bba3e7094922d4bead8a121cfa346372',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815122,\n blobBlockLength: 262,\n blobByteOffset: 53405458227,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sven/2025-12-18/lex.50.50.sven.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.sven.s2t.bin',\n expectedSize: 4645680,\n sha256Checksum: '1c4640765e806d905cdc4f51158f6f869c78709b9e8a43070877965fa13c160e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815050,\n blobBlockLength: 71,\n blobByteOffset: 53400810299\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sven/2025-12-18/vocab.sven.spm',\n registrySource: 's3',\n targetName: 'vocab.sven.spm',\n expectedSize: 793049,\n sha256Checksum: '93427195fac4125722ed778707478ef78cb77b3fdf1ed5b93bee9fd36e30a8ec',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815384,\n blobBlockLength: 13,\n blobByteOffset: 53422599278\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sven/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: 'ee6fd75264db65b578d7ffd0cfce4951930ebd6ef64c5bcc22de47ebdb304b4f',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815121,\n blobBlockLength: 1,\n blobByteOffset: 53405455979\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_SV_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-sven/2025-12-18/vocab.sven.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815384,\n blobBlockLength: 13,\n blobByteOffset: 53422599278,\n modelId: 'vocab.sven.spm',\n addon: 'nmt',\n expectedSize: 793049,\n sha256Checksum: '93427195fac4125722ed778707478ef78cb77b3fdf1ed5b93bee9fd36e30a8ec',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_TA_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-taen/2025-12-18/lex.50.50.taen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815397,\n blobBlockLength: 81,\n blobByteOffset: 53423392327,\n modelId: 'lex.50.50.taen.s2t.bin',\n addon: 'nmt',\n expectedSize: 5267272,\n sha256Checksum: 'd2e5f66feb06d0cd20542f66f54c66d30230805b64ef08ebf6b8e5566461220a',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_95',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-taen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815478,\n blobBlockLength: 1,\n blobByteOffset: 53428659599,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: '2d091e5508c8d997517dad35a8ff5c74c3afdc282631ff7139dd55785cb704c8',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_TA_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-taen/2025-12-18/model.taen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815479,\n blobBlockLength: 262,\n blobByteOffset: 53428661827,\n modelId: 'model.taen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '5aece5d94824cc42d2f0f95482df61ff279a7d7bc4119543a8523ea5829aa947',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '61a5739a7b6428fe',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-taen/2025-12-18/model.taen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.taen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '5aece5d94824cc42d2f0f95482df61ff279a7d7bc4119543a8523ea5829aa947',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815479,\n blobBlockLength: 262,\n blobByteOffset: 53428661827,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-taen/2025-12-18/lex.50.50.taen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.taen.s2t.bin',\n expectedSize: 5267272,\n sha256Checksum: 'd2e5f66feb06d0cd20542f66f54c66d30230805b64ef08ebf6b8e5566461220a',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815397,\n blobBlockLength: 81,\n blobByteOffset: 53423392327\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-taen/2025-12-18/vocab.taen.spm',\n registrySource: 's3',\n targetName: 'vocab.taen.spm',\n expectedSize: 1089980,\n sha256Checksum: '913e75e4fce0d34181fd7629cee95f3358fc4417896d023f8fec39380a69f352',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815741,\n blobBlockLength: 17,\n blobByteOffset: 53445802878\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-taen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: '2d091e5508c8d997517dad35a8ff5c74c3afdc282631ff7139dd55785cb704c8',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815478,\n blobBlockLength: 1,\n blobByteOffset: 53428659599\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_TA_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-taen/2025-12-18/vocab.taen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815741,\n blobBlockLength: 17,\n blobByteOffset: 53445802878,\n modelId: 'vocab.taen.spm',\n addon: 'nmt',\n expectedSize: 1089980,\n sha256Checksum: '913e75e4fce0d34181fd7629cee95f3358fc4417896d023f8fec39380a69f352',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_TE_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-teen/2025-12-18/lex.50.50.teen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815758,\n blobBlockLength: 74,\n blobByteOffset: 53446892858,\n modelId: 'lex.50.50.teen.s2t.bin',\n addon: 'nmt',\n expectedSize: 4815756,\n sha256Checksum: '5df84ca17e4cc76a73ef7d93f94f53a89f37a11a456f2b6373ff19c4ce4ef964',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_96',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-teen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815832,\n blobBlockLength: 1,\n blobByteOffset: 53451708614,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2228,\n sha256Checksum: 'ed6206db876a9c7b0fe735373758e45dba51dbbcc49ace79c03f2802abbf0d46',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_TE_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-teen/2025-12-18/model.teen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815833,\n blobBlockLength: 262,\n blobByteOffset: 53451710842,\n modelId: 'model.teen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'e2ec7b13ba6148eba309244ee17dc935f1b71e95bbf57154216f6247877abb7e',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '1754e9a3d0e6d4e0',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-teen/2025-12-18/model.teen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.teen.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'e2ec7b13ba6148eba309244ee17dc935f1b71e95bbf57154216f6247877abb7e',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815833,\n blobBlockLength: 262,\n blobByteOffset: 53451710842,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-teen/2025-12-18/lex.50.50.teen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.teen.s2t.bin',\n expectedSize: 4815756,\n sha256Checksum: '5df84ca17e4cc76a73ef7d93f94f53a89f37a11a456f2b6373ff19c4ce4ef964',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815758,\n blobBlockLength: 74,\n blobByteOffset: 53446892858\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-teen/2025-12-18/vocab.teen.spm',\n registrySource: 's3',\n targetName: 'vocab.teen.spm',\n expectedSize: 1056197,\n sha256Checksum: 'dd57e1d68316ae32f9ba3f77223f317ce39cd1ef72e69e6b06b7c1d1ba954052',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816095,\n blobBlockLength: 17,\n blobByteOffset: 53468851893\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-teen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2228,\n sha256Checksum: 'ed6206db876a9c7b0fe735373758e45dba51dbbcc49ace79c03f2802abbf0d46',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 815832,\n blobBlockLength: 1,\n blobByteOffset: 53451708614\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_TE_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-teen/2025-12-18/vocab.teen.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816095,\n blobBlockLength: 17,\n blobByteOffset: 53468851893,\n modelId: 'vocab.teen.spm',\n addon: 'nmt',\n expectedSize: 1056197,\n sha256Checksum: 'dd57e1d68316ae32f9ba3f77223f317ce39cd1ef72e69e6b06b7c1d1ba954052',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_TH_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-then/2026-04-28/lex.50.50.then.s2t.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1098082,\n blobBlockLength: 69,\n blobByteOffset: 71959252856,\n modelId: 'lex.50.50.then.s2t.bin',\n addon: 'nmt',\n expectedSize: 4487056,\n sha256Checksum: '3a7661a7f5c811c83f05f53008083b042fea0334fc6044ca1fda4982a8d48453',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_97',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-then/2026-04-28/metadata.json',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1098151,\n blobBlockLength: 1,\n blobByteOffset: 71963739912,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 530,\n sha256Checksum: 'cb11698d79192c2b0bccbd37a2b4829b886e3d9ab8e4ed55d5414e3050f7304b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_TH_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-then/2026-04-28/model.then.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1098152,\n blobBlockLength: 482,\n blobByteOffset: 71963740442,\n modelId: 'model.then.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 31561787,\n sha256Checksum: 'f70a501324743668b031bee19cd001a66839e8e5dfc0b4a1c44d5ea99d4e8d66',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '3d14cc973c51b5af',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-then/2026-04-28/model.then.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.then.intgemm.alphas.bin',\n expectedSize: 31561787,\n sha256Checksum: 'f70a501324743668b031bee19cd001a66839e8e5dfc0b4a1c44d5ea99d4e8d66',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1098152,\n blobBlockLength: 482,\n blobByteOffset: 71963740442,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-then/2026-04-28/lex.50.50.then.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.then.s2t.bin',\n expectedSize: 4487056,\n sha256Checksum: '3a7661a7f5c811c83f05f53008083b042fea0334fc6044ca1fda4982a8d48453',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1098082,\n blobBlockLength: 69,\n blobByteOffset: 71959252856\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-then/2026-04-28/vocab.then.spm',\n registrySource: 's3',\n targetName: 'vocab.then.spm',\n expectedSize: 995429,\n sha256Checksum: 'b625d3dcdfa2b4bbec496c9a0a30d169c917464ac5ea75506c0699972fea95f0',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1098634,\n blobBlockLength: 16,\n blobByteOffset: 71995302229\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-then/2026-04-28/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 530,\n sha256Checksum: 'cb11698d79192c2b0bccbd37a2b4829b886e3d9ab8e4ed55d5414e3050f7304b',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1098151,\n blobBlockLength: 1,\n blobByteOffset: 71963739912\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_TH_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-then/2026-04-28/vocab.then.spm',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1098634,\n blobBlockLength: 16,\n blobByteOffset: 71995302229,\n modelId: 'vocab.then.spm',\n addon: 'nmt',\n expectedSize: 995429,\n sha256Checksum: 'b625d3dcdfa2b4bbec496c9a0a30d169c917464ac5ea75506c0699972fea95f0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_TR_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-tren/2025-12-18/lex.50.50.tren.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816112,\n blobBlockLength: 72,\n blobByteOffset: 53469908090,\n modelId: 'lex.50.50.tren.s2t.bin',\n addon: 'nmt',\n expectedSize: 4662492,\n sha256Checksum: 'd3374ab5267a73ee1aa1d926a298bd349426835f40856991ee959bc5cd4f9fce',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_98',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-tren/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816184,\n blobBlockLength: 1,\n blobByteOffset: 53474570582,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 1975,\n sha256Checksum: 'a407dab5cba5fa908ecdfc985f41607ce5c5abcf1ce634366f3b6b97a525a4ad',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_TR_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-tren/2025-12-18/model.tren.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816185,\n blobBlockLength: 262,\n blobByteOffset: 53474572557,\n modelId: 'model.tren.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17140836,\n sha256Checksum: 'bd18594ac5a7f1d9997e7ea5bd80272082219cf8b1ce604766e4f207eb86abbf',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'b7fa24d1a3293cbb',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-tren/2025-12-18/model.tren.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.tren.intgemm.alphas.bin',\n expectedSize: 17140836,\n sha256Checksum: 'bd18594ac5a7f1d9997e7ea5bd80272082219cf8b1ce604766e4f207eb86abbf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816185,\n blobBlockLength: 262,\n blobByteOffset: 53474572557,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-tren/2025-12-18/lex.50.50.tren.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.tren.s2t.bin',\n expectedSize: 4662492,\n sha256Checksum: 'd3374ab5267a73ee1aa1d926a298bd349426835f40856991ee959bc5cd4f9fce',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816112,\n blobBlockLength: 72,\n blobByteOffset: 53469908090\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-tren/2025-12-18/vocab.tren.spm',\n registrySource: 's3',\n targetName: 'vocab.tren.spm',\n expectedSize: 811353,\n sha256Checksum: 'ed328e589a3ccd70fd3ce7773fc3c01d8b7b18c687464cacf17fd40a8c0daadd',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816447,\n blobBlockLength: 13,\n blobByteOffset: 53491713393\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-tren/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 1975,\n sha256Checksum: 'a407dab5cba5fa908ecdfc985f41607ce5c5abcf1ce634366f3b6b97a525a4ad',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816184,\n blobBlockLength: 1,\n blobByteOffset: 53474570582\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_TR_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-tren/2025-12-18/vocab.tren.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816447,\n blobBlockLength: 13,\n blobByteOffset: 53491713393,\n modelId: 'vocab.tren.spm',\n addon: 'nmt',\n expectedSize: 811353,\n sha256Checksum: 'ed328e589a3ccd70fd3ce7773fc3c01d8b7b18c687464cacf17fd40a8c0daadd',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_UK_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-uken/2025-12-18/lex.50.50.uken.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816460,\n blobBlockLength: 60,\n blobByteOffset: 53492524746,\n modelId: 'lex.50.50.uken.s2t.bin',\n addon: 'nmt',\n expectedSize: 3914120,\n sha256Checksum: '32b5e0df493671a223cb5cb32430181cbb7fe6b5562c91dbc3d35410d37e5ff6',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_99',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-uken/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816520,\n blobBlockLength: 1,\n blobByteOffset: 53496438866,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: 'd7a0a79abb59dc57d827e838526cb3e52370bbc195b0a3a49280697a00f40107',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_UK_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-uken/2025-12-18/model.uken.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816521,\n blobBlockLength: 262,\n blobByteOffset: 53496441114,\n modelId: 'model.uken.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: '2e7b8bc9d2569d8b4ae244e964cdc343a0aa3735cc83ecb664be84a37cb45f48',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'cbe85d5b9a84c08e',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-uken/2025-12-18/model.uken.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.uken.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: '2e7b8bc9d2569d8b4ae244e964cdc343a0aa3735cc83ecb664be84a37cb45f48',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816521,\n blobBlockLength: 262,\n blobByteOffset: 53496441114,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-uken/2025-12-18/lex.50.50.uken.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.uken.s2t.bin',\n expectedSize: 3914120,\n sha256Checksum: '32b5e0df493671a223cb5cb32430181cbb7fe6b5562c91dbc3d35410d37e5ff6',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816460,\n blobBlockLength: 60,\n blobByteOffset: 53492524746\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-uken/2025-12-18/vocab.uken.spm',\n registrySource: 's3',\n targetName: 'vocab.uken.spm',\n expectedSize: 886410,\n sha256Checksum: '8b51480dfc4ca2d7a08d2bfdaa9e57353ca97e6cf3d5f9aba4c0179d3665bfc0',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816783,\n blobBlockLength: 14,\n blobByteOffset: 53513582165\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-uken/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: 'd7a0a79abb59dc57d827e838526cb3e52370bbc195b0a3a49280697a00f40107',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816520,\n blobBlockLength: 1,\n blobByteOffset: 53496438866\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_UK_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-uken/2025-12-18/vocab.uken.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816783,\n blobBlockLength: 14,\n blobByteOffset: 53513582165,\n modelId: 'vocab.uken.spm',\n addon: 'nmt',\n expectedSize: 886410,\n sha256Checksum: '8b51480dfc4ca2d7a08d2bfdaa9e57353ca97e6cf3d5f9aba4c0179d3665bfc0',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_VI_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-vien/2025-12-18/lex.50.50.vien.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816797,\n blobBlockLength: 60,\n blobByteOffset: 53514468575,\n modelId: 'lex.50.50.vien.s2t.bin',\n addon: 'nmt',\n expectedSize: 3910184,\n sha256Checksum: '3a071ed3d982f6eb6ee116b84067bf70041e4229e43ea65ecb6d7c2796e8851b',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_100',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-vien/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816857,\n blobBlockLength: 1,\n blobByteOffset: 53518378759,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2248,\n sha256Checksum: '98d20700a345a131ffeaabf526faef324e5a1d83b75bf500c02f76401eb92d6c',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_VI_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-vien/2025-12-18/model.vien.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816858,\n blobBlockLength: 262,\n blobByteOffset: 53518381007,\n modelId: 'model.vien.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 17141051,\n sha256Checksum: 'de4bf2b9ffb4d910e32720ec3a43655fb6f4062ce5219332f824fc1bdca7a5f4',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: 'caa266b307db790c',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-vien/2025-12-18/model.vien.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.vien.intgemm.alphas.bin',\n expectedSize: 17141051,\n sha256Checksum: 'de4bf2b9ffb4d910e32720ec3a43655fb6f4062ce5219332f824fc1bdca7a5f4',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816858,\n blobBlockLength: 262,\n blobByteOffset: 53518381007,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-vien/2025-12-18/lex.50.50.vien.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.vien.s2t.bin',\n expectedSize: 3910184,\n sha256Checksum: '3a071ed3d982f6eb6ee116b84067bf70041e4229e43ea65ecb6d7c2796e8851b',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816797,\n blobBlockLength: 60,\n blobByteOffset: 53514468575\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-vien/2025-12-18/vocab.vien.spm',\n registrySource: 's3',\n targetName: 'vocab.vien.spm',\n expectedSize: 757250,\n sha256Checksum: 'cb152765d1e71ea3cf96fdb339c764b7201be7b9ab32e20cfebcf16a20fc0939',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817120,\n blobBlockLength: 12,\n blobByteOffset: 53535522058\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-vien/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2248,\n sha256Checksum: '98d20700a345a131ffeaabf526faef324e5a1d83b75bf500c02f76401eb92d6c',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 816857,\n blobBlockLength: 1,\n blobByteOffset: 53518378759\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_VI_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-vien/2025-12-18/vocab.vien.spm',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 817120,\n blobBlockLength: 12,\n blobByteOffset: 53535522058,\n modelId: 'vocab.vien.spm',\n addon: 'nmt',\n expectedSize: 757250,\n sha256Checksum: 'cb152765d1e71ea3cf96fdb339c764b7201be7b9ab32e20cfebcf16a20fc0939',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_ZH_EN_LEX',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-zhen/2025-12-18/lex.50.50.zhen.s2t.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 827130,\n blobBlockLength: 141,\n blobByteOffset: 54200056803,\n modelId: 'lex.50.50.zhen.s2t.bin',\n addon: 'nmt',\n expectedSize: 9219192,\n sha256Checksum: '8524dd4c93ffd7f0ae7be32f77a7c14fea7cdbbebe34ea6ad0ec368d5ddd8b13',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_METADATA_101',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-zhen/2025-12-18/metadata.json',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 827271,\n blobBlockLength: 1,\n blobByteOffset: 54209275995,\n modelId: 'metadata.json',\n addon: 'nmt',\n expectedSize: 2238,\n sha256Checksum: '40767965cbc4289fccc7a8dc34fa6d4700ccc0ff36ba382a85acc943fb1b0c03',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'BERGAMOT_ZH_EN',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-zhen/2025-12-18/model.zhen.intgemm.alphas.bin',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 827272,\n blobBlockLength: 672,\n blobByteOffset: 54209278233,\n modelId: 'model.zhen.intgemm.alphas.bin',\n addon: 'nmt',\n expectedSize: 43977787,\n sha256Checksum: '5cd149601802fc8a18124a1c1306144dbbedc058630c4ddb2d53aa76fa9c7c06',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '781ac63c141c470e',\n primaryKey: 'modelPath',\n files: [\n {\n key: 'modelPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-zhen/2025-12-18/model.zhen.intgemm.alphas.bin',\n registrySource: 's3',\n targetName: 'model.zhen.intgemm.alphas.bin',\n expectedSize: 43977787,\n sha256Checksum: '5cd149601802fc8a18124a1c1306144dbbedc058630c4ddb2d53aa76fa9c7c06',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 827272,\n blobBlockLength: 672,\n blobByteOffset: 54209278233,\n primary: true\n },\n {\n key: 'lexPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-zhen/2025-12-18/lex.50.50.zhen.s2t.bin',\n registrySource: 's3',\n targetName: 'lex.50.50.zhen.s2t.bin',\n expectedSize: 9219192,\n sha256Checksum: '8524dd4c93ffd7f0ae7be32f77a7c14fea7cdbbebe34ea6ad0ec368d5ddd8b13',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 827130,\n blobBlockLength: 141,\n blobByteOffset: 54200056803\n },\n {\n key: 'sharedVocabPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-zhen/2025-12-18/vocab.zhen.spm',\n registrySource: 's3',\n targetName: 'vocab.zhen.spm',\n expectedSize: 1359697,\n sha256Checksum: 'dff594318ab7d8b7b60b844ab98ebe6b932ae8045fab15235404c787715965b3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 827965,\n blobBlockLength: 21,\n blobByteOffset: 54254615717\n },\n {\n key: 'metadataPath',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-zhen/2025-12-18/metadata.json',\n registrySource: 's3',\n targetName: 'metadata.json',\n expectedSize: 2238,\n sha256Checksum: '40767965cbc4289fccc7a8dc34fa6d4700ccc0ff36ba382a85acc943fb1b0c03',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 827271,\n blobBlockLength: 1,\n blobByteOffset: 54209275995\n }\n ]\n }\n },\n {\n name: 'BERGAMOT_ZH_EN_VOCAB',\n registryPath: 'qvac_models_compiled/bergamot/bergamot-zhen/2025-12-18/vocab.zhen.spm',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 827965,\n blobBlockLength: 21,\n blobByteOffset: 54254615717,\n modelId: 'vocab.zhen.spm',\n addon: 'nmt',\n expectedSize: 1359697,\n sha256Checksum: 'dff594318ab7d8b7b60b844ab98ebe6b932ae8045fab15235404c787715965b3',\n engine: 'nmtcpp-translation',\n quantization: '',\n params: ''\n },\n {\n name: 'MARIAN_EN_HI_INDIC_1B_F16',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/f16/ggml-indictrans2-en-indic-1B/2026-01-01/ggml-indictrans2-en-indic-1B-f16.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 424155,\n blobBlockLength: 34176,\n blobByteOffset: 27794683758,\n modelId: 'ggml-indictrans2-en-indic-1B-f16.bin',\n addon: 'nmt',\n expectedSize: 2239757219,\n sha256Checksum: '76763bab9e6c7f90d0a202a91a21a678dd65d9cfc1cfcd4f3c80f5a83a531444',\n engine: 'nmtcpp-translation',\n quantization: 'f16',\n params: '1B'\n },\n {\n name: 'MARIAN_EN_HI_INDIC_200M_F16',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/f16/ggml-indictrans2-en-indic-dist-200M/2026-01-01/ggml-indictrans2-en-indic-dist-200M-f16.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 458331,\n blobBlockLength: 6582,\n blobByteOffset: 30034440977,\n modelId: 'ggml-indictrans2-en-indic-dist-200M-f16.bin',\n addon: 'nmt',\n expectedSize: 431338529,\n sha256Checksum: '0448976882eaf62300b294abc7d6696bceed51c1a83308e68575698f9bf1d910',\n engine: 'nmtcpp-translation',\n quantization: 'f16',\n params: '200M'\n },\n {\n name: 'MARIAN_HI_EN_INDIC_1B_F16',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/f16/ggml-indictrans2-indic-en-1B/2026-01-01/ggml-indictrans2-indic-en-1B-f16.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 464913,\n blobBlockLength: 31347,\n blobByteOffset: 30465779506,\n modelId: 'ggml-indictrans2-indic-en-1B-f16.bin',\n addon: 'nmt',\n expectedSize: 2054322154,\n sha256Checksum: '97e1dd56b9b68ad56bdf9c49949dc2cb9d7d27cb0c4ff84c3dda9113be43417b',\n engine: 'nmtcpp-translation',\n quantization: 'f16',\n params: '1B'\n },\n {\n name: 'MARIAN_HI_EN_INDIC_200M_F16',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/f16/ggml-indictrans2-indic-en-dist-200M/2026-01-01/ggml-indictrans2-indic-en-dist-200M-f16.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 496260,\n blobBlockLength: 6577,\n blobByteOffset: 32520101660,\n modelId: 'ggml-indictrans2-indic-en-dist-200M-f16.bin',\n addon: 'nmt',\n expectedSize: 430985320,\n sha256Checksum: 'e914f157a92018fb5601be9e546dff480ae5ec1a9a1ba49078ad3ef371ff4c44',\n engine: 'nmtcpp-translation',\n quantization: 'f16',\n params: '200M'\n },\n {\n name: 'MARIAN_HI_HI_INDIC_1B_F16',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/f16/ggml-indictrans2-indic-indic-1B/2026-01-01/ggml-indictrans2-indic-indic-1B-f16.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 502837,\n blobBlockLength: 37068,\n blobByteOffset: 32951086980,\n modelId: 'ggml-indictrans2-indic-indic-1B-f16.bin',\n addon: 'nmt',\n expectedSize: 2429270859,\n sha256Checksum: 'c4e9eafc03f9ac7aac35b494dfea02feda9797b5f69b682bd3bb9f565ec4ba2e',\n engine: 'nmtcpp-translation',\n quantization: 'f16',\n params: '1B'\n },\n {\n name: 'MARIAN_HI_HI_INDIC_320M_F16',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/f16/ggml-indictrans2-indic-indic-dist-320M/2026-01-01/ggml-indictrans2-indic-indic-dist-320M-f16.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 539905,\n blobBlockLength: 9978,\n blobByteOffset: 35380357839,\n modelId: 'ggml-indictrans2-indic-indic-dist-320M-f16.bin',\n addon: 'nmt',\n expectedSize: 653915115,\n sha256Checksum: '292f376b75b164ec3700da5b376675c79bd48f43dd2e28d1b54040020acc28b9',\n engine: 'nmtcpp-translation',\n quantization: 'f16',\n params: '320M'\n },\n {\n name: 'MARIAN_EN_HI_INDIC_1B_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/q4_0/ggml-indictrans2-en-indic-1B/2026-01-01/ggml-indictrans2-en-indic-1B-q4_0.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 549883,\n blobBlockLength: 9724,\n blobByteOffset: 36034272954,\n modelId: 'ggml-indictrans2-en-indic-1B-q4_0.bin',\n addon: 'nmt',\n expectedSize: 637229091,\n sha256Checksum: '4cd28a8b4159f4ba45b00b6ee61bf5b2f7f0c374d258afb5ac7a810ee7d5365d',\n engine: 'nmtcpp-translation',\n quantization: 'q4_0',\n params: '1B'\n },\n {\n name: 'MARIAN_EN_HI_INDIC_200M_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/q4_0/ggml-indictrans2-en-indic-dist-200M/2026-01-01/ggml-indictrans2-en-indic-dist-200M-q4_0.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 559607,\n blobBlockLength: 1944,\n blobByteOffset: 36671502045,\n modelId: 'ggml-indictrans2-en-indic-dist-200M-q4_0.bin',\n addon: 'nmt',\n expectedSize: 127339617,\n sha256Checksum: 'd091bf149cc393689bc0cc50d2c3e38ea4fa11db327c8d26ac3316aa383c9a99',\n engine: 'nmtcpp-translation',\n quantization: 'q4_0',\n params: '200M'\n },\n {\n name: 'MARIAN_HI_EN_INDIC_1B_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/q4_0/ggml-indictrans2-indic-en-1B/2026-01-01/ggml-indictrans2-indic-en-1B-q4_0.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 561551,\n blobBlockLength: 8924,\n blobByteOffset: 36798841662,\n modelId: 'ggml-indictrans2-indic-en-1B-q4_0.bin',\n addon: 'nmt',\n expectedSize: 584815722,\n sha256Checksum: 'a642e9c9bbe2069628bb585071a138b794d04dae588823d183aa27af76698ef3',\n engine: 'nmtcpp-translation',\n quantization: 'q4_0',\n params: '1B'\n },\n {\n name: 'MARIAN_HI_EN_INDIC_200M_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/q4_0/ggml-indictrans2-indic-en-dist-200M/2026-01-01/ggml-indictrans2-indic-en-dist-200M-q4_0.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 570475,\n blobBlockLength: 1938,\n blobByteOffset: 37383657384,\n modelId: 'ggml-indictrans2-indic-en-dist-200M-q4_0.bin',\n addon: 'nmt',\n expectedSize: 126980520,\n sha256Checksum: '8ed3cefac12693b9312910a5bb3be59bf3eb5bb2903dfe954a1ff1b4beaf80ff',\n engine: 'nmtcpp-translation',\n quantization: 'q4_0',\n params: '200M'\n },\n {\n name: 'MARIAN_HI_HI_INDIC_1B_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/q4_0/ggml-indictrans2-indic-indic-1B/2026-01-01/ggml-indictrans2-indic-indic-1B-q4_0.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 572413,\n blobBlockLength: 10585,\n blobByteOffset: 37510637904,\n modelId: 'ggml-indictrans2-indic-indic-1B-q4_0.bin',\n addon: 'nmt',\n expectedSize: 693697483,\n sha256Checksum: 'dc0112f728fc58cea43cd44d61ddd4be7e4174527d311b5982ae23e87c0f288e',\n engine: 'nmtcpp-translation',\n quantization: 'q4_0',\n params: '1B'\n },\n {\n name: 'MARIAN_HI_HI_INDIC_320M_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/indictrans2/q4_0/ggml-indictrans2-indic-indic-dist-320M/2026-01-01/ggml-indictrans2-indic-indic-dist-320M-q4_0.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 582998,\n blobBlockLength: 2947,\n blobByteOffset: 38204335387,\n modelId: 'ggml-indictrans2-indic-indic-dist-320M-q4_0.bin',\n addon: 'nmt',\n expectedSize: 193106987,\n sha256Checksum: '6a0e913967af1a90ea11d1cf7a697d0c4fe5f168a08017f4b7f8ac510d2727a2',\n engine: 'nmtcpp-translation',\n quantization: 'q4_0',\n params: '320M'\n },\n {\n name: 'OCR_CRAFT_DETECTOR',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_512/detector_craft.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 448228,\n blobBlockLength: 1268,\n blobByteOffset: 29373103601,\n modelId: 'detector_craft.onnx',\n addon: 'ocr',\n expectedSize: 83058594,\n sha256Checksum: '0ca3aed5da83250025bc01eb3ad1fc21482d3cee814fae22343de13c221e02e9',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_LATIN_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_512/recognizer_latin.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 447992,\n blobBlockLength: 236,\n blobByteOffset: 29357691733,\n modelId: 'recognizer_latin.onnx',\n addon: 'ocr',\n expectedSize: 15411868,\n sha256Checksum: '5dfcc50a6b2a237d62bd160f1b578a65e5cf445ff30c7a8b2fddec30bbde2098',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_ARABIC_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_arabic.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 795898,\n blobBlockLength: 3285,\n blobByteOffset: 52156429955,\n modelId: 'recognizer_arabic.onnx',\n addon: 'ocr',\n expectedSize: 215232646,\n sha256Checksum: 'c592747bb80b17bdeb77cd35397b60b2ad121ad4a14a84cf97ea2476fea0abbd',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_BENGALI_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_bengali.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 799183,\n blobBlockLength: 3284,\n blobByteOffset: 52371662601,\n modelId: 'recognizer_bengali.onnx',\n addon: 'ocr',\n expectedSize: 215201866,\n sha256Checksum: '3a817445513e57398c1012c189fef046719466c91a46e6b7c6fc618ad89ed416',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_CYRILLIC_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_cyrillic.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 802467,\n blobBlockLength: 233,\n blobByteOffset: 52586864467,\n modelId: 'recognizer_cyrillic.onnx',\n addon: 'ocr',\n expectedSize: 15250809,\n sha256Checksum: '7eeeda79f6970bf2d522bce10592b6e681e44336fd4fc9e7ffd49a114ee983a0',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_DEVANAGARI_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_devanagari.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 802700,\n blobBlockLength: 3285,\n blobByteOffset: 52602115276,\n modelId: 'recognizer_devanagari.onnx',\n addon: 'ocr',\n expectedSize: 215238802,\n sha256Checksum: 'f9f3da8db6360c5cc48f9e5fd75a78705738a1160ee9fba4544461a24d34a194',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_JAPANESE_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_japanese.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 805985,\n blobBlockLength: 265,\n blobByteOffset: 52817354078,\n modelId: 'recognizer_japanese.onnx',\n addon: 'ocr',\n expectedSize: 17314007,\n sha256Checksum: 'e76fb3af253c54b3a28988c968f6afb3be9b0270a89618845638c14aa01f52e3',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_KANNADA_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_kannada.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 806250,\n blobBlockLength: 233,\n blobByteOffset: 52834668085,\n modelId: 'recognizer_kannada.onnx',\n addon: 'ocr',\n expectedSize: 15209689,\n sha256Checksum: 'bb29ad21f3b8c154d17db46613b14d394144b8cfbb6d5b80a0274a2bf2d03996',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_KOREAN_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_korean.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 806483,\n blobBlockLength: 246,\n blobByteOffset: 52849877774,\n modelId: 'recognizer_korean.onnx',\n addon: 'ocr',\n expectedSize: 16074237,\n sha256Checksum: 'ec313ff3adf17d9f0931a756eed384b2d4dc289f1bf518aea81800b1cf54ec9b',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_LATIN_RECOGNIZER_1',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_latin.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 806729,\n blobBlockLength: 235,\n blobByteOffset: 52865952011,\n modelId: 'recognizer_latin.onnx',\n addon: 'ocr',\n expectedSize: 15398841,\n sha256Checksum: 'fbae7f3d321cf4891ed8c5da7599d0695acc93c638056d837383f9b317730273',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_TAMIL_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_tamil.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 806964,\n blobBlockLength: 3283,\n blobByteOffset: 52881350852,\n modelId: 'recognizer_tamil.onnx',\n addon: 'ocr',\n expectedSize: 215146462,\n sha256Checksum: '6ea5201e534245dc6b13be45ce7837ad601045c790dfcb0b26e7f26c4068bf48',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_TELUGU_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_telugu.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 810247,\n blobBlockLength: 233,\n blobByteOffset: 53096497314,\n modelId: 'recognizer_telugu.onnx',\n addon: 'ocr',\n expectedSize: 15207633,\n sha256Checksum: '37cf83c803102b84964fc9d3fa1a02c4df979d077a2f4795cdea1a7b4f88b9cd',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_THAI_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_thai.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 810480,\n blobBlockLength: 3284,\n blobByteOffset: 53111704947,\n modelId: 'recognizer_thai.onnx',\n addon: 'ocr',\n expectedSize: 215216230,\n sha256Checksum: '3bb9260eeedf6a1675f3d9f773a83f93e828d44a6737e8e928bb491e64921e79',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_ZH_SIM_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_zh_sim.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 813764,\n blobBlockLength: 335,\n blobByteOffset: 53326921177,\n modelId: 'recognizer_zh_sim.onnx',\n addon: 'ocr',\n expectedSize: 21944121,\n sha256Checksum: '34b53c185aea7d43648d1ae03eedb9c8b38555cadb2c9e5c048ed9b25c447bc6',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_ZH_TRA_RECOGNIZER',\n registryPath: 'qvac_models_compiled/ocr/2026-02-12/rec_dyn/recognizer_zh_tra.onnx',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 814099,\n blobBlockLength: 3447,\n blobByteOffset: 53348865298,\n modelId: 'recognizer_zh_tra.onnx',\n addon: 'ocr',\n expectedSize: 225894842,\n sha256Checksum: '234c8454c81661d78d016b1ecf3dc60eab3a652e78d8ba4891079d5211a4a378',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_RECOGNIZER_CRNN_MOBILENET_V3_SMALL',\n registryPath: 'qvac_models_compiled/ocr/doctr/2026-03-04/crnn_mobilenet_v3_small.onnx',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 52952,\n blobBlockLength: 128,\n blobByteOffset: 3469774431,\n modelId: 'crnn_mobilenet_v3_small.onnx',\n addon: 'ocr',\n expectedSize: 8331378,\n sha256Checksum: 'bded4d49b3e91dac24591ed4f0af3de4c3baab1f9cc07e8e7dc07c9ba66b3b33',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_DETECTOR_DB_MOBILENET_V3_LARGE',\n registryPath: 'qvac_models_compiled/ocr/doctr/2026-03-04/db_mobilenet_v3_large.onnx',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 51232,\n blobBlockLength: 246,\n blobByteOffset: 3357109887,\n modelId: 'db_mobilenet_v3_large.onnx',\n addon: 'ocr',\n expectedSize: 16076965,\n sha256Checksum: '4987e7bdea372559808bd5add85fda10e179dc639696fb489e59a197a25b4c64',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_DETECTOR_DB_RESNET50',\n registryPath: 'qvac_models_compiled/ocr/doctr/2026-03-04/db_resnet50.onnx',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 49692,\n blobBlockLength: 1540,\n blobByteOffset: 3256190858,\n modelId: 'db_resnet50.onnx',\n addon: 'ocr',\n expectedSize: 100919029,\n sha256Checksum: '69ba00155c16b198d062f5a7b9cdb446c82aed81812d7ff5a74e01ab41421d55',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_RECOGNIZER_PARSEQ',\n registryPath: 'qvac_models_compiled/ocr/doctr/2026-03-04/parseq.onnx',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 51478,\n blobBlockLength: 1474,\n blobByteOffset: 3373186852,\n modelId: 'parseq.onnx',\n addon: 'ocr',\n expectedSize: 96587579,\n sha256Checksum: '00b40714e00039c8c04891e5fd98ad5cb46c34fa7133ba09e2a55d4b28d42a68',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_DOCTR',\n registryPath: 'qvac_models_compiled/ocr/gguf/doctrf16/2026-05-15/crnn_mobilenet_v3_small.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2109794,\n blobBlockLength: 65,\n blobByteOffset: 138260962318,\n modelId: 'crnn_mobilenet_v3_small.gguf',\n addon: 'ocr',\n expectedSize: 4198144,\n sha256Checksum: '9ab222298a53c007ffb64d15246412b15354be1646693fa5f5d5f068a1a84213',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_DOCTR_1',\n registryPath: 'qvac_models_compiled/ocr/gguf/doctrf16/2026-05-15/db_mobilenet_v3_large.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2109666,\n blobBlockLength: 128,\n blobByteOffset: 138252609678,\n modelId: 'db_mobilenet_v3_large.gguf',\n addon: 'ocr',\n expectedSize: 8352640,\n sha256Checksum: '6665fcf101c583643de546f628b7ea73870833698496ad0894fb8c92eba49478',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_CRAFT',\n registryPath: 'qvac_models_compiled/ocr/gguf/easyocr/2026-05-14/craft_mlt_25k.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2108162,\n blobBlockLength: 1269,\n blobByteOffset: 138154079310,\n modelId: 'craft_mlt_25k.gguf',\n addon: 'ocr',\n expectedSize: 83133856,\n sha256Checksum: '74501993caf4581ce09b280f49a1b3d249c0f5a78496e047718b398457a875aa',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'OCR_LATIN',\n registryPath: 'qvac_models_compiled/ocr/gguf/easyocr/2026-05-14/latin_g2.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2109431,\n blobBlockLength: 235,\n blobByteOffset: 138237213166,\n modelId: 'latin_g2.gguf',\n addon: 'ocr',\n expectedSize: 15396512,\n sha256Checksum: 'dd1c7a436e9175904e63683e939635892f45c8c6377d5e14e87cf8b175e10768',\n engine: 'ggml-ocr',\n quantization: '',\n params: ''\n },\n {\n name: 'PARAKEET_CTC_0_6B_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-05-11/parakeet-ctc-0.6b.q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 716203,\n blobBlockLength: 11158,\n blobByteOffset: 46934581982,\n modelId: 'parakeet-ctc-0.6b.q8_0.gguf',\n addon: 'parakeet',\n expectedSize: 731222912,\n sha256Checksum: '934a88915e4bbd87c067ea4a149d711238a516f75d336a74d47dc0a7828ddda4',\n engine: 'parakeet-transcription',\n quantization: 'q8_0',\n params: '0.6B'\n },\n {\n name: 'PARAKEET_EOU_120M_V1_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-05-11/parakeet-eou-120m-v1.q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 738800,\n blobBlockLength: 2107,\n blobByteOffset: 48415430110,\n modelId: 'parakeet-eou-120m-v1.q8_0.gguf',\n addon: 'parakeet',\n expectedSize: 138051456,\n sha256Checksum: 'c7b7f62d27791ef96049955667de5650684617f4a29f4cf5810e9ab831492cd3',\n engine: 'parakeet-transcription',\n quantization: 'q8_0',\n params: '120M'\n },\n {\n name: 'PARAKEET_TDT_0_6B_V3_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-05-11/parakeet-tdt-0.6b-v3.q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 727361,\n blobBlockLength: 11439,\n blobByteOffset: 47665804894,\n modelId: 'parakeet-tdt-0.6b-v3.q8_0.gguf',\n addon: 'parakeet',\n expectedSize: 749625216,\n sha256Checksum: '0f26bd6cfe8ba53624ea67ed2df7ddaa70179efc82160264561a0f05b70ba23d',\n engine: 'parakeet-transcription',\n quantization: 'q8_0',\n params: '0.6B'\n },\n {\n name: 'PARAKEET_SORTFORMER_4SPK_V1_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-05-11/sortformer-4spk-v1.q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 713953,\n blobBlockLength: 2250,\n blobByteOffset: 46787145278,\n modelId: 'sortformer-4spk-v1.q8_0.gguf',\n addon: 'parakeet',\n expectedSize: 147436704,\n sha256Checksum: 'a86507784387612b1fe737cdc52378f6f277dd5e7794166278043b24bcda6541',\n engine: 'parakeet-transcription',\n quantization: 'q8_0',\n params: '123M'\n },\n {\n name: 'PARAKEET_SORTFORMER_4SPK_V2_1_F16',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-05-20/diar_streaming_sortformer_4spk-v2.1.f16.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1600284,\n blobBlockLength: 4015,\n blobByteOffset: 104870911729,\n modelId: 'diar_streaming_sortformer_4spk-v2.1.f16.gguf',\n addon: 'parakeet',\n expectedSize: 263080256,\n sha256Checksum: 'ed0d50e801a8c763642e1e08b8f1189deadee14e219261bc4f4f7c9c0d22d8af',\n engine: 'parakeet-transcription',\n quantization: 'f16',\n params: '123M'\n },\n {\n name: 'PARAKEET_SORTFORMER_4SPK_V2_1_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-05-20/diar_streaming_sortformer_4spk-v2.1.q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1606447,\n blobBlockLength: 1152,\n blobByteOffset: 105274709937,\n modelId: 'diar_streaming_sortformer_4spk-v2.1.q4_0.gguf',\n addon: 'parakeet',\n expectedSize: 75458048,\n sha256Checksum: 'bbd05057baf15e32311e1366edb4a77ade897a29ca152ec36cac4fb05005469c',\n engine: 'parakeet-transcription',\n quantization: 'q4_0',\n params: '123M'\n },\n {\n name: 'PARAKEET_SORTFORMER_4SPK_V2_1_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-05-20/diar_streaming_sortformer_4spk-v2.1.q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1604299,\n blobBlockLength: 2148,\n blobByteOffset: 105133991985,\n modelId: 'diar_streaming_sortformer_4spk-v2.1.q8_0.gguf',\n addon: 'parakeet',\n expectedSize: 140717952,\n sha256Checksum: '1d593b947fbf5dca16f6d17266e4c587f01fb265994b2612783287c5cd735d15',\n engine: 'parakeet-transcription',\n quantization: 'q8_0',\n params: '123M'\n },\n {\n name: 'PARAKEET_EOU_120M_V1_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-05-27/parakeet-eou-120m-v1.q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1613496,\n blobBlockLength: 1131,\n blobByteOffset: 105736572977,\n modelId: 'parakeet-eou-120m-v1.q4_0.gguf',\n addon: 'parakeet',\n expectedSize: 74110976,\n sha256Checksum: 'a1fb4ab2a6dd8a931e67d08b24e6e277e5163d26abb495fe730a23385964fc36',\n engine: 'parakeet-transcription',\n quantization: 'q4_0',\n params: '120M'\n },\n {\n name: 'PARAKEET_TDT_0_6B_V3_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-05-27/parakeet-tdt-0.6b-v3.q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1614627,\n blobBlockLength: 6085,\n blobByteOffset: 105810683953,\n modelId: 'parakeet-tdt-0.6b-v3.q4_0.gguf',\n addon: 'parakeet',\n expectedSize: 398735040,\n sha256Checksum: 'e29d2749b0d38d827f9649c410a075894a329409f750287b8e7dfb1c6e2e7b5e',\n engine: 'parakeet-transcription',\n quantization: 'q4_0',\n params: '0.6B'\n },\n {\n name: 'PARAKEET_SORTFORMER_4SPK_V1_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-05-27/sortformer-4spk-v1.q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1620712,\n blobBlockLength: 1206,\n blobByteOffset: 106209418993,\n modelId: 'sortformer-4spk-v1.q4_0.gguf',\n addon: 'parakeet',\n expectedSize: 79031136,\n sha256Checksum: 'f1f9f6215ee535b2d07e26e398ced16d2d598a330a33d75297d1fafa65a4075f',\n engine: 'parakeet-transcription',\n quantization: 'q4_0',\n params: '123M'\n },\n {\n name: 'PARAKEET_CTC_0_6B_F16',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-07-01/parakeet-ctc-0.6b.f16.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2199878,\n blobBlockLength: 20931,\n blobByteOffset: 144155091746,\n modelId: 'parakeet-ctc-0.6b.f16.gguf',\n addon: 'parakeet',\n expectedSize: 1371674432,\n sha256Checksum: 'b4e813c1b6057c4c005e9996a0724b02aedc339f5d1b7c9c0c5a8b4ebdeb75cf',\n engine: 'parakeet-transcription',\n quantization: 'f16',\n params: '0.6B'\n },\n {\n name: 'PARAKEET_CTC_0_6B_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-07-01/parakeet-ctc-0.6b.q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2220809,\n blobBlockLength: 5946,\n blobByteOffset: 145526766178,\n modelId: 'parakeet-ctc-0.6b.q4_0.gguf',\n addon: 'parakeet',\n expectedSize: 389648768,\n sha256Checksum: '2b7fce0479f6f18e90a0ff50d644bc9cee6b2382fddf8fca88364bbf729343da',\n engine: 'parakeet-transcription',\n quantization: 'q4_0',\n params: '0.6B'\n },\n {\n name: 'PARAKEET_EOU_120M_V1_F16',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-07-01/parakeet-eou-120m-v1.f16.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2226755,\n blobBlockLength: 3936,\n blobByteOffset: 145916414946,\n modelId: 'parakeet-eou-120m-v1.f16.gguf',\n addon: 'parakeet',\n expectedSize: 257939840,\n sha256Checksum: 'd474dacc63ad8df1a9003f888bcb48c476d7dadec3e2ef5106a75f426e47cb63',\n engine: 'parakeet-transcription',\n quantization: 'f16',\n params: '120M'\n },\n {\n name: 'PARAKEET_TDT_0_6B_V3_F16',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-07-01/parakeet-tdt-0.6b-v3.f16.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2230691,\n blobBlockLength: 21478,\n blobByteOffset: 146174354786,\n modelId: 'parakeet-tdt-0.6b-v3.f16.gguf',\n addon: 'parakeet',\n expectedSize: 1407544256,\n sha256Checksum: '896463ab74886d027538709f3a21d141b7a99061d4b337a2777c142926f91416',\n engine: 'parakeet-transcription',\n quantization: 'f16',\n params: '0.6B'\n },\n {\n name: 'PARAKEET_SORTFORMER_4SPK_V1_F16',\n registryPath: 'qvac_models_compiled/ggml/parakeet/2026-07-01/sortformer-4spk-v1.f16.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2252169,\n blobBlockLength: 4207,\n blobByteOffset: 147581899042,\n modelId: 'sortformer-4spk-v1.f16.gguf',\n addon: 'parakeet',\n expectedSize: 275697312,\n sha256Checksum: 'c6206e62af54a4ebb2fb07847dc6e6b58c3938a210fabfd81a1e1f21a9362b76',\n engine: 'parakeet-transcription',\n quantization: 'f16',\n params: '123M'\n },\n {\n name: 'TTS_S3GEN_MULTILINGUAL_CHATTERBOX',\n registryPath: 'qvac_models_compiled/chatterbox/2026-05-08/chatterbox-s3gen-mtl.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2198951,\n blobBlockLength: 16120,\n blobByteOffset: 144099476941,\n modelId: 'chatterbox-s3gen-mtl.gguf',\n addon: 'tts',\n expectedSize: 1056431360,\n sha256Checksum: '893c0ce93e06ca55d2a7be19e573850a7a4391c7345d94b0cd0f4b25a0aef361',\n engine: 'tts-ggml',\n quantization: '',\n params: ''\n },\n {\n name: 'TTS_S3GEN_EN_CHATTERBOX',\n registryPath: 'qvac_models_compiled/chatterbox/2026-05-08/chatterbox-s3gen.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2226932,\n blobBlockLength: 16249,\n blobByteOffset: 145933185741,\n modelId: 'chatterbox-s3gen.gguf',\n addon: 'tts',\n expectedSize: 1064879936,\n sha256Checksum: 'e45b862a1385567ad9588ce946ccef1c686671be57ab087583f5fb514d6d9840',\n engine: 'tts-ggml',\n quantization: '',\n params: ''\n },\n {\n name: 'TTS_T3_MULTILINGUAL_CHATTERBOX_FP16',\n registryPath: 'qvac_models_compiled/chatterbox/2026-05-08/chatterbox-t3-mtl.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2243181,\n blobBlockLength: 16777,\n blobByteOffset: 146998065677,\n modelId: 'chatterbox-t3-mtl.gguf',\n addon: 'tts',\n expectedSize: 1099495744,\n sha256Checksum: '42ee8e044b31283d6ff9ae3fe1c0c9836986b6c4a7e854f7ec58a18213c976a9',\n engine: 'tts-ggml',\n quantization: 'fp16',\n params: ''\n },\n {\n name: 'TTS_T3_TURBO_EN_CHATTERBOX_FP16',\n registryPath: 'qvac_models_compiled/chatterbox/2026-05-08/chatterbox-t3-turbo.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 2215071,\n blobBlockLength: 11861,\n blobByteOffset: 145155908301,\n modelId: 'chatterbox-t3-turbo.gguf',\n addon: 'tts',\n expectedSize: 777277440,\n sha256Checksum: '88ea319c6fa1178c5630ee1699d8621ea2b8408fcb6e44f846e4488f4b4b2021',\n engine: 'tts-ggml',\n quantization: 'fp16',\n params: ''\n },\n {\n name: 'TTS_MECAB_IPADIC_CHATTERBOX',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/char.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093023,\n blobBlockLength: 5,\n blobByteOffset: 137162353845,\n modelId: 'char.bin',\n addon: 'tts',\n expectedSize: 262496,\n sha256Checksum: '81bba502ae48fa005a374819f15e44452eb68086a8b323ec20a044d514400832',\n engine: 'tts-ggml',\n quantization: '',\n params: '',\n companionSet: {\n setKey: '672e74b49c8592c0',\n primaryKey: 'mecabDictPath',\n files: [\n {\n key: 'mecabDictPath',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/char.bin',\n registrySource: 's3',\n targetName: 'char.bin',\n expectedSize: 262496,\n sha256Checksum: '81bba502ae48fa005a374819f15e44452eb68086a8b323ec20a044d514400832',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093023,\n blobBlockLength: 5,\n blobByteOffset: 137162353845,\n primary: true\n },\n {\n key: 'mecab:dicrc',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/dicrc',\n registrySource: 's3',\n targetName: 'dicrc',\n expectedSize: 693,\n sha256Checksum: 'add6bb131a75e69478961ea59712541ace3779f7c5daa4da80d281f097c9d4d1',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093028,\n blobBlockLength: 1,\n blobByteOffset: 137162616341\n },\n {\n key: 'mecab:matrix.bin',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/matrix.bin',\n registrySource: 's3',\n targetName: 'matrix.bin',\n expectedSize: 3463716,\n sha256Checksum: 'ee44d7350cdcb680ebd699f83e121be1dc63310f8832d55bcb537a068177611a',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093029,\n blobBlockLength: 53,\n blobByteOffset: 137162617034\n },\n {\n key: 'mecab:mecabrc',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/mecabrc',\n registrySource: 's3',\n targetName: 'mecabrc',\n expectedSize: 123,\n sha256Checksum: '7d7446bf89bbf5f0ae18ba108e265a3ca5ece1447cce34e2f37e318d925e7276',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093082,\n blobBlockLength: 1,\n blobByteOffset: 137166080750\n },\n {\n key: 'mecab:sys.dic',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/sys.dic',\n registrySource: 's3',\n targetName: 'sys.dic',\n expectedSize: 49198251,\n sha256Checksum: '7b912bfe6d67824dd378187737c9c2c09254cf07a072e65349ff1585ea348432',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093083,\n blobBlockLength: 751,\n blobByteOffset: 137166080873\n },\n {\n key: 'mecab:unk.dic',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/unk.dic',\n registrySource: 's3',\n targetName: 'unk.dic',\n expectedSize: 5690,\n sha256Checksum: '6903ccc5b0bc4dceeaa53b005da1b5b6c60636b581ce4aa6b9c41997d958e473',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093834,\n blobBlockLength: 1,\n blobByteOffset: 137215279124\n }\n ]\n }\n },\n {\n name: 'TTS_MECAB_IPADIC_CHATTERBOX_1',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/dicrc',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093028,\n blobBlockLength: 1,\n blobByteOffset: 137162616341,\n modelId: 'dicrc',\n addon: 'tts',\n expectedSize: 693,\n sha256Checksum: 'add6bb131a75e69478961ea59712541ace3779f7c5daa4da80d281f097c9d4d1',\n engine: 'tts-ggml',\n quantization: '',\n params: ''\n },\n {\n name: 'TTS_MECAB_IPADIC_CHATTERBOX_2',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/matrix.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093029,\n blobBlockLength: 53,\n blobByteOffset: 137162617034,\n modelId: 'matrix.bin',\n addon: 'tts',\n expectedSize: 3463716,\n sha256Checksum: 'ee44d7350cdcb680ebd699f83e121be1dc63310f8832d55bcb537a068177611a',\n engine: 'tts-ggml',\n quantization: '',\n params: ''\n },\n {\n name: 'TTS_MECAB_IPADIC_CHATTERBOX_3',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/mecabrc',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093082,\n blobBlockLength: 1,\n blobByteOffset: 137166080750,\n modelId: 'mecabrc',\n addon: 'tts',\n expectedSize: 123,\n sha256Checksum: '7d7446bf89bbf5f0ae18ba108e265a3ca5ece1447cce34e2f37e318d925e7276',\n engine: 'tts-ggml',\n quantization: '',\n params: ''\n },\n {\n name: 'TTS_MECAB_IPADIC_CHATTERBOX_4',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/sys.dic',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093083,\n blobBlockLength: 751,\n blobByteOffset: 137166080873,\n modelId: 'sys.dic',\n addon: 'tts',\n expectedSize: 49198251,\n sha256Checksum: '7b912bfe6d67824dd378187737c9c2c09254cf07a072e65349ff1585ea348432',\n engine: 'tts-ggml',\n quantization: '',\n params: ''\n },\n {\n name: 'TTS_MECAB_IPADIC_CHATTERBOX_5',\n registryPath: 'qvac_models_compiled/chatterbox/mecab-ipadic/unk.dic',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093834,\n blobBlockLength: 1,\n blobByteOffset: 137215279124,\n modelId: 'unk.dic',\n addon: 'tts',\n expectedSize: 5690,\n sha256Checksum: '6903ccc5b0bc4dceeaa53b005da1b5b6c60636b581ce4aa6b9c41997d958e473',\n engine: 'tts-ggml',\n quantization: '',\n params: ''\n },\n {\n name: 'TTS_T3_MULTILINGUAL_CHATTERBOX_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-05-18/chatterbox-t3-mtl-q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1098650,\n blobBlockLength: 5265,\n blobByteOffset: 71996297658,\n modelId: 'chatterbox-t3-mtl-q4_0.gguf',\n addon: 'tts',\n expectedSize: 344985408,\n sha256Checksum: '99645a36944f83372329d19c73c4836d55755116d86426fa9dde8a59a59a6f72',\n engine: 'tts-ggml',\n quantization: 'q4_0',\n params: ''\n },\n {\n name: 'TTS_T3_MULTILINGUAL_CHATTERBOX_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-05-18/chatterbox-t3-mtl-q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1103915,\n blobBlockLength: 9222,\n blobByteOffset: 72341283066,\n modelId: 'chatterbox-t3-mtl-q8_0.gguf',\n addon: 'tts',\n expectedSize: 604323648,\n sha256Checksum: 'c8f992786650b6e5cfc7c41a75bf8e6eb5539e524d0f7bb205c8448fd2ce7380',\n engine: 'tts-ggml',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'TTS_T3_TURBO_EN_CHATTERBOX_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-05-18/chatterbox-t3-turbo-q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1113137,\n blobBlockLength: 5076,\n blobByteOffset: 72945606714,\n modelId: 'chatterbox-t3-turbo-q4_0.gguf',\n addon: 'tts',\n expectedSize: 332605120,\n sha256Checksum: '6f87e315baee1bb4fc2062ae53d422b3d42d2cffa8e8b17c9fae464a1faa0fac',\n engine: 'tts-ggml',\n quantization: 'q4_0',\n params: ''\n },\n {\n name: 'TTS_T3_TURBO_EN_CHATTERBOX_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-05-18/chatterbox-t3-turbo-q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1118213,\n blobBlockLength: 7433,\n blobByteOffset: 73278211834,\n modelId: 'chatterbox-t3-turbo-q8_0.gguf',\n addon: 'tts',\n expectedSize: 487091392,\n sha256Checksum: 'bcbfad4019e582a78df01d624f67ef8abc5399625935169b4cd620ea4a82074d',\n engine: 'tts-ggml',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'TTS_S3GEN_MULTILINGUAL_CHATTERBOX_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-06-01/chatterbox-s3gen-mtl-q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1680515,\n blobBlockLength: 12031,\n blobByteOffset: 110128449169,\n modelId: 'chatterbox-s3gen-mtl-q4_0.gguf',\n addon: 'tts',\n expectedSize: 788432672,\n sha256Checksum: '44496b0fc6e9d1650d2977e2f352b849a0edf1c7f39034e3db60c0e9deea966e',\n engine: 'tts-ggml',\n quantization: 'q4_0',\n params: ''\n },\n {\n name: 'TTS_S3GEN_MULTILINGUAL_CHATTERBOX_Q5_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-06-01/chatterbox-s3gen-mtl-q5_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1692546,\n blobBlockLength: 12180,\n blobByteOffset: 110916881841,\n modelId: 'chatterbox-s3gen-mtl-q5_0.gguf',\n addon: 'tts',\n expectedSize: 798178080,\n sha256Checksum: '0746515994551c597d9118000265e7322c3fe18ce95ea3e05b2f113d3cefbc5b',\n engine: 'tts-ggml',\n quantization: 'q5_0',\n params: ''\n },\n {\n name: 'TTS_S3GEN_MULTILINGUAL_CHATTERBOX_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-06-01/chatterbox-s3gen-mtl-q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1704726,\n blobBlockLength: 12626,\n blobByteOffset: 111715059921,\n modelId: 'chatterbox-s3gen-mtl-q8_0.gguf',\n addon: 'tts',\n expectedSize: 827414304,\n sha256Checksum: '894f342725c253cbaf556bbb17ff6a7c71d8590bfa4dbd3dfca9e569b5182e33',\n engine: 'tts-ggml',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'TTS_S3GEN_EN_CHATTERBOX_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-06-01/chatterbox-s3gen-q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1643601,\n blobBlockLength: 12050,\n blobByteOffset: 107709394641,\n modelId: 'chatterbox-s3gen-q4_0.gguf',\n addon: 'tts',\n expectedSize: 789672256,\n sha256Checksum: '110609b15169a7c3d1110e2b39d23bc87596799fbd1920a42ff6e30241ca9768',\n engine: 'tts-ggml',\n quantization: 'q4_0',\n params: ''\n },\n {\n name: 'TTS_S3GEN_EN_CHATTERBOX_Q5_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-06-01/chatterbox-s3gen-q5_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1655651,\n blobBlockLength: 12203,\n blobByteOffset: 108499066897,\n modelId: 'chatterbox-s3gen-q5_0.gguf',\n addon: 'tts',\n expectedSize: 799679808,\n sha256Checksum: '46a09ca4817d640c9d9465d1215f038baa6e6a35b479c0c187742b511595f2e0',\n engine: 'tts-ggml',\n quantization: 'q5_0',\n params: ''\n },\n {\n name: 'TTS_S3GEN_EN_CHATTERBOX_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-06-01/chatterbox-s3gen-q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1667854,\n blobBlockLength: 12661,\n blobByteOffset: 109298746705,\n modelId: 'chatterbox-s3gen-q8_0.gguf',\n addon: 'tts',\n expectedSize: 829702464,\n sha256Checksum: '09038488320deb4091c895c8f589cbd6708ca7d445ba78fb2b5eefb14301073b',\n engine: 'tts-ggml',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'TTS_T3_MULTILINGUAL_CHATTERBOX_Q5_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-06-01/chatterbox-t3-mtl-q5_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1637347,\n blobBlockLength: 6254,\n blobByteOffset: 107299574673,\n modelId: 'chatterbox-t3-mtl-q5_0.gguf',\n addon: 'tts',\n expectedSize: 409819968,\n sha256Checksum: 'af78a11a288f925282e87af82ee85193b5333b651acbf1e4bfbcde6eb9e3048e',\n engine: 'tts-ggml',\n quantization: 'q5_0',\n params: ''\n },\n {\n name: 'TTS_T3_TURBO_EN_CHATTERBOX_Q5_0',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-06-01/chatterbox-t3-turbo-q5_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1631669,\n blobBlockLength: 5678,\n blobByteOffset: 106927479633,\n modelId: 'chatterbox-t3-turbo-q5_0.gguf',\n addon: 'tts',\n expectedSize: 372095040,\n sha256Checksum: 'd8af075c394496a57b443cc15c7ae9126e56625e11d7a7167ecf2fc52cb09fb9',\n engine: 'tts-ggml',\n quantization: 'q5_0',\n params: ''\n },\n {\n name: 'TTS_CANGJIE_ZH_CHATTERBOX',\n registryPath: 'qvac_models_compiled/ggml/chatterbox/2026-07-03/Cangjie5_TC.tsv',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2109859,\n blobBlockLength: 21,\n blobByteOffset: 138265160462,\n modelId: 'Cangjie5_TC.tsv',\n addon: 'tts',\n expectedSize: 1337109,\n sha256Checksum: '23369fd6c6587f185a5c2a0dfe3fffb0a4d14eb09510dc72a8b2682680267905',\n engine: 'tts-ggml',\n quantization: '',\n params: ''\n },\n {\n name: 'TTS_ENHANCER_LAVASR_FP16',\n registryPath: 'qvac_models_compiled/ggml/lavasr/2026-06-26/lavasr-enhancer-f16.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4340403,\n blobBlockLength: 429,\n blobByteOffset: 284440571850,\n modelId: 'lavasr-enhancer-f16.gguf',\n addon: 'tts',\n expectedSize: 28051008,\n sha256Checksum: '81349380fa62c654b1c5df99f57efb04cb8600bb810f17654e4b64237bc9f554',\n engine: 'tts-ggml',\n quantization: 'fp16',\n params: ''\n },\n {\n name: 'TTS_ENHANCER_LAVASR_FP32',\n registryPath: 'qvac_models_compiled/ggml/lavasr/2026-06-26/lavasr-enhancer-f32.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4340832,\n blobBlockLength: 854,\n blobByteOffset: 284468622858,\n modelId: 'lavasr-enhancer-f32.gguf',\n addon: 'tts',\n expectedSize: 55946816,\n sha256Checksum: '602eca4250ce60f7edc9a0a21402112ca33fe8f2350296a8a66360ff4d688c2e',\n engine: 'tts-ggml',\n quantization: 'fp32',\n params: ''\n },\n {\n name: 'TTS_DENOISER_LAVASR_FP16',\n registryPath: 'qvac_models_compiled/ggml/lavasr/2026-07-03/lavasr-denoiser-f16.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2256376,\n blobBlockLength: 8,\n blobByteOffset: 147857596354,\n modelId: 'lavasr-denoiser-f16.gguf',\n addon: 'tts',\n expectedSize: 505696,\n sha256Checksum: '8de76a6e0e494fc71c779f25736506535bdce984d2313d5e1637e9bac383955b',\n engine: 'tts-ggml',\n quantization: 'fp16',\n params: ''\n },\n {\n name: 'TTS_DENOISER_LAVASR_FP32',\n registryPath: 'qvac_models_compiled/ggml/lavasr/2026-07-03/lavasr-denoiser-f32.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2256384,\n blobBlockLength: 12,\n blobByteOffset: 147858102050,\n modelId: 'lavasr-denoiser-f32.gguf',\n addon: 'tts',\n expectedSize: 722528,\n sha256Checksum: 'b46a16dcf14fefdbc33b4a993541440a3d6f8c90a3ee2b77e15d5405950935a5',\n engine: 'tts-ggml',\n quantization: 'fp32',\n params: ''\n },\n {\n name: 'TTS_INDIC_MULTILINGUAL_PARLER_TTS_FP16',\n registryPath: 'qvac_models_compiled/ggml/parler-tts/2026-07-20/parler-indic-f16.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2256396,\n blobBlockLength: 40226,\n blobByteOffset: 147858824578,\n modelId: 'parler-indic-f16.gguf',\n addon: 'tts',\n expectedSize: 2636192608,\n sha256Checksum: 'bdd113678a5e6b1fdc985a49e52576bc35cfd76164930557555ce4e46f1dbf1f',\n engine: 'tts-ggml',\n quantization: 'fp16',\n params: '880M'\n },\n {\n name: 'TTS_INDIC_MULTILINGUAL_PARLER_TTS_FP32',\n registryPath: 'qvac_models_compiled/ggml/parler-tts/2026-07-20/parler-indic-f32.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2296622,\n blobBlockLength: 55961,\n blobByteOffset: 150495017186,\n modelId: 'parler-indic-f32.gguf',\n addon: 'tts',\n expectedSize: 3667407712,\n sha256Checksum: '8f5e8bd0e5b0c3f949ebff055269192bdd7ef7443bdc4e0ca46c6b49c55826a4',\n engine: 'tts-ggml',\n quantization: 'fp32',\n params: '880M'\n },\n {\n name: 'TTS_INDIC_MULTILINGUAL_PARLER_TTS_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/parler-tts/2026-07-20/parler-indic-q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2352583,\n blobBlockLength: 19644,\n blobByteOffset: 154162424898,\n modelId: 'parler-indic-q8_0.gguf',\n addon: 'tts',\n expectedSize: 1287330656,\n sha256Checksum: '3754448c805085b3d096f6c3070d9e9684d63b0c34adc5e81bb6acfe0bc16644',\n engine: 'tts-ggml',\n quantization: 'q8_0',\n params: '880M'\n },\n {\n name: 'TTS_LARGE_V1_EN_PARLER_TTS_FP16',\n registryPath: 'qvac_models_compiled/ggml/parler-tts/2026-07-20/parler-large-v1-f16.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2372227,\n blobBlockLength: 109723,\n blobByteOffset: 155449755554,\n modelId: 'parler-large-v1-f16.gguf',\n addon: 'tts',\n expectedSize: 7190761024,\n sha256Checksum: 'a47d96e28b942b2589b940c10996240aa52fb4043cb32a49aec9530052674d32',\n engine: 'tts-ggml',\n quantization: 'fp16',\n params: '2.3B'\n },\n {\n name: 'TTS_LARGE_V1_EN_PARLER_TTS_FP32',\n registryPath: 'qvac_models_compiled/ggml/parler-tts/2026-07-20/parler-large-v1-f32.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2481950,\n blobBlockLength: 141043,\n blobByteOffset: 162640516578,\n modelId: 'parler-large-v1-f32.gguf',\n addon: 'tts',\n expectedSize: 9243376192,\n sha256Checksum: 'd066480e6c329533f28485df5082eb09630d0e4d341e032225112ef0d17be8d4',\n engine: 'tts-ggml',\n quantization: 'fp32',\n params: '2.3B'\n },\n {\n name: 'TTS_LARGE_V1_EN_PARLER_TTS_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/parler-tts/2026-07-20/parler-large-v1-q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2622993,\n blobBlockLength: 42282,\n blobByteOffset: 171883892770,\n modelId: 'parler-large-v1-q8_0.gguf',\n addon: 'tts',\n expectedSize: 2770947648,\n sha256Checksum: 'ab71ac8744da28d93063446c5c834e48f6fd8ead2369f92527d038e6de470360',\n engine: 'tts-ggml',\n quantization: 'q8_0',\n params: '2.3B'\n },\n {\n name: 'TTS_MINI_V1_EN_PARLER_TTS_FP16',\n registryPath: 'qvac_models_compiled/ggml/parler-tts/2026-07-20/parler-mini-v1-f16.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2665275,\n blobBlockLength: 38322,\n blobByteOffset: 174654840418,\n modelId: 'parler-mini-v1-f16.gguf',\n addon: 'tts',\n expectedSize: 2511459808,\n sha256Checksum: '84f636e1a9a11df6236e0e742db95065d4924af049f677e1ac3ffd6d1f0c98af',\n engine: 'tts-ggml',\n quantization: 'fp16',\n params: '880M'\n },\n {\n name: 'TTS_MINI_V1_EN_PARLER_TTS_FP32',\n registryPath: 'qvac_models_compiled/ggml/parler-tts/2026-07-20/parler-mini-v1-f32.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2703597,\n blobBlockLength: 52227,\n blobByteOffset: 177166300226,\n modelId: 'parler-mini-v1-f32.gguf',\n addon: 'tts',\n expectedSize: 3422690784,\n sha256Checksum: 'd07b34918304d4b7e9ced3c59271a39d31e2693fe18a9c6c9dcaa9f7f7b87b6e',\n engine: 'tts-ggml',\n quantization: 'fp32',\n params: '880M'\n },\n {\n name: 'TTS_MINI_V1_EN_PARLER_TTS_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/parler-tts/2026-07-20/parler-mini-v1-q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4448185,\n blobBlockLength: 17740,\n blobByteOffset: 291504077898,\n modelId: 'parler-mini-v1-q8_0.gguf',\n addon: 'tts',\n expectedSize: 1162597856,\n sha256Checksum: 'b8a72142b73e540b8aa801519ce47bc235439330d6f2d41bf0e37ba059b3160f',\n engine: 'tts-ggml',\n quantization: 'q8_0',\n params: '880M'\n },\n {\n name: 'TTS_EN_SUPERTONIC_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/supertonic/2026-05-18/supertonic-q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1125646,\n blobBlockLength: 2014,\n blobByteOffset: 73765303226,\n modelId: 'supertonic-q4_0.gguf',\n addon: 'tts',\n expectedSize: 131956256,\n sha256Checksum: 'e7f330b2d19a4c5c398ed10ca8685bbc2a64d42a0c77db75f36add594982c5ba',\n engine: 'tts-ggml',\n quantization: 'q4_0',\n params: ''\n },\n {\n name: 'TTS_EN_SUPERTONIC_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/supertonic/2026-05-18/supertonic-q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1127660,\n blobBlockLength: 3843,\n blobByteOffset: 73897259482,\n modelId: 'supertonic-q8_0.gguf',\n addon: 'tts',\n expectedSize: 251818336,\n sha256Checksum: 'b9047c2b152cc3a342dd917052c318d6d0ad2858255627996e625e6d7b689b3d',\n engine: 'tts-ggml',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'TTS_MULTILINGUAL_SUPERTONIC2_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/supertonic/2026-05-18/supertonic2-q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1131503,\n blobBlockLength: 2015,\n blobByteOffset: 74149077818,\n modelId: 'supertonic2-q4_0.gguf',\n addon: 'tts',\n expectedSize: 132008192,\n sha256Checksum: 'ae65553d8841fbff7b1674faa32ff2d4235d8f6501f1e4aba87b17e01c4ab00e',\n engine: 'tts-ggml',\n quantization: 'q4_0',\n params: ''\n },\n {\n name: 'TTS_MULTILINGUAL_SUPERTONIC2_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/supertonic/2026-05-18/supertonic2-q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 1133518,\n blobBlockLength: 3843,\n blobByteOffset: 74281086010,\n modelId: 'supertonic2-q8_0.gguf',\n addon: 'tts',\n expectedSize: 251845952,\n sha256Checksum: 'f02eec8230184523d88a85e16ff715f002e802322a89e56455693993d22a4ecf',\n engine: 'tts-ggml',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'TTS_MULTILINGUAL_SUPERTONIC3_FP16',\n registryPath: 'qvac_models_compiled/ggml/supertonic/2026-06-10/supertonic3-f16.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3694076,\n blobBlockLength: 3153,\n blobByteOffset: 242083189834,\n modelId: 'supertonic3-f16.gguf',\n addon: 'tts',\n expectedSize: 206631232,\n sha256Checksum: '0947ef62dc9928489315ec47488b3d0f32b7e8fa47c556a9155f72c966cd73dc',\n engine: 'tts-ggml',\n quantization: 'fp16',\n params: ''\n },\n {\n name: 'TTS_MULTILINGUAL_SUPERTONIC3_FP32',\n registryPath: 'qvac_models_compiled/ggml/supertonic/2026-06-10/supertonic3-f32.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 3697229,\n blobBlockLength: 6081,\n blobByteOffset: 242289821066,\n modelId: 'supertonic3-f32.gguf',\n addon: 'tts',\n expectedSize: 398497088,\n sha256Checksum: '72a81bb8b87ef6d12165ce5302010b6192f0424877954ad4568ca8a7ee46e1e5',\n engine: 'tts-ggml',\n quantization: 'fp32',\n params: ''\n },\n {\n name: 'TTS_MULTILINGUAL_SUPERTONIC3_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/supertonic/2026-06-15/supertonic3-q8_0.gguf',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 2093835,\n blobBlockLength: 1934,\n blobByteOffset: 137215284814,\n modelId: 'supertonic3-q8_0.gguf',\n addon: 'tts',\n expectedSize: 126745792,\n sha256Checksum: '139ba4f76ff1c703cd072030b4e28fa009593162dc686aa2b3ce588991179899',\n engine: 'tts-ggml',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'TTS_MULTILINGUAL_SUPERTONIC3_Q4_0',\n registryPath: 'qvac_models_compiled/ggml/supertonic/2026-06-24/supertonic3-q4_0.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2198586,\n blobBlockLength: 1292,\n blobByteOffset: 144070433378,\n modelId: 'supertonic3-q4_0.gguf',\n addon: 'tts',\n expectedSize: 84658368,\n sha256Checksum: 'e3f3edc816b3fb4d8dae0067b2cc7e3dbeaac1e78e21293c803bd57011425fb7',\n engine: 'tts-ggml',\n quantization: 'q4_0',\n params: ''\n },\n {\n name: 'GROOT_Q5_VF16',\n registryPath: 'qvac_models_compiled/vla/groot-n1.7-3b-libero/2026-07-14/groot-q5_vf16.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4651104,\n blobBlockLength: 41801,\n blobByteOffset: 304802373578,\n modelId: 'groot-q5_vf16.gguf',\n addon: 'vla',\n expectedSize: 2739467616,\n sha256Checksum: '5695a64ff37ca2d3a123bba6b32f1b05f2c185e37ba85d20a2f0df570cbbf8b7',\n engine: 'ggml-vla',\n quantization: 'q5_vf16',\n params: 'groot-n1.7-3b-libero'\n },\n {\n name: 'GROOT_Q8_VF16',\n registryPath: 'qvac_models_compiled/vla/groot-n1.7-3b-libero/2026-07-14/groot-q8_vf16.gguf',\n registrySource: 's3',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 4593738,\n blobBlockLength: 57366,\n blobByteOffset: 301042854506,\n modelId: 'groot-q8_vf16.gguf',\n addon: 'vla',\n expectedSize: 3759519072,\n sha256Checksum: '27b57d1d54122649e6fee6ed0bba07559bb61e7872cfcae5e9b13ce016391f7d',\n engine: 'ggml-vla',\n quantization: 'q8_vf16',\n params: 'groot-n1.7-3b-libero'\n },\n {\n name: 'PI05_BASE_Q_AGGRESSIVE',\n registryPath: 'qvac_models_compiled/vla/pi05-base/2026-05-21/pi05-base-q-aggressive.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2138623,\n blobBlockLength: 59963,\n blobByteOffset: 140140757506,\n modelId: 'pi05-base-q-aggressive.gguf',\n addon: 'vla',\n expectedSize: 3929675872,\n sha256Checksum: '86944ba79497e61ec41b7b92e756f155e8ba68c501bfbd969e80d97671334f62',\n engine: 'ggml-vla',\n quantization: 'q_aggressive',\n params: 'pi05-base'\n },\n {\n name: 'SMOLVLA_LIBERO_VISION_Q8',\n registryPath: 'qvac_models_compiled/vla/smolvla-libero/2026-04-30/smolvla-libero-vision-q8.gguf',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2108394,\n blobBlockLength: 30229,\n blobByteOffset: 138159705570,\n modelId: 'smolvla-libero-vision-q8.gguf',\n addon: 'vla',\n expectedSize: 1981051936,\n sha256Checksum: '565766363e681cc4446a0147a379bb73164bb7b8fa4071aa717a2d2039c4f007',\n engine: 'ggml-vla',\n quantization: 'q8_0',\n params: 'smolvla-libero'\n },\n {\n name: 'WHISPER_BASE_Q8_0',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-base-q8_0.bin',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 4774,\n blobBlockLength: 1248,\n blobByteOffset: 312744408,\n modelId: 'ggml-base-q8_0.bin',\n addon: 'whisper',\n expectedSize: 81768585,\n sha256Checksum: 'c577b9a86e7e048a0b7eada054f4dd79a56bbfa911fbdacf900ac5b567cbb7d9',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_BASE_Q0F16',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-base.bin',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 2516,\n blobBlockLength: 2258,\n blobByteOffset: 164792943,\n modelId: 'ggml-base.bin',\n addon: 'whisper',\n expectedSize: 147951465,\n sha256Checksum: '60ed5bc3dd14eea856493d334349b405782ddcaf0028d4b5df4088345fba2efe',\n engine: 'whispercpp-transcription',\n quantization: 'q0f16',\n params: ''\n },\n {\n name: 'WHISPER_EN_BASE_Q8_0',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-base.en-q8_0.bin',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 8280,\n blobBlockLength: 1248,\n blobByteOffset: 542477204,\n modelId: 'ggml-base.en-q8_0.bin',\n addon: 'whisper',\n expectedSize: 81781811,\n sha256Checksum: 'a4d4a0768075e13cfd7e19df3ae2dbc4a68d37d36a7dad45e8410c9a34f8c87e',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_EN_BASE_Q0F16',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-base.en.bin',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 6022,\n blobBlockLength: 2258,\n blobByteOffset: 394512993,\n modelId: 'ggml-base.en.bin',\n addon: 'whisper',\n expectedSize: 147964211,\n sha256Checksum: 'a03779c86df3323075f5e796cb2ce5029f00ec8869eee3fdfb897afe36c6d002',\n engine: 'whispercpp-transcription',\n quantization: 'q0f16',\n params: ''\n },\n {\n name: 'WHISPER_LARGE_V3_TURBO',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-large-v3-turbo.bin',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 63832,\n blobBlockLength: 24789,\n blobByteOffset: 4183170617,\n modelId: 'ggml-large-v3-turbo.bin',\n addon: 'whisper',\n expectedSize: 1624555275,\n sha256Checksum: '1fc70f774d38eb169993ac391eea357ef47c88757ef72ee5943879b7e8e2bc69',\n engine: 'whispercpp-transcription',\n quantization: '',\n params: ''\n },\n {\n name: 'WHISPER_SMALL_Q8_0',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-small-q8_0.bin',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 16969,\n blobBlockLength: 4036,\n blobByteOffset: 1111860982,\n modelId: 'ggml-small-q8_0.bin',\n addon: 'whisper',\n expectedSize: 264464607,\n sha256Checksum: '49c8fb02b65e6049d5fa6c04f81f53b867b5ec9540406812c643f177317f779f',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_SMALL_Q0F16',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-small.bin',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 9528,\n blobBlockLength: 7441,\n blobByteOffset: 624259015,\n modelId: 'ggml-small.bin',\n addon: 'whisper',\n expectedSize: 487601967,\n sha256Checksum: '1be3a9b2063867b937e64e2ec7483364a79917e157fa98c5d94b5c1fffea987b',\n engine: 'whispercpp-transcription',\n quantization: 'q0f16',\n params: ''\n },\n {\n name: 'WHISPER_EN_SMALL_Q8_0',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-small.en-q8_0.bin',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 59796,\n blobBlockLength: 4036,\n blobByteOffset: 3918693056,\n modelId: 'ggml-small.en-q8_0.bin',\n addon: 'whisper',\n expectedSize: 264477561,\n sha256Checksum: '67a179f608ea6114bd3fdb9060e762b588a3fb3bd00c4387971be4d177958067',\n engine: 'whispercpp-transcription',\n quantization: 'q8',\n params: ''\n },\n {\n name: 'WHISPER_EN_SMALL_Q0F16',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-small.en.bin',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 21005,\n blobBlockLength: 7441,\n blobByteOffset: 1376325589,\n modelId: 'ggml-small.en.bin',\n addon: 'whisper',\n expectedSize: 487614201,\n sha256Checksum: 'c6138d6d58ecc8322097e0f987c32f1be8bb0a18532a3f88f734d1bbf9c41e5d',\n engine: 'whispercpp-transcription',\n quantization: 'q0f16',\n params: ''\n },\n {\n name: 'WHISPER_TINY_Q8_0',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny-q8_0.bin',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 0,\n blobBlockLength: 665,\n blobByteOffset: 0,\n modelId: 'ggml-tiny-q8_0.bin',\n addon: 'whisper',\n expectedSize: 43537433,\n sha256Checksum: 'c2085835d3f50733e2ff6e4b41ae8a2b8d8110461e18821b09a15c40c42d1cca',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_TINY',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin',\n registrySource: 'hf',\n blobCoreKey: '6309722b3460d91d38ad7526875ecfa29183245826b717949c55ba443093d963',\n blobBlockOffset: 88621,\n blobBlockLength: 1186,\n blobByteOffset: 5807725892,\n modelId: 'ggml-tiny.bin',\n addon: 'whisper',\n expectedSize: 77691713,\n sha256Checksum: 'be07e048e1e599ad46341c8d2a135645097a538221678b7acdd1b1919c6e1b21',\n engine: 'whispercpp-transcription',\n quantization: '',\n params: ''\n },\n {\n name: 'WHISPER_EN_TINY_Q8_0',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.en-q8_0.bin',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 1851,\n blobBlockLength: 665,\n blobByteOffset: 121242148,\n modelId: 'ggml-tiny.en-q8_0.bin',\n addon: 'whisper',\n expectedSize: 43550795,\n sha256Checksum: '5bc2b3860aa151a4c6e7bb095e1fcce7cf12c7b020ca08dcec0c6d018bb7dd94',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_EN_TINY_Q0F16',\n registryPath: 'ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.en.bin',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 665,\n blobBlockLength: 1186,\n blobByteOffset: 43537433,\n modelId: 'ggml-tiny.en.bin',\n addon: 'whisper',\n expectedSize: 77704715,\n sha256Checksum: '921e4cf8686fdd993dcd081a5da5b6c365bfde1162e72b08d75ac75289920b1f',\n engine: 'whispercpp-transcription',\n quantization: 'q0f16',\n params: ''\n },\n {\n name: 'VAD_SILERO_5_1_2',\n registryPath: 'ggml-org/whisper-vad/resolve/9ffd54a1e1ee413ddf265af9913beaf518d1639b/ggml-silero-v5.1.2.bin',\n registrySource: 'hf',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 28446,\n blobBlockLength: 14,\n blobByteOffset: 1863939790,\n modelId: 'ggml-silero-v5.1.2.bin',\n addon: 'whisper',\n expectedSize: 885098,\n sha256Checksum: '29940d98d42b91fbd05ce489f3ecf7c72f0a42f027e4875919a28fb4c04ea2cf',\n engine: 'whispercpp-transcription',\n quantization: '',\n params: ''\n },\n {\n name: 'WHISPER_FRENCH_BASE_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-french/2026-03-05/fr-base-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 63521,\n blobBlockLength: 2258,\n blobByteOffset: 4161943303,\n modelId: 'fr-base-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 147951482,\n sha256Checksum: '00da0a14c23e5636a4d37b605e9a6c102b546b85bd965c77fe1e5282c151695d',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_FRENCH_BASE_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-french/2026-03-05/fr-base-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 65779,\n blobBlockLength: 1248,\n blobByteOffset: 4309894785,\n modelId: 'fr-base-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 81768602,\n sha256Checksum: 'ac7009de16970e0fb9d181d27bb87e48f483fc4b010f6fe6b99af99a64a25232',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_FRENCH_TINY_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-french/2026-03-05/fr-tiny-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 54266,\n blobBlockLength: 1186,\n blobByteOffset: 3555797539,\n modelId: 'fr-tiny-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 77691713,\n sha256Checksum: '3736cc0b0a8c989f2c6d4eeb915acb4edf61acfd7534d49fc1544caaa46447f5',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_FRENCH_TINY_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-french/2026-03-05/fr-tiny-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 55452,\n blobBlockLength: 665,\n blobByteOffset: 3633489252,\n modelId: 'fr-tiny-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 43537433,\n sha256Checksum: '5271ac0c626bdea492655bc14855e4e5ae43a167de20622abd5f99f8b327a8e0',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_GERMAN_BASE_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-german/2026-03-05/de-base-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 67027,\n blobBlockLength: 2258,\n blobByteOffset: 4391663387,\n modelId: 'de-base-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 147951465,\n sha256Checksum: '66d585a2384cb2cd305848fff06620ff3c03a5dc71d4252d9d8857fe3dbc5734',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_GERMAN_BASE_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-german/2026-03-05/de-base-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 69285,\n blobBlockLength: 1248,\n blobByteOffset: 4539614852,\n modelId: 'de-base-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 81768585,\n sha256Checksum: '8351a34c6d33b5a52dc8fbbbb81e19195b861834541a7f31e4dfce668b0193b9',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_GERMAN_TINY_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-german/2026-03-05/de-tiny-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 56117,\n blobBlockLength: 1186,\n blobByteOffset: 3677026685,\n modelId: 'de-tiny-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 77691713,\n sha256Checksum: '3316f360e5bdcbfb61a7cb12c1f81f77c6837006014194f8e7940634b31f75d6',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_GERMAN_TINY_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-german/2026-03-05/de-tiny-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 57303,\n blobBlockLength: 665,\n blobByteOffset: 3754718398,\n modelId: 'de-tiny-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 43537433,\n sha256Checksum: '5eaa31087e1884d60795ab84dae529961006e8429b31aa24f31ae1757ea63148',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_ITALIAN_BASE_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-italian/2026-03-05/it-base-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 70533,\n blobBlockLength: 1744,\n blobByteOffset: 4621383437,\n modelId: 'it-base-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 114252906,\n sha256Checksum: '257d55af89d092bdf2e5916cff534c0b4d30ad303993d8ed990350904b5bfa5f',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_ITALIAN_BASE_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-italian/2026-03-05/it-base-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 72277,\n blobBlockLength: 974,\n blobByteOffset: 4735636343,\n modelId: 'it-base-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 63798666,\n sha256Checksum: '25c685ba42488a70a42e530446e172da1b1853c38546e4dc05eb50d397a2a2da',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_ITALIAN_TINY_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-italian/2026-03-05/it-tiny-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 57968,\n blobBlockLength: 1186,\n blobByteOffset: 3798255831,\n modelId: 'it-tiny-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 77691713,\n sha256Checksum: '203cfbb3bd247eb08a53fcaf6fb6537d608fc74f4734f49873a524ee29884f2d',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_ITALIAN_TINY_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-italian/2026-03-05/it-tiny-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 59154,\n blobBlockLength: 665,\n blobByteOffset: 3875947544,\n modelId: 'it-tiny-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 43537433,\n sha256Checksum: 'b894457533d13ef25cd4a5af5e0bc25c102783a041be933c2c1e16f0b5c79ca0',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_JAPANESE_BASE_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-japanese/2026-03-05/ja-base-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 85620,\n blobBlockLength: 2258,\n blobByteOffset: 5609824339,\n modelId: 'ja-base-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 147951465,\n sha256Checksum: '04bbfb097095f688717459eb941067c4ebd3751029c14842011ae199e63d3d13',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_JAPANESE_BASE_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-japanese/2026-03-05/ja-base-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 87878,\n blobBlockLength: 1248,\n blobByteOffset: 5757775804,\n modelId: 'ja-base-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 81768585,\n sha256Checksum: 'f87879235948ac216904bf612210441a35efe17ce50ceeea52d2ec2e9e649ab7',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_JAPANESE_TINY_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-japanese/2026-03-05/ja-tiny-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 89126,\n blobBlockLength: 1186,\n blobByteOffset: 5839544389,\n modelId: 'ja-tiny-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 77691713,\n sha256Checksum: '9bb10c3a10e502bebede75379d226b3dc0dd58ff408e537272ea88fe9517e000',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_JAPANESE_TINY_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-japanese/2026-03-05/ja-tiny-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 90312,\n blobBlockLength: 665,\n blobByteOffset: 5917236102,\n modelId: 'ja-tiny-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 43537433,\n sha256Checksum: '91695796a2170770275e1f10382aef5164e3d24244f18652190b0322f94bc853',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_NORWEGIAN_TINY',\n registryPath: 'qvac_models_compiled/ggml/whisper-norwegian/2026-03-05/nb-tiny-ggml-model.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 53080,\n blobBlockLength: 1186,\n blobByteOffset: 3478105809,\n modelId: 'nb-tiny-ggml-model.bin',\n addon: 'whisper',\n expectedSize: 77691730,\n sha256Checksum: '2f9dd799ee36b6a9c8d642e9b1df8ecf2135efdd5a91b1d9ca0b3c0decda535f',\n engine: 'whispercpp-transcription',\n quantization: '',\n params: ''\n },\n {\n name: 'WHISPER_PORTUGUESE_BASE_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-portuguese/2026-03-05/pt-base-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 73251,\n blobBlockLength: 2258,\n blobByteOffset: 4799435009,\n modelId: 'pt-base-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 147951482,\n sha256Checksum: 'cfcfbf9be6981a336ee3ab647bdd8f98b40fac4d91a5c805b8e8eedc313807b1',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_PORTUGUESE_BASE_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-portuguese/2026-03-05/pt-base-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 75509,\n blobBlockLength: 1248,\n blobByteOffset: 4947386491,\n modelId: 'pt-base-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 81768602,\n sha256Checksum: '45098a0c89d36e132d4697048b641000d87c9173d246f3db4baa4e8458c39252',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_PORTUGUESE_TINY_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-portuguese/2026-03-05/pt-tiny-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 61670,\n blobBlockLength: 1186,\n blobByteOffset: 4040714123,\n modelId: 'pt-tiny-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 77691730,\n sha256Checksum: 'fbda22897694f9da015f5d9e0a1e4a4e00b4ac696d378c9346088e4db2e77232',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_PORTUGUESE_TINY_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-portuguese/2026-03-05/pt-tiny-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 62856,\n blobBlockLength: 665,\n blobByteOffset: 4118405853,\n modelId: 'pt-tiny-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 43537450,\n sha256Checksum: 'd8da034f55bbc7adc33ab337779dce21b663b4c1b13e22bd43d430bbb9818b5e',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_RUSSIAN_BASE_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-russian/2026-03-05/ru-base-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 80263,\n blobBlockLength: 2258,\n blobByteOffset: 5258875143,\n modelId: 'ru-base-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 147951465,\n sha256Checksum: 'd9aeb0ae5edcef7d078078a7523354b6d9eca197b3ca792dffcab57d4ffe381b',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_RUSSIAN_BASE_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-russian/2026-03-05/ru-base-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 82521,\n blobBlockLength: 1248,\n blobByteOffset: 5406826608,\n modelId: 'ru-base-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 81768585,\n sha256Checksum: 'c50968d27609f67134031d1ef6604be734efc9cd1578b555f572ee7981c110b1',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_RUSSIAN_TINY_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-russian/2026-03-05/ru-tiny-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 83769,\n blobBlockLength: 1186,\n blobByteOffset: 5488595193,\n modelId: 'ru-tiny-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 77691713,\n sha256Checksum: '46698042a1ea3fcec319cf5a63486db30fe77818f00bbbc522d01a6ae06d61e8',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_RUSSIAN_TINY_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-russian/2026-03-05/ru-tiny-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 84955,\n blobBlockLength: 665,\n blobByteOffset: 5566286906,\n modelId: 'ru-tiny-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 43537433,\n sha256Checksum: 'df1d532ccc1dba3e88510c5eaba3f9d26d1d7220c078ddfa25cab5ec806575a3',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_SPANISH_TINY_F16',\n registryPath: 'qvac_models_compiled/ggml/whisper-spanish/2026-03-05/es-tiny-ggml-model-f16.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 59819,\n blobBlockLength: 1186,\n blobByteOffset: 3919484977,\n modelId: 'es-tiny-ggml-model-f16.bin',\n addon: 'whisper',\n expectedSize: 77691713,\n sha256Checksum: 'ecdacba8e0511f0c92814ef87badff88aed5ec593262f8f684924bd0e0cd199e',\n engine: 'whispercpp-transcription',\n quantization: 'f16',\n params: ''\n },\n {\n name: 'WHISPER_SPANISH_TINY_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper-spanish/2026-03-05/es-tiny-ggml-model-q8_0.bin',\n registrySource: 's3',\n blobCoreKey: 'd90c0263033385abdb2290a69936d5cef030d5c63c87baa33c3a4a2d01b84ca8',\n blobBlockOffset: 61005,\n blobBlockLength: 665,\n blobByteOffset: 3997176690,\n modelId: 'es-tiny-ggml-model-q8_0.bin',\n addon: 'whisper',\n expectedSize: 43537433,\n sha256Checksum: 'e18a4e2374b5f91505cb1a1fd08b89b44d7dc0d5f70c6fc5a2e483cb8281bc91',\n engine: 'whispercpp-transcription',\n quantization: 'q8_0',\n params: ''\n },\n {\n name: 'WHISPER_Q8_0',\n registryPath: 'qvac_models_compiled/ggml/whisper/ggml-futo/2025-10-20/tiny_acft_q8_0.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 387444,\n blobBlockLength: 665,\n blobByteOffset: 25389231307,\n modelId: 'tiny_acft_q8_0.bin',\n addon: 'whisper',\n expectedSize: 43537450,\n sha256Checksum: '07aa4d514144deacf5ffec5cacb36c93dee272fda9e64ac33a801f8cd5cbd953',\n engine: 'whispercpp-transcription',\n quantization: '',\n params: ''\n },\n {\n name: 'WHISPER_Q8_0_1',\n registryPath: 'qvac_models_compiled/ggml/whisper/ggml-futo/2025-10-20/tiny_en_acft_q8_0.bin',\n registrySource: 's3',\n blobCoreKey: '4035e66388340ff7c1f291e7c0101855f5d0b2c7085f3ff62213573a2cd5dd17',\n blobBlockOffset: 388109,\n blobBlockLength: 665,\n blobByteOffset: 25432768757,\n modelId: 'tiny_en_acft_q8_0.bin',\n addon: 'whisper',\n expectedSize: 43550795,\n sha256Checksum: '4b5480aa1b14a7efc5b578ef176510970a898049671c3cd237285b3e3f6bfbfc',\n engine: 'whispercpp-transcription',\n quantization: '',\n params: ''\n }\n];\n// Individual model constants for direct import/use with loadModel\n// These contain all metadata and can be used directly: loadModel({ modelSrc: WHISPER_TINY, ... })\nexport const BCI_WINDOWED = {\n name: 'BCI_WINDOWED',\n src: `registry://${models[1].registrySource}/${models[1].registryPath}`,\n registryPath: models[1].registryPath,\n registrySource: models[1].registrySource,\n blobCoreKey: models[1].blobCoreKey,\n blobBlockOffset: models[1].blobBlockOffset,\n blobBlockLength: models[1].blobBlockLength,\n blobByteOffset: models[1].blobByteOffset,\n modelId: models[1].modelId,\n expectedSize: models[1].expectedSize,\n sha256Checksum: models[1].sha256Checksum,\n addon: models[1].addon,\n engine: models[1].engine,\n quantization: models[1].quantization,\n params: models[1].params\n};\nexport const FLUX_2_KLEIN_4B_VAE = {\n name: 'FLUX_2_KLEIN_4B_VAE',\n src: `registry://${models[2].registrySource}/${models[2].registryPath}`,\n registryPath: models[2].registryPath,\n registrySource: models[2].registrySource,\n blobCoreKey: models[2].blobCoreKey,\n blobBlockOffset: models[2].blobBlockOffset,\n blobBlockLength: models[2].blobBlockLength,\n blobByteOffset: models[2].blobByteOffset,\n modelId: models[2].modelId,\n expectedSize: models[2].expectedSize,\n sha256Checksum: models[2].sha256Checksum,\n addon: models[2].addon,\n engine: models[2].engine,\n quantization: models[2].quantization,\n params: models[2].params\n};\nexport const WAN2_1_I2V_14B_Q4_K_M = {\n name: 'WAN2_1_I2V_14B_Q4_K_M',\n src: `registry://${models[3].registrySource}/${models[3].registryPath}`,\n registryPath: models[3].registryPath,\n registrySource: models[3].registrySource,\n blobCoreKey: models[3].blobCoreKey,\n blobBlockOffset: models[3].blobBlockOffset,\n blobBlockLength: models[3].blobBlockLength,\n blobByteOffset: models[3].blobByteOffset,\n modelId: models[3].modelId,\n expectedSize: models[3].expectedSize,\n sha256Checksum: models[3].sha256Checksum,\n addon: models[3].addon,\n engine: models[3].engine,\n quantization: models[3].quantization,\n params: models[3].params\n};\nexport const WAN2_1_I2V_14B_Q4_K_M_1 = {\n name: 'WAN2_1_I2V_14B_Q4_K_M_1',\n src: `registry://${models[4].registrySource}/${models[4].registryPath}`,\n registryPath: models[4].registryPath,\n registrySource: models[4].registrySource,\n blobCoreKey: models[4].blobCoreKey,\n blobBlockOffset: models[4].blobBlockOffset,\n blobBlockLength: models[4].blobBlockLength,\n blobByteOffset: models[4].blobByteOffset,\n modelId: models[4].modelId,\n expectedSize: models[4].expectedSize,\n sha256Checksum: models[4].sha256Checksum,\n addon: models[4].addon,\n engine: models[4].engine,\n quantization: models[4].quantization,\n params: models[4].params\n};\nexport const WAN2_1_T2V_14B_Q8_0 = {\n name: 'WAN2_1_T2V_14B_Q8_0',\n src: `registry://${models[5].registrySource}/${models[5].registryPath}`,\n registryPath: models[5].registryPath,\n registrySource: models[5].registrySource,\n blobCoreKey: models[5].blobCoreKey,\n blobBlockOffset: models[5].blobBlockOffset,\n blobBlockLength: models[5].blobBlockLength,\n blobByteOffset: models[5].blobByteOffset,\n modelId: models[5].modelId,\n expectedSize: models[5].expectedSize,\n sha256Checksum: models[5].sha256Checksum,\n addon: models[5].addon,\n engine: models[5].engine,\n quantization: models[5].quantization,\n params: models[5].params\n};\nexport const CLIP_VISION_H = {\n name: 'CLIP_VISION_H',\n src: `registry://${models[6].registrySource}/${models[6].registryPath}`,\n registryPath: models[6].registryPath,\n registrySource: models[6].registrySource,\n blobCoreKey: models[6].blobCoreKey,\n blobBlockOffset: models[6].blobBlockOffset,\n blobBlockLength: models[6].blobBlockLength,\n blobByteOffset: models[6].blobByteOffset,\n modelId: models[6].modelId,\n expectedSize: models[6].expectedSize,\n sha256Checksum: models[6].sha256Checksum,\n addon: models[6].addon,\n engine: models[6].engine,\n quantization: models[6].quantization,\n params: models[6].params\n};\nexport const WAN2_1_T2V_1_3B_FP16 = {\n name: 'WAN2_1_T2V_1_3B_FP16',\n src: `registry://${models[7].registrySource}/${models[7].registryPath}`,\n registryPath: models[7].registryPath,\n registrySource: models[7].registrySource,\n blobCoreKey: models[7].blobCoreKey,\n blobBlockOffset: models[7].blobBlockOffset,\n blobBlockLength: models[7].blobBlockLength,\n blobByteOffset: models[7].blobByteOffset,\n modelId: models[7].modelId,\n expectedSize: models[7].expectedSize,\n sha256Checksum: models[7].sha256Checksum,\n addon: models[7].addon,\n engine: models[7].engine,\n quantization: models[7].quantization,\n params: models[7].params\n};\nexport const UMT5_XXL_FP16 = {\n name: 'UMT5_XXL_FP16',\n src: `registry://${models[8].registrySource}/${models[8].registryPath}`,\n registryPath: models[8].registryPath,\n registrySource: models[8].registrySource,\n blobCoreKey: models[8].blobCoreKey,\n blobBlockOffset: models[8].blobBlockOffset,\n blobBlockLength: models[8].blobBlockLength,\n blobByteOffset: models[8].blobByteOffset,\n modelId: models[8].modelId,\n expectedSize: models[8].expectedSize,\n sha256Checksum: models[8].sha256Checksum,\n addon: models[8].addon,\n engine: models[8].engine,\n quantization: models[8].quantization,\n params: models[8].params\n};\nexport const WAN_2_1_COMFYUI_REPACKAGED_VAE = {\n name: 'WAN_2_1_COMFYUI_REPACKAGED_VAE',\n src: `registry://${models[9].registrySource}/${models[9].registryPath}`,\n registryPath: models[9].registryPath,\n registrySource: models[9].registrySource,\n blobCoreKey: models[9].blobCoreKey,\n blobBlockOffset: models[9].blobBlockOffset,\n blobBlockLength: models[9].blobBlockLength,\n blobByteOffset: models[9].blobByteOffset,\n modelId: models[9].modelId,\n expectedSize: models[9].expectedSize,\n sha256Checksum: models[9].sha256Checksum,\n addon: models[9].addon,\n engine: models[9].engine,\n quantization: models[9].quantization,\n params: models[9].params\n};\nexport const SD_V2_1_1B_Q4_0 = {\n name: 'SD_V2_1_1B_Q4_0',\n src: `registry://${models[10].registrySource}/${models[10].registryPath}`,\n registryPath: models[10].registryPath,\n registrySource: models[10].registrySource,\n blobCoreKey: models[10].blobCoreKey,\n blobBlockOffset: models[10].blobBlockOffset,\n blobBlockLength: models[10].blobBlockLength,\n blobByteOffset: models[10].blobByteOffset,\n modelId: models[10].modelId,\n expectedSize: models[10].expectedSize,\n sha256Checksum: models[10].sha256Checksum,\n addon: models[10].addon,\n engine: models[10].engine,\n quantization: models[10].quantization,\n params: models[10].params\n};\nexport const SD_V2_1_1B_Q8_0 = {\n name: 'SD_V2_1_1B_Q8_0',\n src: `registry://${models[11].registrySource}/${models[11].registryPath}`,\n registryPath: models[11].registryPath,\n registrySource: models[11].registrySource,\n blobCoreKey: models[11].blobCoreKey,\n blobBlockOffset: models[11].blobBlockOffset,\n blobBlockLength: models[11].blobBlockLength,\n blobByteOffset: models[11].blobByteOffset,\n modelId: models[11].modelId,\n expectedSize: models[11].expectedSize,\n sha256Checksum: models[11].sha256Checksum,\n addon: models[11].addon,\n engine: models[11].engine,\n quantization: models[11].quantization,\n params: models[11].params\n};\nexport const SDXL_BASE_1_0_3B_Q4_0 = {\n name: 'SDXL_BASE_1_0_3B_Q4_0',\n src: `registry://${models[12].registrySource}/${models[12].registryPath}`,\n registryPath: models[12].registryPath,\n registrySource: models[12].registrySource,\n blobCoreKey: models[12].blobCoreKey,\n blobBlockOffset: models[12].blobBlockOffset,\n blobBlockLength: models[12].blobBlockLength,\n blobByteOffset: models[12].blobByteOffset,\n modelId: models[12].modelId,\n expectedSize: models[12].expectedSize,\n sha256Checksum: models[12].sha256Checksum,\n addon: models[12].addon,\n engine: models[12].engine,\n quantization: models[12].quantization,\n params: models[12].params\n};\nexport const SDXL_BASE_1_0_3B_Q8_0 = {\n name: 'SDXL_BASE_1_0_3B_Q8_0',\n src: `registry://${models[13].registrySource}/${models[13].registryPath}`,\n registryPath: models[13].registryPath,\n registrySource: models[13].registrySource,\n blobCoreKey: models[13].blobCoreKey,\n blobBlockOffset: models[13].blobBlockOffset,\n blobBlockLength: models[13].blobBlockLength,\n blobByteOffset: models[13].blobByteOffset,\n modelId: models[13].modelId,\n expectedSize: models[13].expectedSize,\n sha256Checksum: models[13].sha256Checksum,\n addon: models[13].addon,\n engine: models[13].engine,\n quantization: models[13].quantization,\n params: models[13].params\n};\nexport const REALESRGAN_X4PLUS_ANIME_6B = {\n name: 'REALESRGAN_X4PLUS_ANIME_6B',\n src: `registry://${models[14].registrySource}/${models[14].registryPath}`,\n registryPath: models[14].registryPath,\n registrySource: models[14].registrySource,\n blobCoreKey: models[14].blobCoreKey,\n blobBlockOffset: models[14].blobBlockOffset,\n blobBlockLength: models[14].blobBlockLength,\n blobByteOffset: models[14].blobByteOffset,\n modelId: models[14].modelId,\n expectedSize: models[14].expectedSize,\n sha256Checksum: models[14].sha256Checksum,\n addon: models[14].addon,\n engine: models[14].engine,\n quantization: models[14].quantization,\n params: models[14].params\n};\nexport const REALESRGAN_X4PLUS = {\n name: 'REALESRGAN_X4PLUS',\n src: `registry://${models[15].registrySource}/${models[15].registryPath}`,\n registryPath: models[15].registryPath,\n registrySource: models[15].registrySource,\n blobCoreKey: models[15].blobCoreKey,\n blobBlockOffset: models[15].blobBlockOffset,\n blobBlockLength: models[15].blobBlockLength,\n blobByteOffset: models[15].blobByteOffset,\n modelId: models[15].modelId,\n expectedSize: models[15].expectedSize,\n sha256Checksum: models[15].sha256Checksum,\n addon: models[15].addon,\n engine: models[15].engine,\n quantization: models[15].quantization,\n params: models[15].params\n};\nexport const REALESRNET_X4PLUS = {\n name: 'REALESRNET_X4PLUS',\n src: `registry://${models[16].registrySource}/${models[16].registryPath}`,\n registryPath: models[16].registryPath,\n registrySource: models[16].registrySource,\n blobCoreKey: models[16].blobCoreKey,\n blobBlockOffset: models[16].blobBlockOffset,\n blobBlockLength: models[16].blobBlockLength,\n blobByteOffset: models[16].blobByteOffset,\n modelId: models[16].modelId,\n expectedSize: models[16].expectedSize,\n sha256Checksum: models[16].sha256Checksum,\n addon: models[16].addon,\n engine: models[16].engine,\n quantization: models[16].quantization,\n params: models[16].params\n};\nexport const FLUX_2_KLEIN_4B_Q4_0 = {\n name: 'FLUX_2_KLEIN_4B_Q4_0',\n src: `registry://${models[17].registrySource}/${models[17].registryPath}`,\n registryPath: models[17].registryPath,\n registrySource: models[17].registrySource,\n blobCoreKey: models[17].blobCoreKey,\n blobBlockOffset: models[17].blobBlockOffset,\n blobBlockLength: models[17].blobBlockLength,\n blobByteOffset: models[17].blobByteOffset,\n modelId: models[17].modelId,\n expectedSize: models[17].expectedSize,\n sha256Checksum: models[17].sha256Checksum,\n addon: models[17].addon,\n engine: models[17].engine,\n quantization: models[17].quantization,\n params: models[17].params\n};\nexport const FLUX_2_KLEIN_4B_Q4_K_M = {\n name: 'FLUX_2_KLEIN_4B_Q4_K_M',\n src: `registry://${models[18].registrySource}/${models[18].registryPath}`,\n registryPath: models[18].registryPath,\n registrySource: models[18].registrySource,\n blobCoreKey: models[18].blobCoreKey,\n blobBlockOffset: models[18].blobBlockOffset,\n blobBlockLength: models[18].blobBlockLength,\n blobByteOffset: models[18].blobByteOffset,\n modelId: models[18].modelId,\n expectedSize: models[18].expectedSize,\n sha256Checksum: models[18].sha256Checksum,\n addon: models[18].addon,\n engine: models[18].engine,\n quantization: models[18].quantization,\n params: models[18].params\n};\nexport const FLUX_2_KLEIN_4B_Q6_K = {\n name: 'FLUX_2_KLEIN_4B_Q6_K',\n src: `registry://${models[19].registrySource}/${models[19].registryPath}`,\n registryPath: models[19].registryPath,\n registrySource: models[19].registrySource,\n blobCoreKey: models[19].blobCoreKey,\n blobBlockOffset: models[19].blobBlockOffset,\n blobBlockLength: models[19].blobBlockLength,\n blobByteOffset: models[19].blobByteOffset,\n modelId: models[19].modelId,\n expectedSize: models[19].expectedSize,\n sha256Checksum: models[19].sha256Checksum,\n addon: models[19].addon,\n engine: models[19].engine,\n quantization: models[19].quantization,\n params: models[19].params\n};\nexport const FLUX_2_KLEIN_4B_Q8_0 = {\n name: 'FLUX_2_KLEIN_4B_Q8_0',\n src: `registry://${models[20].registrySource}/${models[20].registryPath}`,\n registryPath: models[20].registryPath,\n registrySource: models[20].registrySource,\n blobCoreKey: models[20].blobCoreKey,\n blobBlockOffset: models[20].blobBlockOffset,\n blobBlockLength: models[20].blobBlockLength,\n blobByteOffset: models[20].blobByteOffset,\n modelId: models[20].modelId,\n expectedSize: models[20].expectedSize,\n sha256Checksum: models[20].sha256Checksum,\n addon: models[20].addon,\n engine: models[20].engine,\n quantization: models[20].quantization,\n params: models[20].params\n};\nexport const GTE_LARGE_FP16 = {\n name: 'GTE_LARGE_FP16',\n src: `registry://${models[21].registrySource}/${models[21].registryPath}`,\n registryPath: models[21].registryPath,\n registrySource: models[21].registrySource,\n blobCoreKey: models[21].blobCoreKey,\n blobBlockOffset: models[21].blobBlockOffset,\n blobBlockLength: models[21].blobBlockLength,\n blobByteOffset: models[21].blobByteOffset,\n modelId: models[21].modelId,\n expectedSize: models[21].expectedSize,\n sha256Checksum: models[21].sha256Checksum,\n addon: models[21].addon,\n engine: models[21].engine,\n quantization: models[21].quantization,\n params: models[21].params\n};\nexport const GTE_LARGE_335M_FP16_SHARD = {\n name: 'GTE_LARGE_335M_FP16_SHARD',\n src: `registry://${models[22].registrySource}/${models[22].registryPath}`,\n registryPath: models[22].registryPath,\n registrySource: models[22].registrySource,\n blobCoreKey: models[22].blobCoreKey,\n blobBlockOffset: models[22].blobBlockOffset,\n blobBlockLength: models[22].blobBlockLength,\n blobByteOffset: models[22].blobByteOffset,\n modelId: models[22].modelId,\n expectedSize: models[22].expectedSize,\n sha256Checksum: models[22].sha256Checksum,\n addon: models[22].addon,\n engine: models[22].engine,\n quantization: models[22].quantization,\n params: models[22].params\n};\nexport const GTE_LARGE_335M_FP16_TENSORS = {\n name: 'GTE_LARGE_335M_FP16_TENSORS',\n src: `registry://${models[23].registrySource}/${models[23].registryPath}`,\n registryPath: models[23].registryPath,\n registrySource: models[23].registrySource,\n blobCoreKey: models[23].blobCoreKey,\n blobBlockOffset: models[23].blobBlockOffset,\n blobBlockLength: models[23].blobBlockLength,\n blobByteOffset: models[23].blobByteOffset,\n modelId: models[23].modelId,\n expectedSize: models[23].expectedSize,\n sha256Checksum: models[23].sha256Checksum,\n addon: models[23].addon,\n engine: models[23].engine,\n quantization: models[23].quantization,\n params: models[23].params\n};\nexport const EMBEDDINGGEMMA_300M_BF16 = {\n name: 'EMBEDDINGGEMMA_300M_BF16',\n src: `registry://${models[24].registrySource}/${models[24].registryPath}`,\n registryPath: models[24].registryPath,\n registrySource: models[24].registrySource,\n blobCoreKey: models[24].blobCoreKey,\n blobBlockOffset: models[24].blobBlockOffset,\n blobBlockLength: models[24].blobBlockLength,\n blobByteOffset: models[24].blobByteOffset,\n modelId: models[24].modelId,\n expectedSize: models[24].expectedSize,\n sha256Checksum: models[24].sha256Checksum,\n addon: models[24].addon,\n engine: models[24].engine,\n quantization: models[24].quantization,\n params: models[24].params\n};\nexport const EMBEDDINGGEMMA_300M_F32 = {\n name: 'EMBEDDINGGEMMA_300M_F32',\n src: `registry://${models[25].registrySource}/${models[25].registryPath}`,\n registryPath: models[25].registryPath,\n registrySource: models[25].registrySource,\n blobCoreKey: models[25].blobCoreKey,\n blobBlockOffset: models[25].blobBlockOffset,\n blobBlockLength: models[25].blobBlockLength,\n blobByteOffset: models[25].blobByteOffset,\n modelId: models[25].modelId,\n expectedSize: models[25].expectedSize,\n sha256Checksum: models[25].sha256Checksum,\n addon: models[25].addon,\n engine: models[25].engine,\n quantization: models[25].quantization,\n params: models[25].params\n};\nexport const EMBEDDINGGEMMA_300M_Q4_0 = {\n name: 'EMBEDDINGGEMMA_300M_Q4_0',\n src: `registry://${models[26].registrySource}/${models[26].registryPath}`,\n registryPath: models[26].registryPath,\n registrySource: models[26].registrySource,\n blobCoreKey: models[26].blobCoreKey,\n blobBlockOffset: models[26].blobBlockOffset,\n blobBlockLength: models[26].blobBlockLength,\n blobByteOffset: models[26].blobByteOffset,\n modelId: models[26].modelId,\n expectedSize: models[26].expectedSize,\n sha256Checksum: models[26].sha256Checksum,\n addon: models[26].addon,\n engine: models[26].engine,\n quantization: models[26].quantization,\n params: models[26].params\n};\nexport const EMBEDDINGGEMMA_300M_Q8_0 = {\n name: 'EMBEDDINGGEMMA_300M_Q8_0',\n src: `registry://${models[27].registrySource}/${models[27].registryPath}`,\n registryPath: models[27].registryPath,\n registrySource: models[27].registrySource,\n blobCoreKey: models[27].blobCoreKey,\n blobBlockOffset: models[27].blobBlockOffset,\n blobBlockLength: models[27].blobBlockLength,\n blobByteOffset: models[27].blobByteOffset,\n modelId: models[27].modelId,\n expectedSize: models[27].expectedSize,\n sha256Checksum: models[27].sha256Checksum,\n addon: models[27].addon,\n engine: models[27].engine,\n quantization: models[27].quantization,\n params: models[27].params\n};\nexport const GEMMA4_31B_MULTIMODAL_Q4_K_M = {\n name: 'GEMMA4_31B_MULTIMODAL_Q4_K_M',\n src: `registry://${models[28].registrySource}/${models[28].registryPath}`,\n registryPath: models[28].registryPath,\n registrySource: models[28].registrySource,\n blobCoreKey: models[28].blobCoreKey,\n blobBlockOffset: models[28].blobBlockOffset,\n blobBlockLength: models[28].blobBlockLength,\n blobByteOffset: models[28].blobByteOffset,\n modelId: models[28].modelId,\n expectedSize: models[28].expectedSize,\n sha256Checksum: models[28].sha256Checksum,\n addon: models[28].addon,\n engine: models[28].engine,\n quantization: models[28].quantization,\n params: models[28].params\n};\nexport const GEMMA4_31B_MULTIMODAL_Q6_K = {\n name: 'GEMMA4_31B_MULTIMODAL_Q6_K',\n src: `registry://${models[29].registrySource}/${models[29].registryPath}`,\n registryPath: models[29].registryPath,\n registrySource: models[29].registrySource,\n blobCoreKey: models[29].blobCoreKey,\n blobBlockOffset: models[29].blobBlockOffset,\n blobBlockLength: models[29].blobBlockLength,\n blobByteOffset: models[29].blobByteOffset,\n modelId: models[29].modelId,\n expectedSize: models[29].expectedSize,\n sha256Checksum: models[29].sha256Checksum,\n addon: models[29].addon,\n engine: models[29].engine,\n quantization: models[29].quantization,\n params: models[29].params\n};\nexport const MMPROJ_GEMMA4_31B_MULTIMODAL_BF16 = {\n name: 'MMPROJ_GEMMA4_31B_MULTIMODAL_BF16',\n src: `registry://${models[30].registrySource}/${models[30].registryPath}`,\n registryPath: models[30].registryPath,\n registrySource: models[30].registrySource,\n blobCoreKey: models[30].blobCoreKey,\n blobBlockOffset: models[30].blobBlockOffset,\n blobBlockLength: models[30].blobBlockLength,\n blobByteOffset: models[30].blobByteOffset,\n modelId: models[30].modelId,\n expectedSize: models[30].expectedSize,\n sha256Checksum: models[30].sha256Checksum,\n addon: models[30].addon,\n engine: models[30].engine,\n quantization: models[30].quantization,\n params: models[30].params\n};\nexport const MMPROJ_GEMMA4_31B_MULTIMODAL_F16 = {\n name: 'MMPROJ_GEMMA4_31B_MULTIMODAL_F16',\n src: `registry://${models[31].registrySource}/${models[31].registryPath}`,\n registryPath: models[31].registryPath,\n registrySource: models[31].registrySource,\n blobCoreKey: models[31].blobCoreKey,\n blobBlockOffset: models[31].blobBlockOffset,\n blobBlockLength: models[31].blobBlockLength,\n blobByteOffset: models[31].blobByteOffset,\n modelId: models[31].modelId,\n expectedSize: models[31].expectedSize,\n sha256Checksum: models[31].sha256Checksum,\n addon: models[31].addon,\n engine: models[31].engine,\n quantization: models[31].quantization,\n params: models[31].params\n};\nexport const GEMMA4_2B_MULTIMODAL_Q4_K_M = {\n name: 'GEMMA4_2B_MULTIMODAL_Q4_K_M',\n src: `registry://${models[32].registrySource}/${models[32].registryPath}`,\n registryPath: models[32].registryPath,\n registrySource: models[32].registrySource,\n blobCoreKey: models[32].blobCoreKey,\n blobBlockOffset: models[32].blobBlockOffset,\n blobBlockLength: models[32].blobBlockLength,\n blobByteOffset: models[32].blobByteOffset,\n modelId: models[32].modelId,\n expectedSize: models[32].expectedSize,\n sha256Checksum: models[32].sha256Checksum,\n addon: models[32].addon,\n engine: models[32].engine,\n quantization: models[32].quantization,\n params: models[32].params\n};\nexport const GEMMA4_2B_MULTIMODAL_Q6_K = {\n name: 'GEMMA4_2B_MULTIMODAL_Q6_K',\n src: `registry://${models[33].registrySource}/${models[33].registryPath}`,\n registryPath: models[33].registryPath,\n registrySource: models[33].registrySource,\n blobCoreKey: models[33].blobCoreKey,\n blobBlockOffset: models[33].blobBlockOffset,\n blobBlockLength: models[33].blobBlockLength,\n blobByteOffset: models[33].blobByteOffset,\n modelId: models[33].modelId,\n expectedSize: models[33].expectedSize,\n sha256Checksum: models[33].sha256Checksum,\n addon: models[33].addon,\n engine: models[33].engine,\n quantization: models[33].quantization,\n params: models[33].params\n};\nexport const GEMMA4_2B_MULTIMODAL_Q8_0 = {\n name: 'GEMMA4_2B_MULTIMODAL_Q8_0',\n src: `registry://${models[34].registrySource}/${models[34].registryPath}`,\n registryPath: models[34].registryPath,\n registrySource: models[34].registrySource,\n blobCoreKey: models[34].blobCoreKey,\n blobBlockOffset: models[34].blobBlockOffset,\n blobBlockLength: models[34].blobBlockLength,\n blobByteOffset: models[34].blobByteOffset,\n modelId: models[34].modelId,\n expectedSize: models[34].expectedSize,\n sha256Checksum: models[34].sha256Checksum,\n addon: models[34].addon,\n engine: models[34].engine,\n quantization: models[34].quantization,\n params: models[34].params\n};\nexport const MMPROJ_GEMMA4_2B_MULTIMODAL_BF16 = {\n name: 'MMPROJ_GEMMA4_2B_MULTIMODAL_BF16',\n src: `registry://${models[35].registrySource}/${models[35].registryPath}`,\n registryPath: models[35].registryPath,\n registrySource: models[35].registrySource,\n blobCoreKey: models[35].blobCoreKey,\n blobBlockOffset: models[35].blobBlockOffset,\n blobBlockLength: models[35].blobBlockLength,\n blobByteOffset: models[35].blobByteOffset,\n modelId: models[35].modelId,\n expectedSize: models[35].expectedSize,\n sha256Checksum: models[35].sha256Checksum,\n addon: models[35].addon,\n engine: models[35].engine,\n quantization: models[35].quantization,\n params: models[35].params\n};\nexport const MMPROJ_GEMMA4_2B_MULTIMODAL_F16 = {\n name: 'MMPROJ_GEMMA4_2B_MULTIMODAL_F16',\n src: `registry://${models[36].registrySource}/${models[36].registryPath}`,\n registryPath: models[36].registryPath,\n registrySource: models[36].registrySource,\n blobCoreKey: models[36].blobCoreKey,\n blobBlockOffset: models[36].blobBlockOffset,\n blobBlockLength: models[36].blobBlockLength,\n blobByteOffset: models[36].blobByteOffset,\n modelId: models[36].modelId,\n expectedSize: models[36].expectedSize,\n sha256Checksum: models[36].sha256Checksum,\n addon: models[36].addon,\n engine: models[36].engine,\n quantization: models[36].quantization,\n params: models[36].params\n};\nexport const GEMMA4_4B_MULTIMODAL_Q4_K_M = {\n name: 'GEMMA4_4B_MULTIMODAL_Q4_K_M',\n src: `registry://${models[37].registrySource}/${models[37].registryPath}`,\n registryPath: models[37].registryPath,\n registrySource: models[37].registrySource,\n blobCoreKey: models[37].blobCoreKey,\n blobBlockOffset: models[37].blobBlockOffset,\n blobBlockLength: models[37].blobBlockLength,\n blobByteOffset: models[37].blobByteOffset,\n modelId: models[37].modelId,\n expectedSize: models[37].expectedSize,\n sha256Checksum: models[37].sha256Checksum,\n addon: models[37].addon,\n engine: models[37].engine,\n quantization: models[37].quantization,\n params: models[37].params\n};\nexport const GEMMA4_4B_MULTIMODAL_Q6_K = {\n name: 'GEMMA4_4B_MULTIMODAL_Q6_K',\n src: `registry://${models[38].registrySource}/${models[38].registryPath}`,\n registryPath: models[38].registryPath,\n registrySource: models[38].registrySource,\n blobCoreKey: models[38].blobCoreKey,\n blobBlockOffset: models[38].blobBlockOffset,\n blobBlockLength: models[38].blobBlockLength,\n blobByteOffset: models[38].blobByteOffset,\n modelId: models[38].modelId,\n expectedSize: models[38].expectedSize,\n sha256Checksum: models[38].sha256Checksum,\n addon: models[38].addon,\n engine: models[38].engine,\n quantization: models[38].quantization,\n params: models[38].params\n};\nexport const MMPROJ_GEMMA4_4B_MULTIMODAL_BF16 = {\n name: 'MMPROJ_GEMMA4_4B_MULTIMODAL_BF16',\n src: `registry://${models[39].registrySource}/${models[39].registryPath}`,\n registryPath: models[39].registryPath,\n registrySource: models[39].registrySource,\n blobCoreKey: models[39].blobCoreKey,\n blobBlockOffset: models[39].blobBlockOffset,\n blobBlockLength: models[39].blobBlockLength,\n blobByteOffset: models[39].blobByteOffset,\n modelId: models[39].modelId,\n expectedSize: models[39].expectedSize,\n sha256Checksum: models[39].sha256Checksum,\n addon: models[39].addon,\n engine: models[39].engine,\n quantization: models[39].quantization,\n params: models[39].params\n};\nexport const MMPROJ_GEMMA4_4B_MULTIMODAL_F16 = {\n name: 'MMPROJ_GEMMA4_4B_MULTIMODAL_F16',\n src: `registry://${models[40].registrySource}/${models[40].registryPath}`,\n registryPath: models[40].registryPath,\n registrySource: models[40].registrySource,\n blobCoreKey: models[40].blobCoreKey,\n blobBlockOffset: models[40].blobBlockOffset,\n blobBlockLength: models[40].blobBlockLength,\n blobByteOffset: models[40].blobByteOffset,\n modelId: models[40].modelId,\n expectedSize: models[40].expectedSize,\n sha256Checksum: models[40].sha256Checksum,\n addon: models[40].addon,\n engine: models[40].engine,\n quantization: models[40].quantization,\n params: models[40].params\n};\nexport const SALAMANDRATA_2B_INST_Q4 = {\n name: 'SALAMANDRATA_2B_INST_Q4',\n src: `registry://${models[41].registrySource}/${models[41].registryPath}`,\n registryPath: models[41].registryPath,\n registrySource: models[41].registrySource,\n blobCoreKey: models[41].blobCoreKey,\n blobBlockOffset: models[41].blobBlockOffset,\n blobBlockLength: models[41].blobBlockLength,\n blobByteOffset: models[41].blobByteOffset,\n modelId: models[41].modelId,\n expectedSize: models[41].expectedSize,\n sha256Checksum: models[41].sha256Checksum,\n addon: models[41].addon,\n engine: models[41].engine,\n quantization: models[41].quantization,\n params: models[41].params\n};\nexport const SALAMANDRATA_2B_INST_Q8 = {\n name: 'SALAMANDRATA_2B_INST_Q8',\n src: `registry://${models[42].registrySource}/${models[42].registryPath}`,\n registryPath: models[42].registryPath,\n registrySource: models[42].registrySource,\n blobCoreKey: models[42].blobCoreKey,\n blobBlockOffset: models[42].blobBlockOffset,\n blobBlockLength: models[42].blobBlockLength,\n blobByteOffset: models[42].blobByteOffset,\n modelId: models[42].modelId,\n expectedSize: models[42].expectedSize,\n sha256Checksum: models[42].sha256Checksum,\n addon: models[42].addon,\n engine: models[42].engine,\n quantization: models[42].quantization,\n params: models[42].params\n};\nexport const MMPROJ_GEMMA4_2B_MULTIMODAL_Q8_0 = {\n name: 'MMPROJ_GEMMA4_2B_MULTIMODAL_Q8_0',\n src: `registry://${models[43].registrySource}/${models[43].registryPath}`,\n registryPath: models[43].registryPath,\n registrySource: models[43].registrySource,\n blobCoreKey: models[43].blobCoreKey,\n blobBlockOffset: models[43].blobBlockOffset,\n blobBlockLength: models[43].blobBlockLength,\n blobByteOffset: models[43].blobByteOffset,\n modelId: models[43].modelId,\n expectedSize: models[43].expectedSize,\n sha256Checksum: models[43].sha256Checksum,\n addon: models[43].addon,\n engine: models[43].engine,\n quantization: models[43].quantization,\n params: models[43].params\n};\nexport const MMPROJ_SMOLVLM2_500M_MULTIMODAL_F16 = {\n name: 'MMPROJ_SMOLVLM2_500M_MULTIMODAL_F16',\n src: `registry://${models[44].registrySource}/${models[44].registryPath}`,\n registryPath: models[44].registryPath,\n registrySource: models[44].registrySource,\n blobCoreKey: models[44].blobCoreKey,\n blobBlockOffset: models[44].blobBlockOffset,\n blobBlockLength: models[44].blobBlockLength,\n blobByteOffset: models[44].blobByteOffset,\n modelId: models[44].modelId,\n expectedSize: models[44].expectedSize,\n sha256Checksum: models[44].sha256Checksum,\n addon: models[44].addon,\n engine: models[44].engine,\n quantization: models[44].quantization,\n params: models[44].params\n};\nexport const MMPROJ_SMOLVLM2_500M_MULTIMODAL_Q8_0 = {\n name: 'MMPROJ_SMOLVLM2_500M_MULTIMODAL_Q8_0',\n src: `registry://${models[45].registrySource}/${models[45].registryPath}`,\n registryPath: models[45].registryPath,\n registrySource: models[45].registrySource,\n blobCoreKey: models[45].blobCoreKey,\n blobBlockOffset: models[45].blobBlockOffset,\n blobBlockLength: models[45].blobBlockLength,\n blobByteOffset: models[45].blobByteOffset,\n modelId: models[45].modelId,\n expectedSize: models[45].expectedSize,\n sha256Checksum: models[45].sha256Checksum,\n addon: models[45].addon,\n engine: models[45].engine,\n quantization: models[45].quantization,\n params: models[45].params\n};\nexport const SMOLVLM2_500M_MULTIMODAL_F16 = {\n name: 'SMOLVLM2_500M_MULTIMODAL_F16',\n src: `registry://${models[46].registrySource}/${models[46].registryPath}`,\n registryPath: models[46].registryPath,\n registrySource: models[46].registrySource,\n blobCoreKey: models[46].blobCoreKey,\n blobBlockOffset: models[46].blobBlockOffset,\n blobBlockLength: models[46].blobBlockLength,\n blobByteOffset: models[46].blobByteOffset,\n modelId: models[46].modelId,\n expectedSize: models[46].expectedSize,\n sha256Checksum: models[46].sha256Checksum,\n addon: models[46].addon,\n engine: models[46].engine,\n quantization: models[46].quantization,\n params: models[46].params\n};\nexport const SMOLVLM2_500M_MULTIMODAL_Q8_0 = {\n name: 'SMOLVLM2_500M_MULTIMODAL_Q8_0',\n src: `registry://${models[47].registrySource}/${models[47].registryPath}`,\n registryPath: models[47].registryPath,\n registrySource: models[47].registrySource,\n blobCoreKey: models[47].blobCoreKey,\n blobBlockOffset: models[47].blobBlockOffset,\n blobBlockLength: models[47].blobBlockLength,\n blobByteOffset: models[47].blobByteOffset,\n modelId: models[47].modelId,\n expectedSize: models[47].expectedSize,\n sha256Checksum: models[47].sha256Checksum,\n addon: models[47].addon,\n engine: models[47].engine,\n quantization: models[47].quantization,\n params: models[47].params\n};\nexport const SMOLLM2_360M_INST_Q8 = {\n name: 'SMOLLM2_360M_INST_Q8',\n src: `registry://${models[48].registrySource}/${models[48].registryPath}`,\n registryPath: models[48].registryPath,\n registrySource: models[48].registrySource,\n blobCoreKey: models[48].blobCoreKey,\n blobBlockOffset: models[48].blobBlockOffset,\n blobBlockLength: models[48].blobBlockLength,\n blobByteOffset: models[48].blobByteOffset,\n modelId: models[48].modelId,\n expectedSize: models[48].expectedSize,\n sha256Checksum: models[48].sha256Checksum,\n addon: models[48].addon,\n engine: models[48].engine,\n quantization: models[48].quantization,\n params: models[48].params\n};\nexport const LASER_DOLPHIN_2X7B_INST_Q2_K = {\n name: 'LASER_DOLPHIN_2X7B_INST_Q2_K',\n src: `registry://${models[49].registrySource}/${models[49].registryPath}`,\n registryPath: models[49].registryPath,\n registrySource: models[49].registrySource,\n blobCoreKey: models[49].blobCoreKey,\n blobBlockOffset: models[49].blobBlockOffset,\n blobBlockLength: models[49].blobBlockLength,\n blobByteOffset: models[49].blobByteOffset,\n modelId: models[49].modelId,\n expectedSize: models[49].expectedSize,\n sha256Checksum: models[49].sha256Checksum,\n addon: models[49].addon,\n engine: models[49].engine,\n quantization: models[49].quantization,\n params: models[49].params\n};\nexport const LLAMA_TOOL_CALLING_1B_INST_Q4_K = {\n name: 'LLAMA_TOOL_CALLING_1B_INST_Q4_K',\n src: `registry://${models[50].registrySource}/${models[50].registryPath}`,\n registryPath: models[50].registryPath,\n registrySource: models[50].registrySource,\n blobCoreKey: models[50].blobCoreKey,\n blobBlockOffset: models[50].blobBlockOffset,\n blobBlockLength: models[50].blobBlockLength,\n blobByteOffset: models[50].blobByteOffset,\n modelId: models[50].modelId,\n expectedSize: models[50].expectedSize,\n sha256Checksum: models[50].sha256Checksum,\n addon: models[50].addon,\n engine: models[50].engine,\n quantization: models[50].quantization,\n params: models[50].params\n};\nexport const AFRICAN_4B_TRANSLATION_Q4_K_M = {\n name: 'AFRICAN_4B_TRANSLATION_Q4_K_M',\n src: `registry://${models[51].registrySource}/${models[51].registryPath}`,\n registryPath: models[51].registryPath,\n registrySource: models[51].registrySource,\n blobCoreKey: models[51].blobCoreKey,\n blobBlockOffset: models[51].blobBlockOffset,\n blobBlockLength: models[51].blobBlockLength,\n blobByteOffset: models[51].blobByteOffset,\n modelId: models[51].modelId,\n expectedSize: models[51].expectedSize,\n sha256Checksum: models[51].sha256Checksum,\n addon: models[51].addon,\n engine: models[51].engine,\n quantization: models[51].quantization,\n params: models[51].params\n};\nexport const MMPROJ_QWEN3_5_0_8B_MULTIMODAL_Q8_0 = {\n name: 'MMPROJ_QWEN3_5_0_8B_MULTIMODAL_Q8_0',\n src: `registry://${models[52].registrySource}/${models[52].registryPath}`,\n registryPath: models[52].registryPath,\n registrySource: models[52].registrySource,\n blobCoreKey: models[52].blobCoreKey,\n blobBlockOffset: models[52].blobBlockOffset,\n blobBlockLength: models[52].blobBlockLength,\n blobByteOffset: models[52].blobByteOffset,\n modelId: models[52].modelId,\n expectedSize: models[52].expectedSize,\n sha256Checksum: models[52].sha256Checksum,\n addon: models[52].addon,\n engine: models[52].engine,\n quantization: models[52].quantization,\n params: models[52].params\n};\nexport const MMPROJ_QWEN3_5_2B_MULTIMODAL_Q8_0 = {\n name: 'MMPROJ_QWEN3_5_2B_MULTIMODAL_Q8_0',\n src: `registry://${models[53].registrySource}/${models[53].registryPath}`,\n registryPath: models[53].registryPath,\n registrySource: models[53].registrySource,\n blobCoreKey: models[53].blobCoreKey,\n blobBlockOffset: models[53].blobBlockOffset,\n blobBlockLength: models[53].blobBlockLength,\n blobByteOffset: models[53].blobByteOffset,\n modelId: models[53].modelId,\n expectedSize: models[53].expectedSize,\n sha256Checksum: models[53].sha256Checksum,\n addon: models[53].addon,\n engine: models[53].engine,\n quantization: models[53].quantization,\n params: models[53].params\n};\nexport const MMPROJ_QWEN3_5_4B_MULTIMODAL_Q8_0 = {\n name: 'MMPROJ_QWEN3_5_4B_MULTIMODAL_Q8_0',\n src: `registry://${models[54].registrySource}/${models[54].registryPath}`,\n registryPath: models[54].registryPath,\n registrySource: models[54].registrySource,\n blobCoreKey: models[54].blobCoreKey,\n blobBlockOffset: models[54].blobBlockOffset,\n blobBlockLength: models[54].blobBlockLength,\n blobByteOffset: models[54].blobByteOffset,\n modelId: models[54].modelId,\n expectedSize: models[54].expectedSize,\n sha256Checksum: models[54].sha256Checksum,\n addon: models[54].addon,\n engine: models[54].engine,\n quantization: models[54].quantization,\n params: models[54].params\n};\nexport const OCR_0_6B_MULTIMODAL_Q4_K_M = {\n name: 'OCR_0_6B_MULTIMODAL_Q4_K_M',\n src: `registry://${models[55].registrySource}/${models[55].registryPath}`,\n registryPath: models[55].registryPath,\n registrySource: models[55].registrySource,\n blobCoreKey: models[55].blobCoreKey,\n blobBlockOffset: models[55].blobBlockOffset,\n blobBlockLength: models[55].blobBlockLength,\n blobByteOffset: models[55].blobByteOffset,\n modelId: models[55].modelId,\n expectedSize: models[55].expectedSize,\n sha256Checksum: models[55].sha256Checksum,\n addon: models[55].addon,\n engine: models[55].engine,\n quantization: models[55].quantization,\n params: models[55].params\n};\nexport const MMPROJ_OCR_0_6B_MULTIMODAL_F16 = {\n name: 'MMPROJ_OCR_0_6B_MULTIMODAL_F16',\n src: `registry://${models[56].registrySource}/${models[56].registryPath}`,\n registryPath: models[56].registryPath,\n registrySource: models[56].registrySource,\n blobCoreKey: models[56].blobCoreKey,\n blobBlockOffset: models[56].blobBlockOffset,\n blobBlockLength: models[56].blobBlockLength,\n blobByteOffset: models[56].blobByteOffset,\n modelId: models[56].modelId,\n expectedSize: models[56].expectedSize,\n sha256Checksum: models[56].sha256Checksum,\n addon: models[56].addon,\n engine: models[56].engine,\n quantization: models[56].quantization,\n params: models[56].params\n};\nexport const BITNET_B1_58_3B_INST_TQ2_0 = {\n name: 'BITNET_B1_58_3B_INST_TQ2_0',\n src: `registry://${models[57].registrySource}/${models[57].registryPath}`,\n registryPath: models[57].registryPath,\n registrySource: models[57].registrySource,\n blobCoreKey: models[57].blobCoreKey,\n blobBlockOffset: models[57].blobBlockOffset,\n blobBlockLength: models[57].blobBlockLength,\n blobByteOffset: models[57].blobByteOffset,\n modelId: models[57].modelId,\n expectedSize: models[57].expectedSize,\n sha256Checksum: models[57].sha256Checksum,\n addon: models[57].addon,\n engine: models[57].engine,\n quantization: models[57].quantization,\n params: models[57].params\n};\nexport const BITNET_0_7B_INST_TQ2_0 = {\n name: 'BITNET_0_7B_INST_TQ2_0',\n src: `registry://${models[58].registrySource}/${models[58].registryPath}`,\n registryPath: models[58].registryPath,\n registrySource: models[58].registrySource,\n blobCoreKey: models[58].blobCoreKey,\n blobBlockOffset: models[58].blobBlockOffset,\n blobBlockLength: models[58].blobBlockLength,\n blobByteOffset: models[58].blobByteOffset,\n modelId: models[58].modelId,\n expectedSize: models[58].expectedSize,\n sha256Checksum: models[58].sha256Checksum,\n addon: models[58].addon,\n engine: models[58].engine,\n quantization: models[58].quantization,\n params: models[58].params\n};\nexport const BITNET_1B_INST_TQ2_0 = {\n name: 'BITNET_1B_INST_TQ2_0',\n src: `registry://${models[59].registrySource}/${models[59].registryPath}`,\n registryPath: models[59].registryPath,\n registrySource: models[59].registrySource,\n blobCoreKey: models[59].blobCoreKey,\n blobBlockOffset: models[59].blobBlockOffset,\n blobBlockLength: models[59].blobBlockLength,\n blobByteOffset: models[59].blobByteOffset,\n modelId: models[59].modelId,\n expectedSize: models[59].expectedSize,\n sha256Checksum: models[59].sha256Checksum,\n addon: models[59].addon,\n engine: models[59].engine,\n quantization: models[59].quantization,\n params: models[59].params\n};\nexport const DOLPHIN_MIXTRAL_2X7B_MOE_Q2_K_SHARD = {\n name: 'DOLPHIN_MIXTRAL_2X7B_MOE_Q2_K_SHARD',\n src: `registry://${models[60].registrySource}/${models[60].registryPath}`,\n registryPath: models[60].registryPath,\n registrySource: models[60].registrySource,\n blobCoreKey: models[60].blobCoreKey,\n blobBlockOffset: models[60].blobBlockOffset,\n blobBlockLength: models[60].blobBlockLength,\n blobByteOffset: models[60].blobByteOffset,\n modelId: models[60].modelId,\n expectedSize: models[60].expectedSize,\n sha256Checksum: models[60].sha256Checksum,\n addon: models[60].addon,\n engine: models[60].engine,\n quantization: models[60].quantization,\n params: models[60].params\n};\nexport const DOLPHIN_MIXTRAL_2X7B_MOE_Q2_K_TENSORS = {\n name: 'DOLPHIN_MIXTRAL_2X7B_MOE_Q2_K_TENSORS',\n src: `registry://${models[61].registrySource}/${models[61].registryPath}`,\n registryPath: models[61].registryPath,\n registrySource: models[61].registrySource,\n blobCoreKey: models[61].blobCoreKey,\n blobBlockOffset: models[61].blobBlockOffset,\n blobBlockLength: models[61].blobBlockLength,\n blobByteOffset: models[61].blobByteOffset,\n modelId: models[61].modelId,\n expectedSize: models[61].expectedSize,\n sha256Checksum: models[61].sha256Checksum,\n addon: models[61].addon,\n engine: models[61].engine,\n quantization: models[61].quantization,\n params: models[61].params\n};\nexport const GPT_OSS_120B_INST_Q4_K_M_SHARD = {\n name: 'GPT_OSS_120B_INST_Q4_K_M_SHARD',\n src: `registry://${models[62].registrySource}/${models[62].registryPath}`,\n registryPath: models[62].registryPath,\n registrySource: models[62].registrySource,\n blobCoreKey: models[62].blobCoreKey,\n blobBlockOffset: models[62].blobBlockOffset,\n blobBlockLength: models[62].blobBlockLength,\n blobByteOffset: models[62].blobByteOffset,\n modelId: models[62].modelId,\n expectedSize: models[62].expectedSize,\n sha256Checksum: models[62].sha256Checksum,\n addon: models[62].addon,\n engine: models[62].engine,\n quantization: models[62].quantization,\n params: models[62].params\n};\nexport const GPT_OSS_120B_INST_Q4_K_M_TENSORS = {\n name: 'GPT_OSS_120B_INST_Q4_K_M_TENSORS',\n src: `registry://${models[63].registrySource}/${models[63].registryPath}`,\n registryPath: models[63].registryPath,\n registrySource: models[63].registrySource,\n blobCoreKey: models[63].blobCoreKey,\n blobBlockOffset: models[63].blobBlockOffset,\n blobBlockLength: models[63].blobBlockLength,\n blobByteOffset: models[63].blobByteOffset,\n modelId: models[63].modelId,\n expectedSize: models[63].expectedSize,\n sha256Checksum: models[63].sha256Checksum,\n addon: models[63].addon,\n engine: models[63].engine,\n quantization: models[63].quantization,\n params: models[63].params\n};\nexport const LLAMA_3_2_1B_INST_Q4_0_SHARD = {\n name: 'LLAMA_3_2_1B_INST_Q4_0_SHARD',\n src: `registry://${models[64].registrySource}/${models[64].registryPath}`,\n registryPath: models[64].registryPath,\n registrySource: models[64].registrySource,\n blobCoreKey: models[64].blobCoreKey,\n blobBlockOffset: models[64].blobBlockOffset,\n blobBlockLength: models[64].blobBlockLength,\n blobByteOffset: models[64].blobByteOffset,\n modelId: models[64].modelId,\n expectedSize: models[64].expectedSize,\n sha256Checksum: models[64].sha256Checksum,\n addon: models[64].addon,\n engine: models[64].engine,\n quantization: models[64].quantization,\n params: models[64].params\n};\nexport const LLAMA_3_2_1B_INST_Q4_0_TENSORS = {\n name: 'LLAMA_3_2_1B_INST_Q4_0_TENSORS',\n src: `registry://${models[65].registrySource}/${models[65].registryPath}`,\n registryPath: models[65].registryPath,\n registrySource: models[65].registrySource,\n blobCoreKey: models[65].blobCoreKey,\n blobBlockOffset: models[65].blobBlockOffset,\n blobBlockLength: models[65].blobBlockLength,\n blobByteOffset: models[65].blobByteOffset,\n modelId: models[65].modelId,\n expectedSize: models[65].expectedSize,\n sha256Checksum: models[65].sha256Checksum,\n addon: models[65].addon,\n engine: models[65].engine,\n quantization: models[65].quantization,\n params: models[65].params\n};\nexport const MEDGEMMA_4B_IT_Q4_1_SHARD = {\n name: 'MEDGEMMA_4B_IT_Q4_1_SHARD',\n src: `registry://${models[66].registrySource}/${models[66].registryPath}`,\n registryPath: models[66].registryPath,\n registrySource: models[66].registrySource,\n blobCoreKey: models[66].blobCoreKey,\n blobBlockOffset: models[66].blobBlockOffset,\n blobBlockLength: models[66].blobBlockLength,\n blobByteOffset: models[66].blobByteOffset,\n modelId: models[66].modelId,\n expectedSize: models[66].expectedSize,\n sha256Checksum: models[66].sha256Checksum,\n addon: models[66].addon,\n engine: models[66].engine,\n quantization: models[66].quantization,\n params: models[66].params\n};\nexport const MEDGEMMA_4B_IT_Q4_1_TENSORS = {\n name: 'MEDGEMMA_4B_IT_Q4_1_TENSORS',\n src: `registry://${models[67].registrySource}/${models[67].registryPath}`,\n registryPath: models[67].registryPath,\n registrySource: models[67].registrySource,\n blobCoreKey: models[67].blobCoreKey,\n blobBlockOffset: models[67].blobBlockOffset,\n blobBlockLength: models[67].blobBlockLength,\n blobByteOffset: models[67].blobByteOffset,\n modelId: models[67].modelId,\n expectedSize: models[67].expectedSize,\n sha256Checksum: models[67].sha256Checksum,\n addon: models[67].addon,\n engine: models[67].engine,\n quantization: models[67].quantization,\n params: models[67].params\n};\nexport const MEDGEMMA_4B_IT_Q8_0_SHARD = {\n name: 'MEDGEMMA_4B_IT_Q8_0_SHARD',\n src: `registry://${models[68].registrySource}/${models[68].registryPath}`,\n registryPath: models[68].registryPath,\n registrySource: models[68].registrySource,\n blobCoreKey: models[68].blobCoreKey,\n blobBlockOffset: models[68].blobBlockOffset,\n blobBlockLength: models[68].blobBlockLength,\n blobByteOffset: models[68].blobByteOffset,\n modelId: models[68].modelId,\n expectedSize: models[68].expectedSize,\n sha256Checksum: models[68].sha256Checksum,\n addon: models[68].addon,\n engine: models[68].engine,\n quantization: models[68].quantization,\n params: models[68].params\n};\nexport const QWEN3_1_7B_INST_Q4_SHARD = {\n name: 'QWEN3_1_7B_INST_Q4_SHARD',\n src: `registry://${models[69].registrySource}/${models[69].registryPath}`,\n registryPath: models[69].registryPath,\n registrySource: models[69].registrySource,\n blobCoreKey: models[69].blobCoreKey,\n blobBlockOffset: models[69].blobBlockOffset,\n blobBlockLength: models[69].blobBlockLength,\n blobByteOffset: models[69].blobByteOffset,\n modelId: models[69].modelId,\n expectedSize: models[69].expectedSize,\n sha256Checksum: models[69].sha256Checksum,\n addon: models[69].addon,\n engine: models[69].engine,\n quantization: models[69].quantization,\n params: models[69].params\n};\nexport const QWEN3_1_7B_INST_Q4_TENSORS = {\n name: 'QWEN3_1_7B_INST_Q4_TENSORS',\n src: `registry://${models[70].registrySource}/${models[70].registryPath}`,\n registryPath: models[70].registryPath,\n registrySource: models[70].registrySource,\n blobCoreKey: models[70].blobCoreKey,\n blobBlockOffset: models[70].blobBlockOffset,\n blobBlockLength: models[70].blobBlockLength,\n blobByteOffset: models[70].blobByteOffset,\n modelId: models[70].modelId,\n expectedSize: models[70].expectedSize,\n sha256Checksum: models[70].sha256Checksum,\n addon: models[70].addon,\n engine: models[70].engine,\n quantization: models[70].quantization,\n params: models[70].params\n};\nexport const QWEN3_4B_INST_Q4_K_M = {\n name: 'QWEN3_4B_INST_Q4_K_M',\n src: `registry://${models[71].registrySource}/${models[71].registryPath}`,\n registryPath: models[71].registryPath,\n registrySource: models[71].registrySource,\n blobCoreKey: models[71].blobCoreKey,\n blobBlockOffset: models[71].blobBlockOffset,\n blobBlockLength: models[71].blobBlockLength,\n blobByteOffset: models[71].blobByteOffset,\n modelId: models[71].modelId,\n expectedSize: models[71].expectedSize,\n sha256Checksum: models[71].sha256Checksum,\n addon: models[71].addon,\n engine: models[71].engine,\n quantization: models[71].quantization,\n params: models[71].params\n};\nexport const QWEN3_4B_INST_Q4_SHARD = {\n name: 'QWEN3_4B_INST_Q4_SHARD',\n src: `registry://${models[72].registrySource}/${models[72].registryPath}`,\n registryPath: models[72].registryPath,\n registrySource: models[72].registrySource,\n blobCoreKey: models[72].blobCoreKey,\n blobBlockOffset: models[72].blobBlockOffset,\n blobBlockLength: models[72].blobBlockLength,\n blobByteOffset: models[72].blobByteOffset,\n modelId: models[72].modelId,\n expectedSize: models[72].expectedSize,\n sha256Checksum: models[72].sha256Checksum,\n addon: models[72].addon,\n engine: models[72].engine,\n quantization: models[72].quantization,\n params: models[72].params\n};\nexport const QWEN3_4B_INST_Q4_TENSORS = {\n name: 'QWEN3_4B_INST_Q4_TENSORS',\n src: `registry://${models[73].registrySource}/${models[73].registryPath}`,\n registryPath: models[73].registryPath,\n registrySource: models[73].registrySource,\n blobCoreKey: models[73].blobCoreKey,\n blobBlockOffset: models[73].blobBlockOffset,\n blobBlockLength: models[73].blobBlockLength,\n blobByteOffset: models[73].blobByteOffset,\n modelId: models[73].modelId,\n expectedSize: models[73].expectedSize,\n sha256Checksum: models[73].sha256Checksum,\n addon: models[73].addon,\n engine: models[73].engine,\n quantization: models[73].quantization,\n params: models[73].params\n};\nexport const SALAMANDRATA_2B_INST_Q4_SHARD = {\n name: 'SALAMANDRATA_2B_INST_Q4_SHARD',\n src: `registry://${models[74].registrySource}/${models[74].registryPath}`,\n registryPath: models[74].registryPath,\n registrySource: models[74].registrySource,\n blobCoreKey: models[74].blobCoreKey,\n blobBlockOffset: models[74].blobBlockOffset,\n blobBlockLength: models[74].blobBlockLength,\n blobByteOffset: models[74].blobByteOffset,\n modelId: models[74].modelId,\n expectedSize: models[74].expectedSize,\n sha256Checksum: models[74].sha256Checksum,\n addon: models[74].addon,\n engine: models[74].engine,\n quantization: models[74].quantization,\n params: models[74].params\n};\nexport const SALAMANDRATA_2B_INST_Q4_TENSORS = {\n name: 'SALAMANDRATA_2B_INST_Q4_TENSORS',\n src: `registry://${models[75].registrySource}/${models[75].registryPath}`,\n registryPath: models[75].registryPath,\n registrySource: models[75].registrySource,\n blobCoreKey: models[75].blobCoreKey,\n blobBlockOffset: models[75].blobBlockOffset,\n blobBlockLength: models[75].blobBlockLength,\n blobByteOffset: models[75].blobByteOffset,\n modelId: models[75].modelId,\n expectedSize: models[75].expectedSize,\n sha256Checksum: models[75].sha256Checksum,\n addon: models[75].addon,\n engine: models[75].engine,\n quantization: models[75].quantization,\n params: models[75].params\n};\nexport const SALAMANDRATA_2B_INST_Q8_SHARD = {\n name: 'SALAMANDRATA_2B_INST_Q8_SHARD',\n src: `registry://${models[76].registrySource}/${models[76].registryPath}`,\n registryPath: models[76].registryPath,\n registrySource: models[76].registrySource,\n blobCoreKey: models[76].blobCoreKey,\n blobBlockOffset: models[76].blobBlockOffset,\n blobBlockLength: models[76].blobBlockLength,\n blobByteOffset: models[76].blobByteOffset,\n modelId: models[76].modelId,\n expectedSize: models[76].expectedSize,\n sha256Checksum: models[76].sha256Checksum,\n addon: models[76].addon,\n engine: models[76].engine,\n quantization: models[76].quantization,\n params: models[76].params\n};\nexport const HEALTHCARE_1_7B_MEDICAL_BF16 = {\n name: 'HEALTHCARE_1_7B_MEDICAL_BF16',\n src: `registry://${models[77].registrySource}/${models[77].registryPath}`,\n registryPath: models[77].registryPath,\n registrySource: models[77].registrySource,\n blobCoreKey: models[77].blobCoreKey,\n blobBlockOffset: models[77].blobBlockOffset,\n blobBlockLength: models[77].blobBlockLength,\n blobByteOffset: models[77].blobByteOffset,\n modelId: models[77].modelId,\n expectedSize: models[77].expectedSize,\n sha256Checksum: models[77].sha256Checksum,\n addon: models[77].addon,\n engine: models[77].engine,\n quantization: models[77].quantization,\n params: models[77].params\n};\nexport const HEALTHCARE_1_7B_MEDICAL_IQ3_M = {\n name: 'HEALTHCARE_1_7B_MEDICAL_IQ3_M',\n src: `registry://${models[78].registrySource}/${models[78].registryPath}`,\n registryPath: models[78].registryPath,\n registrySource: models[78].registrySource,\n blobCoreKey: models[78].blobCoreKey,\n blobBlockOffset: models[78].blobBlockOffset,\n blobBlockLength: models[78].blobBlockLength,\n blobByteOffset: models[78].blobByteOffset,\n modelId: models[78].modelId,\n expectedSize: models[78].expectedSize,\n sha256Checksum: models[78].sha256Checksum,\n addon: models[78].addon,\n engine: models[78].engine,\n quantization: models[78].quantization,\n params: models[78].params\n};\nexport const HEALTHCARE_1_7B_MEDICAL_IQ3_XXS = {\n name: 'HEALTHCARE_1_7B_MEDICAL_IQ3_XXS',\n src: `registry://${models[79].registrySource}/${models[79].registryPath}`,\n registryPath: models[79].registryPath,\n registrySource: models[79].registrySource,\n blobCoreKey: models[79].blobCoreKey,\n blobBlockOffset: models[79].blobBlockOffset,\n blobBlockLength: models[79].blobBlockLength,\n blobByteOffset: models[79].blobByteOffset,\n modelId: models[79].modelId,\n expectedSize: models[79].expectedSize,\n sha256Checksum: models[79].sha256Checksum,\n addon: models[79].addon,\n engine: models[79].engine,\n quantization: models[79].quantization,\n params: models[79].params\n};\nexport const HEALTHCARE_1_7B_MEDICAL_IQ4_NL = {\n name: 'HEALTHCARE_1_7B_MEDICAL_IQ4_NL',\n src: `registry://${models[80].registrySource}/${models[80].registryPath}`,\n registryPath: models[80].registryPath,\n registrySource: models[80].registrySource,\n blobCoreKey: models[80].blobCoreKey,\n blobBlockOffset: models[80].blobBlockOffset,\n blobBlockLength: models[80].blobBlockLength,\n blobByteOffset: models[80].blobByteOffset,\n modelId: models[80].modelId,\n expectedSize: models[80].expectedSize,\n sha256Checksum: models[80].sha256Checksum,\n addon: models[80].addon,\n engine: models[80].engine,\n quantization: models[80].quantization,\n params: models[80].params\n};\nexport const HEALTHCARE_1_7B_MEDICAL_IQ4_XS = {\n name: 'HEALTHCARE_1_7B_MEDICAL_IQ4_XS',\n src: `registry://${models[81].registrySource}/${models[81].registryPath}`,\n registryPath: models[81].registryPath,\n registrySource: models[81].registrySource,\n blobCoreKey: models[81].blobCoreKey,\n blobBlockOffset: models[81].blobBlockOffset,\n blobBlockLength: models[81].blobBlockLength,\n blobByteOffset: models[81].blobByteOffset,\n modelId: models[81].modelId,\n expectedSize: models[81].expectedSize,\n sha256Checksum: models[81].sha256Checksum,\n addon: models[81].addon,\n engine: models[81].engine,\n quantization: models[81].quantization,\n params: models[81].params\n};\nexport const HEALTHCARE_1_7B_MEDICAL_Q4_K_M = {\n name: 'HEALTHCARE_1_7B_MEDICAL_Q4_K_M',\n src: `registry://${models[82].registrySource}/${models[82].registryPath}`,\n registryPath: models[82].registryPath,\n registrySource: models[82].registrySource,\n blobCoreKey: models[82].blobCoreKey,\n blobBlockOffset: models[82].blobBlockOffset,\n blobBlockLength: models[82].blobBlockLength,\n blobByteOffset: models[82].blobByteOffset,\n modelId: models[82].modelId,\n expectedSize: models[82].expectedSize,\n sha256Checksum: models[82].sha256Checksum,\n addon: models[82].addon,\n engine: models[82].engine,\n quantization: models[82].quantization,\n params: models[82].params\n};\nexport const HEALTHCARE_1_7B_MEDICAL_Q5_K_M = {\n name: 'HEALTHCARE_1_7B_MEDICAL_Q5_K_M',\n src: `registry://${models[83].registrySource}/${models[83].registryPath}`,\n registryPath: models[83].registryPath,\n registrySource: models[83].registrySource,\n blobCoreKey: models[83].blobCoreKey,\n blobBlockOffset: models[83].blobBlockOffset,\n blobBlockLength: models[83].blobBlockLength,\n blobByteOffset: models[83].blobByteOffset,\n modelId: models[83].modelId,\n expectedSize: models[83].expectedSize,\n sha256Checksum: models[83].sha256Checksum,\n addon: models[83].addon,\n engine: models[83].engine,\n quantization: models[83].quantization,\n params: models[83].params\n};\nexport const HEALTHCARE_1_7B_MEDICAL_Q8_0 = {\n name: 'HEALTHCARE_1_7B_MEDICAL_Q8_0',\n src: `registry://${models[84].registrySource}/${models[84].registryPath}`,\n registryPath: models[84].registryPath,\n registrySource: models[84].registrySource,\n blobCoreKey: models[84].blobCoreKey,\n blobBlockOffset: models[84].blobBlockOffset,\n blobBlockLength: models[84].blobBlockLength,\n blobByteOffset: models[84].blobByteOffset,\n modelId: models[84].modelId,\n expectedSize: models[84].expectedSize,\n sha256Checksum: models[84].sha256Checksum,\n addon: models[84].addon,\n engine: models[84].engine,\n quantization: models[84].quantization,\n params: models[84].params\n};\nexport const HEALTHCARE_4B_MEDICAL_BF16 = {\n name: 'HEALTHCARE_4B_MEDICAL_BF16',\n src: `registry://${models[85].registrySource}/${models[85].registryPath}`,\n registryPath: models[85].registryPath,\n registrySource: models[85].registrySource,\n blobCoreKey: models[85].blobCoreKey,\n blobBlockOffset: models[85].blobBlockOffset,\n blobBlockLength: models[85].blobBlockLength,\n blobByteOffset: models[85].blobByteOffset,\n modelId: models[85].modelId,\n expectedSize: models[85].expectedSize,\n sha256Checksum: models[85].sha256Checksum,\n addon: models[85].addon,\n engine: models[85].engine,\n quantization: models[85].quantization,\n params: models[85].params\n};\nexport const HEALTHCARE_4B_MEDICAL_IQ3_M = {\n name: 'HEALTHCARE_4B_MEDICAL_IQ3_M',\n src: `registry://${models[86].registrySource}/${models[86].registryPath}`,\n registryPath: models[86].registryPath,\n registrySource: models[86].registrySource,\n blobCoreKey: models[86].blobCoreKey,\n blobBlockOffset: models[86].blobBlockOffset,\n blobBlockLength: models[86].blobBlockLength,\n blobByteOffset: models[86].blobByteOffset,\n modelId: models[86].modelId,\n expectedSize: models[86].expectedSize,\n sha256Checksum: models[86].sha256Checksum,\n addon: models[86].addon,\n engine: models[86].engine,\n quantization: models[86].quantization,\n params: models[86].params\n};\nexport const HEALTHCARE_4B_MEDICAL_IQ3_XXS = {\n name: 'HEALTHCARE_4B_MEDICAL_IQ3_XXS',\n src: `registry://${models[87].registrySource}/${models[87].registryPath}`,\n registryPath: models[87].registryPath,\n registrySource: models[87].registrySource,\n blobCoreKey: models[87].blobCoreKey,\n blobBlockOffset: models[87].blobBlockOffset,\n blobBlockLength: models[87].blobBlockLength,\n blobByteOffset: models[87].blobByteOffset,\n modelId: models[87].modelId,\n expectedSize: models[87].expectedSize,\n sha256Checksum: models[87].sha256Checksum,\n addon: models[87].addon,\n engine: models[87].engine,\n quantization: models[87].quantization,\n params: models[87].params\n};\nexport const HEALTHCARE_4B_MEDICAL_IQ4_NL = {\n name: 'HEALTHCARE_4B_MEDICAL_IQ4_NL',\n src: `registry://${models[88].registrySource}/${models[88].registryPath}`,\n registryPath: models[88].registryPath,\n registrySource: models[88].registrySource,\n blobCoreKey: models[88].blobCoreKey,\n blobBlockOffset: models[88].blobBlockOffset,\n blobBlockLength: models[88].blobBlockLength,\n blobByteOffset: models[88].blobByteOffset,\n modelId: models[88].modelId,\n expectedSize: models[88].expectedSize,\n sha256Checksum: models[88].sha256Checksum,\n addon: models[88].addon,\n engine: models[88].engine,\n quantization: models[88].quantization,\n params: models[88].params\n};\nexport const HEALTHCARE_4B_MEDICAL_IQ4_XS = {\n name: 'HEALTHCARE_4B_MEDICAL_IQ4_XS',\n src: `registry://${models[89].registrySource}/${models[89].registryPath}`,\n registryPath: models[89].registryPath,\n registrySource: models[89].registrySource,\n blobCoreKey: models[89].blobCoreKey,\n blobBlockOffset: models[89].blobBlockOffset,\n blobBlockLength: models[89].blobBlockLength,\n blobByteOffset: models[89].blobByteOffset,\n modelId: models[89].modelId,\n expectedSize: models[89].expectedSize,\n sha256Checksum: models[89].sha256Checksum,\n addon: models[89].addon,\n engine: models[89].engine,\n quantization: models[89].quantization,\n params: models[89].params\n};\nexport const HEALTHCARE_4B_MEDICAL_Q4_K_M = {\n name: 'HEALTHCARE_4B_MEDICAL_Q4_K_M',\n src: `registry://${models[90].registrySource}/${models[90].registryPath}`,\n registryPath: models[90].registryPath,\n registrySource: models[90].registrySource,\n blobCoreKey: models[90].blobCoreKey,\n blobBlockOffset: models[90].blobBlockOffset,\n blobBlockLength: models[90].blobBlockLength,\n blobByteOffset: models[90].blobByteOffset,\n modelId: models[90].modelId,\n expectedSize: models[90].expectedSize,\n sha256Checksum: models[90].sha256Checksum,\n addon: models[90].addon,\n engine: models[90].engine,\n quantization: models[90].quantization,\n params: models[90].params\n};\nexport const HEALTHCARE_4B_MEDICAL_Q5_K_M = {\n name: 'HEALTHCARE_4B_MEDICAL_Q5_K_M',\n src: `registry://${models[91].registrySource}/${models[91].registryPath}`,\n registryPath: models[91].registryPath,\n registrySource: models[91].registrySource,\n blobCoreKey: models[91].blobCoreKey,\n blobBlockOffset: models[91].blobBlockOffset,\n blobBlockLength: models[91].blobBlockLength,\n blobByteOffset: models[91].blobByteOffset,\n modelId: models[91].modelId,\n expectedSize: models[91].expectedSize,\n sha256Checksum: models[91].sha256Checksum,\n addon: models[91].addon,\n engine: models[91].engine,\n quantization: models[91].quantization,\n params: models[91].params\n};\nexport const HEALTHCARE_4B_MEDICAL_Q8_0 = {\n name: 'HEALTHCARE_4B_MEDICAL_Q8_0',\n src: `registry://${models[92].registrySource}/${models[92].registryPath}`,\n registryPath: models[92].registryPath,\n registrySource: models[92].registrySource,\n blobCoreKey: models[92].blobCoreKey,\n blobBlockOffset: models[92].blobBlockOffset,\n blobBlockLength: models[92].blobBlockLength,\n blobByteOffset: models[92].blobByteOffset,\n modelId: models[92].modelId,\n expectedSize: models[92].expectedSize,\n sha256Checksum: models[92].sha256Checksum,\n addon: models[92].addon,\n engine: models[92].engine,\n quantization: models[92].quantization,\n params: models[92].params\n};\nexport const QWEN3_8B_INST_Q4_K_M = {\n name: 'QWEN3_8B_INST_Q4_K_M',\n src: `registry://${models[93].registrySource}/${models[93].registryPath}`,\n registryPath: models[93].registryPath,\n registrySource: models[93].registrySource,\n blobCoreKey: models[93].blobCoreKey,\n blobBlockOffset: models[93].blobBlockOffset,\n blobBlockLength: models[93].blobBlockLength,\n blobByteOffset: models[93].blobByteOffset,\n modelId: models[93].modelId,\n expectedSize: models[93].expectedSize,\n sha256Checksum: models[93].sha256Checksum,\n addon: models[93].addon,\n engine: models[93].engine,\n quantization: models[93].quantization,\n params: models[93].params\n};\nexport const MMPROJ_QWEN3VL_2B_MULTIMODAL_Q4_K = {\n name: 'MMPROJ_QWEN3VL_2B_MULTIMODAL_Q4_K',\n src: `registry://${models[94].registrySource}/${models[94].registryPath}`,\n registryPath: models[94].registryPath,\n registrySource: models[94].registrySource,\n blobCoreKey: models[94].blobCoreKey,\n blobBlockOffset: models[94].blobBlockOffset,\n blobBlockLength: models[94].blobBlockLength,\n blobByteOffset: models[94].blobByteOffset,\n modelId: models[94].modelId,\n expectedSize: models[94].expectedSize,\n sha256Checksum: models[94].sha256Checksum,\n addon: models[94].addon,\n engine: models[94].engine,\n quantization: models[94].quantization,\n params: models[94].params\n};\nexport const QWEN3VL_2B_MULTIMODAL_Q4_K = {\n name: 'QWEN3VL_2B_MULTIMODAL_Q4_K',\n src: `registry://${models[95].registrySource}/${models[95].registryPath}`,\n registryPath: models[95].registryPath,\n registrySource: models[95].registrySource,\n blobCoreKey: models[95].blobCoreKey,\n blobBlockOffset: models[95].blobBlockOffset,\n blobBlockLength: models[95].blobBlockLength,\n blobByteOffset: models[95].blobByteOffset,\n modelId: models[95].modelId,\n expectedSize: models[95].expectedSize,\n sha256Checksum: models[95].sha256Checksum,\n addon: models[95].addon,\n engine: models[95].engine,\n quantization: models[95].quantization,\n params: models[95].params\n};\nexport const GPT_OSS_20B_INST_Q4_K_M = {\n name: 'GPT_OSS_20B_INST_Q4_K_M',\n src: `registry://${models[96].registrySource}/${models[96].registryPath}`,\n registryPath: models[96].registryPath,\n registrySource: models[96].registrySource,\n blobCoreKey: models[96].blobCoreKey,\n blobBlockOffset: models[96].blobBlockOffset,\n blobBlockLength: models[96].blobBlockLength,\n blobByteOffset: models[96].blobByteOffset,\n modelId: models[96].modelId,\n expectedSize: models[96].expectedSize,\n sha256Checksum: models[96].sha256Checksum,\n addon: models[96].addon,\n engine: models[96].engine,\n quantization: models[96].quantization,\n params: models[96].params\n};\nexport const LLAMA_3_2_1B_INST_Q4_0 = {\n name: 'LLAMA_3_2_1B_INST_Q4_0',\n src: `registry://${models[97].registrySource}/${models[97].registryPath}`,\n registryPath: models[97].registryPath,\n registrySource: models[97].registrySource,\n blobCoreKey: models[97].blobCoreKey,\n blobBlockOffset: models[97].blobBlockOffset,\n blobBlockLength: models[97].blobBlockLength,\n blobByteOffset: models[97].blobByteOffset,\n modelId: models[97].modelId,\n expectedSize: models[97].expectedSize,\n sha256Checksum: models[97].sha256Checksum,\n addon: models[97].addon,\n engine: models[97].engine,\n quantization: models[97].quantization,\n params: models[97].params\n};\nexport const MEDGEMMA_4B_IT_Q4_1 = {\n name: 'MEDGEMMA_4B_IT_Q4_1',\n src: `registry://${models[98].registrySource}/${models[98].registryPath}`,\n registryPath: models[98].registryPath,\n registrySource: models[98].registrySource,\n blobCoreKey: models[98].blobCoreKey,\n blobBlockOffset: models[98].blobBlockOffset,\n blobBlockLength: models[98].blobBlockLength,\n blobByteOffset: models[98].blobByteOffset,\n modelId: models[98].modelId,\n expectedSize: models[98].expectedSize,\n sha256Checksum: models[98].sha256Checksum,\n addon: models[98].addon,\n engine: models[98].engine,\n quantization: models[98].quantization,\n params: models[98].params\n};\nexport const MEDGEMMA_4B_IT_Q8_0 = {\n name: 'MEDGEMMA_4B_IT_Q8_0',\n src: `registry://${models[99].registrySource}/${models[99].registryPath}`,\n registryPath: models[99].registryPath,\n registrySource: models[99].registrySource,\n blobCoreKey: models[99].blobCoreKey,\n blobBlockOffset: models[99].blobBlockOffset,\n blobBlockLength: models[99].blobBlockLength,\n blobByteOffset: models[99].blobByteOffset,\n modelId: models[99].modelId,\n expectedSize: models[99].expectedSize,\n sha256Checksum: models[99].sha256Checksum,\n addon: models[99].addon,\n engine: models[99].engine,\n quantization: models[99].quantization,\n params: models[99].params\n};\nexport const QWEN3_600M_INST_Q4 = {\n name: 'QWEN3_600M_INST_Q4',\n src: `registry://${models[100].registrySource}/${models[100].registryPath}`,\n registryPath: models[100].registryPath,\n registrySource: models[100].registrySource,\n blobCoreKey: models[100].blobCoreKey,\n blobBlockOffset: models[100].blobBlockOffset,\n blobBlockLength: models[100].blobBlockLength,\n blobByteOffset: models[100].blobByteOffset,\n modelId: models[100].modelId,\n expectedSize: models[100].expectedSize,\n sha256Checksum: models[100].sha256Checksum,\n addon: models[100].addon,\n engine: models[100].engine,\n quantization: models[100].quantization,\n params: models[100].params\n};\nexport const QWEN3_1_7B_INST_Q4 = {\n name: 'QWEN3_1_7B_INST_Q4',\n src: `registry://${models[101].registrySource}/${models[101].registryPath}`,\n registryPath: models[101].registryPath,\n registrySource: models[101].registrySource,\n blobCoreKey: models[101].blobCoreKey,\n blobBlockOffset: models[101].blobBlockOffset,\n blobBlockLength: models[101].blobBlockLength,\n blobByteOffset: models[101].blobByteOffset,\n modelId: models[101].modelId,\n expectedSize: models[101].expectedSize,\n sha256Checksum: models[101].sha256Checksum,\n addon: models[101].addon,\n engine: models[101].engine,\n quantization: models[101].quantization,\n params: models[101].params\n};\nexport const QWEN3_4B_Q4_K_M = {\n name: 'QWEN3_4B_Q4_K_M',\n src: `registry://${models[102].registrySource}/${models[102].registryPath}`,\n registryPath: models[102].registryPath,\n registrySource: models[102].registrySource,\n blobCoreKey: models[102].blobCoreKey,\n blobBlockOffset: models[102].blobBlockOffset,\n blobBlockLength: models[102].blobBlockLength,\n blobByteOffset: models[102].blobByteOffset,\n modelId: models[102].modelId,\n expectedSize: models[102].expectedSize,\n sha256Checksum: models[102].sha256Checksum,\n addon: models[102].addon,\n engine: models[102].engine,\n quantization: models[102].quantization,\n params: models[102].params\n};\nexport const MMPROJ_QWEN3_5_0_8B_MULTIMODAL_BF16 = {\n name: 'MMPROJ_QWEN3_5_0_8B_MULTIMODAL_BF16',\n src: `registry://${models[103].registrySource}/${models[103].registryPath}`,\n registryPath: models[103].registryPath,\n registrySource: models[103].registrySource,\n blobCoreKey: models[103].blobCoreKey,\n blobBlockOffset: models[103].blobBlockOffset,\n blobBlockLength: models[103].blobBlockLength,\n blobByteOffset: models[103].blobByteOffset,\n modelId: models[103].modelId,\n expectedSize: models[103].expectedSize,\n sha256Checksum: models[103].sha256Checksum,\n addon: models[103].addon,\n engine: models[103].engine,\n quantization: models[103].quantization,\n params: models[103].params\n};\nexport const MMPROJ_QWEN3_5_0_8B_MULTIMODAL_F16 = {\n name: 'MMPROJ_QWEN3_5_0_8B_MULTIMODAL_F16',\n src: `registry://${models[104].registrySource}/${models[104].registryPath}`,\n registryPath: models[104].registryPath,\n registrySource: models[104].registrySource,\n blobCoreKey: models[104].blobCoreKey,\n blobBlockOffset: models[104].blobBlockOffset,\n blobBlockLength: models[104].blobBlockLength,\n blobByteOffset: models[104].blobByteOffset,\n modelId: models[104].modelId,\n expectedSize: models[104].expectedSize,\n sha256Checksum: models[104].sha256Checksum,\n addon: models[104].addon,\n engine: models[104].engine,\n quantization: models[104].quantization,\n params: models[104].params\n};\nexport const QWEN3_5_0_8B_MULTIMODAL_Q4_K_M = {\n name: 'QWEN3_5_0_8B_MULTIMODAL_Q4_K_M',\n src: `registry://${models[105].registrySource}/${models[105].registryPath}`,\n registryPath: models[105].registryPath,\n registrySource: models[105].registrySource,\n blobCoreKey: models[105].blobCoreKey,\n blobBlockOffset: models[105].blobBlockOffset,\n blobBlockLength: models[105].blobBlockLength,\n blobByteOffset: models[105].blobByteOffset,\n modelId: models[105].modelId,\n expectedSize: models[105].expectedSize,\n sha256Checksum: models[105].sha256Checksum,\n addon: models[105].addon,\n engine: models[105].engine,\n quantization: models[105].quantization,\n params: models[105].params\n};\nexport const QWEN3_5_0_8B_MULTIMODAL_Q6_K = {\n name: 'QWEN3_5_0_8B_MULTIMODAL_Q6_K',\n src: `registry://${models[106].registrySource}/${models[106].registryPath}`,\n registryPath: models[106].registryPath,\n registrySource: models[106].registrySource,\n blobCoreKey: models[106].blobCoreKey,\n blobBlockOffset: models[106].blobBlockOffset,\n blobBlockLength: models[106].blobBlockLength,\n blobByteOffset: models[106].blobByteOffset,\n modelId: models[106].modelId,\n expectedSize: models[106].expectedSize,\n sha256Checksum: models[106].sha256Checksum,\n addon: models[106].addon,\n engine: models[106].engine,\n quantization: models[106].quantization,\n params: models[106].params\n};\nexport const QWEN3_5_0_8B_MULTIMODAL_Q8_0 = {\n name: 'QWEN3_5_0_8B_MULTIMODAL_Q8_0',\n src: `registry://${models[107].registrySource}/${models[107].registryPath}`,\n registryPath: models[107].registryPath,\n registrySource: models[107].registrySource,\n blobCoreKey: models[107].blobCoreKey,\n blobBlockOffset: models[107].blobBlockOffset,\n blobBlockLength: models[107].blobBlockLength,\n blobByteOffset: models[107].blobByteOffset,\n modelId: models[107].modelId,\n expectedSize: models[107].expectedSize,\n sha256Checksum: models[107].sha256Checksum,\n addon: models[107].addon,\n engine: models[107].engine,\n quantization: models[107].quantization,\n params: models[107].params\n};\nexport const MMPROJ_QWEN3_5_2B_MULTIMODAL_BF16 = {\n name: 'MMPROJ_QWEN3_5_2B_MULTIMODAL_BF16',\n src: `registry://${models[108].registrySource}/${models[108].registryPath}`,\n registryPath: models[108].registryPath,\n registrySource: models[108].registrySource,\n blobCoreKey: models[108].blobCoreKey,\n blobBlockOffset: models[108].blobBlockOffset,\n blobBlockLength: models[108].blobBlockLength,\n blobByteOffset: models[108].blobByteOffset,\n modelId: models[108].modelId,\n expectedSize: models[108].expectedSize,\n sha256Checksum: models[108].sha256Checksum,\n addon: models[108].addon,\n engine: models[108].engine,\n quantization: models[108].quantization,\n params: models[108].params\n};\nexport const MMPROJ_QWEN3_5_2B_MULTIMODAL_F16 = {\n name: 'MMPROJ_QWEN3_5_2B_MULTIMODAL_F16',\n src: `registry://${models[109].registrySource}/${models[109].registryPath}`,\n registryPath: models[109].registryPath,\n registrySource: models[109].registrySource,\n blobCoreKey: models[109].blobCoreKey,\n blobBlockOffset: models[109].blobBlockOffset,\n blobBlockLength: models[109].blobBlockLength,\n blobByteOffset: models[109].blobByteOffset,\n modelId: models[109].modelId,\n expectedSize: models[109].expectedSize,\n sha256Checksum: models[109].sha256Checksum,\n addon: models[109].addon,\n engine: models[109].engine,\n quantization: models[109].quantization,\n params: models[109].params\n};\nexport const QWEN3_5_2B_MULTIMODAL_Q4_K_M = {\n name: 'QWEN3_5_2B_MULTIMODAL_Q4_K_M',\n src: `registry://${models[110].registrySource}/${models[110].registryPath}`,\n registryPath: models[110].registryPath,\n registrySource: models[110].registrySource,\n blobCoreKey: models[110].blobCoreKey,\n blobBlockOffset: models[110].blobBlockOffset,\n blobBlockLength: models[110].blobBlockLength,\n blobByteOffset: models[110].blobByteOffset,\n modelId: models[110].modelId,\n expectedSize: models[110].expectedSize,\n sha256Checksum: models[110].sha256Checksum,\n addon: models[110].addon,\n engine: models[110].engine,\n quantization: models[110].quantization,\n params: models[110].params\n};\nexport const QWEN3_5_2B_MULTIMODAL_Q6_K = {\n name: 'QWEN3_5_2B_MULTIMODAL_Q6_K',\n src: `registry://${models[111].registrySource}/${models[111].registryPath}`,\n registryPath: models[111].registryPath,\n registrySource: models[111].registrySource,\n blobCoreKey: models[111].blobCoreKey,\n blobBlockOffset: models[111].blobBlockOffset,\n blobBlockLength: models[111].blobBlockLength,\n blobByteOffset: models[111].blobByteOffset,\n modelId: models[111].modelId,\n expectedSize: models[111].expectedSize,\n sha256Checksum: models[111].sha256Checksum,\n addon: models[111].addon,\n engine: models[111].engine,\n quantization: models[111].quantization,\n params: models[111].params\n};\nexport const QWEN3_5_2B_MULTIMODAL_Q8_0 = {\n name: 'QWEN3_5_2B_MULTIMODAL_Q8_0',\n src: `registry://${models[112].registrySource}/${models[112].registryPath}`,\n registryPath: models[112].registryPath,\n registrySource: models[112].registrySource,\n blobCoreKey: models[112].blobCoreKey,\n blobBlockOffset: models[112].blobBlockOffset,\n blobBlockLength: models[112].blobBlockLength,\n blobByteOffset: models[112].blobByteOffset,\n modelId: models[112].modelId,\n expectedSize: models[112].expectedSize,\n sha256Checksum: models[112].sha256Checksum,\n addon: models[112].addon,\n engine: models[112].engine,\n quantization: models[112].quantization,\n params: models[112].params\n};\nexport const MMPROJ_QWEN3_5_4B_MULTIMODAL_BF16 = {\n name: 'MMPROJ_QWEN3_5_4B_MULTIMODAL_BF16',\n src: `registry://${models[113].registrySource}/${models[113].registryPath}`,\n registryPath: models[113].registryPath,\n registrySource: models[113].registrySource,\n blobCoreKey: models[113].blobCoreKey,\n blobBlockOffset: models[113].blobBlockOffset,\n blobBlockLength: models[113].blobBlockLength,\n blobByteOffset: models[113].blobByteOffset,\n modelId: models[113].modelId,\n expectedSize: models[113].expectedSize,\n sha256Checksum: models[113].sha256Checksum,\n addon: models[113].addon,\n engine: models[113].engine,\n quantization: models[113].quantization,\n params: models[113].params\n};\nexport const MMPROJ_QWEN3_5_4B_MULTIMODAL_F16 = {\n name: 'MMPROJ_QWEN3_5_4B_MULTIMODAL_F16',\n src: `registry://${models[114].registrySource}/${models[114].registryPath}`,\n registryPath: models[114].registryPath,\n registrySource: models[114].registrySource,\n blobCoreKey: models[114].blobCoreKey,\n blobBlockOffset: models[114].blobBlockOffset,\n blobBlockLength: models[114].blobBlockLength,\n blobByteOffset: models[114].blobByteOffset,\n modelId: models[114].modelId,\n expectedSize: models[114].expectedSize,\n sha256Checksum: models[114].sha256Checksum,\n addon: models[114].addon,\n engine: models[114].engine,\n quantization: models[114].quantization,\n params: models[114].params\n};\nexport const QWEN3_5_4B_MULTIMODAL_Q4_K_M = {\n name: 'QWEN3_5_4B_MULTIMODAL_Q4_K_M',\n src: `registry://${models[115].registrySource}/${models[115].registryPath}`,\n registryPath: models[115].registryPath,\n registrySource: models[115].registrySource,\n blobCoreKey: models[115].blobCoreKey,\n blobBlockOffset: models[115].blobBlockOffset,\n blobBlockLength: models[115].blobBlockLength,\n blobByteOffset: models[115].blobByteOffset,\n modelId: models[115].modelId,\n expectedSize: models[115].expectedSize,\n sha256Checksum: models[115].sha256Checksum,\n addon: models[115].addon,\n engine: models[115].engine,\n quantization: models[115].quantization,\n params: models[115].params\n};\nexport const QWEN3_5_4B_MULTIMODAL_Q6_K = {\n name: 'QWEN3_5_4B_MULTIMODAL_Q6_K',\n src: `registry://${models[116].registrySource}/${models[116].registryPath}`,\n registryPath: models[116].registryPath,\n registrySource: models[116].registrySource,\n blobCoreKey: models[116].blobCoreKey,\n blobBlockOffset: models[116].blobBlockOffset,\n blobBlockLength: models[116].blobBlockLength,\n blobByteOffset: models[116].blobByteOffset,\n modelId: models[116].modelId,\n expectedSize: models[116].expectedSize,\n sha256Checksum: models[116].sha256Checksum,\n addon: models[116].addon,\n engine: models[116].engine,\n quantization: models[116].quantization,\n params: models[116].params\n};\nexport const MMPROJ_QWEN3_5_9B_MULTIMODAL_BF16 = {\n name: 'MMPROJ_QWEN3_5_9B_MULTIMODAL_BF16',\n src: `registry://${models[117].registrySource}/${models[117].registryPath}`,\n registryPath: models[117].registryPath,\n registrySource: models[117].registrySource,\n blobCoreKey: models[117].blobCoreKey,\n blobBlockOffset: models[117].blobBlockOffset,\n blobBlockLength: models[117].blobBlockLength,\n blobByteOffset: models[117].blobByteOffset,\n modelId: models[117].modelId,\n expectedSize: models[117].expectedSize,\n sha256Checksum: models[117].sha256Checksum,\n addon: models[117].addon,\n engine: models[117].engine,\n quantization: models[117].quantization,\n params: models[117].params\n};\nexport const MMPROJ_QWEN3_5_9B_MULTIMODAL_F16 = {\n name: 'MMPROJ_QWEN3_5_9B_MULTIMODAL_F16',\n src: `registry://${models[118].registrySource}/${models[118].registryPath}`,\n registryPath: models[118].registryPath,\n registrySource: models[118].registrySource,\n blobCoreKey: models[118].blobCoreKey,\n blobBlockOffset: models[118].blobBlockOffset,\n blobBlockLength: models[118].blobBlockLength,\n blobByteOffset: models[118].blobByteOffset,\n modelId: models[118].modelId,\n expectedSize: models[118].expectedSize,\n sha256Checksum: models[118].sha256Checksum,\n addon: models[118].addon,\n engine: models[118].engine,\n quantization: models[118].quantization,\n params: models[118].params\n};\nexport const QWEN3_5_9B_MULTIMODAL_Q4_K_M = {\n name: 'QWEN3_5_9B_MULTIMODAL_Q4_K_M',\n src: `registry://${models[119].registrySource}/${models[119].registryPath}`,\n registryPath: models[119].registryPath,\n registrySource: models[119].registrySource,\n blobCoreKey: models[119].blobCoreKey,\n blobBlockOffset: models[119].blobBlockOffset,\n blobBlockLength: models[119].blobBlockLength,\n blobByteOffset: models[119].blobByteOffset,\n modelId: models[119].modelId,\n expectedSize: models[119].expectedSize,\n sha256Checksum: models[119].sha256Checksum,\n addon: models[119].addon,\n engine: models[119].engine,\n quantization: models[119].quantization,\n params: models[119].params\n};\nexport const QWEN3_5_9B_MULTIMODAL_Q6_K = {\n name: 'QWEN3_5_9B_MULTIMODAL_Q6_K',\n src: `registry://${models[120].registrySource}/${models[120].registryPath}`,\n registryPath: models[120].registryPath,\n registrySource: models[120].registrySource,\n blobCoreKey: models[120].blobCoreKey,\n blobBlockOffset: models[120].blobBlockOffset,\n blobBlockLength: models[120].blobBlockLength,\n blobByteOffset: models[120].blobByteOffset,\n modelId: models[120].modelId,\n expectedSize: models[120].expectedSize,\n sha256Checksum: models[120].sha256Checksum,\n addon: models[120].addon,\n engine: models[120].engine,\n quantization: models[120].quantization,\n params: models[120].params\n};\nexport const MMPROJ_QWEN3_6_27B_MULTIMODAL_BF16 = {\n name: 'MMPROJ_QWEN3_6_27B_MULTIMODAL_BF16',\n src: `registry://${models[121].registrySource}/${models[121].registryPath}`,\n registryPath: models[121].registryPath,\n registrySource: models[121].registrySource,\n blobCoreKey: models[121].blobCoreKey,\n blobBlockOffset: models[121].blobBlockOffset,\n blobBlockLength: models[121].blobBlockLength,\n blobByteOffset: models[121].blobByteOffset,\n modelId: models[121].modelId,\n expectedSize: models[121].expectedSize,\n sha256Checksum: models[121].sha256Checksum,\n addon: models[121].addon,\n engine: models[121].engine,\n quantization: models[121].quantization,\n params: models[121].params\n};\nexport const MMPROJ_QWEN3_6_27B_MULTIMODAL_F16 = {\n name: 'MMPROJ_QWEN3_6_27B_MULTIMODAL_F16',\n src: `registry://${models[122].registrySource}/${models[122].registryPath}`,\n registryPath: models[122].registryPath,\n registrySource: models[122].registrySource,\n blobCoreKey: models[122].blobCoreKey,\n blobBlockOffset: models[122].blobBlockOffset,\n blobBlockLength: models[122].blobBlockLength,\n blobByteOffset: models[122].blobByteOffset,\n modelId: models[122].modelId,\n expectedSize: models[122].expectedSize,\n sha256Checksum: models[122].sha256Checksum,\n addon: models[122].addon,\n engine: models[122].engine,\n quantization: models[122].quantization,\n params: models[122].params\n};\nexport const QWEN3_6_27B_MULTIMODAL_Q4_K_XL = {\n name: 'QWEN3_6_27B_MULTIMODAL_Q4_K_XL',\n src: `registry://${models[123].registrySource}/${models[123].registryPath}`,\n registryPath: models[123].registryPath,\n registrySource: models[123].registrySource,\n blobCoreKey: models[123].blobCoreKey,\n blobBlockOffset: models[123].blobBlockOffset,\n blobBlockLength: models[123].blobBlockLength,\n blobByteOffset: models[123].blobByteOffset,\n modelId: models[123].modelId,\n expectedSize: models[123].expectedSize,\n sha256Checksum: models[123].sha256Checksum,\n addon: models[123].addon,\n engine: models[123].engine,\n quantization: models[123].quantization,\n params: models[123].params\n};\nexport const QWEN3_6_27B_MULTIMODAL_Q6_K_XL = {\n name: 'QWEN3_6_27B_MULTIMODAL_Q6_K_XL',\n src: `registry://${models[124].registrySource}/${models[124].registryPath}`,\n registryPath: models[124].registryPath,\n registrySource: models[124].registrySource,\n blobCoreKey: models[124].blobCoreKey,\n blobBlockOffset: models[124].blobBlockOffset,\n blobBlockLength: models[124].blobBlockLength,\n blobByteOffset: models[124].blobByteOffset,\n modelId: models[124].modelId,\n expectedSize: models[124].expectedSize,\n sha256Checksum: models[124].sha256Checksum,\n addon: models[124].addon,\n engine: models[124].engine,\n quantization: models[124].quantization,\n params: models[124].params\n};\nexport const MMPROJ_QWEN3_6_35B_A3B_MULTIMODAL_BF16 = {\n name: 'MMPROJ_QWEN3_6_35B_A3B_MULTIMODAL_BF16',\n src: `registry://${models[125].registrySource}/${models[125].registryPath}`,\n registryPath: models[125].registryPath,\n registrySource: models[125].registrySource,\n blobCoreKey: models[125].blobCoreKey,\n blobBlockOffset: models[125].blobBlockOffset,\n blobBlockLength: models[125].blobBlockLength,\n blobByteOffset: models[125].blobByteOffset,\n modelId: models[125].modelId,\n expectedSize: models[125].expectedSize,\n sha256Checksum: models[125].sha256Checksum,\n addon: models[125].addon,\n engine: models[125].engine,\n quantization: models[125].quantization,\n params: models[125].params\n};\nexport const MMPROJ_QWEN3_6_35B_A3B_MULTIMODAL_F16 = {\n name: 'MMPROJ_QWEN3_6_35B_A3B_MULTIMODAL_F16',\n src: `registry://${models[126].registrySource}/${models[126].registryPath}`,\n registryPath: models[126].registryPath,\n registrySource: models[126].registrySource,\n blobCoreKey: models[126].blobCoreKey,\n blobBlockOffset: models[126].blobBlockOffset,\n blobBlockLength: models[126].blobBlockLength,\n blobByteOffset: models[126].blobByteOffset,\n modelId: models[126].modelId,\n expectedSize: models[126].expectedSize,\n sha256Checksum: models[126].sha256Checksum,\n addon: models[126].addon,\n engine: models[126].engine,\n quantization: models[126].quantization,\n params: models[126].params\n};\nexport const QWEN3_6_35B_A3B_MULTIMODAL_Q4_K_M = {\n name: 'QWEN3_6_35B_A3B_MULTIMODAL_Q4_K_M',\n src: `registry://${models[127].registrySource}/${models[127].registryPath}`,\n registryPath: models[127].registryPath,\n registrySource: models[127].registrySource,\n blobCoreKey: models[127].blobCoreKey,\n blobBlockOffset: models[127].blobBlockOffset,\n blobBlockLength: models[127].blobBlockLength,\n blobByteOffset: models[127].blobByteOffset,\n modelId: models[127].modelId,\n expectedSize: models[127].expectedSize,\n sha256Checksum: models[127].sha256Checksum,\n addon: models[127].addon,\n engine: models[127].engine,\n quantization: models[127].quantization,\n params: models[127].params\n};\nexport const QWEN3_6_35B_A3B_MULTIMODAL_Q6_K_XL = {\n name: 'QWEN3_6_35B_A3B_MULTIMODAL_Q6_K_XL',\n src: `registry://${models[128].registrySource}/${models[128].registryPath}`,\n registryPath: models[128].registryPath,\n registrySource: models[128].registrySource,\n blobCoreKey: models[128].blobCoreKey,\n blobBlockOffset: models[128].blobBlockOffset,\n blobBlockLength: models[128].blobBlockLength,\n blobByteOffset: models[128].blobByteOffset,\n modelId: models[128].modelId,\n expectedSize: models[128].expectedSize,\n sha256Checksum: models[128].sha256Checksum,\n addon: models[128].addon,\n engine: models[128].engine,\n quantization: models[128].quantization,\n params: models[128].params\n};\nexport const BERGAMOT_AR_EN = {\n name: 'BERGAMOT_AR_EN',\n src: `registry://${models[131].registrySource}/${models[131].registryPath}`,\n registryPath: models[131].registryPath,\n registrySource: models[131].registrySource,\n blobCoreKey: models[131].blobCoreKey,\n blobBlockOffset: models[131].blobBlockOffset,\n blobBlockLength: models[131].blobBlockLength,\n blobByteOffset: models[131].blobByteOffset,\n modelId: models[131].modelId,\n expectedSize: models[131].expectedSize,\n sha256Checksum: models[131].sha256Checksum,\n addon: models[131].addon,\n engine: models[131].engine,\n quantization: models[131].quantization,\n params: models[131].params\n};\nexport const BERGAMOT_AZ_EN = {\n name: 'BERGAMOT_AZ_EN',\n src: `registry://${models[135].registrySource}/${models[135].registryPath}`,\n registryPath: models[135].registryPath,\n registrySource: models[135].registrySource,\n blobCoreKey: models[135].blobCoreKey,\n blobBlockOffset: models[135].blobBlockOffset,\n blobBlockLength: models[135].blobBlockLength,\n blobByteOffset: models[135].blobByteOffset,\n modelId: models[135].modelId,\n expectedSize: models[135].expectedSize,\n sha256Checksum: models[135].sha256Checksum,\n addon: models[135].addon,\n engine: models[135].engine,\n quantization: models[135].quantization,\n params: models[135].params\n};\nexport const BERGAMOT_BE_EN = {\n name: 'BERGAMOT_BE_EN',\n src: `registry://${models[139].registrySource}/${models[139].registryPath}`,\n registryPath: models[139].registryPath,\n registrySource: models[139].registrySource,\n blobCoreKey: models[139].blobCoreKey,\n blobBlockOffset: models[139].blobBlockOffset,\n blobBlockLength: models[139].blobBlockLength,\n blobByteOffset: models[139].blobByteOffset,\n modelId: models[139].modelId,\n expectedSize: models[139].expectedSize,\n sha256Checksum: models[139].sha256Checksum,\n addon: models[139].addon,\n engine: models[139].engine,\n quantization: models[139].quantization,\n params: models[139].params\n};\nexport const BERGAMOT_BG_EN = {\n name: 'BERGAMOT_BG_EN',\n src: `registry://${models[143].registrySource}/${models[143].registryPath}`,\n registryPath: models[143].registryPath,\n registrySource: models[143].registrySource,\n blobCoreKey: models[143].blobCoreKey,\n blobBlockOffset: models[143].blobBlockOffset,\n blobBlockLength: models[143].blobBlockLength,\n blobByteOffset: models[143].blobByteOffset,\n modelId: models[143].modelId,\n expectedSize: models[143].expectedSize,\n sha256Checksum: models[143].sha256Checksum,\n addon: models[143].addon,\n engine: models[143].engine,\n quantization: models[143].quantization,\n params: models[143].params\n};\nexport const BERGAMOT_BN_EN = {\n name: 'BERGAMOT_BN_EN',\n src: `registry://${models[147].registrySource}/${models[147].registryPath}`,\n registryPath: models[147].registryPath,\n registrySource: models[147].registrySource,\n blobCoreKey: models[147].blobCoreKey,\n blobBlockOffset: models[147].blobBlockOffset,\n blobBlockLength: models[147].blobBlockLength,\n blobByteOffset: models[147].blobByteOffset,\n modelId: models[147].modelId,\n expectedSize: models[147].expectedSize,\n sha256Checksum: models[147].sha256Checksum,\n addon: models[147].addon,\n engine: models[147].engine,\n quantization: models[147].quantization,\n params: models[147].params\n};\nexport const BERGAMOT_BS_EN = {\n name: 'BERGAMOT_BS_EN',\n src: `registry://${models[151].registrySource}/${models[151].registryPath}`,\n registryPath: models[151].registryPath,\n registrySource: models[151].registrySource,\n blobCoreKey: models[151].blobCoreKey,\n blobBlockOffset: models[151].blobBlockOffset,\n blobBlockLength: models[151].blobBlockLength,\n blobByteOffset: models[151].blobByteOffset,\n modelId: models[151].modelId,\n expectedSize: models[151].expectedSize,\n sha256Checksum: models[151].sha256Checksum,\n addon: models[151].addon,\n engine: models[151].engine,\n quantization: models[151].quantization,\n params: models[151].params\n};\nexport const BERGAMOT_CA_EN = {\n name: 'BERGAMOT_CA_EN',\n src: `registry://${models[155].registrySource}/${models[155].registryPath}`,\n registryPath: models[155].registryPath,\n registrySource: models[155].registrySource,\n blobCoreKey: models[155].blobCoreKey,\n blobBlockOffset: models[155].blobBlockOffset,\n blobBlockLength: models[155].blobBlockLength,\n blobByteOffset: models[155].blobByteOffset,\n modelId: models[155].modelId,\n expectedSize: models[155].expectedSize,\n sha256Checksum: models[155].sha256Checksum,\n addon: models[155].addon,\n engine: models[155].engine,\n quantization: models[155].quantization,\n params: models[155].params\n};\nexport const BERGAMOT_CS_EN = {\n name: 'BERGAMOT_CS_EN',\n src: `registry://${models[159].registrySource}/${models[159].registryPath}`,\n registryPath: models[159].registryPath,\n registrySource: models[159].registrySource,\n blobCoreKey: models[159].blobCoreKey,\n blobBlockOffset: models[159].blobBlockOffset,\n blobBlockLength: models[159].blobBlockLength,\n blobByteOffset: models[159].blobByteOffset,\n modelId: models[159].modelId,\n expectedSize: models[159].expectedSize,\n sha256Checksum: models[159].sha256Checksum,\n addon: models[159].addon,\n engine: models[159].engine,\n quantization: models[159].quantization,\n params: models[159].params\n};\nexport const BERGAMOT_DA_EN = {\n name: 'BERGAMOT_DA_EN',\n src: `registry://${models[163].registrySource}/${models[163].registryPath}`,\n registryPath: models[163].registryPath,\n registrySource: models[163].registrySource,\n blobCoreKey: models[163].blobCoreKey,\n blobBlockOffset: models[163].blobBlockOffset,\n blobBlockLength: models[163].blobBlockLength,\n blobByteOffset: models[163].blobByteOffset,\n modelId: models[163].modelId,\n expectedSize: models[163].expectedSize,\n sha256Checksum: models[163].sha256Checksum,\n addon: models[163].addon,\n engine: models[163].engine,\n quantization: models[163].quantization,\n params: models[163].params\n};\nexport const BERGAMOT_DE_EN = {\n name: 'BERGAMOT_DE_EN',\n src: `registry://${models[167].registrySource}/${models[167].registryPath}`,\n registryPath: models[167].registryPath,\n registrySource: models[167].registrySource,\n blobCoreKey: models[167].blobCoreKey,\n blobBlockOffset: models[167].blobBlockOffset,\n blobBlockLength: models[167].blobBlockLength,\n blobByteOffset: models[167].blobByteOffset,\n modelId: models[167].modelId,\n expectedSize: models[167].expectedSize,\n sha256Checksum: models[167].sha256Checksum,\n addon: models[167].addon,\n engine: models[167].engine,\n quantization: models[167].quantization,\n params: models[167].params\n};\nexport const BERGAMOT_EL_EN = {\n name: 'BERGAMOT_EL_EN',\n src: `registry://${models[171].registrySource}/${models[171].registryPath}`,\n registryPath: models[171].registryPath,\n registrySource: models[171].registrySource,\n blobCoreKey: models[171].blobCoreKey,\n blobBlockOffset: models[171].blobBlockOffset,\n blobBlockLength: models[171].blobBlockLength,\n blobByteOffset: models[171].blobByteOffset,\n modelId: models[171].modelId,\n expectedSize: models[171].expectedSize,\n sha256Checksum: models[171].sha256Checksum,\n addon: models[171].addon,\n engine: models[171].engine,\n quantization: models[171].quantization,\n params: models[171].params\n};\nexport const BERGAMOT_EN_AR = {\n name: 'BERGAMOT_EN_AR',\n src: `registry://${models[175].registrySource}/${models[175].registryPath}`,\n registryPath: models[175].registryPath,\n registrySource: models[175].registrySource,\n blobCoreKey: models[175].blobCoreKey,\n blobBlockOffset: models[175].blobBlockOffset,\n blobBlockLength: models[175].blobBlockLength,\n blobByteOffset: models[175].blobByteOffset,\n modelId: models[175].modelId,\n expectedSize: models[175].expectedSize,\n sha256Checksum: models[175].sha256Checksum,\n addon: models[175].addon,\n engine: models[175].engine,\n quantization: models[175].quantization,\n params: models[175].params\n};\nexport const BERGAMOT_EN_AZ = {\n name: 'BERGAMOT_EN_AZ',\n src: `registry://${models[179].registrySource}/${models[179].registryPath}`,\n registryPath: models[179].registryPath,\n registrySource: models[179].registrySource,\n blobCoreKey: models[179].blobCoreKey,\n blobBlockOffset: models[179].blobBlockOffset,\n blobBlockLength: models[179].blobBlockLength,\n blobByteOffset: models[179].blobByteOffset,\n modelId: models[179].modelId,\n expectedSize: models[179].expectedSize,\n sha256Checksum: models[179].sha256Checksum,\n addon: models[179].addon,\n engine: models[179].engine,\n quantization: models[179].quantization,\n params: models[179].params\n};\nexport const BERGAMOT_EN_BG = {\n name: 'BERGAMOT_EN_BG',\n src: `registry://${models[183].registrySource}/${models[183].registryPath}`,\n registryPath: models[183].registryPath,\n registrySource: models[183].registrySource,\n blobCoreKey: models[183].blobCoreKey,\n blobBlockOffset: models[183].blobBlockOffset,\n blobBlockLength: models[183].blobBlockLength,\n blobByteOffset: models[183].blobByteOffset,\n modelId: models[183].modelId,\n expectedSize: models[183].expectedSize,\n sha256Checksum: models[183].sha256Checksum,\n addon: models[183].addon,\n engine: models[183].engine,\n quantization: models[183].quantization,\n params: models[183].params\n};\nexport const BERGAMOT_EN_BN = {\n name: 'BERGAMOT_EN_BN',\n src: `registry://${models[187].registrySource}/${models[187].registryPath}`,\n registryPath: models[187].registryPath,\n registrySource: models[187].registrySource,\n blobCoreKey: models[187].blobCoreKey,\n blobBlockOffset: models[187].blobBlockOffset,\n blobBlockLength: models[187].blobBlockLength,\n blobByteOffset: models[187].blobByteOffset,\n modelId: models[187].modelId,\n expectedSize: models[187].expectedSize,\n sha256Checksum: models[187].sha256Checksum,\n addon: models[187].addon,\n engine: models[187].engine,\n quantization: models[187].quantization,\n params: models[187].params\n};\nexport const BERGAMOT_EN_BS = {\n name: 'BERGAMOT_EN_BS',\n src: `registry://${models[191].registrySource}/${models[191].registryPath}`,\n registryPath: models[191].registryPath,\n registrySource: models[191].registrySource,\n blobCoreKey: models[191].blobCoreKey,\n blobBlockOffset: models[191].blobBlockOffset,\n blobBlockLength: models[191].blobBlockLength,\n blobByteOffset: models[191].blobByteOffset,\n modelId: models[191].modelId,\n expectedSize: models[191].expectedSize,\n sha256Checksum: models[191].sha256Checksum,\n addon: models[191].addon,\n engine: models[191].engine,\n quantization: models[191].quantization,\n params: models[191].params\n};\nexport const BERGAMOT_EN_CA = {\n name: 'BERGAMOT_EN_CA',\n src: `registry://${models[195].registrySource}/${models[195].registryPath}`,\n registryPath: models[195].registryPath,\n registrySource: models[195].registrySource,\n blobCoreKey: models[195].blobCoreKey,\n blobBlockOffset: models[195].blobBlockOffset,\n blobBlockLength: models[195].blobBlockLength,\n blobByteOffset: models[195].blobByteOffset,\n modelId: models[195].modelId,\n expectedSize: models[195].expectedSize,\n sha256Checksum: models[195].sha256Checksum,\n addon: models[195].addon,\n engine: models[195].engine,\n quantization: models[195].quantization,\n params: models[195].params\n};\nexport const BERGAMOT_EN_CS = {\n name: 'BERGAMOT_EN_CS',\n src: `registry://${models[199].registrySource}/${models[199].registryPath}`,\n registryPath: models[199].registryPath,\n registrySource: models[199].registrySource,\n blobCoreKey: models[199].blobCoreKey,\n blobBlockOffset: models[199].blobBlockOffset,\n blobBlockLength: models[199].blobBlockLength,\n blobByteOffset: models[199].blobByteOffset,\n modelId: models[199].modelId,\n expectedSize: models[199].expectedSize,\n sha256Checksum: models[199].sha256Checksum,\n addon: models[199].addon,\n engine: models[199].engine,\n quantization: models[199].quantization,\n params: models[199].params\n};\nexport const BERGAMOT_EN_DA = {\n name: 'BERGAMOT_EN_DA',\n src: `registry://${models[203].registrySource}/${models[203].registryPath}`,\n registryPath: models[203].registryPath,\n registrySource: models[203].registrySource,\n blobCoreKey: models[203].blobCoreKey,\n blobBlockOffset: models[203].blobBlockOffset,\n blobBlockLength: models[203].blobBlockLength,\n blobByteOffset: models[203].blobByteOffset,\n modelId: models[203].modelId,\n expectedSize: models[203].expectedSize,\n sha256Checksum: models[203].sha256Checksum,\n addon: models[203].addon,\n engine: models[203].engine,\n quantization: models[203].quantization,\n params: models[203].params\n};\nexport const BERGAMOT_EN_DE = {\n name: 'BERGAMOT_EN_DE',\n src: `registry://${models[207].registrySource}/${models[207].registryPath}`,\n registryPath: models[207].registryPath,\n registrySource: models[207].registrySource,\n blobCoreKey: models[207].blobCoreKey,\n blobBlockOffset: models[207].blobBlockOffset,\n blobBlockLength: models[207].blobBlockLength,\n blobByteOffset: models[207].blobByteOffset,\n modelId: models[207].modelId,\n expectedSize: models[207].expectedSize,\n sha256Checksum: models[207].sha256Checksum,\n addon: models[207].addon,\n engine: models[207].engine,\n quantization: models[207].quantization,\n params: models[207].params\n};\nexport const BERGAMOT_EN_EL = {\n name: 'BERGAMOT_EN_EL',\n src: `registry://${models[211].registrySource}/${models[211].registryPath}`,\n registryPath: models[211].registryPath,\n registrySource: models[211].registrySource,\n blobCoreKey: models[211].blobCoreKey,\n blobBlockOffset: models[211].blobBlockOffset,\n blobBlockLength: models[211].blobBlockLength,\n blobByteOffset: models[211].blobByteOffset,\n modelId: models[211].modelId,\n expectedSize: models[211].expectedSize,\n sha256Checksum: models[211].sha256Checksum,\n addon: models[211].addon,\n engine: models[211].engine,\n quantization: models[211].quantization,\n params: models[211].params\n};\nexport const BERGAMOT_EN_ES = {\n name: 'BERGAMOT_EN_ES',\n src: `registry://${models[215].registrySource}/${models[215].registryPath}`,\n registryPath: models[215].registryPath,\n registrySource: models[215].registrySource,\n blobCoreKey: models[215].blobCoreKey,\n blobBlockOffset: models[215].blobBlockOffset,\n blobBlockLength: models[215].blobBlockLength,\n blobByteOffset: models[215].blobByteOffset,\n modelId: models[215].modelId,\n expectedSize: models[215].expectedSize,\n sha256Checksum: models[215].sha256Checksum,\n addon: models[215].addon,\n engine: models[215].engine,\n quantization: models[215].quantization,\n params: models[215].params\n};\nexport const BERGAMOT_EN_ET = {\n name: 'BERGAMOT_EN_ET',\n src: `registry://${models[219].registrySource}/${models[219].registryPath}`,\n registryPath: models[219].registryPath,\n registrySource: models[219].registrySource,\n blobCoreKey: models[219].blobCoreKey,\n blobBlockOffset: models[219].blobBlockOffset,\n blobBlockLength: models[219].blobBlockLength,\n blobByteOffset: models[219].blobByteOffset,\n modelId: models[219].modelId,\n expectedSize: models[219].expectedSize,\n sha256Checksum: models[219].sha256Checksum,\n addon: models[219].addon,\n engine: models[219].engine,\n quantization: models[219].quantization,\n params: models[219].params\n};\nexport const BERGAMOT_EN_FA = {\n name: 'BERGAMOT_EN_FA',\n src: `registry://${models[223].registrySource}/${models[223].registryPath}`,\n registryPath: models[223].registryPath,\n registrySource: models[223].registrySource,\n blobCoreKey: models[223].blobCoreKey,\n blobBlockOffset: models[223].blobBlockOffset,\n blobBlockLength: models[223].blobBlockLength,\n blobByteOffset: models[223].blobByteOffset,\n modelId: models[223].modelId,\n expectedSize: models[223].expectedSize,\n sha256Checksum: models[223].sha256Checksum,\n addon: models[223].addon,\n engine: models[223].engine,\n quantization: models[223].quantization,\n params: models[223].params\n};\nexport const BERGAMOT_EN_FI = {\n name: 'BERGAMOT_EN_FI',\n src: `registry://${models[227].registrySource}/${models[227].registryPath}`,\n registryPath: models[227].registryPath,\n registrySource: models[227].registrySource,\n blobCoreKey: models[227].blobCoreKey,\n blobBlockOffset: models[227].blobBlockOffset,\n blobBlockLength: models[227].blobBlockLength,\n blobByteOffset: models[227].blobByteOffset,\n modelId: models[227].modelId,\n expectedSize: models[227].expectedSize,\n sha256Checksum: models[227].sha256Checksum,\n addon: models[227].addon,\n engine: models[227].engine,\n quantization: models[227].quantization,\n params: models[227].params\n};\nexport const BERGAMOT_EN_FR = {\n name: 'BERGAMOT_EN_FR',\n src: `registry://${models[231].registrySource}/${models[231].registryPath}`,\n registryPath: models[231].registryPath,\n registrySource: models[231].registrySource,\n blobCoreKey: models[231].blobCoreKey,\n blobBlockOffset: models[231].blobBlockOffset,\n blobBlockLength: models[231].blobBlockLength,\n blobByteOffset: models[231].blobByteOffset,\n modelId: models[231].modelId,\n expectedSize: models[231].expectedSize,\n sha256Checksum: models[231].sha256Checksum,\n addon: models[231].addon,\n engine: models[231].engine,\n quantization: models[231].quantization,\n params: models[231].params\n};\nexport const BERGAMOT_EN_GU = {\n name: 'BERGAMOT_EN_GU',\n src: `registry://${models[235].registrySource}/${models[235].registryPath}`,\n registryPath: models[235].registryPath,\n registrySource: models[235].registrySource,\n blobCoreKey: models[235].blobCoreKey,\n blobBlockOffset: models[235].blobBlockOffset,\n blobBlockLength: models[235].blobBlockLength,\n blobByteOffset: models[235].blobByteOffset,\n modelId: models[235].modelId,\n expectedSize: models[235].expectedSize,\n sha256Checksum: models[235].sha256Checksum,\n addon: models[235].addon,\n engine: models[235].engine,\n quantization: models[235].quantization,\n params: models[235].params\n};\nexport const BERGAMOT_EN_HE = {\n name: 'BERGAMOT_EN_HE',\n src: `registry://${models[239].registrySource}/${models[239].registryPath}`,\n registryPath: models[239].registryPath,\n registrySource: models[239].registrySource,\n blobCoreKey: models[239].blobCoreKey,\n blobBlockOffset: models[239].blobBlockOffset,\n blobBlockLength: models[239].blobBlockLength,\n blobByteOffset: models[239].blobByteOffset,\n modelId: models[239].modelId,\n expectedSize: models[239].expectedSize,\n sha256Checksum: models[239].sha256Checksum,\n addon: models[239].addon,\n engine: models[239].engine,\n quantization: models[239].quantization,\n params: models[239].params\n};\nexport const BERGAMOT_EN_HI = {\n name: 'BERGAMOT_EN_HI',\n src: `registry://${models[243].registrySource}/${models[243].registryPath}`,\n registryPath: models[243].registryPath,\n registrySource: models[243].registrySource,\n blobCoreKey: models[243].blobCoreKey,\n blobBlockOffset: models[243].blobBlockOffset,\n blobBlockLength: models[243].blobBlockLength,\n blobByteOffset: models[243].blobByteOffset,\n modelId: models[243].modelId,\n expectedSize: models[243].expectedSize,\n sha256Checksum: models[243].sha256Checksum,\n addon: models[243].addon,\n engine: models[243].engine,\n quantization: models[243].quantization,\n params: models[243].params\n};\nexport const BERGAMOT_EN_HR = {\n name: 'BERGAMOT_EN_HR',\n src: `registry://${models[247].registrySource}/${models[247].registryPath}`,\n registryPath: models[247].registryPath,\n registrySource: models[247].registrySource,\n blobCoreKey: models[247].blobCoreKey,\n blobBlockOffset: models[247].blobBlockOffset,\n blobBlockLength: models[247].blobBlockLength,\n blobByteOffset: models[247].blobByteOffset,\n modelId: models[247].modelId,\n expectedSize: models[247].expectedSize,\n sha256Checksum: models[247].sha256Checksum,\n addon: models[247].addon,\n engine: models[247].engine,\n quantization: models[247].quantization,\n params: models[247].params\n};\nexport const BERGAMOT_EN_HU = {\n name: 'BERGAMOT_EN_HU',\n src: `registry://${models[251].registrySource}/${models[251].registryPath}`,\n registryPath: models[251].registryPath,\n registrySource: models[251].registrySource,\n blobCoreKey: models[251].blobCoreKey,\n blobBlockOffset: models[251].blobBlockOffset,\n blobBlockLength: models[251].blobBlockLength,\n blobByteOffset: models[251].blobByteOffset,\n modelId: models[251].modelId,\n expectedSize: models[251].expectedSize,\n sha256Checksum: models[251].sha256Checksum,\n addon: models[251].addon,\n engine: models[251].engine,\n quantization: models[251].quantization,\n params: models[251].params\n};\nexport const BERGAMOT_EN_ID = {\n name: 'BERGAMOT_EN_ID',\n src: `registry://${models[255].registrySource}/${models[255].registryPath}`,\n registryPath: models[255].registryPath,\n registrySource: models[255].registrySource,\n blobCoreKey: models[255].blobCoreKey,\n blobBlockOffset: models[255].blobBlockOffset,\n blobBlockLength: models[255].blobBlockLength,\n blobByteOffset: models[255].blobByteOffset,\n modelId: models[255].modelId,\n expectedSize: models[255].expectedSize,\n sha256Checksum: models[255].sha256Checksum,\n addon: models[255].addon,\n engine: models[255].engine,\n quantization: models[255].quantization,\n params: models[255].params\n};\nexport const BERGAMOT_EN_IS = {\n name: 'BERGAMOT_EN_IS',\n src: `registry://${models[259].registrySource}/${models[259].registryPath}`,\n registryPath: models[259].registryPath,\n registrySource: models[259].registrySource,\n blobCoreKey: models[259].blobCoreKey,\n blobBlockOffset: models[259].blobBlockOffset,\n blobBlockLength: models[259].blobBlockLength,\n blobByteOffset: models[259].blobByteOffset,\n modelId: models[259].modelId,\n expectedSize: models[259].expectedSize,\n sha256Checksum: models[259].sha256Checksum,\n addon: models[259].addon,\n engine: models[259].engine,\n quantization: models[259].quantization,\n params: models[259].params\n};\nexport const BERGAMOT_EN_IT = {\n name: 'BERGAMOT_EN_IT',\n src: `registry://${models[263].registrySource}/${models[263].registryPath}`,\n registryPath: models[263].registryPath,\n registrySource: models[263].registrySource,\n blobCoreKey: models[263].blobCoreKey,\n blobBlockOffset: models[263].blobBlockOffset,\n blobBlockLength: models[263].blobBlockLength,\n blobByteOffset: models[263].blobByteOffset,\n modelId: models[263].modelId,\n expectedSize: models[263].expectedSize,\n sha256Checksum: models[263].sha256Checksum,\n addon: models[263].addon,\n engine: models[263].engine,\n quantization: models[263].quantization,\n params: models[263].params\n};\nexport const BERGAMOT_EN_JA = {\n name: 'BERGAMOT_EN_JA',\n src: `registry://${models[267].registrySource}/${models[267].registryPath}`,\n registryPath: models[267].registryPath,\n registrySource: models[267].registrySource,\n blobCoreKey: models[267].blobCoreKey,\n blobBlockOffset: models[267].blobBlockOffset,\n blobBlockLength: models[267].blobBlockLength,\n blobByteOffset: models[267].blobByteOffset,\n modelId: models[267].modelId,\n expectedSize: models[267].expectedSize,\n sha256Checksum: models[267].sha256Checksum,\n addon: models[267].addon,\n engine: models[267].engine,\n quantization: models[267].quantization,\n params: models[267].params\n};\nexport const BERGAMOT_EN_KN = {\n name: 'BERGAMOT_EN_KN',\n src: `registry://${models[272].registrySource}/${models[272].registryPath}`,\n registryPath: models[272].registryPath,\n registrySource: models[272].registrySource,\n blobCoreKey: models[272].blobCoreKey,\n blobBlockOffset: models[272].blobBlockOffset,\n blobBlockLength: models[272].blobBlockLength,\n blobByteOffset: models[272].blobByteOffset,\n modelId: models[272].modelId,\n expectedSize: models[272].expectedSize,\n sha256Checksum: models[272].sha256Checksum,\n addon: models[272].addon,\n engine: models[272].engine,\n quantization: models[272].quantization,\n params: models[272].params\n};\nexport const BERGAMOT_EN_KO = {\n name: 'BERGAMOT_EN_KO',\n src: `registry://${models[276].registrySource}/${models[276].registryPath}`,\n registryPath: models[276].registryPath,\n registrySource: models[276].registrySource,\n blobCoreKey: models[276].blobCoreKey,\n blobBlockOffset: models[276].blobBlockOffset,\n blobBlockLength: models[276].blobBlockLength,\n blobByteOffset: models[276].blobByteOffset,\n modelId: models[276].modelId,\n expectedSize: models[276].expectedSize,\n sha256Checksum: models[276].sha256Checksum,\n addon: models[276].addon,\n engine: models[276].engine,\n quantization: models[276].quantization,\n params: models[276].params\n};\nexport const BERGAMOT_EN_LT = {\n name: 'BERGAMOT_EN_LT',\n src: `registry://${models[281].registrySource}/${models[281].registryPath}`,\n registryPath: models[281].registryPath,\n registrySource: models[281].registrySource,\n blobCoreKey: models[281].blobCoreKey,\n blobBlockOffset: models[281].blobBlockOffset,\n blobBlockLength: models[281].blobBlockLength,\n blobByteOffset: models[281].blobByteOffset,\n modelId: models[281].modelId,\n expectedSize: models[281].expectedSize,\n sha256Checksum: models[281].sha256Checksum,\n addon: models[281].addon,\n engine: models[281].engine,\n quantization: models[281].quantization,\n params: models[281].params\n};\nexport const BERGAMOT_EN_LV = {\n name: 'BERGAMOT_EN_LV',\n src: `registry://${models[285].registrySource}/${models[285].registryPath}`,\n registryPath: models[285].registryPath,\n registrySource: models[285].registrySource,\n blobCoreKey: models[285].blobCoreKey,\n blobBlockOffset: models[285].blobBlockOffset,\n blobBlockLength: models[285].blobBlockLength,\n blobByteOffset: models[285].blobByteOffset,\n modelId: models[285].modelId,\n expectedSize: models[285].expectedSize,\n sha256Checksum: models[285].sha256Checksum,\n addon: models[285].addon,\n engine: models[285].engine,\n quantization: models[285].quantization,\n params: models[285].params\n};\nexport const BERGAMOT_EN_ML = {\n name: 'BERGAMOT_EN_ML',\n src: `registry://${models[289].registrySource}/${models[289].registryPath}`,\n registryPath: models[289].registryPath,\n registrySource: models[289].registrySource,\n blobCoreKey: models[289].blobCoreKey,\n blobBlockOffset: models[289].blobBlockOffset,\n blobBlockLength: models[289].blobBlockLength,\n blobByteOffset: models[289].blobByteOffset,\n modelId: models[289].modelId,\n expectedSize: models[289].expectedSize,\n sha256Checksum: models[289].sha256Checksum,\n addon: models[289].addon,\n engine: models[289].engine,\n quantization: models[289].quantization,\n params: models[289].params\n};\nexport const BERGAMOT_EN_MS = {\n name: 'BERGAMOT_EN_MS',\n src: `registry://${models[293].registrySource}/${models[293].registryPath}`,\n registryPath: models[293].registryPath,\n registrySource: models[293].registrySource,\n blobCoreKey: models[293].blobCoreKey,\n blobBlockOffset: models[293].blobBlockOffset,\n blobBlockLength: models[293].blobBlockLength,\n blobByteOffset: models[293].blobByteOffset,\n modelId: models[293].modelId,\n expectedSize: models[293].expectedSize,\n sha256Checksum: models[293].sha256Checksum,\n addon: models[293].addon,\n engine: models[293].engine,\n quantization: models[293].quantization,\n params: models[293].params\n};\nexport const BERGAMOT_EN_NB = {\n name: 'BERGAMOT_EN_NB',\n src: `registry://${models[297].registrySource}/${models[297].registryPath}`,\n registryPath: models[297].registryPath,\n registrySource: models[297].registrySource,\n blobCoreKey: models[297].blobCoreKey,\n blobBlockOffset: models[297].blobBlockOffset,\n blobBlockLength: models[297].blobBlockLength,\n blobByteOffset: models[297].blobByteOffset,\n modelId: models[297].modelId,\n expectedSize: models[297].expectedSize,\n sha256Checksum: models[297].sha256Checksum,\n addon: models[297].addon,\n engine: models[297].engine,\n quantization: models[297].quantization,\n params: models[297].params\n};\nexport const BERGAMOT_EN_NL = {\n name: 'BERGAMOT_EN_NL',\n src: `registry://${models[301].registrySource}/${models[301].registryPath}`,\n registryPath: models[301].registryPath,\n registrySource: models[301].registrySource,\n blobCoreKey: models[301].blobCoreKey,\n blobBlockOffset: models[301].blobBlockOffset,\n blobBlockLength: models[301].blobBlockLength,\n blobByteOffset: models[301].blobByteOffset,\n modelId: models[301].modelId,\n expectedSize: models[301].expectedSize,\n sha256Checksum: models[301].sha256Checksum,\n addon: models[301].addon,\n engine: models[301].engine,\n quantization: models[301].quantization,\n params: models[301].params\n};\nexport const BERGAMOT_EN_NO = {\n name: 'BERGAMOT_EN_NO',\n src: `registry://${models[305].registrySource}/${models[305].registryPath}`,\n registryPath: models[305].registryPath,\n registrySource: models[305].registrySource,\n blobCoreKey: models[305].blobCoreKey,\n blobBlockOffset: models[305].blobBlockOffset,\n blobBlockLength: models[305].blobBlockLength,\n blobByteOffset: models[305].blobByteOffset,\n modelId: models[305].modelId,\n expectedSize: models[305].expectedSize,\n sha256Checksum: models[305].sha256Checksum,\n addon: models[305].addon,\n engine: models[305].engine,\n quantization: models[305].quantization,\n params: models[305].params\n};\nexport const BERGAMOT_EN_PL = {\n name: 'BERGAMOT_EN_PL',\n src: `registry://${models[309].registrySource}/${models[309].registryPath}`,\n registryPath: models[309].registryPath,\n registrySource: models[309].registrySource,\n blobCoreKey: models[309].blobCoreKey,\n blobBlockOffset: models[309].blobBlockOffset,\n blobBlockLength: models[309].blobBlockLength,\n blobByteOffset: models[309].blobByteOffset,\n modelId: models[309].modelId,\n expectedSize: models[309].expectedSize,\n sha256Checksum: models[309].sha256Checksum,\n addon: models[309].addon,\n engine: models[309].engine,\n quantization: models[309].quantization,\n params: models[309].params\n};\nexport const BERGAMOT_EN_PT = {\n name: 'BERGAMOT_EN_PT',\n src: `registry://${models[313].registrySource}/${models[313].registryPath}`,\n registryPath: models[313].registryPath,\n registrySource: models[313].registrySource,\n blobCoreKey: models[313].blobCoreKey,\n blobBlockOffset: models[313].blobBlockOffset,\n blobBlockLength: models[313].blobBlockLength,\n blobByteOffset: models[313].blobByteOffset,\n modelId: models[313].modelId,\n expectedSize: models[313].expectedSize,\n sha256Checksum: models[313].sha256Checksum,\n addon: models[313].addon,\n engine: models[313].engine,\n quantization: models[313].quantization,\n params: models[313].params\n};\nexport const BERGAMOT_EN_RO = {\n name: 'BERGAMOT_EN_RO',\n src: `registry://${models[317].registrySource}/${models[317].registryPath}`,\n registryPath: models[317].registryPath,\n registrySource: models[317].registrySource,\n blobCoreKey: models[317].blobCoreKey,\n blobBlockOffset: models[317].blobBlockOffset,\n blobBlockLength: models[317].blobBlockLength,\n blobByteOffset: models[317].blobByteOffset,\n modelId: models[317].modelId,\n expectedSize: models[317].expectedSize,\n sha256Checksum: models[317].sha256Checksum,\n addon: models[317].addon,\n engine: models[317].engine,\n quantization: models[317].quantization,\n params: models[317].params\n};\nexport const BERGAMOT_EN_RU = {\n name: 'BERGAMOT_EN_RU',\n src: `registry://${models[321].registrySource}/${models[321].registryPath}`,\n registryPath: models[321].registryPath,\n registrySource: models[321].registrySource,\n blobCoreKey: models[321].blobCoreKey,\n blobBlockOffset: models[321].blobBlockOffset,\n blobBlockLength: models[321].blobBlockLength,\n blobByteOffset: models[321].blobByteOffset,\n modelId: models[321].modelId,\n expectedSize: models[321].expectedSize,\n sha256Checksum: models[321].sha256Checksum,\n addon: models[321].addon,\n engine: models[321].engine,\n quantization: models[321].quantization,\n params: models[321].params\n};\nexport const BERGAMOT_EN_SK = {\n name: 'BERGAMOT_EN_SK',\n src: `registry://${models[325].registrySource}/${models[325].registryPath}`,\n registryPath: models[325].registryPath,\n registrySource: models[325].registrySource,\n blobCoreKey: models[325].blobCoreKey,\n blobBlockOffset: models[325].blobBlockOffset,\n blobBlockLength: models[325].blobBlockLength,\n blobByteOffset: models[325].blobByteOffset,\n modelId: models[325].modelId,\n expectedSize: models[325].expectedSize,\n sha256Checksum: models[325].sha256Checksum,\n addon: models[325].addon,\n engine: models[325].engine,\n quantization: models[325].quantization,\n params: models[325].params\n};\nexport const BERGAMOT_EN_SL = {\n name: 'BERGAMOT_EN_SL',\n src: `registry://${models[329].registrySource}/${models[329].registryPath}`,\n registryPath: models[329].registryPath,\n registrySource: models[329].registrySource,\n blobCoreKey: models[329].blobCoreKey,\n blobBlockOffset: models[329].blobBlockOffset,\n blobBlockLength: models[329].blobBlockLength,\n blobByteOffset: models[329].blobByteOffset,\n modelId: models[329].modelId,\n expectedSize: models[329].expectedSize,\n sha256Checksum: models[329].sha256Checksum,\n addon: models[329].addon,\n engine: models[329].engine,\n quantization: models[329].quantization,\n params: models[329].params\n};\nexport const BERGAMOT_EN_SQ = {\n name: 'BERGAMOT_EN_SQ',\n src: `registry://${models[333].registrySource}/${models[333].registryPath}`,\n registryPath: models[333].registryPath,\n registrySource: models[333].registrySource,\n blobCoreKey: models[333].blobCoreKey,\n blobBlockOffset: models[333].blobBlockOffset,\n blobBlockLength: models[333].blobBlockLength,\n blobByteOffset: models[333].blobByteOffset,\n modelId: models[333].modelId,\n expectedSize: models[333].expectedSize,\n sha256Checksum: models[333].sha256Checksum,\n addon: models[333].addon,\n engine: models[333].engine,\n quantization: models[333].quantization,\n params: models[333].params\n};\nexport const BERGAMOT_EN_SR = {\n name: 'BERGAMOT_EN_SR',\n src: `registry://${models[337].registrySource}/${models[337].registryPath}`,\n registryPath: models[337].registryPath,\n registrySource: models[337].registrySource,\n blobCoreKey: models[337].blobCoreKey,\n blobBlockOffset: models[337].blobBlockOffset,\n blobBlockLength: models[337].blobBlockLength,\n blobByteOffset: models[337].blobByteOffset,\n modelId: models[337].modelId,\n expectedSize: models[337].expectedSize,\n sha256Checksum: models[337].sha256Checksum,\n addon: models[337].addon,\n engine: models[337].engine,\n quantization: models[337].quantization,\n params: models[337].params\n};\nexport const BERGAMOT_EN_SV = {\n name: 'BERGAMOT_EN_SV',\n src: `registry://${models[341].registrySource}/${models[341].registryPath}`,\n registryPath: models[341].registryPath,\n registrySource: models[341].registrySource,\n blobCoreKey: models[341].blobCoreKey,\n blobBlockOffset: models[341].blobBlockOffset,\n blobBlockLength: models[341].blobBlockLength,\n blobByteOffset: models[341].blobByteOffset,\n modelId: models[341].modelId,\n expectedSize: models[341].expectedSize,\n sha256Checksum: models[341].sha256Checksum,\n addon: models[341].addon,\n engine: models[341].engine,\n quantization: models[341].quantization,\n params: models[341].params\n};\nexport const BERGAMOT_EN_TA = {\n name: 'BERGAMOT_EN_TA',\n src: `registry://${models[345].registrySource}/${models[345].registryPath}`,\n registryPath: models[345].registryPath,\n registrySource: models[345].registrySource,\n blobCoreKey: models[345].blobCoreKey,\n blobBlockOffset: models[345].blobBlockOffset,\n blobBlockLength: models[345].blobBlockLength,\n blobByteOffset: models[345].blobByteOffset,\n modelId: models[345].modelId,\n expectedSize: models[345].expectedSize,\n sha256Checksum: models[345].sha256Checksum,\n addon: models[345].addon,\n engine: models[345].engine,\n quantization: models[345].quantization,\n params: models[345].params\n};\nexport const BERGAMOT_EN_TE = {\n name: 'BERGAMOT_EN_TE',\n src: `registry://${models[349].registrySource}/${models[349].registryPath}`,\n registryPath: models[349].registryPath,\n registrySource: models[349].registrySource,\n blobCoreKey: models[349].blobCoreKey,\n blobBlockOffset: models[349].blobBlockOffset,\n blobBlockLength: models[349].blobBlockLength,\n blobByteOffset: models[349].blobByteOffset,\n modelId: models[349].modelId,\n expectedSize: models[349].expectedSize,\n sha256Checksum: models[349].sha256Checksum,\n addon: models[349].addon,\n engine: models[349].engine,\n quantization: models[349].quantization,\n params: models[349].params\n};\nexport const BERGAMOT_EN_TH = {\n name: 'BERGAMOT_EN_TH',\n src: `registry://${models[353].registrySource}/${models[353].registryPath}`,\n registryPath: models[353].registryPath,\n registrySource: models[353].registrySource,\n blobCoreKey: models[353].blobCoreKey,\n blobBlockOffset: models[353].blobBlockOffset,\n blobBlockLength: models[353].blobBlockLength,\n blobByteOffset: models[353].blobByteOffset,\n modelId: models[353].modelId,\n expectedSize: models[353].expectedSize,\n sha256Checksum: models[353].sha256Checksum,\n addon: models[353].addon,\n engine: models[353].engine,\n quantization: models[353].quantization,\n params: models[353].params\n};\nexport const BERGAMOT_EN_TR = {\n name: 'BERGAMOT_EN_TR',\n src: `registry://${models[357].registrySource}/${models[357].registryPath}`,\n registryPath: models[357].registryPath,\n registrySource: models[357].registrySource,\n blobCoreKey: models[357].blobCoreKey,\n blobBlockOffset: models[357].blobBlockOffset,\n blobBlockLength: models[357].blobBlockLength,\n blobByteOffset: models[357].blobByteOffset,\n modelId: models[357].modelId,\n expectedSize: models[357].expectedSize,\n sha256Checksum: models[357].sha256Checksum,\n addon: models[357].addon,\n engine: models[357].engine,\n quantization: models[357].quantization,\n params: models[357].params\n};\nexport const BERGAMOT_EN_UK = {\n name: 'BERGAMOT_EN_UK',\n src: `registry://${models[361].registrySource}/${models[361].registryPath}`,\n registryPath: models[361].registryPath,\n registrySource: models[361].registrySource,\n blobCoreKey: models[361].blobCoreKey,\n blobBlockOffset: models[361].blobBlockOffset,\n blobBlockLength: models[361].blobBlockLength,\n blobByteOffset: models[361].blobByteOffset,\n modelId: models[361].modelId,\n expectedSize: models[361].expectedSize,\n sha256Checksum: models[361].sha256Checksum,\n addon: models[361].addon,\n engine: models[361].engine,\n quantization: models[361].quantization,\n params: models[361].params\n};\nexport const BERGAMOT_EN_VI = {\n name: 'BERGAMOT_EN_VI',\n src: `registry://${models[365].registrySource}/${models[365].registryPath}`,\n registryPath: models[365].registryPath,\n registrySource: models[365].registrySource,\n blobCoreKey: models[365].blobCoreKey,\n blobBlockOffset: models[365].blobBlockOffset,\n blobBlockLength: models[365].blobBlockLength,\n blobByteOffset: models[365].blobByteOffset,\n modelId: models[365].modelId,\n expectedSize: models[365].expectedSize,\n sha256Checksum: models[365].sha256Checksum,\n addon: models[365].addon,\n engine: models[365].engine,\n quantization: models[365].quantization,\n params: models[365].params\n};\nexport const BERGAMOT_EN_ZH = {\n name: 'BERGAMOT_EN_ZH',\n src: `registry://${models[369].registrySource}/${models[369].registryPath}`,\n registryPath: models[369].registryPath,\n registrySource: models[369].registrySource,\n blobCoreKey: models[369].blobCoreKey,\n blobBlockOffset: models[369].blobBlockOffset,\n blobBlockLength: models[369].blobBlockLength,\n blobByteOffset: models[369].blobByteOffset,\n modelId: models[369].modelId,\n expectedSize: models[369].expectedSize,\n sha256Checksum: models[369].sha256Checksum,\n addon: models[369].addon,\n engine: models[369].engine,\n quantization: models[369].quantization,\n params: models[369].params\n};\nexport const BERGAMOT_ES_EN = {\n name: 'BERGAMOT_ES_EN',\n src: `registry://${models[374].registrySource}/${models[374].registryPath}`,\n registryPath: models[374].registryPath,\n registrySource: models[374].registrySource,\n blobCoreKey: models[374].blobCoreKey,\n blobBlockOffset: models[374].blobBlockOffset,\n blobBlockLength: models[374].blobBlockLength,\n blobByteOffset: models[374].blobByteOffset,\n modelId: models[374].modelId,\n expectedSize: models[374].expectedSize,\n sha256Checksum: models[374].sha256Checksum,\n addon: models[374].addon,\n engine: models[374].engine,\n quantization: models[374].quantization,\n params: models[374].params\n};\nexport const BERGAMOT_ET_EN = {\n name: 'BERGAMOT_ET_EN',\n src: `registry://${models[378].registrySource}/${models[378].registryPath}`,\n registryPath: models[378].registryPath,\n registrySource: models[378].registrySource,\n blobCoreKey: models[378].blobCoreKey,\n blobBlockOffset: models[378].blobBlockOffset,\n blobBlockLength: models[378].blobBlockLength,\n blobByteOffset: models[378].blobByteOffset,\n modelId: models[378].modelId,\n expectedSize: models[378].expectedSize,\n sha256Checksum: models[378].sha256Checksum,\n addon: models[378].addon,\n engine: models[378].engine,\n quantization: models[378].quantization,\n params: models[378].params\n};\nexport const BERGAMOT_FA_EN = {\n name: 'BERGAMOT_FA_EN',\n src: `registry://${models[382].registrySource}/${models[382].registryPath}`,\n registryPath: models[382].registryPath,\n registrySource: models[382].registrySource,\n blobCoreKey: models[382].blobCoreKey,\n blobBlockOffset: models[382].blobBlockOffset,\n blobBlockLength: models[382].blobBlockLength,\n blobByteOffset: models[382].blobByteOffset,\n modelId: models[382].modelId,\n expectedSize: models[382].expectedSize,\n sha256Checksum: models[382].sha256Checksum,\n addon: models[382].addon,\n engine: models[382].engine,\n quantization: models[382].quantization,\n params: models[382].params\n};\nexport const BERGAMOT_FI_EN = {\n name: 'BERGAMOT_FI_EN',\n src: `registry://${models[386].registrySource}/${models[386].registryPath}`,\n registryPath: models[386].registryPath,\n registrySource: models[386].registrySource,\n blobCoreKey: models[386].blobCoreKey,\n blobBlockOffset: models[386].blobBlockOffset,\n blobBlockLength: models[386].blobBlockLength,\n blobByteOffset: models[386].blobByteOffset,\n modelId: models[386].modelId,\n expectedSize: models[386].expectedSize,\n sha256Checksum: models[386].sha256Checksum,\n addon: models[386].addon,\n engine: models[386].engine,\n quantization: models[386].quantization,\n params: models[386].params\n};\nexport const BERGAMOT_FR_EN = {\n name: 'BERGAMOT_FR_EN',\n src: `registry://${models[390].registrySource}/${models[390].registryPath}`,\n registryPath: models[390].registryPath,\n registrySource: models[390].registrySource,\n blobCoreKey: models[390].blobCoreKey,\n blobBlockOffset: models[390].blobBlockOffset,\n blobBlockLength: models[390].blobBlockLength,\n blobByteOffset: models[390].blobByteOffset,\n modelId: models[390].modelId,\n expectedSize: models[390].expectedSize,\n sha256Checksum: models[390].sha256Checksum,\n addon: models[390].addon,\n engine: models[390].engine,\n quantization: models[390].quantization,\n params: models[390].params\n};\nexport const BERGAMOT_GU_EN = {\n name: 'BERGAMOT_GU_EN',\n src: `registry://${models[394].registrySource}/${models[394].registryPath}`,\n registryPath: models[394].registryPath,\n registrySource: models[394].registrySource,\n blobCoreKey: models[394].blobCoreKey,\n blobBlockOffset: models[394].blobBlockOffset,\n blobBlockLength: models[394].blobBlockLength,\n blobByteOffset: models[394].blobByteOffset,\n modelId: models[394].modelId,\n expectedSize: models[394].expectedSize,\n sha256Checksum: models[394].sha256Checksum,\n addon: models[394].addon,\n engine: models[394].engine,\n quantization: models[394].quantization,\n params: models[394].params\n};\nexport const BERGAMOT = {\n name: 'BERGAMOT',\n src: `registry://${models[398].registrySource}/${models[398].registryPath}`,\n registryPath: models[398].registryPath,\n registrySource: models[398].registrySource,\n blobCoreKey: models[398].blobCoreKey,\n blobBlockOffset: models[398].blobBlockOffset,\n blobBlockLength: models[398].blobBlockLength,\n blobByteOffset: models[398].blobByteOffset,\n modelId: models[398].modelId,\n expectedSize: models[398].expectedSize,\n sha256Checksum: models[398].sha256Checksum,\n addon: models[398].addon,\n engine: models[398].engine,\n quantization: models[398].quantization,\n params: models[398].params\n};\nexport const BERGAMOT_HE_EN = {\n name: 'BERGAMOT_HE_EN',\n src: `registry://${models[402].registrySource}/${models[402].registryPath}`,\n registryPath: models[402].registryPath,\n registrySource: models[402].registrySource,\n blobCoreKey: models[402].blobCoreKey,\n blobBlockOffset: models[402].blobBlockOffset,\n blobBlockLength: models[402].blobBlockLength,\n blobByteOffset: models[402].blobByteOffset,\n modelId: models[402].modelId,\n expectedSize: models[402].expectedSize,\n sha256Checksum: models[402].sha256Checksum,\n addon: models[402].addon,\n engine: models[402].engine,\n quantization: models[402].quantization,\n params: models[402].params\n};\nexport const BERGAMOT_HI_EN = {\n name: 'BERGAMOT_HI_EN',\n src: `registry://${models[406].registrySource}/${models[406].registryPath}`,\n registryPath: models[406].registryPath,\n registrySource: models[406].registrySource,\n blobCoreKey: models[406].blobCoreKey,\n blobBlockOffset: models[406].blobBlockOffset,\n blobBlockLength: models[406].blobBlockLength,\n blobByteOffset: models[406].blobByteOffset,\n modelId: models[406].modelId,\n expectedSize: models[406].expectedSize,\n sha256Checksum: models[406].sha256Checksum,\n addon: models[406].addon,\n engine: models[406].engine,\n quantization: models[406].quantization,\n params: models[406].params\n};\nexport const BERGAMOT_HR_EN = {\n name: 'BERGAMOT_HR_EN',\n src: `registry://${models[410].registrySource}/${models[410].registryPath}`,\n registryPath: models[410].registryPath,\n registrySource: models[410].registrySource,\n blobCoreKey: models[410].blobCoreKey,\n blobBlockOffset: models[410].blobBlockOffset,\n blobBlockLength: models[410].blobBlockLength,\n blobByteOffset: models[410].blobByteOffset,\n modelId: models[410].modelId,\n expectedSize: models[410].expectedSize,\n sha256Checksum: models[410].sha256Checksum,\n addon: models[410].addon,\n engine: models[410].engine,\n quantization: models[410].quantization,\n params: models[410].params\n};\nexport const BERGAMOT_HU_EN = {\n name: 'BERGAMOT_HU_EN',\n src: `registry://${models[414].registrySource}/${models[414].registryPath}`,\n registryPath: models[414].registryPath,\n registrySource: models[414].registrySource,\n blobCoreKey: models[414].blobCoreKey,\n blobBlockOffset: models[414].blobBlockOffset,\n blobBlockLength: models[414].blobBlockLength,\n blobByteOffset: models[414].blobByteOffset,\n modelId: models[414].modelId,\n expectedSize: models[414].expectedSize,\n sha256Checksum: models[414].sha256Checksum,\n addon: models[414].addon,\n engine: models[414].engine,\n quantization: models[414].quantization,\n params: models[414].params\n};\nexport const BERGAMOT_ID_EN = {\n name: 'BERGAMOT_ID_EN',\n src: `registry://${models[418].registrySource}/${models[418].registryPath}`,\n registryPath: models[418].registryPath,\n registrySource: models[418].registrySource,\n blobCoreKey: models[418].blobCoreKey,\n blobBlockOffset: models[418].blobBlockOffset,\n blobBlockLength: models[418].blobBlockLength,\n blobByteOffset: models[418].blobByteOffset,\n modelId: models[418].modelId,\n expectedSize: models[418].expectedSize,\n sha256Checksum: models[418].sha256Checksum,\n addon: models[418].addon,\n engine: models[418].engine,\n quantization: models[418].quantization,\n params: models[418].params\n};\nexport const BERGAMOT_IS_EN = {\n name: 'BERGAMOT_IS_EN',\n src: `registry://${models[422].registrySource}/${models[422].registryPath}`,\n registryPath: models[422].registryPath,\n registrySource: models[422].registrySource,\n blobCoreKey: models[422].blobCoreKey,\n blobBlockOffset: models[422].blobBlockOffset,\n blobBlockLength: models[422].blobBlockLength,\n blobByteOffset: models[422].blobByteOffset,\n modelId: models[422].modelId,\n expectedSize: models[422].expectedSize,\n sha256Checksum: models[422].sha256Checksum,\n addon: models[422].addon,\n engine: models[422].engine,\n quantization: models[422].quantization,\n params: models[422].params\n};\nexport const BERGAMOT_IT_EN = {\n name: 'BERGAMOT_IT_EN',\n src: `registry://${models[426].registrySource}/${models[426].registryPath}`,\n registryPath: models[426].registryPath,\n registrySource: models[426].registrySource,\n blobCoreKey: models[426].blobCoreKey,\n blobBlockOffset: models[426].blobBlockOffset,\n blobBlockLength: models[426].blobBlockLength,\n blobByteOffset: models[426].blobByteOffset,\n modelId: models[426].modelId,\n expectedSize: models[426].expectedSize,\n sha256Checksum: models[426].sha256Checksum,\n addon: models[426].addon,\n engine: models[426].engine,\n quantization: models[426].quantization,\n params: models[426].params\n};\nexport const BERGAMOT_JA_EN = {\n name: 'BERGAMOT_JA_EN',\n src: `registry://${models[430].registrySource}/${models[430].registryPath}`,\n registryPath: models[430].registryPath,\n registrySource: models[430].registrySource,\n blobCoreKey: models[430].blobCoreKey,\n blobBlockOffset: models[430].blobBlockOffset,\n blobBlockLength: models[430].blobBlockLength,\n blobByteOffset: models[430].blobByteOffset,\n modelId: models[430].modelId,\n expectedSize: models[430].expectedSize,\n sha256Checksum: models[430].sha256Checksum,\n addon: models[430].addon,\n engine: models[430].engine,\n quantization: models[430].quantization,\n params: models[430].params\n};\nexport const BERGAMOT_KN_EN = {\n name: 'BERGAMOT_KN_EN',\n src: `registry://${models[434].registrySource}/${models[434].registryPath}`,\n registryPath: models[434].registryPath,\n registrySource: models[434].registrySource,\n blobCoreKey: models[434].blobCoreKey,\n blobBlockOffset: models[434].blobBlockOffset,\n blobBlockLength: models[434].blobBlockLength,\n blobByteOffset: models[434].blobByteOffset,\n modelId: models[434].modelId,\n expectedSize: models[434].expectedSize,\n sha256Checksum: models[434].sha256Checksum,\n addon: models[434].addon,\n engine: models[434].engine,\n quantization: models[434].quantization,\n params: models[434].params\n};\nexport const BERGAMOT_KO_EN = {\n name: 'BERGAMOT_KO_EN',\n src: `registry://${models[438].registrySource}/${models[438].registryPath}`,\n registryPath: models[438].registryPath,\n registrySource: models[438].registrySource,\n blobCoreKey: models[438].blobCoreKey,\n blobBlockOffset: models[438].blobBlockOffset,\n blobBlockLength: models[438].blobBlockLength,\n blobByteOffset: models[438].blobByteOffset,\n modelId: models[438].modelId,\n expectedSize: models[438].expectedSize,\n sha256Checksum: models[438].sha256Checksum,\n addon: models[438].addon,\n engine: models[438].engine,\n quantization: models[438].quantization,\n params: models[438].params\n};\nexport const BERGAMOT_LT_EN = {\n name: 'BERGAMOT_LT_EN',\n src: `registry://${models[442].registrySource}/${models[442].registryPath}`,\n registryPath: models[442].registryPath,\n registrySource: models[442].registrySource,\n blobCoreKey: models[442].blobCoreKey,\n blobBlockOffset: models[442].blobBlockOffset,\n blobBlockLength: models[442].blobBlockLength,\n blobByteOffset: models[442].blobByteOffset,\n modelId: models[442].modelId,\n expectedSize: models[442].expectedSize,\n sha256Checksum: models[442].sha256Checksum,\n addon: models[442].addon,\n engine: models[442].engine,\n quantization: models[442].quantization,\n params: models[442].params\n};\nexport const BERGAMOT_LV_EN = {\n name: 'BERGAMOT_LV_EN',\n src: `registry://${models[446].registrySource}/${models[446].registryPath}`,\n registryPath: models[446].registryPath,\n registrySource: models[446].registrySource,\n blobCoreKey: models[446].blobCoreKey,\n blobBlockOffset: models[446].blobBlockOffset,\n blobBlockLength: models[446].blobBlockLength,\n blobByteOffset: models[446].blobByteOffset,\n modelId: models[446].modelId,\n expectedSize: models[446].expectedSize,\n sha256Checksum: models[446].sha256Checksum,\n addon: models[446].addon,\n engine: models[446].engine,\n quantization: models[446].quantization,\n params: models[446].params\n};\nexport const BERGAMOT_ML_EN = {\n name: 'BERGAMOT_ML_EN',\n src: `registry://${models[450].registrySource}/${models[450].registryPath}`,\n registryPath: models[450].registryPath,\n registrySource: models[450].registrySource,\n blobCoreKey: models[450].blobCoreKey,\n blobBlockOffset: models[450].blobBlockOffset,\n blobBlockLength: models[450].blobBlockLength,\n blobByteOffset: models[450].blobByteOffset,\n modelId: models[450].modelId,\n expectedSize: models[450].expectedSize,\n sha256Checksum: models[450].sha256Checksum,\n addon: models[450].addon,\n engine: models[450].engine,\n quantization: models[450].quantization,\n params: models[450].params\n};\nexport const BERGAMOT_MS_EN = {\n name: 'BERGAMOT_MS_EN',\n src: `registry://${models[454].registrySource}/${models[454].registryPath}`,\n registryPath: models[454].registryPath,\n registrySource: models[454].registrySource,\n blobCoreKey: models[454].blobCoreKey,\n blobBlockOffset: models[454].blobBlockOffset,\n blobBlockLength: models[454].blobBlockLength,\n blobByteOffset: models[454].blobByteOffset,\n modelId: models[454].modelId,\n expectedSize: models[454].expectedSize,\n sha256Checksum: models[454].sha256Checksum,\n addon: models[454].addon,\n engine: models[454].engine,\n quantization: models[454].quantization,\n params: models[454].params\n};\nexport const BERGAMOT_MT_EN = {\n name: 'BERGAMOT_MT_EN',\n src: `registry://${models[458].registrySource}/${models[458].registryPath}`,\n registryPath: models[458].registryPath,\n registrySource: models[458].registrySource,\n blobCoreKey: models[458].blobCoreKey,\n blobBlockOffset: models[458].blobBlockOffset,\n blobBlockLength: models[458].blobBlockLength,\n blobByteOffset: models[458].blobByteOffset,\n modelId: models[458].modelId,\n expectedSize: models[458].expectedSize,\n sha256Checksum: models[458].sha256Checksum,\n addon: models[458].addon,\n engine: models[458].engine,\n quantization: models[458].quantization,\n params: models[458].params\n};\nexport const BERGAMOT_NB_EN = {\n name: 'BERGAMOT_NB_EN',\n src: `registry://${models[462].registrySource}/${models[462].registryPath}`,\n registryPath: models[462].registryPath,\n registrySource: models[462].registrySource,\n blobCoreKey: models[462].blobCoreKey,\n blobBlockOffset: models[462].blobBlockOffset,\n blobBlockLength: models[462].blobBlockLength,\n blobByteOffset: models[462].blobByteOffset,\n modelId: models[462].modelId,\n expectedSize: models[462].expectedSize,\n sha256Checksum: models[462].sha256Checksum,\n addon: models[462].addon,\n engine: models[462].engine,\n quantization: models[462].quantization,\n params: models[462].params\n};\nexport const BERGAMOT_NL_EN = {\n name: 'BERGAMOT_NL_EN',\n src: `registry://${models[466].registrySource}/${models[466].registryPath}`,\n registryPath: models[466].registryPath,\n registrySource: models[466].registrySource,\n blobCoreKey: models[466].blobCoreKey,\n blobBlockOffset: models[466].blobBlockOffset,\n blobBlockLength: models[466].blobBlockLength,\n blobByteOffset: models[466].blobByteOffset,\n modelId: models[466].modelId,\n expectedSize: models[466].expectedSize,\n sha256Checksum: models[466].sha256Checksum,\n addon: models[466].addon,\n engine: models[466].engine,\n quantization: models[466].quantization,\n params: models[466].params\n};\nexport const BERGAMOT_NN_EN = {\n name: 'BERGAMOT_NN_EN',\n src: `registry://${models[470].registrySource}/${models[470].registryPath}`,\n registryPath: models[470].registryPath,\n registrySource: models[470].registrySource,\n blobCoreKey: models[470].blobCoreKey,\n blobBlockOffset: models[470].blobBlockOffset,\n blobBlockLength: models[470].blobBlockLength,\n blobByteOffset: models[470].blobByteOffset,\n modelId: models[470].modelId,\n expectedSize: models[470].expectedSize,\n sha256Checksum: models[470].sha256Checksum,\n addon: models[470].addon,\n engine: models[470].engine,\n quantization: models[470].quantization,\n params: models[470].params\n};\nexport const BERGAMOT_NO_EN = {\n name: 'BERGAMOT_NO_EN',\n src: `registry://${models[474].registrySource}/${models[474].registryPath}`,\n registryPath: models[474].registryPath,\n registrySource: models[474].registrySource,\n blobCoreKey: models[474].blobCoreKey,\n blobBlockOffset: models[474].blobBlockOffset,\n blobBlockLength: models[474].blobBlockLength,\n blobByteOffset: models[474].blobByteOffset,\n modelId: models[474].modelId,\n expectedSize: models[474].expectedSize,\n sha256Checksum: models[474].sha256Checksum,\n addon: models[474].addon,\n engine: models[474].engine,\n quantization: models[474].quantization,\n params: models[474].params\n};\nexport const BERGAMOT_PL_EN = {\n name: 'BERGAMOT_PL_EN',\n src: `registry://${models[478].registrySource}/${models[478].registryPath}`,\n registryPath: models[478].registryPath,\n registrySource: models[478].registrySource,\n blobCoreKey: models[478].blobCoreKey,\n blobBlockOffset: models[478].blobBlockOffset,\n blobBlockLength: models[478].blobBlockLength,\n blobByteOffset: models[478].blobByteOffset,\n modelId: models[478].modelId,\n expectedSize: models[478].expectedSize,\n sha256Checksum: models[478].sha256Checksum,\n addon: models[478].addon,\n engine: models[478].engine,\n quantization: models[478].quantization,\n params: models[478].params\n};\nexport const BERGAMOT_PT_EN = {\n name: 'BERGAMOT_PT_EN',\n src: `registry://${models[482].registrySource}/${models[482].registryPath}`,\n registryPath: models[482].registryPath,\n registrySource: models[482].registrySource,\n blobCoreKey: models[482].blobCoreKey,\n blobBlockOffset: models[482].blobBlockOffset,\n blobBlockLength: models[482].blobBlockLength,\n blobByteOffset: models[482].blobByteOffset,\n modelId: models[482].modelId,\n expectedSize: models[482].expectedSize,\n sha256Checksum: models[482].sha256Checksum,\n addon: models[482].addon,\n engine: models[482].engine,\n quantization: models[482].quantization,\n params: models[482].params\n};\nexport const BERGAMOT_RO_EN = {\n name: 'BERGAMOT_RO_EN',\n src: `registry://${models[486].registrySource}/${models[486].registryPath}`,\n registryPath: models[486].registryPath,\n registrySource: models[486].registrySource,\n blobCoreKey: models[486].blobCoreKey,\n blobBlockOffset: models[486].blobBlockOffset,\n blobBlockLength: models[486].blobBlockLength,\n blobByteOffset: models[486].blobByteOffset,\n modelId: models[486].modelId,\n expectedSize: models[486].expectedSize,\n sha256Checksum: models[486].sha256Checksum,\n addon: models[486].addon,\n engine: models[486].engine,\n quantization: models[486].quantization,\n params: models[486].params\n};\nexport const BERGAMOT_RU_EN = {\n name: 'BERGAMOT_RU_EN',\n src: `registry://${models[490].registrySource}/${models[490].registryPath}`,\n registryPath: models[490].registryPath,\n registrySource: models[490].registrySource,\n blobCoreKey: models[490].blobCoreKey,\n blobBlockOffset: models[490].blobBlockOffset,\n blobBlockLength: models[490].blobBlockLength,\n blobByteOffset: models[490].blobByteOffset,\n modelId: models[490].modelId,\n expectedSize: models[490].expectedSize,\n sha256Checksum: models[490].sha256Checksum,\n addon: models[490].addon,\n engine: models[490].engine,\n quantization: models[490].quantization,\n params: models[490].params\n};\nexport const BERGAMOT_SK_EN = {\n name: 'BERGAMOT_SK_EN',\n src: `registry://${models[494].registrySource}/${models[494].registryPath}`,\n registryPath: models[494].registryPath,\n registrySource: models[494].registrySource,\n blobCoreKey: models[494].blobCoreKey,\n blobBlockOffset: models[494].blobBlockOffset,\n blobBlockLength: models[494].blobBlockLength,\n blobByteOffset: models[494].blobByteOffset,\n modelId: models[494].modelId,\n expectedSize: models[494].expectedSize,\n sha256Checksum: models[494].sha256Checksum,\n addon: models[494].addon,\n engine: models[494].engine,\n quantization: models[494].quantization,\n params: models[494].params\n};\nexport const BERGAMOT_SL_EN = {\n name: 'BERGAMOT_SL_EN',\n src: `registry://${models[498].registrySource}/${models[498].registryPath}`,\n registryPath: models[498].registryPath,\n registrySource: models[498].registrySource,\n blobCoreKey: models[498].blobCoreKey,\n blobBlockOffset: models[498].blobBlockOffset,\n blobBlockLength: models[498].blobBlockLength,\n blobByteOffset: models[498].blobByteOffset,\n modelId: models[498].modelId,\n expectedSize: models[498].expectedSize,\n sha256Checksum: models[498].sha256Checksum,\n addon: models[498].addon,\n engine: models[498].engine,\n quantization: models[498].quantization,\n params: models[498].params\n};\nexport const BERGAMOT_SQ_EN = {\n name: 'BERGAMOT_SQ_EN',\n src: `registry://${models[502].registrySource}/${models[502].registryPath}`,\n registryPath: models[502].registryPath,\n registrySource: models[502].registrySource,\n blobCoreKey: models[502].blobCoreKey,\n blobBlockOffset: models[502].blobBlockOffset,\n blobBlockLength: models[502].blobBlockLength,\n blobByteOffset: models[502].blobByteOffset,\n modelId: models[502].modelId,\n expectedSize: models[502].expectedSize,\n sha256Checksum: models[502].sha256Checksum,\n addon: models[502].addon,\n engine: models[502].engine,\n quantization: models[502].quantization,\n params: models[502].params\n};\nexport const BERGAMOT_SR_EN = {\n name: 'BERGAMOT_SR_EN',\n src: `registry://${models[506].registrySource}/${models[506].registryPath}`,\n registryPath: models[506].registryPath,\n registrySource: models[506].registrySource,\n blobCoreKey: models[506].blobCoreKey,\n blobBlockOffset: models[506].blobBlockOffset,\n blobBlockLength: models[506].blobBlockLength,\n blobByteOffset: models[506].blobByteOffset,\n modelId: models[506].modelId,\n expectedSize: models[506].expectedSize,\n sha256Checksum: models[506].sha256Checksum,\n addon: models[506].addon,\n engine: models[506].engine,\n quantization: models[506].quantization,\n params: models[506].params\n};\nexport const BERGAMOT_SV_EN = {\n name: 'BERGAMOT_SV_EN',\n src: `registry://${models[510].registrySource}/${models[510].registryPath}`,\n registryPath: models[510].registryPath,\n registrySource: models[510].registrySource,\n blobCoreKey: models[510].blobCoreKey,\n blobBlockOffset: models[510].blobBlockOffset,\n blobBlockLength: models[510].blobBlockLength,\n blobByteOffset: models[510].blobByteOffset,\n modelId: models[510].modelId,\n expectedSize: models[510].expectedSize,\n sha256Checksum: models[510].sha256Checksum,\n addon: models[510].addon,\n engine: models[510].engine,\n quantization: models[510].quantization,\n params: models[510].params\n};\nexport const BERGAMOT_TA_EN = {\n name: 'BERGAMOT_TA_EN',\n src: `registry://${models[514].registrySource}/${models[514].registryPath}`,\n registryPath: models[514].registryPath,\n registrySource: models[514].registrySource,\n blobCoreKey: models[514].blobCoreKey,\n blobBlockOffset: models[514].blobBlockOffset,\n blobBlockLength: models[514].blobBlockLength,\n blobByteOffset: models[514].blobByteOffset,\n modelId: models[514].modelId,\n expectedSize: models[514].expectedSize,\n sha256Checksum: models[514].sha256Checksum,\n addon: models[514].addon,\n engine: models[514].engine,\n quantization: models[514].quantization,\n params: models[514].params\n};\nexport const BERGAMOT_TE_EN = {\n name: 'BERGAMOT_TE_EN',\n src: `registry://${models[518].registrySource}/${models[518].registryPath}`,\n registryPath: models[518].registryPath,\n registrySource: models[518].registrySource,\n blobCoreKey: models[518].blobCoreKey,\n blobBlockOffset: models[518].blobBlockOffset,\n blobBlockLength: models[518].blobBlockLength,\n blobByteOffset: models[518].blobByteOffset,\n modelId: models[518].modelId,\n expectedSize: models[518].expectedSize,\n sha256Checksum: models[518].sha256Checksum,\n addon: models[518].addon,\n engine: models[518].engine,\n quantization: models[518].quantization,\n params: models[518].params\n};\nexport const BERGAMOT_TH_EN = {\n name: 'BERGAMOT_TH_EN',\n src: `registry://${models[522].registrySource}/${models[522].registryPath}`,\n registryPath: models[522].registryPath,\n registrySource: models[522].registrySource,\n blobCoreKey: models[522].blobCoreKey,\n blobBlockOffset: models[522].blobBlockOffset,\n blobBlockLength: models[522].blobBlockLength,\n blobByteOffset: models[522].blobByteOffset,\n modelId: models[522].modelId,\n expectedSize: models[522].expectedSize,\n sha256Checksum: models[522].sha256Checksum,\n addon: models[522].addon,\n engine: models[522].engine,\n quantization: models[522].quantization,\n params: models[522].params\n};\nexport const BERGAMOT_TR_EN = {\n name: 'BERGAMOT_TR_EN',\n src: `registry://${models[526].registrySource}/${models[526].registryPath}`,\n registryPath: models[526].registryPath,\n registrySource: models[526].registrySource,\n blobCoreKey: models[526].blobCoreKey,\n blobBlockOffset: models[526].blobBlockOffset,\n blobBlockLength: models[526].blobBlockLength,\n blobByteOffset: models[526].blobByteOffset,\n modelId: models[526].modelId,\n expectedSize: models[526].expectedSize,\n sha256Checksum: models[526].sha256Checksum,\n addon: models[526].addon,\n engine: models[526].engine,\n quantization: models[526].quantization,\n params: models[526].params\n};\nexport const BERGAMOT_UK_EN = {\n name: 'BERGAMOT_UK_EN',\n src: `registry://${models[530].registrySource}/${models[530].registryPath}`,\n registryPath: models[530].registryPath,\n registrySource: models[530].registrySource,\n blobCoreKey: models[530].blobCoreKey,\n blobBlockOffset: models[530].blobBlockOffset,\n blobBlockLength: models[530].blobBlockLength,\n blobByteOffset: models[530].blobByteOffset,\n modelId: models[530].modelId,\n expectedSize: models[530].expectedSize,\n sha256Checksum: models[530].sha256Checksum,\n addon: models[530].addon,\n engine: models[530].engine,\n quantization: models[530].quantization,\n params: models[530].params\n};\nexport const BERGAMOT_VI_EN = {\n name: 'BERGAMOT_VI_EN',\n src: `registry://${models[534].registrySource}/${models[534].registryPath}`,\n registryPath: models[534].registryPath,\n registrySource: models[534].registrySource,\n blobCoreKey: models[534].blobCoreKey,\n blobBlockOffset: models[534].blobBlockOffset,\n blobBlockLength: models[534].blobBlockLength,\n blobByteOffset: models[534].blobByteOffset,\n modelId: models[534].modelId,\n expectedSize: models[534].expectedSize,\n sha256Checksum: models[534].sha256Checksum,\n addon: models[534].addon,\n engine: models[534].engine,\n quantization: models[534].quantization,\n params: models[534].params\n};\nexport const BERGAMOT_ZH_EN = {\n name: 'BERGAMOT_ZH_EN',\n src: `registry://${models[538].registrySource}/${models[538].registryPath}`,\n registryPath: models[538].registryPath,\n registrySource: models[538].registrySource,\n blobCoreKey: models[538].blobCoreKey,\n blobBlockOffset: models[538].blobBlockOffset,\n blobBlockLength: models[538].blobBlockLength,\n blobByteOffset: models[538].blobByteOffset,\n modelId: models[538].modelId,\n expectedSize: models[538].expectedSize,\n sha256Checksum: models[538].sha256Checksum,\n addon: models[538].addon,\n engine: models[538].engine,\n quantization: models[538].quantization,\n params: models[538].params\n};\nexport const MARIAN_EN_HI_INDIC_1B_F16 = {\n name: 'MARIAN_EN_HI_INDIC_1B_F16',\n src: `registry://${models[540].registrySource}/${models[540].registryPath}`,\n registryPath: models[540].registryPath,\n registrySource: models[540].registrySource,\n blobCoreKey: models[540].blobCoreKey,\n blobBlockOffset: models[540].blobBlockOffset,\n blobBlockLength: models[540].blobBlockLength,\n blobByteOffset: models[540].blobByteOffset,\n modelId: models[540].modelId,\n expectedSize: models[540].expectedSize,\n sha256Checksum: models[540].sha256Checksum,\n addon: models[540].addon,\n engine: models[540].engine,\n quantization: models[540].quantization,\n params: models[540].params\n};\nexport const MARIAN_EN_HI_INDIC_200M_F16 = {\n name: 'MARIAN_EN_HI_INDIC_200M_F16',\n src: `registry://${models[541].registrySource}/${models[541].registryPath}`,\n registryPath: models[541].registryPath,\n registrySource: models[541].registrySource,\n blobCoreKey: models[541].blobCoreKey,\n blobBlockOffset: models[541].blobBlockOffset,\n blobBlockLength: models[541].blobBlockLength,\n blobByteOffset: models[541].blobByteOffset,\n modelId: models[541].modelId,\n expectedSize: models[541].expectedSize,\n sha256Checksum: models[541].sha256Checksum,\n addon: models[541].addon,\n engine: models[541].engine,\n quantization: models[541].quantization,\n params: models[541].params\n};\nexport const MARIAN_HI_EN_INDIC_1B_F16 = {\n name: 'MARIAN_HI_EN_INDIC_1B_F16',\n src: `registry://${models[542].registrySource}/${models[542].registryPath}`,\n registryPath: models[542].registryPath,\n registrySource: models[542].registrySource,\n blobCoreKey: models[542].blobCoreKey,\n blobBlockOffset: models[542].blobBlockOffset,\n blobBlockLength: models[542].blobBlockLength,\n blobByteOffset: models[542].blobByteOffset,\n modelId: models[542].modelId,\n expectedSize: models[542].expectedSize,\n sha256Checksum: models[542].sha256Checksum,\n addon: models[542].addon,\n engine: models[542].engine,\n quantization: models[542].quantization,\n params: models[542].params\n};\nexport const MARIAN_HI_EN_INDIC_200M_F16 = {\n name: 'MARIAN_HI_EN_INDIC_200M_F16',\n src: `registry://${models[543].registrySource}/${models[543].registryPath}`,\n registryPath: models[543].registryPath,\n registrySource: models[543].registrySource,\n blobCoreKey: models[543].blobCoreKey,\n blobBlockOffset: models[543].blobBlockOffset,\n blobBlockLength: models[543].blobBlockLength,\n blobByteOffset: models[543].blobByteOffset,\n modelId: models[543].modelId,\n expectedSize: models[543].expectedSize,\n sha256Checksum: models[543].sha256Checksum,\n addon: models[543].addon,\n engine: models[543].engine,\n quantization: models[543].quantization,\n params: models[543].params\n};\nexport const MARIAN_HI_HI_INDIC_1B_F16 = {\n name: 'MARIAN_HI_HI_INDIC_1B_F16',\n src: `registry://${models[544].registrySource}/${models[544].registryPath}`,\n registryPath: models[544].registryPath,\n registrySource: models[544].registrySource,\n blobCoreKey: models[544].blobCoreKey,\n blobBlockOffset: models[544].blobBlockOffset,\n blobBlockLength: models[544].blobBlockLength,\n blobByteOffset: models[544].blobByteOffset,\n modelId: models[544].modelId,\n expectedSize: models[544].expectedSize,\n sha256Checksum: models[544].sha256Checksum,\n addon: models[544].addon,\n engine: models[544].engine,\n quantization: models[544].quantization,\n params: models[544].params\n};\nexport const MARIAN_HI_HI_INDIC_320M_F16 = {\n name: 'MARIAN_HI_HI_INDIC_320M_F16',\n src: `registry://${models[545].registrySource}/${models[545].registryPath}`,\n registryPath: models[545].registryPath,\n registrySource: models[545].registrySource,\n blobCoreKey: models[545].blobCoreKey,\n blobBlockOffset: models[545].blobBlockOffset,\n blobBlockLength: models[545].blobBlockLength,\n blobByteOffset: models[545].blobByteOffset,\n modelId: models[545].modelId,\n expectedSize: models[545].expectedSize,\n sha256Checksum: models[545].sha256Checksum,\n addon: models[545].addon,\n engine: models[545].engine,\n quantization: models[545].quantization,\n params: models[545].params\n};\nexport const MARIAN_EN_HI_INDIC_1B_Q4_0 = {\n name: 'MARIAN_EN_HI_INDIC_1B_Q4_0',\n src: `registry://${models[546].registrySource}/${models[546].registryPath}`,\n registryPath: models[546].registryPath,\n registrySource: models[546].registrySource,\n blobCoreKey: models[546].blobCoreKey,\n blobBlockOffset: models[546].blobBlockOffset,\n blobBlockLength: models[546].blobBlockLength,\n blobByteOffset: models[546].blobByteOffset,\n modelId: models[546].modelId,\n expectedSize: models[546].expectedSize,\n sha256Checksum: models[546].sha256Checksum,\n addon: models[546].addon,\n engine: models[546].engine,\n quantization: models[546].quantization,\n params: models[546].params\n};\nexport const MARIAN_EN_HI_INDIC_200M_Q4_0 = {\n name: 'MARIAN_EN_HI_INDIC_200M_Q4_0',\n src: `registry://${models[547].registrySource}/${models[547].registryPath}`,\n registryPath: models[547].registryPath,\n registrySource: models[547].registrySource,\n blobCoreKey: models[547].blobCoreKey,\n blobBlockOffset: models[547].blobBlockOffset,\n blobBlockLength: models[547].blobBlockLength,\n blobByteOffset: models[547].blobByteOffset,\n modelId: models[547].modelId,\n expectedSize: models[547].expectedSize,\n sha256Checksum: models[547].sha256Checksum,\n addon: models[547].addon,\n engine: models[547].engine,\n quantization: models[547].quantization,\n params: models[547].params\n};\nexport const MARIAN_HI_EN_INDIC_1B_Q4_0 = {\n name: 'MARIAN_HI_EN_INDIC_1B_Q4_0',\n src: `registry://${models[548].registrySource}/${models[548].registryPath}`,\n registryPath: models[548].registryPath,\n registrySource: models[548].registrySource,\n blobCoreKey: models[548].blobCoreKey,\n blobBlockOffset: models[548].blobBlockOffset,\n blobBlockLength: models[548].blobBlockLength,\n blobByteOffset: models[548].blobByteOffset,\n modelId: models[548].modelId,\n expectedSize: models[548].expectedSize,\n sha256Checksum: models[548].sha256Checksum,\n addon: models[548].addon,\n engine: models[548].engine,\n quantization: models[548].quantization,\n params: models[548].params\n};\nexport const MARIAN_HI_EN_INDIC_200M_Q4_0 = {\n name: 'MARIAN_HI_EN_INDIC_200M_Q4_0',\n src: `registry://${models[549].registrySource}/${models[549].registryPath}`,\n registryPath: models[549].registryPath,\n registrySource: models[549].registrySource,\n blobCoreKey: models[549].blobCoreKey,\n blobBlockOffset: models[549].blobBlockOffset,\n blobBlockLength: models[549].blobBlockLength,\n blobByteOffset: models[549].blobByteOffset,\n modelId: models[549].modelId,\n expectedSize: models[549].expectedSize,\n sha256Checksum: models[549].sha256Checksum,\n addon: models[549].addon,\n engine: models[549].engine,\n quantization: models[549].quantization,\n params: models[549].params\n};\nexport const MARIAN_HI_HI_INDIC_1B_Q4_0 = {\n name: 'MARIAN_HI_HI_INDIC_1B_Q4_0',\n src: `registry://${models[550].registrySource}/${models[550].registryPath}`,\n registryPath: models[550].registryPath,\n registrySource: models[550].registrySource,\n blobCoreKey: models[550].blobCoreKey,\n blobBlockOffset: models[550].blobBlockOffset,\n blobBlockLength: models[550].blobBlockLength,\n blobByteOffset: models[550].blobByteOffset,\n modelId: models[550].modelId,\n expectedSize: models[550].expectedSize,\n sha256Checksum: models[550].sha256Checksum,\n addon: models[550].addon,\n engine: models[550].engine,\n quantization: models[550].quantization,\n params: models[550].params\n};\nexport const MARIAN_HI_HI_INDIC_320M_Q4_0 = {\n name: 'MARIAN_HI_HI_INDIC_320M_Q4_0',\n src: `registry://${models[551].registrySource}/${models[551].registryPath}`,\n registryPath: models[551].registryPath,\n registrySource: models[551].registrySource,\n blobCoreKey: models[551].blobCoreKey,\n blobBlockOffset: models[551].blobBlockOffset,\n blobBlockLength: models[551].blobBlockLength,\n blobByteOffset: models[551].blobByteOffset,\n modelId: models[551].modelId,\n expectedSize: models[551].expectedSize,\n sha256Checksum: models[551].sha256Checksum,\n addon: models[551].addon,\n engine: models[551].engine,\n quantization: models[551].quantization,\n params: models[551].params\n};\nexport const OCR_CRAFT_DETECTOR = {\n name: 'OCR_CRAFT_DETECTOR',\n src: `registry://${models[552].registrySource}/${models[552].registryPath}`,\n registryPath: models[552].registryPath,\n registrySource: models[552].registrySource,\n blobCoreKey: models[552].blobCoreKey,\n blobBlockOffset: models[552].blobBlockOffset,\n blobBlockLength: models[552].blobBlockLength,\n blobByteOffset: models[552].blobByteOffset,\n modelId: models[552].modelId,\n expectedSize: models[552].expectedSize,\n sha256Checksum: models[552].sha256Checksum,\n addon: models[552].addon,\n engine: models[552].engine,\n quantization: models[552].quantization,\n params: models[552].params\n};\nexport const OCR_LATIN_RECOGNIZER = {\n name: 'OCR_LATIN_RECOGNIZER',\n src: `registry://${models[553].registrySource}/${models[553].registryPath}`,\n registryPath: models[553].registryPath,\n registrySource: models[553].registrySource,\n blobCoreKey: models[553].blobCoreKey,\n blobBlockOffset: models[553].blobBlockOffset,\n blobBlockLength: models[553].blobBlockLength,\n blobByteOffset: models[553].blobByteOffset,\n modelId: models[553].modelId,\n expectedSize: models[553].expectedSize,\n sha256Checksum: models[553].sha256Checksum,\n addon: models[553].addon,\n engine: models[553].engine,\n quantization: models[553].quantization,\n params: models[553].params\n};\nexport const OCR_ARABIC_RECOGNIZER = {\n name: 'OCR_ARABIC_RECOGNIZER',\n src: `registry://${models[554].registrySource}/${models[554].registryPath}`,\n registryPath: models[554].registryPath,\n registrySource: models[554].registrySource,\n blobCoreKey: models[554].blobCoreKey,\n blobBlockOffset: models[554].blobBlockOffset,\n blobBlockLength: models[554].blobBlockLength,\n blobByteOffset: models[554].blobByteOffset,\n modelId: models[554].modelId,\n expectedSize: models[554].expectedSize,\n sha256Checksum: models[554].sha256Checksum,\n addon: models[554].addon,\n engine: models[554].engine,\n quantization: models[554].quantization,\n params: models[554].params\n};\nexport const OCR_BENGALI_RECOGNIZER = {\n name: 'OCR_BENGALI_RECOGNIZER',\n src: `registry://${models[555].registrySource}/${models[555].registryPath}`,\n registryPath: models[555].registryPath,\n registrySource: models[555].registrySource,\n blobCoreKey: models[555].blobCoreKey,\n blobBlockOffset: models[555].blobBlockOffset,\n blobBlockLength: models[555].blobBlockLength,\n blobByteOffset: models[555].blobByteOffset,\n modelId: models[555].modelId,\n expectedSize: models[555].expectedSize,\n sha256Checksum: models[555].sha256Checksum,\n addon: models[555].addon,\n engine: models[555].engine,\n quantization: models[555].quantization,\n params: models[555].params\n};\nexport const OCR_CYRILLIC_RECOGNIZER = {\n name: 'OCR_CYRILLIC_RECOGNIZER',\n src: `registry://${models[556].registrySource}/${models[556].registryPath}`,\n registryPath: models[556].registryPath,\n registrySource: models[556].registrySource,\n blobCoreKey: models[556].blobCoreKey,\n blobBlockOffset: models[556].blobBlockOffset,\n blobBlockLength: models[556].blobBlockLength,\n blobByteOffset: models[556].blobByteOffset,\n modelId: models[556].modelId,\n expectedSize: models[556].expectedSize,\n sha256Checksum: models[556].sha256Checksum,\n addon: models[556].addon,\n engine: models[556].engine,\n quantization: models[556].quantization,\n params: models[556].params\n};\nexport const OCR_DEVANAGARI_RECOGNIZER = {\n name: 'OCR_DEVANAGARI_RECOGNIZER',\n src: `registry://${models[557].registrySource}/${models[557].registryPath}`,\n registryPath: models[557].registryPath,\n registrySource: models[557].registrySource,\n blobCoreKey: models[557].blobCoreKey,\n blobBlockOffset: models[557].blobBlockOffset,\n blobBlockLength: models[557].blobBlockLength,\n blobByteOffset: models[557].blobByteOffset,\n modelId: models[557].modelId,\n expectedSize: models[557].expectedSize,\n sha256Checksum: models[557].sha256Checksum,\n addon: models[557].addon,\n engine: models[557].engine,\n quantization: models[557].quantization,\n params: models[557].params\n};\nexport const OCR_JAPANESE_RECOGNIZER = {\n name: 'OCR_JAPANESE_RECOGNIZER',\n src: `registry://${models[558].registrySource}/${models[558].registryPath}`,\n registryPath: models[558].registryPath,\n registrySource: models[558].registrySource,\n blobCoreKey: models[558].blobCoreKey,\n blobBlockOffset: models[558].blobBlockOffset,\n blobBlockLength: models[558].blobBlockLength,\n blobByteOffset: models[558].blobByteOffset,\n modelId: models[558].modelId,\n expectedSize: models[558].expectedSize,\n sha256Checksum: models[558].sha256Checksum,\n addon: models[558].addon,\n engine: models[558].engine,\n quantization: models[558].quantization,\n params: models[558].params\n};\nexport const OCR_KANNADA_RECOGNIZER = {\n name: 'OCR_KANNADA_RECOGNIZER',\n src: `registry://${models[559].registrySource}/${models[559].registryPath}`,\n registryPath: models[559].registryPath,\n registrySource: models[559].registrySource,\n blobCoreKey: models[559].blobCoreKey,\n blobBlockOffset: models[559].blobBlockOffset,\n blobBlockLength: models[559].blobBlockLength,\n blobByteOffset: models[559].blobByteOffset,\n modelId: models[559].modelId,\n expectedSize: models[559].expectedSize,\n sha256Checksum: models[559].sha256Checksum,\n addon: models[559].addon,\n engine: models[559].engine,\n quantization: models[559].quantization,\n params: models[559].params\n};\nexport const OCR_KOREAN_RECOGNIZER = {\n name: 'OCR_KOREAN_RECOGNIZER',\n src: `registry://${models[560].registrySource}/${models[560].registryPath}`,\n registryPath: models[560].registryPath,\n registrySource: models[560].registrySource,\n blobCoreKey: models[560].blobCoreKey,\n blobBlockOffset: models[560].blobBlockOffset,\n blobBlockLength: models[560].blobBlockLength,\n blobByteOffset: models[560].blobByteOffset,\n modelId: models[560].modelId,\n expectedSize: models[560].expectedSize,\n sha256Checksum: models[560].sha256Checksum,\n addon: models[560].addon,\n engine: models[560].engine,\n quantization: models[560].quantization,\n params: models[560].params\n};\nexport const OCR_LATIN_RECOGNIZER_1 = {\n name: 'OCR_LATIN_RECOGNIZER_1',\n src: `registry://${models[561].registrySource}/${models[561].registryPath}`,\n registryPath: models[561].registryPath,\n registrySource: models[561].registrySource,\n blobCoreKey: models[561].blobCoreKey,\n blobBlockOffset: models[561].blobBlockOffset,\n blobBlockLength: models[561].blobBlockLength,\n blobByteOffset: models[561].blobByteOffset,\n modelId: models[561].modelId,\n expectedSize: models[561].expectedSize,\n sha256Checksum: models[561].sha256Checksum,\n addon: models[561].addon,\n engine: models[561].engine,\n quantization: models[561].quantization,\n params: models[561].params\n};\nexport const OCR_TAMIL_RECOGNIZER = {\n name: 'OCR_TAMIL_RECOGNIZER',\n src: `registry://${models[562].registrySource}/${models[562].registryPath}`,\n registryPath: models[562].registryPath,\n registrySource: models[562].registrySource,\n blobCoreKey: models[562].blobCoreKey,\n blobBlockOffset: models[562].blobBlockOffset,\n blobBlockLength: models[562].blobBlockLength,\n blobByteOffset: models[562].blobByteOffset,\n modelId: models[562].modelId,\n expectedSize: models[562].expectedSize,\n sha256Checksum: models[562].sha256Checksum,\n addon: models[562].addon,\n engine: models[562].engine,\n quantization: models[562].quantization,\n params: models[562].params\n};\nexport const OCR_TELUGU_RECOGNIZER = {\n name: 'OCR_TELUGU_RECOGNIZER',\n src: `registry://${models[563].registrySource}/${models[563].registryPath}`,\n registryPath: models[563].registryPath,\n registrySource: models[563].registrySource,\n blobCoreKey: models[563].blobCoreKey,\n blobBlockOffset: models[563].blobBlockOffset,\n blobBlockLength: models[563].blobBlockLength,\n blobByteOffset: models[563].blobByteOffset,\n modelId: models[563].modelId,\n expectedSize: models[563].expectedSize,\n sha256Checksum: models[563].sha256Checksum,\n addon: models[563].addon,\n engine: models[563].engine,\n quantization: models[563].quantization,\n params: models[563].params\n};\nexport const OCR_THAI_RECOGNIZER = {\n name: 'OCR_THAI_RECOGNIZER',\n src: `registry://${models[564].registrySource}/${models[564].registryPath}`,\n registryPath: models[564].registryPath,\n registrySource: models[564].registrySource,\n blobCoreKey: models[564].blobCoreKey,\n blobBlockOffset: models[564].blobBlockOffset,\n blobBlockLength: models[564].blobBlockLength,\n blobByteOffset: models[564].blobByteOffset,\n modelId: models[564].modelId,\n expectedSize: models[564].expectedSize,\n sha256Checksum: models[564].sha256Checksum,\n addon: models[564].addon,\n engine: models[564].engine,\n quantization: models[564].quantization,\n params: models[564].params\n};\nexport const OCR_ZH_SIM_RECOGNIZER = {\n name: 'OCR_ZH_SIM_RECOGNIZER',\n src: `registry://${models[565].registrySource}/${models[565].registryPath}`,\n registryPath: models[565].registryPath,\n registrySource: models[565].registrySource,\n blobCoreKey: models[565].blobCoreKey,\n blobBlockOffset: models[565].blobBlockOffset,\n blobBlockLength: models[565].blobBlockLength,\n blobByteOffset: models[565].blobByteOffset,\n modelId: models[565].modelId,\n expectedSize: models[565].expectedSize,\n sha256Checksum: models[565].sha256Checksum,\n addon: models[565].addon,\n engine: models[565].engine,\n quantization: models[565].quantization,\n params: models[565].params\n};\nexport const OCR_ZH_TRA_RECOGNIZER = {\n name: 'OCR_ZH_TRA_RECOGNIZER',\n src: `registry://${models[566].registrySource}/${models[566].registryPath}`,\n registryPath: models[566].registryPath,\n registrySource: models[566].registrySource,\n blobCoreKey: models[566].blobCoreKey,\n blobBlockOffset: models[566].blobBlockOffset,\n blobBlockLength: models[566].blobBlockLength,\n blobByteOffset: models[566].blobByteOffset,\n modelId: models[566].modelId,\n expectedSize: models[566].expectedSize,\n sha256Checksum: models[566].sha256Checksum,\n addon: models[566].addon,\n engine: models[566].engine,\n quantization: models[566].quantization,\n params: models[566].params\n};\nexport const OCR_RECOGNIZER_CRNN_MOBILENET_V3_SMALL = {\n name: 'OCR_RECOGNIZER_CRNN_MOBILENET_V3_SMALL',\n src: `registry://${models[567].registrySource}/${models[567].registryPath}`,\n registryPath: models[567].registryPath,\n registrySource: models[567].registrySource,\n blobCoreKey: models[567].blobCoreKey,\n blobBlockOffset: models[567].blobBlockOffset,\n blobBlockLength: models[567].blobBlockLength,\n blobByteOffset: models[567].blobByteOffset,\n modelId: models[567].modelId,\n expectedSize: models[567].expectedSize,\n sha256Checksum: models[567].sha256Checksum,\n addon: models[567].addon,\n engine: models[567].engine,\n quantization: models[567].quantization,\n params: models[567].params\n};\nexport const OCR_DETECTOR_DB_MOBILENET_V3_LARGE = {\n name: 'OCR_DETECTOR_DB_MOBILENET_V3_LARGE',\n src: `registry://${models[568].registrySource}/${models[568].registryPath}`,\n registryPath: models[568].registryPath,\n registrySource: models[568].registrySource,\n blobCoreKey: models[568].blobCoreKey,\n blobBlockOffset: models[568].blobBlockOffset,\n blobBlockLength: models[568].blobBlockLength,\n blobByteOffset: models[568].blobByteOffset,\n modelId: models[568].modelId,\n expectedSize: models[568].expectedSize,\n sha256Checksum: models[568].sha256Checksum,\n addon: models[568].addon,\n engine: models[568].engine,\n quantization: models[568].quantization,\n params: models[568].params\n};\nexport const OCR_DETECTOR_DB_RESNET50 = {\n name: 'OCR_DETECTOR_DB_RESNET50',\n src: `registry://${models[569].registrySource}/${models[569].registryPath}`,\n registryPath: models[569].registryPath,\n registrySource: models[569].registrySource,\n blobCoreKey: models[569].blobCoreKey,\n blobBlockOffset: models[569].blobBlockOffset,\n blobBlockLength: models[569].blobBlockLength,\n blobByteOffset: models[569].blobByteOffset,\n modelId: models[569].modelId,\n expectedSize: models[569].expectedSize,\n sha256Checksum: models[569].sha256Checksum,\n addon: models[569].addon,\n engine: models[569].engine,\n quantization: models[569].quantization,\n params: models[569].params\n};\nexport const OCR_RECOGNIZER_PARSEQ = {\n name: 'OCR_RECOGNIZER_PARSEQ',\n src: `registry://${models[570].registrySource}/${models[570].registryPath}`,\n registryPath: models[570].registryPath,\n registrySource: models[570].registrySource,\n blobCoreKey: models[570].blobCoreKey,\n blobBlockOffset: models[570].blobBlockOffset,\n blobBlockLength: models[570].blobBlockLength,\n blobByteOffset: models[570].blobByteOffset,\n modelId: models[570].modelId,\n expectedSize: models[570].expectedSize,\n sha256Checksum: models[570].sha256Checksum,\n addon: models[570].addon,\n engine: models[570].engine,\n quantization: models[570].quantization,\n params: models[570].params\n};\nexport const OCR_DOCTR = {\n name: 'OCR_DOCTR',\n src: `registry://${models[571].registrySource}/${models[571].registryPath}`,\n registryPath: models[571].registryPath,\n registrySource: models[571].registrySource,\n blobCoreKey: models[571].blobCoreKey,\n blobBlockOffset: models[571].blobBlockOffset,\n blobBlockLength: models[571].blobBlockLength,\n blobByteOffset: models[571].blobByteOffset,\n modelId: models[571].modelId,\n expectedSize: models[571].expectedSize,\n sha256Checksum: models[571].sha256Checksum,\n addon: models[571].addon,\n engine: models[571].engine,\n quantization: models[571].quantization,\n params: models[571].params\n};\nexport const OCR_DOCTR_1 = {\n name: 'OCR_DOCTR_1',\n src: `registry://${models[572].registrySource}/${models[572].registryPath}`,\n registryPath: models[572].registryPath,\n registrySource: models[572].registrySource,\n blobCoreKey: models[572].blobCoreKey,\n blobBlockOffset: models[572].blobBlockOffset,\n blobBlockLength: models[572].blobBlockLength,\n blobByteOffset: models[572].blobByteOffset,\n modelId: models[572].modelId,\n expectedSize: models[572].expectedSize,\n sha256Checksum: models[572].sha256Checksum,\n addon: models[572].addon,\n engine: models[572].engine,\n quantization: models[572].quantization,\n params: models[572].params\n};\nexport const OCR_CRAFT = {\n name: 'OCR_CRAFT',\n src: `registry://${models[573].registrySource}/${models[573].registryPath}`,\n registryPath: models[573].registryPath,\n registrySource: models[573].registrySource,\n blobCoreKey: models[573].blobCoreKey,\n blobBlockOffset: models[573].blobBlockOffset,\n blobBlockLength: models[573].blobBlockLength,\n blobByteOffset: models[573].blobByteOffset,\n modelId: models[573].modelId,\n expectedSize: models[573].expectedSize,\n sha256Checksum: models[573].sha256Checksum,\n addon: models[573].addon,\n engine: models[573].engine,\n quantization: models[573].quantization,\n params: models[573].params\n};\nexport const OCR_LATIN = {\n name: 'OCR_LATIN',\n src: `registry://${models[574].registrySource}/${models[574].registryPath}`,\n registryPath: models[574].registryPath,\n registrySource: models[574].registrySource,\n blobCoreKey: models[574].blobCoreKey,\n blobBlockOffset: models[574].blobBlockOffset,\n blobBlockLength: models[574].blobBlockLength,\n blobByteOffset: models[574].blobByteOffset,\n modelId: models[574].modelId,\n expectedSize: models[574].expectedSize,\n sha256Checksum: models[574].sha256Checksum,\n addon: models[574].addon,\n engine: models[574].engine,\n quantization: models[574].quantization,\n params: models[574].params\n};\nexport const PARAKEET_CTC_0_6B_Q8_0 = {\n name: 'PARAKEET_CTC_0_6B_Q8_0',\n src: `registry://${models[575].registrySource}/${models[575].registryPath}`,\n registryPath: models[575].registryPath,\n registrySource: models[575].registrySource,\n blobCoreKey: models[575].blobCoreKey,\n blobBlockOffset: models[575].blobBlockOffset,\n blobBlockLength: models[575].blobBlockLength,\n blobByteOffset: models[575].blobByteOffset,\n modelId: models[575].modelId,\n expectedSize: models[575].expectedSize,\n sha256Checksum: models[575].sha256Checksum,\n addon: models[575].addon,\n engine: models[575].engine,\n quantization: models[575].quantization,\n params: models[575].params\n};\nexport const PARAKEET_EOU_120M_V1_Q8_0 = {\n name: 'PARAKEET_EOU_120M_V1_Q8_0',\n src: `registry://${models[576].registrySource}/${models[576].registryPath}`,\n registryPath: models[576].registryPath,\n registrySource: models[576].registrySource,\n blobCoreKey: models[576].blobCoreKey,\n blobBlockOffset: models[576].blobBlockOffset,\n blobBlockLength: models[576].blobBlockLength,\n blobByteOffset: models[576].blobByteOffset,\n modelId: models[576].modelId,\n expectedSize: models[576].expectedSize,\n sha256Checksum: models[576].sha256Checksum,\n addon: models[576].addon,\n engine: models[576].engine,\n quantization: models[576].quantization,\n params: models[576].params\n};\nexport const PARAKEET_TDT_0_6B_V3_Q8_0 = {\n name: 'PARAKEET_TDT_0_6B_V3_Q8_0',\n src: `registry://${models[577].registrySource}/${models[577].registryPath}`,\n registryPath: models[577].registryPath,\n registrySource: models[577].registrySource,\n blobCoreKey: models[577].blobCoreKey,\n blobBlockOffset: models[577].blobBlockOffset,\n blobBlockLength: models[577].blobBlockLength,\n blobByteOffset: models[577].blobByteOffset,\n modelId: models[577].modelId,\n expectedSize: models[577].expectedSize,\n sha256Checksum: models[577].sha256Checksum,\n addon: models[577].addon,\n engine: models[577].engine,\n quantization: models[577].quantization,\n params: models[577].params\n};\nexport const PARAKEET_SORTFORMER_4SPK_V1_Q8_0 = {\n name: 'PARAKEET_SORTFORMER_4SPK_V1_Q8_0',\n src: `registry://${models[578].registrySource}/${models[578].registryPath}`,\n registryPath: models[578].registryPath,\n registrySource: models[578].registrySource,\n blobCoreKey: models[578].blobCoreKey,\n blobBlockOffset: models[578].blobBlockOffset,\n blobBlockLength: models[578].blobBlockLength,\n blobByteOffset: models[578].blobByteOffset,\n modelId: models[578].modelId,\n expectedSize: models[578].expectedSize,\n sha256Checksum: models[578].sha256Checksum,\n addon: models[578].addon,\n engine: models[578].engine,\n quantization: models[578].quantization,\n params: models[578].params\n};\nexport const PARAKEET_SORTFORMER_4SPK_V2_1_F16 = {\n name: 'PARAKEET_SORTFORMER_4SPK_V2_1_F16',\n src: `registry://${models[579].registrySource}/${models[579].registryPath}`,\n registryPath: models[579].registryPath,\n registrySource: models[579].registrySource,\n blobCoreKey: models[579].blobCoreKey,\n blobBlockOffset: models[579].blobBlockOffset,\n blobBlockLength: models[579].blobBlockLength,\n blobByteOffset: models[579].blobByteOffset,\n modelId: models[579].modelId,\n expectedSize: models[579].expectedSize,\n sha256Checksum: models[579].sha256Checksum,\n addon: models[579].addon,\n engine: models[579].engine,\n quantization: models[579].quantization,\n params: models[579].params\n};\nexport const PARAKEET_SORTFORMER_4SPK_V2_1_Q4_0 = {\n name: 'PARAKEET_SORTFORMER_4SPK_V2_1_Q4_0',\n src: `registry://${models[580].registrySource}/${models[580].registryPath}`,\n registryPath: models[580].registryPath,\n registrySource: models[580].registrySource,\n blobCoreKey: models[580].blobCoreKey,\n blobBlockOffset: models[580].blobBlockOffset,\n blobBlockLength: models[580].blobBlockLength,\n blobByteOffset: models[580].blobByteOffset,\n modelId: models[580].modelId,\n expectedSize: models[580].expectedSize,\n sha256Checksum: models[580].sha256Checksum,\n addon: models[580].addon,\n engine: models[580].engine,\n quantization: models[580].quantization,\n params: models[580].params\n};\nexport const PARAKEET_SORTFORMER_4SPK_V2_1_Q8_0 = {\n name: 'PARAKEET_SORTFORMER_4SPK_V2_1_Q8_0',\n src: `registry://${models[581].registrySource}/${models[581].registryPath}`,\n registryPath: models[581].registryPath,\n registrySource: models[581].registrySource,\n blobCoreKey: models[581].blobCoreKey,\n blobBlockOffset: models[581].blobBlockOffset,\n blobBlockLength: models[581].blobBlockLength,\n blobByteOffset: models[581].blobByteOffset,\n modelId: models[581].modelId,\n expectedSize: models[581].expectedSize,\n sha256Checksum: models[581].sha256Checksum,\n addon: models[581].addon,\n engine: models[581].engine,\n quantization: models[581].quantization,\n params: models[581].params\n};\nexport const PARAKEET_EOU_120M_V1_Q4_0 = {\n name: 'PARAKEET_EOU_120M_V1_Q4_0',\n src: `registry://${models[582].registrySource}/${models[582].registryPath}`,\n registryPath: models[582].registryPath,\n registrySource: models[582].registrySource,\n blobCoreKey: models[582].blobCoreKey,\n blobBlockOffset: models[582].blobBlockOffset,\n blobBlockLength: models[582].blobBlockLength,\n blobByteOffset: models[582].blobByteOffset,\n modelId: models[582].modelId,\n expectedSize: models[582].expectedSize,\n sha256Checksum: models[582].sha256Checksum,\n addon: models[582].addon,\n engine: models[582].engine,\n quantization: models[582].quantization,\n params: models[582].params\n};\nexport const PARAKEET_TDT_0_6B_V3_Q4_0 = {\n name: 'PARAKEET_TDT_0_6B_V3_Q4_0',\n src: `registry://${models[583].registrySource}/${models[583].registryPath}`,\n registryPath: models[583].registryPath,\n registrySource: models[583].registrySource,\n blobCoreKey: models[583].blobCoreKey,\n blobBlockOffset: models[583].blobBlockOffset,\n blobBlockLength: models[583].blobBlockLength,\n blobByteOffset: models[583].blobByteOffset,\n modelId: models[583].modelId,\n expectedSize: models[583].expectedSize,\n sha256Checksum: models[583].sha256Checksum,\n addon: models[583].addon,\n engine: models[583].engine,\n quantization: models[583].quantization,\n params: models[583].params\n};\nexport const PARAKEET_SORTFORMER_4SPK_V1_Q4_0 = {\n name: 'PARAKEET_SORTFORMER_4SPK_V1_Q4_0',\n src: `registry://${models[584].registrySource}/${models[584].registryPath}`,\n registryPath: models[584].registryPath,\n registrySource: models[584].registrySource,\n blobCoreKey: models[584].blobCoreKey,\n blobBlockOffset: models[584].blobBlockOffset,\n blobBlockLength: models[584].blobBlockLength,\n blobByteOffset: models[584].blobByteOffset,\n modelId: models[584].modelId,\n expectedSize: models[584].expectedSize,\n sha256Checksum: models[584].sha256Checksum,\n addon: models[584].addon,\n engine: models[584].engine,\n quantization: models[584].quantization,\n params: models[584].params\n};\nexport const PARAKEET_CTC_0_6B_F16 = {\n name: 'PARAKEET_CTC_0_6B_F16',\n src: `registry://${models[585].registrySource}/${models[585].registryPath}`,\n registryPath: models[585].registryPath,\n registrySource: models[585].registrySource,\n blobCoreKey: models[585].blobCoreKey,\n blobBlockOffset: models[585].blobBlockOffset,\n blobBlockLength: models[585].blobBlockLength,\n blobByteOffset: models[585].blobByteOffset,\n modelId: models[585].modelId,\n expectedSize: models[585].expectedSize,\n sha256Checksum: models[585].sha256Checksum,\n addon: models[585].addon,\n engine: models[585].engine,\n quantization: models[585].quantization,\n params: models[585].params\n};\nexport const PARAKEET_CTC_0_6B_Q4_0 = {\n name: 'PARAKEET_CTC_0_6B_Q4_0',\n src: `registry://${models[586].registrySource}/${models[586].registryPath}`,\n registryPath: models[586].registryPath,\n registrySource: models[586].registrySource,\n blobCoreKey: models[586].blobCoreKey,\n blobBlockOffset: models[586].blobBlockOffset,\n blobBlockLength: models[586].blobBlockLength,\n blobByteOffset: models[586].blobByteOffset,\n modelId: models[586].modelId,\n expectedSize: models[586].expectedSize,\n sha256Checksum: models[586].sha256Checksum,\n addon: models[586].addon,\n engine: models[586].engine,\n quantization: models[586].quantization,\n params: models[586].params\n};\nexport const PARAKEET_EOU_120M_V1_F16 = {\n name: 'PARAKEET_EOU_120M_V1_F16',\n src: `registry://${models[587].registrySource}/${models[587].registryPath}`,\n registryPath: models[587].registryPath,\n registrySource: models[587].registrySource,\n blobCoreKey: models[587].blobCoreKey,\n blobBlockOffset: models[587].blobBlockOffset,\n blobBlockLength: models[587].blobBlockLength,\n blobByteOffset: models[587].blobByteOffset,\n modelId: models[587].modelId,\n expectedSize: models[587].expectedSize,\n sha256Checksum: models[587].sha256Checksum,\n addon: models[587].addon,\n engine: models[587].engine,\n quantization: models[587].quantization,\n params: models[587].params\n};\nexport const PARAKEET_TDT_0_6B_V3_F16 = {\n name: 'PARAKEET_TDT_0_6B_V3_F16',\n src: `registry://${models[588].registrySource}/${models[588].registryPath}`,\n registryPath: models[588].registryPath,\n registrySource: models[588].registrySource,\n blobCoreKey: models[588].blobCoreKey,\n blobBlockOffset: models[588].blobBlockOffset,\n blobBlockLength: models[588].blobBlockLength,\n blobByteOffset: models[588].blobByteOffset,\n modelId: models[588].modelId,\n expectedSize: models[588].expectedSize,\n sha256Checksum: models[588].sha256Checksum,\n addon: models[588].addon,\n engine: models[588].engine,\n quantization: models[588].quantization,\n params: models[588].params\n};\nexport const PARAKEET_SORTFORMER_4SPK_V1_F16 = {\n name: 'PARAKEET_SORTFORMER_4SPK_V1_F16',\n src: `registry://${models[589].registrySource}/${models[589].registryPath}`,\n registryPath: models[589].registryPath,\n registrySource: models[589].registrySource,\n blobCoreKey: models[589].blobCoreKey,\n blobBlockOffset: models[589].blobBlockOffset,\n blobBlockLength: models[589].blobBlockLength,\n blobByteOffset: models[589].blobByteOffset,\n modelId: models[589].modelId,\n expectedSize: models[589].expectedSize,\n sha256Checksum: models[589].sha256Checksum,\n addon: models[589].addon,\n engine: models[589].engine,\n quantization: models[589].quantization,\n params: models[589].params\n};\nexport const TTS_S3GEN_MULTILINGUAL_CHATTERBOX = {\n name: 'TTS_S3GEN_MULTILINGUAL_CHATTERBOX',\n src: `registry://${models[590].registrySource}/${models[590].registryPath}`,\n registryPath: models[590].registryPath,\n registrySource: models[590].registrySource,\n blobCoreKey: models[590].blobCoreKey,\n blobBlockOffset: models[590].blobBlockOffset,\n blobBlockLength: models[590].blobBlockLength,\n blobByteOffset: models[590].blobByteOffset,\n modelId: models[590].modelId,\n expectedSize: models[590].expectedSize,\n sha256Checksum: models[590].sha256Checksum,\n addon: models[590].addon,\n engine: models[590].engine,\n quantization: models[590].quantization,\n params: models[590].params\n};\nexport const TTS_S3GEN_EN_CHATTERBOX = {\n name: 'TTS_S3GEN_EN_CHATTERBOX',\n src: `registry://${models[591].registrySource}/${models[591].registryPath}`,\n registryPath: models[591].registryPath,\n registrySource: models[591].registrySource,\n blobCoreKey: models[591].blobCoreKey,\n blobBlockOffset: models[591].blobBlockOffset,\n blobBlockLength: models[591].blobBlockLength,\n blobByteOffset: models[591].blobByteOffset,\n modelId: models[591].modelId,\n expectedSize: models[591].expectedSize,\n sha256Checksum: models[591].sha256Checksum,\n addon: models[591].addon,\n engine: models[591].engine,\n quantization: models[591].quantization,\n params: models[591].params\n};\nexport const TTS_T3_MULTILINGUAL_CHATTERBOX_FP16 = {\n name: 'TTS_T3_MULTILINGUAL_CHATTERBOX_FP16',\n src: `registry://${models[592].registrySource}/${models[592].registryPath}`,\n registryPath: models[592].registryPath,\n registrySource: models[592].registrySource,\n blobCoreKey: models[592].blobCoreKey,\n blobBlockOffset: models[592].blobBlockOffset,\n blobBlockLength: models[592].blobBlockLength,\n blobByteOffset: models[592].blobByteOffset,\n modelId: models[592].modelId,\n expectedSize: models[592].expectedSize,\n sha256Checksum: models[592].sha256Checksum,\n addon: models[592].addon,\n engine: models[592].engine,\n quantization: models[592].quantization,\n params: models[592].params\n};\nexport const TTS_T3_TURBO_EN_CHATTERBOX_FP16 = {\n name: 'TTS_T3_TURBO_EN_CHATTERBOX_FP16',\n src: `registry://${models[593].registrySource}/${models[593].registryPath}`,\n registryPath: models[593].registryPath,\n registrySource: models[593].registrySource,\n blobCoreKey: models[593].blobCoreKey,\n blobBlockOffset: models[593].blobBlockOffset,\n blobBlockLength: models[593].blobBlockLength,\n blobByteOffset: models[593].blobByteOffset,\n modelId: models[593].modelId,\n expectedSize: models[593].expectedSize,\n sha256Checksum: models[593].sha256Checksum,\n addon: models[593].addon,\n engine: models[593].engine,\n quantization: models[593].quantization,\n params: models[593].params\n};\nexport const TTS_MECAB_IPADIC_CHATTERBOX = {\n name: 'TTS_MECAB_IPADIC_CHATTERBOX',\n src: `registry://${models[594].registrySource}/${models[594].registryPath}`,\n registryPath: models[594].registryPath,\n registrySource: models[594].registrySource,\n blobCoreKey: models[594].blobCoreKey,\n blobBlockOffset: models[594].blobBlockOffset,\n blobBlockLength: models[594].blobBlockLength,\n blobByteOffset: models[594].blobByteOffset,\n modelId: models[594].modelId,\n expectedSize: models[594].expectedSize,\n sha256Checksum: models[594].sha256Checksum,\n addon: models[594].addon,\n engine: models[594].engine,\n quantization: models[594].quantization,\n params: models[594].params\n};\nexport const TTS_T3_MULTILINGUAL_CHATTERBOX_Q4_0 = {\n name: 'TTS_T3_MULTILINGUAL_CHATTERBOX_Q4_0',\n src: `registry://${models[600].registrySource}/${models[600].registryPath}`,\n registryPath: models[600].registryPath,\n registrySource: models[600].registrySource,\n blobCoreKey: models[600].blobCoreKey,\n blobBlockOffset: models[600].blobBlockOffset,\n blobBlockLength: models[600].blobBlockLength,\n blobByteOffset: models[600].blobByteOffset,\n modelId: models[600].modelId,\n expectedSize: models[600].expectedSize,\n sha256Checksum: models[600].sha256Checksum,\n addon: models[600].addon,\n engine: models[600].engine,\n quantization: models[600].quantization,\n params: models[600].params\n};\nexport const TTS_T3_MULTILINGUAL_CHATTERBOX_Q8_0 = {\n name: 'TTS_T3_MULTILINGUAL_CHATTERBOX_Q8_0',\n src: `registry://${models[601].registrySource}/${models[601].registryPath}`,\n registryPath: models[601].registryPath,\n registrySource: models[601].registrySource,\n blobCoreKey: models[601].blobCoreKey,\n blobBlockOffset: models[601].blobBlockOffset,\n blobBlockLength: models[601].blobBlockLength,\n blobByteOffset: models[601].blobByteOffset,\n modelId: models[601].modelId,\n expectedSize: models[601].expectedSize,\n sha256Checksum: models[601].sha256Checksum,\n addon: models[601].addon,\n engine: models[601].engine,\n quantization: models[601].quantization,\n params: models[601].params\n};\nexport const TTS_T3_TURBO_EN_CHATTERBOX_Q4_0 = {\n name: 'TTS_T3_TURBO_EN_CHATTERBOX_Q4_0',\n src: `registry://${models[602].registrySource}/${models[602].registryPath}`,\n registryPath: models[602].registryPath,\n registrySource: models[602].registrySource,\n blobCoreKey: models[602].blobCoreKey,\n blobBlockOffset: models[602].blobBlockOffset,\n blobBlockLength: models[602].blobBlockLength,\n blobByteOffset: models[602].blobByteOffset,\n modelId: models[602].modelId,\n expectedSize: models[602].expectedSize,\n sha256Checksum: models[602].sha256Checksum,\n addon: models[602].addon,\n engine: models[602].engine,\n quantization: models[602].quantization,\n params: models[602].params\n};\nexport const TTS_T3_TURBO_EN_CHATTERBOX_Q8_0 = {\n name: 'TTS_T3_TURBO_EN_CHATTERBOX_Q8_0',\n src: `registry://${models[603].registrySource}/${models[603].registryPath}`,\n registryPath: models[603].registryPath,\n registrySource: models[603].registrySource,\n blobCoreKey: models[603].blobCoreKey,\n blobBlockOffset: models[603].blobBlockOffset,\n blobBlockLength: models[603].blobBlockLength,\n blobByteOffset: models[603].blobByteOffset,\n modelId: models[603].modelId,\n expectedSize: models[603].expectedSize,\n sha256Checksum: models[603].sha256Checksum,\n addon: models[603].addon,\n engine: models[603].engine,\n quantization: models[603].quantization,\n params: models[603].params\n};\nexport const TTS_S3GEN_MULTILINGUAL_CHATTERBOX_Q4_0 = {\n name: 'TTS_S3GEN_MULTILINGUAL_CHATTERBOX_Q4_0',\n src: `registry://${models[604].registrySource}/${models[604].registryPath}`,\n registryPath: models[604].registryPath,\n registrySource: models[604].registrySource,\n blobCoreKey: models[604].blobCoreKey,\n blobBlockOffset: models[604].blobBlockOffset,\n blobBlockLength: models[604].blobBlockLength,\n blobByteOffset: models[604].blobByteOffset,\n modelId: models[604].modelId,\n expectedSize: models[604].expectedSize,\n sha256Checksum: models[604].sha256Checksum,\n addon: models[604].addon,\n engine: models[604].engine,\n quantization: models[604].quantization,\n params: models[604].params\n};\nexport const TTS_S3GEN_MULTILINGUAL_CHATTERBOX_Q5_0 = {\n name: 'TTS_S3GEN_MULTILINGUAL_CHATTERBOX_Q5_0',\n src: `registry://${models[605].registrySource}/${models[605].registryPath}`,\n registryPath: models[605].registryPath,\n registrySource: models[605].registrySource,\n blobCoreKey: models[605].blobCoreKey,\n blobBlockOffset: models[605].blobBlockOffset,\n blobBlockLength: models[605].blobBlockLength,\n blobByteOffset: models[605].blobByteOffset,\n modelId: models[605].modelId,\n expectedSize: models[605].expectedSize,\n sha256Checksum: models[605].sha256Checksum,\n addon: models[605].addon,\n engine: models[605].engine,\n quantization: models[605].quantization,\n params: models[605].params\n};\nexport const TTS_S3GEN_MULTILINGUAL_CHATTERBOX_Q8_0 = {\n name: 'TTS_S3GEN_MULTILINGUAL_CHATTERBOX_Q8_0',\n src: `registry://${models[606].registrySource}/${models[606].registryPath}`,\n registryPath: models[606].registryPath,\n registrySource: models[606].registrySource,\n blobCoreKey: models[606].blobCoreKey,\n blobBlockOffset: models[606].blobBlockOffset,\n blobBlockLength: models[606].blobBlockLength,\n blobByteOffset: models[606].blobByteOffset,\n modelId: models[606].modelId,\n expectedSize: models[606].expectedSize,\n sha256Checksum: models[606].sha256Checksum,\n addon: models[606].addon,\n engine: models[606].engine,\n quantization: models[606].quantization,\n params: models[606].params\n};\nexport const TTS_S3GEN_EN_CHATTERBOX_Q4_0 = {\n name: 'TTS_S3GEN_EN_CHATTERBOX_Q4_0',\n src: `registry://${models[607].registrySource}/${models[607].registryPath}`,\n registryPath: models[607].registryPath,\n registrySource: models[607].registrySource,\n blobCoreKey: models[607].blobCoreKey,\n blobBlockOffset: models[607].blobBlockOffset,\n blobBlockLength: models[607].blobBlockLength,\n blobByteOffset: models[607].blobByteOffset,\n modelId: models[607].modelId,\n expectedSize: models[607].expectedSize,\n sha256Checksum: models[607].sha256Checksum,\n addon: models[607].addon,\n engine: models[607].engine,\n quantization: models[607].quantization,\n params: models[607].params\n};\nexport const TTS_S3GEN_EN_CHATTERBOX_Q5_0 = {\n name: 'TTS_S3GEN_EN_CHATTERBOX_Q5_0',\n src: `registry://${models[608].registrySource}/${models[608].registryPath}`,\n registryPath: models[608].registryPath,\n registrySource: models[608].registrySource,\n blobCoreKey: models[608].blobCoreKey,\n blobBlockOffset: models[608].blobBlockOffset,\n blobBlockLength: models[608].blobBlockLength,\n blobByteOffset: models[608].blobByteOffset,\n modelId: models[608].modelId,\n expectedSize: models[608].expectedSize,\n sha256Checksum: models[608].sha256Checksum,\n addon: models[608].addon,\n engine: models[608].engine,\n quantization: models[608].quantization,\n params: models[608].params\n};\nexport const TTS_S3GEN_EN_CHATTERBOX_Q8_0 = {\n name: 'TTS_S3GEN_EN_CHATTERBOX_Q8_0',\n src: `registry://${models[609].registrySource}/${models[609].registryPath}`,\n registryPath: models[609].registryPath,\n registrySource: models[609].registrySource,\n blobCoreKey: models[609].blobCoreKey,\n blobBlockOffset: models[609].blobBlockOffset,\n blobBlockLength: models[609].blobBlockLength,\n blobByteOffset: models[609].blobByteOffset,\n modelId: models[609].modelId,\n expectedSize: models[609].expectedSize,\n sha256Checksum: models[609].sha256Checksum,\n addon: models[609].addon,\n engine: models[609].engine,\n quantization: models[609].quantization,\n params: models[609].params\n};\nexport const TTS_T3_MULTILINGUAL_CHATTERBOX_Q5_0 = {\n name: 'TTS_T3_MULTILINGUAL_CHATTERBOX_Q5_0',\n src: `registry://${models[610].registrySource}/${models[610].registryPath}`,\n registryPath: models[610].registryPath,\n registrySource: models[610].registrySource,\n blobCoreKey: models[610].blobCoreKey,\n blobBlockOffset: models[610].blobBlockOffset,\n blobBlockLength: models[610].blobBlockLength,\n blobByteOffset: models[610].blobByteOffset,\n modelId: models[610].modelId,\n expectedSize: models[610].expectedSize,\n sha256Checksum: models[610].sha256Checksum,\n addon: models[610].addon,\n engine: models[610].engine,\n quantization: models[610].quantization,\n params: models[610].params\n};\nexport const TTS_T3_TURBO_EN_CHATTERBOX_Q5_0 = {\n name: 'TTS_T3_TURBO_EN_CHATTERBOX_Q5_0',\n src: `registry://${models[611].registrySource}/${models[611].registryPath}`,\n registryPath: models[611].registryPath,\n registrySource: models[611].registrySource,\n blobCoreKey: models[611].blobCoreKey,\n blobBlockOffset: models[611].blobBlockOffset,\n blobBlockLength: models[611].blobBlockLength,\n blobByteOffset: models[611].blobByteOffset,\n modelId: models[611].modelId,\n expectedSize: models[611].expectedSize,\n sha256Checksum: models[611].sha256Checksum,\n addon: models[611].addon,\n engine: models[611].engine,\n quantization: models[611].quantization,\n params: models[611].params\n};\nexport const TTS_CANGJIE_ZH_CHATTERBOX = {\n name: 'TTS_CANGJIE_ZH_CHATTERBOX',\n src: `registry://${models[612].registrySource}/${models[612].registryPath}`,\n registryPath: models[612].registryPath,\n registrySource: models[612].registrySource,\n blobCoreKey: models[612].blobCoreKey,\n blobBlockOffset: models[612].blobBlockOffset,\n blobBlockLength: models[612].blobBlockLength,\n blobByteOffset: models[612].blobByteOffset,\n modelId: models[612].modelId,\n expectedSize: models[612].expectedSize,\n sha256Checksum: models[612].sha256Checksum,\n addon: models[612].addon,\n engine: models[612].engine,\n quantization: models[612].quantization,\n params: models[612].params\n};\nexport const TTS_ENHANCER_LAVASR_FP16 = {\n name: 'TTS_ENHANCER_LAVASR_FP16',\n src: `registry://${models[613].registrySource}/${models[613].registryPath}`,\n registryPath: models[613].registryPath,\n registrySource: models[613].registrySource,\n blobCoreKey: models[613].blobCoreKey,\n blobBlockOffset: models[613].blobBlockOffset,\n blobBlockLength: models[613].blobBlockLength,\n blobByteOffset: models[613].blobByteOffset,\n modelId: models[613].modelId,\n expectedSize: models[613].expectedSize,\n sha256Checksum: models[613].sha256Checksum,\n addon: models[613].addon,\n engine: models[613].engine,\n quantization: models[613].quantization,\n params: models[613].params\n};\nexport const TTS_ENHANCER_LAVASR_FP32 = {\n name: 'TTS_ENHANCER_LAVASR_FP32',\n src: `registry://${models[614].registrySource}/${models[614].registryPath}`,\n registryPath: models[614].registryPath,\n registrySource: models[614].registrySource,\n blobCoreKey: models[614].blobCoreKey,\n blobBlockOffset: models[614].blobBlockOffset,\n blobBlockLength: models[614].blobBlockLength,\n blobByteOffset: models[614].blobByteOffset,\n modelId: models[614].modelId,\n expectedSize: models[614].expectedSize,\n sha256Checksum: models[614].sha256Checksum,\n addon: models[614].addon,\n engine: models[614].engine,\n quantization: models[614].quantization,\n params: models[614].params\n};\nexport const TTS_DENOISER_LAVASR_FP16 = {\n name: 'TTS_DENOISER_LAVASR_FP16',\n src: `registry://${models[615].registrySource}/${models[615].registryPath}`,\n registryPath: models[615].registryPath,\n registrySource: models[615].registrySource,\n blobCoreKey: models[615].blobCoreKey,\n blobBlockOffset: models[615].blobBlockOffset,\n blobBlockLength: models[615].blobBlockLength,\n blobByteOffset: models[615].blobByteOffset,\n modelId: models[615].modelId,\n expectedSize: models[615].expectedSize,\n sha256Checksum: models[615].sha256Checksum,\n addon: models[615].addon,\n engine: models[615].engine,\n quantization: models[615].quantization,\n params: models[615].params\n};\nexport const TTS_DENOISER_LAVASR_FP32 = {\n name: 'TTS_DENOISER_LAVASR_FP32',\n src: `registry://${models[616].registrySource}/${models[616].registryPath}`,\n registryPath: models[616].registryPath,\n registrySource: models[616].registrySource,\n blobCoreKey: models[616].blobCoreKey,\n blobBlockOffset: models[616].blobBlockOffset,\n blobBlockLength: models[616].blobBlockLength,\n blobByteOffset: models[616].blobByteOffset,\n modelId: models[616].modelId,\n expectedSize: models[616].expectedSize,\n sha256Checksum: models[616].sha256Checksum,\n addon: models[616].addon,\n engine: models[616].engine,\n quantization: models[616].quantization,\n params: models[616].params\n};\nexport const TTS_INDIC_MULTILINGUAL_PARLER_TTS_FP16 = {\n name: 'TTS_INDIC_MULTILINGUAL_PARLER_TTS_FP16',\n src: `registry://${models[617].registrySource}/${models[617].registryPath}`,\n registryPath: models[617].registryPath,\n registrySource: models[617].registrySource,\n blobCoreKey: models[617].blobCoreKey,\n blobBlockOffset: models[617].blobBlockOffset,\n blobBlockLength: models[617].blobBlockLength,\n blobByteOffset: models[617].blobByteOffset,\n modelId: models[617].modelId,\n expectedSize: models[617].expectedSize,\n sha256Checksum: models[617].sha256Checksum,\n addon: models[617].addon,\n engine: models[617].engine,\n quantization: models[617].quantization,\n params: models[617].params\n};\nexport const TTS_INDIC_MULTILINGUAL_PARLER_TTS_FP32 = {\n name: 'TTS_INDIC_MULTILINGUAL_PARLER_TTS_FP32',\n src: `registry://${models[618].registrySource}/${models[618].registryPath}`,\n registryPath: models[618].registryPath,\n registrySource: models[618].registrySource,\n blobCoreKey: models[618].blobCoreKey,\n blobBlockOffset: models[618].blobBlockOffset,\n blobBlockLength: models[618].blobBlockLength,\n blobByteOffset: models[618].blobByteOffset,\n modelId: models[618].modelId,\n expectedSize: models[618].expectedSize,\n sha256Checksum: models[618].sha256Checksum,\n addon: models[618].addon,\n engine: models[618].engine,\n quantization: models[618].quantization,\n params: models[618].params\n};\nexport const TTS_INDIC_MULTILINGUAL_PARLER_TTS_Q8_0 = {\n name: 'TTS_INDIC_MULTILINGUAL_PARLER_TTS_Q8_0',\n src: `registry://${models[619].registrySource}/${models[619].registryPath}`,\n registryPath: models[619].registryPath,\n registrySource: models[619].registrySource,\n blobCoreKey: models[619].blobCoreKey,\n blobBlockOffset: models[619].blobBlockOffset,\n blobBlockLength: models[619].blobBlockLength,\n blobByteOffset: models[619].blobByteOffset,\n modelId: models[619].modelId,\n expectedSize: models[619].expectedSize,\n sha256Checksum: models[619].sha256Checksum,\n addon: models[619].addon,\n engine: models[619].engine,\n quantization: models[619].quantization,\n params: models[619].params\n};\nexport const TTS_LARGE_V1_EN_PARLER_TTS_FP16 = {\n name: 'TTS_LARGE_V1_EN_PARLER_TTS_FP16',\n src: `registry://${models[620].registrySource}/${models[620].registryPath}`,\n registryPath: models[620].registryPath,\n registrySource: models[620].registrySource,\n blobCoreKey: models[620].blobCoreKey,\n blobBlockOffset: models[620].blobBlockOffset,\n blobBlockLength: models[620].blobBlockLength,\n blobByteOffset: models[620].blobByteOffset,\n modelId: models[620].modelId,\n expectedSize: models[620].expectedSize,\n sha256Checksum: models[620].sha256Checksum,\n addon: models[620].addon,\n engine: models[620].engine,\n quantization: models[620].quantization,\n params: models[620].params\n};\nexport const TTS_LARGE_V1_EN_PARLER_TTS_FP32 = {\n name: 'TTS_LARGE_V1_EN_PARLER_TTS_FP32',\n src: `registry://${models[621].registrySource}/${models[621].registryPath}`,\n registryPath: models[621].registryPath,\n registrySource: models[621].registrySource,\n blobCoreKey: models[621].blobCoreKey,\n blobBlockOffset: models[621].blobBlockOffset,\n blobBlockLength: models[621].blobBlockLength,\n blobByteOffset: models[621].blobByteOffset,\n modelId: models[621].modelId,\n expectedSize: models[621].expectedSize,\n sha256Checksum: models[621].sha256Checksum,\n addon: models[621].addon,\n engine: models[621].engine,\n quantization: models[621].quantization,\n params: models[621].params\n};\nexport const TTS_LARGE_V1_EN_PARLER_TTS_Q8_0 = {\n name: 'TTS_LARGE_V1_EN_PARLER_TTS_Q8_0',\n src: `registry://${models[622].registrySource}/${models[622].registryPath}`,\n registryPath: models[622].registryPath,\n registrySource: models[622].registrySource,\n blobCoreKey: models[622].blobCoreKey,\n blobBlockOffset: models[622].blobBlockOffset,\n blobBlockLength: models[622].blobBlockLength,\n blobByteOffset: models[622].blobByteOffset,\n modelId: models[622].modelId,\n expectedSize: models[622].expectedSize,\n sha256Checksum: models[622].sha256Checksum,\n addon: models[622].addon,\n engine: models[622].engine,\n quantization: models[622].quantization,\n params: models[622].params\n};\nexport const TTS_MINI_V1_EN_PARLER_TTS_FP16 = {\n name: 'TTS_MINI_V1_EN_PARLER_TTS_FP16',\n src: `registry://${models[623].registrySource}/${models[623].registryPath}`,\n registryPath: models[623].registryPath,\n registrySource: models[623].registrySource,\n blobCoreKey: models[623].blobCoreKey,\n blobBlockOffset: models[623].blobBlockOffset,\n blobBlockLength: models[623].blobBlockLength,\n blobByteOffset: models[623].blobByteOffset,\n modelId: models[623].modelId,\n expectedSize: models[623].expectedSize,\n sha256Checksum: models[623].sha256Checksum,\n addon: models[623].addon,\n engine: models[623].engine,\n quantization: models[623].quantization,\n params: models[623].params\n};\nexport const TTS_MINI_V1_EN_PARLER_TTS_FP32 = {\n name: 'TTS_MINI_V1_EN_PARLER_TTS_FP32',\n src: `registry://${models[624].registrySource}/${models[624].registryPath}`,\n registryPath: models[624].registryPath,\n registrySource: models[624].registrySource,\n blobCoreKey: models[624].blobCoreKey,\n blobBlockOffset: models[624].blobBlockOffset,\n blobBlockLength: models[624].blobBlockLength,\n blobByteOffset: models[624].blobByteOffset,\n modelId: models[624].modelId,\n expectedSize: models[624].expectedSize,\n sha256Checksum: models[624].sha256Checksum,\n addon: models[624].addon,\n engine: models[624].engine,\n quantization: models[624].quantization,\n params: models[624].params\n};\nexport const TTS_MINI_V1_EN_PARLER_TTS_Q8_0 = {\n name: 'TTS_MINI_V1_EN_PARLER_TTS_Q8_0',\n src: `registry://${models[625].registrySource}/${models[625].registryPath}`,\n registryPath: models[625].registryPath,\n registrySource: models[625].registrySource,\n blobCoreKey: models[625].blobCoreKey,\n blobBlockOffset: models[625].blobBlockOffset,\n blobBlockLength: models[625].blobBlockLength,\n blobByteOffset: models[625].blobByteOffset,\n modelId: models[625].modelId,\n expectedSize: models[625].expectedSize,\n sha256Checksum: models[625].sha256Checksum,\n addon: models[625].addon,\n engine: models[625].engine,\n quantization: models[625].quantization,\n params: models[625].params\n};\nexport const TTS_EN_SUPERTONIC_Q4_0 = {\n name: 'TTS_EN_SUPERTONIC_Q4_0',\n src: `registry://${models[626].registrySource}/${models[626].registryPath}`,\n registryPath: models[626].registryPath,\n registrySource: models[626].registrySource,\n blobCoreKey: models[626].blobCoreKey,\n blobBlockOffset: models[626].blobBlockOffset,\n blobBlockLength: models[626].blobBlockLength,\n blobByteOffset: models[626].blobByteOffset,\n modelId: models[626].modelId,\n expectedSize: models[626].expectedSize,\n sha256Checksum: models[626].sha256Checksum,\n addon: models[626].addon,\n engine: models[626].engine,\n quantization: models[626].quantization,\n params: models[626].params\n};\nexport const TTS_EN_SUPERTONIC_Q8_0 = {\n name: 'TTS_EN_SUPERTONIC_Q8_0',\n src: `registry://${models[627].registrySource}/${models[627].registryPath}`,\n registryPath: models[627].registryPath,\n registrySource: models[627].registrySource,\n blobCoreKey: models[627].blobCoreKey,\n blobBlockOffset: models[627].blobBlockOffset,\n blobBlockLength: models[627].blobBlockLength,\n blobByteOffset: models[627].blobByteOffset,\n modelId: models[627].modelId,\n expectedSize: models[627].expectedSize,\n sha256Checksum: models[627].sha256Checksum,\n addon: models[627].addon,\n engine: models[627].engine,\n quantization: models[627].quantization,\n params: models[627].params\n};\nexport const TTS_MULTILINGUAL_SUPERTONIC2_Q4_0 = {\n name: 'TTS_MULTILINGUAL_SUPERTONIC2_Q4_0',\n src: `registry://${models[628].registrySource}/${models[628].registryPath}`,\n registryPath: models[628].registryPath,\n registrySource: models[628].registrySource,\n blobCoreKey: models[628].blobCoreKey,\n blobBlockOffset: models[628].blobBlockOffset,\n blobBlockLength: models[628].blobBlockLength,\n blobByteOffset: models[628].blobByteOffset,\n modelId: models[628].modelId,\n expectedSize: models[628].expectedSize,\n sha256Checksum: models[628].sha256Checksum,\n addon: models[628].addon,\n engine: models[628].engine,\n quantization: models[628].quantization,\n params: models[628].params\n};\nexport const TTS_MULTILINGUAL_SUPERTONIC2_Q8_0 = {\n name: 'TTS_MULTILINGUAL_SUPERTONIC2_Q8_0',\n src: `registry://${models[629].registrySource}/${models[629].registryPath}`,\n registryPath: models[629].registryPath,\n registrySource: models[629].registrySource,\n blobCoreKey: models[629].blobCoreKey,\n blobBlockOffset: models[629].blobBlockOffset,\n blobBlockLength: models[629].blobBlockLength,\n blobByteOffset: models[629].blobByteOffset,\n modelId: models[629].modelId,\n expectedSize: models[629].expectedSize,\n sha256Checksum: models[629].sha256Checksum,\n addon: models[629].addon,\n engine: models[629].engine,\n quantization: models[629].quantization,\n params: models[629].params\n};\nexport const TTS_MULTILINGUAL_SUPERTONIC3_FP16 = {\n name: 'TTS_MULTILINGUAL_SUPERTONIC3_FP16',\n src: `registry://${models[630].registrySource}/${models[630].registryPath}`,\n registryPath: models[630].registryPath,\n registrySource: models[630].registrySource,\n blobCoreKey: models[630].blobCoreKey,\n blobBlockOffset: models[630].blobBlockOffset,\n blobBlockLength: models[630].blobBlockLength,\n blobByteOffset: models[630].blobByteOffset,\n modelId: models[630].modelId,\n expectedSize: models[630].expectedSize,\n sha256Checksum: models[630].sha256Checksum,\n addon: models[630].addon,\n engine: models[630].engine,\n quantization: models[630].quantization,\n params: models[630].params\n};\nexport const TTS_MULTILINGUAL_SUPERTONIC3_FP32 = {\n name: 'TTS_MULTILINGUAL_SUPERTONIC3_FP32',\n src: `registry://${models[631].registrySource}/${models[631].registryPath}`,\n registryPath: models[631].registryPath,\n registrySource: models[631].registrySource,\n blobCoreKey: models[631].blobCoreKey,\n blobBlockOffset: models[631].blobBlockOffset,\n blobBlockLength: models[631].blobBlockLength,\n blobByteOffset: models[631].blobByteOffset,\n modelId: models[631].modelId,\n expectedSize: models[631].expectedSize,\n sha256Checksum: models[631].sha256Checksum,\n addon: models[631].addon,\n engine: models[631].engine,\n quantization: models[631].quantization,\n params: models[631].params\n};\nexport const TTS_MULTILINGUAL_SUPERTONIC3_Q8_0 = {\n name: 'TTS_MULTILINGUAL_SUPERTONIC3_Q8_0',\n src: `registry://${models[632].registrySource}/${models[632].registryPath}`,\n registryPath: models[632].registryPath,\n registrySource: models[632].registrySource,\n blobCoreKey: models[632].blobCoreKey,\n blobBlockOffset: models[632].blobBlockOffset,\n blobBlockLength: models[632].blobBlockLength,\n blobByteOffset: models[632].blobByteOffset,\n modelId: models[632].modelId,\n expectedSize: models[632].expectedSize,\n sha256Checksum: models[632].sha256Checksum,\n addon: models[632].addon,\n engine: models[632].engine,\n quantization: models[632].quantization,\n params: models[632].params\n};\nexport const TTS_MULTILINGUAL_SUPERTONIC3_Q4_0 = {\n name: 'TTS_MULTILINGUAL_SUPERTONIC3_Q4_0',\n src: `registry://${models[633].registrySource}/${models[633].registryPath}`,\n registryPath: models[633].registryPath,\n registrySource: models[633].registrySource,\n blobCoreKey: models[633].blobCoreKey,\n blobBlockOffset: models[633].blobBlockOffset,\n blobBlockLength: models[633].blobBlockLength,\n blobByteOffset: models[633].blobByteOffset,\n modelId: models[633].modelId,\n expectedSize: models[633].expectedSize,\n sha256Checksum: models[633].sha256Checksum,\n addon: models[633].addon,\n engine: models[633].engine,\n quantization: models[633].quantization,\n params: models[633].params\n};\nexport const GROOT_Q5_VF16 = {\n name: 'GROOT_Q5_VF16',\n src: `registry://${models[634].registrySource}/${models[634].registryPath}`,\n registryPath: models[634].registryPath,\n registrySource: models[634].registrySource,\n blobCoreKey: models[634].blobCoreKey,\n blobBlockOffset: models[634].blobBlockOffset,\n blobBlockLength: models[634].blobBlockLength,\n blobByteOffset: models[634].blobByteOffset,\n modelId: models[634].modelId,\n expectedSize: models[634].expectedSize,\n sha256Checksum: models[634].sha256Checksum,\n addon: models[634].addon,\n engine: models[634].engine,\n quantization: models[634].quantization,\n params: models[634].params\n};\nexport const GROOT_Q8_VF16 = {\n name: 'GROOT_Q8_VF16',\n src: `registry://${models[635].registrySource}/${models[635].registryPath}`,\n registryPath: models[635].registryPath,\n registrySource: models[635].registrySource,\n blobCoreKey: models[635].blobCoreKey,\n blobBlockOffset: models[635].blobBlockOffset,\n blobBlockLength: models[635].blobBlockLength,\n blobByteOffset: models[635].blobByteOffset,\n modelId: models[635].modelId,\n expectedSize: models[635].expectedSize,\n sha256Checksum: models[635].sha256Checksum,\n addon: models[635].addon,\n engine: models[635].engine,\n quantization: models[635].quantization,\n params: models[635].params\n};\nexport const PI05_BASE_Q_AGGRESSIVE = {\n name: 'PI05_BASE_Q_AGGRESSIVE',\n src: `registry://${models[636].registrySource}/${models[636].registryPath}`,\n registryPath: models[636].registryPath,\n registrySource: models[636].registrySource,\n blobCoreKey: models[636].blobCoreKey,\n blobBlockOffset: models[636].blobBlockOffset,\n blobBlockLength: models[636].blobBlockLength,\n blobByteOffset: models[636].blobByteOffset,\n modelId: models[636].modelId,\n expectedSize: models[636].expectedSize,\n sha256Checksum: models[636].sha256Checksum,\n addon: models[636].addon,\n engine: models[636].engine,\n quantization: models[636].quantization,\n params: models[636].params\n};\nexport const SMOLVLA_LIBERO_VISION_Q8 = {\n name: 'SMOLVLA_LIBERO_VISION_Q8',\n src: `registry://${models[637].registrySource}/${models[637].registryPath}`,\n registryPath: models[637].registryPath,\n registrySource: models[637].registrySource,\n blobCoreKey: models[637].blobCoreKey,\n blobBlockOffset: models[637].blobBlockOffset,\n blobBlockLength: models[637].blobBlockLength,\n blobByteOffset: models[637].blobByteOffset,\n modelId: models[637].modelId,\n expectedSize: models[637].expectedSize,\n sha256Checksum: models[637].sha256Checksum,\n addon: models[637].addon,\n engine: models[637].engine,\n quantization: models[637].quantization,\n params: models[637].params\n};\nexport const WHISPER_BASE_Q8_0 = {\n name: 'WHISPER_BASE_Q8_0',\n src: `registry://${models[638].registrySource}/${models[638].registryPath}`,\n registryPath: models[638].registryPath,\n registrySource: models[638].registrySource,\n blobCoreKey: models[638].blobCoreKey,\n blobBlockOffset: models[638].blobBlockOffset,\n blobBlockLength: models[638].blobBlockLength,\n blobByteOffset: models[638].blobByteOffset,\n modelId: models[638].modelId,\n expectedSize: models[638].expectedSize,\n sha256Checksum: models[638].sha256Checksum,\n addon: models[638].addon,\n engine: models[638].engine,\n quantization: models[638].quantization,\n params: models[638].params\n};\nexport const WHISPER_BASE_Q0F16 = {\n name: 'WHISPER_BASE_Q0F16',\n src: `registry://${models[639].registrySource}/${models[639].registryPath}`,\n registryPath: models[639].registryPath,\n registrySource: models[639].registrySource,\n blobCoreKey: models[639].blobCoreKey,\n blobBlockOffset: models[639].blobBlockOffset,\n blobBlockLength: models[639].blobBlockLength,\n blobByteOffset: models[639].blobByteOffset,\n modelId: models[639].modelId,\n expectedSize: models[639].expectedSize,\n sha256Checksum: models[639].sha256Checksum,\n addon: models[639].addon,\n engine: models[639].engine,\n quantization: models[639].quantization,\n params: models[639].params\n};\nexport const WHISPER_EN_BASE_Q8_0 = {\n name: 'WHISPER_EN_BASE_Q8_0',\n src: `registry://${models[640].registrySource}/${models[640].registryPath}`,\n registryPath: models[640].registryPath,\n registrySource: models[640].registrySource,\n blobCoreKey: models[640].blobCoreKey,\n blobBlockOffset: models[640].blobBlockOffset,\n blobBlockLength: models[640].blobBlockLength,\n blobByteOffset: models[640].blobByteOffset,\n modelId: models[640].modelId,\n expectedSize: models[640].expectedSize,\n sha256Checksum: models[640].sha256Checksum,\n addon: models[640].addon,\n engine: models[640].engine,\n quantization: models[640].quantization,\n params: models[640].params\n};\nexport const WHISPER_EN_BASE_Q0F16 = {\n name: 'WHISPER_EN_BASE_Q0F16',\n src: `registry://${models[641].registrySource}/${models[641].registryPath}`,\n registryPath: models[641].registryPath,\n registrySource: models[641].registrySource,\n blobCoreKey: models[641].blobCoreKey,\n blobBlockOffset: models[641].blobBlockOffset,\n blobBlockLength: models[641].blobBlockLength,\n blobByteOffset: models[641].blobByteOffset,\n modelId: models[641].modelId,\n expectedSize: models[641].expectedSize,\n sha256Checksum: models[641].sha256Checksum,\n addon: models[641].addon,\n engine: models[641].engine,\n quantization: models[641].quantization,\n params: models[641].params\n};\nexport const WHISPER_LARGE_V3_TURBO = {\n name: 'WHISPER_LARGE_V3_TURBO',\n src: `registry://${models[642].registrySource}/${models[642].registryPath}`,\n registryPath: models[642].registryPath,\n registrySource: models[642].registrySource,\n blobCoreKey: models[642].blobCoreKey,\n blobBlockOffset: models[642].blobBlockOffset,\n blobBlockLength: models[642].blobBlockLength,\n blobByteOffset: models[642].blobByteOffset,\n modelId: models[642].modelId,\n expectedSize: models[642].expectedSize,\n sha256Checksum: models[642].sha256Checksum,\n addon: models[642].addon,\n engine: models[642].engine,\n quantization: models[642].quantization,\n params: models[642].params\n};\nexport const WHISPER_SMALL_Q8_0 = {\n name: 'WHISPER_SMALL_Q8_0',\n src: `registry://${models[643].registrySource}/${models[643].registryPath}`,\n registryPath: models[643].registryPath,\n registrySource: models[643].registrySource,\n blobCoreKey: models[643].blobCoreKey,\n blobBlockOffset: models[643].blobBlockOffset,\n blobBlockLength: models[643].blobBlockLength,\n blobByteOffset: models[643].blobByteOffset,\n modelId: models[643].modelId,\n expectedSize: models[643].expectedSize,\n sha256Checksum: models[643].sha256Checksum,\n addon: models[643].addon,\n engine: models[643].engine,\n quantization: models[643].quantization,\n params: models[643].params\n};\nexport const WHISPER_SMALL_Q0F16 = {\n name: 'WHISPER_SMALL_Q0F16',\n src: `registry://${models[644].registrySource}/${models[644].registryPath}`,\n registryPath: models[644].registryPath,\n registrySource: models[644].registrySource,\n blobCoreKey: models[644].blobCoreKey,\n blobBlockOffset: models[644].blobBlockOffset,\n blobBlockLength: models[644].blobBlockLength,\n blobByteOffset: models[644].blobByteOffset,\n modelId: models[644].modelId,\n expectedSize: models[644].expectedSize,\n sha256Checksum: models[644].sha256Checksum,\n addon: models[644].addon,\n engine: models[644].engine,\n quantization: models[644].quantization,\n params: models[644].params\n};\nexport const WHISPER_EN_SMALL_Q8_0 = {\n name: 'WHISPER_EN_SMALL_Q8_0',\n src: `registry://${models[645].registrySource}/${models[645].registryPath}`,\n registryPath: models[645].registryPath,\n registrySource: models[645].registrySource,\n blobCoreKey: models[645].blobCoreKey,\n blobBlockOffset: models[645].blobBlockOffset,\n blobBlockLength: models[645].blobBlockLength,\n blobByteOffset: models[645].blobByteOffset,\n modelId: models[645].modelId,\n expectedSize: models[645].expectedSize,\n sha256Checksum: models[645].sha256Checksum,\n addon: models[645].addon,\n engine: models[645].engine,\n quantization: models[645].quantization,\n params: models[645].params\n};\nexport const WHISPER_EN_SMALL_Q0F16 = {\n name: 'WHISPER_EN_SMALL_Q0F16',\n src: `registry://${models[646].registrySource}/${models[646].registryPath}`,\n registryPath: models[646].registryPath,\n registrySource: models[646].registrySource,\n blobCoreKey: models[646].blobCoreKey,\n blobBlockOffset: models[646].blobBlockOffset,\n blobBlockLength: models[646].blobBlockLength,\n blobByteOffset: models[646].blobByteOffset,\n modelId: models[646].modelId,\n expectedSize: models[646].expectedSize,\n sha256Checksum: models[646].sha256Checksum,\n addon: models[646].addon,\n engine: models[646].engine,\n quantization: models[646].quantization,\n params: models[646].params\n};\nexport const WHISPER_TINY_Q8_0 = {\n name: 'WHISPER_TINY_Q8_0',\n src: `registry://${models[647].registrySource}/${models[647].registryPath}`,\n registryPath: models[647].registryPath,\n registrySource: models[647].registrySource,\n blobCoreKey: models[647].blobCoreKey,\n blobBlockOffset: models[647].blobBlockOffset,\n blobBlockLength: models[647].blobBlockLength,\n blobByteOffset: models[647].blobByteOffset,\n modelId: models[647].modelId,\n expectedSize: models[647].expectedSize,\n sha256Checksum: models[647].sha256Checksum,\n addon: models[647].addon,\n engine: models[647].engine,\n quantization: models[647].quantization,\n params: models[647].params\n};\nexport const WHISPER_TINY = {\n name: 'WHISPER_TINY',\n src: `registry://${models[648].registrySource}/${models[648].registryPath}`,\n registryPath: models[648].registryPath,\n registrySource: models[648].registrySource,\n blobCoreKey: models[648].blobCoreKey,\n blobBlockOffset: models[648].blobBlockOffset,\n blobBlockLength: models[648].blobBlockLength,\n blobByteOffset: models[648].blobByteOffset,\n modelId: models[648].modelId,\n expectedSize: models[648].expectedSize,\n sha256Checksum: models[648].sha256Checksum,\n addon: models[648].addon,\n engine: models[648].engine,\n quantization: models[648].quantization,\n params: models[648].params\n};\nexport const WHISPER_EN_TINY_Q8_0 = {\n name: 'WHISPER_EN_TINY_Q8_0',\n src: `registry://${models[649].registrySource}/${models[649].registryPath}`,\n registryPath: models[649].registryPath,\n registrySource: models[649].registrySource,\n blobCoreKey: models[649].blobCoreKey,\n blobBlockOffset: models[649].blobBlockOffset,\n blobBlockLength: models[649].blobBlockLength,\n blobByteOffset: models[649].blobByteOffset,\n modelId: models[649].modelId,\n expectedSize: models[649].expectedSize,\n sha256Checksum: models[649].sha256Checksum,\n addon: models[649].addon,\n engine: models[649].engine,\n quantization: models[649].quantization,\n params: models[649].params\n};\nexport const WHISPER_EN_TINY_Q0F16 = {\n name: 'WHISPER_EN_TINY_Q0F16',\n src: `registry://${models[650].registrySource}/${models[650].registryPath}`,\n registryPath: models[650].registryPath,\n registrySource: models[650].registrySource,\n blobCoreKey: models[650].blobCoreKey,\n blobBlockOffset: models[650].blobBlockOffset,\n blobBlockLength: models[650].blobBlockLength,\n blobByteOffset: models[650].blobByteOffset,\n modelId: models[650].modelId,\n expectedSize: models[650].expectedSize,\n sha256Checksum: models[650].sha256Checksum,\n addon: models[650].addon,\n engine: models[650].engine,\n quantization: models[650].quantization,\n params: models[650].params\n};\nexport const VAD_SILERO_5_1_2 = {\n name: 'VAD_SILERO_5_1_2',\n src: `registry://${models[651].registrySource}/${models[651].registryPath}`,\n registryPath: models[651].registryPath,\n registrySource: models[651].registrySource,\n blobCoreKey: models[651].blobCoreKey,\n blobBlockOffset: models[651].blobBlockOffset,\n blobBlockLength: models[651].blobBlockLength,\n blobByteOffset: models[651].blobByteOffset,\n modelId: models[651].modelId,\n expectedSize: models[651].expectedSize,\n sha256Checksum: models[651].sha256Checksum,\n addon: models[651].addon,\n engine: models[651].engine,\n quantization: models[651].quantization,\n params: models[651].params\n};\nexport const WHISPER_FRENCH_BASE_F16 = {\n name: 'WHISPER_FRENCH_BASE_F16',\n src: `registry://${models[652].registrySource}/${models[652].registryPath}`,\n registryPath: models[652].registryPath,\n registrySource: models[652].registrySource,\n blobCoreKey: models[652].blobCoreKey,\n blobBlockOffset: models[652].blobBlockOffset,\n blobBlockLength: models[652].blobBlockLength,\n blobByteOffset: models[652].blobByteOffset,\n modelId: models[652].modelId,\n expectedSize: models[652].expectedSize,\n sha256Checksum: models[652].sha256Checksum,\n addon: models[652].addon,\n engine: models[652].engine,\n quantization: models[652].quantization,\n params: models[652].params\n};\nexport const WHISPER_FRENCH_BASE_Q8_0 = {\n name: 'WHISPER_FRENCH_BASE_Q8_0',\n src: `registry://${models[653].registrySource}/${models[653].registryPath}`,\n registryPath: models[653].registryPath,\n registrySource: models[653].registrySource,\n blobCoreKey: models[653].blobCoreKey,\n blobBlockOffset: models[653].blobBlockOffset,\n blobBlockLength: models[653].blobBlockLength,\n blobByteOffset: models[653].blobByteOffset,\n modelId: models[653].modelId,\n expectedSize: models[653].expectedSize,\n sha256Checksum: models[653].sha256Checksum,\n addon: models[653].addon,\n engine: models[653].engine,\n quantization: models[653].quantization,\n params: models[653].params\n};\nexport const WHISPER_FRENCH_TINY_F16 = {\n name: 'WHISPER_FRENCH_TINY_F16',\n src: `registry://${models[654].registrySource}/${models[654].registryPath}`,\n registryPath: models[654].registryPath,\n registrySource: models[654].registrySource,\n blobCoreKey: models[654].blobCoreKey,\n blobBlockOffset: models[654].blobBlockOffset,\n blobBlockLength: models[654].blobBlockLength,\n blobByteOffset: models[654].blobByteOffset,\n modelId: models[654].modelId,\n expectedSize: models[654].expectedSize,\n sha256Checksum: models[654].sha256Checksum,\n addon: models[654].addon,\n engine: models[654].engine,\n quantization: models[654].quantization,\n params: models[654].params\n};\nexport const WHISPER_FRENCH_TINY_Q8_0 = {\n name: 'WHISPER_FRENCH_TINY_Q8_0',\n src: `registry://${models[655].registrySource}/${models[655].registryPath}`,\n registryPath: models[655].registryPath,\n registrySource: models[655].registrySource,\n blobCoreKey: models[655].blobCoreKey,\n blobBlockOffset: models[655].blobBlockOffset,\n blobBlockLength: models[655].blobBlockLength,\n blobByteOffset: models[655].blobByteOffset,\n modelId: models[655].modelId,\n expectedSize: models[655].expectedSize,\n sha256Checksum: models[655].sha256Checksum,\n addon: models[655].addon,\n engine: models[655].engine,\n quantization: models[655].quantization,\n params: models[655].params\n};\nexport const WHISPER_GERMAN_BASE_F16 = {\n name: 'WHISPER_GERMAN_BASE_F16',\n src: `registry://${models[656].registrySource}/${models[656].registryPath}`,\n registryPath: models[656].registryPath,\n registrySource: models[656].registrySource,\n blobCoreKey: models[656].blobCoreKey,\n blobBlockOffset: models[656].blobBlockOffset,\n blobBlockLength: models[656].blobBlockLength,\n blobByteOffset: models[656].blobByteOffset,\n modelId: models[656].modelId,\n expectedSize: models[656].expectedSize,\n sha256Checksum: models[656].sha256Checksum,\n addon: models[656].addon,\n engine: models[656].engine,\n quantization: models[656].quantization,\n params: models[656].params\n};\nexport const WHISPER_GERMAN_BASE_Q8_0 = {\n name: 'WHISPER_GERMAN_BASE_Q8_0',\n src: `registry://${models[657].registrySource}/${models[657].registryPath}`,\n registryPath: models[657].registryPath,\n registrySource: models[657].registrySource,\n blobCoreKey: models[657].blobCoreKey,\n blobBlockOffset: models[657].blobBlockOffset,\n blobBlockLength: models[657].blobBlockLength,\n blobByteOffset: models[657].blobByteOffset,\n modelId: models[657].modelId,\n expectedSize: models[657].expectedSize,\n sha256Checksum: models[657].sha256Checksum,\n addon: models[657].addon,\n engine: models[657].engine,\n quantization: models[657].quantization,\n params: models[657].params\n};\nexport const WHISPER_GERMAN_TINY_F16 = {\n name: 'WHISPER_GERMAN_TINY_F16',\n src: `registry://${models[658].registrySource}/${models[658].registryPath}`,\n registryPath: models[658].registryPath,\n registrySource: models[658].registrySource,\n blobCoreKey: models[658].blobCoreKey,\n blobBlockOffset: models[658].blobBlockOffset,\n blobBlockLength: models[658].blobBlockLength,\n blobByteOffset: models[658].blobByteOffset,\n modelId: models[658].modelId,\n expectedSize: models[658].expectedSize,\n sha256Checksum: models[658].sha256Checksum,\n addon: models[658].addon,\n engine: models[658].engine,\n quantization: models[658].quantization,\n params: models[658].params\n};\nexport const WHISPER_GERMAN_TINY_Q8_0 = {\n name: 'WHISPER_GERMAN_TINY_Q8_0',\n src: `registry://${models[659].registrySource}/${models[659].registryPath}`,\n registryPath: models[659].registryPath,\n registrySource: models[659].registrySource,\n blobCoreKey: models[659].blobCoreKey,\n blobBlockOffset: models[659].blobBlockOffset,\n blobBlockLength: models[659].blobBlockLength,\n blobByteOffset: models[659].blobByteOffset,\n modelId: models[659].modelId,\n expectedSize: models[659].expectedSize,\n sha256Checksum: models[659].sha256Checksum,\n addon: models[659].addon,\n engine: models[659].engine,\n quantization: models[659].quantization,\n params: models[659].params\n};\nexport const WHISPER_ITALIAN_BASE_F16 = {\n name: 'WHISPER_ITALIAN_BASE_F16',\n src: `registry://${models[660].registrySource}/${models[660].registryPath}`,\n registryPath: models[660].registryPath,\n registrySource: models[660].registrySource,\n blobCoreKey: models[660].blobCoreKey,\n blobBlockOffset: models[660].blobBlockOffset,\n blobBlockLength: models[660].blobBlockLength,\n blobByteOffset: models[660].blobByteOffset,\n modelId: models[660].modelId,\n expectedSize: models[660].expectedSize,\n sha256Checksum: models[660].sha256Checksum,\n addon: models[660].addon,\n engine: models[660].engine,\n quantization: models[660].quantization,\n params: models[660].params\n};\nexport const WHISPER_ITALIAN_BASE_Q8_0 = {\n name: 'WHISPER_ITALIAN_BASE_Q8_0',\n src: `registry://${models[661].registrySource}/${models[661].registryPath}`,\n registryPath: models[661].registryPath,\n registrySource: models[661].registrySource,\n blobCoreKey: models[661].blobCoreKey,\n blobBlockOffset: models[661].blobBlockOffset,\n blobBlockLength: models[661].blobBlockLength,\n blobByteOffset: models[661].blobByteOffset,\n modelId: models[661].modelId,\n expectedSize: models[661].expectedSize,\n sha256Checksum: models[661].sha256Checksum,\n addon: models[661].addon,\n engine: models[661].engine,\n quantization: models[661].quantization,\n params: models[661].params\n};\nexport const WHISPER_ITALIAN_TINY_F16 = {\n name: 'WHISPER_ITALIAN_TINY_F16',\n src: `registry://${models[662].registrySource}/${models[662].registryPath}`,\n registryPath: models[662].registryPath,\n registrySource: models[662].registrySource,\n blobCoreKey: models[662].blobCoreKey,\n blobBlockOffset: models[662].blobBlockOffset,\n blobBlockLength: models[662].blobBlockLength,\n blobByteOffset: models[662].blobByteOffset,\n modelId: models[662].modelId,\n expectedSize: models[662].expectedSize,\n sha256Checksum: models[662].sha256Checksum,\n addon: models[662].addon,\n engine: models[662].engine,\n quantization: models[662].quantization,\n params: models[662].params\n};\nexport const WHISPER_ITALIAN_TINY_Q8_0 = {\n name: 'WHISPER_ITALIAN_TINY_Q8_0',\n src: `registry://${models[663].registrySource}/${models[663].registryPath}`,\n registryPath: models[663].registryPath,\n registrySource: models[663].registrySource,\n blobCoreKey: models[663].blobCoreKey,\n blobBlockOffset: models[663].blobBlockOffset,\n blobBlockLength: models[663].blobBlockLength,\n blobByteOffset: models[663].blobByteOffset,\n modelId: models[663].modelId,\n expectedSize: models[663].expectedSize,\n sha256Checksum: models[663].sha256Checksum,\n addon: models[663].addon,\n engine: models[663].engine,\n quantization: models[663].quantization,\n params: models[663].params\n};\nexport const WHISPER_JAPANESE_BASE_F16 = {\n name: 'WHISPER_JAPANESE_BASE_F16',\n src: `registry://${models[664].registrySource}/${models[664].registryPath}`,\n registryPath: models[664].registryPath,\n registrySource: models[664].registrySource,\n blobCoreKey: models[664].blobCoreKey,\n blobBlockOffset: models[664].blobBlockOffset,\n blobBlockLength: models[664].blobBlockLength,\n blobByteOffset: models[664].blobByteOffset,\n modelId: models[664].modelId,\n expectedSize: models[664].expectedSize,\n sha256Checksum: models[664].sha256Checksum,\n addon: models[664].addon,\n engine: models[664].engine,\n quantization: models[664].quantization,\n params: models[664].params\n};\nexport const WHISPER_JAPANESE_BASE_Q8_0 = {\n name: 'WHISPER_JAPANESE_BASE_Q8_0',\n src: `registry://${models[665].registrySource}/${models[665].registryPath}`,\n registryPath: models[665].registryPath,\n registrySource: models[665].registrySource,\n blobCoreKey: models[665].blobCoreKey,\n blobBlockOffset: models[665].blobBlockOffset,\n blobBlockLength: models[665].blobBlockLength,\n blobByteOffset: models[665].blobByteOffset,\n modelId: models[665].modelId,\n expectedSize: models[665].expectedSize,\n sha256Checksum: models[665].sha256Checksum,\n addon: models[665].addon,\n engine: models[665].engine,\n quantization: models[665].quantization,\n params: models[665].params\n};\nexport const WHISPER_JAPANESE_TINY_F16 = {\n name: 'WHISPER_JAPANESE_TINY_F16',\n src: `registry://${models[666].registrySource}/${models[666].registryPath}`,\n registryPath: models[666].registryPath,\n registrySource: models[666].registrySource,\n blobCoreKey: models[666].blobCoreKey,\n blobBlockOffset: models[666].blobBlockOffset,\n blobBlockLength: models[666].blobBlockLength,\n blobByteOffset: models[666].blobByteOffset,\n modelId: models[666].modelId,\n expectedSize: models[666].expectedSize,\n sha256Checksum: models[666].sha256Checksum,\n addon: models[666].addon,\n engine: models[666].engine,\n quantization: models[666].quantization,\n params: models[666].params\n};\nexport const WHISPER_JAPANESE_TINY_Q8_0 = {\n name: 'WHISPER_JAPANESE_TINY_Q8_0',\n src: `registry://${models[667].registrySource}/${models[667].registryPath}`,\n registryPath: models[667].registryPath,\n registrySource: models[667].registrySource,\n blobCoreKey: models[667].blobCoreKey,\n blobBlockOffset: models[667].blobBlockOffset,\n blobBlockLength: models[667].blobBlockLength,\n blobByteOffset: models[667].blobByteOffset,\n modelId: models[667].modelId,\n expectedSize: models[667].expectedSize,\n sha256Checksum: models[667].sha256Checksum,\n addon: models[667].addon,\n engine: models[667].engine,\n quantization: models[667].quantization,\n params: models[667].params\n};\nexport const WHISPER_NORWEGIAN_TINY = {\n name: 'WHISPER_NORWEGIAN_TINY',\n src: `registry://${models[668].registrySource}/${models[668].registryPath}`,\n registryPath: models[668].registryPath,\n registrySource: models[668].registrySource,\n blobCoreKey: models[668].blobCoreKey,\n blobBlockOffset: models[668].blobBlockOffset,\n blobBlockLength: models[668].blobBlockLength,\n blobByteOffset: models[668].blobByteOffset,\n modelId: models[668].modelId,\n expectedSize: models[668].expectedSize,\n sha256Checksum: models[668].sha256Checksum,\n addon: models[668].addon,\n engine: models[668].engine,\n quantization: models[668].quantization,\n params: models[668].params\n};\nexport const WHISPER_PORTUGUESE_BASE_F16 = {\n name: 'WHISPER_PORTUGUESE_BASE_F16',\n src: `registry://${models[669].registrySource}/${models[669].registryPath}`,\n registryPath: models[669].registryPath,\n registrySource: models[669].registrySource,\n blobCoreKey: models[669].blobCoreKey,\n blobBlockOffset: models[669].blobBlockOffset,\n blobBlockLength: models[669].blobBlockLength,\n blobByteOffset: models[669].blobByteOffset,\n modelId: models[669].modelId,\n expectedSize: models[669].expectedSize,\n sha256Checksum: models[669].sha256Checksum,\n addon: models[669].addon,\n engine: models[669].engine,\n quantization: models[669].quantization,\n params: models[669].params\n};\nexport const WHISPER_PORTUGUESE_BASE_Q8_0 = {\n name: 'WHISPER_PORTUGUESE_BASE_Q8_0',\n src: `registry://${models[670].registrySource}/${models[670].registryPath}`,\n registryPath: models[670].registryPath,\n registrySource: models[670].registrySource,\n blobCoreKey: models[670].blobCoreKey,\n blobBlockOffset: models[670].blobBlockOffset,\n blobBlockLength: models[670].blobBlockLength,\n blobByteOffset: models[670].blobByteOffset,\n modelId: models[670].modelId,\n expectedSize: models[670].expectedSize,\n sha256Checksum: models[670].sha256Checksum,\n addon: models[670].addon,\n engine: models[670].engine,\n quantization: models[670].quantization,\n params: models[670].params\n};\nexport const WHISPER_PORTUGUESE_TINY_F16 = {\n name: 'WHISPER_PORTUGUESE_TINY_F16',\n src: `registry://${models[671].registrySource}/${models[671].registryPath}`,\n registryPath: models[671].registryPath,\n registrySource: models[671].registrySource,\n blobCoreKey: models[671].blobCoreKey,\n blobBlockOffset: models[671].blobBlockOffset,\n blobBlockLength: models[671].blobBlockLength,\n blobByteOffset: models[671].blobByteOffset,\n modelId: models[671].modelId,\n expectedSize: models[671].expectedSize,\n sha256Checksum: models[671].sha256Checksum,\n addon: models[671].addon,\n engine: models[671].engine,\n quantization: models[671].quantization,\n params: models[671].params\n};\nexport const WHISPER_PORTUGUESE_TINY_Q8_0 = {\n name: 'WHISPER_PORTUGUESE_TINY_Q8_0',\n src: `registry://${models[672].registrySource}/${models[672].registryPath}`,\n registryPath: models[672].registryPath,\n registrySource: models[672].registrySource,\n blobCoreKey: models[672].blobCoreKey,\n blobBlockOffset: models[672].blobBlockOffset,\n blobBlockLength: models[672].blobBlockLength,\n blobByteOffset: models[672].blobByteOffset,\n modelId: models[672].modelId,\n expectedSize: models[672].expectedSize,\n sha256Checksum: models[672].sha256Checksum,\n addon: models[672].addon,\n engine: models[672].engine,\n quantization: models[672].quantization,\n params: models[672].params\n};\nexport const WHISPER_RUSSIAN_BASE_F16 = {\n name: 'WHISPER_RUSSIAN_BASE_F16',\n src: `registry://${models[673].registrySource}/${models[673].registryPath}`,\n registryPath: models[673].registryPath,\n registrySource: models[673].registrySource,\n blobCoreKey: models[673].blobCoreKey,\n blobBlockOffset: models[673].blobBlockOffset,\n blobBlockLength: models[673].blobBlockLength,\n blobByteOffset: models[673].blobByteOffset,\n modelId: models[673].modelId,\n expectedSize: models[673].expectedSize,\n sha256Checksum: models[673].sha256Checksum,\n addon: models[673].addon,\n engine: models[673].engine,\n quantization: models[673].quantization,\n params: models[673].params\n};\nexport const WHISPER_RUSSIAN_BASE_Q8_0 = {\n name: 'WHISPER_RUSSIAN_BASE_Q8_0',\n src: `registry://${models[674].registrySource}/${models[674].registryPath}`,\n registryPath: models[674].registryPath,\n registrySource: models[674].registrySource,\n blobCoreKey: models[674].blobCoreKey,\n blobBlockOffset: models[674].blobBlockOffset,\n blobBlockLength: models[674].blobBlockLength,\n blobByteOffset: models[674].blobByteOffset,\n modelId: models[674].modelId,\n expectedSize: models[674].expectedSize,\n sha256Checksum: models[674].sha256Checksum,\n addon: models[674].addon,\n engine: models[674].engine,\n quantization: models[674].quantization,\n params: models[674].params\n};\nexport const WHISPER_RUSSIAN_TINY_F16 = {\n name: 'WHISPER_RUSSIAN_TINY_F16',\n src: `registry://${models[675].registrySource}/${models[675].registryPath}`,\n registryPath: models[675].registryPath,\n registrySource: models[675].registrySource,\n blobCoreKey: models[675].blobCoreKey,\n blobBlockOffset: models[675].blobBlockOffset,\n blobBlockLength: models[675].blobBlockLength,\n blobByteOffset: models[675].blobByteOffset,\n modelId: models[675].modelId,\n expectedSize: models[675].expectedSize,\n sha256Checksum: models[675].sha256Checksum,\n addon: models[675].addon,\n engine: models[675].engine,\n quantization: models[675].quantization,\n params: models[675].params\n};\nexport const WHISPER_RUSSIAN_TINY_Q8_0 = {\n name: 'WHISPER_RUSSIAN_TINY_Q8_0',\n src: `registry://${models[676].registrySource}/${models[676].registryPath}`,\n registryPath: models[676].registryPath,\n registrySource: models[676].registrySource,\n blobCoreKey: models[676].blobCoreKey,\n blobBlockOffset: models[676].blobBlockOffset,\n blobBlockLength: models[676].blobBlockLength,\n blobByteOffset: models[676].blobByteOffset,\n modelId: models[676].modelId,\n expectedSize: models[676].expectedSize,\n sha256Checksum: models[676].sha256Checksum,\n addon: models[676].addon,\n engine: models[676].engine,\n quantization: models[676].quantization,\n params: models[676].params\n};\nexport const WHISPER_SPANISH_TINY_F16 = {\n name: 'WHISPER_SPANISH_TINY_F16',\n src: `registry://${models[677].registrySource}/${models[677].registryPath}`,\n registryPath: models[677].registryPath,\n registrySource: models[677].registrySource,\n blobCoreKey: models[677].blobCoreKey,\n blobBlockOffset: models[677].blobBlockOffset,\n blobBlockLength: models[677].blobBlockLength,\n blobByteOffset: models[677].blobByteOffset,\n modelId: models[677].modelId,\n expectedSize: models[677].expectedSize,\n sha256Checksum: models[677].sha256Checksum,\n addon: models[677].addon,\n engine: models[677].engine,\n quantization: models[677].quantization,\n params: models[677].params\n};\nexport const WHISPER_SPANISH_TINY_Q8_0 = {\n name: 'WHISPER_SPANISH_TINY_Q8_0',\n src: `registry://${models[678].registrySource}/${models[678].registryPath}`,\n registryPath: models[678].registryPath,\n registrySource: models[678].registrySource,\n blobCoreKey: models[678].blobCoreKey,\n blobBlockOffset: models[678].blobBlockOffset,\n blobBlockLength: models[678].blobBlockLength,\n blobByteOffset: models[678].blobByteOffset,\n modelId: models[678].modelId,\n expectedSize: models[678].expectedSize,\n sha256Checksum: models[678].sha256Checksum,\n addon: models[678].addon,\n engine: models[678].engine,\n quantization: models[678].quantization,\n params: models[678].params\n};\nexport const WHISPER_Q8_0 = {\n name: 'WHISPER_Q8_0',\n src: `registry://${models[679].registrySource}/${models[679].registryPath}`,\n registryPath: models[679].registryPath,\n registrySource: models[679].registrySource,\n blobCoreKey: models[679].blobCoreKey,\n blobBlockOffset: models[679].blobBlockOffset,\n blobBlockLength: models[679].blobBlockLength,\n blobByteOffset: models[679].blobByteOffset,\n modelId: models[679].modelId,\n expectedSize: models[679].expectedSize,\n sha256Checksum: models[679].sha256Checksum,\n addon: models[679].addon,\n engine: models[679].engine,\n quantization: models[679].quantization,\n params: models[679].params\n};\nexport const WHISPER_Q8_0_1 = {\n name: 'WHISPER_Q8_0_1',\n src: `registry://${models[680].registrySource}/${models[680].registryPath}`,\n registryPath: models[680].registryPath,\n registrySource: models[680].registrySource,\n blobCoreKey: models[680].blobCoreKey,\n blobBlockOffset: models[680].blobBlockOffset,\n blobBlockLength: models[680].blobBlockLength,\n blobByteOffset: models[680].blobByteOffset,\n modelId: models[680].modelId,\n expectedSize: models[680].expectedSize,\n sha256Checksum: models[680].sha256Checksum,\n addon: models[680].addon,\n engine: models[680].engine,\n quantization: models[680].quantization,\n params: models[680].params\n};\n/**\n * Looks up a model in the built-in catalog by its constant name.\n *\n * @param name - The model constant name (e.g. `\"WHISPER_TINY\"`) to look up.\n * @returns The matching `RegistryItem`, or `undefined` when no catalog entry has that name.\n */\nexport function getModelByName(name) {\n return models.find((model) => model.name === name);\n}\n/**\n * Looks up a model in the built-in catalog by its registry path.\n *\n * @param registryPath - Registry-relative path of the model to look up.\n * @returns The matching `RegistryItem`, or `undefined` when no catalog entry has that registry path.\n */\nexport function getModelByPath(registryPath) {\n return models.find((model) => model.registryPath === registryPath);\n}\n/**\n * Looks up a model in the built-in catalog by model file ID and blob core key.\n *\n * @param modelId - The model file ID to match against the catalog.\n * @param blobCoreKey - The Hyperdrive blob core key to match against the catalog.\n * @returns The matching `RegistryItem`, or `undefined` when no catalog entry has both the given `modelId` and `blobCoreKey`.\n */\nexport function getModelBySrc(modelId, blobCoreKey) {\n return models.find((model) => model.modelId === modelId && model.blobCoreKey === blobCoreKey);\n}\n/**\n * Accumulates profiling statistics and maintains a bounded buffer of recent events.\n * Uses a ring buffer for O(1) event insertion.\n */\nimport { getGlobalSingleton } from '../utils/global-singleton.js';\nimport { createRingBuffer, ringBufferPush, ringBufferToArray, ringBufferClear, ringBufferResize, ringBufferDroppedCount } from './ring-buffer.js';\nconst DEFAULT_MAX_RECENT_EVENTS = 1000;\nconst AGGREGATOR_STATE_KEY = Symbol.for('@qvac/sdk:profiler-aggregator-state');\nfunction getAggregatorState() {\n return getGlobalSingleton(AGGREGATOR_STATE_KEY, () => {\n return {\n stats: new Map(),\n eventBuffer: createRingBuffer(DEFAULT_MAX_RECENT_EVENTS)\n };\n });\n}\nexport function createAggregator(maxRecentEvents = DEFAULT_MAX_RECENT_EVENTS) {\n const state = getAggregatorState();\n state.stats = new Map();\n state.eventBuffer = createRingBuffer(maxRecentEvents);\n}\nfunction recordStats(key, value) {\n const aggregator = getAggregatorState();\n let statsState = aggregator.stats.get(key);\n if (!statsState) {\n statsState = {\n count: 0,\n min: Infinity,\n max: -Infinity,\n sum: 0,\n last: 0\n };\n aggregator.stats.set(key, statsState);\n }\n statsState.count++;\n statsState.sum += value;\n statsState.last = value;\n if (value < statsState.min)\n statsState.min = value;\n if (value > statsState.max)\n statsState.max = value;\n}\nfunction getStats(state) {\n return {\n count: state.count,\n min: state.count > 0 ? state.min : 0,\n max: state.count > 0 ? state.max : 0,\n avg: state.count > 0 ? state.sum / state.count : 0,\n sum: state.sum,\n last: state.last\n };\n}\nexport function recordEvent(event, storeInBuffer = true) {\n const state = getAggregatorState();\n if (storeInBuffer) {\n ringBufferPush(state.eventBuffer, event);\n }\n if (event.ms !== undefined) {\n const key = event.phase ? `${event.op}.${event.phase}` : event.op;\n recordStats(key, event.ms);\n }\n if (event.gauges) {\n const baseKey = event.phase ? `${event.op}.${event.phase}` : event.op;\n for (const [gaugeName, value] of Object.entries(event.gauges)) {\n recordStats(`${baseKey}.${gaugeName}`, value);\n }\n }\n}\nexport function getAggregates() {\n const state = getAggregatorState();\n const result = {};\n for (const [key, statsState] of state.stats) {\n result[key] = getStats(statsState);\n }\n return result;\n}\n/** Returns events in chronological order (oldest first). */\nexport function getRecentEvents() {\n return ringBufferToArray(getAggregatorState().eventBuffer);\n}\nexport function getEventCount() {\n const state = getAggregatorState();\n let total = 0;\n for (const statsState of state.stats.values()) {\n total += statsState.count;\n }\n return total;\n}\nexport function getDroppedCount() {\n return ringBufferDroppedCount(getAggregatorState().eventBuffer);\n}\nexport function clearAggregator() {\n const state = getAggregatorState();\n state.stats.clear();\n ringBufferClear(state.eventBuffer);\n}\nexport function setMaxRecentEvents(max) {\n const state = getAggregatorState();\n state.eventBuffer = ringBufferResize(state.eventBuffer, max);\n}\n/**\n * Runtime-safe monotonic clock for profiling.\n * Priority: performance.now > process.hrtime > Date.now\n */\nlet clockSource;\nlet nowMsImpl;\n// Detect and cache the best available clock source at module load\nif (typeof globalThis !== 'undefined' &&\n typeof globalThis.performance !== 'undefined' &&\n typeof globalThis.performance.now === 'function') {\n clockSource = 'performance';\n const perfNow = globalThis.performance.now.bind(globalThis.performance);\n nowMsImpl = () => perfNow();\n}\nelse if (typeof process !== 'undefined' &&\n typeof process.hrtime === 'function' &&\n typeof process.hrtime.bigint === 'function') {\n clockSource = 'hrtime';\n const hrtime = process.hrtime.bigint.bind(process.hrtime);\n const startNs = hrtime();\n nowMsImpl = () => Number(hrtime() - startNs) / 1_000_000;\n}\nelse {\n clockSource = 'date';\n const startMs = Date.now();\n nowMsImpl = () => Date.now() - startMs;\n}\nexport function getClockSource() {\n return clockSource;\n}\nexport function isMonotonic() {\n return clockSource === 'performance' || clockSource === 'hrtime';\n}\nexport function nowMs() {\n return nowMsImpl();\n}\nexport async function measureAsync(fn) {\n const start = nowMs();\n const result = await fn();\n return [result, nowMs() - start];\n}\nexport function measureSync(fn) {\n const start = nowMs();\n const result = fn();\n return [result, nowMs() - start];\n}\nexport function generateProfileId() {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).substring(2, 8);\n return `${timestamp}-${random}`;\n}\n/**\n * Central state management for profiling enablement, configuration, and recording.\n *\n * Precedence (highest to lowest):\n * 1. Per-call override\n * 2. Runtime API (enable/disable)\n * 3. Disabled default\n */\nimport { getGlobalSingleton } from '../utils/global-singleton.js';\nimport { createAggregator, recordEvent as aggregatorRecord, getAggregates as aggregatorGetAggregates, getRecentEvents as aggregatorGetRecentEvents, clearAggregator, setMaxRecentEvents } from './aggregator.js';\nimport { nowMs, generateProfileId } from './clock.js';\nconst DEFAULT_CONFIG = {\n enabled: false,\n mode: 'summary',\n includeServerBreakdown: false,\n operationFilters: [],\n maxRecentEvents: 1000\n};\nconst CONTROLLER_STATE_KEY = Symbol.for('@qvac/sdk:profiler-controller-state');\nfunction getControllerState() {\n const state = getGlobalSingleton(CONTROLLER_STATE_KEY, () => {\n return {\n runtimeOverride: undefined,\n runtimeOptions: {},\n onRecordCallbacks: [],\n initialized: false\n };\n });\n if (!state.initialized) {\n createAggregator(DEFAULT_CONFIG.maxRecentEvents);\n state.initialized = true;\n }\n return state;\n}\nexport function enable(options) {\n const state = getControllerState();\n state.runtimeOverride = true;\n state.runtimeOptions = options ? { ...options } : {};\n clearAggregator();\n setMaxRecentEvents(DEFAULT_CONFIG.maxRecentEvents);\n}\nexport function disable() {\n const state = getControllerState();\n state.runtimeOverride = false;\n state.runtimeOptions = {};\n setMaxRecentEvents(DEFAULT_CONFIG.maxRecentEvents);\n}\nexport function isEnabled() {\n const state = getControllerState();\n return state.runtimeOverride ?? false;\n}\nexport function getEffectiveConfig() {\n const state = getControllerState();\n return {\n enabled: isEnabled(),\n mode: state.runtimeOptions.mode ?? DEFAULT_CONFIG.mode,\n includeServerBreakdown: state.runtimeOptions.includeServerBreakdown ?? DEFAULT_CONFIG.includeServerBreakdown,\n operationFilters: [\n ...(state.runtimeOptions.operationFilters ?? DEFAULT_CONFIG.operationFilters)\n ],\n maxRecentEvents: DEFAULT_CONFIG.maxRecentEvents\n };\n}\nexport function shouldProfile(operation, perCallOptions) {\n if (perCallOptions?.enabled !== undefined) {\n return perCallOptions.enabled;\n }\n if (!isEnabled()) {\n return false;\n }\n const config = getEffectiveConfig();\n if (config.operationFilters.length > 0) {\n return config.operationFilters.includes(operation);\n }\n return true;\n}\nexport function shouldIncludeServerBreakdown(perCallOptions) {\n if (perCallOptions?.includeServerBreakdown !== undefined) {\n return perCallOptions.includeServerBreakdown;\n }\n return getEffectiveConfig().includeServerBreakdown;\n}\nexport function generateId() {\n return generateProfileId();\n}\nexport function record(event) {\n const state = getControllerState();\n let eventWithTs = event;\n if (event.ts === undefined) {\n eventWithTs = { ...event, ts: nowMs() };\n }\n const storeInBuffer = getEffectiveConfig().mode === 'verbose';\n aggregatorRecord(eventWithTs, storeInBuffer);\n for (const cb of state.onRecordCallbacks) {\n try {\n cb(eventWithTs);\n }\n catch {\n // Callback errors should not break profiling\n }\n }\n}\n/** Returns unsubscribe function. */\nexport function onRecord(callback) {\n const state = getControllerState();\n state.onRecordCallbacks.push(callback);\n return () => {\n const idx = state.onRecordCallbacks.indexOf(callback);\n if (idx >= 0) {\n state.onRecordCallbacks.splice(idx, 1);\n }\n };\n}\nexport function getAggregates() {\n return aggregatorGetAggregates();\n}\nexport function getRecentEvents() {\n return aggregatorGetRecentEvents();\n}\nexport function clear() {\n clearAggregator();\n}\n/**\n * Helpers to inject/extract __profiling metadata in RPC payloads.\n */\nimport { PROFILING_KEY } from '../schemas/index.js';\nexport function createProfilingMeta(profileId, includeServerBreakdown) {\n return {\n enabled: true,\n id: profileId,\n includeServer: includeServerBreakdown\n };\n}\nexport function createProfilingDisabledMeta() {\n return { enabled: false };\n}\nexport function injectProfilingMetaIntoObject(obj, meta) {\n return { ...obj, [PROFILING_KEY]: meta };\n}\nexport function extractProfilingMeta(payload) {\n if (typeof payload === 'object' && payload !== null && PROFILING_KEY in payload) {\n const meta = payload[PROFILING_KEY];\n if (typeof meta === 'object' && meta !== null) {\n return meta;\n }\n }\n return undefined;\n}\nexport function stripProfilingMeta(payload) {\n if (PROFILING_KEY in payload) {\n const { [PROFILING_KEY]: _unused, ...rest } = payload;\n void _unused;\n return rest;\n }\n return payload;\n}\nimport { nowMs } from './clock.js';\nimport { record } from './controller.js';\nexport function recordPhase(base, phase, ms, extra) {\n if (ms === undefined)\n return;\n record({ ...base, phase, ms, ...extra });\n}\nexport function recordFailure(base, startTime, error) {\n const now = nowMs();\n record({\n ...base,\n ts: now,\n phase: 'failed',\n ms: now - startTime,\n tags: {\n error: error instanceof Error ? error.name : 'Unknown',\n message: error instanceof Error ? error.message.slice(0, 100) : String(error).slice(0, 100)\n }\n });\n}\nexport function recordServerBreakdownPhases(base, server, prefix = 'server') {\n recordPhase(base, `${prefix}.request.jsonParse`, server.requestJsonParseMs);\n recordPhase(base, `${prefix}.request.zodValidation`, server.requestZodValidationMs);\n recordPhase(base, `${prefix}.handlerExecution`, server.handlerExecutionMs);\n recordPhase(base, `${prefix}.response.zodValidation`, server.responseZodValidationMs);\n recordPhase(base, `${prefix}.response.stringify`, server.responseStringifyMs);\n recordPhase(base, `${prefix}.totalServerTime`, server.totalServerMs);\n}\nexport function recordDelegationBreakdownPhases(base, delegation, prefix = 'delegation') {\n recordPhase(base, `${prefix}.connection`, delegation.connectionMs);\n recordPhase(base, `${prefix}.request.stringify`, delegation.requestStringifyMs);\n recordPhase(base, `${prefix}.serverWait`, delegation.serverWaitMs);\n recordPhase(base, `${prefix}.response.jsonParse`, delegation.responseJsonParseMs);\n recordPhase(base, `${prefix}.totalDelegationTime`, delegation.totalDelegationMs);\n}\n/**\n * JSON, table, and summary export utilities for profiling data.\n */\nimport { getEffectiveConfig, getAggregates, getRecentEvents } from './controller.js';\nimport { getDroppedCount, getEventCount } from './aggregator.js';\nimport { nowMs, getClockSource, isMonotonic } from './clock.js';\nexport function exportJSON(options) {\n const config = getEffectiveConfig();\n const includeRecent = options?.includeRecentEvents ?? true;\n const result = {\n config,\n aggregates: getAggregates(),\n exportedAt: nowMs()\n };\n if (includeRecent && config.mode === 'verbose') {\n result.recentEvents = getRecentEvents();\n }\n return result;\n}\nfunction aggregateMatchingStats(aggregates, predicate) {\n const matches = Object.entries(aggregates).filter(([key]) => predicate(key));\n if (matches.length === 0) {\n return undefined;\n }\n let count = 0;\n let sum = 0;\n let min = Infinity;\n let max = -Infinity;\n let last = 0;\n for (const [, stats] of matches) {\n count += stats.count;\n sum += stats.sum;\n if (stats.count > 0) {\n if (stats.min < min)\n min = stats.min;\n if (stats.max > max)\n max = stats.max;\n last = stats.last;\n }\n }\n return {\n count,\n min: count > 0 ? min : 0,\n max: count > 0 ? max : 0,\n avg: count > 0 ? sum / count : 0,\n sum,\n last\n };\n}\nfunction formatDuration(ms) {\n if (ms < 1) {\n return `${(ms * 1000).toFixed(0)}μs`;\n }\n if (ms < 1000) {\n return `${ms.toFixed(1)}ms`;\n }\n if (ms < 60000) {\n return `${(ms / 1000).toFixed(2)}s`;\n }\n return `${(ms / 60000).toFixed(2)}m`;\n}\nfunction formatBytes(bytes) {\n if (bytes < 1024)\n return `${bytes.toFixed(0)} B`;\n if (bytes < 1024 * 1024)\n return `${(bytes / 1024).toFixed(1)} KB`;\n if (bytes < 1024 * 1024 * 1024)\n return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;\n}\nfunction formatThroughput(bps) {\n if (bps < 1024)\n return `${bps.toFixed(0)} B/s`;\n if (bps < 1024 * 1024)\n return `${(bps / 1024).toFixed(1)} KB/s`;\n if (bps < 1024 * 1024 * 1024)\n return `${(bps / (1024 * 1024)).toFixed(2)} MB/s`;\n return `${(bps / (1024 * 1024 * 1024)).toFixed(2)} GB/s`;\n}\nfunction formatNumber(n) {\n if (Number.isInteger(n)) {\n return n.toLocaleString();\n }\n if (n === 0)\n return '0';\n if (Math.abs(n) < 0.01)\n return n.toExponential(2);\n if (Math.abs(n) < 1)\n return n.toFixed(3);\n if (Math.abs(n) < 100)\n return n.toFixed(2);\n return n.toFixed(1);\n}\nconst METRIC_TYPE_REGISTRY = {\n // Exceptions that patterns can't infer correctly\n timeToFirstToken: 'duration',\n totalSegments: 'number',\n totalSamples: 'number'\n};\nfunction inferMetricTypeFromPattern(lowerName) {\n if (lowerName.includes('bps') || lowerName.includes('speed')) {\n return 'throughput';\n }\n if (lowerName.includes('bytes') ||\n lowerName.includes('downloaded') ||\n lowerName.includes('size')) {\n return 'bytes';\n }\n if (lowerName.endsWith('time') ||\n lowerName.endsWith('ms') ||\n lowerName.endsWith('duration') ||\n lowerName.includes('ttfb') ||\n lowerName.includes('latency') ||\n lowerName.includes('overhead') ||\n lowerName.includes('execution')) {\n return 'duration';\n }\n if (lowerName.includes('count') || lowerName.includes('tokens') || lowerName.includes('factor')) {\n return 'number';\n }\n // Default to duration for unknown metrics (most profiling is timing)\n return 'duration';\n}\nfunction detectMetricType(metricName) {\n if (METRIC_TYPE_REGISTRY[metricName]) {\n return METRIC_TYPE_REGISTRY[metricName];\n }\n return inferMetricTypeFromPattern(metricName.toLowerCase());\n}\nfunction formatMetricValue(value, metricName) {\n const type = detectMetricType(metricName);\n switch (type) {\n case 'bytes':\n return formatBytes(value);\n case 'throughput':\n return formatThroughput(value);\n case 'number':\n return formatNumber(value);\n case 'duration':\n default:\n return formatDuration(value);\n }\n}\nfunction pad(s, len, align = 'left') {\n if (s.length >= len)\n return s.substring(0, len);\n const spaces = ' '.repeat(len - s.length);\n return align === 'left' ? s + spaces : spaces + s;\n}\nexport function exportTable() {\n const aggregates = getAggregates();\n const entries = Object.entries(aggregates);\n if (entries.length === 0) {\n return 'No profiling data recorded.';\n }\n const metricWidth = 48;\n const numWidth = 12;\n const header = [\n pad('Metric', metricWidth),\n pad('Count', numWidth, 'right'),\n pad('Min', numWidth, 'right'),\n pad('Max', numWidth, 'right'),\n pad('Avg', numWidth, 'right'),\n pad('Total', numWidth, 'right')\n ].join(' | ');\n const separator = '-'.repeat(header.length);\n const rows = entries\n .sort((a, b) => a[0].localeCompare(b[0]))\n .map(([metric, stats]) => {\n return [\n pad(metric, metricWidth),\n pad(formatNumber(stats.count), numWidth, 'right'),\n pad(formatMetricValue(stats.min, metric), numWidth, 'right'),\n pad(formatMetricValue(stats.max, metric), numWidth, 'right'),\n pad(formatMetricValue(stats.avg, metric), numWidth, 'right'),\n pad(formatMetricValue(stats.sum, metric), numWidth, 'right')\n ].join(' | ');\n });\n return [separator, header, separator, ...rows, separator].join('\\n');\n}\nexport function exportSummary() {\n const aggregates = getAggregates();\n const config = getEffectiveConfig();\n const eventCount = getEventCount();\n const droppedCount = getDroppedCount();\n const lines = [\n '='.repeat(60),\n 'PROFILER SUMMARY',\n '='.repeat(60),\n '',\n 'Session:',\n ` Status: ${config.enabled ? 'enabled' : 'disabled'}`,\n ` Mode: ${config.mode}`,\n ` Clock: ${getClockSource()} (monotonic: ${isMonotonic()})`,\n ` Events: ${eventCount.toLocaleString()}`,\n ` Dropped: ${droppedCount.toLocaleString()}`,\n ''\n ];\n const keyMetrics = [\n {\n label: 'RPC Total',\n stats: aggregateMatchingStats(aggregates, (key) => key.endsWith('.totalClientTime'))\n },\n {\n label: 'Handler',\n stats: aggregateMatchingStats(aggregates, (key) => key.endsWith('.server.handlerExecution') || !key.includes('.'))\n },\n {\n label: 'Model Load',\n stats: aggregateMatchingStats(aggregates, (key) => key === 'load.totalTime' || key.endsWith('.load.totalTime'))\n },\n {\n label: 'Download',\n stats: aggregateMatchingStats(aggregates, (key) => key === 'download.time' || key.endsWith('.download.time'))\n }\n ];\n const hasMetrics = keyMetrics.some((m) => m.stats);\n if (hasMetrics) {\n lines.push('Key Metrics:');\n lines.push('-'.repeat(60));\n lines.push(' ' +\n 'Metric'.padEnd(18) +\n 'Samples'.padStart(10) +\n 'Avg'.padStart(12) +\n 'Total'.padStart(12));\n lines.push('-'.repeat(60));\n for (const { label, stats } of keyMetrics) {\n if (stats) {\n const name = label.padEnd(18);\n const samples = String(stats.count).padStart(10);\n const avg = formatDuration(stats.avg).padStart(12);\n const total = formatDuration(stats.sum).padStart(12);\n lines.push(` ${name}${samples}${avg}${total}`);\n }\n }\n }\n else {\n lines.push('No metrics recorded yet.');\n }\n lines.push('');\n lines.push('='.repeat(60));\n return lines.join('\\n');\n}\n/**\n * QVAC SDK Profiler\n *\n * @example\n * ```ts\n * import { profiler } from \"@qvac/sdk\";\n *\n * profiler.enable({ mode: \"summary\" });\n * // ... run SDK operations ...\n * console.log(profiler.exportTable());\n * profiler.disable();\n * ```\n */\nimport * as controller from './controller.js';\nimport * as exporters from './exporters.js';\nexport const profiler = {\n /**\n * Enables profiling and resets all previously aggregated data.\n *\n * @param options - Optional runtime options (profiling mode, server breakdown, operation filters, ring-buffer capacity).\n */\n enable: (options) => controller.enable(options),\n /**\n * Disables profiling. New SDK operations will no longer be recorded.\n */\n disable: () => controller.disable(),\n /**\n * Returns whether profiling is currently enabled.\n *\n * @returns `true` when profiling is currently enabled, `false` otherwise.\n */\n isEnabled: () => controller.isEnabled(),\n /**\n * Exports profiling data as a structured JSON object suitable for machine consumption.\n *\n * @param options - Export options.\n * @param options.includeRecentEvents - When `true`, includes the ring buffer of recent events in the export (only populated when profiler was enabled in `\"verbose\"` mode).\n * @returns A `ProfilerExport` snapshot of aggregated stats and (optionally) recent events.\n */\n exportJSON: (options) => exporters.exportJSON(options),\n /**\n * Exports aggregated stats as a formatted ASCII table suitable for terminal output.\n *\n * @returns A multi-line string rendering of the aggregated stats table.\n */\n exportTable: () => exporters.exportTable(),\n /**\n * Exports a short, human-readable summary string of the aggregated stats.\n *\n * @returns A one-paragraph summary of the profiling data.\n */\n exportSummary: () => exporters.exportSummary(),\n /**\n * Registers a listener for profiling events; returns an unsubscribe function.\n *\n * @param callback - Invoked once per recorded profiling event.\n * @returns An unsubscribe function; call it to remove the listener.\n */\n onRecord: (callback) => controller.onRecord(callback),\n /**\n * Returns the current effective profiler configuration.\n *\n * @returns The effective `ResolvedProfilerConfig` (defaults merged with user overrides).\n */\n getConfig: () => controller.getEffectiveConfig(),\n /**\n * Returns all aggregated stats keyed by operation name.\n *\n * @returns A record of `AggregatedStats` keyed by operation name.\n */\n getAggregates: () => controller.getAggregates(),\n /**\n * Clears all aggregated data and the recent-events ring buffer.\n */\n clear: () => controller.clear()\n};\nexport { nowMs } from './clock.js';\nexport { record, shouldProfile, shouldIncludeServerBreakdown, generateId, isEnabled } from './controller.js';\nexport { createProfilingMeta, createProfilingDisabledMeta, injectProfilingMetaIntoObject, extractProfilingMeta, stripProfilingMeta } from './envelope.js';\nexport { recordPhase, recordFailure, recordServerBreakdownPhases, recordDelegationBreakdownPhases } from './events.js';\n/**\n * Helpers for propagating model execution timing via internal symbols.\n */\nimport { MODEL_EXECUTION_KEY } from '../schemas/index.js';\nexport function hasDefinedValues(obj) {\n return Object.values(obj).some((v) => v !== undefined);\n}\nexport function attachModelExecutionMs(target, ms) {\n if (ms !== undefined) {\n ;\n target[MODEL_EXECUTION_KEY] = ms;\n }\n return target;\n}\nexport function readModelExecutionMs(target) {\n return target?.[MODEL_EXECUTION_KEY];\n}\nexport function forwardModelExecution(target, source) {\n return attachModelExecutionMs(target, readModelExecutionMs(source));\n}\nexport function buildStreamResult(modelExecutionMs, stats) {\n const result = { modelExecutionMs };\n if (stats && hasDefinedValues(stats)) {\n result.stats = stats;\n }\n return result;\n}\nexport function buildUnaryResult(response, modelExecutionMs, stats) {\n const result = { ...response };\n if (stats && hasDefinedValues(stats)) {\n result.stats = stats;\n }\n return attachModelExecutionMs(result, modelExecutionMs);\n}\n/**\n * O(1) bounded buffer for event storage.\n * Oldest events are overwritten when full.\n */\nimport { ProfilerInvalidCapacityError } from '../utils/errors-client.js';\nexport function createRingBuffer(capacity) {\n if (capacity < 1) {\n throw new ProfilerInvalidCapacityError(1);\n }\n return {\n buffer: new Array(capacity),\n capacity,\n head: 0,\n size: 0,\n totalPushed: 0\n };\n}\n// Returns the overwritten item if buffer was full, undefined otherwise.\nexport function ringBufferPush(state, item) {\n const overwritten = state.size === state.capacity ? state.buffer[state.head] : undefined;\n state.buffer[state.head] = item;\n state.head = (state.head + 1) % state.capacity;\n state.size = Math.min(state.size + 1, state.capacity);\n state.totalPushed++;\n return overwritten;\n}\n// Returns all items in chronological order (oldest first).\nexport function ringBufferToArray(state) {\n if (state.size === 0) {\n return [];\n }\n const result = [];\n const start = state.size === state.capacity\n ? state.head // Full: head points to oldest\n : 0;\n for (let i = 0; i < state.size; i++) {\n const index = (start + i) % state.capacity;\n const item = state.buffer[index];\n if (item !== undefined) {\n result.push(item);\n }\n }\n return result;\n}\n// Returns the most recent N items (newest first).\nexport function ringBufferGetRecent(state, count) {\n if (state.size === 0 || count <= 0) {\n return [];\n }\n const actualCount = Math.min(count, state.size);\n const result = [];\n for (let i = 0; i < actualCount; i++) {\n const index = (state.head - 1 - i + state.capacity) % state.capacity;\n const item = state.buffer[index];\n if (item !== undefined) {\n result.push(item);\n }\n }\n return result;\n}\nexport function ringBufferClear(state) {\n state.buffer = new Array(state.capacity);\n state.head = 0;\n state.size = 0;\n state.totalPushed = 0;\n}\nexport function ringBufferDroppedCount(state) {\n return Math.max(0, state.totalPushed - state.capacity);\n}\n// Resizes the buffer, keeping the most recent items.\nexport function ringBufferResize(state, newCapacity) {\n if (newCapacity < 1) {\n throw new ProfilerInvalidCapacityError(1);\n }\n const items = ringBufferToArray(state);\n const itemsToKeep = items.slice(-newCapacity);\n const newState = createRingBuffer(newCapacity);\n for (const item of itemsToKeep) {\n ringBufferPush(newState, item);\n }\n newState.totalPushed = state.totalPushed;\n return newState;\n}\nimport { z } from 'zod';\nexport const SUPPORTED_ARCHIVE_EXTENSIONS = ['.tar', '.tar.gz', '.tgz'];\nexport const archiveTypeSchema = z.enum(['tar', 'tar.gz']);\nexport const filenameToArchiveTypeSchema = z.string().transform((filename) => {\n const lower = filename.toLowerCase();\n if (lower.endsWith('.tar.gz') || lower.endsWith('.tgz'))\n return 'tar.gz';\n if (lower.endsWith('.tar'))\n return 'tar';\n return null;\n});\nimport { z } from 'zod';\nimport { completionEventSchema, completionStatsSchema } from './completion-event.js';\nimport { completionParamsSchema, generationParamsSchema, responseFormatSchema, toolDialectSchema } from './completion-stream.js';\nimport {} from './mcp-adapter.js';\nimport { toolSchema } from './tools.js';\nconst mcpClientInputSchema = z.custom();\nconst batchPromptBaseSchema = z\n .object({\n id: z\n .string()\n .min(1)\n .optional()\n .describe('Optional caller-supplied id used to correlate streamed chunks and final results.'),\n history: completionParamsSchema.shape.history,\n generationParams: generationParamsSchema\n .optional()\n .describe('Optional per-prompt sampling / generation parameters.'),\n responseFormat: responseFormatSchema\n .optional()\n .describe('Optional per-prompt structured-output constraint.')\n})\n .strict();\nfunction refineNoToolsWithStructuredOutput(data, ctx) {\n const hasTools = (data.tools?.length ?? 0) > 0;\n const hasMcp = (data.mcp?.length ?? 0) > 0;\n if (data.responseFormat && data.responseFormat.type !== 'text' && (hasTools || hasMcp)) {\n ctx.addIssue({\n code: 'custom',\n message: 'responseFormat (json_object/json_schema) cannot be combined with tools or mcp; tools already constrain output via their parameter schema.',\n path: ['responseFormat']\n });\n }\n}\nexport const batchPromptSchema = batchPromptBaseSchema\n .extend({\n tools: z.array(toolSchema).optional().describe('Optional per-prompt tools the model can call.'),\n mcp: z\n .array(mcpClientInputSchema)\n .optional()\n .describe('Optional per-prompt MCP clients used to source tools.')\n})\n .strict()\n .superRefine(refineNoToolsWithStructuredOutput);\nconst batchPromptStreamSchema = batchPromptBaseSchema\n .extend({\n tools: z.array(toolSchema).optional().describe('Resolved per-prompt tools the model can call.')\n})\n .strict()\n .superRefine(refineNoToolsWithStructuredOutput);\nconst batchCompletionClientParamsBaseSchema = z\n .object({\n modelId: z.string().describe('The identifier of the model to use for batch completion.'),\n prompts: z\n .array(batchPromptSchema)\n .min(1)\n .refine((prompts) => {\n const ids = prompts\n .map((prompt) => prompt.id)\n .filter((id) => id !== undefined);\n return new Set(ids).size === ids.length;\n }, {\n // Caller-supplied ids key per-prompt state on the client; dupes\n // would silently merge two prompts' events and results.\n message: 'Batch prompt ids must be unique.'\n })\n .describe('Batch prompts submitted to the addon in one run.'),\n stream: z\n .boolean()\n .optional()\n .describe('Whether to stream tokens (`true`) or return all events on completion. Defaults to true.'),\n captureThinking: z\n .boolean()\n .optional()\n .describe('When `true`, capture and emit reasoning/thinking deltas separately from content deltas.'),\n emitRawDeltas: z\n .boolean()\n .optional()\n .describe('When `true`, also emit raw per-token deltas in addition to normalized content deltas.'),\n toolDialect: toolDialectSchema\n .optional()\n .describe('Override auto-detected tool-call dialect for all prompts.'),\n requestId: z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight batch request.')\n})\n .strict();\nexport const batchCompletionClientParamsSchema = batchCompletionClientParamsBaseSchema;\nexport const batchCompletionStreamRequestSchema = batchCompletionClientParamsBaseSchema.extend({\n prompts: z\n .array(batchPromptStreamSchema)\n .min(1)\n .refine((prompts) => {\n const ids = prompts\n .map((prompt) => prompt.id)\n .filter((id) => id !== undefined);\n return new Set(ids).size === ids.length;\n }, {\n message: 'Batch prompt ids must be unique.'\n })\n .describe('Batch prompts submitted to the addon in one run.'),\n type: z.literal('batchCompletionStream')\n});\nexport const batchCompletionEventSchema = z\n .object({\n id: z.string(),\n event: completionEventSchema\n})\n .strict();\nexport const batchCompletionStreamResponseSchema = z\n .object({\n type: z.literal('batchCompletionStream'),\n done: z.boolean().optional(),\n ids: z.array(z.string()).optional(),\n events: z.array(batchCompletionEventSchema),\n // Batch-level stats reported once on the terminal (`done`) frame. The\n // addon aggregates decode metrics across the whole batch (e.g.\n // `avgConcurrentSeq`, total prompt/generated tokens) — it does NOT\n // break them down per prompt — so they belong on the run, not on each\n // prompt's `final.stats`.\n stats: completionStatsSchema.optional()\n})\n .strict();\nimport { z } from 'zod';\nimport { modelSrcInputSchema } from './model-src-utils.js';\n// === BCI (whisper.cpp) engine config ===\n//\n// Mirrors `BCIWhispercppConfig` from `@qvac/bci-whispercpp`. Unlike the\n// flat `whisperConfigSchema`, the BCI addon nests its inference knobs\n// under `whisperConfig` and exposes a separate `bciConfig` for\n// session-level (neural-signal) parameters.\n// Reduced whisper inference field set exposed by the BCI addon (see the\n// `WhisperConfig` interface in `@qvac/bci-whispercpp`).\nconst bciWhisperConfigSchema = z\n .object({\n language: z.string().optional(),\n n_threads: z.number().int().optional(),\n temperature: z.number().optional(),\n suppress_nst: z.boolean().optional(),\n suppress_blank: z.boolean().optional(),\n duration_ms: z.number().int().optional(),\n translate: z.boolean().optional(),\n no_timestamps: z.boolean().optional(),\n single_segment: z.boolean().optional(),\n print_special: z.boolean().optional(),\n print_progress: z.boolean().optional(),\n print_realtime: z.boolean().optional(),\n print_timestamps: z.boolean().optional(),\n detect_language: z.boolean().optional(),\n greedy_best_of: z.number().int().optional(),\n beam_search_beam_size: z.number().int().optional()\n})\n .optional();\nconst bciSessionConfigSchema = z\n .object({\n // Session day index used to select day-specific projection matrices.\n // `-1` enables mel passthrough (parity testing only).\n day_idx: z.number().int().optional()\n})\n .optional();\nconst bciContextParamsSchema = z\n .object({\n model: z.string().optional(),\n use_gpu: z.boolean().optional(),\n flash_attn: z.boolean().optional(),\n gpu_device: z.number().optional()\n})\n .optional();\nconst bciMiscConfigSchema = z\n .object({\n caption_enabled: z.boolean().optional()\n})\n .optional();\nexport const bciConfigSchema = z.object({\n whisperConfig: bciWhisperConfigSchema,\n bciConfig: bciSessionConfigSchema,\n contextParams: bciContextParamsSchema,\n miscConfig: bciMiscConfigSchema,\n backendsDir: z.string().optional(),\n embedderModelSrc: modelSrcInputSchema.optional()\n});\nimport { z } from 'zod';\nimport { transcribeSegmentSchema, transcribeStatsSchema } from './transcription.js';\n// Neural-signal binary input. The BCI addon consumes a raw neural buffer\n// (not audio): pass it inline as base64 or point at a local `.bin` file.\nexport const neuralInputSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('base64').describe('Inline base64-encoded neural bytes.'),\n value: z.string().describe('Base64-encoded contents of a BCI neural `.bin` recording.')\n }),\n z.object({\n type: z.literal('filePath').describe('Local neural `.bin` file path.'),\n value: z.string().describe('Path to a BCI neural `.bin` recording on the provider.')\n })\n]);\nconst bciTranscribeBaseSchema = z.object({\n modelId: z.string().describe('Identifier returned by `loadModel()` for a loaded BCI model.'),\n metadata: z\n .boolean()\n .optional()\n .describe('When true, responses yield transcript segment metadata objects (`{ text, startMs, endMs, append, id }`) instead of joined text.')\n});\nexport const bciTranscribeParamsSchema = bciTranscribeBaseSchema.extend({\n neuralData: neuralInputSchema.describe('Fixed wire shape for BCI neural input: either inline base64 neural bytes or a provider-local `.bin` file path.')\n});\nexport const bciTranscribeClientParamsSchema = bciTranscribeBaseSchema.extend({\n neuralData: z\n .union([z.string(), z.instanceof(Uint8Array)])\n .describe('Convenience client input for BCI neural data: pass a local/provider `.bin` file path as a string, or raw neural bytes as a `Uint8Array`. The client converts this to `neuralInputSchema` before sending the request.')\n});\nexport const bciTranscribeRequestSchema = bciTranscribeParamsSchema.extend({\n type: z.literal('bciTranscribe'),\n requestId: z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight BCI transcription, generated by the client at call time. Surfaces on the registry so callers can target it with `cancel({ requestId })`. Optional on the wire — the server falls back to a server-generated id when the field is missing.')\n});\nconst bciTranscriptionResultBase = z.object({\n text: z.string().optional(),\n done: z.boolean().optional(),\n stats: transcribeStatsSchema.optional(),\n error: z.string().optional(),\n segment: transcribeSegmentSchema.optional()\n});\nexport const bciTranscribeResponseSchema = bciTranscriptionResultBase.extend({\n type: z.literal('bciTranscribe')\n});\n/**\n * Per-call overrides for the BCI addon's sliding-window streaming\n * (`transcribeStream`). Each field maps 1:1 to the addon's `streamOpts`;\n * any field omitted falls back to the addon default.\n */\nexport const bciStreamOptsSchema = z\n .object({\n windowTimesteps: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Decode window size in timesteps (addon default: 1500).'),\n hopTimesteps: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('How far the window advances between decodes (addon default: 500). Must be < windowTimesteps.'),\n emit: z\n .enum(['delta', 'full'])\n .optional()\n .describe(\"'delta' (default) emits only the newly-discovered tail per window; 'full' emits the full running transcript each update.\")\n})\n .refine((opts) => opts.windowTimesteps === undefined ||\n opts.hopTimesteps === undefined ||\n opts.hopTimesteps < opts.windowTimesteps, {\n message: 'hopTimesteps must be < windowTimesteps',\n path: ['hopTimesteps']\n});\nexport const bciTranscribeStreamRequestSchema = bciTranscribeBaseSchema.extend({\n type: z.literal('bciTranscribeStream'),\n streamOpts: bciStreamOptsSchema.optional(),\n requestId: z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight duplex BCI transcription, generated by the client at call time. Surfaces on the registry so callers can target it with `cancel({ requestId })`. Optional on the wire — the server falls back to a server-generated id when the field is missing.')\n});\nexport const bciTranscribeStreamResponseSchema = bciTranscriptionResultBase.extend({\n type: z.literal('bciTranscribeStream')\n});\nimport { z } from 'zod';\nconst cancelBaseSchema = z.object({\n type: z.literal('cancel')\n});\n/**\n * Public-API base for the broad-cancel escape hatch. Kept exported so\n * the bare-side `cancel({ modelId, kind? })` helper can parse the\n * `modelId` field consistently with the wire envelope.\n */\nexport const cancelInferenceBaseSchema = z.object({\n modelId: z.string().describe('The model ID to cancel inference for')\n});\n/**\n * Coarse kind narrowing for the broad-cancel escape hatch. Matches the\n * server-side `RequestKind` union in `server/bare/runtime/request-context.ts`\n * — keep the two lists in sync. The kind is optional; omitting it\n * cancels every in-flight request on the model regardless of kind\n * (the \"cancel everything on this model\" sweep used by model-unload\n * and app-shutdown paths).\n */\nconst cancelKindSchema = z\n .enum([\n 'completion',\n 'batchCompletion',\n 'embeddings',\n 'transcribe',\n 'translate',\n 'diffusion',\n 'tts',\n 'ocr',\n 'vla',\n 'finetune',\n 'loadModel',\n 'downloadAsset',\n 'rag'\n])\n .describe('Optional kind narrowing for the broad cancel. Omitting it cancels every in-flight request on the model.');\n/**\n * Targeted cancel by `requestId` — the primary cancel path in\n * SDK 0.11.0. Pair with the `requestId` field exposed on\n * `CompletionRun` (and the decorated promises returned by\n * `loadModel(...)`, `downloadAsset(...)`, `embed(...)`,\n * `transcribe(...)`, `rag*(...)` etc.) to cancel a specific in-flight\n * request rather than every request running on a given model.\n *\n * `clearCache` is honoured only when the targeted request is a\n * `downloadAsset` — it propagates onto the underlying download\n * transfer so the partial file is deleted when the last subscriber\n * leaves. Ignored for other kinds.\n */\nconst cancelByRequestIdParamsSchema = z.object({\n operation: z.literal('request').describe('Operation type'),\n requestId: z\n .string()\n .min(1)\n .describe('Identifier of the specific in-flight request to cancel — the value exposed on the result object returned by long-running calls (e.g. `completion(...)`, `loadModel(...)`, `downloadAsset(...)`).'),\n clearCache: z\n .boolean()\n .optional()\n .describe('Download-only: if true, deletes the partial download file when the subscriber leaves. Ignored for non-download kinds.')\n});\n/**\n * Broad cancel escape hatch — abort every in-flight request running on\n * a model (optionally narrowed by `kind`). Kept indefinitely as the\n * non-`requestId` cancel surface for model-unload, app-shutdown, and\n * admin sweeps where the caller doesn't have a `requestId` to hand.\n *\n * Replaces the legacy per-kind discriminator arms (`\"inference\"`,\n * `\"embeddings\"`, `\"downloadAsset\"`, `\"rag\"`) with a single `\"broad\"`\n * arm plus an optional `kind` field. The old arms went away as part\n * of the 0.11.0 cleanup once every handler was on the registry; the\n * wire shape collapse is a `[bc]` for any external caller hand-rolling\n * the old RPC envelope. The public-API `cancel(...)` function in\n * `client/api/cancel.ts` keeps the old `{ operation: \"inference\", modelId }`\n * / `{ operation: \"embeddings\", modelId }` forms callable and translates\n * them into this new shape at the client boundary, so consumers using\n * the official SDK client see no change.\n */\nconst cancelBroadParamsSchema = z.object({\n operation: z.literal('broad').describe('Operation type'),\n modelId: z.string().describe('Cancel every in-flight request on this model'),\n kind: cancelKindSchema.optional()\n});\nconst cancelParamsSchema = z.discriminatedUnion('operation', [\n cancelByRequestIdParamsSchema,\n cancelBroadParamsSchema\n]);\nexport const cancelRequestSchema = z.intersection(cancelBaseSchema, cancelParamsSchema);\nexport const cancelResponseSchema = z.object({\n type: z.literal('cancel'),\n success: z.boolean(),\n /**\n * Number of in-flight contexts that this call flipped to\n * `cancelling` (already-cancelled contexts are not counted, so\n * callers can rely on the value to log \"n requests cancelled\" once\n * without double-counting). Always present on `success: true`.\n */\n cancelled: z.number().int().nonnegative().optional(),\n error: z.string().optional()\n});\n/**\n * Sugar for the most common new path — `cancel({ requestId })`. The\n * client accepts either this shape (no `operation`) or the explicit\n * `{ operation: \"request\", requestId }` and normalises before sending.\n */\nexport const cancelByRequestIdSugarSchema = z\n .object({\n requestId: z.string().min(1),\n clearCache: z.boolean().optional()\n})\n .strict();\n/**\n * Sugar for the broad-cancel escape hatch — `cancel({ modelId, kind? })`.\n * Translates to `{ operation: \"broad\", modelId, kind? }` at the client\n * boundary.\n */\nexport const cancelBroadSugarSchema = z\n .object({\n modelId: z.string().min(1),\n kind: cancelKindSchema.optional()\n})\n .strict();\n/**\n * Legacy per-kind broad-cancel sugars retained at the public-API\n * boundary so existing callers of `cancel({ operation: \"inference\",\n * modelId })` / `cancel({ operation: \"embeddings\", modelId })` keep\n * working without code changes. The client wrapper translates these\n * into the new `{ operation: \"broad\", modelId, kind: ... }` wire\n * shape. New callers should prefer `cancel({ requestId })` or\n * `cancel({ modelId, kind? })`.\n */\nexport const cancelLegacyInferenceSugarSchema = z.object({\n operation: z.literal('inference'),\n modelId: z.string().min(1)\n});\nexport const cancelLegacyEmbeddingsSugarSchema = z.object({\n operation: z.literal('embeddings'),\n modelId: z.string().min(1)\n});\nimport { z } from 'zod';\nexport const classificationConfigSchema = z.object({\n /** Absolute path to the GGUF weights file. Defaults to the bundled model inside @qvac/classification-ggml. */\n modelPath: z.string().optional(),\n /** Limit returned results to the top-K classes. Default: all classes. */\n topK: z.number().int().optional(),\n /** Forward native C++ log lines through the SDK logger. Off by default. */\n nativeLogger: z.boolean().optional()\n});\nexport const classifyParamsSchema = z.object({\n modelId: z.string(),\n /** JPEG or PNG buffer encoded as base64, or raw RGB bytes. */\n image: z.string(),\n topK: z.number().int().optional(),\n /** Raw RGB image width (required for raw bytes). */\n width: z.number().int().optional(),\n /** Raw RGB image height (required for raw bytes). */\n height: z.number().int().optional(),\n /** Channel count — must be 3 for raw RGB. */\n channels: z.literal(3).optional()\n});\nexport const classifyRequestSchema = classifyParamsSchema.extend({\n type: z.literal('classify')\n});\nexport const classificationResultSchema = z.object({\n label: z.string(),\n confidence: z.number()\n});\nexport const classifyResponseSchema = z.object({\n type: z.literal('classify'),\n results: z.array(classificationResultSchema),\n done: z.boolean().optional()\n});\nimport { z } from 'zod';\nimport { perCallProfilingSchema } from './profiling.js';\nimport { heartbeatRequestSchema, heartbeatResponseSchema } from './heartbeat.js';\nimport { completionOrchestrateRequestSchema, completionOrchestrateResponseSchema, completionStreamRequestSchema, completionStreamResponseSchema } from './completion-stream.js';\nimport { batchCompletionStreamRequestSchema, batchCompletionStreamResponseSchema } from './batch-completion-stream.js';\nimport { loadModelRequestSchema, loadModelResponseSchema, modelProgressUpdateSchema } from './load-model.js';\nimport { downloadAssetRequestSchema, downloadAssetResponseSchema } from './download-asset.js';\nimport { unloadModelRequestSchema, unloadModelResponseSchema } from './unload-model.js';\nimport { transcribeRequestSchema, transcribeResponseSchema, transcribeStreamRequestSchema, transcribeStreamResponseSchema } from './transcription.js';\nimport { bciTranscribeRequestSchema, bciTranscribeResponseSchema, bciTranscribeStreamRequestSchema, bciTranscribeStreamResponseSchema } from './bci.js';\nimport { embedRequestSchema, embedResponseSchema } from './embed.js';\nimport { cancelRequestSchema, cancelResponseSchema } from './cancel.js';\nimport { provideRequestSchema, provideResponseSchema } from './provide.js';\nimport { stopProvideRequestSchema, stopProvideResponseSchema } from './stop-provide.js';\nimport { translateRequestSchema, translateResponseSchema } from './translate.js';\nimport { loggingStreamRequestSchema, loggingStreamResponseSchema } from './logging-stream.js';\nimport { ttsRequestSchema, ttsResponseSchema, textToSpeechStreamRequestSchema, textToSpeechStreamResponseSchema } from './text-to-speech.js';\nimport { errorResponseSchema } from './error.js';\nimport { ragRequestSchema, ragResponseSchema, ragProgressUpdateSchema } from './rag.js';\nimport { deleteCacheRequestSchema, deleteCacheResponseSchema } from './delete-cache.js';\nimport { getModelInfoRequestSchema, getModelInfoResponseSchema } from './get-model-info.js';\nimport { getLoadedModelInfoRequestSchema, getLoadedModelInfoResponseSchema } from './get-loaded-model-info.js';\nimport { ocrStreamRequestSchema, ocrStreamResponseSchema } from './ocr.js';\nimport { diffusionStreamRequestSchema, diffusionStreamResponseSchema, videoStreamRequestSchema, videoStreamResponseSchema, upscaleStreamRequestSchema, upscaleStreamResponseSchema } from './sdcpp-config.js';\nimport { finetuneRequestSchema, finetuneResponseSchema, finetuneProgressResponseSchema } from './finetune.js';\nimport { pluginInvokeRequestSchema, pluginInvokeResponseSchema, pluginInvokeStreamRequestSchema, pluginInvokeStreamResponseSchema } from './plugin.js';\nimport { modelRegistryListRequestSchema, modelRegistryListResponseSchema, modelRegistrySearchRequestSchema, modelRegistrySearchResponseSchema, modelRegistryGetModelRequestSchema, modelRegistryGetModelResponseSchema } from './registry.js';\nimport { suspendRequestSchema, suspendResponseSchema } from './suspend.js';\nimport { resumeRequestSchema, resumeResponseSchema } from './resume.js';\nimport { stateRequestSchema, stateResponseSchema } from './state.js';\nimport { classifyRequestSchema, classifyResponseSchema } from './classification.js';\nexport const requestSchema = z.union([\n heartbeatRequestSchema,\n loadModelRequestSchema,\n downloadAssetRequestSchema,\n completionStreamRequestSchema,\n completionOrchestrateRequestSchema,\n batchCompletionStreamRequestSchema,\n unloadModelRequestSchema,\n transcribeRequestSchema,\n transcribeStreamRequestSchema,\n bciTranscribeRequestSchema,\n bciTranscribeStreamRequestSchema,\n loggingStreamRequestSchema,\n embedRequestSchema,\n translateRequestSchema,\n ttsRequestSchema,\n textToSpeechStreamRequestSchema,\n cancelRequestSchema,\n provideRequestSchema,\n stopProvideRequestSchema,\n ragRequestSchema,\n deleteCacheRequestSchema,\n getModelInfoRequestSchema,\n getLoadedModelInfoRequestSchema,\n ocrStreamRequestSchema,\n diffusionStreamRequestSchema,\n videoStreamRequestSchema,\n upscaleStreamRequestSchema,\n finetuneRequestSchema,\n pluginInvokeRequestSchema,\n pluginInvokeStreamRequestSchema,\n modelRegistryListRequestSchema,\n modelRegistrySearchRequestSchema,\n modelRegistryGetModelRequestSchema,\n suspendRequestSchema,\n resumeRequestSchema,\n stateRequestSchema,\n classifyRequestSchema\n]);\nexport const responseSchema = z.discriminatedUnion('type', [\n heartbeatResponseSchema,\n loadModelResponseSchema,\n downloadAssetResponseSchema,\n completionStreamResponseSchema,\n completionOrchestrateResponseSchema,\n batchCompletionStreamResponseSchema,\n unloadModelResponseSchema,\n modelProgressUpdateSchema,\n transcribeResponseSchema,\n transcribeStreamResponseSchema,\n bciTranscribeResponseSchema,\n bciTranscribeStreamResponseSchema,\n loggingStreamResponseSchema,\n embedResponseSchema,\n translateResponseSchema,\n ttsResponseSchema,\n textToSpeechStreamResponseSchema,\n cancelResponseSchema,\n provideResponseSchema,\n stopProvideResponseSchema,\n errorResponseSchema,\n ragResponseSchema,\n ragProgressUpdateSchema,\n deleteCacheResponseSchema,\n getModelInfoResponseSchema,\n getLoadedModelInfoResponseSchema,\n ocrStreamResponseSchema,\n diffusionStreamResponseSchema,\n videoStreamResponseSchema,\n upscaleStreamResponseSchema,\n finetuneResponseSchema,\n finetuneProgressResponseSchema,\n pluginInvokeResponseSchema,\n pluginInvokeStreamResponseSchema,\n modelRegistryListResponseSchema,\n modelRegistrySearchResponseSchema,\n modelRegistryGetModelResponseSchema,\n suspendResponseSchema,\n resumeResponseSchema,\n stateResponseSchema,\n classifyResponseSchema\n]);\nexport const rpcOptionsSchema = z.object({\n timeout: z\n .number()\n .min(100)\n .optional()\n .describe('Per-call RPC timeout in milliseconds; overrides the SDK-level default for this request only.'),\n healthCheckTimeout: z\n .number()\n .min(100)\n .optional()\n .describe('Timeout in milliseconds for the health-check probe that precedes the RPC call.'),\n forceNewConnection: z\n .boolean()\n .optional()\n .describe('When `true`, skip any cached RPC connection and open a fresh one for this call.'),\n profiling: perCallProfilingSchema\n .optional()\n .describe(\"Per-call profiler configuration; when present, overrides the SDK's global profiler settings for this request.\")\n});\nimport { z } from 'zod';\nimport { toolCallSchema, toolCallErrorSchema } from './tools.js';\nexport const completionStatsSchema = z.object({\n timeToFirstToken: z.number().optional(),\n tokensPerSecond: z.number().optional(),\n cacheTokens: z.number().optional(),\n promptTokens: z.number().optional(),\n generatedTokens: z.number().optional(),\n avgConcurrentSeq: z.number().optional(),\n backendDevice: z.enum(['cpu', 'gpu']).optional()\n});\nexport const seqSchema = z.number().int().nonnegative();\nexport const contentDeltaEventSchema = z.object({\n type: z.literal('contentDelta'),\n seq: seqSchema,\n text: z.string()\n});\nexport const rawDeltaEventSchema = z.object({\n type: z.literal('rawDelta'),\n seq: seqSchema,\n text: z.string()\n});\nexport const thinkingDeltaEventSchema = z.object({\n type: z.literal('thinkingDelta'),\n seq: seqSchema,\n text: z.string()\n});\nexport const toolCallEventSchema = z.object({\n type: z.literal('toolCall'),\n seq: seqSchema,\n call: toolCallSchema\n});\nexport const toolErrorEventSchema = z.object({\n type: z.literal('toolError'),\n seq: seqSchema,\n error: toolCallErrorSchema\n});\nexport const statsEventSchema = z.object({\n type: z.literal('completionStats'),\n seq: seqSchema,\n stats: completionStatsSchema\n});\nexport const completionErrorSchema = z.object({\n message: z.string()\n});\nconst rawOutputSchema = z.object({\n fullText: z.string()\n});\n// `\"cancelled\"` is a clean termination, not a mid-stream failure: the\n// stream ended on purpose because the request was aborted, just not at\n// EOS. It rides the success-done path (alongside \"eos\" / \"length\" /\n// \"stopSequence\") so consumers iterating `events` see the stream end\n// naturally. The companion error path (`errorDoneSchema` below) keeps\n// `stopReason: \"error\"` for actual mid-stream failures where the\n// partial state is unsafe to use. The promise-aggregates on the\n// client-side `CompletionRun` (`final` / `text` / `toolCalls` / `stats`)\n// reject with `InferenceCancelledError` carrying the partial state — see\n// `client/api/completion-stream.ts` for the rejection plumbing.\nconst stopReasonEnum = z.enum(['eos', 'length', 'stopSequence', 'cancelled']);\nconst successDoneSchema = z\n .object({\n type: z.literal('completionDone'),\n seq: seqSchema,\n stopReason: stopReasonEnum.optional(),\n raw: rawOutputSchema.optional()\n})\n .strict();\nconst errorDoneSchema = z\n .object({\n type: z.literal('completionDone'),\n seq: seqSchema,\n stopReason: z.literal('error'),\n error: completionErrorSchema,\n raw: rawOutputSchema.optional()\n})\n .strict();\nexport const doneEventSchema = z.union([errorDoneSchema, successDoneSchema]);\nexport const completionEventSchema = z.union([\n contentDeltaEventSchema,\n rawDeltaEventSchema,\n thinkingDeltaEventSchema,\n toolCallEventSchema,\n toolErrorEventSchema,\n statsEventSchema,\n errorDoneSchema,\n successDoneSchema\n]);\nexport const DEFAULT_PLUGIN_CAPABILITIES = {\n toolCalling: 'none',\n thinkingFraming: 'none'\n};\nimport { z } from 'zod';\nimport { toolSchema } from './tools.js';\nimport { completionEventSchema } from './completion-event.js';\nimport { REASONING_BUDGET_MAX } from './llamacpp-config.js';\nexport { completionStatsSchema } from './completion-event.js';\n/**\n * Tool-call output dialect. Auto-detected from the model name; pass via\n * `completion({ toolDialect })` to override.\n *\n * Expected raw model output per dialect:\n * - `\"hermes\"`: `{\"name\":\"get_weather\",\"arguments\":{\"city\":\"Tokyo\"}}`\n * - `\"pythonic\"`: `[get_weather(city=\"Tokyo\")]` (optionally `<|tool_call_start|>...<|tool_call_end|>`-wrapped)\n * - `\"json\"`: `{\"name\":\"get_weather\",\"arguments\":{\"city\":\"Tokyo\"}}` or `{\"tool_calls\":[{\"name\":\"...\",\"arguments\":{...}}]}`\n * - `\"harmony\"`: `<|channel|>commentary to=functions.get_weather <|constrain|>json<|message|>{\"city\":\"Tokyo\"}<|call|>`\n * - `\"qwen35\"`: `VALUE`\n * - `\"gemma4\"`: `<|tool_call>call:NAME{key:<|\"|>val<|\"|>,...}`\n */\nexport const toolDialectSchema = z.enum([\n 'hermes',\n 'pythonic',\n 'json',\n 'harmony',\n 'qwen35',\n 'gemma4'\n]);\nexport const attachmentSchema = z.object({\n path: z\n .string()\n .describe('Absolute or SDK-resolvable path to the attachment file (e.g., image for multimodal models).')\n});\nconst kvCacheSchema = z.union([\n z.boolean(),\n z.string().min(1, 'KV cache key cannot be empty string')\n]);\nexport const generationParamsSchema = z\n .object({\n temp: z.number().optional().describe('Sampling temperature (typically 0–2).'),\n top_p: z.number().optional().describe('Top-p (nucleus) sampling cutoff (0–1).'),\n top_k: z.number().optional().describe('Top-k sampling — keep only the top K tokens.'),\n predict: z\n .number()\n .optional()\n .describe('Max tokens to predict. `-1` = until stop token, `-2` = until context filled.'),\n seed: z.number().optional().describe('Random seed for reproducibility.'),\n frequency_penalty: z\n .number()\n .optional()\n .describe('Penalty applied to tokens based on frequency so far.'),\n presence_penalty: z\n .number()\n .optional()\n .describe('Penalty applied to tokens that have already appeared.'),\n repeat_penalty: z.number().optional().describe('Penalty applied to repeated tokens.'),\n reasoning_budget: z\n .number()\n .int()\n .min(-1)\n .max(REASONING_BUDGET_MAX)\n .optional()\n .describe(\"Per-request reasoning channel budget. `-1` keeps the model's reasoning channel on; `0` disables it for this request; any positive integer caps the reasoning channel at that many tokens. Equivalent to the load-time `reasoning_budget` config but scoped to a single `run()` call; the prior value is restored afterwards.\"),\n remove_thinking_from_context: z\n .boolean()\n .optional()\n .describe('When the model emits a reasoning block during generation (e.g. `...` for the Qwen3 family, `<|channel>thought ... ` for Gemma 4), drop those tokens from the KV cache at end-of-generation so subsequent turns do not accumulate reasoning history. Defaults to `false`. No-op for models without a recognised reasoning channel. Throws on models with recurrent memory (SSM / hybrid SSM such as Qwen3.5), where the cache edit is unsupported.')\n})\n .strict();\nconst jsonSchemaObjectSchema = z.record(z.string(), z.unknown());\nexport const responseFormatSchema = z.discriminatedUnion('type', [\n z.object({ type: z.literal('text') }).strict(),\n z.object({ type: z.literal('json_object') }).strict(),\n z\n .object({\n type: z.literal('json_schema'),\n json_schema: z\n .object({\n name: z\n .string()\n .min(1)\n .describe('Schema identifier; OpenAI-compatibility only — not used by the addon.'),\n description: z\n .string()\n .optional()\n .describe('Free-form schema description. Accepted for OpenAI compatibility only — not forwarded to the addon and does not affect generation.'),\n schema: jsonSchemaObjectSchema.describe(\"JSON Schema the model output must validate against. Forwarded to the addon as-is and converted to GBNF natively by llama.cpp's `json_schema_to_grammar()`.\"),\n strict: z\n .boolean()\n .optional()\n .describe(\"Accepted for OpenAI compatibility but does NOT trigger OpenAI's auto-tightening semantics (implicit `additionalProperties: false`, all properties required). The schema is forwarded to the addon verbatim, so callers wanting strict validation must encode it explicitly in `schema`.\")\n })\n .strict()\n })\n .strict()\n]);\nexport const completionParamsSchema = z.object({\n history: z\n .array(z.object({\n role: z.string().describe('Message role (e.g., `\"user\"`, `\"assistant\"`, `\"system\"`).'),\n content: z.string().describe('Message content.'),\n attachments: z\n .array(attachmentSchema)\n .optional()\n .describe('Optional file attachments for multimodal models.')\n }))\n .describe('Array of conversation messages sent to the model.'),\n modelId: z.string().describe('The identifier of the model to use for completion.'),\n kvCache: kvCacheSchema\n .optional()\n .describe('KV cache configuration — `true` to auto-generate a cache key from history, a string to use a custom key, or `false`/`undefined` to disable.')\n});\nconst completionClientParamsBaseSchema = completionParamsSchema.extend({\n tools: z\n .array(toolSchema)\n .optional()\n .describe('Optional array of tools (full `Tool` objects or Zod-schema `ToolInput` definitions) the model can call.'),\n stream: z\n .boolean()\n .describe('Whether to stream tokens (`true`) or return the complete response once (`false`).'),\n kvCache: kvCacheSchema.optional(),\n generationParams: generationParamsSchema\n .optional()\n .describe('Optional sampling / generation parameters.'),\n captureThinking: z\n .boolean()\n .optional()\n .describe('When `true`, capture and emit reasoning/thinking deltas separately from content deltas; requires a model that frames its thinking output.'),\n emitRawDeltas: z\n .boolean()\n .optional()\n .describe('When `true`, also emit raw per-token deltas in the event stream in addition to normalized `contentDelta` events.'),\n toolDialect: toolDialectSchema\n .optional()\n .describe(\"Override auto-detected tool-call dialect. Use when the SDK's name-based detection picks the wrong parser chain for your model.\"),\n responseFormat: responseFormatSchema\n .optional()\n .describe('Optional structured-output constraint: `text` (default, free-form), `json_object` (any valid JSON), or `json_schema` (output conforms to the provided JSON Schema). Mutually exclusive with `tools`.'),\n requestId: z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight request, generated by the client at call time (opaque token, UUIDv4 when available). Surfaced on the `CompletionRun` result so callers can target it with `cancel({ requestId })`. Optional on the wire so legacy clients keep working — the server falls back to a server-generated id when the field is missing. Note: cancel-by-requestId only takes effect once the server has begun the request, so a cancel issued in the same tick as `completion()` may arrive before the request is registered.')\n});\nfunction refineNoToolsWithStructuredOutput(data, ctx) {\n if (data.responseFormat &&\n data.responseFormat.type !== 'text' &&\n data.tools &&\n data.tools.length > 0) {\n ctx.addIssue({\n code: 'custom',\n message: 'responseFormat (json_object/json_schema) cannot be combined with tools; tools already constrain output via their parameter schema.',\n path: ['responseFormat']\n });\n }\n}\nexport const completionClientParamsSchema = completionClientParamsBaseSchema.superRefine(refineNoToolsWithStructuredOutput);\nexport const completionStreamRequestSchema = completionClientParamsBaseSchema\n .extend({\n type: z.literal('completionStream')\n})\n .superRefine(refineNoToolsWithStructuredOutput);\nexport const completionStreamResponseSchema = z\n .object({\n type: z.literal('completionStream'),\n done: z.boolean().optional(),\n events: z.array(completionEventSchema)\n})\n .strict();\n// ============================================\n// Worker-orchestrated completion (duplex)\n// ============================================\nexport const completionOrchestrateRequestSchema = completionClientParamsBaseSchema\n .extend({\n type: z.literal('completionOrchestrate'),\n maxToolTurns: z\n .number()\n .int()\n .min(1)\n .max(32)\n .optional()\n .describe('Upper bound on generation turns the worker will run before ending the ' +\n 'loop with `stopReason: \"maxToolTurns\"`. Each turn is one completion ' +\n 'pass; a turn that requests tool calls consumes callbacks and starts ' +\n 'the next turn. Defaults to 8.')\n})\n .superRefine(refineNoToolsWithStructuredOutput);\n/**\n * Downstream frame of the orchestrated completion duplex stream. Exactly one\n * payload field is set per frame:\n *\n * - `events` — pass-through of the inner completion turn's events (with\n * `turn` identifying which generation pass they belong to).\n * - `toolCallback` — the worker is asking the CLIENT to run a tool. The\n * client executes its registered handler and writes a JSON line\n * (`toolCallbackResultSchema`) up the request stream. The worker blocks\n * this run (not the socket) until the matching `callId` arrives.\n * - `done` — terminal frame; the loop ended (final answer produced, error,\n * cancellation, or the `maxToolTurns` cap).\n *\n * Only a LOCAL worker may emit `toolCallback`: tool handlers execute code on\n * the client machine, so a remote delegate streaming through this shape must\n * never trigger them.\n */\nexport const completionOrchestrateResponseSchema = z\n .object({\n type: z.literal('completionOrchestrate'),\n turn: z.number().int().nonnegative().optional(),\n events: z.array(completionEventSchema).optional(),\n toolCallback: z\n .object({\n callId: z.string().describe('Correlates the upstream result line to this request.'),\n name: z.string(),\n arguments: z.record(z.string(), z.unknown())\n })\n .optional(),\n done: z.boolean().optional(),\n stopReason: z\n .literal('maxToolTurns')\n .optional()\n .describe('Set on the terminal `done` frame only when the loop stopped because it ' +\n 'hit `maxToolTurns` (the model still wanted a tool). Absent on a natural ' +\n 'finish, so the caller can tell a truncated run from a completed one.')\n})\n .strict();\n/**\n * Upstream JSON line the client writes after running a tool callback.\n * Newline-delimited on the duplex request stream, after the initial request\n * payload. `error` reports a handler failure; the worker forwards it to the\n * model as the tool result so the loop can recover or finish.\n */\nexport const toolCallbackResultSchema = z.object({\n callId: z.string(),\n result: z.unknown().optional(),\n error: z.string().optional()\n});\nimport { z } from 'zod';\nconst HYPERSWARM_PUBLIC_KEY_HEX = /^[0-9a-fA-F]{64}$/;\nexport const delegateBaseSchema = z.object({\n providerPublicKey: z\n .string()\n .regex(HYPERSWARM_PUBLIC_KEY_HEX, 'providerPublicKey must be a 64-character hex string (32-byte ed25519 public key)')\n .describe('Hex-encoded public key of the remote provider to delegate to.'),\n timeout: z\n .number()\n .min(100)\n .optional()\n .describe('Per-call timeout in milliseconds for the delegated request.'),\n healthCheckTimeout: z\n .number()\n .min(100)\n .optional()\n .describe('Timeout in milliseconds for the health-check probe before delegating.')\n});\nexport const delegateSchema = delegateBaseSchema\n .extend({\n fallbackToLocal: z\n .boolean()\n .optional()\n .default(false)\n .describe('When `true`, fall back to local execution if the delegated provider is unreachable.'),\n forceNewConnection: z\n .boolean()\n .optional()\n .default(false)\n .describe('When `true`, skip any cached delegation connection and open a fresh one.')\n})\n .optional();\nimport { z } from 'zod';\nexport const deleteCacheRequestSchema = z.union([\n z\n .object({\n type: z.literal('deleteCache'),\n all: z.literal(true)\n })\n .meta({ title: 'DeleteCacheAllRequest' }),\n z\n .object({\n type: z.literal('deleteCache'),\n kvCacheKey: z.string(),\n modelId: z.string().optional()\n })\n .meta({ title: 'DeleteCacheKvEntryRequest' })\n]);\nexport const deleteCacheResponseSchema = z.object({\n type: z.literal('deleteCache'),\n success: z.boolean(),\n error: z.string().optional()\n});\nimport { z } from 'zod';\nimport { modelSrcInputSchema, modelInputToSrcSchema } from './model-src-utils.js';\nconst downloadAssetOptionsBaseSchema = z.object({\n assetSrc: modelSrcInputSchema,\n seed: z.boolean().optional()\n});\nexport const downloadAssetOptionsSchema = downloadAssetOptionsBaseSchema.transform((data) => ({\n ...data,\n seed: data.seed ?? false\n}));\nexport const downloadAssetOptionsToRequestSchema = downloadAssetOptionsBaseSchema\n .extend({\n onProgress: z.unknown().optional(),\n withProgress: z.boolean().optional(),\n requestId: z.string().min(1).optional()\n})\n .transform((data) => {\n const out = {\n type: 'downloadAsset',\n assetSrc: modelInputToSrcSchema.parse(data.assetSrc),\n withProgress: data.withProgress ?? !!data.onProgress,\n seed: data.seed ?? false\n };\n if (data.requestId !== undefined)\n out.requestId = data.requestId;\n return out;\n});\nexport const downloadAssetRequestSchema = z\n .object({\n type: z.literal('downloadAsset'),\n assetSrc: z.string(),\n withProgress: z.boolean().optional(),\n seed: z.boolean().optional(),\n requestId: z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight download, generated by the client at call time. Optional on the wire so legacy clients keep working — the server falls back to a server-generated id when the field is missing. Exposed on the client-side decorated promise so callers can target this download with `cancel({ requestId })`.')\n})\n .transform((data) => ({\n ...data,\n seed: data.seed ?? false\n}));\nexport const downloadAssetResponseSchema = z.object({\n type: z.literal('downloadAsset'),\n success: z.boolean(),\n assetId: z.string().optional(),\n error: z.string().optional()\n});\nconst downloadTypes = ['hyperdrive', 'http', 'registry'];\nexport const downloadTypeSchema = z.enum(downloadTypes);\nexport const sourceTypeSchema = z.enum([...downloadTypes, 'filesystem']);\nexport const downloadMetadataSchema = z.object({\n key: z.string(),\n startTime: z.number(),\n type: downloadTypeSchema\n});\nexport const hyperdriveDownloadMetadataSchema = downloadMetadataSchema.extend({\n type: z.literal('hyperdrive'),\n hyperdriveKey: z.string(),\n modelFileName: z.string()\n});\nexport const httpDownloadMetadataSchema = downloadMetadataSchema.extend({\n type: z.literal('http'),\n url: z.url(),\n modelPath: z.string()\n});\nexport const registryDownloadMetadataSchema = downloadMetadataSchema.extend({\n type: z.literal('registry'),\n registryPath: z.string()\n});\nimport { z } from 'zod';\nexport const embedParamsSchema = z.object({\n modelId: z.string().describe('The identifier of the embedding model to use'),\n text: z\n .union([\n z.string().min(1, 'Text cannot be empty'),\n z.array(z.string().min(1, 'Text cannot be empty')).min(1, 'Text array cannot be empty')\n ])\n .describe('The input text(s) to embed. A single string returns `number[]`; an array returns `number[][]`.')\n});\nexport const embedRequestSchema = embedParamsSchema.extend({\n type: z.literal('embed'),\n requestId: z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight embed, generated by the client at call time. Surfaces on the registry so callers can target it with `cancel({ requestId })`. Optional on the wire — the server falls back to a server-generated id when the field is missing.')\n});\nexport const embedStatsSchema = z.object({\n totalTime: z.number().optional().describe('Total embedding time in milliseconds'),\n tokensPerSecond: z.number().optional().describe('Tokens processed per second'),\n totalTokens: z.number().optional().describe('Total tokens processed'),\n backendDevice: z.enum(['cpu', 'gpu']).optional().describe('Compute backend used for inference'),\n contextSize: z.number().optional().describe('Context size in tokens')\n});\nexport const embedResponseSchema = z.object({\n type: z.literal('embed'),\n success: z.boolean(),\n embedding: z\n .union([z.array(z.number()), z.array(z.array(z.number()))])\n .default([])\n .describe('The embedding vector(s). Single `number[]` when `text` is a string; `number[][]` when `text` is an array.'),\n stats: embedStatsSchema.optional().describe('Performance statistics'),\n error: z.string().optional()\n});\nimport { ModelType } from './model-types.js';\nimport { ADDON_BCI, ADDON_CLASSIFICATION, ADDON_DIFFUSION, ADDON_EMBEDDING, ADDON_LLM, ADDON_NMT, ADDON_OCR, ADDON_PARAKEET, ADDON_TTS, ADDON_VLA, ADDON_WHISPER } from './plugin.js';\nimport { modelRegistryEngineSchema } from './registry.js';\n// Canonical engine → addon mapping (exhaustive). `as const` preserves\n// per-key literals so the addon can be derived from the engine at the type level.\nexport const ENGINE_TO_ADDON = {\n [ModelType.llamacppCompletion]: 'llm',\n [ModelType.whispercppTranscription]: 'whisper',\n [ModelType.bciWhispercppTranscription]: 'bci',\n [ModelType.llamacppEmbedding]: 'embeddings',\n [ModelType.nmtcppTranslation]: 'nmt',\n [ModelType.onnxTts]: 'tts',\n [ModelType.ttsGgml]: 'tts',\n [ModelType.ggmlOcr]: 'ocr',\n [ModelType.parakeetTranscription]: 'parakeet',\n [ModelType.sdcppGeneration]: 'diffusion',\n [ModelType.ggmlVla]: 'vla',\n [ModelType.ggmlClassification]: 'classification',\n 'onnx-vad': 'vad'\n};\n// Legacy engine names → canonical engine.\n// Used for backward compatibility with old registry data that uses @qvac/* package names.\nexport const LEGACY_ENGINE_TO_CANONICAL = {\n [ADDON_LLM]: ModelType.llamacppCompletion,\n [ADDON_WHISPER]: ModelType.whispercppTranscription,\n [ADDON_BCI]: ModelType.bciWhispercppTranscription,\n [ADDON_EMBEDDING]: ModelType.llamacppEmbedding,\n [ADDON_NMT]: ModelType.nmtcppTranslation,\n [ADDON_TTS]: ModelType.ttsGgml,\n [ADDON_OCR]: ModelType.ggmlOcr,\n // Pre-GGML package / tag names from the ONNX era — resolve to the GGML engine.\n '@qvac/ocr-onnx': ModelType.ggmlOcr,\n 'onnx-ocr': ModelType.ggmlOcr,\n [ADDON_PARAKEET]: ModelType.parakeetTranscription,\n '@qvac/translation-llamacpp': ModelType.nmtcppTranslation,\n '@qvac/vad-silero': 'onnx-vad',\n // Legacy package / tag names from the ONNX era — resolve to the GGML engine.\n '@qvac/tts': ModelType.ttsGgml,\n '@qvac/tts-onnx': ModelType.ttsGgml,\n // Tag-style names (used by some older registry entries)\n generation: ModelType.llamacppCompletion,\n transcription: ModelType.whispercppTranscription,\n bci: ModelType.bciWhispercppTranscription,\n embedding: ModelType.llamacppEmbedding,\n translation: ModelType.nmtcppTranslation,\n vad: 'onnx-vad',\n tts: ModelType.ttsGgml,\n ocr: ModelType.ggmlOcr,\n [ADDON_DIFFUSION]: ModelType.sdcppGeneration,\n diffusion: ModelType.sdcppGeneration,\n [ADDON_VLA]: ModelType.ggmlVla,\n vla: ModelType.ggmlVla,\n [ADDON_CLASSIFICATION]: ModelType.ggmlClassification,\n classification: ModelType.ggmlClassification\n};\n// Resolves any engine string (legacy or canonical) to a validated canonical engine.\n// Returns null if the engine is not recognized.\nexport function resolveCanonicalEngine(engine) {\n const direct = modelRegistryEngineSchema.safeParse(engine);\n if (direct.success) {\n // Registry rows and cached metadata may still say \"onnx-tts\"; route to GGML.\n if (direct.data === ModelType.onnxTts)\n return ModelType.ttsGgml;\n return direct.data;\n }\n const canonical = LEGACY_ENGINE_TO_CANONICAL[engine];\n if (canonical)\n return canonical;\n return null;\n}\n// Returns the addon type for a validated canonical engine.\nexport function getAddonFromEngine(engine) {\n return ENGINE_TO_ADDON[engine];\n}\nimport { z } from 'zod';\nimport { QvacErrorBase } from '@qvac/error';\nimport { formatZodError } from '../utils/zod-error.js';\n/**\n * Wire shape for errors thrown across the RPC boundary. The fields are\n * the union of (a) the legacy `QvacErrorBase` serialisation (`name`,\n * `code`, `message`, `stack`, `cause`, `timestamp`) and (b) the new\n * `typedFields` map (0.11.0+) carrying per-class structured data the\n * client-side reconstructor uses to rebuild the original typed error.\n *\n * `typedFields` is opaque on the wire — `z.unknown()` — and the\n * per-class reconstructor in `client/rpc/rpc-error.ts` casts each\n * member at the boundary. The single-map shape keeps the schema\n * compact regardless of how many typed-error classes the SDK\n * eventually surfaces across RPC. New typed-error classes that need\n * cross-RPC reconstruction add a `toErrorResponseFields()` method on\n * the server side and a row to the reconstructor map on the client\n * side; the schema itself doesn't change.\n */\nexport const errorResponseSchema = z.object({\n type: z.literal('error'),\n message: z.string(),\n stack: z.string().optional(),\n timestamp: z.string().optional(),\n name: z.string().optional(),\n code: z.number().optional(),\n cause: z.unknown().optional(),\n typedFields: z.record(z.string(), z.unknown()).optional()\n});\nfunction hasTypedFields(error) {\n return (error !== null &&\n typeof error === 'object' &&\n 'toErrorResponseFields' in error &&\n typeof error.toErrorResponseFields === 'function');\n}\nfunction isQvacError(error) {\n return error instanceof QvacErrorBase;\n}\nexport function createErrorResponse(error) {\n if (isQvacError(error)) {\n const qvacData = error.toJSON();\n const response = {\n type: 'error',\n name: qvacData.name,\n code: qvacData.code,\n message: qvacData.message,\n stack: qvacData.stack,\n timestamp: new Date().toISOString()\n };\n if (hasTypedFields(error)) {\n response.typedFields = error.toErrorResponseFields();\n }\n return response;\n }\n const message = error instanceof z.ZodError\n ? formatZodError(error)\n : error instanceof Error\n ? error.message\n : String(error);\n const stack = error instanceof Error ? error.stack : undefined;\n return {\n type: 'error',\n message,\n stack,\n timestamp: new Date().toISOString()\n };\n}\nimport { z } from 'zod';\nconst lrSchedulerValues = ['constant', 'cosine', 'linear'];\nconst finetuneStatusValues = ['IDLE', 'RUNNING', 'PAUSED', 'CANCELLED', 'COMPLETED'];\nexport const finetuneValidationSchema = z\n .discriminatedUnion('type', [\n z\n .object({\n type: z.literal('none')\n })\n .strict(),\n z\n .object({\n type: z.literal('split'),\n fraction: z.number().min(0).max(1).optional()\n })\n .strict(),\n z\n .object({\n type: z.literal('dataset'),\n path: z.string().min(1, 'Validation dataset path cannot be empty')\n })\n .strict()\n])\n .transform((validation) => validation.type === 'split'\n ? {\n ...validation,\n fraction: validation.fraction ?? 0.05\n }\n : validation);\nconst finetuneOptionsPayloadSchema = z\n .object({\n trainDatasetDir: z.string().min(1, 'Training dataset path cannot be empty'),\n validation: finetuneValidationSchema,\n outputParametersDir: z.string().min(1, 'Output parameters path cannot be empty'),\n numberOfEpochs: z.number().int().positive().optional(),\n learningRate: z.number().positive().optional(),\n contextLength: z.number().int().positive().optional(),\n batchSize: z.number().int().positive().optional(),\n microBatchSize: z.number().int().positive().optional(),\n assistantLossOnly: z.boolean().optional(),\n loraRank: z.number().int().positive().optional(),\n loraAlpha: z.number().positive().optional(),\n loraInitStd: z.number().positive().optional(),\n loraSeed: z.number().int().optional(),\n loraModules: z.string().min(1).optional(),\n checkpointSaveDir: z.string().min(1).optional(),\n checkpointSaveSteps: z.number().int().min(0).optional(),\n chatTemplatePath: z.string().min(1).optional(),\n lrScheduler: z.enum(lrSchedulerValues).optional(),\n lrMin: z.number().min(0).optional(),\n warmupRatio: z.number().min(0).max(1).optional(),\n warmupRatioSet: z.boolean().optional(),\n warmupSteps: z.number().int().min(0).optional(),\n warmupStepsSet: z.boolean().optional(),\n weightDecay: z.number().min(0).optional()\n})\n .strict();\nconst finetuneModelParamsSchema = z\n .object({\n modelId: z.string()\n})\n .strict();\nconst finetuneRunParamsSchemaBase = finetuneModelParamsSchema\n .extend({\n options: finetuneOptionsPayloadSchema\n})\n .strict();\nexport const finetuneRunParamsSchema = finetuneRunParamsSchemaBase\n .extend({\n operation: z.enum(['start', 'resume']).optional()\n})\n .strict();\nexport const finetuneGetStateParamsSchema = finetuneRunParamsSchemaBase\n .extend({\n operation: z.literal('getState')\n})\n .strict();\nexport const finetuneStopParamsSchema = finetuneModelParamsSchema\n .extend({\n operation: z.enum(['pause', 'cancel'])\n})\n .strict();\nexport const finetuneParamsSchema = z.union([\n finetuneRunParamsSchema,\n finetuneGetStateParamsSchema,\n finetuneStopParamsSchema\n]);\nexport const finetuneRunRequestSchema = finetuneRunParamsSchemaBase\n .extend({\n type: z.literal('finetune'),\n operation: z.enum(['start', 'resume']).optional(),\n withProgress: z.boolean().optional(),\n requestId: z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight finetune, generated by the client at call time. Surfaces on the registry so callers can target it with `cancel({ requestId })`. Optional on the wire — the server falls back to a server-generated id when the field is missing.')\n})\n .strict()\n .meta({ title: 'FinetuneRunRequest' });\nexport const finetuneGetStateRequestSchema = finetuneRunParamsSchemaBase\n .extend({\n type: z.literal('finetune'),\n operation: z.literal('getState')\n})\n .strict()\n .meta({ title: 'FinetuneGetStateRequest' });\nexport const finetuneStopRequestSchema = finetuneModelParamsSchema\n .extend({\n type: z.literal('finetune'),\n operation: z.enum(['pause', 'cancel'])\n})\n .strict()\n .meta({ title: 'FinetuneStopRequest' });\nexport const finetuneRequestSchema = z.union([\n finetuneRunRequestSchema,\n finetuneGetStateRequestSchema,\n finetuneStopRequestSchema\n]);\nexport const finetuneStatusSchema = z.enum(finetuneStatusValues);\nexport const finetuneProgressSchema = z\n .object({\n is_train: z.boolean(),\n loss: z.union([z.number(), z.nan()]).nullable(),\n loss_uncertainty: z.union([z.number(), z.nan()]).nullable(),\n accuracy: z.union([z.number(), z.nan()]).nullable(),\n accuracy_uncertainty: z.union([z.number(), z.nan()]).nullable(),\n global_steps: z.number().int().min(0),\n current_epoch: z.number().int().min(0),\n current_batch: z.number().int().min(0),\n total_batches: z.number().int().min(0),\n elapsed_ms: z.number().min(0),\n eta_ms: z.number().min(0)\n})\n .strict();\nexport const finetuneStatsSchema = z\n .object({\n train_loss: z.number().optional(),\n train_loss_uncertainty: z.union([z.number(), z.nan()]).nullable().optional(),\n val_loss: z.number().optional(),\n val_loss_uncertainty: z.union([z.number(), z.nan()]).nullable().optional(),\n train_accuracy: z.number().optional(),\n train_accuracy_uncertainty: z.union([z.number(), z.nan()]).nullable().optional(),\n val_accuracy: z.number().optional(),\n val_accuracy_uncertainty: z.union([z.number(), z.nan()]).nullable().optional(),\n learning_rate: z.number().optional(),\n global_steps: z.number().int().min(0),\n epochs_completed: z.number().int().min(0)\n})\n .strict();\nexport const finetuneResponseSchema = z\n .object({\n type: z.literal('finetune'),\n status: finetuneStatusSchema,\n stats: finetuneStatsSchema.optional()\n})\n .strict();\nexport const finetuneProgressResponseSchema = finetuneProgressSchema\n .extend({\n type: z.literal('finetune:progress'),\n modelId: z.string()\n})\n .strict();\nimport { z } from 'zod';\nimport { toolDialectSchema } from './completion-stream.js';\nexport const getLoadedModelInfoParamsSchema = z.object({\n modelId: z.string()\n});\nexport const getLoadedModelInfoRequestSchema = getLoadedModelInfoParamsSchema.extend({\n type: z.literal('getLoadedModelInfo')\n});\nconst delegatedProviderInfoSchema = z.object({\n providerPublicKey: z.string()\n});\n/**\n * Loaded local model: routing plugin known on this node, so modelType +\n * handler vocabulary are authoritative. `toolDialect` is the tool-call dialect\n * the completion normalizer parses for this model (completion-capable models\n * only), letting a consumer replay a prior tool call in the model's own dialect.\n */\nconst localLoadedModelInfoSchema = z\n .object({\n modelId: z.string(),\n isDelegated: z.literal(false),\n modelType: z.string(),\n handlers: z.array(z.string()),\n displayName: z.string().optional(),\n addonPackage: z.string().optional(),\n loadedAt: z.coerce.date(),\n name: z.string().optional(),\n path: z.string().optional(),\n toolDialect: toolDialectSchema.optional()\n})\n .meta({ title: 'LocalLoadedModelInfo' });\n/**\n * Loaded delegated model: this node only stores routing info, so `modelType`,\n * `displayName`, `addonPackage`, `loadedAt`, `name`, and `path` are absent,\n * and `handlers` is always empty.\n */\nconst delegatedLoadedModelInfoSchema = z\n .object({\n modelId: z.string(),\n isDelegated: z.literal(true),\n handlers: z.array(z.string()),\n providerInfo: delegatedProviderInfoSchema\n})\n .meta({ title: 'DelegatedLoadedModelInfo' });\nexport const loadedModelInfoSchema = z.discriminatedUnion('isDelegated', [\n localLoadedModelInfoSchema,\n delegatedLoadedModelInfoSchema\n]);\nexport const getLoadedModelInfoResponseSchema = z.object({\n type: z.literal('getLoadedModelInfo'),\n info: loadedModelInfoSchema\n});\nimport { z } from 'zod';\nexport const getModelInfoParamsSchema = z.object({\n name: z.string().describe(\"The model's registry name (as found in the SDK's built-in catalog).\")\n});\nexport const getModelInfoRequestSchema = getModelInfoParamsSchema.extend({\n type: z.literal('getModelInfo')\n});\nexport const loadedInstanceSchema = z.object({\n registryId: z.string().describe('Identifier of the registered loaded instance.'),\n loadedAt: z.coerce.date().describe('Timestamp when the instance was loaded.'),\n config: z\n .unknown()\n .optional()\n .describe('Opaque model-specific configuration the instance was loaded with.')\n});\nexport const cacheFileInfoSchema = z.object({\n filename: z.string().describe('Name of the cached file on disk.'),\n path: z.string().describe('Absolute path to the cached file.'),\n expectedSize: z.number().describe('Expected file size in bytes from the model metadata.'),\n sha256Checksum: z.string().describe('Expected SHA-256 checksum of the file.'),\n isCached: z.boolean().describe('Whether the file is currently present in the cache.'),\n actualSize: z.number().optional().describe('Actual size of the cached file on disk, in bytes.'),\n cachedAt: z.coerce.date().optional().describe('Timestamp when the file was last cached.')\n});\nexport const modelInfoSchema = z.object({\n name: z.string().describe('Catalog name of the model.'),\n modelId: z.string().describe('Unique identifier used to reference the model in SDK calls.'),\n // Registry-based fields\n registryPath: z\n .string()\n .optional()\n .describe('Registry-relative path (set for registry-backed models).'),\n registrySource: z.string().optional().describe('Registry source identifier, e.g. `huggingface`.'),\n blobCoreKey: z.string().optional().describe('Hyperdrive blob core key for the model file.'),\n blobBlockOffset: z\n .number()\n .optional()\n .describe('Starting block offset of the model file in the blob.'),\n blobBlockLength: z\n .number()\n .optional()\n .describe('Number of blocks occupied by the model file in the blob.'),\n blobByteOffset: z\n .number()\n .optional()\n .describe('Starting byte offset of the model file within its block.'),\n engine: z\n .string()\n .optional()\n .describe('Inference engine identifier, e.g. `llamacpp-completion`.'),\n quantization: z.string().optional().describe('Quantization identifier, e.g. `Q4_K_M`.'),\n params: z.string().optional().describe('Parameter-count label for the model, e.g. `7B`.'),\n expectedSize: z.number().describe('Expected total size of the model file in bytes.'),\n sha256Checksum: z.string().describe('Expected SHA-256 checksum of the model file.'),\n addon: z\n .enum([\n 'llm',\n 'whisper',\n 'bci',\n 'parakeet',\n 'embeddings',\n 'nmt',\n 'vad',\n 'tts',\n 'ocr',\n 'diffusion',\n 'vla',\n 'classification',\n 'other'\n ])\n .describe('Inference addon / capability category this model belongs to.'),\n isCached: z.boolean().describe('Whether the model file is present in the local cache.'),\n isLoaded: z.boolean().describe('Whether the model is currently loaded into memory.'),\n cacheFiles: z\n .array(cacheFileInfoSchema)\n .describe('Individual cache file entries that make up this model.'),\n actualSize: z\n .number()\n .optional()\n .describe('Actual total size of the cached model on disk, in bytes.'),\n cachedAt: z.coerce.date().optional().describe('Timestamp when the model was last cached.'),\n loadedInstances: z\n .array(loadedInstanceSchema)\n .optional()\n .describe('Loaded instances associated with this model (one per live load).')\n});\nexport const getModelInfoResponseSchema = z.object({\n type: z.literal('getModelInfo'),\n modelInfo: modelInfoSchema\n});\nimport { z } from 'zod';\nimport { delegateBaseSchema } from './delegate.js';\nexport const heartbeatRequestSchema = z.object({\n type: z.literal('heartbeat'),\n delegate: delegateBaseSchema.optional()\n});\nexport const heartbeatResponseSchema = z.object({\n type: z.literal('heartbeat'),\n number: z.number()\n});\n// Re-export all schemas and types\nexport * from './archive.js';\nexport * from './cancel.js';\nexport * from './batch-completion-stream.js';\nexport * from './completion-stream.js';\nexport * from './completion-event.js';\nexport { toolSchema, toolCallSchema, toolCallErrorSchema, TOOLS_MODE } from './tools.js';\nexport * from './delegate.js';\nexport * from './delete-cache.js';\nexport * from './download-asset.js';\nexport * from './embed.js';\nexport * from './finetune.js';\nexport * from './load-model.js';\nexport * from './reload-config.js';\nexport * from './logging-stream.js';\nexport * from './provide.js';\nexport * from './stop-provide.js';\nexport * from './unload-model.js';\nexport * from './heartbeat.js';\nexport * from './common.js';\nexport * from './transcription.js';\nexport * from './bci.js';\nexport * from './bci-config.js';\nexport * from './translate.js';\nexport * from './translation-config.js';\nexport * from './llamacpp-config.js';\nexport * from './transcription-config.js';\nexport * from './text-to-speech.js';\nexport * from './error.js';\nexport * from './rag.js';\nexport * from './ocr.js';\nexport * from './sdcpp-config.js';\nexport * from './vla.js';\nexport * from './classification.js';\nexport * from './shard.js';\nexport * from './suspend.js';\nexport * from './resume.js';\nexport * from './state.js';\nexport { SDK_CLIENT_ERROR_CODES } from './sdk-errors-client.js';\nexport { SDK_SERVER_ERROR_CODES } from './sdk-errors-server.js';\nexport { REGISTRY_ERROR_CODES } from './sdk-errors-registry.js';\nexport { ERR_CODES as RAG_ERROR_CODES } from '@qvac/rag/errors.js';\nexport { qvacConfigSchema, deviceMatchSchema, deviceConfigDefaultsSchema, devicePatternSchema } from './sdk-config.js';\nexport { PROFILING_KEY, PROFILING_TRAILER_KEY, DELEGATION_BREAKDOWN_KEY, OPERATION_EVENT_KEY, MODEL_EXECUTION_KEY, profilerModeSchema, serverBreakdownSchema, delegationBreakdownSchema, operationEventSchema, profilingRequestMetaSchema, profilingResponseMetaSchema, perCallProfilingSchema } from './profiling.js';\nexport { runtimeContextSchema } from './runtime-context.js';\nexport * from './get-model-info.js';\nexport * from './get-loaded-model-info.js';\nexport * from './model-src-utils.js';\nexport * from './json-schema.js';\nexport {} from './mcp-adapter.js';\nexport { PUBLIC_MODEL_TYPES as MODEL_TYPES, ModelType, normalizeModelType, isCanonicalModelType, isModelTypeAlias } from './model-types.js';\nexport * from './plugin.js';\nexport * from './registry.js';\n// ============== JSON Schema Types ==============\nexport {};\nimport { z } from 'zod';\nimport { modelSrcInputSchema } from './model-src-utils.js';\nimport { TOOLS_MODE } from './tools.js';\n/**\n * Upper bound for `reasoning_budget`. Mirrors the llm-llamacpp addon, which\n * stores the budget as a 32-bit `int` and rejects values above\n * `std::numeric_limits::max()`.\n */\nexport const REASONING_BUDGET_MAX = 2147483647;\nexport const VERBOSITY = {\n ERROR: 0,\n WARN: 1,\n INFO: 2,\n DEBUG: 3\n};\nconst verbositySchema = z.enum(VERBOSITY);\n// Base schema - validates types, all fields optional (for client-side validation)\nexport const llmConfigBaseSchema = z.object({\n ctx_size: z.number().optional(),\n temp: z.number().min(0).max(2).optional(),\n top_p: z.number().min(0).max(1).optional(),\n top_k: z.number().int().min(0).max(128).optional(),\n seed: z.number().optional(),\n gpu_layers: z.number().optional(),\n lora: z.string().optional(),\n device: z.string().optional(),\n predict: z\n .union([\n z.literal(-1), // special: until stop token\n z.literal(-2), // special: until context filled\n z.number().int().min(1) // positive integer: fixed token count\n ])\n .optional(),\n /** JS-side only: seeds conversation history. Never forwarded to the C++ addon. */\n system_prompt: z.string().optional(),\n no_mmap: z.boolean().optional(),\n verbosity: verbositySchema.optional(),\n presence_penalty: z.number().optional(),\n frequency_penalty: z.number().optional(),\n repeat_penalty: z.number().optional(),\n stop_sequences: z.array(z.string()).optional(),\n n_discarded: z.number().optional(),\n /**\n * Concurrent sequence slots for continuous batching. Defaults to 1\n * (sequential, batching disabled); values >= 2 enable batched decoding in\n * @qvac/llm-llamacpp.\n */\n parallel: z.number().int().min(1).optional(),\n tools: z.boolean().optional(),\n toolsMode: z\n .enum([TOOLS_MODE.static, TOOLS_MODE.dynamic])\n .describe('Controls tool placement in the prompt. \"static\" (default) prepends the tool set once and reuses it across the session. \"dynamic\" anchors tools after the last user message and trims them from the kv-cache after the chain resolves so each user prompt can carry its own tools.')\n .optional(),\n 'cache-type-k': z.string().optional(),\n 'cache-type-v': z.string().optional(),\n 'main-gpu': z.union([z.number().int().min(0), z.enum(['integrated', 'dedicated'])]).optional(),\n 'split-mode': z.enum(['none', 'layer', 'row']).optional(),\n 'tensor-split': z.string().optional(),\n /**\n * Writable directory for OpenCL kernel binary cache. Required on Android\n * for fast GPU startup.\n */\n openclCacheDir: z.string().optional(),\n /**\n * Reasoning channel token budget. `-1` = unrestricted, `0` = disabled, any\n * positive integer caps the reasoning channel at that many tokens (the\n * sampler force-emits the closing think tag once the budget is exhausted).\n */\n reasoning_budget: z.number().int().min(-1).max(REASONING_BUDGET_MAX).optional(),\n projectionModelSrc: modelSrcInputSchema.optional(),\n /**\n * Qwen3.5-VL multi-tile image encoding mode (multimodal models only):\n * - `\"sequential\"` (default): encode image tiles one tile at a time.\n * - `\"batched\"`: encode all tiles in a single batched pass.\n * - `\"disabled\"`: no multi-tile encoding (single tile).\n * Ignored by text-only models. Default is `\"sequential\"`.\n */\n image_tile_mode: z.enum(['disabled', 'batched', 'sequential']).optional(),\n /**\n * Run the multimodal projector (mmproj / vision encoder) on the GPU\n * (multimodal models only). `true` forces GPU, `false` forces CPU. When\n * unset, the llm-llamacpp addon auto-selects the backend per device class:\n * GPU on desktop/iOS and positively-detected Android Adreno 800+ GPUs; CPU on\n * every other Android GPU — Mali, Adreno <800, and any tier that can't be\n * detected (only Adreno 800+ is benchmarked to encode the projector faster on\n * the GPU than the CPU). Only honoured when the model itself runs on a GPU\n * backend — ignored with a warning on CPU.\n */\n 'mmproj-use-gpu': z.boolean().optional()\n});\n// Default values - typed as partial of the config\nexport const LLM_CONFIG_DEFAULTS = {\n ctx_size: 1024,\n gpu_layers: 99,\n device: 'gpu',\n system_prompt: 'You are a helpful assistant.',\n image_tile_mode: 'sequential'\n};\n// Full schema - applies defaults via transform (no duplication)\nexport const llmConfigSchema = llmConfigBaseSchema.transform((data) => ({\n ...LLM_CONFIG_DEFAULTS,\n ...data\n}));\n// Base schema - validates types, all fields optional (for client-side validation)\nexport const embedConfigBaseSchema = z.object({\n gpuLayers: z.number().int().optional(),\n device: z.enum(['gpu', 'cpu']).optional(),\n batchSize: z.number().int().min(1).optional(),\n pooling: z.enum(['none', 'mean', 'cls', 'last', 'rank']).optional(),\n attention: z.enum(['causal', 'non-causal']).optional(),\n embdNormalize: z.number().int().optional(),\n flashAttention: z.enum(['on', 'off', 'auto']).optional(),\n mainGpu: z.union([z.number().int().min(0), z.enum(['integrated', 'dedicated'])]).optional(),\n splitMode: z.enum(['none', 'layer', 'row']).optional(),\n tensorSplit: z.string().optional(),\n verbosity: verbositySchema.optional(),\n /**\n * Writable directory for OpenCL kernel binary cache. Required on Android\n * for fast GPU startup.\n */\n openclCacheDir: z.string().optional()\n});\n// Default values - typed as partial of the config\nexport const EMBED_CONFIG_DEFAULTS = {\n gpuLayers: 99,\n device: 'gpu',\n batchSize: 1024\n};\n// Full schema - validates then applies defaults via transform\nexport const embedConfigSchema = embedConfigBaseSchema.transform((data) => ({\n ...EMBED_CONFIG_DEFAULTS,\n ...data\n}));\nimport { z } from 'zod';\nimport { llmConfigBaseSchema, embedConfigBaseSchema } from './llamacpp-config.js';\nimport { whisperConfigSchema, parakeetLoadConfigSchema } from './transcription-config.js';\nimport { bciConfigSchema } from './bci-config.js';\nimport { delegateSchema } from './delegate.js';\nimport { nmtConfigBaseSchema, nmtConfigSchema } from './translation-config.js';\nimport { LEGACY_TTS_ONNX_MODEL_CONFIG_FIELDS, ttsChatterboxLoadConfigSchema, ttsConfigSchema, ttsSupertonicLoadConfigSchema } from './text-to-speech.js';\nimport { ocrConfigSchema } from './ocr.js';\nimport { modelSrcInputSchema, modelInputToSrcSchema, modelInputToNameSchema } from './model-src-utils.js';\nimport { llmModelTypeSchema, whisperModelTypeSchema, bciModelTypeSchema, parakeetModelTypeSchema, embeddingsModelTypeSchema, nmtModelTypeSchema, ttsModelTypeSchema, ocrModelTypeSchema, diffusionModelTypeSchema, vlaModelTypeSchema, classificationModelTypeSchema, ModelType, ModelTypeAliases, normalizeModelType } from './model-types.js';\nimport { sdcppConfigSchema } from './sdcpp-config.js';\nimport { vlaConfigSchema } from './vla.js';\nimport { classificationConfigSchema } from './classification.js';\n// Set of all built-in model types (canonical + aliases) for catch-all exclusion\nconst builtInModelTypes = new Set([...Object.values(ModelType), ...Object.keys(ModelTypeAliases)]);\nexport function isBuiltInModelType(modelType) {\n return typeof modelType === 'string' && builtInModelTypes.has(modelType);\n}\nimport { reloadConfigRequestSchema } from './reload-config.js';\nconst loadModelCommonFields = {\n modelSrc: modelSrcInputSchema,\n seed: z.boolean().optional(),\n delegate: delegateSchema\n};\nconst loadModelRequestCommonFields = {\n ...loadModelCommonFields,\n onProgress: z.unknown().optional(),\n logger: z.unknown().optional(),\n withProgress: z.boolean().optional(),\n requestId: z.string().min(1).optional()\n};\nconst topLevelLoadModelOptionKeys = new Set([\n ...Object.keys(loadModelRequestCommonFields),\n 'modelType',\n 'modelConfig'\n]);\nconst modelConfigKeysByModelType = new Map([\n [ModelType.llamacppCompletion, configKeys(llmConfigBaseSchema)],\n [ModelType.whispercppTranscription, configKeys(whisperConfigSchema)],\n [ModelType.bciWhispercppTranscription, configKeys(bciConfigSchema)],\n [ModelType.parakeetTranscription, configKeys(parakeetLoadConfigSchema)],\n [ModelType.llamacppEmbedding, configKeys(embedConfigBaseSchema)],\n [ModelType.nmtcppTranslation, configKeys(...nmtConfigBaseSchema.options)],\n [\n ModelType.ttsGgml,\n configKeys(ttsChatterboxLoadConfigSchema, ttsSupertonicLoadConfigSchema, LEGACY_TTS_ONNX_MODEL_CONFIG_FIELDS)\n ],\n [ModelType.ggmlOcr, configKeys(ocrConfigSchema)],\n [ModelType.sdcppGeneration, configKeys(sdcppConfigSchema)],\n [ModelType.ggmlVla, configKeys(vlaConfigSchema)],\n [ModelType.ggmlClassification, configKeys(classificationConfigSchema)]\n]);\nconst misplacedLoadModelConfigGuard = z.unknown().superRefine((value, ctx) => {\n const keys = getMisplacedModelConfigKeys(value);\n if (keys.length === 0)\n return;\n ctx.addIssue({\n code: 'custom',\n message: `Model config field \"${keys[0]}\" must be passed inside modelConfig. ` +\n `Did you mean ${keys.map((key) => `modelConfig.${key}`).join(', ')}?`\n });\n});\nfunction configKeys(...sources) {\n const keys = sources.flatMap((source) => isStringArray(source) ? source : Object.keys(source.shape));\n return new Set(keys.filter((key) => !topLevelLoadModelOptionKeys.has(key)));\n}\nfunction isStringArray(source) {\n return Array.isArray(source);\n}\nfunction getMisplacedModelConfigKeys(value) {\n if (!isRecord(value) || typeof value['modelType'] !== 'string')\n return [];\n const configKeys = modelConfigKeysByModelType.get(normalizeModelType(value['modelType']));\n if (!configKeys)\n return [];\n return Object.keys(value).filter((key) => configKeys.has(key));\n}\nfunction isRecord(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nexport const loadBuiltinModelOptionsBaseSchema = z.union([\n z\n .object({\n ...loadModelCommonFields,\n modelType: llmModelTypeSchema,\n modelConfig: llmConfigBaseSchema.strict().optional()\n })\n .strict(),\n z\n .object({\n ...loadModelCommonFields,\n modelType: whisperModelTypeSchema,\n modelConfig: whisperConfigSchema.partial().strict().optional()\n })\n .strict(),\n z\n .object({\n ...loadModelCommonFields,\n modelType: bciModelTypeSchema,\n modelConfig: bciConfigSchema.partial().strict().optional()\n })\n .strict(),\n z\n .object({\n ...loadModelCommonFields,\n modelType: parakeetModelTypeSchema,\n modelConfig: parakeetLoadConfigSchema.optional()\n })\n .strict(),\n z\n .object({\n ...loadModelCommonFields,\n modelType: embeddingsModelTypeSchema,\n modelConfig: embedConfigBaseSchema.strict().optional()\n })\n .strict(),\n z\n .object({\n ...loadModelCommonFields,\n modelType: nmtModelTypeSchema,\n modelConfig: nmtConfigSchema\n })\n .strict(),\n z\n .object({\n ...loadModelCommonFields,\n modelType: ttsModelTypeSchema,\n modelConfig: ttsConfigSchema\n })\n .strict(),\n z\n .object({\n ...loadModelCommonFields,\n modelType: ocrModelTypeSchema,\n modelConfig: ocrConfigSchema.partial().strict().optional()\n })\n .strict(),\n z\n .object({\n ...loadModelCommonFields,\n modelType: diffusionModelTypeSchema,\n modelConfig: sdcppConfigSchema.strict().optional()\n })\n .strict(),\n z\n .object({\n ...loadModelCommonFields,\n modelType: vlaModelTypeSchema,\n modelConfig: vlaConfigSchema.strict().optional()\n })\n .strict(),\n z\n .object({\n ...loadModelCommonFields,\n modelSrc: modelSrcInputSchema.optional(),\n modelType: classificationModelTypeSchema,\n modelConfig: classificationConfigSchema.strict().optional()\n })\n .strict()\n]);\n// Custom plugin catch-all: any modelType string EXCEPT built-ins.\nexport const loadCustomPluginModelOptionsBaseSchema = z.object({\n ...loadModelCommonFields,\n modelType: z.string().refine((val) => !builtInModelTypes.has(val), {\n message: 'Built-in model types must use their specific schema'\n }),\n modelConfig: z.record(z.string(), z.unknown()).optional()\n});\nexport const loadModelOptionsBaseSchema = z.union([\n loadBuiltinModelOptionsBaseSchema,\n loadCustomPluginModelOptionsBaseSchema\n]);\nexport const loadModelOptionsSchema = loadModelOptionsBaseSchema.transform((data) => ({\n ...data,\n seed: data.seed ?? false\n}));\nexport const loadBuiltinToRequestSchema = z.discriminatedUnion('modelType', [\n z\n .object({\n ...loadModelRequestCommonFields,\n modelType: llmModelTypeSchema,\n modelConfig: llmConfigBaseSchema.strict().optional()\n })\n .strict()\n .transform((data) => ({\n type: 'loadModel',\n modelType: ModelType.llamacppCompletion,\n modelSrc: modelInputToSrcSchema.parse(data.modelSrc),\n modelName: modelInputToNameSchema.parse(data.modelSrc),\n modelConfig: (data.modelConfig ?? {}),\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n })),\n z\n .object({\n ...loadModelRequestCommonFields,\n modelType: whisperModelTypeSchema,\n modelConfig: whisperConfigSchema.partial().strict().optional()\n })\n .strict()\n .transform((data) => ({\n type: 'loadModel',\n modelType: ModelType.whispercppTranscription,\n modelSrc: modelInputToSrcSchema.parse(data.modelSrc),\n modelName: modelInputToNameSchema.parse(data.modelSrc),\n modelConfig: data.modelConfig ?? {},\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n })),\n z\n .object({\n ...loadModelRequestCommonFields,\n modelType: bciModelTypeSchema,\n modelConfig: bciConfigSchema.partial().strict().optional()\n })\n .strict()\n .transform((data) => ({\n type: 'loadModel',\n modelType: ModelType.bciWhispercppTranscription,\n modelSrc: modelInputToSrcSchema.parse(data.modelSrc),\n modelName: modelInputToNameSchema.parse(data.modelSrc),\n modelConfig: data.modelConfig ?? {},\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n })),\n z\n .object({\n ...loadModelRequestCommonFields,\n modelType: parakeetModelTypeSchema,\n modelConfig: parakeetLoadConfigSchema.optional()\n })\n .strict()\n .transform((data) => ({\n type: 'loadModel',\n modelType: ModelType.parakeetTranscription,\n modelSrc: modelInputToSrcSchema.parse(data.modelSrc),\n modelName: modelInputToNameSchema.parse(data.modelSrc),\n modelConfig: data.modelConfig,\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n })),\n z\n .object({\n ...loadModelRequestCommonFields,\n modelType: embeddingsModelTypeSchema,\n modelConfig: embedConfigBaseSchema.strict().optional()\n })\n .strict()\n .transform((data) => ({\n type: 'loadModel',\n modelType: ModelType.llamacppEmbedding,\n modelSrc: modelInputToSrcSchema.parse(data.modelSrc),\n modelName: modelInputToNameSchema.parse(data.modelSrc),\n modelConfig: (data.modelConfig ?? {}),\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n })),\n z\n .object({\n ...loadModelRequestCommonFields,\n modelType: nmtModelTypeSchema,\n modelConfig: nmtConfigSchema\n })\n .strict()\n .transform((data) => ({\n type: 'loadModel',\n modelType: ModelType.nmtcppTranslation,\n modelSrc: modelInputToSrcSchema.parse(data.modelSrc),\n modelName: modelInputToNameSchema.parse(data.modelSrc),\n modelConfig: data.modelConfig.engine === 'Bergamot' && data.modelConfig.pivotModel\n ? {\n ...data.modelConfig,\n pivotModel: {\n ...data.modelConfig.pivotModel,\n modelSrc: modelInputToSrcSchema.parse(data.modelConfig.pivotModel.modelSrc)\n }\n }\n : data.modelConfig,\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n })),\n z\n .object({\n ...loadModelRequestCommonFields,\n modelType: ttsModelTypeSchema,\n modelConfig: ttsConfigSchema\n })\n .strict()\n .transform((data) => ({\n type: 'loadModel',\n modelType: ModelType.ttsGgml,\n modelSrc: modelInputToSrcSchema.parse(data.modelSrc),\n modelName: modelInputToNameSchema.parse(data.modelSrc),\n modelConfig: data.modelConfig,\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n })),\n z\n .object({\n ...loadModelRequestCommonFields,\n modelType: ocrModelTypeSchema,\n modelConfig: ocrConfigSchema.partial().strict().optional()\n })\n .strict()\n .transform((data) => ({\n type: 'loadModel',\n modelType: ModelType.ggmlOcr,\n modelSrc: modelInputToSrcSchema.parse(data.modelSrc),\n modelName: modelInputToNameSchema.parse(data.modelSrc),\n modelConfig: data.modelConfig ?? {},\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n })),\n z\n .object({\n ...loadModelRequestCommonFields,\n modelType: diffusionModelTypeSchema,\n modelConfig: sdcppConfigSchema.strict().optional()\n })\n .strict()\n .transform((data) => ({\n type: 'loadModel',\n modelType: ModelType.sdcppGeneration,\n modelSrc: modelInputToSrcSchema.parse(data.modelSrc),\n modelName: modelInputToNameSchema.parse(data.modelSrc),\n modelConfig: data.modelConfig ?? {},\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n })),\n z\n .object({\n ...loadModelRequestCommonFields,\n modelType: vlaModelTypeSchema,\n modelConfig: vlaConfigSchema.strict().optional()\n })\n .strict()\n .transform((data) => ({\n type: 'loadModel',\n modelType: ModelType.ggmlVla,\n modelSrc: modelInputToSrcSchema.parse(data.modelSrc),\n modelName: modelInputToNameSchema.parse(data.modelSrc),\n modelConfig: data.modelConfig ?? {},\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n })),\n z\n .object({\n ...loadModelRequestCommonFields,\n modelSrc: modelSrcInputSchema.optional(),\n modelType: classificationModelTypeSchema,\n modelConfig: classificationConfigSchema.strict().optional()\n })\n .strict()\n .transform((data) => ({\n type: 'loadModel',\n modelType: ModelType.ggmlClassification,\n modelSrc: data.modelSrc ? modelInputToSrcSchema.parse(data.modelSrc) : '',\n modelName: data.modelSrc ? modelInputToNameSchema.parse(data.modelSrc) : undefined,\n modelConfig: data.modelConfig ?? {},\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n }))\n]);\nexport const loadCustomPluginToRequestSchema = z\n .object({\n ...loadModelRequestCommonFields,\n modelType: z.string().refine((val) => !builtInModelTypes.has(val), {\n message: 'Built-in model types must use their specific schema'\n }),\n modelConfig: z.record(z.string(), z.unknown()).optional()\n})\n .transform((data) => ({\n type: 'loadModel',\n modelType: data.modelType,\n modelSrc: modelInputToSrcSchema.parse(data.modelSrc),\n modelName: modelInputToNameSchema.parse(data.modelSrc),\n modelConfig: data.modelConfig ?? {},\n seed: data.seed ?? false,\n withProgress: data.withProgress ?? !!data.onProgress,\n delegate: data.delegate,\n ...(data.requestId !== undefined && { requestId: data.requestId })\n}));\nconst loadModelOptionsToRequestBaseSchema = z.union([\n loadBuiltinToRequestSchema,\n loadCustomPluginToRequestSchema\n]);\nexport const loadModelOptionsToRequestSchema = misplacedLoadModelConfigGuard.pipe(loadModelOptionsToRequestBaseSchema);\nconst commonModelConfigSchema = z.object({\n type: z.literal('loadModel'),\n modelSrc: z.string(),\n modelName: z.string().optional(),\n withProgress: z.boolean().optional(),\n seed: z.boolean().optional(),\n delegate: delegateSchema,\n requestId: z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight load, generated by the client at call time. Optional on the wire so legacy clients keep working — the server falls back to a server-generated id when the field is missing. Exposed on the client-side decorated promise so callers can target this load with `cancel({ requestId })`.')\n});\n// Request schemas for each model type (use canonical types since transforms normalize)\n// Use base schemas (no defaults) for client-side validation.\n// Server applies device defaults, then full schema defaults.\nexport const loadLlmModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.literal(ModelType.llamacppCompletion),\n modelConfig: llmConfigBaseSchema\n})\n .strict();\nexport const loadWhisperModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.literal(ModelType.whispercppTranscription),\n modelConfig: whisperConfigSchema\n})\n .strict();\nexport const loadBciModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.literal(ModelType.bciWhispercppTranscription),\n modelConfig: bciConfigSchema\n})\n .strict();\nexport const loadParakeetModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.literal(ModelType.parakeetTranscription),\n modelConfig: parakeetLoadConfigSchema.optional()\n})\n .strict();\nexport const loadEmbeddingsModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.literal(ModelType.llamacppEmbedding),\n modelConfig: embedConfigBaseSchema\n})\n .strict();\nexport const loadNmtModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.literal(ModelType.nmtcppTranslation),\n modelConfig: nmtConfigSchema\n})\n .strict();\nexport const loadTtsModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.literal(ModelType.ttsGgml),\n modelConfig: ttsConfigSchema\n})\n .strict();\nexport const loadOcrModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.literal(ModelType.ggmlOcr),\n modelConfig: ocrConfigSchema\n})\n .strict();\nexport const loadDiffusionModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.literal(ModelType.sdcppGeneration),\n modelConfig: sdcppConfigSchema.optional()\n})\n .strict();\nexport const loadVlaModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.literal(ModelType.ggmlVla),\n modelConfig: vlaConfigSchema.optional()\n})\n .strict();\nexport const loadClassificationModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.literal(ModelType.ggmlClassification),\n modelConfig: classificationConfigSchema.optional()\n})\n .strict();\n// Custom plugin catch-all: accepts any modelType string EXCEPT built-ins\nexport const loadCustomPluginModelRequestSchema = commonModelConfigSchema\n .extend({\n modelType: z.string().refine((val) => !builtInModelTypes.has(val), {\n message: 'Built-in model types must use their specific schema'\n }),\n modelConfig: z.record(z.string(), z.unknown()).optional()\n})\n .meta({ title: 'LoadModelCustomPluginRequest' });\n// Union of all load model request types (using z.union since each modelType accepts multiple values)\nexport const loadModelSrcRequestSchema = z\n .union([\n loadLlmModelRequestSchema,\n loadWhisperModelRequestSchema,\n loadBciModelRequestSchema,\n loadParakeetModelRequestSchema,\n loadEmbeddingsModelRequestSchema,\n loadNmtModelRequestSchema,\n loadTtsModelRequestSchema,\n loadOcrModelRequestSchema,\n loadDiffusionModelRequestSchema,\n loadVlaModelRequestSchema,\n loadClassificationModelRequestSchema,\n loadCustomPluginModelRequestSchema\n])\n .transform((data) => ({\n ...data,\n seed: data.seed ?? false\n}))\n .meta({ title: 'LoadModelSrcRequest' });\n// Combined request schema: load new model OR reload config\nexport const loadModelRequestSchema = z.union([\n loadModelSrcRequestSchema,\n reloadConfigRequestSchema\n]);\nexport const loadModelResponseSchema = z.object({\n type: z.literal('loadModel'),\n success: z.boolean(),\n modelId: z.string().optional(),\n error: z.string().optional()\n});\nexport const modelProgressUpdateSchema = z.object({\n type: z.literal('modelProgress'),\n downloaded: z.number(),\n total: z.number(),\n percentage: z.number(),\n downloadKey: z.string(),\n shardInfo: z\n .object({\n currentShard: z.number(),\n totalShards: z.number(),\n shardName: z.string(),\n overallDownloaded: z.number(),\n overallTotal: z.number(),\n overallPercentage: z.number()\n })\n .optional(),\n fileSetInfo: z\n .object({\n setKey: z.string(),\n currentFile: z.string(),\n fileIndex: z.number(),\n totalFiles: z.number(),\n overallDownloaded: z.number(),\n overallTotal: z.number(),\n overallPercentage: z.number()\n })\n .optional()\n});\nexport const hyperdriveUrlSchema = z\n .string()\n .regex(/^pear:\\/\\/[0-9a-fA-F]{64}\\/(.+)$/, 'Invalid hyperdrive URL. Expected format: pear://64-char-hex-key/path/to/model.gguf')\n .transform((url) => {\n const match = url.match(/^pear:\\/\\/([0-9a-fA-F]{64})\\/(.+)$/);\n return { key: match[1], path: match[2] };\n});\n/**\n * Schema for registry:// URLs (internal use only).\n * Users should use model constants from @qvac/sdk instead of raw URLs.\n * Format: registry://source/path/to/model.gguf\n */\nexport const registryUrlSchema = z\n .string()\n .regex(/^registry:\\/\\/([^/]+)\\/(.+)$/, 'Invalid registry URL. Expected format: registry://source/path/to/model.gguf')\n .transform((url) => {\n const match = url.match(/^registry:\\/\\/([^/]+)\\/(.+)$/);\n return {\n registrySource: match[1],\n registryPath: match[2] // Path without source prefix\n };\n});\nconst loadModelServerOptionsSchema = commonModelConfigSchema.extend({\n modelType: z.string(),\n modelConfig: z.record(z.string(), z.unknown()).optional()\n});\nexport const loadModelServerParamsSchema = z.object({\n modelId: z.string(),\n modelPath: z.string(),\n options: loadModelServerOptionsSchema,\n artifacts: z.record(z.string(), z.string()).optional(),\n modelName: z.string().optional()\n});\nimport { z } from 'zod';\nconst logLevelValues = ['error', 'warn', 'info', 'debug', 'off'];\nexport const logLevelSchema = z.enum(logLevelValues);\nconst loggingParamsSchema = z.object({\n id: z.string()\n});\nexport const loggingStreamRequestSchema = loggingParamsSchema.extend({\n type: z.literal('loggingStream')\n});\nexport const loggingStreamResponseSchema = z.object({\n type: z.literal('loggingStream'),\n id: z.string(),\n level: logLevelSchema,\n namespace: z.string(),\n message: z.string(),\n timestamp: z.number()\n});\nexport {};\nimport { z } from 'zod';\nimport { modelTypeInputSchema, normalizeModelType, isCanonicalModelType, isModelTypeAlias } from './model-types.js';\nimport { resolveCanonicalEngine } from './engine-addon-map.js';\n// Addon field accepts model type inputs plus \"vad\"\nconst addonSchema = z.union([modelTypeInputSchema, z.literal('vad')]);\nexport const modelDescriptorSchema = z.object({\n src: z.string(),\n name: z.string().optional(),\n modelId: z.string().optional(),\n registryPath: z.string().optional(),\n registrySource: z.string().optional(),\n blobCoreKey: z.string().optional(),\n blobIndex: z.number().optional(),\n engine: z.string().optional(),\n expectedSize: z.number().optional(),\n sha256Checksum: z.string().optional(),\n addon: addonSchema.optional()\n});\nexport const modelSrcInputSchema = z.union([z.string(), modelDescriptorSchema]);\n/**\n * Schema that transforms ModelSrc to its src string\n * Usage: modelSrcToStringSchema.parse(modelSrc)\n */\nexport const modelInputToSrcSchema = modelSrcInputSchema.transform((modelSrc) => {\n return typeof modelSrc === 'string' ? modelSrc : modelSrc.src;\n});\n/**\n * Schema that transforms ModelSrc to its optional name\n * Usage: modelSrcToNameSchema.parse(modelSrc)\n */\nexport const modelInputToNameSchema = modelSrcInputSchema.transform((modelSrc) => {\n if (typeof modelSrc === 'object' && 'name' in modelSrc) {\n return typeof modelSrc.name === 'string' ? modelSrc.name : undefined;\n }\n return undefined;\n});\nexport function inferModelTypeFromModelSrc(modelSrc) {\n if (typeof modelSrc !== 'object' || modelSrc === null) {\n return undefined;\n }\n const descriptor = modelSrc;\n const engine = descriptor['engine'];\n if (typeof engine === 'string' && engine.length > 0) {\n const canonical = resolveCanonicalEngine(engine);\n if (canonical)\n return canonical;\n if (isCanonicalModelType(engine) || isModelTypeAlias(engine)) {\n return normalizeModelType(engine);\n }\n }\n const addon = descriptor['addon'];\n if (typeof addon === 'string' && addon.length > 0) {\n const canonical = resolveCanonicalEngine(addon);\n if (canonical)\n return canonical;\n if (isCanonicalModelType(addon) || isModelTypeAlias(addon)) {\n return normalizeModelType(addon);\n }\n }\n return undefined;\n}\nimport { z } from 'zod';\n// === INTERNAL: Canonical types (used in SDK code) ===\n/**\n * Canonical model type values for internal SDK use.\n * Format: `engine-usecase` (e.g., \"llamacpp-completion\")\n * Use dot-accessor syntax: `ModelType.llamacppCompletion`\n */\nexport const ModelType = {\n llamacppCompletion: 'llamacpp-completion',\n whispercppTranscription: 'whispercpp-transcription',\n bciWhispercppTranscription: 'bci-whispercpp-transcription',\n llamacppEmbedding: 'llamacpp-embedding',\n nmtcppTranslation: 'nmtcpp-translation',\n onnxTts: 'onnx-tts',\n ttsGgml: 'tts-ggml',\n parakeetTranscription: 'parakeet-transcription',\n ggmlOcr: 'ggml-ocr',\n sdcppGeneration: 'sdcpp-generation',\n ggmlVla: 'ggml-vla',\n ggmlClassification: 'ggml-classification'\n};\n// === INTERNAL: Alias keys (backward compat names) ===\nconst AliasKeys = {\n llm: 'llm',\n whisper: 'whisper',\n bci: 'bci',\n embeddings: 'embeddings',\n nmt: 'nmt',\n parakeet: 'parakeet',\n tts: 'tts',\n ocr: 'ocr',\n diffusion: 'diffusion',\n vla: 'vla',\n classification: 'classification'\n};\n// === INTERNAL: Aliases (backward compat mapping) ===\n/**\n * Alias mappings for backward compatibility.\n * Maps old names to canonical values.\n */\nexport const ModelTypeAliases = {\n [AliasKeys.llm]: ModelType.llamacppCompletion,\n [AliasKeys.whisper]: ModelType.whispercppTranscription,\n [AliasKeys.bci]: ModelType.bciWhispercppTranscription,\n [AliasKeys.embeddings]: ModelType.llamacppEmbedding,\n [AliasKeys.nmt]: ModelType.nmtcppTranslation,\n [AliasKeys.parakeet]: ModelType.parakeetTranscription,\n [AliasKeys.tts]: ModelType.ttsGgml,\n [AliasKeys.ocr]: ModelType.ggmlOcr,\n [AliasKeys.diffusion]: ModelType.sdcppGeneration,\n [AliasKeys.vla]: ModelType.ggmlVla,\n [AliasKeys.classification]: ModelType.ggmlClassification\n};\n// Set of canonical values for quick lookup\nconst canonicalValuesSet = new Set(Object.values(ModelType));\n// === PUBLIC: Combined (exported via index.ts as MODEL_TYPES) ===\n/**\n * All valid model types: canonical names + aliases.\n *\n * Canonical names follow `engine-usecase` format (e.g., \"llamacpp-completion\").\n * Aliases resolve to canonical names for backward compatibility.\n *\n * @example\n * ```typescript\n * // Preferred: canonical name\n * loadModel({ modelSrc: \"...\", modelType: MODEL_TYPES.nmtcppTranslation });\n *\n * // Deprecated: alias (still resolves to \"nmtcpp-translation\")\n * loadModel({ modelSrc: \"...\", modelType: MODEL_TYPES.nmt });\n * ```\n */\nexport const PUBLIC_MODEL_TYPES = {\n ...ModelType,\n ...ModelTypeAliases\n};\n// === ZOD SCHEMAS ===\n// Derive input values from objects - no string repetition\nconst inputValues = [\n ...Object.values(ModelType),\n ...Object.keys(ModelTypeAliases)\n];\n/** Schema accepting both canonical and alias model type inputs */\nexport const modelTypeInputSchema = z.enum(inputValues);\n/** Schema that transforms input to canonical model type */\nexport const modelTypeSchema = modelTypeInputSchema.transform((val) => {\n // If already canonical, return as-is\n if (canonicalValuesSet.has(val)) {\n return val;\n }\n // Otherwise, look up in aliases\n return ModelTypeAliases[val];\n});\n/**\n * Normalize model type input to canonical form.\n * Custom plugin types (not in built-ins) are returned as-is.\n */\nexport function normalizeModelType(input) {\n // If already canonical, return as-is\n if (canonicalValuesSet.has(input)) {\n return input;\n }\n // If it's an alias, normalize to canonical\n if (input in ModelTypeAliases) {\n return ModelTypeAliases[input];\n }\n // Custom plugin type - return as-is\n return input;\n}\n/**\n * Type guard to check if a string is a canonical (built-in) model type.\n * Returns false for custom plugin types.\n */\nexport function isCanonicalModelType(input) {\n return canonicalValuesSet.has(input);\n}\n/**\n * Check if input is a built-in alias (not canonical or custom).\n * Returns false for custom plugin types.\n */\nexport function isModelTypeAlias(input) {\n return input in ModelTypeAliases;\n}\n// === PER-MODEL-TYPE SCHEMAS (for discriminated unions) ===\n// Extracted from root enum - no value duplication\n/**\n * LLM/Completion model type schema.\n * - Alias: `\"llm\"` → resolves to `\"llamacpp-completion\"`\n * - Canonical: `\"llamacpp-completion\"`\n */\nexport const llmModelTypeSchema = modelTypeInputSchema\n .extract([AliasKeys.llm, ModelType.llamacppCompletion])\n .describe('LLM model type: \"llm\" (alias) or \"llamacpp-completion\" (canonical)');\n/**\n * Whisper/Transcription model type schema.\n * - Alias: `\"whisper\"` → resolves to `\"whispercpp-transcription\"`\n * - Canonical: `\"whispercpp-transcription\"`\n */\nexport const whisperModelTypeSchema = modelTypeInputSchema\n .extract([AliasKeys.whisper, ModelType.whispercppTranscription])\n .describe('Whisper model type: \"whisper\" (alias) or \"whispercpp-transcription\" (canonical)');\n/**\n * BCI/Transcription model type schema.\n * - Alias: `\"bci\"` → resolves to `\"bci-whispercpp-transcription\"`\n * - Canonical: `\"bci-whispercpp-transcription\"`\n */\nexport const bciModelTypeSchema = modelTypeInputSchema\n .extract([AliasKeys.bci, ModelType.bciWhispercppTranscription])\n .describe('BCI model type: \"bci\" (alias) or \"bci-whispercpp-transcription\" (canonical)');\n/**\n * Parakeet/Transcription model type schema.\n * - Alias: `\"parakeet\"` → resolves to `\"parakeet-transcription\"`\n * - Canonical: `\"parakeet-transcription\"`\n */\nexport const parakeetModelTypeSchema = modelTypeInputSchema\n .extract([AliasKeys.parakeet, ModelType.parakeetTranscription])\n .describe('Parakeet model type: \"parakeet\" (alias) or \"parakeet-transcription\" (canonical)');\n/**\n * Embeddings model type schema.\n * - Alias: `\"embeddings\"` → resolves to `\"llamacpp-embedding\"`\n * - Canonical: `\"llamacpp-embedding\"`\n */\nexport const embeddingsModelTypeSchema = modelTypeInputSchema\n .extract([AliasKeys.embeddings, ModelType.llamacppEmbedding])\n .describe('Embeddings model type: \"embeddings\" (alias) or \"llamacpp-embedding\" (canonical)');\n/**\n * NMT/Translation model type schema.\n * - Alias: `\"nmt\"` → resolves to `\"nmtcpp-translation\"`\n * - Canonical: `\"nmtcpp-translation\"`\n */\nexport const nmtModelTypeSchema = modelTypeInputSchema\n .extract([AliasKeys.nmt, ModelType.nmtcppTranslation])\n .describe('NMT model type: \"nmt\" (alias) or \"nmtcpp-translation\" (canonical)');\n/**\n * TTS model type schema.\n * - Alias: `\"tts\"` → resolves to `\"tts-ggml\"`\n * - Canonical: `\"tts-ggml\"`\n */\nexport const ttsModelTypeSchema = modelTypeInputSchema\n .extract([AliasKeys.tts, ModelType.ttsGgml])\n .describe('TTS model type: \"tts\" (alias) or \"tts-ggml\" (canonical)');\n/**\n * OCR model type schema.\n * - Alias: `\"ocr\"` → resolves to `\"ggml-ocr\"`\n * - Canonical: `\"ggml-ocr\"`\n */\nexport const ocrModelTypeSchema = modelTypeInputSchema\n .extract([AliasKeys.ocr, ModelType.ggmlOcr])\n .describe('OCR model type: \"ocr\" (alias) or \"ggml-ocr\" (canonical)');\n/**\n * Diffusion/Image Generation model type schema.\n * - Alias: `\"diffusion\"` → resolves to `\"sdcpp-generation\"`\n * - Canonical: `\"sdcpp-generation\"`\n */\nexport const diffusionModelTypeSchema = modelTypeInputSchema\n .extract([AliasKeys.diffusion, ModelType.sdcppGeneration])\n .describe('Diffusion model type: \"diffusion\" (alias) or \"sdcpp-generation\" (canonical)');\n/**\n * VLA (vision-language-action) model type schema.\n * - Alias: `\"vla\"` → resolves to `\"ggml-vla\"`\n * - Canonical: `\"ggml-vla\"`\n */\nexport const vlaModelTypeSchema = modelTypeInputSchema\n .extract([AliasKeys.vla, ModelType.ggmlVla])\n .describe('VLA model type: \"vla\" (alias) or \"ggml-vla\" (canonical)');\n/**\n * Image Classification model type schema.\n * - Alias: `\"classification\"` → resolves to `\"ggml-classification\"`\n * - Canonical: `\"ggml-classification\"`\n */\nexport const classificationModelTypeSchema = modelTypeInputSchema\n .extract([AliasKeys.classification, ModelType.ggmlClassification])\n .describe('Classification model type: \"classification\" (alias) or \"ggml-classification\" (canonical)');\nimport { z } from 'zod';\nimport { modelSrcInputSchema } from './model-src-utils.js';\n// Model config — maps to @qvac/ocr-ggml `OcrGgmlParams`. Legacy ONNX-only knobs\n// (useGPU, timeout, pipelineMode, decodingMethod, straightenPages) are dropped;\n// zod's default (non-strict) object strips them silently if still passed.\nexport const ocrConfigSchema = z.object({\n langList: z.array(z.string()).optional(),\n pipelineType: z.enum(['easyocr', 'doctr']).optional(),\n magRatio: z.number().optional(),\n canvasSize: z.number().optional(),\n defaultRotationAngles: z.array(z.number()).optional(),\n contrastRetry: z.boolean().optional(),\n lowConfidenceThreshold: z.number().optional(),\n recognizerBatchSize: z.number().optional(),\n nThreads: z.number().optional(),\n backendDevice: z.enum(['cpu', 'vulkan', 'metal', 'opencl']).optional(),\n gpuDevice: z.number().optional(),\n detectorModelSrc: modelSrcInputSchema.optional()\n});\n// Image input types\nexport const imageInputSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('base64'),\n value: z.string()\n }),\n z.object({\n type: z.literal('filePath'),\n value: z.string()\n })\n]);\n// OCR options\nexport const ocrOptionsSchema = z.object({\n paragraph: z.boolean().optional()\n});\nexport const ocrParamsSchema = z.object({\n modelId: z.string(),\n image: imageInputSchema,\n options: ocrOptionsSchema.optional()\n});\nexport const ocrStreamRequestSchema = ocrParamsSchema.extend({\n type: z.literal('ocrStream')\n});\nexport const ocrTextBlockSchema = z.object({\n text: z.string(),\n bbox: z.tuple([z.number(), z.number(), z.number(), z.number()]).optional(),\n confidence: z.number().optional()\n});\nexport const ocrStatsSchema = z.object({\n detectionTime: z.number().optional(),\n recognitionTime: z.number().optional(),\n totalTime: z.number().optional()\n});\nexport const ocrStreamResponseSchema = z.object({\n type: z.literal('ocrStream'),\n blocks: z.array(ocrTextBlockSchema).optional(),\n done: z.boolean().optional(),\n error: z.string().optional(),\n stats: ocrStatsSchema.optional()\n});\nimport { z } from 'zod';\n/**\n * Zod refinement for path components that get joined to a base directory.\n * Rejects strings containing traversal sequences (.., null bytes).\n *\n * DO NOT apply to fields that accept absolute user paths (e.g. audio, image,\n * model, or attachment paths).\n */\nexport const safePathComponent = z.string().refine((s) => {\n // Reject literal traversal\n if (s.includes('..'))\n return false;\n // Reject null bytes (literal and URL-encoded)\n if (s.includes('\\0') || s.toLowerCase().includes('%00'))\n return false;\n // Reject URL-encoded traversal (%2e = \".\", %2f = \"/\", %5c = \"\\\")\n if (/%2e/i.test(s))\n return false;\n return true;\n}, {\n message: \"Path component must not contain traversal sequences ('..', '%2e'), null bytes, or '%00'\"\n});\nimport { z } from 'zod';\n// Non-streaming plugin invoke\nexport const pluginInvokeRequestSchema = z.object({\n type: z.literal('pluginInvoke'),\n modelId: z.string(),\n handler: z.string(),\n params: z.unknown()\n});\nexport const pluginInvokeResponseSchema = z.object({\n type: z.literal('pluginInvoke'),\n result: z.unknown()\n});\n// Streaming plugin invoke\nexport const pluginInvokeStreamRequestSchema = z.object({\n type: z.literal('pluginInvokeStream'),\n modelId: z.string(),\n handler: z.string(),\n params: z.unknown()\n});\nexport const pluginInvokeStreamResponseSchema = z.object({\n type: z.literal('pluginInvokeStream'),\n result: z.unknown(),\n done: z.boolean().optional()\n});\n// ============================================\n// Type Helpers\n// ============================================\n/**\n * Helper function to define a plugin with full type inference.\n *\n * Identity function whose only role is to constrain `plugin` to the\n * `QvacPlugin` shape so consumers get accurate autocompletion and type\n * errors for plugin manifests without having to write an explicit type\n * annotation.\n *\n * @param plugin - The plugin manifest to register.\n * @returns The same `plugin` value, typed as the caller's `T`.\n */\nexport function definePlugin(plugin) {\n return plugin;\n}\n/**\n * Helper function to define a handler with full type inference.\n *\n * Identity function whose only role is to constrain `definition` to a\n * `PluginHandlerDefinition` so the Zod request /\n * response schemas flow through to the handler body without an explicit\n * type annotation on the caller side.\n *\n * @param definition - The plugin handler definition (request/response schemas and handler function).\n * @returns The same `definition` value, typed as `PluginHandlerDefinition`.\n */\nexport function defineHandler(definition) {\n return definition;\n}\n/**\n * Helper function to define a duplex (bidirectional streaming) handler with full type inference.\n *\n * Identity function whose only role is to constrain `definition` to a\n * `DuplexPluginHandlerDefinition` and cast it to the unified\n * `PluginHandlerDefinition` shape. This bridges TS function-parameter\n * contravariance so duplex handlers can be registered alongside unary ones.\n *\n * @param definition - The duplex plugin handler definition (request/response schemas and streaming handler function).\n * @returns The same `definition` value, typed as `PluginHandlerDefinition`.\n */\nexport function defineDuplexHandler(definition) {\n // The duplex flag guarantees inputStream is always\n // provided at call time; the cast bridges TS function-param contravariance.\n return definition;\n}\n// ============================================\n// Worker runtime validation\n// ============================================\nconst functionRuntimeSchema = z.instanceof(Function, {\n error: 'must be a function'\n});\nconst zodSchemaLikeRuntimeSchema = z\n .object({\n safeParse: functionRuntimeSchema\n})\n .catchall(z.unknown());\nconst pluginHandlerCancelRuntimeSchema = z\n .object({\n scope: z.enum(['request', 'model', 'none'], {\n error: \"cancel.scope must be 'request', 'model', or 'none'\"\n }),\n hard: z.boolean().optional()\n})\n .catchall(z.unknown());\nexport const pluginHandlerDefinitionRuntimeSchema = z\n .object({\n requestSchema: zodSchemaLikeRuntimeSchema,\n responseSchema: zodSchemaLikeRuntimeSchema,\n streaming: z.boolean({ error: 'streaming must be a boolean' }),\n duplex: z.boolean().optional(),\n handler: functionRuntimeSchema,\n cancel: pluginHandlerCancelRuntimeSchema.optional()\n})\n .catchall(z.unknown());\nexport const pluginDefinitionRuntimeSchema = z\n .object({\n modelType: z\n .string({ error: 'modelType must be a string' })\n .min(1, 'modelType must be a non-empty string'),\n displayName: z\n .string({ error: 'displayName must be a string' })\n .min(1, 'displayName must be a non-empty string'),\n addonPackage: z\n .string({ error: 'addonPackage must be a string' })\n .min(1, 'addonPackage must be a non-empty string'),\n loadConfigSchema: zodSchemaLikeRuntimeSchema,\n createModel: functionRuntimeSchema,\n handlers: z.record(z.string(), pluginHandlerDefinitionRuntimeSchema),\n logging: z\n .object({\n module: z.unknown().optional(),\n namespace: z.string().optional()\n })\n .catchall(z.unknown())\n .optional(),\n resolveConfig: functionRuntimeSchema.optional(),\n skipPrimaryModelPathValidation: z.boolean().optional()\n})\n .catchall(z.unknown());\n// ============================================\n// Built-in Plugins\n// ============================================\n/**\n * LLM text completion plugin (llama.cpp).\n * Provides: completion, streaming chat, tool calling.\n */\nexport const PLUGIN_LLM = '@qvac/sdk/llamacpp-completion/plugin';\n/**\n * Text embedding plugin (llama.cpp).\n * Provides: vector embeddings for RAG and semantic search.\n */\nexport const PLUGIN_EMBEDDING = '@qvac/sdk/llamacpp-embedding/plugin';\n/**\n * Speech-to-text transcription plugin (whisper.cpp).\n * Provides: audio transcription, language detection.\n */\nexport const PLUGIN_WHISPER = '@qvac/sdk/whispercpp-transcription/plugin';\n/**\n * Brain-Computer Interface neural-signal transcription plugin\n * (whisper.cpp). Provides: transcription of neural signals to text.\n */\nexport const PLUGIN_BCI = '@qvac/sdk/bci-whispercpp-transcription/plugin';\n/**\n * Speech-to-text transcription plugin (Parakeet ONNX).\n * Provides: audio transcription using NVIDIA Parakeet models.\n */\nexport const PLUGIN_PARAKEET = '@qvac/sdk/parakeet-transcription/plugin';\n/**\n * Neural machine translation plugin (nmt.cpp).\n * Provides: text translation between languages.\n */\nexport const PLUGIN_NMT = '@qvac/sdk/nmtcpp-translation/plugin';\n/**\n * Text-to-speech synthesis plugin (GGML).\n * Provides: speech synthesis from text.\n */\nexport const PLUGIN_TTS = '@qvac/sdk/tts-ggml/plugin';\n/**\n * Optical character recognition plugin (GGML).\n * Provides: text extraction from images.\n */\nexport const PLUGIN_OCR = '@qvac/sdk/ggml-ocr/plugin';\n/**\n * Image generation plugin (stable-diffusion.cpp).\n * Provides: text-to-image generation and standalone ESRGAN image upscaling.\n */\nexport const PLUGIN_DIFFUSION = '@qvac/sdk/sdcpp-generation/plugin';\n/**\n * Vision-Language-Action plugin (ggml). Supports SmolVLA, π₀.₅ (pi05), and\n * GR00T, dispatched on the GGUF `general.architecture` key.\n * Provides: robot-action inference from one or more camera frames (2 for\n * SmolVLA and GR00T, 3 for π₀.₅) and a natural-language instruction.\n */\nexport const PLUGIN_VLA = '@qvac/sdk/ggml-vla/plugin';\n/**\n * Image classification plugin (GGML / MobileNetV3-Small).\n * Provides: image classification with bundled 3-class model (food / report / other).\n */\nexport const PLUGIN_CLASSIFICATION = '@qvac/sdk/ggml-classification/plugin';\n/**\n * All built-in SDK plugins.\n *\n * @example\n * // Use all defaults plus a custom plugin:\n * const config = {\n * plugins: [...SDK_DEFAULT_PLUGINS, myCustomPlugin],\n * };\n */\nexport const SDK_DEFAULT_PLUGINS = [\n PLUGIN_LLM,\n PLUGIN_EMBEDDING,\n PLUGIN_WHISPER,\n PLUGIN_BCI,\n PLUGIN_PARAKEET,\n PLUGIN_NMT,\n PLUGIN_TTS,\n PLUGIN_OCR,\n PLUGIN_DIFFUSION,\n PLUGIN_VLA,\n PLUGIN_CLASSIFICATION\n];\n// ============================================\n// Addon Packages\n// ============================================\n/** Native addon package for LLM completion (llama.cpp) */\nexport const ADDON_LLM = '@qvac/llm-llamacpp';\n/** Native addon package for text embeddings (llama.cpp) */\nexport const ADDON_EMBEDDING = '@qvac/embed-llamacpp';\n/** Native addon package for Whisper transcription (whisper.cpp) */\nexport const ADDON_WHISPER = '@qvac/transcription-whispercpp';\n/** Native addon package for BCI neural-signal transcription (whisper.cpp) */\nexport const ADDON_BCI = '@qvac/bci-whispercpp';\n/** Native addon package for Parakeet transcription (ONNX) */\nexport const ADDON_PARAKEET = '@qvac/transcription-parakeet';\n/** Native addon package for NMT translation (nmt.cpp) */\nexport const ADDON_NMT = '@qvac/translation-nmtcpp';\n/** Native addon package for TTS (GGML) */\nexport const ADDON_TTS = '@qvac/tts-ggml';\n/** Native addon package for OCR (GGML) */\nexport const ADDON_OCR = '@qvac/ocr-ggml';\n/** Native addon package for image generation (stable-diffusion.cpp) */\nexport const ADDON_DIFFUSION = '@qvac/diffusion-cpp';\n/** Native addon package for vision-language-action inference (SmolVLA / π₀.₅ / GR00T on ggml) */\nexport const ADDON_VLA = '@qvac/vla-ggml';\n/** Native addon package for image classification (GGML / MobileNetV3) */\nexport const ADDON_CLASSIFICATION = '@qvac/classification-ggml';\nimport { z } from 'zod';\n/** Internal envelope key for profiling metadata in RPC payloads */\nexport const PROFILING_KEY = '__profiling';\n/** Marker key for profiling-only trailer frames in streaming responses */\nexport const PROFILING_TRAILER_KEY = '__profilingTrailer';\n/**\n * Symbol key for attaching delegation breakdown to response objects.\n */\nexport const DELEGATION_BREAKDOWN_KEY = Symbol.for('@qvac/sdk:delegation-breakdown');\n/**\n * Symbol key for attaching operation event to response objects.\n */\nexport const OPERATION_EVENT_KEY = Symbol.for('@qvac/sdk:operation-event');\n/**\n * Symbol key for attaching model execution timing.\n */\nexport const MODEL_EXECUTION_KEY = Symbol.for('@qvac/sdk:model-execution');\nexport const profilerModeSchema = z.enum(['summary', 'verbose']);\n/**\n * Server-side timing breakdown (server → client).\n * Attached to profiling response when includeServerBreakdown is enabled.\n */\nexport const serverBreakdownSchema = z.object({\n requestJsonParseMs: z.number().optional(),\n requestZodValidationMs: z.number().optional(),\n handlerExecutionMs: z.number().optional(),\n responseZodValidationMs: z.number().optional(),\n responseStringifyMs: z.number().optional(),\n totalServerMs: z.number().optional()\n});\n/**\n * Delegation timing breakdown (consumer server → client).\n * Captures timing for server-to-provider delegation hops.\n * Note: Only injected for unary requests; streaming delegation\n * records server-side but does not inject into response.\n */\nexport const delegationBreakdownSchema = z.object({\n profileId: z.string().optional(),\n connectionMs: z.number().optional(),\n requestStringifyMs: z.number().optional(),\n serverWaitMs: z.number().optional(),\n responseJsonParseMs: z.number().optional(),\n totalDelegationMs: z.number().optional()\n});\nexport const operationEventSchema = z.object({\n op: z.string(),\n kind: z.literal('handler'),\n ms: z.number(),\n profileId: z.string().optional(),\n gauges: z.record(z.string(), z.number()).optional(),\n tags: z.record(z.string(), z.string()).optional(),\n count: z.number().optional()\n});\nexport const profilingRequestMetaSchema = z.object({\n enabled: z.boolean().optional(),\n id: z.string().optional(),\n includeServer: z.boolean().optional(),\n mode: profilerModeSchema.optional()\n});\nexport const profilingResponseMetaSchema = z.object({\n id: z.string(),\n server: serverBreakdownSchema.optional(),\n delegation: delegationBreakdownSchema.optional(),\n operation: operationEventSchema.optional()\n});\nexport const perCallProfilingSchema = z.object({\n enabled: z\n .boolean()\n .optional()\n .describe('Enable profiling for this call only; when omitted, the SDK-level profiler configuration applies.'),\n includeServerBreakdown: z\n .boolean()\n .optional()\n .describe('Include server-side timing breakdown in the profiling payload.'),\n mode: profilerModeSchema\n .optional()\n .describe('Profiling detail level: `\"summary\"` aggregates only, `\"verbose\"` retains recent events.')\n});\nimport { z } from 'zod';\nexport const firewallConfigSchema = z.object({\n mode: z.enum(['allow', 'deny']).default('allow'),\n publicKeys: z.array(z.string()).default([])\n});\nexport const provideParamsSchema = z\n .object({\n firewall: firewallConfigSchema.optional()\n})\n .strict();\nexport const provideRequestSchema = provideParamsSchema.extend({\n type: z.literal('provide')\n});\nexport const provideResponseSchema = z.object({\n type: z.literal('provide'),\n success: z.boolean(),\n error: z.string().optional(),\n publicKey: z.string().optional()\n});\nexport const envSchema = z.object({\n QVAC_HYPERSWARM_SEED: z.string()\n});\nimport { z } from 'zod';\nimport { safePathComponent } from './path-validation.js';\n// ============== Common Schemas ==============\nconst llmChunkOptsSchema = z.object({\n chunkSize: z.number().optional(),\n chunkOverlap: z.number().optional(),\n chunkStrategy: z.enum(['character', 'paragraph']).optional(),\n splitStrategy: z.enum(['character', 'word', 'token', 'sentence', 'line']).optional()\n});\nconst saveEmbeddingsResultSchema = z.object({\n status: z.enum(['fulfilled', 'rejected']),\n id: z.string().optional(),\n error: z.string().optional()\n});\n// ============== Base Schemas ==============\n// For storage-only operations (reindex, delete, saveEmbeddings)\n// modelId is optional - only needed if no cached RAG instance exists\nconst ragStorageOnlyBaseSchema = z.object({\n modelId: z.string().optional(),\n workspace: safePathComponent.optional()\n});\n// For operations that need the embedding model (ingest, search)\nconst ragBaseSchema = ragStorageOnlyBaseSchema.extend({\n modelId: z.string()\n});\n// ============== Ingest Operation ==============\nexport const ragIngestParamsSchema = ragBaseSchema.extend({\n documents: z.union([z.string(), z.array(z.string())]),\n chunk: z.boolean().default(true),\n chunkOpts: llmChunkOptsSchema.optional(),\n progressInterval: z.number().positive().optional(),\n onProgress: z.unknown().optional(),\n withProgress: z.boolean().optional()\n});\nconst ragIngestOperationSchema = ragIngestParamsSchema.extend({\n type: z.literal('rag'),\n operation: z.literal('ingest')\n});\n// ============== Chunk Operation ==============\nconst docSchema = z.object({\n id: z.string(),\n content: z.string()\n});\nexport const ragChunkParamsSchema = z.object({\n documents: z.union([z.string(), z.array(z.string())]),\n chunkOpts: llmChunkOptsSchema.optional()\n});\nconst ragChunkOperationSchema = ragChunkParamsSchema.extend({\n type: z.literal('rag'),\n operation: z.literal('chunk')\n});\n// ============== SaveEmbeddings Operation ==============\nconst embeddedDocSchema = z.object({\n id: z.string(),\n content: z.string(),\n embedding: z.array(z.number()),\n embeddingModelId: z.string(),\n metadata: z.record(z.string(), z.unknown()).optional()\n});\nexport const ragSaveEmbeddingsParamsSchema = ragStorageOnlyBaseSchema.extend({\n documents: z.array(embeddedDocSchema),\n progressInterval: z.number().positive().optional(),\n onProgress: z.unknown().optional(),\n withProgress: z.boolean().optional()\n});\nconst ragSaveEmbeddingsOperationSchema = ragSaveEmbeddingsParamsSchema.extend({\n type: z.literal('rag'),\n operation: z.literal('saveEmbeddings')\n});\n// ============== Reindex Operation ==============\nconst reindexResultSchema = z.object({\n reindexed: z.boolean(),\n details: z.record(z.string(), z.unknown()).optional()\n});\nexport const ragReindexParamsSchema = ragStorageOnlyBaseSchema.extend({\n onProgress: z.unknown().optional(),\n withProgress: z.boolean().optional()\n});\nconst ragReindexOperationSchema = ragReindexParamsSchema.extend({\n type: z.literal('rag'),\n operation: z.literal('reindex')\n});\n// ============== Search Operation ==============\nconst searchResultSchema = z.object({\n id: z.string(),\n content: z.string(),\n score: z.number()\n});\nexport const ragSearchParamsSchema = ragBaseSchema.extend({\n query: z.string().min(1, 'Query cannot be empty'),\n topK: z.number().positive().default(5),\n n: z.number().positive().default(3)\n});\nconst ragSearchOperationSchema = ragSearchParamsSchema.extend({\n type: z.literal('rag'),\n operation: z.literal('search')\n});\n// ============== Delete Embeddings Operation ==============\nexport const ragDeleteEmbeddingsParamsSchema = ragStorageOnlyBaseSchema.extend({\n ids: z.array(z.string()).min(1, 'At least one ID must be provided')\n});\nconst ragDeleteEmbeddingsOperationSchema = ragDeleteEmbeddingsParamsSchema.extend({\n type: z.literal('rag'),\n operation: z.literal('deleteEmbeddings')\n});\n// ============== List Workspaces Operation ==============\nconst ragListWorkspacesOperationSchema = z.object({\n type: z.literal('rag'),\n operation: z.literal('listWorkspaces')\n});\n// ============== Close Workspace Operation ==============\nexport const ragCloseWorkspaceParamsSchema = z.object({\n workspace: safePathComponent.optional(),\n deleteOnClose: z.boolean().optional()\n});\nconst ragCloseWorkspaceOperationSchema = ragCloseWorkspaceParamsSchema.extend({\n type: z.literal('rag'),\n operation: z.literal('closeWorkspace')\n});\n// ============== Delete Workspace Operation ==============\nexport const ragDeleteWorkspaceParamsSchema = z.object({\n workspace: z.string().min(1, 'Workspace name cannot be empty').pipe(safePathComponent)\n});\nconst ragDeleteWorkspaceOperationSchema = ragDeleteWorkspaceParamsSchema.extend({\n type: z.literal('rag'),\n operation: z.literal('deleteWorkspace')\n});\n// ============== Unified Request Schema ==============\n// `requestId` is threaded onto every RAG operation as an optional field so\n// the request registry can correlate the in-flight context with the\n// client-side decorated-promise (`op.requestId`). Optional on the wire\n// so legacy clients keep working — the server falls back to a\n// server-generated id when the field is missing.\nconst ragRequestIdField = {\n requestId: z.string().min(1).optional()\n};\nexport const ragRequestSchema = z.discriminatedUnion('operation', [\n ragChunkOperationSchema.extend(ragRequestIdField),\n ragIngestOperationSchema.extend(ragRequestIdField),\n ragSaveEmbeddingsOperationSchema.extend(ragRequestIdField),\n ragSearchOperationSchema.extend(ragRequestIdField),\n ragDeleteEmbeddingsOperationSchema.extend(ragRequestIdField),\n ragReindexOperationSchema.extend(ragRequestIdField),\n ragListWorkspacesOperationSchema.extend(ragRequestIdField),\n ragCloseWorkspaceOperationSchema.extend(ragRequestIdField),\n ragDeleteWorkspaceOperationSchema.extend(ragRequestIdField)\n]);\n// ============== Response Schemas ==============\nconst ragResponseBaseSchema = z.object({\n type: z.literal('rag'),\n success: z.boolean(),\n error: z.string().optional()\n});\nconst ragChunkResponseSchema = ragResponseBaseSchema.extend({\n operation: z.literal('chunk'),\n chunks: z.array(docSchema)\n});\nconst ragIngestResponseSchema = ragResponseBaseSchema.extend({\n operation: z.literal('ingest'),\n processed: z.array(saveEmbeddingsResultSchema),\n droppedIndices: z.array(z.number())\n});\nconst ragSaveEmbeddingsResponseSchema = ragResponseBaseSchema.extend({\n operation: z.literal('saveEmbeddings'),\n processed: z.array(saveEmbeddingsResultSchema)\n});\nconst ragSearchResponseSchema = ragResponseBaseSchema.extend({\n operation: z.literal('search'),\n results: z.array(searchResultSchema)\n});\nconst ragDeleteEmbeddingsResponseSchema = ragResponseBaseSchema.extend({\n operation: z.literal('deleteEmbeddings')\n});\nconst ragReindexResponseSchema = ragResponseBaseSchema.extend({\n operation: z.literal('reindex'),\n result: reindexResultSchema\n});\nconst ragWorkspaceInfoSchema = z.object({\n name: z.string(),\n open: z.boolean()\n});\nconst ragListWorkspacesResponseSchema = ragResponseBaseSchema.extend({\n operation: z.literal('listWorkspaces'),\n workspaces: z.array(ragWorkspaceInfoSchema)\n});\nconst ragCloseWorkspaceResponseSchema = ragResponseBaseSchema.extend({\n operation: z.literal('closeWorkspace')\n});\nconst ragDeleteWorkspaceResponseSchema = ragResponseBaseSchema.extend({\n operation: z.literal('deleteWorkspace')\n});\nexport const ragResponseSchema = z.discriminatedUnion('operation', [\n ragChunkResponseSchema,\n ragIngestResponseSchema,\n ragSaveEmbeddingsResponseSchema,\n ragSearchResponseSchema,\n ragDeleteEmbeddingsResponseSchema,\n ragReindexResponseSchema,\n ragListWorkspacesResponseSchema,\n ragCloseWorkspaceResponseSchema,\n ragDeleteWorkspaceResponseSchema\n]);\n// ============== Progress Update Schema ==============\nexport const ragProgressUpdateSchema = z.object({\n type: z.literal('rag:progress'),\n operation: z.enum(['ingest', 'saveEmbeddings', 'reindex']),\n workspace: z.string(),\n stage: z.string(),\n current: z.number(),\n total: z.number(),\n timestamp: z.number()\n});\nimport { z } from 'zod';\nimport { ModelType } from './model-types.js';\n// QVAC Model Registry entry schema matching the RegistryItem from models/registry/models.ts\nconst modelRegistryEntryAddonSchema = z.enum([\n 'llm',\n 'whisper',\n 'bci',\n 'embeddings',\n 'nmt',\n 'vad',\n 'tts',\n 'ocr',\n 'parakeet',\n 'diffusion',\n 'vla',\n 'classification',\n 'other'\n]);\n// Canonical engine names derived from ModelType (schemas/model-types.ts) plus\n// registry-only engines not present in ModelType.\n// Values reference ModelType.* directly to avoid string duplication.\n// The SDK resolves legacy engine names (e.g. @qvac/* package names) to canonical\n// form via schemas/engine-addon-map.ts.\nexport const modelRegistryEngineSchema = z.enum([\n ModelType.llamacppCompletion,\n ModelType.whispercppTranscription,\n ModelType.bciWhispercppTranscription,\n ModelType.llamacppEmbedding,\n ModelType.nmtcppTranslation,\n ModelType.onnxTts,\n ModelType.ttsGgml,\n ModelType.ggmlOcr,\n ModelType.parakeetTranscription,\n ModelType.sdcppGeneration,\n ModelType.ggmlVla,\n ModelType.ggmlClassification,\n 'onnx-vad'\n]);\nexport const modelRegistryEntrySchema = z.object({\n name: z.string().describe('Catalog name of the model entry.'),\n registryPath: z.string().describe('Registry-relative path to the model.'),\n registrySource: z.string().describe('Registry source identifier, e.g. `huggingface`.'),\n blobCoreKey: z.string().describe('Hyperdrive blob core key for the model file.'),\n blobBlockOffset: z.number().describe('Starting block offset of the model file in the blob.'),\n blobBlockLength: z.number().describe('Number of blocks occupied by the model file.'),\n blobByteOffset: z.number().describe('Starting byte offset of the model file within its block.'),\n modelId: z.string().describe('Unique identifier used to reference the model in SDK calls.'),\n addon: modelRegistryEntryAddonSchema.describe('Inference addon / capability category this model belongs to.'),\n expectedSize: z.number().describe('Expected total size of the model file in bytes.'),\n sha256Checksum: z.string().describe('Expected SHA-256 checksum of the model file.'),\n engine: modelRegistryEngineSchema.describe('Canonical inference engine identifier.'),\n quantization: z.string().describe('Quantization identifier, e.g. `Q4_K_M`.'),\n params: z.string().describe('Parameter-count label for the model, e.g. `7B`.')\n});\n// QVAC Model Registry list request/response\nexport const modelRegistryListRequestSchema = z.object({\n type: z.literal('modelRegistryList')\n});\nexport const modelRegistryListResponseSchema = z.object({\n type: z.literal('modelRegistryList'),\n success: z.boolean(),\n models: z.array(modelRegistryEntrySchema).optional(),\n error: z.string().optional()\n});\n// QVAC Model Registry search request/response\nexport const modelRegistrySearchRequestSchema = z.object({\n type: z.literal('modelRegistrySearch'),\n filter: z.string().optional(),\n engine: z.string().optional(),\n quantization: z.string().optional(),\n addon: modelRegistryEntryAddonSchema.optional()\n});\nexport const modelRegistrySearchResponseSchema = z.object({\n type: z.literal('modelRegistrySearch'),\n success: z.boolean(),\n models: z.array(modelRegistryEntrySchema).optional(),\n error: z.string().optional()\n});\n// QVAC Model Registry get model request/response\nexport const modelRegistryGetModelRequestSchema = z.object({\n type: z.literal('modelRegistryGetModel'),\n registryPath: z.string(),\n registrySource: z.string()\n});\nexport const modelRegistryGetModelResponseSchema = z.object({\n type: z.literal('modelRegistryGetModel'),\n success: z.boolean(),\n model: modelRegistryEntrySchema.optional(),\n error: z.string().optional()\n});\n// Combined QVAC Model Registry request union\nexport const modelRegistryRequestSchema = z.union([\n modelRegistryListRequestSchema,\n modelRegistrySearchRequestSchema,\n modelRegistryGetModelRequestSchema\n]);\n// Combined QVAC Model Registry response union\nexport const modelRegistryResponseSchema = z.discriminatedUnion('type', [\n modelRegistryListResponseSchema,\n modelRegistrySearchResponseSchema,\n modelRegistryGetModelResponseSchema\n]);\nimport { z } from 'zod';\nimport { whisperConfigSchema } from './transcription-config.js';\nimport { whisperModelTypeSchema } from './model-types.js';\nexport const modelIdSchema = z.string().regex(/^[0-9a-f]{16}$/, 'Invalid modelId format');\nexport const reloadConfigOptionsSchema = z.union([\n z.object({\n modelId: modelIdSchema,\n modelType: whisperModelTypeSchema,\n modelConfig: whisperConfigSchema.partial().strict()\n })\n]);\nexport const reloadConfigOptionsToRequestSchema = z.union([\n z\n .object({\n modelId: modelIdSchema,\n modelType: whisperModelTypeSchema,\n modelConfig: whisperConfigSchema.partial().strict()\n })\n .transform((data) => ({\n type: 'loadModel',\n modelId: data.modelId,\n modelType: data.modelType,\n modelConfig: data.modelConfig\n }))\n]);\nconst reloadConfigRequestBaseSchema = z.object({\n type: z.literal('loadModel'),\n modelId: modelIdSchema,\n // Explicitly exclude load-specific fields for type narrowing\n modelSrc: z.never().optional(),\n withProgress: z.never().optional(),\n delegate: z.never().optional(),\n seed: z.never().optional()\n});\nexport const reloadConfigWhisperRequestSchema = reloadConfigRequestBaseSchema.extend({\n modelType: whisperModelTypeSchema,\n modelConfig: whisperConfigSchema.partial()\n});\n// Using z.union since modelType accepts multiple values\nexport const reloadConfigRequestSchema = z\n .union([reloadConfigWhisperRequestSchema])\n .meta({ title: 'ReloadConfigRequest' });\nimport { z } from 'zod';\nexport const resumeRequestSchema = z.object({\n type: z.literal('resume')\n});\nexport const resumeResponseSchema = z.object({\n type: z.literal('resume')\n});\nimport { z } from 'zod';\nexport const runtimeContextSchema = z.object({\n runtime: z.enum(['node', 'bare', 'react-native']).optional(),\n platform: z.enum(['android', 'ios', 'darwin', 'linux', 'win32']).optional(),\n deviceModel: z.string().optional(),\n deviceBrand: z.string().optional()\n});\nimport { z } from 'zod';\nimport { modelSrcInputSchema } from './model-src-utils.js';\nconst BASE64_PATTERN = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\nconst ABSOLUTE_PATH_PATTERN = /^(\\/|[A-Za-z]:[\\\\/]|\\\\\\\\)/;\nconst base64StringSchema = z.string().min(1).regex(BASE64_PATTERN);\nconst samplingMethodSchema = z.enum([\n 'euler',\n 'euler_a',\n 'heun',\n 'dpm2',\n 'dpm++2m',\n 'dpm++2mv2',\n 'dpm++2s_a',\n 'lcm',\n 'ipndm',\n 'ipndm_v',\n 'ddim_trailing',\n 'tcd',\n 'res_multistep',\n 'res_2s'\n]);\nconst scheduleTypeSchema = z.enum([\n 'discrete',\n 'karras',\n 'exponential',\n 'ays',\n 'gits',\n 'sgm_uniform',\n 'simple',\n 'lcm',\n 'smoothstep',\n 'kl_optimal',\n 'bong_tangent'\n]);\nconst cacheModeSchema = z.enum([\n 'disabled',\n 'easycache',\n 'ucache',\n 'dbcache',\n 'taylorseer',\n 'cache-dit'\n]);\nexport const sdcppConfigSchema = z.object({\n mode: z\n .enum(['diffusion', 'upscale', 'video'])\n .default('diffusion')\n .describe('Operation mode for the diffusion plugin. ' +\n \"`'diffusion'` (default) builds a full SD / SDXL / SD3 / FLUX pipeline from \" +\n 'the primary model plus optional auxiliary text encoders, VAE, unconditional ' +\n 'diffusion model, and ESRGAN ' +\n 'upscaler, and exposes diffusion({ ... }). ' +\n \"`'upscale'` builds a standalone ESRGAN upscaler from the primary model \" +\n 'file alone (auxiliary model sources are ignored) and exposes upscale({ ... }). ' +\n \"`'video'` builds a `VideoStableDiffusion` pipeline and exposes video({ ... }). \" +\n 'The video layout is selected from the auxiliary sources: supplying ' +\n '`embeddingsConnectorsModelSrc` loads the LTX-2 layout (Gemma text encoder ' +\n 'via `llmModelSrc` + video VAE + connectors, optional `audioVaeModelSrc` for ' +\n 'synchronized audio); otherwise the Wan layout is used (UMT5 text encoder ' +\n 'via `t5XxlModelSrc` + VAE). ' +\n 'On React Native, loading the video model on-device will likely fail ' +\n 'because the video diffusion models currently ' +\n 'shipped by the SDK are too large to load on typical mobile devices; ' +\n 'pass a `delegate` to `loadModel(...)` to run generation on a desktop peer instead.'),\n threads: z.number().optional(),\n device: z.enum(['gpu', 'cpu']).optional(),\n 'main-gpu': z\n .union([z.number().int().min(0), z.enum(['integrated', 'dedicated'])])\n .optional()\n .describe('GPU to pin when `device` is \"gpu\": a GPU-device index, \"integrated\", or ' +\n '\"dedicated\" (the discrete GPU with the most VRAM). Omit to let the ' +\n 'backend choose the first enumerated device. Resolved against the ' +\n \"addon's own ggml device enumeration, so it cannot desync from the \" +\n 'device list the backend actually uses. If an explicit request cannot ' +\n 'be satisfied (e.g. \"integrated\" with no integrated GPU, \"dedicated\" ' +\n 'with no discrete GPU, or an out-of-range index) the addon falls back ' +\n 'to CPU rather than substituting a different GPU. Stripped on mobile ' +\n '(single-GPU devices).'),\n prediction: z\n .enum(['auto', 'eps', 'v', 'edm_v', 'flow', 'flux2_flow'])\n .optional()\n .describe('Prediction type; auto-detected from model when omitted'),\n type: z\n .enum([\n 'auto',\n 'f32',\n 'f16',\n 'bf16',\n 'q2_k',\n 'q3_k',\n 'q4_0',\n 'q4_1',\n 'q4_k',\n 'q5_0',\n 'q5_1',\n 'q5_k',\n 'q6_k',\n 'q8_0'\n ])\n .optional()\n .describe('Weight quantization type override; auto-detected when omitted'),\n rng: z.enum(['cpu', 'cuda', 'std_default']).optional(),\n sampler_rng: z.enum(['cpu', 'cuda', 'std_default']).optional(),\n clip_on_cpu: z.boolean().optional().describe('Force CLIP text encoder to run on CPU'),\n vae_on_cpu: z.boolean().optional().describe('Force VAE decoder to run on CPU'),\n vae_tiling: z.boolean().optional().describe('Enable VAE tiling for large images on limited VRAM'),\n offload_to_cpu: z\n .boolean()\n .optional()\n .describe('Keep model weights in CPU memory and offload them during GPU compute'),\n flash_attn: z.boolean().optional().describe('Enable flash attention to reduce memory usage'),\n diffusion_fa: z\n .boolean()\n .optional()\n .describe('Enable flash attention for the diffusion transformer only'),\n lora_apply_mode: z\n .enum(['auto', 'immediately', 'at_runtime'])\n .optional()\n .describe('How LoRA adapters passed via diffusion({ lora }) are applied. ' +\n \"'auto' (default): picked based on weight type — 'at_runtime' for \" +\n \"quantized weights, 'immediately' for full-precision. \" +\n \"'immediately': adapter is fused into the model on first use and \" +\n 'persists across subsequent diffusion() calls until the model is ' +\n 'unloaded. ' +\n \"'at_runtime': adapter is applied per-call and not persisted.\"),\n verbosity: z.number().optional(),\n clipLModelSrc: modelSrcInputSchema\n .optional()\n .describe('CLIP-L text encoder model — required for SD3'),\n clipGModelSrc: modelSrcInputSchema\n .optional()\n .describe('CLIP-G text encoder model — required for SDXL and SD3'),\n t5XxlModelSrc: modelSrcInputSchema\n .optional()\n .describe('T5-XXL text encoder model — required for SD3'),\n llmModelSrc: modelSrcInputSchema\n .optional()\n .describe('LLM text encoder model — required for FLUX.2 [klein] (Qwen3), ' +\n 'Ideogram 4 (Qwen3-VL), and LTX-2 video (Gemma).'),\n vaeModelSrc: modelSrcInputSchema\n .optional()\n .describe('VAE decoder model — required for FLUX.2 [klein], Ideogram 4, and ' +\n 'LTX-2 video (video VAE); optional for SDXL.'),\n highNoiseDiffusionModelSrc: modelSrcInputSchema\n .optional()\n .describe('High-noise diffusion expert — required for Wan 2.2 mixture-of-experts video models'),\n uncondModelSrc: modelSrcInputSchema\n .optional()\n .describe('Unconditional diffusion model — Ideogram 4 only. Requires diffusion mode, ' +\n 'llmModelSrc (Qwen3-VL), vaeModelSrc, and a JSON-serialized structured ' +\n 'caption with explicit bounding boxes as the generation prompt. Plain-text ' +\n \"prompts produce degenerate output or the model's placeholder response.\"),\n clipVisionModelSrc: modelSrcInputSchema\n .optional()\n .describe('OpenCLIP ViT-H/14 weights (`clip_vision_h.safetensors`). Required for ' +\n 'Wan image-to-video (`img2vid`); omit for text-to-video-only pipelines. ' +\n 'Not used by LTX-2 (its img2vid path needs no CLIP-vision projection).'),\n audioVaeModelSrc: modelSrcInputSchema\n .optional()\n .describe('Audio VAE decoder model — LTX-2 video only. Enables the synchronized ' +\n '48 kHz audio track muxed into the output AVI; omit for silent video. ' +\n 'Ignored by the Wan layout.'),\n embeddingsConnectorsModelSrc: modelSrcInputSchema\n .optional()\n .describe('Text-embedding connector weights — required for LTX-2 video. Its ' +\n 'presence selects the LTX-2 video layout (Gemma text encoder via ' +\n '`llmModelSrc` + video VAE via `vaeModelSrc` + these connectors) instead ' +\n 'of the Wan layout.'),\n upscaler: z\n .object({\n type: z\n .literal('esrgan')\n .optional()\n .describe('Type of upscaler to use for post-generation upscaling when requested in diffusion({ upscale }).'),\n model_src: modelSrcInputSchema\n .optional()\n .describe('ESRGAN upscaler model (e.g. RealESRGAN_x4plus_anime_6B.pth). ' +\n 'Required in diffusion mode when this `upscaler` block is set — ' +\n 'configures the post-generation upscaler invoked via diffusion({ upscale }). ' +\n \"In `mode: 'upscale'` the primary modelSrc itself is the ESRGAN model, \" +\n 'so this field is ignored.'),\n tile_size: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('ESRGAN upscaler tile size in pixels. Smaller tiles use less VRAM ' +\n 'at the cost of more passes.'),\n direct: z\n .boolean()\n .optional()\n .describe('Use direct convolution in the ESRGAN upscaler instead of im2col + ' +\n 'GEMM. Faster on some backends, slower on others.'),\n offload_params_to_cpu: z\n .boolean()\n .optional()\n .describe('Keep ESRGAN upscaler weights on CPU and offload them during compute. ' +\n 'Trades latency for VRAM headroom on memory-constrained GPUs.'),\n threads: z\n .union([z.literal(-1), z.number().int().positive()])\n .optional()\n .describe('Number of CPU threads dedicated to the ESRGAN upscaler. -1 = auto.')\n })\n .strict()\n .optional()\n .describe('ESRGAN upscaler configuration. In diffusion mode this enables the ' +\n 'post-generation upscale path invoked via diffusion({ upscale }) and ' +\n \"requires `model_src`. In `mode: 'upscale'` only the tuning fields \" +\n '(tile_size, direct, offload_params_to_cpu, threads) are honored — ' +\n 'the primary modelSrc IS the ESRGAN model in that mode and ' +\n \"`model_src` here is ignored. In `mode: 'video'` the entire `upscaler` \" +\n 'object is ignored. Mode-dependent constraints (e.g. `model_src` ' +\n 'required in diffusion mode) are enforced by the sdcpp-generation ' +\n 'plugin at load time, not at the schema layer.')\n});\nexport const diffusionStatsSchema = z.object({\n modelLoadMs: z\n .number()\n .optional()\n .describe('Time in milliseconds spent loading the diffusion model.'),\n generationMs: z\n .number()\n .optional()\n .describe('Wall-clock time in milliseconds spent generating the output.'),\n conditionerMs: z\n .number()\n .optional()\n .describe('Time in milliseconds spent conditioning the prompt before denoising.'),\n denoiseMs: z\n .number()\n .optional()\n .describe('Time in milliseconds spent in the diffusion denoising loop.'),\n vaeMs: z\n .number()\n .optional()\n .describe('Time in milliseconds spent decoding diffusion latents with the VAE.'),\n postProcessMs: z\n .number()\n .optional()\n .describe('Time in milliseconds spent encoding, upscaling, muxing, and emitting outputs.'),\n stepsPerSecond: z\n .number()\n .optional()\n .describe('Diffusion denoising throughput in sampling steps per second.'),\n totalGenerationMs: z\n .number()\n .optional()\n .describe('Total generation time in milliseconds across all images in the batch.'),\n totalWallMs: z\n .number()\n .optional()\n .describe('Total wall-clock time in milliseconds including model load and sampling.'),\n totalSteps: z.number().optional().describe('Total number of diffusion sampling steps executed.'),\n totalGenerations: z.number().optional().describe('Total number of generation passes executed.'),\n totalImages: z.number().optional().describe('Total number of images produced.'),\n totalPixels: z\n .number()\n .optional()\n .describe('Total number of pixels generated across all images.'),\n width: z.number().optional().describe('Width in pixels of each generated image.'),\n height: z.number().optional().describe('Height in pixels of each generated image.'),\n seed: z\n .number()\n .optional()\n .describe('Seed that produced these outputs (randomized when not supplied by the caller).')\n});\nexport const videoStatsSchema = diffusionStatsSchema\n .pick({\n modelLoadMs: true,\n generationMs: true,\n conditionerMs: true,\n denoiseMs: true,\n vaeMs: true,\n postProcessMs: true,\n stepsPerSecond: true,\n totalGenerationMs: true,\n totalWallMs: true,\n totalSteps: true,\n totalGenerations: true,\n totalImages: true,\n totalPixels: true,\n width: true,\n height: true,\n seed: true\n})\n .extend({\n totalVideos: z.number().optional().describe('Total number of videos produced.'),\n totalVideoFrames: z.number().optional().describe('Total number of video frames produced.'),\n videoFrames: z.number().optional().describe('Frame count of the most recent generated video.'),\n fps: z\n .number()\n .optional()\n .describe('Frames-per-second metadata for the most recent generated video.'),\n hasAudio: z\n .boolean()\n .optional()\n .describe('True when the output AVI includes a muxed audio track (LTX-2 loaded ' +\n 'with audioVaeModelSrc), false otherwise.'),\n audioSampleRate: z\n .number()\n .optional()\n .describe('Sample rate (Hz) of the muxed audio track; 0 when there is no audio.')\n});\nexport const diffusionStreamResponseSchema = z.object({\n type: z.literal('diffusionStream'),\n step: z.number().optional(),\n totalSteps: z.number().optional(),\n elapsedMs: z.number().optional(),\n data: z.string().optional(),\n outputIndex: z.number().optional(),\n done: z.boolean().optional(),\n stats: diffusionStatsSchema.optional()\n});\nexport const videoStreamResponseSchema = z.object({\n type: z.literal('videoStream'),\n step: z.number().optional(),\n totalSteps: z.number().optional(),\n elapsedMs: z.number().optional(),\n data: z.string().optional(),\n outputIndex: z.number().optional(),\n done: z.boolean().optional(),\n stats: videoStatsSchema.optional()\n});\nexport const diffusionRequestSchema = z\n .object({\n modelId: z.string().describe('The identifier of the diffusion model to use for generation.'),\n prompt: z.string().describe('Positive prompt describing the image to generate.'),\n negative_prompt: z\n .string()\n .optional()\n .describe('Optional negative prompt describing what to avoid.'),\n width: z\n .number()\n .int()\n .positive()\n .multipleOf(8)\n .optional()\n .describe('Image width in pixels (must be a multiple of 8).'),\n height: z\n .number()\n .int()\n .positive()\n .multipleOf(8)\n .optional()\n .describe('Image height in pixels (must be a multiple of 8).'),\n steps: z.number().int().positive().optional().describe('Number of sampling steps to run.'),\n cfg_scale: z\n .number()\n .optional()\n .describe('Classifier-free guidance scale for SD 1.x / 2.x / XL / SD3 models; typical range 1–20, default 7'),\n img_cfg_scale: z\n .number()\n .default(-1)\n .describe('Image CFG scale for img2img/inpaint workflows where the image and prompt should have different guidance weights; defaults to -1 which reuses cfg_scale'),\n guidance: z\n .number()\n .optional()\n .describe('Distilled guidance for FLUX models; typical range 1–10, default 3.5'),\n sampling_method: samplingMethodSchema\n .optional()\n .describe('Sampling algorithm used by the diffusion scheduler.'),\n scheduler: scheduleTypeSchema.optional().describe('Noise schedule to apply when sampling.'),\n seed: z\n .number()\n .int()\n .optional()\n .describe('Random seed; when omitted the SDK picks one and returns it in stats.'),\n batch_count: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Number of images to generate in this call.'),\n vae_tiling: z\n .boolean()\n .optional()\n .describe('Enable VAE tiling for large images on constrained VRAM (overrides model config).'),\n cache_preset: z\n .string()\n .optional()\n .describe('Optional name of a cached sampler preset to reuse.'),\n init_image: base64StringSchema\n .optional()\n .describe('Base64-encoded image for img2img generation. Mutually exclusive with init_images.'),\n init_images: z\n .array(base64StringSchema)\n .min(1)\n .optional()\n .describe('FLUX.2-only multi-reference fusion: array of base64-encoded PNG/JPEG buffers. ' +\n 'Each buffer becomes a separate reference image that the FLUX.2 transformer attends to. ' +\n 'Mutually exclusive with init_image; requires the model to be loaded with ' +\n \"config.prediction='flux2_flow' and a Qwen3 text encoder via llmModelSrc.\"),\n increase_ref_index: z\n .boolean()\n .optional()\n .describe('FLUX.2 fusion only. When omitted, the addon default (false) is used. When false, all ' +\n 'reference latents share one RoPE index slot and blend via attention (recommended for ' +\n 'FLUX.2-klein). When true, each reference gets its own RoPE index slot — use only with ' +\n 'text encoders that receive per-image vision tokens.'),\n auto_resize_ref_image: z\n .boolean()\n .optional()\n .describe('FLUX.2 only. When omitted, the addon default (true) is used. When true, every reference ' +\n 'image (single or fusion) is auto-resized to the target width/height before VAE-encoding. ' +\n 'Disable only if the buffers are already at the exact target dimensions.'),\n lora: z\n .string()\n .min(1)\n .regex(ABSOLUTE_PATH_PATTERN, {\n message: 'lora must be an absolute path'\n })\n .optional()\n .describe('Optional local LoRA adapter path to apply for this generation. ' +\n 'Must be an absolute filesystem path. ' +\n 'Whether the adapter persists across subsequent diffusion() calls is controlled ' +\n 'by sdcppConfigSchema.lora_apply_mode (set at loadModel time).'),\n strength: z\n .number()\n .min(0)\n .max(1)\n .optional()\n .describe('img2img denoising strength (0.0 = keep source, 1.0 = ignore source); used by the SD/SDXL SDEdit path. No-op for FLUX.2, which uses in-context conditioning and ignores this field.'),\n upscale: z\n .union([\n z.boolean(),\n z\n .object({\n repeats: z.number().int().positive().optional()\n })\n .strict()\n ])\n .optional()\n .describe('Post-generation ESRGAN upscale. ' +\n '`true` (or `{}` / `{ repeats: 1 }`) runs a single upscale pass at the ' +\n \"model's native scale factor (e.g. x4 for RealESRGAN_x4plus). \" +\n '`false` is a no-op (same as omitting the field). ' +\n '`{ repeats: N }` runs the upscaler N times sequentially — each pass ' +\n \"multiplies the output dimensions by the model's scale factor. When \" +\n '`batch_count > 1`, every output image is upscaled independently. ' +\n 'Requires the model to be loaded with `upscaler.model_src` set in modelConfig.')\n})\n .refine((d) => d.init_image === undefined || d.init_images === undefined, {\n message: 'init_image and init_images are mutually exclusive — pass one or the other, not both.'\n});\nexport const diffusionStreamRequestSchema = diffusionRequestSchema.extend({\n type: z.literal('diffusionStream')\n});\nconst videoGenerationBaseSchema = z.object({\n modelId: z\n .string()\n .describe('The identifier of the loaded video model to use for generation. ' +\n 'On React Native, prefer a `modelId` loaded with a `delegate` because ' +\n 'the video diffusion models currently shipped by the SDK are too ' +\n 'large to load on typical mobile devices.'),\n requestId: z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight video generation. Optional on the wire — the server falls back to a server-generated id when the field is missing.'),\n prompt: z.string().describe('Positive prompt describing the video to generate.'),\n negative_prompt: z\n .string()\n .optional()\n .describe('Optional negative prompt describing what to avoid.'),\n width: z\n .number()\n .int()\n .positive()\n .multipleOf(16)\n .optional()\n .describe('Video width in pixels (must be a multiple of 16). LTX-2 additionally ' +\n 'requires a multiple of 32, validated against the loaded model before generation.'),\n height: z\n .number()\n .int()\n .positive()\n .multipleOf(16)\n .optional()\n .describe('Video height in pixels (must be a multiple of 16). LTX-2 additionally ' +\n 'requires a multiple of 32, validated against the loaded model before generation.'),\n video_frames: z\n .number()\n .int()\n .refine((value) => value >= 5 && (value - 1) % 4 === 0, {\n message: 'video_frames must be an integer >= 5 of the form (4*k + 1)'\n })\n .optional()\n .describe('Frame count for the generated video; must satisfy (4*k + 1), where k>=1. ' +\n 'LTX-2 additionally requires the stricter (8*k + 1) with a max of 257, ' +\n 'validated against the loaded model before generation.'),\n fps: z\n .number()\n .positive()\n .max(120)\n .optional()\n .describe('AVI framerate metadata in frames per second; must be in (0, 120].'),\n seed: z\n .number()\n .int()\n .optional()\n .describe('Random seed; when omitted the SDK picks one and returns it in stats.'),\n steps: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Low-noise or single-expert denoising step count.'),\n sampling_method: samplingMethodSchema\n .optional()\n .describe('Sampling algorithm used by the low-noise diffusion scheduler.'),\n scheduler: scheduleTypeSchema\n .optional()\n .describe('Noise schedule to apply for the low-noise diffusion path.'),\n cfg_scale: z.number().optional().describe('Classifier-free guidance scale.'),\n flow_shift: z.number().optional().describe('Per-request flow-matching guidance shift override.'),\n high_noise_steps: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Wan 2.2 high-noise expert step count.'),\n high_noise_sampler: samplingMethodSchema\n .optional()\n .describe('Wan 2.2 high-noise expert sampler.'),\n high_noise_scheduler: scheduleTypeSchema\n .optional()\n .describe('Wan 2.2 high-noise expert scheduler.'),\n high_noise_cfg_scale: z.number().optional().describe('Wan 2.2 high-noise expert CFG scale.'),\n high_noise_flow_shift: z\n .number()\n .optional()\n .describe('Wan 2.2 high-noise expert flow shift override.'),\n moe_boundary: z\n .number()\n .min(0)\n .max(1)\n .optional()\n .describe('Wan 2.2 mixture-of-experts boundary in [0, 1].'),\n vace_strength: z.number().min(0).max(1).optional().describe('Control-frame guidance strength.'),\n control_frames: z\n .array(base64StringSchema)\n .min(1)\n .optional()\n .describe('Optional array of base64-encoded control-frame images.'),\n vae_tiling: z\n .boolean()\n .optional()\n .describe('Enable VAE tiling for large videos on constrained VRAM.'),\n vae_tile_size: z\n .union([z.number().positive(), z.string().min(1)])\n .optional()\n .describe('VAE tile size override.'),\n vae_tile_overlap: z.number().optional().describe('VAE tile overlap override.'),\n temporal_tiling: z\n .boolean()\n .optional()\n .describe('LTX-2 only: tile the video VAE decode along the time axis to cap peak ' +\n 'VRAM for HD / long clips. No effect on Wan (spatial-only VAE).'),\n cache_mode: cacheModeSchema.optional().describe('Step-caching algorithm.'),\n cache_preset: z\n .string()\n .optional()\n .describe('Optional name of a cached sampler preset to reuse.'),\n cache_threshold: z.number().optional().describe('Direct cache reuse threshold override.')\n});\n// Single wire object with mode-dependent rules expressed via a shared refine.\n// Keeping the wire schema a plain object (instead of a discriminated union)\n// lets the client builder construct the request without an `as` cast that\n// would otherwise disable field-level type-checking. The compile-time\n// \"img2vid requires init_image\" guarantee lives on the client-facing\n// discriminated union types below.\nconst videoRequestObjectSchema = videoGenerationBaseSchema.extend({\n mode: z\n .enum(['txt2vid', 'img2vid'])\n .describe(\"Generation mode: 'txt2vid' (no source frame) or 'img2vid' (first-frame image).\"),\n init_image: base64StringSchema\n .optional()\n .describe('Base64-encoded first-frame image (PNG/JPEG). Required for img2vid; rejected for txt2vid.'),\n strength: z\n .number()\n .min(0)\n .max(1)\n .optional()\n .describe('img2vid denoise strength in [0, 1]; rejected for txt2vid.')\n});\nfunction refineVideoMode(data, ctx) {\n if (data.mode === 'img2vid' && data.init_image === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['init_image'],\n message: \"init_image is required when mode is 'img2vid'.\"\n });\n }\n if (data.mode === 'txt2vid') {\n if (data.init_image !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['init_image'],\n message: 'init_image is only valid for img2vid.'\n });\n }\n if (data.strength !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['strength'],\n message: 'strength is only valid for img2vid.'\n });\n }\n }\n}\nexport const videoRequestSchema = videoRequestObjectSchema.superRefine(refineVideoMode);\nfunction refineLtxVideoRequest(data, ctx) {\n if (data.width !== undefined && data.width % 32 !== 0) {\n ctx.addIssue({\n code: 'custom',\n path: ['width'],\n message: 'LTX-2 width must be a multiple of 32.'\n });\n }\n if (data.height !== undefined && data.height % 32 !== 0) {\n ctx.addIssue({\n code: 'custom',\n path: ['height'],\n message: 'LTX-2 height must be a multiple of 32.'\n });\n }\n if (data.video_frames !== undefined &&\n (data.video_frames > 257 || (data.video_frames - 1) % 8 !== 0)) {\n ctx.addIssue({\n code: 'custom',\n path: ['video_frames'],\n message: 'LTX-2 video_frames must be at most 257 and satisfy (8*k + 1), where k>=1.'\n });\n }\n}\nexport const ltxVideoRequestSchema = videoRequestSchema.superRefine(refineLtxVideoRequest);\nexport const videoStreamRequestSchema = videoRequestObjectSchema\n .extend({ type: z.literal('videoStream') })\n .superRefine(refineVideoMode);\n// ============================================\n// Standalone ESRGAN upscale (mode: \"upscale\")\n// ============================================\nexport const upscaleStatsSchema = z.object({\n modelLoadMs: z\n .number()\n .optional()\n .describe('Wall-clock time in milliseconds spent loading the upscaler model.'),\n upscaleMs: z\n .number()\n .optional()\n .describe('Wall-clock time in milliseconds for the most recent upscale job.'),\n totalUpscaleMs: z\n .number()\n .optional()\n .describe('Cumulative upscale time in milliseconds across all jobs.'),\n totalWallMs: z\n .number()\n .optional()\n .describe('Total wall-clock time in milliseconds including model load and upscaling.'),\n totalUpscales: z.number().optional().describe('Cumulative number of upscale calls.'),\n totalImages: z.number().optional().describe('Cumulative number of images produced.'),\n totalPixels: z\n .number()\n .optional()\n .describe('Cumulative number of pixels produced across all images.'),\n width: z.number().optional().describe('Width of the most recent emitted PNG.'),\n height: z.number().optional().describe('Height of the most recent emitted PNG.'),\n repeats: z\n .number()\n .optional()\n .describe('Number of ESRGAN passes used by the most recent upscale job.'),\n backendDevice: z\n .enum(['cpu', 'gpu'])\n .optional()\n .describe('Actual compute device used by the ESRGAN upscaler. ' +\n 'Reflects the backend stable-diffusion.cpp selected (e.g. Android `gpu` ' +\n 'falls back to `cpu` because the mobile GPU/OpenCL path is unstable).')\n});\nexport const upscaleRequestSchema = z.object({\n modelId: z\n .string()\n .describe('Identifier of the loaded upscaler model. The model must have been loaded ' +\n \"with `modelType: 'diffusion'` and `modelConfig.mode: 'upscale'`.\"),\n image: z\n .string()\n .min(1)\n .regex(BASE64_PATTERN)\n .describe('Base64-encoded PNG/JPEG bytes of the source image.'),\n repeats: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Number of ESRGAN passes to run sequentially. Each pass multiplies ' +\n \"dimensions by the model's native scale factor; only the final image \" +\n 'is emitted (`outputs.length === 1`). Defaults to 1.')\n});\nexport const upscaleStreamRequestSchema = upscaleRequestSchema.extend({\n type: z.literal('upscaleStream')\n});\nexport const upscaleStreamResponseSchema = z.object({\n type: z.literal('upscaleStream'),\n data: z.string().optional(),\n outputIndex: z.number().optional(),\n done: z.boolean().optional(),\n stats: upscaleStatsSchema.optional()\n});\nimport { z } from 'zod';\nimport { logLevelSchema } from './logging-stream.js';\nimport { ModelType } from './model-types.js';\nimport { llmConfigBaseSchema, embedConfigBaseSchema } from './llamacpp-config.js';\nimport { whisperConfigSchema, parakeetConfigSchema } from './transcription-config.js';\nimport { ocrConfigSchema } from './ocr.js';\nimport { sdcppConfigSchema } from './sdcpp-config.js';\nimport { vlaConfigSchema } from './vla.js';\nimport { runtimeContextSchema } from './runtime-context.js';\n// Alias keys for user convenience (maps to canonical types)\nconst AliasKeys = {\n llm: 'llm',\n whisper: 'whisper',\n embeddings: 'embeddings',\n nmt: 'nmt',\n parakeet: 'parakeet',\n tts: 'tts',\n ocr: 'ocr',\n diffusion: 'diffusion',\n vla: 'vla'\n};\n/**\n * Device match criteria for device-specific config defaults.\n * All specified criteria must match (AND logic).\n */\nexport const deviceMatchSchema = z.object({\n /** Platform to match: \"android\" or \"ios\" */\n platform: runtimeContextSchema.shape.platform,\n /** Device brand to match (case-insensitive exact match, e.g., \"google\", \"samsung\") */\n deviceBrand: z.string().optional(),\n /** Device model prefix to match (e.g., \"Pixel 10\" matches \"Pixel 10 Pro\") */\n deviceModelPrefix: z.string().optional(),\n /** Device model substring to match (e.g., \"Galaxy\" matches \"Samsung Galaxy S25\") */\n deviceModelContains: z.string().optional()\n});\n/**\n * Device-specific model config defaults.\n * Accepts both canonical keys (e.g., \"llamacpp-completion\") and alias keys (e.g., \"llm\").\n * NMT and TTS use passthrough since they don't have device-relevant config.\n */\nexport const deviceConfigDefaultsSchema = z\n .object({\n // Canonical keys\n [ModelType.llamacppCompletion]: llmConfigBaseSchema.optional(),\n [ModelType.llamacppEmbedding]: embedConfigBaseSchema.optional(),\n [ModelType.whispercppTranscription]: whisperConfigSchema.partial().optional(),\n [ModelType.parakeetTranscription]: parakeetConfigSchema.partial().optional(),\n [ModelType.nmtcppTranslation]: z.record(z.string(), z.unknown()).optional(),\n [ModelType.ttsGgml]: z.record(z.string(), z.unknown()).optional(),\n [ModelType.ggmlOcr]: ocrConfigSchema.partial().optional(),\n [ModelType.sdcppGeneration]: sdcppConfigSchema.partial().optional(),\n [ModelType.ggmlVla]: vlaConfigSchema.partial().optional(),\n // Alias keys (user-friendly)\n [AliasKeys.llm]: llmConfigBaseSchema.optional(),\n [AliasKeys.embeddings]: embedConfigBaseSchema.optional(),\n [AliasKeys.whisper]: whisperConfigSchema.partial().optional(),\n [AliasKeys.parakeet]: parakeetConfigSchema.partial().optional(),\n [AliasKeys.nmt]: z.record(z.string(), z.unknown()).optional(),\n [AliasKeys.tts]: z.record(z.string(), z.unknown()).optional(),\n [AliasKeys.ocr]: ocrConfigSchema.partial().optional(),\n [AliasKeys.diffusion]: sdcppConfigSchema.partial().optional(),\n [AliasKeys.vla]: vlaConfigSchema.partial().optional()\n})\n .partial();\n/**\n * A device pattern rule for applying config defaults.\n */\nexport const devicePatternSchema = z.object({\n /** Human-readable name for this pattern (used in logs) */\n name: z.string(),\n /** Match criteria - all specified fields must match */\n match: deviceMatchSchema,\n /** Config defaults to apply when matched */\n defaults: deviceConfigDefaultsSchema\n});\nconst directoryPath = z.string().transform((s) => s.replace(/\\/+$/, ''));\n/**\n * QVAC SDK Configuration Schema\n *\n * This configuration is loaded once at SDK initialization from a config file\n * (qvac.config.json, qvac.config.js, or qvac.config.ts) and remains immutable\n * throughout the SDK's lifetime.\n */\nexport const qvacConfigSchema = z.object({\n /**\n * Absolute path to the directory where models and other cached assets are stored.\n * If not specified, defaults to ~/.qvac/models\n */\n cacheDirectory: directoryPath.optional(),\n /**\n * Array of Hyperswarm relay public keys (hex strings) for improved P2P connectivity.\n * Blind relays help with NAT traversal and firewall bypassing.\n */\n swarmRelays: z.array(z.string()).optional(),\n /**\n * Global log level for all SDK loggers.\n * Options: \"error\", \"warn\", \"info\", \"debug\", \"off\".\n * Defaults to \"info\".\n */\n loggerLevel: logLevelSchema.optional(),\n /**\n * Print SDK logs to the console.\n * When false, logs still reach streams and transports but are not printed.\n * Defaults to false; set to true to see SDK logs on the console.\n */\n loggerConsoleOutput: z.boolean().optional(),\n /**\n * Maximum number of concurrent HTTP downloads for sharded models.\n * Higher values may improve download speed but increase memory usage.\n * Defaults to 3.\n */\n httpDownloadConcurrency: z.number().int().positive().optional(),\n /**\n * Timeout in milliseconds for HTTP connection establishment.\n * This applies to HEAD and GET requests.\n * If the connection is not established within this time, the request fails.\n * Defaults to 10000 (10 seconds).\n */\n httpConnectionTimeoutMs: z.number().int().positive().optional(),\n /**\n * Maximum number of retry attempts for registry (P2P) downloads on timeout.\n * When a download times out due to a P2P connection stall, the SDK will\n * automatically retry up to this many times before failing.\n * Defaults to 3.\n */\n registryDownloadMaxRetries: z.number().int().min(0).optional(),\n /**\n * Timeout in milliseconds for registry (P2P) download streams.\n * Controls how long the SDK will wait on a stalled Hypercore block before\n * triggering a REQUEST_TIMEOUT and (optionally) retrying. Raise this on\n * slow or high-latency connections where the default triggers spurious\n * retries / failures.\n * Defaults to 60000 (60 seconds).\n */\n registryStreamTimeoutMs: z.number().int().positive().optional(),\n /**\n * Device-specific config defaults.\n * Use this to override model config defaults for specific devices.\n * User-defined patterns are checked before SDK built-in patterns.\n * First matching pattern wins.\n *\n * @example\n * ```json\n * {\n * \"deviceDefaults\": [\n * {\n * \"name\": \"Custom Samsung\",\n * \"match\": { \"platform\": \"android\", \"deviceBrand\": \"samsung\" },\n * \"defaults\": { \"llm\": { \"device\": \"cpu\" } }\n * }\n * ]\n * }\n * ```\n */\n deviceDefaults: z.array(devicePatternSchema).optional(),\n /**\n * List of plugin specifiers to include in the worker bundle.\n * Each entry must end with /plugin (e.g. \"@qvac/sdk/llamacpp-completion/plugin\").\n * When omitted, all built-in plugins are included.\n */\n plugins: z.array(z.string()).optional(),\n /**\n * Bare runtime version for native addon ABI verification during bundling.\n * When omitted, verify auto-detects from node_modules (bare-runtime, then bare).\n */\n bareRuntimeVersion: z.string().optional()\n});\nimport { addCodes } from '@qvac/error';\n// Client-side error codes (50,001-52,000 range for this SDK)\nexport const SDK_CLIENT_ERROR_CODES = {\n // Response Validation Errors (50,001-50,199)\n INVALID_RESPONSE_TYPE: 50001,\n INVALID_OPERATION_IN_RESPONSE: 50002,\n STREAM_ENDED_WITHOUT_RESPONSE: 50003,\n INVALID_AUDIO_CHUNK_TYPE: 50004,\n INVALID_TOOLS_ARRAY: 50005,\n INVALID_TOOL_SCHEMA: 50006,\n OCR_FAILED: 50007,\n MODEL_TYPE_REQUIRED: 50008,\n MODEL_SRC_TYPE_MISMATCH: 50009,\n REQUEST_VALIDATION_FAILED: 50010,\n // RPC Communication Errors (50,200-50,399)\n RPC_NO_HANDLER: 50200,\n RPC_REQUEST_NOT_SENT: 50201,\n RPC_RESPONSE_STREAM_NOT_CREATED: 50202,\n RPC_CONNECTION_FAILED: 50203,\n RPC_INIT_TIMEOUT: 50204,\n WORKER_CRASHED: 50205,\n WORKER_SHUTDOWN: 50206,\n // Provider/Delegation Errors (50,400-50,599)\n PROVIDER_START_FAILED: 50400,\n PROVIDER_STOP_FAILED: 50401,\n DELEGATE_NO_FINAL_RESPONSE: 50402,\n DELEGATE_PROVIDER_ERROR: 50403,\n DELEGATE_CONNECTION_FAILED: 50404,\n // Build/Bundle Errors (50,600-50,799)\n SDK_NOT_FOUND_IN_NODE_MODULES: 50600,\n WORKER_FILE_NOT_FOUND: 50601,\n CONFIG_FILE_NOT_FOUND: 50602,\n CONFIG_FILE_INVALID: 50603,\n CONFIG_FILE_PARSE_FAILED: 50604,\n CONFIG_VALIDATION_FAILED: 50605,\n PEAR_WORKER_ENTRY_REQUIRED: 50606,\n MULTIPLE_SDK_INSTALLATIONS: 50607,\n WORKER_PLUGINS_NOT_REGISTERED: 50608,\n BUNDLE_VERIFICATION_FAILED: 50609,\n BARE_PACK_NOT_INSTALLED: 50610,\n BARE_PACK_ERROR: 50611,\n INVALID_PLUGIN_SPECIFIER: 50612,\n BARE_IMPORTS_MAP_NOT_FOUND: 50613,\n BARE_RUNTIME_BINARY_NOT_FOUND: 50614,\n // Profiler Errors (50,800-50,899)\n PROFILER_INVALID_CAPACITY: 50800\n};\nconst clientErrorDefinitions = {\n // Response Validation Errors (50,001-50,199)\n [SDK_CLIENT_ERROR_CODES.INVALID_RESPONSE_TYPE]: {\n name: 'INVALID_RESPONSE_TYPE',\n message: (expected) => `Invalid response type received, expected: ${expected}`\n },\n [SDK_CLIENT_ERROR_CODES.INVALID_OPERATION_IN_RESPONSE]: {\n name: 'INVALID_OPERATION_IN_RESPONSE',\n message: 'Invalid operation type in response'\n },\n [SDK_CLIENT_ERROR_CODES.STREAM_ENDED_WITHOUT_RESPONSE]: {\n name: 'STREAM_ENDED_WITHOUT_RESPONSE',\n message: 'Stream ended without receiving final response'\n },\n [SDK_CLIENT_ERROR_CODES.INVALID_AUDIO_CHUNK_TYPE]: {\n name: 'INVALID_AUDIO_CHUNK_TYPE',\n message: 'Invalid audio chunk type received'\n },\n [SDK_CLIENT_ERROR_CODES.INVALID_TOOLS_ARRAY]: {\n name: 'INVALID_TOOLS_ARRAY',\n message: 'Invalid tools array provided'\n },\n [SDK_CLIENT_ERROR_CODES.INVALID_TOOL_SCHEMA]: {\n name: 'INVALID_TOOL_SCHEMA',\n message: (details) => `Invalid tool schema: ${details}`\n },\n [SDK_CLIENT_ERROR_CODES.OCR_FAILED]: {\n name: 'OCR_FAILED',\n message: (details) => `OCR operation failed${details ? `: ${details}` : ''}`\n },\n [SDK_CLIENT_ERROR_CODES.MODEL_TYPE_REQUIRED]: {\n name: 'MODEL_TYPE_REQUIRED',\n message: 'modelType is required: modelSrc is a plain string or lacks an engine/addon descriptor that can be inferred. Pass an explicit canonical modelType (e.g. \"llamacpp-completion\", \"whispercpp-transcription\", \"nmtcpp-translation\", \"llamacpp-embedding\", \"tts-ggml\", \"ggml-ocr\", \"parakeet-transcription\", \"sdcpp-generation\") or use a model constant that carries engine metadata.'\n },\n [SDK_CLIENT_ERROR_CODES.MODEL_SRC_TYPE_MISMATCH]: {\n name: 'MODEL_SRC_TYPE_MISMATCH',\n message: (inferred, resolved) => `modelSrc describes \"${inferred}\", but modelType resolves to \"${resolved}\". Omit modelType to infer it automatically, or pass a matching modelType.`\n },\n [SDK_CLIENT_ERROR_CODES.REQUEST_VALIDATION_FAILED]: {\n name: 'REQUEST_VALIDATION_FAILED',\n message: (errors) => `Invalid request:\\n${errors}`\n },\n // RPC Communication Errors (50,200-50,399)\n [SDK_CLIENT_ERROR_CODES.RPC_NO_HANDLER]: {\n name: 'RPC_NO_HANDLER',\n message: (requestType) => `No handler function registered for request type: ${requestType}`\n },\n [SDK_CLIENT_ERROR_CODES.RPC_REQUEST_NOT_SENT]: {\n name: 'RPC_REQUEST_NOT_SENT',\n message: 'Cannot perform operation - request has not been sent yet'\n },\n [SDK_CLIENT_ERROR_CODES.RPC_RESPONSE_STREAM_NOT_CREATED]: {\n name: 'RPC_RESPONSE_STREAM_NOT_CREATED',\n message: 'Cannot perform operation - response stream not created'\n },\n [SDK_CLIENT_ERROR_CODES.RPC_CONNECTION_FAILED]: {\n name: 'RPC_CONNECTION_FAILED',\n message: (details) => `RPC connection failed: ${details}`\n },\n [SDK_CLIENT_ERROR_CODES.RPC_INIT_TIMEOUT]: {\n name: 'RPC_INIT_TIMEOUT',\n message: (timeoutMs) => `RPC initialization timed out after ${timeoutMs}ms — the worker process may have failed to start`\n },\n [SDK_CLIENT_ERROR_CODES.WORKER_CRASHED]: {\n name: 'WORKER_CRASHED',\n message: (code, signal) => `Bare worker exited mid-request (code=${code}, signal=${signal}) — in-flight calls were aborted`\n },\n [SDK_CLIENT_ERROR_CODES.WORKER_SHUTDOWN]: {\n name: 'WORKER_SHUTDOWN',\n message: () => `SDK is shutting down — in-flight RPC call aborted`\n },\n // Provider/Delegation Errors (50,400-50,599)\n [SDK_CLIENT_ERROR_CODES.PROVIDER_START_FAILED]: {\n name: 'PROVIDER_START_FAILED',\n message: (details) => `Failed to start provider${details ? `: ${details}` : ''}`\n },\n [SDK_CLIENT_ERROR_CODES.PROVIDER_STOP_FAILED]: {\n name: 'PROVIDER_STOP_FAILED',\n message: (details) => `Failed to stop provider${details ? `: ${details}` : ''}`\n },\n [SDK_CLIENT_ERROR_CODES.DELEGATE_NO_FINAL_RESPONSE]: {\n name: 'DELEGATE_NO_FINAL_RESPONSE',\n message: 'No final response received from delegated provider'\n },\n [SDK_CLIENT_ERROR_CODES.DELEGATE_PROVIDER_ERROR]: {\n name: 'DELEGATE_PROVIDER_ERROR',\n message: (details) => `Delegated provider error: ${details}`\n },\n [SDK_CLIENT_ERROR_CODES.DELEGATE_CONNECTION_FAILED]: {\n name: 'DELEGATE_CONNECTION_FAILED',\n message: (details) => `Failed to connect to delegated provider: ${details}`\n },\n // Build/Bundle Errors (50,600-50,799)\n [SDK_CLIENT_ERROR_CODES.SDK_NOT_FOUND_IN_NODE_MODULES]: {\n name: 'SDK_NOT_FOUND_IN_NODE_MODULES',\n message: 'QVAC SDK not found in node_modules. Checked: @qvac/sdk, @tetherto/sdk-mono, @tetherto/sdk-dev'\n },\n [SDK_CLIENT_ERROR_CODES.WORKER_FILE_NOT_FOUND]: {\n name: 'WORKER_FILE_NOT_FOUND',\n message: (workerPath) => `Worker file not found at ${workerPath}`\n },\n [SDK_CLIENT_ERROR_CODES.CONFIG_FILE_NOT_FOUND]: {\n name: 'CONFIG_FILE_NOT_FOUND',\n message: (searchPaths) => `Config file not found. Searched: ${searchPaths}. Create qvac.config.json, qvac.config.js, or qvac.config.ts in your project root.`\n },\n [SDK_CLIENT_ERROR_CODES.CONFIG_FILE_INVALID]: {\n name: 'CONFIG_FILE_INVALID',\n message: (filePath, reason) => `Config file at ${filePath} is invalid: ${reason}`\n },\n [SDK_CLIENT_ERROR_CODES.CONFIG_FILE_PARSE_FAILED]: {\n name: 'CONFIG_FILE_PARSE_FAILED',\n message: (filePath, error) => `Failed to parse config file at ${filePath}: ${error}`\n },\n [SDK_CLIENT_ERROR_CODES.CONFIG_VALIDATION_FAILED]: {\n name: 'CONFIG_VALIDATION_FAILED',\n message: (errors) => `Config validation failed: ${errors}`\n },\n [SDK_CLIENT_ERROR_CODES.MULTIPLE_SDK_INSTALLATIONS]: {\n name: 'MULTIPLE_SDK_INSTALLATIONS',\n message: (packages) => `Multiple QVAC SDK installations found: ${packages}. Remove all but one to avoid conflicts.`\n },\n [SDK_CLIENT_ERROR_CODES.PEAR_WORKER_ENTRY_REQUIRED]: {\n name: 'PEAR_WORKER_ENTRY_REQUIRED',\n message: (workerEntry) => `No plugins registered. Pear apps must spawn ${workerEntry} as the worker entry. Run \\`npx qvac bundle sdk\\` to generate it, then spawn the generated file instead of your worker directly.`\n },\n [SDK_CLIENT_ERROR_CODES.WORKER_PLUGINS_NOT_REGISTERED]: {\n name: 'WORKER_PLUGINS_NOT_REGISTERED',\n message: () => 'No plugins registered in the worker. On Bare, register the plugins you need with `plugins([...])` (or `registerPlugin(...)`) before the first SDK call — import each from its subpath, e.g. `@qvac/sdk/llamacpp-completion/plugin`. For direct Bare usage we recommend the dedicated `@qvac/bare-sdk` package. See https://docs.qvac.tether.io/configuration/plugins#runtime-registration-on-bare'\n },\n [SDK_CLIENT_ERROR_CODES.BUNDLE_VERIFICATION_FAILED]: {\n name: 'BUNDLE_VERIFICATION_FAILED',\n message: (bundlePath) => `qvac verify bundle reported error-level issues for ${bundlePath}. See the CLI output above for the failing addons/hosts; resolve them before shipping.`\n },\n [SDK_CLIENT_ERROR_CODES.BARE_PACK_NOT_INSTALLED]: {\n name: 'BARE_PACK_NOT_INSTALLED',\n message: 'bare-pack binary not found. Install bare-pack as a peer dependency: npm install bare-pack'\n },\n [SDK_CLIENT_ERROR_CODES.BARE_PACK_ERROR]: {\n name: 'BARE_PACK_ERROR',\n message: (exitCode, entryPath, outputPath) => `bare-pack exited with code ${exitCode}\\n\\n Entry file: ${entryPath}\\n Output file: ${outputPath}\\n\\n Run bare-pack manually for more details.`\n },\n [SDK_CLIENT_ERROR_CODES.INVALID_PLUGIN_SPECIFIER]: {\n name: 'INVALID_PLUGIN_SPECIFIER',\n message: (specifiers) => `Invalid plugin specifiers (must end with /plugin):\\n${specifiers}`\n },\n [SDK_CLIENT_ERROR_CODES.BARE_IMPORTS_MAP_NOT_FOUND]: {\n name: 'BARE_IMPORTS_MAP_NOT_FOUND',\n message: (sdkName, expectedPath) => `bare-imports.json not found.\\n\\n Expected at: ${expectedPath}\\n\\n Make sure ${sdkName} is installed in your project.`\n },\n [SDK_CLIENT_ERROR_CODES.BARE_RUNTIME_BINARY_NOT_FOUND]: {\n name: 'BARE_RUNTIME_BINARY_NOT_FOUND',\n message: (platform, arch) => `Could not load the Bare runtime binary for ${platform}-${arch}. The platform package \"bare-runtime-${platform}-${arch}\" (or one of its dependencies) is missing from node_modules — commonly seen with pnpm, which does not always install nested optional dependencies. Fix it by installing the platform package directly (e.g. \\`pnpm add bare-runtime-${platform}-${arch}\\`) or by installing with npm or bun. See https://github.com/tetherto/qvac/issues/1492`\n },\n // Profiler Errors (50,800-50,899)\n [SDK_CLIENT_ERROR_CODES.PROFILER_INVALID_CAPACITY]: {\n name: 'PROFILER_INVALID_CAPACITY',\n message: (minCapacity) => `Ring buffer capacity must be at least ${minCapacity}`\n }\n};\naddCodes(clientErrorDefinitions, { name: 'qvac-sdk-client', version: '1.2.0' });\nexport { clientErrorDefinitions as SDK_CLIENT_ERROR_DEFINITIONS };\n// Registry client error codes (19,001-20,000 range)\n// These match the codes from @qvac/registry-client/utils/error.js\n// Used for checking error types - the actual error definitions are in the registry client\nexport const REGISTRY_ERROR_CODES = {\n FAILED_TO_CONNECT: 19001,\n FAILED_TO_CLOSE: 19002,\n MODEL_NOT_FOUND: 19003\n};\nimport { addCodes } from '@qvac/error';\n// Server-side error codes (52,001-54,000 range for this SDK)\nexport const SDK_SERVER_ERROR_CODES = {\n // Model Registry Errors (52,001-52,199)\n MODEL_ALREADY_REGISTERED: 52001,\n MODEL_NOT_FOUND: 52002,\n MODEL_NOT_LOADED: 52003,\n MODEL_IS_DELEGATED: 52004,\n UNKNOWN_MODEL_TYPE: 52005,\n // Model Loading Errors (52,200-52,399)\n MODEL_LOAD_FAILED: 52200,\n MODEL_FILE_NOT_FOUND: 52201,\n MODEL_FILE_NOT_FOUND_IN_DIR: 52202,\n MODEL_FILE_LOCATE_FAILED: 52203,\n PROJECTION_MODEL_REQUIRED: 52204,\n VAD_MODEL_REQUIRED: 52205,\n TTS_ARTIFACTS_REQUIRED: 52208,\n TTS_REFERENCE_AUDIO_REQUIRED: 52209,\n LEGACY_PARAKEET_MODEL_DEPRECATED: 52210,\n LEGACY_TTS_MODEL_DEPRECATED: 52211,\n // Model Operations (52,400-52,799)\n MODEL_UNLOAD_FAILED: 52400,\n EMBED_FAILED: 52401,\n EMBED_NO_EMBEDDINGS: 52402,\n TRANSCRIPTION_FAILED: 52403,\n AUDIO_FILE_NOT_FOUND: 52404,\n TRANSLATION_FAILED: 52405,\n COMPLETION_FAILED: 52406,\n ATTACHMENT_NOT_FOUND: 52407,\n CANCEL_FAILED: 52408,\n TEXT_TO_SPEECH_FAILED: 52409,\n CONFIG_RELOAD_NOT_SUPPORTED: 52410,\n MODEL_TYPE_MISMATCH: 52411,\n OCR_FAILED: 52412,\n IMAGE_FILE_NOT_FOUND: 52413,\n INVALID_IMAGE_INPUT: 52414,\n TEXT_TO_SPEECH_STREAM_FAILED: 52415,\n MODEL_OPERATION_NOT_SUPPORTED: 52416,\n REQUEST_ID_CONFLICT: 52417,\n REQUEST_NOT_FOUND: 52418,\n INFERENCE_CANCELLED: 52419,\n REQUEST_REJECTED_BY_POLICY: 52420,\n CONTEXT_OVERFLOW: 52421,\n // RAG Operations (52,800-52,999)\n RAG_SAVE_FAILED: 52800,\n RAG_SEARCH_FAILED: 52801,\n RAG_DELETE_FAILED: 52802,\n RAG_UNKNOWN_OPERATION: 52803,\n RAG_HYPERDB_FAILED: 52804,\n RAG_WORKSPACE_MODEL_MISMATCH: 52805,\n RAG_WORKSPACE_NOT_FOUND: 52806,\n RAG_WORKSPACE_IN_USE: 52807,\n RAG_WORKSPACE_CLOSE_FAILED: 52808,\n RAG_LIST_WORKSPACES_FAILED: 52809,\n RAG_CHUNK_FAILED: 52810,\n RAG_WORKSPACE_NOT_OPEN: 52811,\n // Download/Resource Errors (53,000-53,199)\n FILE_NOT_FOUND: 53000,\n DOWNLOAD_CANCELLED: 53001,\n CHECKSUM_VALIDATION_FAILED: 53002,\n HTTP_ERROR: 53003,\n NO_RESPONSE_BODY: 53004,\n RESPONSE_BODY_NOT_READABLE: 53005,\n NO_BLOB_FOUND: 53006,\n DOWNLOAD_ASSET_FAILED: 53007,\n SEEDING_NOT_SUPPORTED: 53008,\n HYPERDRIVE_DOWNLOAD_FAILED: 53009,\n INVALID_SHARD_URL_PATTERN: 53010,\n ARCHIVE_EXTRACTION_FAILED: 53011,\n ARCHIVE_UNSUPPORTED_TYPE: 53012,\n ARCHIVE_MISSING_SHARDS: 53013,\n PARTIAL_DOWNLOAD_OFFLINE: 53014,\n REGISTRY_DOWNLOAD_FAILED: 53015,\n // Cache Operations (53,200-53,349)\n DELETE_CACHE_FAILED: 53200,\n INVALID_DELETE_CACHE_PARAMS: 53201,\n CACHE_DIR_NOT_ABSOLUTE: 53202,\n CACHE_DIR_NOT_WRITABLE: 53203,\n // Config Operations (53,350-53,499)\n SET_CONFIG_FAILED: 53350,\n CONFIG_ALREADY_SET: 53351,\n // System/Runtime (53,500-53,699)\n FFMPEG_NOT_AVAILABLE: 53500,\n AUDIO_PLAYER_FAILED: 53501,\n INVALID_AUDIO_CHUNK_TYPE: 53502,\n ASYNC_DISPOSE_UNAVAILABLE: 53503,\n // RPC/Delegation (Server-side) (53,700-53,849)\n DELEGATE_NO_FINAL_RESPONSE: 53700,\n DELEGATE_CONNECTION_FAILED: 53701,\n DELEGATE_PROVIDER_ERROR: 53702,\n RPC_NO_DATA_RECEIVED: 53703,\n RPC_UNKNOWN_REQUEST_TYPE: 53704,\n // Plugin Errors (53,850-53,899)\n PLUGIN_NOT_FOUND: 53850,\n PLUGIN_HANDLER_NOT_FOUND: 53851,\n PLUGIN_REQUEST_VALIDATION_FAILED: 53852,\n PLUGIN_RESPONSE_VALIDATION_FAILED: 53853,\n PLUGIN_ALREADY_REGISTERED: 53854,\n PLUGIN_HANDLER_TYPE_MISMATCH: 53855,\n PLUGIN_LOGGING_INVALID: 53856,\n PLUGIN_DEFINITION_INVALID: 53857,\n PLUGIN_MODEL_TYPE_RESERVED: 53858,\n PLUGIN_LOAD_CONFIG_VALIDATION_FAILED: 53859,\n // Lifecycle (53,600-53,610)\n LIFECYCLE_SUSPEND_FAILED: 53600,\n LIFECYCLE_RESUME_FAILED: 53601,\n LIFECYCLE_OPERATION_BLOCKED: 53602,\n // Security (53,900-53,949)\n PATH_TRAVERSAL: 53900,\n // QVAC Model Registry Operations (53,950-54,000)\n // Note: Registry client errors (19,001-20,000) are re-thrown directly\n QVAC_MODEL_REGISTRY_QUERY_FAILED: 53950\n};\nconst serverErrorDefinitions = {\n // Model Registry Errors (52,001-52,199)\n [SDK_SERVER_ERROR_CODES.MODEL_ALREADY_REGISTERED]: {\n name: 'MODEL_ALREADY_REGISTERED',\n message: (modelId) => `Model with ID \"${modelId}\" is already registered`\n },\n [SDK_SERVER_ERROR_CODES.MODEL_NOT_FOUND]: {\n name: 'MODEL_NOT_FOUND',\n message: (modelId) => `Model with ID \"${modelId}\" not found`\n },\n [SDK_SERVER_ERROR_CODES.MODEL_NOT_LOADED]: {\n name: 'MODEL_NOT_LOADED',\n message: (modelId) => `Model with ID \"${modelId}\" is not loaded`\n },\n [SDK_SERVER_ERROR_CODES.MODEL_IS_DELEGATED]: {\n name: 'MODEL_IS_DELEGATED',\n message: (modelId) => `Model \"${modelId}\" is a delegated model and cannot be accessed directly`\n },\n [SDK_SERVER_ERROR_CODES.UNKNOWN_MODEL_TYPE]: {\n name: 'UNKNOWN_MODEL_TYPE',\n message: (modelType) => `Unknown model type: ${modelType}. If using a custom worker bundle, ensure the plugin for \"${modelType}\" is included in your qvac.config plugins array and rebuild with \"npx qvac bundle sdk\".`\n },\n // Model Loading Errors (52,200-52,399)\n [SDK_SERVER_ERROR_CODES.MODEL_LOAD_FAILED]: {\n name: 'MODEL_LOAD_FAILED',\n message: (details) => `Failed to load model${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.MODEL_FILE_NOT_FOUND]: {\n name: 'MODEL_FILE_NOT_FOUND',\n message: (modelPath) => `Model file not found: ${modelPath}`\n },\n [SDK_SERVER_ERROR_CODES.MODEL_FILE_NOT_FOUND_IN_DIR]: {\n name: 'MODEL_FILE_NOT_FOUND_IN_DIR',\n message: (modelFile, modelDir, modelType) => `${modelType} model file ${modelFile} not found in directory ${modelDir}`\n },\n [SDK_SERVER_ERROR_CODES.MODEL_FILE_LOCATE_FAILED]: {\n name: 'MODEL_FILE_LOCATE_FAILED',\n message: (modelType, modelPath) => `Failed to locate ${modelType} model file: ${modelPath}`\n },\n [SDK_SERVER_ERROR_CODES.PROJECTION_MODEL_REQUIRED]: {\n name: 'PROJECTION_MODEL_REQUIRED',\n message: 'Projection model source is required for multimodal LLM models'\n },\n [SDK_SERVER_ERROR_CODES.VAD_MODEL_REQUIRED]: {\n name: 'VAD_MODEL_REQUIRED',\n message: 'VAD model source is required for this configuration'\n },\n [SDK_SERVER_ERROR_CODES.TTS_ARTIFACTS_REQUIRED]: {\n name: 'TTS_ARTIFACTS_REQUIRED',\n message: 'TTS (Chatterbox) requires s3genModelSrc in modelConfig (companion S3Gen GGUF) and the primary T3 GGUF via modelSrc'\n },\n [SDK_SERVER_ERROR_CODES.TTS_REFERENCE_AUDIO_REQUIRED]: {\n name: 'TTS_REFERENCE_AUDIO_REQUIRED',\n message: 'TTS (Chatterbox) requires referenceAudioSrc (path or URL to a WAV file for voice cloning)'\n },\n [SDK_SERVER_ERROR_CODES.LEGACY_PARAKEET_MODEL_DEPRECATED]: {\n name: 'LEGACY_PARAKEET_MODEL_DEPRECATED',\n message: (legacyFields) => `Legacy parakeet ONNX modelConfig fields are no longer supported (${legacyFields ?? 'unknown fields'}). As of @qvac/transcription-parakeet 0.6.0 the addon ships as a single GGUF that auto-detects TDT / CTC / EOU / Sortformer from GGUF metadata. Supply the GGUF via the top-level modelSrc (e.g. loadModel({ modelSrc: PARAKEET_TDT_0_6B_V3_Q8_0, modelType: \"parakeet\" })).`\n },\n [SDK_SERVER_ERROR_CODES.LEGACY_TTS_MODEL_DEPRECATED]: {\n name: 'LEGACY_TTS_MODEL_DEPRECATED',\n message: (legacyFields) => `Legacy ONNX TTS modelConfig fields are no longer supported (${legacyFields ?? 'unknown fields'}). As of @qvac/tts-ggml the addon uses GGUF bundles: supply the primary GGUF via modelSrc, set language in modelConfig, and for Chatterbox add s3genModelSrc (e.g. loadModel({ modelSrc: TTS_T3_TURBO_EN_CHATTERBOX_Q8_0, modelType: \"tts\", modelConfig: { ttsEngine: \"chatterbox\", language: \"en\", s3genModelSrc: TTS_S3GEN_EN_CHATTERBOX } })). Supertonic multilingual mode is selected by the GGUF (e.g. TTS_MULTILINGUAL_SUPERTONIC2_Q8_0) plus language — not ttsSupertonicMultilingual.`\n },\n // Model Operations (52,400-52,799)\n [SDK_SERVER_ERROR_CODES.MODEL_UNLOAD_FAILED]: {\n name: 'MODEL_UNLOAD_FAILED',\n message: (modelId) => `Failed to unload model${modelId ? ` \"${modelId}\"` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.EMBED_FAILED]: {\n name: 'EMBED_FAILED',\n message: (details) => `Failed to generate embeddings${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.EMBED_NO_EMBEDDINGS]: {\n name: 'EMBED_NO_EMBEDDINGS',\n message: 'No embeddings returned from model'\n },\n [SDK_SERVER_ERROR_CODES.TRANSCRIPTION_FAILED]: {\n name: 'TRANSCRIPTION_FAILED',\n message: (details) => `Transcription failed${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.AUDIO_FILE_NOT_FOUND]: {\n name: 'AUDIO_FILE_NOT_FOUND',\n message: (filePath) => `Audio file not found or not accessible: ${filePath}`\n },\n [SDK_SERVER_ERROR_CODES.TRANSLATION_FAILED]: {\n name: 'TRANSLATION_FAILED',\n message: (details) => `Translation failed${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.COMPLETION_FAILED]: {\n name: 'COMPLETION_FAILED',\n message: (details) => `Completion failed${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.ATTACHMENT_NOT_FOUND]: {\n name: 'ATTACHMENT_NOT_FOUND',\n message: (path) => `Attachment not found at path: ${path}`\n },\n [SDK_SERVER_ERROR_CODES.CANCEL_FAILED]: {\n name: 'CANCEL_FAILED',\n message: (details) => `Failed to cancel operation${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.TEXT_TO_SPEECH_FAILED]: {\n name: 'TEXT_TO_SPEECH_FAILED',\n message: (details) => `Text-to-speech operation failed${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.TEXT_TO_SPEECH_STREAM_FAILED]: {\n name: 'TEXT_TO_SPEECH_STREAM_FAILED',\n message: (details) => `Text-to-speech stream operation failed${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.CONFIG_RELOAD_NOT_SUPPORTED]: {\n name: 'CONFIG_RELOAD_NOT_SUPPORTED',\n message: (modelId) => `Model \"${modelId}\" does not support hot config reload`\n },\n [SDK_SERVER_ERROR_CODES.MODEL_TYPE_MISMATCH]: {\n name: 'MODEL_TYPE_MISMATCH',\n message: (expectedType, providedType) => `Model type mismatch: expected \"${expectedType}\", got \"${providedType}\"`\n },\n [SDK_SERVER_ERROR_CODES.OCR_FAILED]: {\n name: 'OCR_FAILED',\n message: (details) => `OCR operation failed${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.IMAGE_FILE_NOT_FOUND]: {\n name: 'IMAGE_FILE_NOT_FOUND',\n message: (filePath) => `Image file not found or not accessible: ${filePath}`\n },\n [SDK_SERVER_ERROR_CODES.INVALID_IMAGE_INPUT]: {\n name: 'INVALID_IMAGE_INPUT',\n message: 'Invalid image input type provided'\n },\n [SDK_SERVER_ERROR_CODES.MODEL_OPERATION_NOT_SUPPORTED]: {\n name: 'MODEL_OPERATION_NOT_SUPPORTED',\n message: (modelId, modelType, operation, supportedOperations, suggestedModelTypes) => {\n const supportedClause = supportedOperations\n ? ` Supported operations on this model: ${supportedOperations}.`\n : ' This model does not expose any operations.';\n const suggestionClause = suggestedModelTypes\n ? ` To use ${operation}, load a model of type: ${suggestedModelTypes}.`\n : ` No model registered in this worker bundle exposes ${operation}.`;\n return `Model \"${modelId}\" (type: ${modelType}) does not support ${operation}.${supportedClause}${suggestionClause}`;\n }\n },\n [SDK_SERVER_ERROR_CODES.REQUEST_ID_CONFLICT]: {\n name: 'REQUEST_ID_CONFLICT',\n message: (requestId) => `Request id \"${requestId}\" is already in flight; refusing to overwrite the existing context`\n },\n [SDK_SERVER_ERROR_CODES.REQUEST_NOT_FOUND]: {\n name: 'REQUEST_NOT_FOUND',\n message: (requestId) => `No in-flight request with id \"${requestId}\"`\n },\n [SDK_SERVER_ERROR_CODES.INFERENCE_CANCELLED]: {\n name: 'INFERENCE_CANCELLED',\n message: (requestId) => `Inference request \"${requestId}\" was cancelled before it could complete`\n },\n [SDK_SERVER_ERROR_CODES.REQUEST_REJECTED_BY_POLICY]: {\n name: 'REQUEST_REJECTED_BY_POLICY',\n message: (requestId, kind, modelId, reason) => `Request \"${requestId}\" (kind: ${kind}, modelId: ${modelId}) was rejected by registry concurrency policy: ${reason}`\n },\n [SDK_SERVER_ERROR_CODES.CONTEXT_OVERFLOW]: {\n name: 'CONTEXT_OVERFLOW',\n message: (promptTokens, ctxSize, modelId) => {\n const prompt = promptTokens ? `${promptTokens} prompt tokens` : 'prompt';\n const ctx = ctxSize\n ? ` exceeds the ${ctxSize}-token context window`\n : \" exceeds the model's context window\";\n const model = modelId ? ` for model \"${modelId}\"` : '';\n return `${prompt}${ctx}${model}. Reduce the prompt size or start a new conversation.`;\n }\n },\n // RAG Operations (52,800-52,999)\n [SDK_SERVER_ERROR_CODES.RAG_SAVE_FAILED]: {\n name: 'RAG_SAVE_FAILED',\n message: (details) => `Failed to save embeddings${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.RAG_SEARCH_FAILED]: {\n name: 'RAG_SEARCH_FAILED',\n message: (details) => `Failed to search embeddings${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.RAG_DELETE_FAILED]: {\n name: 'RAG_DELETE_FAILED',\n message: (details) => `Failed to delete embeddings${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.RAG_UNKNOWN_OPERATION]: {\n name: 'RAG_UNKNOWN_OPERATION',\n message: (operation) => `Unknown RAG operation: ${operation}`\n },\n [SDK_SERVER_ERROR_CODES.RAG_HYPERDB_FAILED]: {\n name: 'RAG_HYPERDB_FAILED',\n message: (details) => `HyperDB RAG operation failed: ${details}`\n },\n [SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_MODEL_MISMATCH]: {\n name: 'RAG_WORKSPACE_MODEL_MISMATCH',\n message: (workspace, existingModelId, newModelId) => `Workspace \"${workspace}\" is configured for model \"${existingModelId}\", but you're trying to use model \"${newModelId}\". Use a different workspace or the same model`\n },\n [SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_NOT_FOUND]: {\n name: 'RAG_WORKSPACE_NOT_FOUND',\n message: (workspace) => `RAG workspace not found: ${workspace}`\n },\n [SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_IN_USE]: {\n name: 'RAG_WORKSPACE_IN_USE',\n message: (workspace) => `RAG workspace '${workspace}' is currently in use. Close it first.`\n },\n [SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_CLOSE_FAILED]: {\n name: 'RAG_WORKSPACE_CLOSE_FAILED',\n message: (details) => `Failed to close RAG workspace${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.RAG_LIST_WORKSPACES_FAILED]: {\n name: 'RAG_LIST_WORKSPACES_FAILED',\n message: (details) => `Failed to list RAG workspaces${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.RAG_CHUNK_FAILED]: {\n name: 'RAG_CHUNK_FAILED',\n message: (details) => `Failed to chunk documents${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_NOT_OPEN]: {\n name: 'RAG_WORKSPACE_NOT_OPEN',\n message: (workspace) => `RAG workspace '${workspace}' is not open`\n },\n // Download/Resource Errors (53,000-53,199)\n [SDK_SERVER_ERROR_CODES.FILE_NOT_FOUND]: {\n name: 'FILE_NOT_FOUND',\n message: (path) => `File not found: ${path}`\n },\n [SDK_SERVER_ERROR_CODES.DOWNLOAD_CANCELLED]: {\n name: 'DOWNLOAD_CANCELLED',\n message: 'Download was cancelled'\n },\n [SDK_SERVER_ERROR_CODES.CHECKSUM_VALIDATION_FAILED]: {\n name: 'CHECKSUM_VALIDATION_FAILED',\n message: (fileName) => `Checksum validation failed for ${fileName}`\n },\n [SDK_SERVER_ERROR_CODES.HTTP_ERROR]: {\n name: 'HTTP_ERROR',\n message: (status, statusText) => `HTTP error: ${status} ${statusText}`\n },\n [SDK_SERVER_ERROR_CODES.NO_RESPONSE_BODY]: {\n name: 'NO_RESPONSE_BODY',\n message: 'No response body received from HTTP request'\n },\n [SDK_SERVER_ERROR_CODES.RESPONSE_BODY_NOT_READABLE]: {\n name: 'RESPONSE_BODY_NOT_READABLE',\n message: 'Response body is not readable'\n },\n [SDK_SERVER_ERROR_CODES.NO_BLOB_FOUND]: {\n name: 'NO_BLOB_FOUND',\n message: (fileName) => `No blob found for ${fileName}`\n },\n [SDK_SERVER_ERROR_CODES.DOWNLOAD_ASSET_FAILED]: {\n name: 'DOWNLOAD_ASSET_FAILED',\n message: (details) => `Failed to download asset${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.SEEDING_NOT_SUPPORTED]: {\n name: 'SEEDING_NOT_SUPPORTED',\n message: 'Seeding is only supported for hyperdrive models'\n },\n [SDK_SERVER_ERROR_CODES.HYPERDRIVE_DOWNLOAD_FAILED]: {\n name: 'HYPERDRIVE_DOWNLOAD_FAILED',\n message: (details) => `Hyperdrive download failed: ${details}`\n },\n [SDK_SERVER_ERROR_CODES.REGISTRY_DOWNLOAD_FAILED]: {\n name: 'REGISTRY_DOWNLOAD_FAILED',\n message: (details) => `Registry download failed: ${details}`\n },\n [SDK_SERVER_ERROR_CODES.INVALID_SHARD_URL_PATTERN]: {\n name: 'INVALID_SHARD_URL_PATTERN',\n message: (url) => `URL does not contain a valid sharded model pattern: ${url}`\n },\n [SDK_SERVER_ERROR_CODES.ARCHIVE_EXTRACTION_FAILED]: {\n name: 'ARCHIVE_EXTRACTION_FAILED',\n message: (archivePath) => `Failed to extract archive: ${archivePath}`\n },\n [SDK_SERVER_ERROR_CODES.ARCHIVE_UNSUPPORTED_TYPE]: {\n name: 'ARCHIVE_UNSUPPORTED_TYPE',\n message: (archivePath) => `Unsupported archive type: ${archivePath}`\n },\n [SDK_SERVER_ERROR_CODES.ARCHIVE_MISSING_SHARDS]: {\n name: 'ARCHIVE_MISSING_SHARDS',\n message: (missingFile) => `Archive is missing required shard file: ${missingFile}`\n },\n [SDK_SERVER_ERROR_CODES.PARTIAL_DOWNLOAD_OFFLINE]: {\n name: 'PARTIAL_DOWNLOAD_OFFLINE',\n message: (url, downloadedBytes) => `Cannot resume partial download (${downloadedBytes} bytes downloaded) - unable to connect. URL: ${url}`\n },\n // Cache Operations (53,200-53,349)\n [SDK_SERVER_ERROR_CODES.DELETE_CACHE_FAILED]: {\n name: 'DELETE_CACHE_FAILED',\n message: (details) => `Failed to delete cache${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.INVALID_DELETE_CACHE_PARAMS]: {\n name: 'INVALID_DELETE_CACHE_PARAMS',\n message: 'Invalid deleteCache parameters - provide either modelId or cacheKey'\n },\n [SDK_SERVER_ERROR_CODES.CACHE_DIR_NOT_ABSOLUTE]: {\n name: 'CACHE_DIR_NOT_ABSOLUTE',\n message: 'Cache directory must be an absolute path'\n },\n [SDK_SERVER_ERROR_CODES.CACHE_DIR_NOT_WRITABLE]: {\n name: 'CACHE_DIR_NOT_WRITABLE',\n message: (cacheDir, details) => `Cache directory is not writable: ${cacheDir}${details ? `. ${details}` : ''}`\n },\n // Config Operations (53,350-53,499)\n [SDK_SERVER_ERROR_CODES.SET_CONFIG_FAILED]: {\n name: 'SET_CONFIG_FAILED',\n message: (details) => `Failed to set config${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.CONFIG_ALREADY_SET]: {\n name: 'CONFIG_ALREADY_SET',\n message: 'Config has already been set and is immutable. Config can only be set once during SDK initialization.'\n },\n // System/Runtime (53,500-53,699)\n [SDK_SERVER_ERROR_CODES.FFMPEG_NOT_AVAILABLE]: {\n name: 'FFMPEG_NOT_AVAILABLE',\n message: 'FFmpeg is not available on this system'\n },\n [SDK_SERVER_ERROR_CODES.AUDIO_PLAYER_FAILED]: {\n name: 'AUDIO_PLAYER_FAILED',\n message: (details) => `Audio player failed: ${details}`\n },\n [SDK_SERVER_ERROR_CODES.INVALID_AUDIO_CHUNK_TYPE]: {\n name: 'INVALID_AUDIO_CHUNK_TYPE',\n message: 'Invalid audio chunk type'\n },\n [SDK_SERVER_ERROR_CODES.ASYNC_DISPOSE_UNAVAILABLE]: {\n name: 'ASYNC_DISPOSE_UNAVAILABLE',\n message: 'Host runtime does not expose Symbol.asyncDispose; the SDK request-lifecycle primitives require ES2024 `using`/`asyncDispose` support. Verify your runtime (Bare/Expo/Node ≥ 20.4) and any polyfill registration.'\n },\n // RPC/Delegation (Server-side) (53,700-53,899)\n [SDK_SERVER_ERROR_CODES.DELEGATE_NO_FINAL_RESPONSE]: {\n name: 'DELEGATE_NO_FINAL_RESPONSE',\n message: 'No final response received from delegated provider'\n },\n [SDK_SERVER_ERROR_CODES.DELEGATE_CONNECTION_FAILED]: {\n name: 'DELEGATE_CONNECTION_FAILED',\n message: (details) => `Failed to connect to delegated provider: ${details}`\n },\n [SDK_SERVER_ERROR_CODES.DELEGATE_PROVIDER_ERROR]: {\n name: 'DELEGATE_PROVIDER_ERROR',\n message: (details, providerCode) => `Delegated provider error: ${details}` + (providerCode ? ` (code: ${providerCode})` : '')\n },\n [SDK_SERVER_ERROR_CODES.RPC_NO_DATA_RECEIVED]: {\n name: 'RPC_NO_DATA_RECEIVED',\n message: 'No data received from request'\n },\n [SDK_SERVER_ERROR_CODES.RPC_UNKNOWN_REQUEST_TYPE]: {\n name: 'RPC_UNKNOWN_REQUEST_TYPE',\n message: (requestType) => `Unknown request type received: ${requestType}`\n },\n // Plugin Errors (53,850-53,899)\n [SDK_SERVER_ERROR_CODES.PLUGIN_NOT_FOUND]: {\n name: 'PLUGIN_NOT_FOUND',\n message: (modelType) => modelType === 'onnx-ocr'\n ? 'Plugin not found for model type \"onnx-ocr\": the ONNX OCR engine was removed in @qvac/sdk 0.15.0. Use modelType \"ggml-ocr\" with GGUF registry models instead (EasyOCR: OCR_LATIN; DocTR: OCR_DOCTR).'\n : `Plugin not found for model type \"${modelType}\". If using a custom worker bundle, ensure the plugin is included in your qvac.config plugins array and rebuild with \"npx qvac bundle sdk\".`\n },\n [SDK_SERVER_ERROR_CODES.PLUGIN_HANDLER_NOT_FOUND]: {\n name: 'PLUGIN_HANDLER_NOT_FOUND',\n message: (modelType, handler, availableHandlers) => `Handler \"${handler}\" not found in plugin \"${modelType}\"` +\n (availableHandlers ? `. Available handlers: ${availableHandlers}` : '')\n },\n [SDK_SERVER_ERROR_CODES.PLUGIN_REQUEST_VALIDATION_FAILED]: {\n name: 'PLUGIN_REQUEST_VALIDATION_FAILED',\n message: (handler, details) => `Request validation failed for handler \"${handler}\"${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.PLUGIN_RESPONSE_VALIDATION_FAILED]: {\n name: 'PLUGIN_RESPONSE_VALIDATION_FAILED',\n message: (handler, details) => `Response validation failed for handler \"${handler}\"${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.PLUGIN_ALREADY_REGISTERED]: {\n name: 'PLUGIN_ALREADY_REGISTERED',\n message: (modelType) => `Plugin already registered for modelType: ${modelType}`\n },\n [SDK_SERVER_ERROR_CODES.PLUGIN_HANDLER_TYPE_MISMATCH]: {\n name: 'PLUGIN_HANDLER_TYPE_MISMATCH',\n message: (handlerName, expected, actual) => `Handler \"${handlerName}\" is ${actual}, but was called as ${expected}. Use invokePlugin() for reply handlers and invokePluginStream() for streaming handlers.`\n },\n [SDK_SERVER_ERROR_CODES.PLUGIN_LOGGING_INVALID]: {\n name: 'PLUGIN_LOGGING_INVALID',\n message: (modelType, reason) => `Plugin \"${modelType}\" has invalid logging configuration: ${reason}`\n },\n [SDK_SERVER_ERROR_CODES.PLUGIN_DEFINITION_INVALID]: {\n name: 'PLUGIN_DEFINITION_INVALID',\n message: (modelType, details) => `Plugin definition invalid for \"${modelType}\": ${details}`\n },\n [SDK_SERVER_ERROR_CODES.PLUGIN_MODEL_TYPE_RESERVED]: {\n name: 'PLUGIN_MODEL_TYPE_RESERVED',\n message: (modelType) => `modelType \"${modelType}\" is reserved for built-in plugins`\n },\n [SDK_SERVER_ERROR_CODES.PLUGIN_LOAD_CONFIG_VALIDATION_FAILED]: {\n name: 'PLUGIN_LOAD_CONFIG_VALIDATION_FAILED',\n message: (modelType, details) => `modelConfig validation failed for \"${modelType}\": ${details}`\n },\n // Lifecycle (53,600-53,610)\n [SDK_SERVER_ERROR_CODES.LIFECYCLE_SUSPEND_FAILED]: {\n name: 'LIFECYCLE_SUSPEND_FAILED',\n message: (details) => `Runtime suspend failed${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.LIFECYCLE_RESUME_FAILED]: {\n name: 'LIFECYCLE_RESUME_FAILED',\n message: (details) => `Runtime resume failed${details ? `: ${details}` : ''}`\n },\n [SDK_SERVER_ERROR_CODES.LIFECYCLE_OPERATION_BLOCKED]: {\n name: 'LIFECYCLE_OPERATION_BLOCKED',\n message: (requestType, lifecycleState) => `Operation \"${requestType}\" is blocked while runtime state is \"${lifecycleState}\"`\n },\n // Security (53,900-53,949)\n [SDK_SERVER_ERROR_CODES.PATH_TRAVERSAL]: {\n name: 'PATH_TRAVERSAL',\n message: (component, basePath) => `Path traversal detected: \"${component}\" escapes base directory \"${basePath}\"`\n },\n // QVAC Model Registry Operations (53,950-54,000)\n // Note: Registry client errors (19,001-20,000) are re-thrown directly\n [SDK_SERVER_ERROR_CODES.QVAC_MODEL_REGISTRY_QUERY_FAILED]: {\n name: 'QVAC_MODEL_REGISTRY_QUERY_FAILED',\n message: (details) => `QVAC model registry query failed${details ? `: ${details}` : ''}`\n }\n};\naddCodes(serverErrorDefinitions, { name: 'qvac-sdk-server', version: '1.1.0' });\nexport { serverErrorDefinitions as SDK_SERVER_ERROR_DEFINITIONS };\nimport { z } from 'zod';\nexport const shardFileMetadataSchema = z.object({\n filename: z.string(),\n expectedSize: z.number(),\n sha256Checksum: z.string()\n});\nexport const shardUrlSchema = z.object({\n url: z.url(),\n filename: z.string()\n});\nexport const shardPatternInfoSchema = z.object({\n isSharded: z.boolean(),\n currentShard: z.number().optional(),\n totalShards: z.number().optional(),\n baseFilename: z.string().optional(),\n extension: z.string().optional()\n});\nimport { z } from 'zod';\nexport const lifecycleStateSchema = z.enum(['active', 'suspending', 'suspended', 'resuming']);\nexport const stateRequestSchema = z.object({\n type: z.literal('state')\n});\nexport const stateResponseSchema = z.object({\n type: z.literal('state'),\n state: lifecycleStateSchema\n});\nimport { z } from 'zod';\nexport const stopProvideRequestSchema = z\n .object({\n type: z.literal('stopProvide')\n})\n .strict();\nexport const stopProvideResponseSchema = z.object({\n type: z.literal('stopProvide'),\n success: z.boolean(),\n error: z.string().optional()\n});\nimport { z } from 'zod';\nexport const suspendRequestSchema = z.object({\n type: z.literal('suspend')\n});\nexport const suspendResponseSchema = z.object({\n type: z.literal('suspend')\n});\nimport { z } from 'zod';\nimport { modelSrcInputSchema } from './model-src-utils.js';\n// Chatterbox multilingual supported languages (23). The engines support\n// different language sets, so the language enum is validated per engine.\nexport const TTS_CHATTERBOX_LANGUAGES = [\n 'en', // English\n 'es', // Spanish\n 'fr', // French\n 'de', // German\n 'it', // Italian\n 'ja', // Japanese\n 'pt', // Portuguese\n 'nl', // Dutch\n 'pl', // Polish\n 'tr', // Turkish\n 'sv', // Swedish\n 'da', // Danish\n 'fi', // Finnish\n 'no', // Norwegian\n 'el', // Greek\n 'ms', // Malay\n 'sw', // Swahili\n 'ar', // Arabic\n 'ko', // Korean\n 'he', // Hebrew\n 'ru', // Russian\n 'zh', // Chinese\n 'hi' // Hindi\n];\n// Supertonic supported languages (31, as of Supertonic 3). Earlier Supertonic\n// releases (1/2) only cover a subset, but validation is per-engine, not\n// per-model, so the enum reflects the engine's current full capability.\nexport const TTS_SUPERTONIC_LANGUAGES = [\n 'en', // English\n 'ko', // Korean\n 'ja', // Japanese\n 'ar', // Arabic\n 'bg', // Bulgarian\n 'cs', // Czech\n 'da', // Danish\n 'de', // German\n 'el', // Greek\n 'es', // Spanish\n 'et', // Estonian\n 'fi', // Finnish\n 'fr', // French\n 'hi', // Hindi\n 'hr', // Croatian\n 'hu', // Hungarian\n 'id', // Indonesian\n 'it', // Italian\n 'lt', // Lithuanian\n 'lv', // Latvian\n 'nl', // Dutch\n 'pl', // Polish\n 'pt', // Portuguese\n 'ro', // Romanian\n 'ru', // Russian\n 'sk', // Slovak\n 'sl', // Slovenian\n 'sv', // Swedish\n 'tr', // Turkish\n 'uk', // Ukrainian\n 'vi' // Vietnamese\n];\n// Supertonic languages not already present in the Chatterbox set, used to keep\n// TTS_LANGUAGES a true union across engines without duplicates.\nconst TTS_SUPERTONIC_ONLY_LANGUAGES = [\n 'bg', // Bulgarian\n 'cs', // Czech\n 'et', // Estonian\n 'hr', // Croatian\n 'hu', // Hungarian\n 'id', // Indonesian\n 'lt', // Lithuanian\n 'lv', // Latvian\n 'ro', // Romanian\n 'sk', // Slovak\n 'sl', // Slovenian\n 'uk', // Ukrainian\n 'vi' // Vietnamese\n];\n// Union of all TTS-supported languages across engines. Kept for backwards\n// compatibility; prefer the engine-specific lists when validating a config.\nexport const TTS_LANGUAGES = [\n ...TTS_CHATTERBOX_LANGUAGES,\n ...TTS_SUPERTONIC_ONLY_LANGUAGES\n];\nconst ttsChatterboxLanguageSchema = z.enum(TTS_CHATTERBOX_LANGUAGES);\nconst ttsSupertonicLanguageSchema = z.enum(TTS_SUPERTONIC_LANGUAGES);\nconst ttsIntegerSchema = z.number().int();\nconst ttsNonNegativeIntegerSchema = ttsIntegerSchema.nonnegative();\nconst ttsPositiveIntegerSchema = ttsIntegerSchema.positive();\n// Desired output sample rate in Hz. Matches the @qvac/tts-ggml addon's\n// accepted range; omit to keep the engine's native rate (or 48 kHz when the\n// LavaSR enhancer is active). Supertonic-only: the Chatterbox engine does not\n// yet resample its output, so the field is not exposed on that config.\nconst ttsOutputSampleRateSchema = ttsIntegerSchema.min(8000).max(192000);\nexport const ttsChatterboxRuntimeConfigSchema = z.object({\n ttsEngine: z.literal('chatterbox'),\n language: ttsChatterboxLanguageSchema,\n voice: z.string().optional(),\n useGPU: z.boolean().optional(),\n // Chatterbox-only native streaming controls.\n streamChunkTokens: ttsNonNegativeIntegerSchema.optional(),\n streamFirstChunkTokens: ttsNonNegativeIntegerSchema.optional(),\n cfmSteps: ttsNonNegativeIntegerSchema.optional(),\n cfgRate: z.number().nonnegative().optional(),\n threads: ttsPositiveIntegerSchema.optional(),\n nGpuLayers: ttsIntegerSchema.optional(),\n seed: ttsIntegerSchema.optional()\n});\nexport const ttsSupertonicRuntimeConfigSchema = z.object({\n ttsEngine: z.literal('supertonic'),\n language: ttsSupertonicLanguageSchema,\n voice: z.string().optional(),\n ttsSpeed: z.number().optional(),\n ttsNumInferenceSteps: z.number().optional(),\n useGPU: z.boolean().optional(),\n outputSampleRate: ttsOutputSampleRateSchema.optional(),\n vulkanCacheDir: z.string().min(1).optional()\n});\nexport const ttsRuntimeConfigSchema = z.discriminatedUnion('ttsEngine', [\n ttsChatterboxRuntimeConfigSchema,\n ttsSupertonicRuntimeConfigSchema\n]);\n// Optional LavaSR post-processing model sources, shared across engines. Supply\n// the enhancer GGUF to bandwidth-extend the output to 48 kHz, and/or the\n// denoiser GGUF (runs before the enhancer, rate-preserving). Resolved to\n// artifacts by the plugin's resolveConfig and forwarded to @qvac/tts-ggml.\nconst ttsLavasrLoadFieldsShape = {\n lavasrEnhancerModelSrc: modelSrcInputSchema.optional(),\n lavasrDenoiserModelSrc: modelSrcInputSchema.optional()\n};\nexport const ttsChatterboxLoadConfigSchema = ttsChatterboxRuntimeConfigSchema.extend({\n // Optional at schema time so legacy ONNX configs (no s3genModelSrc) reach\n // the plugin's resolveConfig and raise LegacyTtsModelDeprecatedError.\n s3genModelSrc: modelSrcInputSchema.optional(),\n referenceAudioSrc: modelSrcInputSchema.optional(),\n mecabDictSrc: modelSrcInputSchema.optional(),\n cangjieTsvSrc: modelSrcInputSchema.optional(),\n ...ttsLavasrLoadFieldsShape\n});\nexport const ttsSupertonicLoadConfigSchema = ttsSupertonicRuntimeConfigSchema.extend({\n ...ttsLavasrLoadFieldsShape\n});\nfunction refineChatterboxTokenizerAssets(data, ctx) {\n if (data.ttsEngine !== 'chatterbox')\n return;\n if (data.language === 'ja' && data.mecabDictSrc === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['mecabDictSrc'],\n message: 'mecabDictSrc is required when Chatterbox language is \"ja\".'\n });\n }\n if (data.language === 'zh' && data.cangjieTsvSrc === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['cangjieTsvSrc'],\n message: 'cangjieTsvSrc is required when Chatterbox language is \"zh\".'\n });\n }\n}\nexport const ttsLoadConfigSchema = z\n .discriminatedUnion('ttsEngine', [ttsChatterboxLoadConfigSchema, ttsSupertonicLoadConfigSchema])\n .superRefine(refineChatterboxTokenizerAssets);\n// === Legacy ONNX modelConfig fields (deprecated) ===\n//\n// Pre-@qvac/tts-ggml multi-file ONNX `modelConfig` fields are kept ONLY so\n// callers migrating from earlier SDK versions hit a structured\n// `LegacyTtsModelDeprecatedError` from the TTS plugin's `resolveConfig`,\n// rather than a generic Zod `Unrecognized key` error.\nexport const LEGACY_TTS_ONNX_MODEL_CONFIG_FIELDS = [\n // ONNX runtime flag; GGML uses modelSrc (GGUF) + `language` instead.\n 'ttsSupertonicMultilingual',\n 'ttsTokenizerSrc',\n 'ttsSpeechEncoderSrc',\n 'ttsEmbedTokensSrc',\n 'ttsConditionalDecoderSrc',\n 'ttsLanguageModelSrc',\n 'ttsTextEncoderSrc',\n 'ttsDurationPredictorSrc',\n 'ttsVectorEstimatorSrc',\n 'ttsVocoderSrc',\n 'ttsUnicodeIndexerSrc',\n 'ttsTtsConfigSrc',\n 'ttsVoiceStyleSrc'\n];\nconst legacyTtsOnnxFieldsShape = LEGACY_TTS_ONNX_MODEL_CONFIG_FIELDS.reduce((acc, name) => {\n acc[name] = z.unknown().optional();\n return acc;\n}, {});\n// Strict load schema used by `loadModel` and the tts-ggml plugin's\n// `loadConfigSchema`. Permits deprecated ONNX field names so\n// `resolveConfig` can raise LegacyTtsModelDeprecatedError instead of a\n// generic Zod error; other unknown keys are still rejected by `.strict()`.\nexport const ttsConfigSchema = z\n .discriminatedUnion('ttsEngine', [\n ttsChatterboxLoadConfigSchema.extend(legacyTtsOnnxFieldsShape).strict(),\n ttsSupertonicLoadConfigSchema.extend(legacyTtsOnnxFieldsShape).strict()\n])\n .superRefine(refineChatterboxTokenizerAssets);\nexport const ttsClientParamsSchema = z.object({\n modelId: z.string(),\n inputType: z.string().default('text'),\n text: z.string().trim().min(1, 'text must not be empty or whitespace-only'),\n stream: z.boolean().default(true),\n sentenceStream: z.boolean().default(false),\n sentenceStreamLocale: z.string().optional(),\n sentenceStreamMaxChunkScalars: z.number().positive().optional()\n});\nexport const ttsRequestSchema = ttsClientParamsSchema.extend({\n type: z.literal('textToSpeech')\n});\nexport const ttsStatsSchema = z.object({\n audioDuration: z.number().optional(),\n totalSamples: z.number().optional(),\n enhancerBackendDevice: z.number().optional(),\n enhancerBackendId: z.number().optional()\n});\nexport const ttsResponseSchema = z.object({\n type: z.literal('textToSpeech'),\n buffer: z.array(z.number()),\n done: z.boolean().default(false),\n stats: ttsStatsSchema.optional(),\n chunkIndex: z.number().int().nonnegative().optional(),\n sentenceChunk: z.string().optional()\n});\n// Internal: kept un-exported to present a single request-schema surface to\n// consumers. The inferred `TextToSpeechStreamClientParams` type below uses\n// this shape via `typeof`, no runtime export needed.\nconst textToSpeechStreamRequestBaseSchema = z.object({\n modelId: z.string(),\n inputType: z.string().default('text'),\n accumulateSentences: z.boolean().optional(),\n sentenceDelimiterPreset: z.enum(['latin', 'cjk', 'multilingual']).optional(),\n maxBufferScalars: z.number().positive().optional(),\n flushAfterMs: z.number().positive().optional()\n});\nexport const textToSpeechStreamRequestSchema = textToSpeechStreamRequestBaseSchema.extend({\n type: z.literal('textToSpeechStream')\n});\nexport const textToSpeechStreamResponseSchema = z.object({\n type: z.literal('textToSpeechStream'),\n buffer: z.array(z.number()),\n done: z.boolean().default(false),\n stats: ttsStatsSchema.optional(),\n chunkIndex: z.number().int().nonnegative().optional(),\n sentenceChunk: z.string().optional()\n});\nimport { z } from 'zod';\n/**\n * `static` (default) — tools are prepended once after the system message and\n * shared across the chat session.\n * `dynamic` — tools are anchored after the last user message and trimmed\n * from the kv-cache once the tool-call chain resolves, so each user prompt\n * can carry its own tool set without poisoning the cache.\n *\n * Implementation detail: maps to the addon's `tools_compact` boolean. The\n * SDK uses the higher-level `static`/`dynamic` naming so the addon-side\n * mapping can change without breaking the public API.\n */\nexport const TOOLS_MODE = {\n static: 'static',\n dynamic: 'dynamic'\n};\nconst jsonSchemaEnumValueSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);\nexport const toolSchema = z.object({\n type: z.literal('function'),\n name: z.string(),\n description: z.string(),\n parameters: z.object({\n type: z.literal('object'),\n properties: z.record(z.string(), z.object({\n type: z.enum(['string', 'number', 'integer', 'boolean', 'object', 'array']),\n description: z.string().optional(),\n enum: z.array(jsonSchemaEnumValueSchema).optional()\n })),\n required: z.array(z.string()).optional()\n })\n});\nexport const toolCallSchema = z.object({\n id: z.string(),\n name: z.string(),\n arguments: z.record(z.string(), z.unknown()),\n raw: z.string().optional()\n});\nexport const toolCallErrorSchema = z.object({\n code: z.enum(['PARSE_ERROR', 'VALIDATION_ERROR', 'UNKNOWN_TOOL']),\n message: z.string(),\n raw: z.string().optional()\n});\nexport const toolCallEventSchema = z.union([\n z.object({\n type: z.literal('toolCall'),\n call: toolCallSchema\n }),\n z.object({\n type: z.literal('toolCallError'),\n error: toolCallErrorSchema\n })\n]);\nimport { z } from 'zod';\nimport { modelSrcInputSchema } from './model-src-utils.js';\n// === Shared ===\nexport const audioFormatSchema = z.enum(['f32le', 's16le']);\n// === Whisper (whisper.cpp) engine config ===\nconst vadParamsSchema = z\n .object({\n threshold: z.number().optional(),\n min_speech_duration_ms: z.number().optional(),\n min_silence_duration_ms: z.number().optional(),\n max_speech_duration_s: z.number().optional(),\n speech_pad_ms: z.number().optional(),\n samples_overlap: z.number().optional()\n})\n .optional();\nconst contextParamsSchema = z\n .object({\n model: z.string().optional(),\n use_gpu: z.boolean().optional(),\n flash_attn: z.boolean().optional(),\n gpu_device: z.number().optional()\n})\n .optional();\nconst miscConfigSchema = z\n .object({\n caption_enabled: z.boolean().optional()\n})\n .optional();\nexport const whisperConfigSchema = z.object({\n strategy: z.enum(['greedy', 'beam_search']).optional(),\n n_threads: z.number().int().optional(),\n n_max_text_ctx: z.number().int().optional(),\n offset_ms: z.number().int().optional(),\n duration_ms: z.number().int().optional(),\n audio_ctx: z.number().int().optional(),\n translate: z.boolean().optional(),\n no_context: z.boolean().optional(),\n no_timestamps: z.boolean().optional(),\n single_segment: z.boolean().optional(),\n print_special: z.boolean().optional(),\n print_progress: z.boolean().optional(),\n print_realtime: z.boolean().optional(),\n print_timestamps: z.boolean().optional(),\n token_timestamps: z.boolean().optional(),\n thold_pt: z.number().optional(),\n thold_ptsum: z.number().optional(),\n max_len: z.number().int().optional(),\n split_on_word: z.boolean().optional(),\n max_tokens: z.number().int().optional(),\n debug_mode: z.boolean().optional(),\n tdrz_enable: z.boolean().optional(),\n suppress_regex: z.string().optional(),\n initial_prompt: z.string().optional(),\n language: z.string().optional(),\n detect_language: z.boolean().optional(),\n suppress_blank: z.boolean().optional(),\n suppress_nst: z.boolean().optional(),\n temperature: z.number().optional(),\n length_penalty: z.number().optional(),\n temperature_inc: z.number().optional(),\n entropy_thold: z.number().optional(),\n logprob_thold: z.number().optional(),\n greedy_best_of: z.number().int().optional(),\n beam_search_beam_size: z.number().int().optional(),\n vad_params: vadParamsSchema,\n audio_format: audioFormatSchema.optional(),\n contextParams: contextParamsSchema,\n miscConfig: miscConfigSchema,\n vadModelSrc: modelSrcInputSchema.optional()\n});\n// === Parakeet (NVIDIA NeMo GGML) engine config ===\n//\n// Backed by the ggml-based qvac-parakeet.cpp engine. A single GGUF\n// checkpoint covers every variant (TDT, CTC, EOU, Sortformer); the\n// addon auto-detects the model type from `parakeet.model.type` GGUF\n// metadata, so callers no longer pass a `modelType` discriminator and\n// only ever supply a single `modelSrc` at `loadModel` time.\n//\n// The `streaming*` knobs below configure the addon at load time. To\n// override any of them per `transcribeStream` call, see\n// `parakeetStreamingRunConfigSchema` in `./transcription.ts` — the\n// per-call schema intentionally drops the `streaming` prefix because\n// every field on it is already namespaced under `parakeetStreamingConfig`.\nexport const parakeetRuntimeConfigSchema = z.object({\n maxThreads: z.number().int().optional(),\n useGPU: z.boolean().optional(),\n sampleRate: z.number().int().optional(),\n channels: z.number().int().optional(),\n captionEnabled: z.boolean().optional(),\n timestampsEnabled: z.boolean().optional(),\n seed: z.number().int().optional(),\n streaming: z.boolean().optional(),\n streamingChunkMs: z.number().int().positive().optional(),\n streamingHistoryMs: z.number().int().positive().optional(),\n streamingEmitPartials: z.boolean().optional(),\n /**\n * CTC/TDT-only energy-based voice-activity hint. Forwarded to\n * parakeet-cpp's `StreamingOptions::enable_energy_vad`. Influences\n * how the engine segments speech (segment cadence, partial vs final\n * emission) but does NOT add new event types to the transcribeStream\n * output. Use the whisper engine if you need standalone VAD\n * `speaking`/`probability` events.\n */\n streamingEnergyVad: z.boolean().optional(),\n streamingLeftContextMs: z.number().int().nonnegative().optional(),\n streamingRightLookaheadMs: z.number().int().nonnegative().optional(),\n // === AOSC (Audio-Online Speaker Cache; v2.1+ Sortformer only) =========\n // Auto-enabled when the loaded GGUF carries\n // `parakeet.model_variant == \"sortformer-streaming-v2.1-aosc\"`. Ignored\n // by v1/v2 Sortformer and by non-Sortformer engines.\n streamingSpkCacheEnable: z.boolean().optional(),\n streamingSpkCacheLen: z.number().int().positive().optional(),\n streamingFifoLen: z.number().int().positive().optional(),\n streamingChunkLeftContextMs: z.number().int().nonnegative().optional(),\n streamingChunkRightContextMs: z.number().int().nonnegative().optional(),\n streamingSpkCacheUpdatePeriod: z.number().int().positive().optional(),\n backendsDir: z.string().optional(),\n openclCacheDir: z.string().optional()\n});\n// Parakeet's load-time config currently has no fields beyond the\n// runtime knobs (single GGUF model is supplied via the top-level\n// `modelSrc` of `loadModel`). The alias is retained so consumers can\n// keep importing `ParakeetConfig` / `parakeetConfigSchema`.\nexport const parakeetConfigSchema = parakeetRuntimeConfigSchema;\n// === Parakeet legacy ONNX modelConfig fields (deprecated) ===\n//\n// As of @qvac/transcription-parakeet 0.6.0 the addon ships as a single\n// GGUF that auto-detects TDT / CTC / EOU / Sortformer from GGUF\n// metadata. The pre-0.4 multi-file ONNX `modelConfig` fields below are\n// kept ONLY so callers migrating from earlier SDK versions hit a\n// structured `LegacyParakeetModelDeprecatedError` (with a migration\n// message) raised from the parakeet plugin's `resolveConfig`, rather\n// than a generic Zod `Unrecognized key` error.\nexport const LEGACY_PARAKEET_ONNX_MODEL_CONFIG_FIELDS = [\n 'parakeetEncoderSrc',\n 'parakeetDecoderSrc',\n 'parakeetVocabSrc',\n 'parakeetPreprocessorSrc',\n 'parakeetCtcModelSrc',\n 'parakeetTokenizerSrc',\n 'parakeetSortformerSrc',\n 'parakeetModelSrc',\n 'modelType'\n];\nconst legacyParakeetOnnxFieldsShape = LEGACY_PARAKEET_ONNX_MODEL_CONFIG_FIELDS.reduce((acc, name) => {\n acc[name] = z.unknown().optional();\n return acc;\n}, {});\n// Strict schema used by `loadModel` and the parakeet plugin's\n// `loadConfigSchema`. Permits the deprecated ONNX field names so the\n// plugin's `resolveConfig` can raise a structured\n// `LegacyParakeetModelDeprecatedError` instead of a generic Zod error;\n// other unknown keys are still rejected by `.strict()`.\nexport const parakeetLoadConfigSchema = parakeetRuntimeConfigSchema\n .extend(legacyParakeetOnnxFieldsShape)\n .strict();\nimport { z } from 'zod';\nexport const audioInputSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('base64'),\n value: z.string()\n }),\n z.object({\n type: z.literal('filePath'),\n value: z.string()\n })\n]);\nconst transcribeBaseSchema = z.object({\n modelId: z.string(),\n /**\n * Initial transcription prompt. Whisper engine only — silently\n * ignored by the parakeet engine, which has no equivalent prompting\n * surface in `qvac-parakeet.cpp`.\n */\n prompt: z.string().optional(),\n metadata: z.boolean().optional()\n});\nexport const transcribeParamsSchema = transcribeBaseSchema.extend({\n audioChunk: audioInputSchema\n});\nexport const transcribeStatsSchema = z.object({\n audioDuration: z.number().optional(),\n realTimeFactor: z.number().optional(),\n tokensPerSecond: z.number().optional(),\n totalTokens: z.number().optional(),\n totalSegments: z.number().optional(),\n whisperEncodeTime: z.number().optional(),\n whisperDecodeTime: z.number().optional(),\n encoderTime: z.number().optional(),\n decoderTime: z.number().optional(),\n melSpecTime: z.number().optional(),\n // Backend selection captured once at model load.\n // `0` CPU / `1` GPU; `backendId` codes the GPU family (see the addon's\n // BackendId enum). gpu memory fields are `-1` when the backend exposes\n // no accounting, and absent entirely for the parakeet engine.\n backendDevice: z.number().optional(),\n backendId: z.number().optional(),\n gpuUnsupported: z.number().optional(),\n gpuMemTotalMb: z.number().optional(),\n gpuMemFreeMb: z.number().optional()\n});\nexport const transcribeSegmentSchema = z.object({\n text: z.string(),\n startMs: z.number(),\n endMs: z.number(),\n append: z.boolean(),\n id: z.number()\n});\nexport const vadStateEventSchema = z.object({\n speaking: z.boolean(),\n probability: z.number()\n});\nexport const whisperEndOfTurnEventSchema = z.object({\n source: z.literal('whisper'),\n silenceDurationMs: z.number()\n});\nexport const parakeetEndOfTurnEventSchema = z.object({\n source: z.literal('parakeet')\n});\nconst endOfTurnDiscriminatedSchema = z.discriminatedUnion('source', [\n whisperEndOfTurnEventSchema,\n parakeetEndOfTurnEventSchema\n]);\n/** Legacy whisper wire frames omitted `source` and only sent `silenceDurationMs`. */\nfunction normalizeEndOfTurnWire(value) {\n if (typeof value === 'object' &&\n value !== null &&\n !('source' in value) &&\n typeof value.silenceDurationMs === 'number') {\n return {\n source: 'whisper',\n silenceDurationMs: value.silenceDurationMs\n };\n }\n return value;\n}\nexport const endOfTurnEventSchema = z.preprocess(normalizeEndOfTurnWire, endOfTurnDiscriminatedSchema);\nexport const transcribeRequestSchema = transcribeParamsSchema.extend({\n type: z.literal('transcribe'),\n requestId: z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight transcription, generated by the client at call time. Surfaces on the registry so callers can target it with `cancel({ requestId })`. Optional on the wire — the server falls back to a server-generated id when the field is missing.')\n});\nconst transcriptionResultBase = z.object({\n text: z.string().optional(),\n done: z.boolean().optional(),\n stats: transcribeStatsSchema.optional(),\n error: z.string().optional(),\n segment: transcribeSegmentSchema.optional(),\n vad: vadStateEventSchema.optional(),\n endOfTurn: endOfTurnEventSchema.optional()\n});\nexport const transcribeResponseSchema = transcriptionResultBase.extend({\n type: z.literal('transcribe')\n});\n/**\n * Per-call overrides for parakeet's duplex streaming session.\n *\n * Each field maps to its `streaming*`-prefixed counterpart in\n * `parakeetConfig` (see `parakeetRuntimeConfigSchema`). The `streaming`\n * prefix is intentionally dropped here because every field on this\n * object is already namespaced under the `parakeetStreamingConfig`\n * field of `transcribeStream({ ... })`. Any field omitted falls back\n * to the load-time value.\n */\nexport const parakeetStreamingRunConfigSchema = z.object({\n chunkMs: z.number().int().positive().optional(),\n historyMs: z.number().int().positive().optional(),\n leftContextMs: z.number().int().nonnegative().optional(),\n rightLookaheadMs: z.number().int().nonnegative().optional(),\n emitPartials: z.boolean().optional(),\n emitEnergyVad: z.boolean().optional(),\n spkCacheEnable: z.boolean().optional(),\n spkCacheLen: z.number().int().positive().optional(),\n fifoLen: z.number().int().positive().optional(),\n chunkLeftContextMs: z.number().int().nonnegative().optional(),\n chunkRightContextMs: z.number().int().nonnegative().optional(),\n spkCacheUpdatePeriod: z.number().int().positive().optional()\n});\nexport const transcribeStreamRequestSchema = transcribeBaseSchema.extend({\n type: z.literal('transcribeStream'),\n emitVadEvents: z.boolean().optional(),\n endOfTurnSilenceMs: z\n .number()\n .int()\n .nonnegative()\n .optional()\n .describe('Silence (ms) before an endOfTurn event fires. 0 or unset disables end-of-turn detection entirely. Whisper engine only.'),\n vadRunIntervalMs: z.number().int().positive().optional(),\n parakeetStreamingConfig: parakeetStreamingRunConfigSchema.optional(),\n requestId: z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight duplex transcription, generated by the client at call time. Surfaces on the registry so callers can target it with `cancel({ requestId })`. Optional on the wire — the server falls back to a server-generated id when the field is missing.')\n});\nexport const transcribeStreamResponseSchema = transcriptionResultBase.extend({\n type: z.literal('transcribeStream')\n});\nimport { z } from 'zod';\nimport { nmtModelTypeSchema, llmModelTypeSchema, normalizeModelType } from './model-types.js';\nconst translateParamsNmtSchema = z.object({\n modelId: z.string().describe('The identifier of the NMT translation model to use.'),\n text: z\n .union([\n z.string().min(1, 'Text cannot be empty'),\n z.array(z.string().min(1, 'Text cannot be empty')).min(1, 'Array cannot be empty')\n ])\n .describe('The input text(s) to translate. A single string returns a single translation; an array returns one translation per input.'),\n stream: z\n .boolean()\n .describe('Whether to stream tokens (`true`) or resolve the complete translation once (`false`).'),\n modelType: nmtModelTypeSchema.describe('NMT model-type variant identifier.')\n});\nconst translateParamsLlmSchema = z.object({\n modelId: z.string().describe('The identifier of the LLM model used for translation.'),\n text: z.string().min(1, 'Text cannot be empty').describe('The input text to translate.'),\n stream: z\n .boolean()\n .describe('Whether to stream tokens (`true`) or resolve the complete translation once (`false`).'),\n modelType: llmModelTypeSchema.describe('LLM model-type variant identifier.'),\n from: z\n .string()\n .optional()\n .describe('Source language code. When omitted, the SDK attempts to auto-detect the source language.'),\n to: z.string().describe('Target language code.'),\n context: z\n .string()\n .optional()\n .describe('Optional translation context passed to the LLM as a system hint.')\n});\nconst translateParamsSchema = z.discriminatedUnion('modelType', [\n translateParamsNmtSchema,\n translateParamsLlmSchema\n]);\nexport const translationStatsSchema = z.object({\n // Common stats\n totalTime: z.number().optional().describe('Total translation time in milliseconds.'),\n totalTokens: z.number().optional().describe('Total tokens produced by the translation.'),\n tokensPerSecond: z.number().optional().describe('Tokens generated per second.'),\n timeToFirstToken: z\n .number()\n .optional()\n .describe('Time to first token in milliseconds (LLM translation only).'),\n // NMT-specific\n decodeTime: z.number().optional().describe('Time spent in the NMT decoder in milliseconds.'),\n encodeTime: z.number().optional().describe('Time spent in the NMT encoder in milliseconds.'),\n // LLM-specific\n cacheTokens: z\n .number()\n .optional()\n .describe('Tokens served from the KV cache during LLM translation.')\n});\nconst translateRequestIdField = z\n .string()\n .min(1)\n .optional()\n .describe('Stable identifier for this in-flight translation, generated by the client at call time. Surfaces on the registry so callers can target it with `cancel({ requestId })`. Optional on the wire — the server falls back to a server-generated id when the field is missing.');\nexport const translateRequestSchema = z.discriminatedUnion('modelType', [\n translateParamsNmtSchema\n .extend({\n type: z.literal('translate'),\n requestId: translateRequestIdField\n })\n .meta({ title: 'TranslateNmtRequest' }),\n translateParamsLlmSchema\n .extend({\n type: z.literal('translate'),\n requestId: translateRequestIdField\n })\n .meta({ title: 'TranslateLlmRequest' })\n]);\n// Valid model types for translation (aliases and canonical)\nconst validTranslationModelTypes = ['nmt', 'nmtcpp-translation', 'llm', 'llamacpp-completion'];\nconst llmModelTypes = ['llm', 'llamacpp-completion'];\n// Validates the translate server args and returns the model info\nexport const translateServerParamsSchema = translateParamsSchema\n .refine((data) => data.modelType && validTranslationModelTypes.includes(data.modelType), {\n message: 'Model type is not compatible with translation. Only LLM and NMT models are supported.'\n})\n .refine((data) => {\n if (!llmModelTypes.includes(data.modelType))\n return true;\n // For LLM, `to` is required; `from` is resolved by the worker\n // (explicit, else auto-detected in server/bare/ops/translate.ts), so an\n // absent `from` is valid here — it no longer has to arrive on the wire.\n const llmData = data;\n return !!llmData.to;\n}, {\n message: \"A 'to' language is required for LLM translation models\"\n})\n .transform((data) => ({\n ...data,\n modelType: normalizeModelType(data.modelType)\n}));\nexport const translateResponseSchema = z.object({\n type: z.literal('translate'),\n token: z.string(),\n done: z.boolean().optional(),\n stats: translationStatsSchema.optional(),\n error: z.string().optional()\n});\nimport { z } from 'zod';\nimport { modelSrcInputSchema } from './model-src-utils.js';\n// Bergamot supports many more language pairs\nexport const BERGAMOT_LANGUAGES = [\n 'en',\n 'ar',\n 'bg',\n 'ca',\n 'cs',\n 'de',\n 'es',\n 'et',\n 'fi',\n 'fr',\n 'hu',\n 'is',\n 'it',\n 'ja',\n 'ko',\n 'lt',\n 'lv',\n 'nl',\n 'pl',\n 'pt',\n 'ru',\n 'sk',\n 'sl',\n 'uk',\n 'zh',\n 'az',\n 'be',\n 'bn',\n 'bs',\n 'da',\n 'el',\n 'fa',\n 'gu',\n 'he',\n 'hi',\n 'hr',\n 'id',\n 'kn',\n 'ml',\n 'ms',\n 'mt',\n 'nb',\n 'nn',\n 'no',\n 're',\n 'ro',\n 'sq',\n 'sr',\n 'sv',\n 'ta',\n 'te',\n 'th',\n 'tr',\n 'vi'\n];\nexport const BERGAMOT_MODEL_RE = /^(.+\\/)model\\.([a-z]+)\\.intgemm\\.alphas\\.bin$/;\nexport const BERGAMOT_CJK_LANG_PAIRS = ['enja', 'enko', 'enzh'];\n// IndicTrans2 model languages\nexport const INDICTRANS_LANGUAGES = [\n 'asm_Beng', // Assamese\n 'ben_Beng', // Bengali\n 'brx_Deva', // Bodo\n 'doi_Deva', // Dogri\n 'eng_Latn', // English\n 'gom_Deva', // Konkani\n 'guj_Gujr', // Gujarati\n 'hin_Deva', // Hindi\n 'kan_Knda', // Kannada\n 'kas_Arab', // Kashmiri (Arabic)\n 'kas_Deva', // Kashmiri (Devanagari)\n 'mai_Deva', // Maithili\n 'mal_Mlym', // Malayalam\n 'mar_Deva', // Marathi\n 'mni_Beng', // Manipuri (Bengali)\n 'mni_Mtei', // Manipuri (Meitei)\n 'npi_Deva', // Nepali\n 'ory_Orya', // Odia\n 'pan_Guru', // Punjabi\n 'san_Deva', // Sanskrit\n 'sat_Olck', // Santali\n 'snd_Arab', // Sindhi (Arabic)\n 'snd_Deva', // Sindhi (Devanagari)\n 'tam_Taml', // Tamil\n 'tel_Telu', // Telugu\n 'urd_Arab' // Urdu\n];\nexport const AFRICAN_LANGUAGES_MAP = new Map([\n ['afr_Latn', 'Afrikaans'],\n ['swh_Latn', 'Swahili'],\n ['ary_Arab', 'Moroccan Arabic'],\n ['som_Latn', 'Somali'],\n ['amh_Ethi', 'Amharic'],\n ['arz_Arab', 'Egyptian Arabic'],\n ['hau_Latn', 'Hausa'],\n ['kin_Latn', 'Kinyarwanda'],\n ['zul_Latn', 'Zulu'],\n ['ibo_Latn', 'Igbo'],\n ['plt_Latn', 'Plateau Malagasy'],\n ['xho_Latn', 'Xhosa'],\n ['sna_Latn', 'Shona'],\n ['yor_Latn', 'Yoruba'],\n ['nya_Latn', 'Nyanja'],\n ['sot_Latn', 'Southern Sotho'],\n ['tir_Ethi', 'Tigrinya'],\n ['aeb_Arab', 'Tunisian Arabic'],\n ['gaz_Latn', 'Oromo'],\n ['tsn_Latn', 'Tswana']\n]);\n// Union of all NMT languages (for general type usage)\nexport const NMT_LANGUAGES = [...BERGAMOT_LANGUAGES, ...INDICTRANS_LANGUAGES];\nexport const NMT_ENGINES = ['Bergamot', 'IndicTrans'];\n// Common generation parameters (without language fields)\nconst nmtGenerationParamsSchema = z.object({\n mode: z.enum(['full']).optional(),\n beamsize: z.number().optional(),\n lengthpenalty: z.number().optional(),\n maxlength: z.number().optional(),\n repetitionpenalty: z.number().optional(),\n norepeatngramsize: z.number().optional(),\n temperature: z.number().optional(),\n topk: z.number().optional(),\n topp: z.number().optional()\n});\n// Pivot model configuration for Bergamot (for translation via intermediate language)\nconst bergamotPivotModelSchema = nmtGenerationParamsSchema\n .extend({\n modelSrc: modelSrcInputSchema,\n srcVocabSrc: modelSrcInputSchema.optional(),\n dstVocabSrc: modelSrcInputSchema.optional(),\n normalize: z.number().optional()\n})\n .optional();\n// Bergamot engine config - supports BERGAMOT_LANGUAGES\nconst bergamotConfigSchema = nmtGenerationParamsSchema.extend({\n engine: z.literal('Bergamot'),\n from: z.enum(BERGAMOT_LANGUAGES),\n to: z.enum(BERGAMOT_LANGUAGES),\n srcVocabSrc: modelSrcInputSchema.optional(),\n dstVocabSrc: modelSrcInputSchema.optional(),\n normalize: z.number().optional(),\n pivotModel: bergamotPivotModelSchema\n});\n// IndicTrans engine config - supports INDICTRANS_LANGUAGES\nconst indicTransConfigSchema = nmtGenerationParamsSchema.extend({\n engine: z.literal('IndicTrans'),\n from: z.enum(INDICTRANS_LANGUAGES),\n to: z.enum(INDICTRANS_LANGUAGES)\n});\n// Discriminated union of all engine configs\nexport const nmtConfigBaseSchema = z.discriminatedUnion('engine', [\n bergamotConfigSchema,\n indicTransConfigSchema\n]);\n// Apply defaults via transform\nexport const nmtConfigSchema = nmtConfigBaseSchema.transform((data) => ({\n ...data,\n mode: data.mode ?? 'full',\n beamsize: data.beamsize ?? 4,\n lengthpenalty: data.lengthpenalty ?? 1.0,\n maxlength: data.maxlength ?? 512,\n repetitionpenalty: data.repetitionpenalty ?? 1.0,\n norepeatngramsize: data.norepeatngramsize ?? 0,\n temperature: data.temperature ?? 0.3,\n topk: data.topk ?? 0,\n topp: data.topp ?? 1.0\n}));\nimport { z } from 'zod';\nexport const unloadModelParamsSchema = z.object({\n modelId: z.string(),\n clearStorage: z.boolean().default(false),\n autoClose: z.boolean().optional()\n});\nexport const unloadModelRequestSchema = z.object({\n type: z.literal('unloadModel'),\n modelId: z.string(),\n clearStorage: z.boolean().default(false)\n});\nexport const unloadModelResponseSchema = z.object({\n type: z.literal('unloadModel'),\n success: z.boolean(),\n error: z.string().optional(),\n hasActiveModels: z.boolean().optional(),\n hasActiveProviders: z.boolean().optional()\n});\nimport { z } from 'zod';\nconst BASE64_PATTERN = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n// ============================================\n// Load-time config\n// ============================================\nexport const vlaConfigSchema = z.object({\n backend: z\n .enum(['auto', 'cpu'])\n .optional()\n .describe('Backend selection passed to `VlaModel.load({ backend })`. ' +\n \"`'auto'` (default) prefers an accepted GPU (Vulkan / Metal / OpenCL) and falls back to CPU. \" +\n \"`'cpu'` forces CPU regardless of available accelerators.\"),\n verbosity: z\n .number()\n .int()\n .optional()\n .describe('Native log verbosity forwarded to the addon (0=ERROR, 1=WARN, 2=INFO, 3=DEBUG).')\n});\n// ============================================\n// Hparams (returned by the addon after load)\n// ============================================\nexport const vlaHparamsSchema = z.object({\n chunkSize: z.number().int().nonnegative(),\n actionDim: z.number().int().nonnegative(),\n maxActionDim: z.number().int().nonnegative(),\n maxStateDim: z.number().int().nonnegative(),\n tokenizerMaxLength: z.number().int().nonnegative(),\n visionImageSize: z.number().int().nonnegative(),\n numCameras: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Number of camera views the model expects (2 for SmolVLA and GR00T, 3 ' +\n 'for π₀.₅). Pass exactly this many preprocessed frames in `images`. ' +\n 'Optional for back-compat — older addon builds may omit it.'),\n stateInputMode: z\n .enum(['continuous', 'discrete'])\n .optional()\n .describe(\"How the robot state is consumed. `'continuous'` (SmolVLA, GR00T): the \" +\n '`state` Float32Array is projected by an in-model linear layer. ' +\n \"`'discrete'` (π₀.₅): the state is tokenised into the language prompt \" +\n 'and the `state` buffer is ignored — pass an empty `Float32Array(0)`. ' +\n 'Optional for back-compat.'),\n imageInputMode: z\n .enum(['pixels', 'patches'])\n .optional()\n .describe(\"How images are supplied. `'pixels'` (SmolVLA, π₀.₅): each `images` \" +\n 'entry is a `3 · imgWidth · imgHeight` CHW plane from ' +\n \"`vlaPreprocessImage`. `'patches'` (GR00T): each entry is a \" +\n 'pre-patchified buffer of length `imagePatchElems`. Optional for ' +\n 'back-compat.'),\n imagePatchElems: z\n .number()\n .int()\n .nonnegative()\n .optional()\n .describe(\"For patch-input models (`imageInputMode === 'patches'`), the exact \" +\n 'per-camera patch buffer length each `images` entry must have. Absent ' +\n 'for pixel-input models.')\n});\n// ============================================\n// Stats\n// ============================================\nexport const vlaStatsSchema = z.object({\n vision_ms: z.number().optional(),\n // Architecture-neutral prefill timings (emitted by both SmolVLA and π₀.₅).\n prefill_compute_ms: z.number().optional(),\n prefill_total_ms: z.number().optional(),\n // Legacy SmolVLA-named aliases for the prefill timings above; kept for\n // back-compat with consumers written against the original SmolVLA surface.\n smollm2_compute_ms: z.number().optional(),\n smollm2_total_ms: z.number().optional(),\n ode_ms: z.number().optional(),\n total_ms: z.number().optional(),\n backendDevice: z\n .number()\n .optional()\n .describe('0 = CPU backend, 1 = GPU backend (Vulkan / Metal / OpenCL).')\n});\n// ============================================\n// Run request / response (wire format)\n//\n// Typed arrays travel as base64-encoded ArrayBuffers because JSON-RPC can't\n// carry them natively. The client API helpers (`vla()` in client/api/vla.ts)\n// keep the consumer-facing `Float32Array | Int32Array | Uint8Array` shape\n// and handle the encoding internally.\n// ============================================\nexport const vlaRunRequestSchema = z.object({\n type: z.literal('vlaRun'),\n modelId: z.string(),\n images: z\n .array(z.string().min(1).regex(BASE64_PATTERN))\n .min(1)\n .describe('Base64-encoded preprocessed images, one per camera. Each entry is the ' +\n 'underlying ArrayBuffer of a `Float32Array`. For pixel-input models ' +\n '(SmolVLA, π₀.₅) it comes from `vlaPreprocessImage(...)` and its length ' +\n 'must equal `3 * imgWidth * imgHeight`. For patch-input models (GR00T, ' +\n \"`hparams.imageInputMode === 'patches'`) it is a pre-patchified buffer \" +\n 'of length `hparams.imagePatchElems`.'),\n imgWidth: z.number().int().positive(),\n imgHeight: z.number().int().positive(),\n state: z\n .string()\n .regex(BASE64_PATTERN)\n .describe('Base64-encoded `Float32Array`. For continuous-state models (SmolVLA, GR00T) ' +\n 'this is length `hparams.maxStateDim` — use ' +\n '`vlaPadState(state, hparams.maxStateDim)` to zero-pad. For ' +\n \"discrete-state models (π₀.₅, `stateInputMode: 'discrete'`) the state \" +\n 'is tokenised into the prompt and this buffer is ignored — encode an ' +\n 'empty `Float32Array(0)` (which is the empty string).'),\n tokens: z\n .string()\n .min(1)\n .regex(BASE64_PATTERN)\n .describe('Base64-encoded `Int32Array` of length `hparams.tokenizerMaxLength`.'),\n mask: z\n .string()\n .min(1)\n .regex(BASE64_PATTERN)\n .describe('Base64-encoded `Uint8Array` of length `hparams.tokenizerMaxLength`.'),\n noise: z\n .string()\n .min(1)\n .regex(BASE64_PATTERN)\n .optional()\n .describe('Optional base64-encoded `Float32Array` of length ' +\n '`hparams.chunkSize * hparams.maxActionDim`. When omitted the addon ' +\n 'samples its own prior.')\n});\nexport const vlaRunResponseSchema = z.object({\n actions: z\n .string()\n .min(1)\n .regex(BASE64_PATTERN)\n .describe('Base64-encoded `Float32Array` of length `hparams.chunkSize * hparams.actionDim`.'),\n actionDim: z.number().int().positive(),\n chunkSize: z.number().int().positive(),\n stats: vlaStatsSchema.optional()\n});\n// ============================================\n// Hparams request / response (plugin handler)\n// ============================================\nexport const vlaHparamsRequestSchema = z.object({\n type: z.literal('vlaHparams'),\n modelId: z.string()\n});\nexport const vlaHparamsResponseSchema = z.object({\n hparams: vlaHparamsSchema,\n backendName: z.string().nullable()\n});\nimport { withTimeout } from '../../utils/withTimeout.js';\nimport { getServerLogger } from '../../logging/index.js';\nconst logger = getServerLogger();\nexport const DHT_BOOTSTRAP_WAIT_CAP_MS = 5000;\n// A cold routing table makes findPeer return empty -> spurious PEER_NOT_FOUND,\n// so wait for bootstrap, but only when not yet ready to keep warm-path latency.\nexport async function ensureDhtBootstrapped(dht, timeout) {\n if (dht.bootstrapped)\n return;\n const cap = timeout === undefined ? DHT_BOOTSTRAP_WAIT_CAP_MS : Math.min(timeout, DHT_BOOTSTRAP_WAIT_CAP_MS);\n try {\n await withTimeout(dht.fullyBootstrapped(), cap);\n }\n catch (error) {\n logger.warn(`DHT not bootstrapped within ${cap}ms before delegated connect; attempting anyway`, { error });\n }\n}\n// Map an opaque DHT connect error onto why the peer was unreachable: not found\n// on the DHT vs found-but-un-holepunchable. Relays only bridge after a peer is\n// found, so they can never resolve a PEER_NOT_FOUND.\nexport function describeConnectFailure(error, publicKey, relayCount) {\n const code = typeof error === 'object' && error !== null && 'code' in error ? String(error.code) : undefined;\n const relayNote = relayCount > 0 ? `${relayCount} swarm relay(s) configured` : 'no swarm relays configured';\n switch (code) {\n case 'PEER_NOT_FOUND':\n return `provider ${publicKey} was not found on the DHT — it may be offline, still bootstrapping, or unreachable from this network. Relays bridge a connection only after the provider is located, so they cannot find an unannounced provider (${relayNote}).`;\n case 'PEER_CONNECTION_FAILED':\n case 'CANNOT_HOLEPUNCH':\n case 'REMOTE_NOT_HOLEPUNCHABLE':\n case 'REMOTE_NOT_HOLEPUNCHING':\n case 'HOLEPUNCH_ABORTED':\n case 'HOLEPUNCH_PROBE_TIMEOUT':\n case 'HOLEPUNCH_DOUBLE_RANDOMIZED_NATS':\n return `provider ${publicKey} was found but a connection could not be established (NAT/holepunch failure: ${code}; ${relayNote}).`;\n default:\n return error instanceof Error ? error.message : String(error);\n }\n}\nimport { getSwarm } from './hyperswarm.js';\nimport { getSDKConfig } from './registry/config-registry.js';\nimport { ensureDhtBootstrapped, describeConnectFailure } from './delegate-connect-diagnostics.js';\nimport RPC from 'bare-rpc';\nimport { withTimeout } from '../../utils/withTimeout.js';\nimport { DelegateConnectionFailedError } from '../../utils/errors-server.js';\nimport { getServerLogger } from '../../logging/index.js';\nimport { nowMs } from '../../profiling/index.js';\nimport { cacheDelegationConnectionTime, clearPeerConnectionTracking } from '../rpc/profiling/delegation-profiler.js';\nimport { getNextCommandId } from '../rpc/rpc-utils.js';\nimport { Buffer } from 'bare-buffer';\nconst logger = getServerLogger();\nconst activeRPCs = new Map();\nconst activeConnections = new Map();\n// In-flight `ensureRPCConnection` promises keyed by peer. Concurrent\n// `getRPC(publicKey)` callers (without `forceNewConnection`) join the same\n// promise instead of each running their own bootstrap+connect, which would\n// open multiple sockets, clobber the active maps, and leak the loser.\nconst inflightConnections = new Map();\nconst HEALTH_CHECK_TIMEOUT_MS = 1500;\nfunction getConfiguredRelayCount() {\n return getSDKConfig().swarmRelays?.length ?? 0;\n}\nfunction isHeartbeatResponse(payload) {\n return (typeof payload === 'object' &&\n payload !== null &&\n payload['type'] === 'heartbeat');\n}\nasync function isRPCConnectionHealthy(rpc, timeout = HEALTH_CHECK_TIMEOUT_MS) {\n try {\n const req = rpc.request(getNextCommandId());\n req.send(JSON.stringify({ type: 'heartbeat' }), 'utf-8');\n const response = await withTimeout(req.reply('utf-8'), timeout);\n const payload = JSON.parse(response?.toString() || '{}');\n return isHeartbeatResponse(payload);\n }\n catch (error) {\n logger.debug('RPC health check failed', { error });\n return false;\n }\n}\nfunction trackConnection(publicKey, conn, rpc) {\n activeRPCs.set(publicKey, rpc);\n activeConnections.set(publicKey, conn);\n conn.on('close', () => {\n logger.debug(`Connection closed for peer: ${publicKey}`);\n if (activeConnections.get(publicKey) === conn) {\n activeConnections.delete(publicKey);\n activeRPCs.delete(publicKey);\n clearPeerConnectionTracking(publicKey);\n }\n });\n conn.on('error', (err) => {\n logger.error(`Connection error for peer ${publicKey}:`, err);\n if (activeConnections.get(publicKey) === conn) {\n activeConnections.delete(publicKey);\n activeRPCs.delete(publicKey);\n clearPeerConnectionTracking(publicKey);\n }\n });\n}\nasync function closeConnection(publicKey) {\n const existingConnection = activeConnections.get(publicKey);\n if (!existingConnection)\n return;\n logger.info(`🔌 Closing existing connection for peer: ${publicKey}`);\n // Wait for the close event before returning so any pending cleanup\n // in the underlying DHT stream completes before we reconnect.\n await new Promise((resolve) => {\n existingConnection.once('close', () => resolve());\n existingConnection.destroy();\n });\n if (activeConnections.get(publicKey) === existingConnection) {\n activeConnections.delete(publicKey);\n activeRPCs.delete(publicKey);\n clearPeerConnectionTracking(publicKey);\n }\n}\n// Open a direct DHT connection to a peer by public key. Bypasses topic\n// discovery entirely — we already know who we're talking to, so we skip\n// swarm.join()/flush() and let the DHT route by public key.\nfunction openDhtConnection(publicKey) {\n const swarm = getSwarm();\n const relayThrough = swarm.relayThrough ? swarm.relayThrough(false, swarm) : null;\n return swarm.dht.connect(Buffer.from(publicKey, 'hex'), {\n keyPair: swarm.keyPair,\n relayThrough\n });\n}\n// Resolve when the DHT connection emits \"open\"; reject promptly on \"error\"\n// or \"close\" so firewall-rejected / abruptly-closed connects fail fast\n// instead of dragging out the full delegate timeout (60s on cold paths).\nfunction waitForOpen(conn, timeout) {\n const opened = new Promise((resolve, reject) => {\n const cleanup = () => {\n conn.removeListener('open', onOpen);\n conn.removeListener('error', onError);\n conn.removeListener('close', onClose);\n };\n const onOpen = () => {\n cleanup();\n resolve();\n };\n const onError = (err) => {\n cleanup();\n reject(err);\n };\n const onClose = () => {\n cleanup();\n reject(new DelegateConnectionFailedError('Connection closed before open (peer unreachable or rejected by firewall)'));\n };\n conn.once('open', onOpen);\n conn.once('error', onError);\n conn.once('close', onClose);\n });\n return withTimeout(opened, timeout);\n}\nasync function ensureRPCConnection(publicKey, timeout, healthCheckTimeout) {\n const healthCheckCap = healthCheckTimeout ?? HEALTH_CHECK_TIMEOUT_MS;\n const operationStart = nowMs();\n const getRemainingTimeout = () => {\n if (timeout === undefined)\n return undefined;\n return Math.max(timeout - (nowMs() - operationStart), 0);\n };\n const existingRpc = activeRPCs.get(publicKey);\n if (existingRpc) {\n const remainingTimeout = getRemainingTimeout();\n const probeTimeout = remainingTimeout === undefined\n ? healthCheckCap\n : Math.min(remainingTimeout / 2, healthCheckCap);\n const isHealthy = await isRPCConnectionHealthy(existingRpc, probeTimeout);\n if (isHealthy) {\n return existingRpc;\n }\n logger.info(`🧹 Cached RPC failed health check for peer ${publicKey}, reconnecting`);\n cleanupStaleConnection(publicKey);\n }\n const connectionStart = nowMs();\n let conn;\n const relayCount = getConfiguredRelayCount();\n try {\n logger.info(`🔗 Establishing direct DHT connection to peer: ${publicKey}${timeout ? `, timeout: ${timeout}ms` : ''} (${relayCount} swarm relay(s) configured)`);\n await ensureDhtBootstrapped(getSwarm().dht, getRemainingTimeout());\n conn = openDhtConnection(publicKey);\n await waitForOpen(conn, getRemainingTimeout());\n logger.info(`🍺 Peer connection opened: ${publicKey}`);\n const rpc = new RPC(conn, () => {\n // No-op handler since we're only sending requests, not receiving them\n });\n trackConnection(publicKey, conn, rpc);\n const connectionDuration = nowMs() - connectionStart;\n cacheDelegationConnectionTime(publicKey, connectionDuration);\n return rpc;\n }\n catch (error) {\n if (conn && !conn.destroyed) {\n conn.destroy();\n }\n cleanupStaleConnection(publicKey);\n logger.error('Failed to establish RPC connection:', error);\n throw new DelegateConnectionFailedError(`RPC connection failed: ${describeConnectFailure(error, publicKey, relayCount)}`, error);\n }\n}\n// Create an RPC instance for a specific HyperSwarm peer.\n// Connects directly via the DHT using the peer's public key — no topic\n// discovery required.\n//\n// Concurrent calls for the same peer share a single in-flight bootstrap +\n// connect operation, but each caller still gets its own `timeout` enforced\n// against the shared promise (via `withTimeout`) — so a fast caller that\n// gives up at 5s does not block a slow caller waiting up to 60s.\n//\n// `forceNewConnection` always tears down the existing socket first and\n// starts a fresh attempt outside the shared promise.\nexport async function getRPC(publicKey, options = {}) {\n if (options.forceNewConnection) {\n await closeConnection(publicKey);\n return await ensureRPCConnection(publicKey, options.timeout, options.healthCheckTimeout);\n }\n let inflight = inflightConnections.get(publicKey);\n if (!inflight) {\n inflight = ensureRPCConnection(publicKey, options.timeout, options.healthCheckTimeout);\n const tracked = inflight;\n inflightConnections.set(publicKey, tracked);\n // Clear the inflight entry on settle. We register a single combined\n // settle handler via `then(handler, handler)` so that on rejection the\n // failure is *observed* on `tracked` itself — using `tracked.finally(...)`\n // returns a fresh promise that re-rejects with the original error, and\n // since nothing awaits that fresh promise it would surface as an\n // unhandled rejection. The worker treats unhandled rejections as fatal\n // and tears down the swarm + cancels all in-flight downloads, which then\n // breaks the legitimate fallback-to-local path that the caller awaits via\n // `withTimeout(inflight, ...)` below. Caller still observes the original\n // rejection through `await withTimeout(inflight, ...)`.\n const clearInflight = () => {\n if (inflightConnections.get(publicKey) === tracked) {\n inflightConnections.delete(publicKey);\n }\n };\n tracked.then(clearInflight, clearInflight);\n }\n return await withTimeout(inflight, options.timeout);\n}\n/**\n * Remove a stale RPC connection for a peer.\n * Called when a delegation request fails (e.g., timeout) so the next\n * attempt creates a fresh connection instead of reusing a dead RPC.\n */\nexport function cleanupStaleConnection(publicKey) {\n logger.info(`🗑️ Removing stale connection for peer: ${publicKey} after failed delegation`);\n activeRPCs.delete(publicKey);\n const conn = activeConnections.get(publicKey);\n if (conn) {\n conn.destroy();\n activeConnections.delete(publicKey);\n }\n clearPeerConnectionTracking(publicKey);\n}\nimport env from 'bare-env';\nimport Hyperswarm from 'hyperswarm';\nimport crypto from 'bare-crypto';\nimport { envSchema } from '../../schemas/provide.js';\nimport { getSDKConfig } from './registry/config-registry.js';\nimport { registerSwarm, unregisterSwarm } from './runtime-lifecycle.js';\nimport { getServerLogger } from '../../logging/index.js';\nimport { Buffer } from 'bare-buffer';\nconst logger = getServerLogger();\nfunction getHyperswarmSeedBuffer() {\n const parsedEnv = envSchema.safeParse(env);\n if (parsedEnv.success) {\n return Buffer.from(parsedEnv.data.QVAC_HYPERSWARM_SEED, 'hex');\n }\n else {\n logger.info(`🎲 No seed provided, generating random seed (provider will have random identity)`);\n return crypto.randomBytes(32);\n }\n}\nfunction createFirewallFunction(config) {\n if (!config || config.publicKeys.length === 0) {\n return () => false;\n }\n const { mode, publicKeys } = config;\n const publicKeySet = new Set(publicKeys);\n return (remotePublicKey) => {\n const remoteKeyHex = remotePublicKey.toString('hex');\n if (mode === 'allow') {\n const allowed = publicKeySet.has(remoteKeyHex);\n if (!allowed) {\n logger.debug(`🚫 Firewall: Denied connection from ${remoteKeyHex.substring(0, 16)}... (not in allowlist)`);\n }\n else {\n logger.debug(`✅ Firewall: Allowed connection from ${remoteKeyHex.substring(0, 16)}... (in allowlist)`);\n }\n return !allowed;\n }\n else {\n const denied = publicKeySet.has(remoteKeyHex);\n if (denied) {\n logger.debug(`🚫 Firewall: Denied connection from ${remoteKeyHex.substring(0, 16)}... (in denylist)`);\n }\n else {\n logger.debug(`✅ Firewall: Allowed connection from ${remoteKeyHex.substring(0, 16)}... (not in denylist)`);\n }\n return denied;\n }\n };\n}\nfunction createSwarm(firewallConfig) {\n const seed = getHyperswarmSeedBuffer();\n const firewall = createFirewallFunction(firewallConfig);\n const getRelays = () => {\n const config = getSDKConfig();\n const relayPublicKeys = config.swarmRelays;\n if (!relayPublicKeys || relayPublicKeys.length === 0) {\n return null;\n }\n return relayPublicKeys.map((key) => Buffer.from(key, 'hex'));\n };\n const swarmOptions = { seed, firewall, relayThrough: getRelays };\n return new Hyperswarm(swarmOptions);\n}\nlet swarm = null;\n// Delegation is always 1:1 (single provider service per SDK instance), but we\n// still use a counter to be resilient against duplicate provide/stopProvide\n// calls and to avoid ever reporting \"no active providers\" while one is still\n// running.\nlet activeProviderCount = 0;\nexport function getSwarm({ firewallConfig } = {}) {\n if (swarm) {\n return swarm;\n }\n swarm = createSwarm(firewallConfig);\n registerSwarm(swarm, { label: 'shared-swarm', createdAt: Date.now() });\n return swarm;\n}\nexport function registerProvider() {\n activeProviderCount++;\n}\nexport function unregisterProvider() {\n if (activeProviderCount > 0)\n activeProviderCount--;\n}\nexport function hasActiveProviders() {\n return activeProviderCount > 0;\n}\nexport async function destroySwarm() {\n if (!swarm)\n return;\n const ref = swarm;\n swarm = null;\n try {\n await ref.destroy();\n unregisterSwarm(ref);\n activeProviderCount = 0;\n }\n catch (error) {\n if (swarm === null)\n swarm = ref;\n throw error;\n }\n}\nimport { getModel } from '../registry/model-registry.js';\nimport { cancelInferenceBaseSchema } from '../../../schemas/index.js';\nimport { ModelNotLoadedError } from '../../../utils/errors-server.js';\nimport { getRequestRegistry } from '../runtime/index.js';\nimport { getServerLogger } from '../../../logging/index.js';\nconst logger = getServerLogger();\n/**\n * Broad cancel: abort every in-flight request matching `modelId` (and\n * optionally a `kind`). Maps onto `RequestRegistry.cancel({ modelId })`\n * — the registry walks active contexts and aborts each one's signal,\n * which each handler has wired to its own addon-level / async unwind\n * via the registry's `await using ctx = registry.begin(...)` block.\n *\n * Kept as a stable surface alongside the new `cancel({ requestId })`\n * path: the caller may not have a `requestId` to hand (model unload,\n * app shutdown, admin sweeps), and the escape hatch is cheap because\n * the registry already does the matching.\n *\n * Returns the number of contexts whose abort was triggered by *this*\n * call (already-cancelled contexts are skipped so callers can rely on\n * the count to log \"n requests cancelled\" once). Used by the RPC\n * cancel handler to populate `CancelResponse.cancelled` and by\n * internal server-side callers that want to know whether anything\n * landed.\n *\n * The legacy pre-registry addon-cancel fallback was removed in 0.11.0\n * once every handler had been migrated onto the registry; the function\n * now does exactly one thing — a registry walk.\n */\nexport function cancel(params, opts) {\n const { modelId } = cancelInferenceBaseSchema.parse(params);\n const model = getModel(modelId);\n if (!model) {\n throw new ModelNotLoadedError(modelId);\n }\n const registry = getRequestRegistry();\n const target = opts?.kind ? { modelId, kind: opts.kind } : { modelId };\n const cancelled = registry.cancel(target);\n if (cancelled === 0) {\n // Callers (workbench \"Stop\" button, app shutdown sweeps) often\n // fire-and-forget; log so operators can see when a broad cancel\n // landed against a registry with nothing in flight on this model.\n logger.debug(`[cancel] no in-flight request matched modelId=${modelId}${opts?.kind ? ` kind=${opts.kind}` : ''}`);\n }\n return cancelled;\n}\nvar __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n};\nvar __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {\n return function (env) {\n function fail(e) {\n env.error = env.hasError ? new SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n };\n})(typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n});\nimport { getModel } from '../registry/model-registry.js';\nimport { embedParamsSchema } from '../../../schemas/index.js';\nimport { buildUnaryResult } from '../../../profiling/model-execution.js';\nimport { EmbedNoEmbeddingsError, EmbedFailedError, InferenceCancelledError } from '../../../utils/errors-server.js';\nimport { nowMs } from '../../../profiling/index.js';\nimport { getRequestRegistry, withRequestContext } from '../runtime/index.js';\nimport { generateServerRequestId } from '../runtime/request-id.js';\nimport { getServerLogger } from '../../../logging/index.js';\nexport async function embed(params, requestId) {\n const env_1 = { stack: [], error: void 0, hasError: false };\n try {\n const { modelId, text } = embedParamsSchema.parse(params);\n // Open a request-scoped lifecycle. The registry routes\n // `cancel({ requestId })` and broad `cancel({ modelId, kind: \"embeddings\" })`\n // straight to this context's signal. Falls back to a server-generated\n // id if the client didn't send one (older releases).\n const ctx = __addDisposableResource(env_1, await getRequestRegistry().begin({\n requestId: requestId ?? generateServerRequestId(),\n kind: 'embeddings',\n modelId\n })\n // `requestLogger` is intentionally referenced once so the\n // request-scoped logger is built at handler entry per the canonical\n // shape, even when this op has no per-step emits beyond the\n // registry's own lifecycle lines. Future addon-level warns inside\n // this body should route through `requestLogger`.\n , true);\n // `requestLogger` is intentionally referenced once so the\n // request-scoped logger is built at handler entry per the canonical\n // shape, even when this op has no per-step emits beyond the\n // registry's own lifecycle lines. Future addon-level warns inside\n // this body should route through `requestLogger`.\n const requestLogger = withRequestContext(getServerLogger(), ctx);\n const model = getModel(modelId);\n // Hard-cancel wiring: llamacpp-embedding declares\n // `cancel: { scope: \"model\", hard: true }`. The signal listener\n // forwards an abort to the addon so C++ work stops as soon as the\n // user cancels — mirrors the canonical handler shape documented in\n // `request-lifecycle-primitives.mdc`. The post-await\n // `signal.aborted` checks below are the soft-cancel safety net for\n // the case where the abort fires between `model.run(...)` returning\n // and `response.await()` resolving (both can take seconds on large\n // batches).\n const onAbort = () => {\n const addon = model.addon;\n if (addon?.cancel) {\n addon.cancel.call(addon).catch((err) => {\n requestLogger.warn(`[cancel] addon.cancel() rejected during abort for modelId=${modelId}: ${err instanceof Error ? err.message : String(err)}`);\n });\n }\n };\n ctx.signal.addEventListener('abort', onAbort, { once: true });\n // `{ once: true }` does not fire if the signal is already aborted at\n // register time. The registry may abort synchronously when a\n // cancel-before-begin race resolves or the parent signal was pre-\n // aborted — re-use `onAbort` so the listener body is the single\n // source of truth for \"what cancel does.\"\n if (ctx.signal.aborted)\n onAbort();\n ctx.scope.defer(() => {\n ctx.signal.removeEventListener('abort', onAbort);\n });\n const modelStart = nowMs();\n const response = (await model.run(text));\n if (ctx.signal.aborted) {\n throw new InferenceCancelledError(ctx.requestId);\n }\n const rawEmbeddings = await response.await();\n if (ctx.signal.aborted) {\n throw new InferenceCancelledError(ctx.requestId);\n }\n const modelExecutionMs = nowMs() - modelStart;\n const stats = {\n ...(response.stats?.total_time_ms !== undefined && { totalTime: response.stats.total_time_ms }),\n ...(response.stats?.tokens_per_second !== undefined && {\n tokensPerSecond: response.stats.tokens_per_second\n }),\n ...(response.stats?.total_tokens !== undefined && { totalTokens: response.stats.total_tokens }),\n ...(response.stats?.backendDevice !== undefined && {\n backendDevice: response.stats.backendDevice\n }),\n ...(response.stats?.context_size !== undefined && { contextSize: response.stats.context_size })\n };\n const embeddingsArray = rawEmbeddings[0];\n if (Array.isArray(text)) {\n if (!embeddingsArray || embeddingsArray.length === 0) {\n throw new EmbedNoEmbeddingsError();\n }\n const embedding = embeddingsArray.map((embeddingVector) => {\n if (!embeddingVector || embeddingVector.length === 0) {\n throw new EmbedNoEmbeddingsError();\n }\n return normalizeVector(embeddingVector);\n });\n return buildUnaryResult({ embedding }, modelExecutionMs, stats);\n }\n else {\n const embeddingVector = embeddingsArray?.[0];\n if (!embeddingVector || embeddingVector.length === 0) {\n throw new EmbedNoEmbeddingsError();\n }\n return buildUnaryResult({ embedding: normalizeVector(embeddingVector) }, modelExecutionMs, stats);\n }\n }\n catch (e_1) {\n env_1.error = e_1;\n env_1.hasError = true;\n }\n finally {\n const result_1 = __disposeResources(env_1);\n if (result_1)\n await result_1;\n }\n}\nexport function normalizeVector(vector) {\n let sumOfSquares = 0;\n for (let i = 0; i < vector.length; i++) {\n const value = vector[i];\n if (!Number.isFinite(value)) {\n throw new EmbedFailedError(`NormalizeVector: non-finite value at index ${i}: ${value}`);\n }\n sumOfSquares += value * value;\n }\n const magnitude = Math.sqrt(sumOfSquares);\n const EPS_ZERO = 1e-12;\n const UNIT_TOL = 1e-4;\n // Handle bad norms\n if (!Number.isFinite(magnitude) || magnitude < EPS_ZERO) {\n return new Array(vector.length).fill(0);\n }\n // Early exit: already ~unit length\n if (Math.abs(magnitude - 1) <= UNIT_TOL) {\n return Array.from(vector);\n }\n const inverseMagnitude = 1 / magnitude;\n const normalizedVector = new Array(vector.length);\n for (let i = 0; i < vector.length; i++) {\n normalizedVector[i] = vector[i] * inverseMagnitude;\n }\n return normalizedVector;\n}\nimport crypto from 'bare-crypto';\nimport { promises as fsPromises } from 'bare-fs';\nimport path from 'bare-path';\nimport { getAutoCacheLookupHistory, getKVCacheDir, validateAndJoinPath } from '../../utils/index.js';\nimport { getServerLogger } from '../../../logging/index.js';\nimport { Buffer } from 'bare-buffer';\nconst logger = getServerLogger();\n// In-memory KV-cache state lives in `KvCacheSession` (the single\n// mutation point for all three KV-cache bookkeeping layers). This\n// module keeps only the pure path / hash utilities that don't touch\n// in-memory state.\nexport function extractSystemPrompt(messages) {\n const systemMessage = messages.find((msg) => msg.role === 'system');\n return systemMessage ? systemMessage.content : null;\n}\nfunction getToolNamesForHash(tools) {\n if (!Array.isArray(tools))\n return [];\n return tools\n .map((t) => t.name)\n .filter((n) => typeof n === 'string')\n .sort();\n}\n// Cache hash based on system prompt + tool names\n// Different tools = different cache (tools anchored in first message, protected from n_discarded)\nexport function generateConfigHash(systemPrompt, tools) {\n const hash = crypto.createHash('sha-256');\n const toolNames = getToolNamesForHash(tools);\n hash.update(Buffer.from(JSON.stringify({ systemPrompt, toolNames }), 'utf8'));\n return hash.digest('hex').substring(0, 16);\n}\nexport function generateCacheKey(messages) {\n const hash = crypto.createHash('sha-256');\n const historyString = JSON.stringify(messages);\n const historyBuffer = Buffer.from(historyString, 'utf8');\n hash.update(historyBuffer);\n const hashString = hash.digest('hex');\n return hashString.substring(0, 16);\n}\nexport async function getCacheFilePath(modelId, configHash, cacheKey) {\n const cacheDir = getKVCacheDir();\n const sessionCacheDir = validateAndJoinPath(cacheDir, cacheKey);\n const modelCacheDir = validateAndJoinPath(sessionCacheDir, modelId);\n try {\n await fsPromises.mkdir(sessionCacheDir, { recursive: true });\n await fsPromises.mkdir(modelCacheDir, { recursive: true });\n }\n catch {\n // Ignore if directories already exist\n }\n return path.join(modelCacheDir, `${configHash}.bin`);\n}\n// Used for auto-generated cache key\nexport async function findMatchingCache(modelId, configHash, currentHistory) {\n if (currentHistory.length <= 1) {\n return null;\n }\n const previousHistory = getAutoCacheLookupHistory(currentHistory);\n const cacheKey = generateCacheKey(previousHistory);\n const cachePath = await getCacheFilePath(modelId, configHash, cacheKey);\n try {\n await fsPromises.access(cachePath);\n return { cacheKey, cachePath };\n }\n catch {\n return null;\n }\n}\nexport async function getCurrentCacheInfo(modelId, configHash, currentHistory) {\n const cacheKey = generateCacheKey(currentHistory);\n const cachePath = await getCacheFilePath(modelId, configHash, cacheKey);\n return { cacheKey, cachePath };\n}\nexport async function renameCacheFile(oldPath, newPath) {\n try {\n await fsPromises.rename(oldPath, newPath);\n return true;\n }\n catch (error) {\n logger.error('Error renaming cache file:', error instanceof Error ? error.message : String(error));\n return false;\n }\n}\n// Cache-existence probing (in-memory registry first, fall back to\n// `fs.access`) lives in `KvCacheSession.beginTurn(...)`. Keeping the\n// in-memory `initializedCaches` set private to the session module\n// avoids drift between the two layers.\nexport async function deleteCache(options) {\n const cacheDir = getKVCacheDir();\n if ('all' in options) {\n await fsPromises.rm(cacheDir, { recursive: true, force: true });\n await fsPromises.mkdir(cacheDir, { recursive: true });\n return cacheDir;\n }\n const kvCacheDir = validateAndJoinPath(cacheDir, options.kvCacheKey);\n const targetDir = options.modelId !== undefined ? validateAndJoinPath(kvCacheDir, options.modelId) : kvCacheDir;\n await fsPromises.rm(targetDir, { recursive: true, force: true });\n return targetDir;\n}\nimport { loadModelServerParamsSchema, normalizeModelType } from '../../../schemas/index.js';\nimport { nowMs } from '../../../profiling/clock.js';\nimport { isModelLoaded, registerModel } from '../registry/model-registry.js';\nimport { startLogBuffering, stopLogBufferingWithTimeout } from '../registry/logging-stream-registry.js';\nimport { detectShardedModel, generateShardFilenames, validateShardedModelCache } from '../../utils/index.js';\nimport { PluginNotFoundError, ModelFileNotFoundError, ModelFileNotFoundInDirError, ModelFileLocateFailedError } from '../../../utils/errors-server.js';\nimport { getPlugin } from '../../plugins/index.js';\nimport { promises as fsPromises } from 'bare-fs';\nimport path from 'bare-path';\nimport { getServerLogger } from '../../../logging/index.js';\nconst logger = getServerLogger();\nexport async function loadModel(params, options) {\n const { modelId, modelPath, options: modelOptions, artifacts, modelName } = loadModelServerParamsSchema.parse(params);\n const { modelConfig, modelType: rawModelType } = modelOptions;\n // Normalize modelType to canonical form (handles aliases and custom types)\n const modelType = normalizeModelType(rawModelType);\n // Check if model is already loaded\n if (isModelLoaded(modelId)) {\n logger.info(`${modelType} model ${modelId} is already loaded`);\n return {};\n }\n // Detect if sharded model\n const modelFileName = path.basename(modelPath);\n const shardInfo = detectShardedModel(modelFileName);\n const isShardedModel = shardInfo.isSharded;\n const plugin = getPlugin(modelType);\n if (!plugin) {\n throw new PluginNotFoundError(modelType);\n }\n if (isShardedModel) {\n // For sharded models, validate all shards and tensors.txt exist\n const shardDir = path.dirname(modelPath);\n const isValid = await validateShardedModelCache(shardDir, modelFileName);\n if (!isValid) {\n const numberedShards = generateShardFilenames(modelFileName);\n throw new ModelFileNotFoundError(`Missing shards or ${shardInfo.baseFilename}.tensors.txt. Expected ${numberedShards.length} shard files + tensors.txt in ${shardDir}`);\n }\n }\n else if (!plugin.skipPrimaryModelPathValidation) {\n // For non-sharded models, validate single file exists\n try {\n const modelDir = path.dirname(modelPath);\n const modelFile = path.basename(modelPath);\n const files = (await fsPromises.readdir(modelDir));\n if (!files.includes(modelFile)) {\n throw new ModelFileNotFoundInDirError(modelFile, modelDir, modelType);\n }\n }\n catch (error) {\n logger.error(`Error reading ${modelType} model directory:`, error instanceof Error ? error.message : String(error));\n throw new ModelFileLocateFailedError(modelType, modelPath, error);\n }\n }\n logger.info(`${modelType}: Loading model ${modelId}...`);\n startLogBuffering(modelId);\n try {\n const initStart = options?.collectTiming ? nowMs() : 0;\n const result = plugin.createModel({\n modelId,\n modelPath,\n modelConfig: modelConfig,\n modelName,\n artifacts\n });\n await result.model.load(false);\n const modelInitializationTimeMs = options?.collectTiming ? nowMs() - initStart : undefined;\n logger.info(`${modelType} model ${modelId} loaded`);\n registerModel(modelId, {\n model: result.model,\n path: modelPath,\n config: modelConfig,\n modelType: modelType,\n name: modelName\n });\n return modelInitializationTimeMs !== undefined ? { timing: { modelInitializationTimeMs } } : {};\n }\n finally {\n stopLogBufferingWithTimeout(modelId);\n }\n}\nvar __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n};\nvar __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {\n return function (env) {\n function fail(e) {\n env.error = env.hasError ? new SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n };\n})(typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n});\nimport { getModelEntry } from '../registry/model-registry.js';\nimport { translateServerParamsSchema, normalizeModelType, ModelType, AFRICAN_LANGUAGES_MAP } from '../../../schemas/index.js';\nimport { getLangName, detectOne } from '@qvac/langdetect-text';\nimport { nowMs } from '../../../profiling/index.js';\nimport { buildStreamResult } from '../../../profiling/model-execution.js';\nimport { ModelIsDelegatedError, ModelNotFoundError, ModelTypeMismatchError, TranslationFailedError } from '../../../utils/errors-server.js';\nimport { getRequestRegistry, withRequestContext } from '../runtime/index.js';\nimport { generateServerRequestId } from '../runtime/request-id.js';\nimport { getServerLogger } from '../../../logging/index.js';\nexport function getLanguage(code) {\n if (!code)\n return '';\n if (AFRICAN_LANGUAGES_MAP.has(code))\n return AFRICAN_LANGUAGES_MAP.get(code);\n const fullName = getLangName(code);\n return fullName ?? code.toUpperCase();\n}\nexport function isAfrican(code) {\n return !!code && AFRICAN_LANGUAGES_MAP.has(code);\n}\nconst LLM_TRANSLATE_GENERATION_PARAMS = {\n temp: 0,\n top_k: 1,\n top_p: 1,\n repeat_penalty: 1.3,\n seed: 42,\n predict: 256\n};\nfunction shouldSkipPerCallSampling(modelName) {\n return !!modelName && modelName.startsWith('AFRICAN_');\n}\nexport async function* translate(params, requestId) {\n const env_1 = { stack: [], error: void 0, hasError: false };\n try {\n const { modelId, text, modelType: inputModelType } = params;\n const entry = getModelEntry(modelId);\n if (!entry) {\n throw new ModelNotFoundError(modelId);\n }\n if (entry.isDelegated) {\n throw new ModelIsDelegatedError(modelId);\n }\n const canonicalModelType = entry.local.modelType;\n const model = entry.local.model;\n if (inputModelType !== undefined) {\n const requestedCanonical = normalizeModelType(inputModelType);\n if (requestedCanonical !== canonicalModelType) {\n throw new ModelTypeMismatchError(canonicalModelType, requestedCanonical);\n }\n }\n const isLlm = canonicalModelType === ModelType.llamacppCompletion;\n let from = isLlm ? params.from : undefined;\n const to = isLlm ? params.to : undefined;\n const context = isLlm ? params.context : undefined;\n // Auto-detect the source language when the caller didn't pass `from` (LLM\n // only). This used to run in each client; moving it here gives every\n // language binding one detector instead of each shipping its own (lingua in\n // Python vs langdetect-text in JS drifted on the same input). Store the\n // detected code — not the language name — so the explicit-`from` and\n // detected paths feed getLanguage() identically.\n if (isLlm && !from) {\n const detected = detectOne(text);\n if (detected.code === 'und' || detected.language === 'Undetermined') {\n throw new TranslationFailedError(\"Could not detect the source language. Please specify the 'from' parameter explicitly.\");\n }\n from = detected.code;\n }\n const afriquePrompt = isLlm && (isAfrican(from) || isAfrican(to));\n translateServerParamsSchema.parse(params);\n const fromLanguage = getLanguage(from);\n const toLanguage = getLanguage(to);\n // Open a request-scoped lifecycle for both engine branches. LLM-\n // translate inherits llamacpp-completion's `{ scope: \"model\",\n // hard: true }` cancel surface; NMT-translate inherits nmtcpp's\n // `{ scope: \"none\" }` — so the addon-cancel wiring below only\n // engages on the LLM path. NMT cancel is purely soft: the loop\n // exits on `signal.aborted`, scope unwinds, and the addon may run\n // to completion in the background — acceptable because the result\n // is dropped either way.\n const ctx = __addDisposableResource(env_1, await getRequestRegistry().begin({\n requestId: requestId ?? generateServerRequestId(),\n kind: 'translate',\n modelId\n }), true);\n const requestLogger = withRequestContext(getServerLogger(), ctx);\n if (isLlm) {\n const onAbort = () => {\n const addon = model.addon;\n if (addon?.cancel) {\n addon.cancel.call(addon).catch((err) => {\n requestLogger.warn(`[cancel] addon.cancel() rejected during abort for modelId=${modelId}: ${err instanceof Error ? err.message : String(err)}`);\n });\n }\n };\n ctx.signal.addEventListener('abort', onAbort, { once: true });\n if (ctx.signal.aborted)\n onAbort();\n ctx.scope.defer(() => {\n ctx.signal.removeEventListener('abort', onAbort);\n });\n }\n // Check if input is an array and model type is NMT\n if (Array.isArray(text) && canonicalModelType === ModelType.nmtcppTranslation) {\n // Use runBatch for batch processing\n const modelStart = nowMs();\n const translations = await model.runBatch(text);\n const modelExecutionMs = nowMs() - modelStart;\n // Soft-cancel boundary: if `cancel({ requestId })` landed while\n // the addon was running the batch, bail before yielding anything.\n // The addon may have completed its work; the result is dropped.\n if (ctx.signal.aborted) {\n return { modelExecutionMs };\n }\n // Yield each translation with a newline separator\n for (let i = 0; i < translations.length; i++) {\n if (ctx.signal.aborted)\n break;\n const translation = translations[i];\n yield translation;\n if (i < translations.length - 1) {\n yield '\\n';\n }\n }\n return { modelExecutionMs };\n }\n // Single text processing (for NMT or LLM)\n const singleText = Array.isArray(text) ? text[0] : text;\n // Prepare input based on model type\n const input = canonicalModelType === ModelType.nmtcppTranslation\n ? singleText\n : [\n {\n role: afriquePrompt ? 'user' : 'system',\n content: afriquePrompt\n ? `Translate ${fromLanguage} to ${toLanguage}.\\n${fromLanguage}: ${singleText}\\n${toLanguage}:`\n : `${context ? `${context}. ` : ''}Translate the following text from ${fromLanguage} into ${toLanguage}. Only output the translation, nothing else.\\n\\n${fromLanguage}: ${singleText}\\n${toLanguage}:`\n }\n ];\n const modelStart = nowMs();\n let response;\n if (canonicalModelType === ModelType.llamacppCompletion &&\n !shouldSkipPerCallSampling(entry.local.name)) {\n // AnyModel.run is intentionally erased to a single-arg signature in the\n // registry layer (Omit). Re-narrow to the engine\n // shape so we get the same typing as @qvac/llm-llamacpp.run().\n const llmRun = model.run.bind(model);\n response = await llmRun(input, {\n generationParams: LLM_TRANSLATE_GENERATION_PARAMS\n });\n }\n else {\n response = await model.run(input);\n }\n // Check if the response has an iterate method (like LLM models)\n if (canonicalModelType === ModelType.llamacppCompletion &&\n typeof response.iterate === 'function') {\n const llmResponse = response;\n for await (const token of llmResponse.iterate()) {\n if (ctx.signal.aborted)\n break;\n yield token;\n }\n const modelExecutionMs = nowMs() - modelStart;\n const stats = {\n ...(llmResponse.stats?.TPS !== undefined && { tokensPerSecond: llmResponse.stats.TPS }),\n ...(llmResponse.stats?.TTFT !== undefined && { timeToFirstToken: llmResponse.stats.TTFT }),\n ...(llmResponse.stats?.CacheTokens !== undefined && {\n cacheTokens: llmResponse.stats.CacheTokens\n }),\n ...(llmResponse.stats?.generatedTokens !== undefined && {\n totalTokens: llmResponse.stats.generatedTokens\n })\n };\n return buildStreamResult(modelExecutionMs, stats);\n }\n const nmtResponse = response;\n for await (const token of nmtResponse.iterate()) {\n if (ctx.signal.aborted)\n break;\n yield token;\n }\n const modelExecutionMs = nowMs() - modelStart;\n const stats = {\n ...(nmtResponse.stats?.totalTime !== undefined && { totalTime: nmtResponse.stats.totalTime }),\n ...(nmtResponse.stats?.totalTokens !== undefined && {\n totalTokens: nmtResponse.stats.totalTokens\n }),\n ...(nmtResponse.stats?.decodeTime !== undefined && {\n decodeTime: nmtResponse.stats.decodeTime\n }),\n ...(nmtResponse.stats?.encodeTime !== undefined && {\n encodeTime: nmtResponse.stats.encodeTime\n }),\n ...(nmtResponse.stats?.TPS !== undefined && { tokensPerSecond: nmtResponse.stats.TPS }),\n ...(nmtResponse.stats?.TTFT !== undefined && { timeToFirstToken: nmtResponse.stats.TTFT })\n };\n return buildStreamResult(modelExecutionMs, stats);\n }\n catch (e_1) {\n env_1.error = e_1;\n env_1.hasError = true;\n }\n finally {\n const result_1 = __disposeResources(env_1);\n if (result_1)\n await result_1;\n }\n}\nimport { promises as fsPromises } from 'bare-fs';\nimport path from 'bare-path';\nimport { unregisterModel } from '../registry/model-registry.js';\nimport { unregisterAllLoggingStreams } from '../registry/logging-stream-registry.js';\nimport { clearFinetuneRuntimeState } from '../plugins/llamacpp-completion/ops/finetune.js';\nimport { unregisterAddonLogger, getServerLogger } from '../../../logging/index.js';\nimport { unloadModelParamsSchema } from '../../../schemas/index.js';\nimport { ModelNotLoadedError } from '../../../utils/errors-server.js';\nimport { detectShardedModel } from '../../utils/index.js';\nimport { getClearStorageTarget } from '../../utils/cache/paths.js';\nconst logger = getServerLogger();\nexport async function unloadModel(params) {\n const { modelId, clearStorage } = unloadModelParamsSchema.parse(params);\n const entry = unregisterModel(modelId);\n if (!entry) {\n throw new ModelNotLoadedError(modelId);\n }\n clearFinetuneRuntimeState(modelId);\n if (!entry.isDelegated) {\n if (entry.local.model.unload) {\n await entry.local.model.unload();\n }\n if (clearStorage && entry.local.path) {\n const modelPath = entry.local.path;\n const modelFileName = path.basename(modelPath);\n const shardInfo = detectShardedModel(modelFileName);\n if (shardInfo.isSharded) {\n const shardDir = path.dirname(modelPath);\n await fsPromises.rm(shardDir, { recursive: true, force: true });\n logger.info(`Sharded model storage cleared: ${shardDir}`);\n }\n else {\n const target = getClearStorageTarget(modelPath);\n await fsPromises.rm(target.path, {\n recursive: target.kind === 'directory',\n force: true\n });\n logger.info(`Model storage cleared (${target.kind}): ${target.path}`);\n }\n }\n }\n unregisterAddonLogger(modelId);\n unregisterAllLoggingStreams(modelId);\n logger.info(`Model ${modelId} unloaded`);\n}\n/**\n * Helper for detecting the llama.cpp addon's `Cancelled` status error\n * (`LlmErrors.hpp::Cancelled = 27`) on the continuous-batching path.\n *\n * When a batch is cancelled while it still has prompts queued behind the\n * `parallel` slot limit, `ContinuousBatchScheduler::cancelPendingLocked`\n * fails the whole batch group with a `Cancelled` `StatusError`, which\n * `processBatch` rethrows — so `model.run(prompts)` rejects rather than\n * resolving with partial outputs (see\n * `packages/llm-llamacpp/docs/continuous-batching.md` \"Cancellation\n * semantics\"). In-flight slots are still cancelled gracefully, but the\n * shared group carries the error.\n *\n * The addon's JS-facing throw goes through `js_throw_error(env, code,\n * msg)` (see `JsUtils.hpp::JSCATCH`) where `code` comes from\n * `qvac_errors::StatusError::codeString()` and formats as\n * `\"[ :: Cancelled ]\"`. This helper lets the batch handler\n * recognise that rejection so it can complete the run with cancelled\n * terminal events (matching the SDK's graceful cancel semantics) instead\n * of surfacing a generic `CompletionFailedError`.\n */\nexport function isAddonCancelledError(err) {\n if (typeof err !== 'object' || err === null)\n return false;\n const code = err.code;\n // Anchor to the codeString tail (`[ :: Cancelled ]`) so a\n // hypothetical sibling like `CancelledByPolicy` after an addon-side\n // rename doesn't false-positive here.\n return typeof code === 'string' && /::\\s*Cancelled\\s*\\]/.test(code);\n}\nimport { TOOLS_MODE } from '../../../../../schemas/tools.js';\nimport { getModel, getModelConfig } from '../../../registry/model-registry.js';\nimport { getServerLogger } from '../../../../../logging/index.js';\nimport { nowMs } from '../../../../../profiling/index.js';\nimport { buildStreamResult } from '../../../../../profiling/model-execution.js';\nimport { getResponseFormatJsonSchema } from '../../../../utils/response-format.js';\nimport { transformMessages } from './completion-stream.js';\nimport { normalizeCompletionStats } from './completion-stats.js';\nimport { appendToolsToHistory, prependToolsToHistory } from '../../../../utils/tool-integration.js';\nconst logger = getServerLogger();\nfunction runBatchModel(model, prompts) {\n const run = model.run.bind(model);\n return run(prompts);\n}\nfunction mergeGenerationParams(generationParams, responseFormat) {\n if (!responseFormat)\n return generationParams;\n const jsonSchema = getResponseFormatJsonSchema(responseFormat);\n if (jsonSchema === undefined)\n return generationParams;\n return {\n ...(generationParams ?? {}),\n json_schema: jsonSchema\n };\n}\nfunction renderPromptHistory(prompt, options) {\n const tools = options.toolsEnabled && prompt.tools && prompt.tools.length > 0 ? prompt.tools : undefined;\n let historyWithTools = prompt.history;\n if (tools) {\n historyWithTools =\n options.toolsMode === TOOLS_MODE.dynamic\n ? appendToolsToHistory(prompt.history, tools)\n : prependToolsToHistory(prompt.history, tools);\n }\n // Uses the same attachment expansion as single completion: each SDK\n // attachment becomes an addon `type: \"media\"` message before the text turn.\n return transformMessages(historyWithTools);\n}\nfunction buildBatchPrompt(prompt, options) {\n const mergedGenerationParams = mergeGenerationParams(prompt.generationParams, prompt.responseFormat);\n return {\n ...(prompt.id !== undefined && { id: prompt.id }),\n prompt: renderPromptHistory(prompt, options),\n ...(mergedGenerationParams && {\n runOptions: { generationParams: mergedGenerationParams }\n })\n };\n}\nfunction isBatchOutputChunk(output) {\n return (output !== null &&\n typeof output === 'object' &&\n 'id' in output &&\n 'chunk' in output &&\n typeof output.id === 'string' &&\n typeof output.chunk === 'string');\n}\nexport async function* batchCompletion(params, opts) {\n const { modelId, prompts } = params;\n const { signal, scope } = opts;\n const requestLogger = opts.logger ?? logger;\n const model = getModel(modelId);\n const modelConfig = getModelConfig(modelId);\n const renderOptions = {\n toolsEnabled: modelConfig.tools === true,\n toolsMode: modelConfig.toolsMode\n };\n const onAbort = () => {\n const addon = model.addon;\n if (addon?.cancel) {\n addon.cancel.call(addon).catch((err) => {\n requestLogger.warn(`[cancel] addon.cancel() rejected during batch abort for modelId=${modelId}: ${err instanceof Error ? err.message : String(err)}`);\n });\n }\n };\n signal.addEventListener('abort', onAbort, { once: true });\n if (signal.aborted)\n onAbort();\n scope.defer(() => {\n signal.removeEventListener('abort', onAbort);\n });\n const addonPrompts = prompts.map((prompt) => buildBatchPrompt(prompt, renderOptions));\n const modelStart = nowMs();\n const response = await runBatchModel(model, addonPrompts);\n const ids = response.ids;\n yield { type: 'ids', ids };\n for await (const output of response.iterate()) {\n if (!isBatchOutputChunk(output))\n continue;\n yield { type: 'token', id: output.id, token: output.chunk };\n }\n const results = await response.await();\n const modelExecutionMs = nowMs() - modelStart;\n const stats = normalizeCompletionStats(response.stats);\n return {\n ...buildStreamResult(modelExecutionMs, stats),\n ids,\n results\n };\n}\nimport { getServerLogger } from '../../../../../logging/index.js';\nconst logger = getServerLogger();\nfunction formatMessages(messages) {\n return messages\n .map((m) => {\n const role = m.role || m.type || '?';\n const content = m.content\n ? m.content.length > 40\n ? m.content.substring(0, 40) + '...'\n : m.content\n : m.name || '(no content)';\n return `{${role}: \"${content}\"}`;\n })\n .join(', ');\n}\nexport function logCacheStatus(cacheKey, isReusing) {\n const status = isReusing ? 'REUSING' : 'CREATING';\n logger.debug(`[kv-cache] [${cacheKey}] ${status} cache`);\n}\nexport function logCacheInit(cacheKey, systemPrompt, toolCount) {\n const promptLen = systemPrompt.length;\n logger.debug(`[kv-cache] [${cacheKey}] Initializing cache (prompt: ${promptLen} chars, tools: ${toolCount})`);\n}\nexport function logMessagesToAddon(messages, phase = 'PROMPT_SEND') {\n const typedMessages = messages;\n logger.debug(`[kv-cache] [${phase}] Sending ${typedMessages.length} msg(s): [${formatMessages(typedMessages)}]`);\n}\nexport function logCacheDisabled() {\n logger.debug('[kv-cache] Cache disabled');\n}\nexport function logCacheSave(sessionPath) {\n logger.debug(`[kv-cache] Saving session: ...${sessionPath.slice(-20)}`);\n}\nexport function logCacheSaveError(sessionPath, err) {\n logger.warn(`[kv-cache] Failed to save session: ...${sessionPath.slice(-20)} — ${err instanceof Error ? err.message : String(err)}`);\n}\nfunction finiteNumber(value) {\n return value !== undefined && Number.isFinite(value) ? value : undefined;\n}\nexport function normalizeCompletionStats(stats) {\n if (!stats)\n return undefined;\n const timeToFirstToken = finiteNumber(stats.TTFT);\n const tokensPerSecond = finiteNumber(stats.TPS);\n const cacheTokens = finiteNumber(stats.CacheTokens);\n const promptTokens = finiteNumber(stats.promptTokens);\n const generatedTokens = finiteNumber(stats.generatedTokens);\n const avgConcurrentSeq = finiteNumber(stats.avgConcurrentSeq);\n const normalized = {\n ...(timeToFirstToken !== undefined && { timeToFirstToken }),\n ...(tokensPerSecond !== undefined && { tokensPerSecond }),\n ...(cacheTokens !== undefined && { cacheTokens }),\n ...(promptTokens !== undefined && { promptTokens }),\n ...(generatedTokens !== undefined && { generatedTokens }),\n ...(avgConcurrentSeq !== undefined && { avgConcurrentSeq }),\n ...(stats.backendDevice !== undefined && { backendDevice: stats.backendDevice })\n };\n if (timeToFirstToken === undefined &&\n tokensPerSecond === undefined &&\n cacheTokens === undefined &&\n promptTokens === undefined &&\n generatedTokens === undefined &&\n avgConcurrentSeq === undefined &&\n stats.backendDevice === undefined) {\n return undefined;\n }\n return normalized;\n}\nimport { TOOLS_MODE } from '../../../../../schemas/tools.js';\nimport { logCacheDisabled, logCacheInit, logCacheSave, logMessagesToAddon } from './cache-logger.js';\nimport { extractSystemPrompt, getCurrentCacheInfo } from '../../../ops/kv-cache-utils.js';\nimport { getModel, getModelConfig } from '../../../registry/model-registry.js';\nimport { decideCachedHistorySlice, shouldCommitCachedTurn } from './kv-cache-state.js';\nimport { createKvCacheSession, generateConfigHash } from './kv-cache-session.js';\nimport { appendToolsToHistory, detectToolDialect, prependToolsToHistory } from '../../../../utils/tool-integration.js';\nimport { parseToolCalls } from '../../../../utils/tools/index.js';\nimport { getResponseFormatJsonSchema } from '../../../../utils/response-format.js';\nimport { buildAutoCacheSaveHistory } from '../../../../utils/index.js';\nimport { getServerLogger } from '../../../../../logging/index.js';\nimport { AttachmentNotFoundError } from '../../../../../utils/errors-server.js';\nimport { nowMs } from '../../../../../profiling/index.js';\nimport { buildStreamResult } from '../../../../../profiling/model-execution.js';\nimport { normalizeCompletionStats } from './completion-stats.js';\nimport fs from 'bare-fs';\nconst logger = getServerLogger();\nfunction transformMessage(message) {\n const transformed = [];\n // Check if it's a tool definition (has type: \"function\")\n if ('type' in message && message.type === 'function') {\n transformed.push({\n type: 'function',\n name: message.name,\n description: message.description,\n parameters: message.parameters\n });\n return transformed;\n }\n const msg = message;\n if (msg.attachments && msg.attachments.length > 0) {\n for (const attachment of msg.attachments) {\n if (!fs.existsSync(attachment.path)) {\n throw new AttachmentNotFoundError(attachment.path);\n }\n transformed.push({\n role: msg.role,\n content: attachment.path,\n type: 'media'\n });\n }\n }\n transformed.push({\n role: msg.role,\n content: msg.content\n });\n return transformed;\n}\nfunction runModel(model, prompt, opts) {\n const run = model.run.bind(model);\n return run(prompt, opts);\n}\nexport function transformMessages(messages) {\n const transformed = [];\n for (const message of messages) {\n transformed.push(...transformMessage(message));\n }\n return transformed;\n}\nasync function initSystemPromptCache(model, cachePathToUse, systemPromptToUse, cacheKey, tools) {\n const primeMessages = [{ role: 'system', content: systemPromptToUse }];\n let toolCount = 0;\n if (tools && tools.length > 0) {\n const transformedTools = transformMessages(tools);\n primeMessages.push(...transformedTools);\n toolCount = tools.length;\n }\n logCacheInit(cacheKey, systemPromptToUse, toolCount);\n logMessagesToAddon(primeMessages, 'CACHE_INIT');\n const primeResponse = await runModel(model, primeMessages, {\n cacheKey: cachePathToUse,\n saveCacheToDisk: true,\n prefill: true\n });\n await primeResponse.await();\n}\n/**\n * Pick the messages that need to reach the model for the next turn.\n *\n * Static mode (no `tools` argument):\n * - Cache miss: send the whole history minus the system message (which\n * was primed during cache init).\n * - Cache hit with a recorded `savedCount`: send only the unsaved tail\n * (`history.slice(savedCount)`), so a multi-message turn (e.g. a\n * consumer pushing both an assistant transcript and a follow-up user\n * message between completions) all reaches the model.\n * - Cache hit with a stale/missing `savedCount`: fall back to the full\n * non-system history. The session is told (`dropStaleSavedCount`) so\n * the bad boundary doesn't propagate into the next turn.\n *\n * Dynamic mode (`tools` argument set):\n * - The addon anchors the tool block after the last user message and\n * trims tools + the assistant's tool-call output from the cache once\n * the chain resolves. After that trim, the cache only holds messages\n * up to the last user turn, so the SDK has to ship the right slice\n * plus the (possibly new) tool set:\n * * tool-chain continuation (last role is \"tool\"): send the trailing\n * consecutive tool messages, no tool block — tools are still\n * anchored in the cache from the previous round.\n * * new user turn after a chain (prev role is \"assistant\"): send\n * [assistant, user] so the model sees its own final reply before\n * the new prompt, then re-anchor the tool block.\n * * otherwise: send just the last message + tool block.\n */\nfunction prepareMessagesForCache(session, turn, cacheExists, history, tools) {\n const addTools = tools?.length ? transformMessages(tools) : [];\n const dynamic = addTools.length > 0;\n if (!(cacheExists && history.length > 0)) {\n const historyWithoutSystem = history.filter((msg) => msg.role !== 'system');\n return [...transformMessages(historyWithoutSystem), ...addTools];\n }\n if (!dynamic) {\n // Static path — slice from the turn's `savedCount` so callers can\n // stage multiple messages between completions. `decideCachedHistorySlice`\n // also guards against the QVAC-17780 stale-count regression: if the\n // saved boundary would slice the history down to an empty payload\n // (e.g. after a cancelled mid-decode), it falls back to the full\n // non-system history and signals the caller to drop the bad entry.\n // The session owns the entry; `dropStaleSavedCount` clears it\n // without touching the on-disk file (the file is still trustworthy\n // — only the boundary count is wrong).\n const { messages, clearStaleCount } = decideCachedHistorySlice(turn.savedCount, cacheExists, history);\n if (clearStaleCount) {\n session.dropStaleSavedCount(turn);\n }\n return transformMessages(messages);\n }\n // Dynamic path. The addon trimmed tools after the previous round, so the\n // cache no longer holds the saved-count we'd rely on for slicing — pick\n // the right fragment based on the role of the last history message.\n const lastMsg = history[history.length - 1];\n if (lastMsg.role === 'tool') {\n const trailingTools = [];\n for (let i = history.length - 1; i >= 0; i--) {\n const msg = history[i];\n if (msg.role !== 'tool')\n break;\n trailingTools.unshift(msg);\n }\n return transformMessages(trailingTools);\n }\n if (lastMsg.role === 'user') {\n const prevMsg = history[history.length - 2];\n const tail = prevMsg?.role === 'assistant' ? [prevMsg, lastMsg] : [lastMsg];\n return [...transformMessages(tail), ...addTools];\n }\n return [...transformMessages([lastMsg]), ...addTools];\n}\nasync function* processModelResponse(model, messagesToSend, tools, generationParams, cacheOptions, dialect) {\n const runOptions = {\n ...(generationParams && { generationParams }),\n ...(cacheOptions?.cacheKey !== undefined && {\n cacheKey: cacheOptions.cacheKey\n }),\n ...(cacheOptions?.saveCacheToDisk !== undefined && {\n saveCacheToDisk: cacheOptions.saveCacheToDisk\n })\n };\n const hasRunOptions = Object.keys(runOptions).length > 0;\n const modelStart = nowMs();\n const response = await runModel(model, messagesToSend, hasRunOptions ? runOptions : undefined);\n let accumulatedText = '';\n let producedTokens = false;\n let toolCallsResult = [];\n for await (const token of response.iterate()) {\n const tokenStr = token;\n if (tokenStr.length > 0)\n producedTokens = true;\n accumulatedText += tokenStr;\n yield { token: tokenStr };\n }\n const modelExecutionMs = nowMs() - modelStart;\n if (cacheOptions?.saveCacheToDisk && cacheOptions.cacheKey) {\n logCacheSave(cacheOptions.cacheKey);\n }\n if (tools && tools.length > 0) {\n const { toolCalls } = parseToolCalls(accumulatedText, tools, dialect);\n toolCallsResult = toolCalls;\n }\n const responseWithStats = response;\n const stats = normalizeCompletionStats(responseWithStats.stats);\n return {\n ...buildStreamResult(modelExecutionMs, stats),\n toolCalls: toolCallsResult,\n responseText: accumulatedText,\n producedTokens\n };\n}\nexport async function* completion(params, opts) {\n const { history, modelId, kvCache, tools, generationParams, responseFormat } = params;\n const { signal, scope } = opts;\n const requestLogger = opts.logger ?? logger;\n const modelConfig = getModelConfig(modelId);\n const toolsEnabled = modelConfig.tools === true;\n const toolsMode = modelConfig.toolsMode;\n const dynamicTools = !!tools?.length && toolsEnabled && toolsMode === TOOLS_MODE.dynamic;\n const staticTools = !!tools?.length && toolsEnabled && !dynamicTools;\n const dialect = tools && tools.length > 0 ? (params.toolDialect ?? detectToolDialect(modelId)) : undefined;\n // `responseFormat` is forwarded to the addon as a per-request\n // `generationParams.json_schema`, which the addon converts to GBNF and\n // applies for the duration of the request only. This avoids mutating\n // the shared `modelConfig` and is therefore safe under concurrent\n // completions on the same model. `tools` still constrain output through\n // their parameter schema and the dialect-specific parser chain (mutually\n // exclusive with a non-text `responseFormat` at the schema layer).\n let mergedGenerationParams = generationParams;\n if (responseFormat && !(tools && tools.length > 0)) {\n const jsonSchema = getResponseFormatJsonSchema(responseFormat);\n if (jsonSchema !== undefined) {\n mergedGenerationParams = {\n ...(generationParams ?? {}),\n json_schema: jsonSchema\n };\n }\n }\n const model = getModel(modelId);\n // Hard-cancel wiring: when the registry aborts the request's signal,\n // forward to the addon so the C++ work stops as soon as it can. The\n // SDK still treats `signal.aborted` as the truth for cancel detection\n // (post-completion bookkeeping below) — this listener only shortens\n // the latency between \"user clicked stop\" and \"addon stops decoding\".\n //\n // Fire-and-forget by construction (event listeners can't `await`), but\n // `addon.cancel()` returns a Promise — if it ever rejects the bare\n // `void` would leak it as an unhandledRejection. Attach `.catch(...)`\n // so a rejection is logged and the process stays clean; the iterator\n // below still sees EOF/empty tokens via the addon's normal cancel path\n // so callers aren't affected.\n const onAbort = () => {\n const addon = model.addon;\n if (addon?.cancel) {\n addon.cancel.call(addon).catch((err) => {\n requestLogger.warn(`[cancel] addon.cancel() rejected during abort for modelId=${modelId}: ${err instanceof Error ? err.message : String(err)}`);\n });\n }\n };\n signal.addEventListener('abort', onAbort, { once: true });\n // `addEventListener(\"abort\", ..., { once: true })` does *not* fire if\n // the signal is already aborted at register time — but the registry\n // synchronously aborts a fresh controller when `parentSignal` was\n // already aborted at `begin(...)`. Without this fall-through, the\n // addon would keep decoding until the post-loop check notices.\n // Re-using `onAbort` here keeps the listener body as the single\n // source of truth for \"what cancel does.\"\n if (signal.aborted)\n onAbort();\n // Detach the abort listener on every exit path (happy, throw, generator\n // `return()` from upstream). `{ once: true }` already removes the\n // listener if the signal fires, so the `removeEventListener` here is\n // the cleanup hook for the signal-never-fired path.\n scope.defer(() => {\n signal.removeEventListener('abort', onAbort);\n });\n if (!kvCache) {\n // KV-cache disabled — straight passthrough, no session involvement.\n let historyWithTools = history;\n if (staticTools && tools) {\n historyWithTools = prependToolsToHistory(history, tools);\n }\n else if (dynamicTools && tools) {\n historyWithTools = appendToolsToHistory(history, tools);\n }\n const transformedHistory = transformMessages(historyWithTools);\n logCacheDisabled();\n logMessagesToAddon(transformedHistory, 'NO_CACHE');\n return yield* processModelResponse(model, transformedHistory, tools, mergedGenerationParams, undefined, dialect);\n }\n // ---- KV-cache path. The session owns all three bookkeeping layers\n // (on-disk `.bin`, `initializedCaches`, `cachedMessageCounts`). The\n // handler asks for a turn, registers rollback on the scope, and on\n // the happy path calls `commitTurn` which short-circuits the deferred\n // rollback. Cancellations / zero-token replies / rename failures all\n // unwind through the same `scope.defer` hook. ----\n const session = createKvCacheSession(modelId, { logger: requestLogger });\n const systemPromptFromHistory = extractSystemPrompt(history);\n // Dynamic mode lets each turn carry its own tool set, so the cache\n // hash must not depend on the tool list — otherwise a tool change\n // would force a fresh cache file and defeat the whole optimisation.\n const configHash = generateConfigHash(systemPromptFromHistory, dynamicTools ? undefined : tools);\n const systemPromptToUse = systemPromptFromHistory ||\n modelConfig.system_prompt ||\n 'You are a helpful assistant.';\n const primeIfMissing = async (cachePath) => {\n await initSystemPromptCache(model, cachePath, systemPromptToUse, typeof kvCache === 'string' ? kvCache : 'auto', \n // Static-mode tools are baked into the system-prompt cache so\n // they're shared across the session. Dynamic-mode tools belong\n // to a per-turn anchor and must not enter the system cache.\n staticTools ? tools : undefined);\n };\n let turn;\n if (typeof kvCache === 'string') {\n turn = await session.beginTurn({\n kind: 'custom',\n customKey: kvCache,\n configHash,\n primeIfMissing\n });\n }\n else {\n const cacheMessages = history.map((msg) => ({\n role: msg.role,\n content: msg.content,\n attachments: msg.attachments ?? undefined\n }));\n turn = await session.beginTurn({\n kind: 'auto',\n configHash,\n history: cacheMessages,\n primeIfMissing\n });\n }\n // Single cleanup hook for every non-success exit path. `commitTurn`\n // flips the turn's internal `committed` flag so this becomes a no-op\n // on the happy path. Scope unwinding is LIFO — registered after the\n // `removeEventListener` defer above so rollback runs before the\n // listener detach.\n scope.defer(() => session.rollback(turn));\n // `cacheExists` is implied by `beginTurn` — the session either found\n // an existing cache or just primed one. Pass `true` to the message\n // selector so the slicing branches engage.\n const messagesToSend = prepareMessagesForCache(session, turn, \n /* cacheExists */ true, history, dynamicTools ? tools : undefined);\n logMessagesToAddon(messagesToSend, 'PROMPT_SEND');\n const result = yield* processModelResponse(model, messagesToSend, tools, mergedGenerationParams, { cacheKey: turn.cachePath, saveCacheToDisk: true }, dialect);\n const shouldCommitTurn = shouldCommitCachedTurn({\n aborted: signal.aborted,\n producedTokens: result.producedTokens,\n generatedTokens: result.stats?.generatedTokens,\n predict: mergedGenerationParams?.predict ?? modelConfig.predict\n });\n if (typeof kvCache === 'string') {\n // Custom-key path: the addon wrote the new cache state inline at\n // the same path. Either commit (records the boundary, suppresses\n // rollback) or fall through to the deferred rollback.\n if (shouldCommitTurn) {\n await session.commitTurn(turn, {\n kind: 'static',\n messageCount: history.length + 1\n });\n }\n return result;\n }\n // Auto-cache path.\n //\n // Tool-call turns: the auto-cache key is derived from\n // `result.responseText`, which here is raw tool-call markup rather\n // than a clean assistant message. There's no safe post-response key\n // to rename to, so we let the deferred rollback drop the file. Once\n // the SDK supports auto-cache for structured assistant/tool turns,\n // this becomes a normal commit path.\n if (result.toolCalls.length > 0) {\n logger.warn(`[kv-cache] Auto cache tool-call turn; rolling back to avoid disk leak. path=${turn.cachePath}`);\n return result;\n }\n if (!shouldCommitTurn) {\n // Cancelled, zero-token, or budget-exhausted turns do not establish\n // a trustworthy message boundary.\n return result;\n }\n const savedHistory = buildAutoCacheSaveHistory(history.map((msg) => ({\n role: msg.role,\n content: msg.content,\n attachments: msg.attachments ?? undefined\n })), result.responseText);\n const postResponseCacheInfo = await getCurrentCacheInfo(modelId, configHash, savedHistory);\n await session.commitTurn(turn, {\n kind: 'autoRename',\n targetCachePath: postResponseCacheInfo.cachePath,\n messageCount: savedHistory.length\n });\n return result;\n}\n/**\n * Helpers for detecting and parsing the llama.cpp addon's\n * `ContextOverflow` status error (`LlmErrors.hpp::ContextOverflow = 14`).\n *\n * The addon's JS-facing throw goes through `js_throw_error(env, code,\n * msg)` (see `JsUtils.hpp::JSCATCH`) where `code` comes from\n * `qvac_errors::StatusError::codeString()` and formats as\n * `\"[ :: ContextOverflow ]\"`. The message carries the\n * C++-formatted detail (which may include the prompt/ctx sizes).\n *\n * These helpers let the plugin handler convert that addon error into a\n * typed `ContextOverflowError` and let unit tests assert the detection\n * + extraction logic without a real model load.\n */\nexport function isAddonContextOverflowError(err) {\n if (typeof err !== 'object' || err === null)\n return false;\n const code = err.code;\n // Anchor to the codeString tail (`[ :: ContextOverflow ]`)\n // so we don't false-positive on a hypothetical sibling like\n // `ContextOverflowRecovered` or `PostContextOverflow` after an\n // addon-side rename.\n if (typeof code === 'string' && /::\\s*ContextOverflow\\s*\\]/.test(code)) {\n return true;\n }\n // Message-substring fallback for the bare `LlamaModel::processPromptImpl`\n // path, which doesn't go through `StatusError::codeString()`. Match the\n // two known C++-emitted formats only — broader substring would catch\n // wrapper / cause-chain text that mentions overflow without being one.\n const message = err.message;\n return (typeof message === 'string' &&\n /(?:context overflow at prefill step|processPromptImpl: context overflow)/i.test(message));\n}\n/**\n * Best-effort extraction of `promptTokens` / `ctxSize` from the addon\n * error message. The C++ paths in `TextLlmContext.cpp` and\n * `MtmdLlmContext.cpp` format both numbers into the message; the\n * `LlamaModel::processPromptImpl` fallback path emits a bare\n * `\": context overflow\\n\"` with neither number. Returning\n * `undefined` for either field is fine — `ContextOverflowError` holds\n * them as optional and the message factory degrades gracefully.\n */\nexport function parseContextOverflowMessage(message) {\n // \"[TextLlm] context overflow at prefill step: prompt tokens N, max context tokens M\\n\"\n // Same-clause separator (no `[^]*?` cross-newline walk) so a future\n // wrapper that pastes overflow text alongside unrelated numbers can't\n // produce a mismatched pair.\n const longForm = message.match(/prompt tokens (\\d+)[,\\s]+max context tokens (\\d+)/i);\n if (longForm?.[1] && longForm[2]) {\n return {\n promptTokens: Number(longForm[1]),\n ctxSize: Number(longForm[2])\n };\n }\n // \"[TextLlm] context overflow at prefill step (N tokens, max M)\\n\"\n // \"[MtmdLlm] context overflow at prefill step (N tokens, max M)\\n\"\n const shortForm = message.match(/\\((\\d+)\\s+tokens,\\s*max\\s+(\\d+)\\)/i);\n if (shortForm?.[1] && shortForm[2]) {\n return {\n promptTokens: Number(shortForm[1]),\n ctxSize: Number(shortForm[2])\n };\n }\n return {};\n}\nvar __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n};\nvar __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {\n return function (env) {\n function fail(e) {\n env.error = env.hasError ? new SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n };\n})(typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n});\nimport fs from 'bare-fs';\nimport { getModel } from '../../../registry/model-registry.js';\nimport { CompletionFailedError } from '../../../../../utils/errors-server.js';\nimport { getRequestRegistry, withRequestContext } from '../../../runtime/index.js';\nimport { generateServerRequestId } from '../../../runtime/request-id.js';\nimport { getServerLogger } from '../../../../../logging/index.js';\nconst PAUSE_CHECKPOINT_PREFIX = 'pause_checkpoint_step_';\nconst finetuneRuntimeState = new Set();\nfunction getRunningFinetuneState(modelId) {\n return finetuneRuntimeState.has(modelId);\n}\nfunction registerRunningFinetune(modelId) {\n finetuneRuntimeState.add(modelId);\n}\nexport function clearFinetuneRuntimeState(modelId) {\n finetuneRuntimeState.delete(modelId);\n}\nexport function getFinetuneStateFromCheckpoints(options) {\n const checkpointDirectory = options.checkpointSaveDir ?? './checkpoints';\n if (!fs.existsSync(checkpointDirectory)) {\n return 'IDLE';\n }\n try {\n const entries = fs.readdirSync(checkpointDirectory);\n for (const entry of entries) {\n if (typeof entry !== 'string') {\n continue;\n }\n if (entry.startsWith(PAUSE_CHECKPOINT_PREFIX)) {\n return 'PAUSED';\n }\n }\n }\n catch (error) {\n throw new CompletionFailedError(`Failed to inspect finetune checkpoints in \"${checkpointDirectory}\"`, error);\n }\n return 'IDLE';\n}\nfunction validateExplicitFinetuneOperation(request) {\n if (!request.operation) {\n return;\n }\n const state = getFinetuneStateFromCheckpoints(request.options);\n if (request.operation === 'start' && state === 'PAUSED') {\n throw new CompletionFailedError(`Model \"${request.modelId}\" has a paused finetune checkpoint; resume it or cancel it before starting from scratch`);\n }\n if (request.operation === 'resume' && state === 'IDLE') {\n throw new CompletionFailedError(`Model \"${request.modelId}\" has no paused finetune checkpoint to resume`);\n }\n}\nexport async function startFinetune(request, onProgress) {\n const env_1 = { stack: [], error: void 0, hasError: false };\n try {\n const model = getModel(request.modelId);\n validateExplicitFinetuneOperation(request);\n // Mark RUNNING before the async begin() so an immediate getFinetuneState()\n // poll observes RUNNING, not IDLE. register is a no-op when a finetune is\n // already running on this model, so only clear on a failed begin() if this\n // call actually set the flag.\n const wasRunning = getRunningFinetuneState(request.modelId);\n registerRunningFinetune(request.modelId);\n // Scope the run into the registry so cancel({ requestId }) and\n // cancel({ modelId, kind: \"finetune\" }) reach it; onAbort forwards to\n // model.cancel().\n const ctx = __addDisposableResource(env_1, await getRequestRegistry()\n .begin({\n requestId: request.requestId ?? generateServerRequestId(),\n kind: 'finetune',\n modelId: request.modelId\n })\n .catch((err) => {\n if (!wasRunning)\n clearFinetuneRuntimeState(request.modelId);\n throw err;\n }), true);\n const requestLogger = withRequestContext(getServerLogger(), ctx);\n // Cleared on scope unwind; deferred before the listener detach so LIFO\n // removes the listener first.\n ctx.scope.defer(() => {\n clearFinetuneRuntimeState(request.modelId);\n });\n const onAbort = () => {\n model.cancel().catch((err) => {\n requestLogger.warn(`[cancel] model.cancel() rejected during abort for modelId=${request.modelId}: ${err instanceof Error ? err.message : String(err)}`);\n });\n };\n ctx.signal.addEventListener('abort', onAbort, { once: true });\n if (ctx.signal.aborted)\n onAbort();\n ctx.scope.defer(() => {\n ctx.signal.removeEventListener('abort', onAbort);\n });\n const handle = await model.finetune(request.options);\n if (onProgress) {\n handle.on('stats', onProgress);\n ctx.scope.defer(() => {\n handle.removeListener('stats', onProgress);\n });\n }\n const result = await handle.await();\n return {\n type: 'finetune',\n status: result.status,\n stats: result.stats\n };\n }\n catch (e_1) {\n env_1.error = e_1;\n env_1.hasError = true;\n }\n finally {\n const result_1 = __disposeResources(env_1);\n if (result_1)\n await result_1;\n }\n}\nexport async function pauseFinetune(modelId) {\n const model = getModel(modelId);\n await model.pause();\n return {\n type: 'finetune',\n status: 'PAUSED'\n };\n}\n// Routes cancellation through the registry; the model.cancel() forward is\n// installed by startFinetune, so never call model.cancel() here.\nexport function cancelFinetune(modelId) {\n // cancel() is synchronous; Promise.resolve keeps the Promise\n // return shape.\n getRequestRegistry().cancel({ modelId, kind: 'finetune' });\n return Promise.resolve({\n type: 'finetune',\n status: 'CANCELLED'\n });\n}\nexport function getFinetuneState(params) {\n const runtimeState = getRunningFinetuneState(params.modelId);\n return {\n type: 'finetune',\n status: runtimeState ? 'RUNNING' : getFinetuneStateFromCheckpoints(params.options)\n };\n}\nexport async function finetune(request, onProgress) {\n if (request.operation === undefined ||\n request.operation === 'start' ||\n request.operation === 'resume') {\n return startFinetune(request, onProgress);\n }\n switch (request.operation) {\n case 'getState':\n return getFinetuneState(request);\n case 'pause':\n return pauseFinetune(request.modelId);\n case 'cancel':\n return cancelFinetune(request.modelId);\n }\n}\nimport { promises as fsPromises } from 'bare-fs';\nimport path from 'bare-path';\nimport { findMatchingCache, generateConfigHash, getCacheFilePath, getCurrentCacheInfo, renameCacheFile, deleteCache as deleteCacheUtil } from '../../../ops/kv-cache-utils.js';\nimport { logCacheSaveError, logCacheStatus } from './cache-logger.js';\nimport { getServerLogger } from '../../../../../logging/index.js';\n// Used by cross-model paths that have no `RequestContext` (e.g.\n// `deleteKvCacheState`). Per-session call sites receive a logger from\n// the caller — typically `withRequestContext(...)`.\nconst moduleLogger = getServerLogger();\n/**\n * Single owner of the three KV-cache bookkeeping layers.\n *\n * The llama.cpp completion handler has three independent layers it must\n * keep consistent across every cancel/error branch:\n *\n * 1. `cachedMessageCounts: Map` — the \"n messages\n * currently on disk\" tracker.\n * 2. `initializedCaches: Set` — the \"addon defers disk writes;\n * we know this cache is primed\" tracker.\n * 3. On-disk `.bin` files written by the addon.\n *\n * Without a single owner, every cancel / zero-token / rename-failed /\n * tool-call exit would need to touch all three; any branch that forgets\n * a layer produces three-layer drift bugs.\n *\n * `KvCacheSession` collapses the three layers behind one object with\n * three operations:\n *\n * - `beginTurn` — resolves the cache file path, primes the system\n * prompt cache if missing (delegated to a caller-supplied closure\n * so the session doesn't depend on the model addon), marks the\n * cache initialized, and returns a `TurnHandle` carrying the\n * resolved path + the snapshot of the on-disk saved count.\n * - `commitTurn` — records the new saved count (for custom-key\n * turns) or renames the addon's pre-response file to the\n * post-response path and records the count there (for auto-cache\n * turns). Flips the turn's internal `committed` flag so the\n * deferred `rollback` becomes a no-op on the happy path.\n * - `rollback` — atomically deletes the on-disk file, clears the\n * in-memory init entry, and forgets the saved count. **All three\n * layers, always, in one place.** Handlers call it once via\n * `ctx.scope.defer(() => session.rollback(turn))`; `commitTurn`\n * short-circuits it on success.\n *\n * The module-level `deleteKvCacheState(...)` function (below) provides\n * an administrative cross-model delete API for the\n * `handleDeleteCache` RPC handler.\n *\n * The module-scoped `cachedMessageCounts` and `initializedCaches` maps\n * are *private* to this file — no other module reaches into them.\n * Callers that need cache-status info do so through the session API.\n */\n// ----- module-scoped state. The session is the single mutation point\n// for the in-memory KV-cache bookkeeping. -----\n/**\n * Number of chat messages the kv-cache file on disk is known to cover,\n * keyed by cache path. Written by `commitTurn`, read by `getSavedCount`,\n * deleted by `rollback` / `delete` / `dropStaleSavedCount`. The same\n * INVARIANT that existed in `kv-cache-state.ts` still holds: an entry is\n * present only when the corresponding `.bin` file is considered\n * trustworthy. Cancelled or zero-token turns must remove the entry so\n * the next-turn slice doesn't read a stale boundary.\n */\nconst cachedMessageCounts = new Map();\n/**\n * In-memory registry of caches initialized this session. The addon\n * defers disk writes, so the absence of a `.bin` file on disk isn't\n * proof that the cache hasn't been primed in this worker process. Keyed\n * by `${modelId}:${configHash}:${cacheKey}`, so on-disk caches from\n * older worker runs still hit the lazy-load path in `beginTurn`.\n */\nconst initializedCaches = new Set();\nfunction initRegistryKey(modelId, configHash, cacheKey) {\n return `${modelId}:${configHash}:${cacheKey}`;\n}\n// ----- factory -----\n/**\n * Construct a session bound to one `(modelId, turn-owning request)`\n * scope. `options.logger` is the per-instance logger the session emits\n * through (typically `withRequestContext(getServerLogger(), ctx)`);\n * falls back to the module-scoped logger when omitted.\n */\nexport function createKvCacheSession(modelId, options) {\n const logger = options?.logger ?? moduleLogger;\n // Per-session map: each `TurnHandle` carries an opaque entry here. A\n // WeakMap so handles drop their state once the handler scope releases\n // the reference; the module-scoped maps above survive.\n const turnState = new WeakMap();\n function makeHandle(cachePath, registryKey) {\n const handle = {\n cachePath,\n savedCount: cachedMessageCounts.get(cachePath) ?? 0\n };\n turnState.set(handle, {\n cachePath,\n registryKey,\n committed: false,\n rolledBack: false\n });\n return handle;\n }\n async function beginCustom(input) {\n const cachePath = await getCacheFilePath(modelId, input.configHash, input.customKey);\n const registryKey = initRegistryKey(modelId, input.configHash, input.customKey);\n // In-memory registry check first — the addon defers disk writes, so\n // a freshly-primed cache may not yet exist on disk. If the\n // in-memory flag isn't set, fall back to a filesystem probe so\n // caches surviving across worker restarts still hit the reuse path.\n let exists = initializedCaches.has(registryKey);\n if (!exists) {\n try {\n await fsPromises.access(cachePath);\n exists = true;\n initializedCaches.add(registryKey);\n }\n catch {\n exists = false;\n }\n }\n logCacheStatus(input.customKey, exists);\n if (!exists) {\n await input.primeIfMissing(cachePath);\n await verifyPrimedFile(cachePath, logger);\n initializedCaches.add(registryKey);\n }\n return makeHandle(cachePath, registryKey);\n }\n async function beginAuto(input) {\n // The pre-response cache key is derived from\n // `history.slice(0, -1)` — `findMatchingCache` does that\n // internally. The post-response key (used after a successful turn)\n // is computed by the caller and passed to `commitTurn` as\n // `targetCachePath`.\n const existingCache = await findMatchingCache(modelId, input.configHash, input.history);\n const preResponseCacheInfo = await getCurrentCacheInfo(modelId, input.configHash, input.history);\n const cachePath = existingCache !== null ? existingCache.cachePath : preResponseCacheInfo.cachePath;\n const cacheKeyForRegistry = existingCache !== null ? existingCache.cacheKey : preResponseCacheInfo.cacheKey;\n const registryKey = initRegistryKey(modelId, input.configHash, cacheKeyForRegistry);\n const cacheExists = existingCache !== null;\n logCacheStatus('auto', cacheExists);\n if (!cacheExists) {\n await input.primeIfMissing(cachePath);\n await verifyPrimedFile(cachePath, logger);\n initializedCaches.add(registryKey);\n }\n return makeHandle(cachePath, registryKey);\n }\n async function beginTurn(input) {\n if (input.kind === 'custom')\n return beginCustom(input);\n return beginAuto(input);\n }\n async function commitTurn(turn, result) {\n const state = turnState.get(turn);\n if (!state) {\n // Handle from a different session or already torn down. Treat as\n // no-op — caller shouldn't be reaching into another session's\n // state, but failing loudly here punishes the rollback-after-end\n // path more than it helps.\n return;\n }\n if (state.committed || state.rolledBack)\n return;\n if (result.kind === 'static') {\n // Custom-key path: the addon wrote the new cache state inline\n // at the same path. Verify the file persisted (the addon\n // currently swallows save errors — see TODO in\n // `verifySaveAndRecord`) and record the new boundary.\n const ok = await verifySaveAndRecord(state.cachePath, result.messageCount);\n if (!ok) {\n // The expected save didn't land — treat the turn as a rollback\n // so the next turn re-primes cleanly.\n await runRollback(state);\n return;\n }\n state.committed = true;\n return;\n }\n // Auto-rename path: the pre-response file is now stale (its key\n // refers to history minus the last user turn). Rename it to the\n // post-response key and record the new count there.\n if (!(await renameCacheFile(state.cachePath, result.targetCachePath))) {\n logger.warn(`[kv-cache] Auto cache rename failed; rolling back. from=${state.cachePath} to=${result.targetCachePath}`);\n await runRollback(state);\n return;\n }\n // The source path's entry is gone (the file moved). Drop it and\n // record the new count at the rename target.\n cachedMessageCounts.delete(state.cachePath);\n const ok = await verifySaveAndRecord(result.targetCachePath, result.messageCount);\n if (!ok) {\n // Rename succeeded but the file isn't where we expected. Roll\n // back via the target path instead of the (now-empty) source.\n state.cachePath = result.targetCachePath;\n await runRollback(state);\n return;\n }\n // Successful auto-rename. The handle's `cachePath` field still\n // points at the (now-gone) source path — that's fine, the handle\n // is committed and won't roll back. Future turns compute fresh\n // paths.\n state.committed = true;\n }\n async function rollback(turn) {\n const state = turnState.get(turn);\n if (!state)\n return;\n if (state.committed || state.rolledBack)\n return;\n await runRollback(state);\n }\n async function runRollback(state) {\n // Order matters only weakly: unlink first so a partial disk-state\n // can't be re-loaded by a sibling turn between the file delete and\n // the in-memory clear. In practice handlers serialise per model;\n // the order is belt-and-suspenders.\n try {\n await fsPromises.unlink(state.cachePath);\n }\n catch (unlinkError) {\n logger.warn(`[kv-cache] Failed to remove cache file during rollback; next turn may load stale KV state. path=${state.cachePath} error=${unlinkError instanceof Error ? unlinkError.message : String(unlinkError)}`);\n }\n initializedCaches.delete(state.registryKey);\n cachedMessageCounts.delete(state.cachePath);\n state.rolledBack = true;\n }\n function dropStaleSavedCount(turn) {\n const state = turnState.get(turn);\n if (!state)\n return;\n cachedMessageCounts.delete(state.cachePath);\n }\n return {\n beginTurn,\n commitTurn,\n rollback,\n dropStaleSavedCount\n };\n}\n// ----- module-level administrative API -----\n/**\n * Atomically delete every layer of KV-cache state for a\n * `(kvCacheKey, modelId)` pair, or wipe everything. Single entry point\n * — the only mutation point for cross-model state outside of\n * turn-scoped `commitTurn`/`rollback`.\n *\n * Why this isn't a method on `KvCacheSession`: deletes are\n * cross-model (`all: true` has no model; the keyed form has\n * `modelId` optional on the wire). A session, by contrast, is\n * created with a *fixed* `modelId` for the duration of a turn. Making\n * delete a method would force callers to materialise an irrelevant\n * session for cross-model administrative cleanups.\n *\n * Layers cleared, in order:\n * 1. On-disk: `deleteCache(...)` removes the matching directory\n * tree (or wipes and recreates the root for `all: true`).\n * 2. `cachedMessageCounts`: prefix-cleanup by the removed directory\n * so any per-cache count under the deleted tree is forgotten.\n * 3. `initializedCaches`: scope clear by `(kvCacheKey[, modelId])`,\n * matching the on-disk scope.\n *\n * Concurrency with in-flight turns: this delete is wire-async with\n * respect to any turn currently holding a `TurnHandle` for the same\n * cache key. Worst case the on-disk `.bin` is removed while a turn is\n * mid-write; the turn's eventual `commitTurn(...)` then fails the\n * `verifySaveAndRecord` probe (file gone) and rolls back idempotently.\n * No coordination primitive is needed because every layer's mutation\n * is idempotent (`unlink` no-ops if missing, `Map.delete` / `Set.delete`\n * no-op on absent keys).\n */\nexport async function deleteKvCacheState(target) {\n if ('all' in target) {\n const removed = await deleteCacheUtil({ all: true });\n cachedMessageCounts.clear();\n initializedCaches.clear();\n // `removed` is the kv-cache root dir; surfaces it for ops\n // visibility but isn't part of the contract.\n moduleLogger.debug(`[kv-cache] Cleared all caches under ${removed}`);\n return;\n }\n const removedPath = await deleteCacheUtil({\n kvCacheKey: target.kvCacheKey,\n ...(target.modelId !== undefined && { modelId: target.modelId })\n });\n // Prefix-cleanup the in-memory counts. The on-disk directory tree\n // is `{kvCacheRoot}/{kvCacheKey}[/{modelId}]/`, so every entry in\n // `cachedMessageCounts` whose key is the removed directory itself\n // or sits beneath it must go.\n clearCachedMessageCountsByPrefix(removedPath, path.sep);\n // The in-memory init-set keys are\n // `${modelId}:${configHash}:${kvCacheKey}` — clear by the user-\n // facing kvCacheKey (and optionally narrow by modelId).\n clearInitializedCachesByScope({\n cacheKey: target.kvCacheKey,\n ...(target.modelId !== undefined && { modelId: target.modelId })\n });\n}\n// ----- private helpers -----\n/**\n * Verify that the addon actually persisted a usable cache file after a\n * prime. Mirrors the `verifySaveAndRecord` access-probe used at commit\n * time, applied at prime time so the session doesn't mark a cache\n * `initializedCaches.add(...)` against a path that's missing or empty\n * on disk.\n *\n * Failure modes this catches:\n *\n * - The addon's `model.run({ saveSessionPath })` was interrupted\n * before the save call ran (e.g. signal abort during prefill); the\n * prime closure resolves cleanly because addon save errors are not\n * propagated, but no file is on disk.\n * - The addon's `llama_state_save_file` was called but produced an\n * empty file (out-of-space / fs error swallowed by the addon).\n *\n * Failure modes this does **NOT** catch:\n *\n * - A partial-but-nonzero file written by the addon (e.g. header +\n * truncated KV state). Catching this requires either an\n * addon-side change (have `CacheManager::writeCacheFile` check the\n * return value of `llama_state_save_file` and throw on failure) or\n * a structural hash check we can't currently compute from the\n * SDK. Filed as a follow-up — see `cache-api.md` in the addon\n * repo / tracking ticket.\n *\n * On failure we best-effort `unlink` an empty leftover file (so the\n * next existence probe doesn't trust it) and throw — the handler in\n * `completion-stream.ts` lets the error propagate up and no\n * `initializedCaches` entry is recorded.\n */\nasync function verifyPrimedFile(cachePath, logger) {\n let stats;\n try {\n stats = await fsPromises.stat(cachePath);\n }\n catch (statError) {\n // ENOENT is the common case here — addon prime returned without\n // calling save (most often: signal abort during prefill).\n throw new Error(`[kv-cache] prime closure resolved but no cache file was written. path=${cachePath} cause=${statError instanceof Error ? statError.message : String(statError)}`);\n }\n if (stats.size === 0) {\n // Best-effort cleanup so a future probe doesn't trust the empty\n // file. Unlink failure is non-fatal — we still throw on the\n // primary \"prime didn't persist\" condition.\n try {\n await fsPromises.unlink(cachePath);\n }\n catch (unlinkError) {\n logger.warn(`[kv-cache] Failed to remove empty primed cache file. path=${cachePath} error=${unlinkError instanceof Error ? unlinkError.message : String(unlinkError)}`);\n }\n throw new Error(`[kv-cache] prime closure resolved but cache file is empty. path=${cachePath}`);\n }\n}\n/**\n * Verify the addon actually persisted the cache file before recording\n * its message count. The addon currently swallows write errors\n * silently, so a missing file means the next turn must resend the full\n * history rather than slicing against a stale `savedCount`.\n *\n * TODO: once the addon surfaces save failures (e.g. throws\n * `UnableToSaveSessionFile` when `llama_state_save_file` returns\n * false), drop the `access()` probe and wrap the `model.run()` call in\n * a real try/catch that forwards the error.\n */\nasync function verifySaveAndRecord(cachePath, messageCount) {\n try {\n await fsPromises.access(cachePath);\n cachedMessageCounts.set(cachePath, messageCount);\n return true;\n }\n catch (err) {\n cachedMessageCounts.delete(cachePath);\n logCacheSaveError(cachePath, err);\n return false;\n }\n}\nfunction clearCachedMessageCountsByPrefix(prefix, sep) {\n if (!prefix) {\n cachedMessageCounts.clear();\n return;\n }\n for (const key of cachedMessageCounts.keys()) {\n if (key === prefix) {\n cachedMessageCounts.delete(key);\n continue;\n }\n if (!key.startsWith(prefix + sep))\n continue;\n cachedMessageCounts.delete(key);\n }\n}\nfunction clearInitializedCachesByScope(scope) {\n if (scope.cacheKey === undefined && scope.modelId === undefined) {\n initializedCaches.clear();\n return;\n }\n for (const key of initializedCaches) {\n const firstSep = key.indexOf(':');\n const secondSep = key.indexOf(':', firstSep + 1);\n if (firstSep === -1 || secondSep === -1)\n continue;\n const entryModelId = key.slice(0, firstSep);\n const entryCacheKey = key.slice(secondSep + 1);\n if (scope.cacheKey !== undefined && entryCacheKey !== scope.cacheKey) {\n continue;\n }\n if (scope.modelId !== undefined && entryModelId !== scope.modelId) {\n continue;\n }\n initializedCaches.delete(key);\n }\n}\n// ----- test-only escape hatches -----\n/**\n * Test-only access to the module-scoped state. Production code reaches\n * for cache state exclusively through the session API; the unit suite\n * for `kv-cache-session.test.ts` needs to seed and inspect raw state\n * to assert the rollback / commit invariants. Not part of the public\n * SDK surface.\n *\n * @internal\n */\nexport const __kvCacheSessionTestHooks = {\n getSavedCount(cachePath) {\n return cachedMessageCounts.get(cachePath);\n },\n setSavedCountForTest(cachePath, count) {\n cachedMessageCounts.set(cachePath, count);\n },\n hasInitializedKey(modelId, configHash, cacheKey) {\n return initializedCaches.has(initRegistryKey(modelId, configHash, cacheKey));\n },\n markInitializedForTest(modelId, configHash, cacheKey) {\n initializedCaches.add(initRegistryKey(modelId, configHash, cacheKey));\n },\n resetForTest() {\n cachedMessageCounts.clear();\n initializedCaches.clear();\n }\n};\n// Re-export `generateConfigHash` from the path utilities so callers of\n// the session can compute the hash without separately importing\n// `kv-cache-utils`. The function itself stays in `kv-cache-utils.ts`\n// (pure, no state) — only the re-export lives here.\nexport { generateConfigHash };\n/**\n * Pure decision helper for kv-cache history slicing used by\n * `completion-stream.ts` (via the slice computed from\n * `TurnHandle.savedCount`).\n *\n * This module intentionally has **no** `bare-*` imports so it can be\n * exercised directly from unit tests running under `bun` without\n * pulling in the Bare runtime (which is not available in that\n * environment).\n *\n * Cancel detection flows through the per-request `AbortSignal` from\n * `RequestRegistry`; the `cachedMessageCounts` map lives in\n * `kv-cache-session.ts`, which owns all three KV-cache bookkeeping\n * layers (saved counts, init flags, on-disk files). Only the pure\n * slice-decision helper remains here.\n */\nexport function shouldCommitCachedTurn(context) {\n const { aborted, producedTokens, generatedTokens, predict } = context;\n const stoppedByBudget = predict !== undefined &&\n predict > 0 &&\n generatedTokens !== undefined &&\n generatedTokens >= predict;\n return !aborted && producedTokens && !stoppedByBudget;\n}\n/**\n * Pure slice decision for `prepareMessagesForCache`.\n *\n * Mirrors the shape of the logic in `completion-stream.ts` but without\n * calling `transformMessages` (which depends on `bare-fs` for\n * attachment probing). Kept here so the decision can be unit-tested in\n * isolation.\n *\n * The key regression guard: when a non-zero `savedCount` would slice\n * the history down to an empty array, it is treated as stale — the\n * caller falls back to sending the system-stripped full history rather\n * than handing the model an empty payload.\n */\nexport function decideCachedHistorySlice(savedCount, cacheExists, history) {\n if (!cacheExists || history.length === 0) {\n return {\n messages: history.filter((msg) => msg.role !== 'system'),\n clearStaleCount: false\n };\n }\n const canSlice = savedCount > 0 && savedCount <= history.length;\n const sliced = canSlice ? history.slice(savedCount) : null;\n // A non-null slice that is empty means the saved count is stale: the\n // cached turn boundary is claiming the entire current history is\n // already cached, which happens when a previous turn was cancelled\n // mid-decode and still recorded `history.length + 1`. Treat it as a\n // bad state and resend the full (system-stripped) history.\n const useSlice = sliced !== null && sliced.length > 0;\n const messages = useSlice ? sliced : history.filter((msg) => msg.role !== 'system');\n return {\n messages,\n clearStaleCount: !useSlice && savedCount > 0\n };\n}\nvar __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n};\nvar __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {\n return function (env) {\n function fail(e) {\n env.error = env.hasError ? new SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n };\n})(typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n});\nimport LlmLlamacpp from '@qvac/llm-llamacpp';\nimport llmAddonLogging from '@qvac/llm-llamacpp/addonLogging.js';\nimport { definePlugin, defineHandler, finetuneRequestSchema, batchCompletionStreamRequestSchema, batchCompletionStreamResponseSchema, completionStreamRequestSchema, completionStreamResponseSchema, finetuneResponseSchema, translateRequestSchema, translateResponseSchema, ModelType, llmConfigBaseSchema, ADDON_LLM } from '../../../../schemas/index.js';\nimport { createStreamLogger, registerAddonLogger } from '../../../../logging/index.js';\nimport { expandGGUFIntoShards } from '../../../utils/index.js';\nimport { completion } from './ops/completion-stream.js';\nimport { batchCompletion } from './ops/batch-completion-stream.js';\nimport { finetune } from './ops/finetune.js';\nimport { translate } from '../../ops/translate.js';\nimport { transformLlmConfig } from './transform.js';\nimport { attachModelExecutionMs } from '../../../../profiling/model-execution.js';\nimport { getModelConfig } from '../../registry/model-registry.js';\nimport { createCompletionNormalizer } from '../../../utils/completion-normalizer.js';\nimport { detectToolDialect } from '../../../utils/tool-integration.js';\nimport { getRequestRegistry, withRequestContext } from '../../runtime/index.js';\nimport { generateServerRequestId } from '../../runtime/request-id.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nimport { ContextOverflowError } from '../../../../utils/errors-server.js';\nimport { isAddonContextOverflowError, parseContextOverflowMessage } from './ops/context-overflow.js';\nimport { isAddonCancelledError } from './ops/batch-cancelled.js';\nimport { isMobile } from '../../registry/runtime-context-registry.js';\nimport { stripMultiGpuKeys } from '../../../utils/multi-gpu-mobile.js';\nfunction createLlmModel(modelId, modelPath, llmConfig, projectionModelPath) {\n const logger = createStreamLogger(modelId, ModelType.llamacppCompletion);\n registerAddonLogger(modelId, ModelType.llamacppCompletion, logger);\n const llmConfigStrings = transformLlmConfig(llmConfig);\n if (isMobile()) {\n const stripped = stripMultiGpuKeys(llmConfigStrings);\n if (stripped.length > 0) {\n getServerLogger().warn(`[${ModelType.llamacppCompletion}:${modelId}] Multi-GPU parameters (${stripped.join(', ')}) are not supported on mobile (single-GPU device) — removing from config; model will load with single-GPU defaults`);\n }\n }\n const modelFiles = expandGGUFIntoShards(modelPath);\n const model = new LlmLlamacpp({\n files: {\n model: modelFiles,\n ...(projectionModelPath && { projectionModel: projectionModelPath })\n },\n config: llmConfigStrings,\n logger,\n opts: { stats: true }\n });\n return { model };\n}\nfunction wrapBatchEvents(id, events) {\n return events.map((event) => ({ id, event }));\n}\nfunction createBatchNormalizer(request, dialect, tools, toolsActive) {\n const capabilities = {\n toolCalling: toolsActive && tools.length > 0 ? 'textParse' : 'none',\n thinkingFraming: request.captureThinking ? 'thinkTags' : 'none'\n };\n return createCompletionNormalizer({\n capabilities,\n tools: toolsActive ? tools : [],\n captureThinking: request.captureThinking ?? false,\n emitRawDeltas: request.emitRawDeltas ?? false,\n toolDialect: request.toolDialect ?? dialect\n });\n}\nexport const llmPlugin = definePlugin({\n modelType: ModelType.llamacppCompletion,\n displayName: 'LLM (llama.cpp)',\n addonPackage: ADDON_LLM,\n loadConfigSchema: llmConfigBaseSchema,\n async resolveConfig(cfg, ctx) {\n const { projectionModelSrc, ...llmConfig } = cfg;\n if (!projectionModelSrc) {\n return { config: llmConfig };\n }\n const projectionModelPath = await ctx.resolveModelPath(projectionModelSrc);\n return {\n config: llmConfig,\n artifacts: { projectionModelPath }\n };\n },\n createModel(params) {\n const llmConfig = (params.modelConfig ?? {});\n const { model } = createLlmModel(params.modelId, params.modelPath, llmConfig, params.artifacts?.['projectionModelPath']);\n return { model };\n },\n handlers: {\n batchCompletionStream: defineHandler({\n requestSchema: batchCompletionStreamRequestSchema,\n responseSchema: batchCompletionStreamResponseSchema,\n streaming: true,\n cancel: { scope: 'model', hard: true },\n handler: async function* (request) {\n const env_1 = { stack: [], error: void 0, hasError: false };\n try {\n const dialect = request.toolDialect ?? detectToolDialect(request.modelId);\n const modelCfg = getModelConfig(request.modelId);\n const toolsActive = modelCfg.tools === true;\n const toolsByPosition = request.prompts.map((prompt) => prompt.tools ?? []);\n const toolsById = new Map();\n const normalizers = new Map();\n const bufferedEvents = [];\n let ids = [];\n function registerIds(addonIds) {\n ids = addonIds;\n for (const [index, id] of addonIds.entries()) {\n toolsById.set(id, toolsByPosition[index] ?? []);\n }\n }\n function getNormalizer(id) {\n let normalizer = normalizers.get(id);\n if (!normalizer) {\n normalizer = createBatchNormalizer(request, dialect, toolsById.get(id) ?? [], toolsActive);\n normalizers.set(id, normalizer);\n }\n return normalizer;\n }\n const ctx = __addDisposableResource(env_1, await getRequestRegistry().begin({\n requestId: request.requestId ?? generateServerRequestId(),\n kind: 'batchCompletion',\n modelId: request.modelId\n }), true);\n const requestLogger = withRequestContext(getServerLogger(), ctx);\n if (Boolean(ctx.signal.aborted)) {\n const abortedIds = request.prompts.map((prompt, index) => prompt.id ?? String(index));\n yield {\n type: 'batchCompletionStream',\n done: true,\n ids: abortedIds,\n events: abortedIds.flatMap((id) => wrapBatchEvents(id, getNormalizer(id).finish({ stopReason: 'cancelled' })))\n };\n return;\n }\n const stream = batchCompletion({\n modelId: request.modelId,\n prompts: request.prompts\n }, { signal: ctx.signal, scope: ctx.scope, logger: requestLogger });\n try {\n let result = await stream.next();\n while (!result.done) {\n if (result.value.type === 'ids') {\n registerIds(result.value.ids);\n yield {\n type: 'batchCompletionStream',\n ids,\n events: []\n };\n }\n else {\n const { id, token } = result.value;\n const events = wrapBatchEvents(id, getNormalizer(id).push(token));\n if (request.stream ?? true) {\n yield {\n type: 'batchCompletionStream',\n events\n };\n }\n else {\n bufferedEvents.push(...events);\n }\n }\n result = await stream.next();\n }\n const { modelExecutionMs, stats, results } = result.value;\n const terminalEvents = [];\n for (const batchResult of results) {\n const normalizer = getNormalizer(batchResult.id);\n if (normalizer.getAccumulated().rawText.length === 0 && batchResult.output.length > 0) {\n terminalEvents.push(...wrapBatchEvents(batchResult.id, normalizer.push(batchResult.output)));\n }\n // Stats are batch-level (the addon reports one aggregate\n // snapshot, not per prompt), so they ride the top-level `stats`\n // field on the done frame below — NOT each prompt's terminal.\n terminalEvents.push(...wrapBatchEvents(batchResult.id, normalizer.finish({\n ...(ctx.signal.aborted && {\n stopReason: 'cancelled'\n })\n })));\n }\n const finalEvents = (request.stream ?? true) ? terminalEvents : [...bufferedEvents, ...terminalEvents];\n yield attachModelExecutionMs({\n type: 'batchCompletionStream',\n done: true,\n ids,\n events: finalEvents,\n ...(stats && { stats })\n }, modelExecutionMs);\n }\n catch (err) {\n if (isAddonContextOverflowError(err)) {\n const { promptTokens, ctxSize } = parseContextOverflowMessage(err instanceof Error ? err.message : '');\n throw new ContextOverflowError(promptTokens, ctxSize, request.modelId, err);\n }\n // Cancelling a batch that still has prompts queued behind the\n // `parallel` slot limit fails the whole native batch group with\n // a `Cancelled` error (the addon rejects `run()` rather than\n // resolving with partial outputs — see continuous-batching docs).\n // Ride the same graceful \"done\" path the non-overflow cancel\n // uses: emit cancelled terminals per id so the client surfaces\n // `InferenceCancelledError`, not a generic `CompletionFailedError`.\n if (ctx.signal.aborted && isAddonCancelledError(err)) {\n const cancelledIds = ids.length > 0\n ? ids\n : request.prompts.map((prompt, index) => prompt.id ?? String(index));\n const cancelledTerminals = cancelledIds.flatMap((id) => wrapBatchEvents(id, getNormalizer(id).finish({ stopReason: 'cancelled' })));\n yield {\n type: 'batchCompletionStream',\n done: true,\n ids: cancelledIds,\n events: (request.stream ?? true)\n ? cancelledTerminals\n : [...bufferedEvents, ...cancelledTerminals]\n };\n return;\n }\n throw err;\n }\n finally {\n await stream.return?.(undefined);\n }\n }\n catch (e_1) {\n env_1.error = e_1;\n env_1.hasError = true;\n }\n finally {\n const result_1 = __disposeResources(env_1);\n if (result_1)\n await result_1;\n }\n }\n }),\n completionStream: defineHandler({\n requestSchema: completionStreamRequestSchema,\n responseSchema: completionStreamResponseSchema,\n streaming: true,\n cancel: { scope: 'model', hard: true },\n handler: async function* (request) {\n const env_2 = { stack: [], error: void 0, hasError: false };\n try {\n const filteredHistory = request.history.map(({ role, content, attachments }) => ({\n role,\n content,\n attachments: attachments ?? []\n }));\n const modelCfg = getModelConfig(request.modelId);\n const toolsActive = (request.tools?.length ?? 0) > 0 && modelCfg.tools === true;\n const capabilities = {\n toolCalling: toolsActive ? 'textParse' : 'none',\n thinkingFraming: request.captureThinking ? 'thinkTags' : 'none'\n };\n // Dialect runs regardless of tool availability — thinking/content\n // stripping is needed even on plain completions.\n const dialect = request.toolDialect ?? detectToolDialect(request.modelId);\n const normalizer = createCompletionNormalizer({\n capabilities,\n tools: request.tools ?? [],\n captureThinking: request.captureThinking ?? false,\n emitRawDeltas: request.emitRawDeltas ?? false,\n toolDialect: dialect\n });\n // Open a request-scoped lifecycle. The registry is the single\n // source of truth for \"is this turn cancelled?\" — we plumb the\n // signal into `completion()` and expose `requestId` so the\n // client can target this run with `cancel({ requestId })`.\n // Falls back to a server-generated id if the client (e.g. an\n // older release) didn't send one.\n const ctx = __addDisposableResource(env_2, await getRequestRegistry().begin({\n requestId: request.requestId ?? generateServerRequestId(),\n kind: 'completion',\n modelId: request.modelId\n }), true);\n const requestLogger = withRequestContext(getServerLogger(), ctx);\n // begin() can return already-aborted when the client cancels while\n // this completion is queued behind another same-model one. It never\n // decoded, so it must not touch the shared native context — emit a\n // cancelled terminal and return. Boolean(...) keeps ctx.signal.aborted\n // a boolean so the mid-stream check below isn't narrowed to false.\n const abortedBeforeRun = Boolean(ctx.signal.aborted);\n if (abortedBeforeRun) {\n yield {\n type: 'completionStream',\n done: true,\n events: normalizer.finish({ stopReason: 'cancelled' })\n };\n return;\n }\n const stream = completion({\n history: filteredHistory,\n modelId: request.modelId,\n kvCache: request.kvCache,\n ...(toolsActive && request.tools && { tools: request.tools }),\n ...(request.generationParams && {\n generationParams: request.generationParams\n }),\n ...(toolsActive && { toolDialect: dialect }),\n ...(request.responseFormat && {\n responseFormat: request.responseFormat\n })\n }, { signal: ctx.signal, scope: ctx.scope, logger: requestLogger });\n try {\n const batchedEvents = [];\n let result = await stream.next();\n while (!result.done) {\n const events = normalizer.push(result.value.token);\n if (request.stream) {\n yield {\n type: 'completionStream',\n events\n };\n }\n else {\n batchedEvents.push(...events);\n }\n result = await stream.next();\n }\n const { modelExecutionMs, stats, toolCalls } = result.value;\n // Cancellation rides the done path: observable via the last event's\n // stopReason; client aggregates reject with InferenceCancelledError.\n const cancelled = ctx.signal.aborted;\n // EOS tokens are not decoded by llama_decode, so n_eval (and\n // therefore stats.generatedTokens) counts only real decode calls.\n // When generatedTokens >= effectivePredict the run exhausted its\n // token budget without hitting EOS — emit stopReason \"length\".\n // -1 (unlimited) and -2 (context fill) must never trigger this.\n const effectivePredict = request.generationParams?.predict ?? modelCfg.predict;\n const stoppedByBudget = !cancelled &&\n effectivePredict !== undefined &&\n effectivePredict > 0 &&\n stats?.generatedTokens !== undefined &&\n stats.generatedTokens >= effectivePredict;\n const terminalEvents = normalizer.finish({\n ...(stats && { stats }),\n ...(toolCalls.length > 0 && { toolCalls }),\n ...(cancelled && { stopReason: 'cancelled' }),\n ...(stoppedByBudget && { stopReason: 'length' })\n });\n if (!request.stream) {\n batchedEvents.push(...terminalEvents);\n }\n const finalEvents = request.stream ? terminalEvents : batchedEvents;\n yield attachModelExecutionMs({\n type: 'completionStream',\n done: true,\n events: finalEvents\n }, modelExecutionMs);\n }\n catch (err) {\n // The llama.cpp addon emits a structured `ContextOverflow` status\n // (LlmErrors.hpp::ContextOverflow = 14) when the prompt exceeds\n // the model's `ctx_size`. Bare's `js_throw_error(env, code, msg)`\n // surfaces it as a JS Error with `.code = \"[ :: ContextOverflow ]\"`\n // and `.message` carrying the C++-formatted detail. Rethrow as\n // a typed `ContextOverflowError` so consumers can switch on the\n // class (and `err.code === SDK_SERVER_ERROR_CODES.CONTEXT_OVERFLOW`)\n // instead of substring-matching on the raw addon message.\n if (isAddonContextOverflowError(err)) {\n const { promptTokens, ctxSize } = parseContextOverflowMessage(err instanceof Error ? err.message : '');\n throw new ContextOverflowError(promptTokens, ctxSize, request.modelId, err);\n }\n throw err;\n }\n finally {\n await stream.return?.(undefined);\n }\n }\n catch (e_2) {\n env_2.error = e_2;\n env_2.hasError = true;\n }\n finally {\n const result_2 = __disposeResources(env_2);\n if (result_2)\n await result_2;\n }\n }\n }),\n finetune: defineHandler({\n requestSchema: finetuneRequestSchema,\n responseSchema: finetuneResponseSchema,\n streaming: false,\n // Reality matches addon: llama.cpp exposes `model.cancel()` for\n // the running finetune job, so we flip from `scope: \"none\"` to\n // `{ scope: \"model\", hard: true }`. The `startFinetune` op\n // forwards the registry's abort signal to that call; the broad\n // `cancel({ modelId, kind: \"finetune\" })` and legacy\n // `cancelFinetune(modelId)` paths both flow through the\n // registry.\n cancel: { scope: 'model', hard: true },\n handler: function (request) {\n return finetune(request);\n }\n }),\n translate: defineHandler({\n requestSchema: translateRequestSchema,\n responseSchema: translateResponseSchema,\n streaming: true,\n cancel: { scope: 'model', hard: true },\n handler: async function* (request) {\n const stream = translate(request, request.requestId);\n try {\n let result = await stream.next();\n while (!result.done) {\n yield {\n type: 'translate',\n token: result.value\n };\n result = await stream.next();\n }\n const { modelExecutionMs, stats } = result.value;\n yield attachModelExecutionMs({\n type: 'translate',\n token: '',\n done: true,\n ...(stats && { stats })\n }, modelExecutionMs);\n }\n catch (err) {\n // Same addon, same overflow path as `completionStream`. Wrap so\n // translate consumers can `instanceof ContextOverflowError` too.\n if (isAddonContextOverflowError(err)) {\n const { promptTokens, ctxSize } = parseContextOverflowMessage(err instanceof Error ? err.message : '');\n throw new ContextOverflowError(promptTokens, ctxSize, request.modelId, err);\n }\n throw err;\n }\n finally {\n await stream.return?.(undefined);\n }\n }\n })\n },\n logging: {\n module: llmAddonLogging,\n namespace: ModelType.llamacppCompletion\n }\n});\nimport { TOOLS_MODE } from '../../../../schemas/index.js';\n/**\n * Converts an LlmConfig into the flat string-keyed map the C++ addon expects.\n *\n * JS-only fields excluded from the output (must NOT be forwarded to the addon):\n * - modelType (schema discriminant, meaningless at C++ level)\n * - system_prompt (JS-side history seeding only; C++ removed --system-prompt in 8189)\n */\nexport function transformLlmConfig(llmConfig) {\n const transformed = JSON.parse(JSON.stringify(llmConfig, (key, v) => key === 'modelType' || key === 'system_prompt'\n ? undefined\n : key === 'stop_sequences'\n ? Array.isArray(v)\n ? v.join(', ')\n : v\n : typeof v === 'number' || typeof v === 'boolean'\n ? String(v)\n : v).replace(/\"([a-z][A-Za-z]*)\":/g, (_, key) => `\"${key.replace(/[A-Z]/g, (l) => `_${l.toLowerCase()}`)}\":`));\n if ('stop_sequences' in transformed) {\n transformed['reverse_prompt'] = transformed['stop_sequences'];\n delete transformed['stop_sequences'];\n }\n if ('opencl_cache_dir' in transformed) {\n transformed['openclCacheDir'] = transformed['opencl_cache_dir'];\n delete transformed['opencl_cache_dir'];\n }\n if ('tools_mode' in transformed) {\n if (transformed['tools_mode'] === TOOLS_MODE.dynamic) {\n transformed['tools_compact'] = 'true';\n }\n delete transformed['tools_mode'];\n }\n return transformed;\n}\nimport { LLMChunkAdapter } from '@qvac/rag';\nimport { ragChunkParamsSchema } from '../../../../schemas/index.js';\nexport async function chunk(params) {\n const { documents, chunkOpts } = ragChunkParamsSchema.parse(params);\n const chunker = new LLMChunkAdapter(chunkOpts);\n return await chunker.chunkText(documents, chunkOpts);\n}\nimport { closeRagInstance, deleteWorkspace, DEFAULT_WORKSPACE } from '../rag-workspace-manager.js';\nimport { ragCloseWorkspaceParamsSchema } from '../../../../schemas/index.js';\nexport async function closeWorkspace(params) {\n const { workspace, deleteOnClose } = ragCloseWorkspaceParamsSchema.parse(params);\n await closeRagInstance(workspace);\n if (deleteOnClose) {\n await deleteWorkspace(workspace ?? DEFAULT_WORKSPACE);\n }\n}\nimport { getRagDbAdapter, hasRagWorkspaceStorage } from '../rag-workspace-manager.js';\nimport { ragDeleteEmbeddingsParamsSchema } from '../../../../schemas/index.js';\nimport { RAGDeleteFailedError } from '../../../../utils/errors-server.js';\nexport async function deleteEmbeddings(params) {\n const { ids, workspace } = ragDeleteEmbeddingsParamsSchema.parse(params);\n if (!hasRagWorkspaceStorage(workspace)) {\n throw new RAGDeleteFailedError('workspace is not initialized');\n }\n const dbAdapter = await getRagDbAdapter(workspace);\n await dbAdapter.deleteEmbeddings(ids);\n}\nimport { isWorkspaceLoaded, deleteWorkspace as deleteWorkspaceFromManager } from '../rag-workspace-manager.js';\nimport { ragDeleteWorkspaceParamsSchema } from '../../../../schemas/index.js';\nimport { RAGWorkspaceNotFoundError, RAGWorkspaceInUseError } from '../../../../utils/errors-server.js';\nexport async function deleteWorkspace(params) {\n const { workspace } = ragDeleteWorkspaceParamsSchema.parse(params);\n // Check if workspace is currently in use\n if (isWorkspaceLoaded(workspace)) {\n throw new RAGWorkspaceInUseError(workspace);\n }\n const deleted = await deleteWorkspaceFromManager(workspace);\n if (!deleted) {\n throw new RAGWorkspaceNotFoundError(workspace);\n }\n}\nimport { getRagInstance } from '../rag-workspace-manager.js';\nimport { embed } from '../../ops/embed.js';\nimport { ragIngestParamsSchema } from '../../../../schemas/index.js';\nexport async function ingest(params, options) {\n const { modelId, documents, chunk, chunkOpts, workspace, progressInterval } = ragIngestParamsSchema.parse(params);\n async function embeddingFunction(text) {\n const result = await embed({ modelId, text });\n return result.embedding;\n }\n const rag = await getRagInstance(modelId, embeddingFunction, workspace);\n const ingestOpts = {\n chunk,\n chunkOpts,\n progressInterval,\n onProgress: options?.onProgress,\n signal: options?.signal\n };\n return await rag.ingest(documents, modelId, ingestOpts);\n}\nimport { listWorkspaces as listWorkspacesFromManager } from '../rag-workspace-manager.js';\nexport function listWorkspaces() {\n return listWorkspacesFromManager();\n}\nimport { getRagDbAdapter, hasRagWorkspaceStorage } from '../rag-workspace-manager.js';\nimport { ragReindexParamsSchema } from '../../../../schemas/index.js';\nimport { RAGHyperDBFailedError } from '../../../../utils/errors-server.js';\nexport async function reindex(params, options) {\n const { workspace } = ragReindexParamsSchema.parse(params);\n if (!hasRagWorkspaceStorage(workspace)) {\n throw new RAGHyperDBFailedError('workspace is not initialized');\n }\n const dbAdapter = await getRagDbAdapter(workspace);\n const reindexOpts = {\n onProgress: options?.onProgress,\n signal: options?.signal\n };\n const result = await dbAdapter.reindex(reindexOpts);\n return result;\n}\nimport { getRagDbAdapter } from '../rag-workspace-manager.js';\nimport { ragSaveEmbeddingsParamsSchema } from '../../../../schemas/index.js';\nexport async function saveEmbeddings(params, options) {\n const { documents, progressInterval, workspace } = ragSaveEmbeddingsParamsSchema.parse(params);\n if (documents.length === 0) {\n return [];\n }\n const dbAdapter = await getRagDbAdapter(workspace);\n const saveOpts = {\n progressInterval,\n onProgress: options?.onProgress,\n signal: options?.signal\n };\n return await dbAdapter.saveEmbeddings(documents, saveOpts);\n}\nimport { getRagInstance, hasRagWorkspaceStorage } from '../rag-workspace-manager.js';\nimport { embed } from '../../ops/embed.js';\nimport { ragSearchParamsSchema } from '../../../../schemas/index.js';\nexport async function search(params) {\n const { modelId, query, topK, n, workspace } = ragSearchParamsSchema.parse(params);\n if (!hasRagWorkspaceStorage(workspace)) {\n return [];\n }\n async function embeddingFunction(text) {\n const result = await embed({ modelId, text });\n return result.embedding;\n }\n const rag = await getRagInstance(modelId, embeddingFunction, workspace);\n const results = await rag.search(query, { topK, n });\n return results;\n}\nexport { chunk } from './handlers/chunk.js';\nexport { ingest } from './handlers/ingest.js';\nexport { saveEmbeddings } from './handlers/save-embeddings.js';\nexport { search } from './handlers/search.js';\nexport { deleteEmbeddings } from './handlers/delete-embeddings.js';\nexport { reindex } from './handlers/reindex.js';\nexport { listWorkspaces } from './handlers/list-workspaces.js';\nexport { closeWorkspace } from './handlers/close-workspace.js';\nexport { deleteWorkspace } from './handlers/delete-workspace.js';\nexport { closeAllRagInstances, DEFAULT_WORKSPACE } from './rag-workspace-manager.js';\nexport { getActiveRagRequest, setActiveRagRequest, clearActiveRagRequest, getWorkspaceKey } from './rag-operation-manager.js';\nimport { getRequestRegistry } from '../runtime/index.js';\n// Sentinel for \"no workspace specified\". Mirrors the value re-exported\n// from `rag-workspace-manager.ts`; redeclared locally so this module is\n// safely importable in environments that don't have the Bare runtime\n// (unit tests, doc generators) — `rag-workspace-manager` pulls in\n// `bare-fs` / `bare-path` at module load.\nconst DEFAULT_WORKSPACE = 'default';\n/**\n * RAG operation tracking — workspace-level admission bookkeeping.\n *\n * In 0.11.0 the cancel surface for in-flight RAG operations consolidates\n * onto the request registry (`getRequestRegistry().cancel({ requestId })`).\n * The historical workspace-level pre-emption rule — \"starting a new\n * `ingest` / `reindex` / `saveEmbeddings` on a workspace cancels any prior\n * op on the same workspace\" — is preserved by the dispatcher in\n * `server/rpc/handlers/rag.ts`: the dispatcher cancels the workspace's\n * prior `requestId` (if any) and then begins a new registry context.\n * Workspace-level admission lives in the dispatcher rather than as a\n * registry policy primitive — it's a dispatch concern, not part of the\n * registry's per-`kind` admission rules.\n *\n * This module owns the small workspace → requestId map that makes that\n * pre-emption decision routable from the dispatcher. The map is module-\n * scoped (one per Bare worker) so the dispatcher, the shutdown sweep\n * (`cancelAllRagOperations`), and the workspace-close sweep (which\n * delegates to it via `rag-workspace-manager.ts`) all see the same state.\n */\n// workspace key → requestId of the in-flight RAG operation on that workspace.\nconst activeRagRequestByWorkspace = new Map();\nexport function getWorkspaceKey(workspace) {\n return workspace ?? DEFAULT_WORKSPACE;\n}\n/**\n * Returns the `requestId` of any in-flight RAG operation on the workspace\n * (or `undefined` if none). The dispatcher uses this to decide whether to\n * pre-empt before calling `registry.begin(...)`.\n */\nexport function getActiveRagRequest(workspace) {\n return activeRagRequestByWorkspace.get(getWorkspaceKey(workspace));\n}\n/**\n * Records the `requestId` of a freshly-begun RAG operation. Called by the\n * dispatcher in `rag.ts` after `registry.begin(...)` succeeds; paired with\n * `clearActiveRagRequest` via the request scope's deferred cleanup so the\n * map never outlives the request.\n */\nexport function setActiveRagRequest(workspace, requestId) {\n activeRagRequestByWorkspace.set(getWorkspaceKey(workspace), requestId);\n}\n/**\n * Clears the workspace's mapping iff it still belongs to `requestId`. The\n * conditional guard handles the natural race between two ingest calls on\n * the same workspace: the older context's scope unwind must not stomp the\n * newer context's mapping installed by the pre-emption sequence.\n */\nexport function clearActiveRagRequest(workspace, requestId) {\n const key = getWorkspaceKey(workspace);\n if (activeRagRequestByWorkspace.get(key) === requestId) {\n activeRagRequestByWorkspace.delete(key);\n }\n}\n/**\n * Shutdown / workspace-close sweep. Cancels every tracked RAG request via\n * the registry and clears the workspace map. Idempotent — callers that\n * re-invoke during a teardown (workspace-close fired twice, shutdown\n * racing with `close-all`) get a no-op on the second pass.\n */\nexport function cancelAllRagOperations() {\n if (activeRagRequestByWorkspace.size === 0)\n return;\n const registry = getRequestRegistry();\n for (const [key, requestId] of activeRagRequestByWorkspace) {\n registry.cancel({ requestId, reason: 'rag-shutdown' });\n activeRagRequestByWorkspace.delete(key);\n }\n}\nimport { RAG, HyperDBAdapter } from '@qvac/rag';\nimport Corestore from 'corestore';\nimport fs, { promises as fsPromises } from 'bare-fs';\nimport path from 'bare-path';\nimport { getConfiguredCacheDir } from '../registry/config-registry.js';\nimport { RAGWorkspaceModelMismatchError, RAGWorkspaceNotOpenError } from '../../../utils/errors-server.js';\nimport { validateAndJoinPath } from '../../utils/path-security.js';\nimport { createStreamLogger, getServerLogger, RAG_NAMESPACE } from '../../../logging/index.js';\nimport { cancelAllRagOperations } from './rag-operation-manager.js';\nimport { registerCorestore, unregisterCorestore } from '../runtime-lifecycle.js';\nconst logger = getServerLogger();\nconst ragWorkspaces = new Map();\nexport const DEFAULT_WORKSPACE = 'default';\nfunction getWorkspaceKey(workspace) {\n return workspace ?? DEFAULT_WORKSPACE;\n}\nfunction getRagBaseDir() {\n const cacheDir = getConfiguredCacheDir();\n return path.join(path.dirname(cacheDir), 'rag-hyperdb');\n}\nfunction getStorePath(workspace) {\n return validateAndJoinPath(getRagBaseDir(), workspace);\n}\nexport function hasRagWorkspaceStorage(workspace) {\n const key = getWorkspaceKey(workspace);\n if (ragWorkspaces.has(key))\n return true;\n return fs.existsSync(getStorePath(key));\n}\nasync function getOrCreateWorkspaceEntry(workspace) {\n const key = getWorkspaceKey(workspace);\n const existing = ragWorkspaces.get(key);\n if (existing) {\n return existing;\n }\n const storePath = getStorePath(key);\n const corestore = new Corestore(storePath);\n const dbAdapter = new HyperDBAdapter({\n store: corestore,\n dbName: key\n });\n await dbAdapter.ready();\n registerCorestore(corestore, {\n label: `rag-workspace:${key}`,\n createdAt: Date.now()\n });\n const entry = {\n corestore,\n dbAdapter\n };\n ragWorkspaces.set(key, entry);\n return entry;\n}\nexport async function getRagDbAdapter(workspace) {\n const entry = await getOrCreateWorkspaceEntry(workspace);\n return entry.dbAdapter;\n}\nexport async function getRagInstance(modelId, embeddingFunction, workspace) {\n const key = getWorkspaceKey(workspace);\n const entry = await getOrCreateWorkspaceEntry(workspace);\n if (entry.rag) {\n if (entry.modelId && entry.modelId !== modelId) {\n throw new RAGWorkspaceModelMismatchError(key, entry.modelId, modelId);\n }\n return entry.rag;\n }\n const workspaceLogger = createStreamLogger(key, RAG_NAMESPACE);\n const rag = new RAG({\n dbAdapter: entry.dbAdapter,\n embeddingFunction,\n logger: workspaceLogger\n });\n await rag.ready();\n entry.rag = rag;\n entry.modelId = modelId;\n return rag;\n}\nexport async function closeRagInstance(workspace) {\n const key = getWorkspaceKey(workspace);\n const entry = ragWorkspaces.get(key);\n if (!entry) {\n throw new RAGWorkspaceNotOpenError(key);\n }\n if (entry.rag) {\n await entry.rag.close();\n }\n await entry.dbAdapter.close();\n await entry.corestore.close();\n unregisterCorestore(entry.corestore);\n ragWorkspaces.delete(key);\n}\nlet isCleaningUp = false;\nexport async function closeAllRagInstances() {\n if (isCleaningUp)\n return;\n isCleaningUp = true;\n try {\n cancelAllRagOperations();\n const closures = Array.from(ragWorkspaces.entries()).map(async ([key, entry]) => {\n if (entry.rag) {\n await entry.rag.close();\n }\n await entry.dbAdapter.close();\n await entry.corestore.close();\n unregisterCorestore(entry.corestore);\n ragWorkspaces.delete(key);\n });\n await Promise.all(closures);\n }\n catch (error) {\n logger.error('❌ Error during RAG cleanup:', error);\n }\n finally {\n isCleaningUp = false;\n }\n}\nexport function listWorkspaces() {\n const baseDir = getRagBaseDir();\n if (!fs.existsSync(baseDir)) {\n return [];\n }\n const entries = fs.readdirSync(baseDir, {\n withFileTypes: true\n });\n const directories = entries.filter((entry) => entry.isDirectory() && !entry.name.startsWith('.'));\n return directories.map((entry) => ({\n name: entry.name,\n open: ragWorkspaces.has(entry.name)\n }));\n}\nexport function isWorkspaceLoaded(workspace) {\n const key = getWorkspaceKey(workspace);\n return ragWorkspaces.has(key);\n}\nexport async function deleteWorkspace(workspace) {\n const key = getWorkspaceKey(workspace);\n const storePath = getStorePath(key);\n if (!fs.existsSync(storePath)) {\n return false;\n }\n await fsPromises.rm(storePath, { recursive: true, force: true });\n return true;\n}\nimport fs from 'bare-fs';\nimport path from 'bare-path';\nimport { getQvacPath } from '../../utils/qvac-paths.js';\nimport { CacheDirNotAbsoluteError, CacheDirNotWritableError, ConfigAlreadySetError } from '../../../utils/errors-server.js';\nimport { getServerLogger, setGlobalConsoleOutput, setGlobalLogLevel } from '../../../logging/index.js';\nconst logger = getServerLogger();\nconst configRegistry = {\n cacheDirectory: undefined,\n swarmRelays: undefined,\n loggerLevel: undefined,\n loggerConsoleOutput: undefined,\n httpDownloadConcurrency: undefined,\n registryDownloadMaxRetries: undefined,\n registryStreamTimeoutMs: undefined,\n deviceDefaults: undefined\n};\nlet configIsSet = false;\n/**\n * Sets the SDK configuration. This can only be called ONCE during initialization.\n * After the first call, the config becomes immutable and any subsequent calls will throw.\n *\n * @param config - The configuration to set\n * @throws {ConfigAlreadySetError} If config has already been set\n * @throws {CacheDirNotAbsoluteError} If cacheDirectory is not an absolute path\n * @throws {CacheDirNotWritableError} If cacheDirectory is not writable\n */\nexport function setSDKConfig(config) {\n // Enforce immutability - config can only be set once\n if (configIsSet) {\n throw new ConfigAlreadySetError();\n }\n if (config.cacheDirectory !== undefined && config.cacheDirectory !== null) {\n if (!path.isAbsolute(config.cacheDirectory)) {\n throw new CacheDirNotAbsoluteError();\n }\n try {\n fs.mkdirSync(config.cacheDirectory, { recursive: true });\n const testFile = path.join(config.cacheDirectory, '.qvac-test');\n fs.writeFileSync(testFile, 'test');\n fs.unlinkSync(testFile);\n }\n catch (error) {\n throw new CacheDirNotWritableError(config.cacheDirectory, error instanceof Error ? error.message : String(error), error);\n }\n configRegistry.cacheDirectory = config.cacheDirectory;\n logger.info(`✅ Cache directory set to: ${config.cacheDirectory}`);\n }\n if (config.swarmRelays !== undefined && config.swarmRelays !== null) {\n configRegistry.swarmRelays = config.swarmRelays;\n logger.info(`✅ Swarm relays configured: ${config.swarmRelays.length} relay(s)`);\n }\n if (config.loggerLevel !== undefined && config.loggerLevel !== null) {\n configRegistry.loggerLevel = config.loggerLevel;\n setGlobalLogLevel(config.loggerLevel);\n logger.info(`Log level set to: ${config.loggerLevel}`);\n }\n if (config.loggerConsoleOutput !== undefined && config.loggerConsoleOutput !== null) {\n configRegistry.loggerConsoleOutput = config.loggerConsoleOutput;\n setGlobalConsoleOutput(config.loggerConsoleOutput);\n logger.info(`Console output ${config.loggerConsoleOutput ? 'enabled' : 'disabled'}`);\n }\n if (config.httpDownloadConcurrency !== undefined && config.httpDownloadConcurrency !== null) {\n configRegistry.httpDownloadConcurrency = config.httpDownloadConcurrency;\n logger.info(`HTTP download concurrency set to: ${config.httpDownloadConcurrency}`);\n }\n if (config.registryDownloadMaxRetries !== undefined &&\n config.registryDownloadMaxRetries !== null) {\n configRegistry.registryDownloadMaxRetries = config.registryDownloadMaxRetries;\n logger.info(`✅ Registry download max retries set to: ${config.registryDownloadMaxRetries}`);\n }\n if (config.registryStreamTimeoutMs !== undefined && config.registryStreamTimeoutMs !== null) {\n configRegistry.registryStreamTimeoutMs = config.registryStreamTimeoutMs;\n logger.info(`✅ Registry stream timeout set to: ${config.registryStreamTimeoutMs}ms`);\n }\n if (config.deviceDefaults !== undefined && config.deviceDefaults !== null) {\n configRegistry.deviceDefaults = config.deviceDefaults;\n logger.info(`✅ Device defaults configured: ${config.deviceDefaults.length} pattern(s)`);\n }\n // Mark config as set - now it's immutable\n configIsSet = true;\n}\nexport function getSDKConfig() {\n return { ...configRegistry };\n}\nfunction getDefaultCacheDir() {\n return getQvacPath('models');\n}\nexport function getConfiguredCacheDir() {\n return configRegistry.cacheDirectory || getDefaultCacheDir();\n}\n/**\n * Logging Stream Registry\n *\n * Manages RPC subscriptions for streaming logs from server to connected clients.\n *\n * Purpose:\n * - Registers client subscriptions to model/SDK log streams\n * - Routes log messages to subscribed clients via RPC\n * - Buffers logs during model loading (before client subscribes)\n * - Manages stream lifecycle (subscribe/unsubscribe)\n *\n */\nimport { SDK_ALL_LOG_ID } from '../../../logging/namespaces.js';\nconst loggingStreams = new Map();\n// Buffering for logs emitted during model loading (before client subscribes)\nconst MAX_BUFFERED_LOGS_PER_MODEL = 100;\nconst BUFFER_EXPIRY_MS = 30_000;\nconst BUFFERING_TIMEOUT_MS = 5_000;\nconst logBuffer = new Map();\nconst modelsWithBuffering = new Set();\nconst bufferingTimeouts = new Map();\nfunction clearBufferingTimeout(id) {\n const timeout = bufferingTimeouts.get(id);\n if (timeout) {\n clearTimeout(timeout);\n bufferingTimeouts.delete(id);\n }\n}\nexport function startLogBuffering(id) {\n modelsWithBuffering.add(id);\n}\nexport function stopLogBufferingWithTimeout(id) {\n clearBufferingTimeout(id);\n const timeout = setTimeout(() => {\n if (modelsWithBuffering.has(id)) {\n modelsWithBuffering.delete(id);\n logBuffer.delete(id);\n }\n bufferingTimeouts.delete(id);\n }, BUFFERING_TIMEOUT_MS);\n bufferingTimeouts.set(id, timeout);\n}\nexport function registerLoggingStream(id, streamHandler) {\n if (!loggingStreams.has(id)) {\n loggingStreams.set(id, new Set());\n }\n loggingStreams.get(id).add(streamHandler);\n const buffered = logBuffer.get(id);\n if (buffered && buffered.length > 0) {\n for (const log of buffered) {\n try {\n streamHandler(log.level, log.namespace, log.message, log.sourceId);\n }\n catch (error) {\n console.error(`Error flushing buffered log for ID ${id}:`, error); // fallback (avoid recursion)\n }\n }\n logBuffer.delete(id);\n }\n modelsWithBuffering.delete(id);\n clearBufferingTimeout(id);\n}\nexport function unregisterLoggingStream(id, streamHandler) {\n const streams = loggingStreams.get(id);\n if (streams) {\n streams.delete(streamHandler);\n if (streams.size === 0) {\n loggingStreams.delete(id);\n }\n }\n}\nexport function unregisterAllLoggingStreams(id) {\n // Simply remove all logging handlers\n // Active streams will naturally terminate when no more logs flow\n loggingStreams.delete(id);\n logBuffer.delete(id);\n modelsWithBuffering.delete(id);\n clearBufferingTimeout(id);\n}\nexport function sendLogToStreams(id, level, namespace, message) {\n // The originating id is preserved as `sourceId` so the global stream keeps the\n // real origin of each log instead of reporting the subscription id.\n deliverToStream(id, level, namespace, message, id);\n if (id !== SDK_ALL_LOG_ID) {\n deliverToStream(SDK_ALL_LOG_ID, level, namespace, message, id);\n }\n}\nfunction deliverToStream(id, level, namespace, message, sourceId) {\n const streams = loggingStreams.get(id);\n const isBuffering = modelsWithBuffering.has(id);\n if (streams && streams.size > 0) {\n for (const streamHandler of streams) {\n try {\n streamHandler(level, namespace, message, sourceId);\n }\n catch (error) {\n console.error(`Error sending log to stream for ID ${id}:`, error); // fallback (avoid recursion)\n }\n }\n }\n else if (isBuffering) {\n if (!logBuffer.has(id)) {\n logBuffer.set(id, []);\n }\n const buffer = logBuffer.get(id);\n const now = Date.now();\n const validLogs = buffer.filter((log) => now - log.timestamp < BUFFER_EXPIRY_MS);\n if (validLogs.length >= MAX_BUFFERED_LOGS_PER_MODEL) {\n validLogs.shift();\n }\n validLogs.push({ level, namespace, message, sourceId, timestamp: now });\n logBuffer.set(id, validLogs);\n }\n}\nexport function hasLoggingStreams(id) {\n const streams = loggingStreams.get(id);\n return streams && streams.size > 0;\n}\nexport function getLoggingStreamStats() {\n return {\n totalIds: loggingStreams.size,\n ids: Array.from(loggingStreams.keys()),\n totalStreams: Array.from(loggingStreams.values()).reduce((sum, streams) => sum + streams.size, 0),\n bufferedIds: logBuffer.size,\n idsWithBuffering: modelsWithBuffering.size,\n activeTimeouts: bufferingTimeouts.size\n };\n}\nexport function clearAllLoggingStreams() {\n for (const timeout of bufferingTimeouts.values()) {\n clearTimeout(timeout);\n }\n loggingStreams.clear();\n logBuffer.clear();\n modelsWithBuffering.clear();\n bufferingTimeouts.clear();\n}\nimport { getSDKConfig } from './config-registry.js';\nimport { getRuntimeContext } from './runtime-context-registry.js';\nimport { getServerLogger } from '../../../logging/index.js';\nexport { CANONICAL_TO_ALIAS, MODEL_CONFIG_SCHEMAS, BUILTIN_DEVICE_PATTERNS, matchesPattern, findAllMatchingPatterns, getDefaultsFromPattern, resolveModelConfigWithContext } from './model-config-utils.js';\nimport { BUILTIN_DEVICE_PATTERNS, resolveModelConfigWithContext } from './model-config-utils.js';\nconst logger = getServerLogger();\nexport function resolveModelConfig(modelType, userInput) {\n const ctx = getRuntimeContext();\n const userPatterns = getSDKConfig().deviceDefaults ?? [];\n return resolveModelConfigWithContext(modelType, userInput, ctx, userPatterns, BUILTIN_DEVICE_PATTERNS, (log) => {\n if (log.appliedPatterns.length > 0) {\n logger.debug(`[device-defaults] ${modelType}: applied [${log.appliedPatterns.join(' → ')}]`);\n }\n });\n}\nimport { ModelType } from '../../../schemas/index.js';\nimport { llmConfigSchema, embedConfigSchema } from '../../../schemas/llamacpp-config.js';\nimport { whisperConfigSchema, parakeetRuntimeConfigSchema } from '../../../schemas/transcription-config.js';\nimport { bciConfigSchema } from '../../../schemas/bci-config.js';\nimport { ocrConfigSchema } from '../../../schemas/ocr.js';\nimport { sdcppConfigSchema } from '../../../schemas/sdcpp-config.js';\nimport { vlaConfigSchema } from '../../../schemas/vla.js';\nimport { classificationConfigSchema } from '../../../schemas/classification.js';\nexport const CANONICAL_TO_ALIAS = {\n [ModelType.llamacppCompletion]: 'llm',\n [ModelType.llamacppEmbedding]: 'embeddings',\n [ModelType.whispercppTranscription]: 'whisper',\n [ModelType.bciWhispercppTranscription]: 'bci',\n [ModelType.parakeetTranscription]: 'parakeet',\n [ModelType.nmtcppTranslation]: 'nmt',\n [ModelType.onnxTts]: 'tts',\n [ModelType.ttsGgml]: 'tts',\n [ModelType.ggmlOcr]: 'ocr',\n [ModelType.sdcppGeneration]: 'diffusion',\n [ModelType.ggmlVla]: 'vla',\n [ModelType.ggmlClassification]: 'classification'\n};\nexport const MODEL_CONFIG_SCHEMAS = {\n [ModelType.llamacppCompletion]: llmConfigSchema,\n [ModelType.llamacppEmbedding]: embedConfigSchema,\n [ModelType.whispercppTranscription]: whisperConfigSchema,\n [ModelType.bciWhispercppTranscription]: bciConfigSchema,\n [ModelType.parakeetTranscription]: parakeetRuntimeConfigSchema.passthrough(),\n [ModelType.ggmlOcr]: ocrConfigSchema,\n [ModelType.sdcppGeneration]: sdcppConfigSchema,\n [ModelType.ggmlVla]: vlaConfigSchema,\n [ModelType.ggmlClassification]: classificationConfigSchema\n};\n// Ordered general → specific (later patterns override earlier)\nexport const BUILTIN_DEVICE_PATTERNS = [\n {\n name: 'Android devices (SDK default)',\n match: {\n platform: 'android'\n },\n defaults: {\n [ModelType.llamacppEmbedding]: { flashAttention: 'off' }\n }\n },\n {\n name: 'Pixel devices (SDK default)',\n match: {\n platform: 'android',\n deviceBrand: 'google',\n deviceModelPrefix: 'Pixel'\n },\n defaults: {\n [ModelType.llamacppCompletion]: { device: 'cpu' },\n [ModelType.llamacppEmbedding]: { device: 'cpu' }\n }\n }\n];\nexport function matchesPattern(ctx, match) {\n if (match.platform !== undefined && ctx.platform !== match.platform) {\n return false;\n }\n if (match.deviceBrand !== undefined &&\n ctx.deviceBrand?.toLowerCase() !== match.deviceBrand.toLowerCase()) {\n return false;\n }\n if (match.deviceModelPrefix !== undefined &&\n !(ctx.deviceModel?.startsWith(match.deviceModelPrefix) ?? false)) {\n return false;\n }\n if (match.deviceModelContains !== undefined &&\n !(ctx.deviceModel?.includes(match.deviceModelContains) ?? false)) {\n return false;\n }\n return true;\n}\nexport function findAllMatchingPatterns(ctx, patterns) {\n return patterns.filter((pattern) => matchesPattern(ctx, pattern.match));\n}\nexport function getDefaultsFromPattern(modelType, pattern) {\n let defaults = pattern.defaults[modelType];\n if (!defaults) {\n const aliasKey = CANONICAL_TO_ALIAS[modelType];\n if (aliasKey && aliasKey in pattern.defaults) {\n defaults = pattern.defaults[aliasKey];\n }\n }\n return defaults;\n}\nexport function resolveModelConfigWithContext(modelType, userInput, ctx, userPatterns, builtinPatterns = BUILTIN_DEVICE_PATTERNS, onLog) {\n // Find ALL matching patterns (general → specific order preserved)\n const matchingBuiltin = findAllMatchingPatterns(ctx, builtinPatterns);\n const matchingUser = findAllMatchingPatterns(ctx, userPatterns);\n // Merge in order: builtin patterns → user patterns → user input\n // Later values override earlier (more specific wins)\n const appliedPatterns = [];\n let mergedDefaults = {};\n for (const pattern of matchingBuiltin) {\n const defaults = getDefaultsFromPattern(modelType, pattern);\n if (defaults) {\n appliedPatterns.push(pattern.name);\n mergedDefaults = { ...mergedDefaults, ...defaults };\n }\n }\n for (const pattern of matchingUser) {\n const defaults = getDefaultsFromPattern(modelType, pattern);\n if (defaults) {\n appliedPatterns.push(pattern.name);\n mergedDefaults = { ...mergedDefaults, ...defaults };\n }\n }\n const merged = {\n ...mergedDefaults,\n ...userInput\n };\n const schema = MODEL_CONFIG_SCHEMAS[modelType];\n const finalConfig = schema ? schema.parse(merged) : merged;\n if (onLog) {\n onLog({\n appliedPatterns,\n mergedDefaults,\n finalConfig: finalConfig\n });\n }\n return finalConfig;\n}\nimport { ModelAlreadyRegisteredError, ModelNotFoundError, ModelIsDelegatedError } from '../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../logging/index.js';\nconst logger = getServerLogger();\n// Global registry state - using stateless functions to manage it\nconst modelRegistry = new Map();\nexport function registerModel(id, options) {\n if (modelRegistry.has(id)) {\n throw new ModelAlreadyRegisteredError(id);\n }\n const isDelegated = 'providerPublicKey' in options;\n if (isDelegated) {\n const { providerPublicKey, timeout, healthCheckTimeout } = options;\n modelRegistry.set(id, {\n id,\n isDelegated: true,\n delegated: {\n providerPublicKey,\n timeout,\n healthCheckTimeout\n }\n });\n logger.info(`Delegated model registered: ${id} -> provider: ${providerPublicKey}, timeout: ${timeout}ms`);\n }\n else {\n modelRegistry.set(id, {\n id,\n isDelegated: false,\n local: {\n model: options.model,\n path: options.path,\n loadedAt: new Date(),\n config: options.config,\n modelType: options.modelType,\n name: options.name\n }\n });\n const nameStr = options.name ? ` (${options.name})` : '';\n logger.info(`Local model registered: ${id}${nameStr} -> ${options.path}`);\n }\n}\nexport function getModelEntry(id) {\n return modelRegistry.get(id) || null;\n}\nexport function getModel(id) {\n const entry = modelRegistry.get(id);\n if (!entry) {\n throw new ModelNotFoundError(id);\n }\n if (entry.isDelegated) {\n throw new ModelIsDelegatedError(id);\n }\n return entry.local.model;\n}\nexport function isModelLoaded(id) {\n return modelRegistry.has(id);\n}\nexport function unregisterModel(id) {\n const entry = modelRegistry.get(id);\n if (entry) {\n modelRegistry.delete(id);\n logger.debug(`Model unregistered: ${id}`);\n return entry;\n }\n return null;\n}\nexport function getAllModelIds() {\n return Array.from(modelRegistry.keys());\n}\nexport function getModelInfo(id) {\n const entry = modelRegistry.get(id);\n if (!entry || entry.isDelegated) {\n return null;\n }\n const result = {\n id: entry.id,\n path: entry.local.path,\n loadedAt: entry.local.loadedAt,\n config: entry.local.config\n };\n if (entry.local.name) {\n result.name = entry.local.name;\n }\n return result;\n}\nexport function getModelConfig(id) {\n const entry = modelRegistry.get(id);\n if (!entry || entry.isDelegated) {\n throw new ModelNotFoundError(id);\n }\n return entry.local.config;\n}\nexport function updateModelConfig(id, config) {\n const entry = modelRegistry.get(id);\n if (!entry) {\n throw new ModelNotFoundError(id);\n }\n if (entry.isDelegated) {\n throw new ModelIsDelegatedError(id);\n }\n entry.local.config = config;\n}\nexport function clearRegistry() {\n modelRegistry.clear();\n logger.info('Model registry cleared');\n}\nexport function getRegistryStats() {\n return {\n totalModels: modelRegistry.size,\n modelIds: Array.from(modelRegistry.keys())\n };\n}\nexport async function unloadAllModels() {\n const modelIds = getAllModelIds();\n for (const modelId of modelIds) {\n const entry = modelRegistry.get(modelId);\n try {\n if (entry && !entry.isDelegated) {\n if (entry.local.model.unload) {\n await entry.local.model.unload();\n }\n logger.debug(`Model unloaded: ${modelId}`);\n }\n }\n catch (error) {\n logger.error(`Error unloading model ${modelId}:`, error instanceof Error ? error.message : String(error));\n }\n modelRegistry.delete(modelId);\n }\n logger.info(`Unloaded ${modelIds.length} models`);\n}\nimport { QVACRegistryClient } from '@qvac/registry-client';\nimport { getCacheDir } from '../../utils/cache/paths.js';\nimport { registerSwarm, unregisterSwarm, registerCorestore, unregisterCorestore } from '../runtime-lifecycle.js';\nimport { getServerLogger } from '../../../logging/index.js';\nimport { DEFAULT_REGISTRY_CORE_KEY } from '../../../constants/index.js';\nconst logger = getServerLogger();\n// fd-lock retry budget for the registry corestore.\n//\n// We pass `corestoreOpts: { wait: false }` (tryLock semantics) and provide a\n// JS-bounded retry budget here instead of letting Hypercore's underlying\n// fd-lock issue a blocking flock(LOCK_EX) on a libuv worker thread. The\n// blocking variant cannot be cancelled from JS, so if another SDK process\n// holds the lock indefinitely it leaves a pending native handle that\n// prevents Bare.exit() from terminating the worker — see QVAC-18197.\n//\n// With tryLock + bounded retries we get the same \"tolerate transient locks\n// during another SDK's startup/shutdown\" property #1480 wanted, but every\n// retry step is a fresh non-blocking syscall that surfaces failure to JS,\n// so shutdown always remains cancellable.\nconst MAX_RETRIES = 8;\nconst BASE_DELAY_MS = 250;\nconst MAX_TOTAL_WAIT_MS = 10_000;\nlet registryClient = null;\nlet inflightInit = null;\nfunction isFdLockError(error) {\n if (error instanceof Error) {\n return error.message.includes('File descriptor could not be locked');\n }\n return false;\n}\nasync function delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\nasync function initRegistryClient() {\n let lastError;\n const deadline = Date.now() + MAX_TOTAL_WAIT_MS;\n for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {\n try {\n const client = new QVACRegistryClient({\n registryCoreKey: DEFAULT_REGISTRY_CORE_KEY,\n storage: getCacheDir(`registry-corestore/${DEFAULT_REGISTRY_CORE_KEY}`),\n corestoreOpts: { wait: false }\n });\n await client.ready();\n registryClient = client;\n if (registryClient.corestore) {\n registerCorestore(registryClient.corestore, {\n label: 'registry-client',\n createdAt: Date.now()\n });\n }\n if (registryClient.hyperswarm) {\n registerSwarm(registryClient.hyperswarm, {\n label: 'registry-client',\n createdAt: Date.now()\n });\n }\n logger.info('✅ Registry client ready');\n return client;\n }\n catch (error) {\n lastError = error;\n if (isFdLockError(error) && attempt < MAX_RETRIES) {\n const remaining = deadline - Date.now();\n if (remaining <= 0) {\n logger.warn(`Registry client fd-lock failed after ${MAX_TOTAL_WAIT_MS}ms wait budget exhausted (attempt ${attempt}/${MAX_RETRIES})`);\n throw error;\n }\n const backoff = Math.min(BASE_DELAY_MS * Math.pow(2, attempt - 1), remaining);\n logger.warn(`Registry client fd-lock failed (attempt ${attempt}/${MAX_RETRIES}), retrying in ${backoff}ms...`);\n await delay(backoff);\n continue;\n }\n throw error;\n }\n }\n throw lastError;\n}\nexport async function getRegistryClient() {\n if (registryClient) {\n logger.debug('Registry client reused');\n return registryClient;\n }\n if (inflightInit) {\n logger.debug('Registry client init already in progress, waiting...');\n return inflightInit;\n }\n logger.info('🔗 Creating new registry client...');\n inflightInit = initRegistryClient().finally(() => {\n inflightInit = null;\n });\n return inflightInit;\n}\nexport async function closeRegistryClient() {\n if (!registryClient)\n return;\n const client = registryClient;\n registryClient = null;\n const corestore = client.corestore;\n const hyperswarm = client.hyperswarm;\n logger.info('🔌 Closing registry client...');\n try {\n await client.close();\n logger.info('✅ Registry client closed');\n }\n catch (error) {\n logger.error('❌ Error closing registry client:', error instanceof Error ? error.message : String(error));\n }\n finally {\n if (corestore)\n unregisterCorestore(corestore);\n if (hyperswarm)\n unregisterSwarm(hyperswarm);\n }\n}\nexport function hasActiveRegistryClient() {\n return registryClient !== null;\n}\n// ============================================\n// Runtime context state\n// ============================================\nlet context = {};\nlet isSet = false;\nexport function setRuntimeContext(ctx) {\n if (isSet)\n return;\n context = ctx;\n isSet = true;\n}\nexport function getRuntimeContext() {\n return context;\n}\n// ============================================\n// Convenience helpers\n// ============================================\nexport function isMobile() {\n return context.runtime === 'react-native';\n}\nexport function isAndroid() {\n return context.platform === 'android';\n}\nexport function isIOS() {\n return context.platform === 'ios';\n}\nimport { getServerLogger } from '../../logging/index.js';\nimport { LifecycleOperationBlockedError } from '../../utils/errors-server.js';\nconst logger = getServerLogger();\nconst LIFECYCLE_ALLOWED_TYPES = new Set(['suspend', 'resume', 'state']);\nconst swarms = new Map();\nconst stores = new Map();\nconst resumeListeners = new Set();\nlet state = 'active';\nlet transitionPromise = null;\n/**\n * Register a callback fired after the runtime returns to \"active\". Lets in-flight\n * work (e.g. an HTTP download whose socket died while backgrounded) recover the\n * instant `resume()` runs instead of waiting for a timeout. Returns an\n * unregister function — callers MUST call it when their work finishes so the\n * listener doesn't leak into the next operation.\n */\nexport function onResume(listener) {\n resumeListeners.add(listener);\n return () => resumeListeners.delete(listener);\n}\nfunction notifyResume() {\n for (const listener of Array.from(resumeListeners)) {\n try {\n listener();\n }\n catch (error) {\n logger.error('Lifecycle: onResume listener threw:', error);\n }\n }\n}\nexport function registerSwarm(swarm, meta) {\n swarms.set(swarm, meta);\n logger.debug(`Lifecycle: registered swarm [${meta.label}]`);\n}\nexport function unregisterSwarm(swarm) {\n const meta = swarms.get(swarm);\n swarms.delete(swarm);\n if (meta) {\n logger.debug(`Lifecycle: unregistered swarm [${meta.label}]`);\n }\n}\nexport function registerCorestore(store, meta) {\n stores.set(store, meta);\n logger.debug(`Lifecycle: registered corestore [${meta.label}]`);\n}\nexport function unregisterCorestore(store) {\n const meta = stores.get(store);\n stores.delete(store);\n if (meta) {\n logger.debug(`Lifecycle: unregistered corestore [${meta.label}]`);\n }\n}\nexport function getLifecycleState() {\n return state;\n}\nexport function assertLifecycleAllowed(request) {\n if (state === 'active' || LIFECYCLE_ALLOWED_TYPES.has(request.type))\n return;\n throw new LifecycleOperationBlockedError(request.type, state);\n}\nexport function getRegisteredResourceCounts() {\n return { swarms: swarms.size, stores: stores.size };\n}\nexport function resetLifecycleState() {\n swarms.clear();\n stores.clear();\n resumeListeners.clear();\n state = 'active';\n transitionPromise = null;\n}\nasync function runPhase(snapshot, liveSet, fn, phaseLabel) {\n const errors = [];\n for (const [resource, meta] of snapshot) {\n try {\n await fn(resource);\n logger.debug(`Lifecycle: ${phaseLabel} [${meta.label}] OK`);\n }\n catch (error) {\n if (!liveSet.has(resource))\n continue;\n logger.error(`Lifecycle: ${phaseLabel} [${meta.label}] failed:`, error);\n errors.push(new Error(`${meta.label}: ${String(error)}`));\n }\n }\n if (errors.length > 0) {\n throw new AggregateError(errors, `Lifecycle ${phaseLabel} phase failed`);\n }\n}\nexport async function suspendRuntime() {\n if (state === 'suspended')\n return;\n if (state === 'suspending' && transitionPromise)\n return transitionPromise;\n // Opposite transition in flight: wait for it, then re-evaluate\n if (state === 'resuming' && transitionPromise) {\n await transitionPromise;\n return suspendRuntime();\n }\n state = 'suspending';\n logger.info(`⏸️ Suspending runtime (${stores.size} stores, ${swarms.size} swarms)`);\n transitionPromise = (async () => {\n const swarmSnapshot = Array.from(swarms.entries());\n const storeSnapshot = Array.from(stores.entries());\n await runPhase(storeSnapshot, stores, async (store) => {\n await store.suspend();\n }, 'suspend-store');\n await runPhase(swarmSnapshot, swarms, async (swarm) => {\n if (!swarm.suspended)\n await swarm.suspend();\n }, 'suspend-swarm');\n })()\n .then(() => {\n state = 'suspended';\n logger.info('⏸️ Runtime suspended');\n })\n .catch((error) => {\n // Partial failure: commit to target so recovery resume() can repair\n // instead of leaving state as \"suspending\" which blocks all future calls.\n state = 'suspended';\n logger.error('⏸️ Runtime suspend partially failed, state committed for recovery');\n throw error;\n })\n .finally(() => {\n transitionPromise = null;\n });\n return transitionPromise;\n}\nexport async function resumeRuntime() {\n if (state === 'active')\n return;\n if (state === 'resuming' && transitionPromise)\n return transitionPromise;\n if (state === 'suspending' && transitionPromise) {\n await transitionPromise;\n return resumeRuntime();\n }\n state = 'resuming';\n logger.info(`▶️ Resuming runtime (${swarms.size} swarms, ${stores.size} stores)`);\n transitionPromise = (async () => {\n const swarmSnapshot = Array.from(swarms.entries());\n const storeSnapshot = Array.from(stores.entries());\n await runPhase(swarmSnapshot, swarms, async (swarm) => {\n await swarm.resume();\n }, 'resume-swarm');\n await runPhase(storeSnapshot, stores, async (store) => {\n await store.resume();\n }, 'resume-store');\n })()\n .then(() => {\n state = 'active';\n logger.info('▶️ Runtime resumed');\n notifyResume();\n })\n .catch((error) => {\n state = 'suspended';\n logger.error('▶️ Runtime resume partially failed, staying suspended for retry');\n throw error;\n })\n .finally(() => {\n transitionPromise = null;\n });\n return transitionPromise;\n}\nimport { AsyncDisposeUnavailableError } from '../../../utils/errors-server.js';\n/**\n * Module-load guard. The whole request-lifecycle primitive stack (scopes,\n * the registry's `ManagedRequestContext`, `await using ctx = ...`) is\n * built on `Symbol.asyncDispose`, which is an ES2024 feature. If the host\n * runtime doesn't expose it (older Bare/Expo build, missing polyfill),\n * the `[Symbol.asyncDispose]:` property key in this file's `dispose`\n * function would coerce to the string `\"undefined\"` and silently produce\n * objects that look async-disposable but are not — handlers would leak\n * registry entries forever. Better to fail loudly at import time with a\n * clear error than to debug a slow registry leak in production.\n */\nif (typeof Symbol.asyncDispose !== 'symbol') {\n throw new AsyncDisposeUnavailableError();\n}\nexport function createDisposableScope() {\n const cleanups = [];\n let disposed = false;\n let disposing = false;\n function defer(cleanup) {\n if (disposed || disposing) {\n void runEagerly(cleanup);\n return;\n }\n cleanups.push(cleanup);\n }\n async function runEagerly(cleanup) {\n try {\n await cleanup();\n }\n catch {\n // Late-deferred cleanups have no caller waiting on them; the\n // unwinding path that disposed the scope already returned its own\n // errors. Swallowing here matches the user's intent of registering\n // a fire-and-forget cleanup.\n }\n }\n async function dispose() {\n if (disposed || disposing)\n return;\n disposing = true;\n const errors = [];\n while (cleanups.length > 0) {\n const cleanup = cleanups.pop();\n if (!cleanup)\n continue;\n try {\n await cleanup();\n }\n catch (err) {\n errors.push(err);\n }\n }\n disposed = true;\n disposing = false;\n if (errors.length === 1)\n throw errors[0];\n if (errors.length > 1) {\n throw new AggregateError(errors, `DisposableScope: ${errors.length} cleanups failed`);\n }\n }\n return {\n defer,\n [Symbol.asyncDispose]: dispose,\n get disposed() {\n return disposed;\n }\n };\n}\nexport { createDisposableScope } from './disposable-scope.js';\nexport { createRequestRegistry, getRequestRegistry } from './request-registry-singleton.js';\nexport { withRequestContext } from './with-request-context.js';\nimport { randomUUID } from 'bare-crypto';\n/**\n * Server-side fallback for `requestId`. The new wire contract is that\n * the client generates the id (UUIDv4) at call time so it's surfaced\n * synchronously on the `CompletionRun` for use with `cancel({ requestId })`.\n * To keep older clients working, the request schema marks `requestId`\n * optional and the server fills it in here when it's missing.\n *\n * `bare-crypto.randomUUID()` mirrors Node's `crypto.randomUUID()` and is\n * Bare-runtime safe. Returns a v4 UUID.\n */\nexport function generateServerRequestId() {\n return randomUUID();\n}\nimport { createRequestRegistry as createRegistry } from './request-registry.js';\n/**\n * Worker-process singleton. Every long-running request in this Bare\n * worker registers under this registry, so a `cancel({ requestId })` RPC\n * can find its target without the caller needing to know which plugin /\n * handler owns the request.\n *\n * Exposed alongside `createRequestRegistry()` rather than replacing it so\n * unit tests can spin up isolated registries without contaminating the\n * shared instance. On first use the singleton registers the SDK's\n * baseline concurrency policies.\n */\nlet registry = null;\n// `completion` and `batchCompletion` both run on the same `@qvac/llm-llamacpp`\n// instance, which funnels every `run()` (single-prompt and batch alike) through\n// one per-instance exclusive run queue plus a single-job native runner. They\n// therefore can't actually execute at once on the same model. Sharing one\n// admission lane makes the SDK queue reflect that reality: a completion and a\n// batch on the same model serialize FIFO at the SDK layer instead of both being\n// admitted and silently serializing inside the addon (which hides them from the\n// registry's queue-depth accounting, `requestId` diagnostics, and cancel).\nconst LLAMACPP_COMPLETION_SLOT_GROUP = 'llamacppCompletion';\nfunction installDefaultPolicies(r) {\n // A loaded model is a single native context (one KV-cache, single-slot\n // decode), so two same-model completions can't run in parallel. Serialize\n // rather than reject: the second waits FIFO. maxConcurrentPerModel: 1 is\n // today's reality — raise it once continuous batching lands. The depth cap\n // bounds queue memory. The shared slot group extends that serialization\n // across `completion` + `batchCompletion` on the same model (see note\n // above).\n r.policy({\n kind: 'completion',\n maxConcurrentPerModel: 1,\n onOverflow: 'queue',\n maxQueueDepthPerModel: 64,\n sharedSlotGroup: LLAMACPP_COMPLETION_SLOT_GROUP\n });\n r.policy({\n kind: 'batchCompletion',\n maxConcurrentPerModel: 1,\n onOverflow: 'queue',\n maxQueueDepthPerModel: 64,\n sharedSlotGroup: LLAMACPP_COMPLETION_SLOT_GROUP\n });\n}\nexport function getRequestRegistry() {\n if (!registry) {\n registry = createRegistry();\n installDefaultPolicies(registry);\n }\n return registry;\n}\nexport { createRegistry as createRequestRegistry };\nimport { AbortController } from 'bare-abort-controller';\nimport { createDisposableScope } from './disposable-scope.js';\nimport { RequestIdConflictError, RequestRejectedByPolicyError } from '../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../logging/index.js';\n/**\n * Tuning knobs for the \"cancelled-before-begin\" bookkeeping set.\n *\n * The race window is bounded by the client-to-server round-trip: a\n * `cancel({ requestId })` issued by the client at the same time as the\n * matching `completion(...)` either lands first (and we need to remember\n * it long enough for the server's `begin(...)` to follow) or lands\n * second (and we never touch this set). 30 seconds is overkill for a\n * 500ms round-trip but gives slow networks / pause-the-debugger\n * scenarios enough slack while still bounding worst-case retention.\n *\n * The size cap protects against a buggy or malicious client firing a\n * stream of cancels for ids that never get a `begin(...)` follow-up —\n * each `cancel({ requestId })` that doesn't match an in-flight context\n * inserts one entry, so without a cap the worker would grow the map\n * unbounded. At the cap, the oldest entry is evicted.\n *\n * Tweak with care: both bounds appear in the registry race test\n * (`bounded cancel-before-begin set does not grow past its cap`).\n */\nconst CANCEL_BEFORE_BEGIN_MAX_ENTRIES = 128;\nconst CANCEL_BEFORE_BEGIN_TTL_MS = 30_000;\n/**\n * Default cap on waiters queued per `(lane, modelId)` when a policy uses\n * `onOverflow: \"queue\"` without an explicit `maxQueueDepthPerModel`.\n * Bounds memory so a misbehaving client firing a flood of same-model\n * requests can't grow the queue without limit — the (depth + 1)th begin\n * rejects with `RequestRejectedByPolicyError` instead of enqueuing.\n */\nconst DEFAULT_MAX_QUEUE_DEPTH_PER_MODEL = 64;\nexport function createRequestRegistry(options) {\n const entries = new Map();\n const policies = new Map();\n const logger = options?.logger ?? getServerLogger();\n /**\n * Per-`(kind, modelId)` admission semaphores. Keyed by\n * `slotKey(kind, modelId)`. Absent until the first gated `begin(...)`\n * for that key; removed again the moment the key is idle.\n */\n const keyStates = new Map();\n /**\n * Reverse index from a queued waiter's `requestId` to its slot so\n * `cancel({ requestId })` can pull a still-queued request out of the\n * FIFO in O(1) without scanning every `KeyState`.\n */\n const waitersById = new Map();\n function logLifecycle(event, ctx, durationMs) {\n const modelId = ctx.modelId !== undefined ? ctx.modelId : '-';\n const base = `[request-lifecycle] ${event} requestId=${ctx.requestId} kind=${ctx.kind} modelId=${modelId} state=${ctx.state}`;\n const line = durationMs !== undefined ? `${base} durationMs=${durationMs}` : base;\n // `failed` end emits at `warn` so log shippers can alert on\n // `level>=warn` for this prefix without parsing `state=failed`\n // out of the message body. Everything else stays at `info`.\n if (event === 'end' && ctx.state === 'failed') {\n logger.warn(line);\n }\n else {\n logger.info(line);\n }\n }\n /**\n * \"Cancelled-before-begin\" tripwire. A\n * `cancel({ requestId })` whose target isn't yet in `entries` records\n * the id here; the subsequent `begin({ requestId: })` then\n * aborts the new controller before returning. Map order is insertion\n * order — the iterator's first key is the oldest entry, which makes\n * the size-cap eviction free.\n *\n * Invariants:\n * - Every read path (`begin`, `cancel`-by-id) calls\n * `pruneCancelBeforeBeginExpired()` first so a 30s+ stale entry\n * never decides a fresh `begin(...)`.\n * - Insertion enforces the size cap by evicting the oldest entry\n * when at capacity — a malicious client cannot grow this map\n * unbounded.\n * - On a successful `begin(...)` match, the entry is consumed\n * (removed) so a second `begin(...)` with the same id (which\n * would itself throw `RequestIdConflictError`) doesn't see a\n * phantom pre-cancel.\n */\n const cancelledBeforeBegin = new Map();\n function pruneCancelBeforeBeginExpired(now = Date.now()) {\n if (cancelledBeforeBegin.size === 0)\n return;\n const cutoff = now - CANCEL_BEFORE_BEGIN_TTL_MS;\n for (const [id, entry] of cancelledBeforeBegin) {\n if (entry.at > cutoff)\n break; // Insertion order ⇒ rest are newer.\n cancelledBeforeBegin.delete(id);\n }\n }\n function recordCancelBeforeBegin(requestId, reason) {\n const now = Date.now();\n pruneCancelBeforeBeginExpired(now);\n // Re-canceling an id that is already tracked refreshes its TTL but\n // keeps the original reason — the first cancel \"won\" the race.\n if (cancelledBeforeBegin.has(requestId)) {\n const existing = cancelledBeforeBegin.get(requestId);\n cancelledBeforeBegin.delete(requestId);\n cancelledBeforeBegin.set(requestId, { ...existing, at: now });\n return;\n }\n if (cancelledBeforeBegin.size >= CANCEL_BEFORE_BEGIN_MAX_ENTRIES) {\n const oldest = cancelledBeforeBegin.keys().next().value;\n if (oldest !== undefined)\n cancelledBeforeBegin.delete(oldest);\n }\n cancelledBeforeBegin.set(requestId, reason !== undefined ? { at: now, reason } : { at: now });\n }\n function consumeCancelBeforeBegin(requestId) {\n pruneCancelBeforeBeginExpired();\n const entry = cancelledBeforeBegin.get(requestId);\n if (!entry)\n return undefined;\n cancelledBeforeBegin.delete(requestId);\n return entry;\n }\n function slotKey(lane, modelId) {\n // NUL separator can't appear in a lane (a closed-union kind or an\n // SDK-controlled `sharedSlotGroup` label) or a modelId (sdkModelId is a\n // generated handle), so the join is unambiguous.\n return `${lane}\\u0000${modelId}`;\n }\n /**\n * Pull a waiter out of its queue and tidy up: clear its timeout, drop\n * the reverse index, and delete the `KeyState` if that left it idle.\n * Does NOT settle the waiter's promise — the caller decides whether the\n * removal resolves (granted / graceful cancel) or rejects (timeout /\n * teardown).\n */\n function removeWaiter(key, waiter) {\n if (waiter.timer !== undefined) {\n clearTimeout(waiter.timer);\n waiter.timer = undefined;\n }\n waitersById.delete(waiter.requestId);\n const st = keyStates.get(key);\n if (!st)\n return;\n const i = st.waiters.indexOf(waiter);\n if (i >= 0)\n st.waiters.splice(i, 1);\n if (st.active <= 0 && st.waiters.length === 0)\n keyStates.delete(key);\n }\n /**\n * Admission gate. Resolves to the slot key the caller must release on\n * dispose, or `undefined` when the request is ungated (no policy, no\n * `modelId`, an unbounded limit, or an already-aborted parent — which we\n * let through so the normal abort path produces a clean cancelled\n * outcome rather than queuing a doomed request).\n *\n * When the key is at capacity it either rejects (`onOverflow: \"reject\"`,\n * queue-depth cap, or `queueTimeoutMs`) or enqueues a FIFO waiter and\n * awaits it. The releaser hands a freed slot to the oldest waiter\n * (`resolve(true)`), so `active` is never decremented and re-incremented\n * across a hand-off — that's what guarantees FIFO fairness with no\n * acquire/release race in the single-threaded event loop.\n */\n async function acquireSlot(opts) {\n if (opts.modelId === undefined)\n return { slotKey: undefined };\n const policy = policies.get(opts.kind);\n if (!policy || !Number.isFinite(policy.maxConcurrent)) {\n return { slotKey: undefined };\n }\n // A parent (worker-shutdown) signal that's already aborted: don't\n // queue behind live work that may never drain — let begin() proceed\n // and abort immediately via the parentSignal path.\n if (opts.parentSignal?.aborted)\n return { slotKey: undefined };\n const modelId = opts.modelId;\n // A shared lane lets unrelated kinds (e.g. completion + batchCompletion)\n // contend for one slot pool per model, matching an addon that serializes\n // them on a single native context.\n const key = slotKey(policy.slotGroup ?? opts.kind, modelId);\n let st = keyStates.get(key);\n if (!st) {\n st = { active: 0, waiters: [] };\n keyStates.set(key, st);\n }\n if (st.active < policy.maxConcurrent) {\n st.active++;\n return { slotKey: key };\n }\n if (policy.onOverflow === 'reject') {\n throw new RequestRejectedByPolicyError(opts.requestId, opts.kind, modelId, `another ${opts.kind} request is already running on this model`);\n }\n if (st.waiters.length >= policy.maxQueueDepth) {\n throw new RequestRejectedByPolicyError(opts.requestId, opts.kind, modelId, `request queue for this model is full (${st.waiters.length} waiting)`);\n }\n const queue = st;\n const granted = await new Promise((resolve, reject) => {\n const waiter = {\n requestId: opts.requestId,\n kind: opts.kind,\n modelId,\n enqueuedAt: Date.now(),\n resolve,\n reject,\n timer: undefined\n };\n if (policy.queueTimeoutMs !== undefined) {\n const timeoutMs = policy.queueTimeoutMs;\n waiter.timer = setTimeout(() => {\n removeWaiter(key, waiter);\n reject(new RequestRejectedByPolicyError(opts.requestId, opts.kind, modelId, `timed out waiting ${timeoutMs}ms for a slot on this model`));\n }, timeoutMs);\n }\n queue.waiters.push(waiter);\n waitersById.set(opts.requestId, { key, waiter });\n });\n return granted ? { slotKey: key } : { slotKey: undefined };\n }\n /**\n * Hand a freed slot to the next FIFO waiter, or free it outright when\n * none are queued. Called from `disposeEntry` after the scope has fully\n * unwound, so the native context is genuinely free before the next\n * same-model request is admitted.\n */\n function releaseSlot(key) {\n const st = keyStates.get(key);\n if (!st)\n return;\n const next = st.waiters.shift();\n if (next) {\n // Hand off: the waiter inherits the slot, so `active` is unchanged.\n waitersById.delete(next.requestId);\n if (next.timer !== undefined) {\n clearTimeout(next.timer);\n next.timer = undefined;\n }\n next.resolve(true);\n return;\n }\n st.active--;\n if (st.active <= 0 && st.waiters.length === 0)\n keyStates.delete(key);\n }\n function cancelEntry(entry, reason) {\n if (entry.controller.signal.aborted)\n return false;\n entry.ctx.state = 'cancelling';\n entry.controller.abort(reason);\n logLifecycle('cancel', entry.ctx);\n return true;\n }\n async function disposeEntry(entry, outcome) {\n if (entry.scope.disposed)\n return;\n entry.ctx.state = outcome;\n entry.detachParent();\n logLifecycle('end', entry.ctx, Date.now() - entry.startedAt);\n // Pull the entry out before unwinding so observers (e.g. a `cancel(...)`\n // racing with dispose) don't see a half-disposed context.\n entries.delete(entry.ctx.requestId);\n try {\n await entry.scope[Symbol.asyncDispose]();\n }\n finally {\n // Release the admission slot only after the scope has fully unwound:\n // the shared llama.cpp context / addon job is torn down in scope\n // cleanup, so the next queued same-model request must not be admitted\n // (and start decoding) until this one has actually let go. `finally`\n // guarantees the slot is freed even if a deferred cleanup throws,\n // otherwise a throwing teardown would strand the queue forever.\n if (entry.slotKey !== undefined)\n releaseSlot(entry.slotKey);\n }\n }\n async function begin(opts) {\n // A request id is reserved for its whole lifecycle, including the time\n // it spends *queued* for an admission slot. `waitersById` holds the\n // still-queued begins (they aren't in `entries` yet), so a duplicate id\n // must be rejected against both maps — otherwise a second begin with the\n // same id would enqueue behind the first and overwrite its `waitersById`\n // index, leaving the original waiter unreachable by `cancel({ requestId })`.\n if (entries.has(opts.requestId) || waitersById.has(opts.requestId)) {\n throw new RequestIdConflictError(opts.requestId);\n }\n // Admission control runs before allocation so a rejected begin leaves\n // no controller / scope behind. This may await: a gated `(kind,\n // modelId)` at capacity queues the begin FIFO and resolves once a slot\n // frees (or rejects on overflow / queue-depth cap / timeout).\n const { slotKey } = await acquireSlot(opts);\n // The only interleaving point in this otherwise synchronous body is the\n // await above. A duplicate id could (astronomically unlikely) have\n // landed while we were queued — re-check and hand the just-acquired\n // slot back rather than stranding it on the conflicting throw.\n if (entries.has(opts.requestId)) {\n if (slotKey !== undefined)\n releaseSlot(slotKey);\n throw new RequestIdConflictError(opts.requestId);\n }\n const controller = new AbortController();\n const scope = createDisposableScope();\n // Stop-button race close. If a\n // `cancel({ requestId })` already arrived for this id, abort the\n // new controller before observers can subscribe to it. The\n // tripwire entry is consumed so a later, separate `begin(...)`\n // with the same id is unaffected (in practice ids are UUIDv4 and\n // never reused; this guard just keeps the contract self-\n // consistent under retries).\n const preCancel = consumeCancelBeforeBegin(opts.requestId);\n if (preCancel) {\n controller.abort(preCancel.reason);\n }\n let detachParent = () => { };\n if (opts.parentSignal) {\n const parent = opts.parentSignal;\n if (parent.aborted) {\n controller.abort(parent.reason);\n }\n else {\n const onParentAbort = () => controller.abort(parent.reason);\n parent.addEventListener('abort', onParentAbort, { once: true });\n detachParent = () => parent.removeEventListener('abort', onParentAbort);\n }\n }\n const ctx = {\n requestId: opts.requestId,\n kind: opts.kind,\n modelId: opts.modelId,\n signal: controller.signal,\n scope,\n // Land the context in `cancelling` from the outset whenever the\n // controller was already aborted by `begin(...)` itself — either\n // the Stop-button race (`preCancel`) or a `parentSignal` that was\n // already aborted at begin time. Both branches abort the\n // controller above, so without this guard observers would see a\n // momentarily-`running` context with an already-aborted signal.\n state: preCancel || opts.parentSignal?.aborted ? 'cancelling' : 'running'\n };\n const entry = {\n ctx,\n controller,\n scope,\n detachParent,\n startedAt: Date.now(),\n slotKey\n };\n entries.set(opts.requestId, entry);\n logLifecycle('begin', ctx);\n return {\n get requestId() {\n return ctx.requestId;\n },\n get kind() {\n return ctx.kind;\n },\n get modelId() {\n return ctx.modelId;\n },\n get signal() {\n return ctx.signal;\n },\n get scope() {\n return ctx.scope;\n },\n get state() {\n return ctx.state;\n },\n set state(next) {\n ctx.state = next;\n },\n [Symbol.asyncDispose]: async () => {\n await disposeEntry(entry, derivedTerminalState(ctx));\n }\n };\n }\n function get(requestId) {\n return entries.get(requestId)?.ctx ?? null;\n }\n function list() {\n return Array.from(entries.values(), (e) => e.ctx);\n }\n /**\n * Cancel a still-queued waiter the same way the Stop-button race is\n * handled: record a cancel-before-begin so its `begin(...)` — which\n * resumes the instant we `resolve(false)` (without a slot) — observes the\n * cancel and returns an already-aborted context. The request thus ends in\n * a clean `cancelled` state rather than throwing.\n */\n function cancelQueuedWaiterGracefully(key, waiter, reason) {\n recordCancelBeforeBegin(waiter.requestId, reason);\n removeWaiter(key, waiter);\n waiter.resolve(false);\n }\n function cancel(target) {\n let cancelled = 0;\n if ('requestId' in target) {\n const entry = entries.get(target.requestId);\n if (entry) {\n if (cancelEntry(entry, target.reason))\n cancelled++;\n return cancelled;\n }\n // Queued (still waiting for an admission slot)? It has no controller\n // yet, so cancel it through the cancel-before-begin tripwire: pull it\n // from the FIFO and let its begin() resume into an aborted context.\n // Counted as one — unlike the pure race below, this targets a known\n // in-flight (queued) begin, so the Stop button feels responsive\n // instead of waiting for the slot to free first.\n const queued = waitersById.get(target.requestId);\n if (queued) {\n cancelQueuedWaiterGracefully(queued.key, queued.waiter, target.reason);\n return cancelled + 1;\n }\n // Stop-button race: the client beat its own\n // `begin(...)`. Record the cancel so the next matching `begin`\n // aborts immediately. The return value stays 0 — no in-flight\n // request was matched, which is still the truth — but the\n // *effective* cancel will land when the begin arrives.\n recordCancelBeforeBegin(target.requestId, target.reason);\n return cancelled;\n }\n for (const entry of entries.values()) {\n if (entry.ctx.modelId !== target.modelId)\n continue;\n if (target.kind && entry.ctx.kind !== target.kind)\n continue;\n if (cancelEntry(entry, target.reason))\n cancelled++;\n }\n // Queued waiters aren't in `entries`; drain the ones matching this\n // model (and optional kind) so a broad `cancel({ modelId })` doesn't\n // strand them behind a request that's being cancelled out from under\n // them. Snapshot first — `removeWaiter` mutates `waitersById`.\n for (const { key, waiter } of Array.from(waitersById.values())) {\n if (waiter.modelId !== target.modelId)\n continue;\n if (target.kind && waiter.kind !== target.kind)\n continue;\n cancelQueuedWaiterGracefully(key, waiter, target.reason);\n cancelled++;\n }\n return cancelled;\n }\n function cancelAll(reason) {\n for (const entry of entries.values()) {\n cancelEntry(entry, reason);\n }\n // Drain every queued waiter so a shutdown / model-unload sweep can't\n // leave a `begin(...)` promise hung forever — which would in turn block\n // the unload waiting on a request that never resolves. Unlike the\n // targeted cancels above these *reject* rather than resolve-into-\n // aborted: the model / worker they queued against is being torn down,\n // so there is nothing left for them to run. Snapshot first —\n // `removeWaiter` mutates `waitersById`.\n for (const { key, waiter } of Array.from(waitersById.values())) {\n removeWaiter(key, waiter);\n waiter.reject(new RequestRejectedByPolicyError(waiter.requestId, waiter.kind, waiter.modelId, `queued request cancelled (${reason})`));\n }\n // The interface returns Promise so we can later make this an\n // async sweep that awaits per-handler scope unwinding (e.g. join on\n // the disposers). Today every handler unwinds on its own dispose\n // path, so the function only needs to fire-and-forget the abort.\n return Promise.resolve();\n }\n async function end(requestId, outcome) {\n const entry = entries.get(requestId);\n if (!entry)\n return;\n await disposeEntry(entry, outcome);\n }\n function policy(opts) {\n policies.set(opts.kind, normalizePolicy(opts));\n }\n return {\n begin,\n get,\n list,\n cancel,\n cancelAll,\n end,\n policy,\n // Test-only: lets the registry race tests assert the bound\n // invariants on the internal \"cancelled-before-begin\" set without\n // exposing it as a public surface. Kept off the `RequestRegistry`\n // interface (typed via the augmented return type below) so handler\n // code can't depend on it accidentally.\n __cancelBeforeBeginSize: () => cancelledBeforeBegin.size,\n // Test-only: the number of live per-`(kind, modelId)` admission\n // states. Lets the queue tests assert the map empties on drain /\n // dispose (no `KeyState` leak). Also off the public interface.\n __keyStateSize: () => keyStates.size\n };\n}\n/**\n * Resolve a `ConcurrencyPolicy` to concrete numbers, applying defaults and\n * the deprecated `oneAtATimePerModel` alias. Done once at registration so\n * the `begin(...)` hot path reads plain numbers.\n */\nfunction normalizePolicy(opts) {\n let maxConcurrent;\n let onOverflow;\n if (opts.maxConcurrentPerModel !== undefined) {\n maxConcurrent = opts.maxConcurrentPerModel;\n onOverflow = opts.onOverflow ?? 'queue';\n }\n else if (opts.oneAtATimePerModel === true) {\n // Legacy alias: at most one in-flight per model, reject the rest.\n maxConcurrent = 1;\n onOverflow = opts.onOverflow ?? 'reject';\n }\n else {\n // Nothing configured (includes `oneAtATimePerModel: false`) ⇒ no gating.\n maxConcurrent = Infinity;\n onOverflow = opts.onOverflow ?? 'queue';\n }\n // A finite limit below 1 would gate every request forever; clamp to the\n // smallest sensible serial limit.\n if (Number.isFinite(maxConcurrent) && maxConcurrent < 1)\n maxConcurrent = 1;\n return {\n maxConcurrent,\n onOverflow,\n maxQueueDepth: opts.maxQueueDepthPerModel ?? DEFAULT_MAX_QUEUE_DEPTH_PER_MODEL,\n queueTimeoutMs: opts.queueTimeoutMs,\n slotGroup: opts.sharedSlotGroup\n };\n}\n/**\n * Test-only knobs exported for `request-registry.test.ts` so the bound\n * assertions can pin the documented limits without re-reading them via\n * fragile string comparison. **Not part of the public SDK surface.**\n *\n * @internal\n */\nexport const __requestRegistryTestHooks = {\n cancelBeforeBeginMaxEntries: CANCEL_BEFORE_BEGIN_MAX_ENTRIES,\n cancelBeforeBeginTtlMs: CANCEL_BEFORE_BEGIN_TTL_MS,\n defaultMaxQueueDepthPerModel: DEFAULT_MAX_QUEUE_DEPTH_PER_MODEL\n};\nfunction derivedTerminalState(ctx) {\n if (ctx.state === 'failed')\n return 'failed';\n if (ctx.signal.aborted || ctx.state === 'cancelled')\n return 'cancelled';\n return 'completed';\n}\n/**\n * Wraps `logger` so every emit is prefixed with\n * `[request-lifecycle requestId= modelId=] `\n * (the `modelId=...` segment is dropped when absent). The wrapper is a\n * thin shim: `setLevel` / `getLevel` / `addTransport` / `setConsoleOutput`\n * pass through to the underlying logger, and transport callbacks receive\n * the prefixed message.\n *\n * @example\n * await using ctx = await registry.begin({ requestId, kind: \"completion\", modelId });\n * const log = withRequestContext(getServerLogger(), ctx);\n * log.info(\"decoding token 7\");\n * // → \"[request-lifecycle completion requestId= modelId=] decoding token 7\"\n */\nexport function withRequestContext(logger, ctx) {\n const prefix = ctx.modelId !== undefined\n ? `[request-lifecycle ${ctx.kind} requestId=${ctx.requestId} modelId=${ctx.modelId}] `\n : `[request-lifecycle ${ctx.kind} requestId=${ctx.requestId}] `;\n function pick(method) {\n switch (method) {\n case 'error':\n return logger.error;\n case 'warn':\n return logger.warn;\n case 'info':\n return logger.info;\n case 'debug':\n return logger.debug;\n case 'trace':\n return logger.trace;\n }\n }\n function emit(method, args) {\n const sink = pick(method);\n if (args.length === 0) {\n sink(prefix);\n return;\n }\n const [first, ...rest] = args;\n sink(prefix + String(first), ...rest);\n }\n return {\n error: (...args) => emit('error', args),\n warn: (...args) => emit('warn', args),\n info: (...args) => emit('info', args),\n debug: (...args) => emit('debug', args),\n trace: (...args) => emit('trace', args),\n setLevel: (level) => logger.setLevel(level),\n getLevel: () => logger.getLevel(),\n addTransport: (transport) => logger.addTransport(transport),\n setConsoleOutput: (enabled) => logger.setConsoleOutput(enabled)\n };\n}\nimport env from 'bare-env';\nimport { isBareKit } from 'which-runtime';\nimport { z } from 'zod';\nconst envSchema = z.object({\n QVAC_IPC_SOCKET_PATH: z.string().optional(),\n HOME_DIR: z.string()\n});\nlet validatedEnv = null;\n/**\n * Initialize the worker environment. Call once at worker startup.\n * Returns whether RPC config was parsed from arguments.\n */\nexport function initEnv() {\n const defaultHomeDir = \n // Snap's HOME can be revision-scoped; SNAP_USER_COMMON is stable.\n env['SNAP_USER_COMMON'] ?? env['HOME'] ?? env['USERPROFILE'] ?? '/tmp';\n let envConfig = {\n HOME_DIR: defaultHomeDir\n };\n let hasRPCConfig = false;\n if (isBareKit && Bare.argv[0]) {\n envConfig['HOME_DIR'] = Bare.argv[0];\n }\n // Try to parse any argument as JSON config (fail gracefully)\n if (Bare.argv[2]) {\n try {\n const rpcArgs = JSON.parse(Bare.argv[2]);\n envConfig = { ...envConfig, ...rpcArgs };\n hasRPCConfig = true;\n }\n catch {\n // Not JSON or invalid - use defaults (direct mode)\n }\n }\n validatedEnv = envSchema.parse(envConfig);\n return { hasRPCConfig };\n}\n/**\n * Get the worker environment. Must call initEnv() first.\n */\nexport function getEnv() {\n if (!validatedEnv) {\n // Fallback initialization for cases where initEnv wasn't called\n initEnv();\n }\n return {\n ...env,\n ...validatedEnv\n };\n}\n/**\n * Get the validated env config. Must call initEnv() first.\n */\nexport function getValidatedEnv() {\n if (!validatedEnv) {\n initEnv();\n }\n return validatedEnv;\n}\nimport { createErrorResponse, responseSchema } from '../schemas/index.js';\nimport { getServerLogger } from '../logging/index.js';\nimport {} from './rpc/profiling/index.js';\nconst logger = getServerLogger();\nfunction buildErrorResponseData(error, profiler) {\n const errorResponse = createErrorResponse(error);\n const validated = responseSchema.parse(errorResponse);\n const json = JSON.stringify(validated);\n return profiler ? profiler.serializeError(json) : json;\n}\nexport function sendErrorResponse(req, error, profiler) {\n try {\n req.reply(buildErrorResponseData(error, profiler), 'utf-8');\n }\n catch (responseError) {\n logger.error('Failed to create error response:', responseError);\n const fallbackError = createErrorResponse(new Error('Internal server error'));\n req.reply(JSON.stringify(fallbackError), 'utf-8');\n }\n}\nexport function sendStreamErrorResponse(stream, error, profiler) {\n try {\n stream.write(buildErrorResponseData(error, profiler) + '\\n', 'utf-8');\n stream.end();\n }\n catch (responseError) {\n logger.error('Failed to create stream error response:', responseError);\n const fallbackError = createErrorResponse(new Error('Internal server error'));\n stream.write(JSON.stringify(fallbackError) + '\\n', 'utf-8');\n stream.end();\n }\n}\nexport { registerPlugin, registerPlugins, getPlugin, getPluginHandler, hasPlugin, getAllPlugins, clearPlugins, unregisterPlugin } from './registry.js';\nimport { pluginDefinitionRuntimeSchema } from '../../schemas/plugin.js';\nimport { isModelTypeAlias } from '../../schemas/index.js';\nimport { PluginAlreadyRegisteredError, PluginDefinitionInvalidError, PluginLoggingInvalidError, PluginModelTypeReservedError } from '../../utils/errors-server.js';\nimport { createAddonLoggerCallback } from '../../logging/addon.js';\nimport { formatZodError } from '../../utils/zod-error.js';\nconst plugins = new Map();\nfunction getModelTypeForError(plugin) {\n if (!plugin || typeof plugin !== 'object')\n return '(unknown)';\n if (!('modelType' in plugin))\n return '(unknown)';\n const modelType = plugin.modelType;\n return typeof modelType === 'string' && modelType.length > 0 ? modelType : '(unknown)';\n}\nfunction validatePluginDefinition(plugin) {\n const result = pluginDefinitionRuntimeSchema.safeParse(plugin);\n if (result.success)\n return;\n throw new PluginDefinitionInvalidError(getModelTypeForError(plugin), formatZodError(result.error));\n}\nexport function registerPlugin(plugin) {\n validatePluginDefinition(plugin);\n if (isModelTypeAlias(plugin.modelType)) {\n throw new PluginModelTypeReservedError(plugin.modelType);\n }\n if (plugins.has(plugin.modelType)) {\n throw new PluginAlreadyRegisteredError(plugin.modelType);\n }\n // Validate logging module shape if provided\n if (plugin.logging?.module) {\n const loggingModule = plugin.logging.module;\n if (typeof loggingModule['setLogger'] !== 'function') {\n throw new PluginLoggingInvalidError(plugin.modelType, 'logging.module must have a setLogger(callback) function');\n }\n }\n plugins.set(plugin.modelType, plugin);\n if (plugin.logging?.module && plugin.logging?.namespace) {\n const loggingModule = plugin.logging.module;\n loggingModule.setLogger(createAddonLoggerCallback(plugin.logging.namespace));\n }\n}\nexport function registerPlugins(pluginList) {\n for (const plugin of pluginList) {\n registerPlugin(plugin);\n }\n}\nexport function getPlugin(modelType) {\n return plugins.get(modelType);\n}\nexport function getPluginHandler(modelType, handlerName) {\n const plugin = plugins.get(modelType);\n if (!plugin)\n return undefined;\n return plugin.handlers[handlerName];\n}\nexport function hasPlugin(modelType) {\n return plugins.has(modelType);\n}\nexport function unregisterPlugin(modelType) {\n const plugin = plugins.get(modelType);\n if (!plugin)\n return false;\n if (plugin.logging?.module) {\n const loggingModule = plugin.logging.module;\n loggingModule.releaseLogger?.();\n }\n return plugins.delete(modelType);\n}\nexport function getAllPlugins() {\n return Array.from(plugins.values());\n}\nexport function clearPlugins() {\n for (const plugin of plugins.values()) {\n if (plugin.logging?.module) {\n const loggingModule = plugin.logging.module;\n loggingModule.releaseLogger?.();\n }\n }\n plugins.clear();\n}\nimport RPC from 'bare-rpc';\nimport { connect } from 'bare-net';\nimport { handleRequest } from './handle-request.js';\nimport { getServerLogger } from '../../logging/index.js';\nconst logger = getServerLogger();\nexport function createBareKitRPCServer() {\n const { IPC } = globalThis.BareKit;\n return new RPC(IPC, handleRequest);\n}\n/**\n * Dial the client's IPC endpoint. Two encodings cross the handshake:\n *\n * - `tcp://host:port` — a loopback TCP endpoint. Used by clients whose\n * runtime has no portable server for filesystem sockets, notably the\n * Python `asyncio` transport (`start_unix_server` is Unix-only, and\n * asyncio has no cross-platform named-pipe server). One code path on\n * every OS, so Windows dials the same way Linux/macOS do.\n * - anything else — a filesystem path: a Unix domain socket, or a\n * `\\\\.\\pipe\\...` named pipe on Windows, as the Node client (`node:net`)\n * creates.\n */\nfunction connectToEndpoint(endpoint) {\n if (endpoint.startsWith('tcp://')) {\n const hostPort = endpoint.slice('tcp://'.length);\n const sep = hostPort.lastIndexOf(':');\n const host = hostPort.slice(0, sep);\n const port = Number(hostPort.slice(sep + 1));\n return connect(port, host);\n }\n return connect(endpoint);\n}\nexport function createIPCClient(socketPath, options) {\n logger.info(`Connecting to IPC socket at ${socketPath}`);\n const socket = connectToEndpoint(socketPath);\n socket.on('connect', () => {\n logger.info('Connected to IPC server');\n });\n socket.on('error', (err) => {\n logger.error('IPC client connection error:', err);\n });\n socket.on('close', () => {\n logger.warn('IPC socket closed — parent process likely terminated');\n options?.onDisconnect?.();\n });\n return new RPC(socket, handleRequest);\n}\n/**\n * Server-side RPC transport for delegated requests.\n *\n * This module provides `send` and `stream` functions for server-side\n * delegation to remote peers (via HyperSwarm RPC).\n */\nimport { requestSchema, responseSchema, PROFILING_KEY, PROFILING_TRAILER_KEY, DELEGATION_BREAKDOWN_KEY, OPERATION_EVENT_KEY } from '../../schemas/index.js';\nimport { nowMs, extractProfilingMeta, stripProfilingMeta, recordFailure, generateId } from '../../profiling/index.js';\nimport { withTimeout, withTimeoutStream } from '../../utils/withTimeout.js';\nimport { getServerLogger } from '../../logging/index.js';\nimport { DelegateProviderError } from '../../utils/errors-server.js';\nimport { cleanupStaleConnection } from '../bare/delegate-rpc-client.js';\nimport { shouldProfileDelegation, createDelegationTimings, createDelegationStreamTimings, recordDelegationEvents, recordDelegationStreamEvents, buildDelegationStreamBreakdown, flushServerConnectionEvent, consumeBreakdownConnectionTime } from './profiling/delegation-profiler.js';\nconst logger = getServerLogger();\nimport { getNextCommandId } from './rpc-utils.js';\nfunction checkAndThrowError(response) {\n if (response.type === 'error') {\n throw new DelegateProviderError(response.message || 'Unknown provider error', response.code);\n }\n}\nfunction isConnectionError(error) {\n return !(error instanceof DelegateProviderError);\n}\nfunction cleanupDelegationPeer(options, error) {\n if (!options?.peerKey)\n return;\n if (error !== undefined && !isConnectionError(error))\n return;\n cleanupStaleConnection(options.peerKey);\n}\nexport async function send(request, rpc, options) {\n const { profilingMeta } = options ?? {};\n const shouldProfile = shouldProfileDelegation(request.type, profilingMeta);\n if (!shouldProfile) {\n return sendBase(request, rpc, options, profilingMeta);\n }\n return sendProfiled(request, rpc, options, profilingMeta);\n}\nasync function sendBase(request, rpc, options, profilingMeta) {\n try {\n const parsedRequest = requestSchema.parse(request);\n const req = rpc.request(getNextCommandId());\n logger.debug('[delegate-transport] Sending:', { type: request.type });\n // Propagate per-call disable signal to delegated provider\n const finalRequest = profilingMeta?.enabled === false\n ? { ...parsedRequest, [PROFILING_KEY]: { enabled: false } }\n : parsedRequest;\n const payload = JSON.stringify(finalRequest);\n req.send(payload, 'utf-8');\n const response = await withTimeout(req.reply('utf-8'), options?.timeout);\n const rawPayload = JSON.parse(response?.toString() || '{}');\n const resPayload = responseSchema.parse(stripProfilingMeta(rawPayload));\n logger.debug('[delegate-transport] Response:', { type: resPayload.type });\n checkAndThrowError(resPayload);\n return resPayload;\n }\n catch (error) {\n cleanupDelegationPeer(options, error);\n throw error;\n }\n}\nasync function sendProfiled(request, rpc, options, profilingMeta) {\n const profileId = profilingMeta?.id ?? generateId();\n const includeServerBreakdown = profilingMeta?.includeServer ?? false;\n const timings = createDelegationTimings(profileId, request.type);\n try {\n if (options?.peerKey) {\n flushServerConnectionEvent(options.peerKey);\n }\n const connectionMs = options?.peerKey\n ? consumeBreakdownConnectionTime(options.peerKey)\n : undefined;\n const parsedRequest = requestSchema.parse(request);\n const req = rpc.request(getNextCommandId());\n logger.debug('[delegate-transport] Sending (profiled):', {\n type: request.type\n });\n const stringifyStart = nowMs();\n const profilingEnvelope = { id: profileId };\n if (includeServerBreakdown) {\n profilingEnvelope['includeServer'] = true;\n }\n const requestWithProfiling = {\n ...parsedRequest,\n [PROFILING_KEY]: profilingEnvelope\n };\n const payload = JSON.stringify(requestWithProfiling);\n timings.requestStringifyMs = nowMs() - stringifyStart;\n timings.sendStart = nowMs();\n req.send(payload, 'utf-8');\n const response = await withTimeout(req.reply('utf-8'), options?.timeout);\n timings.firstResponseAt = nowMs();\n const parseStart = nowMs();\n const rawPayload = JSON.parse(response?.toString() || '{}');\n timings.responseJsonParseMs = nowMs() - parseStart;\n const serverMeta = extractProfilingMeta(rawPayload);\n const cleanPayload = stripProfilingMeta(rawPayload);\n const resPayload = responseSchema.parse(cleanPayload);\n logger.debug('[delegate-transport] Response (profiled):', {\n type: resPayload.type\n });\n checkAndThrowError(resPayload);\n const delegationBreakdown = recordDelegationEvents(timings, serverMeta, connectionMs);\n resPayload[DELEGATION_BREAKDOWN_KEY] = delegationBreakdown;\n if (serverMeta?.operation) {\n resPayload[OPERATION_EVENT_KEY] = serverMeta.operation;\n }\n return resPayload;\n }\n catch (error) {\n cleanupDelegationPeer(options, error);\n const base = {\n ts: nowMs(),\n op: timings.requestType,\n kind: 'delegation',\n profileId: timings.profileId\n };\n recordFailure(base, timings.requestStart, error);\n throw error;\n }\n}\nexport async function* stream(request, rpc, options = {}) {\n const { profilingMeta } = options;\n const shouldProfile = shouldProfileDelegation(request.type, profilingMeta);\n if (!shouldProfile) {\n yield* streamBase(request, rpc, options, profilingMeta);\n return;\n }\n yield* streamProfiled(request, rpc, options, profilingMeta);\n}\nasync function* streamBase(request, rpc, options = {}, profilingMeta) {\n try {\n const parsedRequest = requestSchema.parse(request);\n const req = rpc.request(getNextCommandId());\n logger.debug('[delegate-transport] Streaming:', { type: request.type });\n // Propagate per-call disable signal to delegated provider\n const finalRequest = profilingMeta?.enabled === false\n ? { ...parsedRequest, [PROFILING_KEY]: { enabled: false } }\n : parsedRequest;\n req.send(JSON.stringify(finalRequest), 'utf-8');\n const responseStream = req.createResponseStream({ encoding: 'utf-8' });\n let buffer = '';\n async function* processStream() {\n for await (const chunk of responseStream) {\n yield chunk;\n }\n }\n const streamWithTimeout = withTimeoutStream(processStream(), options?.timeout);\n for await (const chunk of streamWithTimeout) {\n buffer += chunk.toString();\n // Process complete lines (newline-delimited JSON)\n const lines = buffer.split('\\n');\n buffer = lines.pop() || ''; // Keep incomplete line in buffer\n for (const line of lines) {\n if (!line.trim())\n continue;\n const rawPayload = JSON.parse(line);\n if (rawPayload[PROFILING_TRAILER_KEY] === true)\n continue;\n const response = responseSchema.parse(stripProfilingMeta(rawPayload));\n checkAndThrowError(response);\n yield response;\n }\n }\n }\n catch (error) {\n cleanupDelegationPeer(options, error);\n throw error;\n }\n}\nasync function* streamProfiled(request, rpc, options = {}, profilingMeta) {\n const profileId = profilingMeta?.id ?? generateId();\n const timings = createDelegationStreamTimings(profileId, request.type);\n try {\n if (options.peerKey) {\n flushServerConnectionEvent(options.peerKey);\n }\n const parsedRequest = requestSchema.parse(request);\n const req = rpc.request(getNextCommandId());\n logger.debug('[delegate-transport] Streaming (profiled):', {\n type: request.type\n });\n const stringifyStart = nowMs();\n const requestWithProfiling = {\n ...parsedRequest,\n [PROFILING_KEY]: { id: profileId }\n };\n const payload = JSON.stringify(requestWithProfiling);\n timings.requestStringifyMs = nowMs() - stringifyStart;\n timings.sendStart = nowMs();\n req.send(payload, 'utf-8');\n const responseStream = req.createResponseStream({ encoding: 'utf-8' });\n let buffer = '';\n async function* processStream() {\n for await (const chunk of responseStream) {\n yield chunk;\n }\n }\n const streamWithTimeout = withTimeoutStream(processStream(), options?.timeout);\n let lastServerMeta;\n for await (const chunk of streamWithTimeout) {\n buffer += chunk.toString();\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n for (const line of lines) {\n if (!line.trim())\n continue;\n const rawPayload = JSON.parse(line);\n const serverMeta = extractProfilingMeta(rawPayload);\n if (serverMeta) {\n lastServerMeta = serverMeta;\n }\n if (rawPayload[PROFILING_TRAILER_KEY] === true)\n continue;\n const response = responseSchema.parse(stripProfilingMeta(rawPayload));\n checkAndThrowError(response);\n timings.chunkCount++;\n if (timings.firstChunkAt === undefined) {\n timings.firstChunkAt = nowMs();\n }\n timings.lastChunkAt = nowMs();\n if (serverMeta?.operation) {\n response[OPERATION_EVENT_KEY] = serverMeta.operation;\n }\n response[DELEGATION_BREAKDOWN_KEY] = buildDelegationStreamBreakdown(timings);\n yield response;\n }\n }\n recordDelegationStreamEvents(timings, lastServerMeta);\n }\n catch (error) {\n cleanupDelegationPeer(options, error);\n const base = {\n ts: nowMs(),\n op: timings.requestType,\n kind: 'delegation',\n profileId: timings.profileId\n };\n recordFailure(base, timings.requestStart, error);\n throw error;\n }\n}\nimport { requestSchema, normalizeModelType, PROFILING_KEY } from '../../schemas/index.js';\nimport { nowMs } from '../../profiling/index.js';\nimport { resolveModelConfig } from '../bare/registry/model-config-registry.js';\nimport { sendErrorResponse, sendStreamErrorResponse } from '../error-handlers.js';\nimport { RPCUnknownRequestTypeError, PluginHandlerTypeMismatchError } from '../../utils/errors-server.js';\nimport { registry } from './handler-registry.js';\nimport { executeHandler, executeDuplexHandler, handleInitConfig, isInitConfigMessage, handleShutdown, isShutdownMessage } from './handler-utils.js';\nimport { createServerProfiler } from './profiling/index.js';\nimport { assertLifecycleAllowed } from '../bare/runtime-lifecycle.js';\nimport { shouldUseStreamErrorTransport } from './transport-selector.js';\nexport async function handleRequest(req) {\n let profiler;\n let validationStart = 0;\n let rawRequest;\n let entry;\n try {\n const rawData = req.data?.toString();\n // Duplex stream request: metadata arrives as the first chunk on the\n // request stream (client used createRequestStream instead of send).\n if (!rawData) {\n await handleDuplexRequest(req);\n return;\n }\n // Timing runs unconditionally since we can't know if client\n // requested profiling until after parsing.\n const parseStart = nowMs();\n const jsonData = JSON.parse(rawData);\n const jsonParseMs = nowMs() - parseStart;\n // Handle internal config initialization (bypasses schema)\n if (isInitConfigMessage(jsonData)) {\n handleInitConfig(req, jsonData);\n return;\n }\n // Handle internal pre-terminate cleanup signal (bypasses schema). Lets\n // the client tear addons down while the JS env is still alive so static\n // js_ref_t state doesn't survive into the next worklet's isolate.\n if (isShutdownMessage(jsonData)) {\n await handleShutdown(req);\n return;\n }\n const { data: cleanData, profilingMeta } = extractProfilingMeta(jsonData);\n if (cleanData && typeof cleanData === 'object') {\n rawRequest = cleanData;\n const rawType = rawRequest['type'];\n if (typeof rawType === 'string') {\n entry = registry[rawType];\n }\n }\n profiler = createServerProfiler(profilingMeta);\n profiler.markRequestParsed(jsonParseMs);\n validationStart = nowMs();\n const processedData = applyDeviceDefaultsToRequest(cleanData);\n const request = requestSchema.parse(processedData);\n attachProfilingMetaToRequest(request, profilingMeta);\n profiler.markRequestValidated(nowMs() - validationStart);\n validationStart = 0;\n assertLifecycleAllowed(request);\n entry = registry[request.type];\n if (!entry) {\n throw new RPCUnknownRequestTypeError(request.type);\n }\n await executeHandler(req, request, entry, profiler);\n }\n catch (error) {\n if (profiler && validationStart > 0) {\n profiler.markRequestValidated(nowMs() - validationStart);\n }\n if (shouldUseStreamErrorTransport(entry, rawRequest)) {\n sendStreamErrorResponse(req.createResponseStream(), error, profiler);\n }\n else {\n sendErrorResponse(req, error, profiler);\n }\n }\n}\nfunction attachProfilingMetaToRequest(request, profilingMeta) {\n if (!profilingMeta)\n return;\n Object.defineProperty(request, PROFILING_KEY, {\n value: profilingMeta,\n enumerable: false,\n configurable: true,\n writable: false\n });\n}\nfunction extractProfilingMeta(data) {\n if (!data || typeof data !== 'object' || !(PROFILING_KEY in data)) {\n return { data, profilingMeta: undefined };\n }\n const obj = data;\n const { [PROFILING_KEY]: meta, ...rest } = obj;\n return {\n data: rest,\n profilingMeta: meta\n };\n}\nasync function handleDuplexRequest(req) {\n const inputStream = req.createRequestStream();\n const outputStream = req.createResponseStream();\n let profiler;\n try {\n const firstChunk = await new Promise((resolve, reject) => {\n const onData = (data) => {\n inputStream.off('error', onError);\n inputStream.pause();\n resolve(data);\n };\n const onError = (err) => {\n inputStream.off('data', onData);\n reject(err instanceof Error ? err : new Error(String(err)));\n };\n inputStream.once('data', onData);\n inputStream.once('error', onError);\n });\n const parseStart = nowMs();\n const jsonData = JSON.parse(firstChunk.toString());\n const jsonParseMs = nowMs() - parseStart;\n const { data: cleanData, profilingMeta } = extractProfilingMeta(jsonData);\n profiler = createServerProfiler(profilingMeta);\n profiler.markRequestParsed(jsonParseMs);\n const validationStart = nowMs();\n const processedData = applyDeviceDefaultsToRequest(cleanData);\n const request = requestSchema.parse(processedData);\n attachProfilingMetaToRequest(request, profilingMeta);\n profiler.markRequestValidated(nowMs() - validationStart);\n assertLifecycleAllowed(request);\n const entry = registry[request.type];\n if (!entry) {\n throw new RPCUnknownRequestTypeError(request.type);\n }\n if (entry.type !== 'duplex') {\n throw new PluginHandlerTypeMismatchError(request.type, 'duplex', entry.type);\n }\n await executeDuplexHandler(req, request, entry, inputStream, outputStream, profiler);\n }\n catch (error) {\n inputStream.destroy();\n sendStreamErrorResponse(outputStream, error, profiler);\n }\n}\n/**\n * Apply device-specific config defaults to loadModel requests before schema parsing.\n * This ensures device defaults are applied before schema defaults.\n *\n * Priority: User config > Device defaults > Schema defaults\n */\nfunction applyDeviceDefaultsToRequest(data) {\n if (!data || typeof data !== 'object')\n return data;\n const obj = data;\n const requestType = obj['type'];\n // Only process loadModel requests (not reload config which uses modelId)\n if (requestType !== 'loadModel' || !obj['modelType'] || !('modelSrc' in obj)) {\n return data;\n }\n // Normalize model type to canonical form\n let canonicalType;\n try {\n canonicalType = normalizeModelType(obj['modelType']);\n }\n catch {\n // Invalid model type, let schema validation handle it\n return data;\n }\n // Apply device defaults and full schema defaults to modelConfig\n const rawConfig = obj['modelConfig'] ?? {};\n const configWithDefaults = resolveModelConfig(canonicalType, rawConfig);\n return {\n ...obj,\n modelConfig: configWithDefaults\n };\n}\nimport {} from '../../schemas/index.js';\nimport { handleBatchCompletionStream } from './handlers/batch-completion-stream.js';\nimport { handleCompletionOrchestrate } from './handlers/completion-orchestrate.js';\nimport { handleCompletionStream } from './handlers/completion-stream.js';\nimport { handleDownloadAsset } from './handlers/download-asset.js';\nimport { handleLoadModel } from './handlers/load-model/index.js';\nimport { handleLoadModelDelegated } from './handlers/load-model-delegated.js';\nimport { handleCompletionStreamDelegated } from './handlers/completion-stream-delegated.js';\nimport { getModelEntry } from '../bare/registry/model-registry.js';\nimport { handleUnloadModel } from './handlers/unload-model.js';\nimport { handleUnloadModelDelegated } from './handlers/unload-model-delegated.js';\nimport { handleTranscribe } from './handlers/transcribe.js';\nimport { handleTranscribeStream } from './handlers/transcribe-stream.js';\nimport { handleBciTranscribe } from './handlers/bci-transcribe.js';\nimport { handleBciTranscribeStream } from './handlers/bci-transcribe-stream.js';\nimport { handleEmbed } from './handlers/embed.js';\nimport { handleTranslate } from './handlers/translate.js';\nimport { handleLoggingStream } from './handlers/logging-stream.js';\nimport { cancelHandler } from './handlers/cancelHandler.js';\nimport { provideHandler } from './handlers/provideHandler.js';\nimport { stopProvideHandler } from './handlers/stopProvideHandler.js';\nimport { handleRag } from './handlers/rag.js';\nimport { handleDeleteCache } from './handlers/delete-cache.js';\nimport { handleTextToSpeech } from './handlers/text-to-speech.js';\nimport { handleTextToSpeechStream } from './handlers/text-to-speech-stream.js';\nimport { handleGetModelInfo } from './handlers/get-model-info.js';\nimport { handleGetLoadedModelInfo } from './handlers/get-loaded-model-info.js';\nimport { handleOCRStream } from './handlers/ocr-stream.js';\nimport { handleHeartbeat } from './handlers/heartbeat.js';\nimport { handleFinetune } from './handlers/finetune.js';\nimport { handleHeartbeatDelegated } from './handlers/heartbeat-delegated.js';\nimport { handleCancelDelegated } from './handlers/cancel-delegated.js';\nimport { handleDiffusionStream } from './handlers/diffusion-stream.js';\nimport { handleVideoStream } from './handlers/video-stream.js';\nimport { handleUpscaleStream } from './handlers/upscale-stream.js';\nimport { handleClassify } from './handlers/classify.js';\nimport { handlePluginInvoke, handlePluginInvokeStream } from './handlers/plugin-invoke.js';\nimport { handleModelRegistryList, handleModelRegistrySearch, handleModelRegistryGetModel } from './handlers/registry.js';\nimport { handleSuspend } from './handlers/suspend.js';\nimport { handleResume } from './handlers/resume.js';\nimport { handleState } from './handlers/state.js';\nfunction ragSupportsProgress(request) {\n if (request.type !== 'rag')\n return false;\n return ['ingest', 'saveEmbeddings', 'reindex'].includes(request.operation);\n}\nfunction finetuneSupportsProgress(request) {\n if (request.type !== 'finetune')\n return false;\n return ['start', 'resume', undefined].includes(request.operation);\n}\nfunction isModelDelegated(request) {\n if (!('modelId' in request))\n return false;\n const entry = getModelEntry(request.modelId);\n return entry?.isDelegated ?? false;\n}\n/**\n * Should the cancel be forwarded to a delegated provider?\n *\n * After the 0.11.0 wire-schema collapse the cancel envelope has two\n * operations:\n *\n * - `request` — targeted cancel by `requestId`. Always handled\n * locally: the worker-singleton `RequestRegistry` is the source of\n * truth for active requests (delegated handlers register their own\n * requests on it the same way local handlers do), so a `requestId`\n * cancel always lands on the right worker without needing a hop\n * through the provider. Returning `false` here keeps the cancel on\n * the local cancel handler, where it routes through the registry\n * and (for downloads) the `markClearCacheForRequest` helper.\n *\n * - `broad` — abort every in-flight request on a model. Forwarded to\n * the delegated provider iff the targeted model itself is\n * delegated; the provider then runs the same broad-cancel sweep\n * server-side. Local broad cancels for non-delegated models stay\n * on this worker.\n */\nfunction isCancelDelegated(request) {\n if (request.type !== 'cancel')\n return false;\n if (request.operation !== 'broad')\n return false;\n return isModelDelegated(request);\n}\nexport const registry = {\n // Simple Reply handlers\n heartbeat: {\n type: 'reply',\n handler: handleHeartbeat,\n delegatedHandler: handleHeartbeatDelegated,\n isDelegated: (r) => r.type === 'heartbeat' && !!r.delegate\n },\n unloadModel: {\n type: 'reply',\n handler: handleUnloadModel,\n delegatedHandler: handleUnloadModelDelegated,\n isDelegated: isModelDelegated\n },\n embed: { type: 'reply', handler: handleEmbed },\n cancel: {\n type: 'reply',\n handler: cancelHandler,\n delegatedHandler: handleCancelDelegated,\n isDelegated: isCancelDelegated\n },\n provide: { type: 'reply', handler: provideHandler },\n stopProvide: { type: 'reply', handler: stopProvideHandler },\n deleteCache: { type: 'reply', handler: handleDeleteCache },\n getModelInfo: { type: 'reply', handler: handleGetModelInfo },\n getLoadedModelInfo: { type: 'reply', handler: handleGetLoadedModelInfo },\n pluginInvoke: { type: 'reply', handler: handlePluginInvoke },\n modelRegistryList: { type: 'reply', handler: handleModelRegistryList },\n modelRegistrySearch: { type: 'reply', handler: handleModelRegistrySearch },\n modelRegistryGetModel: {\n type: 'reply',\n handler: handleModelRegistryGetModel\n },\n suspend: { type: 'reply', handler: handleSuspend },\n resume: { type: 'reply', handler: handleResume },\n state: { type: 'reply', handler: handleState },\n // Simple Stream handlers\n transcribe: { type: 'stream', handler: handleTranscribe },\n transcribeStream: { type: 'duplex', handler: handleTranscribeStream },\n bciTranscribe: { type: 'stream', handler: handleBciTranscribe },\n bciTranscribeStream: { type: 'duplex', handler: handleBciTranscribeStream },\n loggingStream: { type: 'stream', handler: handleLoggingStream },\n translate: { type: 'stream', handler: handleTranslate },\n textToSpeech: { type: 'stream', handler: handleTextToSpeech },\n textToSpeechStream: { type: 'duplex', handler: handleTextToSpeechStream },\n ocrStream: { type: 'stream', handler: handleOCRStream },\n diffusionStream: { type: 'stream', handler: handleDiffusionStream },\n videoStream: { type: 'stream', handler: handleVideoStream },\n upscaleStream: { type: 'stream', handler: handleUpscaleStream },\n classify: { type: 'stream', handler: handleClassify },\n pluginInvokeStream: { type: 'stream', handler: handlePluginInvokeStream },\n // Handlers with delegation support\n loadModel: {\n type: 'reply',\n handler: handleLoadModel,\n delegatedHandler: handleLoadModelDelegated,\n isDelegated: (r) => r.type === 'loadModel' && !!r.delegate,\n supportsProgress: true\n },\n completionStream: {\n type: 'stream',\n handler: handleCompletionStream,\n delegatedHandler: handleCompletionStreamDelegated,\n isDelegated: isModelDelegated\n },\n // Deliberately no delegated handler: tool callbacks execute code on the\n // client machine, so only the user's own local worker may orchestrate\n // (see completionOrchestrateResponseSchema's contract note).\n completionOrchestrate: { type: 'duplex', handler: handleCompletionOrchestrate },\n batchCompletionStream: {\n type: 'stream',\n handler: handleBatchCompletionStream\n },\n // Handlers with progress support\n downloadAsset: {\n type: 'reply',\n handler: handleDownloadAsset,\n supportsProgress: true\n },\n rag: {\n type: 'reply',\n handler: handleRag,\n supportsProgress: ragSupportsProgress\n },\n finetune: {\n type: 'reply',\n handler: handleFinetune,\n supportsProgress: finetuneSupportsProgress\n }\n};\nexport function selectHandler(entry, request) {\n const isDelegated = !!(entry.delegatedHandler && entry.isDelegated?.(request));\n return {\n handler: isDelegated ? entry.delegatedHandler : entry.handler,\n isDelegated\n };\n}\nexport function handlerSupportsProgress(entry, request) {\n return !!('withProgress' in request &&\n request.withProgress &&\n (typeof entry.supportsProgress === 'function'\n ? entry.supportsProgress(request)\n : entry.supportsProgress));\n}\nimport { PROFILING_KEY } from '../../schemas/index.js';\nimport { sendErrorResponse, sendStreamErrorResponse } from '../error-handlers.js';\nimport { PluginHandlerTypeMismatchError } from '../../utils/errors-server.js';\nimport { setSDKConfig } from '../bare/registry/config-registry.js';\nimport { setRuntimeContext } from '../bare/registry/runtime-context-registry.js';\nimport {} from './profiling/index.js';\nimport { isTerminalChunk } from './rpc-utils.js';\nimport { createProgressThrottle } from './progress-throttle.js';\nimport { handlerSupportsProgress, selectHandler } from './handler-selection.js';\nfunction getProfilingMetaFromRequest(request) {\n if (PROFILING_KEY in request) {\n return request[PROFILING_KEY];\n }\n return undefined;\n}\nasync function executeReplyHandler(req, request, handler, profiler, isDelegated) {\n profiler.startHandler();\n try {\n let response;\n if (isDelegated) {\n const profilingMeta = getProfilingMetaFromRequest(request);\n response = await handler(request, profilingMeta ? { profilingMeta } : undefined);\n }\n else {\n response = await handler(request);\n }\n profiler.endHandler();\n req.reply(profiler.serialize(response, true), 'utf-8');\n }\n catch (error) {\n profiler.endHandler();\n sendErrorResponse(req, error, profiler);\n }\n}\nasync function executeStreamHandler(req, request, handler, profiler, isDelegated) {\n const stream = req.createResponseStream();\n profiler.startHandler();\n let sentFinalChunk = false;\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let generator;\n if (isDelegated) {\n const profilingMeta = getProfilingMetaFromRequest(request);\n generator = handler(request, profilingMeta ? { profilingMeta } : undefined);\n }\n else {\n generator = handler(request);\n }\n for await (const response of generator) {\n if (isTerminalChunk(response)) {\n profiler.endHandler();\n stream.write(profiler.serialize(response, true) + '\\n', 'utf-8');\n sentFinalChunk = true;\n }\n else {\n stream.write(profiler.serialize(response, false) + '\\n', 'utf-8');\n }\n }\n // Fallback\n if (!sentFinalChunk) {\n profiler.endHandler();\n const trailer = profiler.serialize();\n if (trailer) {\n stream.write(trailer + '\\n', 'utf-8');\n }\n }\n stream.end();\n }\n catch (error) {\n profiler.endHandler();\n sendStreamErrorResponse(stream, error, profiler);\n }\n}\nasync function executeProgressHandler(req, request, handler, profiler, isDelegated) {\n const stream = req.createResponseStream();\n profiler.startHandler();\n const writeBatch = (updates) => {\n const payload = updates.map((u) => profiler.serialize(u, false)).join('\\n');\n stream.write(payload + '\\n', 'utf-8');\n };\n const throttle = createProgressThrottle(writeBatch);\n try {\n let response;\n if (isDelegated) {\n const profilingMeta = getProfilingMetaFromRequest(request);\n const options = { progressCallback: throttle.push };\n if (profilingMeta) {\n options.profilingMeta = profilingMeta;\n }\n response = await handler(request, options);\n }\n else {\n response = await handler(request, throttle.push);\n }\n throttle.flush();\n profiler.endHandler();\n stream.write(profiler.serialize(response, true) + '\\n', 'utf-8');\n stream.end();\n }\n catch (error) {\n throttle.flush();\n profiler.endHandler();\n sendStreamErrorResponse(stream, error, profiler);\n }\n}\nexport async function executeDuplexHandler(_req, request, entry, inputStream, outputStream, profiler) {\n const { handler } = selectHandler(entry, request);\n profiler.startHandler();\n try {\n for await (const response of handler(request, inputStream)) {\n outputStream.write(profiler.serialize(response, false) + '\\n', 'utf-8');\n }\n profiler.endHandler();\n const trailer = profiler.serialize();\n if (trailer) {\n outputStream.write(trailer + '\\n', 'utf-8');\n }\n outputStream.end();\n }\n catch (error) {\n profiler.endHandler();\n sendStreamErrorResponse(outputStream, error, profiler);\n }\n}\n// Unified handler executor with delegation and progress support\nexport async function executeHandler(req, request, entry, profiler) {\n const { handler, isDelegated } = selectHandler(entry, request);\n const wantsProgress = handlerSupportsProgress(entry, request);\n if (entry.type === 'duplex') {\n throw new PluginHandlerTypeMismatchError(request.type, 'reply or stream', 'duplex');\n }\n if (entry.type === 'stream') {\n await executeStreamHandler(req, request, handler, profiler, isDelegated);\n }\n else if (wantsProgress) {\n await executeProgressHandler(req, request, handler, profiler, isDelegated);\n }\n else {\n await executeReplyHandler(req, request, handler, profiler, isDelegated);\n }\n}\nexport function isInitConfigMessage(data) {\n return (typeof data === 'object' && data !== null && 'type' in data && data.type === '__init_config');\n}\nexport function handleInitConfig(req, data) {\n try {\n if (data.config) {\n setSDKConfig(data.config);\n }\n if (data.runtimeContext) {\n setRuntimeContext(data.runtimeContext);\n }\n req.reply(JSON.stringify({ success: true }), 'utf-8');\n }\n catch (error) {\n req.reply(JSON.stringify({\n success: false,\n error: error instanceof Error ? error.message : String(error)\n }), 'utf-8');\n }\n}\nexport function isShutdownMessage(data) {\n return (typeof data === 'object' &&\n data !== null &&\n 'type' in data &&\n data.type === '__shutdown__');\n}\nexport async function handleShutdown(req) {\n try {\n // Lazy import to avoid the import cycle:\n // handler-utils -> worker-core -> create-server -> handle-request\n // -> handler-utils. By the time this runs, all modules are loaded.\n const { cleanupForTerminate } = await import('../worker-core.js');\n await cleanupForTerminate();\n req.reply(JSON.stringify({ success: true }), 'utf-8');\n }\n catch (error) {\n req.reply(JSON.stringify({\n success: false,\n error: error instanceof Error ? error.message : String(error)\n }), 'utf-8');\n }\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleBatchCompletionStream(request) {\n yield* dispatchPluginStream(request.modelId, 'batchCompletionStream', request);\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleBciTranscribeStream(request, inputStream) {\n yield* dispatchPluginStream(request.modelId, 'bciTranscribeStream', request, inputStream);\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleBciTranscribe(request) {\n yield* dispatchPluginStream(request.modelId, 'bciTranscribe', request);\n}\nimport { getServerLogger } from '../../../logging/index.js';\nimport { getModelEntry } from '../../bare/registry/model-registry.js';\nimport { getRPC } from '../../bare/delegate-rpc-client.js';\nimport { send } from '../delegate-transport.js';\nconst logger = getServerLogger();\n/**\n * Resolve the delegated provider for a cancel request, if any.\n *\n * After the 0.11.0 wire-schema collapse the cancel envelope has only\n * two operations. Only `broad` cancels delegate at the cancel layer —\n * see `isCancelDelegated` in `handler-registry.ts` for the policy and\n * the rationale.\n *\n * The targeted `request` arm is handled locally because the registry\n * is worker-singleton and already holds the entry for delegated\n * requests (the delegated handler registers its own context on the\n * provider-facing side). For pre-0.11.0 behaviour where a `requestId`\n * cancel against a delegated model needed to round-trip to the\n * provider, hold onto the delegated `loadModel(...).requestId` and\n * fire a broad cancel against the model id instead.\n */\nfunction resolveDelegationTarget(request) {\n if (request.operation !== 'broad')\n return null;\n const entry = getModelEntry(request.modelId);\n if (!entry?.isDelegated)\n return null;\n const target = {\n providerPublicKey: entry.delegated.providerPublicKey\n };\n if (entry.delegated.timeout !== undefined) {\n target.timeout = entry.delegated.timeout;\n }\n return target;\n}\nexport async function handleCancelDelegated(request, options) {\n const target = resolveDelegationTarget(request);\n if (!target) {\n logger.warn(`Delegated cancel skipped (no delegation target): operation=${request.operation}`);\n return { type: 'cancel', success: true };\n }\n try {\n const rpc = await getRPC(target.providerPublicKey, {\n timeout: target.timeout\n });\n const delegateOpts = {\n peerKey: target.providerPublicKey\n };\n if (target.timeout !== undefined) {\n delegateOpts.timeout = target.timeout;\n }\n if (options?.profilingMeta) {\n delegateOpts.profilingMeta = options.profilingMeta;\n }\n await send(request, rpc, delegateOpts);\n return { type: 'cancel', success: true };\n }\n catch (error) {\n logger.error('Error during delegated cancellation:', error);\n return {\n type: 'cancel',\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n}\nimport { cancel as cancelByModelId } from '../../bare/ops/cancel.js';\nimport { getRequestRegistry } from '../../bare/runtime/index.js';\nimport { markClearCacheForRequest } from './load-model/download-manager.js';\nimport { getServerLogger } from '../../../logging/index.js';\nconst logger = getServerLogger();\n/**\n * Cancel RPC entry point. The 5-arm `switch (request.operation)`\n * dispatcher that lived here through 0.10.x was retired in 0.11.0:\n * every long-running handler now registers itself on the\n * worker-singleton `RequestRegistry`, so the cancel surface narrows to\n * two paths that route through the same registry primitive:\n *\n * - `{ operation: \"request\", requestId, clearCache? }` — targeted\n * cancel by client-generated id. Looks up the registry entry,\n * fires its abort signal, optionally marks the underlying download\n * transfer for cache clear. The \"stop-button race\" case (client\n * cancel beats its own begin to the worker) is handled inside the\n * registry via the cancel-before-begin tripwire.\n *\n * - `{ operation: \"broad\", modelId, kind? }` — abort every in-flight\n * request on a model (optionally narrowed by `kind`). Used for\n * model unload, app shutdown, and admin sweeps where the caller\n * has no `requestId`. Delegates to the `cancel` bare op so the\n * `ModelNotLoadedError` validation is shared with internal\n * server-side broad cancels.\n *\n * Always returns `success: true` plus a `cancelled` count (the number\n * of contexts this call flipped to `cancelling` — already-cancelled\n * contexts are not counted). A targeted cancel with no in-flight\n * match still returns `success: true, cancelled: 0`; the\n * cancel-before-begin tripwire ensures the cancel is applied\n * retroactively if a matching begin arrives within the registry's\n * race window.\n */\nexport function cancelHandler(request) {\n try {\n if (request.operation === 'request') {\n if (request.clearCache) {\n markClearCacheForRequest(request.requestId);\n }\n const cancelled = getRequestRegistry().cancel({\n requestId: request.requestId\n });\n if (cancelled === 0) {\n // info-level (not debug) because the decorated-promise pattern\n // makes \"no in-flight match\" a common and user-visible case:\n // a Stop button fired after the request settled but before\n // the UI cleared lands here. The cancel-before-begin tripwire\n // inside the registry already captured the cancel for any\n // matching begin in flight; this log just helps operators\n // debugging \"my Stop button isn't working\" without lowering\n // the log level.\n logger.info(`[cancel] no in-flight request matched requestId=${request.requestId}`);\n }\n return { type: 'cancel', success: true, cancelled };\n }\n // operation === \"broad\"\n const cancelled = cancelByModelId({ modelId: request.modelId }, request.kind ? { kind: request.kind } : undefined);\n return { type: 'cancel', success: true, cancelled };\n }\n catch (error) {\n logger.error('Error during cancellation:', error);\n return {\n type: 'cancel',\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleClassify(request) {\n yield* dispatchPluginStream(request.modelId, 'classify', request);\n}\nimport { toolCallbackResultSchema } from '../../../schemas/completion-stream.js';\nimport { aggregateEvents } from '../../../utils/aggregate-events.js';\nimport { CompletionFailedError } from '../../../utils/errors-server.js';\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nconst DEFAULT_MAX_TOOL_TURNS = 8;\n// Generous ceiling on one client-side tool execution: long enough for a slow\n// MCP round trip, short enough that a client that stopped reading can't pin a\n// model slot forever.\nconst TOOL_RESULT_TIMEOUT_MS = 5 * 60 * 1000;\n// A single tool result is small JSON; anything past this without a newline is a\n// malformed/hostile client trying to grow the buffer without bound. Fail loudly\n// instead of accumulating forever.\nconst MAX_TOOL_RESULT_LINE_BYTES = 16 * 1024 * 1024;\n/**\n * Reads newline-delimited JSON tool results off the duplex request stream\n * and resolves per-callId waiters. Chunk boundaries don't align with lines,\n * so a partial tail is buffered until its newline arrives.\n *\n * The pump is torn down by `close()` (called from a `finally` when\n * orchestration ends, however it ends) so the upstream iterator is returned\n * and the reader stops holding the request stream open.\n */\nexport class ToolResultReader {\n buffer = '';\n results = new Map();\n waiters = new Map();\n failed;\n closed = false;\n iterator;\n constructor(inputStream) {\n this.iterator = inputStream[Symbol.asyncIterator]();\n void this.pump();\n }\n async pump() {\n try {\n while (!this.closed) {\n const next = await this.iterator.next();\n if (next.done)\n break;\n this.buffer += next.value.toString();\n let nl;\n while ((nl = this.buffer.indexOf('\\n')) !== -1) {\n const line = this.buffer.slice(0, nl);\n this.buffer = this.buffer.slice(nl + 1);\n if (line.trim())\n this.accept(line);\n }\n if (this.buffer.length > MAX_TOOL_RESULT_LINE_BYTES) {\n throw new CompletionFailedError('tool result frame exceeds the maximum size');\n }\n }\n if (!this.closed && this.buffer.trim())\n this.accept(this.buffer);\n }\n catch (error) {\n this.failWaiters(error instanceof Error ? error : new Error(String(error)));\n }\n }\n failWaiters(error) {\n this.failed = error;\n // Wake every waiter; each rethrows via waitFor's failure check.\n for (const [callId, resolve] of this.waiters) {\n this.waiters.delete(callId);\n resolve({ callId, error: error.message });\n }\n }\n accept(line) {\n const parsed = toolCallbackResultSchema.parse(JSON.parse(line));\n const waiter = this.waiters.get(parsed.callId);\n if (waiter) {\n this.waiters.delete(parsed.callId);\n waiter(parsed);\n }\n else {\n this.results.set(parsed.callId, parsed);\n }\n }\n async waitFor(callId, timeoutMs = TOOL_RESULT_TIMEOUT_MS) {\n const buffered = this.results.get(callId);\n if (buffered) {\n this.results.delete(callId);\n return buffered;\n }\n if (this.failed)\n throw this.failed;\n return await new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n this.waiters.delete(callId);\n reject(new CompletionFailedError(`tool callback ${callId} timed out`));\n }, timeoutMs);\n this.waiters.set(callId, (result) => {\n clearTimeout(timer);\n resolve(result);\n });\n });\n }\n /**\n * Stop the pump and release the upstream iterator. Idempotent. Pending\n * waiters are failed so a caller blocked in `waitFor` can't hang after the\n * stream is torn down.\n */\n close() {\n if (this.closed)\n return;\n this.closed = true;\n this.buffer = '';\n this.results.clear();\n if (!this.failed)\n this.failWaiters(new CompletionFailedError('tool result stream closed'));\n void this.iterator.return?.();\n }\n}\n/**\n * The orchestration core, pure over its collaborators so it unit-tests\n * without the plugin registry: runs completion turns, forwards their events\n * downstream, and when a turn requests tool calls, emits `toolCallback`\n * frames and blocks on the client's results before starting the next turn\n * with the extended history.\n */\nexport async function* orchestrateCompletion(request, runTurn, reader) {\n // Pull the loop bound out of the per-turn base; everything else (including\n // `requestId`) flows into each inner completionStream turn. Threading the\n // orchestrate `requestId` down is what makes `cancel({ requestId })` reach\n // the turn that's currently generating — the expensive part a Stop button\n // targets. Turns run strictly sequentially: turn N's request-registry entry\n // is disposed (on the `for await` break below) before turn N+1 calls\n // `begin(...)`, so reusing the id can't collide in `entries`. A cancel that\n // lands between turns (during a tool-result wait) is caught by the\n // registry's cancel-before-begin tripwire and aborts the next turn's\n // `begin(...)`. Each turn's `history` and `type` are set below.\n const { maxToolTurns, ...turnBase } = request;\n const maxTurns = maxToolTurns ?? DEFAULT_MAX_TOOL_TURNS;\n let history = [...request.history];\n for (let turn = 0; turn < maxTurns; turn++) {\n const turnEvents = [];\n const innerRequest = {\n ...turnBase,\n history,\n type: 'completionStream'\n };\n for await (const response of runTurn(innerRequest)) {\n turnEvents.push(...response.events);\n yield { type: 'completionOrchestrate', turn, events: response.events };\n if (response.done)\n break;\n }\n const { toolCalls, rawFullText, contentText, error, cancelled } = aggregateEvents(turnEvents);\n // Terminal turn: the model answered (or failed/was cancelled) without\n // requesting tools — the client folds the forwarded events itself.\n if (error || cancelled || toolCalls.length === 0) {\n yield { type: 'completionOrchestrate', done: true };\n return;\n }\n // The assistant's tool-call turn goes back verbatim so the model sees\n // its own call syntax; each result follows as a `tool` message.\n history = [...history, { role: 'assistant', content: rawFullText ?? contentText }];\n for (const call of toolCalls) {\n yield {\n type: 'completionOrchestrate',\n turn,\n toolCallback: { callId: call.id, name: call.name, arguments: call.arguments }\n };\n const result = await reader.waitFor(call.id);\n const content = result.error !== undefined\n ? JSON.stringify({ error: result.error })\n : JSON.stringify(result.result ?? null);\n history = [...history, { role: 'tool', content }];\n }\n }\n // Turn cap reached without a natural end. Emit a terminal done frame with a\n // stopReason so the client can tell this was truncated (the model still\n // wanted a tool) rather than a natural finish; the last turn's events carry\n // whatever the model produced.\n yield { type: 'completionOrchestrate', done: true, stopReason: 'maxToolTurns' };\n}\nexport async function* handleCompletionOrchestrate(request, inputStream) {\n const reader = new ToolResultReader(inputStream);\n const runTurn = async function* (innerRequest) {\n yield* dispatchPluginStream(innerRequest.modelId, 'completionStream', innerRequest);\n };\n try {\n yield* orchestrateCompletion(request, runTurn, reader);\n }\n finally {\n // Tear the reader down however orchestration ends -- natural finish, turn\n // cap, error, or the client abandoning the stream -- so the pump stops and\n // the request stream isn't held open.\n reader.close();\n }\n}\nimport { getModelEntry } from '../../bare/registry/model-registry.js';\nimport { getRPC } from '../../bare/delegate-rpc-client.js';\nimport { stream } from '../delegate-transport.js';\nimport { ModelIsDelegatedError } from '../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../logging/index.js';\nconst logger = getServerLogger();\nexport async function* handleCompletionStreamDelegated(request, options) {\n const { profilingMeta } = options ?? {};\n // Get delegation info from model registry\n const entry = getModelEntry(request.modelId);\n if (!entry?.isDelegated) {\n throw new ModelIsDelegatedError(request.modelId);\n }\n const { providerPublicKey, timeout, healthCheckTimeout } = entry.delegated;\n try {\n logger.debug(`📤 Sending delegated completionStream request to provider: ${providerPublicKey}${timeout ? `, timeout: ${timeout}ms` : ''}`);\n const rpc = await getRPC(providerPublicKey, { timeout, healthCheckTimeout });\n // Build delegate options with profiling metadata\n const delegateOpts = { peerKey: providerPublicKey };\n if (profilingMeta) {\n delegateOpts.profilingMeta = profilingMeta;\n }\n if (timeout) {\n delegateOpts.timeout = timeout;\n }\n // Use the regular stream function with the HyperSwarm RPC instance\n const responseStream = stream(request, rpc, delegateOpts);\n // Yield each response from the stream\n for await (const response of responseStream) {\n yield response;\n }\n }\n catch (error) {\n logger.error('Error in delegated completion stream:', error);\n const message = error instanceof Error ? error.message : String(error);\n yield {\n type: 'completionStream',\n done: true,\n events: [\n {\n type: 'completionDone',\n seq: 0,\n stopReason: 'error',\n error: {\n message: `Error communicating with provider: ${message}`\n }\n }\n ]\n };\n }\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleCompletionStream(request) {\n yield* dispatchPluginStream(request.modelId, 'completionStream', request);\n}\nimport { deleteKvCacheState } from '../../bare/plugins/llamacpp-completion/ops/kv-cache-session.js';\nimport { getServerLogger } from '../../../logging/index.js';\nconst logger = getServerLogger();\n/**\n * RPC handler for `deleteCache(...)`. The three KV-cache bookkeeping\n * layers (on-disk `.bin`, `initializedCaches`, `cachedMessageCounts`)\n * are private to `kv-cache-session.ts`; this handler delegates to that\n * module's single administrative entry point (`deleteKvCacheState`).\n * The handler must have **zero** direct references to\n * `fsPromises.unlink`, the `initializedCaches` set, or the\n * `cachedMessageCounts` map.\n */\nexport async function handleDeleteCache(request) {\n try {\n if ('all' in request && request.all) {\n await deleteKvCacheState({ all: true });\n }\n else if ('kvCacheKey' in request) {\n await deleteKvCacheState({\n kvCacheKey: request.kvCacheKey,\n ...(request.modelId !== undefined && { modelId: request.modelId })\n });\n }\n return {\n type: 'deleteCache',\n success: true\n };\n }\n catch (error) {\n logger.error('Error deleting cache:', error);\n return {\n type: 'deleteCache',\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleDiffusionStream(request) {\n yield* dispatchPluginStream(request.modelId, 'diffusionStream', request);\n}\nvar __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n};\nvar __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {\n return function (env) {\n function fail(e) {\n env.error = env.hasError ? new SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n };\n})(typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n});\nimport { PROFILING_KEY, OPERATION_EVENT_KEY } from '../../../schemas/index.js';\nimport { resolveModelPath, resolveModelPathWithStats } from './load-model/resolve.js';\nimport { buildDownloadProfilingFields } from './load-model/types.js';\nimport { nowMs, generateProfileId } from '../../../profiling/clock.js';\nimport { getServerLogger } from '../../../logging/index.js';\nimport { getRequestRegistry, withRequestContext } from '../../bare/runtime/index.js';\nimport { generateServerRequestId } from '../../bare/runtime/request-id.js';\nimport { InferenceCancelledError } from '../../../utils/errors-server.js';\nconst logger = getServerLogger();\nexport async function handleDownloadAsset(request, progressCallback) {\n const env_1 = { stack: [], error: void 0, hasError: false };\n try {\n const { assetSrc, seed } = request;\n const profilingMeta = request[PROFILING_KEY];\n const profilingEnabled = profilingMeta?.enabled !== false && !!profilingMeta;\n const requestId = request.requestId ?? generateServerRequestId();\n // `downloadAsset` is artifact-shaped, not model-shaped — there is no\n // `modelId` to register on the registry entry. Cancel by `requestId`\n // is the primary path; `cancel({ modelId })` is intentionally a\n // non-match for this kind.\n const ctx = __addDisposableResource(env_1, await getRequestRegistry().begin({\n requestId,\n kind: 'downloadAsset'\n }), true);\n const log = withRequestContext(getServerLogger(), ctx);\n log.debug(`downloadAsset start assetSrc=${assetSrc}`);\n const hooks = {\n requestBinding: {\n signal: ctx.signal,\n scope: ctx.scope,\n requestId\n }\n };\n try {\n const totalDownloadStart = profilingEnabled ? nowMs() : 0;\n let sourceType;\n let downloadStats;\n if (profilingEnabled) {\n const result = await resolveModelPathWithStats(assetSrc, progressCallback, seed, ctx.signal, hooks);\n sourceType = result.sourceType;\n downloadStats = result.downloadStats;\n }\n else {\n await resolveModelPath(assetSrc, progressCallback, seed, ctx.signal, hooks);\n }\n const response = {\n type: 'downloadAsset',\n success: true,\n assetId: assetSrc\n };\n if (profilingEnabled) {\n const totalDownloadTimeMs = nowMs() - totalDownloadStart;\n const profileId = profilingMeta?.id ?? generateProfileId();\n const { gauges, tags } = buildDownloadProfilingFields(downloadStats, sourceType);\n gauges['totalDownloadTime'] = totalDownloadTimeMs;\n const operationEvent = {\n op: 'downloadAsset',\n kind: 'handler',\n ms: totalDownloadTimeMs,\n profileId,\n gauges: Object.keys(gauges).length > 0 ? gauges : undefined,\n tags: Object.keys(tags).length > 0 ? tags : undefined\n };\n response[OPERATION_EVENT_KEY] = operationEvent;\n }\n return response;\n }\n catch (error) {\n // Mirror the load-model handler's cancel contract: a typed cancel\n // bubbles up as the rejection so client-side callers can branch on\n // `instanceof InferenceCancelledError`. Every other error keeps\n // the legacy `success: false` envelope.\n if (error instanceof InferenceCancelledError) {\n log.info(`downloadAsset cancelled requestId=${requestId}`);\n throw error;\n }\n logger.error('Error downloading asset:', error);\n return {\n type: 'downloadAsset',\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n catch (e_1) {\n env_1.error = e_1;\n env_1.hasError = true;\n }\n finally {\n const result_1 = __disposeResources(env_1);\n if (result_1)\n await result_1;\n }\n}\nimport { dispatchPluginReply } from './plugin-dispatch.js';\nexport async function handleEmbed(request) {\n return dispatchPluginReply(request.modelId, 'embed', request);\n}\nimport { dispatchPluginReply } from './plugin-dispatch.js';\nimport { startFinetune } from '../../bare/plugins/llamacpp-completion/ops/finetune.js';\nexport async function handleFinetune(request, progressCallback) {\n if (progressCallback &&\n (request.operation === 'start' ||\n request.operation === 'resume' ||\n request.operation === undefined)) {\n return startFinetune(request, (progress) => {\n const update = {\n type: 'finetune:progress',\n modelId: request.modelId,\n ...progress\n };\n progressCallback(update);\n });\n }\n return dispatchPluginReply(request.modelId, 'finetune', request);\n}\nimport { getModelEntry } from '../../bare/registry/model-registry.js';\nimport { getPlugin } from '../../plugins/registry.js';\nimport { detectToolDialectFromName } from '../../utils/tools/index.js';\nimport { ModelNotFoundError } from '../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../logging/index.js';\nconst logger = getServerLogger();\nexport function handleGetLoadedModelInfo(request) {\n const { modelId } = request;\n const entry = getModelEntry(modelId);\n if (!entry) {\n throw new ModelNotFoundError(modelId);\n }\n if (entry.isDelegated) {\n const info = {\n modelId: entry.id,\n isDelegated: true,\n handlers: [],\n providerInfo: {\n providerPublicKey: entry.delegated.providerPublicKey\n }\n };\n return { type: 'getLoadedModelInfo', info };\n }\n const plugin = getPlugin(entry.local.modelType);\n if (!plugin) {\n logger.warn(`getLoadedModelInfo: no plugin registered for modelType \"${entry.local.modelType}\" on loaded model \"${modelId}\"`);\n }\n const handlers = plugin ? Object.keys(plugin.handlers) : [];\n const info = {\n modelId: entry.id,\n isDelegated: false,\n modelType: entry.local.modelType,\n handlers,\n loadedAt: entry.local.loadedAt,\n ...(plugin && { displayName: plugin.displayName }),\n ...(plugin && { addonPackage: plugin.addonPackage }),\n ...(entry.local.name && { name: entry.local.name }),\n ...(entry.local.path && { path: entry.local.path }),\n // Same detection the completion normalizer uses, so callers see the dialect it parses.\n ...(handlers.includes('completionStream') && {\n toolDialect: detectToolDialectFromName(entry.local.name, entry.local.path)\n })\n };\n return { type: 'getLoadedModelInfo', info };\n}\nimport { models } from '../../../models/registry/models.js';\nimport { getAllModelIds, getModelEntry } from '../../bare/registry/model-registry.js';\nimport { generateShortHash } from '../../utils/index.js';\nimport { promises as fsPromises } from 'bare-fs';\nimport { getShardPath, getModelsCacheDir, getSingleFileCachePath } from '../../utils/cache/paths.js';\nimport { validateAndJoinPath } from '../../utils/path-security.js';\nimport { ModelNotFoundError } from '../../../utils/errors-server.js';\nexport async function handleGetModelInfo(request) {\n const { name } = request;\n const catalogEntry = models.find((m) => m.name === name);\n if (!catalogEntry) {\n throw new ModelNotFoundError(`${name}\" not found in catalog. Use model names from the catalog (e.g., \"WHISPER_TINY\", \"EMBEDDINGGEMMA_300M_Q4_0\")`);\n }\n const cacheKey = generateShortHash(catalogEntry.registryPath);\n const cacheStatus = catalogEntry.shardMetadata && catalogEntry.shardMetadata.length > 0\n ? await handleShardedModel(cacheKey, catalogEntry.shardMetadata)\n : catalogEntry.companionSet\n ? await handleCompanionSetModel(catalogEntry.companionSet, catalogEntry.registryPath, catalogEntry.addon)\n : await handleSingleFileModel(catalogEntry.registryPath, catalogEntry.expectedSize, catalogEntry.sha256Checksum);\n const { cacheFiles, isCached, actualSize, cachedAt, primaryPath } = cacheStatus;\n const loadedModelIds = getAllModelIds();\n const matchPath = primaryPath ?? cacheFiles[0]?.path;\n const loadedInstances = [];\n for (const id of loadedModelIds) {\n const entry = getModelEntry(id);\n if (!entry || entry.isDelegated)\n continue;\n const matchesByName = entry.local.name && entry.local.name === name;\n const matchesByPath = !!matchPath && entry.local.path === matchPath;\n if (matchesByName || matchesByPath) {\n const instance = {\n registryId: id,\n loadedAt: entry.local.loadedAt,\n config: entry.local.config\n };\n loadedInstances.push(instance);\n }\n }\n const isLoaded = loadedInstances.length > 0;\n const modelInfo = {\n name: catalogEntry.name,\n modelId: catalogEntry.modelId,\n registryPath: catalogEntry.registryPath,\n registrySource: catalogEntry.registrySource,\n blobCoreKey: catalogEntry.blobCoreKey,\n blobBlockOffset: catalogEntry.blobBlockOffset,\n blobBlockLength: catalogEntry.blobBlockLength,\n blobByteOffset: catalogEntry.blobByteOffset,\n engine: catalogEntry.engine,\n quantization: catalogEntry.quantization,\n params: catalogEntry.params,\n expectedSize: catalogEntry.expectedSize,\n sha256Checksum: catalogEntry.sha256Checksum,\n addon: catalogEntry.addon,\n isCached,\n isLoaded,\n cacheFiles,\n actualSize,\n cachedAt,\n loadedInstances: loadedInstances.length > 0 ? loadedInstances : undefined\n };\n return {\n type: 'getModelInfo',\n modelInfo\n };\n}\nasync function handleShardedModel(cacheKey, shardMetadata) {\n const fileEntries = shardMetadata.map((s) => ({\n filename: s.filename,\n expectedSize: s.expectedSize,\n sha256Checksum: s.sha256Checksum\n }));\n const paths = shardMetadata.map((s) => getShardPath(cacheKey, s.filename));\n return checkCacheStatus(fileEntries, paths);\n}\nasync function handleCompanionSetModel(companionSet, primaryRegistryPath, addon) {\n const { setKey, primaryKey, files } = companionSet;\n const baseCache = getModelsCacheDir();\n const fileEntries = files.map((f) => ({\n filename: f.targetName,\n expectedSize: f.expectedSize,\n sha256Checksum: f.sha256Checksum,\n key: f.key\n }));\n const canonicalPaths = files.map((f) => validateAndJoinPath(baseCache, 'sets', setKey, f.targetName));\n const canonicalResult = await checkCacheStatus(fileEntries, canonicalPaths, primaryKey);\n if (canonicalResult.isCached)\n return canonicalResult;\n const isOnnxSet = files.some((f) => f.primary === true && f.targetName.endsWith('.onnx'));\n if (isOnnxSet) {\n const legacyCacheKey = generateShortHash(primaryRegistryPath);\n const legacyPaths = files.map((f) => validateAndJoinPath(baseCache, 'onnx', legacyCacheKey, f.targetName));\n const legacyResult = await checkCacheStatus(fileEntries, legacyPaths, primaryKey);\n if (legacyResult.isCached)\n return legacyResult;\n }\n else if (addon === 'nmt') {\n // Legacy flat-cache compatibility for Bergamot-style companion sets.\n // This is valid only for families whose runtime still works with explicit\n // per-file absolute paths; it is not a generic rule for all companion sets.\n const flatPaths = files.map((f) => getSingleFileCachePath(f.registryPath));\n const flatResult = await checkCacheStatus(fileEntries, flatPaths, primaryKey);\n if (flatResult.isCached)\n return flatResult;\n }\n return canonicalResult;\n}\nasync function checkCacheStatus(files, paths, primaryKey) {\n const cacheFiles = [];\n let allCached = true;\n let totalActualSize = 0;\n let latestCachedAt;\n let primaryPath;\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n const filePath = paths[i];\n let fileCached = false;\n let fileActualSize;\n let fileCachedAt;\n try {\n const stats = await fsPromises.stat(filePath);\n if (stats.isFile()) {\n fileActualSize = stats.size;\n fileCachedAt = stats.mtime;\n fileCached = stats.size === file.expectedSize;\n }\n }\n catch {\n // file does not exist\n }\n if (primaryKey && file.key === primaryKey) {\n primaryPath = filePath;\n }\n if (fileCached) {\n totalActualSize += fileActualSize;\n if (!latestCachedAt || fileCachedAt > latestCachedAt) {\n latestCachedAt = fileCachedAt;\n }\n }\n else {\n allCached = false;\n }\n cacheFiles.push({\n filename: file.filename,\n path: filePath,\n expectedSize: file.expectedSize,\n sha256Checksum: file.sha256Checksum,\n isCached: fileCached,\n actualSize: fileActualSize,\n cachedAt: fileCachedAt\n });\n }\n if (!primaryPath && cacheFiles.length > 0) {\n primaryPath = cacheFiles[0].path;\n }\n const result = {\n cacheFiles,\n isCached: allCached,\n primaryPath\n };\n if (allCached) {\n result.actualSize = totalActualSize;\n if (latestCachedAt) {\n result.cachedAt = latestCachedAt;\n }\n }\n return result;\n}\nasync function handleSingleFileModel(registryPath, expectedSize, sha256Checksum) {\n const filename = registryPath.split('/').pop() || registryPath;\n const filePath = getSingleFileCachePath(registryPath);\n return checkCacheStatus([{ filename, expectedSize, sha256Checksum }], [filePath]);\n}\nimport { getServerLogger } from '../../../logging/index.js';\nimport { getRPC } from '../../bare/delegate-rpc-client.js';\nimport { send } from '../delegate-transport.js';\nimport { DelegateConnectionFailedError } from '../../../utils/errors-server.js';\nconst logger = getServerLogger();\nexport async function handleHeartbeatDelegated(request, options) {\n const { delegate } = request;\n if (!delegate) {\n throw new DelegateConnectionFailedError('Delegated heartbeat handler called without delegate info');\n }\n const { providerPublicKey, timeout } = delegate;\n try {\n const rpc = await getRPC(providerPublicKey, { timeout });\n const delegateOpts = {\n peerKey: providerPublicKey\n };\n if (timeout !== undefined) {\n delegateOpts.timeout = timeout;\n }\n if (options?.profilingMeta) {\n delegateOpts.profilingMeta = options.profilingMeta;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { delegate: _delegate, ...providerRequest } = request;\n const response = await send(providerRequest, rpc, delegateOpts);\n return response;\n }\n catch (error) {\n logger.error('Error during delegated heartbeat:', error);\n throw error;\n }\n}\nexport function handleHeartbeat() {\n return { type: 'heartbeat', number: Math.random() * 100 };\n}\nimport { DELEGATION_BREAKDOWN_KEY, OPERATION_EVENT_KEY, modelInputToSrcSchema } from '../../../schemas/index.js';\nimport { registerModel, isModelLoaded, unregisterModel } from '../../bare/registry/model-registry.js';\nimport { send, stream } from '../delegate-transport.js';\nimport { getRPC } from '../../bare/delegate-rpc-client.js';\nimport { handleLoadModel } from './load-model/index.js';\nimport { ModelLoadFailedError, DelegateNoFinalResponseError } from '../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../logging/index.js';\nconst logger = getServerLogger();\nexport async function handleLoadModelDelegated(request, options) {\n const { progressCallback, profilingMeta } = options ?? {};\n if (!request.delegate) {\n throw new ModelLoadFailedError('Delegate information is required for delegated load model');\n }\n const { delegate } = request;\n const { providerPublicKey, timeout, healthCheckTimeout, fallbackToLocal, forceNewConnection } = delegate;\n try {\n logger.info(`📤 Sending delegated loadModel request to provider: ${providerPublicKey}${timeout ? `, timeout: ${timeout}ms` : ''}${forceNewConnection ? ' (forcing new connection)' : ''}`);\n const rpc = await getRPC(providerPublicKey, {\n timeout,\n healthCheckTimeout,\n forceNewConnection\n });\n // Strip out the delegate field to avoid infinite delegation\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { delegate: _, ...providerRequest } = request;\n let finalResponse;\n let delegationBreakdown;\n let operationEvent;\n // Build delegate options with profiling metadata\n const delegateOpts = { peerKey: providerPublicKey };\n if (profilingMeta) {\n delegateOpts.profilingMeta = profilingMeta;\n }\n if (timeout) {\n delegateOpts.timeout = timeout;\n }\n if (request.withProgress) {\n // Use streaming for progress updates\n logger.debug('📊 Using streaming mode for loadModel with progress');\n const responseStream = stream(providerRequest, rpc, delegateOpts);\n for await (const response of responseStream) {\n if (response.type === 'modelProgress') {\n // Forward progress updates to the client\n if (progressCallback) {\n progressCallback(response);\n }\n }\n else if (response.type === 'loadModel') {\n finalResponse = response;\n operationEvent = response[OPERATION_EVENT_KEY];\n break;\n }\n }\n if (!finalResponse) {\n throw new DelegateNoFinalResponseError();\n }\n }\n else {\n // Use simple send for non-progress requests\n logger.debug('📤 Using simple send mode for loadModel');\n const providerResponse = await send(providerRequest, rpc, delegateOpts);\n finalResponse = providerResponse;\n const typedResponse = providerResponse;\n delegationBreakdown = typedResponse[DELEGATION_BREAKDOWN_KEY];\n operationEvent = typedResponse[OPERATION_EVENT_KEY];\n }\n if (!finalResponse || !finalResponse.success) {\n logger.error('Provider failed to load model:', finalResponse?.error);\n return {\n type: 'loadModel',\n success: false,\n error: `Provider failed to load model: ${finalResponse?.error || 'Unknown error'}`\n };\n }\n const modelId = finalResponse.modelId ||\n modelInputToSrcSchema.parse(request.modelSrc) ||\n `delegated-${Date.now()}`;\n const delegateOptions = {\n providerPublicKey\n };\n if (timeout !== undefined) {\n delegateOptions.timeout = timeout;\n }\n if (healthCheckTimeout !== undefined) {\n delegateOptions.healthCheckTimeout = healthCheckTimeout;\n }\n if (isModelLoaded(modelId)) {\n logger.info(`Delegated model ${modelId} is already registered, replacing with new provider: ${providerPublicKey}`);\n unregisterModel(modelId);\n }\n registerModel(modelId, delegateOptions);\n logger.info(`✅ Delegated model registered: ${modelId} -> provider: ${providerPublicKey}`);\n const result = {\n type: 'loadModel',\n success: true,\n modelId\n };\n if (delegationBreakdown) {\n ;\n result[DELEGATION_BREAKDOWN_KEY] = delegationBreakdown;\n }\n if (operationEvent) {\n ;\n result[OPERATION_EVENT_KEY] = operationEvent;\n }\n return result;\n }\n catch (error) {\n logger.error('Error in delegated load model:', error);\n if (fallbackToLocal) {\n logger.info('🔄 Fallback to local model loading enabled, attempting local load...');\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { delegate: _, ...localRequest } = request;\n return await handleLoadModel(localRequest, progressCallback);\n }\n catch (localError) {\n logger.error('❌ Local fallback also failed:', localError);\n return {\n type: 'loadModel',\n success: false,\n error: `Both delegated and local loading failed. Delegated error: ${error instanceof Error ? error.message : String(error)}. Local error: ${localError instanceof Error ? localError.message : String(localError)}`\n };\n }\n }\n return {\n type: 'loadModel',\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n}\nimport { AbortController } from 'bare-abort-controller';\nimport { DownloadCancelledError, InferenceCancelledError } from '../../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nimport { getRequestRegistry } from '../../../bare/runtime/index.js';\nconst logger = getServerLogger();\nconst activeTransfers = new Map();\nlet nextSubscriberId = 0;\nfunction createSubscriber(onProgress, requestId) {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return {\n id: String(nextSubscriberId++),\n onProgress,\n settled: false,\n resolve,\n reject,\n promise,\n requestId\n };\n}\nfunction settleSubscriber(subscriber, result) {\n if (subscriber.settled)\n return;\n subscriber.settled = true;\n if (result instanceof Error) {\n subscriber.reject(result);\n }\n else {\n subscriber.resolve(result);\n }\n}\nfunction deliverProgress(transfer, subscriber, progress) {\n if (subscriber.settled || !subscriber.onProgress)\n return;\n try {\n subscriber.onProgress(progress);\n }\n catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n logger.warn('Progress callback threw; detaching subscriber', {\n downloadKey: transfer.downloadKey,\n subscriberId: subscriber.id,\n error\n });\n settleSubscriber(subscriber, error);\n removeSubscriber(transfer, subscriber.id);\n }\n}\nfunction broadcastTransferProgress(transfer, progress) {\n transfer.lastProgress = progress;\n for (const sub of Array.from(transfer.subscribers.values())) {\n deliverProgress(transfer, sub, progress);\n }\n}\n/**\n * Idempotent: remove the subscriber from the transfer's roster and tear\n * the transfer down iff no subscribers remain. Wired from two places per\n * subscriber:\n *\n * - the `request.signal.addEventListener(\"abort\", ...)` listener that\n * fires when `registry.cancel({ requestId })` aborts the request's\n * context — this is the \"user clicked Stop\" cancel path;\n * - `request.scope.defer(...)` which runs at request scope unwind —\n * the safety net catching every other unwind path (handler returns,\n * handler throws for a non-cancel reason, awaited promise settled\n * and the `await using` falls out of scope on the success path).\n *\n * Both ends call this helper so an already-cleaned-up subscriber is a\n * no-op the second time around.\n */\nfunction removeSubscriber(transfer, subscriberId) {\n if (!transfer.subscribers.has(subscriberId))\n return;\n transfer.subscribers.delete(subscriberId);\n maybeCancelTransfer(transfer);\n}\n/**\n * Last-subscriber rule: when every caller has detached (cancel or\n * progress-callback throw), abort the shared transfer so the underlying\n * HTTP / hyperdrive download tears down. Until then the transfer keeps\n * running for the remaining subscribers — the content-addressed dedup\n * semantics callers rely on.\n */\nfunction maybeCancelTransfer(transfer) {\n if (transfer.subscribers.size > 0)\n return;\n if (transfer.abortController.signal.aborted)\n return;\n logger.debug(`[download-manager] last subscriber left, aborting transfer ${transfer.downloadKey}`);\n transfer.abortController.abort();\n}\nfunction attachRequestBinding(transfer, subscriber, request) {\n const onAbort = () => {\n if (!subscriber.settled) {\n settleSubscriber(subscriber, new InferenceCancelledError(request.requestId));\n }\n removeSubscriber(transfer, subscriber.id);\n };\n if (request.signal.aborted) {\n onAbort();\n return;\n }\n request.signal.addEventListener('abort', onAbort, { once: true });\n // Safety net: scope unwind on any handler exit path triggers the same\n // cleanup. If the abort listener already ran it's a no-op. Cleaning\n // up the abort listener here keeps the parent signal from carrying a\n // dangling reference into the next request.\n request.scope.defer(() => {\n request.signal.removeEventListener('abort', onAbort);\n if (!subscriber.settled) {\n settleSubscriber(subscriber, new InferenceCancelledError(request.requestId));\n }\n removeSubscriber(transfer, subscriber.id);\n });\n}\nexport function startOrJoinDownload(downloadKey, startDownload, onProgress, request) {\n const existing = activeTransfers.get(downloadKey);\n if (existing && !existing.abortController.signal.aborted) {\n logger.info(`📥 Reusing existing download for: ${downloadKey}`);\n const subscriber = createSubscriber(onProgress, request?.requestId);\n existing.subscribers.set(subscriber.id, subscriber);\n if (request) {\n attachRequestBinding(existing, subscriber, request);\n }\n if (existing.lastProgress) {\n deliverProgress(existing, subscriber, existing.lastProgress);\n }\n return {\n promise: subscriber.promise,\n joined: true,\n getCacheHit: () => existing.cacheHit\n };\n }\n const abortController = new AbortController();\n const transfer = {\n downloadKey,\n abortController,\n subscribers: new Map(),\n clearCache: false\n };\n const initialSubscriber = createSubscriber(onProgress, request?.requestId);\n transfer.subscribers.set(initialSubscriber.id, initialSubscriber);\n activeTransfers.set(downloadKey, transfer);\n if (request) {\n attachRequestBinding(transfer, initialSubscriber, request);\n }\n const downloadPromise = startDownload({\n broadcastProgress: (progress) => {\n broadcastTransferProgress(transfer, progress);\n },\n signal: abortController.signal,\n shouldClearCache: () => transfer.clearCache,\n setCacheHit: (cacheHit) => {\n transfer.cacheHit = cacheHit;\n }\n });\n transfer.downloadPromise = downloadPromise;\n downloadPromise\n .then((path) => {\n for (const sub of transfer.subscribers.values()) {\n settleSubscriber(sub, path);\n }\n }, (error) => {\n const rejection = error instanceof Error ? error : new Error(String(error));\n for (const sub of transfer.subscribers.values()) {\n settleSubscriber(sub, rejection);\n }\n })\n .finally(() => {\n if (activeTransfers.get(downloadKey) === transfer) {\n activeTransfers.delete(downloadKey);\n }\n });\n return {\n promise: initialSubscriber.promise,\n joined: false,\n getCacheHit: () => transfer.cacheHit\n };\n}\n/**\n * Legacy cancel entry point. Callers (`cancelHandler`'s deprecated\n * `case \"downloadAsset\"` arm, the shutdown sweep, intra-resolve\n * cleanup) call this with a `downloadKey`. The single source of cancel\n * routing is the request registry, so this function resolves each\n * subscriber's request via `registry.cancel({ requestId })`.\n *\n * Subscribers without a `requestId` (legacy callers that didn't pass a\n * registry binding) are settled directly with `DownloadCancelledError`\n * so we don't leak the transfer if a legacy code path holds the only\n * reference.\n */\n/**\n * Set `clearCache=true` on the transfer that owns the subscriber bound\n * to `requestId`, so when the registry's targeted cancel removes that\n * subscriber and we reach last-subscriber teardown, the partial\n * download file is deleted instead of preserved for automatic resume.\n *\n * Lookup is O(transfers * subscribers); transfers are short-lived and\n * subscriber counts per transfer are tiny in practice, so this is\n * fine. Returns `true` if a matching subscriber was found, `false`\n * otherwise — the cancel handler treats both cases identically (the\n * registry cancel still fires) and the return value is informational.\n *\n * Added in 0.11.0 to support `cancel({ requestId, clearCache: true })`\n * for download requests after the wire schema collapse removed the\n * `{ operation: \"downloadAsset\", downloadKey, clearCache }` arm. The\n * subscriber is the unit of `clearCache` even though the flag lives on\n * the shared transfer: if any subscriber on the transfer asks for\n * clearCache, the partial file is deleted when the last subscriber\n * leaves, matching the pre-collapse behaviour.\n */\nexport function markClearCacheForRequest(requestId) {\n for (const transfer of activeTransfers.values()) {\n for (const sub of transfer.subscribers.values()) {\n if (sub.requestId === requestId) {\n transfer.clearCache = true;\n return true;\n }\n }\n }\n return false;\n}\nexport function cancelTransfer(downloadKey, clearCache = false) {\n const transfer = activeTransfers.get(downloadKey);\n if (!transfer)\n return;\n transfer.clearCache = clearCache;\n const registry = getRequestRegistry();\n const orphanSubs = [];\n for (const sub of Array.from(transfer.subscribers.values())) {\n if (sub.requestId !== undefined) {\n registry.cancel({\n requestId: sub.requestId,\n reason: 'download-transfer-cancel'\n });\n }\n else {\n orphanSubs.push(sub);\n }\n }\n if (orphanSubs.length === 0) {\n return;\n }\n // Legacy subscribers (no registry binding): settle each with\n // `DownloadCancelledError` and route removal through the\n // `removeSubscriber` helper so the last-subscriber teardown rule is\n // enforced in one place. Registry-bound subscribers are handled by\n // their `attachRequestBinding` listener triggered above.\n for (const sub of orphanSubs) {\n settleSubscriber(sub, new DownloadCancelledError());\n removeSubscriber(transfer, sub.id);\n }\n}\nexport function createHyperdriveDownloadKey(hyperdriveKey, modelFileName) {\n return `${hyperdriveKey}:${modelFileName}`;\n}\nexport function createHttpDownloadKey(url) {\n return `http:${url}`;\n}\nexport function createRegistryDownloadKey(registrySource, registryPath) {\n return `registry:${registrySource}:${registryPath}`;\n}\nexport function applyJoinedDownloadStats(result, hooks) {\n if (!result.joined)\n return result.promise;\n return result.promise.then((path) => {\n const cacheHit = result.getCacheHit();\n if (cacheHit === true) {\n hooks?.markCacheHit?.();\n }\n else if (cacheHit === false) {\n hooks?.markCacheMiss?.();\n hooks?.markSharedTransfer?.();\n }\n else {\n hooks?.markSharedTransfer?.();\n }\n return path;\n });\n}\nexport function cancelAllDownloads() {\n logger.info(`🧹 Cancelling ${activeTransfers.size} active downloads`);\n for (const key of Array.from(activeTransfers.keys())) {\n cancelTransfer(key);\n }\n}\nlet isCleaningUp = false;\nexport async function cleanupDownloads() {\n if (isCleaningUp)\n return;\n isCleaningUp = true;\n try {\n const downloadPromises = Array.from(activeTransfers.values())\n .filter((t) => t.downloadPromise !== undefined)\n .map((t) => t.downloadPromise.catch(() => { }));\n cancelAllDownloads();\n if (downloadPromises.length > 0) {\n await Promise.allSettled(downloadPromises);\n }\n }\n catch (error) {\n logger.error('❌ Error during download cleanup:', error);\n }\n}\nimport { downloadModelFromHttp } from './http.js';\nimport { downloadModelFromRegistry } from './registry.js';\nimport { downloadModelFromHyperdrive } from './hyperdrive.js';\nimport { nowMs } from '../../../../profiling/index.js';\nfunction createStatsCollector() {\n return {\n maxBytesDownloaded: 0,\n startTimeMs: nowMs(),\n cacheHit: undefined,\n sharedTransfer: false,\n checksumValidationTimeMsTotal: 0\n };\n}\nfunction createStatsHooks(collector) {\n return {\n markCacheHit: () => {\n if (collector.cacheHit === undefined) {\n collector.cacheHit = true;\n collector.maxBytesDownloaded = 0;\n }\n },\n markCacheMiss: () => {\n collector.cacheHit = false;\n },\n markSharedTransfer: () => {\n collector.sharedTransfer = true;\n },\n addChecksumValidationTimeMs: (durationMs) => {\n collector.checksumValidationTimeMsTotal += durationMs;\n }\n };\n}\nfunction wrapProgressCallback(collector, originalCallback) {\n return (progress) => {\n // Don't track bytes for cache hits (they're not real network transfer)\n if (collector.cacheHit !== true) {\n const downloaded = progress.fileSetInfo?.overallDownloaded ??\n progress.shardInfo?.overallDownloaded ??\n progress.downloaded ??\n 0;\n collector.maxBytesDownloaded = Math.max(collector.maxBytesDownloaded, downloaded);\n }\n originalCallback?.(progress);\n };\n}\nfunction computeStats(collector) {\n const downloadTimeMs = nowMs() - collector.startTimeMs;\n const totalBytesDownloaded = collector.maxBytesDownloaded;\n const stats = {};\n if (collector.sharedTransfer) {\n stats.sharedTransfer = true;\n }\n if (collector.cacheHit !== undefined) {\n stats.cacheHit = collector.cacheHit;\n }\n if (collector.checksumValidationTimeMsTotal > 0) {\n stats.checksumValidationTimeMs = collector.checksumValidationTimeMsTotal;\n }\n if (collector.cacheHit === true) {\n return Object.keys(stats).length > 0 ? stats : undefined;\n }\n if (collector.sharedTransfer) {\n if (downloadTimeMs > 0) {\n stats.downloadTimeMs = downloadTimeMs;\n }\n return Object.keys(stats).length > 0 ? stats : undefined;\n }\n if (totalBytesDownloaded > 0) {\n stats.downloadTimeMs = downloadTimeMs;\n stats.totalBytesDownloaded = totalBytesDownloaded;\n if (downloadTimeMs > 0) {\n stats.downloadSpeedBps = (totalBytesDownloaded * 1000) / downloadTimeMs;\n }\n }\n return Object.keys(stats).length > 0 ? stats : undefined;\n}\nexport async function downloadModelFromHttpWithStats(url, progressCallback, downloadHooks) {\n const collector = createStatsCollector();\n const hooks = { ...downloadHooks, ...createStatsHooks(collector) };\n const wrappedCallback = wrapProgressCallback(collector, progressCallback);\n const path = await downloadModelFromHttp(url, wrappedCallback, hooks);\n const stats = computeStats(collector);\n return stats ? { path, stats } : { path };\n}\nexport async function downloadModelFromRegistryWithStats(registryPath, registrySource, progressCallback, expectedChecksum, downloadHooks, explicitMetadata) {\n const collector = createStatsCollector();\n const hooks = { ...downloadHooks, ...createStatsHooks(collector) };\n const wrappedCallback = wrapProgressCallback(collector, progressCallback);\n const path = await downloadModelFromRegistry(registryPath, registrySource, wrappedCallback, expectedChecksum, hooks, explicitMetadata);\n const stats = computeStats(collector);\n return stats ? { path, stats } : { path };\n}\nexport async function downloadModelFromHyperdriveWithStats(hyperdriveKey, modelFileName, seed, progressCallback, downloadHooks) {\n const collector = createStatsCollector();\n const hooks = { ...downloadHooks, ...createStatsHooks(collector) };\n const wrappedCallback = wrapProgressCallback(collector, progressCallback);\n const path = await downloadModelFromHyperdrive(hyperdriveKey, modelFileName, seed, wrappedCallback, hooks);\n const stats = computeStats(collector);\n return stats ? { path, stats } : { path };\n}\nexport function mergeDownloadStats(results) {\n const stats = results\n .map((r) => r.downloadStats)\n .filter((s) => s !== undefined);\n if (stats.length === 0)\n return undefined;\n const downloadTimeMs = Math.max(...stats.map((s) => s.downloadTimeMs ?? 0));\n const totalBytesDownloaded = stats.reduce((sum, s) => sum + (s.totalBytesDownloaded ?? 0), 0);\n const checksumValidationTimeMs = stats.reduce((sum, s) => sum + (s.checksumValidationTimeMs ?? 0), 0);\n const cacheHitValues = stats.map((s) => s.cacheHit).filter((v) => v !== undefined);\n const merged = {};\n if (downloadTimeMs > 0)\n merged.downloadTimeMs = downloadTimeMs;\n if (totalBytesDownloaded > 0)\n merged.totalBytesDownloaded = totalBytesDownloaded;\n if (downloadTimeMs > 0 && totalBytesDownloaded > 0) {\n merged.downloadSpeedBps = (totalBytesDownloaded * 1000) / downloadTimeMs;\n }\n if (checksumValidationTimeMs > 0)\n merged.checksumValidationTimeMs = checksumValidationTimeMs;\n if (cacheHitValues.length > 0)\n merged.cacheHit = cacheHitValues.every(Boolean);\n if (stats.some((s) => s.sharedTransfer))\n merged.sharedTransfer = true;\n return Object.keys(merged).length > 0 ? merged : undefined;\n}\nvar __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n};\nvar __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {\n return function (env) {\n function fail(e) {\n env.error = env.hasError ? new SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n };\n})(typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n});\nimport { normalizeModelType, PROFILING_KEY, OPERATION_EVENT_KEY } from '../../../../schemas/index.js';\nimport { loadModel } from '../../../bare/ops/load-model.js';\nimport { createResolveSession } from './resolve-session.js';\nimport { nowMs, generateProfileId } from '../../../../profiling/clock.js';\nimport { getModelEntry, updateModelConfig } from '../../../bare/registry/model-registry.js';\nimport { generateShortHash, canonicalConfigString, transformConfigForReload } from '../../../utils/index.js';\nimport { buildDownloadProfilingFields } from './types.js';\nimport { ConfigReloadNotSupportedError, InferenceCancelledError, ModelTypeMismatchError, ModelIsDelegatedError, ModelNotFoundError, ModelLoadFailedError, PluginLoadConfigValidationFailedError, PluginNotFoundError } from '../../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nimport { formatZodError } from '../../../../utils/zod-error.js';\nimport { getPlugin } from '../../../plugins/index.js';\nimport { getRequestRegistry, withRequestContext } from '../../../bare/runtime/index.js';\nimport { generateServerRequestId } from '../../../bare/runtime/request-id.js';\nconst logger = getServerLogger();\n// ---------------------------------------------------------------------------\n// Handler\n// ---------------------------------------------------------------------------\nexport async function handleLoadModel(request, progressCallback) {\n const env_1 = { stack: [], error: void 0, hasError: false };\n try {\n if (isReloadConfigRequest(request)) {\n return handleConfigReload(request);\n }\n const { modelSrc, modelName, seed } = request;\n const canonicalModelType = normalizeModelType(request.modelType);\n const profilingMeta = request[PROFILING_KEY];\n const profilingEnabled = profilingMeta?.enabled !== false && !!profilingMeta;\n const requestId = request.requestId ?? generateServerRequestId();\n // The handler `modelId` is derived from the config hash below — it\n // isn't known until after `resolveConfig` runs. The registry context\n // is opened with `modelId: undefined` so a cancel-by-modelId fired\n // before the load completes is a clean no-op (rather than matching a\n // half-built entry). Cancel-by-`requestId` works from `begin(...)` on.\n const ctx = __addDisposableResource(env_1, await getRequestRegistry().begin({\n requestId,\n kind: 'loadModel'\n }), true);\n const log = withRequestContext(getServerLogger(), ctx);\n log.debug(`loadModel start modelSrc=${String(modelSrc ?? '')}`);\n try {\n const plugin = getPlugin(canonicalModelType);\n if (!plugin) {\n throw new PluginNotFoundError(canonicalModelType);\n }\n let resolvedModelConfig = request.modelConfig ?? {};\n const parseResult = plugin.loadConfigSchema.safeParse(resolvedModelConfig);\n if (!parseResult.success) {\n throw new PluginLoadConfigValidationFailedError(canonicalModelType, formatZodError(parseResult.error));\n }\n resolvedModelConfig = parseResult.data;\n const totalLoadStart = profilingEnabled ? nowMs() : 0;\n const session = createResolveSession({\n progressCallback,\n seed,\n profilingEnabled,\n signal: ctx.signal,\n requestBinding: {\n signal: ctx.signal,\n scope: ctx.scope,\n requestId\n }\n });\n const primaryResolve = session.resolvePrimaryModelPath(modelSrc);\n let resolvedModelPath;\n let pluginResolveResult;\n try {\n const pluginResolve = plugin.resolveConfig\n ? Promise.resolve().then(() => plugin.resolveConfig(resolvedModelConfig, session.createResolveContext(modelSrc, canonicalModelType, modelName)))\n : undefined;\n [resolvedModelPath, pluginResolveResult] = pluginResolve\n ? await Promise.all([primaryResolve, pluginResolve])\n : [await primaryResolve, undefined];\n }\n catch (error) {\n session.cancelAll();\n throw error;\n }\n // Phase boundary between download and load. The bare load path\n // (`plugin.createModel(...)` / `model.load(false)`) does not accept\n // an abort signal today, so the only honest cancel hook here is the\n // pre-load gate: if cancel arrived during download / resolveConfig,\n // surface `InferenceCancelledError` before sinking time into the\n // addon work.\n if (ctx.signal.aborted) {\n throw new InferenceCancelledError(requestId);\n }\n const configStr = canonicalConfigString(request.modelConfig);\n const modelHashInput = `${request.modelType}:${modelSrc}:${configStr}`;\n const modelId = generateShortHash(modelHashInput);\n let pluginArtifacts = {};\n if (pluginResolveResult) {\n resolvedModelConfig = pluginResolveResult.config;\n if (pluginResolveResult.artifacts) {\n pluginArtifacts = pluginResolveResult.artifacts;\n }\n }\n if ('modelPath' in pluginArtifacts) {\n throw new ModelLoadFailedError('Plugin returned reserved key \"modelPath\" in artifacts; primary model resolution is core-owned');\n }\n // An empty resolved path is legitimate when the plugin opts out of\n // primary-model-path validation (bundled weights). For every other\n // plugin, an empty path means resolution failed and we must abort.\n if (!resolvedModelPath && !plugin.skipPrimaryModelPathValidation) {\n throw new ModelLoadFailedError('modelPath resolution failed');\n }\n const loadResult = await loadModel({\n modelId,\n modelPath: resolvedModelPath,\n options: {\n ...request,\n modelType: canonicalModelType,\n modelConfig: resolvedModelConfig\n },\n artifacts: Object.keys(pluginArtifacts).length > 0 ? pluginArtifacts : undefined,\n modelName\n }, profilingEnabled ? { collectTiming: true } : undefined);\n // Load phase soft-cancel limitation: `plugin.createModel(...)` and\n // `model.load(false)` ran without a signal. A cancel that arrived\n // during the load phase has just landed in the registry but the\n // model is now loaded and registered. Surface\n // `InferenceCancelledError` so the caller's promise rejects\n // consistently — even though the model state is the \"loaded\"\n // post-condition. The orphan-model edge case is a known\n // limitation that requires a per-load cancel surface on the addon\n // to fix end-to-end.\n if (ctx.signal.aborted) {\n throw new InferenceCancelledError(requestId);\n }\n const response = {\n type: 'loadModel',\n success: true,\n modelId\n };\n if (profilingEnabled) {\n const totalLoadTimeMs = nowMs() - totalLoadStart;\n const profileId = profilingMeta?.id ?? generateProfileId();\n const resolveResult = session.getAggregateResult();\n const { gauges, tags } = buildDownloadProfilingFields(resolveResult?.downloadStats, resolveResult?.sourceType);\n gauges['totalLoadTime'] = totalLoadTimeMs;\n if (loadResult.timing?.modelInitializationTimeMs !== undefined) {\n gauges['modelInitializationTime'] = loadResult.timing.modelInitializationTimeMs;\n }\n if (canonicalModelType) {\n tags['modelType'] = canonicalModelType;\n }\n const operationEvent = {\n op: 'loadModel',\n kind: 'handler',\n ms: totalLoadTimeMs,\n profileId,\n gauges: Object.keys(gauges).length > 0 ? gauges : undefined,\n tags: Object.keys(tags).length > 0 ? tags : undefined\n };\n response[OPERATION_EVENT_KEY] = operationEvent;\n }\n return response;\n }\n catch (error) {\n // `InferenceCancelledError` rides the rejection path verbatim: the\n // client side wants a typed cancel error on the promise it `await`s,\n // not a `{ success: false, error }` envelope that surfaces as a\n // generic `ModelLoadFailedError`. Every other error keeps the\n // legacy `success: false` shape for backward compat with consumers\n // that switch on the envelope.\n if (error instanceof InferenceCancelledError) {\n log.info(`loadModel cancelled requestId=${requestId}`);\n throw error;\n }\n logger.error('Error loading model:', error);\n return {\n type: 'loadModel',\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n catch (e_1) {\n env_1.error = e_1;\n env_1.hasError = true;\n }\n finally {\n const result_1 = __disposeResources(env_1);\n if (result_1)\n await result_1;\n }\n}\nasync function handleConfigReload(request) {\n const { modelId, modelType, modelConfig } = request;\n try {\n const entry = getModelEntry(modelId);\n if (!entry) {\n throw new ModelNotFoundError(modelId);\n }\n if (entry.isDelegated) {\n throw new ModelIsDelegatedError(modelId);\n }\n const storedModelType = entry.local.modelType;\n const normalizedRequestType = normalizeModelType(modelType);\n if (storedModelType !== normalizedRequestType) {\n throw new ModelTypeMismatchError(storedModelType, normalizedRequestType);\n }\n const model = entry.local.model;\n const currentConfig = entry.local.config;\n if (typeof model.reload !== 'function') {\n throw new ConfigReloadNotSupportedError(modelId);\n }\n const mergedConfig = {\n ...currentConfig,\n ...modelConfig\n };\n const reloadConfig = transformConfigForReload(storedModelType, mergedConfig);\n await model.reload(reloadConfig);\n updateModelConfig(modelId, mergedConfig);\n return {\n type: 'loadModel',\n success: true,\n modelId\n };\n }\n catch (error) {\n logger.error('Error reloading config:', error);\n return {\n type: 'loadModel',\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n}\nfunction isReloadConfigRequest(request) {\n return 'modelId' in request && !('modelSrc' in request);\n}\nimport fs, { promises as fsPromises } from 'bare-fs';\nimport path from 'bare-path';\nimport { Readable } from 'bare-stream';\nimport fetch, { Headers } from 'bare-fetch';\nimport { AbortController } from 'bare-abort-controller';\nimport { withTimeout } from '../../../../utils/withTimeout.js';\nimport { getModelsCacheDir, getShardedModelCacheDir, generateShortHash, detectShardedModel, parsePatternBasedShardUrl, extractTensorsFromShards, calculatePercentage, isArchiveUrl, sanitizePathComponent, extractAndValidateShardedArchive, validateShardedModelCache, checkAllShardsExist, generateShardFilenames, hasValidGGUFHeader } from '../../../utils/index.js';\nimport { getSDKConfig } from '../../../bare/registry/config-registry.js';\nimport { getLifecycleState, onResume } from '../../../bare/runtime-lifecycle.js';\nimport { createHttpDownloadKey, startOrJoinDownload, applyJoinedDownloadStats } from './download-manager.js';\nimport { DownloadCancelledError, HTTPError, NoResponseBodyError, PartialDownloadOfflineError, ResponseBodyNotReadableError } from '../../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nconst logger = getServerLogger();\nconst DEFAULT_CONCURRENCY = 3;\nconst DEFAULT_HTTP_CONNECTION_TIMEOUT_MS = 10_000;\n// If no bytes arrive for this long mid-stream, treat the transfer as stalled\n// (dead socket after a suspend or network drop that didn't surface an error)\n// and abort so the caller can resume from the partial via a Range request.\nconst HTTP_STREAM_STALL_TIMEOUT_MS = 10_000;\nfunction extractFilenameFromUrl(url) {\n // Parse URL to get the filename from the path\n const urlParts = url.split('/');\n const filename = urlParts[urlParts.length - 1] || 'model.gguf';\n // Remove query parameters if present\n const cleanFilename = filename.split('?')[0] || 'model.gguf';\n // Sanitize to prevent path traversal via crafted URLs\n return sanitizePathComponent(cleanFilename);\n}\nasync function validateCachedFile(modelPath, url, signal) {\n try {\n await fsPromises.access(modelPath);\n const localStats = await fsPromises.stat(modelPath);\n const localSize = localStats.size;\n const config = getSDKConfig();\n const connectionTimeout = config.httpConnectionTimeoutMs ?? DEFAULT_HTTP_CONNECTION_TIMEOUT_MS;\n let expectedSize = 0;\n try {\n const response = await withTimeout(fetch(url, {\n method: 'HEAD',\n ...(signal && { signal })\n }), connectionTimeout);\n expectedSize = parseInt(response.headers.get('content-length') || '0');\n }\n catch (headError) {\n logger.warn(`⚠️ HEAD request failed: ${headError instanceof Error ? headError.message : String(headError)}`);\n logger.info(`📴 Falling back to GGUF header validation...`);\n const hasValidHeader = await hasValidGGUFHeader(modelPath);\n if (hasValidHeader) {\n logger.info(`✅ Offline - GGUF header valid, using cached file: ${modelPath}`);\n return modelPath;\n }\n if (localSize > 0) {\n logger.error(`❌ Offline with partial download (${localSize} bytes). Cannot resume without network.`);\n throw new PartialDownloadOfflineError(url, localSize);\n }\n logger.warn(`⚠️ Offline and GGUF validation failed - file may be incomplete`);\n return null;\n }\n if (localSize !== expectedSize) {\n logger.info(`📥 Cached file size mismatch. Expected: ${expectedSize}, Found: ${localSize}. Re-downloading...`);\n return null;\n }\n logger.info(`✅ Using cached HTTP model: ${modelPath}`);\n return modelPath;\n }\n catch (error) {\n // Re-throw PartialDownloadOfflineError\n if (error instanceof PartialDownloadOfflineError) {\n throw error;\n }\n // File doesn't exist or other access error\n return null;\n }\n}\nasync function performHttpDownload(url, modelPath, downloadKey, progressCallback, signal) {\n if (signal?.aborted) {\n throw new DownloadCancelledError();\n }\n logger.info(`📥 Downloading model from HTTP: ${url}`);\n // Check if file exists for resuming\n let startOffset = 0;\n let downloadedBytes = 0;\n try {\n const existingStats = await fsPromises.stat(modelPath);\n startOffset = existingStats.size;\n downloadedBytes = startOffset;\n logger.info(`📥 Resuming download from byte ${startOffset}`);\n }\n catch {\n logger.info(`📥 Starting fresh download`);\n }\n // Prepare headers for resume if needed\n const headers = new Headers({\n 'User-Agent': 'qvac-sdk'\n });\n if (startOffset > 0) {\n headers.append('Range', `bytes=${startOffset}-`);\n }\n const config = getSDKConfig();\n const connectionTimeout = config.httpConnectionTimeoutMs ?? DEFAULT_HTTP_CONNECTION_TIMEOUT_MS;\n let response;\n try {\n response = await withTimeout(fetch(url, {\n method: 'GET',\n headers,\n ...(signal && { signal })\n }), connectionTimeout);\n }\n catch (error) {\n // Check if it was parent abort\n if (signal?.aborted) {\n throw new DownloadCancelledError();\n }\n // Connection timeout or network error\n const errorMsg = error instanceof Error ? error.message : String(error);\n logger.error(`❌ Connection failed: ${errorMsg}. URL: ${url}`);\n throw new HTTPError(0, `Connection failed: ${errorMsg}`, error);\n }\n if (!response.ok) {\n // Check if it's a 416 (Range Not Satisfiable) - file already complete\n if (response.status === 416 && startOffset > 0) {\n logger.info(`✅ File already completely downloaded`);\n // Send 100% progress for already complete file\n if (progressCallback) {\n progressCallback({\n type: 'modelProgress',\n downloaded: startOffset,\n total: startOffset,\n percentage: 100,\n downloadKey\n });\n }\n return;\n }\n // Check if server doesn't support range requests\n if (response.status === 200 && startOffset > 0) {\n logger.warn(`⚠️ Server doesn't support resume, starting fresh download`);\n startOffset = 0;\n downloadedBytes = 0;\n // Retry without Range header\n response = await fetch(url, {\n method: 'GET',\n headers: new Headers({\n 'User-Agent': 'qvac-sdk'\n }),\n ...(signal && { signal })\n });\n if (!response.ok) {\n throw new HTTPError(response.status, response.statusText);\n }\n }\n else if (response.status !== 206) {\n // 206 is Partial Content (successful resume)\n throw new HTTPError(response.status, response.statusText);\n }\n }\n // Get total size from headers\n let totalBytes = 0;\n const contentLength = response.headers.get('content-length');\n if (response.status === 206) {\n // For resumed downloads, parse Content-Range header\n const contentRange = response.headers.get('content-range');\n if (contentRange) {\n const match = contentRange.match(/bytes \\d+-\\d+\\/(\\d+)/);\n if (match && match[1]) {\n totalBytes = parseInt(match[1]);\n }\n }\n }\n else {\n // For fresh downloads\n totalBytes = contentLength ? parseInt(contentLength) : 0;\n }\n logger.info(`📏 Total size: ${totalBytes} bytes (${(totalBytes / 1024 / 1024).toFixed(2)} MB)`);\n // Create write stream (append if resuming)\n const writeStreamOptions = startOffset > 0 && response.status === 206 ? { flags: 'a' } : {};\n const writeStream = fs.createWriteStream(modelPath, writeStreamOptions);\n // Get the response body\n const body = response.body;\n if (!body) {\n throw new NoResponseBodyError();\n }\n try {\n // Check if body has pipe method (it's a Node/Bare stream)\n const isReadable = body instanceof Readable ||\n (typeof body.pipe === 'function' &&\n typeof body.on === 'function');\n if (isReadable) {\n // Wait for download to complete\n await new Promise((resolve, reject) => {\n let stallTimer;\n const clearStall = () => {\n if (stallTimer) {\n clearTimeout(stallTimer);\n stallTimer = undefined;\n }\n };\n // Reset on every chunk; if it ever fires, the socket went quiet\n // mid-stream (suspend/drop) — abort so the caller resumes via Range.\n const armStall = () => {\n clearStall();\n stallTimer = setTimeout(() => {\n ;\n body.destroy();\n writeStream.destroy();\n reject(new Error(`HTTP stream stalled: no data for ${HTTP_STREAM_STALL_TIMEOUT_MS}ms`));\n }, HTTP_STREAM_STALL_TIMEOUT_MS);\n };\n const abortHandler = () => {\n clearStall();\n body.destroy();\n writeStream.destroy();\n reject(new DownloadCancelledError());\n };\n if (signal) {\n if (signal.aborted) {\n abortHandler();\n return;\n }\n signal.addEventListener('abort', abortHandler);\n }\n // Track progress + keep the stall watchdog fed\n ;\n body.on('data', (chunk) => {\n armStall();\n downloadedBytes += chunk.length;\n if (progressCallback) {\n progressCallback({\n type: 'modelProgress',\n downloaded: downloadedBytes,\n total: totalBytes,\n percentage: calculatePercentage(downloadedBytes, totalBytes),\n downloadKey\n });\n }\n });\n body.pipe(writeStream);\n armStall();\n writeStream.on('finish', () => {\n clearStall();\n logger.info(`✅ Model downloaded successfully to ${modelPath}`);\n if (signal) {\n signal.removeEventListener('abort', abortHandler);\n }\n resolve(undefined);\n });\n writeStream.on('error', (error) => {\n clearStall();\n reject(error);\n });\n body.on('error', (error) => {\n clearStall();\n reject(error);\n });\n });\n }\n else if (body[Symbol.asyncIterator]) {\n // Body is an async iterable. Drive the iterator manually so each pull can\n // race a stall timeout: a dead socket after suspend/drop produces neither\n // a chunk nor an error, so the timeout converts it into a retriable\n // failure and we abandon the iterator (which cancels the stream).\n const iterator = body[Symbol.asyncIterator]();\n let stalled = false;\n try {\n for (;;) {\n let stallTimer;\n const nextPromise = iterator.next();\n nextPromise.catch(() => { });\n let step;\n try {\n step = await Promise.race([\n nextPromise,\n new Promise((_, reject) => {\n stallTimer = setTimeout(() => {\n stalled = true;\n reject(new Error(`HTTP stream stalled: no data for ${HTTP_STREAM_STALL_TIMEOUT_MS}ms`));\n }, HTTP_STREAM_STALL_TIMEOUT_MS);\n })\n ]);\n }\n finally {\n if (stallTimer)\n clearTimeout(stallTimer);\n }\n if (step.done)\n break;\n if (signal?.aborted) {\n writeStream.destroy();\n throw new DownloadCancelledError();\n }\n const buffer = Buffer.isBuffer(step.value) ? step.value : Buffer.from(step.value);\n downloadedBytes += buffer.length;\n if (progressCallback) {\n progressCallback({\n type: 'modelProgress',\n downloaded: downloadedBytes,\n total: totalBytes,\n percentage: calculatePercentage(downloadedBytes, totalBytes),\n downloadKey\n });\n }\n // Write chunk to file\n await new Promise((resolve, reject) => {\n writeStream.write(buffer, (err) => {\n if (err)\n reject(new Error(err instanceof Error ? err.message : String(err)));\n else\n resolve();\n });\n });\n }\n }\n finally {\n if (stalled) {\n try {\n await iterator.return?.();\n }\n catch {\n /* best effort: free the dead socket */\n }\n }\n }\n // Close the write stream\n await new Promise((resolve, reject) => {\n writeStream.end(() => {\n logger.info(`✅ Model downloaded successfully to ${modelPath}`);\n resolve();\n });\n writeStream.on('error', reject);\n });\n }\n else {\n // Fallback: getReader() for a WHATWG ReadableStream (bare-fetch body).\n const readableStreamBody = body;\n const reader = readableStreamBody.getReader ? readableStreamBody.getReader() : null;\n if (reader) {\n let cancelled = false;\n try {\n for (;;) {\n // Race each read against a stall timeout. A dead socket after a\n // suspend/drop yields no data and no error; the timeout converts\n // that into a retriable failure so the caller resumes via Range.\n let stallTimer;\n const readPromise = reader.read();\n // Avoid an unhandled rejection if the read loses the race.\n readPromise.catch(() => { });\n let result;\n try {\n result = await Promise.race([\n readPromise,\n new Promise((_, reject) => {\n stallTimer = setTimeout(() => {\n cancelled = true;\n reject(new Error(`HTTP stream stalled: no data for ${HTTP_STREAM_STALL_TIMEOUT_MS}ms`));\n }, HTTP_STREAM_STALL_TIMEOUT_MS);\n })\n ]);\n }\n finally {\n if (stallTimer)\n clearTimeout(stallTimer);\n }\n const { done, value } = result;\n if (done)\n break;\n if (signal?.aborted) {\n cancelled = true;\n throw new DownloadCancelledError();\n }\n const buffer = Buffer.from(value);\n downloadedBytes += buffer.length;\n if (progressCallback) {\n progressCallback({\n type: 'modelProgress',\n downloaded: downloadedBytes,\n total: totalBytes,\n percentage: calculatePercentage(downloadedBytes, totalBytes),\n downloadKey\n });\n }\n // Write chunk to file\n await new Promise((resolve, reject) => {\n writeStream.write(buffer, (err) => {\n if (err)\n reject(new Error(err instanceof Error ? err.message : String(err)));\n else\n resolve();\n });\n });\n }\n }\n finally {\n if (cancelled) {\n try {\n await reader.cancel();\n }\n catch {\n /* best effort: free the dead socket */\n }\n }\n reader.releaseLock();\n }\n // Close the write stream\n await new Promise((resolve, reject) => {\n writeStream.end(() => {\n logger.info(`✅ Model downloaded successfully to ${modelPath}`);\n resolve();\n });\n writeStream.on('error', reject);\n });\n }\n else {\n throw new ResponseBodyNotReadableError();\n }\n }\n }\n catch (error) {\n writeStream.destroy();\n logger.error('Error during download:', error instanceof Error ? error.message : String(error));\n throw error instanceof Error ? error : new Error(String(error));\n }\n}\nconst DEFAULT_HTTP_DOWNLOAD_MAX_RETRIES = 5;\nconst HTTP_RETRY_BASE_DELAY_MS = 500;\nconst LIFECYCLE_WAIT_POLL_MS = 200;\nconst LIFECYCLE_WAIT_MAX_MS = 5 * 60_000;\nconst sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n/**\n * A mid-stream socket/body error, a connection failure (HTTP status 0, no\n * response), or our own resume-triggered abort is recoverable by resuming from\n * the partial. A real HTTP status (4xx/5xx) or a missing/unreadable body is not.\n *\n * `DownloadCancelledError` is intentionally NOT excluded here: this is only\n * reached after the caller's consumer-cancel gate, so a cancellation at this\n * point is our per-attempt abort (resume interrupt), which must be retried.\n */\nfunction isResumableTransferError(error) {\n if (error instanceof NoResponseBodyError ||\n error instanceof ResponseBodyNotReadableError ||\n error instanceof PartialDownloadOfflineError) {\n return false;\n }\n if (error instanceof HTTPError)\n return error.httpStatus === 0;\n return error instanceof Error;\n}\n/**\n * Block until the runtime is active again before retrying. After a suspend the\n * socket is dead and the process can't service the transfer; resuming the fetch\n * only makes sense once `resume()` has run. Bounded and abort-aware.\n */\nasync function waitForLifecycleActive(signal) {\n if (getLifecycleState() === 'active')\n return;\n const start = Date.now();\n while (getLifecycleState() !== 'active') {\n if (signal?.aborted)\n throw new DownloadCancelledError();\n if (Date.now() - start > LIFECYCLE_WAIT_MAX_MS)\n return;\n await sleep(LIFECYCLE_WAIT_POLL_MS);\n }\n}\n/**\n * Run `performHttpDownload` with bounded retry. On a recoverable interruption\n * (mid-stream socket drop, or a dead socket after suspend/network loss) it\n * waits for the runtime to be active and re-issues the request, which resumes\n * from the on-disk partial via a Range header. No consumer-side babysitting.\n *\n * Each attempt runs on its own AbortController that is aborted either by the\n * consumer `signal` (a real cancel — terminal) or by `resume()` (a proactive\n * recovery — the in-flight socket is dead after a background, so abort and\n * range-resume immediately instead of waiting for the stall watchdog).\n */\nasync function performHttpDownloadWithResume(url, modelPath, downloadKey, progressCallback, signal) {\n const maxRetries = DEFAULT_HTTP_DOWNLOAD_MAX_RETRIES;\n let attempt = 0;\n for (;;) {\n const attemptController = new AbortController();\n const forwardCancel = () => attemptController.abort();\n if (signal) {\n if (signal.aborted)\n attemptController.abort();\n else\n signal.addEventListener('abort', forwardCancel, { once: true });\n }\n // resume() → abort this attempt so it range-resumes now, not after the stall.\n const offResume = onResume(() => attemptController.abort());\n try {\n await performHttpDownload(url, modelPath, downloadKey, progressCallback, attemptController.signal);\n return;\n }\n catch (error) {\n // A real consumer cancel is terminal; anything else (resume abort, stall,\n // network error) is recoverable from the partial.\n if (signal?.aborted) {\n throw error instanceof DownloadCancelledError ? error : new DownloadCancelledError();\n }\n attempt++;\n if (attempt > maxRetries || !isResumableTransferError(error))\n throw error;\n logger.warn(`⚠️ HTTP download interrupted (attempt ${attempt}/${maxRetries}), resuming from partial: ${error instanceof Error ? error.message : String(error)}`);\n await waitForLifecycleActive(signal);\n await sleep(HTTP_RETRY_BASE_DELAY_MS * attempt);\n }\n finally {\n if (signal)\n signal.removeEventListener('abort', forwardCancel);\n offResume();\n }\n }\n}\nexport async function downloadModelFromHttp(url, progressCallback, hooks) {\n const filename = extractFilenameFromUrl(url);\n if (isArchiveUrl(url)) {\n return downloadShardedModelFromArchive(url, progressCallback, hooks);\n }\n const shardInfo = detectShardedModel(filename);\n if (shardInfo.isSharded && shardInfo.totalShards) {\n return downloadShardedModelFromHttp(url, progressCallback, hooks);\n }\n const downloadKey = createHttpDownloadKey(url);\n hooks?.onDownloadKey?.(downloadKey);\n const cacheDir = getModelsCacheDir();\n const sourceHash = generateShortHash(url);\n const modelPath = `${cacheDir}/${sourceHash}_${filename}`;\n const result = startOrJoinDownload(downloadKey, async (ctx) => {\n try {\n // Check if already cached\n const cachedPath = await validateCachedFile(modelPath, url, ctx.signal);\n if (cachedPath) {\n hooks?.markCacheHit?.();\n ctx.setCacheHit(true);\n try {\n const stats = await fsPromises.stat(cachedPath);\n ctx.broadcastProgress({\n type: 'modelProgress',\n downloaded: stats.size,\n total: stats.size,\n percentage: 100,\n downloadKey\n });\n }\n catch (error) {\n logger.debug('Failed to get file stats for progress callback', {\n path: cachedPath,\n error\n });\n }\n return cachedPath;\n }\n // Download the file\n hooks?.markCacheMiss?.();\n ctx.setCacheHit(false);\n await performHttpDownloadWithResume(url, modelPath, downloadKey, ctx.broadcastProgress, ctx.signal);\n try {\n const stats = await fsPromises.stat(modelPath);\n ctx.broadcastProgress({\n type: 'modelProgress',\n downloaded: stats.size,\n total: stats.size,\n percentage: 100,\n downloadKey\n });\n }\n catch (error) {\n logger.debug('Failed to get file stats for final progress update', {\n path: modelPath,\n error\n });\n }\n return modelPath;\n }\n catch (error) {\n logger.error('❌ Error downloading model:', error instanceof Error ? error.message : String(error));\n // Check if we should delete the partial file (clearCache was requested)\n if (error instanceof DownloadCancelledError) {\n if (ctx.shouldClearCache()) {\n logger.info('🗑️ Clearing cache - deleting partial file');\n try {\n await fsPromises.unlink(modelPath);\n logger.info(`✅ Deleted partial file: ${modelPath}`);\n }\n catch (error) {\n logger.debug('Failed to delete partial file during cleanup', {\n path: modelPath,\n error\n });\n }\n }\n else {\n logger.info('📥 Download paused - partial file preserved for resume');\n }\n }\n const errorToThrow = error instanceof Error ? error : new Error(String(error));\n throw errorToThrow;\n }\n }, progressCallback, hooks?.requestBinding);\n return applyJoinedDownloadStats(result, hooks);\n}\nasync function downloadShardedModelFromHttp(shardUrl, progressCallback, hooks) {\n const config = getSDKConfig();\n const concurrency = config.httpDownloadConcurrency ?? DEFAULT_CONCURRENCY;\n const { shardUrls: shardInfos, cacheKey } = parsePatternBasedShardUrl(shardUrl);\n const downloadKey = `http-sharded:${cacheKey}`;\n hooks?.onDownloadKey?.(downloadKey);\n logger.info(`📥 HTTP sharded download: ${shardInfos.length} shards detected from ${shardUrl}`);\n const shardDir = getShardedModelCacheDir(cacheKey);\n const result = startOrJoinDownload(downloadKey, async (ctx) => {\n try {\n const shardStates = await Promise.all(shardInfos.map(async (shard, index) => {\n const shardPath = path.join(shardDir, shard.filename);\n let expectedSize = 0;\n try {\n const response = await fetch(shard.url, {\n method: 'HEAD',\n signal: ctx.signal\n });\n expectedSize = parseInt(response.headers.get('content-length') || '0');\n }\n catch (error) {\n logger.warn('Failed to get shard size via HEAD request', {\n url: shard.url,\n error\n });\n }\n return {\n index,\n shard,\n shardPath,\n expectedSize,\n downloadedBytes: 0,\n isComplete: false\n };\n }));\n const overallTotal = shardStates.reduce((sum, s) => sum + s.expectedSize, 0);\n logger.info(`📏 Total size: ${overallTotal} bytes (${(overallTotal / 1024 / 1024).toFixed(2)} MB)`);\n const cacheChecks = await Promise.all(shardStates.map(async (state) => {\n const cached = await validateCachedFile(state.shardPath, state.shard.url, ctx.signal);\n return { state, isCached: cached !== null };\n }));\n const shardsToDownload = cacheChecks.filter((c) => !c.isCached).map((c) => c.state);\n for (const check of cacheChecks) {\n if (check.isCached) {\n check.state.isComplete = true;\n check.state.downloadedBytes = check.state.expectedSize;\n }\n }\n logger.info(`📥 ${shardsToDownload.length} of ${shardInfos.length} shards need downloading`);\n if (shardsToDownload.length === 0) {\n hooks?.markCacheHit?.();\n ctx.setCacheHit(true);\n }\n else {\n hooks?.markCacheMiss?.();\n ctx.setCacheHit(false);\n }\n await downloadShardsWithConcurrency(shardsToDownload, shardStates, concurrency, ctx.signal, downloadKey, overallTotal, ctx.broadcastProgress);\n logger.info(`✅ All ${shardInfos.length} shards downloaded successfully`);\n await extractTensorsFromShards(shardDir, shardInfos[0].filename);\n return path.join(shardDir, shardInfos[0].filename);\n }\n catch (error) {\n logger.error('❌ Error during sharded download:', error instanceof Error ? error.message : String(error));\n if (error instanceof DownloadCancelledError) {\n if (ctx.shouldClearCache()) {\n logger.info('🗑️ Clearing cache - deleting partial shard files');\n try {\n await fsPromises.rm(shardDir, { recursive: true, force: true });\n logger.info(`✅ Deleted shard directory: ${shardDir}`);\n }\n catch (cleanupError) {\n logger.debug('Failed to delete shard directory during cleanup', {\n path: shardDir,\n error: cleanupError\n });\n }\n }\n }\n throw error;\n }\n }, progressCallback, hooks?.requestBinding);\n return applyJoinedDownloadStats(result, hooks);\n}\nasync function downloadShardedModelFromArchive(archiveUrl, progressCallback, hooks) {\n const filename = extractFilenameFromUrl(archiveUrl);\n const sourceHash = generateShortHash(archiveUrl);\n const downloadKey = `http-archive:${sourceHash}`;\n hooks?.onDownloadKey?.(downloadKey);\n logger.info(`📦 HTTP archive download: ${filename}`);\n const extractDir = getShardedModelCacheDir(sourceHash);\n const archivePath = path.join(extractDir, `${sourceHash}_${filename}`);\n const result = startOrJoinDownload(downloadKey, async (ctx) => {\n try {\n await fsPromises.mkdir(extractDir, { recursive: true });\n const files = await fsPromises.readdir(extractDir);\n const shardedFile = files.find((f) => detectShardedModel(String(f)).isSharded);\n if (!shardedFile) {\n hooks?.markCacheMiss?.();\n ctx.setCacheHit(false);\n return downloadAndExtractArchive();\n }\n const shardFilename = String(shardedFile);\n const allShardsExist = await checkAllShardsExist(extractDir, shardFilename);\n if (!allShardsExist) {\n logger.warn(`⚠️ Incomplete shards found, re-downloading archive`);\n hooks?.markCacheMiss?.();\n ctx.setCacheHit(false);\n return downloadAndExtractArchive();\n }\n const shardFilenames = generateShardFilenames(shardFilename);\n const firstShard = path.join(extractDir, shardFilenames[0]);\n const isComplete = await validateShardedModelCache(extractDir, shardFilename);\n if (isComplete) {\n logger.info(`✅ Archive already extracted: ${extractDir}`);\n hooks?.markCacheHit?.();\n ctx.setCacheHit(true);\n ctx.broadcastProgress({\n type: 'modelProgress',\n downloaded: 1,\n total: 1,\n percentage: 100,\n downloadKey\n });\n return firstShard;\n }\n logger.info(`📝 All shards present but tensors.txt missing, extracting tensors...`);\n try {\n await extractTensorsFromShards(extractDir, shardFilename);\n logger.info(`✅ Tensors extracted successfully`);\n hooks?.markCacheHit?.();\n ctx.setCacheHit(true);\n ctx.broadcastProgress({\n type: 'modelProgress',\n downloaded: 1,\n total: 1,\n percentage: 100,\n downloadKey\n });\n return firstShard;\n }\n catch (error) {\n logger.warn(`Failed to extract tensors, will re-download archive`, {\n error\n });\n hooks?.markCacheMiss?.();\n ctx.setCacheHit(false);\n return downloadAndExtractArchive();\n }\n }\n catch (error) {\n logger.error('❌ Error downloading/extracting archive:', error);\n if (error instanceof DownloadCancelledError) {\n if (ctx.shouldClearCache()) {\n logger.info('🗑️ Clearing cache - deleting archive extract directory');\n try {\n await fsPromises.rm(extractDir, {\n recursive: true,\n force: true\n });\n logger.info(`✅ Deleted extract directory: ${extractDir}`);\n }\n catch (cleanupError) {\n logger.debug('Failed to delete extract directory during cleanup', {\n path: extractDir,\n error: cleanupError\n });\n }\n }\n }\n throw error;\n }\n async function downloadAndExtractArchive() {\n await performHttpDownloadWithResume(archiveUrl, archivePath, downloadKey, ctx.broadcastProgress, ctx.signal);\n logger.info(`✅ Archive downloaded, extracting to: ${extractDir}`);\n const firstShardPath = await extractAndValidateShardedArchive(archivePath, extractDir, ctx.signal);\n try {\n await fsPromises.unlink(archivePath);\n logger.info(`🗑️ Cleaned up archive file: ${archivePath}`);\n }\n catch (cleanupError) {\n logger.debug('Failed to delete archive file during cleanup', {\n path: archivePath,\n error: cleanupError\n });\n }\n return firstShardPath;\n }\n }, progressCallback, hooks?.requestBinding);\n return applyJoinedDownloadStats(result, hooks);\n}\nasync function downloadShardsWithConcurrency(shardsToDownload, allShards, concurrency, signal, downloadKey, overallTotal, progressCallback) {\n const queue = [...shardsToDownload];\n const inFlight = new Set();\n while (queue.length > 0 || inFlight.size > 0) {\n if (signal.aborted) {\n throw new DownloadCancelledError();\n }\n while (queue.length > 0 && inFlight.size < concurrency) {\n const state = queue.shift();\n const downloadPromise = (async () => {\n logger.info(`📥 Downloading shard ${state.index + 1}: ${state.shard.filename}`);\n await performHttpDownloadWithResume(state.shard.url, state.shardPath, downloadKey, (progress) => {\n state.downloadedBytes = progress.downloaded;\n if (progressCallback) {\n const overallDownloaded = allShards.reduce((sum, s) => sum + s.downloadedBytes, 0);\n progressCallback({\n type: 'modelProgress',\n downloaded: state.downloadedBytes,\n total: state.expectedSize,\n percentage: calculatePercentage(state.downloadedBytes, state.expectedSize),\n downloadKey,\n shardInfo: {\n currentShard: state.index + 1,\n totalShards: allShards.length,\n shardName: state.shard.filename,\n overallDownloaded,\n overallTotal,\n overallPercentage: calculatePercentage(overallDownloaded, overallTotal)\n }\n });\n }\n }, signal);\n logger.info(`✅ Shard ${state.index + 1} complete: ${state.shard.filename}`);\n })().finally(() => {\n inFlight.delete(downloadPromise);\n });\n inFlight.add(downloadPromise);\n }\n if (inFlight.size > 0) {\n await Promise.race(inFlight);\n }\n }\n // Mark all downloaded shards as complete\n for (const state of shardsToDownload) {\n state.isComplete = true;\n state.downloadedBytes = state.expectedSize;\n }\n if (progressCallback) {\n progressCallback({\n type: 'modelProgress',\n downloaded: overallTotal,\n total: overallTotal,\n percentage: 100,\n downloadKey,\n shardInfo: {\n currentShard: allShards.length,\n totalShards: allShards.length,\n shardName: allShards[allShards.length - 1].shard.filename,\n overallDownloaded: overallTotal,\n overallTotal,\n overallPercentage: 100\n }\n });\n }\n}\nimport fs, { promises as fsPromises } from 'bare-fs';\nimport path from 'bare-path';\nimport Corestore from 'corestore';\nimport Hyperswarm, {} from 'hyperswarm';\nimport Hyperdrive from 'hyperdrive';\nimport {} from 'bare-stream';\nimport { getQvacPath } from '../../../utils/qvac-paths.js';\nimport { getModelsCacheDir, generateShortHash, detectShardedModel, getShardedModelCacheDir, getShardPath, checkShardCompleteness, measureChecksum, extractTensorsFromShards, calculatePercentage } from '../../../utils/index.js';\nimport { getModelBySrc } from '../../../../models/registry/index.js';\nimport { createHyperdriveDownloadKey, startOrJoinDownload, applyJoinedDownloadStats } from './download-manager.js';\nimport { getSDKConfig } from '../../../bare/registry/config-registry.js';\nimport { FileNotFoundError, ChecksumValidationFailedError, DownloadCancelledError, HyperdriveDownloadFailedError, ModelLoadFailedError, NoBlobFoundError } from '../../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nimport { registerSwarm, unregisterSwarm, registerCorestore, unregisterCorestore } from '../../../bare/runtime-lifecycle.js';\nimport { Buffer } from 'bare-buffer';\nconst logger = getServerLogger();\nfunction getCorestoreDir(hyperdriveKey) {\n return getQvacPath('corestore', hyperdriveKey);\n}\nasync function setupHyperdrive(hyperdriveKey, corestoreDir) {\n const corestore = new Corestore(corestoreDir);\n await corestore.ready();\n const drive = new Hyperdrive(corestore, Buffer.from(hyperdriveKey, 'hex'));\n await drive.ready();\n const getRelays = () => {\n const config = getSDKConfig();\n const relayPublicKeys = config.swarmRelays;\n if (!relayPublicKeys || relayPublicKeys.length === 0) {\n return null;\n }\n return relayPublicKeys.map((key) => Buffer.from(key, 'hex'));\n };\n const swarmOptions = {\n relayThrough: getRelays\n };\n const swarm = new Hyperswarm(swarmOptions);\n const doneFindingPeers = drive.findingPeers();\n swarm.on('connection', (connection) => {\n logger.debug(`🤝 Connected to peer for hyperdrive download`);\n drive.replicate(connection);\n });\n swarm.join(drive.discoveryKey, { server: false, client: true });\n swarm.flush().then(doneFindingPeers, doneFindingPeers);\n registerCorestore(corestore, {\n label: `hyperdrive:${hyperdriveKey}`,\n createdAt: Date.now()\n });\n registerSwarm(swarm, {\n label: `hyperdrive:${hyperdriveKey}`,\n createdAt: Date.now()\n });\n return { corestore, drive, swarm, corestoreDir };\n}\nasync function cleanupHyperdrive(setup) {\n logger.debug('🧹 Cleaning up hyperdrive setup');\n try {\n if (!setup.swarm.suspended) {\n try {\n await setup.swarm.suspend();\n }\n catch (error) {\n logger.debug('⚠️ Swarm suspend failed during cleanup:', error instanceof Error ? error.message : String(error));\n }\n }\n await setup.swarm.destroy();\n await setup.drive.close();\n await setup.corestore.close();\n }\n finally {\n unregisterSwarm(setup.swarm);\n unregisterCorestore(setup.corestore);\n }\n}\nexport async function deleteCorestoreDirectory(corestoreDir) {\n logger.info(`🗑️ DELETING corestore directory... ${corestoreDir}`);\n try {\n await fsPromises.rm(corestoreDir, { recursive: true, force: true });\n }\n catch (e) {\n logger.error(`Error deleting corestore directory: ${e instanceof Error ? e.message : String(e)}`);\n }\n}\nasync function findFileInHyperdrive(drive, modelFileName) {\n if (drive.core.length === 0) {\n // this method will update the length of the core using the first peer it finds\n // this will ensure that the hyperdrive is usable\n await drive.core.update();\n }\n const paths = [modelFileName, `/${modelFileName}`, `./${modelFileName}`];\n for (const pathVariation of paths) {\n try {\n const entry = await drive.entry(pathVariation, { wait: true });\n if (entry) {\n return { entry, targetPath: pathVariation };\n }\n }\n catch {\n // Continue trying other paths\n }\n }\n // If not found, list available files for debugging\n const availableFiles = [];\n try {\n // Try both with and without leading slash\n for (const prefix of ['/', '']) {\n const files = drive.list(prefix, { recursive: true, wait: true });\n for await (const file of files) {\n availableFiles.push(file.key);\n }\n if (availableFiles.length > 0)\n break;\n }\n }\n catch {\n // Ignore listing errors\n }\n const filesInfo = availableFiles.length > 0\n ? `Available files: ${availableFiles.join(', ')}`\n : 'Could not list available files';\n throw new FileNotFoundError(`${modelFileName} in hyperdrive. ${filesInfo}`);\n}\nasync function checkFileDownloaded(drive, entry) {\n const blobs = await drive.getBlobs();\n const blob = entry?.value?.blob;\n if (!blob) {\n return {\n blobs,\n blocksDownloaded: 0,\n totalBlocks: 0,\n totalBytes: 0\n };\n }\n // Check how many blocks are already downloaded\n let blocksDownloaded = 0;\n for (let i = blob.blockOffset; i < blob.blockOffset + blob.blockLength; i++) {\n const hasBlock = await blobs.core.has(i);\n if (hasBlock) {\n blocksDownloaded++;\n }\n }\n return {\n blobs,\n blocksDownloaded,\n totalBlocks: blob.blockLength,\n totalBytes: blob.byteLength\n };\n}\nasync function validateFileExistence(drive, file) {\n const { entry, targetPath } = await findFileInHyperdrive(drive, file);\n const { blobs, blocksDownloaded, totalBlocks, totalBytes } = await checkFileDownloaded(drive, entry);\n return {\n entry,\n blobs,\n targetPath,\n blocksDownloaded,\n totalBlocks,\n totalBytes\n };\n}\nasync function validateCachedFile(modelPath, modelFileName, expectedSize, expectedChecksum, hooks) {\n try {\n await fsPromises.access(modelPath);\n const localStats = await fsPromises.stat(modelPath);\n const localSize = localStats.size;\n // For hyperdrive: only validate if file is complete\n // Partial files are ignored - corestore state is the source of truth for resume\n if (localSize === expectedSize) {\n logger.info(`✅ Model cached with correct size: ${modelPath}`);\n // Always validate checksum if provided, even when size matches\n if (expectedChecksum && expectedChecksum.length === 64) {\n const checksum = await measureChecksum(modelPath, hooks);\n if (checksum !== expectedChecksum) {\n throw new ChecksumValidationFailedError(`${modelFileName}. Expected: ${expectedChecksum}. Actual: ${checksum}. File may be corrupted`);\n }\n }\n logger.info(`✅ Model already cached and size validated: ${modelPath}`);\n return modelPath;\n }\n // File exists but incomplete - will be overwritten during download\n // Resume state will be determined by corestore blocks, not file size\n return null;\n }\n catch {\n // Model doesn't exist, need to download\n return null;\n }\n}\nasync function downloadSingleFileToFilesystem(modelPath, modelFileName, hyperdriveKey, corestoreDir, downloadKey, expectedChecksum, progressCallback, seed, signal, hooks, shouldClearCache) {\n // Check if already aborted\n if (signal?.aborted) {\n throw new DownloadCancelledError();\n }\n logger.info(`Downloading model from hyperdrive ${hyperdriveKey} to ${modelPath}`);\n const setup = await setupHyperdrive(hyperdriveKey, corestoreDir);\n const cleanup = () => {\n logger.info('🛑 Aborting hyperdrive download...');\n setup.swarm.suspended = true;\n setup.swarm.suspend().catch(() => {\n // Ignore errors during emergency suspend\n });\n };\n signal?.addEventListener('abort', cleanup);\n let downloadSucceeded = false;\n try {\n const progressContext = progressCallback\n ? {\n downloadKey,\n callback: progressCallback\n }\n : undefined;\n await downloadAndValidateFile(setup.drive, modelFileName, modelPath, 0, // Size will be determined from drive\n expectedChecksum, progressContext, signal, hooks);\n logger.info(`✅ Model downloaded successfully to ${modelPath}`);\n // Send final 100% progress update\n if (progressCallback) {\n try {\n const stats = await fsPromises.stat(modelPath);\n progressCallback({\n type: 'modelProgress',\n downloaded: stats.size,\n total: stats.size,\n percentage: 100,\n downloadKey\n });\n }\n catch {\n // Ignore stat errors\n }\n }\n downloadSucceeded = true;\n }\n catch (error) {\n logger.error('❌ Error during hyperdrive download:', error instanceof Error ? error.message : String(error));\n if (error instanceof DownloadCancelledError) {\n throw error;\n }\n throw new HyperdriveDownloadFailedError(`Download failed for ${modelFileName} from hyperdrive: ${hyperdriveKey}`, error);\n }\n finally {\n signal?.removeEventListener('abort', cleanup);\n if (!seed) {\n await cleanupHyperdrive(setup);\n // Delete only after close - Windows EBUSY on LOCK if deleted before corestore.close()\n if (downloadSucceeded) {\n await deleteCorestoreDirectory(corestoreDir);\n }\n }\n // Only delete corestore and partial file if user explicitly requested clearCache\n if (signal?.aborted && shouldClearCache?.()) {\n try {\n await fsPromises.unlink(modelPath);\n }\n catch (cleanupError) {\n logger.debug('Failed to delete partial model file during cleanup', {\n path: modelPath,\n error: cleanupError\n });\n }\n await deleteCorestoreDirectory(corestoreDir);\n }\n }\n}\nasync function downloadAndValidateFile(drive, sourceFileName, targetFilePath, expectedSize, expectedChecksum, progressContext, signal, hooks) {\n const { entry, blobs, targetPath, blocksDownloaded, totalBlocks, totalBytes } = await validateFileExistence(drive, sourceFileName);\n const blob = entry?.value?.blob;\n if (!blob) {\n throw new NoBlobFoundError(sourceFileName);\n }\n // Use actual file size from drive if expectedSize is 0\n const fileSizeToValidate = expectedSize || totalBytes;\n // Setup progress tracking\n let downloadedBytes = 0;\n const bytesPerBlock = totalBlocks > 0 ? totalBytes / totalBlocks : 0;\n const initialBytes = Math.floor(blocksDownloaded * bytesPerBlock);\n downloadedBytes = initialBytes;\n const progressHandler = (index, bytes) => {\n if (index >= blob.blockOffset && index < blob.blockOffset + blob.blockLength) {\n downloadedBytes += bytes;\n const cappedDownloaded = Math.min(downloadedBytes, totalBytes);\n if (progressContext) {\n const baseProgress = {\n type: 'modelProgress',\n downloaded: cappedDownloaded,\n total: totalBytes,\n percentage: calculatePercentage(cappedDownloaded, totalBytes),\n downloadKey: progressContext.downloadKey\n };\n if (progressContext.shardInfo) {\n const currentOverall = progressContext.shardInfo.overallDownloaded + cappedDownloaded;\n progressContext.callback({\n ...baseProgress,\n shardInfo: {\n currentShard: progressContext.shardInfo.currentShard,\n totalShards: progressContext.shardInfo.totalShards,\n shardName: progressContext.shardInfo.shardName,\n overallDownloaded: currentOverall,\n overallTotal: progressContext.shardInfo.overallTotal,\n overallPercentage: progressContext.shardInfo.overallTotal > 0\n ? (currentOverall / progressContext.shardInfo.overallTotal) * 100\n : 0\n }\n });\n }\n else {\n progressContext.callback(baseProgress);\n }\n }\n }\n };\n blobs.core.on('download', progressHandler);\n let readStream;\n let writeStream;\n try {\n // Download blocks and stream to file\n drive.download(targetPath);\n readStream = drive.createReadStream(targetPath);\n writeStream = fs.createWriteStream(targetFilePath);\n readStream.pipe(writeStream);\n await new Promise((resolve, reject) => {\n writeStream.on('finish', resolve);\n writeStream.on('error', reject);\n readStream.on('error', reject);\n signal?.addEventListener('abort', () => reject(new DownloadCancelledError()), { once: true });\n });\n blobs.core.off('download', progressHandler);\n // Validate file size\n const stats = await fsPromises.stat(targetFilePath);\n if (stats.size !== fileSizeToValidate) {\n throw new ChecksumValidationFailedError(`${path.basename(targetFilePath)}. File size mismatch: expected ${fileSizeToValidate}, got ${stats.size}`);\n }\n // Validate checksum\n if (expectedChecksum && expectedChecksum.length === 64) {\n const checksum = await measureChecksum(targetFilePath, hooks);\n if (checksum !== expectedChecksum) {\n await fsPromises.unlink(targetFilePath);\n throw new ChecksumValidationFailedError(`${path.basename(targetFilePath)}. Expected: ${expectedChecksum}. Actual: ${checksum}`);\n }\n }\n else if (!expectedChecksum) {\n logger.warn(`⚠️ No checksum available for validation`);\n }\n }\n catch (error) {\n if (readStream) {\n readStream.destroy();\n }\n if (writeStream) {\n writeStream.destroy();\n }\n blobs.core.off('download', progressHandler);\n throw error;\n }\n}\nasync function downloadShardedFilesToFilesystem(hyperdriveKey, firstShardFileName, shardMetadata, progressCallback, seed, signal, hooks, shouldClearCache) {\n if (signal?.aborted) {\n throw new DownloadCancelledError();\n }\n const shardInfo = detectShardedModel(firstShardFileName);\n if (!shardInfo.isSharded || !shardInfo.totalShards) {\n throw new ModelLoadFailedError(`Not a sharded model: ${firstShardFileName}`);\n }\n const shardDir = getShardedModelCacheDir(hyperdriveKey);\n const allFiles = shardMetadata.map((s) => s.filename);\n const numberedShardCount = shardInfo.totalShards;\n logger.info(`Downloading sharded model with ${numberedShardCount} numbered shards + ${allFiles.length - numberedShardCount} companion files to ${shardDir}`);\n // Check which files need to be downloaded\n const invalidIndices = await checkShardCompleteness(hyperdriveKey, allFiles, shardMetadata, hooks?.addChecksumValidationTimeMs ? (ms) => hooks.addChecksumValidationTimeMs(ms) : undefined);\n if (invalidIndices.length === 0) {\n logger.info(`✅ All ${allFiles.length} files already downloaded and validated`);\n hooks?.markCacheHit?.();\n if (progressCallback) {\n const overallTotal = shardMetadata.reduce((sum, shard) => sum + shard.expectedSize, 0);\n const lastFile = allFiles[allFiles.length - 1];\n progressCallback({\n type: 'modelProgress',\n downloaded: overallTotal,\n total: overallTotal,\n percentage: 100,\n downloadKey: createHyperdriveDownloadKey(hyperdriveKey, firstShardFileName),\n shardInfo: {\n currentShard: allFiles.length,\n totalShards: allFiles.length,\n shardName: lastFile,\n overallDownloaded: overallTotal,\n overallTotal,\n overallPercentage: 100\n }\n });\n }\n await extractTensorsFromShards(shardDir, firstShardFileName);\n return getShardPath(hyperdriveKey, allFiles[0]);\n }\n logger.info(`📥 Need to download ${invalidIndices.length} of ${allFiles.length} files`);\n hooks?.markCacheMiss?.();\n // Setup hyperdrive once for all shards\n const corestoreDir = getCorestoreDir(hyperdriveKey);\n const setup = await setupHyperdrive(hyperdriveKey, corestoreDir);\n const cleanup = () => {\n logger.info('🛑 Aborting sharded hyperdrive download...');\n setup.swarm.suspended = true;\n setup.swarm.suspend().catch(() => {\n // Ignore errors during emergency suspend\n });\n };\n signal?.addEventListener('abort', cleanup);\n let downloadSucceeded = false;\n try {\n // Calculate overall progress\n const overallTotal = shardMetadata.reduce((sum, shard) => sum + shard.expectedSize, 0);\n let overallDownloaded = 0;\n // Download each file sequentially\n for (let i = 0; i < allFiles.length; i++) {\n if (signal?.aborted) {\n throw new DownloadCancelledError();\n }\n const file = allFiles[i];\n const fileMeta = shardMetadata[i];\n const filePath = getShardPath(hyperdriveKey, file);\n // Skip if already valid\n if (!invalidIndices.includes(i)) {\n logger.debug(`✅ File ${i + 1}/${allFiles.length} already valid: ${file}`);\n overallDownloaded += fileMeta.expectedSize;\n // Report progress for skipped files\n if (progressCallback) {\n progressCallback({\n type: 'modelProgress',\n downloaded: fileMeta.expectedSize,\n total: fileMeta.expectedSize,\n percentage: 100,\n downloadKey: createHyperdriveDownloadKey(hyperdriveKey, firstShardFileName),\n shardInfo: {\n currentShard: i + 1,\n totalShards: allFiles.length,\n shardName: file,\n overallDownloaded,\n overallTotal,\n overallPercentage: calculatePercentage(overallDownloaded, overallTotal)\n }\n });\n }\n continue;\n }\n logger.info(`📥 Downloading file ${i + 1}/${allFiles.length}: ${file}`);\n const progressContext = progressCallback\n ? {\n downloadKey: createHyperdriveDownloadKey(hyperdriveKey, firstShardFileName),\n callback: progressCallback,\n shardInfo: {\n currentShard: i + 1,\n totalShards: allFiles.length,\n shardName: file,\n overallDownloaded,\n overallTotal\n }\n }\n : undefined;\n await downloadAndValidateFile(setup.drive, file, filePath, fileMeta.expectedSize, fileMeta.sha256Checksum, progressContext, signal, hooks);\n if (signal?.aborted) {\n throw new DownloadCancelledError();\n }\n logger.info(`✅ File ${i + 1}/${allFiles.length} downloaded and validated`);\n overallDownloaded += fileMeta.expectedSize;\n }\n if (progressCallback && overallDownloaded === overallTotal) {\n const lastFile = allFiles[allFiles.length - 1];\n progressCallback({\n type: 'modelProgress',\n downloaded: overallTotal,\n total: overallTotal,\n percentage: 100,\n downloadKey: createHyperdriveDownloadKey(hyperdriveKey, firstShardFileName),\n shardInfo: {\n currentShard: allFiles.length,\n totalShards: allFiles.length,\n shardName: lastFile,\n overallDownloaded,\n overallTotal,\n overallPercentage: 100\n }\n });\n }\n await extractTensorsFromShards(shardDir, firstShardFileName);\n downloadSucceeded = true;\n }\n catch (error) {\n logger.error('❌ Error during sharded hyperdrive download:', error instanceof Error ? error.message : String(error));\n // Preserve cancellation errors\n if (error instanceof DownloadCancelledError) {\n throw error;\n }\n throw new HyperdriveDownloadFailedError(`Sharded download failed for ${firstShardFileName} from hyperdrive: ${hyperdriveKey}`, error);\n }\n finally {\n signal?.removeEventListener('abort', cleanup);\n if (!seed) {\n await cleanupHyperdrive(setup);\n // Delete only after close - Windows EBUSY on LOCK if deleted before corestore.close()\n if (downloadSucceeded) {\n await deleteCorestoreDirectory(corestoreDir);\n }\n }\n // Only delete corestore and partial files if user explicitly requested clearCache\n if (signal?.aborted && shouldClearCache?.()) {\n await deleteCorestoreDirectory(corestoreDir);\n }\n }\n return getShardPath(hyperdriveKey, allFiles[0]);\n}\nexport async function downloadModelFromHyperdrive(hyperdriveKey, modelFileName, seed, progressCallback, hooks, expectedChecksum) {\n const downloadKey = createHyperdriveDownloadKey(hyperdriveKey, modelFileName);\n hooks?.onDownloadKey?.(downloadKey);\n const shardInfo = detectShardedModel(modelFileName);\n const model = getModelBySrc(modelFileName, hyperdriveKey);\n const result = startOrJoinDownload(downloadKey, async (ctx) => {\n if (shardInfo.isSharded && model?.shardMetadata) {\n const hooksWithCacheHit = {\n ...hooks,\n markCacheHit: () => {\n hooks?.markCacheHit?.();\n ctx.setCacheHit(true);\n },\n markCacheMiss: () => {\n hooks?.markCacheMiss?.();\n ctx.setCacheHit(false);\n }\n };\n return downloadShardedFilesToFilesystem(hyperdriveKey, modelFileName, model.shardMetadata, ctx.broadcastProgress, seed, ctx.signal, hooksWithCacheHit, ctx.shouldClearCache);\n }\n // Non-sharded model download\n const corestoreDir = getCorestoreDir(hyperdriveKey);\n const cacheDir = getModelsCacheDir();\n const sourceHash = generateShortHash(`${hyperdriveKey}/${modelFileName}`);\n const modelPath = path.join(cacheDir, `${sourceHash}_${modelFileName}`);\n // First, check if we already have a valid cached file (only if we have model metadata)\n if (model) {\n const cachedPath = await validateCachedFile(modelPath, modelFileName, model.expectedSize, expectedChecksum || model.sha256Checksum, hooks);\n if (cachedPath) {\n hooks?.markCacheHit?.();\n ctx.setCacheHit(true);\n ctx.broadcastProgress({\n type: 'modelProgress',\n downloaded: model.expectedSize,\n total: model.expectedSize,\n percentage: 100,\n downloadKey\n });\n // Delete any leftover corestore directory from previous runs (only when not seeding)\n if (!seed) {\n await deleteCorestoreDirectory(corestoreDir);\n }\n return cachedPath;\n }\n }\n hooks?.markCacheMiss?.();\n ctx.setCacheHit(false);\n const checksumToValidate = expectedChecksum || model?.sha256Checksum || '';\n await downloadSingleFileToFilesystem(modelPath, modelFileName, hyperdriveKey, corestoreDir, downloadKey, checksumToValidate, ctx.broadcastProgress, seed, ctx.signal, hooks, ctx.shouldClearCache);\n return modelPath;\n }, progressCallback, hooks?.requestBinding);\n return applyJoinedDownloadStats(result, hooks);\n}\nexport { handleLoadModel } from './handler.js';\nexport { resolveModelPath } from './resolve.js';\nexport const DEFAULT_REGISTRY_STREAM_TIMEOUT_MS = 60_000;\n/**\n * Build the options passed to @qvac/registry-client download methods from the\n * current SDK config. Pure helper (no bare-* imports) so the mapping can be\n * unit-tested without standing up a real registry client.\n */\nexport function buildRegistryClientOptions(params) {\n const { sdkConfig, outputFile, onProgress, signal } = params;\n const timeout = sdkConfig.registryStreamTimeoutMs ?? DEFAULT_REGISTRY_STREAM_TIMEOUT_MS;\n const maxRetries = sdkConfig.registryDownloadMaxRetries;\n return {\n timeout,\n outputFile,\n ...(maxRetries !== undefined && { maxRetries }),\n ...(onProgress && { onProgress }),\n ...(signal && { signal: signal })\n };\n}\nimport { promises as fsPromises } from 'bare-fs';\nimport { getModelsCacheDir, getCompanionSetPath, getCompanionSetCacheDir, getSingleFileCachePath, generateShortHash, calculatePercentage } from '../../../utils/index.js';\nimport { measureChecksum } from '../../../utils/checksum.js';\nimport { validateAndJoinPath } from '../../../utils/path-security.js';\nimport { buildBlobBinding, downloadSingleFileFromRegistry, validateCachedFile } from './registry-download-utils.js';\nimport { DownloadCancelledError, RegistryDownloadFailedError } from '../../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nconst logger = getServerLogger();\n/**\n * Download a companion set from the registry, placing files directly\n * into their canonical layout at `sets//`.\n *\n * Returns the path to the primary file.\n */\nexport async function downloadCompanionSetFromRegistry(options) {\n const { companionSet, downloadKey, allowLegacyFlatCache = false, progressCallback, signal, hooks, shouldClearCache } = options;\n const { files, setKey, primaryKey } = companionSet;\n validateCompanionSetMetadata(files, primaryKey);\n const primaryEntry = files.find((f) => f.key === primaryKey);\n const primaryRegistryPath = primaryEntry.registryPath;\n if (isLegacyOnnxSet(files)) {\n const legacyPath = await checkLegacyOnnxCache(primaryRegistryPath, files, hooks);\n if (legacyPath) {\n logger.info(`✅ Using legacy ONNX cache for companion set: ${legacyPath}`);\n hooks?.markCacheHit?.();\n emitFinalProgress(progressCallback, downloadKey, setKey, files);\n return legacyPath;\n }\n }\n // Legacy flat-cache compatibility for Bergamot-style companion sets.\n // This is valid only for families whose runtime still works with explicit\n // per-file absolute paths; it is not a generic rule for all companion sets.\n if (allowLegacyFlatCache && !isLegacyOnnxSet(files)) {\n const flatPath = await checkLegacyFlatCache(files, primaryKey, hooks);\n if (flatPath) {\n logger.info(`✅ Using legacy flat cache for companion set: ${flatPath}`);\n hooks?.markCacheHit?.();\n emitFinalProgress(progressCallback, downloadKey, setKey, files);\n return flatPath;\n }\n }\n // Check canonical companion set cache\n const validatedFiles = new Set();\n for (const file of files) {\n const filePath = getCompanionSetPath(setKey, file.targetName);\n const cached = await validateCachedFile(filePath, file.targetName, file.expectedSize, file.sha256Checksum, hooks);\n if (cached) {\n validatedFiles.add(file.key);\n }\n }\n if (validatedFiles.size === files.length) {\n logger.info(`✅ All companion set files cached`);\n hooks?.markCacheHit?.();\n emitFinalProgress(progressCallback, downloadKey, setKey, files);\n return getCompanionSetPath(setKey, primaryEntry.targetName);\n }\n // Download missing files\n hooks?.markCacheMiss?.();\n const overallTotal = files.reduce((sum, f) => sum + f.expectedSize, 0);\n let overallDownloaded = 0;\n try {\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n const filePath = getCompanionSetPath(setKey, file.targetName);\n if (validatedFiles.has(file.key)) {\n overallDownloaded += file.expectedSize;\n continue;\n }\n const fileProgressCallback = progressCallback\n ? (progress) => {\n const currentOverall = overallDownloaded + progress.downloaded;\n progressCallback({\n ...progress,\n downloadKey,\n fileSetInfo: {\n setKey,\n currentFile: file.targetName,\n fileIndex: i + 1,\n totalFiles: files.length,\n overallDownloaded: currentOverall,\n overallTotal,\n overallPercentage: calculatePercentage(currentOverall, overallTotal)\n }\n });\n }\n : undefined;\n const blobBinding = file.blobCoreKey ? buildBlobBinding(file) : undefined;\n await downloadSingleFileFromRegistry(file.registryPath, file.registrySource, filePath, file.targetName, downloadKey, file.expectedSize, file.sha256Checksum, fileProgressCallback, signal, blobBinding, hooks);\n overallDownloaded += file.expectedSize;\n }\n }\n catch (error) {\n if (error instanceof DownloadCancelledError && shouldClearCache?.()) {\n try {\n await fsPromises.rm(getCompanionSetCacheDir(setKey), {\n recursive: true,\n force: true\n });\n }\n catch (cleanupError) {\n logger.debug('Failed to delete companion set cache during cleanup', {\n setKey,\n error: cleanupError\n });\n }\n }\n throw error;\n }\n emitFinalProgress(progressCallback, downloadKey, setKey, files);\n return getCompanionSetPath(setKey, primaryEntry.targetName);\n}\nfunction emitFinalProgress(progressCallback, downloadKey, setKey, files) {\n if (!progressCallback)\n return;\n const overallTotal = files.reduce((sum, f) => sum + f.expectedSize, 0);\n const lastFile = files[files.length - 1];\n progressCallback({\n type: 'modelProgress',\n downloaded: overallTotal,\n total: overallTotal,\n percentage: 100,\n downloadKey,\n fileSetInfo: {\n setKey,\n currentFile: lastFile.targetName,\n fileIndex: files.length,\n totalFiles: files.length,\n overallDownloaded: overallTotal,\n overallTotal,\n overallPercentage: 100\n }\n });\n}\nfunction validateCompanionSetMetadata(files, primaryKey) {\n if (!files.some((f) => f.key === primaryKey)) {\n throw new RegistryDownloadFailedError(`Companion set missing primary file (key: ${primaryKey})`);\n }\n const targetNames = new Set();\n for (const file of files) {\n if (targetNames.has(file.targetName)) {\n throw new RegistryDownloadFailedError(`Companion set has duplicate targetName \"${file.targetName}\"`);\n }\n targetNames.add(file.targetName);\n }\n}\nfunction isLegacyOnnxSet(files) {\n return files.some((f) => f.primary === true && f.targetName.endsWith('.onnx'));\n}\n/**\n * Check if a complete legacy ONNX cache exists for a companion set.\n * Read-only probe: does not create legacy cache directories.\n */\nasync function checkLegacyOnnxCache(primaryRegistryPath, files, hooks) {\n const cacheKey = generateShortHash(primaryRegistryPath);\n let primaryPath = null;\n for (const file of files) {\n const filePath = getLegacyOnnxPath(cacheKey, file.targetName);\n try {\n const stats = await fsPromises.stat(filePath);\n if (stats.size !== file.expectedSize)\n return null;\n if (file.sha256Checksum && file.sha256Checksum.length === 64) {\n const checksum = await measureChecksum(filePath, hooks);\n if (checksum !== file.sha256Checksum)\n return null;\n }\n }\n catch {\n return null;\n }\n if (file.primary === true) {\n primaryPath = filePath;\n }\n }\n return primaryPath;\n}\nfunction getLegacyOnnxPath(cacheKey, filename) {\n const baseCache = getModelsCacheDir();\n return validateAndJoinPath(baseCache, 'onnx', cacheKey, filename);\n}\n/**\n * Check if all companion files exist in the flat single-file cache.\n */\nasync function checkLegacyFlatCache(files, primaryKey, hooks) {\n let primaryPath = null;\n for (const file of files) {\n const flatPath = getSingleFileCachePath(file.registryPath);\n try {\n const stats = await fsPromises.stat(flatPath);\n if (stats.size !== file.expectedSize)\n return null;\n if (file.sha256Checksum && file.sha256Checksum.length === 64) {\n const checksum = await measureChecksum(flatPath, hooks);\n if (checksum !== file.sha256Checksum)\n return null;\n }\n }\n catch {\n return null;\n }\n if (file.key === primaryKey) {\n primaryPath = flatPath;\n }\n }\n return primaryPath;\n}\nimport { promises as fsPromises } from 'bare-fs';\nimport path from 'bare-path';\nimport { measureChecksum, calculatePercentage } from '../../../utils/index.js';\nimport { getRegistryClient } from '../../../bare/registry/registry-client.js';\nimport { getSDKConfig } from '../../../bare/registry/config-registry.js';\nimport { buildRegistryClientOptions } from './registry-client-options.js';\nimport { ChecksumValidationFailedError, DownloadCancelledError } from '../../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nconst logger = getServerLogger();\nexport { DEFAULT_REGISTRY_STREAM_TIMEOUT_MS, buildRegistryClientOptions } from './registry-client-options.js';\nexport function buildBlobBinding(meta) {\n return {\n coreKey: meta.blobCoreKey,\n blockOffset: meta.blobBlockOffset,\n blockLength: meta.blobBlockLength,\n byteOffset: meta.blobByteOffset,\n byteLength: meta.expectedSize\n };\n}\n/**\n * Validate a cached file against expected size and checksum.\n */\nexport async function validateCachedFile(modelPath, modelFileName, expectedSize, expectedChecksum, hooks) {\n try {\n await fsPromises.access(modelPath);\n const localStats = await fsPromises.stat(modelPath);\n const localSize = localStats.size;\n if (localSize === expectedSize) {\n logger.info(`✅ Model cached with correct size: ${modelPath}`);\n if (expectedChecksum && expectedChecksum.length === 64) {\n const checksum = await measureChecksum(modelPath, hooks);\n if (checksum !== expectedChecksum) {\n throw new ChecksumValidationFailedError(`${modelFileName}. Expected: ${expectedChecksum}. Actual: ${checksum}. File may be corrupted`);\n }\n }\n logger.info(`✅ Model already cached and validated: ${modelPath}`);\n return modelPath;\n }\n logger.warn(`🗑️ Removing incomplete cached file (expected ${expectedSize}, got ${localSize}): ${modelPath}`);\n await fsPromises.unlink(modelPath);\n return null;\n }\n catch (error) {\n if (error instanceof ChecksumValidationFailedError) {\n logger.warn(`🗑️ Removing corrupted cached file: ${modelPath}`);\n await fsPromises.unlink(modelPath).catch(() => { });\n }\n return null;\n }\n}\n/**\n * Download a single file from the registry to filesystem.\n * When blobBinding is provided, uses direct blob download (skips metadata sync).\n * Otherwise falls back to metadata-based downloadModel.\n */\nexport async function downloadSingleFileFromRegistry(registryPath, registrySource, modelPath, modelFileName, downloadKey, expectedSize, expectedChecksum, progressCallback, signal, blobBinding, hooks) {\n if (signal?.aborted) {\n throw new DownloadCancelledError();\n }\n const client = await getRegistryClient();\n const dir = path.dirname(modelPath);\n await fsPromises.mkdir(dir, { recursive: true });\n const onProgress = progressCallback\n ? (progress) => {\n const total = progress.total || expectedSize || progress.downloaded;\n progressCallback({\n type: 'modelProgress',\n downloaded: progress.downloaded,\n total,\n percentage: total > 0 ? calculatePercentage(progress.downloaded, total) : 0,\n downloadKey\n });\n }\n : undefined;\n const clientOptions = buildRegistryClientOptions({\n sdkConfig: getSDKConfig(),\n outputFile: modelPath,\n onProgress,\n signal\n });\n if (blobBinding) {\n logger.info(`📥 Downloading blob directly: ${modelFileName}`);\n await client.downloadBlob(blobBinding, clientOptions);\n }\n else {\n logger.info(`📥 Downloading from registry: ${registryPath}`);\n await client.downloadModel(registryPath, registrySource, clientOptions);\n }\n logger.info(`✅ Downloaded to ${modelPath}`);\n const stats = await fsPromises.stat(modelPath);\n if (expectedSize && stats.size !== expectedSize) {\n await fsPromises.unlink(modelPath).catch(() => { });\n throw new ChecksumValidationFailedError(`${modelFileName}. File size mismatch: expected ${expectedSize}, got ${stats.size}`);\n }\n if (expectedChecksum && expectedChecksum.length === 64) {\n const checksum = await measureChecksum(modelPath, hooks);\n if (checksum !== expectedChecksum) {\n await fsPromises.unlink(modelPath);\n throw new ChecksumValidationFailedError(`${modelFileName}. Expected: ${expectedChecksum}. Actual: ${checksum}`);\n }\n logger.info(`✅ Checksum validated for ${modelFileName}`);\n }\n if (progressCallback) {\n progressCallback({\n type: 'modelProgress',\n downloaded: stats.size,\n total: stats.size,\n percentage: 100,\n downloadKey\n });\n }\n}\nimport { modelDescriptorSchema } from '../../../../schemas/index.js';\nexport function getExplicitRegistryMetadata(modelSrc) {\n const parsed = modelDescriptorSchema.safeParse(modelSrc);\n if (!parsed.success || !parsed.data.src.startsWith('registry://')) {\n return undefined;\n }\n const metadata = {};\n if (typeof parsed.data.expectedSize === 'number') {\n metadata.expectedSize = parsed.data.expectedSize;\n }\n if (typeof parsed.data.sha256Checksum === 'string') {\n metadata.sha256Checksum = parsed.data.sha256Checksum;\n }\n return metadata.expectedSize !== undefined || metadata.sha256Checksum !== undefined\n ? metadata\n : undefined;\n}\nexport function resolveRegistryDownloadMetadata(modelMetadata, explicitMetadata, expectedChecksum) {\n return {\n expectedSize: modelMetadata?.expectedSize ?? explicitMetadata?.expectedSize ?? 0,\n checksum: modelMetadata?.sha256Checksum ?? expectedChecksum ?? explicitMetadata?.sha256Checksum ?? ''\n };\n}\nimport { promises as fsPromises } from 'bare-fs';\nimport { generateShortHash, detectShardedModel, getShardedModelCacheDir, getShardPath, extractTensorsFromShards, calculatePercentage } from '../../../utils/index.js';\nimport { getSingleFileCachePath } from '../../../utils/cache/paths.js';\nimport { getModelByPath } from '../../../../models/registry/index.js';\nimport { getRegistryClient } from '../../../bare/registry/registry-client.js';\nimport { createRegistryDownloadKey, startOrJoinDownload, applyJoinedDownloadStats } from './download-manager.js';\nimport { buildBlobBinding, validateCachedFile, downloadSingleFileFromRegistry } from './registry-download-utils.js';\nimport { downloadCompanionSetFromRegistry } from './registry-companion-set.js';\nimport { DownloadCancelledError, ModelNotFoundError, RegistryDownloadFailedError } from '../../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nimport { resolveRegistryDownloadMetadata } from './registry-metadata.js';\nconst logger = getServerLogger();\n/**\n * Find all shards for a model using path prefix query.\n */\nasync function findModelShards(registryPath) {\n const client = await getRegistryClient();\n const shardInfo = detectShardedModel(registryPath.split('/').pop() || '');\n if (!shardInfo.isSharded) {\n throw new RegistryDownloadFailedError(`Not a sharded model path: ${registryPath}`);\n }\n const pathPrefix = registryPath.replace(/-\\d{5}-of-\\d{5}\\./, '.');\n const basePath = pathPrefix.substring(0, pathPrefix.lastIndexOf('.'));\n logger.info(`🔍 Finding shards with prefix: ${basePath}`);\n const shards = await client.findModels({\n gte: { path: basePath },\n lte: { path: basePath + '\\uffff' }\n });\n const sortedShards = shards\n .filter((s) => {\n const info = detectShardedModel(s.path.split('/').pop() || '');\n return info.isSharded;\n })\n .sort((a, b) => {\n const aInfo = detectShardedModel(a.path.split('/').pop() || '');\n const bInfo = detectShardedModel(b.path.split('/').pop() || '');\n return (aInfo.currentShard || 0) - (bInfo.currentShard || 0);\n })\n .map((s) => ({\n path: s.path,\n source: s.source,\n size: s.blobBinding?.byteLength || 0,\n checksum: s.blobBinding?.['sha256'] || s.sha256 || ''\n }));\n logger.info(`📦 Found ${sortedShards.length} shards`);\n return sortedShards;\n}\n/**\n * Download sharded model files from registry.\n * When localShardMetadata is provided, uses pre-computed metadata + blob direct download\n * instead of querying the registry for shard info.\n */\nasync function downloadShardedFilesFromRegistry(registryPath, registrySource, cacheKey, progressCallback, signal, localShardMetadata, hooks) {\n if (signal?.aborted) {\n throw new DownloadCancelledError();\n }\n let shards;\n if (localShardMetadata?.length) {\n shards = localShardMetadata.map((shard) => ({\n filename: shard.filename,\n size: shard.expectedSize,\n checksum: shard.sha256Checksum,\n path: registryPath,\n source: registrySource,\n blobBinding: buildBlobBinding(shard)\n }));\n }\n else {\n const filename = registryPath.split('/').pop() || registryPath;\n const shardInfo = detectShardedModel(filename);\n if (!shardInfo.isSharded || !shardInfo.totalShards) {\n throw new RegistryDownloadFailedError(`Not a sharded model: ${filename}`);\n }\n const remoteShards = await findModelShards(registryPath);\n if (remoteShards.length === 0) {\n throw new ModelNotFoundError(`No shards found for ${registryPath}`);\n }\n if (remoteShards.length !== shardInfo.totalShards) {\n logger.warn(`⚠️ Expected ${shardInfo.totalShards} shards but found ${remoteShards.length}`);\n }\n shards = remoteShards.map((s) => ({\n filename: s.path.split('/').pop() || '',\n size: s.size,\n checksum: s.checksum,\n path: s.path,\n source: s.source\n }));\n }\n const shardDir = getShardedModelCacheDir(cacheKey);\n const downloadKey = createRegistryDownloadKey(registrySource, registryPath);\n logger.info(`📥 Downloading sharded model: ${shards.length} shards to ${shardDir}`);\n const overallTotal = shards.reduce((sum, s) => sum + s.size, 0);\n let overallDownloaded = 0;\n for (let i = 0; i < shards.length; i++) {\n if (signal?.aborted) {\n throw new DownloadCancelledError();\n }\n const shard = shards[i];\n const shardPath = getShardPath(cacheKey, shard.filename);\n const cachedPath = await validateCachedFile(shardPath, shard.filename, shard.size, shard.checksum, hooks);\n if (cachedPath) {\n logger.debug(`✅ Shard ${i + 1}/${shards.length} already cached`);\n overallDownloaded += shard.size;\n if (progressCallback) {\n progressCallback({\n type: 'modelProgress',\n downloaded: shard.size,\n total: shard.size,\n percentage: 100,\n downloadKey,\n shardInfo: {\n currentShard: i + 1,\n totalShards: shards.length,\n shardName: shard.filename,\n overallDownloaded,\n overallTotal,\n overallPercentage: calculatePercentage(overallDownloaded, overallTotal)\n }\n });\n }\n continue;\n }\n logger.info(`📥 Downloading shard ${i + 1}/${shards.length}: ${shard.filename}`);\n const shardProgressCallback = progressCallback\n ? (progress) => {\n const currentOverall = overallDownloaded + progress.downloaded;\n progressCallback({\n ...progress,\n downloadKey,\n shardInfo: {\n currentShard: i + 1,\n totalShards: shards.length,\n shardName: shard.filename,\n overallDownloaded: currentOverall,\n overallTotal,\n overallPercentage: calculatePercentage(currentOverall, overallTotal)\n }\n });\n }\n : undefined;\n await downloadSingleFileFromRegistry(shard.path, shard.source, shardPath, shard.filename, downloadKey, shard.size, shard.checksum, shardProgressCallback, signal, shard.blobBinding, hooks);\n overallDownloaded += shard.size;\n logger.info(`✅ Shard ${i + 1}/${shards.length} downloaded`);\n }\n const firstShardFilename = shards[0].filename;\n await extractTensorsFromShards(shardDir, firstShardFilename);\n if (progressCallback) {\n const lastShard = shards[shards.length - 1];\n progressCallback({\n type: 'modelProgress',\n downloaded: overallTotal,\n total: overallTotal,\n percentage: 100,\n downloadKey,\n shardInfo: {\n currentShard: shards.length,\n totalShards: shards.length,\n shardName: lastShard.filename,\n overallDownloaded: overallTotal,\n overallTotal,\n overallPercentage: 100\n }\n });\n }\n return getShardPath(cacheKey, firstShardFilename);\n}\nexport async function downloadModelFromRegistry(registryPath, registrySource, progressCallback, expectedChecksum, hooks, explicitMetadata) {\n const downloadKey = createRegistryDownloadKey(registrySource, registryPath);\n hooks?.onDownloadKey?.(downloadKey);\n const filename = registryPath.split('/').pop() || registryPath;\n const shardInfo = detectShardedModel(filename);\n // Look up model metadata from our generated models.ts\n const modelMetadata = getModelByPath(registryPath);\n const result = startOrJoinDownload(downloadKey, async (ctx) => {\n if (shardInfo.isSharded) {\n const cacheKey = generateShortHash(registryPath);\n const localShardMeta = modelMetadata?.shardMetadata;\n // FS pre-check for known models: if all shards cached, return immediately\n if (localShardMeta?.length) {\n let allCached = true;\n for (const shard of localShardMeta) {\n const shardPath = getShardPath(cacheKey, shard.filename);\n const cached = await validateCachedFile(shardPath, shard.filename, shard.expectedSize, shard.sha256Checksum, hooks);\n if (!cached) {\n allCached = false;\n break;\n }\n }\n if (allCached) {\n const firstShardFilename = localShardMeta[0].filename;\n logger.info(`✅ All ${localShardMeta.length} shards cached`);\n hooks?.markCacheHit?.();\n ctx.setCacheHit(true);\n const overallTotal = localShardMeta.reduce((sum, s) => sum + s.expectedSize, 0);\n ctx.broadcastProgress({\n type: 'modelProgress',\n downloaded: overallTotal,\n total: overallTotal,\n percentage: 100,\n downloadKey,\n shardInfo: {\n currentShard: localShardMeta.length,\n totalShards: localShardMeta.length,\n shardName: firstShardFilename,\n overallDownloaded: overallTotal,\n overallTotal,\n overallPercentage: 100\n }\n });\n return getShardPath(cacheKey, firstShardFilename);\n }\n }\n hooks?.markCacheMiss?.();\n ctx.setCacheHit(false);\n try {\n return await downloadShardedFilesFromRegistry(registryPath, registrySource, cacheKey, ctx.broadcastProgress, ctx.signal, localShardMeta, hooks);\n }\n catch (error) {\n if (error instanceof DownloadCancelledError && ctx.shouldClearCache()) {\n try {\n await fsPromises.rm(getShardedModelCacheDir(cacheKey), {\n recursive: true,\n force: true\n });\n }\n catch (cleanupError) {\n logger.debug('Failed to delete shard cache dir during cleanup', {\n cacheKey,\n error: cleanupError\n });\n }\n }\n throw error;\n }\n }\n // Generic companion set via generated metadata\n if (modelMetadata?.companionSet) {\n const companionHooks = {\n ...hooks,\n markCacheHit: () => {\n hooks?.markCacheHit?.();\n ctx.setCacheHit(true);\n },\n markCacheMiss: () => {\n hooks?.markCacheMiss?.();\n ctx.setCacheHit(false);\n }\n };\n return await downloadCompanionSetFromRegistry({\n companionSet: modelMetadata.companionSet,\n downloadKey,\n allowLegacyFlatCache: modelMetadata.addon === 'nmt',\n progressCallback: ctx.broadcastProgress,\n signal: ctx.signal,\n hooks: companionHooks,\n shouldClearCache: ctx.shouldClearCache\n });\n }\n const modelPath = getSingleFileCachePath(registryPath);\n const { expectedSize, checksum } = resolveRegistryDownloadMetadata(modelMetadata, explicitMetadata, expectedChecksum);\n const cachedPath = await validateCachedFile(modelPath, filename, expectedSize, checksum, hooks);\n if (cachedPath) {\n logger.info(`✅ Using cached model: ${cachedPath}`);\n hooks?.markCacheHit?.();\n ctx.setCacheHit(true);\n ctx.broadcastProgress({\n type: 'modelProgress',\n downloaded: expectedSize,\n total: expectedSize,\n percentage: 100,\n downloadKey\n });\n return cachedPath;\n }\n const blobBinding = modelMetadata ? buildBlobBinding(modelMetadata) : undefined;\n hooks?.markCacheMiss?.();\n ctx.setCacheHit(false);\n try {\n await downloadSingleFileFromRegistry(registryPath, registrySource, modelPath, filename, downloadKey, expectedSize, checksum, ctx.broadcastProgress, ctx.signal, blobBinding, hooks);\n }\n catch (error) {\n if (error instanceof DownloadCancelledError && ctx.shouldClearCache()) {\n try {\n await fsPromises.unlink(modelPath);\n }\n catch (cleanupError) {\n logger.debug('Failed to delete model file during cleanup', {\n path: modelPath,\n error: cleanupError\n });\n }\n }\n throw error;\n }\n return modelPath;\n }, progressCallback, hooks?.requestBinding);\n return applyJoinedDownloadStats(result, hooks);\n}\nimport { resolveModelPath, resolveModelPathWithStats } from './resolve.js';\nimport { cancelTransfer } from './download-manager.js';\nimport { mergeDownloadStats } from './download-stats.js';\nexport function createResolveSession(options) {\n const { progressCallback, seed, profilingEnabled, signal, requestBinding } = options;\n let primaryResult;\n const resolveResults = [];\n const activeDownloadKeys = new Set();\n const downloadHooks = {\n onDownloadKey(key) {\n activeDownloadKeys.add(key);\n },\n ...(requestBinding !== undefined && { requestBinding })\n };\n async function resolvePrimaryModelPath(modelSrc) {\n if (profilingEnabled) {\n const result = await resolveModelPathWithStats(modelSrc, progressCallback, seed, signal, downloadHooks);\n primaryResult = result;\n resolveResults.push(result);\n return result.path;\n }\n return resolveModelPath(modelSrc, progressCallback, seed, signal, downloadHooks);\n }\n async function resolveForPlugin(src) {\n if (profilingEnabled) {\n const result = await resolveModelPathWithStats(src, progressCallback, seed, signal, downloadHooks);\n resolveResults.push(result);\n return result.path;\n }\n return resolveModelPath(src, progressCallback, seed, signal, downloadHooks);\n }\n function createResolveContext(modelSrc, modelType, modelName) {\n return {\n resolveModelPath: resolveForPlugin,\n modelSrc,\n modelType,\n ...(modelName !== undefined && { modelName })\n };\n }\n function getAggregateResult() {\n if (!profilingEnabled || resolveResults.length === 0)\n return undefined;\n const downloadStats = mergeDownloadStats(resolveResults);\n return {\n path: primaryResult?.path ?? resolveResults[0].path,\n sourceType: primaryResult?.sourceType ?? resolveResults[0].sourceType,\n ...(downloadStats !== undefined && { downloadStats })\n };\n }\n function cancelAll() {\n for (const key of activeDownloadKeys) {\n cancelTransfer(key);\n }\n activeDownloadKeys.clear();\n }\n return {\n resolvePrimaryModelPath,\n createResolveContext,\n getAggregateResult,\n cancelAll\n };\n}\nimport { models, getModelByPath } from '../../../../models/registry/models.js';\nimport { hyperdriveUrlSchema, registryUrlSchema, SUPPORTED_ARCHIVE_EXTENSIONS } from '../../../../schemas/index.js';\nimport { getModelsCacheDir, getShardedModelCacheDir, generateShortHash, extractAndValidateShardedArchive } from '../../../utils/index.js';\nimport { promises as fsPromises } from 'bare-fs';\nimport path from 'bare-path';\nimport { downloadModelFromHttp } from './http.js';\nimport { downloadModelFromHyperdrive } from './hyperdrive.js';\nimport { downloadModelFromRegistry } from './registry.js';\nimport { getExplicitRegistryMetadata } from './registry-metadata.js';\nimport { downloadModelFromHttpWithStats, downloadModelFromHyperdriveWithStats, downloadModelFromRegistryWithStats } from './download-stats.js';\nimport { InferenceCancelledError, ModelLoadFailedError, ModelNotFoundError, SeedingNotSupportedError } from '../../../../utils/errors-server.js';\nimport { validateAndJoinPath } from '../../../utils/path-security.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nimport { modelInputToSrcSchema } from '../../../../schemas/index.js';\nconst logger = getServerLogger();\nfunction isArchivePath(filePath) {\n const filename = path.basename(filePath).toLowerCase();\n return SUPPORTED_ARCHIVE_EXTENSIONS.some((ext) => filename.endsWith(ext));\n}\n/**\n * Resolves a local file path or cached file\n */\nasync function resolveLocalOrCachedFile(modelIdOrPath) {\n // Check if it's a hex string (arbitrary hyperdrive key)\n const isHexString = /^[0-9a-fA-F]{64}$/.test(modelIdOrPath);\n if (isHexString) {\n throw new ModelLoadFailedError(`Direct hyperdrive keys not supported. Use hyperdriveKey parameter instead. Example: loadModel(\"model.gguf\", \"${modelIdOrPath}\")`);\n }\n // Check if it's a cached file or local file\n const cacheDir = getModelsCacheDir();\n const cachedPath = validateAndJoinPath(cacheDir, modelIdOrPath);\n try {\n await fsPromises.access(cachedPath);\n logger.info(`Loading cached model: ${cachedPath}`);\n // Check if cached file is an archive\n if (isArchivePath(cachedPath)) {\n logger.info(`Extracting cached archive: ${cachedPath}`);\n const archiveHash = generateShortHash(cachedPath);\n const extractDir = getShardedModelCacheDir(archiveHash);\n const extractedPath = await extractAndValidateShardedArchive(cachedPath, extractDir);\n return extractedPath;\n }\n return cachedPath;\n }\n catch {\n // Try as local file in current directory\n try {\n await fsPromises.access(modelIdOrPath);\n logger.info(`Loading local file: ${modelIdOrPath}`);\n // Check if local file is an archive\n if (isArchivePath(modelIdOrPath)) {\n logger.info(`Extracting local archive: ${modelIdOrPath}`);\n const archiveHash = generateShortHash(modelIdOrPath);\n const extractDir = getShardedModelCacheDir(archiveHash);\n const extractedPath = await extractAndValidateShardedArchive(modelIdOrPath, extractDir);\n return extractedPath;\n }\n return modelIdOrPath;\n }\n catch {\n // Invalid model ID - provide helpful error\n const availableModels = models.map((m) => m.modelId);\n throw new ModelNotFoundError(`${modelIdOrPath}\". Available models: ${availableModels.join(', ')}`);\n }\n }\n}\nfunction isDownloadResult(value) {\n return value !== null && typeof value === 'object' && 'path' in value;\n}\nfunction buildResult(pathOrResult, sourceType) {\n if (isDownloadResult(pathOrResult)) {\n return pathOrResult.stats\n ? { path: pathOrResult.path, sourceType, downloadStats: pathOrResult.stats }\n : { path: pathOrResult.path, sourceType };\n }\n return { path: pathOrResult, sourceType };\n}\nasync function resolveModelPathCore(modelSrc, progressCallback, seed, mode, signal, hooks) {\n if (signal?.aborted) {\n throw new InferenceCancelledError(hooks?.requestBinding?.requestId ?? 'unknown');\n }\n const srcString = modelInputToSrcSchema.parse(modelSrc);\n // Empty modelSrc is reserved for plugins that ship bundled weights\n // (e.g. `@qvac/classification-ggml`). The handler skips this resolver\n // for them when `skipPrimaryModelPathValidation` is set, but if it\n // somehow gets called we return an empty path so the plugin's\n // `params.modelPath` falls through to undefined instead of being set\n // to the cache directory itself.\n if (srcString === '') {\n return { path: '', sourceType: 'filesystem' };\n }\n // Parse hyperdrive URLs if present\n let hyperdriveKey;\n let actualModelSrc = srcString;\n if (srcString.startsWith('pear://')) {\n const { key, path: pathValue } = hyperdriveUrlSchema.parse(srcString);\n hyperdriveKey = key;\n actualModelSrc = pathValue;\n }\n // Registry source\n if (srcString.startsWith('registry://')) {\n const { registryPath, registrySource } = registryUrlSchema.parse(srcString);\n logger.info(`Loading from registry: ${registryPath}`);\n // Look up model metadata for checksum validation\n const modelMetadata = getModelByPath(registryPath);\n const explicitMetadata = getExplicitRegistryMetadata(modelSrc);\n const expectedChecksum = modelMetadata?.sha256Checksum ?? explicitMetadata?.sha256Checksum;\n const result = mode === 'stats'\n ? await downloadModelFromRegistryWithStats(registryPath, registrySource, progressCallback, expectedChecksum, hooks, explicitMetadata)\n : await downloadModelFromRegistry(registryPath, registrySource, progressCallback, expectedChecksum, hooks, explicitMetadata);\n logger.info(`Loaded Model to ${isDownloadResult(result) ? result.path : result}`);\n return buildResult(result, 'registry');\n }\n // Validate seeding is only used with hyperdrive models\n if (seed && !hyperdriveKey) {\n throw new SeedingNotSupportedError();\n }\n // HTTP source\n if (actualModelSrc.startsWith('http://') || actualModelSrc.startsWith('https://')) {\n logger.info(`Loading from HTTP URL: ${actualModelSrc}`);\n const result = mode === 'stats'\n ? await downloadModelFromHttpWithStats(actualModelSrc, progressCallback, hooks)\n : await downloadModelFromHttp(actualModelSrc, progressCallback, hooks);\n logger.info(`Loaded Model to ${isDownloadResult(result) ? result.path : result}`);\n return buildResult(result, 'http');\n }\n // Hyperdrive source\n if (hyperdriveKey) {\n logger.info(`Loading from hyperdrive: ${hyperdriveKey}`);\n const result = mode === 'stats'\n ? await downloadModelFromHyperdriveWithStats(hyperdriveKey, actualModelSrc, seed, progressCallback, hooks)\n : await downloadModelFromHyperdrive(hyperdriveKey, actualModelSrc, seed, progressCallback, hooks);\n return buildResult(result, 'hyperdrive');\n }\n // Filesystem source (local files, cached files)\n let resolvedPath;\n if (actualModelSrc.includes('/') || actualModelSrc.includes('\\\\')) {\n if (isArchivePath(actualModelSrc)) {\n logger.info(`Extracting local archive: ${actualModelSrc}`);\n const archiveHash = generateShortHash(actualModelSrc);\n const extractDir = getShardedModelCacheDir(archiveHash);\n resolvedPath = await extractAndValidateShardedArchive(actualModelSrc, extractDir);\n }\n else {\n resolvedPath = actualModelSrc;\n }\n }\n else {\n resolvedPath = await resolveLocalOrCachedFile(actualModelSrc);\n }\n return { path: resolvedPath, sourceType: 'filesystem' };\n}\nexport async function resolveModelPath(modelSrc, progressCallback, seed, signal, hooks) {\n const result = await resolveModelPathCore(modelSrc, progressCallback, seed, 'base', signal, hooks);\n return result.path;\n}\nexport async function resolveModelPathWithStats(modelSrc, progressCallback, seed, signal, hooks) {\n return resolveModelPathCore(modelSrc, progressCallback, seed, 'stats', signal, hooks);\n}\nexport function buildDownloadProfilingFields(downloadStats, sourceType) {\n const gauges = {};\n const tags = {};\n if (downloadStats) {\n if (downloadStats.downloadTimeMs !== undefined) {\n gauges['downloadTime'] = downloadStats.downloadTimeMs;\n }\n if (downloadStats.totalBytesDownloaded !== undefined) {\n gauges['totalBytesDownloaded'] = downloadStats.totalBytesDownloaded;\n }\n if (downloadStats.downloadSpeedBps !== undefined) {\n gauges['downloadSpeedBps'] = downloadStats.downloadSpeedBps;\n }\n if (downloadStats.checksumValidationTimeMs !== undefined) {\n gauges['checksumValidationTime'] = downloadStats.checksumValidationTimeMs;\n }\n if (downloadStats.cacheHit !== undefined) {\n tags['cacheHit'] = downloadStats.cacheHit ? 'true' : 'false';\n }\n if (downloadStats.sharedTransfer) {\n tags['sharedTransfer'] = 'true';\n }\n }\n if (sourceType) {\n tags['sourceType'] = sourceType;\n }\n return { gauges, tags };\n}\nimport { registerLoggingStream, unregisterLoggingStream } from '../../bare/registry/logging-stream-registry.js';\nexport async function* handleLoggingStream(request) {\n const { id } = request;\n const logQueue = [];\n let pendingResolve = null;\n const streamHandler = (level, namespace, message, sourceId) => {\n const logResponse = {\n type: 'loggingStream',\n // For the global SDK_ALL_LOG_ID stream `sourceId` is the real origin of the\n // log; for a per-id stream it equals the subscription `id`.\n id: sourceId,\n level: level,\n namespace,\n message,\n timestamp: Date.now()\n };\n logQueue.push(logResponse);\n if (pendingResolve) {\n const resolve = pendingResolve;\n pendingResolve = null;\n resolve();\n }\n };\n registerLoggingStream(id, streamHandler);\n try {\n while (true) {\n while (logQueue.length > 0) {\n yield logQueue.shift();\n }\n // Wait for new logs - stream will terminate when client disconnects\n await new Promise((resolve) => {\n pendingResolve = resolve;\n });\n }\n }\n finally {\n unregisterLoggingStream(id, streamHandler);\n }\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleOCRStream(request) {\n yield* dispatchPluginStream(request.modelId, 'ocrStream', request);\n}\nimport { getModelEntry } from '../../bare/registry/model-registry.js';\nimport { getAllPlugins, getPlugin } from '../../plugins/index.js';\nimport { profileReplyHandler, profileStreamHandler } from '../profiling/index.js';\nimport { ModelNotFoundError, ModelIsDelegatedError, ModelOperationNotSupportedError, PluginNotFoundError, PluginHandlerTypeMismatchError } from '../../../utils/errors-server.js';\nfunction resolvePluginHandlerDef(modelId, handlerName) {\n const entry = getModelEntry(modelId);\n if (!entry) {\n throw new ModelNotFoundError(modelId);\n }\n if (entry.isDelegated) {\n throw new ModelIsDelegatedError(modelId);\n }\n const plugin = getPlugin(entry.local.modelType);\n if (!plugin) {\n throw new PluginNotFoundError(entry.local.modelType);\n }\n const handlerDef = plugin.handlers[handlerName];\n if (!handlerDef) {\n const loadedModelType = entry.local.modelType;\n const supportedOperations = Object.keys(plugin.handlers);\n const suggestedModelTypes = getAllPlugins()\n .filter((p) => p.modelType !== loadedModelType && handlerName in p.handlers)\n .map((p) => p.modelType);\n throw new ModelOperationNotSupportedError(modelId, loadedModelType, handlerName, supportedOperations, suggestedModelTypes);\n }\n return handlerDef;\n}\nfunction resolvePluginHandler(modelId, handlerName, request) {\n const handlerDef = resolvePluginHandlerDef(modelId, handlerName);\n return {\n result: handlerDef.handler(request),\n streaming: handlerDef.streaming\n };\n}\nexport async function dispatchPluginReply(modelId, handlerName, request) {\n return profileReplyHandler({ op: handlerName, request }, async () => {\n const { result, streaming } = resolvePluginHandler(modelId, handlerName, request);\n if (streaming) {\n throw new PluginHandlerTypeMismatchError(handlerName, 'reply', 'streaming');\n }\n return result;\n });\n}\nexport async function* dispatchPluginStream(modelId, handlerName, request, inputStream) {\n yield* profileStreamHandler({ op: handlerName, request }, async function* () {\n const handlerDef = resolvePluginHandlerDef(modelId, handlerName);\n if (inputStream) {\n if (!handlerDef.duplex) {\n throw new PluginHandlerTypeMismatchError(handlerName, 'duplex', handlerDef.streaming ? 'streaming' : 'reply');\n }\n yield* handlerDef.handler(request, inputStream);\n }\n else {\n if (handlerDef.duplex) {\n throw new PluginHandlerTypeMismatchError(handlerName, 'streaming', 'duplex');\n }\n if (!handlerDef.streaming) {\n throw new PluginHandlerTypeMismatchError(handlerName, 'streaming', 'reply');\n }\n yield* handlerDef.handler(request);\n }\n });\n}\nimport { getModelEntry } from '../../bare/registry/model-registry.js';\nimport { getPlugin, getPluginHandler } from '../../plugins/index.js';\nimport { profileReplyHandler, profileStreamHandler } from '../profiling/index.js';\nimport { PluginNotFoundError, PluginHandlerNotFoundError, PluginHandlerTypeMismatchError, PluginRequestValidationFailedError, PluginResponseValidationFailedError, ModelIsDelegatedError, ModelNotFoundError } from '../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../logging/index.js';\nimport { formatZodError } from '../../../utils/zod-error.js';\nconst logger = getServerLogger();\nfunction resolvePluginHandler(modelId, handlerName) {\n const modelEntry = getModelEntry(modelId);\n if (!modelEntry) {\n throw new ModelNotFoundError(modelId);\n }\n if (modelEntry.isDelegated) {\n throw new ModelIsDelegatedError(modelId);\n }\n const modelType = modelEntry.local.modelType;\n const plugin = getPlugin(modelType);\n if (!plugin) {\n throw new PluginNotFoundError(modelType);\n }\n const handlerDef = getPluginHandler(modelType, handlerName);\n if (!handlerDef) {\n const availableHandlers = Object.keys(plugin.handlers);\n throw new PluginHandlerNotFoundError(modelType, handlerName, availableHandlers);\n }\n return { modelType, plugin, handlerDef };\n}\nexport async function handlePluginInvoke(request) {\n return profileReplyHandler({ op: 'pluginInvoke', request }, async () => {\n const { modelId, handler: handlerName, params } = request;\n logger.debug(`[pluginInvoke] modelId=${modelId} handler=${handlerName}`);\n const { handlerDef } = resolvePluginHandler(modelId, handlerName);\n if (handlerDef.streaming) {\n throw new PluginHandlerTypeMismatchError(handlerName, 'reply', 'streaming');\n }\n const parseResult = handlerDef.requestSchema.safeParse(params);\n if (!parseResult.success) {\n throw new PluginRequestValidationFailedError(handlerName, formatZodError(parseResult.error));\n }\n const result = await handlerDef.handler(parseResult.data);\n const responseParseResult = handlerDef.responseSchema.safeParse(result);\n if (!responseParseResult.success) {\n throw new PluginResponseValidationFailedError(handlerName, formatZodError(responseParseResult.error));\n }\n return {\n type: 'pluginInvoke',\n result: responseParseResult.data\n };\n });\n}\nexport async function* handlePluginInvokeStream(request) {\n yield* profileStreamHandler({ op: 'pluginInvokeStream', request }, async function* () {\n const { modelId, handler: handlerName, params } = request;\n logger.debug(`[pluginInvokeStream] modelId=${modelId} handler=${handlerName}`);\n const { handlerDef } = resolvePluginHandler(modelId, handlerName);\n if (!handlerDef.streaming) {\n throw new PluginHandlerTypeMismatchError(handlerName, 'streaming', 'reply');\n }\n const parseResult = handlerDef.requestSchema.safeParse(params);\n if (!parseResult.success) {\n throw new PluginRequestValidationFailedError(handlerName, formatZodError(parseResult.error));\n }\n const generator = handlerDef.handler(parseResult.data);\n for await (const chunk of generator) {\n const responseParseResult = handlerDef.responseSchema.safeParse(chunk);\n if (!responseParseResult.success) {\n throw new PluginResponseValidationFailedError(handlerName, formatZodError(responseParseResult.error));\n }\n yield {\n type: 'pluginInvokeStream',\n result: responseParseResult.data,\n done: false\n };\n }\n yield {\n type: 'pluginInvokeStream',\n result: null,\n done: true\n };\n });\n}\n// Re-export the provideHandler from the refactored provideHandler modules\nexport { provideHandler } from './provideHandler/handler.js';\nimport RPC from 'bare-rpc';\nimport { createRpcProxy } from './proxy.js';\nimport { hasActiveProviders } from '../../../bare/hyperswarm.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nconst logger = getServerLogger();\nexport function setupConnectionHandlers(swarm) {\n logger.debug('👂 Setting up connection listener...');\n swarm.on('close', () => {\n logger.debug('🔗 Connection closed!');\n });\n swarm.on('connection', (conn) => {\n const peerPubkey = conn.remotePublicKey?.toString('hex');\n // The swarm is shared between consumer and provider sides, and once\n // `swarm.listen()` has bound our keyPair on the DHT we cannot un-bind\n // it without destroying the swarm. To honor `stopQVACProvider()` —\n // which decrements `activeProviderCount` to 0 — we drop incoming\n // connections at the RPC layer when there's no active provider, so\n // peers can no longer dispatch delegated requests at us.\n if (!hasActiveProviders()) {\n logger.debug(`🚪 Dropping inbound connection from ${peerPubkey?.substring(0, 16)}... — provider is stopped`);\n conn.destroy();\n return;\n }\n logger.debug('🔗 Connection event triggered!');\n logger.info(`📡 New connection established from: ${peerPubkey?.substring(0, 16)}...`);\n logger.debug('🔐 Full peer public key:', peerPubkey);\n logger.debug('⚙️ Creating RPC instance for connection...');\n new RPC(conn, createRpcProxy());\n logger.debug('✅ RPC instance created successfully');\n conn.on('close', () => {\n logger.debug(`🔌 Connection closed for peer: ${peerPubkey?.substring(0, 16)}`);\n });\n conn.on('error', (err) => {\n logger.error(`❌ Connection error for peer ${peerPubkey?.substring(0, 16)}:`, err);\n });\n });\n logger.debug('✅ Connection listener set up');\n}\nimport { getSwarm, hasActiveProviders, registerProvider } from '../../../bare/hyperswarm.js';\nimport { setupConnectionHandlers } from './connection.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nconst logger = getServerLogger();\n// Tracks whether the connection listener has been attached on this swarm\n// instance. `swarm.listen()` and `swarm.on(\"connection\", ...)` cannot be\n// undone without destroying the swarm (which is shared with consumers), so\n// we only ever set them up once per process and gate inbound RPC mounting\n// inside the listener on `hasActiveProviders()`.\nlet listenerAttached = false;\n// Consumers reach the provider by calling `dht.connect(publicKey)` directly,\n// so the provider only needs its DHT server bound on its keyPair — no topic\n// announce required. `swarm.listen()` is the minimal operation that makes\n// the keyPair reachable on the DHT.\n//\n// This handler is idempotent: a second `startQVACProvider()` call returns\n// success without re-listening, re-attaching listeners, or double-counting\n// the active-provider counter (which would prevent a single `stopQVACProvider`\n// from cleanly shutting things down).\nexport async function provideHandler(request) {\n const swarm = getSwarm({\n firewallConfig: request.firewall\n });\n logger.debug('🚀 Provide request received:', request);\n try {\n const pubKey = swarm.keyPair.publicKey;\n logger.debug('🔑 Provider public key:', pubKey.toString('hex'));\n if (hasActiveProviders()) {\n logger.info('ℹ️ Provider already running, returning existing identity');\n return {\n type: 'provide',\n success: true,\n publicKey: pubKey.toString('hex')\n };\n }\n // We must wait for the DHT routing table to populate BEFORE announcing.\n // `swarm.listen()` only does a single initial announce using whatever\n // peers are in the routing table at that moment — if the DHT isn't\n // bootstrapped yet, that announce reaches very few nodes and consumers\n // won't be able to find us via dht.connect(publicKey).\n logger.info('🌐 Waiting for DHT to fully bootstrap...');\n await swarm.dht.fullyBootstrapped();\n logger.info('🌐 Announcing provider on DHT (binding keyPair)...');\n await swarm.listen();\n logger.info('🎯 Provider is listening and ready to accept connections');\n if (!listenerAttached) {\n setupConnectionHandlers(swarm);\n listenerAttached = true;\n }\n registerProvider();\n return {\n type: 'provide',\n success: true,\n publicKey: pubKey.toString('hex')\n };\n }\n catch (error) {\n logger.error('❌ Error in provide handler:', error);\n logger.error('❌ Error stack:', error instanceof Error ? error.stack : 'No stack trace');\n return {\n type: 'provide',\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n}\nimport { handleRequest } from '../../handle-request.js';\nimport { getServerLogger } from '../../../../logging/index.js';\nconst logger = getServerLogger();\n// Proxies RPC requests to the main handler: handleRequest\nexport function createRpcProxy() {\n return async (rpcRequest) => {\n logger.debug('📬 RPC request callback triggered!');\n logger.debug('📦 Raw RPC request data:', rpcRequest.data?.toString());\n try {\n logger.debug('🚀 Calling handleRequest...');\n await handleRequest(rpcRequest);\n logger.debug('✅ handleRequest completed successfully');\n }\n catch (error) {\n logger.error('❌ Error:', error instanceof Error ? error.message : error);\n const errorResponse = JSON.stringify({\n type: 'error',\n error: error instanceof Error ? error.message : 'Unknown error'\n });\n logger.debug('📤 Sending error response:', errorResponse);\n rpcRequest.reply(errorResponse, 'utf-8');\n }\n };\n}\nvar __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n};\nvar __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {\n return function (env) {\n function fail(e) {\n env.error = env.hasError ? new SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n };\n})(typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n});\nimport { chunk, ingest, reindex, saveEmbeddings, search, deleteEmbeddings, listWorkspaces, closeWorkspace, deleteWorkspace, DEFAULT_WORKSPACE, getActiveRagRequest, setActiveRagRequest, clearActiveRagRequest } from '../../bare/rag-hyperdb/index.js';\nimport { getRequestRegistry, withRequestContext } from '../../bare/runtime/index.js';\nimport { generateServerRequestId } from '../../bare/runtime/request-id.js';\nimport { getServerLogger } from '../../../logging/index.js';\nimport { profileReplyHandler, registerOperationMetrics } from '../profiling/index.js';\nregisterOperationMetrics({\n op: 'rag',\n kind: 'handler',\n getTags: (req) => {\n const tags = {};\n if (req.operation)\n tags['operation'] = req.operation;\n if (req.workspace)\n tags['workspace'] = req.workspace;\n return tags;\n },\n fromResult: (res) => {\n const gauges = {};\n if (res.processed !== undefined)\n gauges['processed'] = res.processed.length;\n if (res.results !== undefined)\n gauges['resultsCount'] = res.results.length;\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\nfunction createHandlerOptions(operation, workspace, signal, onProgress) {\n const options = { signal };\n if (onProgress) {\n options.onProgress = (stage, current, total) => onProgress({\n type: 'rag:progress',\n operation,\n workspace,\n stage,\n current,\n total,\n timestamp: Date.now()\n });\n }\n return options;\n}\nfunction omitOnProgress(obj) {\n const { onProgress, withProgress, ...rest } = obj;\n void onProgress;\n void withProgress;\n return rest;\n}\n/**\n * Begin a registry-tracked RAG context with workspace-level pre-emption.\n *\n * Workspace-level admission lives in the dispatcher rather than as a\n * registry policy primitive (it's a dispatch concern, not a registry\n * `kind` admission rule). The sequence is **cancel-prior → begin-new**:\n * if another RAG operation is already running on the same workspace,\n * cancel it first, then begin the new context. Reversing the order\n * would cancel the just-installed context.\n *\n * The workspace → requestId map is updated after `begin(...)` succeeds\n * and cleared on scope unwind via `scope.defer(...)`, with a\n * \"still mine?\" guard so an older op's deferred cleanup cannot stomp\n * a newer op's mapping.\n */\nasync function beginRagContext(workspace, requestId) {\n const registry = getRequestRegistry();\n const prev = getActiveRagRequest(workspace);\n if (prev !== undefined && prev !== requestId) {\n registry.cancel({ requestId: prev, reason: 'rag-workspace-preempt' });\n }\n const ctx = await registry.begin({\n requestId,\n kind: 'rag'\n });\n setActiveRagRequest(workspace, requestId);\n ctx.scope.defer(() => {\n clearActiveRagRequest(workspace, requestId);\n });\n return ctx;\n}\nexport async function handleRag(request, onProgress) {\n return profileReplyHandler({ op: 'rag', request }, async () => handleRagInternal(request, onProgress));\n}\nasync function handleRagInternal(request, onProgress) {\n switch (request.operation) {\n case 'chunk': {\n const chunks = await chunk(request);\n return {\n type: 'rag',\n operation: request.operation,\n success: true,\n chunks\n };\n }\n case 'ingest': {\n const env_1 = { stack: [], error: void 0, hasError: false };\n try {\n const workspace = request.workspace ?? DEFAULT_WORKSPACE;\n const requestId = request.requestId ?? generateServerRequestId();\n const ctx = __addDisposableResource(env_1, await beginRagContext(workspace, requestId), true);\n const log = withRequestContext(getServerLogger(), ctx);\n log.debug('ingest start');\n const handlerOptions = createHandlerOptions('ingest', workspace, ctx.signal, onProgress);\n const params = omitOnProgress(request);\n const result = await ingest(params, handlerOptions);\n return {\n type: 'rag',\n operation: request.operation,\n success: true,\n processed: result.processed,\n droppedIndices: result.droppedIndices\n };\n }\n catch (e_1) {\n env_1.error = e_1;\n env_1.hasError = true;\n }\n finally {\n const result_1 = __disposeResources(env_1);\n if (result_1)\n await result_1;\n }\n }\n case 'saveEmbeddings': {\n const env_2 = { stack: [], error: void 0, hasError: false };\n try {\n const workspace = request.workspace ?? DEFAULT_WORKSPACE;\n const requestId = request.requestId ?? generateServerRequestId();\n const ctx = __addDisposableResource(env_2, await beginRagContext(workspace, requestId), true);\n const log = withRequestContext(getServerLogger(), ctx);\n log.debug('saveEmbeddings start');\n const handlerOptions = createHandlerOptions('saveEmbeddings', workspace, ctx.signal, onProgress);\n const params = omitOnProgress(request);\n const processed = await saveEmbeddings(params, handlerOptions);\n return {\n type: 'rag',\n operation: request.operation,\n success: true,\n processed\n };\n }\n catch (e_2) {\n env_2.error = e_2;\n env_2.hasError = true;\n }\n finally {\n const result_2 = __disposeResources(env_2);\n if (result_2)\n await result_2;\n }\n }\n case 'search': {\n const results = await search(request);\n return {\n type: 'rag',\n operation: request.operation,\n success: true,\n results\n };\n }\n case 'deleteEmbeddings': {\n await deleteEmbeddings(request);\n return {\n type: 'rag',\n operation: request.operation,\n success: true\n };\n }\n case 'reindex': {\n const env_3 = { stack: [], error: void 0, hasError: false };\n try {\n const workspace = request.workspace ?? DEFAULT_WORKSPACE;\n const requestId = request.requestId ?? generateServerRequestId();\n const ctx = __addDisposableResource(env_3, await beginRagContext(workspace, requestId), true);\n const log = withRequestContext(getServerLogger(), ctx);\n log.debug('reindex start');\n const handlerOptions = createHandlerOptions('reindex', workspace, ctx.signal, onProgress);\n const params = omitOnProgress(request);\n const result = await reindex(params, handlerOptions);\n return {\n type: 'rag',\n operation: request.operation,\n success: true,\n result\n };\n }\n catch (e_3) {\n env_3.error = e_3;\n env_3.hasError = true;\n }\n finally {\n const result_3 = __disposeResources(env_3);\n if (result_3)\n await result_3;\n }\n }\n case 'listWorkspaces': {\n const workspaces = listWorkspaces();\n return {\n type: 'rag',\n operation: request.operation,\n success: true,\n workspaces\n };\n }\n case 'closeWorkspace': {\n await closeWorkspace(request);\n return {\n type: 'rag',\n operation: request.operation,\n success: true\n };\n }\n case 'deleteWorkspace': {\n await deleteWorkspace(request);\n return {\n type: 'rag',\n operation: request.operation,\n success: true\n };\n }\n }\n}\nimport { REGISTRY_ERROR_CODES } from '../../../schemas/sdk-errors-registry.js';\nimport { getAddonFromEngine, resolveCanonicalEngine } from '../../../schemas/engine-addon-map.js';\nimport { getRegistryClient } from '../../bare/registry/registry-client.js';\nimport { getServerLogger } from '../../../logging/index.js';\nimport { ModelRegistryQueryFailedError } from '../../../utils/errors-server.js';\nconst logger = getServerLogger();\nfunction toHexString(value) {\n if (!value)\n return '';\n if (Buffer.isBuffer(value))\n return value.toString('hex');\n if (typeof value === 'string')\n return value;\n if (typeof value === 'object' && 'data' in value) {\n return Buffer.from(value.data).toString('hex');\n }\n return '';\n}\nfunction processRegistryModel(model) {\n const engine = resolveCanonicalEngine(model.engine || '');\n if (!engine) {\n logger.warn(`Skipping model with unknown engine \"${model.engine}\": ${model.path}`);\n return null;\n }\n const filename = model.path.split('/').pop() || model.path;\n const blobBinding = model.blobBinding;\n const blobCoreKey = toHexString(blobBinding?.coreKey);\n const blobBlockOffset = blobBinding?.blockOffset ?? 0;\n const blobBlockLength = blobBinding?.blockLength ?? 0;\n const blobByteOffset = blobBinding?.byteOffset ?? 0;\n const expectedSize = blobBinding?.byteLength ?? 0;\n // sha256 lives on blobBinding at runtime (per hyperschema), fall back to top-level\n const sha256Checksum = blobBinding?.['sha256'] || model.sha256 || '';\n const addon = getAddonFromEngine(engine);\n // Use the filename without extension as the display name\n const name = filename.replace(/\\.\\w+$/, '');\n return {\n name,\n registryPath: model.path,\n registrySource: model.source,\n blobCoreKey,\n blobBlockOffset,\n blobBlockLength,\n blobByteOffset,\n modelId: filename,\n addon,\n expectedSize,\n sha256Checksum,\n engine,\n quantization: model.quantization || '',\n params: model.params || ''\n };\n}\nexport async function handleModelRegistryList() {\n logger.debug('Handling QVAC model registry list request');\n try {\n const client = await getRegistryClient();\n const registryModels = await client.findBy();\n const models = registryModels\n .map(processRegistryModel)\n .filter((m) => m !== null);\n logger.debug(`QVAC model registry list returned ${models.length} models`);\n return {\n type: 'modelRegistryList',\n success: true,\n models\n };\n }\n catch (error) {\n logger.error('QVAC model registry list failed:', error);\n // Re-throw registry client errors directly (19001-19003)\n const qvacError = error;\n if (qvacError.code === REGISTRY_ERROR_CODES.FAILED_TO_CONNECT ||\n qvacError.code === REGISTRY_ERROR_CODES.FAILED_TO_CLOSE ||\n qvacError.code === REGISTRY_ERROR_CODES.MODEL_NOT_FOUND) {\n throw error;\n }\n // Wrap unknown errors in SDK error\n throw new ModelRegistryQueryFailedError(error instanceof Error ? error.message : 'Unknown error', error);\n }\n}\nexport async function handleModelRegistrySearch(request) {\n logger.debug('Handling QVAC model registry search request', request);\n try {\n const client = await getRegistryClient();\n const registryModels = await client.findBy({\n ...(request.quantization && { quantization: request.quantization })\n });\n let models = registryModels\n .map(processRegistryModel)\n .filter((m) => m !== null);\n if (request.engine) {\n const canonicalEngine = resolveCanonicalEngine(request.engine);\n models = models.filter((m) => m.engine === (canonicalEngine ?? request.engine));\n }\n if (request.filter) {\n const filterLower = request.filter.toLowerCase();\n models = models.filter((m) => m.name.toLowerCase().includes(filterLower) ||\n m.registryPath.toLowerCase().includes(filterLower) ||\n m.addon.toLowerCase().includes(filterLower) ||\n m.engine.toLowerCase().includes(filterLower));\n }\n if (request.addon) {\n models = models.filter((m) => m.addon === request.addon);\n }\n logger.debug(`QVAC model registry search returned ${models.length} models`);\n return {\n type: 'modelRegistrySearch',\n success: true,\n models\n };\n }\n catch (error) {\n logger.error('QVAC model registry search failed:', error);\n // Re-throw registry client errors directly (19001-19003)\n const qvacError = error;\n if (qvacError.code === REGISTRY_ERROR_CODES.FAILED_TO_CONNECT ||\n qvacError.code === REGISTRY_ERROR_CODES.FAILED_TO_CLOSE ||\n qvacError.code === REGISTRY_ERROR_CODES.MODEL_NOT_FOUND) {\n throw error;\n }\n throw new ModelRegistryQueryFailedError(error instanceof Error ? error.message : 'Unknown error', error);\n }\n}\nexport async function handleModelRegistryGetModel(request) {\n logger.debug('Handling QVAC model registry get model request', request);\n try {\n const client = await getRegistryClient();\n const rawModel = await client.getModel(request.registryPath, request.registrySource);\n if (!rawModel) {\n throw new ModelRegistryQueryFailedError(`Model not found: ${request.registrySource}/${request.registryPath}`);\n }\n const model = processRegistryModel(rawModel);\n if (!model) {\n throw new ModelRegistryQueryFailedError(`Model has unknown engine \"${rawModel.engine}\": ${request.registryPath}`);\n }\n logger.debug('QVAC model registry get model found:', model.name);\n return {\n type: 'modelRegistryGetModel',\n success: true,\n model\n };\n }\n catch (error) {\n logger.error('QVAC model registry get model failed:', error);\n // Re-throw registry client errors directly (19001-19003)\n const qvacError = error;\n if (qvacError.code === REGISTRY_ERROR_CODES.FAILED_TO_CONNECT ||\n qvacError.code === REGISTRY_ERROR_CODES.FAILED_TO_CLOSE ||\n qvacError.code === REGISTRY_ERROR_CODES.MODEL_NOT_FOUND) {\n throw error;\n }\n throw new ModelRegistryQueryFailedError(error instanceof Error ? error.message : 'Unknown error', error);\n }\n}\nimport { resumeRuntime } from '../../bare/runtime-lifecycle.js';\nimport { LifecycleResumeFailedError } from '../../../utils/errors-server.js';\nexport async function handleResume() {\n try {\n await resumeRuntime();\n return { type: 'resume' };\n }\n catch (error) {\n throw new LifecycleResumeFailedError(error instanceof Error ? error.message : String(error), error);\n }\n}\nimport { getLifecycleState } from '../../bare/runtime-lifecycle.js';\nexport function handleState() {\n return {\n type: 'state',\n state: getLifecycleState()\n };\n}\nimport { unregisterProvider } from '../../bare/hyperswarm.js';\nimport { getServerLogger } from '../../../logging/index.js';\nconst logger = getServerLogger();\n// Decrements the active-provider counter. The shared connection listener\n// (set up once in `provideHandler` per process) checks `hasActiveProviders()`\n// before mounting an RPC server on incoming sockets, so once the counter\n// reaches 0 inbound peers are dropped and remote calls stop being served.\n//\n// We deliberately do NOT destroy the swarm or unbind the keyPair from the\n// DHT here, because the same swarm is also used by this SDK instance as a\n// consumer (delegate-rpc-client.ts). Stopping the provider role must not\n// kill outgoing delegation connections.\nexport function stopProvideHandler() {\n try {\n unregisterProvider();\n return {\n type: 'stopProvide',\n success: true\n };\n }\n catch (error) {\n logger.error('❌ Error in stop provide handler:', error);\n return {\n type: 'stopProvide',\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n}\nimport { suspendRuntime } from '../../bare/runtime-lifecycle.js';\nimport { LifecycleSuspendFailedError } from '../../../utils/errors-server.js';\nexport async function handleSuspend() {\n try {\n await suspendRuntime();\n return { type: 'suspend' };\n }\n catch (error) {\n throw new LifecycleSuspendFailedError(error instanceof Error ? error.message : String(error), error);\n }\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleTextToSpeechStream(request, inputStream) {\n yield* dispatchPluginStream(request.modelId, 'textToSpeechStream', request, inputStream);\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleTextToSpeech(request) {\n yield* dispatchPluginStream(request.modelId, 'textToSpeech', request);\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleTranscribeStream(request, inputStream) {\n yield* dispatchPluginStream(request.modelId, 'transcribeStream', request, inputStream);\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleTranscribe(request) {\n yield* dispatchPluginStream(request.modelId, 'transcribe', request);\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleTranslate(request) {\n yield* dispatchPluginStream(request.modelId, 'translate', request);\n}\nimport { getModelEntry, unregisterModel } from '../../bare/registry/model-registry.js';\nimport { getRPC } from '../../bare/delegate-rpc-client.js';\nimport { send } from '../delegate-transport.js';\nimport { hasActiveProviders } from '../../bare/hyperswarm.js';\nimport { getRegistryStats } from '../../bare/registry/model-registry.js';\nimport { ModelIsDelegatedError } from '../../../utils/errors-server.js';\nimport { getServerLogger } from '../../../logging/index.js';\nconst logger = getServerLogger();\nexport async function handleUnloadModelDelegated(request) {\n const entry = getModelEntry(request.modelId);\n if (!entry?.isDelegated) {\n throw new ModelIsDelegatedError(request.modelId);\n }\n const { providerPublicKey, timeout, healthCheckTimeout } = entry.delegated;\n unregisterModel(request.modelId);\n try {\n logger.info(`Sending delegated unload for model ${request.modelId} to provider: ${providerPublicKey}`);\n const rpc = await getRPC(providerPublicKey, { timeout, healthCheckTimeout });\n await send({ type: 'unloadModel', modelId: request.modelId, clearStorage: false }, rpc, { timeout, peerKey: providerPublicKey });\n logger.info(`Delegated model ${request.modelId} unloaded on provider`);\n }\n catch (error) {\n logger.error(`Failed to unload delegated model ${request.modelId} on provider:`, error);\n }\n const stats = getRegistryStats();\n return {\n type: 'unloadModel',\n success: true,\n hasActiveModels: stats.totalModels > 0,\n hasActiveProviders: hasActiveProviders()\n };\n}\nimport { unloadModel } from '../../bare/ops/unload-model.js';\nimport { getRegistryStats } from '../../bare/registry/model-registry.js';\nimport { hasActiveProviders } from '../../bare/hyperswarm.js';\nimport { getServerLogger } from '../../../logging/index.js';\nconst logger = getServerLogger();\nexport async function handleUnloadModel(request) {\n const { modelId, clearStorage } = request;\n try {\n logger.debug('Unloading model', modelId);\n await unloadModel({ modelId, clearStorage });\n const stats = getRegistryStats();\n const modelsActive = stats.totalModels > 0;\n const providersActive = hasActiveProviders();\n return {\n type: 'unloadModel',\n success: true,\n hasActiveModels: modelsActive,\n hasActiveProviders: providersActive\n };\n }\n catch (error) {\n logger.error('Error during model unload:', error);\n return {\n type: 'unloadModel',\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleUpscaleStream(request) {\n yield* dispatchPluginStream(request.modelId, 'upscaleStream', request);\n}\nimport { dispatchPluginStream } from './plugin-dispatch.js';\nexport async function* handleVideoStream(request) {\n yield* dispatchPluginStream(request.modelId, 'videoStream', request);\n}\nimport { PROFILING_KEY } from '../../../schemas/index.js';\nimport { nowMs } from '../../../profiling/index.js';\nexport function createProfilingContext(meta) {\n return { meta, requestStart: nowMs() };\n}\nfunction buildServerBreakdown(ctx) {\n return {\n requestJsonParseMs: ctx.jsonParseMs,\n requestZodValidationMs: ctx.zodValidationMs,\n handlerExecutionMs: ctx.handlerExecutionMs,\n responseZodValidationMs: ctx.responseZodValidationMs,\n responseStringifyMs: ctx.responseStringifyMs,\n totalServerMs: nowMs() - ctx.requestStart\n };\n}\nexport function injectProfilingIntoString(jsonString, options) {\n const { ctx, delegation, operation } = options;\n const includeServer = ctx?.meta.includeServer ?? false;\n const hasContent = includeServer || !!delegation || !!operation;\n if (!hasContent || !jsonString.endsWith('}')) {\n return jsonString;\n }\n const id = ctx?.meta.id ?? delegation?.profileId ?? operation?.profileId ?? '';\n const profilingMeta = { id };\n if (includeServer && ctx) {\n profilingMeta['server'] = buildServerBreakdown(ctx);\n }\n if (delegation) {\n const { profileId: _unused, ...delegationWithoutId } = delegation;\n void _unused;\n profilingMeta['delegation'] = delegationWithoutId;\n }\n if (operation) {\n profilingMeta['operation'] = operation;\n }\n return jsonString.slice(0, -1) + `,\"${PROFILING_KEY}\":${JSON.stringify(profilingMeta)}}`;\n}\nimport { nowMs, record, shouldProfile, recordPhase, recordServerBreakdownPhases } from '../../../profiling/index.js';\n/**\n * Per-peer connection tracking for delegation.\n * Separate tracking for server-side event recording vs breakdown injection.\n *\n * Flow:\n * 1. Connection happens → cacheDelegationConnectionTime stores ms\n * 2. First profiled call (stream or unary) → flushServerConnectionEvent records server event\n * 3. First unary call → consumeBreakdownConnectionTime returns ms for breakdown injection\n */\nconst pendingConnectionTimes = new Map();\nconst serverConnectionRecorded = new Map();\nconst breakdownConnectionMs = new Map();\nconst breakdownConnectionInjected = new Map();\nexport function shouldProfileDelegation(op, incomingMeta) {\n if (incomingMeta?.enabled === false) {\n return false;\n }\n if (incomingMeta?.enabled === true) {\n return true;\n }\n return shouldProfile(op);\n}\nexport function createDelegationTimings(profileId, requestType) {\n return { profileId, requestType, requestStart: nowMs() };\n}\nexport function createDelegationStreamTimings(profileId, requestType) {\n return { profileId, requestType, requestStart: nowMs(), chunkCount: 0 };\n}\nexport function cacheDelegationConnectionTime(peerKey, durationMs) {\n if (serverConnectionRecorded.get(peerKey))\n return;\n if (pendingConnectionTimes.has(peerKey))\n return;\n pendingConnectionTimes.set(peerKey, durationMs);\n}\nexport function flushServerConnectionEvent(peerKey) {\n if (serverConnectionRecorded.get(peerKey))\n return;\n const ms = pendingConnectionTimes.get(peerKey);\n if (ms === undefined)\n return;\n pendingConnectionTimes.delete(peerKey);\n serverConnectionRecorded.set(peerKey, true);\n if (!breakdownConnectionInjected.get(peerKey)) {\n breakdownConnectionMs.set(peerKey, ms);\n }\n record({\n ts: nowMs(),\n op: 'delegation',\n kind: 'delegation',\n phase: 'connection',\n ms,\n tags: { peer: peerKey.slice(0, 16) }\n });\n}\nexport function consumeBreakdownConnectionTime(peerKey) {\n if (breakdownConnectionInjected.get(peerKey))\n return undefined;\n const ms = breakdownConnectionMs.get(peerKey);\n if (ms === undefined)\n return undefined;\n breakdownConnectionMs.delete(peerKey);\n breakdownConnectionInjected.set(peerKey, true);\n return ms;\n}\nexport function buildDelegationBreakdown(timings, connectionMs) {\n const now = nowMs();\n const breakdown = {\n profileId: timings.profileId\n };\n if (connectionMs !== undefined) {\n breakdown.connectionMs = connectionMs;\n }\n if (timings.requestStringifyMs !== undefined) {\n breakdown.requestStringifyMs = timings.requestStringifyMs;\n }\n if (timings.sendStart !== undefined && timings.firstResponseAt !== undefined) {\n breakdown.serverWaitMs = timings.firstResponseAt - timings.sendStart;\n }\n if (timings.responseJsonParseMs !== undefined) {\n breakdown.responseJsonParseMs = timings.responseJsonParseMs;\n }\n breakdown.totalDelegationMs = now - timings.requestStart;\n return breakdown;\n}\nexport function buildDelegationStreamBreakdown(timings) {\n const now = nowMs();\n const breakdown = {\n profileId: timings.profileId\n };\n if (timings.requestStringifyMs !== undefined) {\n breakdown.requestStringifyMs = timings.requestStringifyMs;\n }\n if (timings.sendStart !== undefined && timings.firstChunkAt !== undefined) {\n breakdown.serverWaitMs = timings.firstChunkAt - timings.sendStart;\n }\n breakdown.totalDelegationMs = now - timings.requestStart;\n return breakdown;\n}\nexport function recordDelegationEvents(timings, serverMeta, connectionMs) {\n const now = nowMs();\n const base = {\n ts: now,\n op: timings.requestType,\n kind: 'delegation',\n profileId: timings.profileId\n };\n const breakdown = buildDelegationBreakdown(timings, connectionMs);\n recordPhase(base, 'request.stringify', breakdown.requestStringifyMs);\n recordPhase(base, 'serverWait', breakdown.serverWaitMs);\n recordPhase(base, 'response.jsonParse', breakdown.responseJsonParseMs);\n recordPhase(base, 'totalDelegationTime', breakdown.totalDelegationMs);\n if (serverMeta?.server) {\n recordServerBreakdownPhases(base, serverMeta.server, 'delegated');\n }\n return breakdown;\n}\nexport function recordDelegationStreamEvents(timings, serverMeta) {\n const now = nowMs();\n const totalTime = now - timings.requestStart;\n const base = {\n ts: now,\n op: timings.requestType,\n kind: 'delegation',\n profileId: timings.profileId\n };\n recordPhase(base, 'request.stringify', timings.requestStringifyMs);\n if (timings.sendStart !== undefined && timings.firstChunkAt !== undefined) {\n recordPhase(base, 'ttfb', timings.firstChunkAt - timings.sendStart);\n }\n if (timings.firstChunkAt !== undefined && timings.lastChunkAt !== undefined) {\n recordPhase(base, 'streamDuration', timings.lastChunkAt - timings.firstChunkAt);\n }\n recordPhase(base, 'totalDelegationTime', totalTime, {\n count: timings.chunkCount\n });\n if (serverMeta?.server) {\n recordServerBreakdownPhases(base, serverMeta.server, 'delegated');\n }\n}\nexport function clearPeerConnectionTracking(peerKey) {\n pendingConnectionTimes.delete(peerKey);\n serverConnectionRecorded.delete(peerKey);\n breakdownConnectionMs.delete(peerKey);\n breakdownConnectionInjected.delete(peerKey);\n}\nexport function resetDelegationConnectionTracking() {\n pendingConnectionTimes.clear();\n serverConnectionRecorded.clear();\n breakdownConnectionMs.clear();\n breakdownConnectionInjected.clear();\n}\nexport { createServerProfiler } from './profiler.js';\nexport { profileReplyHandler, profileStreamHandler } from './operation-wrappers.js';\nexport { registerOperationMetrics, buildOperationEvent } from './operation-metrics.js';\nexport { shouldProfileDelegation, createDelegationTimings, createDelegationStreamTimings, recordDelegationEvents, recordDelegationStreamEvents, cacheDelegationConnectionTime, flushServerConnectionEvent, consumeBreakdownConnectionTime, clearPeerConnectionTracking, resetDelegationConnectionTracking } from './delegation-profiler.js';\n/**\n * Declarative extraction of operation-level metrics from request/response data.\n * Used by operation wrappers to capture handler-specific profiling events.\n */\nimport {} from '../../../schemas/index.js';\nimport { readModelExecutionMs } from '../../../profiling/model-execution.js';\nconst metricsRegistry = new Map();\nfunction extractDownloadStatsGauges(stats, gauges) {\n if (stats?.downloadTimeMs !== undefined) {\n gauges['downloadTime'] = stats.downloadTimeMs;\n }\n if (stats?.totalBytesDownloaded !== undefined) {\n gauges['totalBytesDownloaded'] = stats.totalBytesDownloaded;\n }\n if (stats?.downloadSpeedBps !== undefined) {\n gauges['downloadSpeedBps'] = stats.downloadSpeedBps;\n }\n}\nexport function registerOperationMetrics(config) {\n metricsRegistry.set(config.op, config);\n}\nexport function buildOperationEvent(op, profileId, ts, executionMs, request, finalResponse, ttfb) {\n const config = metricsRegistry.get(op);\n if (!config) {\n return {\n ts,\n op,\n kind: 'handler',\n profileId,\n ms: executionMs\n };\n }\n const gauges = {};\n if (ttfb !== undefined) {\n gauges['ttfb'] = ttfb;\n }\n if (config.fromRequest && request) {\n const extracted = config.fromRequest(request);\n if (extracted)\n Object.assign(gauges, extracted);\n }\n if (config.fromFinalChunk && finalResponse) {\n const extracted = config.fromFinalChunk(finalResponse);\n if (extracted)\n Object.assign(gauges, extracted);\n }\n if (config.fromResult && finalResponse) {\n const extracted = config.fromResult(finalResponse);\n if (extracted)\n Object.assign(gauges, extracted);\n }\n const requestTags = config.getTags?.(request);\n const resultTags = config.getTagsFromResult?.(finalResponse);\n const tags = { ...requestTags, ...resultTags };\n const hasGauges = Object.keys(gauges).length > 0;\n const hasTags = Object.keys(tags).length > 0;\n const event = {\n ts,\n op: config.op,\n kind: config.kind,\n profileId,\n ms: executionMs\n };\n if (hasGauges) {\n event.gauges = gauges;\n }\n if (hasTags) {\n event.tags = tags;\n }\n return event;\n}\nregisterOperationMetrics({\n op: 'completionStream',\n kind: 'handler',\n getTags: (req) => (req.modelId ? { modelId: req.modelId } : {}),\n fromFinalChunk: (res) => {\n const gauges = {};\n if (res.stats?.timeToFirstToken !== undefined)\n gauges['timeToFirstToken'] = res.stats.timeToFirstToken;\n if (res.stats?.tokensPerSecond !== undefined)\n gauges['tokensPerSecond'] = res.stats.tokensPerSecond;\n if (res.stats?.cacheTokens !== undefined)\n gauges['cacheTokens'] = res.stats.cacheTokens;\n const modelExecMs = readModelExecutionMs(res);\n if (modelExecMs !== undefined)\n gauges['modelExecutionTime'] = modelExecMs;\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\nregisterOperationMetrics({\n op: 'translate',\n kind: 'handler',\n getTags: (req) => (req.modelId ? { modelId: req.modelId } : {}),\n fromFinalChunk: (res) => {\n const gauges = {};\n const modelExecMs = readModelExecutionMs(res);\n if (modelExecMs !== undefined)\n gauges['modelExecutionTime'] = modelExecMs;\n // Common stats\n if (res.stats?.totalTime !== undefined)\n gauges['totalTime'] = res.stats.totalTime;\n if (res.stats?.totalTokens !== undefined)\n gauges['totalTokens'] = res.stats.totalTokens;\n if (res.stats?.tokensPerSecond !== undefined)\n gauges['tokensPerSecond'] = res.stats.tokensPerSecond;\n if (res.stats?.timeToFirstToken !== undefined)\n gauges['timeToFirstToken'] = res.stats.timeToFirstToken;\n // NMT-specific\n if (res.stats?.decodeTime !== undefined)\n gauges['decodeTime'] = res.stats.decodeTime;\n if (res.stats?.encodeTime !== undefined)\n gauges['encodeTime'] = res.stats.encodeTime;\n // LLM-specific\n if (res.stats?.cacheTokens !== undefined)\n gauges['cacheTokens'] = res.stats.cacheTokens;\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\nregisterOperationMetrics({\n op: 'transcribeStream',\n kind: 'handler',\n getTags: (req) => (req.modelId ? { modelId: req.modelId } : {}),\n fromFinalChunk: (res) => {\n const gauges = {};\n const modelExecMs = readModelExecutionMs(res);\n if (modelExecMs !== undefined)\n gauges['modelExecutionTime'] = modelExecMs;\n // Common stats\n if (res.stats?.audioDuration !== undefined)\n gauges['audioDuration'] = res.stats.audioDuration;\n if (res.stats?.realTimeFactor !== undefined)\n gauges['realTimeFactor'] = res.stats.realTimeFactor;\n if (res.stats?.tokensPerSecond !== undefined)\n gauges['tokensPerSecond'] = res.stats.tokensPerSecond;\n if (res.stats?.totalTokens !== undefined)\n gauges['totalTokens'] = res.stats.totalTokens;\n if (res.stats?.totalSegments !== undefined)\n gauges['totalSegments'] = res.stats.totalSegments;\n // whisper-specific timings\n if (res.stats?.whisperEncodeTime !== undefined)\n gauges['whisperEncodeTime'] = res.stats.whisperEncodeTime;\n if (res.stats?.whisperDecodeTime !== undefined)\n gauges['whisperDecodeTime'] = res.stats.whisperDecodeTime;\n // parakeet-specific timings\n if (res.stats?.encoderTime !== undefined)\n gauges['encoderTime'] = res.stats.encoderTime;\n if (res.stats?.decoderTime !== undefined)\n gauges['decoderTime'] = res.stats.decoderTime;\n if (res.stats?.melSpecTime !== undefined)\n gauges['melSpecTime'] = res.stats.melSpecTime;\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\nregisterOperationMetrics({\n op: 'textToSpeech',\n kind: 'handler',\n getTags: (req) => (req.modelId ? { modelId: req.modelId } : {}),\n fromFinalChunk: (res) => {\n const gauges = {};\n const modelExecMs = readModelExecutionMs(res);\n if (modelExecMs !== undefined)\n gauges['modelExecutionTime'] = modelExecMs;\n if (res.stats?.audioDuration !== undefined)\n gauges['audioDuration'] = res.stats.audioDuration;\n if (res.stats?.totalSamples !== undefined)\n gauges['totalSamples'] = res.stats.totalSamples;\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\n// Duplex sibling of `textToSpeech`. Server emits the same `TtsStats` on the\n// final chunk (via `collectTtsStats`), so the gauge set mirrors the\n// non-streaming path; without registering here, sessions would silently\n// skip `modelExecutionTime` / `audioDuration` / `totalSamples` metrics.\nregisterOperationMetrics({\n op: 'textToSpeechStream',\n kind: 'handler',\n getTags: (req) => (req.modelId ? { modelId: req.modelId } : {}),\n fromFinalChunk: (res) => {\n const gauges = {};\n const modelExecMs = readModelExecutionMs(res);\n if (modelExecMs !== undefined)\n gauges['modelExecutionTime'] = modelExecMs;\n if (res.stats?.audioDuration !== undefined)\n gauges['audioDuration'] = res.stats.audioDuration;\n if (res.stats?.totalSamples !== undefined)\n gauges['totalSamples'] = res.stats.totalSamples;\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\nregisterOperationMetrics({\n op: 'embed',\n kind: 'handler',\n getTags: (req) => (req.modelId ? { modelId: req.modelId } : {}),\n fromResult: (res) => {\n const gauges = {};\n const modelExecMs = readModelExecutionMs(res);\n if (modelExecMs !== undefined)\n gauges['modelExecutionTime'] = modelExecMs;\n if (res.stats?.totalTime !== undefined)\n gauges['totalTime'] = res.stats.totalTime;\n if (res.stats?.tokensPerSecond !== undefined)\n gauges['tokensPerSecond'] = res.stats.tokensPerSecond;\n if (res.stats?.totalTokens !== undefined)\n gauges['totalTokens'] = res.stats.totalTokens;\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\nregisterOperationMetrics({\n op: 'ocrStream',\n kind: 'handler',\n getTags: (req) => (req.modelId ? { modelId: req.modelId } : {}),\n fromFinalChunk: (res) => {\n const gauges = {};\n if (res.stats?.detectionTime !== undefined)\n gauges['detectionTime'] = res.stats.detectionTime;\n if (res.stats?.recognitionTime !== undefined)\n gauges['recognitionTime'] = res.stats.recognitionTime;\n if (res.stats?.totalTime !== undefined)\n gauges['totalTime'] = res.stats.totalTime;\n const modelExecMs = readModelExecutionMs(res);\n if (modelExecMs !== undefined)\n gauges['modelExecutionTime'] = modelExecMs;\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\nregisterOperationMetrics({\n op: 'diffusionStream',\n kind: 'handler',\n getTags: (req) => (req.modelId ? { modelId: req.modelId } : {}),\n fromFinalChunk: (res) => {\n if (!res.stats)\n return undefined;\n const gauges = {};\n if (res.stats.generationMs !== undefined)\n gauges['generationMs'] = res.stats.generationMs;\n if (res.stats.conditionerMs !== undefined)\n gauges['conditionerMs'] = res.stats.conditionerMs;\n if (res.stats.denoiseMs !== undefined)\n gauges['denoiseMs'] = res.stats.denoiseMs;\n if (res.stats.vaeMs !== undefined)\n gauges['vaeMs'] = res.stats.vaeMs;\n if (res.stats.postProcessMs !== undefined)\n gauges['postProcessMs'] = res.stats.postProcessMs;\n if (res.stats.stepsPerSecond !== undefined)\n gauges['stepsPerSecond'] = res.stats.stepsPerSecond;\n if (res.stats.totalSteps !== undefined)\n gauges['totalSteps'] = res.stats.totalSteps;\n if (res.stats.totalImages !== undefined)\n gauges['totalImages'] = res.stats.totalImages;\n if (res.stats.totalPixels !== undefined)\n gauges['totalPixels'] = res.stats.totalPixels;\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\nregisterOperationMetrics({\n op: 'videoStream',\n kind: 'handler',\n getTags: (req) => (req.modelId ? { modelId: req.modelId } : {}),\n fromFinalChunk: (res) => {\n if (!res.stats)\n return undefined;\n const gauges = {};\n if (res.stats.generationMs !== undefined)\n gauges['generationMs'] = res.stats.generationMs;\n if (res.stats.conditionerMs !== undefined)\n gauges['conditionerMs'] = res.stats.conditionerMs;\n if (res.stats.denoiseMs !== undefined)\n gauges['denoiseMs'] = res.stats.denoiseMs;\n if (res.stats.vaeMs !== undefined)\n gauges['vaeMs'] = res.stats.vaeMs;\n if (res.stats.postProcessMs !== undefined)\n gauges['postProcessMs'] = res.stats.postProcessMs;\n if (res.stats.stepsPerSecond !== undefined)\n gauges['stepsPerSecond'] = res.stats.stepsPerSecond;\n if (res.stats.totalSteps !== undefined)\n gauges['totalSteps'] = res.stats.totalSteps;\n if (res.stats.totalVideos !== undefined)\n gauges['totalVideos'] = res.stats.totalVideos;\n if (res.stats.totalVideoFrames !== undefined)\n gauges['totalVideoFrames'] = res.stats.totalVideoFrames;\n if (res.stats.videoFrames !== undefined)\n gauges['videoFrames'] = res.stats.videoFrames;\n if (res.stats.fps !== undefined)\n gauges['fps'] = res.stats.fps;\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\nregisterOperationMetrics({\n op: 'pluginInvoke',\n kind: 'handler',\n getTags: (req) => {\n const tags = {};\n if (req.modelId)\n tags['modelId'] = req.modelId;\n if (req.handler)\n tags['handler'] = req.handler;\n return tags;\n }\n});\nregisterOperationMetrics({\n op: 'pluginInvokeStream',\n kind: 'handler',\n getTags: (req) => {\n const tags = {};\n if (req.modelId)\n tags['modelId'] = req.modelId;\n if (req.handler)\n tags['handler'] = req.handler;\n return tags;\n }\n});\nregisterOperationMetrics({\n op: 'loadModel',\n kind: 'handler',\n getTags: (req) => (req.modelType ? { modelType: req.modelType } : {}),\n getTagsFromResult: (res) => {\n const sourceType = res.__profilingMeta?.sourceType;\n return sourceType ? { sourceType } : undefined;\n },\n fromResult: (res) => {\n const meta = res.__profilingMeta;\n if (!meta)\n return undefined;\n const gauges = {};\n extractDownloadStatsGauges(meta.downloadStats, gauges);\n if (meta.modelInitializationTimeMs !== undefined) {\n gauges['modelInitializationTime'] = meta.modelInitializationTimeMs;\n }\n if (meta.totalLoadTimeMs !== undefined) {\n gauges['totalLoadTime'] = meta.totalLoadTimeMs;\n }\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\nregisterOperationMetrics({\n op: 'downloadAsset',\n kind: 'handler',\n getTagsFromResult: (res) => {\n const sourceType = res.__profilingMeta?.sourceType;\n return sourceType ? { sourceType } : undefined;\n },\n fromResult: (res) => {\n const meta = res.__profilingMeta;\n if (!meta)\n return undefined;\n const gauges = {};\n extractDownloadStatsGauges(meta.downloadStats, gauges);\n if (meta.totalDownloadTimeMs !== undefined) {\n gauges['totalDownloadTime'] = meta.totalDownloadTimeMs;\n }\n return Object.keys(gauges).length > 0 ? gauges : undefined;\n }\n});\n/**\n * Generic wrappers for profiling handler execution.\n * Used to wrap dispatch/invoke functions with timing capture.\n */\nimport { PROFILING_KEY, OPERATION_EVENT_KEY } from '../../../schemas/index.js';\nimport { nowMs, generateProfileId } from '../../../profiling/clock.js';\nimport { record, shouldProfile } from '../../../profiling/controller.js';\nimport { buildOperationEvent } from './operation-metrics.js';\nimport { isTerminalChunk } from '../rpc-utils';\nfunction getRequestProfilingMeta(request) {\n if (!request || typeof request !== 'object') {\n return undefined;\n }\n const meta = request[PROFILING_KEY];\n if (!meta || typeof meta !== 'object') {\n return undefined;\n }\n return meta;\n}\nfunction resolvePerCallProfiling(options) {\n if (options.perCall) {\n return options.perCall;\n }\n const meta = getRequestProfilingMeta(options.request);\n if (!meta) {\n return undefined;\n }\n if (meta.enabled === false) {\n return { enabled: false };\n }\n return {\n enabled: true,\n includeServerBreakdown: meta.includeServer,\n mode: meta.mode\n };\n}\nfunction buildAndRecordOperationEvent(params) {\n const event = buildOperationEvent(params.options.op, params.profileId, params.startTs, params.executionMs, params.options.request, params.finalResponse, params.ttfb);\n if (!event)\n return undefined;\n if (params.errored) {\n event.tags = { ...event.tags, error: 'true' };\n }\n if (params.count !== undefined && params.count > 0) {\n event.count = params.count;\n }\n record(event);\n return event;\n}\nexport async function profileReplyHandler(options, handler) {\n const perCall = resolvePerCallProfiling(options);\n if (!shouldProfile(options.op, perCall)) {\n return handler();\n }\n const profileId = generateProfileId();\n const startTs = nowMs();\n try {\n const result = await handler();\n const executionMs = nowMs() - startTs;\n const event = buildAndRecordOperationEvent({\n options,\n profileId,\n startTs,\n executionMs,\n finalResponse: result\n });\n if (event) {\n ;\n result[OPERATION_EVENT_KEY] = event;\n }\n return result;\n }\n catch (error) {\n const executionMs = nowMs() - startTs;\n buildAndRecordOperationEvent({\n options,\n profileId,\n startTs,\n executionMs,\n errored: true\n });\n throw error;\n }\n}\nexport async function* profileStreamHandler(options, handler) {\n const perCall = resolvePerCallProfiling(options);\n if (!shouldProfile(options.op, perCall)) {\n return yield* handler();\n }\n const profileId = generateProfileId();\n const startTs = nowMs();\n let ttfb;\n let lastChunk;\n let chunkCount = 0;\n let eventAttached = false;\n const iterator = handler();\n try {\n while (true) {\n const result = await iterator.next();\n if (result.done) {\n if (!eventAttached) {\n const executionMs = nowMs() - startTs;\n buildAndRecordOperationEvent({\n options,\n profileId,\n startTs,\n executionMs,\n finalResponse: lastChunk,\n ttfb,\n count: chunkCount\n });\n }\n return result.value;\n }\n const chunk = result.value;\n if (ttfb === undefined) {\n ttfb = nowMs() - startTs;\n }\n chunkCount++;\n lastChunk = chunk;\n if (!eventAttached && isTerminalChunk(chunk)) {\n const executionMs = nowMs() - startTs;\n const event = buildAndRecordOperationEvent({\n options,\n profileId,\n startTs,\n executionMs,\n finalResponse: chunk,\n ttfb,\n count: chunkCount\n });\n if (event) {\n ;\n chunk[OPERATION_EVENT_KEY] = event;\n }\n eventAttached = true;\n }\n yield chunk;\n }\n }\n catch (error) {\n const executionMs = nowMs() - startTs;\n buildAndRecordOperationEvent({\n options,\n profileId,\n startTs,\n executionMs,\n finalResponse: lastChunk,\n ttfb,\n count: chunkCount,\n errored: true\n });\n throw error;\n }\n finally {\n await iterator.return?.(undefined);\n }\n}\nimport { nowMs } from '../../../profiling/index.js';\nimport { responseSchema, DELEGATION_BREAKDOWN_KEY, OPERATION_EVENT_KEY, PROFILING_TRAILER_KEY } from '../../../schemas/index.js';\nimport { createProfilingContext, injectProfilingIntoString } from './context.js';\nconst noopProfiler = {\n markRequestParsed: () => { },\n markRequestValidated: () => { },\n startHandler: () => { },\n endHandler: () => { },\n serialize: (response) => {\n if (!response)\n return '';\n const extended = response;\n const delegation = extended[DELEGATION_BREAKDOWN_KEY];\n const operation = extended[OPERATION_EVENT_KEY];\n const json = JSON.stringify(responseSchema.parse(response));\n if (delegation || operation) {\n const opts = {};\n if (delegation)\n opts.delegation = delegation;\n if (operation)\n opts.operation = operation;\n return injectProfilingIntoString(json, opts);\n }\n return json;\n },\n serializeError: (json) => json,\n getContext: () => undefined\n};\nfunction createActiveProfiler(meta) {\n const ctx = createProfilingContext(meta);\n let handlerStart = 0;\n let handlerEnded = false;\n let cachedDelegation;\n let cachedOperation;\n return {\n markRequestParsed: (ms) => {\n ctx.jsonParseMs = ms;\n },\n markRequestValidated: (ms) => {\n ctx.zodValidationMs = ms;\n },\n startHandler: () => {\n handlerStart = nowMs();\n handlerEnded = false;\n },\n endHandler: () => {\n if (handlerEnded)\n return;\n handlerEnded = true;\n ctx.handlerExecutionMs = nowMs() - handlerStart;\n },\n serialize: (response, final = true) => {\n if (!response) {\n const opts = { ctx };\n if (cachedDelegation)\n opts.delegation = cachedDelegation;\n if (cachedOperation)\n opts.operation = cachedOperation;\n return injectProfilingIntoString(`{\"${PROFILING_TRAILER_KEY}\":true}`, opts);\n }\n const extended = response;\n const delegation = extended[DELEGATION_BREAKDOWN_KEY];\n const operation = extended[OPERATION_EVENT_KEY];\n if (delegation)\n cachedDelegation = delegation;\n if (operation)\n cachedOperation = operation;\n const zodStart = nowMs();\n const validated = responseSchema.parse(response);\n ctx.responseZodValidationMs = (ctx.responseZodValidationMs ?? 0) + (nowMs() - zodStart);\n const stringifyStart = nowMs();\n const json = JSON.stringify(validated);\n ctx.responseStringifyMs = (ctx.responseStringifyMs ?? 0) + (nowMs() - stringifyStart);\n if (final) {\n const opts = { ctx };\n if (delegation)\n opts.delegation = delegation;\n if (operation)\n opts.operation = operation;\n return injectProfilingIntoString(json, opts);\n }\n return json;\n },\n serializeError: (json) => injectProfilingIntoString(json, { ctx }),\n getContext: () => ctx\n };\n}\nexport function createServerProfiler(meta) {\n if (meta?.includeServer && typeof meta.id === 'string' && meta.id.length > 0) {\n return createActiveProfiler(meta);\n }\n return noopProfiler;\n}\nexport const PROGRESS_THROTTLE_MS = 150;\nexport const PROGRESS_MAX_PENDING = 100;\nexport function createProgressThrottle(writeBatch, clock = Date.now, throttleMs = PROGRESS_THROTTLE_MS, maxPending = PROGRESS_MAX_PENDING) {\n let lastWrite = 0;\n let pending = [];\n let flushTimer = null;\n function flushPending() {\n if (pending.length === 0)\n return;\n lastWrite = clock();\n const batch = pending;\n pending = [];\n writeBatch(batch);\n }\n function push(update) {\n const now = clock();\n if (now - lastWrite >= throttleMs) {\n lastWrite = now;\n writeBatch([update]);\n }\n else {\n pending.push(update);\n if (pending.length >= maxPending) {\n if (flushTimer) {\n clearTimeout(flushTimer);\n flushTimer = null;\n }\n flushPending();\n return;\n }\n if (!flushTimer) {\n flushTimer = setTimeout(() => {\n flushTimer = null;\n flushPending();\n }, throttleMs - (now - lastWrite));\n }\n }\n }\n function flush() {\n if (flushTimer) {\n clearTimeout(flushTimer);\n flushTimer = null;\n }\n flushPending();\n }\n return { push, flush };\n}\nlet commandCounter = 0;\nexport function getNextCommandId() {\n commandCounter = (commandCounter + 1) % Number.MAX_SAFE_INTEGER;\n return commandCounter;\n}\nexport function isTerminalChunk(value) {\n return typeof value === 'object' && value !== null && 'done' in value && value.done === true;\n}\nexport function shouldUseStreamErrorTransport(entry, rawRequest) {\n if (!entry)\n return false;\n if (entry.type === 'stream')\n return true;\n if (entry.type !== 'reply')\n return false;\n if (rawRequest?.['withProgress'] !== true)\n return false;\n try {\n return typeof entry.supportsProgress === 'function'\n ? entry.supportsProgress(rawRequest)\n : !!entry.supportsProgress;\n }\n catch {\n return !!entry.supportsProgress;\n }\n}\nimport { promises as fsPromises } from 'bare-fs';\nimport path from 'bare-path';\nimport fs from 'bare-fs';\nimport { createGunzip } from 'bare-zlib';\nimport tarStream from 'tar-stream';\nimport { detectShardedModel, generateShardFilenames, extractTensorsFromShards, validateShardedModelCache } from './shard-utils.js';\nimport { ModelLoadFailedError, ArchiveExtractionFailedError, ArchiveUnsupportedTypeError, ArchiveMissingShardsError, DownloadCancelledError } from '../../utils/errors-server.js';\nimport { isPathWithinBase } from './path-security.js';\nimport { getServerLogger } from '../../logging/index.js';\nimport { SUPPORTED_ARCHIVE_EXTENSIONS, filenameToArchiveTypeSchema } from '../../schemas/archive.js';\nconst logger = getServerLogger();\n// Gzip magic bytes: 1f 8b 08\nconst GZIP_MAGIC_0 = 0x1f;\nconst GZIP_MAGIC_1 = 0x8b;\nconst GZIP_MAGIC_2 = 0x08;\nexport function isArchiveUrl(url) {\n const filename = url.split('/').pop()?.split('?')[0]?.toLowerCase() || '';\n return SUPPORTED_ARCHIVE_EXTENSIONS.some((ext) => filename.endsWith(ext));\n}\n// Whitelist of model file extensions to extract from archives\nconst ALLOWED_MODEL_EXTENSIONS = ['.gguf', '.tensors.txt'];\nfunction isModelFile(entryName) {\n const basename = path.basename(entryName);\n // Skip resource forks (._filename)\n if (basename.startsWith('._')) {\n return false;\n }\n return ALLOWED_MODEL_EXTENSIONS.some((ext) => basename.toLowerCase().endsWith(ext));\n}\nasync function isGzip(archivePath) {\n return new Promise((resolve, reject) => {\n const stream = fs.createReadStream(archivePath, { start: 0, end: 2 });\n const chunks = [];\n stream.on('data', (chunk) => {\n chunks.push(chunk);\n });\n stream.on('end', () => {\n stream.destroy();\n const buffer = Buffer.concat(chunks);\n // Check for gzip magic bytes\n const isGzipped = buffer[0] === GZIP_MAGIC_0 && buffer[1] === GZIP_MAGIC_1 && buffer[2] === GZIP_MAGIC_2;\n resolve(isGzipped);\n });\n stream.on('error', reject);\n });\n}\nasync function extractArchive(archivePath, extractDir, signal) {\n const parseResult = filenameToArchiveTypeSchema.safeParse(archivePath);\n const extensionType = parseResult.success ? parseResult.data : null;\n if (!extensionType) {\n throw new ArchiveUnsupportedTypeError(archivePath);\n }\n if (signal?.aborted) {\n throw new DownloadCancelledError();\n }\n // Detect actual format from magic bytes (extension might be wrong)\n const isGzipped = await isGzip(archivePath);\n const actualType = isGzipped ? 'tar.gz' : 'tar';\n if (actualType !== extensionType) {\n logger.warn(`⚠️ Archive extension suggests ${extensionType} but content is ${actualType}`);\n }\n await fsPromises.mkdir(extractDir, { recursive: true });\n await extractTarStream(archivePath, extractDir, isGzipped, signal);\n}\nexport async function extractTarStream(archivePath, extractDir, useGunzip, signal) {\n const extract = tarStream.extract();\n const gunzip = useGunzip ? createGunzip() : null;\n return new Promise((resolve, reject) => {\n let aborted = false;\n let readStream = null;\n const cleanup = () => {\n aborted = true;\n readStream?.destroy();\n gunzip?.destroy();\n extract.destroy();\n };\n if (signal) {\n signal.addEventListener('abort', () => {\n cleanup();\n reject(new DownloadCancelledError());\n });\n }\n extract.on('entry', (header, stream, next) => {\n if (aborted) {\n stream.resume();\n return;\n }\n if (!isModelFile(header.name)) {\n stream.resume();\n next();\n return;\n }\n // Prevent zip-slip: reject entries that escape extractDir (CWE-22)\n const filePath = path.resolve(path.join(extractDir, header.name));\n if (!isPathWithinBase(extractDir, filePath)) {\n logger.warn(`⚠️ Skipping archive entry with path traversal: ${header.name}`);\n stream.resume();\n next();\n return;\n }\n if (header.type === 'file') {\n const dir = path.dirname(filePath);\n fs.mkdirSync(dir, { recursive: true });\n const writeStream = fs.createWriteStream(filePath);\n stream.pipe(writeStream);\n writeStream.on('finish', next);\n writeStream.on('error', reject);\n }\n else {\n stream.on('end', next);\n stream.resume();\n }\n });\n extract.on('finish', resolve);\n extract.on('error', reject);\n if (gunzip) {\n gunzip.on('error', reject);\n }\n readStream = fs.createReadStream(archivePath);\n if (gunzip) {\n readStream.pipe(gunzip).pipe(extract);\n }\n else {\n readStream.pipe(extract);\n }\n });\n}\nexport async function extractAndValidateShardedArchive(archivePath, extractDir, signal) {\n // Check if shards already extracted\n try {\n const existingFiles = await fsPromises.readdir(extractDir);\n const existingShard = existingFiles.find((f) => detectShardedModel(String(f)).isSharded);\n if (existingShard) {\n const isComplete = await validateShardedModelCache(extractDir, String(existingShard));\n if (isComplete) {\n logger.info(`✅ Archive already extracted: ${extractDir}`);\n const shardFilenames = generateShardFilenames(String(existingShard));\n return path.join(extractDir, shardFilenames[0]);\n }\n logger.warn(`⚠️ Incomplete extraction found, re-extracting archive`);\n }\n }\n catch {\n // Directory doesn't exist, proceed with extraction\n }\n logger.info(`Extracting archive: ${path.basename(archivePath)}`);\n try {\n await extractArchive(archivePath, extractDir, signal);\n }\n catch (error) {\n throw new ArchiveExtractionFailedError(archivePath, error);\n }\n const files = await fsPromises.readdir(extractDir);\n const shardedFile = files.find((f) => detectShardedModel(String(f)).isSharded);\n if (!shardedFile) {\n throw new ModelLoadFailedError(`No sharded model files found in archive. Expected pattern: *-00001-of-0000X.*`);\n }\n const shardedFileName = String(shardedFile);\n const shardInfo = detectShardedModel(shardedFileName);\n if (!shardInfo.baseFilename) {\n throw new ModelLoadFailedError(`Could not extract base filename from sharded model: ${shardedFileName}`);\n }\n const shardFilenames = generateShardFilenames(shardedFileName);\n for (const shardFilename of shardFilenames) {\n const filePath = path.join(extractDir, shardFilename);\n try {\n await fsPromises.access(filePath);\n }\n catch {\n throw new ArchiveMissingShardsError(shardFilename);\n }\n }\n // Generate tensors.txt if it doesn't exist\n await extractTensorsFromShards(extractDir, shardedFileName);\n logger.info(`Archive extracted to ${extractDir} successfully: ${files.length} files`);\n return path.join(extractDir, shardFilenames[0]);\n}\nimport { normalizeAssistantCacheContent } from '../../../utils/cache-normalize.js';\nfunction normalizeCacheMessage(message) {\n const { attachments, ...normalized } = message;\n if (message.role === 'assistant') {\n normalized.content = normalizeAssistantCacheContent(message.content);\n }\n return {\n ...normalized,\n ...(attachments && attachments.length > 0 ? { attachments } : {})\n };\n}\nexport function getAutoCacheLookupHistory(currentHistory) {\n if (currentHistory.length <= 1) {\n return [];\n }\n return currentHistory.slice(0, -1).map(normalizeCacheMessage);\n}\nexport function buildAutoCacheSaveHistory(currentHistory, assistantResponse) {\n return [\n ...currentHistory.map(normalizeCacheMessage),\n normalizeCacheMessage({\n role: 'assistant',\n content: assistantResponse\n })\n ];\n}\nimport fs, { promises as fsPromises } from 'bare-fs';\nimport path from 'bare-path';\nimport { getConfiguredCacheDir } from '../../bare/registry/config-registry.js';\nimport { getQvacPath } from '../qvac-paths.js';\nimport { calculateFileChecksum } from '../checksum.js';\nimport { validateAndJoinPath } from '../path-security.js';\nimport { generateShortHash } from '../formatting.js';\nimport { getServerLogger } from '../../../logging/index.js';\nimport { nowMs } from '../../../profiling/index.js';\nimport { resolveClearStorageTarget } from '../clear-storage.js';\nconst logger = getServerLogger();\nexport function getCacheDir(subDir) {\n const cacheDir = getQvacPath(subDir);\n try {\n fs.mkdirSync(cacheDir, { recursive: true });\n }\n catch (error) {\n logger.error(`Error creating cache directory (${subDir}):`, error instanceof Error ? error.message : String(error));\n }\n return cacheDir;\n}\nexport function getModelsCacheDir() {\n const configuredDir = getConfiguredCacheDir();\n try {\n fs.mkdirSync(configuredDir, { recursive: true });\n }\n catch (error) {\n logger.error(`Error creating models cache directory:`, error instanceof Error ? error.message : String(error));\n }\n return configuredDir;\n}\nexport function getKVCacheDir() {\n return getCacheDir('kv-cache');\n}\n/**\n * Get cache directory for sharded model\n * Returns: cache/sharded//\n */\nexport function getShardedModelCacheDir(hyperdriveKey) {\n const baseCache = getModelsCacheDir();\n const shardDir = path.join(baseCache, 'sharded', hyperdriveKey);\n try {\n fs.mkdirSync(shardDir, { recursive: true });\n }\n catch (error) {\n logger.error(`Error creating sharded model cache directory:`, error instanceof Error ? error.message : String(error));\n }\n return shardDir;\n}\n/**\n * Get cache directory for a companion set.\n * Returns: cache/sets//\n */\nexport function getCompanionSetCacheDir(setKey) {\n const baseCache = getModelsCacheDir();\n const setDir = validateAndJoinPath(baseCache, 'sets', setKey);\n try {\n fs.mkdirSync(setDir, { recursive: true });\n }\n catch (error) {\n logger.error(`Error creating companion set cache directory:`, error instanceof Error ? error.message : String(error));\n }\n return setDir;\n}\n/**\n * Get full path to a file within a companion set cache.\n * Returns: cache/sets//\n */\nexport function getCompanionSetPath(setKey, targetName) {\n const setDir = getCompanionSetCacheDir(setKey);\n return validateAndJoinPath(setDir, targetName);\n}\n/**\n * Get cache path for a single (non-sharded, non-companion) registry model.\n */\nexport function getSingleFileCachePath(registryPath) {\n const filename = registryPath.split('/').pop() || registryPath;\n const sourceHash = generateShortHash(registryPath);\n return path.join(getModelsCacheDir(), `${sourceHash}_${filename}`);\n}\n/**\n * Get full path to specific shard file\n * Returns: cache/sharded//\n */\nexport function getShardPath(hyperdriveKey, shardFilename) {\n const shardDir = getShardedModelCacheDir(hyperdriveKey);\n return validateAndJoinPath(shardDir, shardFilename);\n}\n/**\n * Returns the deletion target for `clearStorage`. Scoped to the SDK cache\n * directory — companion set and legacy ONNX paths delete the parent directory.\n */\nexport function getClearStorageTarget(modelPath) {\n return resolveClearStorageTarget(modelPath, getModelsCacheDir());\n}\n/**\n * Check if all shards exist and are valid (size + checksum check)\n * Returns array of missing/invalid shard indices (0-based)\n * @param onChecksumTimeMs - Optional callback to report checksum validation time\n */\nexport async function checkShardCompleteness(hyperdriveKey, shardFilenames, shardMetadata, onChecksumTimeMs) {\n const invalidIndices = [];\n for (let i = 0; i < shardFilenames.length; i++) {\n const shardPath = getShardPath(hyperdriveKey, shardFilenames[i]);\n const fileMeta = shardMetadata[i];\n if (!fileMeta) {\n invalidIndices.push(i);\n continue;\n }\n try {\n const stats = await fsPromises.stat(shardPath);\n if (stats.size !== fileMeta.expectedSize) {\n logger.warn(`File ${i + 1} size mismatch: expected ${fileMeta.expectedSize}, got ${stats.size}`);\n invalidIndices.push(i);\n continue;\n }\n if (fileMeta.sha256Checksum) {\n const start = nowMs();\n const actualChecksum = await calculateFileChecksum(shardPath);\n onChecksumTimeMs?.(nowMs() - start);\n if (actualChecksum !== fileMeta.sha256Checksum) {\n logger.warn(`File ${i + 1} checksum mismatch for ${fileMeta.filename}. Expected: ${fileMeta.sha256Checksum}. Actual: ${actualChecksum}. Will re-download.`);\n invalidIndices.push(i);\n }\n }\n }\n catch {\n // File doesn't exist\n invalidIndices.push(i);\n }\n }\n return invalidIndices;\n}\nexport {};\nimport fs from 'bare-fs';\nimport crypto from 'bare-crypto';\nimport { nowMs } from '../../profiling/index.js';\nimport {} from 'bare-buffer';\nexport async function calculateFileChecksum(filePath) {\n return new Promise((resolve, reject) => {\n try {\n const hash = crypto.createHash('sha-256');\n const stream = fs.createReadStream(filePath);\n stream.on('data', (chunk) => {\n hash.update(chunk);\n });\n stream.on('end', () => {\n resolve(hash.digest('hex'));\n });\n stream.on('error', (error) => {\n reject(new Error(`Checksum calculation error: ${error.message}`));\n });\n }\n catch (error) {\n reject(error instanceof Error ? error : new Error(`Checksum calculation error: ${String(error)}`));\n }\n });\n}\nexport async function measureChecksum(filePath, hooks) {\n const start = nowMs();\n const checksum = await calculateFileChecksum(filePath);\n hooks?.addChecksumValidationTimeMs?.(nowMs() - start);\n return checksum;\n}\nexport function resolveClearStorageTarget(modelPath, modelsCacheDir) {\n const normalizedCache = modelsCacheDir.replace(/\\\\/g, '/').replace(/\\/+$/, '');\n const normalizedPath = modelPath.replace(/\\\\/g, '/');\n if (!normalizedPath.startsWith(`${normalizedCache}/`)) {\n return { path: modelPath, kind: 'file' };\n }\n const relativePath = normalizedPath.slice(normalizedCache.length + 1);\n const parts = relativePath.split('/');\n if (parts.length === 3 && (parts[0] === 'sets' || parts[0] === 'onnx') && parts[1] && parts[2]) {\n const lastSlash = normalizedPath.lastIndexOf('/');\n return { path: normalizedPath.slice(0, lastSlash), kind: 'directory' };\n }\n return { path: modelPath, kind: 'file' };\n}\nimport { parseToolCalls } from './tools/index.js';\nconst DIALECT_SPECS = {\n hermes: {\n toolFrames: [{ open: '', close: '' }]\n },\n // No streaming framing — tool calls are only recovered at finalization.\n json: {\n toolFrames: []\n },\n pythonic: {\n toolFrames: [\n { open: '<|tool_call_start|>', close: '<|tool_call_end|>' },\n {\n open: '<|start_header_id|>tool_call<|end_header_id|>',\n close: '<|eot_id|>'\n }\n ]\n },\n harmony: {\n toolFrames: [{ open: '<|channel|>commentary to=functions.', close: '<|call|>' }],\n thinkingFrames: [{ open: '<|channel|>analysis<|message|>', close: '<|end|>' }],\n contentFrames: [\n { open: '<|channel|>final<|message|>', close: '<|return|>' },\n { open: '<|channel|>assistant<|message|>', close: '<|end|>' }\n ],\n // Role headers and stray Harmony control tokens between frames.\n dropTokens: [\n '<|message|>',\n '<|end|>',\n '<|start|>assistant',\n '<|start|>system',\n '<|start|>user',\n '<|return|>'\n ],\n contentDropTokens: ['<|channel|>']\n },\n qwen35: {\n // Same framing as hermes; inner content is XML.\n toolFrames: [{ open: '', close: '' }]\n },\n gemma4: {\n toolFrames: [{ open: '<|tool_call>', close: '' }],\n thinkingFrames: [{ open: '<|channel>thought', close: '' }]\n }\n};\n// Capture-gated reasoning marker — the generic `...`\n// convention used by reasoning-tuned models. When the gate is off the\n// markers pass through into `contentDelta` unchanged (preserves the\n// pre-dialect behavior).\nconst BUILTIN_THINKING = { open: '', close: '' };\nexport function createCompletionNormalizer(config) {\n let seq = 0;\n let state = 'content';\n let rawText = '';\n const contentParts = [];\n const thinkingParts = [];\n // Tool frame: buffer keeps the open + close markers in place so\n // `parseToolCalls` can match its own dialect markers.\n let toolCallBuffer = '';\n let activeToolFrame = null;\n // Thinking frame: tracks which frame's close marker we're scanning for\n // (could be the built-in `` or a dialect-specific frame like\n // Harmony's `<|channel|>analysis<|message|>...<|end|>`).\n let activeThinkingFrame = null;\n // Content frame: inner streamed as it arrives; partial close tail buffered.\n let activeContentFrame = null;\n // Trailing chars that could be a prefix of a watched marker, so markers\n // split across token pushes aren't missed by indexOf.\n let contentTail = '';\n let toolFramingTail = '';\n let thinkingFramingTail = '';\n let contentFramingTail = '';\n const streamedToolCallKeys = new Set();\n const toolsEnabled = config.tools.length > 0 && config.capabilities.toolCalling !== 'none';\n const useToolFraming = toolsEnabled && config.capabilities.toolCalling === 'textParse';\n // Register `` only when both capability + capture opt in.\n // Dialect protocol markers always register; capture only gates emission.\n const useBuiltinThinkTags = config.captureThinking && config.capabilities.thinkingFraming === 'thinkTags';\n const dialect = config.toolDialect ?? 'hermes';\n const dialectSpec = DIALECT_SPECS[dialect];\n const toolFrames = useToolFraming ? dialectSpec.toolFrames : [];\n const thinkingFrames = [\n ...(useBuiltinThinkTags ? [BUILTIN_THINKING] : []),\n ...(dialectSpec.thinkingFrames ?? [])\n ];\n const contentFrames = dialectSpec.contentFrames ?? [];\n const dropTokens = dialectSpec.dropTokens ?? [];\n const contentDropTokens = dialectSpec.contentDropTokens ?? [];\n const markerToEntry = new Map();\n const dropTokenSet = new Set();\n const contentMarkers = [];\n function registerFrames(frames, kind) {\n for (const f of frames) {\n if (markerToEntry.has(f.open))\n continue;\n markerToEntry.set(f.open, { kind, spec: f });\n contentMarkers.push(f.open);\n }\n }\n registerFrames(toolFrames, 'tool');\n registerFrames(thinkingFrames, 'thinking');\n registerFrames(contentFrames, 'content');\n for (const t of dropTokens) {\n if (markerToEntry.has(t) || dropTokenSet.has(t))\n continue;\n dropTokenSet.add(t);\n contentMarkers.push(t);\n }\n function nextSeq() {\n return seq++;\n }\n function emitContent(events, text) {\n let normalized = text;\n for (const token of contentDropTokens) {\n normalized = normalized.split(token).join('');\n }\n if (!normalized)\n return;\n contentParts.push(normalized);\n events.push({ type: 'contentDelta', seq: nextSeq(), text: normalized });\n }\n // Capture-gated: thinking frames may register even when `captureThinking`\n // is false (e.g. harmony's analysis channel, to strip markers from\n // `contentDelta`) — drop the inner here instead of buffering it.\n function emitThinking(events, text) {\n if (!text)\n return;\n if (config.captureThinking) {\n thinkingParts.push(text);\n events.push({ type: 'thinkingDelta', seq: nextSeq(), text });\n }\n }\n function getToolCallKey(call) {\n return `${call.name}:${JSON.stringify(call.arguments)}`;\n }\n function emitStreamedToolCall(events, call) {\n streamedToolCallKeys.add(getToolCallKey(call));\n events.push({ type: 'toolCall', seq: nextSeq(), call });\n }\n function emitFinalToolCall(events, call) {\n if (streamedToolCallKeys.has(getToolCallKey(call)))\n return;\n events.push({ type: 'toolCall', seq: nextSeq(), call });\n }\n // Length of the longest suffix of `buf` that is also a prefix of any marker.\n function trailingPartialMarkerLen(buf, markers) {\n if (markers.length === 0 || buf.length === 0)\n return 0;\n const maxLen = Math.min(buf.length, markers.reduce((m, s) => Math.max(m, s.length), 0) - 1);\n for (let len = maxLen; len > 0; len--) {\n const suffix = buf.slice(buf.length - len);\n for (const m of markers) {\n if (m.startsWith(suffix))\n return len;\n }\n }\n return 0;\n }\n function findEarliestMarker(buf, markers) {\n let best = null;\n for (const m of markers) {\n const i = buf.indexOf(m);\n if (i < 0)\n continue;\n if (best === null || i < best.idx)\n best = { idx: i, marker: m };\n }\n return best;\n }\n function flushToolBuffer(events, closed) {\n const raw = toolCallBuffer;\n const frame = activeToolFrame;\n toolCallBuffer = '';\n activeToolFrame = null;\n toolFramingTail = '';\n if (!frame)\n return;\n // Empty-payload guard. Strip frame markers and check the inner is\n // non-empty; surface a toolError on empty payloads so the literal\n // markers don't leak into contentDelta.\n let inner = raw;\n if (inner.startsWith(frame.open))\n inner = inner.slice(frame.open.length);\n if (inner.endsWith(frame.close)) {\n inner = inner.slice(0, inner.length - frame.close.length);\n }\n if (inner.trim().length === 0) {\n events.push({\n type: 'toolError',\n seq: nextSeq(),\n error: { code: 'PARSE_ERROR', message: 'Empty tool_call frame' }\n });\n return;\n }\n const { toolCalls, errors } = parseToolCalls(raw, config.tools, dialect);\n for (const call of toolCalls)\n emitStreamedToolCall(events, call);\n if (toolCalls.length === 0) {\n if (errors.length > 0) {\n for (const error of errors) {\n events.push({ type: 'toolError', seq: nextSeq(), error });\n }\n }\n else {\n events.push({\n type: 'toolError',\n seq: nextSeq(),\n error: {\n code: 'PARSE_ERROR',\n message: closed\n ? 'Failed to parse tool call from framed region'\n : 'Incomplete tool call frame at stream end',\n raw\n }\n });\n }\n emitContent(events, raw);\n }\n }\n function getStateTail() {\n switch (state) {\n case 'content':\n return contentTail;\n case 'thinkingFraming':\n return thinkingFramingTail;\n case 'toolFraming':\n return toolFramingTail;\n case 'contentFraming':\n return contentFramingTail;\n }\n }\n function processSegment(events, text) {\n let buf = getStateTail() + text;\n contentTail = '';\n thinkingFramingTail = '';\n toolFramingTail = '';\n contentFramingTail = '';\n while (buf.length > 0) {\n if (state === 'toolFraming') {\n if (!activeToolFrame) {\n state = 'content';\n continue;\n }\n const hit = buf.indexOf(activeToolFrame.close);\n if (hit >= 0) {\n toolCallBuffer += buf.slice(0, hit + activeToolFrame.close.length);\n buf = buf.slice(hit + activeToolFrame.close.length);\n state = 'content';\n flushToolBuffer(events, true);\n continue;\n }\n const tailLen = trailingPartialMarkerLen(buf, [activeToolFrame.close]);\n const safeLen = buf.length - tailLen;\n toolCallBuffer += buf.slice(0, safeLen);\n toolFramingTail = buf.slice(safeLen);\n buf = '';\n continue;\n }\n if (state === 'thinkingFraming') {\n if (!activeThinkingFrame) {\n state = 'content';\n continue;\n }\n const closeMarker = activeThinkingFrame.close;\n const closeIdx = buf.indexOf(closeMarker);\n if (closeIdx >= 0) {\n emitThinking(events, buf.slice(0, closeIdx));\n buf = buf.slice(closeIdx + closeMarker.length);\n activeThinkingFrame = null;\n state = 'content';\n continue;\n }\n const tailLen = trailingPartialMarkerLen(buf, [closeMarker]);\n const safeLen = buf.length - tailLen;\n emitThinking(events, buf.slice(0, safeLen));\n thinkingFramingTail = buf.slice(safeLen);\n buf = '';\n continue;\n }\n if (state === 'contentFraming') {\n if (!activeContentFrame) {\n state = 'content';\n continue;\n }\n const closeMarker = activeContentFrame.close;\n const closeIdx = buf.indexOf(closeMarker);\n if (closeIdx >= 0) {\n emitContent(events, buf.slice(0, closeIdx));\n activeContentFrame = null;\n contentFramingTail = '';\n buf = buf.slice(closeIdx + closeMarker.length);\n state = 'content';\n continue;\n }\n const tailLen = trailingPartialMarkerLen(buf, [closeMarker]);\n const safeLen = buf.length - tailLen;\n emitContent(events, buf.slice(0, safeLen));\n contentFramingTail = buf.slice(safeLen);\n buf = '';\n continue;\n }\n const hit = findEarliestMarker(buf, contentMarkers);\n if (hit) {\n emitContent(events, buf.slice(0, hit.idx));\n buf = buf.slice(hit.idx + hit.marker.length);\n if (dropTokenSet.has(hit.marker)) {\n // Glue token between frames — strip and stay in content state.\n continue;\n }\n const entry = markerToEntry.get(hit.marker);\n if (entry.kind === 'tool') {\n toolCallBuffer = hit.marker;\n activeToolFrame = entry.spec;\n state = 'toolFraming';\n }\n else if (entry.kind === 'thinking') {\n activeThinkingFrame = entry.spec;\n state = 'thinkingFraming';\n }\n else {\n activeContentFrame = entry.spec;\n state = 'contentFraming';\n }\n continue;\n }\n const tailLen = trailingPartialMarkerLen(buf, contentMarkers);\n const safeLen = buf.length - tailLen;\n emitContent(events, buf.slice(0, safeLen));\n contentTail = buf.slice(safeLen);\n buf = '';\n }\n }\n function push(token) {\n const events = [];\n rawText += token;\n if (config.emitRawDeltas) {\n events.push({ type: 'rawDelta', seq: nextSeq(), text: token });\n }\n processSegment(events, token);\n return events;\n }\n function finish(opts) {\n const events = [];\n // Drain pending tail bytes so we don't lose trailing chars when the\n // stream ends mid-marker.\n if (state === 'content' && contentTail) {\n emitContent(events, contentTail);\n contentTail = '';\n }\n else if (state === 'thinkingFraming' && thinkingFramingTail) {\n emitThinking(events, thinkingFramingTail);\n thinkingFramingTail = '';\n }\n else if (state === 'toolFraming' && toolFramingTail) {\n toolCallBuffer += toolFramingTail;\n toolFramingTail = '';\n }\n else if (state === 'contentFraming' && contentFramingTail) {\n // Cutoff inside a partial close marker — emit tail as content.\n emitContent(events, contentFramingTail);\n contentFramingTail = '';\n }\n if (state === 'toolFraming' && activeToolFrame) {\n if (opts?.error) {\n emitContent(events, toolCallBuffer);\n toolCallBuffer = '';\n activeToolFrame = null;\n }\n else {\n flushToolBuffer(events, false);\n }\n }\n else if (state === 'contentFraming') {\n activeContentFrame = null;\n }\n activeThinkingFrame = null;\n state = 'content';\n if (!opts?.error) {\n if (opts?.toolCalls) {\n for (const call of opts.toolCalls) {\n emitFinalToolCall(events, call);\n }\n }\n }\n if (opts?.stats) {\n events.push({\n type: 'completionStats',\n seq: nextSeq(),\n stats: opts.stats\n });\n }\n const raw = { fullText: rawText };\n if (opts?.error) {\n events.push({\n type: 'completionDone',\n seq: nextSeq(),\n stopReason: 'error',\n error: opts.error,\n raw\n });\n }\n else if (opts?.stopReason) {\n events.push({\n type: 'completionDone',\n seq: nextSeq(),\n stopReason: opts.stopReason,\n raw\n });\n }\n else {\n events.push({ type: 'completionDone', seq: nextSeq(), raw });\n }\n return events;\n }\n function getAccumulated() {\n return {\n rawText,\n contentText: contentParts.join(''),\n thinkingText: thinkingParts.length > 0 ? thinkingParts.join('') : undefined\n };\n }\n return { push, finish, getAccumulated };\n}\nimport { normalizeModelType, ModelType } from '../../schemas/index.js';\nexport function transformConfigForReload(modelType, config) {\n const canonicalType = normalizeModelType(modelType);\n switch (canonicalType) {\n case ModelType.whispercppTranscription: {\n const whisperConfig = config;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { contextParams, miscConfig, ...whisperParams } = whisperConfig;\n return {\n whisperConfig: whisperParams,\n ...(miscConfig && { miscConfig })\n };\n }\n case ModelType.llamacppCompletion:\n case ModelType.llamacppEmbedding:\n case ModelType.nmtcppTranslation:\n case ModelType.ttsGgml:\n // Return as-is for now\n return config;\n default:\n return config;\n }\n}\nconst SHARD_PATTERN = /^(.+)-(\\d{5})-of-(\\d{5})\\.gguf$/;\n/** Expand a sharded GGUF path into `.tensors.txt` plus all shards. */\nexport function expandGGUFIntoShards(modelPath) {\n const lastSep = Math.max(modelPath.lastIndexOf('/'), modelPath.lastIndexOf('\\\\'));\n const dir = lastSep >= 0 ? modelPath.slice(0, lastSep) : '';\n const sep = lastSep >= 0 ? modelPath.charAt(lastSep) : '/';\n const filename = lastSep >= 0 ? modelPath.slice(lastSep + 1) : modelPath;\n const match = filename.match(SHARD_PATTERN);\n if (!match || !match[1] || !match[3])\n return [modelPath];\n const baseFilename = match[1];\n const totalDigits = match[3];\n const totalShards = Number.parseInt(totalDigits, 10);\n if (totalShards <= 0)\n return [modelPath];\n const join = (name) => (dir ? `${dir}${sep}${name}` : name);\n const shards = [join(`${baseFilename}.tensors.txt`)];\n for (let i = 1; i <= totalShards; i++) {\n shards.push(join(`${baseFilename}-${String(i).padStart(5, '0')}-of-${totalDigits}.gguf`));\n }\n return shards;\n}\nimport crypto from 'bare-crypto';\nimport { Buffer } from 'bare-buffer';\n/**\n * Generate a short hash (16 characters) from any input string\n */\nexport function generateShortHash(input) {\n const hash = crypto.createHash('sha-256').update(Buffer.from(input, 'utf8')).digest('hex');\n return hash.substring(0, 16);\n}\nfunction isModelDescriptor(value) {\n return (typeof value === 'object' && value !== null && 'src' in value && typeof value.src === 'string');\n}\nfunction normalizeValue(value) {\n if (isModelDescriptor(value)) {\n return value.src;\n }\n if (Array.isArray(value)) {\n return value.map(normalizeValue);\n }\n if (typeof value === 'object' && value !== null) {\n return normalizeConfig(value);\n }\n return value;\n}\nfunction normalizeConfig(config) {\n const result = {};\n for (const key of Object.keys(config).sort()) {\n result[key] = normalizeValue(config[key]);\n }\n return result;\n}\n/**\n * Create a stable, deterministic string representation of a config object.\n * - Recursively sorts all object keys\n * - Normalizes ModelDescriptor objects to their src string\n */\nexport function canonicalConfigString(config) {\n if (!config)\n return '{}';\n return JSON.stringify(normalizeConfig(config));\n}\n/**\n * Calculate progress percentage with bounds checking and consistent formatting\n * @param current - Current progress value\n * @param total - Total value\n * @param decimals - Number of decimal places (default: 2)\n * @returns Percentage clamped between 0-100 with fixed decimal places\n */\nexport function calculatePercentage(current, total, decimals = 2) {\n if (total <= 0 || current < 0) {\n return 0;\n }\n const rawPercentage = (current / total) * 100;\n const clampedPercentage = Math.min(Math.max(rawPercentage, 0), 100);\n return Number(clampedPercentage.toFixed(decimals));\n}\nimport { promises as fsPromises, createReadStream } from 'bare-fs';\nimport { getServerLogger } from '../../logging/index.js';\nimport { ModelLoadFailedError } from '../../utils/errors-server.js';\nimport { validateAndJoinPath } from './path-security.js';\nconst logger = getServerLogger();\n// GGUF value types\nconst GGUF_TYPE = {\n UINT8: 0,\n INT8: 1,\n UINT16: 2,\n INT16: 3,\n UINT32: 4,\n INT32: 5,\n FLOAT32: 6,\n BOOL: 7,\n STRING: 8,\n ARRAY: 9,\n UINT64: 10,\n INT64: 11,\n FLOAT64: 12\n};\n// Type sizes in bytes\nconst TYPE_SIZE = {\n [GGUF_TYPE.UINT8]: 1,\n [GGUF_TYPE.INT8]: 1,\n [GGUF_TYPE.UINT16]: 2,\n [GGUF_TYPE.INT16]: 2,\n [GGUF_TYPE.UINT32]: 4,\n [GGUF_TYPE.INT32]: 4,\n [GGUF_TYPE.FLOAT32]: 4,\n [GGUF_TYPE.BOOL]: 1,\n [GGUF_TYPE.UINT64]: 8,\n [GGUF_TYPE.INT64]: 8,\n [GGUF_TYPE.FLOAT64]: 8\n};\n// Limits to prevent DoS/corruption issues\nconst LIMITS = {\n MAX_KV_COUNT: 100_000,\n MAX_TENSOR_COUNT: 1_000_000,\n MAX_STRING_LEN: 100 * 1024 * 1024, // 100MB for tokenizer vocab\n MAX_TENSOR_NAME_LEN: 64 * 1024, // 64KB for tensor names\n MAX_ARRAY_LEN: 1_000_000_000, // 1B elements\n MAX_DIMS: 32,\n MAX_HEADER_SIZE: 4 * 1024 * 1024 * 1024 // 4GB max header\n};\n// Magic bytes for endianness detection\nconst GGUF_MAGIC_LE = 0x46554747; // \"GGUF\" little-endian\nconst GGUF_MAGIC_BE = 0x47475546; // \"FUGG\" big-endian\n// File-local error for streaming parser control flow\n// Used to signal \"keep reading chunks\" rather than an actual failure\nclass NeedMoreDataError extends Error {\n currentOffset;\n bytesNeeded;\n constructor(currentOffset, bytesNeeded) {\n super(`Need more data: offset ${currentOffset} requires ${bytesNeeded} more bytes`);\n this.name = 'NeedMoreDataError';\n this.currentOffset = currentOffset;\n this.bytesNeeded = bytesNeeded;\n }\n}\nfunction parseGGUFHeader(buffer) {\n const bufferLength = buffer.length;\n let offset = 0;\n let isBigEndian = false;\n function ensureBytes(needed) {\n if (offset + needed > bufferLength) {\n throw new NeedMoreDataError(offset, needed);\n }\n }\n function readU32() {\n ensureBytes(4);\n const val = isBigEndian ? buffer.readUInt32BE(offset) : buffer.readUInt32LE(offset);\n offset += 4;\n return val;\n }\n function readU64() {\n ensureBytes(8);\n const val = isBigEndian ? buffer.readBigUInt64BE(offset) : buffer.readBigUInt64LE(offset);\n offset += 8;\n return val;\n }\n function readU64AsNumber() {\n const val = readU64();\n if (val > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new ModelLoadFailedError(`Value ${val} exceeds safe integer range`);\n }\n return Number(val);\n }\n function skipBytes(n) {\n ensureBytes(n);\n offset += n;\n }\n function skipString() {\n const len = readU64AsNumber();\n if (len > LIMITS.MAX_STRING_LEN) {\n throw new ModelLoadFailedError(`String length ${len} exceeds limit ${LIMITS.MAX_STRING_LEN}`);\n }\n skipBytes(len);\n }\n function readTensorName() {\n const len = readU64AsNumber();\n if (len > LIMITS.MAX_TENSOR_NAME_LEN) {\n logger.warn(`Tensor name length ${len} exceeds limit, truncating`);\n skipBytes(len);\n return '';\n }\n ensureBytes(len);\n const name = buffer.toString('utf8', offset, offset + len);\n offset += len;\n return name;\n }\n function skipValue(valueType) {\n const size = TYPE_SIZE[valueType];\n if (size !== undefined) {\n skipBytes(size);\n return;\n }\n if (valueType === GGUF_TYPE.STRING) {\n skipString();\n return;\n }\n if (valueType === GGUF_TYPE.ARRAY) {\n const arrayType = readU32();\n const arrayLen = readU64AsNumber();\n if (arrayLen > LIMITS.MAX_ARRAY_LEN) {\n throw new ModelLoadFailedError(`Array length ${arrayLen} exceeds limit ${LIMITS.MAX_ARRAY_LEN}`);\n }\n const elementSize = TYPE_SIZE[arrayType];\n if (elementSize !== undefined) {\n // Fixed-size elements\n skipBytes(arrayLen * elementSize);\n }\n else if (arrayType === GGUF_TYPE.STRING) {\n // Array of strings\n for (let i = 0; i < arrayLen; i++) {\n skipString();\n }\n }\n else if (arrayType === GGUF_TYPE.ARRAY) {\n throw new ModelLoadFailedError('Nested arrays not supported');\n }\n else {\n throw new ModelLoadFailedError(`Unknown array element type: ${arrayType}`);\n }\n return;\n }\n throw new ModelLoadFailedError(`Unknown value type: ${valueType}`);\n }\n // Parse header\n ensureBytes(4);\n const magicLE = buffer.readUInt32LE(offset);\n if (magicLE === GGUF_MAGIC_LE) {\n isBigEndian = false;\n }\n else if (magicLE === GGUF_MAGIC_BE) {\n isBigEndian = true;\n logger.debug('Detected big-endian GGUF file');\n }\n else {\n throw new ModelLoadFailedError(`Invalid GGUF file - magic number mismatch (got 0x${magicLE.toString(16)})`);\n }\n offset += 4;\n // Version\n const version = readU32();\n if (version !== 2 && version !== 3) {\n throw new ModelLoadFailedError(`Unsupported GGUF version: ${version}`);\n }\n // Tensor count and KV count\n const tensorCount = readU64AsNumber();\n const kvCount = readU64AsNumber();\n if (tensorCount > LIMITS.MAX_TENSOR_COUNT) {\n throw new ModelLoadFailedError(`Tensor count ${tensorCount} exceeds limit ${LIMITS.MAX_TENSOR_COUNT}`);\n }\n if (kvCount > LIMITS.MAX_KV_COUNT) {\n throw new ModelLoadFailedError(`KV count ${kvCount} exceeds limit ${LIMITS.MAX_KV_COUNT}`);\n }\n // Skip all KV pairs\n for (let i = 0; i < kvCount; i++) {\n skipString();\n const valueType = readU32();\n skipValue(valueType);\n }\n logger.debug(`KV section complete at offset ${offset}, reading tensor names...`);\n const tensorNames = [];\n for (let i = 0; i < tensorCount; i++) {\n const name = readTensorName();\n if (name) {\n tensorNames.push(name);\n }\n // n_dims (u32)\n const nDims = readU32();\n if (nDims > LIMITS.MAX_DIMS) {\n throw new ModelLoadFailedError(`Tensor dimensions ${nDims} exceeds limit ${LIMITS.MAX_DIMS}`);\n }\n // shape: nDims * u64\n skipBytes(nDims * 8);\n // dtype (u32)\n skipBytes(4);\n // offset (u64)\n skipBytes(8);\n }\n logger.debug(`Parsed ${tensorNames.length} tensor names successfully`);\n return tensorNames;\n}\nasync function extractTensorNamesFromHeader(filePath) {\n const stream = createReadStream(filePath);\n const chunks = [];\n let totalRead = 0;\n let streamDestroyed = false;\n function destroyStream() {\n if (!streamDestroyed) {\n streamDestroyed = true;\n stream.destroy();\n }\n }\n try {\n for await (const chunk of stream) {\n chunks.push(chunk);\n totalRead += chunk.length;\n // Only attempt parsing once we have enough data for the basic header\n if (totalRead >= 24) {\n try {\n const buffer = Buffer.concat(chunks);\n const result = parseGGUFHeader(buffer);\n destroyStream();\n return result;\n }\n catch (error) {\n if (error instanceof NeedMoreDataError) {\n // Keep reading\n if (totalRead >= LIMITS.MAX_HEADER_SIZE) {\n throw new ModelLoadFailedError(`GGUF header exceeds ${LIMITS.MAX_HEADER_SIZE / (1024 * 1024 * 1024)}GB limit`);\n }\n continue;\n }\n throw error;\n }\n }\n }\n throw new ModelLoadFailedError('File ended before GGUF header could be parsed');\n }\n finally {\n destroyStream();\n }\n}\n/**\n * Extract tensor names from all GGUF shards and write to {baseFilename}.tensors.txt\n * Required for sharded models to enable incremental/async loading\n * @throws ModelLoadFailedError if any shard fails extraction\n */\nexport async function extractAndWriteTensorsFile(shardDir, shardFilenames, baseFilename) {\n const tensorsFilePath = validateAndJoinPath(shardDir, `${baseFilename}.tensors.txt`);\n try {\n await fsPromises.access(tensorsFilePath);\n logger.info(`Tensors file already exists: ${tensorsFilePath}`);\n return tensorsFilePath;\n }\n catch {\n // Continue with extraction\n }\n logger.info(`Extracting tensors from ${shardFilenames.length} shards...`);\n const allTensorNames = new Set();\n const failedShards = [];\n for (const filename of shardFilenames) {\n const shardPath = validateAndJoinPath(shardDir, filename);\n try {\n logger.debug(`Extracting tensors from ${filename}...`);\n const tensorNames = await extractTensorNamesFromHeader(shardPath);\n if (tensorNames.length > 0) {\n tensorNames.forEach((name) => allTensorNames.add(name));\n logger.info(`Extracted ${tensorNames.length} tensors from ${filename}`);\n }\n else {\n failedShards.push(filename);\n logger.error(`No tensors found in ${filename}`);\n }\n }\n catch (error) {\n failedShards.push(filename);\n logger.error(`Failed to extract tensors from ${filename}:`, error);\n }\n }\n if (failedShards.length > 0) {\n throw new ModelLoadFailedError(`Failed to extract tensors from ${failedShards.length}/${shardFilenames.length} shards: ${failedShards.join(', ')}`);\n }\n if (allTensorNames.size === 0) {\n throw new ModelLoadFailedError(`Could not extract any tensors from shards.`);\n }\n const tensorNames = Array.from(allTensorNames).sort();\n await fsPromises.writeFile(tensorsFilePath, tensorNames.join('\\n') + '\\n', 'utf8');\n logger.info(`Tensors file created: ${tensorsFilePath} (${tensorNames.length} tensors from ${shardFilenames.length} shards)`);\n return tensorsFilePath;\n}\n/**\n * Check if a file has a valid GGUF header structure.\n * Returns true if the header parses successfully and contains tensor metadata.\n *\n * NOTE: This only validates the header structure, NOT that tensor data exists.\n * A file can have a valid header but be incomplete.\n */\nexport async function hasValidGGUFHeader(filePath) {\n try {\n const tensorNames = await extractTensorNamesFromHeader(filePath);\n return tensorNames.length > 0;\n }\n catch (error) {\n logger.warn(`⚠️ GGUF header validation failed: ${error instanceof Error ? error.message : String(error)}`);\n return false;\n }\n}\nexport * from './archive.js';\nexport * from './cache/types.js';\nexport * from './cache/auto-history.js';\nexport * from './cache/paths.js';\nexport * from './checksum.js';\nexport * from './config-transform.js';\nexport * from './expand-gguf-shards.js';\nexport * from './formatting.js';\nexport * from './gguf-tensor-extractor.js';\nexport * from './path-security.js';\nexport * from './shard-utils.js';\nexport const MULTI_GPU_KEYS = ['main-gpu', 'split-mode', 'tensor-split'];\n// Deletes any multi-GPU keys from `config` IN PLACE and returns the removed\n// keys. Mutation is intentional: callers strip before the config reaches the\n// model constructor. gpu_layers (single-GPU layer offload) is intentionally\n// absent from MULTI_GPU_KEYS.\nexport function stripMultiGpuKeys(config) {\n const stripped = MULTI_GPU_KEYS.filter((k) => k in config);\n stripped.forEach((k) => delete config[k]);\n return stripped;\n}\nimport path from 'bare-path';\nimport { PathTraversalError } from '../../utils/errors-server.js';\nimport { sanitizePathComponent, checkPathWithinBase } from '../../utils/path-sanitize.js';\n// Re-export sanitizePathComponent unchanged\nexport { sanitizePathComponent } from '../../utils/path-sanitize.js';\n/**\n * Check whether a target path is contained within a base directory.\n * Both paths are resolved to absolute before comparison.\n */\nexport function isPathWithinBase(basePath, targetPath) {\n return checkPathWithinBase(basePath, targetPath, (...args) => path.resolve(...args), path.sep || '/');\n}\n/**\n * Sanitize components, join them to a base path, and verify the result\n * stays within the base directory. Throws PathTraversalError on escape.\n */\nexport function validateAndJoinPath(basePath, ...components) {\n const sanitized = components.map((c) => sanitizePathComponent(c));\n const joined = path.join(basePath, ...sanitized);\n const resolved = path.resolve(joined);\n if (!isPathWithinBase(basePath, resolved)) {\n throw new PathTraversalError(components.join('/'), basePath);\n }\n return resolved;\n}\nimport path from 'bare-path';\nimport { getEnv } from '../env.js';\nexport function getQvacPath(...subPaths) {\n return path.join(getEnv().HOME_DIR, '.qvac', ...subPaths);\n}\n// Translates the request-level `responseFormat` into the JSON Schema string\n// that the llama.cpp addon's per-request `generationParams.json_schema`\n// expects. Returns `undefined` for `{ type: \"text\" }` (no constraint).\n//\n// The addon converts the schema to GBNF natively via\n// `json_schema_to_grammar()` and applies it for the duration of the request\n// only, restoring the prior sampling block afterwards — so this surface is\n// safe to use under concurrent completions on the same model. (Tool calling\n// still goes through `setupToolGrammar` / `modelConfig.grammar`; see the\n// mutual-exclusion check in `completionClientParamsSchema`.)\nexport function getResponseFormatJsonSchema(responseFormat) {\n switch (responseFormat.type) {\n case 'text':\n return undefined;\n case 'json_object':\n return JSON.stringify({ type: 'object' });\n case 'json_schema':\n return JSON.stringify(responseFormat.json_schema.schema);\n }\n}\nimport { ModelLoadFailedError, InvalidShardUrlPatternError } from '../../utils/errors-server.js';\nimport { generateShortHash } from './formatting.js';\nimport { validateAndJoinPath } from './path-security.js';\nimport { extractAndWriteTensorsFile } from './gguf-tensor-extractor.js';\nimport { promises as fsPromises } from 'bare-fs';\n/**\n * Detect if model filename follows shard pattern (00001-of-0000x)\n */\nexport function detectShardedModel(filename) {\n const shardPattern = /^(.+)-(\\d{5})-of-(\\d{5})(\\.\\w+)$/;\n const match = filename.match(shardPattern);\n if (match && match[1] && match[2] && match[3] && match[4]) {\n return {\n isSharded: true,\n baseFilename: match[1],\n currentShard: parseInt(match[2], 10),\n totalShards: parseInt(match[3], 10),\n extension: match[4]\n };\n }\n return { isSharded: false };\n}\n/**\n * Generate list of shard filenames for a sharded model\n * Accepts any shard in the group\n *\n * @param shardName - Any shard filename in the group (e.g., \"model-00002-of-00005.gguf\")\n * @returns Array of all numbered shard filenames\n */\nexport function generateShardFilenames(shardName) {\n const shardInfo = detectShardedModel(shardName);\n if (!shardInfo.isSharded || !shardInfo.totalShards) {\n throw new ModelLoadFailedError(`Not a sharded model filename: ${shardName}`);\n }\n const filenames = [];\n const { baseFilename, totalShards, extension } = shardInfo;\n for (let i = 1; i <= totalShards; i++) {\n const shardNumber = i.toString().padStart(5, '0');\n const totalShardsStr = totalShards.toString().padStart(5, '0');\n filenames.push(`${baseFilename}-${shardNumber}-of-${totalShardsStr}${extension}`);\n }\n return filenames;\n}\n/**\n * Parse pattern-based shard URL and generate all shard URLs with cache key\n * Works with patterns like: https://example.com/path/model-00002-of-00005.gguf\n *\n * @param shardUrl - Any shard URL in the group\n * @returns Object with shard URLs array and cache key\n */\nexport function parsePatternBasedShardUrl(shardUrl) {\n const urlParts = shardUrl.split('/');\n const filename = urlParts[urlParts.length - 1]?.split('?')[0] || '';\n const shardInfo = detectShardedModel(filename);\n if (!shardInfo.isSharded || !shardInfo.baseFilename) {\n throw new InvalidShardUrlPatternError(shardUrl);\n }\n const shardFilenames = generateShardFilenames(filename);\n const baseUrl = urlParts.slice(0, -1).join('/');\n return {\n shardUrls: shardFilenames.map((shardFilename) => ({\n url: `${baseUrl}/${shardFilename}`,\n filename: shardFilename\n })),\n cacheKey: generateShortHash(`${baseUrl}/${shardInfo.baseFilename}`)\n };\n}\n/**\n * Extract tensor information from all shards and write to baseFilename.tensors.txt\n * Required for sharded models to enable incremental/async loading\n * @param shardDir - Directory containing the shard files\n * @param shardFilename - Filename of any shard (e.g., \"model-00001-of-00002.gguf\")\n * @returns Path to the created tensors.txt file\n * @throws If not a sharded model or extraction fails\n */\nexport async function extractTensorsFromShards(shardDir, shardFilename) {\n const shardInfo = detectShardedModel(shardFilename);\n if (!shardInfo.isSharded || !shardInfo.baseFilename || !shardInfo.totalShards) {\n throw new ModelLoadFailedError(`Not a sharded model filename: ${shardFilename}`);\n }\n const allShardFilenames = generateShardFilenames(shardFilename);\n return extractAndWriteTensorsFile(shardDir, allShardFilenames, shardInfo.baseFilename);\n}\n/**\n * Check if all numbered shard files exist\n * @param shardDir - Directory containing the shard files\n * @param shardFilename - Filename of any shard (e.g., \"model-00001-of-00002.gguf\")\n * @returns true if all numbered shards exist, false otherwise\n */\nexport async function checkAllShardsExist(shardDir, shardFilename) {\n const shardInfo = detectShardedModel(shardFilename);\n if (!shardInfo.isSharded) {\n return false;\n }\n const shardFilenames = generateShardFilenames(shardFilename);\n const allShardsExist = await Promise.all(shardFilenames.map((f) => fsPromises\n .access(validateAndJoinPath(shardDir, f))\n .then(() => true)\n .catch(() => false))).then((results) => results.every((exists) => exists));\n return allShardsExist;\n}\n/**\n * Validate that all shards and tensors.txt exist for a sharded model\n * @param shardDir - Directory containing the shard files\n * @param shardFilename - Filename of any shard (e.g., \"model-00001-of-00002.gguf\")\n * @returns true if all shards and tensors.txt exist, false otherwise\n */\nexport async function validateShardedModelCache(shardDir, shardFilename) {\n const shardInfo = detectShardedModel(shardFilename);\n if (!shardInfo.isSharded || !shardInfo.baseFilename) {\n return false;\n }\n const allShardsExist = await checkAllShardsExist(shardDir, shardFilename);\n if (!allShardsExist) {\n return false;\n }\n const tensorsFile = `${shardInfo.baseFilename}.tensors.txt`;\n const tensorsExist = await fsPromises\n .access(validateAndJoinPath(shardDir, tensorsFile))\n .then(() => true)\n .catch(() => false);\n return tensorsExist;\n}\nimport { detectToolDialectFromName } from './tools/index.js';\nimport { getModelInfo } from '../bare/registry/model-registry.js';\n/**\n * Static tools mode: prepend tools right after the system message (or at the\n * very start when no system message is present). The tool block stays in the\n * kv-cache for the whole chat session.\n */\nexport function prependToolsToHistory(history, tools) {\n const systemMsgIndex = history.findIndex((msg) => msg.role === 'system');\n if (systemMsgIndex >= 0) {\n return [...history.slice(0, systemMsgIndex + 1), ...tools, ...history.slice(systemMsgIndex + 1)];\n }\n return [...tools, ...history];\n}\n/**\n * Dynamic tools mode: append tools after the last history message. The\n * addon's compact-tools mode anchors the block after the last user message\n * and trims it from the kv-cache once the tool-call chain resolves, so a\n * subsequent turn can ship a different tool set without poisoning the cache.\n */\nexport function appendToolsToHistory(history, tools) {\n return [...history, ...tools];\n}\nexport function detectToolDialect(modelId) {\n const info = getModelInfo(modelId);\n if (!info)\n return 'hermes';\n return detectToolDialectFromName(info.name, info.path);\n}\n/**\n * Detects the tool-call dialect from a model's registry name and file path.\n * Defaults to \"hermes\" (its parser chain also covers unknown JSON-payload\n * models). Bypass with `completion({ toolDialect })`.\n */\nexport function detectToolDialectFromName(name, path) {\n const basename = path.toLowerCase().split(/[/\\\\]/).pop() ?? '';\n const tag = `${(name ?? '').toLowerCase()}|${basename}`;\n if (/qwen3[._-]?[56](?![a-z0-9])/.test(tag))\n return 'qwen35';\n if (/gemma[-_]?4(?=[^a-z0-9]|$)/.test(tag))\n return 'gemma4';\n if (/gpt[_-]?oss/.test(tag))\n return 'harmony';\n if (/lfm[_-]?\\d/.test(tag))\n return 'pythonic';\n return 'hermes';\n}\nexport { detectToolDialectFromName } from './dialect.js';\nexport { parseToolCalls } from './parser.js';\nimport { stripThinkingBlocks } from './shared.js';\nimport { parseGemmaFormat, parseGenericFormat, parseLlamacppFormat } from './parsers/json.js';\nimport { parseHermesFormat } from './parsers/hermes.js';\nimport { parsePythonicFormat } from './parsers/pythonic.js';\nimport { parseHarmonyFormat } from './parsers/harmony.js';\nimport { parseQwen35Format } from './parsers/qwen35.js';\nimport { parseGemma4NativeFormat } from './parsers/gemma4native.js';\nfunction pickFormatParsers(dialect) {\n switch (dialect) {\n case 'pythonic':\n return [parsePythonicFormat];\n case 'hermes':\n // Hermes first so frame errors surface; JSON fallbacks then cover\n // unknown JSON-payload models.\n return [parseHermesFormat, parseGemmaFormat, parseLlamacppFormat];\n case 'json':\n return [parseGemmaFormat, parseLlamacppFormat];\n case 'harmony':\n return [parseHarmonyFormat];\n case 'qwen35':\n // Hermes fallback: Qwen3.5 templates sometimes emit OpenAI-style JSON\n // when the native XML format fails; Hermes chain recovers those.\n return [parseQwen35Format, parseHermesFormat];\n case 'gemma4':\n // No JSON fallback: Gemma4 emits only its native channel-thought dialect\n // and never falls back to JSON-envelope formats.\n return [parseGemma4NativeFormat];\n default:\n // Gemma4 first: `<|tool_call>` is uniquely distinctive and can't\n // false-match other dialects.\n // Harmony next: `to=functions.` is also uniquely Harmony.\n // Qwen35 before Hermes: defers to Hermes when JSON is inside ,\n // so the XML path is recovered without breaking Hermes-JSON payloads.\n // Pythonic last: its bare `[name(...)]` form can match payloads that\n // look like other dialects.\n return [\n parseGemma4NativeFormat,\n parseHarmonyFormat,\n parseQwen35Format,\n parseHermesFormat,\n parseGemmaFormat,\n parseLlamacppFormat,\n parsePythonicFormat\n ];\n }\n}\nexport function parseToolCalls(text, tools, dialect) {\n if (!tools || tools.length === 0) {\n return { toolCalls: [], errors: [] };\n }\n const cleaned = stripThinkingBlocks(text);\n const formatParsers = pickFormatParsers(dialect);\n for (const parser of formatParsers) {\n const result = parser(cleaned, tools);\n if (result.matched) {\n return { toolCalls: result.toolCalls, errors: result.errors };\n }\n }\n const generic = parseGenericFormat(cleaned, tools);\n return { toolCalls: generic.toolCalls, errors: generic.errors };\n}\nimport { generateStableToolCallId, validateToolArguments } from '../shared.js';\n// Transliterates Gemma 4's JS-literal argument body to valid JSON so it can\n// be parsed with JSON.parse. The body uses:\n// - <|\"|>...<|\"|> instead of \"...\" for string values\n// - bare (unquoted) object keys\n// Strategy: split by <|\"|> tokens so structural parts (even indices) and\n// string value parts (odd indices) are processed separately, preventing\n// the key-quoting regex from matching `, key:` patterns inside string values.\nfunction gemmaArgsToJson(argsRaw) {\n const parts = ('{' + argsRaw + '}').split(/<\\|\"\\|>/);\n return parts\n .map((part, i) => i % 2 === 0\n ? part.replace(/([{,]\\s*)([A-Za-z_][\\w-]*)\\s*:/g, '$1\"$2\":')\n : '\"' +\n part\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/[\\x00-\\x1f]/g, (c) => `\\\\u${c.charCodeAt(0).toString(16).padStart(4, '0')}`) +\n '\"')\n .join('');\n}\n// Parses Gemma 4's native tool-call dialect:\n// <|tool_call>call:NAME{key:<|\"|>val<|\"|>,key2:bareNum,...}\n// Keys are bare identifiers; string values are wrapped in <|\"|>...<|\"|>;\n// numbers/booleans are bare literals; nested objects/arrays use JS-literal\n// syntax throughout. Transliterates to JSON then parses.\nexport function parseGemma4NativeFormat(text, tools) {\n const toolCalls = [];\n const errors = [];\n if (!text.includes('<|tool_call>')) {\n return { matched: false, toolCalls, errors };\n }\n const callRegex = /<\\|tool_call>call:([A-Za-z_][\\w-]*)\\{([\\s\\S]*?)\\}/g;\n const matches = Array.from(text.matchAll(callRegex));\n if (matches.length === 0)\n return { matched: false, toolCalls, errors };\n for (const match of matches) {\n const name = match[1];\n const argsRaw = match[2];\n let args;\n try {\n args = JSON.parse(gemmaArgsToJson(argsRaw));\n }\n catch (err) {\n errors.push({\n code: 'PARSE_ERROR',\n message: `Failed to parse Gemma 4 tool call arguments: ${err instanceof Error ? err.message : String(err)}`,\n raw: match[0]\n });\n continue;\n }\n const validation = validateToolArguments(name, args, tools);\n if (!validation.isValid && validation.error) {\n errors.push({ ...validation.error, raw: match[0] });\n continue;\n }\n toolCalls.push({\n id: generateStableToolCallId(name, args),\n name,\n arguments: args,\n raw: match[0]\n });\n }\n return { matched: true, toolCalls, errors };\n}\nimport { generateStableToolCallId, validateToolArguments } from '../shared.js';\nconst HARMONY_FRAME_RE = /to=functions\\.([\\w-]+)\\s+<\\|constrain\\|>json<\\|message\\|>([\\s\\S]*?)(?=<\\|call\\|>|$)/g;\nexport function parseHarmonyFormat(text, tools) {\n const toolCalls = [];\n const errors = [];\n if (!text.includes('to=functions.')) {\n return { matched: false, toolCalls, errors };\n }\n HARMONY_FRAME_RE.lastIndex = 0;\n let m;\n while ((m = HARMONY_FRAME_RE.exec(text)) !== null) {\n const name = m[1];\n const payload = m[2]?.trim();\n const raw = m[0];\n if (!name || payload === undefined)\n continue;\n let parsedArgs;\n try {\n parsedArgs = JSON.parse(payload);\n }\n catch (error) {\n errors.push({\n code: 'PARSE_ERROR',\n message: `Failed to parse Harmony tool call JSON for ${name}: ${error instanceof Error ? error.message : String(error)}`,\n raw\n });\n continue;\n }\n if (typeof parsedArgs !== 'object' || parsedArgs === null || Array.isArray(parsedArgs)) {\n errors.push({\n code: 'PARSE_ERROR',\n message: `Harmony tool call payload for ${name} is not a JSON object`,\n raw\n });\n continue;\n }\n const args = parsedArgs;\n const validation = validateToolArguments(name, args, tools);\n if (!validation.isValid && validation.error) {\n errors.push({ ...validation.error, raw });\n continue;\n }\n toolCalls.push({\n id: generateStableToolCallId(name, args),\n name,\n arguments: args,\n raw\n });\n }\n // Defer `matched` to extraction so partial Harmony shapes fall through\n // to the next parser instead of short-circuiting the chain.\n return {\n matched: toolCalls.length > 0 || errors.length > 0,\n toolCalls,\n errors\n };\n}\nimport { generateStableToolCallId, isValidToolCall, validateToolArguments } from '../shared.js';\n// Qwen3.5/3.6 can fuse its two tool templates into one frame, embedding the\n// XML `` token as a bare string key inside the JSON envelope:\n// {\"function=NAME\",\"arguments\":{...}} (invalid JSON, not parseable as-is)\n// Rewrite only that exact shape to a canonical `{\"name\":NAME,\"arguments\":...}`\n// frame. Kept deliberately narrow so well-formed JSON frames are never touched.\nfunction repairFunctionEqualsJson(candidate) {\n const match = /^\\{\\s*\"function=([^\"]+)\"\\s*,\\s*\"arguments\"\\s*:\\s*([\\s\\S]+)\\}\\s*$/.exec(candidate);\n if (!match)\n return undefined;\n return `{\"name\":${JSON.stringify(match[1])},\"arguments\":${match[2]}}`;\n}\nfunction parseHermesJson(candidate) {\n try {\n return JSON.parse(candidate);\n }\n catch (err) {\n const repaired = repairFunctionEqualsJson(candidate);\n if (repaired === undefined)\n throw err;\n return JSON.parse(repaired);\n }\n}\n// Hermes-style: JSON payload wrapped in `...` tags\nexport function parseHermesFormat(text, tools) {\n const toolCalls = [];\n const errors = [];\n if (!text.includes('')) {\n return { matched: false, toolCalls, errors };\n }\n // Incomplete frame: open marker without close (cutoff/abort). Recover\n // the inner buffer here — fallthrough to JSON parsers can't strip the\n // `` prefix on its own.\n if (!text.includes('')) {\n return recoverIncompleteHermesFrame(text, tools);\n }\n const toolCallRegex = /\\s*({[\\s\\S]*?})\\s*<\\/tool_call>/g;\n const matches = Array.from(text.matchAll(toolCallRegex));\n for (const match of matches) {\n const callJson = match[1];\n if (!callJson)\n continue;\n const trimmedJson = callJson.trim();\n let callItem;\n try {\n callItem = parseHermesJson(trimmedJson);\n }\n catch (error) {\n errors.push({\n code: 'PARSE_ERROR',\n message: `Failed to parse Hermes tool call: ${error instanceof Error ? error.message : String(error)}`,\n raw: trimmedJson\n });\n continue;\n }\n if (!isValidToolCall(callItem)) {\n errors.push({\n code: 'PARSE_ERROR',\n message: 'Hermes tool call is missing name/arguments',\n raw: trimmedJson\n });\n continue;\n }\n const call = callItem;\n const validation = validateToolArguments(call.name, call.arguments, tools);\n if (!validation.isValid && validation.error) {\n errors.push({\n ...validation.error,\n raw: trimmedJson\n });\n continue;\n }\n toolCalls.push({\n id: call.id || generateStableToolCallId(call.name, call.arguments),\n name: call.name,\n arguments: call.arguments,\n raw: trimmedJson\n });\n }\n return { matched: true, toolCalls, errors };\n}\n// Strips a possible truncated close-tag tail (`');\n const inner = text.slice(openIdx + ''.length).trim();\n const partialCloseIdx = inner.search(/<\\/tool/);\n const candidate = partialCloseIdx === -1 ? inner : inner.slice(0, partialCloseIdx).trim();\n if (candidate.length === 0) {\n return { matched: false, toolCalls: [], errors: [] };\n }\n let parsed;\n try {\n parsed = parseHermesJson(candidate);\n }\n catch {\n return { matched: false, toolCalls: [], errors: [] };\n }\n if (!isValidToolCall(parsed)) {\n return { matched: false, toolCalls: [], errors: [] };\n }\n const validation = validateToolArguments(parsed.name, parsed.arguments, tools);\n if (!validation.isValid && validation.error) {\n return {\n matched: true,\n toolCalls: [],\n errors: [{ ...validation.error, raw: candidate }]\n };\n }\n return {\n matched: true,\n toolCalls: [\n {\n id: parsed.id || generateStableToolCallId(parsed.name, parsed.arguments),\n name: parsed.name,\n arguments: parsed.arguments,\n raw: candidate\n }\n ],\n errors: []\n };\n}\nimport { generateStableToolCallId, isValidToolCall, validateToolArguments } from '../shared.js';\nexport function parseGemmaFormat(text, tools) {\n const toolCalls = [];\n const errors = [];\n let parsed;\n try {\n parsed = JSON.parse(text);\n }\n catch {\n return { matched: false, toolCalls, errors };\n }\n if (!parsed ||\n typeof parsed !== 'object' ||\n !('tool_calls' in parsed) ||\n !Array.isArray(parsed.tool_calls)) {\n return { matched: false, toolCalls, errors };\n }\n for (const callItem of parsed.tool_calls) {\n if (!isValidToolCall(callItem)) {\n errors.push({\n code: 'PARSE_ERROR',\n message: 'Gemma tool_calls entry is missing name/arguments',\n raw: JSON.stringify(callItem)\n });\n continue;\n }\n const call = callItem;\n const validation = validateToolArguments(call.name, call.arguments, tools);\n if (!validation.isValid && validation.error) {\n errors.push({\n ...validation.error,\n raw: JSON.stringify(call)\n });\n continue;\n }\n toolCalls.push({\n id: call.id || generateStableToolCallId(call.name, call.arguments),\n name: call.name,\n arguments: call.arguments,\n raw: JSON.stringify(call)\n });\n }\n return { matched: true, toolCalls, errors };\n}\nexport function parseLlamacppFormat(text, tools) {\n const toolCalls = [];\n const errors = [];\n let parsedItem;\n try {\n parsedItem = JSON.parse(text);\n }\n catch {\n return { matched: false, toolCalls, errors };\n }\n if (!isValidToolCall(parsedItem)) {\n return { matched: false, toolCalls, errors };\n }\n const parsed = parsedItem;\n const validation = validateToolArguments(parsed.name, parsed.arguments, tools);\n if (!validation.isValid && validation.error) {\n errors.push({\n ...validation.error,\n raw: text\n });\n }\n else {\n toolCalls.push({\n id: parsed.id || generateStableToolCallId(parsed.name, parsed.arguments),\n name: parsed.name,\n arguments: parsed.arguments,\n raw: text\n });\n }\n return { matched: true, toolCalls, errors };\n}\n// Last-resort fallback: loose JSON `{\"name\":..., \"arguments\":...}` objects\n// anywhere in the text. Runs after dialect-specific parsers all miss.\nexport function parseGenericFormat(text, tools) {\n const toolCalls = [];\n const errors = [];\n const jsonObjectRegex = /\\{[\\s\\S]*?\"name\"[\\s\\S]*?\"arguments\"[\\s\\S]*?\\}/g;\n let match;\n let matched = false;\n while ((match = jsonObjectRegex.exec(text)) !== null) {\n matched = true;\n try {\n const objItem = JSON.parse(match[0]);\n if (isValidToolCall(objItem)) {\n const obj = objItem;\n const validation = validateToolArguments(obj.name, obj.arguments, tools);\n if (!validation.isValid && validation.error) {\n errors.push({\n ...validation.error,\n raw: match[0]\n });\n continue;\n }\n toolCalls.push({\n id: obj.id || generateStableToolCallId(obj.name, obj.arguments),\n name: obj.name,\n arguments: obj.arguments,\n raw: match[0]\n });\n }\n }\n catch (error) {\n errors.push({\n code: 'PARSE_ERROR',\n message: `Failed to parse generic tool call: ${error instanceof Error ? error.message : String(error)}`,\n raw: match[0]\n });\n }\n }\n return { matched, toolCalls, errors };\n}\nimport { generateStableToolCallId, validateToolArguments } from '../shared.js';\n// Pythonic `[name(k=v), ...]` arrays. LFM 2.x is auto-routed; Llama-style\n// tokens are kept for callers that opt in via `completion({ toolDialect:\n// \"pythonic\" })` for a model known to emit Pythonic. Pure string parsing —\n// no eval/vm/Function (untrusted model output).\nconst PYTHONIC_LFM_OPEN = '<|tool_call_start|>';\nconst PYTHONIC_LFM_CLOSE = '<|tool_call_end|>';\nconst PYTHONIC_LLAMA_OPEN = '<|start_header_id|>tool_call<|end_header_id|>';\nconst PYTHONIC_LLAMA_CLOSE = '<|eot_id|>';\nfunction locatePythonicCallList(text) {\n const lfmStart = text.indexOf(PYTHONIC_LFM_OPEN);\n if (lfmStart !== -1) {\n const after = text.slice(lfmStart + PYTHONIC_LFM_OPEN.length);\n const end = after.indexOf(PYTHONIC_LFM_CLOSE);\n return end === -1 ? after : after.slice(0, end);\n }\n const llamaStart = text.indexOf(PYTHONIC_LLAMA_OPEN);\n if (llamaStart !== -1) {\n const after = text.slice(llamaStart + PYTHONIC_LLAMA_OPEN.length);\n const end = after.indexOf(PYTHONIC_LLAMA_CLOSE);\n return end === -1 ? after : after.slice(0, end);\n }\n // Identifier+`(` requirement rejects JSON arrays and plain bracketed lists.\n const bareMatch = /\\[\\s*[A-Za-z_]\\w*\\s*\\(/.exec(text);\n if (bareMatch)\n return text.slice(bareMatch.index);\n return null;\n}\nfunction pyPeek(s, offset = 0) {\n return s.text[s.pos + offset] ?? '';\n}\nfunction pyConsume(s) {\n const c = s.text[s.pos] ?? '';\n s.pos++;\n return c;\n}\nfunction pySkipWs(s) {\n while (/\\s/.test(pyPeek(s)))\n s.pos++;\n}\nfunction pyParseString(s) {\n const quote = pyConsume(s);\n let out = '';\n while (s.pos < s.text.length && pyPeek(s) !== quote) {\n if (pyPeek(s) === '\\\\') {\n s.pos++;\n const esc = pyConsume(s);\n switch (esc) {\n case 'n':\n out += '\\n';\n break;\n case 't':\n out += '\\t';\n break;\n case 'r':\n out += '\\r';\n break;\n case '\\\\':\n out += '\\\\';\n break;\n case \"'\":\n out += \"'\";\n break;\n case '\"':\n out += '\"';\n break;\n case '0':\n out += '\\0';\n break;\n default:\n out += esc;\n break;\n }\n }\n else {\n out += pyConsume(s);\n }\n }\n if (s.pos >= s.text.length) {\n throw new Error('Unterminated string literal');\n }\n pyConsume(s);\n return out;\n}\nfunction pyParseNumber(s) {\n const start = s.pos;\n if (pyPeek(s) === '-' || pyPeek(s) === '+')\n s.pos++;\n while (/\\d/.test(pyPeek(s)))\n s.pos++;\n if (pyPeek(s) === '.') {\n s.pos++;\n while (/\\d/.test(pyPeek(s)))\n s.pos++;\n }\n if (pyPeek(s) === 'e' || pyPeek(s) === 'E') {\n s.pos++;\n if (pyPeek(s) === '-' || pyPeek(s) === '+')\n s.pos++;\n while (/\\d/.test(pyPeek(s)))\n s.pos++;\n }\n const literal = s.text.slice(start, s.pos);\n const n = Number(literal);\n if (Number.isNaN(n) || literal.length === 0) {\n throw new Error(`Invalid number literal: ${JSON.stringify(literal)}`);\n }\n return n;\n}\nfunction pyParseIdentifier(s) {\n if (!/[A-Za-z_]/.test(pyPeek(s))) {\n throw new Error(`Expected identifier, got ${JSON.stringify(pyPeek(s))}`);\n }\n const start = s.pos;\n while (/[\\w]/.test(pyPeek(s)))\n s.pos++;\n return s.text.slice(start, s.pos);\n}\n// Identifier-as-string fallback: any bare word that isn't `True`/`False`/`None`\n// is returned as a string, so `[get_weather(city=Paris)]` still produces\n// `{ city: \"Paris\" }`. Side-effect: lowercase `null` / `true` / `false` from\n// JS-trained models also coerce to strings — validate against your tool schema.\nfunction pyParseValue(s) {\n pySkipWs(s);\n const c = pyPeek(s);\n if (c === '\"' || c === \"'\")\n return pyParseString(s);\n if (c === '[')\n return pyParseList(s);\n if (c === '{')\n return pyParseDict(s);\n if (c === '-' || c === '+' || /\\d/.test(c))\n return pyParseNumber(s);\n if (/[A-Za-z_]/.test(c)) {\n const id = pyParseIdentifier(s);\n if (id === 'True')\n return true;\n if (id === 'False')\n return false;\n if (id === 'None')\n return null;\n return id;\n }\n throw new Error(`Unexpected character: ${JSON.stringify(c)}`);\n}\n// Drives `parseItem, sep, parseItem, sep, ..., close` loops with trailing-\n// comma tolerance. Assumes the open delimiter was already consumed.\nfunction pyParseDelimited(s, close, context, parseItem) {\n pySkipWs(s);\n if (pyPeek(s) === close) {\n pyConsume(s);\n return;\n }\n for (;;) {\n pySkipWs(s);\n parseItem();\n pySkipWs(s);\n const sep = pyPeek(s);\n if (sep === ',') {\n pyConsume(s);\n pySkipWs(s);\n if (pyPeek(s) === close) {\n pyConsume(s);\n return;\n }\n }\n else if (sep === close) {\n pyConsume(s);\n return;\n }\n else {\n throw new Error(`Expected , or ${close} in ${context}, got ${JSON.stringify(sep)}`);\n }\n }\n}\nfunction pyParseList(s) {\n pyConsume(s);\n const items = [];\n pyParseDelimited(s, ']', 'list', () => {\n items.push(pyParseValue(s));\n });\n return items;\n}\nfunction pyParseDict(s) {\n pyConsume(s);\n const obj = {};\n pyParseDelimited(s, '}', 'dict', () => {\n const c = pyPeek(s);\n let key;\n if (c === '\"' || c === \"'\")\n key = pyParseString(s);\n else if (/[A-Za-z_]/.test(c))\n key = pyParseIdentifier(s);\n else\n throw new Error(`Expected dict key, got ${JSON.stringify(c)}`);\n pySkipWs(s);\n if (pyConsume(s) !== ':') {\n throw new Error(`Expected : after dict key \"${key}\"`);\n }\n obj[key] = pyParseValue(s);\n });\n return obj;\n}\nfunction pyParseArgList(s) {\n const args = {};\n pyParseDelimited(s, ')', 'args', () => {\n const key = pyParseIdentifier(s);\n pySkipWs(s);\n if (pyConsume(s) !== '=') {\n throw new Error(`Expected = after arg name \"${key}\"`);\n }\n args[key] = pyParseValue(s);\n });\n return args;\n}\nfunction pyParseCallList(text) {\n const s = { text, pos: 0 };\n pySkipWs(s);\n if (pyConsume(s) !== '[') {\n throw new Error('Expected [ at start of call list');\n }\n const calls = [];\n pyParseDelimited(s, ']', 'call list', () => {\n const name = pyParseIdentifier(s);\n pySkipWs(s);\n if (pyConsume(s) !== '(') {\n throw new Error(`Expected ( after call name \"${name}\"`);\n }\n calls.push({ name, arguments: pyParseArgList(s) });\n });\n return calls;\n}\nexport function parsePythonicFormat(text, tools) {\n const toolCalls = [];\n const errors = [];\n const slice = locatePythonicCallList(text);\n if (slice === null) {\n return { matched: false, toolCalls, errors };\n }\n let calls;\n try {\n calls = pyParseCallList(slice);\n }\n catch (error) {\n errors.push({\n code: 'PARSE_ERROR',\n message: `Failed to parse Pythonic tool call list: ${error instanceof Error ? error.message : String(error)}`,\n raw: slice\n });\n return { matched: true, toolCalls, errors };\n }\n for (const call of calls) {\n const raw = `${call.name}(${JSON.stringify(call.arguments)})`;\n const validation = validateToolArguments(call.name, call.arguments, tools);\n if (!validation.isValid && validation.error) {\n errors.push({ ...validation.error, raw });\n continue;\n }\n toolCalls.push({\n id: generateStableToolCallId(call.name, call.arguments),\n name: call.name,\n arguments: call.arguments,\n raw\n });\n }\n return { matched: true, toolCalls, errors };\n}\nimport { generateStableToolCallId, validateToolArguments } from '../shared.js';\n// Coerce raw parameter text to the type declared in the tool's JSON schema.\n// String values are raw (not JSON-quoted); arrays/objects are valid JSON.\nfunction coerceParamValue(raw, schema) {\n const trimmed = raw.trim();\n if (!schema?.type)\n return trimmed;\n switch (schema.type) {\n case 'number': {\n if (trimmed.length === 0)\n throw new Error(`invalid numeric value: \"\"`);\n const n = Number(trimmed);\n if (Number.isNaN(n))\n throw new Error(`invalid numeric value: \"${trimmed}\"`);\n return n;\n }\n case 'integer': {\n if (trimmed.length === 0)\n throw new Error(`invalid integer value: \"\"`);\n const n = Number(trimmed);\n if (Number.isNaN(n) || !Number.isInteger(n))\n throw new Error(`invalid integer value: \"${trimmed}\"`);\n return n;\n }\n case 'boolean': {\n // Qwen3.5/3.6 intermittently emit Python-style capitalised booleans\n // (`True`/`False`); accept any casing so a valid call isn't dropped.\n const v = trimmed.toLowerCase();\n if (v === 'true')\n return true;\n if (v === 'false')\n return false;\n throw new Error(`invalid boolean value: \"${trimmed}\"`);\n }\n case 'array':\n case 'object':\n return JSON.parse(trimmed);\n default:\n return trimmed;\n }\n}\n// Parses Qwen3.5/3.6 Pythonic-XML tool-call format:\n// \n// \n// VALUE\n// \n// \n// String parameter values are raw text (not JSON-quoted); arrays/objects\n// are JSON. Type coercion uses the tool schema; unknown params pass through.\nexport function parseQwen35Format(text, tools) {\n const toolCalls = [];\n const errors = [];\n if (!text.includes('')) {\n return { matched: false, toolCalls, errors };\n }\n const outerRegex = /([\\s\\S]*?)<\\/tool_call>/g;\n const outerMatches = Array.from(text.matchAll(outerRegex));\n if (outerMatches.length === 0)\n return { matched: false, toolCalls, errors };\n // If no match contains XML function syntax, check if this is JSON format\n // (defer to hermes) or just malformed content (surface as PARSE_ERROR).\n if (!outerMatches.some((m) => m[1].includes(' {\n const inner = m[1].trim();\n return inner.startsWith('{') || inner.startsWith('[');\n });\n if (looksLikeJson)\n return { matched: false, toolCalls, errors };\n return {\n matched: true,\n toolCalls,\n errors: outerMatches.map((m) => ({\n code: 'PARSE_ERROR',\n message: 'Qwen3.5 tool call missing ...',\n raw: m[1].trim()\n }))\n };\n }\n for (const outerMatch of outerMatches) {\n const inner = outerMatch[1].trim();\n const fnMatch = /\\s]+)\\s*>([\\s\\S]*?)<\\/function>/i.exec(inner);\n if (!fnMatch) {\n errors.push({\n code: 'PARSE_ERROR',\n message: 'Qwen3.5 tool call missing ...',\n raw: inner\n });\n continue;\n }\n const name = fnMatch[1].trim();\n const paramsBlock = fnMatch[2];\n const tool = tools.find((t) => t.name === name);\n const schemaProperties = tool?.parameters?.properties ?? {};\n const args = {};\n let parseError;\n try {\n const paramRegex = /\\s]+)\\s*>([\\s\\S]*?)<\\/parameter>/gi;\n let pm;\n while ((pm = paramRegex.exec(paramsBlock)) !== null) {\n const paramName = pm[1].trim();\n args[paramName] = coerceParamValue(pm[2], schemaProperties[paramName]);\n }\n }\n catch (err) {\n parseError = err instanceof Error ? err.message : String(err);\n }\n if (parseError !== undefined) {\n errors.push({ code: 'PARSE_ERROR', message: parseError, raw: inner });\n continue;\n }\n const validation = validateToolArguments(name, args, tools);\n if (!validation.isValid && validation.error) {\n errors.push({ ...validation.error, raw: inner });\n continue;\n }\n toolCalls.push({\n id: generateStableToolCallId(name, args),\n name,\n arguments: args,\n raw: inner\n });\n }\n return { matched: true, toolCalls, errors };\n}\nexport function stripThinkingBlocks(text) {\n return text.replace(/[\\s\\S]*?<\\/think>/gi, '');\n}\nlet toolCallSequence = 0;\nexport function generateStableToolCallId(name, args) {\n const content = `${name}:${JSON.stringify(args)}`;\n let hash = 0;\n for (let i = 0; i < content.length; i++) {\n const char = content.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const sequence = toolCallSequence++;\n return `call_${Math.abs(hash).toString(36)}_${sequence}`;\n}\nexport function isValidToolCall(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n if (!('name' in obj) || typeof obj.name !== 'string') {\n return false;\n }\n if (!('arguments' in obj) || typeof obj.arguments !== 'object' || obj.arguments === null) {\n return false;\n }\n return true;\n}\nexport function validateToolArguments(toolName, args, tools) {\n const tool = tools.find((t) => t.name === toolName);\n if (!tool) {\n return {\n isValid: false,\n error: {\n code: 'UNKNOWN_TOOL',\n message: `Tool \"${toolName}\" not found in available tools`\n }\n };\n }\n const required = tool.parameters.required || [];\n for (const requiredParam of required) {\n if (!(requiredParam in args)) {\n return {\n isValid: false,\n error: {\n code: 'VALIDATION_ERROR',\n message: `Missing required parameter \"${requiredParam}\" for tool \"${toolName}\"`\n }\n };\n }\n }\n return { isValid: true };\n}\nimport fs from 'bare-fs';\nimport path from 'bare-path';\nimport os from 'bare-os';\nimport { getServerLogger } from '../../logging/index.js';\nimport { getQvacPath } from './qvac-paths.js';\nconst logger = getServerLogger();\nconst LOCK_FILENAME = '.worker.lock';\nfunction getLockFilePath() {\n return getQvacPath(LOCK_FILENAME);\n}\nfunction isProcessAlive(pid) {\n try {\n os.kill(pid, 0);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction readLockFile(lockPath) {\n try {\n if (!fs.existsSync(lockPath))\n return null;\n const raw = fs.readFileSync(lockPath, 'utf-8');\n return JSON.parse(raw);\n }\n catch {\n return null;\n }\n}\nexport function acquireWorkerLock() {\n const lockPath = getLockFilePath();\n const existing = readLockFile(lockPath);\n if (existing) {\n if (isProcessAlive(existing.pid)) {\n logger.warn(`Another worker (PID ${existing.pid}) is still running — lock file exists at ${lockPath}`);\n }\n else {\n logger.warn(`Stale lock file detected (PID ${existing.pid} is dead, started ${existing.startedAt}). Removing.`);\n }\n }\n const content = {\n pid: os.pid(),\n startedAt: new Date().toISOString()\n };\n try {\n fs.mkdirSync(path.dirname(lockPath), { recursive: true });\n fs.writeFileSync(lockPath, JSON.stringify(content));\n logger.debug(`Worker lock acquired (PID ${os.pid()})`);\n }\n catch (error) {\n logger.error('Failed to write worker lock file:', error instanceof Error ? error.message : String(error));\n }\n}\nexport function releaseWorkerLock() {\n const lockPath = getLockFilePath();\n try {\n const existing = readLockFile(lockPath);\n if (existing && existing.pid === os.pid()) {\n fs.unlinkSync(lockPath);\n logger.debug('Worker lock released');\n }\n }\n catch {\n // Best-effort — may already be gone\n }\n}\nimport os from 'bare-os';\nimport Signal from 'bare-signals';\nimport { createBareKitRPCServer, createIPCClient } from './rpc/create-server.js';\nimport { destroySwarm } from './bare/hyperswarm.js';\nimport { initEnv, getValidatedEnv } from './env.js';\nimport { closeAllRagInstances } from './bare/rag-hyperdb/index.js';\nimport { cleanupDownloads } from './rpc/handlers/load-model/download-manager.js';\nimport { unloadAllModels } from './bare/registry/model-registry.js';\nimport { closeRegistryClient } from './bare/registry/registry-client.js';\nimport { clearAllLoggingStreams, startLogBuffering, stopLogBufferingWithTimeout } from './bare/registry/logging-stream-registry.js';\nimport { clearAllAddonLoggers, getServerLogger, SDK_LOG_ID, SDK_ALL_LOG_ID } from '../logging/index.js';\nimport { clearPlugins } from './plugins/index.js';\nimport { acquireWorkerLock, releaseWorkerLock } from './utils/worker-lock.js';\nlet coreInitialized = false;\nlet rpcInitialized = false;\n// Set true when the cleanup body has run at least once. Lets both\n// cleanupForTerminate (pre-terminate path) and shutdownBareDirectWorker\n// (signal/exit path) call runCleanup() without doing duplicate work.\nlet cleanupRan = false;\n// Set true when shutdownBareDirectWorker is in flight. Distinct from\n// cleanupRan: cleanupForTerminate must NOT set this, otherwise a later\n// SIGTERM/SIGINT/uncaught-exception would early-return at the guard\n// in shutdownBareDirectWorker and skip releaseWorkerLock + Bare.exit.\nlet isShuttingDown = false;\nconst logger = getServerLogger();\n// Defense-in-depth grace period for the SIGKILL safety net armed before\n// Bare.exit() in shutdownBareDirectWorker. If Bare.exit cannot\n// terminate the worker within this window — typically because some path\n// holds a non-cancellable native handle (e.g. a libuv worker thread\n// blocked on flock; see QVAC-18197) — we force-kill the OS process to\n// guarantee bounded shutdown time.\nconst FORCE_EXIT_GRACE_MS = 3_000;\nfunction scheduleForceExit() {\n const timer = setTimeout(() => {\n logger.error(`Bare.exit did not terminate the worker within ${FORCE_EXIT_GRACE_MS}ms — ` +\n `force-killing self (likely blocked native handle)`);\n try {\n os.kill(os.pid(), 'SIGKILL');\n }\n catch {\n // best-effort — if SIGKILL itself fails, there's nothing more to do\n }\n }, FORCE_EXIT_GRACE_MS);\n // Don't let the safety-net timer keep the process alive on the happy\n // path. Bare returns an object (not a number) from setTimeout.\n if (timer && typeof timer === 'object' && 'unref' in timer) {\n ;\n timer.unref();\n }\n}\nexport function initializeWorkerCore() {\n if (coreInitialized) {\n const validatedEnv = getValidatedEnv();\n return { hasRPCConfig: !!validatedEnv.QVAC_IPC_SOCKET_PATH };\n }\n startLogBuffering(SDK_LOG_ID);\n startLogBuffering(SDK_ALL_LOG_ID);\n const { hasRPCConfig } = initEnv();\n acquireWorkerLock();\n setupShutdownHandlers();\n coreInitialized = true;\n logger.debug('Worker core initialized');\n logger.debug('Arguments to worker:', Bare.argv);\n return { hasRPCConfig };\n}\nexport function ensureRPCSetup() {\n if (rpcInitialized)\n return;\n if (!coreInitialized) {\n initializeWorkerCore();\n }\n try {\n const validatedEnv = getValidatedEnv();\n const ipcSocketPath = validatedEnv.QVAC_IPC_SOCKET_PATH;\n if (ipcSocketPath) {\n logger.info(`Running in desktop mode, connecting to IPC socket: ${ipcSocketPath}`);\n const rpc = createIPCClient(ipcSocketPath, {\n onDisconnect: () => void shutdownBareDirectWorker('ipc-disconnect')\n });\n logger.debug('Desktop IPC client created?', !!rpc);\n }\n else {\n logger.info('Running in BareKit IPC mode');\n createBareKitRPCServer();\n }\n logger.info('Bare worker started and listening for RPC requests');\n logger.debug('Working directory:', os.cwd());\n rpcInitialized = true;\n // The worker is now reachable, so a `subscribeServerLogs` client can connect.\n // Bound the global startup buffer the same way model-load buffering is bounded:\n // if nothing subscribes within the grace window, stop buffering so every server\n // log doesn't keep churning that buffer for the worker's whole lifetime. A\n // subscriber that connects in time cancels the timeout and flushes the buffer.\n stopLogBufferingWithTimeout(SDK_ALL_LOG_ID);\n }\n catch (error) {\n logger.error('Worker error:', error);\n Bare.exit(1);\n }\n}\nexport function isCoreInitialized() {\n return coreInitialized;\n}\nfunction clearRegistries() {\n clearAllLoggingStreams();\n clearAllAddonLoggers();\n clearPlugins();\n}\n/**\n * Run the cleanup body shared by terminal and graceful-shutdown paths.\n * Clears plugin registries (which calls each addon's `releaseLogger` →\n * frees env-bound js_ref_t state), unloads all loaded models (which calls\n * each addon's `destroyInstance`), and closes infra (swarm, rag, downloads,\n * registry client). Does NOT touch the worker lock or call `Bare.exit`.\n *\n * Idempotent: subsequent calls are no-ops via the `cleanupRan` flag. The\n * underlying clearPlugins / unloadAllModels / closers are also idempotent\n * on empty registries, but the flag avoids the redundant log noise and\n * allocator churn.\n */\nasync function runCleanup() {\n if (cleanupRan)\n return;\n cleanupRan = true;\n clearRegistries();\n await Promise.allSettled([\n destroySwarm(),\n closeAllRagInstances(),\n cleanupDownloads(),\n unloadAllModels(),\n closeRegistryClient()\n ]);\n}\n/**\n * Pre-terminate cleanup, callable while the worker is still alive.\n *\n * On platforms where the worker lives in the same OS process as the JS host\n * (i.e. mobile via react-native-bare-kit Worklet), `Bare.exit()` would\n * kill the entire app. This path runs the same registry/model cleanup as\n * `shutdownBareDirectWorker` but skips the lock release + exit, leaving the\n * caller (typically the SDK client about to call `worklet.terminate()`)\n * responsible for tearing the worker down.\n *\n * Critical for clean termination: addons hold static state with js_ref_t\n * handles into the current V8 isolate; without this cleanup, those refs\n * survive into the next worklet's isolate and crash on first access.\n */\nexport async function cleanupForTerminate() {\n // Intentionally does NOT set isShuttingDown — that flag is reserved for\n // shutdownBareDirectWorker so a later SIGTERM/SIGINT still gets to run\n // the lock release + Bare.exit path. runCleanup is idempotent on its\n // own, so a follow-up shutdownBareDirectWorker call won't redo the body.\n if (cleanupRan)\n return;\n logger.info('🧹 Pre-terminate cleanup starting...');\n try {\n await runCleanup();\n logger.info('✅ Pre-terminate cleanup completed');\n }\n catch (error) {\n logger.error('❌ Error during pre-terminate cleanup:', error);\n }\n}\nexport async function shutdownBareDirectWorker(reason) {\n if (isShuttingDown)\n return;\n isShuttingDown = true;\n const messages = {\n signal: '🐻 Bare worker shutdown signal received, cleaning up...',\n 'rpc-close': '🧹 Bare direct mode RPC closed, cleaning up...',\n 'uncaught-exception': '💥 Uncaught exception, cleaning up...',\n 'unhandled-rejection': '💥 Unhandled rejection, cleaning up...',\n 'ipc-disconnect': '🔌 Parent IPC disconnected, cleaning up...'\n };\n logger.info(messages[reason]);\n try {\n // Idempotent: if cleanupForTerminate already ran, this is a no-op.\n await runCleanup();\n logger.info('✅ Cleanup completed successfully');\n }\n catch (error) {\n logger.error('❌ Error during shutdown cleanup:', error);\n }\n releaseWorkerLock();\n scheduleForceExit();\n const isGraceful = reason === 'signal' || reason === 'rpc-close';\n Bare.exit(isGraceful ? 0 : 1);\n}\nfunction setupShutdownHandlers() {\n const signals = new Signal.Emitter();\n signals.unref();\n signals.once('SIGTERM', () => void shutdownBareDirectWorker('signal'));\n signals.once('SIGINT', () => void shutdownBareDirectWorker('signal'));\n Bare.on('uncaughtException', (err) => {\n logger.error('Uncaught exception in worker:', err);\n void shutdownBareDirectWorker('uncaught-exception');\n });\n Bare.on('unhandledRejection', (reason) => {\n logger.error('Unhandled rejection in worker:', reason);\n void shutdownBareDirectWorker('unhandled-rejection');\n });\n}\nimport { normalizeAssistantCacheContent } from './cache-normalize.js';\nimport { attachHandlersToToolCalls } from './tool-helpers.js';\nexport function aggregateEvents(events) {\n let contentText = '';\n let thinkingText = '';\n let stats;\n let rawFullText;\n let error;\n let stopReason;\n let cancelled = false;\n const toolCalls = [];\n for (const event of events) {\n if (event.type === 'contentDelta') {\n contentText += event.text;\n }\n else if (event.type === 'thinkingDelta') {\n thinkingText += event.text;\n }\n else if (event.type === 'completionStats') {\n stats = event.stats;\n }\n else if (event.type === 'toolCall') {\n toolCalls.push(event.call);\n }\n else if (event.type === 'completionDone') {\n if ('raw' in event && event.raw) {\n rawFullText = event.raw.fullText;\n }\n // Error wins over cancelled if a wire event ever carries both\n // signals: a mid-stream addon failure makes the partial state\n // unsafe to expose, regardless of why the loop exited.\n if (event.stopReason === 'error' && 'error' in event) {\n error = event.error;\n }\n else {\n if (event.stopReason !== undefined) {\n stopReason = event.stopReason;\n }\n if (event.stopReason === 'cancelled') {\n cancelled = true;\n }\n }\n }\n }\n return {\n contentText,\n thinkingText,\n stats,\n toolCalls,\n rawFullText,\n error,\n stopReason,\n cancelled\n };\n}\nexport function buildFinalFromEvents(events, handlers) {\n const { contentText, thinkingText, stats, toolCalls, rawFullText, error, stopReason, cancelled } = aggregateEvents(events);\n const attachedToolCalls = attachHandlersToToolCalls(toolCalls, handlers);\n const fullText = rawFullText ?? contentText;\n const cacheableAssistantContent = attachedToolCalls.length === 0 ? normalizeAssistantCacheContent(fullText) : undefined;\n const final = {\n contentText,\n ...(thinkingText && { thinkingText }),\n toolCalls: attachedToolCalls,\n ...(stats && { stats }),\n raw: { fullText },\n ...(cacheableAssistantContent !== undefined && {\n cacheableAssistantContent\n }),\n ...(stopReason !== undefined && { stopReason })\n };\n return { final, error, cancelled };\n}\n// Shared by the auto-cache writer and reader on the server, and surfaced to\n// clients as `final.cacheableAssistantContent` so the next turn's `history`\n// produces a stable cache key.\n// Case-insensitive in case a model variant emits ``; the addon uses\n// lowercase today but we don't want a casing change to regress hit-rate.\nconst THINK_BLOCK_RE = /[\\s\\S]*?<\\/think>/gi;\n// Trailing unclosed `...` when a stop token interrupts mid-thought.\n// Must run after THINK_BLOCK_RE so only a genuinely unclosed tail matches.\nconst UNCLOSED_TRAILING_THINK_RE = /[\\s\\S]*$/i;\n/**\n * Canonicalize assistant message text for the auto-cache key.\n *\n * The server saves raw stream text (with think tags when `captureThinking` is\n * on), while `final.contentText` only aggregates `contentDelta` events.\n * Stripping think blocks (paired and unclosed-trailing) and trimming lets\n * callers push back either shape and still hit the cache.\n */\nexport function normalizeAssistantCacheContent(content) {\n return content.replace(THINK_BLOCK_RE, '').replace(UNCLOSED_TRAILING_THINK_RE, '').trim();\n}\nexport function createErrorOptions(code, adds, cause) {\n const options = { code };\n if (adds !== undefined) {\n options.adds = adds;\n }\n if (cause !== undefined) {\n options.cause =\n cause instanceof Error\n ? cause\n : new Error(typeof cause === 'string' ? cause : JSON.stringify(cause));\n }\n return options;\n}\nimport { QvacErrorBase } from '@qvac/error';\nimport { SDK_CLIENT_ERROR_CODES } from '../schemas/sdk-errors-client.js';\nimport { SDK_SERVER_ERROR_CODES } from '../schemas/sdk-errors-server.js';\nimport { createErrorOptions } from './errors-base.js';\n// ============== Response Validation Errors ==============\nexport class InvalidResponseError extends QvacErrorBase {\n constructor(expected, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.INVALID_RESPONSE_TYPE, [expected], cause));\n }\n}\nexport class InvalidOperationError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.INVALID_OPERATION_IN_RESPONSE, undefined, cause));\n }\n}\nexport class StreamEndedError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.STREAM_ENDED_WITHOUT_RESPONSE, undefined, cause));\n }\n}\nexport class InvalidAudioChunkError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.INVALID_AUDIO_CHUNK_TYPE, undefined, cause));\n }\n}\nexport class InvalidToolsArrayError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.INVALID_TOOLS_ARRAY, undefined, cause));\n }\n}\nexport class InvalidToolSchemaError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.INVALID_TOOL_SCHEMA, [details], cause));\n }\n}\nexport class OCRFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.OCR_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class ModelTypeRequiredError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.MODEL_TYPE_REQUIRED, undefined, cause));\n }\n}\nexport class ModelSrcTypeMismatchError extends QvacErrorBase {\n constructor(inferred, resolved, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.MODEL_SRC_TYPE_MISMATCH, [inferred, resolved], cause));\n }\n}\n// ============== RPC Communication Errors ==============\nexport class RPCNoHandlerError extends QvacErrorBase {\n constructor(requestType, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.RPC_NO_HANDLER, [requestType], cause));\n }\n}\nexport class RPCRequestNotSentError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.RPC_REQUEST_NOT_SENT, undefined, cause));\n }\n}\nexport class RPCResponseStreamNotCreatedError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.RPC_RESPONSE_STREAM_NOT_CREATED, undefined, cause));\n }\n}\nexport class RPCConnectionFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.RPC_CONNECTION_FAILED, [details], cause));\n }\n}\nexport class RPCInitTimeoutError extends QvacErrorBase {\n constructor(timeoutMs, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.RPC_INIT_TIMEOUT, [timeoutMs], cause));\n }\n}\nexport class WorkerCrashedError extends QvacErrorBase {\n exitCode;\n exitSignal;\n constructor(exitCode, exitSignal, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.WORKER_CRASHED, [String(exitCode), String(exitSignal)], cause));\n this.exitCode = exitCode;\n this.exitSignal = exitSignal;\n }\n}\nexport class WorkerShutdownError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.WORKER_SHUTDOWN, undefined, cause));\n }\n}\n// ============== Provider/Delegation Errors ==============\nexport class ProviderStartFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.PROVIDER_START_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class ProviderStopFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.PROVIDER_STOP_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class DelegateNoFinalResponseError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.DELEGATE_NO_FINAL_RESPONSE, undefined, cause));\n }\n}\nexport class DelegateProviderError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.DELEGATE_PROVIDER_ERROR, [details], cause));\n }\n}\nexport class DelegateConnectionFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.DELEGATE_CONNECTION_FAILED, [details], cause));\n }\n}\n// ============== Build/Bundle Errors ==============\nexport class SDKNotFoundInNodeModulesError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.SDK_NOT_FOUND_IN_NODE_MODULES, undefined, cause));\n }\n}\nexport class MultipleSDKInstallationsError extends QvacErrorBase {\n constructor(packages, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.MULTIPLE_SDK_INSTALLATIONS, [packages], cause));\n }\n}\nexport class WorkerFileNotFoundError extends QvacErrorBase {\n constructor(workerPath, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.WORKER_FILE_NOT_FOUND, [workerPath], cause));\n }\n}\nexport class PearWorkerEntryRequiredError extends QvacErrorBase {\n constructor(workerEntry, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.PEAR_WORKER_ENTRY_REQUIRED, [workerEntry], cause));\n }\n}\nexport class WorkerPluginsNotRegisteredError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.WORKER_PLUGINS_NOT_REGISTERED, [], cause));\n }\n}\nexport class BundleVerificationFailedError extends QvacErrorBase {\n constructor(bundlePath, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.BUNDLE_VERIFICATION_FAILED, [bundlePath], cause));\n }\n}\nexport class BarePackNotInstalledError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.BARE_PACK_NOT_INSTALLED, undefined, cause));\n }\n}\nexport class BarePackError extends QvacErrorBase {\n constructor(exitCode, entryPath, outputPath, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.BARE_PACK_ERROR, [exitCode, entryPath, outputPath], cause));\n }\n}\nexport class InvalidPluginSpecifierError extends QvacErrorBase {\n constructor(specifiers, cause) {\n const list = specifiers.map((s) => ` - ${s}`).join('\\n');\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.INVALID_PLUGIN_SPECIFIER, [list], cause));\n }\n}\nexport class BareImportsMapNotFoundError extends QvacErrorBase {\n constructor(sdkName, expectedPath, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.BARE_IMPORTS_MAP_NOT_FOUND, [sdkName, expectedPath], cause));\n }\n}\nexport class BareRuntimeBinaryNotFoundError extends QvacErrorBase {\n constructor(platform, arch, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.BARE_RUNTIME_BINARY_NOT_FOUND, [platform, arch], cause));\n }\n}\nexport class ConfigFileNotFoundError extends QvacErrorBase {\n constructor(searchPaths, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.CONFIG_FILE_NOT_FOUND, [searchPaths], cause));\n }\n}\nexport class ConfigFileInvalidError extends QvacErrorBase {\n constructor(filePath, reason, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.CONFIG_FILE_INVALID, [filePath, reason], cause));\n }\n}\nexport class ConfigFileParseFailedError extends QvacErrorBase {\n constructor(filePath, error, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.CONFIG_FILE_PARSE_FAILED, [filePath, error], cause));\n }\n}\nexport class ConfigValidationFailedError extends QvacErrorBase {\n constructor(errors, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.CONFIG_VALIDATION_FAILED, [errors], cause));\n }\n}\nexport class RequestValidationFailedError extends QvacErrorBase {\n constructor(errors, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.REQUEST_VALIDATION_FAILED, [errors], cause));\n }\n}\n// ============== Operation Errors (Client-side wrappers for server operations) ==============\n// These are used by client API to throw errors based on server responses\n// They reference server error codes but are thrown on client side\nexport class ModelUnloadFailedError extends QvacErrorBase {\n constructor(modelId, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_UNLOAD_FAILED, modelId ? [modelId] : undefined, cause));\n }\n}\nexport class EmbedFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.EMBED_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class TranscriptionFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.TRANSCRIPTION_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class TextToSpeechStreamFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.TEXT_TO_SPEECH_STREAM_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class TranslationFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.TRANSLATION_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class CancelFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.CANCEL_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class RAGChunkFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_CHUNK_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class RAGSaveFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_SAVE_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class RAGSearchFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_SEARCH_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class RAGDeleteFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_DELETE_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class RAGCloseWorkspaceFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_CLOSE_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class RAGListWorkspacesFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_LIST_WORKSPACES_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class DownloadAssetFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.DOWNLOAD_ASSET_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class DownloadCancelledError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.DOWNLOAD_CANCELLED, undefined, cause));\n }\n}\nexport class ChecksumValidationFailedError extends QvacErrorBase {\n constructor(fileName, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.CHECKSUM_VALIDATION_FAILED, [fileName], cause));\n }\n}\nexport class HTTPError extends QvacErrorBase {\n constructor(status, statusText, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.HTTP_ERROR, [status, statusText], cause));\n }\n}\nexport class ModelLoadFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_LOAD_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class DeleteCacheFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.DELETE_CACHE_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class InvalidDeleteCacheParamsError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.INVALID_DELETE_CACHE_PARAMS, undefined, cause));\n }\n}\nexport class SetConfigFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.SET_CONFIG_FAILED, details ? [details] : undefined, cause));\n }\n}\n// ============== QVAC Model Registry Operation Errors ==============\n// Registry client errors (19,001-20,000) are re-thrown directly from @qvac/registry-client\n// Only SDK-specific errors are defined here\nexport class ModelRegistryQueryFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.QVAC_MODEL_REGISTRY_QUERY_FAILED, details ? [details] : undefined, cause));\n }\n}\n// ============== Profiler Errors ==============\nexport class ProfilerInvalidCapacityError extends QvacErrorBase {\n constructor(minCapacity, cause) {\n super(createErrorOptions(SDK_CLIENT_ERROR_CODES.PROFILER_INVALID_CAPACITY, [minCapacity], cause));\n }\n}\nimport { QvacErrorBase } from '@qvac/error';\nimport { SDK_SERVER_ERROR_CODES } from '../schemas/sdk-errors-server.js';\nimport { createErrorOptions } from './errors-base.js';\n// ============== Model Registry Errors ==============\nexport class ModelAlreadyRegisteredError extends QvacErrorBase {\n constructor(modelId, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_ALREADY_REGISTERED, [modelId], cause));\n }\n}\nexport class ModelNotFoundError extends QvacErrorBase {\n constructor(modelId, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_NOT_FOUND, [modelId], cause));\n }\n}\nexport class ModelNotLoadedError extends QvacErrorBase {\n constructor(modelId, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_NOT_LOADED, [modelId], cause));\n }\n}\nexport class ModelIsDelegatedError extends QvacErrorBase {\n constructor(modelId, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_IS_DELEGATED, [modelId], cause));\n }\n}\n// ============== Model Loading Errors ==============\nexport class ModelLoadFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_LOAD_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class ModelFileNotFoundError extends QvacErrorBase {\n constructor(modelPath, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_FILE_NOT_FOUND, [modelPath], cause));\n }\n}\nexport class ModelFileNotFoundInDirError extends QvacErrorBase {\n constructor(modelFile, modelDir, modelType, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_FILE_NOT_FOUND_IN_DIR, [modelFile, modelDir, modelType], cause));\n }\n}\nexport class ModelFileLocateFailedError extends QvacErrorBase {\n constructor(modelType, modelPath, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_FILE_LOCATE_FAILED, [modelType, modelPath], cause));\n }\n}\nexport class ProjectionModelRequiredError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PROJECTION_MODEL_REQUIRED, undefined, cause));\n }\n}\nexport class VADModelRequiredError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.VAD_MODEL_REQUIRED, undefined, cause));\n }\n}\nexport class TtsArtifactsRequiredError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.TTS_ARTIFACTS_REQUIRED, undefined, cause));\n }\n}\nexport class TtsReferenceAudioRequiredError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.TTS_REFERENCE_AUDIO_REQUIRED, undefined, cause));\n }\n}\nexport class LegacyParakeetModelDeprecatedError extends QvacErrorBase {\n constructor(legacyFields, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.LEGACY_PARAKEET_MODEL_DEPRECATED, [legacyFields.join(', ')], cause));\n }\n}\nexport class LegacyTtsModelDeprecatedError extends QvacErrorBase {\n constructor(legacyFields, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.LEGACY_TTS_MODEL_DEPRECATED, [legacyFields.join(', ')], cause));\n }\n}\n// ============== Model Unloading Errors ==============\nexport class ModelUnloadFailedError extends QvacErrorBase {\n constructor(modelId, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_UNLOAD_FAILED, modelId ? [modelId] : undefined, cause));\n }\n}\n// ============== Model Operation Errors ==============\nexport class EmbedFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.EMBED_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class EmbedNoEmbeddingsError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.EMBED_NO_EMBEDDINGS, undefined, cause));\n }\n}\nexport class TranscriptionFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.TRANSCRIPTION_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class AudioFileNotFoundError extends QvacErrorBase {\n constructor(filePath, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.AUDIO_FILE_NOT_FOUND, [filePath], cause));\n }\n}\nexport class TranslationFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.TRANSLATION_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class CompletionFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.COMPLETION_FAILED, details ? [details] : undefined, cause));\n }\n}\n/**\n * Thrown when the prompt exceeds the loaded model's configured context\n * window — distinct from a generic `CompletionFailedError` so consumers\n * can drive UX (truncate, summarize, or surface a \"increase ctx_size /\n * start a new thread\" CTA) instead of treating it as an opaque failure.\n *\n * Carries the addon-reported prompt size and the model's context window\n * when the addon's error message includes them (the C++ overflow paths\n * in `TextLlmContext.cpp` and `MtmdLlmContext.cpp` format both numbers\n * into the message; the bare `processPromptImpl: context overflow`\n * fallback in `LlamaModel.cpp` carries neither — both fields are\n * therefore optional). `modelId` is supplied by the server-side handler\n * that wraps the addon error.\n *\n * Round-trips the RPC boundary via the typed-error reconstructor in\n * `client/rpc/rpc-error.ts`, so `err instanceof ContextOverflowError`\n * works on the consumer side.\n */\nexport class ContextOverflowError extends QvacErrorBase {\n promptTokens;\n ctxSize;\n modelId;\n constructor(promptTokens, ctxSize, modelId, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.CONTEXT_OVERFLOW, [\n promptTokens !== undefined ? String(promptTokens) : '',\n ctxSize !== undefined ? String(ctxSize) : '',\n modelId ?? ''\n ], cause));\n if (promptTokens !== undefined)\n this.promptTokens = promptTokens;\n if (ctxSize !== undefined)\n this.ctxSize = ctxSize;\n if (modelId !== undefined)\n this.modelId = modelId;\n }\n toErrorResponseFields() {\n return {\n ...(this.promptTokens !== undefined && { promptTokens: this.promptTokens }),\n ...(this.ctxSize !== undefined && { ctxSize: this.ctxSize }),\n ...(this.modelId !== undefined && { modelId: this.modelId })\n };\n }\n}\nexport class AttachmentNotFoundError extends QvacErrorBase {\n constructor(path, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.ATTACHMENT_NOT_FOUND, [path], cause));\n }\n}\nexport class CancelFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.CANCEL_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class RequestIdConflictError extends QvacErrorBase {\n requestId;\n constructor(requestId, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.REQUEST_ID_CONFLICT, [requestId], cause));\n this.requestId = requestId;\n }\n /**\n * Surface typed fields on the RPC error envelope so the client-side\n * reconstructor in `client/rpc/rpc-error.ts` can rebuild this exact\n * class on the consumer side. Without this, `err instanceof\n * RequestIdConflictError` would always be `false` after the error\n * crosses the worker boundary.\n */\n toErrorResponseFields() {\n return { requestId: this.requestId };\n }\n}\nexport class RequestNotFoundError extends QvacErrorBase {\n requestId;\n constructor(requestId, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.REQUEST_NOT_FOUND, [requestId], cause));\n this.requestId = requestId;\n }\n toErrorResponseFields() {\n return { requestId: this.requestId };\n }\n}\n/**\n * Thrown by `await RequestRegistry.begin(...)` when a registered concurrency\n * policy refuses the request. Under the default queue policy a same-model\n * request waits FIFO rather than rejecting, so this fires on the bounded-queue\n * cases: an explicit `onOverflow: \"reject\"`, the per-model queue-depth cap, or\n * a `queueTimeoutMs` elapsing while waiting. Distinct from\n * `RequestIdConflictError`, which only fires on UUID collisions.\n */\nexport class RequestRejectedByPolicyError extends QvacErrorBase {\n requestId;\n kind;\n modelId;\n reason;\n constructor(requestId, kind, modelId, reason, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.REQUEST_REJECTED_BY_POLICY, [requestId, kind, modelId, reason], cause));\n this.requestId = requestId;\n this.kind = kind;\n this.modelId = modelId;\n this.reason = reason;\n }\n toErrorResponseFields() {\n return {\n requestId: this.requestId,\n kind: this.kind,\n modelId: this.modelId,\n reason: this.reason\n };\n }\n}\n/**\n * Thrown when a long-running inference request was cancelled before\n * completion. The `events` stream on `CompletionRun` ends normally with\n * `stopReason: \"cancelled\"` on the last `completionDone`, but the\n * promise-aggregates on the same run (`final` / `text` / `toolCalls` /\n * `stats`) reject with this error so callers can't accidentally treat a\n * cancelled run as a successful one.\n *\n * Carries:\n * - `requestId` — correlates with `run.requestId` so callers know which\n * in-flight request was cancelled when they fan out multiple cancels.\n * - `partial` — whatever the aggregator accumulated up to the cancel\n * point. Optional fields so consumers can opt into \"show partial\":\n *\n * try { await run.text } catch (err) {\n * if (err instanceof InferenceCancelledError) {\n * renderPartial(err.partial.text);\n * }\n * }\n *\n * The error is constructed client-side in\n * `client/api/completion-stream.ts` when the wire stream ends with\n * `stopReason: \"cancelled\"` — the partial payload comes from the\n * client's own event aggregator. The class lives in `errors-server.ts`\n * (and is re-exported from the package root) because the *semantic*\n * origin of the cancel is server-side, and other handlers\n * (embeddings, transcribe, …) will reuse the same class once their\n * cancel surface lands.\n */\nexport class InferenceCancelledError extends QvacErrorBase {\n requestId;\n partial;\n constructor(requestId, partial = {}, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.INFERENCE_CANCELLED, [requestId], cause));\n this.requestId = requestId;\n this.partial = partial;\n }\n}\nexport class AsyncDisposeUnavailableError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.ASYNC_DISPOSE_UNAVAILABLE, [], cause));\n }\n}\nexport class TextToSpeechFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.TEXT_TO_SPEECH_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class TextToSpeechStreamFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.TEXT_TO_SPEECH_STREAM_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class ConfigReloadNotSupportedError extends QvacErrorBase {\n constructor(modelId, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.CONFIG_RELOAD_NOT_SUPPORTED, [modelId], cause));\n }\n}\nexport class ModelTypeMismatchError extends QvacErrorBase {\n constructor(expectedType, providedType, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_TYPE_MISMATCH, [expectedType, providedType], cause));\n }\n}\nexport class ModelOperationNotSupportedError extends QvacErrorBase {\n modelId;\n modelType;\n operation;\n supportedOperations;\n suggestedModelTypes;\n constructor(modelId, modelType, operation, supportedOperations, suggestedModelTypes, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_OPERATION_NOT_SUPPORTED, [\n modelId,\n modelType,\n operation,\n supportedOperations.join(', '),\n suggestedModelTypes.join(', ')\n ], cause));\n this.modelId = modelId;\n this.modelType = modelType;\n this.operation = operation;\n this.supportedOperations = supportedOperations;\n this.suggestedModelTypes = suggestedModelTypes;\n }\n}\nexport class OCRFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.OCR_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class ImageFileNotFoundError extends QvacErrorBase {\n constructor(filePath, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.IMAGE_FILE_NOT_FOUND, [filePath], cause));\n }\n}\nexport class InvalidImageInputError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.INVALID_IMAGE_INPUT, undefined, cause));\n }\n}\n// ============== RAG Operation Errors ==============\nexport class RAGSaveFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_SAVE_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class RAGSearchFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_SEARCH_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class RAGDeleteFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_DELETE_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class RAGUnknownOperationError extends QvacErrorBase {\n constructor(operation, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_UNKNOWN_OPERATION, [operation], cause));\n }\n}\nexport class RAGHyperDBFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_HYPERDB_FAILED, [details], cause));\n }\n}\n// ============== Download/Resource Errors ==============\nexport class FileNotFoundError extends QvacErrorBase {\n constructor(path, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.FILE_NOT_FOUND, [path], cause));\n }\n}\nexport class DownloadCancelledError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.DOWNLOAD_CANCELLED, undefined, cause));\n }\n}\nexport class ChecksumValidationFailedError extends QvacErrorBase {\n constructor(fileName, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.CHECKSUM_VALIDATION_FAILED, [fileName], cause));\n }\n}\nexport class HTTPError extends QvacErrorBase {\n /** HTTP status code; `0` denotes a connection/network failure (no response). */\n httpStatus;\n constructor(status, statusText, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.HTTP_ERROR, [status, statusText], cause));\n this.httpStatus = status;\n }\n}\nexport class NoResponseBodyError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.NO_RESPONSE_BODY, undefined, cause));\n }\n}\nexport class ResponseBodyNotReadableError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RESPONSE_BODY_NOT_READABLE, undefined, cause));\n }\n}\nexport class NoBlobFoundError extends QvacErrorBase {\n constructor(fileName, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.NO_BLOB_FOUND, [fileName], cause));\n }\n}\nexport class DownloadAssetFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.DOWNLOAD_ASSET_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class SeedingNotSupportedError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.SEEDING_NOT_SUPPORTED, undefined, cause));\n }\n}\nexport class HyperdriveDownloadFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.HYPERDRIVE_DOWNLOAD_FAILED, [details], cause));\n }\n}\nexport class RegistryDownloadFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.REGISTRY_DOWNLOAD_FAILED, [details], cause));\n }\n}\nexport class InvalidShardUrlPatternError extends QvacErrorBase {\n constructor(url, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.INVALID_SHARD_URL_PATTERN, [url], cause));\n }\n}\nexport class ArchiveExtractionFailedError extends QvacErrorBase {\n constructor(archivePath, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.ARCHIVE_EXTRACTION_FAILED, [archivePath], cause));\n }\n}\nexport class ArchiveUnsupportedTypeError extends QvacErrorBase {\n constructor(archivePath, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.ARCHIVE_UNSUPPORTED_TYPE, [archivePath], cause));\n }\n}\nexport class ArchiveMissingShardsError extends QvacErrorBase {\n constructor(missingFile, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.ARCHIVE_MISSING_SHARDS, [missingFile], cause));\n }\n}\nexport class PartialDownloadOfflineError extends QvacErrorBase {\n constructor(url, downloadedBytes, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PARTIAL_DOWNLOAD_OFFLINE, [url, String(downloadedBytes)], cause));\n }\n}\n// ============== Cache Operation Errors ==============\nexport class DeleteCacheFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.DELETE_CACHE_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class InvalidDeleteCacheParamsError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.INVALID_DELETE_CACHE_PARAMS, undefined, cause));\n }\n}\nexport class CacheDirNotAbsoluteError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.CACHE_DIR_NOT_ABSOLUTE, undefined, cause));\n }\n}\nexport class CacheDirNotWritableError extends QvacErrorBase {\n constructor(cacheDir, details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.CACHE_DIR_NOT_WRITABLE, details ? [cacheDir, details] : [cacheDir], cause));\n }\n}\n// ============== Config Operations Errors ==============\nexport class ConfigAlreadySetError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.CONFIG_ALREADY_SET, undefined, cause));\n }\n}\n// ============== System/Runtime Errors ==============\nexport class FFmpegNotAvailableError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.FFMPEG_NOT_AVAILABLE, undefined, cause));\n }\n}\nexport class AudioPlayerFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.AUDIO_PLAYER_FAILED, [details], cause));\n }\n}\nexport class InvalidAudioChunkError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.INVALID_AUDIO_CHUNK_TYPE, undefined, cause));\n }\n}\n// ============== RAG Workspace Errors ==============\nexport class RAGWorkspaceModelMismatchError extends QvacErrorBase {\n constructor(workspace, existingModelId, newModelId, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_MODEL_MISMATCH, [workspace, existingModelId, newModelId], cause));\n }\n}\nexport class RAGWorkspaceNotFoundError extends QvacErrorBase {\n constructor(workspace, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_NOT_FOUND, [workspace], cause));\n }\n}\nexport class RAGWorkspaceInUseError extends QvacErrorBase {\n constructor(workspace, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_IN_USE, [workspace], cause));\n }\n}\nexport class RAGWorkspaceNotOpenError extends QvacErrorBase {\n constructor(workspace, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_NOT_OPEN, [workspace], cause));\n }\n}\n// ============== RPC/Delegation Errors (Server-side) ==============\nexport class DelegateNoFinalResponseError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.DELEGATE_NO_FINAL_RESPONSE, undefined, cause));\n }\n}\nexport class DelegateConnectionFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.DELEGATE_CONNECTION_FAILED, [details], cause));\n }\n}\nexport class DelegateProviderError extends QvacErrorBase {\n constructor(details, providerCode, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.DELEGATE_PROVIDER_ERROR, providerCode !== undefined ? [details, String(providerCode)] : [details], cause));\n }\n}\nexport class RPCNoDataReceivedError extends QvacErrorBase {\n constructor(cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RPC_NO_DATA_RECEIVED, undefined, cause));\n }\n}\nexport class RPCUnknownRequestTypeError extends QvacErrorBase {\n constructor(requestType, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.RPC_UNKNOWN_REQUEST_TYPE, [requestType], cause));\n }\n}\n// ============== Plugin Errors ==============\nexport class PluginNotFoundError extends QvacErrorBase {\n constructor(modelType, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PLUGIN_NOT_FOUND, [modelType], cause));\n }\n}\nexport class PluginHandlerNotFoundError extends QvacErrorBase {\n constructor(modelType, handler, availableHandlers, cause) {\n const serializedHandlers = availableHandlers?.join(', ') ?? '';\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PLUGIN_HANDLER_NOT_FOUND, [modelType, handler, serializedHandlers], cause));\n }\n}\nexport class PluginRequestValidationFailedError extends QvacErrorBase {\n constructor(handler, details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PLUGIN_REQUEST_VALIDATION_FAILED, details ? [handler, details] : [handler], cause));\n }\n}\nexport class PluginResponseValidationFailedError extends QvacErrorBase {\n constructor(handler, details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PLUGIN_RESPONSE_VALIDATION_FAILED, details ? [handler, details] : [handler], cause));\n }\n}\nexport class PluginAlreadyRegisteredError extends QvacErrorBase {\n constructor(modelType, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PLUGIN_ALREADY_REGISTERED, [modelType], cause));\n }\n}\nexport class PluginModelTypeReservedError extends QvacErrorBase {\n constructor(modelType, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PLUGIN_MODEL_TYPE_RESERVED, [modelType], cause));\n }\n}\nexport class PluginLoadConfigValidationFailedError extends QvacErrorBase {\n constructor(modelType, details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PLUGIN_LOAD_CONFIG_VALIDATION_FAILED, [modelType, details], cause));\n }\n}\nexport class PluginHandlerTypeMismatchError extends QvacErrorBase {\n constructor(handlerName, expected, actual, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PLUGIN_HANDLER_TYPE_MISMATCH, [handlerName, expected, actual], cause));\n }\n}\nexport class PluginLoggingInvalidError extends QvacErrorBase {\n constructor(modelType, reason, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PLUGIN_LOGGING_INVALID, [modelType, reason], cause));\n }\n}\nexport class PluginDefinitionInvalidError extends QvacErrorBase {\n constructor(modelType, details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PLUGIN_DEFINITION_INVALID, [modelType, details], cause));\n }\n}\n// ============== Lifecycle Errors ==============\nexport class LifecycleSuspendFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.LIFECYCLE_SUSPEND_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class LifecycleResumeFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.LIFECYCLE_RESUME_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport class LifecycleOperationBlockedError extends QvacErrorBase {\n constructor(requestType, lifecycleState) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.LIFECYCLE_OPERATION_BLOCKED, [\n requestType,\n lifecycleState\n ]));\n }\n}\n// ============== Security Errors ==============\nexport class PathTraversalError extends QvacErrorBase {\n constructor(component, basePath, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.PATH_TRAVERSAL, [component, basePath], cause));\n }\n}\n// ============== QVAC Model Registry Operation Errors ==============\n// Registry client errors (19,001-20,000) are re-thrown directly from @qvac/registry-client\n// Only SDK-specific errors are defined here\nexport class ModelRegistryQueryFailedError extends QvacErrorBase {\n constructor(details, cause) {\n super(createErrorOptions(SDK_SERVER_ERROR_CODES.QVAC_MODEL_REGISTRY_QUERY_FAILED, details ? [details] : undefined, cause));\n }\n}\nexport function getGlobalSingleton(key, create) {\n const global = globalThis;\n const existing = global[key];\n if (existing !== undefined) {\n return existing;\n }\n const value = create();\n global[key] = value;\n return value;\n}\n/**\n * Pure string sanitization for path components. No runtime-specific dependencies.\n * Safe to import from both Bare (server) and Bun/Node (tests, client).\n */\n/**\n * Sanitize a path component that will be joined to a base directory.\n * Strips traversal sequences, absolute prefixes, and normalizes separators.\n *\n * Throws on null bytes (literal or URL-encoded).\n */\nexport function sanitizePathComponent(component) {\n if (component === '')\n return '';\n // Reject null bytes (literal and URL-encoded)\n if (component.includes('\\0') || component.includes('%00')) {\n throw new Error(`Path component contains null byte: ${component}`);\n }\n let sanitized = component;\n // Decode common URL-encoded traversal sequences\n sanitized = sanitized.replace(/%2e/gi, '.').replace(/%2f/gi, '/').replace(/%5c/gi, '\\\\');\n // Normalize backslashes to forward slashes\n sanitized = sanitized.replace(/\\\\/g, '/');\n // Strip Windows drive letter prefixes (C:/, D:/, etc.)\n sanitized = sanitized.replace(/^[A-Za-z]:\\//, '');\n // Strip leading slashes (absolute path prefixes)\n sanitized = sanitized.replace(/^\\/+/, '');\n // Remove all \"..\" segments (start, middle, end) iteratively until stable\n let prev = '';\n while (prev !== sanitized) {\n prev = sanitized;\n sanitized = sanitized.replace(/^\\.\\.\\//g, '');\n sanitized = sanitized.replace(/\\/\\.\\.$/g, '');\n sanitized = sanitized.replace(/\\/\\.\\.\\//g, '/');\n if (sanitized === '..')\n sanitized = '';\n }\n // Strip any remaining leading slashes produced by stripping\n sanitized = sanitized.replace(/^\\/+/, '');\n return sanitized;\n}\n/**\n * Check whether a resolved target path is contained within a base directory.\n * Portable — caller provides the resolve function and separator for their runtime.\n */\nexport function checkPathWithinBase(basePath, targetPath, resolveFn, sep) {\n const resolvedBase = resolveFn(basePath);\n const resolvedTarget = resolveFn(targetPath);\n if (resolvedTarget === resolvedBase)\n return true;\n return resolvedTarget.startsWith(resolvedBase + sep);\n}\nimport { toolSchema } from '../schemas/tools.js';\nimport { InvalidToolsArrayError, InvalidToolSchemaError } from './errors-client.js';\nfunction zodTypeToJsonSchemaType(type) {\n switch (type) {\n case 'string':\n return 'string';\n case 'number':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'object':\n return 'object';\n case 'array':\n return 'array';\n case 'optional':\n default:\n return 'string';\n }\n}\nexport function convertToolInput(input) {\n const zodSchema = input.parameters;\n // Try both shape and def.shape for Zod v4 compatibility\n const shape = zodSchema.shape || (typeof zodSchema.def?.shape === 'object' ? zodSchema.def.shape : {});\n const properties = {};\n const required = [];\n for (const [key, value] of Object.entries(shape)) {\n const field = value;\n const fieldType = field.type || field.def?.type || 'string';\n const isOptional = fieldType === 'optional';\n let actualType = isOptional ? 'string' : fieldType;\n let actualDescription = field.description;\n if (isOptional && field.def?.innerType) {\n const innerType = field.def.innerType;\n actualType = innerType.type || innerType.def?.type || 'string';\n // Get description from inner type if not on wrapper\n if (!actualDescription && innerType.description) {\n actualDescription = innerType.description;\n }\n }\n properties[key] = {\n type: zodTypeToJsonSchemaType(actualType)\n };\n if (actualDescription) {\n properties[key].description = actualDescription;\n }\n if (field.def?.values) {\n properties[key].enum = field.def.values;\n }\n if (!isOptional) {\n required.push(key);\n }\n }\n const tool = {\n type: 'function',\n name: input.name,\n description: input.description,\n parameters: {\n type: 'object',\n properties,\n required: required.length > 0 ? required : undefined\n }\n };\n return toolSchema.parse(tool);\n}\nexport function convertTools(inputs) {\n return inputs.map(convertToolInput);\n}\nexport function validateTools(tools) {\n if (tools.length === 0) {\n return { tools: [], handlers: new Map() };\n }\n const firstTool = tools[0];\n if (!firstTool) {\n throw new InvalidToolsArrayError();\n }\n const handlers = new Map();\n const parseResult = toolSchema.safeParse(firstTool);\n if (parseResult.success) {\n const validatedTools = [];\n for (const tool of tools) {\n const result = toolSchema.safeParse(tool);\n if (!result.success) {\n throw new InvalidToolSchemaError(result.error.message, result.error);\n }\n validatedTools.push(result.data);\n }\n return { tools: validatedTools, handlers };\n }\n else {\n const toolInputs = tools;\n const convertedTools = convertTools(toolInputs);\n for (const toolInput of toolInputs) {\n if (toolInput.handler) {\n handlers.set(toolInput.name, toolInput.handler);\n }\n }\n return { tools: convertedTools, handlers };\n }\n}\nexport function attachHandlersToToolCalls(toolCalls, handlers) {\n return toolCalls.map((toolCall) => {\n const handler = handlers.get(toolCall.name);\n if (handler) {\n return {\n ...toolCall,\n invoke: async () => await handler(toolCall.arguments)\n };\n }\n return toolCall;\n });\n}\n/**\n * Distinguishes a legitimate per-call timeout from a transport failure (e.g.\n * a worker crash) for callers racing this against other rejection sources.\n */\nexport class OperationTimeoutError extends Error {\n constructor(timeoutMs) {\n super(`Operation timeout after ${timeoutMs}ms`);\n this.name = 'OperationTimeoutError';\n }\n}\n/**\n * Creates a timeout promise that rejects after the specified duration\n */\nfunction createTimeoutPromise(timeoutMs) {\n return new Promise((_, reject) => {\n setTimeout(() => {\n reject(new OperationTimeoutError(timeoutMs));\n }, timeoutMs);\n });\n}\n/**\n * Wraps a promise with an optional timeout\n * If no timeout is provided, returns the original promise unchanged\n */\nexport async function withTimeout(promise, timeoutMs) {\n if (timeoutMs === undefined) {\n return promise;\n }\n const timeoutPromise = createTimeoutPromise(timeoutMs);\n return Promise.race([promise, timeoutPromise]);\n}\n/**\n * Wraps an async generator with optional timeout per iteration\n * If no timeout is provided, returns the original generator unchanged\n */\nexport async function* withTimeoutStream(generator, timeoutMs) {\n if (timeoutMs === undefined) {\n yield* generator;\n return;\n }\n for await (const item of generator) {\n const itemPromise = Promise.resolve(item);\n const timeoutPromise = createTimeoutPromise(timeoutMs);\n const result = await Promise.race([itemPromise, timeoutPromise]);\n yield result;\n }\n}\nimport { z } from 'zod';\nexport function formatZodError(error) {\n return z.prettifyError(error);\n}\nmodule.exports = require.addon()\nconst EventEmitter = require('bare-events')\nconst os = require('bare-os')\nconst binding = require('./binding')\nconst errors = require('./lib/errors')\n\nconst signals = os.constants.signals\n\nmodule.exports = exports = class Signal extends EventEmitter {\n constructor(signum) {\n super()\n\n if (typeof signum === 'string') {\n if (signum in signals === false) {\n throw errors.UNKNOWN_SIGNAL(`Unknown signal '${signum}'`)\n }\n\n signum = signals[signum]\n }\n\n this._signum = signum\n this._closing = null\n this._handle = binding.init(this, this._onsignal, this._onclose)\n }\n\n start() {\n if (this._closing) throw errors.SIGNAL_CLOSED('Signal is closed')\n binding.start(this._handle, this._signum)\n return this\n }\n\n stop() {\n if (this._closing) return this\n binding.stop(this._handle)\n return this\n }\n\n ref() {\n if (this._closing) return this\n binding.ref(this._handle)\n return this\n }\n\n unref() {\n if (this._closing) return this\n binding.unref(this._handle)\n return this\n }\n\n close() {\n if (this._closing) return this._closing\n this._closing = EventEmitter.once(this, 'close')\n\n binding.close(this._handle)\n\n return this._closing\n }\n\n _onsignal() {\n this.emit('signal', this._signum)\n }\n\n _onclose() {\n this._handle = null\n\n this.emit('close')\n }\n\n static send(signum, pid = os.pid()) {\n os.kill(pid, signum)\n }\n}\n\nexports.Emitter = require('./lib/emitter')\n\nexports.constants = signals\nexports.errors = errors\nconst EventEmitter = require('bare-events')\nconst Signal = require('..')\n\nmodule.exports = class SignalEmitter extends EventEmitter {\n constructor() {\n super()\n\n this._signals = new Map()\n this._unrefed = false\n\n this.on('newListener', this._onnewlistener).on(\n 'removeListener',\n this._onremovelistener\n )\n }\n\n ref() {\n this._unrefed = false\n for (const signal of this._signals.values()) signal.ref()\n return this\n }\n\n unref() {\n this._unrefed = true\n for (const signal of this._signals.values()) signal.unref()\n return this\n }\n\n _onnewlistener(name) {\n if (name === 'newListener' || name === 'removeListener') return\n\n if (this.listenerCount(name) === 0) {\n const signal = new Signal(name)\n\n signal.on('signal', this._onsignal.bind(this, name)).start()\n\n if (this._unrefed) signal.unref()\n\n this._signals.set(name, signal)\n }\n }\n\n _onremovelistener(name) {\n if (name === 'newListener' || name === 'removeListener') return\n\n if (this.listenerCount(name) === 0) {\n const signal = this._signals.get(name)\n\n if (this._unrefed) signal.ref()\n\n signal.close()\n\n this._signals.delete(name)\n }\n }\n\n _onsignal(name) {\n this.emit(name, name, Signal.constants[name])\n }\n}\nmodule.exports = class SignalError extends Error {\n constructor(msg, fn = SignalError, code = fn.name) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'SignalError'\n }\n\n static UNKNOWN_SIGNAL(msg) {\n return new SignalError(msg, SignalError.UNKNOWN_SIGNAL)\n }\n\n static SIGNAL_CLOSED(msg) {\n return new SignalError(msg, SignalError.SIGNAL_CLOSED)\n }\n}\n{\n \"name\": \"bare-signals\",\n \"version\": \"4.2.0\",\n \"description\": \"Native signal handling for JavaScript\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\",\n \"./errors\": \"./lib/errors.js\",\n \"./emitter\": \"./lib/emitter.js\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"test\": \"prettier . --check && bare test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-signals.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-signals/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-signals#readme\",\n \"engines\": {\n \"bare\": \">=1.7.0\"\n },\n \"dependencies\": {\n \"bare-events\": \"^2.5.3\",\n \"bare-os\": \"^3.3.1\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.2.1\",\n \"cmake-bare\": \"^1.1.6\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-standard\": \"^7.0.0\"\n }\n}\n{\n \"name\": \"@qvac/sdk\",\n \"version\": \"0.16.0\",\n \"license\": \"Apache-2.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/tetherto/qvac.git\",\n \"directory\": \"packages/sdk\"\n },\n \"bugs\": \"https://github.com/tetherto/qvac/issues\",\n \"homepage\": \"https://qvac.tether.io\",\n \"keywords\": [\n \"ai\",\n \"bare\",\n \"cross-platform\",\n \"deep-learning\",\n \"diffusion\",\n \"edge-ai\",\n \"embeddings\",\n \"expo\",\n \"gguf\",\n \"gpu\",\n \"holepunch\",\n \"hyperswarm\",\n \"image-generation\",\n \"inference\",\n \"large-language-model\",\n \"llama-cpp\",\n \"llm\",\n \"local\",\n \"local-ai\",\n \"machine-learning\",\n \"ml\",\n \"model-registry\",\n \"node\",\n \"ocr\",\n \"offline\",\n \"on-device\",\n \"p2p\",\n \"peer-to-peer\",\n \"private-ai\",\n \"qvac\",\n \"rag\",\n \"react-native\",\n \"sdk\",\n \"self-hosted\",\n \"speech-to-text\",\n \"stt\",\n \"tether\",\n \"text-to-speech\",\n \"transcription\",\n \"translation\",\n \"tts\",\n \"typescript\",\n \"whisper\"\n ],\n \"type\": \"module\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.js\"\n },\n \"./package\": \"./package.json\",\n \"./dist/server/worker.js\": {\n \"import\": \"./dist/server/worker.js\",\n \"require\": \"./dist/server/worker.js\"\n },\n \"./llamacpp-completion/plugin\": {\n \"types\": \"./dist/server/bare/plugins/llamacpp-completion/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/llamacpp-completion/plugin.js\"\n },\n \"./llamacpp-embedding/plugin\": {\n \"types\": \"./dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/llamacpp-embedding/plugin.js\"\n },\n \"./whispercpp-transcription/plugin\": {\n \"types\": \"./dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/whispercpp-transcription/plugin.js\"\n },\n \"./bci-whispercpp-transcription/plugin\": {\n \"types\": \"./dist/server/bare/plugins/bci-whispercpp-transcription/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/bci-whispercpp-transcription/plugin.js\"\n },\n \"./parakeet-transcription/plugin\": {\n \"types\": \"./dist/server/bare/plugins/parakeet-transcription/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/parakeet-transcription/plugin.js\"\n },\n \"./nmtcpp-translation/plugin\": {\n \"types\": \"./dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/nmtcpp-translation/plugin.js\"\n },\n \"./tts-ggml/plugin\": {\n \"types\": \"./dist/server/bare/plugins/tts-ggml/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/tts-ggml/plugin.js\"\n },\n \"./onnx-tts/plugin\": {\n \"types\": \"./dist/server/bare/plugins/tts-ggml/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/tts-ggml/plugin.js\"\n },\n \"./ggml-ocr/plugin\": {\n \"types\": \"./dist/server/bare/plugins/ggml-ocr/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/ggml-ocr/plugin.js\"\n },\n \"./sdcpp-generation/plugin\": {\n \"types\": \"./dist/server/bare/plugins/sdcpp-generation/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/sdcpp-generation/plugin.js\"\n },\n \"./ggml-vla/plugin\": {\n \"types\": \"./dist/server/bare/plugins/ggml-vla/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/ggml-vla/plugin.js\"\n },\n \"./ggml-classification/plugin\": {\n \"types\": \"./dist/server/bare/plugins/ggml-classification/plugin.d.ts\",\n \"import\": \"./dist/server/bare/plugins/ggml-classification/plugin.js\"\n },\n \"./plugin-utils\": {\n \"types\": \"./dist/schemas/plugin.d.ts\",\n \"import\": \"./dist/schemas/plugin.js\"\n },\n \"./expo-plugin\": \"./dist/expo/plugins/index.js\",\n \"./electron-forge\": {\n \"require\": \"./electron-forge/index.cjs\",\n \"import\": \"./electron-forge/index.cjs\",\n \"default\": \"./electron-forge/index.cjs\"\n },\n \"./worker.mobile.bundle\": \"./dist/worker.mobile.bundle.js\",\n \"./worker-core\": {\n \"import\": \"./dist/server/worker-core.js\"\n },\n \"./plugins\": {\n \"import\": \"./dist/server/plugins/index.js\"\n },\n \"./logging\": {\n \"import\": \"./dist/logging/index.js\"\n },\n \"./commands\": {\n \"types\": \"./dist/commands/index.d.ts\",\n \"import\": \"./dist/commands/index.js\"\n },\n \"./models\": {\n \"types\": \"./dist/models/registry/index.d.ts\",\n \"import\": \"./dist/models/registry/index.js\",\n \"require\": \"./dist/models/registry/index.js\"\n },\n \"./pear-pre\": \"./dist/pear/pre.js\"\n },\n \"imports\": {\n \"#rpc\": {\n \"react-native\": \"./dist/client/rpc/expo-rpc-client.js\",\n \"bare\": \"./dist/client/rpc/bare-client.js\",\n \"default\": \"./dist/client/rpc/node-rpc-client.js\"\n }\n },\n \"expo\": {\n \"plugins\": [\n \"./dist/expo/plugins/index.js\"\n ]\n },\n \"files\": [\n \"bare-imports.json\",\n \"dist/**/*\",\n \"electron-forge/**/*\",\n \"expo/plugins/patches/**/*\",\n \"!dist/**/*.map\",\n \"!**/package-lock.json\",\n \"!**/yarn.lock\",\n \"!**/pnpm-lock.yaml\",\n \"!**/bun.lock\",\n \"LICENSE\",\n \"NOTICE\"\n ],\n \"scripts\": {\n \"test:unit\": \"bun run scripts/run-unit-tests.ts\",\n \"build:bare\": \"tsc -p test/bare/tsconfig.json && tsc-alias -p test/bare/tsconfig.json\",\n \"make:test:bare\": \"brittle-make-test test/dist/test/bare/all.mjs \\\"test/dist/test/bare/**/*.test.js\\\"\",\n \"test:bare\": \"bun run build:bare && bun run make:test:bare && brittle-bare test/dist/test/bare/all.mjs\",\n \"test:security\": \"bun run scripts/run-security-tests.ts\",\n \"test:security:bare\": \"bun run build:bare && brittle-bare \\\"test/dist/test/bare/path-security*.test.js\\\"\",\n \"format\": \"prettier --check .\",\n \"format:fix\": \"prettier --write .\",\n \"lint\": \"eslint . --max-warnings=0\",\n \"lint:fix\": \"eslint . --fix\",\n \"typecheck\": \"tsc --noEmit -p tsconfig.json\",\n \"postcompile:aliases\": \"node ./scripts/resolve-aliases.mjs\",\n \"build\": \"rm -rf dist && npm run lint && tsc --project tsconfig.json && npm run postcompile:aliases\",\n \"build:pack\": \"bun run build && bun pm pack --destination dist/\",\n \"watch\": \"nodemon --watch server --ext ts --exec 'bun run build'\",\n \"bare:ensureprebuilds:llamacpp\": \"cp -r node_modules/@qvac/llm-llamacpp/prebuilds/android-arm64 node_modules/@qvac/llm-llamacpp/prebuilds/android-ia32 && cp -r node_modules/@qvac/llm-llamacpp/prebuilds/android-arm64 node_modules/@qvac/llm-llamacpp/prebuilds/android-arm && cp -r node_modules/@qvac/llm-llamacpp/prebuilds/android-arm64 node_modules/@qvac/llm-llamacpp/prebuilds/android-x64\",\n \"bare:ensureprebuilds:whispercpp\": \"cp -r node_modules/@qvac/transcription-whispercpp/prebuilds/android-arm64 node_modules/@qvac/transcription-whispercpp/prebuilds/android-ia32 && cp -r node_modules/@qvac/transcription-whispercpp/prebuilds/android-arm64 node_modules/@qvac/transcription-whispercpp/prebuilds/android-arm && cp -r node_modules/@qvac/transcription-whispercpp/prebuilds/android-arm64 node_modules/@qvac/transcription-whispercpp/prebuilds/android-x64\",\n \"bare:ensureprebuilds:embeddings\": \"cp -r node_modules/@qvac/embed-llamacpp/prebuilds/android-arm64 node_modules/@qvac/embed-llamacpp/prebuilds/android-ia32 && cp -r node_modules/@qvac/embed-llamacpp/prebuilds/android-arm64 node_modules/@qvac/embed-llamacpp/prebuilds/android-arm && cp -r node_modules/@qvac/embed-llamacpp/prebuilds/android-arm64 node_modules/@qvac/embed-llamacpp/prebuilds/android-x64\",\n \"bare:ensureprebuilds\": \"bun run bare:ensureprebuilds:llamacpp && bun run bare:ensureprebuilds:whispercpp && bun run bare:ensureprebuilds:embeddings\",\n \"prepare:husky\": \"bun run husky\",\n \"bare:example\": \"bare ./scripts/bare-bootstrap.js\",\n \"contract:export\": \"tsx ./scripts/export-contract.ts\",\n \"contract:check\": \"tsx ./scripts/export-contract.ts --check\",\n \"check-models\": \"tsx ./models/update-models/index.ts --check\",\n \"check-models:hook\": \"tsx ./models/update-models/index.ts --check --non-blocking\",\n \"update-models\": \"tsx ./models/update-models/index.ts && bun run contract:export\",\n \"changelog:generate\": \"node ../../scripts/sdk/generate-changelog-sdk-pod.cjs --package=sdk && prettier --write changelog\"\n },\n \"dependencies\": {\n \"@qvac/bci-whispercpp\": \"^0.5.0\",\n \"@qvac/classification-ggml\": \"^0.13.0\",\n \"@qvac/decoder-audio\": \"^0.5.0\",\n \"@qvac/diffusion-cpp\": \"^0.15.0\",\n \"@qvac/embed-llamacpp\": \"^0.28.0\",\n \"@qvac/error\": \"^0.1.1\",\n \"@qvac/langdetect-text\": \"^0.1.2\",\n \"@qvac/llm-llamacpp\": \"^0.38.0\",\n \"@qvac/logging\": \"^0.1.0\",\n \"@qvac/ocr-ggml\": \"^0.12.1\",\n \"@qvac/rag\": \"^0.6.4\",\n \"@qvac/registry-client\": \"^0.6.1\",\n \"@qvac/transcription-parakeet\": \"^0.10.0\",\n \"@qvac/transcription-whispercpp\": \"^0.12.0\",\n \"@qvac/translation-nmtcpp\": \"^8.1.0\",\n \"@qvac/tts-ggml\": \"^0.5.0\",\n \"@qvac/vla-ggml\": \"^0.14.0\",\n \"bare-abort-controller\": \"^1.0.0\",\n \"bare-crypto\": \"^1.15.0\",\n \"bare-env\": \"^3.0.0\",\n \"bare-fetch\": \"^3.0.1\",\n \"bare-fs\": \"^4.5.1\",\n \"bare-net\": \"^2.3.2\",\n \"bare-os\": \"^3.6.2\",\n \"bare-pack\": \"^2.0.1\",\n \"bare-path\": \"^3.0.1\",\n \"bare-rpc\": \"^1.3.2\",\n \"bare-runtime\": \"^1.24.2\",\n \"bare-signals\": \"^4.2.0\",\n \"bare-stream\": \"^2.7.0\",\n \"bare-zlib\": \"^1.3.1\",\n \"compact-encoding\": \"^3.0.0\",\n \"corestore\": \"^7.4.5\",\n \"fast-safe-stringify\": \"2.1.1\",\n \"hyperdrive\": \"^13.0.1\",\n \"hyperswarm\": \"^4.14.0\",\n \"semver\": \"^7.8.0\",\n \"tar-stream\": \"^3.1.8\",\n \"which-runtime\": \"^1.3.2\",\n \"zod\": \"^4.3.0\"\n },\n \"devDependencies\": {\n \"@electron-forge/plugin-base\": \"^7.11.1\",\n \"@expo/config-plugins\": \"^54.0.4\",\n \"@lancedb/lancedb\": \"^0.21.3\",\n \"@modelcontextprotocol/sdk\": \"^1.12.1\",\n \"@sqliteai/sqlite-wasm\": \"3.50.4-sync.0.8.30-vector.0.9.23\",\n \"@types/brittle\": \"^3.5.0\",\n \"@types/node\": \"^24.2.1\",\n \"@types/semver\": \"^7.7.1\",\n \"@types/tar-stream\": \"^3.1.4\",\n \"ajv\": \"8.20.0\",\n \"bare-process\": \"^4.4.1\",\n \"bare-readline\": \"^1.2.0\",\n \"bare-stdio\": \"^1.0.2\",\n \"bare-subprocess\": \"^6.1.0\",\n \"bare-url\": \"^2.4.3\",\n \"brittle\": \"^4.0.0\",\n \"chromadb\": \"^3.0.14\",\n \"eslint\": \"^9.33.0\",\n \"eslint-import-resolver-typescript\": \"^4.4.4\",\n \"eslint-plugin-import\": \"^2.30.0\",\n \"eslint-plugin-react\": \"^7.37.5\",\n \"events\": \"^3.3.0\",\n \"expo\": \"^54.0.33\",\n \"expo-device\": \"^8.0.10\",\n \"expo-file-system\": \"^19.0.21\",\n \"husky\": \"^9.1.7\",\n \"pear-pipe\": \"^1.0.6\",\n \"prettier\": \"^3.9.4\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"react-native-bare-kit\": \"^0.14.0\",\n \"tsc-alias\": \"^1.8.17\",\n \"tsx\": \"^4.21.0\",\n \"typescript\": \"^5.9.3\",\n \"typescript-eslint\": \"^8.39.0\"\n },\n \"peerDependencies\": {\n \"@electron-forge/plugin-base\": \"^7.11.1\",\n \"bare-link\": \">=3.0.0\",\n \"expo-build-properties\": \">=0.12.0\",\n \"expo-device\": \">=8.0.0\",\n \"expo-file-system\": \">=19.0.0\",\n \"pear-pipe\": \">=1.0.0\",\n \"react-native-bare-kit\": \"*\",\n \"tsx\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@electron-forge/plugin-base\": {\n \"optional\": true\n },\n \"bare-link\": {\n \"optional\": true\n },\n \"expo-build-properties\": {\n \"optional\": true\n },\n \"expo-device\": {\n \"optional\": true\n },\n \"expo-file-system\": {\n \"optional\": true\n },\n \"pear-pipe\": {\n \"optional\": true\n },\n \"react-native-bare-kit\": {\n \"optional\": true\n },\n \"tsx\": {\n \"optional\": true\n }\n },\n \"patchedDependencies\": {}\n}\nconst Cache = require('xache')\n\nmodule.exports = class AdaptiveTimeout {\n constructor(opts = {}) {\n this._cache = new Cache({\n maxSize: opts.maxSize || 65536,\n maxAge: opts.maxAge || 10 * 60 * 1000 // 10 minutes\n })\n this._fallback = opts.fallback || AdaptiveTimeout.TimeoutExponential\n this._min = opts.min ?? 300\n this._max = opts.max || 4000\n this._jitter = opts.jitter ?? 256\n }\n\n // Default - aggressive ramp\n static TimeoutAggressive = [500, 750, 1000, 1500, 2000]\n\n // Linear - steady increase\n static TimeoutLinear = [500, 1000, 1500, 2000, 2500]\n\n // Exponential - slow start, rapid backoff\n static TimeoutExponential = [250, 500, 1000, 2000, 4000]\n\n // Gentle - conservative, patient\n static TimeoutGentle = [1000, 1250, 1500, 1750, 2000]\n\n // Fast - rapid fire retries\n static TimeoutFast = [200, 400, 600, 800, 1000]\n\n // U-shape - long, short, long\n static TimeoutUShape = [1500, 750, 500, 750, 1500]\n\n // Inverse U - short, long, short\n static TimeoutInverseU = [500, 1000, 1500, 1000, 500]\n\n // Sawtooth - alternating fast/slow\n static TimeoutSawtooth = [500, 1500, 500, 1500, 500]\n\n // Plateau - quick ramp then steady\n static TimeoutPlateau = [500, 1000, 2000, 2000, 2000]\n\n // Logarithmic - diminishing increases\n static TimeoutLogarithmic = [500, 1000, 1300, 1500, 1600]\n\n getValue(key) {\n return this._cache.get(key)\n }\n\n put(key, value) {\n let p = this._cache.get(key)\n\n if (!p) {\n p = { avg: value, variance: value >> 1 }\n } else {\n // blend 75% old + 25% new deviation\n p.variance += (Math.abs(p.avg - value) - p.variance) >> 2\n // blend 87.5% old + 12.5% new sample\n p.avg += (value - p.avg) >> 3\n }\n\n this._cache.set(key, p)\n\n return p\n }\n\n get(key, attempt = 1) {\n const p = this._cache.get(key)\n const jitter = (Math.random() * this._jitter) | 0\n\n if (p) {\n // known - use adaptive with linear backoff\n const base = p.avg + (p.variance << 1)\n const backoff = base * attempt\n return Math.min(Math.max(backoff + jitter, this._min), this._max)\n } else {\n // unknown - use aggressive fallback\n const base = this._fallback[Math.min(attempt - 1, this._fallback.length - 1)]\n return base + jitter\n }\n }\n\n has(key) {\n return this._cache.has(key)\n }\n\n delete(key) {\n return this._cache.delete(key)\n }\n\n clear() {\n this._cache.clear()\n }\n}\n{\n \"name\": \"adaptive-timeout\",\n \"version\": \"1.0.1\",\n \"description\": \"adaptive-timeout\",\n \"main\": \"index.js\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n }\n },\n \"files\": [\n \"package.json\",\n \"index.js\",\n \"index.d.ts\"\n ],\n \"devDependencies\": {\n \"brittle\": \"^3.19.0\",\n \"lunte\": \"^1.2.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"scripts\": {\n \"format\": \"prettier . --write\",\n \"test\": \"prettier . --check && lunte && brittle-bare test/index.js\",\n \"lint\": \"lunte\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/adaptive-timeout.git\"\n },\n \"author\": \"Holepunch Inc\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/adaptive-timeout/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/adaptive-timeout\",\n \"dependencies\": {\n \"xache\": \"^1.2.1\"\n }\n}\nfunction isBuffer(value) {\n return Buffer.isBuffer(value) || value instanceof Uint8Array\n}\n\nfunction isEncoding(encoding) {\n return Buffer.isEncoding(encoding)\n}\n\nfunction alloc(size, fill, encoding) {\n return Buffer.alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe(size) {\n return Buffer.allocUnsafe(size)\n}\n\nfunction allocUnsafeSlow(size) {\n return Buffer.allocUnsafeSlow(size)\n}\n\nfunction byteLength(string, encoding) {\n return Buffer.byteLength(string, encoding)\n}\n\nfunction compare(a, b) {\n return Buffer.compare(a, b)\n}\n\nfunction concat(buffers, totalLength) {\n return Buffer.concat(buffers, totalLength)\n}\n\nfunction copy(source, target, targetStart, start, end) {\n return toBuffer(source).copy(target, targetStart, start, end)\n}\n\nfunction equals(a, b) {\n return toBuffer(a).equals(b)\n}\n\nfunction fill(buffer, value, offset, end, encoding) {\n return toBuffer(buffer).fill(value, offset, end, encoding)\n}\n\nfunction from(value, encodingOrOffset, length) {\n return Buffer.from(value, encodingOrOffset, length)\n}\n\nfunction includes(buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).includes(value, byteOffset, encoding)\n}\n\nfunction indexOf(buffer, value, byfeOffset, encoding) {\n return toBuffer(buffer).indexOf(value, byfeOffset, encoding)\n}\n\nfunction lastIndexOf(buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).lastIndexOf(value, byteOffset, encoding)\n}\n\nfunction swap16(buffer) {\n return toBuffer(buffer).swap16()\n}\n\nfunction swap32(buffer) {\n return toBuffer(buffer).swap32()\n}\n\nfunction swap64(buffer) {\n return toBuffer(buffer).swap64()\n}\n\nfunction toBuffer(buffer) {\n if (Buffer.isBuffer(buffer)) return buffer\n return Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nfunction toString(buffer, encoding, start, end) {\n return toBuffer(buffer).toString(encoding, start, end)\n}\n\nfunction write(buffer, string, offset, length, encoding) {\n return toBuffer(buffer).write(string, offset, length, encoding)\n}\n\nfunction readDoubleBE(buffer, offset) {\n return toBuffer(buffer).readDoubleBE(offset)\n}\n\nfunction readDoubleLE(buffer, offset) {\n return toBuffer(buffer).readDoubleLE(offset)\n}\n\nfunction readFloatBE(buffer, offset) {\n return toBuffer(buffer).readFloatBE(offset)\n}\n\nfunction readFloatLE(buffer, offset) {\n return toBuffer(buffer).readFloatLE(offset)\n}\n\nfunction readInt32BE(buffer, offset) {\n return toBuffer(buffer).readInt32BE(offset)\n}\n\nfunction readInt32LE(buffer, offset) {\n return toBuffer(buffer).readInt32LE(offset)\n}\n\nfunction readUInt32BE(buffer, offset) {\n return toBuffer(buffer).readUInt32BE(offset)\n}\n\nfunction readUInt32LE(buffer, offset) {\n return toBuffer(buffer).readUInt32LE(offset)\n}\n\nfunction writeDoubleBE(buffer, value, offset) {\n return toBuffer(buffer).writeDoubleBE(value, offset)\n}\n\nfunction writeDoubleLE(buffer, value, offset) {\n return toBuffer(buffer).writeDoubleLE(value, offset)\n}\n\nfunction writeFloatBE(buffer, value, offset) {\n return toBuffer(buffer).writeFloatBE(value, offset)\n}\n\nfunction writeFloatLE(buffer, value, offset) {\n return toBuffer(buffer).writeFloatLE(value, offset)\n}\n\nfunction writeInt32BE(buffer, value, offset) {\n return toBuffer(buffer).writeInt32BE(value, offset)\n}\n\nfunction writeInt32LE(buffer, value, offset) {\n return toBuffer(buffer).writeInt32LE(value, offset)\n}\n\nfunction writeUInt32BE(buffer, value, offset) {\n return toBuffer(buffer).writeUInt32BE(value, offset)\n}\n\nfunction writeUInt32LE(buffer, value, offset) {\n return toBuffer(buffer).writeUInt32LE(value, offset)\n}\n\nmodule.exports = {\n isBuffer,\n isEncoding,\n alloc,\n allocUnsafe,\n allocUnsafeSlow,\n byteLength,\n compare,\n concat,\n copy,\n equals,\n fill,\n from,\n includes,\n indexOf,\n lastIndexOf,\n swap16,\n swap32,\n swap64,\n toBuffer,\n toString,\n write,\n readDoubleBE,\n readDoubleLE,\n readFloatBE,\n readFloatLE,\n readInt32BE,\n readInt32LE,\n readUInt32BE,\n readUInt32LE,\n writeDoubleBE,\n writeDoubleLE,\n writeFloatBE,\n writeFloatLE,\n writeInt32BE,\n writeInt32LE,\n writeUInt32BE,\n writeUInt32LE\n}\n{\n \"name\": \"b4a\",\n \"version\": \"1.8.1\",\n \"description\": \"Bridging the gap between buffers and typed arrays\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"react-native\": \"./react-native.js\",\n \"browser\": \"./browser.js\",\n \"default\": \"./index.js\"\n }\n },\n \"files\": [\n \"browser.js\",\n \"index.js\",\n \"react-native.js\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:bare && npm run test:node\",\n \"test:bare\": \"brittle-bare --coverage test.mjs\",\n \"test:node\": \"brittle-node --coverage test.mjs\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/b4a.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/b4a/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/b4a#readme\",\n \"devDependencies\": {\n \"brittle\": \"^3.5.2\",\n \"lunte\": \"^1.7.0\",\n \"nanobench\": \"^3.0.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"peerDependencies\": {\n \"react-native-b4a\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"react-native-b4a\": {\n \"optional\": true\n }\n }\n}\nconst { Event, EventTarget } = require('bare-events/web')\n\n// https://webidl.spec.whatwg.org/#aborterror\nclass AbortError extends Error {\n get name() {\n return 'AbortError'\n }\n}\n\n// https://webidl.spec.whatwg.org/#timeouterror\nclass TimeoutError extends Error {\n get name() {\n return 'TimeoutError'\n }\n}\n\n// https://dom.spec.whatwg.org/#abortsignal\nclass AbortSignal extends EventTarget {\n constructor() {\n super()\n\n this._reason = undefined\n this._dependent = false\n this._sources = []\n this._dependents = []\n }\n\n // https://dom.spec.whatwg.org/#dom-abortsignal-aborted\n get aborted() {\n return this._reason !== undefined\n }\n\n // https://dom.spec.whatwg.org/#dom-abortsignal-reason\n get reason() {\n return this._reason\n }\n\n // https://dom.spec.whatwg.org/#abortsignal-signal-abort\n _abort(reason = new AbortError('The operation was aborted')) {\n if (this.aborted) return\n\n this._reason = reason\n\n this.dispatchEvent(new Event('abort'))\n\n for (const signal of this._dependents) {\n signal._abort(reason)\n }\n }\n\n // https://dom.spec.whatwg.org/#dom-abortsignal-throwifaborted\n throwIfAborted() {\n if (this._reason !== undefined) throw this._reason\n }\n\n toJSON() {\n return {\n aborted: this.aborted,\n reason: this.reason\n }\n }\n\n [Symbol.for('bare.inspect')]() {\n return {\n __proto__: { constructor: AbortSignal },\n\n aborted: this.aborted,\n reason: this.reason\n }\n }\n\n // https://dom.spec.whatwg.org/#dom-abortsignal-abort\n static abort(reason = new AbortError('The operation was aborted')) {\n const signal = new AbortSignal()\n\n signal._reason = reason\n\n return signal\n }\n\n // https://dom.spec.whatwg.org/#dom-abortsignal-timeout\n static timeout(ms) {\n const signal = new AbortSignal()\n\n const timer = setTimeout(\n () => signal._abort(new TimeoutError('The operation timed out')),\n ms\n )\n\n timer.unref()\n\n return signal\n }\n\n // https://dom.spec.whatwg.org/#dom-abortsignal-any\n static any(signals) {\n const result = new AbortSignal()\n\n for (const signal of signals) {\n if (signal.aborted) {\n result._reason = signal.reason\n return result\n }\n }\n\n result._dependent = true\n\n for (const signal of signals) {\n if (signal._dependent === false) {\n result._sources.push(signal)\n signal._dependents.push(result)\n } else {\n for (const source of signal._sources) {\n result._sources.push(source)\n source._dependents.push(result)\n }\n }\n }\n\n return result\n }\n}\n\n// https://dom.spec.whatwg.org/#abortcontroller\nclass AbortController {\n constructor() {\n this._signal = new AbortSignal()\n }\n\n // https://dom.spec.whatwg.org/#dom-abortcontroller-signal\n get signal() {\n return this._signal\n }\n\n // https://dom.spec.whatwg.org/#dom-abortcontroller-abort\n abort(reason) {\n this._signal._abort(reason)\n }\n\n toJSON() {\n return {\n signal: this.signal\n }\n }\n\n [Symbol.for('bare.inspect')]() {\n return {\n __proto__: { constructor: AbortController },\n\n signal: this.signal\n }\n }\n}\n\nmodule.exports = exports = AbortController\n\nexports.AbortController = exports\n\nexports.AbortSignal = AbortSignal\n{\n \"name\": \"bare-abort-controller\",\n \"version\": \"1.1.2\",\n \"description\": \"Abort controller support for Bare\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./global\": {\n \"types\": \"./global.d.ts\",\n \"default\": \"./global.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"global.js\",\n \"global.d.ts\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:bare && npm run test:node\",\n \"test:bare\": \"brittle-bare --coverage test.js\",\n \"test:node\": \"brittle-node --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-abort-controller.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-abort-controller/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-abort-controller#readme\",\n \"dependencies\": {\n \"bare-events\": \"^2.7.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"lunte\": \"^1.6.0\",\n \"prettier\": \"^3.4.2\",\n \"prettier-config-holepunch\": \"^1.0.0\"\n }\n}\nconst ESC = '\\x1b'\nconst CSI = ESC + '['\nconst SGR = (n) => CSI + n + 'm'\n\nexports.constants = {\n ESC,\n CSI,\n SGR\n}\n\n// https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_(Control_Sequence_Introducer)_sequences\n\nexports.cursorHide = CSI + '?25l'\nexports.cursorShow = CSI + '?25h'\n\nexports.cursorUp = function cursorUp(n = 1) {\n return CSI + n + 'A'\n}\n\nexports.cursorDown = function cursorDown(n = 1) {\n return CSI + n + 'B'\n}\n\nexports.cursorForward = function cursorForward(n = 1) {\n return CSI + n + 'C'\n}\n\nexports.cursorBack = function cursorBack(n = 1) {\n return CSI + n + 'D'\n}\n\nexports.cursorNextLine = function cursorNextLine(n = 1) {\n return CSI + n + 'E'\n}\n\nexports.cursorPreviousLine = function cursorPreviousLine(n = 1) {\n return CSI + n + 'F'\n}\n\nexports.cursorPosition = function cursorPosition(column, row = 0) {\n if (row === 0) return CSI + (column + 1) + 'G'\n\n return CSI + (row + 1) + ';' + (column + 1) + 'H'\n}\n\nexports.eraseDisplayEnd = CSI + 'J'\nexports.eraseDisplayStart = CSI + '1J'\nexports.eraseDisplay = CSI + '2J'\nexports.eraseLineEnd = CSI + 'K'\nexports.eraseLineStart = CSI + '1K'\nexports.eraseLine = CSI + '2K'\n\nexports.scrollUp = function scrollUp(n = 1) {\n return CSI + n + 'S'\n}\n\nexports.scrollDown = function scrollDown(n = 1) {\n return CSI + n + 'T'\n}\n\n// https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters\n\nexports.modifierReset = SGR(0)\nexports.modifierBold = SGR(1)\nexports.modifierDim = SGR(2)\nexports.modifierItalic = SGR(3)\nexports.modifierUnderline = SGR(4)\nexports.modifierNormal = SGR(22)\nexports.modifierNotItalic = SGR(23)\nexports.modifierNotUnderline = SGR(24)\n\n// https://en.wikipedia.org/wiki/ANSI_escape_code#Colors\n\nexports.colorBlack = SGR(30)\nexports.colorRed = SGR(31)\nexports.colorGreen = SGR(32)\nexports.colorYellow = SGR(33)\nexports.colorBlue = SGR(34)\nexports.colorMagenta = SGR(35)\nexports.colorCyan = SGR(36)\nexports.colorWhite = SGR(37)\nexports.colorDefault = SGR(39)\nexports.colorBrightBlack = SGR(90)\nexports.colorBrightRed = SGR(91)\nexports.colorBrightGreen = SGR(92)\nexports.colorBrightYellow = SGR(93)\nexports.colorBrightBlue = SGR(94)\nexports.colorBrightMagenta = SGR(95)\nexports.colorBrightCyan = SGR(96)\nexports.colorBrightWhite = SGR(97)\n{\n \"name\": \"bare-ansi-escapes\",\n \"version\": \"2.2.3\",\n \"description\": \"Parse and produce ANSI escape sequences\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./key-decoder\": {\n \"types\": \"./key-decoder.d.ts\",\n \"default\": \"./key-decoder.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"key-decoder.js\",\n \"key-decoder.d.ts\"\n ],\n \"scripts\": {\n \"test\": \"prettier . --check && bare test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-ansi-escapes.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-ansi-escapes/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-ansi-escapes#readme\",\n \"dependencies\": {\n \"bare-stream\": \"^2.6.5\"\n },\n \"devDependencies\": {\n \"bare-buffer\": \"^3.0.2\",\n \"brittle\": \"^3.3.2\",\n \"prettier\": \"^3.4.2\",\n \"prettier-config-standard\": \"^7.0.0\"\n },\n \"peerDependencies\": {\n \"bare-buffer\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"bare-buffer\": {\n \"optional\": true\n }\n }\n}\nconst inspect = require('bare-inspect')\n\nclass AssertionError extends Error {\n constructor(opts = {}) {\n let { message = null, actual, expected, operator } = opts\n\n if (message === null) {\n message = `${inspect(actual)} ${operator} ${inspect(expected)}`\n }\n\n super(message)\n\n this.actual = actual\n this.expected = expected\n this.operator = operator\n }\n\n get name() {\n return 'AssertionError'\n }\n\n get code() {\n 'ASSERTION'\n }\n}\n\nfunction assertFail(opts, fn) {\n if (opts.message instanceof Error) throw opts.message\n\n const err = new AssertionError(opts)\n\n if (Error.captureStackTrace) Error.captureStackTrace(err, fn)\n\n throw err\n}\n\nmodule.exports = exports = function assert(actual, message) {\n if (actual) return\n\n assertFail({ message, actual, expected: true, operator: '==' }, assert)\n}\n\nexports.AssertionError = AssertionError\n\nexports.fail = function fail(message) {\n if (message === undefined) message = 'Failed'\n\n assertFail({ message, operator: 'fail' }, fail)\n}\n\nexports.ok = function ok(actual, message) {\n if (actual) return\n\n assertFail({ message, actual, expected: true, operator: '==' }, ok)\n}\n\nexports.notOk = function ok(actual, message) {\n if (!actual) return\n\n assertFail({ message, actual, expected: false, operator: '==' }, ok)\n}\n\nexports.equal = function equal(actual, expected, message) {\n if (actual == expected || (actual !== actual && expected !== expected)) {\n return\n }\n\n assertFail({ message, actual, expected, operator: '==' }, equal)\n}\n\nexports.notEqual = function notEqual(actual, expected, message) {\n if (actual != expected && (actual === actual || expected === expected)) {\n return\n }\n\n assertFail({ message, actual, expected, operator: '!=' }, notEqual)\n}\n\nexports.strictEqual = function strictEqual(actual, expected, message) {\n if (Object.is(actual, expected)) return\n\n assertFail(\n { message, actual, expected, operator: 'strictEqual' },\n strictEqual\n )\n}\n\nexports.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (!Object.is(actual, expected)) return\n\n assertFail(\n { message, actual, expected, operator: 'notStrictEqual' },\n notStrictEqual\n )\n}\n{\n \"name\": \"bare-assert\",\n \"version\": \"1.2.0\",\n \"description\": \"Assertion library for JavaScript\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\"\n ],\n \"scripts\": {\n \"test\": \"prettier . --check && bare test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-assert.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-assert/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-assert#readme\",\n \"dependencies\": {\n \"bare-inspect\": \"^3.1.2\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.1.1\",\n \"prettier\": \"^3.4.2\",\n \"prettier-config-standard\": \"^7.0.0\"\n }\n}\nmodule.exports = require.addon()\nconst constants = require('./lib/constants')\nconst ascii = require('./lib/ascii')\nconst base64 = require('./lib/base64')\nconst base64url = require('./lib/base64url')\nconst hex = require('./lib/hex')\nconst utf8 = require('./lib/utf8')\nconst utf16le = require('./lib/utf16le')\nconst latin1 = require('./lib/latin1')\nconst binding = require('./binding')\n\nconst kind = Symbol.for('bare.buffer.kind')\n\nlet poolSize = 0\n\nmodule.exports = exports = class Buffer extends Uint8Array {\n static get [kind]() {\n return 0 // Compatibility version\n }\n\n static get poolSize() {\n return poolSize\n }\n\n static set poolSize(value) {\n poolSize = Math.max(0, value)\n }\n\n constructor(arrayBuffer, offset, length, opts = {}) {\n if (typeof arrayBuffer === 'number') {\n opts = offset || {}\n\n const { uninitialized = false } = opts\n\n offset = 0\n length = arrayBuffer\n\n if (length > constants.MAX_LENGTH) {\n throw new RangeError(`Buffer length must be at most ${constants.MAX_LENGTH}`)\n }\n\n arrayBuffer = uninitialized ? binding.allocUnsafe(length) : binding.alloc(length)\n } else {\n if (length > constants.MAX_LENGTH) {\n throw new RangeError(`Buffer length must be at most ${constants.MAX_LENGTH}`)\n }\n\n if (typeof offset === 'object' && offset !== null) {\n opts = offset\n offset = 0\n length = arrayBuffer.byteLength\n } else if (typeof length === 'length' && length !== null) {\n opts = length\n length = arrayBuffer.byteLength - offset\n }\n }\n\n super(arrayBuffer, offset, length)\n }\n\n get [kind]() {\n return Buffer[kind]\n }\n\n copy(target, targetStart = 0, sourceStart = 0, sourceEnd = this.byteLength) {\n let source = this\n\n if (targetStart < 0) targetStart = 0\n if (targetStart >= target.byteLength) return 0\n\n const targetLength = target.byteLength - targetStart\n\n if (sourceStart < 0) sourceStart = 0\n if (sourceStart >= source.byteLength) return 0\n\n if (sourceEnd <= sourceStart) return 0\n if (sourceEnd > source.byteLength) sourceEnd = source.byteLength\n\n if (sourceEnd - sourceStart > targetLength) {\n sourceEnd = sourceStart + targetLength\n }\n\n const sourceLength = sourceEnd - sourceStart\n\n if (source === target) {\n target.copyWithin(targetStart, sourceStart, sourceEnd)\n } else {\n if (sourceStart !== 0 || sourceEnd !== source.byteLength) {\n source = source.subarray(sourceStart, sourceEnd)\n }\n\n target.set(source, targetStart)\n }\n\n return sourceLength\n }\n\n equals(target) {\n const source = this\n\n if (source === target) return true\n if (source.byteLength !== target.byteLength) return false\n\n return (\n binding.compare(\n source.buffer,\n source.byteOffset,\n source.byteLength,\n target.buffer,\n target.byteOffset,\n target.byteLength\n ) === 0\n )\n }\n\n compare(\n target,\n targetStart = 0,\n targetEnd = target.byteLength,\n sourceStart = 0,\n sourceEnd = this.byteLength\n ) {\n let source = this\n\n if (source === target) return 0\n\n if (arguments.length > 1) {\n if (targetStart < 0) targetStart = 0\n if (targetStart > target.byteLength) targetStart = target.byteLength\n\n if (targetEnd < targetStart) targetEnd = targetStart\n if (targetEnd > target.byteLength) targetEnd = target.byteLength\n\n if (sourceStart < 0) sourceStart = 0\n if (sourceStart > source.byteLength) sourceStart = source.byteLength\n\n if (sourceEnd < sourceStart) sourceEnd = sourceStart\n if (sourceEnd > source.byteLength) sourceEnd = source.byteLength\n\n if (sourceStart !== 0 || sourceEnd !== source.byteLength) {\n source = source.subarray(sourceStart, sourceEnd)\n }\n\n if (targetStart !== 0 || targetEnd !== target.byteLength) {\n target = target.subarray(targetStart, targetEnd)\n }\n }\n\n return binding.compare(\n source.buffer,\n source.byteOffset,\n source.byteLength,\n target.buffer,\n target.byteOffset,\n target.byteLength\n )\n }\n\n fill(value, offset = 0, end = this.byteLength, encoding = 'utf8') {\n if (typeof value === 'string') {\n if (typeof offset === 'string') {\n // fill(string, encoding)\n encoding = offset\n offset = 0\n end = this.byteLength\n } else if (typeof end === 'string') {\n // fill(string, offset, encoding)\n encoding = end\n end = this.byteLength\n }\n } else if (typeof value === 'number') {\n value = value & 0xff\n } else if (typeof value === 'boolean') {\n value = +value\n }\n\n if (offset < 0) offset = 0\n if (offset >= this.byteLength) return this\n\n if (end <= offset) return this\n if (end > this.byteLength) end = this.byteLength\n\n if (typeof value === 'number') return super.fill(value, offset, end)\n\n if (typeof value === 'string') value = exports.from(value, encoding)\n\n const length = value.byteLength\n\n for (let i = 0, n = end - offset; i < n; ++i) {\n this[i + offset] = value[i % length]\n }\n\n return this\n }\n\n includes(value, offset, encoding) {\n return this.indexOf(value, offset, encoding) !== -1\n }\n\n indexOf(value, offset = 0, encoding) {\n if (typeof value === 'boolean') value = +value\n\n if (typeof value === 'number') {\n return super.indexOf(value & 0xff, offset)\n }\n\n return bidirectionalIndexOf(this, value, offset, encoding, true /* first */)\n }\n\n lastIndexOf(value, offset = this.byteLength - 1, encoding) {\n if (typeof value === 'boolean') value = +value\n\n if (typeof value === 'number') {\n return super.lastIndexOf(value & 0xff, offset)\n }\n\n return bidirectionalIndexOf(this, value, offset, encoding, false /* last */)\n }\n\n swap16() {\n const length = this.byteLength\n\n if (length % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n\n for (let i = 0; i < length; i += 2) swap(this, i, i + 1)\n\n return this\n }\n\n swap32() {\n const length = this.byteLength\n\n if (length % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n\n for (let i = 0; i < length; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n\n return this\n }\n\n swap64() {\n const length = this.byteLength\n\n if (length % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n\n for (let i = 0; i < length; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n\n return this\n }\n\n toString(encoding = 'utf8', start = 0, end = this.byteLength) {\n // toString()\n if (arguments.length === 0) return utf8.toString(this)\n\n // toString(encoding)\n if (arguments.length === 1) return codecFor(encoding).toString(this)\n\n if (start < 0) start = 0\n if (start >= this.byteLength) return ''\n\n if (end <= start) return ''\n if (end > this.byteLength) end = this.byteLength\n\n let buffer = this\n\n if (start !== 0 || end !== this.byteLength) {\n buffer = buffer.subarray(start, end)\n }\n\n return codecFor(encoding).toString(buffer)\n }\n\n toJSON() {\n return Array.from(this)\n }\n\n write(string, offset = 0, length = this.byteLength - offset, encoding = 'utf8') {\n // write(string)\n if (arguments.length === 1) return utf8.write(this, string)\n\n if (typeof offset === 'string') {\n // write(string, encoding)\n encoding = offset\n offset = 0\n length = this.byteLength\n } else if (typeof length === 'string') {\n // write(string, offset, encoding)\n encoding = length\n length = this.byteLength - offset\n }\n\n length = Math.min(length, exports.byteLength(string, encoding))\n\n let start = offset\n if (start < 0) start = 0\n if (start >= this.byteLength) return 0\n\n let end = offset + length\n if (end <= start) return 0\n if (end > this.byteLength) end = this.byteLength\n\n let buffer = this\n\n if (start !== 0 || end !== this.byteLength) {\n buffer = buffer.subarray(start, end)\n }\n\n return codecFor(encoding).write(buffer, string)\n }\n\n readBigInt64BE(offset = 0) {\n return viewOf(this).getBigInt64(offset, false)\n }\n readBigInt64LE(offset = 0) {\n return viewOf(this).getBigInt64(offset, true)\n }\n\n readBigUint64BE(offset = 0) {\n return viewOf(this).getBigUint64(offset, false)\n }\n readBigUint64LE(offset = 0) {\n return viewOf(this).getBigUint64(offset, true)\n }\n\n readDoubleBE(offset = 0) {\n return viewOf(this).getFloat64(offset, false)\n }\n readDoubleLE(offset = 0) {\n return viewOf(this).getFloat64(offset, true)\n }\n\n readFloatBE(offset = 0) {\n return viewOf(this).getFloat32(offset, false)\n }\n readFloatLE(offset = 0) {\n return viewOf(this).getFloat32(offset, true)\n }\n\n readInt8(offset = 0) {\n return viewOf(this).getInt8(offset)\n }\n\n readInt16BE(offset = 0) {\n return viewOf(this).getInt16(offset, false)\n }\n readInt16LE(offset = 0) {\n return viewOf(this).getInt16(offset, true)\n }\n\n readInt32BE(offset = 0) {\n return viewOf(this).getInt32(offset, false)\n }\n readInt32LE(offset = 0) {\n return viewOf(this).getInt32(offset, true)\n }\n\n readIntBE(offset, byteLength) {\n if (byteLength === 6) return readInt48BE(viewOf(this), offset)\n if (byteLength === 5) return readInt40BE(viewOf(this), offset)\n if (byteLength === 3) return readInt24BE(viewOf(this), offset)\n if (byteLength === 4) return this.readInt32BE(offset)\n if (byteLength === 2) return this.readInt16BE(offset)\n if (byteLength === 1) return this.readInt8(offset)\n throw new RangeError(`Byte length must be between 1 and 6`)\n }\n\n readIntLE(offset, byteLength) {\n if (byteLength === 6) return readInt48LE(viewOf(this), offset)\n if (byteLength === 5) return readInt40LE(viewOf(this), offset)\n if (byteLength === 3) return readInt24LE(viewOf(this), offset)\n if (byteLength === 4) return this.readInt32LE(offset)\n if (byteLength === 2) return this.readInt16LE(offset)\n if (byteLength === 1) return this.readInt8(offset)\n throw new RangeError(`Byte length must be between 1 and 6`)\n }\n\n readUint8(offset = 0) {\n return viewOf(this).getUint8(offset)\n }\n\n readUint16BE(offset = 0) {\n return viewOf(this).getUint16(offset, false)\n }\n readUint16LE(offset = 0) {\n return viewOf(this).getUint16(offset, true)\n }\n\n readUint32BE(offset = 0) {\n return viewOf(this).getUint32(offset, false)\n }\n readUint32LE(offset = 0) {\n return viewOf(this).getUint32(offset, true)\n }\n\n readUintBE(offset, byteLength) {\n if (byteLength === 6) return readUint48BE(viewOf(this), offset)\n if (byteLength === 5) return readUint40BE(viewOf(this), offset)\n if (byteLength === 3) return readUint24BE(viewOf(this), offset)\n if (byteLength === 4) return this.readUint32BE(offset)\n if (byteLength === 2) return this.readUint16BE(offset)\n if (byteLength === 1) return this.readUint8(offset)\n throw new RangeError(`Byte length must be between 1 and 6`)\n }\n\n readUintLE(offset, byteLength) {\n if (byteLength === 6) return readUint48LE(viewOf(this), offset)\n if (byteLength === 5) return readUint40LE(viewOf(this), offset)\n if (byteLength === 3) return readUint24LE(viewOf(this), offset)\n if (byteLength === 4) return this.readUint32LE(offset)\n if (byteLength === 2) return this.readUint16LE(offset)\n if (byteLength === 1) return this.readUint8(offset)\n throw new RangeError(`Byte length must be between 1 and 6`)\n }\n\n readBigUInt64BE(...args) {\n return this.readBigUint64BE(...args)\n }\n readBigUInt64LE(...args) {\n return this.readBigUint64LE(...args)\n }\n\n readUInt8(...args) {\n return this.readUint8(...args)\n }\n\n readUInt16BE(...args) {\n return this.readUint16BE(...args)\n }\n readUInt16LE(...args) {\n return this.readUint16LE(...args)\n }\n\n readUInt32BE(...args) {\n return this.readUint32BE(...args)\n }\n readUInt32LE(...args) {\n return this.readUint32LE(...args)\n }\n\n readUIntBE(...args) {\n return this.readUintBE(...args)\n }\n readUIntLE(...args) {\n return this.readUintLE(...args)\n }\n\n writeBigInt64BE(value, offset = 0) {\n viewOf(this).setBigInt64(offset, value, false)\n return offset + 8\n }\n writeBigInt64LE(value, offset = 0) {\n viewOf(this).setBigInt64(offset, value, true)\n return offset + 8\n }\n\n writeBigUint64BE(value, offset = 0) {\n viewOf(this).setBigUint64(offset, value, false)\n return offset + 8\n }\n writeBigUint64LE(value, offset = 0) {\n viewOf(this).setBigUint64(offset, value, true)\n return offset + 8\n }\n\n writeDoubleBE(value, offset = 0) {\n viewOf(this).setFloat64(offset, value, false)\n return offset + 8\n }\n writeDoubleLE(value, offset = 0) {\n viewOf(this).setFloat64(offset, value, true)\n return offset + 8\n }\n\n writeFloatBE(value, offset = 0) {\n viewOf(this).setFloat32(offset, value, false)\n return offset + 4\n }\n writeFloatLE(value, offset = 0) {\n viewOf(this).setFloat32(offset, value, true)\n return offset + 4\n }\n\n writeInt8(value, offset = 0) {\n viewOf(this).setInt8(offset, value)\n return offset + 1\n }\n\n writeInt16BE(value, offset = 0) {\n viewOf(this).setInt16(offset, value, false)\n return offset + 2\n }\n writeInt16LE(value, offset = 0) {\n viewOf(this).setInt16(offset, value, true)\n return offset + 2\n }\n\n writeInt32BE(value, offset = 0) {\n viewOf(this).setInt32(offset, value, false)\n return offset + 4\n }\n writeInt32LE(value, offset = 0) {\n viewOf(this).setInt32(offset, value, true)\n return offset + 4\n }\n\n writeIntBE(value, offset, byteLength) {\n if (byteLength === 6) return writeInt48BE(value, viewOf(this), offset)\n if (byteLength === 5) return writeInt40BE(value, viewOf(this), offset)\n if (byteLength === 3) return writeInt24BE(value, viewOf(this), offset)\n if (byteLength === 4) return this.writeInt32BE(value, offset)\n if (byteLength === 2) return this.writeInt16BE(value, offset)\n if (byteLength === 1) return this.writeInt8(value, offset)\n throw new RangeError(`Byte length must be between 1 and 6`)\n }\n\n writeIntLE(value, offset, byteLength) {\n if (byteLength === 6) return writeInt48LE(value, viewOf(this), offset)\n if (byteLength === 5) return writeInt40LE(value, viewOf(this), offset)\n if (byteLength === 3) return writeInt24LE(value, viewOf(this), offset)\n if (byteLength === 4) return this.writeInt32LE(value, offset)\n if (byteLength === 2) return this.writeInt16LE(value, offset)\n if (byteLength === 1) return this.writeInt8(value, offset)\n throw new RangeError(`Byte length must be between 1 and 6`)\n }\n\n writeUint8(value, offset = 0) {\n viewOf(this).setUint8(offset, value, true)\n return offset + 1\n }\n\n writeUint16BE(value, offset = 0) {\n viewOf(this).setUint16(offset, value, false)\n return offset + 2\n }\n writeUint16LE(value, offset = 0) {\n viewOf(this).setUint16(offset, value, true)\n return offset + 2\n }\n\n writeUint32LE(value, offset = 0) {\n viewOf(this).setUint32(offset, value, true)\n return offset + 4\n }\n writeUint32BE(value, offset = 0) {\n viewOf(this).setUint32(offset, value, false)\n return offset + 4\n }\n\n writeUintBE(value, offset, byteLength) {\n if (byteLength === 6) return writeUint48BE(value, viewOf(this), offset)\n if (byteLength === 5) return writeUint40BE(value, viewOf(this), offset)\n if (byteLength === 3) return writeUint24BE(value, viewOf(this), offset)\n if (byteLength === 4) return this.writeUint32BE(value, offset)\n if (byteLength === 2) return this.writeUint16BE(value, offset)\n if (byteLength === 1) return this.writeUint8(value, offset)\n throw new RangeError(`Byte length must be between 1 and 6`)\n }\n\n writeUintLE(value, offset, byteLength) {\n if (byteLength === 6) return writeUint48LE(value, viewOf(this), offset)\n if (byteLength === 5) return writeUint40LE(value, viewOf(this), offset)\n if (byteLength === 3) return writeUint24LE(value, viewOf(this), offset)\n if (byteLength === 4) return this.writeUint32LE(value, offset)\n if (byteLength === 2) return this.writeUint16LE(value, offset)\n if (byteLength === 1) return this.writeUint8(value, offset)\n throw new RangeError(`Byte length must be between 1 and 6`)\n }\n\n writeBigUInt64BE(...args) {\n return this.writeBigUint64BE(...args)\n }\n writeBigUInt64LE(...args) {\n return this.writeBigUint64LE(...args)\n }\n\n writeUInt8(...args) {\n return this.writeUint8(...args)\n }\n\n writeUInt16BE(...args) {\n return this.writeUint16BE(...args)\n }\n writeUInt16LE(...args) {\n return this.writeUint16LE(...args)\n }\n\n writeUInt32BE(...args) {\n return this.writeUint32BE(...args)\n }\n writeUInt32LE(...args) {\n return this.writeUint32LE(...args)\n }\n\n writeUIntBE(...args) {\n return this.writeUintBE(...args)\n }\n writeUIntLE(...args) {\n return this.writeUintLE(...args)\n }\n}\n\nconst Buffer = exports\n\nexports.Buffer = Buffer // For Node.js compatibility\n\nexports.constants = constants\n\nconst codecs = Object.create(null)\n\ncodecs.ascii = ascii\ncodecs.base64 = base64\ncodecs.base64url = base64url\ncodecs.hex = hex\ncodecs.utf8 = codecs['utf-8'] = utf8\ncodecs.utf16le = codecs.ucs2 = codecs['utf-16le'] = codecs['ucs-2'] = utf16le\ncodecs.latin1 = codecs.binary = latin1\n\nfunction codecFor(encoding = 'utf8') {\n if (encoding in codecs) return codecs[encoding]\n\n encoding = encoding.toLowerCase()\n\n if (encoding in codecs) return codecs[encoding]\n\n throw new Error(`Unknown encoding '${encoding}'`)\n}\n\nconst views = new WeakMap()\n\nfunction viewOf(buffer) {\n let view = views.get(buffer)\n if (view === undefined) {\n view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n views.set(buffer, view)\n }\n return view\n}\n\nexports.isBuffer = function isBuffer(value) {\n if (value instanceof Buffer) return true\n\n return typeof value === 'object' && value !== null && value[kind] === Buffer[kind]\n}\n\nexports.isEncoding = function isEncoding(encoding) {\n try {\n codecFor(encoding)\n return true\n } catch {\n return false\n }\n}\n\nexports.isASCII = function isASCII(buffer) {\n return ascii.validate(buffer)\n}\n\n// for Node.js compatibily\nexports.isAscii = exports.isASCII\n\nexports.isUTF8 = function isUTF8(buffer) {\n return utf8.validate(buffer)\n}\n\n// for Node.js compatibility\nexports.isUtf8 = exports.isUTF8\n\nexports.alloc = function alloc(size, fill, encoding) {\n const buffer = new Buffer(size)\n if (fill !== undefined) buffer.fill(fill, 0, buffer.byteLength, encoding)\n return buffer\n}\n\nexports.allocUnsafe = function allocUnsafe(size) {\n return new Buffer(size, { uninitialized: true })\n}\n\nexports.allocUnsafeSlow = function allocUnsafeSlow(size) {\n return exports.allocUnsafe(size)\n}\n\nexports.byteLength = function byteLength(string, encoding) {\n if (typeof string === 'string') {\n return codecFor(encoding).byteLength(string)\n }\n\n return string.byteLength\n}\n\nexports.compare = function compare(a, b) {\n return binding.compare(a.buffer, a.byteOffset, a.byteLength, b.buffer, b.byteOffset, b.byteLength)\n}\n\nexports.concat = function concat(buffers, length) {\n if (length === undefined) {\n length = buffers.reduce((length, buffer) => length + buffer.byteLength, 0)\n }\n\n const result = new Buffer(length)\n\n for (let i = 0, n = buffers.length, offset = 0; i < n; i++) {\n const buffer = buffers[i]\n\n if (offset + buffer.byteLength > result.byteLength) {\n result.set(buffer.subarray(0, result.byteLength - offset), offset)\n return result\n }\n\n result.set(buffer, offset)\n offset += buffer.byteLength\n }\n\n return result\n}\n\nexports.coerce = function coerce(buffer) {\n if (exports.isBuffer(buffer)) return buffer\n return new Buffer(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nexports.copyBytesFrom = function copyBytesFrom(view, offset = 0, length = view.length - offset) {\n if (offset + length > view.length) {\n throw new RangeError('View length is out of range')\n }\n\n if (offset !== 0 || length !== view.length) {\n view = view.subarray(offset, offset + length)\n }\n\n return new Buffer(view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength))\n}\n\nexports.from = function from(value, encodingOrOffset, length) {\n // from(string, encoding)\n if (typeof value === 'string') return fromString(value, encodingOrOffset)\n\n // from(array)\n if (Array.isArray(value)) return fromArray(value)\n\n // from(buffer)\n if (ArrayBuffer.isView(value)) return fromBuffer(value)\n\n // from(arrayBuffer[, offset[, length]])\n return fromArrayBuffer(value, encodingOrOffset, length)\n}\n\nfunction fromString(string, encoding) {\n const codec = codecFor(encoding)\n const buffer = new Buffer(codec.byteLength(string))\n codec.write(buffer, string)\n return buffer\n}\n\nfunction fromArray(array) {\n const buffer = new Buffer(array.length)\n buffer.set(array)\n return buffer\n}\n\nfunction fromBuffer(buffer) {\n const copy = new Buffer(buffer.byteLength)\n copy.set(buffer)\n return copy\n}\n\nfunction fromArrayBuffer(arrayBuffer, offset, length) {\n return new Buffer(arrayBuffer, offset, length)\n}\n\nfunction bidirectionalIndexOf(buffer, value, offset, encoding, first) {\n if (buffer.byteLength === 0) return -1\n\n if (typeof offset === 'string') {\n encoding = offset\n offset = 0\n } else if (offset === undefined) {\n offset = first ? 0 : buffer.byteLength - 1\n } else if (offset < 0) {\n offset += buffer.byteLength\n }\n\n if (offset >= buffer.byteLength) {\n if (first) return -1\n else offset = buffer.byteLength - 1\n } else if (offset < 0) {\n if (first) offset = 0\n else return -1\n }\n\n if (typeof value === 'string') value = exports.from(value, encoding)\n\n if (value.byteLength === 0) return -1\n\n if (first) {\n let foundIndex = -1\n\n for (let i = offset; i < buffer.byteLength; i++) {\n if (buffer[i] === value[foundIndex === -1 ? 0 : i - foundIndex]) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === value.byteLength) return foundIndex\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (offset + value.byteLength > buffer.byteLength) {\n offset = buffer.byteLength - value.byteLength\n }\n\n for (let i = offset; i >= 0; i--) {\n let found = true\n\n for (let j = 0; j < value.byteLength; j++) {\n if (buffer[i + j] !== value[j]) {\n found = false\n break\n }\n }\n\n if (found) return i\n }\n }\n\n return -1\n}\n\nfunction swap(buffer, n, m) {\n const i = buffer[n]\n buffer[n] = buffer[m]\n buffer[m] = i\n}\n\nexports.atob = function atob(data) {\n return Buffer.from(data, 'base64').toString('latin1')\n}\n\nexports.btoa = function btoa(data) {\n if (typeof data !== 'string') data = String(data)\n\n return Buffer.from(data, 'latin1').toString('base64')\n}\n\nexports.transcode = function transcode(buffer, from, to) {\n return Buffer.from(buffer.toString(from), to)\n}\n\nfunction readInt48BE(view, offset) {\n const hi = view.getUint16(offset, false)\n const lo = view.getUint32(offset + 2, false)\n let value = lo + hi * 0x100000000\n if (hi & 0x8000) value -= 0x1000000000000\n return value\n}\n\nfunction readInt48LE(view, offset) {\n const lo = view.getUint32(offset, true)\n const hi = view.getUint16(offset + 4, true)\n let value = lo + hi * 0x100000000\n if (hi & 0x8000) value -= 0x1000000000000\n return value\n}\n\nfunction readInt40BE(view, offset) {\n const hi = view.getUint8(offset)\n const lo = view.getUint32(offset + 1, false)\n let value = lo + hi * 0x100000000\n if (hi & 0x80) value -= 0x10000000000\n return value\n}\n\nfunction readInt40LE(view, offset) {\n const lo = view.getUint32(offset, true)\n const hi = view.getUint8(offset + 4)\n let value = lo + hi * 0x100000000\n if (hi & 0x80) value -= 0x10000000000\n return value\n}\n\nfunction readInt24BE(view, offset) {\n const value =\n (view.getUint8(offset) << 16) | (view.getUint8(offset + 1) << 8) | view.getUint8(offset + 2)\n return value & 0x800000 ? value - 0x1000000 : value\n}\n\nfunction readInt24LE(view, offset) {\n const value =\n view.getUint8(offset) | (view.getUint8(offset + 1) << 8) | (view.getUint8(offset + 2) << 16)\n return value & 0x800000 ? value - 0x1000000 : value\n}\n\nfunction readUint48BE(view, offset) {\n const hi = view.getUint16(offset, false)\n const lo = view.getUint32(offset + 2, false)\n return lo + hi * 0x100000000\n}\n\nfunction readUint48LE(view, offset) {\n const lo = view.getUint32(offset, true)\n const hi = view.getUint16(offset + 4, true)\n return lo + hi * 0x100000000\n}\n\nfunction readUint40BE(view, offset) {\n const hi = view.getUint8(offset)\n const lo = view.getUint32(offset + 1, false)\n return lo + hi * 0x100000000\n}\n\nfunction readUint40LE(view, offset) {\n const lo = view.getUint32(offset, true)\n const hi = view.getUint8(offset + 4)\n return lo + hi * 0x100000000\n}\n\nfunction readUint24BE(view, offset) {\n return (\n (view.getUint8(offset) << 16) | (view.getUint8(offset + 1) << 8) | view.getUint8(offset + 2)\n )\n}\n\nfunction readUint24LE(view, offset) {\n return (\n view.getUint8(offset) | (view.getUint8(offset + 1) << 8) | (view.getUint8(offset + 2) << 16)\n )\n}\n\nfunction writeInt48BE(value, view, offset) {\n if (value < 0) value += 0x1000000000000\n const hi = Math.floor(value / 0x100000000)\n const lo = value >>> 0\n view.setUint16(offset, hi, false)\n view.setUint32(offset + 2, lo, false)\n return offset + 6\n}\n\nfunction writeInt48LE(value, view, offset) {\n if (value < 0) value += 0x1000000000000\n const hi = Math.floor(value / 0x100000000)\n const lo = value >>> 0\n view.setUint32(offset, lo, true)\n view.setUint16(offset + 4, hi, true)\n return offset + 6\n}\n\nfunction writeInt40BE(value, view, offset) {\n if (value < 0) value += 0x10000000000\n const hi = Math.floor(value / 0x100000000)\n const lo = value >>> 0\n view.setUint8(offset, hi)\n view.setUint32(offset + 1, lo, false)\n return offset + 5\n}\n\nfunction writeInt40LE(value, view, offset) {\n if (value < 0) value += 0x10000000000\n const hi = Math.floor(value / 0x100000000)\n const lo = value >>> 0\n view.setUint32(offset, lo, true)\n view.setUint8(offset + 4, hi)\n return offset + 5\n}\n\nfunction writeInt24BE(value, view, offset) {\n if (value < 0) value += 0x1000000\n view.setUint8(offset, (value >> 16) & 0xff)\n view.setUint8(offset + 1, (value >> 8) & 0xff)\n view.setUint8(offset + 2, value & 0xff)\n return offset + 3\n}\n\nfunction writeInt24LE(value, view, offset) {\n if (value < 0) value += 0x1000000\n view.setUint8(offset, value & 0xff)\n view.setUint8(offset + 1, (value >> 8) & 0xff)\n view.setUint8(offset + 2, (value >> 16) & 0xff)\n return offset + 3\n}\n\nfunction writeUint48BE(value, view, offset) {\n const hi = Math.floor(value / 0x100000000)\n const lo = value >>> 0\n view.setUint16(offset, hi, false)\n view.setUint32(offset + 2, lo, false)\n return offset + 6\n}\n\nfunction writeUint48LE(value, view, offset) {\n const hi = Math.floor(value / 0x100000000)\n const lo = value >>> 0\n view.setUint32(offset, lo, true)\n view.setUint16(offset + 4, hi, true)\n return offset + 6\n}\n\nfunction writeUint40BE(value, view, offset) {\n const hi = Math.floor(value / 0x100000000)\n const lo = value >>> 0\n view.setUint8(offset, hi)\n view.setUint32(offset + 1, lo, false)\n return offset + 5\n}\n\nfunction writeUint40LE(value, view, offset) {\n const hi = Math.floor(value / 0x100000000)\n const lo = value >>> 0\n view.setUint32(offset, lo, true)\n view.setUint8(offset + 4, hi)\n return offset + 5\n}\n\nfunction writeUint24BE(value, view, offset) {\n view.setUint8(offset, (value >> 16) & 0xff)\n view.setUint8(offset + 1, (value >> 8) & 0xff)\n view.setUint8(offset + 2, value & 0xff)\n return offset + 3\n}\n\nfunction writeUint24LE(value, view, offset) {\n view.setUint8(offset, value & 0xff)\n view.setUint8(offset + 1, (value >> 8) & 0xff)\n view.setUint8(offset + 2, (value >> 16) & 0xff)\n return offset + 3\n}\nconst binding = require('../binding')\n\nexports.byteLength = function byteLength(string) {\n return string.length\n}\n\nexports.toString = function toString(buffer) {\n const len = buffer.byteLength\n\n let result = ''\n\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buffer[i] & 0x7f)\n }\n\n return result\n}\n\nexports.write = function write(buffer, string) {\n const len = buffer.byteLength\n\n for (let i = 0; i < len; i++) {\n buffer[i] = string.charCodeAt(i)\n }\n\n return len\n}\n\nexports.validate = function validate(buffer) {\n return binding.validateAscii(buffer.buffer, buffer.byteLength)\n}\nconst binding = require('../binding')\n\nexports.byteLength = function byteLength(string) {\n let len = string.length\n\n if (string.charCodeAt(len - 1) === 0x3d) len--\n if (len > 1 && string.charCodeAt(len - 1) === 0x3d) len--\n\n return (len * 3) >>> 2\n}\n\nexports.toString = function toString(buffer) {\n return binding.toStringBase64(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nexports.write = function write(buffer, string) {\n return binding.writeBase64(buffer.buffer, buffer.byteOffset, buffer.byteLength, string)\n}\nconst binding = require('../binding')\n\nexports.byteLength = function byteLength(string) {\n let len = string.length\n\n if (string.charCodeAt(len - 1) === 0x3d) len--\n if (len > 1 && string.charCodeAt(len - 1) === 0x3d) len--\n\n return (len * 3) >>> 2\n}\n\nexports.toString = function toString(buffer) {\n return binding.toStringBase64URL(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nexports.write = function write(buffer, string) {\n return binding.writeBase64(buffer.buffer, buffer.byteOffset, buffer.byteLength, string)\n}\nconst binding = require('../binding')\n\nmodule.exports = binding.constants\nconst binding = require('../binding')\n\nexports.byteLength = function byteLength(string) {\n return string.length >>> 1\n}\n\nexports.toString = function toString(buffer) {\n return binding.toStringHex(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nexports.write = function write(buffer, string) {\n return binding.writeHex(buffer.buffer, buffer.byteOffset, buffer.byteLength, string)\n}\nconst binding = require('../binding')\n\nexports.byteLength = function byteLength(string) {\n return string.length\n}\n\nexports.toString = function toString(buffer) {\n return binding.toStringLatin1(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nexports.write = function write(buffer, string) {\n return binding.writeLatin1(buffer.buffer, buffer.byteOffset, buffer.byteLength, string)\n}\nconst binding = require('../binding')\n\nexports.byteLength = function byteLength(string) {\n return string.length * 2\n}\n\nexports.toString = function toString(buffer) {\n return binding.toStringUTF16LE(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nexports.write = function write(buffer, string) {\n return binding.writeUTF16LE(buffer.buffer, buffer.byteOffset, buffer.byteLength, string)\n}\nconst binding = require('../binding')\n\nexports.byteLength = function byteLength(string) {\n return binding.byteLengthUTF8(string)\n}\n\nexports.toString = function toString(buffer) {\n return binding.toStringUTF8(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nexports.write = function write(buffer, string) {\n return binding.writeUTF8(buffer.buffer, buffer.byteOffset, buffer.byteLength, string)\n}\n\nexports.validate = function validate(buffer) {\n return binding.validateUTF8(buffer.buffer, buffer.byteLength)\n}\n{\n \"name\": \"bare-buffer\",\n \"version\": \"3.6.2\",\n \"description\": \"Native buffers for JavaScript\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./global\": {\n \"types\": \"./global.d.ts\",\n \"default\": \"./global.js\"\n },\n \"./constants\": {\n \"types\": \"./lib/constants.d.ts\",\n \"default\": \"./lib/constants.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"global.js\",\n \"global.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-buffer.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-buffer/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-buffer#readme\",\n \"engines\": {\n \"bare\": \">=1.20.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.1.1\",\n \"cmake-bare\": \"^1.1.6\",\n \"cmake-fetch\": \"^1.0.0\",\n \"lunte\": \"^1.8.0\",\n \"prettier\": \"^3.3.3\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nmodule.exports = require.addon()\nconst constants = require('./lib/constants')\nconst Hash = require('./lib/hash')\nconst Hmac = require('./lib/hmac')\nconst { Cipheriv, Decipheriv } = require('./lib/cipher')\nconst { randomBytes, randomFill, randomUUID } = require('./lib/random')\nconst pbkdf2 = require('./lib/pbkdf2')\nconst { generateKeyPair } = require('./lib/key')\nconst { sign, verify } = require('./lib/signature')\nconst { timingSafeEqual } = require('./lib/timing')\n\nexports.constants = constants\n\nexports.Hash = Hash\n\nexports.createHash = function createHash(algorithm, opts) {\n return new Hash(algorithm, opts)\n}\n\nexports.Hmac = Hmac\n\nexports.createHmac = function createHmac(algorithm, key, opts) {\n return new Hmac(algorithm, key, opts)\n}\n\nexports.Cipheriv = Cipheriv\n\nexports.createCipheriv = function createCipheriv(algorithm, key, iv, opts) {\n return new Cipheriv(algorithm, key, iv, opts)\n}\n\nexports.Decipheriv = Decipheriv\n\nexports.createDecipheriv = function createDecipheriv(algorithm, key, iv, opts) {\n return new Decipheriv(algorithm, key, iv, opts)\n}\n\nexports.randomBytes = randomBytes\n\nexports.randomFill = randomFill\n\n// For Node.js compatibility\nexports.randomFillSync = function randomFillSync(buffer, offset, size) {\n return exports.randomFill(buffer, offset, size)\n}\n\nexports.randomUUID = randomUUID\n\nexports.pbkdf2 = pbkdf2\n\n// For Node.js compatibility\nexports.pbkdf2Sync = function pbkdf2Sync(password, salt, iterations, keylen, digest) {\n return exports.pbkdf2(password, salt, iterations, keylen, digest)\n}\n\nexports.generateKeyPair = generateKeyPair\n\nexports.sign = sign\n\nexports.verify = verify\n\nexports.timingSafeEqual = timingSafeEqual\n\n// For Node.js compatibility\nexports.webcrypto = require('./web')\nconst { Transform } = require('bare-stream')\nconst assert = require('bare-assert')\nconst binding = require('../binding')\nconst constants = require('./constants')\n\nconst {\n cipher: {\n AES128ECB,\n AES128CBC,\n AES128CTR,\n AES128OFB,\n AES256ECB,\n AES256CBC,\n AES256CTR,\n AES256OFB,\n AES128GCM,\n AES256GCM,\n CHACHA20POLY1305,\n XCHACHA20POLY1305\n }\n} = constants\n\nclass CryptoCipher {\n constructor(algorithm, key, iv, encrypt, opts = {}) {\n const { encoding = 'utf8' } = opts\n\n if (typeof key === 'string') key = Buffer.from(key, encoding)\n if (typeof iv === 'string') iv = Buffer.from(iv, encoding)\n\n assert(ArrayBuffer.isView(key))\n assert(ArrayBuffer.isView(iv))\n\n if (key.byteLength !== binding.cipherKeyLength(algorithm)) {\n throw new RangeError('Invalid key length')\n }\n\n if (iv.byteLength !== binding.cipherIVLength(algorithm)) {\n throw new RangeError('Invalid iv length')\n }\n\n this._finalized = false\n\n binding.cipherInit(\n this,\n algorithm,\n key.buffer,\n key.byteOffset,\n key.byteLength,\n iv.buffer,\n iv.byteOffset,\n iv.byteLength,\n encrypt\n )\n }\n\n update(data, inputEncoding = 'utf8', outputEncoding) {\n if (this._finalized) {\n throw new Error('Cipher has already been finalized')\n }\n\n if (typeof data === 'string') data = Buffer.from(data, inputEncoding)\n\n assert(ArrayBuffer.isView(data))\n\n const out = new ArrayBuffer(data.byteLength + binding.cipherBlockSize(this))\n\n const written = binding.cipherUpdate(this, data.buffer, data.byteOffset, data.byteLength, out)\n\n const result = Buffer.from(out, 0, written)\n\n return outputEncoding ? result.toString(outputEncoding) : result\n }\n\n final(outputEncoding) {\n if (this._finalized) {\n throw new Error('Cipher has already been finalized')\n }\n\n const out = new ArrayBuffer(binding.cipherBlockSize(this))\n\n const written = binding.cipherFinal(this, out)\n\n this._finalized = true\n\n const result = Buffer.from(out, 0, written)\n\n return outputEncoding ? result.toString(outputEncoding) : result\n }\n\n setAutoPadding(pad) {\n if (this._finalized) {\n throw new Error('Cipher has already been finalized')\n }\n\n binding.cipherSetPadding(this, pad)\n }\n}\n\nclass CryptoAuthenticatedCipher {\n constructor(algorithm, key, nonce, opts = {}) {\n const { encoding = 'utf8', authTagLength = 16 } = opts\n\n if (typeof key === 'string') key = Buffer.from(key, encoding)\n if (typeof nonce === 'string') nonce = Buffer.from(nonce, encoding)\n\n assert(ArrayBuffer.isView(key))\n assert(ArrayBuffer.isView(nonce))\n\n if (key.byteLength !== binding.aeadKeyLength(algorithm)) {\n throw new RangeError('Invalid key length')\n }\n\n if (nonce.byteLength !== binding.aeadNonceLength(algorithm)) {\n throw new RangeError('Invalid nonce length')\n }\n\n if (authTagLength !== 12 && authTagLength !== 14 && authTagLength !== 16) {\n throw new RangeError('Invalid authentication tag length')\n }\n\n this._buffer = []\n this._nonce = nonce\n this._authTag = null\n this._authTagLength = authTagLength\n this._additionalData = null\n this._finalized = false\n\n binding.aeadInit(this, algorithm, key.buffer, key.byteOffset, key.byteLength, authTagLength)\n }\n\n update(data, inputEncoding = 'utf8', outputEncoding) {\n if (typeof data === 'string') data = Buffer.from(data, inputEncoding)\n\n assert(ArrayBuffer.isView(data))\n\n this._buffer.push(data)\n\n return outputEncoding ? '' : Buffer.alloc(0)\n }\n\n setAAD(buffer, opts = {}) {\n const { encoding = 'utf8' } = opts\n\n if (typeof buffer === 'string') buffer = Buffer.from(buffer, encoding)\n\n assert(ArrayBuffer.isView(buffer))\n\n this._additionalData = buffer\n }\n\n getAuthTag() {\n return this._authTag\n }\n\n setAuthTag(authTag, encoding) {\n if (typeof authTag === 'string') authTag = Buffer.from(authTag, encoding)\n\n assert(ArrayBuffer.isView(authTag))\n\n this._authTag = authTag\n }\n}\n\nclass CryptoAuthenticatedSeal extends CryptoAuthenticatedCipher {\n final(outputEncoding) {\n if (this._finalized) {\n throw new Error('Cipher has already been finalized')\n }\n\n const data = this._buffer.length === 1 ? this._buffer[0] : Buffer.concat(this._buffer)\n\n const nonce = this._nonce\n const ad = this._additionalData || Buffer.alloc(0)\n\n const out = new ArrayBuffer(data.byteLength + binding.aeadMaxOverhead(this))\n\n const written = binding.aeadSeal(\n this,\n data.buffer,\n data.byteOffset,\n data.byteLength,\n nonce.buffer,\n nonce.byteOffset,\n nonce.byteLength,\n ad.buffer,\n ad.byteOffset,\n ad.byteLength,\n out\n )\n\n this._finalized = true\n\n const cipherLength = written - this._authTagLength\n\n this._authTag = Buffer.from(out, cipherLength)\n\n const result = Buffer.from(out, 0, cipherLength)\n\n return outputEncoding ? result.toString(outputEncoding) : result\n }\n}\n\nclass CryptoAuthenticatedOpen extends CryptoAuthenticatedCipher {\n final(outputEncoding) {\n if (this._finalized) {\n throw new Error('Decipher has already been finalized')\n }\n\n this._buffer.push(this._authTag)\n\n const data = Buffer.concat(this._buffer)\n\n const nonce = this._nonce\n const ad = this._additionalData || Buffer.alloc(0)\n\n const out = new ArrayBuffer(data.byteLength)\n\n const written = binding.aeadOpen(\n this,\n data.buffer,\n data.byteOffset,\n data.byteLength,\n nonce.buffer,\n nonce.byteOffset,\n nonce.byteLength,\n ad.buffer,\n ad.byteOffset,\n ad.byteLength,\n out\n )\n\n this._finalized = true\n\n const result = Buffer.from(out, 0, written)\n\n return outputEncoding ? result.toString(outputEncoding) : result\n }\n}\n\nexports.Cipheriv = class CryptoCipheriv extends Transform {\n constructor(algorithm, key, iv, opts = {}) {\n super(opts)\n\n algorithm = constants.toCipher(algorithm)\n\n switch (algorithm) {\n case AES128ECB:\n case AES128CBC:\n case AES128CTR:\n case AES128OFB:\n case AES256ECB:\n case AES256CBC:\n case AES256CTR:\n case AES256OFB:\n this._cipher = new CryptoCipher(algorithm, key, iv, true, opts)\n break\n\n case AES128GCM:\n case AES256GCM:\n case CHACHA20POLY1305:\n case XCHACHA20POLY1305:\n this._cipher = new CryptoAuthenticatedSeal(algorithm, key, iv, opts)\n break\n }\n }\n\n update(data, inputEncoding, outputEncoding) {\n return this._cipher.update(data, inputEncoding, outputEncoding)\n }\n\n final(outputEncoding) {\n return this._cipher.final(outputEncoding)\n }\n\n setAutoPadding(pad) {\n this._cipher.setAutoPadding(pad)\n\n return this\n }\n\n setAAD(buffer, opts) {\n this._cipher.setAAD(buffer, opts)\n\n return this\n }\n\n getAuthTag() {\n return this._cipher.getAuthTag()\n }\n\n _transform(data, encoding, cb) {\n this.push(this.update(data))\n\n cb(null)\n }\n\n _flush(cb) {\n this.push(this.final())\n\n cb(null)\n }\n}\n\nexports.Decipheriv = class CryptoDeipheriv extends Transform {\n constructor(algorithm, key, iv, opts = {}) {\n super(opts)\n\n algorithm = constants.toCipher(algorithm)\n\n switch (algorithm) {\n case AES128ECB:\n case AES128CBC:\n case AES128CTR:\n case AES128OFB:\n case AES256ECB:\n case AES256CBC:\n case AES256CTR:\n case AES256OFB:\n this._cipher = new CryptoCipher(algorithm, key, iv, false, opts)\n break\n\n case AES128GCM:\n case AES256GCM:\n case CHACHA20POLY1305:\n case XCHACHA20POLY1305:\n this._cipher = new CryptoAuthenticatedOpen(algorithm, key, iv, opts)\n break\n }\n }\n\n update(data, inputEncoding, outputEncoding) {\n return this._cipher.update(data, inputEncoding, outputEncoding)\n }\n\n final(outputEncoding) {\n return this._cipher.final(outputEncoding)\n }\n\n setAutoPadding(pad) {\n this._cipher.setAutoPadding(pad)\n\n return this\n }\n\n setAAD(buffer, opts) {\n this._cipher.setAAD(buffer, opts)\n\n return this\n }\n\n setAuthTag(authTag, encoding) {\n this._cipher.setAuthTag(authTag, encoding)\n\n return this\n }\n\n _transform(data, encoding, cb) {\n this.push(this.update(data))\n\n cb(null)\n }\n\n _flush(cb) {\n this.push(this.final())\n\n cb(null)\n }\n}\nconst { fail } = require('bare-assert')\nconst binding = require('../binding')\nconst errors = require('./errors')\n\nmodule.exports = exports = {\n hash: {\n MD5: binding.MD5,\n SHA1: binding.SHA1,\n SHA256: binding.SHA256,\n SHA384: binding.SHA384,\n SHA512: binding.SHA512,\n BLAKE2B256: binding.BLAKE2B256,\n RIPEMD160: binding.RIPEMD160\n },\n signature: {\n ED25519: binding.ED25519\n },\n cipher: {\n AES128ECB: binding.AES128ECB,\n AES128CBC: binding.AES128CBC,\n AES128CTR: binding.AES128CTR,\n AES128OFB: binding.AES128OFB,\n AES256ECB: binding.AES256ECB,\n AES256CBC: binding.AES256CBC,\n AES256CTR: binding.AES256CTR,\n AES256OFB: binding.AES256OFB,\n AES128GCM: binding.AES128GCM,\n AES256GCM: binding.AES256GCM,\n CHACHA20POLY1305: binding.CHACHA20POLY1305,\n XCHACHA20POLY1305: binding.XCHACHA20POLY1305\n },\n keyType: {\n ED25519: binding.ED25519\n }\n}\n\nexports.toHash = function toHash(hash) {\n if (typeof hash === 'number' && !isNaN(hash)) return hash\n\n if (typeof hash === 'string') {\n hash = hash.replace(/-/g, '')\n\n if (hash in exports.hash === false) {\n hash = hash.toUpperCase()\n\n if (hash in exports.hash === false) {\n throw errors.UNKNOWN_HASH(`Unknown hash '${hash}'`)\n }\n }\n\n return exports.hash[hash]\n }\n\n fail(`Hash must be a number or string. Received ${isNaN(hash) ? 'NaN' : typeof hash} (${hash})`)\n}\n\nexports.toCipher = function toCiper(cipher) {\n if (typeof cipher === 'number' && !isNaN(cipher)) return cipher\n\n if (typeof cipher === 'string') {\n cipher = cipher.replace(/-/g, '')\n\n if (cipher in exports.cipher === false) {\n cipher = cipher.toUpperCase()\n\n if (cipher in exports.cipher === false) {\n throw errors.UNKNOWN_CIPHER(`Unknown cipher '${cipher}'`)\n }\n }\n\n return exports.cipher[cipher]\n }\n\n fail(\n `Cipher must be a number or string. Received ${isNaN(cipher) ? 'NaN' : typeof cipher} (${cipher})`\n )\n}\n\nexports.toKeyType = function toKeyType(type) {\n if (typeof type === 'number' && !isNaN(type)) return type\n\n if (typeof type === 'string') {\n type = type.replace(/-/g, '')\n\n if (type in exports.keyType === false) {\n type = type.toUpperCase()\n\n if (type in exports.keyType === false) {\n throw errors.UNKNOWN_KEY_TYPE(`Unknown key type '${type}'`)\n }\n }\n\n return exports.keyType[type]\n }\n\n fail(\n `Key type must be a number or string. Received ${isNaN(type) ? 'NaN' : typeof type} (${type})`\n )\n}\nmodule.exports = class CryptoError extends Error {\n constructor(msg, fn = CryptoError, code = fn.name) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'CryptoError'\n }\n\n static UNKNOWN_HASH(msg) {\n return new CryptoError(msg, CryptoError.UNKNOWN_HASH)\n }\n\n static UNKNOWN_CIPHER(msg) {\n return new CryptoError(msg, CryptoError.UNKNOWN_CIPHER)\n }\n\n static UNKNOWN_KEY_TYPE(msg) {\n return new CryptoError(msg, CryptoError.UNKNOWN_KEY_TYPE)\n }\n\n static INVALID_ACCESS(msg) {\n return new CryptoError(msg, CryptoError.INVALID_ACCESS)\n }\n\n static INVALID_DATA(msg) {\n return new CryptoError(msg, CryptoError.INVALID_DATA)\n }\n\n static OPERATION_ERROR(msg) {\n return new CryptoError(msg, CryptoError.OPERATION_ERROR)\n }\n\n static NOT_SUPPORTED(msg) {\n return new CryptoError(msg, CryptoError.NOT_SUPPORTED)\n }\n}\nconst { Transform } = require('bare-stream')\nconst assert = require('bare-assert')\nconst binding = require('../binding')\nconst constants = require('./constants')\n\nconst {\n hash: { RIPEMD160 }\n} = constants\n\nclass CryptoDigest {\n constructor(algorithm) {\n this._handle = binding.digestInit(algorithm)\n }\n\n update(data) {\n if (this._handle === null) {\n throw new Error('Digest has already been finalized')\n }\n\n binding.digestUpdate(this._handle, data.buffer, data.byteOffset, data.byteLength)\n }\n\n final() {\n if (this._handle === null) {\n throw new Error('Digest has already been finalized')\n }\n\n const result = Buffer.from(binding.digestFinal(this._handle))\n this._handle = null\n return result\n }\n}\n\nclass CryptoRIPEMD160Digest {\n constructor() {\n this._handle = binding.ripemd160Init()\n }\n\n update(data) {\n if (this._handle === null) {\n throw new Error('Digest has already been finalized')\n }\n\n binding.ripemd160Update(this._handle, data.buffer, data.byteOffset, data.byteLength)\n }\n\n final() {\n if (this._handle === null) {\n throw new Error('Digest has already been finalized')\n }\n\n const result = Buffer.from(binding.ripemd160Final(this._handle))\n this._handle = null\n return result\n }\n}\n\nmodule.exports = class CryptoHash extends Transform {\n constructor(algorithm, opts = {}) {\n super(opts)\n\n algorithm = constants.toHash(algorithm)\n\n switch (algorithm) {\n case RIPEMD160:\n this._digest = new CryptoRIPEMD160Digest()\n break\n\n default:\n this._digest = new CryptoDigest(algorithm)\n break\n }\n }\n\n update(data, encoding = 'utf8') {\n if (typeof data === 'string') data = Buffer.from(data, encoding)\n\n assert(ArrayBuffer.isView(data))\n\n this._digest.update(data)\n\n return this\n }\n\n digest(encoding) {\n const digest = this._digest.final()\n\n return encoding && encoding !== 'buffer' ? digest.toString(encoding) : digest\n }\n\n _transform(data, encoding, cb) {\n this.update(data)\n\n cb(null)\n }\n\n _flush(cb) {\n this.push(this.digest())\n\n cb(null)\n }\n}\nconst { Transform } = require('bare-stream')\nconst assert = require('bare-assert')\nconst binding = require('../binding')\nconst constants = require('./constants')\n\nmodule.exports = class CryptoHmac extends Transform {\n constructor(algorithm, key, opts = {}) {\n super(opts)\n\n const { encoding = 'utf8' } = opts\n\n if (typeof key === 'string') key = Buffer.from(key, encoding)\n\n assert(ArrayBuffer.isView(key))\n\n this._finalized = false\n\n binding.hmacInit(this, constants.toHash(algorithm), key.buffer, key.byteOffset, key.byteLength)\n }\n\n update(data, encoding = 'utf8') {\n if (this._finalized) {\n throw new Error('Hmac has already been finalized')\n }\n\n if (typeof data === 'string') data = Buffer.from(data, encoding)\n\n assert(ArrayBuffer.isView(data))\n\n binding.hmacUpdate(this, data.buffer, data.byteOffset, data.byteLength)\n\n return this\n }\n\n digest(encoding) {\n if (this._finalized) {\n throw new Error('Hmac has already been finalized')\n }\n\n const digest = Buffer.from(binding.hmacFinal(this))\n this._finalized = true\n\n return encoding && encoding !== 'buffer' ? digest.toString(encoding) : digest\n }\n\n _transform(data, encoding, cb) {\n this.update(data)\n\n cb(null)\n }\n\n _flush(cb) {\n this.push(this.digest())\n\n cb(null)\n }\n}\nconst binding = require('../binding')\nconst constants = require('./constants')\n\nconst {\n keyType: { ED25519 }\n} = constants\n\nclass CryptoKey {\n constructor(keyType) {\n this._keyType = keyType\n }\n\n get type() {\n throw new Error('Not implemented')\n }\n\n get destroyed() {\n return false\n }\n\n export() {\n throw new Error('Not implemented')\n }\n\n destroy() {}\n\n [Symbol.dispose]() {\n this.destroy()\n }\n}\n\nexports.Key = CryptoKey\n\nclass CryptoEd25519Key extends CryptoKey {\n constructor(key = null) {\n super(ED25519)\n\n this._destroyed = false\n\n if (key === null) {\n binding.keyInit(this, new ArrayBuffer(0), 0, 0)\n } else if (ArrayBuffer.isView(key)) {\n binding.keyInit(this, key.buffer, key.byteOffset, key.byteLength)\n } else {\n binding.keyInit(this, key, 0, key.byteLength)\n }\n }\n\n get asymmetricKeyType() {\n return 'ed25519'\n }\n\n get destroyed() {\n return this._destroyed\n }\n\n export() {\n if (this._destroyed) {\n throw new Error('Key has been destroyed')\n }\n\n return Buffer.from(binding.keyExport(this))\n }\n\n destroy() {\n if (this._destroyed) return\n\n binding.keyDestroy(this)\n\n this._destroyed = true\n }\n}\n\nclass CryptoEd25519PublicKey extends CryptoEd25519Key {\n get type() {\n return 'public'\n }\n}\n\nexports.Ed25519PublicKey = CryptoEd25519PublicKey\n\nclass CryptoEd25519PrivateKey extends CryptoEd25519Key {\n get type() {\n return 'private'\n }\n}\n\nexports.Ed25519PrivateKey = CryptoEd25519PrivateKey\n\nclass CryptoSecretKey extends CryptoKey {\n constructor(key) {\n super()\n\n this._destroyed = false\n\n if (ArrayBuffer.isView(key)) {\n binding.keyInit(this, key.buffer, key.byteOffset, key.byteLength)\n } else {\n binding.keyInit(this, key, 0, key.byteLength)\n }\n }\n\n get type() {\n return 'secret'\n }\n\n get destroyed() {\n return this._destroyed\n }\n\n export() {\n if (this._destroyed) {\n throw new Error('Key has been destroyed')\n }\n\n return Buffer.from(binding.keyExport(this))\n }\n\n destroy() {\n if (this._destroyed) return\n\n binding.keyDestroy(this)\n\n this._destroyed = true\n }\n}\n\nexports.SecretKey = CryptoSecretKey\n\nexports.generateKeyPair = function generateKeyPair(type) {\n type = constants.toKeyType(type)\n\n switch (type) {\n case ED25519: {\n const publicKey = new CryptoEd25519PublicKey()\n const privateKey = new CryptoEd25519PrivateKey()\n\n binding.ed25519GenerateKeypair(publicKey, privateKey)\n\n return { publicKey, privateKey }\n }\n }\n}\nconst assert = require('bare-assert')\nconst binding = require('../binding')\nconst constants = require('./constants')\n\nmodule.exports = function pbkdf2(password, salt, iterations, keylen, digest, cb) {\n assert(typeof iterations === 'number' && !isNaN(iterations))\n\n if (iterations < 1 || iterations > 0xffffffff) {\n throw new RangeError('Invalid iterations')\n }\n\n assert(typeof keylen === 'number' && !isNaN(keylen))\n\n if (keylen < 1 || keylen > 0x7fffffff) {\n throw new RangeError('Invalid key length')\n }\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (typeof salt === 'string') salt = Buffer.from(salt)\n\n assert(ArrayBuffer.isView(password))\n assert(ArrayBuffer.isView(salt))\n\n const buffer = Buffer.from(\n binding.pbkdf2(\n password.buffer,\n password.byteOffset,\n password.byteLength,\n salt.buffer,\n salt.byteOffset,\n salt.byteLength,\n iterations,\n constants.toHash(digest),\n keylen\n )\n )\n\n if (cb) queueMicrotask(() => cb(null, buffer))\n else return buffer\n}\nconst assert = require('bare-assert')\nconst binding = require('../binding')\n\nexports.randomBytes = function randomBytes(size, cb) {\n assert(typeof size === 'number' && !isNaN(size))\n\n const buffer = Buffer.allocUnsafe(size)\n exports.randomFill(buffer)\n if (cb) queueMicrotask(() => cb(null, buffer))\n else return buffer\n}\n\nexports.randomFill = function randomFill(buffer, offset, size, cb) {\n if (typeof offset === 'function') {\n cb = offset\n offset = undefined\n } else if (typeof size === 'function') {\n cb = size\n size = undefined\n }\n\n assert(buffer instanceof ArrayBuffer || ArrayBuffer.isView(buffer))\n assert(size === undefined || (typeof size === 'number' && !isNaN(size)))\n assert(offset === undefined || (typeof offset === 'number' && !isNaN(offset)))\n\n const elementSize = buffer.BYTES_PER_ELEMENT || 1\n\n if (offset === undefined) offset = 0\n else offset *= elementSize\n\n if (size === undefined) size = buffer.byteLength - offset\n else size *= elementSize\n\n if (offset < 0 || offset > buffer.byteLength) {\n throw new RangeError('offset is out of range')\n }\n\n if (size < 0 || size > buffer.byteLength) {\n throw new RangeError('size is out of range')\n }\n\n if (offset + size > buffer.byteLength) {\n throw new RangeError('offset + size is out of range')\n }\n\n let arraybuffer\n\n if (ArrayBuffer.isView(buffer)) {\n offset += buffer.byteOffset\n arraybuffer = buffer.buffer\n } else {\n arraybuffer = buffer\n }\n\n binding.randomFill(arraybuffer, offset, size)\n\n if (cb) queueMicrotask(() => cb(null, buffer))\n else return buffer\n}\n\nexports.randomUUID = function randomUUID() {\n const uuid = exports.randomBytes(16)\n\n uuid[6] = (uuid[6] & 0x0f) | 0x40\n uuid[8] = (uuid[8] & 0x3f) | 0x80\n\n return (\n uuid.subarray(0, 4).toString('hex') +\n '-' +\n uuid.subarray(4, 6).toString('hex') +\n '-' +\n uuid.subarray(6, 8).toString('hex') +\n '-' +\n uuid.subarray(8, 10).toString('hex') +\n '-' +\n uuid.subarray(10, 16).toString('hex')\n )\n}\nconst assert = require('bare-assert')\nconst binding = require('../binding')\nconst { Key } = require('./key')\nconst constants = require('./constants')\n\nconst {\n keyType: { ED25519 }\n} = constants\n\nexports.sign = function sign(algorithm, data, key) {\n assert(data instanceof ArrayBuffer || ArrayBuffer.isView(data))\n\n if (ArrayBuffer.isView(data)) {\n data = Buffer.coerce(data)\n } else {\n data = Buffer.from(data)\n }\n\n assert(key instanceof Key)\n\n switch (key._keyType) {\n case ED25519:\n return Buffer.from(binding.ed25519Sign(data.buffer, data.byteOffset, data.byteLength, key))\n }\n}\n\nexports.verify = function verify(algorithm, data, key, signature) {\n assert(data instanceof ArrayBuffer || ArrayBuffer.isView(data))\n\n if (ArrayBuffer.isView(data)) {\n data = Buffer.coerce(data)\n } else {\n data = Buffer.from(data)\n }\n\n assert(signature instanceof ArrayBuffer || ArrayBuffer.isView(signature))\n\n if (ArrayBuffer.isView(signature)) {\n signature = Buffer.coerce(signature)\n } else {\n signature = Buffer.from(signature)\n }\n\n assert(key instanceof Key)\n\n switch (key._keyType) {\n case ED25519:\n assert(signature.byteLength === 64)\n\n return binding.ed25519Verify(\n data.buffer,\n data.byteOffset,\n data.byteLength,\n signature.buffer,\n signature.byteOffset,\n key\n )\n }\n}\nconst assert = require('bare-assert')\nconst binding = require('../binding')\n\nexports.timingSafeEqual = function timingSafeEqual(a, b) {\n assert(a instanceof ArrayBuffer || ArrayBuffer.isView(a))\n assert(b instanceof ArrayBuffer || ArrayBuffer.isView(b))\n\n let aBuffer, aOffset\n if (ArrayBuffer.isView(a)) {\n aBuffer = a.buffer\n aOffset = a.byteOffset\n } else {\n aBuffer = a\n aOffset = 0\n }\n\n let bBuffer, bOffset\n if (ArrayBuffer.isView(b)) {\n bBuffer = b.buffer\n bOffset = b.byteOffset\n } else {\n bBuffer = b\n bOffset = 0\n }\n\n return binding.timingSafeEqual(aBuffer, aOffset, a.byteLength, bBuffer, bOffset, b.byteLength)\n}\nconst crypto = require('../../..')\nconst binding = require('../../../binding')\nconst errors = require('../../errors')\nconst { Ed25519PublicKey, Ed25519PrivateKey } = require('../../key')\nconst CryptoKey = require('../crypto-key')\n\n// https://w3c.github.io/webcrypto/#ed25519\n\n// https://w3c.github.io/webcrypto/#ed25519-operations-sign\nexports.sign = function sign(algorithm, key, data) {\n if (key.type !== 'private') {\n throw errors.INVALID_ACCESS('Must pass private key for Ed25519 signing')\n }\n\n const signature = crypto.sign(null, data, key._handle)\n\n return signature.buffer.slice(0, signature.byteLength)\n}\n\n// https://w3c.github.io/webcrypto/#ed25519-operations-verify\nexports.verify = function verify(algorithm, key, signature, data) {\n if (key.type !== 'public') {\n throw errors.INVALID_ACCESS('Must pass public key for Ed25519 verification')\n }\n\n return crypto.verify(null, data, key._handle, signature)\n}\n\n// https://w3c.github.io/webcrypto/#ed25519-operations-generate-key\nexports.generateKey = function generateKey(algorithm, extractable, usages) {\n for (const usage of usages) {\n if (usage !== 'sign' && usage !== 'verify') {\n throw new SyntaxError(\n `Usage '${usage}' cannot be used for the Ed25519 generateKey() operation`\n )\n }\n }\n\n const keys = crypto.generateKeyPair('ed25519')\n\n algorithm = { name: 'Ed25519' }\n\n return {\n publicKey: new CryptoKey('public', true, algorithm, ['verify'], keys.publicKey),\n privateKey: new CryptoKey('private', extractable, algorithm, ['sign'], keys.privateKey)\n }\n}\n\n// https://w3c.github.io/webcrypto/#ed25519-operations-import-key\nexports.importKey = function importKey(format, keyData, algorithm, extractable, usages) {\n switch (format) {\n case 'spki': {\n for (const usage of usages) {\n if (usage !== 'verify') {\n throw new SyntaxError(\n `Usage '${usage}' cannot be used for the Ed25519 importKey() operation`\n )\n }\n }\n\n const publicKey = new Ed25519PublicKey()\n\n binding.ed25519FromSPKI(publicKey, keyData.buffer, keyData.byteOffset, keyData.byteLength)\n\n return new CryptoKey(\n 'public',\n extractable,\n {\n name: 'Ed25519'\n },\n usages,\n publicKey\n )\n }\n case 'pkcs8': {\n for (const usage of usages) {\n if (usage !== 'sign') {\n throw new SyntaxError(\n `Usage '${usage}' cannot be used for the Ed25519 importKey() operation`\n )\n }\n }\n\n const privateKey = new Ed25519PrivateKey()\n\n binding.ed25519FromPKCS8(privateKey, keyData.buffer, keyData.byteOffset, keyData.byteLength)\n\n return new CryptoKey(\n 'private',\n extractable,\n {\n name: 'Ed25519'\n },\n usages,\n privateKey\n )\n }\n case 'raw':\n for (const usage of usages) {\n if (usage !== 'verify') {\n throw new SyntaxError(\n `Usage '${usage}' cannot be used for the Ed25519 importKey() operation`\n )\n }\n }\n\n if (keyData.byteLength * 8 !== 256) {\n throw errors.INVALID_DATA('Key must be 256 bits')\n }\n\n return new CryptoKey(\n 'public',\n extractable,\n {\n name: 'Ed25519'\n },\n usages,\n new Ed25519PublicKey(keyData.buffer)\n )\n case 'jwk': {\n const jwk = keyData\n\n if ('d' in jwk) {\n if (usages.some((usage) => usage !== 'sign')) {\n throw new SyntaxError('JWK must be valid for signing')\n }\n } else {\n if (usages.some((usage) => usage !== 'verify')) {\n throw new SyntaxError('JWK must be valid for verification')\n }\n }\n\n if (jwk.kty !== 'OKP') {\n throw errors.INVALID_DATA('JWK key must be an octet key-pair')\n }\n\n if (jwk.crv !== 'Ed25519') {\n throw errors.INVALID_DATA('JWK must use the Ed25519 curve')\n }\n\n if ('alg' in jwk && jwk.alg !== 'Ed25519' && jwk.alg !== 'EdDSA') {\n throw errors.INVALID_DATA('JWK must use the Ed25519 curve')\n }\n\n if (usages.length && 'use' in jwk && jwk.use !== 'sig') {\n throw errors.INVALID_DATA('JWK cannot be used for signatures')\n }\n\n if ('ext' in jwk && jwk.ext !== extractable && extractable) {\n throw errors.INVALID_DATA('JWK is not extractable')\n }\n\n if ('d' in jwk) {\n const key = Buffer.concat([\n Buffer.from(jwk.d, 'base64url'),\n Buffer.from(jwk.x, 'base64url')\n ])\n\n if (key.byteLength * 8 !== 512) {\n throw errors.INVALID_DATA('Key must be 512 bits')\n }\n\n const handle = new Ed25519PrivateKey(key.buffer)\n\n key.fill(0)\n\n return new CryptoKey(\n 'private',\n extractable,\n {\n name: 'Ed25519'\n },\n usages,\n handle\n )\n }\n\n const key = Buffer.from(jwk.x, 'base64url')\n\n if (key.byteLength * 8 !== 256) {\n throw errors.INVALID_DATA('Key must be 256 bits')\n }\n\n return new CryptoKey(\n 'public',\n extractable,\n {\n name: 'Ed25519'\n },\n usages,\n new Ed25519PublicKey(key.buffer)\n )\n }\n default:\n throw errors.NOT_SUPPORTED(\n `Format '${format}' cannot be used for the Ed25519 importKey() operation`\n )\n }\n}\n\n// https://w3c.github.io/webcrypto/#ed25519-operations-export-key\nexports.exportKey = function exportKey(format, key) {\n const data = key._handle\n\n switch (format) {\n case 'spki':\n if (key.type !== 'public') {\n throw errors.INVALID_ACCESS(\n `Key of type '${key.type}' cannot be used for the Ed25519 exportKey() operation`\n )\n }\n\n return binding.ed25519ToSPKI(data)\n case 'pkcs8':\n if (key.type !== 'private') {\n throw errors.INVALID_ACCESS(\n `Key of type '${key.type}' cannot be used for the Ed25519 exportKey() operation`\n )\n }\n\n return binding.ed25519ToPKCS8(data)\n case 'raw': {\n if (key.type !== 'public') {\n throw errors.INVALID_ACCESS(\n `Key of type '${key.type}' cannot be used for the Ed25519 exportKey() operation`\n )\n }\n\n return data.export().buffer\n }\n case 'jwk': {\n const buffer = data.export()\n\n if (key.type === 'private') {\n const d = buffer.subarray(0, 32).toString('base64url')\n const x = buffer.subarray(32).toString('base64url')\n\n return {\n kty: 'OKP',\n alg: 'Ed25519',\n crv: 'Ed25519',\n x,\n d,\n key_ops: key.usages,\n ext: key.extractable\n }\n }\n\n return {\n kty: 'OKP',\n alg: 'Ed25519',\n crv: 'Ed25519',\n x: buffer.toString('base64url'),\n key_ops: key.usages,\n ext: key.extractable\n }\n }\n default:\n throw errors.NOT_SUPPORTED(\n `Format '${format}' cannot be used for the HMAC exportKey() operation`\n )\n }\n}\nconst crypto = require('../../..')\nconst errors = require('../../errors')\nconst { SecretKey } = require('../../key')\nconst CryptoKey = require('../crypto-key')\n\n// https://w3c.github.io/webcrypto/#hmac\n\n// https://w3c.github.io/webcrypto/#hmac-operations-sign\nexports.sign = function sign(algorithm, key, data) {\n const material = key._handle.export()\n\n const digest = crypto.createHmac(key.algorithm.hash.name, material).update(data).digest()\n\n return digest.buffer.slice(0, digest.byteLength)\n}\n\n// https://w3c.github.io/webcrypto/#hmac-operations-verify\nexports.verify = function verify(algorithm, key, signature, data) {\n const material = key._handle.export()\n\n const digest = crypto.createHmac(key.algorithm.hash.name, material).update(data).digest()\n\n if (ArrayBuffer.isView(signature)) {\n signature = Buffer.coerce(signature)\n } else {\n signature = Buffer.from(signature)\n }\n\n if (signature.byteLength !== digest.byteLength) return false\n\n return crypto.timingSafeEqual(signature, digest)\n}\n\n// https://w3c.github.io/webcrypto/#hmac-operations-generate-key\nexports.generateKey = function generateKey(algorithm, extractable, usages) {\n for (const usage of usages) {\n if (usage !== 'sign' && usage !== 'verify') {\n throw new SyntaxError(`Usage '${usage}' cannot be used for the HMAC generateKey() operation`)\n }\n }\n\n const length = exports.getKeyLength(algorithm)\n\n let hash = algorithm.hash\n\n if (typeof hash === 'string') hash = { name: hash }\n\n const key = crypto.randomBytes(length / 8)\n\n const handle = new SecretKey(key)\n\n key.fill(0)\n\n return new CryptoKey(\n 'secret',\n extractable,\n {\n name: 'HMAC',\n length,\n hash: {\n name: hash.name.toUpperCase()\n }\n },\n usages,\n handle\n )\n}\n\n// https://w3c.github.io/webcrypto/#hmac-operations-import-key\nexports.importKey = function importKey(format, keyData, algorithm, extractable, usages) {\n for (const usage of usages) {\n if (usage !== 'sign' && usage !== 'verify') {\n throw new SyntaxError(`Invalid usage ${usage}`)\n }\n }\n\n let hash = algorithm.hash\n\n if (typeof hash === 'string') hash = { name: hash }\n\n let data\n let owned = false\n\n switch (format) {\n case 'raw':\n data = keyData\n break\n case 'jwk': {\n const jwk = keyData\n\n if (jwk.kty !== 'oct') {\n throw errors.INVALID_DATA('JWK key must be an octet sequence')\n }\n\n data = Buffer.from(jwk.k, 'base64url')\n owned = true\n\n switch (hash.name.toLowerCase()) {\n case 'sha-1':\n if (jwk.alg === 'HS1') break\n else throw errors.INVALID_DATA('Invalid JWK key algorithm')\n case 'sha-256':\n if (jwk.alg === 'HS256') break\n else throw errors.INVALID_DATA('Invalid JWK key algorithm')\n case 'sha-384':\n if (jwk.alg === 'HS384') break\n else throw errors.INVALID_DATA('Invalid JWK key algorithm')\n case 'sha-512':\n if (jwk.alg === 'HS512') break\n else throw errors.INVALID_DATA('Invalid JWK key algorithm')\n }\n\n if (usages.length && 'use' in jwk && jwk.use !== 'sign') {\n throw errors.INVALID_DATA('JWK cannot be used for signing')\n }\n\n if ('ext' in jwk && jwk.ext !== extractable && extractable) {\n throw errors.INVALID_DATA('JWK is not extractable')\n }\n break\n }\n default:\n throw errors.NOT_SUPPORTED(\n `Format '${format}' cannot be used for the HMAC importKey() operation`\n )\n }\n\n const length = data.byteLength * 8\n\n if (length === 0) {\n throw errors.INVALID_DATA('Key cannot be empty')\n }\n\n const handle = new SecretKey(data)\n\n if (owned) data.fill(0)\n\n return new CryptoKey(\n 'secret',\n extractable,\n {\n name: 'HMAC',\n length,\n hash: {\n name: hash.name.toUpperCase()\n }\n },\n usages,\n handle\n )\n}\n\n// https://w3c.github.io/webcrypto/#hmac-operations-export-key\nexports.exportKey = function exportKey(format, key) {\n const data = key._handle.export()\n\n switch (format) {\n case 'raw':\n return data.buffer.slice(0, data.byteLength)\n case 'jwk': {\n const jwk = {\n kty: 'oct',\n k: data.toString('base64url'),\n alg: null,\n key_ops: key.usages,\n ext: key.extractable\n }\n\n switch (key.algorithm.hash.name) {\n case 'SHA-1':\n jwk.alg = 'HS1'\n break\n case 'SHA-256':\n jwk.alg = 'HS256'\n break\n case 'SHA-384':\n jwk.alg = 'HS384'\n break\n case 'SHA-512':\n jwk.alg = 'HS512'\n break\n }\n\n return jwk\n }\n default:\n throw errors.NOT_SUPPORTED(\n `Format '${format}' cannot be used for the HMAC exportKey() operation`\n )\n }\n}\n\n// https://w3c.github.io/webcrypto/#hmac-operations-get-key-length\nexports.getKeyLength = function getKeyLength(algorithm) {\n const { length } = algorithm\n\n let { hash } = algorithm\n\n if (hash !== null && typeof hash === 'object') hash = hash.name\n\n if (length === undefined) {\n if (hash === 'SHA-1' || hash === 'SHA-256') return 512\n if (hash === 'SHA-384' || hash === 'SHA-512') return 1024\n\n throw errors.OPERATION_ERROR(`Invalid hash '${hash}'`)\n }\n\n if (length === 0) {\n throw errors.OPERATION_ERROR(`Invalid length ${length}`)\n }\n\n return length\n}\nconst crypto = require('../../..')\nconst errors = require('../../errors')\nconst { SecretKey } = require('../../key')\nconst CryptoKey = require('../crypto-key')\n\n// https://w3c.github.io/webcrypto/#pbkdf2\n\n// https://w3c.github.io/webcrypto/#pbkdf2-operations-derive-bits\nexports.deriveBits = function deriveBits(algorithm, key, length) {\n if (length === undefined || length % 8) {\n throw errors.OPERATION_ERROR('Length must be multiple of 8')\n }\n\n if (algorithm.iterations === 0) {\n throw errors.OPERATION_ERROR('Iterations must be non-0')\n }\n\n if (length === 0) {\n return new ArrayBuffer(0)\n }\n\n let hash = algorithm.hash\n\n if (typeof hash === 'string') hash = { name: hash }\n\n const material = key._handle.export()\n\n const result = crypto.pbkdf2(\n material,\n algorithm.salt,\n algorithm.iterations,\n length / 8,\n hash.name\n )\n\n return result.buffer\n}\n\n// https://w3c.github.io/webcrypto/#pbkdf2-operations-import-key\nexports.importKey = function importKey(format, keyData, algorithm, extractable, usages) {\n if (format !== 'raw') {\n throw errors.NOT_SUPPORTED(\n `Format '${format}' cannot be used for the PBKDF2 importKey() operation`\n )\n }\n\n for (const usage of usages) {\n if (usage !== 'deriveKey' && usage !== 'deriveBits') {\n throw new SyntaxError(`Invalid usage ${usage}`)\n }\n }\n\n if (extractable) {\n throw new SyntaxError('Extractable must be false')\n }\n\n return new CryptoKey(\n 'secret',\n extractable,\n {\n name: 'PBKDF2'\n },\n usages,\n new SecretKey(keyData)\n )\n}\nconst crypto = require('../../..')\n\n// https://w3c.github.io/webcrypto/#sha\n\n// https://w3c.github.io/webcrypto/#sha-operations-digest\nexports.digest = function digest(name, data) {\n const digest = crypto.createHash(name).update(data).digest()\n\n return digest.buffer.slice(0, digest.byteLength)\n}\n// https://w3c.github.io/webcrypto/#cryptokey-interface\nmodule.exports = class CryptoKey {\n constructor(type, extractable, algorithm, usages, handle = null) {\n this._type = type\n this._extractable = extractable\n this._algorithm = algorithm\n this._usages = usages\n this._handle = handle\n }\n\n // https://w3c.github.io/webcrypto/#dom-cryptokey-type\n get type() {\n return this._type\n }\n\n // https://w3c.github.io/webcrypto/#dom-cryptokey-extractable\n get extractable() {\n return this._extractable\n }\n\n // https://w3c.github.io/webcrypto/#dom-cryptokey-algorithm\n get algorithm() {\n return this._algorithm\n }\n\n // https://w3c.github.io/webcrypto/#dom-cryptokey-usages\n get usages() {\n return this._usages\n }\n\n get destroyed() {\n return this._handle === null\n }\n\n destroy() {\n if (this._handle === null) return\n\n this._handle.destroy()\n\n this._handle = null\n }\n\n [Symbol.dispose]() {\n this.destroy()\n }\n\n [Symbol.for('bare.inspect')]() {\n return {\n __proto__: { constructor: CryptoKey },\n\n type: this.type,\n extractable: this.extractable,\n algorithm: this.algorithm,\n usages: this.usages\n }\n }\n}\n{\n \"name\": \"bare-crypto\",\n \"version\": \"1.15.3\",\n \"description\": \"Cryptographic primitives for JavaScript\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./web\": {\n \"types\": \"./web.d.ts\",\n \"default\": \"./web.js\"\n },\n \"./global\": {\n \"types\": \"./global.d.ts\",\n \"default\": \"./global.js\"\n },\n \"./constants\": \"./lib/constants.js\",\n \"./errors\": \"./lib/errors.js\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"web.js\",\n \"web.d.ts\",\n \"global.js\",\n \"global.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-crypto.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-crypto/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-crypto#readme\",\n \"dependencies\": {\n \"bare-assert\": \"^1.2.0\",\n \"bare-stream\": \"^2.6.3\"\n },\n \"devDependencies\": {\n \"bare-buffer\": \"^3.0.1\",\n \"brittle\": \"^3.5.0\",\n \"cmake-bare\": \"^1.1.6\",\n \"cmake-fetch\": \"^1.0.0\",\n \"lunte\": \"^1.7.0\",\n \"prettier\": \"^3.4.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"peerDependencies\": {\n \"bare-buffer\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"bare-buffer\": {\n \"optional\": true\n }\n }\n}\nconst crypto = require('.')\nconst errors = require('./lib/errors')\nconst CryptoKey = require('./lib/web/crypto-key')\nconst hmac = require('./lib/web/algorithm/hmac')\nconst pbkdf2 = require('./lib/web/algorithm/pbkdf2')\nconst ed25519 = require('./lib/web/algorithm/ed25519')\nconst sha = require('./lib/web/algorithm/sha')\n\nexports.CryptoKey = CryptoKey\n\n// https://w3c.github.io/webcrypto/#Crypto-method-getRandomValues\nexports.getRandomValues = function getRandomValues(array) {\n return crypto.randomFillSync(array)\n}\n\n// https://w3c.github.io/webcrypto/#dfn-Crypto-method-randomUUID\nexports.randomUUID = crypto.randomUUID\n\n// https://w3c.github.io/webcrypto/#subtlecrypto-interface\nexports.SubtleCrypto = class SubtleCrypto {\n // https://w3c.github.io/webcrypto/#SubtleCrypto-method-generateKey\n async generateKey(algorithm, extractable, usages) {\n if (typeof algorithm === 'string') algorithm = { name: algorithm }\n\n switch (algorithm.name.toLowerCase()) {\n case 'hmac':\n return hmac.generateKey(algorithm, extractable, usages)\n case 'ed25519':\n return ed25519.generateKey(algorithm, extractable, usages)\n default:\n throw errors.NOT_SUPPORTED(\n `Algorithm '${algorithm.name}' does not support the generateKey() operation`\n )\n }\n }\n\n // https://w3c.github.io/webcrypto/#SubtleCrypto-method-importKey\n async importKey(format, keyData, algorithm, extractable, usages) {\n if (typeof algorithm === 'string') algorithm = { name: algorithm }\n\n switch (format) {\n case 'raw':\n case 'pkcs8':\n case 'spki':\n if (ArrayBuffer.isView(keyData)) {\n keyData = Buffer.from(keyData)\n } else {\n keyData = Buffer.from(keyData.slice())\n }\n break\n }\n\n switch (algorithm.name.toLowerCase()) {\n case 'hmac':\n return hmac.importKey(format, keyData, algorithm, extractable, usages)\n case 'ed25519':\n return ed25519.importKey(format, keyData, algorithm, extractable, usages)\n case 'pbkdf2':\n return pbkdf2.importKey(format, keyData, algorithm, extractable, usages)\n default:\n throw errors.NOT_SUPPORTED(\n `Algorithm '${algorithm.name}' does not support the importKey() operation`\n )\n }\n }\n\n // https://w3c.github.io/webcrypto/#SubtleCrypto-method-exportKey\n async exportKey(format, key) {\n if (!key.extractable) {\n throw errors.INVALID_ACCESS('Key is not extractable')\n }\n\n switch (key.algorithm.name.toLowerCase()) {\n case 'hmac':\n return hmac.exportKey(format, key)\n case 'ed25519':\n return ed25519.exportKey(format, key)\n default:\n throw errors.NOT_SUPPORTED(\n `Algorithm '${key.algorithm.name}' does not support the exportKey() operation`\n )\n }\n }\n\n // https://w3c.github.io/webcrypto/#SubtleCrypto-method-sign\n async sign(algorithm, key, data) {\n if (typeof algorithm === 'string') algorithm = { name: algorithm }\n\n if (algorithm.name.toLowerCase() !== key.algorithm.name.toLowerCase()) {\n throw errors.INVALID_ACCESS(`Algorithm '${algorithm.name}' does not match key'`)\n }\n\n if (!key.usages.includes('sign')) {\n throw errors.INVALID_ACCESS('Key cannot be used for signing')\n }\n\n switch (algorithm.name.toLowerCase()) {\n case 'hmac':\n return hmac.sign(algorithm, key, data)\n case 'ed25519':\n return ed25519.sign(algorithm, key, data)\n default:\n throw errors.NOT_SUPPORTED(\n `Algorithm '${algorithm.name}' does not support the sign() operation`\n )\n }\n }\n\n // https://w3c.github.io/webcrypto/#SubtleCrypto-method-verify\n async verify(algorithm, key, signature, data) {\n if (typeof algorithm === 'string') algorithm = { name: algorithm }\n\n if (algorithm.name.toLowerCase() !== key.algorithm.name.toLowerCase()) {\n throw errors.INVALID_ACCESS(`Algorithm '${algorithm.name}' does not match key'`)\n }\n\n if (!key.usages.includes('verify')) {\n throw errors.INVALID_ACCESS('Key cannot be used for verification')\n }\n\n switch (algorithm.name.toLowerCase()) {\n case 'hmac':\n return hmac.verify(algorithm, key, signature, data)\n case 'ed25519':\n return ed25519.verify(algorithm, key, signature, data)\n default:\n throw errors.NOT_SUPPORTED(\n `Algorithm '${algorithm.name}' does not support the verify() operation`\n )\n }\n }\n\n // https://w3c.github.io/webcrypto/#SubtleCrypto-method-deriveBits\n async deriveBits(algorithm, key, length) {\n if (typeof algorithm === 'string') algorithm = { name: algorithm }\n\n if (algorithm.name.toLowerCase() !== key.algorithm.name.toLowerCase()) {\n throw errors.INVALID_ACCESS(`Algorithm '${algorithm.name}' does not match key'`)\n }\n\n if (!key.usages.includes('deriveBits')) {\n throw errors.INVALID_ACCESS('Key cannot be used to derive bits')\n }\n\n switch (algorithm.name.toLowerCase()) {\n case 'pbkdf2':\n return pbkdf2.deriveBits(algorithm, key, length)\n default:\n throw errors.NOT_SUPPORTED(\n `Algorithm '${algorithm.name}' does not support the deriveBits() operation`\n )\n }\n }\n\n // https://w3c.github.io/webcrypto/#SubtleCrypto-method-deriveKey\n async deriveKey(algorithm, baseKey, derivedKeyType, extractable, usages) {\n if (typeof algorithm === 'string') algorithm = { name: algorithm }\n\n if (typeof derivedKeyType === 'string') {\n derivedKeyType = { name: derivedKeyType }\n }\n\n if (algorithm.name.toLowerCase() !== baseKey.algorithm.name.toLowerCase()) {\n throw errors.INVALID_ACCESS(`Algorithm '${algorithm.name}' does not match key'`)\n }\n\n if (!baseKey.usages.includes('deriveKey')) {\n throw errors.INVALID_ACCESS('Key cannot be used to derive key')\n }\n\n let length\n\n switch (derivedKeyType.name.toLowerCase()) {\n case 'hmac':\n length = hmac.getKeyLength(derivedKeyType)\n break\n default:\n throw errors.NOT_SUPPORTED(\n `Algorithm '${derivedKeyType.name}' does not support the getKeyLength() operation`\n )\n }\n\n let secret\n\n switch (algorithm.name.toLowerCase()) {\n case 'pbkdf2':\n secret = pbkdf2.deriveBits(algorithm, baseKey, length)\n break\n default:\n throw errors.NOT_SUPPORTED(\n `Algorithm '${algorithm.name}' does not support the deriveBits() operation`\n )\n }\n\n return this.importKey('raw', secret, derivedKeyType, extractable, usages)\n }\n\n // https://w3c.github.io/webcrypto/#SubtleCrypto-method-digest\n async digest(algorithm, data) {\n if (typeof algorithm === 'string') algorithm = { name: algorithm }\n\n switch (algorithm.name.toLowerCase()) {\n case 'sha-1':\n return sha.digest(crypto.constants.hash.SHA1, data)\n case 'sha-256':\n return sha.digest(crypto.constants.hash.SHA256, data)\n case 'sha-384':\n return sha.digest(crypto.constants.hash.SHA384, data)\n case 'sha-512':\n return sha.digest(crypto.constants.hash.SHA512, data)\n default:\n throw errors.NOT_SUPPORTED(\n `Algorithm '${algorithm.name}' does not support the digest() operation`\n )\n }\n }\n}\n\nexports.subtle = new exports.SubtleCrypto()\n\n// https://w3c.github.io/webcrypto/#crypto-interface\nexports.Crypto = class Crypto {\n get subtle() {\n return exports.subtle\n }\n\n getRandomValues(array) {\n return exports.getRandomValues(array)\n }\n\n randomUUID() {\n return exports.randomUUID()\n }\n}\nmodule.exports = require.addon()\nconst binding = require('./binding')\n\nexports.Resolver = class DNSResolver {\n constructor() {\n this._handle = binding.initResolver()\n }\n\n resolveTxt(hostname, cb = noop) {\n binding.resolveTxt(this._handle, hostname, cb, this)\n }\n\n destroy() {\n binding.destroyResolver(this._handle)\n this._handle = null\n }\n\n static global = new this()\n}\n\nfunction onlookup(err, addresses) {\n const req = this\n\n if (err) return req.cb(err, null, 0)\n\n const { address, family } = addresses[0]\n\n return req.cb(null, address, family)\n}\n\nfunction onlookupall(err, addresses) {\n const req = this\n\n if (err) return req.cb(err, null)\n\n return req.cb(null, addresses)\n}\n\nexports.lookup = function lookup(hostname, opts = {}, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n let { family = 0, all = false } = opts\n\n if (typeof family === 'string') {\n switch (family) {\n case 'IPv4':\n family = 4\n break\n case 'IPv6':\n family = 6\n break\n default:\n family = 0\n }\n }\n\n const req = {\n cb,\n handle: null\n }\n\n req.handle = binding.lookup(\n hostname,\n family || 0,\n all,\n req,\n all ? onlookupall : onlookup\n )\n}\n\nexports.resolveTxt = function resolveTxt(hostname, cb) {\n exports.Resolver.global.resolveTxt(hostname, cb)\n}\n\nfunction noop() {}\n{\n \"name\": \"bare-dns\",\n \"version\": \"2.1.4\",\n \"description\": \"Domain name resolution for JavaScript\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"test\": \"prettier . --check && bare test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-dns.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-dns/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-dns\",\n \"engines\": {\n \"bare\": \">=1.7.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"cmake-bare\": \"^1.1.6\",\n \"cmake-fetch\": \"^1.3.0\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-standard\": \"^7.0.0\"\n }\n}\nconst os = require('bare-os')\n\nmodule.exports = new Proxy(Object.create(null), {\n ownKeys(target) {\n return os.getEnvKeys()\n },\n\n get(target, property) {\n if (typeof property !== 'string') return\n\n return os.getEnv(property)\n },\n\n has(target, property) {\n if (typeof property !== 'string') return false\n\n return os.hasEnv(property)\n },\n\n set(target, property, value) {\n if (typeof property !== 'string') return\n\n const type = typeof value\n\n if (type !== 'string' && type !== 'number' && type !== 'boolean') {\n throw new Error('Environment variable must be of type string, number, or boolean')\n }\n\n value = String(value)\n\n os.setEnv(property, value)\n\n return true\n },\n\n deleteProperty(target, property) {\n if (typeof property !== 'string') return\n\n os.unsetEnv(property)\n },\n\n getOwnPropertyDescriptor(target, property) {\n return {\n value: this.get(target, property),\n enumerable: true,\n configurable: true,\n writable: true\n }\n }\n})\n{\n \"name\": \"bare-env\",\n \"version\": \"3.0.1\",\n \"description\": \"Environment variable support for JavaScript\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-env.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-env/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-env#readme\",\n \"dependencies\": {\n \"bare-os\": \"^3.0.1\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.2.1\",\n \"lunte\": \"^1.8.3\",\n \"prettier\": \"^3.4.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nconst errors = require('./lib/errors')\n\nclass EventListener {\n constructor() {\n this.list = []\n this.count = 0\n }\n\n append(ctx, name, fn, once) {\n this.count++\n ctx.emit('newListener', name, fn) // Emit BEFORE adding\n this.list.push([fn, once])\n }\n\n prepend(ctx, name, fn, once) {\n this.count++\n ctx.emit('newListener', name, fn) // Emit BEFORE adding\n this.list.unshift([fn, once])\n }\n\n remove(ctx, name, fn) {\n for (let i = 0, n = this.list.length; i < n; i++) {\n const l = this.list[i]\n\n if (l[0] === fn) {\n this.list.splice(i, 1)\n\n if (this.count === 1) delete ctx._events[name]\n\n ctx.emit('removeListener', name, fn) // Emit AFTER removing\n\n this.count--\n return\n }\n }\n }\n\n removeAll(ctx, name) {\n const list = [...this.list]\n this.list = []\n\n if (this.count === list.length) delete ctx._events[name]\n\n for (let i = list.length - 1; i >= 0; i--) {\n ctx.emit('removeListener', name, list[i][0]) // Emit AFTER removing\n }\n\n this.count -= list.length\n }\n\n emit(ctx, name, ...args) {\n const list = [...this.list]\n\n for (let i = 0, n = list.length; i < n; i++) {\n const l = list[i]\n\n if (l[1] === true) this.remove(ctx, name, l[0])\n\n Reflect.apply(l[0], ctx, args)\n }\n\n return list.length > 0\n }\n}\n\nfunction appendListener(ctx, name, fn, once) {\n if (ctx._events === undefined) ctx._events = Object.create(null)\n const e = ctx._events[name] || (ctx._events[name] = new EventListener())\n e.append(ctx, name, fn, once)\n return ctx\n}\n\nfunction prependListener(ctx, name, fn, once) {\n if (ctx._events === undefined) ctx._events = Object.create(null)\n const e = ctx._events[name] || (ctx._events[name] = new EventListener())\n e.prepend(ctx, name, fn, once)\n return ctx\n}\n\nfunction removeListener(ctx, name, fn) {\n if (ctx._events === undefined) return ctx\n const e = ctx._events[name]\n if (e !== undefined) e.remove(ctx, name, fn)\n return ctx\n}\n\nfunction throwUnhandledError(...args) {\n let err\n\n if (args.length > 0) err = args[0]\n\n if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err)\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(err, exports.prototype.emit)\n }\n\n queueMicrotask(() => {\n throw err\n })\n}\n\nmodule.exports = exports = class EventEmitter {\n constructor() {\n this._events = Object.create(null)\n }\n\n addListener(name, fn) {\n return appendListener(this, name, fn, false)\n }\n\n addOnceListener(name, fn) {\n return appendListener(this, name, fn, true)\n }\n\n prependListener(name, fn) {\n return prependListener(this, name, fn, false)\n }\n\n prependOnceListener(name, fn) {\n return prependListener(this, name, fn, true)\n }\n\n removeListener(name, fn) {\n return removeListener(this, name, fn)\n }\n\n on(name, fn) {\n return appendListener(this, name, fn, false)\n }\n\n once(name, fn) {\n return appendListener(this, name, fn, true)\n }\n\n off(name, fn) {\n return removeListener(this, name, fn)\n }\n\n emit(name, ...args) {\n if (name === 'error' && this._events !== undefined && this._events.error === undefined) {\n throwUnhandledError(...args)\n }\n\n if (this._events === undefined) return false\n const e = this._events[name]\n return e === undefined ? false : e.emit(this, name, ...args)\n }\n\n listeners(name) {\n if (this._events === undefined) return []\n const e = this._events[name]\n return e === undefined ? [] : [...e.list]\n }\n\n rawListeners(name) {\n if (this._events === undefined) return []\n const e = this._events[name]\n return e === undefined ? [] : e.list.map((l) => l[0])\n }\n\n eventNames() {\n if (this._events === undefined) return []\n return Reflect.ownKeys(this._events)\n }\n\n listenerCount(name) {\n if (this._events === undefined) return 0\n const e = this._events[name]\n return e === undefined ? 0 : e.list.length\n }\n\n getMaxListeners() {\n return EventEmitter.defaultMaxListeners\n }\n\n setMaxListeners(n) {}\n\n removeAllListeners(name) {\n if (arguments.length === 0) {\n for (const key of Reflect.ownKeys(this._events)) {\n if (key === 'removeListener') continue\n this.removeAllListeners(key)\n }\n this.removeAllListeners('removeListener')\n } else {\n const e = this._events[name]\n if (e !== undefined) e.removeAll(this, name)\n }\n return this\n }\n}\n\nexports.EventEmitter = exports\n\nexports.errors = errors\n\nexports.defaultMaxListeners = 10\n\nexports.on = function on(emitter, name, opts = {}) {\n const { signal } = opts\n\n if (signal && signal.aborted) {\n throw errors.OPERATION_ABORTED(signal.reason)\n }\n\n let error = null\n let done = false\n\n const events = []\n const promises = []\n\n if (name !== 'error') emitter.on('error', onerror)\n\n if (signal) signal.addEventListener('abort', onabort)\n\n emitter.on(name, onevent)\n\n return {\n next() {\n if (events.length) {\n return Promise.resolve({ value: events.shift(), done: false })\n }\n\n if (error) {\n const err = error\n\n error = null\n\n return Promise.reject(err)\n }\n\n if (done) return onclose()\n\n return new Promise((resolve, reject) => promises.push({ resolve, reject }))\n },\n\n return() {\n return onclose()\n },\n\n throw(err) {\n return onerror(err)\n },\n\n [Symbol.asyncIterator]() {\n return this\n }\n }\n\n function onevent(...args) {\n if (promises.length) {\n promises.shift().resolve({ value: args, done: false })\n } else {\n events.push(args)\n }\n }\n\n function onerror(err) {\n emitter.off(name, onevent).off('error', onerror)\n\n if (promises.length) {\n promises.shift().reject(err)\n } else {\n error = err\n }\n\n return Promise.resolve({ done: true })\n }\n\n function onabort() {\n signal.removeEventListener('abort', onabort)\n\n onerror(errors.OPERATION_ABORTED(signal.reason))\n }\n\n function onclose() {\n emitter.off(name, onevent)\n\n if (name !== 'error') emitter.off('error', onerror)\n\n if (signal) signal.removeEventListener('abort', onabort)\n\n done = true\n\n if (promises.length) promises.shift().resolve({ done: true })\n\n return Promise.resolve({ done: true })\n }\n}\n\nexports.once = function once(emitter, name, opts = {}) {\n const { signal } = opts\n\n if (signal && signal.aborted) {\n return Promise.reject(errors.OPERATION_ABORTED(signal.reason))\n }\n\n return new Promise((resolve, reject) => {\n if (name !== 'error') emitter.on('error', onerror)\n\n if (signal) signal.addEventListener('abort', onabort)\n\n emitter.once(name, onevent)\n\n function onevent(...args) {\n if (name !== 'error') emitter.off('error', onerror)\n\n if (signal) signal.removeEventListener('abort', onabort)\n\n resolve(args)\n }\n\n function onerror(err) {\n emitter.off(name, onevent)\n\n if (name !== 'error') emitter.off('error', onerror)\n\n reject(err)\n }\n\n function onabort() {\n signal.removeEventListener('abort', onabort)\n\n onerror(errors.OPERATION_ABORTED(signal.reason))\n }\n })\n}\n\nexports.forward = function forward(from, to, names, opts = {}) {\n if (typeof names === 'string') names = [names]\n\n const { emit = to.emit.bind(to) } = opts\n\n const listeners = names.map(\n (name) =>\n function onevent(...args) {\n emit(name, ...args)\n }\n )\n\n to.on('newListener', (name) => {\n const i = names.indexOf(name)\n\n if (i !== -1 && to.listenerCount(name) === 0) {\n from.on(name, listeners[i])\n }\n }).on('removeListener', (name) => {\n const i = names.indexOf(name)\n\n if (i !== -1 && to.listenerCount(name) === 0) {\n from.off(name, listeners[i])\n }\n })\n}\n\nexports.listenerCount = function listenerCount(emitter, name) {\n return emitter.listenerCount(name)\n}\n\nexports.getMaxListeners = function getMaxListeners(emitter) {\n if (typeof emitter.getMaxListeners === 'function') {\n return emitter.getMaxListeners()\n }\n\n return exports.defaultMaxListeners\n}\n\nexports.setMaxListeners = function setMaxListeners(n, ...emitters) {\n if (emitters.length === 0) exports.defaultMaxListeners = n\n else {\n for (const emitter of emitters) {\n if (typeof emitter.setMaxListeners === 'function') {\n emitter.setMaxListeners(n)\n }\n }\n }\n}\nmodule.exports = class EventEmitterError extends Error {\n constructor(msg, code, fn = EventEmitterError, opts) {\n super(`${code}: ${msg}`, opts)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'EventEmitterError'\n }\n\n static OPERATION_ABORTED(cause, msg = 'Operation aborted') {\n return new EventEmitterError(msg, 'OPERATION_ABORTED', EventEmitterError.OPERATION_ABORTED, {\n cause\n })\n }\n\n static UNHANDLED_ERROR(cause, msg = 'Unhandled error') {\n return new EventEmitterError(msg, 'UNHANDLED_ERROR', EventEmitterError.UNHANDLED_ERROR, {\n cause\n })\n }\n}\n{\n \"name\": \"bare-events\",\n \"version\": \"2.9.1\",\n \"description\": \"Event emitters for JavaScript\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./global\": {\n \"types\": \"./global.d.ts\",\n \"default\": \"./global.js\"\n },\n \"./web\": {\n \"types\": \"./web.d.ts\",\n \"default\": \"./web.js\"\n },\n \"./errors\": \"./lib/errors.js\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"global.js\",\n \"global.d.ts\",\n \"web.js\",\n \"web.d.ts\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:bare && npm run test:node\",\n \"test:bare\": \"brittle-bare --coverage test.js\",\n \"test:node\": \"brittle-node --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-events.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-events/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-events#readme\",\n \"devDependencies\": {\n \"bare-abort-controller\": \"^1.0.0\",\n \"brittle\": \"^3.3.2\",\n \"lunte\": \"^1.8.0\",\n \"prettier\": \"^3.4.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"uncaughts\": \"^1.1.1\"\n },\n \"peerDependencies\": {\n \"bare-abort-controller\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"bare-abort-controller\": {\n \"optional\": true\n }\n }\n}\n// Event state\nconst BUBBLES = 0x1\nconst CANCELABLE = 0x2\nconst COMPOSED = 0x4\nconst CANCELED = 0x8\nconst DISPATCH = 0x10\nconst STOP = 0x20\n\n// EventTarget state\nconst CAPTURE = 0x1\nconst PASSIVE = 0x2\nconst ONCE = 0x4\nconst REMOVED = 0x8\n\n// https://dom.spec.whatwg.org/#event\nclass Event {\n // https://dom.spec.whatwg.org/#dom-event-event\n constructor(type, options = {}) {\n const { bubbles = false, cancelable = false, composed = false } = options\n\n this._type = type\n this._target = null\n this._state = 0\n\n if (bubbles) this._state |= BUBBLES\n if (cancelable) this._state |= CANCELABLE\n if (composed) this._state |= COMPOSED\n }\n\n // https://dom.spec.whatwg.org/#dom-event-type\n get type() {\n return this._type\n }\n\n // https://dom.spec.whatwg.org/#dom-event-target\n get target() {\n return this._target\n }\n\n // https://dom.spec.whatwg.org/#dom-event-currenttarget\n get currentTarget() {\n return null\n }\n\n // https://dom.spec.whatwg.org/#dom-event-bubbles\n get bubbles() {\n return (this._state & BUBBLES) !== 0\n }\n\n // https://dom.spec.whatwg.org/#dom-event-cancelable\n get cancelable() {\n return (this._state & CANCELABLE) !== 0\n }\n\n // https://dom.spec.whatwg.org/#dom-event-composed\n get composed() {\n return (this._state & COMPOSED) !== 0\n }\n\n // https://dom.spec.whatwg.org/#dom-event-defaultprevented\n get defaultPrevented() {\n return (this._state & CANCELED) !== 0\n }\n\n // https://dom.spec.whatwg.org/#dom-event-istrusted\n get isTrusted() {\n return false\n }\n\n // https://dom.spec.whatwg.org/#dom-event-preventdefault\n preventDefault() {\n if (this._state & CANCELABLE) this._state |= CANCELED\n }\n\n // https://dom.spec.whatwg.org/#dom-event-stoppropagation\n stopPropagation() {}\n\n // https://dom.spec.whatwg.org/#dom-event-stopimmediatepropagation\n stopImmediatePropagation() {\n this._state |= STOP\n }\n\n toJSON() {\n return {\n type: this.type,\n target: this.target,\n bubbles: this.bubbles,\n cancelable: this.cancelable,\n composed: this.composed,\n defaultPrevented: this.defaultPrevented,\n isTrusted: this.isTrusted\n }\n }\n\n [Symbol.for('bare.inspect')]() {\n return {\n __proto__: { constructor: Event },\n\n type: this.type,\n target: this.target,\n bubbles: this.bubbles,\n cancelable: this.cancelable,\n composed: this.composed,\n defaultPrevented: this.defaultPrevented,\n isTrusted: this.isTrusted\n }\n }\n}\n\nexports.Event = Event\n\n// https://dom.spec.whatwg.org/#customevent\nexports.CustomEvent = class CustomEvent extends Event {\n constructor(type, options = {}) {\n super(type, options)\n\n const { detail = null } = options\n\n this._detail = detail\n }\n\n // https://dom.spec.whatwg.org/#dom-customevent-detail\n get detail() {\n return this._detail\n }\n}\n\n// https://dom.spec.whatwg.org/#eventtarget\nexports.EventTarget = class EventTarget {\n // https://dom.spec.whatwg.org/#dom-eventtarget-eventtarget\n constructor() {\n this._listeners = new Map()\n }\n\n // https://dom.spec.whatwg.org/#dom-eventtarget-addeventlistener\n addEventListener(type, callback = null, options = {}) {\n if (typeof options === 'boolean') options = { capture: options }\n\n const { capture = false, passive = false, once = false, signal = null } = options\n\n if (signal !== null && signal.aborted) return\n if (callback === null) return\n\n const listener = new EventListener(type, callback, capture, passive, once, signal)\n\n const listeners = this._listeners.get(type)\n\n if (listeners !== undefined) {\n for (const existing of listeners) {\n if (callback === existing.callback && capture === existing.capture) {\n return // Duplicate listener\n }\n }\n\n listener.link(listeners)\n } else {\n this._listeners.set(type, listener)\n }\n\n if (signal !== null) {\n const self = this\n signal.addEventListener('abort', onabort)\n\n function onabort() {\n self._unlink(type, listener)\n }\n }\n }\n\n // https://dom.spec.whatwg.org/#dom-eventtarget-removeeventlistener\n removeEventListener(type, callback = null, options = {}) {\n if (typeof options === 'boolean') options = { capture: options }\n\n const { capture = false } = options\n\n const listeners = this._listeners.get(type)\n\n if (listeners === undefined) return\n\n for (const existing of listeners) {\n if (callback === existing.callback && capture === existing.capture) {\n this._unlink(type, existing)\n return\n }\n }\n }\n\n // https://dom.spec.whatwg.org/#dom-eventtarget-dispatchevent\n dispatchEvent(event) {\n event._target = this\n event._state |= DISPATCH\n\n const listeners = this._listeners.get(event.type)\n\n try {\n if (listeners === undefined) return true\n\n const snapshot = Array.from(listeners)\n\n for (const listener of snapshot) {\n // https://dom.spec.whatwg.org/#concept-event-listener-inner-invoke\n\n if (listener.removed) continue\n\n if (listener.once) this._unlink(event.type, listener)\n\n let callback = listener.callback\n let context = this\n\n if (typeof callback === 'object') {\n context = callback\n callback = callback.handleEvent\n }\n\n Reflect.apply(callback, context, [event])\n\n if (event._state & STOP) break\n }\n\n return (event._state & CANCELED) === 0\n } finally {\n event._state &= ~DISPATCH\n event._state &= ~STOP\n }\n }\n\n toJSON() {\n return {}\n }\n\n [Symbol.for('bare.inspect')]() {\n return {\n __proto__: { constructor: EventTarget }\n }\n }\n\n _unlink(type, listener) {\n if (listener.removed) return\n\n const head = this._listeners.get(type)\n const next = listener.unlink()\n\n if (head === listener) {\n if (next === listener) this._listeners.delete(type)\n else this._listeners.set(type, next)\n }\n }\n}\n\n// https://dom.spec.whatwg.org/#concept-event-listener\nclass EventListener {\n constructor(type, callback, capture, passive, once, signal) {\n this._type = type\n this._callback = callback\n this._signal = signal\n this._state = 0\n\n if (capture) this._state |= CAPTURE\n if (passive) this._state |= PASSIVE\n if (once) this._state |= ONCE\n\n this._previous = this\n this._next = this\n }\n\n get type() {\n return this._type\n }\n\n get callback() {\n return this._callback\n }\n\n get capture() {\n return (this._state & CAPTURE) !== 0\n }\n\n get passive() {\n return (this._state & PASSIVE) !== 0\n }\n\n get once() {\n return (this._state & ONCE) !== 0\n }\n\n get removed() {\n return (this._state & REMOVED) !== 0\n }\n\n link(listener) {\n const next = this._next\n const previous = listener._previous\n\n this._next = listener\n listener._previous = this\n\n previous._next = next\n next._previous = previous\n\n return listener\n }\n\n unlink() {\n if (this.removed) return this\n\n this._state |= REMOVED\n\n const next = this._next\n const previous = this._previous\n\n this._next = this\n this._previous = this\n\n previous._next = next\n next._previous = previous\n\n return next\n }\n\n *[Symbol.iterator]() {\n let current = this\n\n while (true) {\n const next = current._next\n yield current\n if (next === this) break\n current = next\n }\n }\n\n toJSON() {\n return {\n type: this.type,\n capture: this.capture,\n passive: this.passive,\n once: this.once,\n removed: this.removed\n }\n }\n\n [Symbol.for('bare.inspect')]() {\n return {\n __proto__: { constructor: EventListener },\n\n type: this.type,\n callback: this.callback,\n capture: this.capture,\n passive: this.passive,\n once: this.once,\n removed: this.removed\n }\n }\n}\nconst http = require('bare-http1')\nconst https = require('bare-https')\nconst { now, markResourceTiming } = require('bare-performance')\nconst { finished } = require('bare-stream')\nconst { ReadableStream } = require('bare-stream/web')\nconst Request = require('./lib/request')\nconst Response = require('./lib/response')\nconst ResponseStream = require('./lib/response-stream')\nconst Headers = require('./lib/headers')\nconst errors = require('./lib/errors')\n\n// https://fetch.spec.whatwg.org/#dom-global-fetch\nmodule.exports = exports = function fetch(input, init = {}) {\n let resolve\n let reject\n\n const promise = new Promise((res, rej) => {\n resolve = res\n reject = rej\n })\n\n const response = new Response()\n\n // https://fetch.spec.whatwg.org/#concept-filtered-response-basic\n response._type = 'basic'\n\n const timingInfo = { startTime: now(), endTime: 0 }\n\n process(input)\n\n return promise\n\n async function process(input, origin = null) {\n let request\n try {\n request = new Request(input, init)\n } catch (err) {\n return reject(err)\n }\n\n if (request.signal) {\n if (request.signal.aborted) return abort(reject, request, response)\n\n request.signal.addEventListener('abort', (event) => abort(reject, request, response))\n }\n\n if (response._urls.length > 20) {\n return reject(errors.TOO_MANY_REDIRECTS('Redirect count exceeded'))\n }\n\n if (origin && !isSameOrigin(request._url, origin)) {\n request.headers.delete('authorization')\n }\n\n let protocol\n\n if (request._url.protocol === 'http:') {\n protocol = http\n } else if (request._url.protocol === 'https:') {\n protocol = https\n } else {\n return reject(errors.UNKNOWN_PROTOCOL(`Unknown protocol '${request._url.protocol}'`))\n }\n\n response._urls.push(request._url)\n\n if (!request._headers.has('user-agent')) {\n request._headers.set('user-agent', `Bare/${Bare.version.substring(1)}`)\n }\n\n const agent = request._agent || protocol.globalAgent\n\n while (agent.suspended) await agent.resumed\n\n const req = protocol.request(\n request._url,\n {\n agent,\n method: request._method,\n headers: Object.fromEntries(request._headers)\n },\n (res) => {\n req.off('close', onclose)\n\n if (request.signal && request.signal.aborted) {\n res.resume()\n\n return abort(reject, request, response)\n }\n\n if (res.headers.location && isRedirectStatus(res.statusCode)) {\n res.resume()\n\n let url\n try {\n url = new URL(res.headers.location, request._url)\n } catch (err) {\n return reject(errors.INVALID_URL('Invalid URL', err))\n }\n\n return process(url, request._url)\n }\n\n const responseStream = new ResponseStream(res)\n\n response._body = new ReadableStream(responseStream)\n response._status = res.statusCode\n response._statusText = res.statusMessage\n\n finished(responseStream, { cleanup: true }, processResponseEndOfBody)\n\n for (const [name, value] of Object.entries(res.headers)) {\n response._headers.set(name, value)\n }\n\n resolve(response)\n }\n )\n\n req.on('error', onerror).on('close', onclose)\n\n try {\n if (request._body) {\n for await (const data of request._body) req.write(data)\n }\n\n req.end()\n } catch (err) {\n req.destroy(err)\n }\n\n function processResponseEndOfBody(err) {\n if (err) return\n\n timingInfo.endTime = now()\n\n markResourceTiming(timingInfo, response._urls[0].href, 'fetch', {}, '', {}, response.status)\n }\n\n function onerror(err) {\n req.off('close', onclose)\n\n reject(errors.NETWORK_ERROR('Network error', err))\n }\n\n function onclose() {\n onerror(http.errors.CONNECTION_LOST())\n }\n }\n}\n\nexports.Request = Request\nexports.Response = Response\nexports.Headers = Headers\n\n// https://fetch.spec.whatwg.org/#redirect-status\nfunction isRedirectStatus(status) {\n return status === 301 || status === 302 || status === 303 || status === 307 || status === 308\n}\n\n// https://html.spec.whatwg.org/multipage/browsers.html#same-origin\nfunction isSameOrigin(a, b) {\n return a.protocol === b.protocol && a.host === b.host\n}\n\n// https://fetch.spec.whatwg.org/#abort-fetch\nfunction abort(reject, req, res) {\n const { reason } = req.signal\n\n if (req._body !== null) req._body.cancel(reason)\n if (res._body !== null) res._body.cancel(reason)\n\n reject(reason)\n}\nconst { ReadableStream, isReadableStream, isReadableStreamDisturbed } = require('bare-stream/web')\nconst { isURLSearchParams } = require('bare-url')\nconst { FormData, File, isFormData, isBlob } = require('bare-form-data')\nconst Headers = require('./headers')\nconst errors = require('./errors')\n\nconst empty = Buffer.from(new ArrayBuffer(0))\n\n// https://fetch.spec.whatwg.org/#body-mixin\nmodule.exports = exports = class Body {\n constructor(body = null, type = null) {\n if (isReadableStream(body)) {\n if (isReadableStreamDisturbed(body) || body.locked) {\n throw errors.BODY_UNUSABLE('Body has already been consumed')\n }\n } else {\n if (typeof body === 'string') body = Buffer.from(body)\n else if (isFormData(body)) body = FormData.toBlob(body)\n else if (isURLSearchParams(body)) {\n body = body.toString()\n type = 'application/x-www-form-urlencoded;charset=UTF-8'\n }\n\n if (isBlob(body)) {\n type = body.type || null\n body = body.stream()\n } else if (body !== null) {\n if (ArrayBuffer.isView(body)) {\n body = Buffer.from(body.buffer, body.byteOffset, body.byteLength)\n } else {\n body = Buffer.from(body)\n }\n\n body = new ReadableStream({\n start(controller) {\n controller.enqueue(body)\n controller.close()\n }\n })\n }\n }\n\n this._contentType = type\n this._body = body\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-body\n get body() {\n return this._body\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-bodyused\n get bodyUsed() {\n return this._body !== null && isReadableStreamDisturbed(this._body)\n }\n\n async buffer() {\n if (this._body === null) return empty\n\n if (Body.isUnusable(this)) {\n throw errors.BODY_UNUSABLE('Body has already been consumed')\n }\n\n const chunks = []\n let length = 0\n\n for await (const chunk of this._body) {\n chunks.push(chunk)\n length += chunk.byteLength\n }\n\n const result = Buffer.from(new ArrayBuffer(length))\n let offset = 0\n\n for (const chunk of chunks) {\n result.set(chunk, offset)\n offset += chunk.byteLength\n }\n\n return result\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-bytes\n async bytes() {\n return await this.buffer()\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-arraybuffer\n async arrayBuffer() {\n return (await this.buffer()).buffer\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-text\n async text() {\n return (await this.buffer()).toString()\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-json\n async json() {\n return JSON.parse(await this.text())\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-formdata\n async formData() {\n const mimeType = getMIMEType(this)\n\n // 1.\n if (mimeType !== null && mimeType.type === 'multipart' && mimeType.subtype === 'form-data') {\n const body = await this.text()\n const boundary = mimeType.parameters.get('boundary')\n\n if (boundary === undefined) {\n throw errors.INVALID_FORM_DATA('Missing boundary parameter')\n }\n\n return parseMultipart(body, boundary)\n }\n\n // 2.\n if (\n mimeType !== null &&\n mimeType.type === 'application' &&\n mimeType.subtype === 'x-www-form-urlencoded'\n ) {\n const body = await this.text()\n const formData = new FormData()\n\n for (const [name, value] of new URLSearchParams(body)) {\n formData.append(name, value)\n }\n\n return formData\n }\n\n // 3.\n throw errors.INVALID_FORM_DATA('Could not parse content as form data')\n }\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nexports.isUnusable = function isUsable(body) {\n return body._body !== null && (isReadableStreamDisturbed(body._body) || body._body.locked)\n}\n\n// https://fetch.spec.whatwg.org/#concept-body-clone\nexports.clone = function clone(body) {\n if (body._body === null) return null\n\n const [out1, out2] = body._body.tee()\n\n body._body = out1\n\n return out2\n}\n\n// https://fetch.spec.whatwg.org/#concept-body-mime-type\nfunction getMIMEType(body) {\n const headers = body._headers\n\n if (headers === undefined) return null\n\n return Headers.extractMIMEType(headers)\n}\n\n// https://www.rfc-editor.org/rfc/rfc7578\n// https://www.rfc-editor.org/rfc/rfc2046#section-5.1\nfunction parseMultipart(input, boundary) {\n const formData = new FormData()\n\n const delimiter = `\\r\\n--${boundary}`\n const close = `\\r\\n--${boundary}--`\n\n let start = input.indexOf(`--${boundary}`)\n if (start === -1) return formData\n\n start += `--${boundary}`.length\n\n while (true) {\n if (input.startsWith('--', start)) break\n if (input.startsWith('\\r\\n', start)) start += 2\n\n let end = input.indexOf(delimiter, start)\n if (end === -1) end = input.indexOf(close, start)\n if (end === -1) break\n\n const part = input.slice(start, end)\n\n const headerEnd = part.indexOf('\\r\\n\\r\\n')\n if (headerEnd === -1) {\n start = end + delimiter.length\n continue\n }\n\n const headerSection = part.slice(0, headerEnd)\n const body = part.slice(headerEnd + 4)\n\n const contentDisposition = { name: null, filename: null }\n let contentType = null\n\n for (const line of headerSection.split('\\r\\n')) {\n const colon = line.indexOf(':')\n if (colon === -1) continue\n\n const name = line.slice(0, colon).trim().toLowerCase()\n const value = line.slice(colon + 1).trim()\n\n if (name === 'content-disposition') {\n contentDisposition.name = getParameter(value, 'name')\n contentDisposition.filename = getParameter(value, 'filename')\n } else if (name === 'content-type') {\n contentType = value\n }\n }\n\n if (contentDisposition.name === null) {\n start = end + delimiter.length\n continue\n }\n\n if (contentDisposition.filename !== null) {\n const file = new File([body], contentDisposition.filename, {\n type: contentType || 'application/octet-stream'\n })\n\n formData.append(contentDisposition.name, file)\n } else {\n formData.append(contentDisposition.name, body)\n }\n\n start = end + delimiter.length\n }\n\n return formData\n}\n\nfunction getParameter(header, name) {\n const pattern = new RegExp(`${name}=\"([^\"]*)\"|${name}=([^;\\\\s]*)`, 'i')\n\n const match = header.match(pattern)\n if (match === null) return null\n\n return match[1] !== undefined ? match[1] : match[2]\n}\nmodule.exports = class FetchError extends Error {\n constructor(msg, fn = FetchError, code = fn.name, opts = {}) {\n if (typeof code === 'object' && code !== null) {\n opts = code\n code = fn.name\n }\n\n super(`${code}: ${msg}`, opts)\n\n this.code = code\n\n if (Error.captureStackTrace) Error.captureStackTrace(this, fn)\n }\n\n get name() {\n return 'FetchError'\n }\n\n static INVALID_URL(msg, cause) {\n return new FetchError(msg, FetchError.INVALID_URL, { cause })\n }\n\n static INVALID_REDIRECT_STATUS(msg) {\n return new FetchError(msg, FetchError.INVALID_REDIRECT_STATUS)\n }\n\n static INVALID_JSON(msg, cause) {\n return new FetchError(msg, FetchError.INVALID_JSON, { cause })\n }\n\n static NETWORK_ERROR(msg, cause) {\n return new FetchError(msg, FetchError.NETWORK_ERROR, { cause })\n }\n\n static TOO_MANY_REDIRECTS(msg) {\n return new FetchError(msg, FetchError.TOO_MANY_REDIRECTS)\n }\n\n static UNKNOWN_PROTOCOL(msg) {\n return new FetchError(msg, FetchError.UNKNOWN_PROTOCOL)\n }\n\n static BODY_UNUSABLE(msg) {\n return new FetchError(msg, FetchError.BODY_UNUSABLE)\n }\n\n static INVALID_FORM_DATA(msg) {\n return new FetchError(msg, FetchError.INVALID_FORM_DATA)\n }\n\n static INVALID_METHOD(msg) {\n return new FetchError(msg, FetchError.INVALID_METHOD)\n }\n\n static FORBIDDEN_METHOD(msg) {\n return new FetchError(msg, FetchError.FORBIDDEN_METHOD)\n }\n\n static INVALID_HEADER_NAME(msg) {\n return new FetchError(msg, FetchError.INVALID_HEADER_NAME)\n }\n\n static INVALID_HEADER_VALUE(msg) {\n return new FetchError(msg, FetchError.INVALID_HEADER_VALUE)\n }\n}\nconst MIME = require('bare-mime')\n\nconst errors = require('./errors')\n\nconst NUL = 0x00\nconst LF = 0x0a\nconst CR = 0x0d\n\n// https://www.rfc-editor.org/rfc/rfc9110.html#section-5.6.2\nconst TOKEN_BYTES = Buffer.from([\n // 0x00-0x1f (control characters) + 0x20 (space)\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n // 0x21-0x41: ! \" # $ % & ' ( ) * + , - . / 0-9 : ; < = > ? @ A\n 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1,\n // 0x42-0x62: B-Z [ \\ ] ^ _ ` a b\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,\n // 0x63-0x7f: c-z { | } ~ DEL\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0\n])\n\nfunction isTokenByte(b) {\n return b < TOKEN_BYTES.length && TOKEN_BYTES[b] === 1\n}\n\nfunction isFieldByte(b) {\n return b !== NUL && b !== LF && b !== CR\n}\n\n// https://fetch.spec.whatwg.org/#header-name\nfunction validateName(name) {\n if (name.length === 0) {\n throw errors.INVALID_HEADER_NAME(`Header name must not be empty`)\n }\n\n for (let i = 0, n = name.length; i < n; i++) {\n if (!isTokenByte(name.charCodeAt(i))) {\n throw errors.INVALID_HEADER_NAME(`Invalid header name '${name}'`)\n }\n }\n}\n\n// https://fetch.spec.whatwg.org/#header-value\nfunction validateValue(name, value) {\n for (let i = 0, n = value.length; i < n; i++) {\n if (!isFieldByte(value.charCodeAt(i))) {\n throw errors.INVALID_HEADER_VALUE(`Invalid header value for '${name}'`)\n }\n }\n}\n\n// https://fetch.spec.whatwg.org/#headers-class\nmodule.exports = exports = class Headers {\n // https://fetch.spec.whatwg.org/#dom-headers\n constructor(init) {\n this._headers = new Map()\n\n if (init) {\n for (const [key, value] of typeof init[Symbol.iterator] === 'function'\n ? init\n : Object.entries(init)) {\n this.append(key, value)\n }\n }\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-append\n append(name, value) {\n value = value.trim()\n\n validateName(name)\n validateValue(name, value)\n\n name = name.toLowerCase()\n\n let list = this._headers.get(name)\n\n if (list === undefined) {\n list = []\n this._headers.set(name, list)\n }\n\n list.push(value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-delete\n delete(name) {\n name = name.toLowerCase()\n\n this._headers.delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-get\n get(name) {\n name = name.toLowerCase()\n\n const list = this._headers.get(name)\n\n if (list === undefined) return null\n\n return list.join(', ')\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-has\n has(name) {\n name = name.toLowerCase()\n\n return this._headers.has(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-set\n set(name, value) {\n value = value.trim()\n\n validateName(name)\n validateValue(name, value)\n\n name = name.toLowerCase()\n\n this._headers.set(name, [value])\n }\n\n // https://webidl.spec.whatwg.org/#idl-iterable\n entries() {\n return this[Symbol.iterator]()\n }\n\n // https://webidl.spec.whatwg.org/#idl-iterable\n *keys() {\n for (const [name] of this) {\n yield name\n }\n }\n\n // https://webidl.spec.whatwg.org/#idl-iterable\n *values() {\n for (const [, value] of this) {\n yield value\n }\n }\n\n // https://webidl.spec.whatwg.org/#idl-iterable\n forEach(callback, thisArg) {\n for (const [name, value] of this) {\n callback.call(thisArg, value, name, this)\n }\n }\n\n *[Symbol.iterator]() {\n const names = [...this._headers.keys()].sort()\n\n for (const name of names) {\n yield [name, this.get(name)]\n }\n }\n}\n\n// https://fetch.spec.whatwg.org/#concept-header-extract-mime-type\nexports.extractMIMEType = function extractMIMEType(headers) {\n // 1.\n const contentType = headers.get('content-type')\n\n // 2.\n if (contentType === null) return null\n\n // 3.\n const values = getDecodeSplit(contentType)\n\n // 4.\n let mimeType = null\n\n // 5.\n for (const value of values) {\n const parsed = MIME.parse(value)\n\n if (parsed !== null) {\n mimeType = parsed\n }\n }\n\n // 6.\n return mimeType\n}\n\n// https://fetch.spec.whatwg.org/#concept-header-list-get-decode-split\nfunction getDecodeSplit(value) {\n const values = []\n let current = ''\n let position = 0\n\n while (position < value.length) {\n if (value[position] === '\"') {\n current += value[position++]\n\n while (position < value.length) {\n if (value[position] === '\\\\' && position + 1 < value.length) {\n current += value[position++]\n current += value[position++]\n } else if (value[position] === '\"') {\n current += value[position++]\n break\n } else {\n current += value[position++]\n }\n }\n } else if (value[position] === ',') {\n values.push(current.trim())\n current = ''\n position++\n } else {\n current += value[position++]\n }\n }\n\n values.push(current.trim())\n\n return values\n}\nconst { isURL } = require('bare-url')\nconst Body = require('./body')\nconst Headers = require('./headers')\nconst errors = require('./errors')\n\n// https://fetch.spec.whatwg.org/#request-class\nmodule.exports = class Request extends Body {\n // https://fetch.spec.whatwg.org/#dom-request\n constructor(input, init = {}) {\n let url\n try {\n if (isURL(input)) {\n url = input\n input = {}\n } else if (typeof input === 'string') {\n url = new URL(input)\n input = {}\n } else {\n url = new URL(input.url)\n }\n } catch (err) {\n throw errors.INVALID_URL('Invalid URL', err)\n }\n\n const {\n body = input.body || null,\n method = input.method || 'GET',\n headers = input.headers,\n signal = input.signal || null,\n agent = input.agent || null\n } = init\n\n super(body)\n\n this._url = url\n\n // https://fetch.spec.whatwg.org/#concept-method\n if (!/^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/.test(method)) {\n throw errors.INVALID_METHOD(`'${method}' is not a valid method`)\n }\n\n // https://fetch.spec.whatwg.org/#forbidden-method\n if (/^(connect|trace|track)$/i.test(method)) {\n throw errors.FORBIDDEN_METHOD(`'${method}' is a forbidden method`)\n }\n\n // https://fetch.spec.whatwg.org/#concept-method-normalize\n this._method = /^(delete|get|head|options|post|put)$/i.test(method)\n ? method.toUpperCase()\n : method\n this._headers = new Headers(headers)\n this._signal = signal\n this._agent = agent\n\n if (this._contentType !== null && !this._headers.has('content-type')) {\n this._headers.set('content-type', this._contentType)\n }\n }\n\n // https://fetch.spec.whatwg.org/#dom-request-url\n get url() {\n return this._url.href\n }\n\n // https://fetch.spec.whatwg.org/#dom-request-method\n get method() {\n return this._method\n }\n\n // https://fetch.spec.whatwg.org/#dom-request-headers\n get headers() {\n return this._headers\n }\n\n // https://fetch.spec.whatwg.org/#dom-request-signal\n get signal() {\n return this._signal\n }\n\n // https://fetch.spec.whatwg.org/#dom-request-clone\n clone() {\n if (Body.isUnusable(this)) throw errors.BODY_UNUSABLE('Body has already been consumed')\n\n return new Request(this, { body: Body.clone(this) })\n }\n}\nconst { Readable } = require('bare-stream')\nconst { Gunzip, Deflate } = require('bare-zlib')\n\nmodule.exports = class ResponseStream extends Readable {\n constructor(response) {\n super()\n\n this._response = response\n this._response.socket.unref()\n\n const encoding = response.headers['content-encoding']\n\n switch (encoding) {\n case 'gzip':\n this._decoder = new Gunzip()\n break\n case 'deflate':\n this._decoder = new Deflate()\n break\n default:\n this._decoder = null\n }\n }\n\n _open(cb) {\n if (this._response.socket) this._response.socket.ref()\n\n const stream = this._decoder ? this._response.pipe(this._decoder) : this._response\n\n stream\n .on('data', this._ondata.bind(this))\n .on('end', this._onend.bind(this))\n .on('error', this._onerror.bind(this))\n\n cb(null)\n }\n\n _read() {\n this._response.resume()\n }\n\n _predestroy() {\n this._response.destroy()\n }\n\n _ondata(data) {\n if (this.push(data) === false) {\n this._response.pause()\n }\n }\n\n _onend() {\n this.push(null)\n }\n\n _onerror(err) {\n this.destroy(err)\n }\n}\nconst Body = require('./body')\nconst Headers = require('./headers')\nconst errors = require('./errors')\n\n// https://fetch.spec.whatwg.org/#response-class\nmodule.exports = class Response extends Body {\n // https://fetch.spec.whatwg.org/#dom-response\n constructor(body = null, init = {}) {\n const { status = 200, statusText = '', headers } = init\n\n super(body)\n\n this._urls = []\n this._type = 'default'\n this._status = status\n this._statusText = statusText\n this._headers = new Headers(headers)\n\n if (this._contentType !== null && !this._headers.has('content-type')) {\n this._headers.set('content-type', this._contentType)\n }\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-type\n get type() {\n return this._type\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-url\n get url() {\n return this._urls.length === 0 ? null : this._urls[this._urls.length - 1].href\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-redirected\n get redirected() {\n return this._urls.length > 1\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-status\n get status() {\n return this._status\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-ok\n get ok() {\n return this._status >= 200 && this._status <= 299\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-statustext\n get statusText() {\n return this._statusText\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-headers\n get headers() {\n return this._headers\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-clone\n clone() {\n if (Body.isUnusable(this)) throw errors.BODY_UNUSABLE('Body has already been consumed')\n\n const cloned = new Response(Body.clone(this), this)\n cloned._type = this._type\n return cloned\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-error\n static error() {\n const response = new Response(null)\n\n response._type = 'error'\n response._status = 0\n response._statusText = ''\n\n return response\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-redirect\n static redirect(url, status = 302) {\n let parsed\n try {\n parsed = new URL(url)\n } catch (err) {\n throw errors.INVALID_URL('Invalid URL', err)\n }\n\n if (!isRedirectStatus(status)) {\n throw errors.INVALID_REDIRECT_STATUS(`'${status}' is not a redirect status`)\n }\n\n const response = new Response(null, { status })\n\n response._headers.set('location', parsed.href)\n\n return response\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-json\n static json(data, init = {}) {\n let body\n try {\n body = JSON.stringify(data)\n } catch (err) {\n throw errors.INVALID_JSON('Data could not be serialized to JSON', err)\n }\n\n if (body === undefined) {\n throw errors.INVALID_JSON('Data could not be serialized to JSON')\n }\n\n const response = new Response(body, init)\n\n if (!response._headers.has('content-type')) {\n response._headers.set('content-type', 'application/json')\n }\n\n return response\n }\n}\n\n// https://fetch.spec.whatwg.org/#redirect-status\nfunction isRedirectStatus(status) {\n return status === 301 || status === 302 || status === 303 || status === 307 || status === 308\n}\n{\n \"name\": \"bare-fetch\",\n \"version\": \"3.1.0\",\n \"description\": \"WHATWG Fetch implementation for Bare\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./global\": {\n \"types\": \"./global.d.ts\",\n \"default\": \"./global.js\"\n },\n \"./errors\": {\n \"types\": \"./lib/errors.d.ts\",\n \"default\": \"./lib/errors.js\"\n },\n \"./body\": {\n \"types\": \"./lib/body.d.ts\",\n \"default\": \"./lib/body.js\"\n },\n \"./request\": {\n \"types\": \"./lib/request.d.ts\",\n \"default\": \"./lib/request.js\"\n },\n \"./response\": {\n \"types\": \"./lib/response.d.ts\",\n \"default\": \"./lib/response.js\"\n },\n \"./headers\": {\n \"types\": \"./lib/headers.d.ts\",\n \"default\": \"./lib/headers.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"global.js\",\n \"global.d.ts\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-fetch.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-fetch/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-fetch#readme\",\n \"dependencies\": {\n \"bare-form-data\": \"^1.2.0\",\n \"bare-http1\": \"^4.5.2\",\n \"bare-https\": \"^3.0.0\",\n \"bare-mime\": \"^1.0.0\",\n \"bare-performance\": \"^2.1.1\",\n \"bare-stream\": \"^2.9.1\",\n \"bare-url\": \"^2.4.0\",\n \"bare-zlib\": \"^1.3.0\"\n },\n \"devDependencies\": {\n \"bare-abort-controller\": \"^1.0.1\",\n \"bare-buffer\": \"^3.0.2\",\n \"brittle\": \"^3.3.0\",\n \"listen-async\": \"^1.0.0\",\n \"lunte\": \"^1.6.0\",\n \"prettier\": \"^3.3.3\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"peerDependencies\": {\n \"bare-abort-controller\": \"*\",\n \"bare-buffer\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"bare-abort-controller\": {\n \"optional\": true\n },\n \"bare-buffer\": {\n \"optional\": true\n }\n }\n}\nconst { ReadableStream } = require('bare-stream/web')\nconst { isBuffer } = require('bare-buffer')\nconst errors = require('./lib/errors')\n\nclass FormData {\n constructor() {\n this._entries = []\n }\n\n append(name, value, filename) {\n if (typeof value !== 'string') {\n if (!isFile(value) || filename) {\n value = new File([value], filename || 'blob', { type: value.type })\n }\n }\n\n this._entries.push([name, value])\n }\n\n delete(name) {\n this._entries = this._entries.filter((entry) => entry[0] !== name)\n }\n\n get(name) {\n const entry = this._entries.find((entry) => entry[0] === name)\n\n return entry ? entry[1] : null\n }\n\n getAll(name) {\n const entries = []\n\n for (const entry of this._entries) {\n if (entry[0] === name) entries.push(entry[1])\n }\n\n return entries\n }\n\n has(name) {\n return this._entries.findIndex((entry) => entry[0] === name) !== -1\n }\n\n set(name, value, filename) {\n this.delete(name)\n this.append(name, value, filename)\n }\n\n [Symbol.iterator]() {\n return this._entries[Symbol.iterator]()\n }\n\n [Symbol.for('bare.inspect')]() {\n return {\n __proto__: { constructor: FormData },\n\n entries: this._entries\n }\n }\n}\n\nmodule.exports = exports = FormData\n\nexports.FormData = FormData\n\nfunction isFormData(value) {\n return value instanceof FormData\n}\n\nexports.isFormData = isFormData\n\nclass Blob {\n // https://w3c.github.io/FileAPI/#dom-blob-blob\n constructor(parts, options = {}) {\n const { type = '' } = options\n\n this._bytes = processBlobParts(parts)\n this._type = type\n }\n\n // https://w3c.github.io/FileAPI/#dfn-size\n get size() {\n return this._bytes.byteLength\n }\n\n // https://w3c.github.io/FileAPI/#dfn-type\n get type() {\n return this._type\n }\n\n // https://w3c.github.io/FileAPI/#stream-method-algo\n stream() {\n const bytes = this._bytes\n\n return new ReadableStream({\n start(controller) {\n controller.enqueue(bytes)\n controller.close()\n }\n })\n }\n\n async buffer() {\n return Buffer.from(this._bytes)\n }\n\n // https://w3c.github.io/FileAPI/#bytes-method-algo\n async bytes() {\n return this.buffer()\n }\n\n // https://w3c.github.io/FileAPI/#arraybuffer-method-algo\n async arrayBuffer() {\n const buffer = new ArrayBuffer(this._bytes.byteLength)\n new Uint8Array(buffer).set(this._bytes)\n return buffer\n }\n\n // https://w3c.github.io/FileAPI/#text-method-algo\n async text() {\n return this._bytes.toString()\n }\n\n [Symbol.for('bare.inspect')]() {\n return {\n __proto__: { constructor: Blob },\n\n size: this.size,\n type: this.type\n }\n }\n}\n\nexports.Blob = Blob\n\nfunction isBlob(value) {\n return value instanceof Blob\n}\n\nexports.isBlob = Blob.isBlob = isBlob\n\nclass File extends Blob {\n // https://w3c.github.io/FileAPI/#dom-file-file\n constructor(parts, name, options = {}) {\n const { lastModified = Date.now() } = options\n\n super(parts, options)\n\n this._name = name\n this._lastModified = lastModified\n }\n\n // https://w3c.github.io/FileAPI/#dfn-name\n get name() {\n return this._name\n }\n\n // https://w3c.github.io/FileAPI/#dfn-lastModified\n get lastModified() {\n return this._lastModified\n }\n\n [Symbol.for('bare.inspect')]() {\n return {\n __proto__: { constructor: File },\n\n size: this.size,\n type: this.type,\n name: this.name,\n lastModified: this.lastModified\n }\n }\n}\n\nexports.File = File\n\nfunction isFile(value) {\n return value instanceof File\n}\n\nexports.isFile = File.isFile = isFile\n\n// https://w3c.github.io/FileAPI/#process-blob-parts\nfunction processBlobParts(parts) {\n const chunks = []\n\n for (const part of parts) {\n if (typeof part === 'string') {\n const buffer = Buffer.from(part)\n if (parts.length === 1) return buffer\n chunks.push(buffer)\n } else if (isBlob(part)) {\n chunks.push(part._bytes)\n } else if (isBuffer(part)) {\n chunks.push(part)\n } else if (ArrayBuffer.isView(part)) {\n chunks.push(Buffer.from(part.buffer, part.byteOffset, part.byteLength))\n } else {\n chunks.push(Buffer.from(part))\n }\n }\n\n return Buffer.concat(chunks)\n}\n\nfunction toBlob(formData, mimeType = 'multipart/form-data') {\n switch (mimeType) {\n case 'multipart/form-data':\n return toMultipartBlob(formData)\n default:\n throw errors.INVALID_MIME_TYPE(`Invalid MIME type '${mimeType}'`)\n }\n}\n\nexports.toBlob = toBlob\n\nfunction escape(value) {\n return value.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22')\n}\n\nfunction normalizeLinefeeds(value) {\n return value.replace(/\\r?\\n|\\r/g, '\\r\\n')\n}\n\nconst linefeed = Buffer.from('\\r\\n')\n\n// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart/form-data-encoding-algorithm\nfunction toMultipartBlob(formData) {\n const boundary = Math.random().toString(16).slice(2, 18).padStart(16, '0')\n\n const prefix = `--${boundary}\\r\\nContent-Disposition: form-data`\n\n const parts = []\n\n for (const [name, value] of formData) {\n if (typeof value === 'string') {\n const chunk = Buffer.from(\n prefix +\n `; name=\"${escape(normalizeLinefeeds(name))}\"` +\n `\\r\\n\\r\\n${normalizeLinefeeds(value)}\\r\\n`\n )\n\n parts.push(chunk)\n } else {\n const chunk = Buffer.from(\n prefix +\n `; name=\"${escape(normalizeLinefeeds(name))}\"` +\n `; filename=\"${escape(value.name)}\"` +\n `\\r\\nContent-Type: ${value.type || 'application/octet-stream'}\\r\\n\\r\\n`\n )\n\n parts.push(chunk, value, linefeed)\n }\n }\n\n parts.push(Buffer.from(`--${boundary}--\\r\\n`))\n\n return new Blob(parts, {\n type: 'multipart/form-data; boundary=' + boundary\n })\n}\nmodule.exports = class FormDataError extends Error {\n constructor(msg, code, fn = FormDataError) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'FormDataError'\n }\n\n static INVALID_MIME_TYPE(msg) {\n return new FormDataError(msg, 'INVALID_MIME_TYPE', FormDataError.INVALID_MIME_TYPE)\n }\n}\n{\n \"name\": \"bare-form-data\",\n \"version\": \"1.2.2\",\n \"description\": \"Form data support for Bare\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": \"./index.js\",\n \"./global\": \"./global.js\",\n \"./errors\": \"./lib/errors.js\"\n },\n \"files\": [\n \"index.js\",\n \"global.js\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-form-data.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-form-data/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-form-data#readme\",\n \"dependencies\": {\n \"bare-buffer\": \"^3.6.0\",\n \"bare-stream\": \"^2.6.5\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.0\",\n \"lunte\": \"^1.7.0\",\n \"prettier\": \"^3.3.3\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nmodule.exports = require.addon()\nconst FIFO = require('fast-fifo')\nconst EventEmitter = require('bare-events')\nconst path = require('bare-path')\nconst { isURL, fileURLToPath } = require('bare-url')\nconst { Readable, Writable } = require('bare-stream')\nconst binding = require('./binding')\nconst constants = require('./lib/constants')\nconst FileError = require('./lib/errors')\n\nconst isWindows = Bare.platform === 'win32'\n\nexports.constants = constants\n\nclass FileRequest {\n static borrow() {\n if (this._free.length > 0) return this._free.pop()\n return new FileRequest()\n }\n\n static return(req) {\n if (this._free.length < 32) this._free.push(req.reset())\n else req.destroy()\n }\n\n constructor() {\n this._reset()\n this._handle = binding.requestInit(this, this._onresult)\n }\n\n get handle() {\n return this._handle\n }\n\n retain(value) {\n this._retain = value // Tie the lifetime of `value` to the lifetime of `this`\n }\n\n reset() {\n if (this._handle === null) return this\n\n binding.requestReset(this._handle)\n\n this._reset()\n\n return this\n }\n\n destroy() {\n if (this._handle === null) return this\n\n binding.requestDestroy(this._handle)\n\n this._reset()\n this._handle = null\n\n return this\n }\n\n then(resolve, reject) {\n return this._promise.then(resolve, reject)\n }\n\n return() {\n if (this._handle === null) return this\n\n FileRequest.return(this)\n\n return this\n }\n\n _reset() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve\n this._reject = reject\n })\n this._retain = null\n }\n\n _onresult(err, status) {\n if (err) this._reject(err)\n else this._resolve(status)\n }\n}\n\nFileRequest._free = []\n\nfunction ok(result, cb) {\n if (typeof result === 'function') {\n cb = result\n result = undefined\n }\n\n if (cb) cb(null, result)\n else return result\n}\n\nfunction fail(err, cb) {\n if (cb) cb(err)\n else throw err\n}\n\nfunction done(err, result, cb) {\n if (typeof result === 'function') {\n cb = result\n result = undefined\n }\n\n if (err) fail(err, cb)\n else return ok(result, cb)\n}\n\nasync function open(filepath, flags = 'r', mode = 0o666, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 'r'\n mode = 0o666\n } else if (typeof mode === 'function') {\n cb = mode\n mode = 0o666\n }\n\n if (typeof flags === 'string') flags = toFlags(flags)\n if (typeof mode === 'string') mode = toMode(mode)\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let fd\n let err = null\n try {\n binding.open(req.handle, filepath, flags, mode)\n\n fd = await req\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'open',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n\n return done(err, fd, cb)\n}\n\nfunction openSync(filepath, flags = 'r', mode = 0o666) {\n if (typeof flags === 'string') flags = toFlags(flags)\n if (typeof mode === 'string') mode = toMode(mode)\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n return binding.openSync(req.handle, filepath, flags, mode)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'open',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n}\n\nasync function close(fd, cb) {\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.close(req.handle, fd)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'close', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction closeSync(fd) {\n const req = FileRequest.borrow()\n\n try {\n binding.closeSync(req.handle, fd)\n } catch (e) {\n throw new FileError(e.message, { operation: 'close', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nasync function access(filepath, mode = constants.F_OK, cb) {\n if (typeof mode === 'function') {\n cb = mode\n mode = constants.F_OK\n }\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.access(req.handle, filepath, mode)\n\n await req\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'access',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction accessSync(filepath, mode = constants.F_OK) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.accessSync(req.handle, filepath, mode)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'access',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n}\n\nasync function exists(filepath, cb) {\n let ok = true\n try {\n await access(filepath)\n } catch {\n ok = false\n }\n\n return done(null, ok, cb)\n}\n\nfunction existsSync(filepath) {\n try {\n accessSync(filepath)\n } catch {\n return false\n }\n\n return true\n}\n\nasync function read(fd, buffer, offset = 0, len = buffer.byteLength - offset, pos = -1, cb) {\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n len = buffer.byteLength\n pos = -1\n } else if (typeof len === 'function') {\n cb = len\n len = buffer.byteLength - offset\n pos = -1\n } else if (typeof pos === 'function') {\n cb = pos\n pos = -1\n }\n\n if (typeof pos !== 'number') pos = -1\n\n const req = FileRequest.borrow()\n\n let bytes\n let err = null\n try {\n binding.read(req.handle, fd, buffer, offset, len, pos)\n\n req.retain(buffer)\n\n bytes = await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'read', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, bytes, cb)\n}\n\nfunction readSync(fd, buffer, offset = 0, len = buffer.byteLength - offset, pos = -1) {\n const req = FileRequest.borrow()\n\n try {\n return binding.readSync(req.handle, fd, buffer, offset, len, pos)\n } catch (e) {\n throw new FileError(e.message, { operation: 'read', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nasync function readv(fd, buffers, pos = -1, cb) {\n if (typeof pos === 'function') {\n cb = pos\n pos = -1\n }\n\n if (typeof pos !== 'number') pos = -1\n\n const req = FileRequest.borrow()\n\n let bytes\n let err = null\n try {\n binding.readv(req.handle, fd, buffers, pos)\n\n req.retain(buffers)\n\n bytes = await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'readv', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, bytes, cb)\n}\n\nfunction readvSync(fd, buffers, pos = -1) {\n if (typeof pos !== 'number') pos = -1\n\n const req = FileRequest.borrow()\n\n try {\n return binding.readvSync(req.handle, fd, buffers, pos)\n } catch (e) {\n throw new FileError(e.message, { operation: 'readv', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nasync function write(fd, data, offset, len, pos = -1, cb) {\n if (typeof data === 'string') {\n let encoding = len\n cb = pos\n pos = offset\n\n if (typeof pos === 'function') {\n cb = pos\n pos = -1\n encoding = 'utf8'\n } else if (typeof encoding === 'function') {\n cb = encoding\n encoding = 'utf8'\n }\n\n if (typeof pos === 'string') {\n encoding = pos\n pos = -1\n }\n\n data = Buffer.from(data, encoding)\n offset = 0\n len = data.byteLength\n } else if (typeof offset === 'function') {\n cb = offset\n offset = 0\n len = data.byteLength\n pos = -1\n } else if (typeof len === 'function') {\n cb = len\n len = data.byteLength - offset\n pos = -1\n } else if (typeof pos === 'function') {\n cb = pos\n pos = -1\n }\n\n if (typeof offset !== 'number') offset = 0\n if (typeof len !== 'number') len = data.byteLength - offset\n if (typeof pos !== 'number') pos = -1\n\n const req = FileRequest.borrow()\n\n let bytes\n let err = null\n try {\n binding.write(req.handle, fd, data, offset, len, pos)\n\n req.retain(data)\n\n bytes = await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'write', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, bytes, cb)\n}\n\nfunction writeSync(fd, data, offset, len, pos = -1) {\n if (typeof data === 'string') {\n let encoding = len\n pos = offset\n\n if (typeof pos === 'string') {\n encoding = pos\n pos = -1\n }\n\n data = Buffer.from(data, encoding)\n offset = 0\n len = data.byteLength\n }\n\n if (typeof offset !== 'number') offset = 0\n if (typeof len !== 'number') len = data.byteLength - offset\n if (typeof pos !== 'number') pos = -1\n\n const req = FileRequest.borrow()\n\n try {\n return binding.writeSync(req.handle, fd, data, offset, len, pos)\n } catch (e) {\n throw new FileError(e.message, { operation: 'write', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nasync function writev(fd, buffers, pos = -1, cb) {\n if (typeof pos === 'function') {\n cb = pos\n pos = -1\n }\n\n if (typeof pos !== 'number') pos = -1\n\n const req = FileRequest.borrow()\n\n let bytes\n let err = null\n try {\n binding.writev(req.handle, fd, buffers, pos)\n\n req.retain(buffers)\n\n bytes = await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'writev', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, bytes, cb)\n}\n\nfunction writevSync(fd, buffers, pos = -1) {\n if (typeof pos !== 'number') pos = -1\n\n const req = FileRequest.borrow()\n\n try {\n return binding.writevSync(req.handle, fd, buffers, pos)\n } catch (e) {\n throw new FileError(e.message, { operation: 'writev', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nasync function stat(filepath, cb) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let st\n let err = null\n try {\n binding.stat(req.handle, filepath)\n\n await req\n\n st = new Stats(...binding.requestResultStat(req.handle))\n } catch (e) {\n err = new FileError(e.message, { operation: 'stat', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n\n return done(err, st, cb)\n}\n\nfunction statSync(filepath) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.statSync(req.handle, filepath)\n\n return new Stats(...binding.requestResultStat(req.handle))\n } catch (e) {\n throw new FileError(e.message, { operation: 'stat', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n}\n\nasync function lstat(filepath, cb) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let st\n let err = null\n try {\n binding.lstat(req.handle, filepath)\n\n await req\n\n st = new Stats(...binding.requestResultStat(req.handle))\n } catch (e) {\n err = new FileError(e.message, { operation: 'lstat', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n\n return done(err, st, cb)\n}\n\nfunction lstatSync(filepath) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.lstatSync(req.handle, filepath)\n\n return new Stats(...binding.requestResultStat(req.handle))\n } catch (e) {\n throw new FileError(e.message, { operation: 'lstat', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n}\n\nasync function fstat(fd, cb) {\n const req = FileRequest.borrow()\n\n let st\n let err = null\n try {\n binding.fstat(req.handle, fd)\n\n await req\n\n st = new Stats(...binding.requestResultStat(req.handle))\n } catch (e) {\n err = new FileError(e.message, { operation: 'fstat', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, st, cb)\n}\n\nfunction fstatSync(fd) {\n const req = FileRequest.borrow()\n\n try {\n binding.fstatSync(req.handle, fd)\n\n return new Stats(...binding.requestResultStat(req.handle))\n } catch (e) {\n throw new FileError(e.message, { operation: 'fstat', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nasync function statfs(filepath, cb) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let st\n let err = null\n try {\n binding.statfs(req.handle, filepath)\n\n await req\n\n st = new StatFs(...binding.requestResultStatfs(req.handle))\n } catch (e) {\n err = new FileError(e.message, { operation: 'statfs', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n\n return done(err, st, cb)\n}\n\nfunction statfsSync(filepath) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.statfsSync(req.handle, filepath)\n\n return new StatFs(...binding.requestResultStatfs(req.handle))\n } catch (e) {\n throw new FileError(e.message, { operation: 'statfs', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n}\n\nasync function ftruncate(fd, len = 0, cb) {\n if (typeof len === 'function') {\n cb = len\n len = 0\n }\n\n if (typeof len !== 'number') len = 0\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.ftruncate(req.handle, fd, len)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'ftruncate', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction ftruncateSync(fd, len = 0) {\n if (typeof len !== 'number') len = 0\n\n const req = FileRequest.borrow()\n\n try {\n binding.ftruncateSync(req.handle, fd, len)\n } catch (e) {\n throw new FileError(e.message, { operation: 'ftruncate', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nasync function truncate(filepath, len, cb) {\n let fd = -1\n let err\n\n try {\n fd = await open(filepath, 'r+')\n\n await ftruncate(fd, len)\n } catch (e) {\n err = e\n } finally {\n if (fd !== -1) await close(fd)\n }\n\n return done(err, cb)\n}\n\nfunction truncateSync(filepath, len) {\n let fd = -1\n let err\n\n try {\n fd = openSync(filepath, 'r+')\n\n ftruncateSync(fd, len)\n } catch (e) {\n err = e\n } finally {\n if (fd !== -1) closeSync(fd)\n }\n}\n\nasync function chmod(filepath, mode, cb) {\n if (typeof mode === 'string') mode = toMode(mode)\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.chmod(req.handle, filepath, mode)\n\n await req\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'chmod',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction chmodSync(filepath, mode) {\n if (typeof mode === 'string') mode = toMode(mode)\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.chmodSync(req.handle, filepath, mode)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'chmod',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n}\n\nasync function fchmod(fd, mode, cb) {\n if (typeof mode === 'string') mode = toMode(mode)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.fchmod(req.handle, fd, mode)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'fchmod', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction fchmodSync(fd, mode) {\n if (typeof mode === 'string') mode = toMode(mode)\n\n const req = FileRequest.borrow()\n\n try {\n binding.fchmodSync(req.handle, fd, mode)\n } catch (e) {\n throw new FileError(e.message, { operation: 'fchmod', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nasync function chown(filepath, uid, gid, cb) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.chown(req.handle, filepath, uid, gid)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'chown', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction chownSync(filepath, uid, gid) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.chownSync(req.handle, filepath, uid, gid)\n } catch (e) {\n throw new FileError(e.message, { operation: 'chownSync', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n}\n\nasync function lchown(filepath, uid, gid, cb) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.lchown(req.handle, filepath, uid, gid)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'lchown', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction lchownSync(filepath, uid, gid) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.lchownSync(req.handle, filepath, uid, gid)\n } catch (e) {\n throw new FileError(e.message, { operation: 'lchownSync', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n}\n\nasync function fchown(fd, uid, gid, cb) {\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.fchown(req.handle, fd, uid, gid)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'fchown', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction fchownSync(fd, uid, gid) {\n const req = FileRequest.borrow()\n\n try {\n binding.fchownSync(req.handle, fd, uid, gid)\n } catch (e) {\n throw new FileError(e.message, { operation: 'fchownSync', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nasync function utimes(filepath, atime, mtime, cb) {\n if (typeof atime !== 'number') atime = atime.getTime() / 1000\n if (typeof mtime !== 'number') mtime = mtime.getTime() / 1000\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.utimes(req.handle, filepath, atime, mtime)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'utimes', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction utimesSync(filepath, atime, mtime) {\n if (typeof atime !== 'number') atime = atime.getTime() / 1000\n if (typeof mtime !== 'number') mtime = mtime.getTime() / 1000\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.utimesSync(req.handle, filepath, atime, mtime)\n } catch (e) {\n throw new FileError(e.message, { operation: 'utimes', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n}\n\nasync function lutimes(filepath, atime, mtime, cb) {\n if (typeof atime !== 'number') atime = atime.getTime() / 1000\n if (typeof mtime !== 'number') mtime = mtime.getTime() / 1000\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.lutimes(req.handle, filepath, atime, mtime)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'lutimes', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction lutimesSync(filepath, atime, mtime) {\n if (typeof atime !== 'number') atime = atime.getTime() / 1000\n if (typeof mtime !== 'number') mtime = mtime.getTime() / 1000\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.lutimesSync(req.handle, filepath, atime, mtime)\n } catch (e) {\n throw new FileError(e.message, { operation: 'lutimes', code: e.code, path: filepath })\n } finally {\n req.return()\n }\n}\n\nasync function futimes(fd, atime, mtime, cb) {\n if (typeof atime !== 'number') atime = atime.getTime() / 1000\n if (typeof mtime !== 'number') mtime = mtime.getTime() / 1000\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.futimes(req.handle, fd, atime, mtime)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'futimes', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction futimesSync(fd, atime, mtime) {\n if (typeof atime !== 'number') atime = atime.getTime() / 1000\n if (typeof mtime !== 'number') mtime = mtime.getTime() / 1000\n\n const req = FileRequest.borrow()\n\n try {\n binding.futimesSync(req.handle, fd, atime, mtime)\n } catch (e) {\n throw new FileError(e.message, { operation: 'futimesSync', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nasync function link(src, dst, cb) {\n src = toNamespacedPath(src)\n dst = toNamespacedPath(dst)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.link(req.handle, src, dst)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'link', code: e.code, path: src, destination: dst })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction linkSync(src, dst) {\n src = toNamespacedPath(src)\n dst = toNamespacedPath(dst)\n\n const req = FileRequest.borrow()\n\n try {\n binding.linkSync(req.handle, src, dst)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'linkSync',\n code: e.code,\n path: src,\n destination: dst\n })\n } finally {\n req.return()\n }\n}\n\nasync function mkdir(filepath, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = { mode: 0o777 }\n }\n\n if (typeof opts === 'number') opts = { mode: opts }\n else if (!opts) opts = {}\n\n const mode = typeof opts.mode === 'number' ? opts.mode : 0o777\n\n filepath = toNamespacedPath(filepath)\n\n if (opts.recursive) {\n let err = null\n try {\n try {\n await mkdir(filepath, { mode })\n } catch (err) {\n if (err.code !== 'ENOENT') {\n if (!(await stat(filepath)).isDirectory()) throw err\n } else {\n while (filepath.endsWith(path.sep)) filepath = filepath.slice(0, -1)\n const i = filepath.lastIndexOf(path.sep)\n if (i <= 0) throw err\n\n await mkdir(filepath.slice(0, i), { mode, recursive: true })\n\n try {\n await mkdir(filepath, { mode })\n } catch (err) {\n if (!(await stat(filepath)).isDirectory()) throw err\n }\n }\n }\n } catch (e) {\n err = e\n }\n\n return done(err, cb)\n }\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.mkdir(req.handle, filepath, mode)\n\n await req\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'mkdir',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction mkdirSync(filepath, opts) {\n if (typeof opts === 'number') opts = { mode: opts }\n else if (!opts) opts = {}\n\n const mode = typeof opts.mode === 'number' ? opts.mode : 0o777\n\n filepath = toNamespacedPath(filepath)\n\n if (opts.recursive) {\n try {\n mkdirSync(filepath, { mode })\n } catch (err) {\n if (err.code !== 'ENOENT') {\n if (!statSync(filepath).isDirectory()) throw err\n } else {\n while (filepath.endsWith(path.sep)) filepath = filepath.slice(0, -1)\n const i = filepath.lastIndexOf(path.sep)\n if (i <= 0) throw err\n\n mkdirSync(filepath.slice(0, i), { mode, recursive: true })\n\n try {\n mkdirSync(filepath, { mode })\n } catch (err) {\n if (!statSync(filepath).isDirectory()) throw err\n }\n }\n }\n\n return\n }\n\n const req = FileRequest.borrow()\n\n try {\n binding.mkdirSync(req.handle, filepath, mode)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'mkdir',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n}\n\nasync function mkdtemp(prefix, cb) {\n prefix = toNamespacedPath(prefix)\n\n const req = FileRequest.borrow()\n\n let res\n let err = null\n try {\n binding.mkdtemp(req.handle, prefix + 'XXXXXX')\n\n await req\n\n res = binding.requestResultPath(req.handle)\n } catch (e) {\n err = new FileError(e.message, { operation: 'mkdtemp', code: e.code, path: prefix })\n } finally {\n req.return()\n }\n\n return done(err, res, cb)\n}\n\nfunction mkdtempSync(prefix) {\n prefix = toNamespacedPath(prefix)\n\n const req = FileRequest.borrow()\n\n try {\n binding.mkdtempSync(req.handle, prefix + 'XXXXXX')\n\n return binding.requestResultPath(req.handle)\n } catch (e) {\n throw new FileError(e.message, { operation: 'mkdtempSync', code: e.code, path: prefix })\n } finally {\n req.return()\n }\n}\n\nasync function rmdir(filepath, cb) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.rmdir(req.handle, filepath)\n\n await req\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'rmdir',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction rmdirSync(filepath) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.rmdirSync(req.handle, filepath)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'rmdir',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n}\n\nasync function rm(filepath, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n if (!opts) opts = {}\n\n filepath = toNamespacedPath(filepath)\n\n let err = null\n try {\n const st = await lstat(filepath)\n\n if (st.isDirectory()) {\n if (opts.recursive) {\n try {\n await rmdir(filepath)\n } catch (err) {\n if (err.code !== 'ENOTEMPTY') throw err\n\n const files = await readdir(filepath)\n\n for (const file of files) {\n await rm(filepath + path.sep + file, opts)\n }\n\n await rmdir(filepath)\n }\n } else {\n throw new FileError('is a directory', {\n operation: 'rm',\n code: 'EISDIR',\n path: filepath\n })\n }\n } else {\n await unlink(filepath)\n }\n } catch (e) {\n if (e.code !== 'ENOENT' || !opts.force) err = e\n }\n\n return done(err, cb)\n}\n\nfunction rmSync(filepath, opts) {\n if (!opts) opts = {}\n\n filepath = toNamespacedPath(filepath)\n\n try {\n const st = lstatSync(filepath)\n\n if (st.isDirectory()) {\n if (opts.recursive) {\n try {\n rmdirSync(filepath)\n } catch (err) {\n if (err.code !== 'ENOTEMPTY') throw err\n\n const files = readdirSync(filepath)\n\n for (const file of files) {\n rmSync(filepath + path.sep + file, opts)\n }\n\n rmdirSync(filepath)\n }\n } else {\n throw new FileError('is a directory', {\n operation: 'rm',\n code: 'EISDIR',\n path: filepath\n })\n }\n } else {\n unlinkSync(filepath)\n }\n } catch (err) {\n if (err.code !== 'ENOENT' || !opts.force) throw err\n }\n}\n\nasync function unlink(filepath, cb) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.unlink(req.handle, filepath)\n\n await req\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'unlink',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction unlinkSync(filepath) {\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.unlinkSync(req.handle, filepath)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'unlink',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n}\n\nasync function rename(src, dst, cb) {\n src = toNamespacedPath(src)\n dst = toNamespacedPath(dst)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.rename(req.handle, src, dst)\n\n await req\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'rename',\n code: e.code,\n path: src,\n destination: dst\n })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction renameSync(src, dst) {\n src = toNamespacedPath(src)\n dst = toNamespacedPath(dst)\n\n const req = FileRequest.borrow()\n\n try {\n binding.renameSync(req.handle, src, dst)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'rename',\n code: e.code,\n path: src,\n destination: dst\n })\n } finally {\n req.return()\n }\n}\n\nasync function copyFile(src, dst, mode = 0, cb) {\n if (typeof mode === 'function') {\n cb = mode\n mode = 0\n }\n\n src = toNamespacedPath(src)\n dst = toNamespacedPath(dst)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.copyfile(req.handle, src, dst, mode)\n\n await req\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'copyfile',\n code: e.code,\n path: src,\n destination: dst\n })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction copyFileSync(src, dst, mode = 0) {\n src = toNamespacedPath(src)\n dst = toNamespacedPath(dst)\n\n const req = FileRequest.borrow()\n\n try {\n binding.copyfileSync(req.handle, src, dst, mode)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'copyfile',\n code: e.code,\n path: src,\n destination: dst\n })\n } finally {\n req.return()\n }\n}\n\nasync function cp(src, dst, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n if (!opts) opts = {}\n\n src = toNamespacedPath(src)\n dst = toNamespacedPath(dst)\n\n let err = null\n try {\n const st = await lstat(src)\n\n if (st.isDirectory()) {\n if (opts.recursive !== true) {\n throw new FileError('is a directory', { operation: 'cp', code: 'EISDIR', path: src })\n }\n\n try {\n await lstat(dst)\n } catch (e) {\n if (e.code !== 'ENOENT') throw e\n\n await mkdir(dst, { mode: st.mode, recursive: true })\n }\n\n const dir = await opendir(src)\n for await (const { name } of dir) {\n await cp(path.join(src, name), path.join(dst, name), opts)\n }\n } else if (st.isFile()) {\n await copyFile(src, dst)\n await chmod(dst, st.mode)\n }\n } catch (e) {\n err = e\n }\n\n return done(err, cb)\n}\n\nfunction cpSync(src, dst, opts = {}) {\n src = toNamespacedPath(src)\n dst = toNamespacedPath(dst)\n\n const st = lstatSync(src)\n\n if (st.isDirectory()) {\n if (opts.recursive !== true) {\n throw new FileError('is a directory', { operation: 'cp', code: 'EISDIR', path: src })\n }\n\n try {\n lstatSync(dst)\n } catch (e) {\n if (e.code !== 'ENOENT') throw e\n\n mkdirSync(dst, { mode: st.mode, recursive: true })\n }\n\n const dir = opendirSync(src)\n for (const { name } of dir) {\n cpSync(path.join(src, name), path.join(dst, name), opts)\n }\n } else if (st.isFile()) {\n copyFileSync(src, dst)\n chmodSync(dst, st.mode)\n }\n}\n\nasync function realpath(filepath, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n const { encoding = 'utf8' } = opts\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let res\n let err = null\n try {\n binding.realpath(req.handle, filepath)\n\n await req\n\n res = Buffer.from(binding.requestResultString(req.handle))\n\n if (encoding !== 'buffer') res = res.toString(encoding)\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'realpath',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n\n return done(err, res, cb)\n}\n\nfunction realpathSync(filepath, opts) {\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n const { encoding = 'utf8' } = opts\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.realpathSync(req.handle, filepath)\n\n let res = Buffer.from(binding.requestResultString(req.handle))\n\n if (encoding !== 'buffer') res = res.toString(encoding)\n\n return res\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'realpath',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n}\n\nasync function readlink(filepath, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n const { encoding = 'utf8' } = opts\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let res\n let err = null\n try {\n binding.readlink(req.handle, filepath)\n\n await req\n\n res = Buffer.from(binding.requestResultString(req.handle))\n\n if (encoding !== 'buffer') res = res.toString(encoding)\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'readlink',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n\n return done(err, res, cb)\n}\n\nfunction readlinkSync(filepath, opts) {\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n const { encoding = 'utf8' } = opts\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.readlinkSync(req.handle, filepath)\n\n let res = Buffer.from(binding.requestResultString(req.handle))\n\n if (encoding !== 'buffer') res = res.toString(encoding)\n\n return res\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'readlink',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n}\n\nasync function fsync(fd, cb) {\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.fsync(req.handle, fd)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'fsync', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction fsyncSync(fd) {\n const req = FileRequest.borrow()\n\n try {\n binding.fsyncSync(req.handle, fd)\n } catch (e) {\n throw new FileError(e.message, { operation: 'fsyncSync', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nasync function fdatasync(fd, cb) {\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.fdatasync(req.handle, fd)\n\n await req\n } catch (e) {\n err = new FileError(e.message, { operation: 'fdatasync', code: e.code, fd })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction fdatasyncSync(fd) {\n const req = FileRequest.borrow()\n\n try {\n binding.fdatasyncSync(req.handle, fd)\n } catch (e) {\n throw new FileError(e.message, { operation: 'fdatasyncSync', code: e.code, fd })\n } finally {\n req.return()\n }\n}\n\nfunction normalizeSymlinkTarget(target, type, filepath) {\n if (isWindows) {\n if (type === constants.UV_FS_SYMLINK_JUNCTION) target = path.resolve(filepath, '..', target)\n\n if (path.isAbsolute(target)) return path.toNamespacedPath(target)\n\n return target.replace(/\\//g, path.sep)\n }\n\n return target\n}\n\nasync function symlink(target, filepath, type, cb) {\n if (typeof type === 'function') {\n cb = type\n type = null\n }\n\n filepath = toNamespacedPath(filepath)\n\n if (typeof type === 'string') {\n switch (type) {\n case 'dir':\n type = constants.UV_FS_SYMLINK_DIR\n break\n case 'junction':\n type = constants.UV_FS_SYMLINK_JUNCTION\n break\n case 'file':\n default:\n type = 0\n break\n }\n } else if (typeof type !== 'number') {\n if (isWindows) {\n target = path.resolve(filepath, '..', target)\n\n try {\n type = (await stat(target)).isDirectory()\n ? constants.UV_FS_SYMLINK_DIR\n : constants.UV_FS_SYMLINK_JUNCTION\n } catch {\n type = 0\n }\n } else {\n type = 0\n }\n }\n\n target = normalizeSymlinkTarget(target, type, filepath)\n\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.symlink(req.handle, target, filepath, type)\n\n await req\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'symlink',\n code: e.code,\n path: target,\n destination: filepath\n })\n } finally {\n req.return()\n }\n\n return done(err, cb)\n}\n\nfunction symlinkSync(target, filepath, type) {\n filepath = toNamespacedPath(filepath)\n\n if (typeof type === 'string') {\n switch (type) {\n case 'dir':\n type = constants.UV_FS_SYMLINK_DIR\n break\n case 'junction':\n type = constants.UV_FS_SYMLINK_JUNCTION\n break\n case 'file':\n default:\n type = 0\n break\n }\n } else if (typeof type !== 'number') {\n if (isWindows) {\n target = path.resolve(filepath, '..', target)\n\n try {\n type = statSync(target).isDirectory()\n ? constants.UV_FS_SYMLINK_DIR\n : constants.UV_FS_SYMLINK_JUNCTION\n } catch {\n type = 0\n }\n } else {\n type = 0\n }\n }\n\n target = normalizeSymlinkTarget(target, type, filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.symlinkSync(req.handle, target, filepath, type)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'symlink',\n code: e.code,\n path: target,\n destination: filepath\n })\n } finally {\n req.return()\n }\n}\n\nasync function opendir(filepath, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n let dir\n let err = null\n try {\n binding.opendir(req.handle, filepath)\n\n await req\n\n dir = new Dir(filepath, binding.requestResultDir(req.handle), opts)\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'opendir',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n\n return done(err, dir, cb)\n}\n\nfunction opendirSync(filepath, opts) {\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n filepath = toNamespacedPath(filepath)\n\n const req = FileRequest.borrow()\n\n try {\n binding.opendirSync(req.handle, filepath)\n\n return new Dir(filepath, binding.requestResultDir(req.handle), opts)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'opendir',\n code: e.code,\n path: filepath\n })\n } finally {\n req.return()\n }\n}\n\nasync function readdir(filepath, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n const { withFileTypes = false, recursive = false } = opts\n\n filepath = toNamespacedPath(filepath)\n\n const queue = [filepath]\n let result = []\n let err = null\n try {\n while (queue.length !== 0) {\n const dir = await opendir(queue.pop())\n\n for await (const entry of dir) {\n const entryPath = path.join(entry.parentPath, entry.name)\n\n if (withFileTypes) {\n result.push(entry)\n } else {\n result.push(path.relative(filepath, entryPath))\n }\n\n if (recursive && entry.isDirectory()) queue.push(entryPath)\n }\n }\n } catch (e) {\n result = []\n err = e\n }\n\n return done(err, result, cb)\n}\n\nfunction readdirSync(filepath, opts) {\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n const { withFileTypes = false, recursive = false } = opts\n\n filepath = toNamespacedPath(filepath)\n\n const queue = [filepath]\n const result = []\n\n while (queue.length !== 0) {\n const dir = opendirSync(queue.pop(), opts)\n\n for (const entry of dir) {\n const entryPath = path.join(entry.parentPath, entry.name)\n\n if (withFileTypes) {\n result.push(entry)\n } else {\n result.push(path.relative(filepath, entryPath))\n }\n\n if (recursive && entry.isDirectory()) queue.push(entryPath)\n }\n }\n\n return result\n}\n\nasync function readFile(filepath, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n const { encoding = 'buffer' } = opts\n\n let fd = -1\n let buffer = null\n let err = null\n try {\n fd = await open(filepath, opts.flag || 'r')\n\n const st = await fstat(fd)\n\n let len = 0\n\n if (st.size === 0) {\n const buffers = []\n\n while (true) {\n buffer = Buffer.allocUnsafe(8192)\n const r = await read(fd, buffer)\n len += r\n if (r === 0) break\n buffers.push(buffer.subarray(0, r))\n }\n\n buffer = Buffer.concat(buffers)\n } else {\n buffer = Buffer.allocUnsafe(st.size)\n\n while (true) {\n const r = await read(fd, len ? buffer.subarray(len) : buffer)\n len += r\n if (r === 0 || len === buffer.byteLength) break\n }\n\n if (len !== buffer.byteLength) buffer = buffer.subarray(0, len)\n }\n\n if (encoding !== 'buffer') buffer = buffer.toString(encoding)\n } catch (e) {\n err = e\n } finally {\n if (fd !== -1) await close(fd)\n }\n\n return done(err, buffer, cb)\n}\n\nfunction readFileSync(filepath, opts) {\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n const { encoding = 'buffer' } = opts\n\n let fd = -1\n try {\n fd = openSync(filepath, opts.flag || 'r')\n\n const st = fstatSync(fd)\n\n let buffer\n let len = 0\n\n if (st.size === 0) {\n const buffers = []\n\n while (true) {\n buffer = Buffer.allocUnsafe(8192)\n const r = readSync(fd, buffer)\n len += r\n if (r === 0) break\n buffers.push(buffer.subarray(0, r))\n }\n\n buffer = Buffer.concat(buffers)\n } else {\n buffer = Buffer.allocUnsafe(st.size)\n\n while (true) {\n const r = readSync(fd, len ? buffer.subarray(len) : buffer)\n len += r\n if (r === 0 || len === buffer.byteLength) break\n }\n\n if (len !== buffer.byteLength) buffer = buffer.subarray(0, len)\n }\n\n if (encoding !== 'buffer') buffer = buffer.toString(encoding)\n\n return buffer\n } finally {\n if (fd !== -1) closeSync(fd)\n }\n}\n\nasync function writeFile(filepath, data, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n if (typeof data === 'string') data = Buffer.from(data, opts.encoding)\n\n let fd = -1\n let len = 0\n let err = null\n try {\n fd = await open(filepath, opts.flag || 'w', opts.mode || 0o666)\n\n while (true) {\n len += await write(fd, len ? data.subarray(len) : data)\n if (len === data.byteLength) break\n }\n } catch (e) {\n err = e\n } finally {\n if (fd !== -1) await close(fd)\n }\n\n return done(err, len, cb)\n}\n\nfunction writeFileSync(filepath, data, opts) {\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n if (typeof data === 'string') data = Buffer.from(data, opts.encoding)\n\n let fd = -1\n try {\n fd = openSync(filepath, opts.flag || 'w', opts.mode || 0o666)\n\n let len = 0\n\n while (true) {\n len += writeSync(fd, len ? data.subarray(len) : data)\n if (len === data.byteLength) break\n }\n } finally {\n if (fd !== -1) closeSync(fd)\n }\n}\n\nfunction appendFile(filepath, data, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n if (!opts.flag) opts = { ...opts, flag: 'a' }\n\n return writeFile(filepath, data, opts, cb)\n}\n\nfunction appendFileSync(filepath, data, opts) {\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n if (!opts.flag) opts = { ...opts, flag: 'a' }\n\n return writeFileSync(filepath, data, opts)\n}\n\nfunction watch(filepath, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n if (typeof opts === 'string') opts = { encoding: opts }\n else if (!opts) opts = {}\n\n filepath = toNamespacedPath(filepath)\n\n return new Watcher(filepath, opts, cb)\n}\n\nclass Stats {\n constructor(\n dev,\n mode,\n nlink,\n uid,\n gid,\n rdev,\n blksize,\n ino,\n size,\n blocks,\n atimeMs,\n mtimeMs,\n ctimeMs,\n birthtimeMs\n ) {\n this.dev = dev\n this.mode = mode\n this.nlink = nlink\n this.uid = uid\n this.gid = gid\n this.rdev = rdev\n this.blksize = blksize\n this.ino = ino\n this.size = size\n this.blocks = blocks\n this.atimeMs = atimeMs\n this.mtimeMs = mtimeMs\n this.ctimeMs = ctimeMs\n this.birthtimeMs = birthtimeMs\n this.atime = new Date(atimeMs)\n this.mtime = new Date(mtimeMs)\n this.ctime = new Date(ctimeMs)\n this.birthtime = new Date(birthtimeMs)\n }\n\n isDirectory() {\n return (this.mode & constants.S_IFMT) === constants.S_IFDIR\n }\n\n isFile() {\n return (this.mode & constants.S_IFMT) === constants.S_IFREG\n }\n\n isBlockDevice() {\n return (this.mode & constants.S_IFMT) === constants.S_IFBLK\n }\n\n isCharacterDevice() {\n return (this.mode & constants.S_IFMT) === constants.S_IFCHR\n }\n\n isFIFO() {\n return (this.mode & constants.S_IFMT) === constants.S_IFIFO\n }\n\n isSymbolicLink() {\n return (this.mode & constants.S_IFMT) === constants.S_IFLNK\n }\n\n isSocket() {\n return (this.mode & constants.S_IFMT) === constants.S_IFSOCK\n }\n}\n\nclass StatFs {\n constructor(type, bsize, blocks, bfree, bavail, files, ffree) {\n this.type = type\n this.bsize = bsize\n this.blocks = blocks\n this.bfree = bfree\n this.bavail = bavail\n this.files = files\n this.ffree = ffree\n }\n}\n\nclass Dir {\n constructor(path, handle, opts = {}) {\n const { encoding = 'utf8', bufferSize = 32 } = opts\n\n this.path = path\n\n this._encoding = encoding\n this._capacity = bufferSize\n this._buffer = new FIFO()\n this._ended = false\n this._handle = handle\n }\n\n async read(cb) {\n if (this._buffer.length) return ok(this._buffer.shift(), cb)\n if (this._ended) return ok(null, cb)\n\n const req = FileRequest.borrow()\n\n let entries\n let err = null\n try {\n req.retain(binding.readdir(req.handle, this._handle, this._capacity))\n\n await req\n\n entries = binding.requestResultDirents(req.handle)\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'readdir',\n code: e.code,\n path: this.path\n })\n } finally {\n req.return()\n }\n\n if (err) return fail(err, cb)\n\n if (entries.length === 0) {\n this._ended = true\n\n return ok(null, cb)\n }\n\n for (const entry of entries) {\n let name = Buffer.from(entry.name)\n\n if (this._encoding !== 'buffer') name = name.toString(this._encoding)\n\n this._buffer.push(new Dirent(this.path, name, entry.type))\n }\n\n return ok(this._buffer.shift(), cb)\n }\n\n readSync() {\n if (this._buffer.length) return this._buffer.shift()\n if (this._ended) return null\n\n const req = FileRequest.borrow()\n\n let entries\n try {\n req.retain(binding.readdirSync(req.handle, this._handle, this._capacity))\n\n entries = binding.requestResultDirents(req.handle)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'readdir',\n code: e.code,\n path: this.path\n })\n } finally {\n req.return()\n }\n\n if (entries.length === 0) {\n this._ended = true\n\n return null\n }\n\n for (const entry of entries) {\n let name = Buffer.from(entry.name)\n\n if (this._encoding !== 'buffer') name = name.toString(this._encoding)\n\n this._buffer.push(new Dirent(this.path, name, entry.type))\n }\n\n return this._buffer.shift()\n }\n\n async close(cb) {\n const req = FileRequest.borrow()\n\n let err = null\n try {\n binding.closedir(req.handle, this._handle)\n\n await req\n } catch (e) {\n err = new FileError(e.message, {\n operation: 'closedir',\n code: e.code,\n path: this.path\n })\n } finally {\n req.return()\n }\n\n this._handle = null\n\n return done(err, cb)\n }\n\n closeSync() {\n const req = FileRequest.borrow()\n\n try {\n binding.closedirSync(req.handle, this._handle)\n } catch (e) {\n throw new FileError(e.message, {\n operation: 'closedir',\n code: e.code,\n path: this.path\n })\n } finally {\n req.return()\n }\n\n this._handle = null\n }\n\n [Symbol.dispose]() {\n this.closeSync()\n }\n\n async [Symbol.asyncDispose]() {\n await this.close()\n }\n\n *[Symbol.iterator]() {\n while (true) {\n const entry = this.readSync()\n if (entry === null) break\n yield entry\n }\n\n this.closeSync()\n }\n\n async *[Symbol.asyncIterator]() {\n while (true) {\n const entry = await this.read()\n if (entry === null) break\n yield entry\n }\n\n await this.close()\n }\n}\n\nclass Dirent {\n constructor(parentPath, name, type) {\n this.parentPath = parentPath\n this.name = name\n this.type = type\n }\n\n isFile() {\n return this.type === constants.UV_DIRENT_FILE\n }\n\n isDirectory() {\n return this.type === constants.UV_DIRENT_DIR\n }\n\n isSymbolicLink() {\n return this.type === constants.UV_DIRENT_LINK\n }\n\n isFIFO() {\n return this.type === constants.UV_DIRENT_FIFO\n }\n\n isSocket() {\n return this.type === constants.UV_DIRENT_SOCKET\n }\n\n isCharacterDevice() {\n return this.type === constants.UV_DIRENT_CHAR\n }\n\n isBlockDevice() {\n return this.type === constants.UV_DIRENT_BLOCK\n }\n}\n\nclass FileReadStream extends Readable {\n constructor(path, opts = {}) {\n const { eagerOpen = true } = opts\n\n super({ eagerOpen, ...opts })\n\n this.path = path\n this.fd = typeof opts.fd === 'number' ? opts.fd : -1\n this.flags = opts.flags || 'r'\n this.mode = opts.mode || 0o666\n\n this._offset = opts.start || 0\n this._missing = 0\n\n if (opts.length) {\n this._missing = opts.length\n } else if (typeof opts.end === 'number') {\n this._missing = opts.end - this._offset + 1\n } else {\n this._missing = -1\n }\n }\n\n async _open(cb) {\n let err\n\n if (this.fd === -1) {\n err = null\n try {\n this.fd = await open(this.path, this.flags, this.mode)\n } catch (e) {\n err = e\n }\n\n if (err) return cb(err)\n }\n\n let st\n err = null\n try {\n st = await fstat(this.fd)\n } catch (e) {\n err = e\n }\n\n if (err) return cb(err)\n\n if (this._missing === -1) this._missing = st.size\n\n if (st.size < this._offset) {\n this._offset = st.size\n this._missing = 0\n } else if (st.size < this._offset + this._missing) {\n this._missing = st.size - this._offset\n }\n\n cb(null)\n }\n\n async _read(size) {\n if (this._missing <= 0) return this.push(null)\n\n const data = Buffer.allocUnsafe(Math.min(this._missing, size))\n\n let len\n let err = null\n try {\n len = await read(this.fd, data, 0, data.byteLength, this._offset)\n } catch (e) {\n err = e\n }\n\n if (err) return this.destroy(err)\n\n if (len === 0) return this.push(null)\n\n if (this._missing < len) len = this._missing\n\n this._missing -= len\n this._offset += len\n\n this.push(data.subarray(0, len))\n }\n\n async _destroy(err, cb) {\n if (this.fd === -1) return cb(err)\n\n try {\n await close(this.fd)\n } catch (e) {\n err = err || e\n }\n\n cb(err)\n }\n}\n\nclass FileWriteStream extends Writable {\n constructor(path, opts = {}) {\n const { eagerOpen = true } = opts\n\n super({ eagerOpen, ...opts })\n\n this.path = path\n this.fd = typeof opts.fd === 'number' ? opts.fd : -1\n this.flags = opts.flags || 'w'\n this.mode = opts.mode || 0o666\n }\n\n async _open(cb) {\n if (this.fd !== -1) return cb(null)\n\n let err = null\n try {\n this.fd = await open(this.path, this.flags, this.mode)\n } catch (e) {\n err = e\n }\n\n cb(err)\n }\n\n async _writev(batch, cb) {\n let err = null\n try {\n await writev(\n this.fd,\n batch.map(({ chunk }) => chunk)\n )\n } catch (e) {\n err = e\n }\n\n cb(err)\n }\n\n async _destroy(err, cb) {\n if (this.fd === -1) return cb(err)\n\n try {\n await close(this.fd)\n } catch (e) {\n err = err || e\n }\n\n cb(err)\n }\n}\n\nclass Watcher extends EventEmitter {\n constructor(path, opts, onchange) {\n if (typeof opts === 'function') {\n onchange = opts\n opts = {}\n }\n\n if (!opts) opts = {}\n\n const { persistent = true, recursive = false, encoding = 'utf8' } = opts\n\n super()\n\n this._closed = false\n this._encoding = encoding\n this._handle = binding.watcherInit(path, recursive, this, this._onevent, this._onclose)\n\n if (!persistent) this.unref()\n\n if (onchange) this.on('change', onchange)\n }\n\n close() {\n if (this._closed) return\n this._closed = true\n\n binding.watcherClose(this._handle)\n }\n\n ref() {\n if (this._handle) binding.watcherRef(this._handle)\n return this\n }\n\n unref() {\n if (this._handle) binding.watcherUnref(this._handle)\n return this\n }\n\n [Symbol.asyncIterator]() {\n const buffer = []\n let done = false\n let error = null\n let next = null\n\n this.on('change', (eventType, filename) => {\n if (next) {\n next.resolve({ done: false, value: { eventType, filename } })\n next = null\n } else {\n buffer.push({ eventType, filename })\n }\n })\n .on('error', (err) => {\n done = true\n error = err\n\n if (next) {\n next.reject(error)\n next = null\n }\n })\n .on('close', () => {\n done = true\n\n if (next) {\n next.resolve({ done })\n next = null\n }\n })\n\n return {\n next: () =>\n new Promise((resolve, reject) => {\n if (error) return reject(error)\n\n if (buffer.length) return resolve({ done: false, value: buffer.shift() })\n\n if (done) return resolve({ done })\n\n next = { resolve, reject }\n })\n }\n }\n\n _onevent(err, events, filename) {\n if (err) {\n this.close()\n this.emit('error', err)\n } else {\n const path =\n this._encoding === 'buffer'\n ? Buffer.from(filename)\n : Buffer.from(filename).toString(this._encoding)\n\n if (events & binding.UV_RENAME) {\n this.emit('change', 'rename', path)\n }\n\n if (events & binding.UV_CHANGE) {\n this.emit('change', 'change', path)\n }\n }\n }\n\n _onclose() {\n this._handle = null\n\n this.emit('close')\n }\n}\n\nexports.access = access\nexports.appendFile = appendFile\nexports.chmod = chmod\nexports.chown = chown\nexports.close = close\nexports.copyFile = copyFile\nexports.cp = cp\nexports.exists = exists\nexports.fchmod = fchmod\nexports.fchown = fchown\nexports.fdatasync = fdatasync\nexports.fstat = fstat\nexports.fsync = fsync\nexports.ftruncate = ftruncate\nexports.futimes = futimes\nexports.lchown = lchown\nexports.lutimes = lutimes\nexports.link = link\nexports.lstat = lstat\nexports.mkdir = mkdir\nexports.mkdtemp = mkdtemp\nexports.open = open\nexports.opendir = opendir\nexports.read = read\nexports.readFile = readFile\nexports.readdir = readdir\nexports.readlink = readlink\nexports.readv = readv\nexports.realpath = realpath\nexports.rename = rename\nexports.rm = rm\nexports.rmdir = rmdir\nexports.stat = stat\nexports.statfs = statfs\nexports.symlink = symlink\nexports.truncate = truncate\nexports.unlink = unlink\nexports.utimes = utimes\nexports.watch = watch\nexports.write = write\nexports.writeFile = writeFile\nexports.writev = writev\n\nexports.accessSync = accessSync\nexports.appendFileSync = appendFileSync\nexports.chmodSync = chmodSync\nexports.chownSync = chownSync\nexports.closeSync = closeSync\nexports.copyFileSync = copyFileSync\nexports.cpSync = cpSync\nexports.existsSync = existsSync\nexports.fchmodSync = fchmodSync\nexports.fchownSync = fchownSync\nexports.fdatasyncSync = fdatasyncSync\nexports.fstatSync = fstatSync\nexports.fsyncSync = fsyncSync\nexports.ftruncateSync = ftruncateSync\nexports.futimesSync = futimesSync\nexports.lchownSync = lchownSync\nexports.lutimesSync = lutimesSync\nexports.linkSync = linkSync\nexports.lstatSync = lstatSync\nexports.mkdirSync = mkdirSync\nexports.mkdtempSync = mkdtempSync\nexports.openSync = openSync\nexports.opendirSync = opendirSync\nexports.readFileSync = readFileSync\nexports.readSync = readSync\nexports.readdirSync = readdirSync\nexports.readlinkSync = readlinkSync\nexports.readvSync = readvSync\nexports.realpathSync = realpathSync\nexports.renameSync = renameSync\nexports.rmSync = rmSync\nexports.rmdirSync = rmdirSync\nexports.statSync = statSync\nexports.statfsSync = statfsSync\nexports.symlinkSync = symlinkSync\nexports.truncateSync = truncateSync\nexports.unlinkSync = unlinkSync\nexports.utimesSync = utimesSync\nexports.writeFileSync = writeFileSync\nexports.writeSync = writeSync\nexports.writevSync = writevSync\n\nexports.promises = require('./promises')\n\nexports.Stats = Stats\nexports.StatFs = StatFs\nexports.Dir = Dir\nexports.Dirent = Dirent\nexports.Watcher = Watcher\n\nexports.ReadStream = FileReadStream\n\nexports.createReadStream = function createReadStream(path, opts) {\n return new FileReadStream(path, opts)\n}\n\nexports.WriteStream = FileWriteStream\n\nexports.createWriteStream = function createWriteStream(path, opts) {\n return new FileWriteStream(path, opts)\n}\n\nfunction toNamespacedPath(filepath) {\n if (typeof filepath !== 'string') {\n if (isURL(filepath)) filepath = fileURLToPath(filepath)\n else filepath = filepath.toString()\n }\n\n return path.toNamespacedPath(filepath)\n}\n\nfunction toFlags(flags) {\n switch (flags) {\n case 'r':\n return constants.O_RDONLY\n case 'rs': // Fall through.\n case 'sr':\n return constants.O_RDONLY | constants.O_SYNC\n case 'r+':\n return constants.O_RDWR\n case 'rs+': // Fall through.\n case 'sr+':\n return constants.O_RDWR | constants.O_SYNC\n\n case 'w':\n return constants.O_TRUNC | constants.O_CREAT | constants.O_WRONLY\n case 'wx': // Fall through.\n case 'xw':\n return constants.O_TRUNC | constants.O_CREAT | constants.O_WRONLY | constants.O_EXCL\n\n case 'w+':\n return constants.O_TRUNC | constants.O_CREAT | constants.O_RDWR\n case 'wx+': // Fall through.\n case 'xw+':\n return constants.O_TRUNC | constants.O_CREAT | constants.O_RDWR | constants.O_EXCL\n\n case 'a':\n return constants.O_APPEND | constants.O_CREAT | constants.O_WRONLY\n case 'ax': // Fall through.\n case 'xa':\n return constants.O_APPEND | constants.O_CREAT | constants.O_WRONLY | constants.O_EXCL\n case 'as': // Fall through.\n case 'sa':\n return constants.O_APPEND | constants.O_CREAT | constants.O_WRONLY | constants.O_SYNC\n\n case 'a+':\n return constants.O_APPEND | constants.O_CREAT | constants.O_RDWR\n case 'ax+': // Fall through.\n case 'xa+':\n return constants.O_APPEND | constants.O_CREAT | constants.O_RDWR | constants.O_EXCL\n case 'as+': // Fall through.\n case 'sa+':\n return constants.O_APPEND | constants.O_CREAT | constants.O_RDWR | constants.O_SYNC\n default:\n return 0\n }\n}\n\nfunction toMode(mode) {\n return parseInt(mode, 8)\n}\nconst binding = require('../binding')\n\nmodule.exports = {\n O_RDWR: binding.O_RDWR,\n O_RDONLY: binding.O_RDONLY,\n O_WRONLY: binding.O_WRONLY,\n O_CREAT: binding.O_CREAT,\n O_TRUNC: binding.O_TRUNC,\n O_APPEND: binding.O_APPEND,\n\n F_OK: binding.F_OK || 0,\n R_OK: binding.R_OK || 0,\n W_OK: binding.W_OK || 0,\n X_OK: binding.X_OK || 0,\n\n S_IFMT: binding.S_IFMT,\n S_IFREG: binding.S_IFREG,\n S_IFDIR: binding.S_IFDIR,\n S_IFCHR: binding.S_IFCHR,\n S_IFLNK: binding.S_IFLNK,\n S_IFBLK: binding.S_IFBLK || 0,\n S_IFIFO: binding.S_IFIFO || 0,\n S_IFSOCK: binding.S_IFSOCK || 0,\n\n S_IRUSR: binding.S_IRUSR || 0,\n S_IWUSR: binding.S_IWUSR || 0,\n S_IXUSR: binding.S_IXUSR || 0,\n S_IRGRP: binding.S_IRGRP || 0,\n S_IWGRP: binding.S_IWGRP || 0,\n S_IXGRP: binding.S_IXGRP || 0,\n S_IROTH: binding.S_IROTH || 0,\n S_IWOTH: binding.S_IWOTH || 0,\n S_IXOTH: binding.S_IXOTH || 0,\n\n UV_DIRENT_UNKNOWN: binding.UV_DIRENT_UNKNOWN,\n UV_DIRENT_FILE: binding.UV_DIRENT_FILE,\n UV_DIRENT_DIR: binding.UV_DIRENT_DIR,\n UV_DIRENT_LINK: binding.UV_DIRENT_LINK,\n UV_DIRENT_FIFO: binding.UV_DIRENT_FIFO,\n UV_DIRENT_SOCKET: binding.UV_DIRENT_SOCKET,\n UV_DIRENT_CHAR: binding.UV_DIRENT_CHAR,\n UV_DIRENT_BLOCK: binding.UV_DIRENT_BLOCK,\n\n COPYFILE_EXCL: binding.UV_FS_COPYFILE_EXCL,\n COPYFILE_FICLONE: binding.UV_FS_COPYFILE_FICLONE,\n COPYFILE_FICLONE_FORCE: binding.UV_FS_COPYFILE_FICLONE_FORCE,\n UV_FS_SYMLINK_DIR: binding.UV_FS_SYMLINK_DIR,\n UV_FS_SYMLINK_JUNCTION: binding.UV_FS_SYMLINK_JUNCTION\n}\nconst binding = require('../binding')\n\nmodule.exports = class FileError extends Error {\n constructor(msg, opts = {}) {\n const { code, operation = null, path = null, destination = null, fd = -1 } = opts\n\n if (operation !== null) msg += describe(operation, opts)\n\n super(`${code}: ${msg}`)\n\n this.code = code\n\n if (operation !== null) this.operation = operation\n if (path !== null) this.path = path\n if (destination !== null) this.destination = destination\n if (fd !== -1) this.fd = fd\n }\n\n get name() {\n return 'FileError'\n }\n\n // For Node.js compatibility\n get errno() {\n return binding.errnos[this.code]\n }\n\n // For Node.js compatibility\n get syscall() {\n return this.operation\n }\n\n // For Node.js compatibility\n get dest() {\n return this.destination\n }\n}\n\nfunction describe(operation, opts) {\n const { path = null, destination = null, fd = -1 } = opts\n\n let result = `, ${operation}`\n\n if (path !== null) {\n result += ` ${JSON.stringify(path)}`\n\n if (destination !== null) {\n result += ` -> ${JSON.stringify(destination)}`\n }\n } else if (fd !== -1) {\n result += ` ${fd}`\n }\n\n return result\n}\n{\n \"name\": \"bare-fs\",\n \"version\": \"4.7.4\",\n \"description\": \"Native file system operations for Bare\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./promises\": {\n \"types\": \"./promises.d.ts\",\n \"default\": \"./promises.js\"\n },\n \"./constants\": {\n \"types\": \"./lib/constants.d.ts\",\n \"default\": \"./lib/constants.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"promises.js\",\n \"promises.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-fs.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-fs/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-fs#readme\",\n \"engines\": {\n \"bare\": \">=1.16.0\"\n },\n \"dependencies\": {\n \"bare-events\": \"^2.5.4\",\n \"bare-path\": \"^3.0.0\",\n \"bare-stream\": \"^2.6.4\",\n \"bare-url\": \"^2.2.2\",\n \"fast-fifo\": \"^1.3.2\"\n },\n \"devDependencies\": {\n \"bare-buffer\": \"^3.0.2\",\n \"bare-crypto\": \"^1.11.2\",\n \"brittle\": \"^3.1.1\",\n \"cmake-bare\": \"^1.1.7\",\n \"lunte\": \"^1.6.0\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"peerDependencies\": {\n \"bare-buffer\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"bare-buffer\": {\n \"optional\": true\n }\n }\n}\nconst EventEmitter = require('bare-events')\nconst fs = require('.')\n\nclass FileHandle extends EventEmitter {\n constructor(fd) {\n super()\n\n this.fd = fd\n }\n\n async close() {\n await fs.close(this.fd)\n\n this.fd = -1\n this.emit('close')\n }\n\n async read(buffer, ...args) {\n return {\n bytesRead: await fs.read(this.fd, buffer, ...args),\n buffer\n }\n }\n\n async readv(buffers, ...args) {\n return {\n bytesRead: await fs.readv(this.fd, buffers, ...args),\n buffers\n }\n }\n\n async write(buffer, ...args) {\n return {\n bytesWritten: await fs.write(this.fd, buffer, ...args),\n buffer\n }\n }\n\n async writev(buffers, ...args) {\n return {\n bytesWritten: await fs.writev(this.fd, buffers, ...args),\n buffers\n }\n }\n\n async stat() {\n return fs.fstat(this.fd)\n }\n\n async chmod(mode) {\n await fs.fchmod(this.fd, mode)\n }\n\n async chown(uid, gid) {\n await fs.fchown(this.fd, uid, gid)\n }\n\n async datasync() {\n return fs.fdatasync(this.fd)\n }\n\n async sync() {\n return fs.fsync(this.fd)\n }\n\n async truncate(len) {\n await fs.ftruncate(this.fd, len)\n }\n\n async utimes(atime, mtime) {\n await fs.futimes(this.fd, atime, mtime)\n }\n\n createReadStream(opts) {\n return fs.createReadStream(null, { ...opts, fd: this.fd })\n }\n\n createWriteStream(opts) {\n return fs.createWriteStream(null, { ...opts, fd: this.fd })\n }\n\n async [Symbol.asyncDispose]() {\n await this.close()\n }\n}\n\nexports.open = async function open(filepath, flags, mode) {\n return new FileHandle(await fs.open(filepath, flags, mode))\n}\n\nexports.access = fs.access\nexports.appendFile = fs.appendFile\nexports.chmod = fs.chmod\nexports.chown = fs.chown\nexports.constants = fs.constants\nexports.copyFile = fs.copyFile\nexports.cp = fs.cp\nexports.lchown = fs.lchown\nexports.lutimes = fs.lutimes\nexports.link = fs.link\nexports.lstat = fs.lstat\nexports.mkdir = fs.mkdir\nexports.mkdtemp = fs.mkdtemp\nexports.opendir = fs.opendir\nexports.readFile = fs.readFile\nexports.readdir = fs.readdir\nexports.readlink = fs.readlink\nexports.realpath = fs.realpath\nexports.rename = fs.rename\nexports.rm = fs.rm\nexports.rmdir = fs.rmdir\nexports.stat = fs.stat\nexports.statfs = fs.statfs\nexports.truncate = fs.truncate\nexports.symlink = fs.symlink\nexports.unlink = fs.unlink\nexports.utimes = fs.utimes\nexports.watch = fs.watch\nexports.writeFile = fs.writeFile\nconst errors = require('./lib/errors')\n\nconst constants = {\n REQUEST: 1,\n RESPONSE: 2,\n DATA: 3,\n END: 4\n}\n\nconst TAB = 0x09\nconst LF = 0x0a\nconst CR = 0x0d\nconst SP = 0x20\nconst ZERO = 0x30\nconst NINE = 0x39\nconst UPPER_A = 0x41\nconst UPPER_F = 0x46\nconst UPPER_Z = 0x5a\nconst LOWER_A = 0x61\nconst LOWER_F = 0x66\nconst COLON = 0x3a\n\nconst MAX_CHUNK_SIZE_LENGTH = 16\n\n// Header states\nconst FIRST_TOKEN = 0\nconst REQUEST_URL = 1\nconst REQUEST_VERSION = 2\nconst STATUS_CODE = 3\nconst STATUS_REASON = 4\nconst FIRST_LINE_LF = 5\nconst HEADER_START = 6\nconst HEADER_NAME = 7\nconst HEADER_VALUE_WS = 8\nconst HEADER_VALUE = 9\nconst HEADER_LINE_LF = 10\nconst HEADER_END_LF = 11\n\n// Body states\nconst BODY = 12\nconst CHUNK_SIZE = 13\nconst CHUNK_SIZE_LF = 14\nconst CHUNK_DATA = 15\nconst CHUNK_EXTENSION = 16\n\n// Trailing states\nconst LAST_CHUNK_LF = 17\nconst TRAILER_CR = 18\nconst TRAILER_LF = 19\n\nmodule.exports = exports = class HTTPParser {\n constructor(opts = {}) {\n const { maxHeaderSize = 16384, maxHeadersCount = 2000 } = opts\n\n this._maxHeaderSize = maxHeaderSize\n this._maxHeadersCount = maxHeadersCount\n this._state = FIRST_TOKEN\n this._buffer = []\n this._bufferIndex = 0\n this._byteIndex = 0\n this._buffered = 0\n this._accumulator = []\n\n this._isResponse = false\n this._method = ''\n this._url = ''\n this._version = ''\n this._code = 0\n this._reason = ''\n\n this._headerName = ''\n this._headers = Object.create(null)\n this._headerCount = 0\n this._headerSize = 0\n\n this._remaining = 0\n }\n\n *push(data, encoding) {\n if (typeof data === 'string') data = Buffer.from(data, encoding)\n\n this._buffer.push(data)\n this._buffered += data.byteLength\n\n yield* this._parse()\n\n this._compact()\n }\n\n end() {\n const buffers = this._buffer\n const bufferIndex = this._bufferIndex\n const byteIndex = this._byteIndex\n\n this._buffer = []\n this._bufferIndex = 0\n this._byteIndex = 0\n this._buffered = 0\n\n if (bufferIndex >= buffers.length) return Buffer.alloc(0)\n\n buffers[bufferIndex] = buffers[bufferIndex].subarray(byteIndex)\n\n const remaining = buffers.slice(bufferIndex)\n\n if (remaining.length === 0) return Buffer.alloc(0)\n if (remaining.length === 1) return remaining[0]\n\n return Buffer.concat(remaining)\n }\n\n _compact() {\n if (this._bufferIndex > 0) {\n this._buffer = this._buffer.slice(this._bufferIndex)\n this._bufferIndex = 0\n }\n\n if (this._byteIndex > 0 && this._buffer.length > 0) {\n this._buffer[0] = this._buffer[0].subarray(this._byteIndex)\n this._byteIndex = 0\n }\n }\n\n _consume(n) {\n this._buffered -= n\n\n const current = this._buffer[this._bufferIndex]\n\n if (this._byteIndex + n <= current.byteLength) {\n const slice = current.subarray(this._byteIndex, this._byteIndex + n)\n\n this._byteIndex += n\n\n if (this._byteIndex >= current.byteLength) {\n this._bufferIndex++\n this._byteIndex = 0\n }\n\n return slice\n }\n\n const result = Buffer.allocUnsafe(n)\n\n let written = 0\n\n while (written < n) {\n const buffer = this._buffer[this._bufferIndex]\n const available = buffer.byteLength - this._byteIndex\n const take = Math.min(available, n - written)\n\n buffer.copy(result, written, this._byteIndex, this._byteIndex + take)\n\n written += take\n\n this._byteIndex += take\n\n if (this._byteIndex >= buffer.byteLength) {\n this._bufferIndex++\n this._byteIndex = 0\n }\n }\n\n return result\n }\n\n _buildString() {\n const string = String.fromCharCode.apply(null, this._accumulator)\n\n this._accumulator = []\n\n return string\n }\n\n _checkHeaderSize() {\n if (++this._headerSize > this._maxHeaderSize) {\n throw errors.INVALID_MESSAGE('Header exceeds limit of ' + this._maxHeaderSize + ' bytes')\n }\n }\n\n _storeHeader(name, value) {\n let end = value.length\n\n while (end > 0 && (value.charCodeAt(end - 1) === SP || value.charCodeAt(end - 1) === TAB)) {\n end--\n }\n\n if (end < value.length) value = value.substring(0, end)\n\n this._headerCount++\n\n if (this._headerCount > this._maxHeadersCount) {\n throw errors.INVALID_MESSAGE('Header count exceeds limit of ' + this._maxHeadersCount)\n }\n\n switch (name) {\n case '__proto__':\n case 'constructor':\n case 'prototype':\n throw errors.INVALID_HEADER(\"Unsafe header name '\" + name + \"'\")\n\n case 'host':\n case 'content-length':\n case 'transfer-encoding':\n if (name in this._headers) {\n throw errors.INVALID_HEADER(\"Duplicate header '\" + name + \"'\")\n }\n\n this._headers[name] = value\n break\n\n default: {\n const delimiter = name === 'cookie' ? '; ' : ', '\n\n if (name in this._headers) {\n this._headers[name] += delimiter + value\n } else {\n this._headers[name] = value\n }\n }\n }\n }\n\n *_parse() {\n while (true) {\n if (this._state === BODY) {\n if (this._buffered === 0) return\n\n const available = Math.min(this._buffered, this._remaining)\n const data = this._consume(available)\n\n this._remaining -= available\n\n const ended = this._remaining === 0\n\n if (ended) this._state = FIRST_TOKEN\n\n yield { type: constants.DATA, data }\n\n if (ended) yield { type: constants.END }\n\n continue\n }\n\n if (this._state === CHUNK_DATA) {\n if (this._buffered < this._remaining) return\n\n const consumed = this._consume(this._remaining)\n\n if (consumed[this._remaining - 2] !== CR || consumed[this._remaining - 1] !== LF) {\n throw errors.INVALID_MESSAGE('Expected CRLF after chunk data')\n }\n\n const data = consumed.subarray(0, this._remaining - 2)\n\n this._remaining = 0\n this._state = CHUNK_SIZE\n\n yield { type: constants.DATA, data }\n\n continue\n }\n\n if (this._buffered === 0) return\n\n const byte = this._buffer[this._bufferIndex][this._byteIndex++]\n\n this._buffered--\n\n if (this._byteIndex >= this._buffer[this._bufferIndex].byteLength) {\n this._bufferIndex++\n this._byteIndex = 0\n }\n\n switch (this._state) {\n case FIRST_TOKEN: {\n this._checkHeaderSize()\n\n if (byte === SP) {\n const token = this._buildString()\n\n if (token.length === 0) throw errors.INVALID_MESSAGE()\n\n this._isResponse = token.startsWith('HTTP/')\n\n if (this._isResponse) {\n if (token !== 'HTTP/1.0' && token !== 'HTTP/1.1') {\n throw errors.INVALID_MESSAGE()\n }\n\n this._version = token\n this._state = STATUS_CODE\n } else {\n this._method = token\n this._state = REQUEST_URL\n }\n } else if (byte === CR) {\n throw errors.INVALID_MESSAGE()\n } else if (isTokenByte(byte)) {\n this._accumulator.push(byte)\n } else if (\n byte === 0x2f &&\n this._accumulator.length === 4 &&\n this._accumulator[0] === 0x48 &&\n this._accumulator[1] === 0x54 &&\n this._accumulator[2] === 0x54 &&\n this._accumulator[3] === 0x50\n ) {\n this._accumulator.push(byte)\n } else {\n throw errors.INVALID_MESSAGE()\n }\n\n break\n }\n\n case REQUEST_URL: {\n this._checkHeaderSize()\n\n if (byte === SP) {\n this._url = this._buildString()\n\n if (this._url.length === 0) throw errors.INVALID_MESSAGE()\n\n this._state = REQUEST_VERSION\n } else if (byte === CR) {\n throw errors.INVALID_MESSAGE()\n } else if (byte >= 0x21 && byte !== 0x7f) {\n this._accumulator.push(byte)\n } else {\n throw errors.INVALID_MESSAGE()\n }\n\n break\n }\n\n case REQUEST_VERSION: {\n this._checkHeaderSize()\n\n if (byte === CR) {\n this._version = this._buildString()\n\n if (this._version !== 'HTTP/1.0' && this._version !== 'HTTP/1.1') {\n throw errors.INVALID_MESSAGE()\n }\n\n this._state = FIRST_LINE_LF\n } else if (byte >= 0x21 && byte !== 0x7f) {\n this._accumulator.push(byte)\n } else {\n throw errors.INVALID_MESSAGE()\n }\n\n break\n }\n\n case STATUS_CODE: {\n this._checkHeaderSize()\n\n if (byte === SP) {\n if (this._accumulator.length === 0) throw errors.INVALID_MESSAGE()\n\n let code = 0\n\n for (let i = 0, n = this._accumulator.length; i < n; i++) {\n code = code * 10 + this._accumulator[i]\n }\n\n this._accumulator = []\n\n if (code < 100 || code > 999) throw errors.INVALID_MESSAGE()\n\n this._code = code\n this._state = STATUS_REASON\n } else if (byte >= ZERO && byte <= NINE) {\n this._accumulator.push(byte - ZERO)\n } else {\n throw errors.INVALID_MESSAGE()\n }\n\n break\n }\n\n case STATUS_REASON: {\n this._checkHeaderSize()\n\n if (byte === CR) {\n this._reason = this._buildString()\n this._state = FIRST_LINE_LF\n } else if (isFieldByte(byte)) {\n this._accumulator.push(byte)\n } else {\n throw errors.INVALID_MESSAGE()\n }\n\n break\n }\n\n case FIRST_LINE_LF: {\n if (byte !== LF) throw errors.INVALID_MESSAGE()\n\n this._headers = Object.create(null)\n this._headerCount = 0\n this._state = HEADER_START\n\n break\n }\n\n case HEADER_START: {\n this._checkHeaderSize()\n\n if (byte === CR) {\n this._state = HEADER_END_LF\n } else if (byte !== COLON && isTokenByte(byte)) {\n this._accumulator.push(byte >= UPPER_A && byte <= UPPER_Z ? byte + 0x20 : byte)\n this._state = HEADER_NAME\n } else {\n throw errors.INVALID_HEADER()\n }\n\n break\n }\n\n case HEADER_NAME: {\n this._checkHeaderSize()\n\n if (byte === COLON) {\n this._headerName = this._buildString()\n this._state = HEADER_VALUE_WS\n } else if (byte !== COLON && isTokenByte(byte)) {\n this._accumulator.push(byte >= UPPER_A && byte <= UPPER_Z ? byte + 0x20 : byte)\n } else {\n throw errors.INVALID_HEADER()\n }\n\n break\n }\n\n case HEADER_VALUE_WS: {\n this._checkHeaderSize()\n\n if (byte === SP || byte === TAB) break\n\n if (byte === CR) {\n this._storeHeader(this._headerName, '')\n this._headerName = ''\n this._state = HEADER_LINE_LF\n\n break\n }\n\n if (!isFieldByte(byte)) throw errors.INVALID_HEADER()\n\n this._accumulator.push(byte)\n this._state = HEADER_VALUE\n\n break\n }\n\n case HEADER_VALUE: {\n this._checkHeaderSize()\n\n if (byte === CR) {\n this._storeHeader(this._headerName, this._buildString())\n this._headerName = ''\n this._state = HEADER_LINE_LF\n } else if (isFieldByte(byte)) {\n this._accumulator.push(byte)\n } else {\n throw errors.INVALID_HEADER()\n }\n\n break\n }\n\n case HEADER_LINE_LF: {\n if (byte !== LF) throw errors.INVALID_HEADER()\n\n this._state = HEADER_START\n\n break\n }\n\n case HEADER_END_LF: {\n if (byte !== LF) throw errors.INVALID_MESSAGE()\n\n const headers = { ...this._headers }\n\n if (this._isResponse) {\n yield {\n type: constants.RESPONSE,\n version: this._version,\n code: this._code,\n reason: this._reason,\n headers\n }\n } else {\n if (this._version === 'HTTP/1.1' && !('host' in headers)) {\n throw errors.INVALID_HEADER(\"Header 'Host' is missing\")\n }\n\n yield {\n type: constants.REQUEST,\n version: this._version,\n method: this._method,\n url: this._url,\n headers\n }\n }\n\n const transferEncoding = headers['transfer-encoding']\n const contentLength = headers['content-length']\n\n if (transferEncoding) {\n const encodings = transferEncoding.split(',')\n\n let chunkedCount = 0\n\n for (let i = 0, n = encodings.length; i < n; i++) {\n if (encodings[i].trim().toLowerCase() === 'chunked') chunkedCount++\n }\n\n const lastEncoding = encodings[encodings.length - 1].trim().toLowerCase()\n\n if (lastEncoding !== 'chunked') {\n throw errors.INVALID_MESSAGE(\"'Transfer-Encoding' must end with 'chunked'\")\n }\n\n if (chunkedCount > 1) {\n throw errors.INVALID_MESSAGE(\n \"'chunked' must not appear more than once in 'Transfer-Encoding'\"\n )\n }\n\n if (contentLength) {\n throw errors.INVALID_MESSAGE(\n \"Conflicting 'Content-Length' and 'Transfer-Encoding' headers\"\n )\n }\n\n this._state = CHUNK_SIZE\n this._headerSize = 0\n\n continue\n }\n\n if (contentLength) {\n if (contentLength.length === 0) throw errors.INVALID_CONTENT_LENGTH()\n\n let length = 0\n\n for (let i = 0, n = contentLength.length; i < n; i++) {\n const c = contentLength.charCodeAt(i)\n\n if (c < ZERO || c > NINE) throw errors.INVALID_CONTENT_LENGTH()\n\n length = length * 10 + (c - ZERO)\n }\n\n if (!Number.isSafeInteger(length) || length < 0) {\n throw errors.INVALID_CONTENT_LENGTH()\n }\n\n if (length === 0) {\n this._state = FIRST_TOKEN\n this._headerSize = 0\n\n yield { type: constants.END }\n } else {\n this._state = BODY\n this._remaining = length\n this._headerSize = 0\n }\n } else {\n this._state = FIRST_TOKEN\n this._headerSize = 0\n\n yield { type: constants.END }\n }\n\n break\n }\n\n case CHUNK_SIZE: {\n if (byte === CR || byte === 0x3b) {\n if (this._accumulator.length === 0) throw errors.INVALID_CHUNK_LENGTH()\n\n let length = 0\n\n for (let i = 0, n = this._accumulator.length; i < n; i++) {\n length = length * 16 + this._accumulator[i]\n }\n\n this._accumulator = []\n\n if (!Number.isSafeInteger(length)) throw errors.INVALID_CHUNK_LENGTH()\n\n if (byte === 0x3b) {\n this._remaining = length\n this._state = CHUNK_EXTENSION\n } else if (length === 0) {\n this._state = LAST_CHUNK_LF\n } else {\n this._remaining = length + 2\n this._state = CHUNK_SIZE_LF\n }\n } else if (isHex(byte)) {\n if (this._accumulator.length >= MAX_CHUNK_SIZE_LENGTH) {\n throw errors.INVALID_CHUNK_LENGTH()\n }\n\n this._accumulator.push(hexValue(byte))\n } else {\n throw errors.INVALID_CHUNK_LENGTH()\n }\n\n break\n }\n\n case CHUNK_EXTENSION: {\n this._checkHeaderSize()\n\n if (byte === CR) {\n if (this._remaining === 0) {\n this._state = LAST_CHUNK_LF\n } else {\n this._remaining += 2\n this._state = CHUNK_SIZE_LF\n }\n } else if (!isFieldByte(byte)) {\n throw errors.INVALID_CHUNK_LENGTH()\n }\n\n break\n }\n\n case CHUNK_SIZE_LF: {\n if (byte !== LF) throw errors.INVALID_CHUNK_LENGTH()\n\n this._state = CHUNK_DATA\n\n break\n }\n\n case LAST_CHUNK_LF: {\n if (byte !== LF) throw errors.INVALID_CHUNK_LENGTH()\n\n this._state = TRAILER_CR\n\n break\n }\n\n case TRAILER_CR: {\n if (byte !== CR) throw errors.INVALID_MESSAGE()\n\n this._state = TRAILER_LF\n\n break\n }\n\n case TRAILER_LF: {\n if (byte !== LF) throw errors.INVALID_MESSAGE()\n\n this._state = FIRST_TOKEN\n this._headerSize = 0\n\n yield { type: constants.END }\n\n break\n }\n\n default:\n throw errors.INVALID_MESSAGE()\n }\n }\n }\n}\n\nexports.constants = constants\n\nconst TOKEN_BYTES = Buffer.from([\n // 0x00-0x1f (control characters) + 0x20 (space)\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n // 0x21-0x41: ! \" # $ % & ' ( ) * + , - . / 0-9 : ; < = > ? @ A\n 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1,\n // 0x42-0x62: B-Z [ \\ ] ^ _ ` a b\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,\n // 0x63-0x7f: c-z { | } ~ DEL\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0\n])\n\nfunction isTokenByte(b) {\n return TOKEN_BYTES[b] === 1\n}\n\nfunction isFieldByte(b) {\n return b === TAB || (b >= 0x20 && b <= 0x7e)\n}\n\nfunction isHex(b) {\n return (\n (b >= ZERO && b <= NINE) || (b >= UPPER_A && b <= UPPER_F) || (b >= LOWER_A && b <= LOWER_F)\n )\n}\n\nfunction hexValue(b) {\n if (b >= ZERO && b <= NINE) return b - ZERO\n if (b >= UPPER_A && b <= UPPER_F) return b - UPPER_A + 10\n return b - LOWER_A + 10\n}\nmodule.exports = class HTTPParserError extends Error {\n constructor(msg, fn = HTTPParserError, code = fn.name) {\n super(`${code}: ${msg}`)\n\n this.code = code\n\n if (Error.captureStackTrace) Error.captureStackTrace(this, fn)\n }\n\n get name() {\n return 'HTTPParserError'\n }\n\n static INVALID_MESSAGE(msg = 'Invalid HTTP message') {\n return new HTTPParserError(msg, HTTPParserError.INVALID_MESSAGE)\n }\n\n static INVALID_HEADER(msg = 'Invalid HTTP header') {\n return new HTTPParserError(msg, HTTPParserError.INVALID_HEADER)\n }\n\n static INVALID_CONTENT_LENGTH(msg = 'Invalid HTTP Content-Length') {\n return new HTTPParserError(msg, HTTPParserError.INVALID_CONTENT_LENGTH)\n }\n\n static INVALID_CHUNK_LENGTH(msg = 'Invalid HTTP chunk length') {\n return new HTTPParserError(msg, HTTPParserError.INVALID_CHUNK_LENGTH)\n }\n}\n{\n \"name\": \"bare-http-parser\",\n \"version\": \"1.1.5\",\n \"description\": \"Streaming HTTP request and response parser for Bare\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": \"./index.js\",\n \"./errors\": \"./lib/errors.js\"\n },\n \"files\": [\n \"index.js\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-http-parser.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-http-parser/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-http-parser#readme\",\n \"devDependencies\": {\n \"brittle\": \"^3.3.0\",\n \"lunte\": \"^1.8.0\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nexports.IncomingMessage = require('./lib/incoming-message')\nexports.OutgoingMessage = require('./lib/outgoing-message')\n\nexports.Agent = require('./lib/agent')\nexports.globalAgent = exports.Agent.global\n\nexports.Server = require('./lib/server')\nexports.ServerResponse = require('./lib/server-response')\nexports.ServerConnection = require('./lib/server-connection')\n\nexports.ClientRequest = require('./lib/client-request')\nexports.ClientConnection = require('./lib/client-connection')\n\nexports.constants = require('./lib/constants')\nexports.errors = require('./lib/errors')\n\nexports.METHODS = Object.values(exports.constants.method) // For Node.js compatibility\nexports.STATUS_CODES = exports.constants.status // For Node.js compatibility\n\nexports.createServer = function createServer(opts, onrequest) {\n return new exports.Server(opts, onrequest)\n}\n\nexports.request = function request(url, opts, onresponse) {\n if (typeof opts === 'function') {\n onresponse = opts\n opts = {}\n }\n\n if (typeof url === 'string') url = new URL(url)\n\n if (isURL(url)) {\n opts = opts ? { ...url, ...opts } : { ...url }\n\n opts.host = url.hostname\n opts.path = url.pathname + url.search\n opts.port = url.port ? parseInt(url.port, 10) : defaultPort(url)\n } else {\n opts = url ? { ...url } : {}\n\n // For Node.js compatibility\n opts.host = opts.hostname || opts.host\n opts.port = typeof opts.port === 'string' ? parseInt(opts.port, 10) : opts.port\n }\n\n return new exports.ClientRequest(opts, onresponse)\n}\n\nexports.get = function get(url, opts, onresponse) {\n const req = exports.request(url, opts, onresponse)\n req.end()\n return req\n}\n\n// https://url.spec.whatwg.org/#default-port\nfunction defaultPort(url) {\n switch (url.protocol) {\n case 'ftp:':\n return 21\n case 'http:':\n case 'ws:':\n return 80\n case 'https:':\n case 'wss:':\n return 443\n }\n\n return null\n}\n\n// https://url.spec.whatwg.org/#api\nfunction isURL(url) {\n return (\n url !== null &&\n typeof url === 'object' &&\n typeof url.protocol === 'string' &&\n typeof url.hostname === 'string' &&\n typeof url.pathname === 'string' &&\n typeof url.search === 'string'\n )\n}\nconst EventEmitter = require('bare-events')\nconst tcp = require('bare-tcp')\nconst HTTPClientConnection = require('./client-connection')\nconst errors = require('./errors')\n\nclass HTTPSocketSet {\n constructor() {\n this._sockets = new Map()\n this._size = 0\n }\n\n get size() {\n return this._size\n }\n\n add(name, socket) {\n const sockets = this._sockets.get(name)\n\n this._size++\n\n if (sockets === undefined) this._sockets.set(name, [socket])\n else sockets.push(socket)\n }\n\n pop(name) {\n const sockets = this._sockets.get(name)\n if (sockets === undefined || sockets.length === 0) return null\n\n this._size--\n\n const last = sockets.pop()\n\n if (sockets.length === 0) this._sockets.delete(name)\n\n return last\n }\n\n delete(name, socket) {\n const sockets = this._sockets.get(name)\n if (sockets === undefined) return\n\n const i = sockets.indexOf(socket)\n if (i === -1) return\n\n this._size--\n\n const last = sockets.pop()\n if (last !== socket) sockets[i] = last\n\n if (sockets.length === 0) this._sockets.delete(name)\n }\n\n *sockets() {\n for (const sockets of this._sockets.values()) {\n yield* sockets\n }\n }\n\n *[Symbol.iterator]() {\n for (const [name, sockets] of this._sockets) {\n for (const socket of sockets) yield [name, socket]\n }\n }\n}\n\nclass HTTPAgent extends EventEmitter {\n constructor(opts = {}) {\n super()\n\n const { keepAlive = false, keepAliveMsecs = 1000, defaultPort = 80 } = opts\n\n this._suspended = false\n this._resuming = null\n\n this._sockets = new HTTPSocketSet()\n this._freeSockets = new HTTPSocketSet()\n\n this._keepAlive = typeof keepAlive === 'number' ? keepAlive : keepAlive ? keepAliveMsecs : -1\n this._defaultPort = defaultPort\n\n this._opts = { ...opts }\n }\n\n get suspended() {\n return this._suspended\n }\n\n get resumed() {\n return this._resuming ? this._resuming.promise : null\n }\n\n get sockets() {\n return this._sockets.sockets()\n }\n\n get freeSockets() {\n return this._freeSockets.sockets()\n }\n\n get defaultPort() {\n return this._defaultPort\n }\n\n createConnection(opts) {\n if (this._suspended) throw errors.AGENT_SUSPENDED()\n\n return tcp.createConnection(opts)\n }\n\n reuseSocket(socket, req) {\n socket.ref()\n }\n\n keepSocketAlive(socket) {\n if (this._keepAlive === -1) return false\n\n socket.setKeepAlive(true, this._keepAlive)\n socket.unref()\n\n return true\n }\n\n getName(opts) {\n return `${opts.host}:${opts.port}`\n }\n\n addRequest(req, opts) {\n opts = { ...opts, ...this._opts }\n\n const name = this.getName(opts)\n\n let socket = this._freeSockets.pop(name)\n\n if (socket) this.reuseSocket(socket, req)\n else {\n const agent = this\n\n socket = this.createConnection(opts)\n\n socket\n .on('error', noop) // someone needs to handle it\n .on('free', onfree)\n .on('end', onremove)\n .on('finish', onremove)\n .on('close', onremove)\n .on('timeout', ontimeout)\n\n function onfree() {\n if (socket.destroyed) return\n\n if (agent.keepSocketAlive(socket)) {\n agent._freeSockets.add(name, socket)\n } else {\n socket.end()\n }\n\n agent.emit('free', socket)\n }\n\n function onremove() {\n socket.off('free', onfree)\n\n agent._sockets.delete(name, socket)\n agent._freeSockets.delete(name, socket)\n\n if (agent._sockets.size === 0) HTTPAgent._agents.delete(agent)\n }\n\n function ontimeout() {\n socket.destroy()\n\n agent._freeSockets.delete(name, socket)\n }\n }\n\n if (this._sockets.size === 0) HTTPAgent._agents.add(this)\n\n this._sockets.add(name, socket)\n\n req._socket = socket\n\n const connection = HTTPClientConnection.from(socket, opts)\n\n connection._req = req\n }\n\n suspend() {\n if (this._suspended) return\n\n this._resuming = Promise.withResolvers()\n this._suspended = true\n\n this.destroy()\n }\n\n resume() {\n if (this._resuming === null) return\n\n this._resuming.resolve()\n this._resuming = null\n this._suspended = false\n }\n\n destroy() {\n for (const socket of this._sockets.sockets()) socket.destroy()\n }\n\n static _agents = new Set()\n\n static _onidle() {\n for (const agent of this._agents) {\n agent.destroy()\n }\n }\n}\n\nHTTPAgent.global = new HTTPAgent({ keepAlive: 1000, timeout: 5000 })\n\nmodule.exports = HTTPAgent\n\nBare.on('idle', HTTPAgent._onidle.bind(HTTPAgent))\n\nfunction noop() {}\nconst HTTPParser = require('bare-http-parser')\nconst HTTPIncomingMessage = require('./incoming-message')\nconst errors = require('./errors')\n\nconst {\n constants: { RESPONSE, DATA, END }\n} = HTTPParser\n\nconst EMPTY = Buffer.alloc(0)\n\nmodule.exports = class HTTPClientConnection {\n static _connections = new WeakMap()\n\n static for(socket) {\n return this._connections.get(socket) || null\n }\n\n static from(socket, opts) {\n return this.for(socket) || new this(socket, opts)\n }\n\n constructor(socket, opts = {}) {\n const { IncomingMessage = HTTPIncomingMessage } = opts\n\n this._socket = socket\n\n this._req = null\n this._res = null\n\n this._IncomingMessage = IncomingMessage\n\n this._parser = new HTTPParser()\n this._idle = true\n\n this._onerror = this._onerror.bind(this)\n this._onclose = this._onclose.bind(this)\n this._onend = this._onend.bind(this)\n this._ondata = this._ondata.bind(this)\n this._ondrain = this._ondrain.bind(this)\n this._ontimeout = this._ontimeout.bind(this)\n\n socket\n .on('error', this._onerror)\n .on('close', this._onclose)\n .on('end', this._onend)\n .on('data', this._ondata)\n .on('drain', this._ondrain)\n .on('timeout', this._ontimeout)\n\n HTTPClientConnection._connections.set(socket, this)\n }\n\n get socket() {\n return this._socket\n }\n\n get req() {\n return this._req\n }\n\n get res() {\n return this._res\n }\n\n get idle() {\n return this._idle\n }\n\n _onerror(err) {\n if (this._req) this._req.destroy(err)\n }\n\n _onclose() {\n if (this._req) this._req.destroy()\n }\n\n _onend() {\n if (this._req) this._req.destroy(errors.CONNECTION_LOST())\n }\n\n _ondata(data) {\n this._idle = false\n\n try {\n for (const op of this._parser.push(data)) {\n switch (op.type) {\n case RESPONSE:\n this._req.on('close', () => {\n this._req = null\n })\n\n this._res = new this._IncomingMessage(this._socket, {\n headers: op.headers,\n statusCode: op.code,\n statusMessage: op.reason\n })\n\n this._res.on('close', () => {\n this._res = null\n this._idle = true\n\n this._socket.emit('free')\n })\n\n if (op.headers.connection && op.headers.connection.toLowerCase() === 'upgrade') {\n return this._onupgrade(this._parser.end())\n }\n\n this._req.emit('response', this._res)\n break\n\n case DATA:\n this._res.push(op.data)\n break\n\n case END:\n if (this._res) {\n this._res._socket = null\n this._res.push(null)\n }\n\n if (this._req) {\n this._req._socket = null\n this._req.destroy()\n }\n break\n }\n }\n } catch (err) {\n this._socket.destroy(err)\n }\n }\n\n _onupgrade(data) {\n this._detach()\n\n const res = this._res\n const req = this._req\n\n res._upgrade = req._upgrade = true\n\n const upgraded = req.emit('upgrade', res, this._socket, data || EMPTY)\n\n res.push(null)\n req.destroy()\n\n if (!upgraded) this._socket.destroy()\n }\n\n _ontimeout() {\n if (this._req) this._req.emit('timeout')\n }\n\n _ondrain() {\n if (this._req) this._req._continueWrite()\n }\n\n _detach() {\n this._socket\n .off('error', this._onerror)\n .off('close', this._onclose)\n .off('end', this._onend)\n .off('data', this._ondata)\n .off('drain', this._ondrain)\n .off('timeout', this._ontimeout)\n\n HTTPClientConnection._connections.delete(this._socket)\n }\n}\nconst HTTPAgent = require('./agent')\nconst HTTPOutgoingMessage = require('./outgoing-message')\nconst validate = require('./validate')\n\nconst CHUNK_DELIMITER = Buffer.from('\\r\\n')\nconst CHUNK_TERMINATOR = Buffer.from('0\\r\\n\\r\\n')\n\nmodule.exports = class HTTPClientRequest extends HTTPOutgoingMessage {\n constructor(opts = {}, onresponse = null) {\n if (typeof opts === 'function') {\n onresponse = opts\n opts = {}\n }\n\n opts = opts ? { ...opts } : {}\n\n const agent = opts.agent === false ? new HTTPAgent() : opts.agent || HTTPAgent.global\n const method = opts.method || 'GET'\n const path = opts.path || '/'\n const defaultPort = opts.defaultPort || (agent && agent.defaultPort) || 80\n const host = (opts.host = opts.host || 'localhost')\n const port = (opts.port = opts.port || defaultPort)\n const headers = { host: hostHeader(host, port, defaultPort), ...opts.headers }\n\n validate.validateMethod(method)\n validate.validatePath(path)\n\n for (const name of Object.keys(headers)) {\n const n = name.toLowerCase()\n\n validate.validateHeaderName(n)\n validate.validateHeaderValue(n, headers[name])\n }\n\n super()\n\n agent.addRequest(this, opts)\n\n this._headers = headers\n this._method = method\n this._path = path\n\n this._chunked = method !== 'GET' && method !== 'HEAD'\n\n this._pendingWrite = null\n this._pendingFinal = null\n\n if (onresponse) this.once('response', onresponse)\n }\n\n get method() {\n return this._method\n }\n\n get path() {\n return this._path\n }\n\n // For Node.js compatibility\n abort() {\n return this.destroy()\n }\n\n _header() {\n validate.validateMethod(this._method)\n validate.validatePath(this._path)\n\n let h = `${this._method} ${this._path} HTTP/1.1\\r\\n`\n\n let upgrade = false\n\n for (const name of Object.keys(this._headers)) {\n const n = name.toLowerCase()\n const v = this._headers[name]\n\n validate.validateHeaderName(n)\n validate.validateHeaderValue(n, v)\n\n if (n === 'content-length') this._chunked = false\n if (n === 'connection' && v && v.toLowerCase() === 'upgrade') upgrade = true\n\n h += `${httpCase(n)}: ${v}\\r\\n`\n }\n\n if (upgrade) this._chunked = false\n\n if (this._chunked) h += 'Transfer-Encoding: chunked\\r\\n'\n\n h += '\\r\\n'\n\n return h\n }\n\n _write(data, encoding, cb) {\n if (this._headersSent === false) this.flushHeaders()\n\n if (this._chunked) {\n this._socket.write(Buffer.from(data.byteLength.toString(16)))\n this._socket.write(CHUNK_DELIMITER)\n }\n\n let flushed = this._socket.write(data)\n\n if (this._chunked) flushed = this._socket.write(CHUNK_DELIMITER)\n\n if (flushed) cb(null)\n else this._pendingWrite = cb\n }\n\n _final(cb) {\n if (this._headersSent === false) this.flushHeaders()\n\n if (this._chunked) this._socket.write(CHUNK_TERMINATOR)\n\n this._pendingFinal = cb\n }\n\n _predestroy() {\n super._predestroy()\n\n this._continueWrite()\n this._continueFinal()\n }\n\n _continueWrite() {\n if (this._pendingWrite === null) return\n const cb = this._pendingWrite\n this._pendingWrite = null\n cb(null)\n }\n\n _continueFinal() {\n if (this._pendingFinal === null) return\n const cb = this._pendingFinal\n this._pendingFinal = null\n cb(null)\n }\n}\n\nfunction httpCase(n) {\n let s = ''\n for (const part of n.split('-')) {\n s += (s ? '-' : '') + part.slice(0, 1).toUpperCase() + part.slice(1)\n }\n return s\n}\n\nfunction hostHeader(host, port, defaultPort) {\n const i = host.indexOf(':')\n\n if (i !== -1 && host.includes(':', i + 1) && host.charCodeAt(0) !== 91 /* [ */) {\n host = `[${host}]`\n }\n\n if (port && +port !== defaultPort) {\n host += ':' + port\n }\n\n return host\n}\nmodule.exports = {\n method: {\n GET: 'GET',\n HEAD: 'HEAD',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE',\n CONNECT: 'CONNECT',\n OPTIONS: 'OPTIONS',\n TRACE: 'TRACE',\n PATCH: 'PATCH'\n },\n status: {\n 100: 'Continue',\n 101: 'Switching Protocols',\n 102: 'Processing',\n 103: 'Early Hints',\n 200: 'OK',\n 201: 'Created',\n 202: 'Accepted',\n 203: 'Non-Authoritative Information',\n 204: 'No Content',\n 205: 'Reset Content',\n 206: 'Partial Content',\n 207: 'Multi-Status',\n 208: 'Already Reported',\n 226: 'IM Used',\n 300: 'Multiple Choices',\n 301: 'Moved Permanently',\n 302: 'Found',\n 303: 'See Other',\n 304: 'Not Modified',\n 305: 'Use Proxy',\n 307: 'Temporary Redirect',\n 308: 'Permanent Redirect',\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required',\n 408: 'Request Timeout',\n 409: 'Conflict',\n 410: 'Gone',\n 411: 'Length Required',\n 412: 'Precondition Failed',\n 413: 'Payload Too Large',\n 414: 'URI Too Long',\n 415: 'Unsupported Media Type',\n 416: 'Range Not Satisfiable',\n 417: 'Expectation Failed',\n 418: \"I'm a Teapot\",\n 421: 'Misdirected Request',\n 422: 'Unprocessable Entity',\n 423: 'Locked',\n 424: 'Failed Dependency',\n 425: 'Too Early',\n 426: 'Upgrade Required',\n 428: 'Precondition Required',\n 429: 'Too Many Requests',\n 431: 'Request Header Fields Too Large',\n 451: 'Unavailable For Legal Reasons',\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Timeout',\n 505: 'HTTP Version Not Supported',\n 506: 'Variant Also Negotiates',\n 507: 'Insufficient Storage',\n 508: 'Loop Detected',\n 509: 'Bandwidth Limit Exceeded',\n 510: 'Not Extended',\n 511: 'Network Authentication Required'\n }\n}\nmodule.exports = class HTTPError extends Error {\n constructor(msg, fn = HTTPError, code = fn.name) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'HTTPError'\n }\n\n static NOT_IMPLEMENTED(msg = 'Method not implemented') {\n return new HTTPError(msg, HTTPError.NOT_IMPLEMENTED)\n }\n\n static CONNECTION_LOST(msg = 'Socket hung up') {\n return new HTTPError(msg, HTTPError.CONNECTION_LOST)\n }\n\n static AGENT_SUSPENDED(msg = 'Agent is suspended') {\n return new HTTPError(msg, HTTPError.AGENT_SUSPENDED)\n }\n\n static INVALID_HEADER_NAME(msg = 'Invalid header name') {\n return new HTTPError(msg, HTTPError.INVALID_HEADER_NAME)\n }\n\n static INVALID_HEADER_VALUE(msg = 'Invalid header value') {\n return new HTTPError(msg, HTTPError.INVALID_HEADER_VALUE)\n }\n}\nconst { Readable } = require('bare-stream')\n\nmodule.exports = class HTTPIncomingMessage extends Readable {\n constructor(socket = null, opts = {}) {\n super()\n\n this._socket = socket\n this._upgrade = false\n this._headers = opts.headers || {}\n\n // Server options\n this._method = opts.method || ''\n this._url = opts.url || ''\n\n // Client options\n this._statusCode = opts.statusCode || 0\n this._statusMessage = opts.statusMessage || ''\n }\n\n get socket() {\n return this._socket\n }\n\n get upgrade() {\n return this._upgrade\n }\n\n get headers() {\n return this._headers\n }\n\n set headers(value) {\n this._headers = value\n }\n\n get method() {\n return this._method\n }\n\n set method(value) {\n this._method = value\n }\n\n get url() {\n return this._url\n }\n\n set url(value) {\n this._url = value\n }\n\n get statusCode() {\n return this._statusCode\n }\n\n set statusCode(value) {\n this._statusCode = value\n }\n\n get statusMessage() {\n return this._statusMessage\n }\n\n set statusMessage(value) {\n this._statusMessage = value\n }\n\n get httpVersion() {\n return '1.1'\n }\n\n getHeader(name) {\n return this._headers[name.toLowerCase()]\n }\n\n getHeaders() {\n return { ...this._headers }\n }\n\n hasHeader(name) {\n return name.toLowerCase() in this._headers\n }\n\n setTimeout(ms, ontimeout) {\n if (ontimeout) this.once('timeout', ontimeout)\n\n this._socket.setTimeout(ms)\n\n return this\n }\n\n _predestroy() {\n if (this._upgrade === false && this._socket !== null) this._socket.destroy()\n }\n}\nconst { Writable } = require('bare-stream')\nconst errors = require('./errors')\nconst validate = require('./validate')\n\nmodule.exports = class HTTPOutgoingMessage extends Writable {\n constructor(socket = null) {\n super()\n\n this._socket = socket\n this._upgrade = false\n this._headersSent = false\n this._headers = {}\n }\n\n get socket() {\n return this._socket\n }\n\n get upgrade() {\n return this._upgrade\n }\n\n get headersSent() {\n return this._headersSent\n }\n\n get headers() {\n return this._headers\n }\n\n set headers(value) {\n if (value) {\n for (const name of Object.keys(value)) {\n const n = name.toLowerCase()\n\n validate.validateHeaderName(n)\n validate.validateHeaderValue(n, value[name])\n }\n }\n\n this._headers = value\n }\n\n getHeader(name) {\n return this._headers[name.toLowerCase()]\n }\n\n getHeaders() {\n return { ...this._headers }\n }\n\n hasHeader(name) {\n return name.toLowerCase() in this._headers\n }\n\n setHeader(name, value) {\n const n = name.toLowerCase()\n\n validate.validateHeaderName(n)\n validate.validateHeaderValue(n, value)\n\n this._headers[n] = value\n }\n\n flushHeaders() {\n if (this._headersSent === true || this._socket === null) return\n\n this._socket.write(Buffer.from(this._header()))\n this._headersSent = true\n }\n\n setTimeout(ms, ontimeout) {\n if (ontimeout) this.once('timeout', ontimeout)\n\n this._socket.setTimeout(ms)\n\n return this\n }\n\n _header() {\n throw errors.NOT_IMPLEMENTED()\n }\n\n _predestroy() {\n if (this._upgrade === false && this._socket !== null) this._socket.destroy()\n }\n}\nconst { isEnded, isFinished, getStreamError } = require('bare-stream')\nconst HTTPParser = require('bare-http-parser')\nconst HTTPIncomingMessage = require('./incoming-message')\nconst HTTPServerResponse = require('./server-response')\n\nconst {\n constants: { REQUEST, DATA, END }\n} = HTTPParser\n\nconst EMPTY = Buffer.alloc(0)\n\nmodule.exports = class HTTPServerConnection {\n static _connections = new WeakMap()\n\n static for(socket) {\n return this._connections.get(socket) || null\n }\n\n constructor(server, socket, opts = {}) {\n const { IncomingMessage = HTTPIncomingMessage, ServerResponse = HTTPServerResponse } = opts\n\n this._server = server\n this._socket = socket\n\n this._req = null\n this._res = null\n\n this._IncomingMessage = IncomingMessage\n this._ServerResponse = ServerResponse\n\n this._parser = new HTTPParser()\n this._idle = true\n\n this._onclose = this._onclose.bind(this)\n this._ondata = this._ondata.bind(this)\n this._ondrain = this._ondrain.bind(this)\n this._ontimeout = this._ontimeout.bind(this)\n\n socket\n .on('error', noop)\n .on('close', this._onclose)\n .on('data', this._ondata)\n .on('drain', this._ondrain)\n .on('timeout', this._ontimeout)\n\n HTTPServerConnection._connections.set(socket, this)\n\n if (this._server.timeout) socket.setTimeout(this._server.timeout)\n }\n\n get server() {\n return this._server\n }\n\n get socket() {\n return this._socket\n }\n\n get req() {\n return this._req\n }\n\n get res() {\n return this._res\n }\n\n get idle() {\n return this._idle\n }\n\n _onclose() {\n if (this._req && !isEnded(this._req)) this._req.destroy()\n if (this._res && !isFinished(this._res)) this._res.destroy()\n\n const err = getStreamError(this._socket)\n if (err) this._socket.destroy(err)\n }\n\n _ondata(data) {\n this._idle = false\n\n try {\n for (const op of this._parser.push(data)) {\n switch (op.type) {\n case REQUEST:\n this._req = new this._IncomingMessage(this._socket, {\n headers: op.headers,\n method: op.method,\n url: op.url\n })\n\n this._req.on('close', () => {\n this._req = null\n\n this._idle = true\n\n if (this._server.closing) this._socket.destroy()\n })\n\n // Eagerly open the request stream\n this._req.resume()\n this._req.pause()\n\n if (op.headers.connection && op.headers.connection.toLowerCase() === 'upgrade') {\n return this._onupgrade(this._parser.end())\n }\n\n this._res = new this._ServerResponse(this._socket, this._req)\n\n this._res.on('close', () => {\n this._res = null\n })\n\n this._server.emit('request', this._req, this._res)\n break\n\n case DATA:\n this._req.push(op.data)\n break\n\n case END:\n if (this._req) {\n this._req._socket = null\n this._req.push(null)\n }\n break\n }\n }\n } catch (err) {\n this._socket.destroy(err)\n }\n }\n\n _onupgrade(data) {\n this._detach()\n\n const req = this._req\n\n req._upgrade = true\n\n const upgraded = this._server.emit('upgrade', req, this._socket, data || EMPTY)\n\n req.push(null)\n\n if (!upgraded) this._socket.destroy()\n }\n\n _ontimeout() {\n const reqTimeout = this._req && this._req.emit('timeout')\n const resTimeout = this._res && this._res.emit('timeout')\n const serverTimeout = this._server.emit('timeout', this._socket)\n\n if (!reqTimeout && !resTimeout && !serverTimeout) this._socket.destroy()\n }\n\n _ondrain() {\n if (this._res) this._res._continueWrite()\n }\n\n _detach() {\n this._socket\n .off('error', noop)\n .off('close', this._onclose)\n .off('data', this._ondata)\n .off('drain', this._ondrain)\n .off('timeout', this._ontimeout)\n\n HTTPServerConnection._connections.delete(this._socket)\n }\n}\n\nfunction noop() {}\nconst { isFinishing } = require('bare-stream')\nconst HTTPOutgoingMessage = require('./outgoing-message')\nconst constants = require('./constants')\nconst validate = require('./validate')\n\nconst CHUNK_DELIMITER = Buffer.from('\\r\\n')\nconst CHUNK_TERMINATOR = Buffer.from('0\\r\\n\\r\\n')\n\nmodule.exports = class HTTPServerResponse extends HTTPOutgoingMessage {\n constructor(socket, req) {\n super(socket)\n\n this._req = req\n\n this._statusCode = 200\n this._statusMessage = null\n\n this._chunked = true\n this._close = req.headers.connection === 'close'\n this._onlyHeaders = req.method === 'HEAD'\n\n this._pendingWrite = null\n }\n\n get req() {\n return this._req\n }\n\n get statusCode() {\n return this._statusCode\n }\n\n set statusCode(value) {\n this._statusCode = value\n }\n\n get statusMessage() {\n return this._statusMessage\n }\n\n set statusMessage(value) {\n validate.validateStatusMessage(value)\n\n this._statusMessage = value\n }\n\n writeHead(statusCode, statusMessage = null, headers = {}) {\n if (typeof statusMessage === 'object' && statusMessage !== null) {\n headers = statusMessage\n statusMessage = null\n }\n\n if (statusMessage !== null) validate.validateStatusMessage(statusMessage)\n\n if (headers) {\n for (const name of Object.keys(headers)) {\n const n = name.toLowerCase()\n\n validate.validateHeaderName(n)\n validate.validateHeaderValue(n, headers[name])\n }\n }\n\n this._statusCode = statusCode\n this._statusMessage = statusMessage || null\n\n if (headers) this._headers = { ...this._headers, ...headers }\n }\n\n _header() {\n const statusMessage =\n this._statusMessage === null ? constants.status[this._statusCode] : this._statusMessage\n\n validate.validateStatusMessage(statusMessage)\n\n let h = 'HTTP/1.1 ' + this._statusCode + ' ' + statusMessage + '\\r\\n'\n\n for (const name of Object.keys(this._headers)) {\n const n = name.toLowerCase()\n const v = this._headers[name]\n\n validate.validateHeaderName(n)\n validate.validateHeaderValue(n, v)\n\n if (n === 'content-length') this._chunked = false\n if (n === 'connection' && v && v.toLowerCase() === 'close') this._close = true\n\n h += httpCase(n) + ': ' + v + '\\r\\n'\n }\n\n if (this._chunked) h += 'Transfer-Encoding: chunked\\r\\n'\n\n h += '\\r\\n'\n\n return h\n }\n\n _write(data, encoding, cb) {\n if (this._headersSent === false) {\n if (isFinishing(this)) {\n this.setHeader(\n 'Content-Length',\n (data.byteLength + this._writableState.buffered).toString()\n )\n }\n\n this.flushHeaders()\n }\n\n if (this._onlyHeaders === true) return cb(null)\n\n if (this._chunked) {\n this._socket.write(Buffer.from(data.byteLength.toString(16)))\n this._socket.write(CHUNK_DELIMITER)\n }\n\n let flushed = this._socket.write(data)\n\n if (this._chunked) flushed = this._socket.write(CHUNK_DELIMITER)\n\n if (flushed) cb(null)\n else this._pendingWrite = cb\n }\n\n _final(cb) {\n if (this._headersSent === false) {\n this.setHeader('Content-Length', '0')\n this.flushHeaders()\n }\n\n if (this._chunked && this._onlyHeaders === false) this._socket.write(CHUNK_TERMINATOR)\n\n if (this._close) this._socket.end()\n\n cb(null)\n }\n\n _predestroy() {\n super._predestroy()\n\n this._req.destroy()\n\n this._continueWrite()\n }\n\n _continueWrite() {\n if (this._pendingWrite === null) return\n const cb = this._pendingWrite\n this._pendingWrite = null\n cb(null)\n }\n}\n\nfunction httpCase(n) {\n let s = ''\n for (const part of n.split('-')) {\n s += (s ? '-' : '') + part.slice(0, 1).toUpperCase() + part.slice(1)\n }\n return s\n}\nconst TCPServer = require('bare-tcp').Server\nconst HTTPServerConnection = require('./server-connection')\n\nmodule.exports = class HTTPServer extends TCPServer {\n constructor(opts = {}, onrequest) {\n if (typeof opts === 'function') {\n onrequest = opts\n opts = {}\n }\n\n super({ allowHalfOpen: false })\n\n this._timeout = 0\n\n this.on('connection', (socket) => {\n new HTTPServerConnection(this, socket, opts)\n })\n\n if (onrequest) this.on('request', onrequest)\n }\n\n get timeout() {\n return this._timeout || undefined // For Node.js compatibility\n }\n\n setTimeout(ms = 0, ontimeout) {\n if (ontimeout) this.on('timeout', ontimeout)\n\n this._timeout = ms\n\n return this\n }\n\n close(onclose) {\n super.close(onclose)\n\n for (const socket of this.connections) {\n const connection = HTTPServerConnection.for(socket)\n\n if (connection === null || connection.idle) {\n socket.destroy()\n }\n }\n\n return this\n }\n}\nconst errors = require('./errors')\n\n// RFC 7230 token = 1*tchar\nconst TOKEN_RE = /^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/\n\n// Reject characters that would terminate or split the current line\nconst VALUE_INVALID_RE = /[\\r\\n\\0]/\n\n// Reject control chars and whitespace in the request-target\nconst PATH_INVALID_RE = /[\\r\\n\\0\\s]/\n\nexports.validateHeaderName = function (name) {\n if (typeof name !== 'string' || !TOKEN_RE.test(name)) {\n throw errors.INVALID_HEADER_NAME(`Invalid header name: ${JSON.stringify(name)}`)\n }\n}\n\nexports.validateHeaderValue = function (name, value) {\n if (value === undefined || value === null) return\n if (VALUE_INVALID_RE.test(String(value))) {\n throw errors.INVALID_HEADER_VALUE(\n `Invalid character in header value for ${JSON.stringify(name)}`\n )\n }\n}\n\nexports.validateStatusMessage = function (value) {\n if (value === undefined || value === null) return\n if (VALUE_INVALID_RE.test(String(value))) {\n throw errors.INVALID_HEADER_VALUE('Invalid character in status message')\n }\n}\n\nexports.validatePath = function (value) {\n if (typeof value !== 'string' || value.length === 0 || PATH_INVALID_RE.test(value)) {\n throw errors.INVALID_HEADER_VALUE(`Invalid character in request path: ${JSON.stringify(value)}`)\n }\n}\n\nexports.validateMethod = function (value) {\n if (typeof value !== 'string' || !TOKEN_RE.test(value)) {\n throw errors.INVALID_HEADER_NAME(`Invalid HTTP method: ${JSON.stringify(value)}`)\n }\n}\n{\n \"name\": \"bare-http1\",\n \"version\": \"4.5.7\",\n \"description\": \"Native HTTP/1 library for JavaScript\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./constants\": {\n \"types\": \"./lib/constants.d.ts\",\n \"default\": \"./lib/constants.js\"\n },\n \"./errors\": {\n \"types\": \"./lib/errors.d.ts\",\n \"default\": \"./lib/errors.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-http1.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-http1/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-http1#readme\",\n \"dependencies\": {\n \"bare-events\": \"^2.6.0\",\n \"bare-http-parser\": \"^1.1.1\",\n \"bare-stream\": \"^2.10.0\",\n \"bare-tcp\": \"^2.2.0\"\n },\n \"devDependencies\": {\n \"bare-buffer\": \"^3.0.2\",\n \"bare-url\": \"^2.1.3\",\n \"brittle\": \"^3.3.0\",\n \"lunte\": \"^1.6.0\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"peerDependencies\": {\n \"bare-buffer\": \"*\",\n \"bare-url\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"bare-buffer\": {\n \"optional\": true\n },\n \"bare-url\": {\n \"optional\": true\n }\n }\n}\nexports.Agent = require('./lib/agent')\nexports.globalAgent = exports.Agent.global\n\nexports.Server = require('./lib/server')\n\nexports.ClientRequest = require('./lib/client-request')\n\nexports.createServer = function createServer(opts, onrequest) {\n return new exports.Server(opts, onrequest)\n}\n\nexports.request = function request(url, opts, onresponse) {\n if (typeof opts === 'function') {\n onresponse = opts\n opts = {}\n }\n\n if (typeof url === 'string') url = new URL(url)\n\n if (isURL(url)) {\n opts = opts ? { ...url, ...opts } : { ...url }\n\n opts.host = url.hostname\n opts.path = url.pathname + url.search\n opts.port = url.port ? parseInt(url.port, 10) : defaultPort(url)\n } else {\n opts = url ? { ...url } : {}\n\n // For Node.js compatibility\n opts.host = opts.hostname || opts.host\n opts.port = typeof opts.port === 'string' ? parseInt(opts.port, 10) : opts.port\n }\n\n return new exports.ClientRequest(opts, onresponse)\n}\n\n// https://url.spec.whatwg.org/#default-port\nfunction defaultPort(url) {\n switch (url.protocol) {\n case 'ftp:':\n return 21\n case 'http:':\n case 'ws:':\n return 80\n case 'https:':\n case 'wss:':\n return 443\n }\n\n return null\n}\n\n// https://url.spec.whatwg.org/#api\nfunction isURL(url) {\n return (\n url !== null &&\n typeof url === 'object' &&\n typeof url.protocol === 'string' &&\n typeof url.hostname === 'string' &&\n typeof url.pathname === 'string' &&\n typeof url.search === 'string'\n )\n}\nconst HTTPAgent = require('bare-http1').Agent\nconst HTTPSSocket = require('./socket')\n\nclass HTTPSAgent extends HTTPAgent {\n constructor(opts = {}) {\n super({ defaultPort: 443, ...opts })\n }\n\n createConnection(opts) {\n return new HTTPSSocket(super.createConnection(opts), opts)\n }\n}\n\nHTTPSAgent.global = new HTTPSAgent({ keepAlive: 1000, timeout: 5000 })\n\nmodule.exports = HTTPSAgent\nconst HTTPClientRequest = require('bare-http1').ClientRequest\nconst HTTPSAgent = require('./agent')\n\nmodule.exports = class HTTPSClientRequest extends HTTPClientRequest {\n constructor(opts = {}, onresponse = null) {\n if (typeof opts === 'function') {\n onresponse = opts\n opts = {}\n }\n\n opts = opts ? { ...opts } : {}\n\n opts.agent = opts.agent === false ? new HTTPSAgent() : opts.agent || HTTPSAgent.global\n\n super(opts, onresponse)\n }\n}\nconst TCPServer = require('bare-tcp').Server\nconst HTTPServerConnection = require('bare-http1').ServerConnection\nconst HTTPSSocket = require('./socket')\n\nmodule.exports = class HTTPSServer extends TCPServer {\n constructor(opts = {}, onrequest) {\n if (typeof opts === 'function') {\n onrequest = opts\n opts = {}\n }\n\n super({ allowHalfOpen: false })\n\n this._timeout = 0\n\n this.on('connection', (socket) => {\n new HTTPServerConnection(this, new HTTPSSocket(socket, { ...opts, isServer: true }), opts)\n })\n\n if (onrequest) this.on('request', onrequest)\n }\n\n get timeout() {\n return this._timeout || undefined // For Node.js compatibility\n }\n\n setTimeout(ms = 0, ontimeout) {\n if (ontimeout) this.on('timeout', ontimeout)\n\n this._timeout = ms\n\n return this\n }\n\n close(onclose) {\n super.close(onclose)\n\n for (const socket of this.connections) {\n const connection = HTTPServerConnection.for(socket)\n\n if (connection === null || connection.idle) {\n socket.destroy()\n }\n }\n\n return this\n }\n}\nconst TLSSocket = require('bare-tls').Socket\n\nmodule.exports = class HTTPSSocket extends TLSSocket {\n setKeepAlive(...args) {\n this.socket.setKeepAlive(...args)\n\n return this\n }\n\n setNoDelay(...args) {\n this.socket.setNoDelay(...args)\n\n return this\n }\n\n setTimeout(...args) {\n this.socket.setTimeout(...args)\n\n return this\n }\n\n ref() {\n this.socket.ref()\n\n return this\n }\n\n unref() {\n this.socket.unref()\n\n return this\n }\n}\n{\n \"name\": \"bare-https\",\n \"version\": \"3.0.0\",\n \"description\": \"HTTPS library for JavaScript\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-https.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-https/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-https#readme\",\n \"dependencies\": {\n \"bare-http1\": \"^4.4.0\",\n \"bare-tcp\": \"^2.2.0\",\n \"bare-tls\": \"^3.0.0\"\n },\n \"devDependencies\": {\n \"bare-fs\": \"^4.0.0\",\n \"brittle\": \"^3.3.0\",\n \"lunte\": \"^1.7.0\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nmodule.exports = require.addon()\nconst ansiEscapes = require('bare-ansi-escapes')\nconst getType = require('bare-type')\nconst binding = require('./binding')\n\nconst PLAIN_KEY = /^[a-zA-Z_][a-zA-Z_0-9]*$/\n\nconst defaultDepth = 2\nconst defaultBreakLength = 80\nconst defaultMaxArrayLength = 40\n\nmodule.exports = exports = function inspect(value, opts = {}) {\n const {\n colors = false,\n depth = defaultDepth,\n breakLength = defaultBreakLength,\n stylize = defaultStylize(colors)\n } = opts\n\n const references = new InspectRefMap()\n\n const tree = inspectValue(value, 0, {\n colors,\n depth,\n breakLength,\n stylize,\n references\n })\n\n return tree.toString()\n}\n\nexports.styles = {\n bigint: ansiEscapes.colorYellow,\n boolean: ansiEscapes.colorYellow,\n date: ansiEscapes.colorMagenta,\n module: ansiEscapes.modifierUnderline,\n name: ansiEscapes.modifierReset,\n null: ansiEscapes.modifierBold,\n number: ansiEscapes.colorYellow,\n regexp: ansiEscapes.colorRed,\n special: ansiEscapes.colorCyan,\n string: ansiEscapes.colorGreen,\n symbol: ansiEscapes.colorGreen,\n undefined: ansiEscapes.colorBrightBlack\n}\n\nconst styles = exports.styles\n\nfunction defaultStylize(colors) {\n return function stylize(value, style) {\n const color = colors && styles[style]\n\n if (color) return color + value + ansiEscapes.modifierReset\n\n return value\n }\n}\n\nclass InspectRefMap {\n constructor() {\n this.refs = new WeakMap()\n this.ids = new WeakMap()\n this.nextId = 1\n }\n\n has(object) {\n return this.refs.has(object)\n }\n\n get(object) {\n return this.refs.get(object) || null\n }\n\n set(object, ref) {\n this.refs.set(object, ref)\n }\n\n id(object) {\n let id = this.ids.get(object)\n if (id) return id\n\n id = this.nextId++\n this.ids.set(object, id)\n\n return id\n }\n}\n\nclass InspectNode {\n constructor(depth, length, opts) {\n const { breakLength = defaultBreakLength, breakAlways = false } = opts\n\n this.depth = depth\n this.length = length\n this.breakLength = breakLength\n this.breakAlways = breakAlways\n }\n\n pad(n, string) {\n return string.padStart(n, ' ')\n }\n\n indent(n, string) {\n return ' '.repeat(n) + string\n }\n}\n\nclass InspectRef extends InspectNode {\n constructor(depth, opts) {\n super(depth, '[circular *]'.length, opts)\n\n this.refs = opts.references\n this.count = 0\n this.circular = false\n this.color = opts.colors && styles.special\n }\n\n get id() {\n return this.refs.id(this)\n }\n\n increment() {\n return ++this.count\n }\n\n decrement() {\n return --this.count\n }\n\n toString(opts = {}) {\n const { offset = 0, pad = 0, indent = 0 } = opts\n\n let value = this.pad(pad, '[circular *' + this.id + ']')\n\n if (this.color) value = this.color + value + ansiEscapes.modifierReset\n\n return offset ? value : this.indent(indent, value)\n }\n}\n\nclass InspectLeaf extends InspectNode {\n constructor(value, color, depth, opts) {\n const length = value.length\n\n if (value.includes('\\n')) {\n value = value.replaceAll('\\n', '\\n' + ' '.repeat(depth))\n\n opts = { ...opts, breakAlways: true }\n }\n\n super(depth, length, opts)\n\n this.value = value\n this.color = opts.colors && color\n }\n\n toString(opts = {}) {\n const { offset = 0, pad = 0, indent = 0 } = opts\n\n let value = this.pad(pad, this.value)\n\n if (this.color) value = this.color + value + ansiEscapes.modifierReset\n\n return offset ? value : this.indent(indent, value)\n }\n}\n\nclass InspectPair extends InspectNode {\n constructor(delim, left, right, depth, opts) {\n const length = left.length + delim.length + right.length\n\n if (left.breakAlways || right.breakAlways) {\n opts = { ...opts, breakAlways: true }\n }\n\n super(depth, length, opts)\n\n this.delim = delim\n this.left = left\n this.right = right\n }\n\n toString(opts = {}) {\n const { indent = 0 } = opts\n\n return this.indent(\n indent,\n this.left +\n this.delim +\n this.right.toString({\n indent,\n offset: this.left.length + this.delim.length\n })\n )\n }\n}\n\nclass InspectSuspension extends InspectNode {\n constructor(overflow, depth, opts) {\n const label = `... ${overflow} more`\n\n super(depth, label.length, opts)\n\n this.label = label\n }\n\n toString(opts = {}) {\n const { indent = 0 } = opts\n\n return this.indent(indent, this.label)\n }\n}\n\nclass InspectSequence extends InspectNode {\n constructor(header, footer, delim, values, ref, depth, opts) {\n const { tabulate = false } = opts\n\n const length =\n (ref.circular ? ''.length + 1 : 0) +\n header.length +\n values.reduce(\n (length, value, i) =>\n length + value.length + (i === 0 ? 0 : delim.length),\n 0\n ) +\n footer.length\n\n if (values.some((value) => value.breakAlways)) {\n opts = { ...opts, breakAlways: true }\n }\n\n super(depth, length, opts)\n\n this.header = header\n this.footer = footer\n this.delim = delim\n this.values = values\n this.ref = ref\n this.tabulate = tabulate\n }\n\n toString(opts = {}) {\n const { offset = 0, indent = 0 } = opts\n\n const split =\n this.breakAlways ||\n (this.values.length &&\n (offset + this.length > this.breakLength ||\n indent * 2 + this.length > this.breakLength))\n\n let header = this.header\n\n if (this.ref.circular) {\n header = ' ' + header\n }\n\n if (this.values.length === 0) {\n header = header.trimEnd()\n }\n\n if (offset === 0) {\n header = this.indent(indent, header)\n }\n\n if (split) {\n header = header.trimEnd() + '\\n'\n }\n\n let string = header\n\n let columns = 1\n let pad = 0\n\n if (this.tabulate) {\n const widest = this.values.reduce(\n (length, value) =>\n value.breakAlways ? length : Math.max(length, value.length),\n 0\n )\n\n if (widest) {\n columns = Math.max(\n columns,\n Math.floor(\n (this.breakLength - indent * 2) / (widest + this.delim.length)\n )\n )\n\n if (columns > 1) pad = widest\n }\n }\n\n for (let i = 0, n = this.values.length, offset = 0; i < n; i++) {\n const value = this.values[i]\n\n if (split) {\n let part\n\n if (i % columns === 0 || value.breakAlways) {\n part = value.toString({ indent: indent + 1, pad })\n } else {\n part = value.toString({ pad })\n }\n\n string += part\n\n if (i < n - 1) {\n if (i % columns === columns - 1 || this.values[i + 1].breakAlways) {\n string += this.delim.trimEnd() + '\\n'\n } else {\n string += this.delim\n }\n }\n } else {\n if (i > 0) string += this.delim\n\n string += value.toString({ offset })\n\n offset += value.length\n }\n }\n\n let footer = this.footer\n\n if (this.values.length === 0) {\n footer = footer.trimStart()\n }\n\n if (split) {\n string += '\\n' + this.indent(indent, footer.trimStart())\n } else {\n string += footer\n }\n\n return string\n }\n}\n\nfunction inspectValue(value, depth, opts) {\n const type = getType(value)\n\n if (type.isUndefined()) return inspectUndefined(depth, opts)\n if (type.isNull()) return inspectNull(depth, opts)\n if (type.isBoolean()) return inspectBoolean(value, depth, opts)\n if (type.isNumber()) return inspectNumber(value, depth, opts)\n if (type.isBigInt()) return inspectBigInt(value, depth, opts)\n if (type.isString()) return inspectString(value, depth, opts)\n if (type.isSymbol()) return inspectSymbol(value, depth, opts)\n if (type.isObject()) return inspectObject(type, value, depth, opts)\n if (type.isFunction()) return inspectFunction(type, value, depth, opts)\n if (type.isExternal()) return inspectExternal(value, opts, opts)\n}\n\nfunction inspectUndefined(depth, opts) {\n return new InspectLeaf('undefined', styles.undefined, depth, opts)\n}\n\nfunction inspectNull(depth, opts) {\n return new InspectLeaf('null', styles.null, depth, opts)\n}\n\nfunction inspectBoolean(value, depth, opts) {\n return new InspectLeaf(value.toString(), styles.boolean, depth, opts)\n}\n\nfunction inspectNumber(value, depth, opts) {\n let string\n\n if (Object.is(value, -0)) {\n string = '-0'\n } else {\n string = value.toString(10)\n }\n\n return new InspectLeaf(string, styles.number, depth, opts)\n}\n\nfunction inspectBigInt(value, depth, opts) {\n return new InspectLeaf(value.toString(10) + 'n', styles.bigint, depth, opts)\n}\n\nconst STRING_ESCAPES =\n /[\\ud800-\\udbff][\\udc00-\\udfff]|[\\u0000-\\u001f'\\\\\\ud800-\\udfff]/g\n\nfunction inspectString(value, depth, opts) {\n // https://tc39.es/ecma262/multipage/structured-data.html#sec-quotejsonstring\n const string = value.replace(STRING_ESCAPES, (match) => {\n if (match.length === 2) return match\n\n switch (match) {\n case \"'\":\n return \"\\\\'\"\n case '\\\\':\n return '\\\\\\\\'\n case '\\b':\n return '\\\\b'\n case '\\t':\n return '\\\\t'\n case '\\n':\n return '\\\\n'\n case '\\f':\n return '\\\\f'\n case '\\r':\n return '\\\\r'\n default:\n return '\\\\u' + match.charCodeAt(0).toString(16).padStart(4, '0')\n }\n })\n\n return new InspectLeaf(\"'\" + string + \"'\", styles.string, depth, opts)\n}\n\nfunction inspectSymbol(value, depth, opts) {\n return new InspectLeaf(value.toString(), styles.symbol, depth, opts)\n}\n\nfunction inspectKey(value, depth, opts) {\n if (PLAIN_KEY.test(value)) {\n return new InspectLeaf(value, null, depth, opts)\n } else {\n return inspectValue(value, depth, opts)\n }\n}\n\nfunction inspectObject(type, object, depth, opts) {\n const refs = opts.references\n\n let ref = refs.get(object)\n if (ref === null) {\n ref = new InspectRef(depth, opts)\n refs.set(object, ref)\n } else if (ref.count) {\n ref.circular = true\n return ref\n }\n\n const maxDepth = typeof opts.depth === 'number' ? opts.depth : Infinity\n\n if (maxDepth < depth) {\n const constructor = object.constructor\n\n return new InspectLeaf(\n '[' +\n (constructor && constructor.name ? constructor.name : 'Object') +\n ']',\n styles.special,\n depth,\n opts\n )\n }\n\n const inspect =\n object[Symbol.for('bare.inspect')] ||\n object[Symbol.for('nodejs.util.inspect.custom')]\n\n if (typeof inspect === 'function') {\n const value = inspect.call(\n object,\n typeof opts.depth === 'number' ? opts.depth - depth : null,\n {\n colors: opts.colors,\n breakLength: opts.breakLength,\n stylize: opts.stylize\n },\n exports\n )\n\n if (typeof value === 'object' && value !== null) {\n refs.set(value, ref)\n }\n\n if (typeof value !== 'string') {\n return inspectValue(value, depth, opts)\n }\n\n return new InspectLeaf(value, null, depth, opts)\n }\n\n if (type.isArray()) return inspectArray(object, ref, depth, opts)\n if (type.isDate()) return inspectDate(object, ref, depth, opts)\n if (type.isRegExp()) return inspectRegExp(object, ref, depth, opts)\n if (type.isError()) return inspectError(object, ref, depth, opts)\n if (type.isPromise()) return inspectPromise(object, ref, depth, opts)\n if (type.isMap()) return inspectMap(object, ref, depth, opts)\n if (type.isSet()) return inspectSet(object, ref, depth, opts)\n if (type.isWeakMap()) return inspectWeakMap(object, ref, depth, opts)\n if (type.isWeakSet()) return inspectWeakSet(object, ref, depth, opts)\n if (type.isWeakRef()) return inspectWeakRef(object, ref, depth, opts)\n if (type.isArrayBuffer()) return inspectArrayBuffer(object, ref, depth, opts)\n if (type.isSharedArrayBuffer())\n return inspectSharedArrayBuffer(object, ref, depth, opts)\n if (type.isTypedArray()) return inspectTypedArray(object, ref, depth, opts)\n if (type.isDataView()) return inspectDataView(object, ref, depth, opts)\n\n ref.increment()\n\n const values = []\n\n for (const key in object) {\n if (key === 'constructor') continue\n\n values.push(\n new InspectPair(\n ': ',\n inspectKey(key, depth + 1, opts),\n inspectValue(object[key], depth + 1, opts),\n depth + 1,\n opts\n )\n )\n }\n\n ref.decrement()\n\n let header = '{ '\n\n const tag = object[Symbol.toStringTag]\n\n if (tag) header = '[' + tag + '] ' + header\n\n if (object.constructor) {\n const name = object.constructor.name\n\n if (name && name !== 'Object') {\n header = object.constructor.name + ' ' + header\n }\n }\n\n return new InspectSequence(header, ' }', ', ', values, ref, depth, opts)\n}\n\nfunction inspectArray(array, ref, depth, opts) {\n const { maxArrayLength = defaultMaxArrayLength } = opts\n\n ref.increment()\n\n const values = []\n\n let remaining = Math.max(maxArrayLength, 0)\n\n for (let i = 0, n = array.length; i < n; i++) {\n if (remaining-- === 0) {\n values.push(\n new InspectSuspension(array.length - values.length, depth + 1, {\n ...opts,\n breakAlways: true\n })\n )\n\n break\n }\n\n values.push(inspectValue(array[i], depth + 1, opts))\n }\n\n for (const key of binding.getOwnNonIndexPropertyNames(array)) {\n values.push(\n new InspectPair(\n ': ',\n inspectKey(key, depth + 1, opts),\n inspectValue(array[key], depth + 1, opts),\n depth + 1,\n { ...opts, breakAlways: remaining < 0 }\n )\n )\n }\n\n ref.decrement()\n\n let header = '[ '\n\n if (array.constructor.name !== 'Array') {\n header = array.constructor.name + '(' + array.length + ') ' + header\n }\n\n return new InspectSequence(header, ' ]', ', ', values, ref, depth, {\n ...opts,\n tabulate: true\n })\n}\n\nfunction inspectDate(date, ref, depth, opts) {\n return new InspectLeaf(date.toISOString(), styles.date, depth, opts)\n}\n\nfunction inspectRegExp(regExp, ref, depth, opts) {\n return new InspectLeaf(regExp.toString(), styles.regexp, depth, opts)\n}\n\nfunction inspectError(error, ref, depth, opts) {\n let header\n\n if ('stack' in error) {\n header = error.stack\n\n if (depth > 0) {\n header = header.replaceAll('\\n', '\\n' + ' '.repeat(depth))\n }\n } else {\n header = error.toString()\n }\n\n const builtins = ['cause']\n\n if (error.name === 'AggregateError') {\n builtins.push('errors')\n } else if (error.name === 'SuppressedError') {\n builtins.push('error', 'suppressed')\n }\n\n const values = []\n\n for (const key of builtins) {\n if (key in error === false) continue\n\n values.push(\n new InspectPair(\n ': ',\n new InspectLeaf('[' + key + ']', null, depth + 1, opts),\n inspectValue(error[key], depth + 1, opts),\n depth + 1,\n opts\n )\n )\n }\n\n for (const key in error) {\n if (key === 'constructor' || builtins.includes(key)) continue\n\n values.push(\n new InspectPair(\n ': ',\n inspectKey(key, depth + 1, opts),\n inspectValue(error[key], depth + 1, opts),\n depth + 1,\n opts\n )\n )\n }\n\n if (values.length === 0) return new InspectLeaf(header, null, depth, opts)\n\n return new InspectSequence(\n header + ' {',\n ' }',\n ', ',\n values,\n ref,\n depth,\n opts\n )\n}\n\nfunction inspectPromise(promise, ref, depth, opts) {\n ref.increment()\n\n const state = binding.getPromiseState(promise)\n\n const values = []\n\n switch (state) {\n case 0: // Pending\n values.push(new InspectLeaf('', styles.special, depth, opts))\n break\n\n case 1: // Fulfilled\n values.push(inspectValue(binding.getPromiseResult(promise), depth, opts))\n break\n\n case 2: // Rejected\n values.push(\n new InspectLeaf('', styles.special, depth, opts),\n inspectValue(binding.getPromiseResult(promise), depth, opts)\n )\n }\n\n ref.decrement()\n\n const header = promise.constructor.name + ' { '\n\n return new InspectSequence(header, ' }', ' ', values, ref, depth, opts)\n}\n\nfunction inspectMap(map, ref, depth, opts) {\n const {\n maxArrayLength = defaultMaxArrayLength,\n maxMapLength = maxArrayLength\n } = opts\n\n ref.increment()\n\n const values = []\n\n let remaining = maxMapLength\n\n for (const entry of map) {\n if (remaining-- === 0) {\n values.push(\n new InspectSuspension(map.size - values.length, depth + 1, {\n ...opts,\n breakAlways: true\n })\n )\n break\n }\n\n values.push(\n new InspectPair(\n ' => ',\n inspectValue(entry[0], depth + 1, opts),\n inspectValue(entry[1], depth + 1, opts),\n depth + 1,\n opts\n )\n )\n }\n\n for (const key in map) {\n if (key === 'constructor') continue\n\n const value = inspectValue(map[key], depth + 1, opts)\n\n values.push(\n new InspectPair(\n ': ',\n inspectKey(key, depth + 1, opts),\n value,\n depth + 1,\n { ...opts, breakAlways: remaining < 0 }\n )\n )\n }\n\n ref.decrement()\n\n const header = map.constructor.name + '(' + map.size + ') { '\n\n return new InspectSequence(header, ' }', ', ', values, ref, depth, {\n ...opts,\n tabulate: true\n })\n}\n\nfunction inspectSet(set, ref, depth, opts) {\n const {\n maxArrayLength = defaultMaxArrayLength,\n maxSetLength = maxArrayLength\n } = opts\n\n ref.increment()\n\n const values = []\n\n let remaining = maxSetLength\n\n for (const entry of set) {\n if (remaining-- === 0) {\n values.push(\n new InspectSuspension(set.size - values.length, depth + 1, {\n ...opts,\n breakAlways: true\n })\n )\n break\n }\n\n values.push(inspectValue(entry, depth + 1, opts))\n }\n\n for (const key in set) {\n if (key === 'constructor') continue\n\n const value = inspectValue(set[key], depth + 1, opts)\n\n values.push(\n new InspectPair(\n ': ',\n inspectKey(key, depth + 1, opts),\n value,\n depth + 1,\n { ...opts, breakAlways: remaining < 0 }\n )\n )\n }\n\n ref.decrement()\n\n const header = set.constructor.name + '(' + set.size + ') { '\n\n return new InspectSequence(header, ' }', ', ', values, ref, depth, {\n ...opts,\n tabulate: true\n })\n}\n\nfunction inspectWeakMap(weakMap, ref, depth, opts) {\n const header = weakMap.constructor.name + ' { '\n\n return new InspectSequence(\n header,\n ' }',\n ' ',\n [new InspectLeaf('', styles.special, depth + 1, opts)],\n ref,\n depth,\n opts\n )\n}\n\nfunction inspectWeakSet(weakSet, ref, depth, opts) {\n const header = weakSet.constructor.name + ' { '\n\n return new InspectSequence(\n header,\n ' }',\n ' ',\n [new InspectLeaf('', styles.special, depth + 1, opts)],\n ref,\n depth,\n opts\n )\n}\n\nfunction inspectWeakRef(weakRef, ref, depth, opts) {\n const target = weakRef.deref()\n\n let value\n\n if (target === undefined) {\n value = new InspectLeaf('', styles.special, depth + 1, opts)\n } else {\n value = inspectValue(target, depth + 1, opts)\n }\n\n const header = weakRef.constructor.name + ' { '\n\n return new InspectSequence(header, ' }', ' ', [value], ref, depth, opts)\n}\n\nfunction inspectArrayBuffer(arrayBuffer, ref, depth, opts) {\n ref.increment()\n\n const values = []\n\n for (const key of ['byteLength']) {\n values.push(\n new InspectPair(\n ': ',\n inspectKey(key, depth + 1, opts),\n inspectValue(arrayBuffer[key], depth + 1, opts),\n depth + 1,\n opts\n )\n )\n }\n\n ref.decrement()\n\n const header = arrayBuffer.constructor.name + ' { '\n\n return new InspectSequence(header, ' }', ', ', values, ref, depth, opts)\n}\n\nfunction inspectSharedArrayBuffer(sharedArrayBuffer, ref, depth, opts) {\n ref.increment()\n\n const values = []\n\n for (const key of ['byteLength']) {\n values.push(\n new InspectPair(\n ': ',\n inspectKey(key, depth + 1, opts),\n inspectValue(sharedArrayBuffer[key], depth + 1, opts),\n depth + 1,\n opts\n )\n )\n }\n\n ref.decrement()\n\n const header = sharedArrayBuffer.constructor.name + ' { '\n\n return new InspectSequence(header, ' }', ', ', values, ref, depth, opts)\n}\n\nfunction inspectTypedArray(typedArray, ref, depth, opts) {\n if (Buffer.isBuffer(typedArray)) {\n return inspectBuffer(typedArray, ref, depth, opts)\n }\n\n const {\n maxArrayLength = defaultMaxArrayLength,\n maxTypedArrayLength = maxArrayLength\n } = opts\n\n ref.increment()\n\n const values = []\n\n let remaining = Math.max(maxTypedArrayLength, 0)\n\n for (let i = 0, n = typedArray.length; i < n; i++) {\n if (remaining-- === 0) {\n values.push(\n new InspectSuspension(typedArray.length - values.length, depth + 1, {\n ...opts,\n breakAlways: true\n })\n )\n\n break\n }\n\n values.push(inspectValue(typedArray[i], depth + 1, opts))\n }\n\n for (const key of binding.getOwnNonIndexPropertyNames(typedArray)) {\n values.push(\n new InspectPair(\n ': ',\n inspectKey(key, depth + 1, opts),\n inspectValue(typedArray[key], depth + 1, opts),\n depth + 1,\n { ...opts, breakAlways: remaining < 0 }\n )\n )\n }\n\n ref.decrement()\n\n const header = typedArray.constructor.name + '(' + typedArray.length + ') [ '\n\n return new InspectSequence(header, ' ]', ', ', values, ref, depth, {\n ...opts,\n tabulate: true\n })\n}\n\nfunction inspectBuffer(buffer, ref, depth, opts) {\n const {\n maxArrayLength = defaultMaxArrayLength,\n maxBufferLength = maxArrayLength\n } = opts\n\n ref.increment()\n\n const values = []\n\n let remaining = Math.max(maxBufferLength, 0)\n\n for (let i = 0, n = buffer.byteLength; i < n; i++) {\n if (remaining-- === 0) {\n values.push(\n new InspectSuspension(buffer.length - values.length, depth + 1, {\n ...opts,\n breakAlways: true\n })\n )\n\n break\n }\n\n values.push(\n new InspectLeaf(\n buffer[i].toString(16).padStart(2, '0'),\n null,\n depth + 1,\n opts\n )\n )\n }\n\n for (const key of binding.getOwnNonIndexPropertyNames(buffer)) {\n values.push(\n new InspectPair(\n ': ',\n inspectKey(key, depth + 1, opts),\n inspectValue(buffer[key], depth + 1, opts),\n depth + 1,\n { ...opts, breakAlways: remaining < 0 }\n )\n )\n }\n\n ref.decrement()\n\n return new InspectSequence('', ' ', values, ref, depth, {\n ...opts,\n tabulate: true\n })\n}\n\nfunction inspectDataView(dataView, ref, depth, opts) {\n ref.increment()\n\n const values = []\n\n for (const key of ['byteLength', 'byteOffset', 'buffer']) {\n values.push(\n new InspectPair(\n ': ',\n inspectKey(key, depth + 1, opts),\n inspectValue(dataView[key], depth + 1, opts),\n depth + 1,\n opts\n )\n )\n }\n\n for (const key of binding.getOwnNonIndexPropertyNames(dataView)) {\n values.push(\n new InspectPair(\n ': ',\n inspectKey(key, depth + 1, opts),\n inspectValue(dataView[key], depth + 1, opts),\n depth + 1,\n opts\n )\n )\n }\n\n ref.decrement()\n\n const header = dataView.constructor.name + ' { '\n\n return new InspectSequence(header, ' }', ', ', values, ref, depth, opts)\n}\n\nfunction inspectFunction(type, fn, depth, opts) {\n if (fn.toString().startsWith('class')) return inspectClass(fn, depth, opts)\n\n let tag = 'function'\n\n if (type.isGeneratorFunction()) tag = 'generator ' + tag\n if (type.isAsyncFunction()) tag = 'async ' + tag\n\n return new InspectLeaf(\n '[' + tag + ' ' + (fn.name ? fn.name : '(anonymous)') + ']',\n styles.special,\n depth,\n opts\n )\n}\n\nfunction inspectClass(ctor, depth, opts) {\n return new InspectLeaf(\n '[class ' + (ctor.name ? ctor.name : '(anonymous)') + ']',\n styles.special,\n depth,\n opts\n )\n}\n\nfunction inspectExternal(external, depth, opts) {\n return new InspectLeaf(\n '[external 0x' + binding.getExternal(external).toString(16) + ']',\n styles.special,\n depth,\n opts\n )\n}\n{\n \"name\": \"bare-inspect\",\n \"version\": \"3.1.4\",\n \"description\": \"Inspect objects as strings for debugging\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"test\": \"prettier . --check && bare test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-inspect.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-inspect/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-inspect#readme\",\n \"engines\": {\n \"bare\": \">=1.18.0\"\n },\n \"dependencies\": {\n \"bare-ansi-escapes\": \"^2.1.0\",\n \"bare-type\": \"^1.0.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"cmake-bare\": \"^1.1.6\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-standard\": \"^7.0.0\"\n }\n}\nclass MIME {\n constructor(type, subtype, parameters = new Map()) {\n this._type = type\n this._subtype = subtype\n this._parameters = parameters\n }\n\n // https://mimesniff.spec.whatwg.org/#type\n get type() {\n return this._type\n }\n\n // https://mimesniff.spec.whatwg.org/#subtype\n get subtype() {\n return this._subtype\n }\n\n // https://mimesniff.spec.whatwg.org/#parameters\n get parameters() {\n return this._parameters\n }\n}\n\nmodule.exports = exports = MIME\n\n// https://mimesniff.spec.whatwg.org/#parse-a-mime-type\nexports.parse = function parse(input) {\n // 1.\n input = input.replace(httpWhitespaceLeadingAndTrailing, '')\n\n // 2.\n let position = 0\n\n // 3.\n let type = ''\n\n while (position < input.length && input[position] !== '/') {\n type += input[position++]\n }\n\n // 4.\n if (type === '' || !isHTTPTokenCodePoints(type)) return null\n\n // 5.\n if (position >= input.length) return null\n\n // 6.\n position++\n\n // 7.\n let subtype = ''\n\n while (position < input.length && input[position] !== ';') {\n subtype += input[position++]\n }\n\n // 8.\n subtype = subtype.replace(httpWhitespaceTrailing, '')\n\n // 9.\n if (subtype === '' || !isHTTPTokenCodePoints(subtype)) return null\n\n // 10.\n const mimeType = new MIME(type.toLowerCase(), subtype.toLowerCase())\n\n // 11.\n while (position < input.length) {\n // 11.1.\n position++\n\n // 11.2.\n while (position < input.length && httpWhitespace.test(input[position])) {\n position++\n }\n\n // 11.3.\n let parameterName = ''\n\n while (position < input.length && input[position] !== ';' && input[position] !== '=') {\n parameterName += input[position++]\n }\n\n // 11.4.\n parameterName = parameterName.toLowerCase()\n\n // 11.5.\n if (position < input.length && input[position] === ';') continue\n\n // 11.6.\n if (position >= input.length) break\n\n // 11.7.\n position++\n\n // 11.8.\n let parameterValue\n\n // 11.9.\n if (position < input.length && input[position] === '\"') {\n // 11.9.1.\n parameterValue = collectHTTPQuotedString(input, position)\n position = parameterValue.position\n parameterValue = parameterValue.value\n\n // 11.9.2.\n while (position < input.length && input[position] !== ';') {\n position++\n }\n } else {\n // 11.10.\n parameterValue = ''\n\n while (position < input.length && input[position] !== ';') {\n parameterValue += input[position++]\n }\n\n // 11.10.1.\n parameterValue = parameterValue.replace(httpWhitespaceTrailing, '')\n\n // 11.10.2.\n if (parameterValue === '') continue\n }\n\n // 11.11.\n if (\n parameterName !== '' &&\n isHTTPTokenCodePoints(parameterName) &&\n isHTTPQuotedStringTokenCodePoints(parameterValue) &&\n !mimeType._parameters.has(parameterName)\n ) {\n mimeType._parameters.set(parameterName, parameterValue)\n }\n }\n\n // 12.\n return mimeType\n}\n\n// https://fetch.spec.whatwg.org/#http-whitespace\nconst httpWhitespace = /[\\t\\n\\r ]/\nconst httpWhitespaceLeadingAndTrailing = /^[\\t\\n\\r ]+|[\\t\\n\\r ]+$/g\nconst httpWhitespaceTrailing = /[\\t\\n\\r ]+$/\n\n// https://mimesniff.spec.whatwg.org/#http-token-code-point\nconst httpTokenCodePoints = /^[!#$%&'*+\\-.^_`|~A-Za-z0-9]+$/\n\n// https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point\nconst httpQuotedStringTokenCodePoints = /^[\\t\\x20-\\x7e\\x80-\\xff]*$/\n\nfunction isHTTPTokenCodePoints(s) {\n return httpTokenCodePoints.test(s)\n}\n\nfunction isHTTPQuotedStringTokenCodePoints(s) {\n return httpQuotedStringTokenCodePoints.test(s)\n}\n\n// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string\nfunction collectHTTPQuotedString(input, position) {\n let value = ''\n\n position++\n\n while (true) {\n while (position < input.length && input[position] !== '\"' && input[position] !== '\\\\') {\n value += input[position++]\n }\n\n if (position >= input.length) break\n\n const quoteOrBackslash = input[position++]\n\n if (quoteOrBackslash === '\\\\') {\n if (position >= input.length) {\n value += '\\\\'\n break\n }\n value += input[position++]\n } else {\n break\n }\n }\n\n return { value, position }\n}\n{\n \"name\": \"bare-mime\",\n \"version\": \"1.0.0\",\n \"description\": \"MIME type parsing for Bare\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": \"./index.js\"\n },\n \"files\": [\n \"index.js\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-mime.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-mime/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-mime#readme\",\n \"devDependencies\": {\n \"brittle\": \"^3.3.0\",\n \"lunte\": \"^1.6.0\",\n \"prettier\": \"^3.3.3\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nconst EventEmitter = require('bare-events')\nconst { Duplex } = require('bare-stream')\nconst tcp = require('bare-tcp')\nconst pipe = require('bare-pipe')\nconst constants = require('./lib/constants')\n\nconst defaultReadBufferSize = 65536\n\nexports.Socket = class NetSocket extends Duplex {\n constructor(opts = {}) {\n const {\n readBufferSize = defaultReadBufferSize,\n allowHalfOpen = false,\n eagerOpen = false\n } = opts\n\n super({ eagerOpen, allowHalfOpen })\n\n this._type = 0\n this._state = 0\n this._socket = null\n\n this._opts = { readBufferSize, allowHalfOpen, eagerOpen }\n\n this._pendingOpen = null\n this._pendingWrite = null\n this._pendingFinal = null\n this._pendingDestroy = null\n }\n\n get connecting() {\n return this._socket !== null && this._socket.connecting\n }\n\n get pending() {\n return this._socket === null || this._socket.pending\n }\n\n get timeout() {\n return this._socket === null ? undefined : this._socket.timeout\n }\n\n get readyState() {\n return this._socket === null ? 'opening' : this._socket.readyState\n }\n\n get localAddress() {\n return this._socket === null ? undefined : this._socket.localAddress\n }\n\n get localPort() {\n return this._socket === null ? undefined : this._socket.localPort\n }\n\n get localFamily() {\n return this._socket === null ? undefined : this._socket.localFamily\n }\n\n get remoteAddress() {\n return this._socket === null ? undefined : this._socket.remoteAddress\n }\n\n get remotePort() {\n return this._socket === null ? undefined : this._socket.remotePort\n }\n\n get remoteFamily() {\n return this._socket === null ? undefined : this._socket.remoteFamily\n }\n\n connect(...args) {\n let opts = {}\n let onconnect\n\n if (typeof args[0] === 'string') {\n // connect(path[, onconnect])\n opts.path = args[0]\n onconnect = args[1]\n } else if (typeof args[0] === 'number') {\n // connect(port[, host][, onconnect])\n opts.port = args[0]\n\n if (typeof args[1] === 'function') {\n onconnect = args[1]\n } else {\n opts.host = args[1]\n onconnect = args[2]\n }\n } else {\n // connect(opts[, onconnect])\n opts = args[0] || {}\n onconnect = args[1]\n }\n\n opts = { ...opts, ...this._opts }\n\n if (opts.path) {\n this._attach(constants.type.IPC, pipe.createConnection(opts))\n } else {\n this._attach(constants.type.TCP, tcp.createConnection(opts))\n }\n\n if (onconnect) this.once('connect', onconnect)\n\n return this\n }\n\n setKeepAlive(...args) {\n if (this._socket !== null) this._socket.setKeepAlive(...args)\n return this\n }\n\n setNoDelay(...args) {\n if (this._socket !== null) this._socket.setNoDelay(...args)\n return this\n }\n\n setTimeout(...args) {\n if (this._socket !== null) this._socket.setTimeout(...args)\n return this\n }\n\n ref() {\n this._state &= ~constants.state.UNREFED\n if (this._socket !== null) this._socket.ref()\n return this\n }\n\n unref() {\n this._state |= constants.state.UNREFED\n if (this._socket !== null) this._socket.unref()\n return this\n }\n\n _attach(type, socket) {\n this._type = type\n this._socket = socket\n\n this._socket\n .on('connect', this._onconnect.bind(this))\n .on('timeout', this._ontimeout.bind(this))\n .on('error', this._onerror.bind(this))\n .on('data', this._ondata.bind(this))\n .on('end', this._onend.bind(this))\n .on('finish', this._onfinish.bind(this))\n .on('drain', this._ondrain.bind(this))\n .on('close', this._onclose.bind(this))\n\n if (this._state & constants.state.UNREFED) this._socket.unref()\n\n this._continueOpen()\n\n return this\n }\n\n _open(cb) {\n if (this._socket !== null) return cb(null)\n this._pendingOpen = cb\n }\n\n _write(data, encoding, cb) {\n if (this._socket.write(data)) return cb(null)\n this._pendingWrite = cb\n }\n\n _final(cb) {\n this._socket.end()\n this._pendingFinal = cb\n }\n\n _destroy(err, cb) {\n if (this._socket === null || this._socket.destroyed) return cb(null)\n\n this._socket.destroy(err)\n this._pendingDestroy = cb\n }\n\n _onconnect() {\n this.emit('connect')\n }\n\n _ontimeout() {\n this.emit('timeout')\n }\n\n _onerror(err) {\n this.destroy(err)\n }\n\n _ondata(data) {\n this.push(data)\n }\n\n _onend() {\n this.push(null)\n }\n\n _onfinish() {\n this._continueFinal()\n }\n\n _ondrain() {\n this._continueWrite()\n }\n\n _onclose() {\n this._continueWrite()\n this._continueFinal()\n\n if (this._pendingDestroy) this._continueDestroy()\n else this.destroy()\n }\n\n _continueOpen() {\n if (this._pendingOpen === null) return\n const cb = this._pendingOpen\n this._pendingOpen = null\n cb(null)\n }\n\n _continueWrite() {\n if (this._pendingWrite === null) return\n const cb = this._pendingWrite\n this._pendingWrite = null\n cb(null)\n }\n\n _continueFinal() {\n if (this._pendingFinal === null) return\n const cb = this._pendingFinal\n this._pendingFinal = null\n cb(null)\n }\n\n _continueDestroy() {\n if (this._pendingDestroy === null) return\n const cb = this._pendingDestroy\n this._pendingDestroy = null\n cb(null)\n }\n}\n\nexports.Server = class NetServer extends EventEmitter {\n constructor(opts = {}, onconnection) {\n if (typeof opts === 'function') {\n onconnection = opts\n opts = {}\n }\n\n super()\n\n const {\n readBufferSize = defaultReadBufferSize,\n allowHalfOpen = false,\n pauseOnConnect = false\n } = opts\n\n this._type = 0\n this._state = 0\n this._server = null\n\n this._opts = { readBufferSize, allowHalfOpen, pauseOnConnect }\n\n if (onconnection) this.on('connection', onconnection)\n }\n\n get listening() {\n return this._server !== null && this._server.listening\n }\n\n address() {\n return this._server === null ? null : this._server.address()\n }\n\n listen(...args) {\n let opts = {}\n let onlistening\n\n if (typeof args[0] === 'string') {\n // listen(path[, backlog][, onlistening])\n opts.path = args[0]\n\n if (typeof args[1] === 'function') {\n onlistening = args[1]\n } else {\n opts.backlog = args[1]\n onlistening = args[2]\n }\n } else {\n // listen([port[, host[, backlog]]][, onlistening])\n if (typeof args[0] === 'function') {\n onlistening = args[0]\n } else {\n opts.port = args[0]\n\n if (typeof args[1] === 'function') {\n onlistening = args[1]\n } else {\n opts.host = args[1]\n\n if (typeof args[2] === 'function') {\n onlistening = args[2]\n } else {\n opts.backlog = args[2]\n onlistening = args[3]\n }\n }\n }\n }\n\n opts = { ...opts, ...this._opts }\n\n if (opts.path) {\n this._attach(constants.type.IPC, pipe.createServer(opts))\n } else {\n this._attach(constants.type.TCP, tcp.createServer(opts))\n }\n\n this._server.listen(opts)\n\n if (onlistening) this.once('listening', onlistening)\n\n return this\n }\n\n close(onclose) {\n if (onclose) this.once('close', onclose)\n this._server.close()\n return this\n }\n\n ref() {\n this._state &= ~constants.state.UNREFED\n if (this._server !== null) this._server.ref()\n return this\n }\n\n unref() {\n this._state |= constants.state.UNREFED\n if (this._server !== null) this._server.unref()\n return this\n }\n\n _attach(type, server) {\n this._type = type\n this._server = server\n\n this._server\n .on('listening', this._onlistening.bind(this))\n .on('connection', this._onconnection.bind(this))\n .on('error', this._onerror.bind(this))\n .on('close', this._onclose.bind(this))\n\n if (this._state & constants.state.UNREFED) this._server.unref()\n\n return this\n }\n\n _onlistening() {\n this.emit('listening')\n }\n\n _onconnection(socket) {\n this.emit('connection', new exports.Socket(this._opts)._attach(this._type, socket))\n }\n\n _onerror(err) {\n this.emit('error', err)\n }\n\n _onclose() {\n this.emit('close')\n }\n}\n\nexports.constants = constants\n\nexports.isIP = tcp.isIP\nexports.isIPv4 = tcp.isIPv4\nexports.isIPv6 = tcp.isIPv6\n\nexports.createConnection = function createConnection(...args) {\n let opts = {}\n let onconnect\n\n if (typeof args[0] === 'string') {\n // createConnection(path[, onconnect])\n opts.path = args[0]\n onconnect = args[1]\n } else if (typeof args[0] === 'number') {\n // createConnection(port[, host][, onconnect])\n opts.port = args[0]\n\n if (typeof args[1] === 'function') {\n onconnect = args[1]\n } else {\n opts.host = args[1]\n onconnect = args[2]\n }\n } else {\n // createConnection(opts[, onconnect])\n opts = args[0] || {}\n onconnect = args[1]\n }\n\n return new exports.Socket(opts).connect(opts, onconnect)\n}\n\n// For Node.js compatibility\nexports.connect = exports.createConnection\n\nexports.createServer = function createServer(opts, onconnection) {\n return new exports.Server(opts, onconnection)\n}\nmodule.exports = {\n type: {\n TCP: 1,\n IPC: 2\n },\n state: {\n UNREFED: 0x1\n }\n}\n{\n \"name\": \"bare-net\",\n \"version\": \"2.3.2\",\n \"description\": \"TCP and IPC servers and clients for JavaScript\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./constants\": {\n \"types\": \"./lib/constants.d.ts\",\n \"default\": \"./lib/constants.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-net.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-net/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-net#readme\",\n \"dependencies\": {\n \"bare-events\": \"^2.2.2\",\n \"bare-pipe\": \"^4.0.0\",\n \"bare-stream\": \"^2.0.0\",\n \"bare-tcp\": \"^2.0.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.0\",\n \"lunte\": \"^1.8.0\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nmodule.exports = require.addon()\nconst binding = require('./binding')\nconst errors = require('./lib/errors')\nconst constants = require('./lib/constants')\n\nexports.constants = constants\nexports.errors = errors\n\nexports.EOL = binding.platform === 'win32' ? '\\r\\n' : '\\n'\n\nexports.devNull = binding.platform === 'win32' ? '\\\\\\\\.\\\\nul' : '/dev/null'\n\nexports.platform = function platform() {\n return binding.platform\n}\n\nexports.arch = function arch() {\n return binding.arch\n}\n\nexports.type = function type() {\n return binding.type()\n}\n\nexports.version = function version() {\n return binding.version()\n}\n\nexports.release = function release() {\n return binding.release()\n}\n\nexports.machine = function machine() {\n return binding.machine()\n}\n\nexports.execPath = function execPath() {\n return binding.execPath()\n}\n\nexports.pid = function pid() {\n return binding.pid()\n}\n\nexports.ppid = function ppid() {\n return binding.ppid()\n}\n\nexports.cwd = function cwd() {\n return binding.cwd()\n}\n\nexports.chdir = function chdir(dir) {\n validateString(dir, 'Directory')\n\n binding.chdir(dir)\n}\n\nexports.tmpdir = function tmpdir() {\n return binding.tmpdir()\n}\n\nexports.homedir = function homedir() {\n return binding.homedir()\n}\n\nexports.hostname = function hostname() {\n return binding.hostname()\n}\n\nexports.userInfo = function userInfo(uid) {\n if (uid !== undefined) validateInteger(uid, 'User ID')\n\n return binding.userInfo(uid)\n}\n\nexports.groupInfo = function groupInfo(gid) {\n if (gid !== undefined) validateInteger(gid, 'Group ID')\n\n return binding.groupInfo(gid)\n}\n\nexports.networkInterfaces = function networkInterfaces() {\n const result = {}\n\n for (const entry of binding.networkInterfaces()) {\n const { name, ...properties } = entry\n\n if (result[name]) result[name].push(properties)\n else result[name] = [properties]\n }\n\n return result\n}\n\nexports.kill = function kill(pid, signal = constants.signals.SIGTERM) {\n validateInteger(pid, 'Process ID')\n\n if (typeof signal === 'string') {\n if (signal in constants.signals === false) {\n throw errors.UNKNOWN_SIGNAL('Unknown signal: ' + signal)\n }\n\n signal = constants.signals[signal]\n } else {\n validateInteger(signal, 'Signal')\n }\n\n binding.kill(pid, signal)\n}\n\nexports.endianness = function endianness() {\n return binding.isLittleEndian ? 'LE' : 'BE'\n}\n\nexports.availableParallelism = function availableParallelism() {\n return binding.availableParallelism()\n}\n\nexports.cpuUsage = function cpuUsage(previous) {\n const current = binding.cpuUsage()\n\n if (previous) {\n return {\n user: current.user - previous.user,\n system: current.system - previous.system\n }\n }\n\n return current\n}\n\nexports.threadCpuUsage = function threadCpuUsage(previous) {\n const current = binding.threadCpuUsage()\n\n if (previous) {\n return {\n user: current.user - previous.user,\n system: current.system - previous.system\n }\n }\n\n return current\n}\n\nexports.resourceUsage = function resourceUsage() {\n return binding.resourceUsage()\n}\n\nexports.memoryUsage = function memoryUsage() {\n return binding.memoryUsage()\n}\n\nexports.freemem = function freemem() {\n return binding.freemem()\n}\n\nexports.totalmem = function totalmem() {\n return binding.totalmem()\n}\n\nexports.availableMemory = function availableMemory() {\n return binding.availableMemory()\n}\n\nexports.constrainedMemory = function constrainedMemory() {\n return binding.constrainedMemory()\n}\n\nexports.uptime = function uptime() {\n return binding.uptime()\n}\n\nexports.loadavg = function loadavg() {\n return binding.loadavg()\n}\n\nexports.cpus = function cpus() {\n return binding.cpus()\n}\n\nexports.getProcessTitle = function getProcessTitle() {\n return binding.getProcessTitle()\n}\n\nexports.setProcessTitle = function setProcessTitle(title) {\n if (typeof title !== 'string') title = title.toString()\n\n if (title.length >= 256) {\n throw errors.TITLE_OVERFLOW('Process title is too long')\n }\n\n binding.setProcessTitle(title)\n}\n\nexports.getPriority = function getPriority(pid = 0) {\n validateInteger(pid, 'Process ID')\n\n return binding.getPriority(pid)\n}\n\nexports.setPriority = function setPriority(pid, priority) {\n if (priority === undefined) {\n priority = pid\n pid = 0\n }\n\n validateInteger(pid, 'Process ID')\n validateInteger(priority, 'Priority')\n\n binding.setPriority(pid, priority)\n}\n\nexports.getEnvKeys = function getEnvKeys() {\n return binding.getEnvKeys()\n}\n\nexports.getEnv = function getEnv(name) {\n validateString(name, 'Name')\n\n return binding.getEnv(name)\n}\n\nexports.hasEnv = function hasEnv(name) {\n validateString(name, 'Name')\n\n return binding.hasEnv(name)\n}\n\nexports.setEnv = function setEnv(name, value) {\n validateString(name, 'Name')\n validateString(value, 'Value')\n\n binding.setEnv(name, value)\n}\n\nexports.unsetEnv = function unsetEnv(name) {\n validateString(name, 'Name')\n\n binding.unsetEnv(name)\n}\n\nfunction validateString(value, name) {\n if (typeof value !== 'string') {\n throw new TypeError(`${name} must be a string. Received type ${typeof value} (${value})`)\n }\n}\n\nfunction validateInteger(value, name) {\n if (!Number.isInteger(value)) {\n throw new TypeError(`${name} must be an integer. Received type ${typeof value} (${value})`)\n }\n}\nconst binding = require('../binding')\n\nmodule.exports = {\n signals: binding.signals,\n errnos: binding.errnos,\n priority: binding.priority\n}\nmodule.exports = class OSError extends Error {\n constructor(msg, fn = OSError, code = fn.name) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'OSError'\n }\n\n static UNKNOWN_SIGNAL(msg) {\n return new OSError(msg, OSError.UNKNOWN_SIGNAL)\n }\n\n static TITLE_OVERFLOW(msg) {\n return new OSError(msg, OSError.TITLE_OVERFLOW)\n }\n}\n{\n \"name\": \"bare-os\",\n \"version\": \"3.9.3\",\n \"description\": \"Operating system utilities for Bare\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./constants\": {\n \"types\": \"./lib/constants.d.ts\",\n \"default\": \"./lib/constants.js\"\n },\n \"./errors\": {\n \"types\": \"./lib/errors.d.ts\",\n \"default\": \"./lib/errors.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-os.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-os/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-os#readme\",\n \"engines\": {\n \"bare\": \">=1.14.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.1.1\",\n \"cmake-bare\": \"^1.1.6\",\n \"lunte\": \"^1.6.0\",\n \"prettier\": \"^3.4.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nmodule.exports = require.addon()\n// This export SHOULD NOT be shortened in any way as having the full\n// `module.exports = require(...)` statement is crucial for synthesizing\n// ESM exports.\n\nif (Bare.platform === 'win32') {\n module.exports = require('./lib/win32')\n} else {\n module.exports = require('./lib/posix')\n}\nmodule.exports = {\n CHAR_UPPERCASE_A: 0x41,\n CHAR_LOWERCASE_A: 0x61,\n CHAR_UPPERCASE_Z: 0x5a,\n CHAR_LOWERCASE_Z: 0x7a,\n CHAR_DOT: 0x2e,\n CHAR_FORWARD_SLASH: 0x2f,\n CHAR_BACKWARD_SLASH: 0x5c,\n CHAR_COLON: 0x3a,\n CHAR_QUESTION_MARK: 0x3f\n}\nconst binding = require('../binding')\n\nconst { normalizeString, validateString } = require('./shared')\nconst { CHAR_DOT, CHAR_FORWARD_SLASH } = require('./constants')\n\nfunction isPosixPathSeparator(code) {\n return code === CHAR_FORWARD_SLASH\n}\n\nexports.win32 = require('./win32')\nexports.posix = exports\n\nexports.sep = '/'\nexports.delimiter = ':'\n\nexports.resolve = function resolve(...args) {\n let resolvedPath = ''\n let resolvedAbsolute = false\n\n for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n const path = i >= 0 ? args[i] : binding.cwd()\n\n if (i >= 0) validateString(path, `paths[${i}]`)\n\n if (path.length === 0) {\n continue\n }\n\n resolvedPath = `${path}/${resolvedPath}`\n resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH\n }\n\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator)\n\n if (resolvedAbsolute) {\n return `/${resolvedPath}`\n }\n\n return resolvedPath.length > 0 ? resolvedPath : '.'\n}\n\nexports.normalize = function normalize(path) {\n validateString(path, 'path')\n\n if (path.length === 0) return '.'\n\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH\n const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH\n\n path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator)\n\n if (path.length === 0) {\n if (isAbsolute) return '/'\n return trailingSeparator ? './' : '.'\n }\n\n if (trailingSeparator) path += '/'\n\n return isAbsolute ? `/${path}` : path\n}\n\nexports.isAbsolute = function isAbsolute(path) {\n validateString(path, 'path')\n\n return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH\n}\n\nexports.join = function join(...args) {\n if (args.length === 0) return '.'\n let joined\n for (let i = 0; i < args.length; ++i) {\n const arg = args[i]\n validateString(arg, 'path')\n if (arg.length > 0) {\n if (joined === undefined) joined = arg\n else joined += `/${arg}`\n }\n }\n if (joined === undefined) return '.'\n return exports.normalize(joined)\n}\n\nexports.relative = function relative(from, to) {\n validateString(from, 'from')\n validateString(to, 'to')\n\n if (from === to) return ''\n\n from = exports.resolve(from)\n to = exports.resolve(to)\n\n if (from === to) return ''\n\n const fromStart = 1\n const fromEnd = from.length\n const fromLen = fromEnd - fromStart\n const toStart = 1\n const toLen = to.length - toStart\n\n const length = fromLen < toLen ? fromLen : toLen\n let lastCommonSep = -1\n let i = 0\n for (; i < length; i++) {\n const fromCode = from.charCodeAt(fromStart + i)\n if (fromCode !== to.charCodeAt(toStart + i)) {\n break\n } else if (fromCode === CHAR_FORWARD_SLASH) {\n lastCommonSep = i\n }\n }\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) {\n return to.substring(toStart + i + 1)\n }\n if (i === 0) {\n return to.substring(toStart + i)\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {\n lastCommonSep = i\n } else if (i === 0) {\n lastCommonSep = 0\n }\n }\n }\n\n let out = ''\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n out += out.length === 0 ? '..' : '/..'\n }\n }\n\n return `${out}${to.substring(toStart + lastCommonSep)}`\n}\n\nexports.toNamespacedPath = function toNamespacedPath(path) {\n return path\n}\n\nexports.dirname = function dirname(path) {\n validateString(path, 'path')\n\n if (path.length === 0) return '.'\n const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH\n let end = -1\n let matchedSlash = true\n for (let i = path.length - 1; i >= 1; --i) {\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n end = i\n break\n }\n } else {\n matchedSlash = false\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.'\n if (hasRoot && end === 1) return '//'\n return path.substring(0, end)\n}\n\nexports.basename = function basename(path, suffix) {\n if (suffix !== undefined) validateString(suffix, 'suffix')\n validateString(path, 'path')\n\n let start = 0\n let end = -1\n let matchedSlash = true\n\n if (suffix !== undefined && suffix.length > 0 && suffix.length <= path.length) {\n if (suffix === path) {\n return ''\n }\n let extIdx = suffix.length - 1\n let firstNonSlashEnd = -1\n for (let i = path.length - 1; i >= 0; --i) {\n const code = path.charCodeAt(i)\n if (code === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n start = i + 1\n break\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false\n firstNonSlashEnd = i + 1\n }\n if (extIdx >= 0) {\n if (code === suffix.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n end = i\n }\n } else {\n extIdx = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd\n else if (end === -1) end = path.length\n return path.substring(start, end)\n }\n\n for (let i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n start = i + 1\n break\n }\n } else if (end === -1) {\n matchedSlash = false\n end = i + 1\n }\n }\n\n if (end === -1) return ''\n return path.substring(start, end)\n}\n\nexports.extname = function extname(path) {\n validateString(path, 'path')\n\n let startDot = -1\n let startPart = 0\n let end = -1\n let matchedSlash = true\n let preDotState = 0\n for (let i = path.length - 1; i >= 0; --i) {\n const code = path.charCodeAt(i)\n if (code === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n startPart = i + 1\n break\n }\n continue\n }\n if (end === -1) {\n matchedSlash = false\n end = i + 1\n }\n if (code === CHAR_DOT) {\n if (startDot === -1) startDot = i\n else if (preDotState !== 1) preDotState = 1\n } else if (startDot !== -1) {\n preDotState = -1\n }\n }\n\n if (\n startDot === -1 ||\n end === -1 ||\n preDotState === 0 ||\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n return path.substring(startDot, end)\n}\nconst { CHAR_DOT, CHAR_FORWARD_SLASH } = require('./constants')\n\nexports.validateString = function validateString(value, name) {\n if (typeof value !== 'string') {\n throw new TypeError(\n `The \"${name}\" argument must be of type string. Received type ${typeof value}`\n )\n }\n}\n\nexports.normalizeString = function normalizeString(\n path,\n allowAboveRoot,\n separator,\n isPathSeparator\n) {\n let res = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let code = 0\n for (let i = 0; i <= path.length; ++i) {\n if (i < path.length) {\n code = path.charCodeAt(i)\n } else if (isPathSeparator(code)) {\n break\n } else {\n code = CHAR_FORWARD_SLASH\n }\n\n if (isPathSeparator(code)) {\n if (lastSlash === i - 1 || dots === 1);\n else if (dots === 2) {\n if (\n res.length < 2 ||\n lastSegmentLength !== 2 ||\n res.charCodeAt(res.length - 1) !== CHAR_DOT ||\n res.charCodeAt(res.length - 2) !== CHAR_DOT\n ) {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(separator)\n if (lastSlashIndex === -1) {\n res = ''\n lastSegmentLength = 0\n } else {\n res = res.substring(0, lastSlashIndex)\n lastSegmentLength = res.length - 1 - res.lastIndexOf(separator)\n }\n lastSlash = i\n dots = 0\n continue\n } else if (res.length !== 0) {\n res = ''\n lastSegmentLength = 0\n lastSlash = i\n dots = 0\n continue\n }\n }\n if (allowAboveRoot) {\n res += res.length > 0 ? `${separator}..` : '..'\n lastSegmentLength = 2\n }\n } else {\n if (res.length > 0) {\n res += `${separator}${path.substring(lastSlash + 1, i)}`\n } else {\n res = path.substring(lastSlash + 1, i)\n }\n lastSegmentLength = i - lastSlash - 1\n }\n lastSlash = i\n dots = 0\n } else if (code === CHAR_DOT && dots !== -1) {\n ++dots\n } else {\n dots = -1\n }\n }\n return res\n}\nconst binding = require('../binding')\n\nconst { normalizeString, validateString } = require('./shared')\nconst {\n CHAR_UPPERCASE_A,\n CHAR_LOWERCASE_A,\n CHAR_UPPERCASE_Z,\n CHAR_LOWERCASE_Z,\n CHAR_DOT,\n CHAR_FORWARD_SLASH,\n CHAR_BACKWARD_SLASH,\n CHAR_COLON,\n CHAR_QUESTION_MARK\n} = require('./constants')\n\nfunction isWindowsPathSeparator(code) {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH\n}\n\nfunction isWindowsDeviceRoot(code) {\n return (\n (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) ||\n (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z)\n )\n}\n\nexports.posix = require('./posix')\nexports.win32 = exports\n\nexports.sep = '\\\\'\nexports.delimiter = ';'\n\nexports.resolve = function resolve(...args) {\n let resolvedDevice = ''\n let resolvedTail = ''\n let resolvedAbsolute = false\n\n for (let i = args.length - 1; i >= -1; i--) {\n let path\n if (i >= 0) {\n path = args[i]\n\n validateString(path, `paths[${i}]`)\n\n if (path.length === 0) continue\n } else if (resolvedDevice.length === 0) {\n path = binding.cwd()\n } else {\n path = binding.cwd(resolvedDevice)\n\n if (\n path === undefined ||\n (path.substring(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() &&\n path.charCodeAt(2) === CHAR_BACKWARD_SLASH)\n ) {\n path = `${resolvedDevice}\\\\`\n }\n }\n\n const len = path.length\n let rootEnd = 0\n let device = ''\n let isAbsolute = false\n const code = path.charCodeAt(0)\n\n if (len === 1) {\n if (isWindowsPathSeparator(code)) {\n rootEnd = 1\n isAbsolute = true\n }\n } else if (isWindowsPathSeparator(code)) {\n isAbsolute = true\n\n if (isWindowsPathSeparator(path.charCodeAt(1))) {\n let j = 2\n let last = j\n while (j < len && !isWindowsPathSeparator(path.charCodeAt(j))) {\n j++\n }\n if (j < len && j !== last) {\n const firstPart = path.substring(last, j)\n last = j\n while (j < len && isWindowsPathSeparator(path.charCodeAt(j))) {\n j++\n }\n if (j < len && j !== last) {\n last = j\n while (j < len && !isWindowsPathSeparator(path.charCodeAt(j))) {\n j++\n }\n if (j === len || j !== last) {\n device = `\\\\\\\\${firstPart}\\\\${path.substring(last, j)}`\n rootEnd = j\n }\n }\n }\n } else {\n rootEnd = 1\n }\n } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n device = path.substring(0, 2)\n rootEnd = 2\n if (len > 2 && isWindowsPathSeparator(path.charCodeAt(2))) {\n isAbsolute = true\n rootEnd = 3\n }\n }\n\n if (device.length > 0) {\n if (resolvedDevice.length > 0) {\n if (device.toLowerCase() !== resolvedDevice.toLowerCase()) {\n continue\n }\n } else {\n resolvedDevice = device\n }\n }\n\n if (resolvedAbsolute) {\n if (resolvedDevice.length > 0) {\n break\n }\n } else {\n resolvedTail = `${path.substring(rootEnd)}\\\\${resolvedTail}`\n resolvedAbsolute = isAbsolute\n if (isAbsolute && resolvedDevice.length > 0) {\n break\n }\n }\n }\n\n resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\\\', isWindowsPathSeparator)\n\n return resolvedAbsolute\n ? `${resolvedDevice}\\\\${resolvedTail}`\n : `${resolvedDevice}${resolvedTail}` || '.'\n}\n\nexports.normalize = function normalize(path) {\n validateString(path, 'path')\n\n const len = path.length\n if (len === 0) return '.'\n let rootEnd = 0\n let device\n let isAbsolute = false\n const code = path.charCodeAt(0)\n\n if (len === 1) {\n return code === CHAR_FORWARD_SLASH ? '\\\\' : path\n }\n\n if (isWindowsPathSeparator(code)) {\n isAbsolute = true\n\n if (isWindowsPathSeparator(path.charCodeAt(1))) {\n let j = 2\n let last = j\n while (j < len && !isWindowsPathSeparator(path.charCodeAt(j))) {\n j++\n }\n if (j < len && j !== last) {\n const firstPart = path.substring(last, j)\n last = j\n while (j < len && isWindowsPathSeparator(path.charCodeAt(j))) {\n j++\n }\n if (j < len && j !== last) {\n last = j\n while (j < len && !isWindowsPathSeparator(path.charCodeAt(j))) {\n j++\n }\n if (j === len) {\n return `\\\\\\\\${firstPart}\\\\${path.substring(last)}\\\\`\n }\n if (j !== last) {\n device = `\\\\\\\\${firstPart}\\\\${path.substring(last, j)}`\n rootEnd = j\n }\n }\n }\n } else {\n rootEnd = 1\n }\n } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n device = path.substring(0, 2)\n rootEnd = 2\n if (len > 2 && isWindowsPathSeparator(path.charCodeAt(2))) {\n isAbsolute = true\n rootEnd = 3\n }\n }\n\n let tail =\n rootEnd < len\n ? normalizeString(path.substring(rootEnd), !isAbsolute, '\\\\', isWindowsPathSeparator)\n : ''\n if (tail.length === 0 && !isAbsolute) {\n tail = '.'\n }\n if (tail.length > 0 && isWindowsPathSeparator(path.charCodeAt(len - 1))) {\n tail += '\\\\'\n }\n if (device === undefined) {\n return isAbsolute ? `\\\\${tail}` : tail\n }\n return isAbsolute ? `${device}\\\\${tail}` : `${device}${tail}`\n}\n\nexports.isAbsolute = function isAbsolute(path) {\n validateString(path, 'path')\n\n const len = path.length\n if (len === 0) return false\n\n const code = path.charCodeAt(0)\n\n return (\n isWindowsPathSeparator(code) ||\n (len > 2 &&\n isWindowsDeviceRoot(code) &&\n path.charCodeAt(1) === CHAR_COLON &&\n isWindowsPathSeparator(path.charCodeAt(2)))\n )\n}\n\nexports.join = function join(...args) {\n if (args.length === 0) return '.'\n\n let joined\n let firstPart\n for (let i = 0; i < args.length; ++i) {\n const arg = args[i]\n validateString(arg, 'path')\n if (arg.length > 0) {\n if (joined === undefined) joined = firstPart = arg\n else joined += `\\\\${arg}`\n }\n }\n\n if (joined === undefined) return '.'\n\n let needsReplace = true\n let slashCount = 0\n if (isWindowsPathSeparator(firstPart.charCodeAt(0))) {\n ++slashCount\n const firstLen = firstPart.length\n if (firstLen > 1 && isWindowsPathSeparator(firstPart.charCodeAt(1))) {\n ++slashCount\n if (firstLen > 2) {\n if (isWindowsPathSeparator(firstPart.charCodeAt(2))) {\n ++slashCount\n } else {\n needsReplace = false\n }\n }\n }\n }\n if (needsReplace) {\n while (slashCount < joined.length && isWindowsPathSeparator(joined.charCodeAt(slashCount))) {\n slashCount++\n }\n\n if (slashCount >= 2) {\n joined = `\\\\${joined.substring(slashCount)}`\n }\n }\n\n return exports.normalize(joined)\n}\n\nexports.relative = function relative(from, to) {\n validateString(from, 'from')\n validateString(to, 'to')\n\n if (from === to) return ''\n\n const fromOrig = exports.resolve(from)\n const toOrig = exports.resolve(to)\n\n if (fromOrig === toOrig) return ''\n\n from = fromOrig.toLowerCase()\n to = toOrig.toLowerCase()\n\n if (from === to) return ''\n\n let fromStart = 0\n while (fromStart < from.length && from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) {\n fromStart++\n }\n let fromEnd = from.length\n while (fromEnd - 1 > fromStart && from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) {\n fromEnd--\n }\n const fromLen = fromEnd - fromStart\n\n let toStart = 0\n while (toStart < to.length && to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\n toStart++\n }\n let toEnd = to.length\n while (toEnd - 1 > toStart && to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) {\n toEnd--\n }\n const toLen = toEnd - toStart\n\n const length = fromLen < toLen ? fromLen : toLen\n let lastCommonSep = -1\n let i = 0\n for (; i < length; i++) {\n const fromCode = from.charCodeAt(fromStart + i)\n if (fromCode !== to.charCodeAt(toStart + i)) {\n break\n } else if (fromCode === CHAR_BACKWARD_SLASH) {\n lastCommonSep = i\n }\n }\n\n if (i !== length) {\n if (lastCommonSep === -1) return toOrig\n } else {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) {\n return toOrig.substring(toStart + i + 1)\n }\n if (i === 2) {\n return toOrig.substring(toStart + i)\n }\n }\n if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) {\n lastCommonSep = i\n } else if (i === 2) {\n lastCommonSep = 3\n }\n }\n if (lastCommonSep === -1) lastCommonSep = 0\n }\n\n let out = ''\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) {\n out += out.length === 0 ? '..' : '\\\\..'\n }\n }\n\n toStart += lastCommonSep\n\n if (out.length > 0) {\n return `${out}${toOrig.substring(toStart, toEnd)}`\n }\n if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\n ++toStart\n }\n return toOrig.substring(toStart, toEnd)\n}\n\nexports.toNamespacedPath = function toNamespacedPath(path) {\n if (typeof path !== 'string' || path.length === 0) return path\n\n const resolvedPath = exports.resolve(path)\n\n if (resolvedPath.length <= 2) return path\n\n if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\n if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\n const code = resolvedPath.charCodeAt(2)\n if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) {\n return `\\\\\\\\?\\\\UNC\\\\${resolvedPath.substring(2)}`\n }\n }\n } else if (\n isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) &&\n resolvedPath.charCodeAt(1) === CHAR_COLON &&\n resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH\n ) {\n return `\\\\\\\\?\\\\${resolvedPath}`\n }\n\n return path\n}\n\nexports.dirname = function dirname(path) {\n validateString(path, 'path')\n\n const len = path.length\n if (len === 0) return '.'\n let rootEnd = -1\n let offset = 0\n const code = path.charCodeAt(0)\n\n if (len === 1) {\n return isWindowsPathSeparator(code) ? path : '.'\n }\n\n if (isWindowsPathSeparator(code)) {\n rootEnd = offset = 1\n\n if (isWindowsPathSeparator(path.charCodeAt(1))) {\n let j = 2\n let last = j\n while (j < len && !isWindowsPathSeparator(path.charCodeAt(j))) {\n j++\n }\n if (j < len && j !== last) {\n last = j\n while (j < len && isWindowsPathSeparator(path.charCodeAt(j))) {\n j++\n }\n if (j < len && j !== last) {\n last = j\n while (j < len && !isWindowsPathSeparator(path.charCodeAt(j))) {\n j++\n }\n if (j === len) {\n return path\n }\n if (j !== last) {\n rootEnd = offset = j + 1\n }\n }\n }\n }\n } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n rootEnd = len > 2 && isWindowsPathSeparator(path.charCodeAt(2)) ? 3 : 2\n offset = rootEnd\n }\n\n let end = -1\n let matchedSlash = true\n for (let i = len - 1; i >= offset; --i) {\n if (isWindowsPathSeparator(path.charCodeAt(i))) {\n if (!matchedSlash) {\n end = i\n break\n }\n } else {\n matchedSlash = false\n }\n }\n\n if (end === -1) {\n if (rootEnd === -1) return '.'\n\n end = rootEnd\n }\n return path.substring(0, end)\n}\n\nexports.basename = function basename(path, suffix) {\n if (suffix !== undefined) validateString(suffix, 'suffix')\n validateString(path, 'path')\n\n let start = 0\n let end = -1\n let matchedSlash = true\n\n if (\n path.length >= 2 &&\n isWindowsDeviceRoot(path.charCodeAt(0)) &&\n path.charCodeAt(1) === CHAR_COLON\n ) {\n start = 2\n }\n\n if (suffix !== undefined && suffix.length > 0 && suffix.length <= path.length) {\n if (suffix === path) return ''\n let extIdx = suffix.length - 1\n let firstNonSlashEnd = -1\n for (let i = path.length - 1; i >= start; --i) {\n const code = path.charCodeAt(i)\n if (isWindowsPathSeparator(code)) {\n if (!matchedSlash) {\n start = i + 1\n break\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false\n firstNonSlashEnd = i + 1\n }\n if (extIdx >= 0) {\n if (code === suffix.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n end = i\n }\n } else {\n extIdx = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd\n else if (end === -1) end = path.length\n return path.substring(start, end)\n }\n for (let i = path.length - 1; i >= start; --i) {\n if (isWindowsPathSeparator(path.charCodeAt(i))) {\n if (!matchedSlash) {\n start = i + 1\n break\n }\n } else if (end === -1) {\n matchedSlash = false\n end = i + 1\n }\n }\n\n if (end === -1) return ''\n return path.substring(start, end)\n}\n\nexports.extname = function extname(path) {\n validateString(path, 'path')\n\n let start = 0\n let startDot = -1\n let startPart = 0\n let end = -1\n let matchedSlash = true\n let preDotState = 0\n\n if (\n path.length >= 2 &&\n path.charCodeAt(1) === CHAR_COLON &&\n isWindowsDeviceRoot(path.charCodeAt(0))\n ) {\n start = startPart = 2\n }\n\n for (let i = path.length - 1; i >= start; --i) {\n const code = path.charCodeAt(i)\n if (isWindowsPathSeparator(code)) {\n if (!matchedSlash) {\n startPart = i + 1\n break\n }\n continue\n }\n if (end === -1) {\n matchedSlash = false\n end = i + 1\n }\n if (code === CHAR_DOT) {\n if (startDot === -1) startDot = i\n else if (preDotState !== 1) preDotState = 1\n } else if (startDot !== -1) {\n preDotState = -1\n }\n }\n\n if (\n startDot === -1 ||\n end === -1 ||\n preDotState === 0 ||\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n return path.substring(startDot, end)\n}\n{\n \"name\": \"bare-path\",\n \"version\": \"3.1.1\",\n \"description\": \"Path manipulation library for JavaScript\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\",\n \"./posix\": \"./lib/posix.js\",\n \"./win32\": \"./lib/win32.js\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\",\n \"NOTICE\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-path.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-path/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-path#readme\",\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"cmake-bare\": \"^1.1.6\",\n \"lunte\": \"^1.8.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nmodule.exports = require.addon()\nconst { now, timeOrigin } = require('./lib/hr-time')\nconst {\n PerformanceEntry,\n PerformanceMark,\n PerformanceMeasure,\n PerformanceObserver,\n PerformanceObserverEntryList,\n PerformanceResourceTiming,\n clearMarks,\n clearMeasures,\n clearResourceTimings,\n getEntries,\n getEntriesByName,\n getEntriesByType,\n mark,\n markResourceTiming,\n measure,\n setResourceTimingBufferSize,\n registerEventHandler\n} = require('./lib/timing')\nconst { RecordableHistogram, IntervalHistogram } = require('./lib/histogram')\nconst { Event, EventTarget } = require('bare-events/web')\nconst binding = require('./binding')\n\n// For Node.js compatibility\nclass PerformanceNodeTiming {\n get idleTime() {\n return module.exports.idleTime()\n }\n\n get uvMetricsInfo() {\n return module.exports.metricsInfo()\n }\n}\n\nconst nodeTiming = new PerformanceNodeTiming()\n\nclass Performance extends EventTarget {\n constructor() {\n super()\n\n registerEventHandler((eventName) => {\n this.dispatchEvent(new Event(eventName))\n })\n }\n\n // For Node.js compatibility\n get performance() {\n return this\n }\n\n // For Node.js compatibility\n get nodeTiming() {\n return nodeTiming\n }\n\n get PerformanceEntry() {\n return PerformanceEntry\n }\n\n get PerformanceMark() {\n return PerformanceMark\n }\n\n get PerformanceMeasure() {\n return PerformanceMeasure\n }\n\n // For Node.js compatibility\n get PerformanceNodeTiming() {\n return PerformanceNodeTiming\n }\n\n get PerformanceResourceTiming() {\n return PerformanceResourceTiming\n }\n\n get PerformanceObserver() {\n return PerformanceObserver\n }\n\n get PerformanceObserverEntryList() {\n return PerformanceObserverEntryList\n }\n\n get timeOrigin() {\n return timeOrigin\n }\n\n // For Node.js compatibility\n get constants() {\n return {\n NODE_PERFORMANCE_GC_MAJOR: binding.constants.MARK_COMPACT,\n NODE_PERFORMANCE_GC_MINOR: binding.constants.GENERATIONAL,\n NODE_PERFORMANCE_GC_INCREMENTAL: -1,\n NODE_PERFORMANCE_GC_WEAKCB: -1\n }\n }\n\n now() {\n return now()\n }\n\n eventLoopUtilization(prevUtil, secUtil) {\n if (secUtil) {\n const idle = prevUtil.idle - secUtil.idle\n const active = prevUtil.active - secUtil.active\n return { idle, active, utilization: active / (idle + active) }\n }\n\n let idle = this.idleTime()\n if (idle === 0) return { idle: 0, active: 0, utilization: 0 }\n\n let active = now() - idle\n if (!prevUtil) return { idle, active, utilization: active / (idle + active) }\n\n idle = idle - prevUtil.idle\n active = active - prevUtil.active\n\n return { idle, active, utilization: active / (idle + active) }\n }\n\n idleTime() {\n return binding.idleTime()\n }\n\n metricsInfo() {\n return binding.metricsInfo()\n }\n\n getEntries() {\n return getEntries()\n }\n\n getEntriesByName(name) {\n return getEntriesByName(name)\n }\n\n getEntriesByType(type) {\n return getEntriesByType(type)\n }\n\n mark(name, opts) {\n return mark(name, opts)\n }\n\n measure(name, start, end) {\n return measure(name, start, end)\n }\n\n markResourceTiming(\n timingInfo,\n requestedUrl,\n initiatorType,\n global,\n cacheMode,\n bodyInfo,\n responseStatus,\n deliveryType\n ) {\n return markResourceTiming(\n timingInfo,\n requestedUrl,\n initiatorType,\n global,\n cacheMode,\n bodyInfo,\n responseStatus,\n deliveryType\n )\n }\n\n clearMarks(name) {\n clearMarks(name)\n }\n\n clearMeasures(name) {\n clearMeasures(name)\n }\n\n clearResourceTimings(name) {\n clearResourceTimings(name)\n }\n\n setResourceTimingBufferSize(maxSize) {\n setResourceTimingBufferSize(maxSize)\n }\n\n createHistogram(opts) {\n return new RecordableHistogram(opts)\n }\n\n monitorEventLoopDelay(opts) {\n return new IntervalHistogram(opts)\n }\n}\n\nmodule.exports = new Performance()\nmodule.exports = {\n observerType: {\n UNDEFINED: 1,\n SINGLE: 2,\n MULTIPLE: 3\n }\n}\nclass InvalidModificationError extends Error {\n get name() {\n return 'InvalidModificationError'\n }\n}\n\nexports.InvalidModificationError = InvalidModificationError\nconst binding = require('../binding')\n\nclass Histogram {\n constructor(opts = {}) {\n const { lowest = 1, highest = Number.MAX_SAFE_INTEGER, figures = 3 } = opts\n\n this._handle = binding.histogramInit(this, lowest, highest, figures)\n\n this._count = 0\n this._exceeds = 0\n }\n\n get max() {\n return binding.histogramMax(this._handle)\n }\n\n get min() {\n return binding.histogramMin(this._handle)\n }\n\n get mean() {\n return binding.histogramMean(this._handle)\n }\n\n get percentiles() {\n return new Map(binding.histogramPercentiles(this._handle))\n }\n\n get stddev() {\n return binding.histogramStddev(this._handle)\n }\n\n get count() {\n return this._count\n }\n\n get exceeds() {\n return this._exceeds\n }\n\n percentile(percentile) {\n return binding.histogramPercentile(this._handle, percentile)\n }\n\n reset() {\n this._count = 0\n this._exceeds = 0\n\n binding.histogramReset(this._handle)\n }\n}\n\nexports.RecordableHistogram = class RecordableHistogram extends Histogram {\n add(other) {\n this._count += other._count\n this._exceeds += other._exceeds\n\n binding.histogramAdd(this._handle, other._handle)\n }\n\n record(value) {\n if (binding.histogramRecord(this._handle, value)) this._count++\n else this._exceeds++\n }\n}\n\nexports.IntervalHistogram = class IntervalHistogram extends Histogram {\n constructor(opts = {}) {\n const { resolution = 10 } = opts\n\n super({\n lowest: 1,\n highest: 3_600_000_000_000 // One hour in nanoseconds\n })\n\n this._resolution = resolution\n this._enabled = false\n\n this._timerId = -1\n this._timerStartTime = -1\n }\n\n enable() {\n if (this._enabled === true) return false\n\n this._timerStartTime = binding.now()\n this._timerId = setInterval(this._oninterval.bind(this), this._resolution)\n this._timerId.unref()\n\n this._enabled = true\n\n return true\n }\n\n disable() {\n if (this._enabled === false) return false\n\n clearInterval(this._timerId)\n\n this._enabled = false\n\n return true\n }\n\n _oninterval() {\n const now = binding.now()\n const actual = now - this._timerStartTime\n const expected = this._resolution * 1e6\n\n const hasDelay = actual > expected\n\n if (hasDelay) {\n const delay = actual - expected\n\n if (binding.histogramRecord(this._handle, delay)) this._count++\n else this._exceeds++\n }\n\n this._timerStartTime = now\n }\n\n [Symbol.dispose]() {\n this.disable()\n }\n}\nconst binding = require('../binding')\n\nconst { TIME_ORIGIN } = binding\n\nexports.now = function now() {\n return binding.now() / 1e6 - TIME_ORIGIN\n}\n\nexports.timeOrigin = TIME_ORIGIN\nconst binding = require('../binding')\nconst { now, timeOrigin } = require('./hr-time')\nconst { observerType } = require('./constants')\nconst { InvalidModificationError } = require('./errors')\n\nfunction noop() {}\n\nconst globalObservers = new Set()\nconst globalPendingObservers = new Set()\nlet observerTaskQueued = false\n\nlet globalBuffer = []\n\nlet globalResourceTimingSecondaryBuffer = []\nlet resourceTimingFullEventPending = false\nlet resourceTimingSizeLimit = 250\nlet onResourceTimingBufferFull = noop\n\nexports.PerformanceEntry = class PerformanceEntry {\n constructor(name, type, start, duration) {\n this._name = name\n this._type = type\n this._start = start\n this._duration = duration\n }\n\n get name() {\n return this._name\n }\n\n get entryType() {\n return this._type\n }\n\n get startTime() {\n return this._start\n }\n\n get duration() {\n return this._duration\n }\n}\n\nexports.PerformanceResourceTiming = class PerformanceResourceTiming extends (\n exports.PerformanceEntry\n) {\n constructor(\n initiatorType,\n requestedUrl,\n timingInfo,\n cacheMode,\n bodyInfo,\n responseStatus,\n deliveryType\n ) {\n super(requestedUrl, 'resource', timingInfo.startTime, timingInfo.endTime - timingInfo.startTime)\n\n this._initiatorType = initiatorType\n this._requestedURL = requestedUrl\n this._timingInfo = timingInfo\n this._resourceInfo = bodyInfo\n this._cacheMode = cacheMode\n this._responseStatus = responseStatus\n this._deliveryType = deliveryType\n }\n\n get initiatorType() {\n return this._initiatorType\n }\n\n get deliveryType() {\n return this._deliveryType\n }\n\n get transferSize() {\n if (this._cacheMode === 'local') return 0\n if (this._cacheMode === 'validated') return 300\n\n return this.encodedBodySize * 300\n }\n\n get responseStatus() {\n return this._responseStatus\n }\n\n get encodedBodySize() {\n return this._resourceInfo.encodedSize\n }\n}\n\nclass PerformanceGCEntry extends exports.PerformanceEntry {\n static _handle = null\n static _refs = 0\n\n static _ref() {\n if (this._refs++ === 0) {\n this._handle = binding.enableGarbageCollectionTracking(this, this._onentry)\n }\n }\n\n static _unref() {\n if (--this._refs === 0) {\n binding.disableGarbageCollectionTracking(this._handle)\n this._handle = null\n }\n }\n\n static _onentry(startTime, duration, kind) {\n startTime -= timeOrigin\n\n const entry = new PerformanceGCEntry(startTime, duration, kind)\n\n processEntry(entry)\n }\n\n constructor(startTime, duration, kind) {\n super('gc', 'gc', startTime, duration)\n\n this._detail = { kind }\n }\n\n get detail() {\n return this._detail\n }\n}\n\nexports.PerformanceMark = class PerformanceMark extends exports.PerformanceEntry {\n constructor(name, opts = {}) {\n const { startTime = now(), detail = null } = opts\n\n super(name, 'mark', startTime, 0)\n\n this._detail = detail\n }\n\n get detail() {\n return this._detail\n }\n}\n\nexports.PerformanceMeasure = class PerformanceMeasure extends exports.PerformanceEntry {\n constructor(name, startTime, duration, opts = {}) {\n const { detail = null } = opts\n\n super(name, 'measure', startTime, duration)\n\n this._detail = detail\n }\n\n get detail() {\n return this._detail\n }\n}\n\nexports.PerformanceObserverEntryList = class PerformanceObserverEntryList {\n constructor(entryList) {\n this._list = entryList\n }\n\n getEntries() {\n return this._list\n }\n\n getEntriesByType(type) {\n return this._list.filter((entry) => entry.entryType === type)\n }\n\n getEntriesByName(name) {\n return this._list.filter((entry) => entry.name === name)\n }\n}\n\nexports.PerformanceObserver = class PerformanceObserver {\n constructor(cb) {\n this._entryTypes = new Set()\n this._type = observerType.UNDEFINED\n this._buffer = []\n this._cb = cb\n }\n\n static get supportedEntryTypes() {\n return ['mark', 'measure', 'gc', 'resource']\n }\n\n observe(opts = {}) {\n if ((!opts.entryTypes && !opts.type) || (opts.entryTypes && opts.type)) {\n throw new TypeError('opts.entryTypes OR opts.type must be specified')\n }\n\n if (\n (this._type === observerType.MULTIPLE && opts.type) ||\n (this._type === observerType.SINGLE && opts.entryTypes)\n ) {\n throw new InvalidModificationError('Cannot change the PerformanceObserver type')\n }\n\n if (this._type === observerType.UNDEFINED) {\n this._type = opts.entryTypes ? observerType.MULTIPLE : observerType.SINGLE\n }\n\n this._entryTypes.clear()\n\n if (this._type === observerType.MULTIPLE) {\n for (const entryType of opts.entryTypes) {\n if (PerformanceObserver.supportedEntryTypes.includes(entryType)) {\n this._entryTypes.add(entryType)\n }\n }\n } else {\n if (PerformanceObserver.supportedEntryTypes.includes(opts.type)) {\n this._entryTypes.add(opts.type)\n\n if (opts.buffered === true) {\n const bufferedEntries = globalBuffer.filter((entry) => entry.entryType === opts.type)\n\n if (bufferedEntries.length > 0) {\n this._buffer.push(...bufferedEntries)\n\n globalPendingObservers.add(this)\n processPendingObservers()\n }\n }\n }\n }\n\n if (this._entryTypes.size > 0) {\n globalObservers.add(this)\n\n if (this._entryTypes.has('gc')) PerformanceGCEntry._ref()\n } else {\n this.disconnect()\n }\n }\n\n takeRecords() {\n const buf = this._buffer\n this._buffer = []\n return buf\n }\n\n disconnect() {\n globalObservers.delete(this)\n\n if (this._entryTypes.has('gc')) PerformanceGCEntry._unref()\n\n this._entryTypes.clear()\n\n this._type = observerType.UNDEFINED\n }\n}\n\nexports.mark = function mark(name, opts) {\n const mark = new exports.PerformanceMark(name, opts)\n\n processEntry(mark)\n\n globalBuffer.push(mark)\n\n return mark\n}\n\nexports.clearMarks = function clearMarks(name) {\n if (name) {\n globalBuffer = globalBuffer.filter((entry) => entry.name !== name && entry.entryType !== 'mark')\n } else {\n globalBuffer = globalBuffer.filter((entry) => entry.entryType !== 'mark')\n }\n}\n\nexports.measure = function measure(name, start, end) {\n let opts = {}\n\n if (typeof start === 'object' && start !== null && Object.keys(start).length > 0) {\n opts = start\n\n if (!opts.start && !opts.end) {\n throw new TypeError('opts.start or opts.end must be specified')\n }\n\n if (opts.start && opts.end && opts.duration) {\n throw new TypeError('One of opts.start, opts.end or opts.duration must not be specified')\n }\n\n start = opts.start\n end = opts.end\n }\n\n let endTime\n\n if (end) {\n endTime = toTimestamp(end)\n } else if (start && opts.duration) {\n endTime = toTimestamp(start) + toTimestamp(opts.duration)\n } else {\n endTime = now()\n }\n\n let startTime\n\n if (start) {\n startTime = toTimestamp(start)\n } else if (end && opts.duration) {\n startTime = toTimestamp(end) - toTimestamp(opts.duration)\n } else {\n startTime = 0\n }\n\n const duration = endTime - startTime\n\n const measure = new exports.PerformanceMeasure(name, startTime, duration, opts)\n\n processEntry(measure)\n\n globalBuffer.push(measure)\n\n return measure\n}\n\nexports.clearMeasures = function clearMeasures(name) {\n if (name) {\n globalBuffer = globalBuffer.filter(\n (entry) => entry.name !== name && entry.entryType !== 'measure'\n )\n } else {\n globalBuffer = globalBuffer.filter((entry) => entry.entryType !== 'measure')\n }\n}\n\n// https://w3c.github.io/resource-timing/#marking-resource-timing\nexports.markResourceTiming = function markResourceTiming(\n timingInfo,\n requestedUrl,\n initiatorType,\n global,\n cacheMode,\n bodyInfo,\n responseStatus,\n deliveryType = ''\n) {\n const resource = new exports.PerformanceResourceTiming(\n initiatorType,\n requestedUrl,\n timingInfo,\n cacheMode,\n bodyInfo,\n responseStatus,\n deliveryType\n )\n\n processEntry(resource)\n\n addResourceTimingEntry(resource)\n\n return resource\n}\n\nexports.clearResourceTimings = function clearResourceTimings(name) {\n if (name) {\n globalBuffer = globalBuffer.filter(\n (entry) => entry.name !== name && entry.entryType !== 'resource'\n )\n } else {\n globalBuffer = globalBuffer.filter((entry) => entry.entryType !== 'resource')\n }\n}\n\nexports.getEntries = function getEntries() {\n return new exports.PerformanceObserverEntryList(globalBuffer).getEntries()\n}\n\nexports.getEntriesByName = function getEntriesByName(name) {\n return new exports.PerformanceObserverEntryList(globalBuffer).getEntriesByName(name)\n}\n\nexports.getEntriesByType = function getEntriesByType(type) {\n return new exports.PerformanceObserverEntryList(globalBuffer).getEntriesByType(type)\n}\n\nexports.setResourceTimingBufferSize = function setResourceTimingBufferSize(maxSize) {\n resourceTimingSizeLimit = maxSize\n}\n\n// https://w3c.github.io/performance-timeline/#queue-a-performanceentry\nfunction processEntry(entry) {\n for (const observer of globalObservers) {\n if (observer._entryTypes.has(entry.entryType)) {\n observer._buffer.push(entry)\n\n globalPendingObservers.add(observer)\n processPendingObservers()\n }\n }\n}\n\n// https://w3c.github.io/resource-timing/#dfn-can-add-resource-timing-entry\nfunction canAddResourceTimingEntry() {\n const bufferSize = globalBuffer.filter((entry) => entry.entryType === 'resource').length\n\n return bufferSize < resourceTimingSizeLimit\n}\n\n// https://w3c.github.io/resource-timing/#dfn-copy-secondary-buffer\nfunction copySecondaryBuffer() {\n while (globalResourceTimingSecondaryBuffer.length > 0 && canAddResourceTimingEntry()) {\n const resource = globalResourceTimingSecondaryBuffer.shift()\n\n globalBuffer.push(resource)\n }\n}\n\n// https://w3c.github.io/resource-timing/#dfn-fire-a-buffer-full-event\nfunction fireBufferFullEvent() {\n while (globalResourceTimingSecondaryBuffer.length > 0) {\n const numberOfExcessEntriesBefore = globalResourceTimingSecondaryBuffer.length\n\n if (!canAddResourceTimingEntry()) {\n onResourceTimingBufferFull('resourcetimingbufferfull')\n }\n\n copySecondaryBuffer()\n\n const numberOfExcessEntriesAfter = globalResourceTimingSecondaryBuffer.length\n\n if (numberOfExcessEntriesBefore <= numberOfExcessEntriesAfter) {\n globalResourceTimingSecondaryBuffer = []\n }\n }\n\n resourceTimingFullEventPending = false\n}\n\n// https://w3c.github.io/resource-timing/#dfn-add-a-PerformanceResourceTiming-entry\nfunction addResourceTimingEntry(entry) {\n if (canAddResourceTimingEntry() && resourceTimingFullEventPending === false) {\n globalBuffer.push(entry)\n return\n } else if (resourceTimingFullEventPending === false) {\n resourceTimingFullEventPending = true\n\n setImmediate(() => fireBufferFullEvent())\n }\n\n globalResourceTimingSecondaryBuffer.push(entry)\n}\n\n// https://w3c.github.io/performance-timeline/#queue-the-performanceobserver-task\nfunction processPendingObservers() {\n if (observerTaskQueued) return\n\n observerTaskQueued = true\n setImmediate(() => {\n observerTaskQueued = false\n\n const observers = Array.from(globalPendingObservers.values())\n globalPendingObservers.clear()\n\n for (const observer of observers) {\n observer._cb(new exports.PerformanceObserverEntryList(observer.takeRecords()), observer)\n }\n })\n}\n\n// https://w3c.github.io/user-timing/#convert-a-mark-to-a-timestamp\nfunction toTimestamp(mark) {\n if (typeof mark === 'string') {\n const performanceMark = globalBuffer.findLast(\n (entry) => entry.name === mark && entry.entryType === 'mark'\n )\n\n if (performanceMark === undefined) {\n throw new SyntaxError(`Mark ${mark} not found`)\n }\n\n return performanceMark.startTime\n } else if (typeof mark === 'number') {\n return mark\n }\n}\n\n// https://w3c.github.io/resource-timing/#performance-onresourcetimingbufferfull\nexports.registerEventHandler = function registerEventHandler(handler) {\n onResourceTimingBufferFull = handler\n}\n{\n \"name\": \"bare-performance\",\n \"version\": \"2.1.1\",\n \"description\": \"Performance monitoring for Bare\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": \"./index.js\",\n \"./global\": \"./global.js\"\n },\n \"files\": [\n \"index.js\",\n \"binding.c\",\n \"binding.js\",\n \"global.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"bare --expose-gc test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-performance.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-performance/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-performance#readme\",\n \"engines\": {\n \"bare\": \">=1.27.0\"\n },\n \"dependencies\": {\n \"bare-events\": \"^2.9.1\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.13.1\",\n \"cmake-bare\": \"^1.5.4\",\n \"cmake-fetch\": \"^1.4.7\",\n \"lunte\": \"^1.8.4\",\n \"prettier\": \"^3.5.3\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nmodule.exports = require.addon()\nconst EventEmitter = require('bare-events')\nconst { Duplex } = require('bare-stream')\nconst binding = require('./binding')\nconst constants = require('./lib/constants')\nconst errors = require('./lib/errors')\n\nconst defaultReadBufferSize = 65536\nconst empty = Buffer.alloc(0)\n\nconst ipcHandle = Symbol.for('bare.ipc.handle')\nconst ipcAccept = Symbol.for('bare.ipc.accept')\n\nmodule.exports = exports = class Pipe extends Duplex {\n constructor(path, opts = {}) {\n if (typeof path === 'object' && path !== null) {\n opts = path\n path = null\n }\n\n const {\n readBufferSize = defaultReadBufferSize,\n allowHalfOpen = true,\n eagerOpen = true,\n ipc = false\n } = opts\n\n super({ eagerOpen })\n\n this._state = 0\n\n this._allowHalfOpen = allowHalfOpen\n this._ipc = ipc\n\n this._fd = -1\n this._path = null\n\n this._pendingOpen = null\n this._pendingWrite = null\n this._pendingWriteBatch = null\n this._pendingWriteSegments = null\n this._pendingWriteIdx = 0\n this._pendingFinal = null\n this._pendingDestroy = null\n\n this._handleQueue = []\n this._handleQueueSize = 0\n\n this._buffer = Buffer.alloc(readBufferSize)\n\n this._handle = binding.init(\n this._buffer,\n ipc,\n this,\n noop,\n this._onconnect,\n this._onwrite,\n this._onfinal,\n this._onread,\n this._onhandle,\n this._onclose\n )\n\n if (typeof path === 'number') {\n this.open(path)\n } else if (typeof path === 'string') {\n this.connect(path)\n }\n }\n\n get connecting() {\n return (this._state & constants.state.CONNECTING) !== 0\n }\n\n get pending() {\n return (this._state & constants.state.CONNECTED) === 0\n }\n\n get readyState() {\n if (this._state & constants.state.READABLE && this._state & constants.state.WRITABLE) {\n return 'open'\n }\n\n if (this._state & constants.state.READABLE) {\n return 'readOnly'\n }\n\n if (this._state & constants.state.WRITABLE) {\n return 'writeOnly'\n }\n\n return 'opening'\n }\n\n get [ipcHandle]() {\n return this._handle\n }\n\n open(fd, opts = {}, onconnect) {\n if (typeof opts === 'function') {\n onconnect = opts\n opts = {}\n }\n\n if (typeof fd === 'object' && fd !== null) {\n opts = fd || {}\n fd = opts.fd\n }\n\n try {\n const status = binding.open(this._handle, fd)\n\n this._state |= constants.state.CONNECTED\n this._fd = fd\n\n if (status & binding.READABLE) {\n this._state |= constants.state.READABLE\n } else {\n this.push(null)\n }\n\n if (status & binding.WRITABLE) {\n this._state |= constants.state.WRITABLE\n } else {\n this.end()\n }\n\n if (onconnect) this.once('connect', onconnect)\n\n queueMicrotask(() => this.emit('connect'))\n } catch (err) {\n queueMicrotask(() => {\n if (this._pendingOpen) this._pendingOpen(err)\n else this.destroy(err)\n })\n }\n\n return this\n }\n\n connect(path, opts = {}, onconnect) {\n if (this._state & constants.state.CONNECTING || this._state & constants.state.CONNECTED) {\n throw errors.PIPE_ALREADY_CONNECTED('Pipe is already connected')\n }\n\n this._state |= constants.state.CONNECTING\n\n if (typeof opts === 'function') {\n onconnect = opts\n opts = {}\n }\n\n if (typeof path === 'object' && path !== null) {\n opts = path || {}\n path = opts.path\n }\n\n try {\n binding.connect(this._handle, path)\n\n this._path = path\n\n if (onconnect) this.once('connect', onconnect)\n } catch (err) {\n queueMicrotask(() => {\n if (this._pendingOpen) this._pendingOpen(err)\n else this.destroy(err)\n })\n }\n\n return this\n }\n\n write(chunk, encoding, handle, cb) {\n if (typeof encoding === 'function') {\n cb = encoding\n encoding = undefined\n handle = null\n } else if (typeof encoding === 'object' && encoding !== null) {\n if (typeof handle === 'function') cb = handle\n handle = encoding\n encoding = undefined\n } else if (typeof handle === 'function') {\n cb = handle\n handle = null\n }\n\n if (handle) this._handleQueueSize++\n\n this._handleQueue.push(handle || null)\n\n if (encoding) return super.write(chunk, encoding, cb)\n\n return super.write(chunk, cb)\n }\n\n accept(target) {\n const handle = target[ipcHandle]\n\n if (handle === undefined) {\n throw errors.INVALID_IPC_TARGET('Target does not implement the IPC handle protocol')\n }\n\n binding.accept(this._handle, handle)\n\n if (typeof target[ipcAccept] === 'function') target[ipcAccept]()\n\n return target\n }\n\n ref() {\n binding.ref(this._handle)\n\n return this\n }\n\n unref() {\n binding.unref(this._handle)\n\n return this\n }\n\n [ipcAccept]() {\n this._onaccept()\n }\n\n _open(cb) {\n if (this._state & constants.state.CONNECTED) return cb(null)\n\n this._pendingOpen = cb\n }\n\n _read() {\n if ((this._state & constants.state.READING) === 0) {\n this._state |= constants.state.READING\n\n binding.resume(this._handle)\n }\n }\n\n _writev(batch, cb) {\n this._pendingWrite = cb\n this._pendingWriteBatch = batch\n\n if (this._handleQueueSize === 0) {\n this._handleQueue = []\n this._pendingWriteSegments = null\n\n try {\n binding.writev(\n this._handle,\n batch.map(({ chunk }) => chunk),\n null\n )\n } catch (err) {\n this._continueWrite(err)\n }\n return\n }\n\n const handles = this._handleQueue.splice(0, batch.length)\n\n // Fill any holes in the batch for messages that don't carry a handle. Each\n // message that does carry a handle decrements the handle queue size.\n for (let i = 0; i < batch.length; i++) {\n if (handles[i] === undefined) handles[i] = null\n else if (handles[i] !== null) this._handleQueueSize--\n }\n\n const segments = []\n\n let i = 0\n while (i < batch.length) {\n if (handles[i] !== null) {\n segments.push({ chunks: [batch[i]], handle: handles[i] })\n i++\n } else {\n const start = i\n while (i < batch.length && handles[i] === null) i++\n segments.push({ chunks: batch.slice(start, i), handle: null })\n }\n }\n\n this._pendingWriteSegments = segments\n this._pendingWriteIdx = 0\n\n this._writeNextSegment()\n }\n\n _writeNextSegment() {\n const segment = this._pendingWriteSegments[this._pendingWriteIdx]\n\n const chunks = []\n for (let i = 0; i < segment.chunks.length; i++) {\n chunks.push(segment.chunks[i].chunk)\n }\n\n let sendHandle = null\n if (segment.handle !== null) sendHandle = segment.handle[ipcHandle]\n\n try {\n binding.writev(this._handle, chunks, sendHandle)\n } catch (err) {\n this._continueWrite(err)\n }\n }\n\n _final(cb) {\n if (this._state & constants.state.READABLE && this._state & constants.state.WRITABLE) {\n this._pendingFinal = cb\n\n binding.end(this._handle)\n } else {\n cb(null)\n }\n }\n\n _predestroy() {\n if (this._state & constants.state.CLOSING) return\n this._state |= constants.state.CLOSING\n\n binding.close(this._handle)\n }\n\n _destroy(err, cb) {\n if (this._state & constants.state.CLOSING) return cb(err)\n this._state |= constants.state.CLOSING\n\n this._pendingDestroy = cb\n\n binding.close(this._handle)\n }\n\n _continueOpen(err) {\n if (this._pendingOpen === null) return\n const cb = this._pendingOpen\n this._pendingOpen = null\n cb(err)\n }\n\n _continueWrite(err) {\n if (this._pendingWrite === null) return\n\n if (this._pendingWriteSegments === null) {\n const cb = this._pendingWrite\n this._pendingWrite = null\n this._pendingWriteBatch = null\n cb(err)\n return\n }\n\n this._pendingWriteIdx++\n\n if (err === null && this._pendingWriteIdx < this._pendingWriteSegments.length) {\n this._writeNextSegment()\n return\n }\n\n const cb = this._pendingWrite\n this._pendingWrite = null\n this._pendingWriteBatch = null\n this._pendingWriteSegments = null\n this._pendingWriteIdx = 0\n cb(err)\n }\n\n _continueFinal(err) {\n if (this._pendingFinal === null) return\n const cb = this._pendingFinal\n this._pendingFinal = null\n cb(err)\n }\n\n _continueDestroy() {\n if (this._pendingDestroy === null) return\n const cb = this._pendingDestroy\n this._pendingDestroy = null\n cb(null)\n }\n\n _onconnect(err) {\n if (err) {\n if (this._pendingOpen) this._continueOpen(err)\n else this.destroy(err)\n return\n }\n\n this._state |= constants.state.CONNECTED | constants.state.READABLE | constants.state.WRITABLE\n this._state &= ~constants.state.CONNECTING\n this._continueOpen()\n\n this.emit('connect')\n }\n\n _onaccept() {\n this._state |= constants.state.CONNECTED | constants.state.READABLE | constants.state.WRITABLE\n this._continueOpen()\n }\n\n _onread(err, read) {\n if (err) {\n this.destroy(err)\n return\n }\n\n if (read === 0) {\n this.push(null)\n if (this._allowHalfOpen === false) this.end()\n return\n }\n\n const copy = Buffer.allocUnsafe(read)\n copy.set(this._buffer.subarray(0, read))\n\n if (this.push(copy) === false && this.destroying === false) {\n this._state &= ~constants.state.READING\n\n binding.pause(this._handle)\n }\n }\n\n _onhandle(type) {\n this.emit('handle', type)\n }\n\n _onwrite(err) {\n this._continueWrite(err)\n }\n\n _onfinal(err) {\n this._continueFinal(err === null || err.code === 'ENOTCONN' ? null : err)\n }\n\n _onclose() {\n this._continueDestroy()\n }\n\n _onspawn(readable, writable) {\n this._state |= constants.state.CONNECTED\n\n if (readable) {\n this._state |= constants.state.READABLE\n } else {\n this.push(null)\n }\n\n if (writable) {\n this._state |= constants.state.WRITABLE\n } else {\n this.end()\n }\n\n this._continueOpen()\n }\n}\n\nexports.Pipe = exports\n\nexports.pipe = function pipe() {\n return binding.pipe()\n}\n\nexports.Server = class PipeServer extends EventEmitter {\n constructor(opts = {}, onconnection) {\n if (typeof opts === 'function') {\n onconnection = opts\n opts = {}\n }\n\n super()\n\n const {\n readBufferSize = defaultReadBufferSize,\n allowHalfOpen = true,\n pauseOnConnect = false,\n ipc = false\n } = opts\n\n this._state = 0\n\n this._readBufferSize = readBufferSize\n this._allowHalfOpen = allowHalfOpen\n this._pauseOnConnect = pauseOnConnect\n this._ipc = ipc\n\n this._path = null\n this._connections = new Set()\n\n this._error = null\n this._handle = null\n\n if (onconnection) this.on('connection', onconnection)\n }\n\n get listening() {\n return (this._state & constants.state.BOUND) !== 0\n }\n\n address() {\n if ((this._state & constants.state.BOUND) === 0) {\n return null\n }\n\n return this._path\n }\n\n listen(path, backlog = 511, opts = {}, onlistening) {\n if (this._state & constants.state.BINDING || this._state & constants.state.BOUND) {\n throw errors.SERVER_ALREADY_LISTENING('Server is already listening')\n }\n\n if (this._state & constants.state.CLOSING) {\n throw errors.SERVER_IS_CLOSED('Server is closed')\n }\n\n this._state |= constants.state.BINDING\n\n if (typeof backlog === 'function') {\n onlistening = backlog\n backlog = 511\n } else if (typeof opts === 'function') {\n onlistening = opts\n opts = {}\n }\n\n if (typeof path === 'object' && path !== null) {\n opts = path || {}\n path = opts.path\n backlog = opts.backlog || 511\n }\n\n this._handle = binding.init(\n empty,\n this._ipc,\n this,\n this._onconnection,\n noop,\n noop,\n noop,\n noop,\n noop,\n this._onclose\n )\n\n if (this._state & constants.state.UNREFED) binding.unref(this._handle)\n\n try {\n binding.bind(this._handle, path, backlog)\n\n this._path = path\n this._state |= constants.state.BOUND\n this._state &= ~constants.state.BINDING\n\n if (onlistening) this.once('listening', onlistening)\n\n queueMicrotask(() => this.emit('listening'))\n } catch (err) {\n this._error = err\n\n binding.close(this._handle)\n }\n\n return this\n }\n\n close(onclose) {\n if (onclose) this.once('close', onclose)\n\n if (this._state & constants.state.CLOSING) return\n this._state |= constants.state.CLOSING\n\n this._closeMaybe()\n\n return this\n }\n\n ref() {\n this._state &= ~constants.state.UNREFED\n\n if (this._handle !== null) binding.ref(this._handle)\n\n return this\n }\n\n unref() {\n this._state |= constants.state.UNREFED\n\n if (this._handle !== null) binding.unref(this._handle)\n\n return this\n }\n\n _closeMaybe() {\n if (this._state & constants.state.CLOSING && this._connections.size === 0) {\n if (this._handle !== null) binding.close(this._handle)\n else queueMicrotask(() => this.emit('close'))\n }\n }\n\n _onconnection(err) {\n if (err) {\n this.emit('error', err)\n return\n }\n\n if (this._state & constants.state.CLOSING) return\n\n const pipe = new exports.Pipe({\n readBufferSize: this._readBufferSize,\n allowHalfOpen: this._allowHalfOpen,\n eagerOpen: !this._pauseOnConnect,\n ipc: this._ipc\n })\n\n try {\n binding.accept(this._handle, pipe._handle)\n\n pipe._path = this._path\n pipe._onaccept()\n\n this._connections.add(pipe)\n\n pipe.on('close', () => {\n this._connections.delete(pipe)\n this._closeMaybe()\n })\n\n this.emit('connection', pipe)\n } catch (err) {\n pipe.destroy()\n\n throw err\n }\n }\n\n _onclose() {\n const err = this._error\n\n this._state &= ~constants.state.BINDING\n this._error = null\n this._handle = null\n\n if (err) this.emit('error', err)\n else this.emit('close')\n }\n}\n\nexports.constants = constants\nexports.errors = errors\n\nexports.createConnection = function createConnection(path, opts, onconnect) {\n if (typeof opts === 'function') {\n onconnect = opts\n opts = {}\n }\n\n if (typeof path === 'object' && path !== null) {\n opts = path || {}\n path = opts.path\n }\n\n return new exports.Pipe(opts).connect(path, opts, onconnect)\n}\n\nexports.createServer = function createServer(opts, onconnection) {\n return new exports.Server(opts, onconnection)\n}\n\nfunction noop() {}\nconst binding = require('../binding')\n\nmodule.exports = {\n state: {\n CONNECTING: 0x1,\n CONNECTED: 0x2,\n BINDING: 0x4,\n BOUND: 0x8,\n READING: 0x10,\n CLOSING: 0x20,\n READABLE: 0x40,\n WRITABLE: 0x80,\n UNREFED: 0x100\n },\n handle: {\n NAMED_PIPE: binding.UV_NAMED_PIPE,\n TCP: binding.UV_TCP,\n UDP: binding.UV_UDP\n }\n}\nmodule.exports = class PipeError extends Error {\n constructor(msg, fn = PipeError, code = fn.name) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'PipeError'\n }\n\n static PIPE_ALREADY_CONNECTED(msg) {\n return new PipeError(msg, PipeError.PIPE_ALREADY_CONNECTED)\n }\n\n static SERVER_ALREADY_LISTENING(msg) {\n return new PipeError(msg, PipeError.SERVER_ALREADY_LISTENING)\n }\n\n static SERVER_IS_CLOSED(msg) {\n return new PipeError(msg, PipeError.SERVER_IS_CLOSED)\n }\n\n static INVALID_IPC_TARGET(msg) {\n return new PipeError(msg, PipeError.INVALID_IPC_TARGET)\n }\n}\n{\n \"name\": \"bare-pipe\",\n \"version\": \"4.2.2\",\n \"description\": \"Native I/O pipes for JavaScript\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./constants\": {\n \"types\": \"./lib/constants.d.ts\",\n \"default\": \"./lib/constants.js\"\n },\n \"./errors\": {\n \"types\": \"./lib/errors.d.ts\",\n \"default\": \"./lib/errors.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-pipe.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-pipe/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-pipe#readme\",\n \"engines\": {\n \"bare\": \">=1.16.0\"\n },\n \"dependencies\": {\n \"bare-events\": \"^2.0.0\",\n \"bare-stream\": \"^2.0.0\"\n },\n \"devDependencies\": {\n \"bare-path\": \"^3.0.0\",\n \"bare-tcp\": \"^2.4.1\",\n \"brittle\": \"^3.2.1\",\n \"cmake-bare\": \"^1.1.6\",\n \"lunte\": \"^1.8.0\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nconst safetyCatch = require('safety-catch')\nconst b4a = require('b4a')\nconst c = require('compact-encoding')\nconst m = require('./lib/messages')\nconst errors = require('./lib/errors')\nconst { type: t, stream: s } = require('./lib/constants')\nconst IncomingEvent = require('./lib/incoming-event')\nconst IncomingRequest = require('./lib/incoming-request')\nconst IncomingStream = require('./lib/incoming-stream')\nconst OutgoingEvent = require('./lib/outgoing-event')\nconst OutgoingRequest = require('./lib/outgoing-request')\nconst OutgoingStream = require('./lib/outgoing-stream')\nconst CommandRouter = require('./lib/command-router')\n\nmodule.exports = exports = class RPC {\n constructor(stream, onrequest = noop) {\n this._stream = stream\n this._id = 0\n\n this._outgoingRequests = new Map()\n this._outgoingResponses = new Map()\n this._incomingRequests = new Map()\n this._incomingResponses = new Map()\n this._pendingRequests = new Set()\n this._pendingResponses = new Set()\n\n this._buffer = []\n this._buffered = 0\n this._frame = -1\n this._draining = []\n\n this._closed = false\n this._error = null\n\n if (typeof onrequest === 'function') {\n onrequest = onrequest.bind(this)\n } else {\n onrequest = onrequest._onrequest.bind(onrequest)\n }\n\n this._onrequest = onrequest\n this._onerror = this._onerror.bind(this)\n this._onclose = this._onclose.bind(this)\n this._ondata = this._ondata.bind(this)\n this._ondrain = this._ondrain.bind(this)\n\n this._stream\n .on('error', this._onerror)\n .on('close', this._onclose)\n .on('data', this._ondata)\n .on('drain', this._ondrain)\n }\n\n // Whether there are no requests or responses currently in flight. Useful for\n // determining when it is safe to tear down the underlying stream.\n get idle() {\n return (\n this._outgoingRequests.size === 0 &&\n this._outgoingResponses.size === 0 &&\n this._incomingRequests.size === 0 &&\n this._incomingResponses.size === 0 &&\n this._pendingRequests.size === 0 &&\n this._pendingResponses.size === 0\n )\n }\n\n event(command) {\n return new OutgoingEvent(this, command)\n }\n\n request(command) {\n return new OutgoingRequest(this, ++this._id, command)\n }\n\n _sendMessage(message, cb) {\n // Once the underlying stream is being torn down there is nowhere left to\n // write, so drop the message and settle the callback immediately. This\n // keeps stream teardown from stalling on a drain that will never arrive.\n if (this._stream.destroying) {\n if (cb) cb(null)\n return\n }\n\n const header = c.encode(m.header, message)\n\n let flushed = this._stream.write(header)\n\n if (message.data) flushed = this._stream.write(message.data)\n\n if (cb) {\n if (flushed) cb(null)\n else this._draining.push(cb)\n }\n }\n\n _sendEvent(request, data = null) {\n this._sendMessage({\n type: t.REQUEST,\n id: 0,\n command: request.command,\n stream: 0,\n data\n })\n }\n\n _sendRequest(request, data = null) {\n // Once the channel has been torn down there is nowhere left to send the\n // request. Skip registering it so that it never leaks into the maps; the\n // awaiting reply is rejected through `RPCOutgoingRequest.reply()` instead.\n if (this._closed) return\n\n this._outgoingRequests.set(request.id, request)\n\n this._sendMessage({\n type: t.REQUEST,\n id: request.id,\n command: request.command,\n stream: 0,\n data\n })\n }\n\n _createRequestStream(request, isInitiator, opts) {\n if (isInitiator) {\n request._requestStream = new OutgoingStream(this, request, t.REQUEST, opts)\n\n // Once the channel has been torn down there is nowhere left to open the\n // stream, so destroy it right away rather than leave it hanging.\n if (this._closed) return request._requestStream.destroy(this._error)\n\n this._outgoingRequests.set(request.id, request)\n\n request._requestStream.on('close', () => this._gcOutgoingRequest(request))\n } else {\n request._requestStream = new IncomingStream(this, request, t.REQUEST, opts)\n\n if (this._closed) return request._requestStream.destroy(this._error)\n\n this._incomingRequests.set(request.id, request)\n\n request._requestStream.on('close', () => this._incomingRequests.delete(request.id))\n }\n }\n\n _sendResponse(request, data) {\n // Once the channel has been torn down there is nowhere left to send the\n // response, so drop it rather than encode and write a message that would\n // only be discarded. The reply is fire-and-forget, so there is nothing to\n // settle.\n if (this._closed) return\n\n this._sendMessage({\n type: t.RESPONSE,\n id: request.id,\n stream: 0,\n error: null,\n data\n })\n }\n\n _createResponseStream(request, isInitiator, opts) {\n if (isInitiator) {\n request._responseStream = new OutgoingStream(this, request, t.RESPONSE, opts)\n\n // Once the channel has been torn down there is nowhere left to open the\n // stream, so destroy it right away rather than leave it hanging.\n if (this._closed) return request._responseStream.destroy(this._error)\n\n this._outgoingResponses.set(request.id, request)\n\n request._responseStream.on('close', () => this._outgoingResponses.delete(request.id))\n } else {\n request._responseStream = new IncomingStream(this, request, t.RESPONSE, opts)\n\n if (this._closed) return request._responseStream.destroy(this._error)\n\n this._incomingResponses.set(request.id, request)\n\n request._responseStream.on('close', () => {\n this._incomingResponses.delete(request.id)\n\n request._responded = true\n this._gcOutgoingRequest(request)\n })\n }\n }\n\n _sendError(request, err) {\n this._sendMessage({\n type: t.RESPONSE,\n id: request.id,\n stream: 0,\n error: err,\n data: null\n })\n }\n\n _gcOutgoingRequest(request) {\n // The entry must stay reachable for as long as an incoming message might\n // still target it; until the response has settled and, if the request was\n // streamed, until the outgoing request stream has closed. Either can be the\n // last to arrive, so only remove the entry once both have completed.\n if (!request._responded) return\n if (request._requestStream !== null && !request._requestStream.destroyed) return\n\n this._outgoingRequests.delete(request.id)\n }\n\n _onerror(err) {\n this._teardown(err)\n }\n\n _onclose() {\n // A clean close of the underlying stream leaves in-flight requests and\n // responses with nowhere to complete, so tear them down as if the channel\n // had errored.\n this._teardown(errors.CHANNEL_CLOSED('Channel closed'))\n }\n\n _teardown(err) {\n // Mark the channel as closed so that any calls made from here on are\n // rejected or destroyed immediately rather than left hanging.\n this._closed = true\n this._error = err\n\n this._ondrain(err)\n\n // Reject any request awaiting a plain reply. Requests whose response is\n // delivered over a stream are torn down through that stream below.\n for (const request of this._outgoingRequests.values()) {\n if (request.received && request._responseStream === null) request._reject(err)\n }\n\n // Collect the streams first, deduplicating as a single request may appear\n // in more than one map, then destroy them once the maps have been cleared.\n const streams = new Set()\n\n for (const request of this._outgoingRequests.values()) {\n if (request._requestStream !== null) streams.add(request._requestStream)\n }\n\n for (const request of this._incomingRequests.values()) {\n if (request._requestStream !== null) streams.add(request._requestStream)\n }\n\n for (const request of this._outgoingResponses.values()) {\n if (request._responseStream !== null) streams.add(request._responseStream)\n }\n\n for (const request of this._incomingResponses.values()) {\n if (request._responseStream !== null) streams.add(request._responseStream)\n }\n\n this._outgoingRequests.clear()\n this._outgoingResponses.clear()\n this._incomingRequests.clear()\n this._incomingResponses.clear()\n this._pendingRequests.clear()\n this._pendingResponses.clear()\n\n for (const stream of streams) stream.destroy(err)\n }\n\n _ondata(data) {\n this._buffer.push(data)\n this._buffered += data.byteLength\n\n if (this._frame === -1) {\n this._onbeforeframe()\n } else {\n this._onafterframe()\n }\n }\n\n _onbeforeframe() {\n if (this._buffered < 4) return\n\n const buffer = this._buffer.length === 1 ? this._buffer[0] : b4a.concat(this._buffer)\n\n this._buffer = [buffer]\n this._frame = 4 + c.uint32.decode(c.state(0, 4, buffer))\n\n this._onafterframe()\n }\n\n _onafterframe() {\n if (this._buffered < this._frame) return\n\n const buffer = this._buffer.length === 1 ? this._buffer[0] : b4a.concat(this._buffer)\n\n const frame = this._frame\n\n this._buffered -= frame\n this._buffer = this._buffered > 0 ? [buffer.subarray(frame)] : []\n this._frame = -1\n\n this._onmessage(buffer.subarray(0, frame))\n this._onbeforeframe()\n }\n\n async _onmessage(buffer) {\n let message\n try {\n message = m.message.decode(c.state(0, buffer.length, buffer))\n } catch (err) {\n safetyCatch(err)\n\n return this._stream.destroy(err)\n }\n\n switch (message.type) {\n case t.REQUEST: {\n const request =\n message.id === 0\n ? new IncomingEvent(this, message.command, message.data)\n : new IncomingRequest(this, message.id, message.command, message.data)\n\n try {\n await this._onrequest(request)\n } catch (err) {\n safetyCatch(err)\n\n if (message.id) this._sendError(request, err)\n else this._stream.destroy(err)\n }\n break\n }\n case t.RESPONSE:\n try {\n this._onresponse(message)\n } catch (err) {\n safetyCatch(err)\n }\n break\n case t.STREAM:\n try {\n this._onstream(message)\n } catch (err) {\n safetyCatch(err)\n }\n }\n }\n\n _onresponse(message) {\n if (message.id === 0) return\n\n const request = this._outgoingRequests.get(message.id)\n if (request === undefined) return\n\n if (message.error) {\n request._responded = true\n this._gcOutgoingRequest(request)\n\n request._reject(message.error)\n } else if (message.stream === 0) {\n request._responded = true\n this._gcOutgoingRequest(request)\n\n request._resolve(message.data)\n }\n }\n\n _onstream(message) {\n if (message.id === 0) return\n\n if (message.stream & s.OPEN) this._onstreamopen(message)\n else if (message.stream & s.CLOSE) this._onstreamclose(message)\n else if (message.stream & s.PAUSE) this._onstreampause(message)\n else if (message.stream & s.RESUME) this._onstreamresume(message)\n else if (message.stream & s.DATA) this._onstreamdata(message)\n else if (message.stream & s.END) this._onstreamend(message)\n else if (message.stream & s.DESTROY) this._onstreamdestroy(message)\n }\n\n _onstreamopen(message) {\n let stream\n\n if (message.stream & s.REQUEST) {\n const request = this._outgoingRequests.get(message.id)\n if (request === undefined) {\n this._pendingRequests.add(message.id)\n return\n }\n\n stream = request._requestStream\n\n if (stream === null || stream._pendingOpen === null) {\n this._pendingRequests.add(message.id)\n return\n }\n } else if (message.stream & s.RESPONSE) {\n const request = this._outgoingResponses.get(message.id)\n if (request === undefined) {\n this._pendingResponses.add(message.id)\n return\n }\n\n stream = request._responseStream\n\n if (stream === null || stream._pendingOpen === null) {\n this._pendingResponses.add(message.id)\n return\n }\n } else {\n return\n }\n\n stream._continueOpen()\n }\n\n _onstreamclose(message) {\n let stream\n\n if (message.stream & s.REQUEST) {\n const request = this._incomingRequests.get(message.id)\n if (request === undefined) return\n\n stream = request._requestStream\n } else if (message.stream & s.RESPONSE) {\n const request = this._incomingResponses.get(message.id)\n if (request === undefined) return\n\n stream = request._responseStream\n } else {\n return\n }\n\n if (stream === null) return\n if (message.error) stream.destroy(message.error)\n else stream.push(null)\n }\n\n _onstreampause(message) {\n let stream\n\n if (message.stream & s.REQUEST) {\n const request = this._outgoingRequests.get(message.id)\n if (request === undefined) return\n\n stream = request._requestStream\n } else if (message.stream & s.RESPONSE) {\n const request = this._outgoingResponses.get(message.id)\n if (request === undefined) return\n\n stream = request._responseStream\n } else {\n return\n }\n\n if (stream === null) return\n stream.cork()\n }\n\n _onstreamresume(message) {\n let stream\n\n if (message.stream & s.REQUEST) {\n const request = this._outgoingRequests.get(message.id)\n if (request === undefined) return\n\n stream = request._requestStream\n } else if (message.stream & s.RESPONSE) {\n const request = this._outgoingResponses.get(message.id)\n if (request === undefined) return\n\n stream = request._responseStream\n } else {\n return\n }\n\n if (stream === null) return\n stream.uncork()\n }\n\n _onstreamdata(message) {\n let stream\n\n if (message.stream & s.REQUEST) {\n const request = this._incomingRequests.get(message.id)\n if (request === undefined) return\n\n stream = request._requestStream\n } else if (message.stream & s.RESPONSE) {\n const request = this._incomingResponses.get(message.id)\n if (request === undefined) return\n\n stream = request._responseStream\n } else {\n return\n }\n\n if (stream === null) return\n if (stream.push(message.data) === false) {\n this._sendMessage({\n type: t.STREAM,\n id: stream._request.id,\n stream: stream._mask | s.PAUSE,\n error: null,\n data: null\n })\n }\n }\n\n _onstreamend(message) {\n let stream\n\n if (message.stream & s.REQUEST) {\n const request = this._incomingRequests.get(message.id)\n if (request === undefined) return\n\n stream = request._requestStream\n } else if (message.stream & s.RESPONSE) {\n const request = this._incomingResponses.get(message.id)\n if (request === undefined) return\n\n stream = request._responseStream\n } else {\n return\n }\n\n if (stream === null) return\n stream.push(null)\n }\n\n _onstreamdestroy(message) {\n let stream\n\n if (message.stream & s.REQUEST) {\n const request = this._outgoingRequests.get(message.id)\n if (request === undefined) return\n\n stream = request._requestStream\n } else if (message.stream & s.RESPONSE) {\n const request = this._outgoingResponses.get(message.id)\n if (request === undefined) return\n\n stream = request._responseStream\n } else {\n return\n }\n\n if (stream === null) return\n stream.destroy(message.error)\n }\n\n _ondrain(err = null) {\n const draining = this._draining\n\n this._draining = []\n\n for (const cb of draining) cb(err)\n }\n}\n\nexports.CommandRouter = CommandRouter\n\nfunction noop() {}\nconst c = require('compact-encoding')\n\nmodule.exports = class RPCCommandRouter {\n constructor(opts = {}) {\n const { valueEncoding = c.raw } = opts\n\n this._responders = new Map()\n this._defaultValueEncoding = valueEncoding\n }\n\n respond(command, opts = {}, onrequest) {\n if (typeof opts === 'function') {\n onrequest = opts\n opts = {}\n }\n\n const {\n valueEncoding = this._defaultValueEncoding,\n requestEncoding = valueEncoding,\n responseEncoding = valueEncoding\n } = opts\n\n this._responders.set(command, {\n onrequest,\n requestEncoding,\n responseEncoding\n })\n }\n\n async _onrequest(req) {\n const responder = this._responders.get(req.command)\n\n if (responder === undefined) return\n\n const { onrequest, requestEncoding, responseEncoding } = responder\n\n let data = req.data\n\n if (requestEncoding) data = c.decode(requestEncoding, data)\n\n data = await onrequest(req, data)\n\n if (req.sent) return\n\n if (responseEncoding) data = c.encode(responseEncoding, data)\n\n req.reply(data)\n }\n}\nmodule.exports = {\n type: {\n REQUEST: 1,\n RESPONSE: 2,\n STREAM: 3\n },\n stream: {\n OPEN: 0x1,\n CLOSE: 0x2,\n PAUSE: 0x4,\n RESUME: 0x8,\n DATA: 0x10,\n END: 0x20,\n DESTROY: 0x40,\n ERROR: 0x80,\n REQUEST: 0x100,\n RESPONSE: 0x200\n }\n}\nmodule.exports = class RPCError extends Error {\n constructor(msg, code, fn = RPCError) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'RPCError'\n }\n\n static UNKNOWN_MESSAGE(msg) {\n return new RPCError(msg, 'UNKNOWN_MESSAGE', RPCError.UNKNOWN_MESSAGE)\n }\n\n static ALREADY_SENT(msg) {\n return new RPCError(msg, 'ALREADY_SENT', RPCError.ALREADY_SENT)\n }\n\n static ALREADY_RECEIVED(msg) {\n return new RPCError(msg, 'ALREADY_RECEIVED', RPCError.ALREADY_RECEIVED)\n }\n\n static CHANNEL_CLOSED(msg) {\n return new RPCError(msg, 'CHANNEL_CLOSED', RPCError.CHANNEL_CLOSED)\n }\n}\nmodule.exports = class RPCIncomingEvent {\n constructor(rpc, command, data) {\n this.rpc = rpc\n this.command = command\n this.data = data\n }\n}\nconst c = require('compact-encoding')\nconst errors = require('./errors')\n\nmodule.exports = class RPCIncomingRequest {\n constructor(rpc, id, command, data) {\n this.rpc = rpc\n this.id = id\n this.command = command\n this.data = data\n this.sent = false\n this.received = false\n\n this._requestStream = null\n this._responseStream = null\n }\n\n reply(data, encoding) {\n if (this.sent) {\n throw errors.ALREADY_SENT('Response has already been sent')\n }\n\n encoding =\n encoding && encoding !== 'buffer'\n ? c.from(encoding)\n : typeof data === 'string'\n ? c.raw.utf8\n : null\n\n this.sent = true\n\n this.rpc._sendResponse(this, encoding ? c.encode(encoding, data) : data)\n }\n\n createResponseStream(opts = {}) {\n if (this.sent) {\n throw errors.ALREADY_SENT('Response has already been sent')\n }\n\n this.sent = true\n\n this.rpc._createResponseStream(this, true, opts)\n\n return this._responseStream\n }\n\n createRequestStream(opts = {}) {\n if (this.received) {\n throw errors.ALREADY_RECEIVED('Request has already been received')\n }\n\n this.received = true\n\n this.rpc._createRequestStream(this, false, opts)\n\n return this._requestStream\n }\n}\nconst { Readable } = require('bare-stream')\nconst { type: t, stream: s } = require('./constants')\n\nmodule.exports = class RPCIncomingStream extends Readable {\n constructor(rpc, request, type, opts) {\n super({ ...opts, eagerOpen: true })\n\n this._rpc = rpc\n this._request = request\n this._type = type\n this._mask = type === t.REQUEST ? s.REQUEST : s.RESPONSE\n }\n\n _open(cb) {\n this._rpc._sendMessage(\n {\n type: t.STREAM,\n id: this._request.id,\n stream: this._mask | s.OPEN,\n error: null,\n data: null\n },\n cb\n )\n }\n\n _read() {\n this._rpc._sendMessage({\n type: t.STREAM,\n id: this._request.id,\n stream: this._mask | s.RESUME,\n error: null,\n data: null\n })\n }\n\n _destroy(err, cb) {\n if (err) {\n this._rpc._sendMessage(\n {\n type: t.STREAM,\n id: this._request.id,\n stream: this._mask | s.DESTROY | s.ERROR,\n error: err,\n data: null\n },\n cb\n )\n } else {\n this._rpc._sendMessage(\n {\n type: t.STREAM,\n id: this._request.id,\n stream: this._mask | s.DESTROY,\n error: null,\n data: null\n },\n cb\n )\n }\n }\n}\nconst c = require('compact-encoding')\nconst { type: t, stream: s } = require('./constants')\nconst errors = require('./errors')\n\nconst error = {\n preencode(state, m) {\n c.utf8.preencode(state, m.message)\n c.utf8.preencode(state, m.code === undefined || m.code === null ? '' : String(m.code))\n c.int.preencode(state, Number(m.errno) || 0)\n },\n encode(state, m) {\n c.utf8.encode(state, m.message)\n c.utf8.encode(state, m.code === undefined || m.code === null ? '' : String(m.code))\n c.int.encode(state, Number(m.errno) || 0)\n },\n decode(state) {\n const err = new Error(`${c.utf8.decode(state)}`)\n err.code = c.utf8.decode(state)\n err.errno = c.int.decode(state)\n return err\n }\n}\n\nexports.header = {\n preencode(state, m) {\n c.uint32.preencode(state, 0) // Frame\n c.uint.preencode(state, m.type)\n c.uint.preencode(state, m.id)\n\n let hasData = false\n\n switch (m.type) {\n case t.REQUEST:\n c.uint.preencode(state, m.command)\n c.uint.preencode(state, m.stream)\n if (m.stream === 0) hasData = true\n break\n\n case t.RESPONSE:\n c.bool.preencode(state, !!m.error)\n c.uint.preencode(state, m.stream)\n\n if (m.error) error.preencode(state, m.error)\n else if (m.stream === 0) hasData = true\n break\n\n case t.STREAM:\n c.uint.preencode(state, m.stream)\n\n if (m.stream & s.ERROR) error.preencode(state, m.error)\n else if (m.stream & s.DATA) hasData = true\n break\n }\n\n if (hasData) c.uint.preencode(state, m.data ? m.data.byteLength : 0)\n },\n encode(state, m) {\n const frame = state.start\n\n c.uint32.encode(state, 0) // Frame\n\n const start = state.start\n\n c.uint.encode(state, m.type)\n c.uint.encode(state, m.id)\n\n let hasData = false\n\n switch (m.type) {\n case t.REQUEST:\n c.uint.encode(state, m.command)\n c.uint.encode(state, m.stream)\n if (m.stream === 0) hasData = true\n break\n\n case t.RESPONSE:\n c.bool.encode(state, !!m.error)\n c.uint.encode(state, m.stream)\n\n if (m.error) error.encode(state, m.error)\n else if (m.stream === 0) hasData = true\n break\n\n case t.STREAM:\n c.uint.encode(state, m.stream)\n\n if (m.stream & s.ERROR) error.encode(state, m.error)\n else if (m.stream & s.DATA) hasData = true\n break\n }\n\n if (hasData) c.uint.encode(state, m.data ? m.data.byteLength : 0)\n\n const end = state.start\n\n state.start = frame\n\n c.uint32.encode(state, end - start + (hasData && m.data ? m.data.byteLength : 0))\n\n state.start = end\n }\n}\n\nexports.message = {\n decode(state) {\n const frame = c.uint32.decode(state)\n\n if (state.end - state.start < frame) throw new RangeError('Out of bounds')\n\n const type = c.uint.decode(state)\n const id = c.uint.decode(state)\n\n switch (type) {\n case t.REQUEST: {\n const command = c.uint.decode(state)\n const stream = c.uint.decode(state)\n const data = stream === 0 ? c.buffer.decode(state) : null\n\n return { type, id, command, stream, data }\n }\n\n case t.RESPONSE: {\n const err = c.bool.decode(state)\n const stream = c.uint.decode(state)\n\n if (err) {\n return { type, id, stream, error: error.decode(state), data: null }\n }\n\n if (stream === 0) {\n return { type, id, stream, error: null, data: c.buffer.decode(state) }\n }\n\n return { type, id, stream, error: null, data: null }\n }\n\n case t.STREAM: {\n const stream = c.uint.decode(state)\n\n if (stream & s.ERROR) {\n return { type, id, stream, error: error.decode(state), data: null }\n }\n\n if (stream & s.DATA) {\n return { type, id, stream, error: null, data: c.buffer.decode(state) }\n }\n\n return { type, id, stream, error: null, data: null }\n }\n\n default:\n throw errors.UNKNOWN_MESSAGE(`Unknown message '${type}'`)\n }\n }\n}\nconst c = require('compact-encoding')\nconst errors = require('./errors')\n\nmodule.exports = class RPCOutgoingEvent {\n constructor(rpc, command) {\n this.rpc = rpc\n this.command = command\n this.sent = false\n }\n\n send(data, encoding) {\n if (this.sent) {\n throw errors.ALREADY_SENT('Event has already been sent')\n }\n\n encoding =\n encoding && encoding !== 'buffer'\n ? c.from(encoding)\n : typeof data === 'string'\n ? c.raw.utf8\n : null\n\n this.sent = true\n\n this.rpc._sendEvent(this, encoding ? c.encode(encoding, data) : data)\n }\n}\nconst c = require('compact-encoding')\nconst errors = require('./errors')\n\nmodule.exports = class RPCOutgoingRequest {\n constructor(rpc, id, command) {\n this.rpc = rpc\n this.id = id\n this.command = command\n this.sent = false\n this.received = false\n\n this._responded = false\n\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve\n this._reject = reject\n })\n\n this._requestStream = null\n this._responseStream = null\n }\n\n send(data, encoding) {\n if (this.sent) {\n throw errors.ALREADY_SENT('Request has already been sent')\n }\n\n encoding =\n encoding && encoding !== 'buffer'\n ? c.from(encoding)\n : typeof data === 'string'\n ? c.raw.utf8\n : null\n\n this.sent = true\n\n this.rpc._sendRequest(this, encoding ? c.encode(encoding, data) : data)\n }\n\n reply(encoding) {\n if (this.received) {\n throw errors.ALREADY_RECEIVED('Response is already being received')\n }\n\n encoding = encoding && encoding !== 'buffer' ? c.from(encoding) : null\n\n this.received = true\n\n // If the channel was torn down before a response arrived there is nothing\n // left to await, so reject with the teardown error rather than hang. This\n // covers both requests sent after teardown and requests still awaiting a\n // reply when teardown happens.\n if (this.rpc._closed && !this._responded) this._reject(this.rpc._error)\n\n return encoding ? this._promise.then((data) => c.decode(encoding, data)) : this._promise\n }\n\n createRequestStream(opts = {}) {\n if (this.sent) {\n throw errors.ALREADY_SENT('Request has already been sent')\n }\n\n this.sent = true\n\n this.rpc._createRequestStream(this, true, opts)\n\n return this._requestStream\n }\n\n createResponseStream(opts = {}) {\n if (this.received) {\n throw errors.ALREADY_RECEIVED('Response has already been received')\n }\n\n this.received = true\n\n this.rpc._createResponseStream(this, false, opts)\n\n return this._responseStream\n }\n}\nconst { Writable } = require('bare-stream')\nconst { type: t, stream: s } = require('./constants')\n\nmodule.exports = class RPCOutgoingStream extends Writable {\n constructor(rpc, request, type, opts) {\n super({ ...opts, eagerOpen: true })\n\n this._rpc = rpc\n this._request = request\n this._type = type\n this._mask = type === t.REQUEST ? s.REQUEST : s.RESPONSE\n\n this._pendingOpen = null\n }\n\n _open(cb) {\n let pending\n\n const onflushed = () => {\n if (pending.has(this._request.id)) {\n pending.delete(this._request.id)\n\n cb(null)\n } else {\n this._pendingOpen = cb\n }\n }\n\n switch (this._type) {\n case t.REQUEST:\n pending = this._rpc._pendingRequests\n\n this._rpc._sendMessage(\n {\n type: t.REQUEST,\n id: this._request.id,\n command: this._request.command,\n stream: s.OPEN,\n data: null\n },\n onflushed\n )\n break\n\n case t.RESPONSE:\n pending = this._rpc._pendingResponses\n\n this._rpc._sendMessage(\n {\n type: t.RESPONSE,\n id: this._request.id,\n error: false,\n stream: s.OPEN,\n data: null\n },\n onflushed\n )\n break\n }\n }\n\n _continueOpen() {\n if (this._pendingOpen === null) return\n const cb = this._pendingOpen\n this._pendingOpen = null\n cb()\n }\n\n _write(data, encoding, cb) {\n this._rpc._sendMessage(\n {\n type: t.STREAM,\n id: this._request.id,\n stream: this._mask | s.DATA,\n error: null,\n data\n },\n cb\n )\n }\n\n _final(cb) {\n this._rpc._sendMessage(\n {\n type: t.STREAM,\n id: this._request.id,\n stream: this._mask | s.END,\n error: null,\n data: null\n },\n cb\n )\n }\n\n _destroy(err, cb) {\n if (err) {\n this._rpc._sendMessage(\n {\n type: t.STREAM,\n id: this._request.id,\n stream: this._mask | s.CLOSE | s.ERROR,\n error: err,\n data: null\n },\n cb\n )\n } else {\n this._rpc._sendMessage(\n {\n type: t.STREAM,\n id: this._request.id,\n stream: this._mask | s.CLOSE,\n error: null,\n data: null\n },\n cb\n )\n }\n }\n}\n{\n \"name\": \"bare-rpc\",\n \"version\": \"1.3.8\",\n \"description\": \"librpc ABI compatible RPC for Bare\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\",\n \"./constants\": \"./lib/constants.js\",\n \"./errors\": {\n \"types\": \"./lib/errors.d.ts\",\n \"default\": \"./lib/errors.js\"\n },\n \"./messages\": \"./lib/messages.js\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-rpc.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-rpc/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-rpc#readme\",\n \"dependencies\": {\n \"b4a\": \"^1.6.6\",\n \"bare-stream\": \"^2.1.3\",\n \"compact-encoding\": \"^3.0.0\",\n \"safety-catch\": \"^1.0.2\"\n },\n \"devDependencies\": {\n \"bare-buffer\": \"^3.0.1\",\n \"bare-ipc\": \"^1.1.0\",\n \"brittle\": \"^3.2.1\",\n \"lunte\": \"^1.7.0\",\n \"prettier\": \"^3.4.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"peerDependencies\": {\n \"bare-buffer\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"bare-buffer\": {\n \"optional\": true\n }\n }\n}\nconst b4a = require('b4a')\nconst stream = require('streamx')\nconst { ReadableStream, WritableStream } = require('./web')\n\nconst defaultEncoding = 'utf8'\n\nmodule.exports = exports = stream.Stream\n\nexports.pipeline = stream.pipeline\n\nexports.isStream = stream.isStream\nexports.isEnding = stream.isEnding\nexports.isEnded = stream.isEnded\nexports.isFinishing = stream.isFinishing\nexports.isFinished = stream.isFinished\nexports.isDisturbed = stream.isDisturbed\n\nexports.isErrored = function isErrored(stream) {\n return exports.getStreamError(stream) !== null\n}\n\nexports.isReadable = function isReadable(stream) {\n return stream.readable && !stream.destroying && !exports.isEnded(stream)\n}\n\nexports.isWritable = function isWritable(stream) {\n return stream.writable && !stream.destroying && !exports.isFinishing(stream)\n}\n\nexports.getStreamError = stream.getStreamError\n\nexports.addAbortSignal = function addAbortSignal(signal, stream) {\n function onAbort() {\n stream.destroy(signal.reason)\n }\n\n if (signal.aborted) onAbort()\n else signal.addEventListener('abort', onAbort)\n\n return stream\n}\n\nexports.Stream = exports\n\nexports.Readable = class Readable extends stream.Readable {\n constructor(opts = {}) {\n super({\n ...opts,\n byteLength: null,\n byteLengthReadable: null,\n map: null,\n mapReadable: null\n })\n\n if (this._construct) this._open = this._construct\n\n if (this._read !== stream.Readable.prototype._read) {\n this._read = read.bind(this, this._read)\n }\n\n if (this._destroy !== stream.Stream.prototype._destroy) {\n this._destroy = destroy.bind(this, this._destroy)\n }\n }\n\n get closed() {\n return !exports.isReadable(this)\n }\n\n get errored() {\n return stream.getStreamError(this)\n }\n\n push(chunk, encoding) {\n if (typeof chunk === 'string') {\n chunk = b4a.from(chunk, encoding || defaultEncoding)\n }\n\n return super.push(chunk)\n }\n\n unshift(chunk, encoding) {\n if (typeof chunk === 'string') {\n chunk = b4a.from(chunk, encoding || defaultEncoding)\n }\n\n super.unshift(chunk)\n }\n\n static fromWeb(readableStream, opts = {}) {\n const stream = readableStream._stream\n\n if (opts.encoding) stream.setEncoding(opts.encoding)\n if (opts.signal) exports.addAbortSignal(opts.signal, stream)\n\n return stream\n }\n\n static toWeb(readable, opts = {}) {\n return new ReadableStream(readable, opts.strategy)\n }\n\n async [Symbol.asyncDispose]() {\n if (!this.destroyed) this.destroy()\n\n await new Promise((resolve) => exports.finished(this, resolve))\n }\n}\n\nexports.Writable = class Writable extends stream.Writable {\n constructor(opts = {}) {\n super({\n ...opts,\n byteLength: null,\n byteLengthWritable,\n map: null,\n mapWritable: null\n })\n\n if (this._construct) this._open = this._construct\n\n if (this._write !== stream.Writable.prototype._write) {\n this._write = write.bind(this, this._write)\n }\n\n if (this._destroy !== stream.Stream.prototype._destroy) {\n this._destroy = destroy.bind(this, this._destroy)\n }\n }\n\n get closed() {\n return !exports.isWritable(this)\n }\n\n get errored() {\n return stream.getStreamError(this)\n }\n\n write(chunk, encoding, cb) {\n if (typeof encoding === 'function') {\n cb = encoding\n encoding = null\n }\n\n if (typeof chunk === 'string') {\n encoding = encoding || defaultEncoding\n chunk = b4a.from(chunk, encoding)\n } else {\n encoding = 'buffer'\n }\n\n const result = super.write({ chunk, encoding })\n\n if (cb) stream.Writable.drained(this).then(() => cb(null), cb)\n\n return result\n }\n\n end(chunk, encoding, cb) {\n if (typeof chunk === 'function') {\n cb = chunk\n chunk = null\n } else if (typeof encoding === 'function') {\n cb = encoding\n encoding = null\n }\n\n if (typeof chunk === 'string') {\n encoding = encoding || defaultEncoding\n chunk = b4a.from(chunk, encoding || defaultEncoding)\n } else {\n encoding = 'buffer'\n }\n\n const result =\n chunk !== undefined && chunk !== null ? super.end({ chunk, encoding }) : super.end()\n\n if (cb) this.once('finish', () => cb(null))\n\n return result\n }\n\n static fromWeb(writableStream, opts = {}) {\n const stream = writableStream._stream\n\n if (opts.signal) exports.addAbortSignal(opts.signal, stream)\n\n return stream\n }\n\n static toWeb(writable) {\n return new WritableStream(writable)\n }\n\n async [Symbol.asyncDispose]() {\n if (!this.destroyed) this.destroy()\n\n await new Promise((resolve) => exports.finished(this, resolve))\n }\n}\n\nexports.Duplex = class Duplex extends stream.Duplex {\n constructor(opts = {}) {\n super({\n ...opts,\n byteLength: null,\n byteLengthReadable: null,\n byteLengthWritable,\n map: null,\n mapReadable: null,\n mapWritable: null\n })\n\n if (this._construct) this._open = this._construct\n\n if (this._read !== stream.Readable.prototype._read) {\n this._read = read.bind(this, this._read)\n }\n\n if (this._write !== stream.Duplex.prototype._write) {\n this._write = write.bind(this, this._write)\n }\n\n if (this._destroy !== stream.Stream.prototype._destroy) {\n this._destroy = destroy.bind(this, this._destroy)\n }\n }\n\n push(chunk, encoding) {\n if (typeof chunk === 'string') {\n chunk = b4a.from(chunk, encoding || defaultEncoding)\n }\n\n return super.push(chunk)\n }\n\n unshift(chunk, encoding) {\n if (typeof chunk === 'string') {\n chunk = b4a.from(chunk, encoding || defaultEncoding)\n }\n\n super.unshift(chunk)\n }\n\n write(chunk, encoding, cb) {\n if (typeof encoding === 'function') {\n cb = encoding\n encoding = null\n }\n\n if (typeof chunk === 'string') {\n encoding = encoding || defaultEncoding\n chunk = b4a.from(chunk, encoding)\n } else {\n encoding = 'buffer'\n }\n\n const result = super.write({ chunk, encoding })\n\n if (cb) stream.Writable.drained(this).then(() => cb(null), cb)\n\n return result\n }\n\n end(chunk, encoding, cb) {\n if (typeof chunk === 'function') {\n cb = chunk\n chunk = null\n } else if (typeof encoding === 'function') {\n cb = encoding\n encoding = null\n }\n\n if (typeof chunk === 'string') {\n encoding = encoding || defaultEncoding\n chunk = b4a.from(chunk, encoding)\n } else {\n encoding = 'buffer'\n }\n\n const result =\n chunk !== undefined && chunk !== null ? super.end({ chunk, encoding }) : super.end()\n\n if (cb) this.once('finish', () => cb(null))\n\n return result\n }\n\n static fromWeb({ readable: readableStream, writable: writableStream }, opts) {\n const readable = exports.Readable.fromWeb(readableStream, opts)\n const writable = exports.Writable.fromWeb(writableStream, opts)\n\n const duplex = new exports.Duplex({\n write(data, encoding, cb) {\n writable.write(data, encoding, cb)\n }\n })\n\n readable\n .on('data', (data) => duplex.push(data))\n .on('end', () => duplex.push(null))\n .on('error', (err) => duplex.destroy(err))\n\n writable.on('finish', () => duplex.end()).on('error', (err) => duplex.destroy(err))\n\n return duplex\n }\n\n static toWeb(duplex) {\n const readableStream = exports.Readable.toWeb(duplex)\n const writableStream = exports.Writable.toWeb(duplex)\n\n return { readable: readableStream, writable: writableStream }\n }\n}\n\nclass DuplexSide extends exports.Duplex {\n constructor(opts) {\n super(opts)\n\n this._otherSide = null\n this._cb = null\n }\n\n _read() {\n const cb = this._cb\n if (!cb) return\n\n this._cb = null\n cb()\n }\n\n _write(chunk, encoding, cb) {\n this._otherSide.push(chunk, encoding)\n this._otherSide._cb = cb\n }\n\n _final(cb) {\n this._otherSide.on('end', cb)\n this._otherSide.push(null)\n }\n}\n\nexports.duplexPair = function duplexPair(opts) {\n const sideA = new DuplexSide(opts)\n const sideB = new DuplexSide(opts)\n\n sideA._otherSide = sideB\n sideB._otherSide = sideA\n\n return [sideA, sideB]\n}\n\nexports.Transform = class Transform extends stream.Transform {\n constructor(opts = {}) {\n super({\n ...opts,\n byteLength: null,\n byteLengthReadable: null,\n byteLengthWritable,\n map: null,\n mapReadable: null,\n mapWritable: null\n })\n\n if (this._transform !== stream.Transform.prototype._transform) {\n this._transform = transform.bind(this, this._transform)\n } else {\n this._transform = passthrough\n }\n }\n\n push(chunk, encoding) {\n if (typeof chunk === 'string') {\n chunk = b4a.from(chunk, encoding || defaultEncoding)\n }\n\n return super.push(chunk)\n }\n\n unshift(chunk, encoding) {\n if (typeof chunk === 'string') {\n chunk = b4a.from(chunk, encoding || defaultEncoding)\n }\n\n super.unshift(chunk)\n }\n\n write(chunk, encoding, cb) {\n if (typeof encoding === 'function') {\n cb = encoding\n encoding = null\n }\n\n if (typeof chunk === 'string') {\n encoding = encoding || defaultEncoding\n chunk = b4a.from(chunk, encoding)\n } else {\n encoding = 'buffer'\n }\n\n const result = super.write({ chunk, encoding })\n\n if (cb) stream.Writable.drained(this).then(() => cb(null), cb)\n\n return result\n }\n\n end(chunk, encoding, cb) {\n if (typeof chunk === 'function') {\n cb = chunk\n chunk = null\n } else if (typeof encoding === 'function') {\n cb = encoding\n encoding = null\n }\n\n if (typeof chunk === 'string') {\n encoding = encoding || defaultEncoding\n chunk = b4a.from(chunk, encoding)\n } else {\n encoding = 'buffer'\n }\n\n const result =\n chunk !== undefined && chunk !== null ? super.end({ chunk, encoding }) : super.end()\n\n if (cb) this.once('finish', () => cb(null))\n\n return result\n }\n}\n\nexports.PassThrough = class PassThrough extends exports.Transform {}\n\nexports.finished = function finished(stream, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n if (!opts) opts = {}\n\n const { cleanup = false } = opts\n\n const done = () => {\n cb(exports.getStreamError(stream, { all: true }))\n\n if (cleanup) detach()\n }\n\n const detach = () => {\n stream.off('close', done)\n stream.off('error', noop)\n }\n\n if (stream.destroyed) {\n done()\n } else {\n stream.on('close', done)\n stream.on('error', noop)\n }\n\n return detach\n}\n\nfunction read(read, cb) {\n read.call(this, 65536)\n\n cb(null)\n}\n\nfunction write(write, data, cb) {\n write.call(this, data.chunk, data.encoding, cb)\n}\n\nfunction transform(transform, data, cb) {\n transform.call(this, data.chunk, data.encoding, cb)\n}\n\nfunction destroy(destroy, cb) {\n destroy.call(this, exports.getStreamError(this), cb)\n}\n\nfunction passthrough(data, cb) {\n cb(null, data.chunk)\n}\n\nfunction byteLengthWritable(data) {\n return data.chunk.byteLength\n}\n\nfunction noop() {}\n{\n \"name\": \"bare-stream\",\n \"version\": \"2.13.3\",\n \"description\": \"Streaming data for JavaScript\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\",\n \"./promises\": \"./promises.js\",\n \"./web\": {\n \"types\": \"./web.d.ts\",\n \"default\": \"./web.js\"\n },\n \"./global\": {\n \"types\": \"./global.d.ts\",\n \"default\": \"./global.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"promises.js\",\n \"web.js\",\n \"web.d.ts\",\n \"global.js\",\n \"global.d.ts\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-stream.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-stream/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-stream#readme\",\n \"dependencies\": {\n \"b4a\": \"^1.8.1\",\n \"streamx\": \"^2.25.0\",\n \"teex\": \"^1.0.1\"\n },\n \"devDependencies\": {\n \"bare-abort-controller\": \"^1.1.0\",\n \"bare-buffer\": \"^3.0.0\",\n \"bare-events\": \"^2.5.4\",\n \"brittle\": \"^3.5.2\",\n \"lunte\": \"^1.6.0\",\n \"prettier\": \"^3.3.3\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"peerDependencies\": {\n \"bare-abort-controller\": \"*\",\n \"bare-buffer\": \"*\",\n \"bare-events\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"bare-abort-controller\": {\n \"optional\": true\n },\n \"bare-buffer\": {\n \"optional\": true\n },\n \"bare-events\": {\n \"optional\": true\n }\n }\n}\nconst { Readable, Writable, Transform, getStreamError, isStreamx, isDisturbed } = require('streamx')\nconst tee = require('teex')\n\nconst readableKind = Symbol.for('bare.stream.readable.kind')\nconst writableKind = Symbol.for('bare.stream.writable.kind')\nconst transformKind = Symbol.for('bare.stream.transform.kind')\n\n// https://streams.spec.whatwg.org/#readablestreamdefaultreader\nexports.ReadableStreamDefaultReader = class ReadableStreamDefaultReader {\n constructor(stream) {\n this._stream = stream\n this._stream._stream.once('close', onclose).once('error', onerror)\n\n const closed = Promise.withResolvers()\n\n // Avoid unhandled exceptions\n closed.promise.catch(noop)\n\n this._closed = closed\n\n function onclose() {\n closed.resolve()\n }\n\n function onerror(err) {\n closed.reject(err)\n }\n }\n\n get closed() {\n return this._closed.promise\n }\n\n read() {\n const stream = this._stream._stream\n\n return new Promise((resolve, reject) => {\n const err = getStreamError(stream)\n\n if (err) return reject(err)\n\n if (stream.destroyed) {\n return resolve({ value: undefined, done: true })\n }\n\n const value = stream.read()\n\n if (value !== null) {\n return resolve({ value, done: false })\n }\n\n stream.once('readable', onreadable).once('close', onclose).once('error', onerror)\n\n function onreadable() {\n const value = stream.read()\n\n ondone(null, value === null ? { value: undefined, done: true } : { value, done: false })\n }\n\n function onclose() {\n ondone(null, { value: undefined, done: true })\n }\n\n function onerror(err) {\n ondone(err, null)\n }\n\n function ondone(err, value) {\n stream.off('readable', onreadable).off('close', onclose).off('error', onerror)\n\n if (err) reject(err)\n else resolve(value)\n }\n })\n }\n\n releaseLock() {\n this._closed.reject(new TypeError('Reader was released'))\n this._stream._releaseLock()\n this._stream = null\n }\n\n cancel(reason = new TypeError('Stream was cancelled')) {\n const stream = this._stream._stream\n\n if (stream.destroyed) return Promise.resolve()\n\n return new Promise((resolve) =>\n stream.once('close', resolve).once('error', noop).destroy(reason)\n )\n }\n}\n\n// https://streams.spec.whatwg.org/#readablestreamdefaultcontroller\nexports.ReadableStreamDefaultController = class ReadableStreamDefaultController {\n constructor(stream) {\n this._stream = stream\n }\n\n get desiredSize() {\n const stream = this._stream._stream\n\n return stream._readableState.highWaterMark - stream._readableState.buffered\n }\n\n enqueue(data) {\n this._stream._stream.push(data)\n }\n\n close() {\n this._stream._stream.push(null)\n }\n\n error(err) {\n this._stream._stream.destroy(err)\n }\n}\n\n// https://streams.spec.whatwg.org/#readablestream\nclass ReadableStream {\n static get [readableKind]() {\n return 0 // Compatibility version\n }\n\n static from(iterable) {\n return new ReadableStream(Readable.from(iterable))\n }\n\n constructor(underlyingSource = {}, queuingStrategy) {\n if (isStreamx(underlyingSource)) {\n this._stream = underlyingSource\n } else {\n if (queuingStrategy === undefined) {\n queuingStrategy = new exports.CountQueuingStrategy()\n }\n\n const { start, pull, cancel } = underlyingSource\n const { highWaterMark = 1, size = defaultSize } = queuingStrategy\n\n this._stream = new Readable({ highWaterMark, byteLength: size })\n\n const controller = new exports.ReadableStreamDefaultController(this)\n\n try {\n let starting = Promise.resolve()\n\n if (start) starting = forwardError(start.call(this, controller), controller)\n\n if (pull) {\n this._stream._read = this._read.bind(this, starting, pull.bind(this, controller))\n }\n\n if (cancel) {\n this._stream.once('error', cancel.bind(this))\n }\n } catch (err) {\n controller.error(err)\n }\n }\n\n this._reader = null\n }\n\n get [readableKind]() {\n return ReadableStream[readableKind]\n }\n\n get locked() {\n return this._reader !== null\n }\n\n getReader() {\n if (this.locked) throw new TypeError('Stream is locked')\n\n this._reader = new exports.ReadableStreamDefaultReader(this)\n\n return this._reader\n }\n\n cancel(reason = new TypeError('Stream was cancelled')) {\n const stream = this._stream\n\n if (stream.destroyed) return Promise.resolve()\n\n if (this.locked) return Promise.reject(new TypeError('Stream is locked'))\n\n return new Promise((resolve) =>\n stream.once('close', resolve).once('error', noop).destroy(reason)\n )\n }\n\n tee() {\n const [a, b] = tee(this._stream)\n\n return [new ReadableStream(a), new ReadableStream(b)]\n }\n\n pipeTo(destination) {\n return new Promise((resolve, reject) =>\n this._stream.pipe(destination._stream, (err) => {\n err ? reject(err) : resolve()\n })\n )\n }\n\n [Symbol.asyncIterator]() {\n return this._stream[Symbol.asyncIterator]()\n }\n\n _releaseLock() {\n this._reader = null\n }\n\n async _read(starting, pull, cb) {\n await starting\n\n let err = null\n try {\n await pull()\n } catch (e) {\n err = e\n }\n cb(err)\n }\n}\n\nfunction defaultSize() {\n return 1\n}\n\nexports.ReadableStream = ReadableStream\n\n// https://streams.spec.whatwg.org/#countqueuingstrategy\nexports.CountQueuingStrategy = class CountQueuingStrategy {\n constructor(opts = {}) {\n const { highWaterMark = 1 } = opts\n\n this.highWaterMark = highWaterMark\n }\n\n size(chunk) {\n return 1\n }\n}\n\n// https://streams.spec.whatwg.org/#bytelengthqueuingstrategy\nexports.ByteLengthQueuingStrategy = class ByteLengthQueuingStrategy {\n constructor(opts = {}) {\n const { highWaterMark = 16384 } = opts\n\n this.highWaterMark = highWaterMark\n }\n\n size(chunk) {\n return chunk.byteLength\n }\n}\n\nexports.isReadableStream = function isReadableStream(value) {\n if (value instanceof ReadableStream) return true\n\n return (\n typeof value === 'object' &&\n value !== null &&\n value[readableKind] === ReadableStream[readableKind]\n )\n}\n\n// https://streams.spec.whatwg.org/#readablestream-errored\nexports.isReadableStreamErrored = function isReadableStreamErrored(stream) {\n return getStreamError(stream._stream) !== null\n}\n\n// https://streams.spec.whatwg.org/#is-readable-stream-disturbed\nexports.isReadableStreamDisturbed = function isReadableStreamDisturbed(stream) {\n return isDisturbed(stream._stream)\n}\n\n// https://streams.spec.whatwg.org/#writablestreamdefaultwriter\nexports.WritableStreamDefaultWriter = class WritableStreamDefaultWriter {\n constructor(stream) {\n this._stream = stream\n this._stream._stream.once('close', onclose).once('error', onerror)\n\n const closed = Promise.withResolvers()\n\n // Avoid unhandled exceptions\n closed.promise.catch(noop)\n\n this._closed = closed\n\n function onclose() {\n closed.resolve()\n }\n\n function onerror(err) {\n closed.reject(err)\n }\n }\n\n get desiredSize() {\n const stream = this._stream._stream\n\n return stream._writableState.highWaterMark - stream._writableState.buffered\n }\n\n get closed() {\n return this._closed.promise\n }\n\n get ready() {\n const stream = this._stream._stream\n\n if (getStreamError(stream)) return Promise.reject()\n\n return Writable.drained(stream).then()\n }\n\n async write(chunk) {\n const stream = this._stream._stream\n\n let err = getStreamError(stream)\n if (err) return Promise.reject(err)\n\n stream.write(chunk)\n\n await Writable.drained(stream)\n\n err = getStreamError(stream)\n if (err) return Promise.reject(err)\n }\n\n releaseLock() {\n this._closed.reject(new TypeError('Writer was released'))\n this._stream._releaseLock()\n this._stream = null\n }\n\n close() {\n const stream = this._stream._stream\n\n if (stream.destroyed) return Promise.resolve()\n\n return new Promise((resolve) => stream.once('close', resolve).end())\n }\n\n abort(reason = new TypeError('Stream was aborted')) {\n const stream = this._stream._stream\n\n if (stream.destroyed) return Promise.resolve()\n\n return new Promise((resolve) => stream.once('close', resolve).destroy(reason))\n }\n}\n\n// https://streams.spec.whatwg.org/#writablestreamdefaultcontroller\nexports.WritableStreamDefaultController = class WritableStreamDefaultController {\n constructor(stream) {\n this._stream = stream\n }\n\n error(err) {\n this._stream._stream.destroy(err)\n }\n}\n\n// https://streams.spec.whatwg.org/#writablestream\nclass WritableStream {\n static get [writableKind]() {\n return 0 // Compatibility version\n }\n\n constructor(underlyingSink = {}, queuingStrategy = {}) {\n if (isStreamx(underlyingSink)) {\n this._stream = underlyingSink\n } else {\n if (queuingStrategy === undefined) {\n queuingStrategy = new exports.CountQueuingStrategy()\n }\n\n const { start, write, close, abort } = underlyingSink\n const { highWaterMark = 1, size = defaultSize } = queuingStrategy\n\n this._stream = new Writable({ highWaterMark, byteLength: size })\n\n const controller = new exports.WritableStreamDefaultController(this)\n\n this._controller = controller\n\n try {\n let starting = Promise.resolve()\n\n if (start) starting = forwardError(start.call(this, controller), controller)\n\n if (write) {\n this._stream._write = this._write.bind(this, starting, write.bind(this))\n }\n\n if (close) {\n this._stream._destroy = this._destroy.bind(this, close.call(this))\n }\n\n if (abort) {\n this._stream.once('error', abort.bind(this))\n }\n } catch (err) {\n controller.error(err)\n }\n }\n\n this._writer = null\n }\n\n get [writableKind]() {\n return WritableStream[writableKind]\n }\n\n get locked() {\n return this._writer !== null\n }\n\n getWriter() {\n if (this.locked) throw new TypeError('Stream is locked')\n\n this._writer = new exports.WritableStreamDefaultWriter(this)\n\n return this._writer\n }\n\n abort(reason = new TypeError('Stream was aborted')) {\n if (this._stream.destroyed) return Promise.resolve()\n\n if (this.locked) return Promise.reject(new TypeError('Stream is locked'))\n\n return new Promise((resolve) => this._stream.once('close', resolve).destroy(reason))\n }\n\n close() {\n if (this._stream.destroyed) return Promise.resolve()\n\n if (this.locked) return Promise.reject(new TypeError('Stream is locked'))\n\n return new Promise((resolve) => this._stream.once('close', resolve).end())\n }\n\n _releaseLock() {\n this._writer = null\n }\n\n async _write(starting, write, data, cb) {\n await starting\n\n let err = null\n try {\n await write(data, this._controller)\n } catch (e) {\n err = e\n }\n cb(err)\n }\n\n async _destroy(closing, cb) {\n let err = null\n try {\n await closing\n } catch (e) {\n err = e\n }\n cb(err)\n }\n}\n\nexports.WritableStream = WritableStream\n\nexports.isWritableStream = function isWritableStream(value) {\n if (value instanceof WritableStream) return true\n\n return (\n typeof value === 'object' &&\n value !== null &&\n value[writableKind] === WritableStream[writableKind]\n )\n}\n\n// https://streams.spec.whatwg.org/#transformstreamdefaultcontroller\nexports.TransformStreamDefaultController = class TransformStreamDefaultController {\n constructor(stream) {\n this._stream = stream\n }\n\n get desiredSize() {\n const stream = this._stream._stream\n\n return stream._readableState.highWaterMark - stream._readableState.buffered\n }\n\n enqueue(data) {\n this._stream._stream.push(data)\n }\n\n error(err) {\n this._stream._stream.destroy(err)\n }\n\n terminate() {\n const stream = this._stream._stream\n\n stream.push(null)\n stream.destroy(new TypeError('Stream has been terminated'))\n }\n}\n\n// https://streams.spec.whatwg.org/#transformstream\nclass TransformStream {\n static get [transformKind]() {\n return 0 // Compatibility version\n }\n\n constructor(transformer = {}, writableStrategy = {}, readableStrategy = {}) {\n if (isStreamx(transformer)) {\n this._stream = transformer\n } else {\n const { start, transform, flush } = transformer\n\n this._stream = new Transform({ ...writableStrategy, ...readableStrategy })\n\n const controller = new exports.TransformStreamDefaultController(this)\n\n this._controller = controller\n\n try {\n let starting = Promise.resolve()\n\n if (start) starting = forwardError(start.call(this, controller), controller)\n\n if (transform) {\n this._stream._transform = this._transform.bind(this, starting, transform.bind(this))\n }\n\n if (flush) {\n this._stream._flush = this._flush.bind(this, flush.call(this, this._controller))\n }\n } catch (err) {\n controller.error(err)\n }\n }\n\n this._writable = new WritableStream(this._stream)\n this._readable = new ReadableStream(this._stream)\n }\n\n get [transformKind]() {\n return TransformStream[transformKind]\n }\n\n get writable() {\n return this._writable\n }\n\n get readable() {\n return this._readable\n }\n\n async _transform(starting, transform, data, cb) {\n await starting\n\n let err = null\n try {\n await transform(data, this._controller)\n } catch (e) {\n err = e\n }\n cb(err)\n }\n\n async _flush(flush, cb) {\n let err = null\n try {\n await flush\n } catch (e) {\n err = e\n }\n cb(err)\n }\n}\n\nexports.TransformStream = TransformStream\n\nexports.isTransformStream = function isTransformStream(value) {\n if (value instanceof TransformStream) return true\n\n return (\n typeof value === 'object' &&\n value !== null &&\n value[transformKind] === TransformStream[transformKind]\n )\n}\n\nasync function forwardError(promise, controller) {\n try {\n await promise\n } catch (err) {\n controller.error(err)\n }\n}\n\nfunction noop() {}\nmodule.exports = require.addon()\nconst EventEmitter = require('bare-events')\nconst { Duplex } = require('bare-stream')\nconst dns = require('bare-dns')\nconst binding = require('./binding')\nconst constants = require('./lib/constants')\nconst errors = require('./lib/errors')\nconst ip = require('./lib/ip')\n\nconst defaultReadBufferSize = 65536\nconst empty = Buffer.alloc(0)\n\nconst ipcHandle = Symbol.for('bare.ipc.handle')\nconst ipcAccept = Symbol.for('bare.ipc.accept')\n\nexports.Socket = class TCPSocket extends Duplex {\n constructor(opts = {}) {\n const { readBufferSize = defaultReadBufferSize, allowHalfOpen = true, eagerOpen = true } = opts\n\n super({ eagerOpen })\n\n this._state = 0\n\n this._allowHalfOpen = allowHalfOpen\n\n this._keepAlive = 0\n this._keepAliveInitialDelay = 0\n this._noDelay = 0\n\n this._localAddress = null\n this._remoteAddress = null\n\n this._pendingOpen = null\n this._pendingWrite = null\n this._pendingWriteBatch = null\n this._pendingFinal = null\n this._pendingDestroy = null\n\n this._timer = null\n this._timeout = 0\n\n this._buffer = Buffer.alloc(readBufferSize)\n\n this._addresses = null\n this._errors = null\n\n this._handle = binding.init(\n this._buffer,\n this,\n noop,\n this._onconnect,\n this._onreset,\n this._onread,\n this._onwrite,\n this._onfinal,\n this._onclose\n )\n }\n\n get connecting() {\n return (this._state & constants.state.CONNECTING) !== 0\n }\n\n get pending() {\n return (this._state & constants.state.CONNECTED) === 0\n }\n\n get timeout() {\n return this._timeout || undefined // For Node.js compatibility\n }\n\n get readyState() {\n if (this._state & constants.state.CONNECTED) {\n return 'open'\n }\n\n return 'opening'\n }\n\n get localAddress() {\n if (this._localAddress) return this._localAddress.address\n }\n\n get localFamily() {\n if (this._localAddress) return `IPv${this._localAddress.family}`\n }\n\n get localPort() {\n if (this._localAddress) return this._localAddress.port\n }\n\n get remoteAddress() {\n if (this._remoteAddress) return this._remoteAddress.address\n }\n\n get remoteFamily() {\n if (this._remoteAddress) return `IPv${this._remoteAddress.family}`\n }\n\n get remotePort() {\n if (this._remoteAddress) return this._remoteAddress.port\n }\n\n get [ipcHandle]() {\n return this._handle\n }\n\n connect(port, host = 'localhost', opts = {}, onconnect) {\n if (this._state & constants.state.CONNECTING || this._state & constants.state.CONNECTED) {\n throw errors.SOCKET_ALREADY_CONNECTED('Socket is already connected')\n }\n\n if (typeof host === 'function') {\n onconnect = host\n host = 'localhost'\n } else if (typeof opts === 'function') {\n onconnect = opts\n opts = {}\n }\n\n let family = 0\n\n if (typeof port === 'object' && port !== null) {\n opts = port || {}\n port = opts.port || 0\n host = opts.host || 'localhost'\n family = opts.family || 0\n }\n\n if (!host) host = 'localhost'\n\n validatePort(port)\n\n this._state |= constants.state.CONNECTING\n\n const {\n lookup = dns.lookup,\n hints,\n keepAlive = false,\n keepAliveInitialDelay = 0,\n noDelay = false,\n timeout\n } = opts\n\n const type = ip.isIP(host)\n\n if (type === 0) {\n lookup(host, { all: true, family, hints }, (err, addresses) => {\n if (this._state & constants.state.CLOSING) return\n\n this._state &= ~constants.state.CONNECTING\n\n if (err || addresses.length === 0) {\n if (!err) {\n err = new Error(`No address found for host \"${host}\"`)\n err.code = 'ENOTFOUND'\n }\n\n this.emit('lookup', err, null, 0, host)\n\n if (this._pendingOpen) this._continueOpen(err)\n else this.destroy(err)\n return\n }\n\n for (const { address, family } of addresses) {\n this.emit('lookup', null, address, family, host)\n }\n\n const [{ address, family }, ...rest] = addresses\n\n if (rest.length > 0) {\n this._addresses = rest.map(({ address, family }) => [\n port,\n address,\n { ...opts, family },\n onconnect\n ])\n\n this._errors = []\n }\n\n this.connect(port, address, { ...opts, family }, onconnect)\n })\n\n return this\n }\n\n family = type\n\n try {\n binding.connect(this._handle, port, host, family)\n\n if (keepAlive) {\n this._keepAlive = keepAlive\n this._keepAliveInitialDelay = keepAliveInitialDelay\n }\n if (noDelay) this._noDelay = noDelay\n if (timeout) this.setTimeout(timeout)\n\n if (onconnect) this.once('connect', onconnect)\n } catch (err) {\n queueMicrotask(() => {\n if (this._pendingOpen) this._pendingOpen(err)\n else this.destroy(err)\n })\n }\n\n return this\n }\n\n open(fd, opts = {}, onconnect) {\n if (typeof opts === 'function') {\n onconnect = opts\n opts = {}\n }\n\n if (typeof fd === 'object' && fd !== null) {\n opts = fd\n fd = opts.fd\n }\n\n try {\n binding.open(this._handle, fd)\n\n this._state |= constants.state.CONNECTED\n\n if (onconnect) this.once('connect', onconnect)\n\n queueMicrotask(() => this.emit('connect'))\n } catch (err) {\n queueMicrotask(() => {\n if (this._pendingOpen) this._pendingOpen(err)\n else this.destroy(err)\n })\n }\n\n return this\n }\n\n setKeepAlive(enable = false, delay = 0) {\n if (typeof enable === 'number') {\n delay = enable\n enable = false\n }\n\n delay = Math.floor(delay / 1000)\n\n if (delay === 0) enable = false\n\n binding.keepalive(this._handle, enable, delay)\n\n return this\n }\n\n setNoDelay(enable = true) {\n binding.nodelay(this._handle, enable)\n\n return this\n }\n\n setTimeout(ms, ontimeout) {\n if (ms === 0) {\n clearTimeout(this._timer)\n\n this._timer = null\n } else {\n if (ontimeout) this.once('timeout', ontimeout)\n\n this._timer = setTimeout(() => this.emit('timeout'), ms)\n this._timer.unref()\n }\n\n this._timeout = ms\n\n return this\n }\n\n ref() {\n binding.ref(this._handle)\n\n return this\n }\n\n unref() {\n binding.unref(this._handle)\n\n return this\n }\n\n [ipcAccept]() {\n this._onaccept()\n }\n\n _open(cb) {\n if (this._state & constants.state.CONNECTED) return cb(null)\n\n this._pendingOpen = cb\n }\n\n _read() {\n if ((this._state & constants.state.READING) === 0) {\n this._state |= constants.state.READING\n\n binding.resume(this._handle)\n }\n }\n\n _writev(batch, cb) {\n this._pendingWrite = cb\n this._pendingWriteBatch = batch\n\n try {\n binding.writev(\n this._handle,\n batch.map(({ chunk }) => chunk)\n )\n } catch (err) {\n this._continueWrite(err)\n }\n }\n\n _final(cb) {\n this._pendingFinal = cb\n\n binding.end(this._handle)\n }\n\n _predestroy() {\n if (this._state & constants.state.CLOSING) return\n this._state |= constants.state.CLOSING\n\n binding.close(this._handle)\n }\n\n _destroy(err, cb) {\n if (this._state & constants.state.CLOSING) return cb(err)\n this._state |= constants.state.CLOSING\n\n this._pendingDestroy = cb\n\n binding.close(this._handle)\n }\n\n _continueOpen(err) {\n if (this._pendingOpen === null) return\n const cb = this._pendingOpen\n this._pendingOpen = null\n cb(err)\n }\n\n _continueWrite(err) {\n if (this._pendingWrite === null) return\n const cb = this._pendingWrite\n this._pendingWrite = null\n this._pendingWriteBatch = null\n cb(err)\n }\n\n _continueFinal(err) {\n if (this._pendingFinal === null) return\n const cb = this._pendingFinal\n this._pendingFinal = null\n cb(err)\n }\n\n _continueDestroy() {\n if (this._pendingDestroy === null) return\n const cb = this._pendingDestroy\n this._pendingDestroy = null\n cb(null)\n }\n\n _reset() {\n this._state = 0\n\n this._localAddress = null\n this._remoteAddress = null\n\n binding.reset(this._handle)\n }\n\n _onconnect(err) {\n if (err) {\n if (this._addresses !== null) {\n this._errors.push(err)\n\n if (this._addresses.length > 0) return this._reset()\n\n err = this._errors.length === 1 ? this._errors[0] : new AggregateError(this._errors)\n }\n\n if (this._pendingOpen) this._continueOpen(err)\n else this.destroy(err)\n return\n }\n\n if (this._keepAlive) this.setKeepAlive(this._keepAlive, this._keepAliveInitialDelay)\n if (this._noDelay) this.setNoDelay()\n\n this._localAddress = binding.address(this._handle, true)\n this._remoteAddress = binding.address(this._handle, false)\n\n this._state |= constants.state.CONNECTED\n this._state &= ~constants.state.CONNECTING\n this._continueOpen()\n\n this.emit('connect')\n }\n\n _onaccept() {\n try {\n this._localAddress = binding.address(this._handle, true)\n } catch {\n this._localAddress = null\n }\n\n try {\n this._remoteAddress = binding.address(this._handle, false)\n } catch {\n this._remoteAddress = null\n }\n\n this._state |= constants.state.CONNECTED\n this._continueOpen()\n }\n\n _onreset(err) {\n if (err) {\n this._errors.push(err)\n this.destroy(this._errors.length === 1 ? this._errors[0] : new AggregateError(this._errors))\n return\n }\n\n this.connect(...this._addresses.shift())\n }\n\n _onread(err, read) {\n if (this._timer) this._timer.refresh()\n\n if (err) {\n this.destroy(err)\n return\n }\n\n if (read === 0) {\n this.push(null)\n if (this._allowHalfOpen === false) this.end()\n return\n }\n\n const copy = Buffer.allocUnsafe(read)\n copy.set(this._buffer.subarray(0, read))\n\n if (this.push(copy) === false && this.destroying === false) {\n this._state &= ~constants.state.READING\n\n binding.pause(this._handle)\n }\n }\n\n _onwrite(err) {\n if (this._timer) this._timer.refresh()\n\n this._continueWrite(err)\n }\n\n _onfinal(err) {\n this._continueFinal(err)\n }\n\n _onclose() {\n clearTimeout(this._timer)\n\n this._continueOpen()\n this._continueDestroy()\n }\n}\n\nexports.Server = class TCPServer extends EventEmitter {\n constructor(opts = {}, onconnection) {\n if (typeof opts === 'function') {\n onconnection = opts\n opts = {}\n }\n\n super()\n\n const {\n readBufferSize = defaultReadBufferSize,\n allowHalfOpen = true,\n keepAlive = false,\n keepAliveInitialDelay = 0,\n noDelay = false,\n pauseOnConnect = false,\n maxConnections = Infinity\n } = opts\n\n this._state = 0\n\n this._readBufferSize = readBufferSize\n this._allowHalfOpen = allowHalfOpen\n this._keepAlive = keepAlive\n this._keepAliveInitialDelay = keepAliveInitialDelay\n this._noDelay = noDelay\n this._pauseOnConnect = pauseOnConnect\n this._maxConnections = maxConnections\n\n this._address = null\n this._connections = new Set()\n\n this._error = null\n this._handle = null\n\n if (onconnection) this.on('connection', onconnection)\n }\n\n get listening() {\n return (this._state & constants.state.BOUND) !== 0\n }\n\n get closing() {\n return (this._state & constants.state.CLOSING) !== 0\n }\n\n get connections() {\n return this._connections\n }\n\n get maxConnections() {\n return this._maxConnections\n }\n\n set maxConnections(value) {\n this._maxConnections = value\n }\n\n address() {\n if ((this._state & constants.state.BOUND) === 0) return null\n\n const { address, family, port } = this._address\n\n return { address, family: `IPv${family}`, port }\n }\n\n listen(port = 0, host = 'localhost', backlog = 511, opts = {}, onlistening) {\n if (this._state & constants.state.BINDING || this._state & constants.state.BOUND) {\n throw errors.SERVER_ALREADY_LISTENING('Server is already listening')\n }\n\n if (this._state & constants.state.CLOSING) {\n throw errors.SERVER_IS_CLOSED('Server is closed')\n }\n\n if (typeof port === 'function') {\n onlistening = port\n port = 0\n } else if (typeof host === 'function') {\n onlistening = host\n host = 'localhost'\n } else if (typeof backlog === 'function') {\n onlistening = backlog\n backlog = 511\n } else if (typeof opts === 'function') {\n onlistening = opts\n opts = {}\n }\n\n let family = 0\n\n if (typeof port === 'object' && port !== null) {\n opts = port || {}\n port = opts.port || 0\n host = opts.host || 'localhost'\n family = opts.family || 0\n backlog = opts.backlog || 511\n }\n\n if (!host) host = 'localhost'\n if (!backlog) backlog = 511\n\n validatePort(port)\n\n this._state |= constants.state.BINDING\n\n const { lookup = dns.lookup, hints } = opts\n\n const type = ip.isIP(host)\n\n if (type === 0) {\n lookup(host, { family, hints }, (err, address, family) => {\n if (this._state & constants.state.CLOSING) return\n\n this.emit('lookup', err, address, family, host)\n\n this._state &= ~constants.state.BINDING\n\n if (err) return this.emit('error', err)\n\n this.listen(port, address, backlog, { ...opts, family }, onlistening)\n })\n\n return this\n }\n\n family = type\n\n this._handle = binding.init(\n empty,\n this,\n this._onconnection,\n noop,\n noop,\n noop,\n noop,\n noop,\n this._onclose\n )\n\n if (this._state & constants.state.UNREFED) binding.unref(this._handle)\n\n try {\n binding.bind(this._handle, port, host, backlog, family)\n\n this._address = binding.address(this._handle, true)\n\n this._state |= constants.state.BOUND\n this._state &= ~constants.state.BINDING\n\n if (onlistening) this.once('listening', onlistening)\n\n queueMicrotask(() => this.emit('listening'))\n } catch (err) {\n this._error = err\n\n binding.close(this._handle)\n }\n\n return this\n }\n\n close(onclose) {\n if (onclose) this.once('close', onclose)\n\n if (this._state & constants.state.CLOSING) return this\n this._state |= constants.state.CLOSING\n\n this._closeMaybe()\n\n return this\n }\n\n ref() {\n this._state &= ~constants.state.UNREFED\n\n if (this._handle !== null) binding.ref(this._handle)\n\n return this\n }\n\n unref() {\n this._state |= constants.state.UNREFED\n\n if (this._handle !== null) binding.unref(this._handle)\n\n return this\n }\n\n _closeMaybe() {\n if (this._state & constants.state.CLOSING && this._connections.size === 0) {\n if (this._handle !== null) binding.close(this._handle)\n else queueMicrotask(() => this.emit('close'))\n }\n }\n\n _onconnection(err) {\n if (err) {\n this.emit('error', err)\n return\n }\n\n if (this._state & constants.state.CLOSING) return\n\n const overLimit = this._connections.size >= this._maxConnections\n\n const socket = new exports.Socket({\n readBufferSize: overLimit ? 0 : this._readBufferSize,\n allowHalfOpen: this._allowHalfOpen,\n eagerOpen: !this._pauseOnConnect\n })\n\n try {\n binding.accept(this._handle, socket._handle)\n\n socket._onaccept()\n\n if (overLimit) {\n const info = {\n localAddress: socket.localAddress,\n localPort: socket.localPort,\n localFamily: socket.localFamily,\n remoteAddress: socket.remoteAddress,\n remotePort: socket.remotePort,\n remoteFamily: socket.remoteFamily\n }\n\n socket.destroy()\n\n this.emit('drop', info)\n return\n }\n\n this._connections.add(socket)\n\n if (this._keepAlive) socket.setKeepAlive(this._keepAlive, this._keepAliveInitialDelay)\n if (this._noDelay) socket.setNoDelay()\n\n socket.on('close', () => {\n this._connections.delete(socket)\n this._closeMaybe()\n })\n\n this.emit('connection', socket)\n } catch (err) {\n socket.destroy()\n\n this.emit('error', err)\n }\n }\n\n _onclose() {\n const err = this._error\n\n this._state &= ~constants.state.BINDING\n this._error = null\n this._handle = null\n this._address = null\n\n if (err) this.emit('error', err)\n else this.emit('close')\n }\n}\n\nexports.constants = constants\nexports.errors = errors\n\nexports.isIP = ip.isIP\nexports.isIPv4 = ip.isIPv4\nexports.isIPv6 = ip.isIPv6\n\nexports.createConnection = function createConnection(port, host, opts, onconnect) {\n if (typeof host === 'function') {\n onconnect = host\n host = 'localhost'\n } else if (typeof opts === 'function') {\n onconnect = opts\n opts = {}\n }\n\n if (typeof port === 'object' && port !== null) {\n opts = port || {}\n port = opts.port || 0\n host = opts.host || 'localhost'\n }\n\n return new exports.Socket(opts).connect(port, host, opts, onconnect)\n}\n\n// For Node.js compatibility\nexports.connect = exports.createConnection\n\nexports.createServer = function createServer(opts, onconnection) {\n return new exports.Server(opts, onconnection)\n}\n\nexports.socketpair = function socketpair() {\n return binding.socketpair()\n}\n\nfunction validatePort(port) {\n if (typeof port !== 'number') {\n throw errors.INVALID_PORT(`Port must be a number, got ${typeof port}`)\n }\n\n if (!Number.isInteger(port) || port < 0 || port > 0xffff) {\n throw errors.INVALID_PORT(`Port must be an integer between 0 and 65535, got ${port}`)\n }\n}\n\nfunction noop() {}\nmodule.exports = {\n state: {\n CONNECTING: 0x1,\n CONNECTED: 0x2,\n BINDING: 0x4,\n BOUND: 0x8,\n READING: 0x10,\n CLOSING: 0x20,\n UNREFED: 0x40\n }\n}\nmodule.exports = class TCPError extends Error {\n constructor(msg, fn = TCPError, code = fn.name) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'TCPError'\n }\n\n static SOCKET_ALREADY_CONNECTED(msg) {\n return new TCPError(msg, TCPError.SOCKET_ALREADY_CONNECTED)\n }\n\n static SERVER_ALREADY_LISTENING(msg) {\n return new TCPError(msg, TCPError.SERVER_ALREADY_LISTENING)\n }\n\n static SERVER_IS_CLOSED(msg) {\n return new TCPError(msg, TCPError.SERVER_IS_CLOSED)\n }\n\n static INVALID_HOST(msg = 'Unrecognizable host format') {\n return new TCPError(msg, TCPError.INVALID_HOST)\n }\n\n static INVALID_PORT(msg) {\n return new TCPError(msg, TCPError.INVALID_PORT)\n }\n}\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nconst v4Seg = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'\nconst v4Str = `(${v4Seg}[.]){3}${v4Seg}`\nconst IPv4Pattern = new RegExp(`^${v4Str}$`)\n\nconst v6Seg = '(?:[0-9a-fA-F]{1,4})'\nconst IPv6Pattern = new RegExp(\n '^(' +\n `(?:${v6Seg}:){7}(?:${v6Seg}|:)|` +\n `(?:${v6Seg}:){6}(?:${v4Str}|:${v6Seg}|:)|` +\n `(?:${v6Seg}:){5}(?::${v4Str}|(:${v6Seg}){1,2}|:)|` +\n `(?:${v6Seg}:){4}(?:(:${v6Seg}){0,1}:${v4Str}|(:${v6Seg}){1,3}|:)|` +\n `(?:${v6Seg}:){3}(?:(:${v6Seg}){0,2}:${v4Str}|(:${v6Seg}){1,4}|:)|` +\n `(?:${v6Seg}:){2}(?:(:${v6Seg}){0,3}:${v4Str}|(:${v6Seg}){1,5}|:)|` +\n `(?:${v6Seg}:){1}(?:(:${v6Seg}){0,4}:${v4Str}|(:${v6Seg}){1,6}|:)|` +\n `(?::((?::${v6Seg}){0,5}:${v4Str}|(?::${v6Seg}){1,7}|:))` +\n ')(%[0-9a-zA-Z-.:]{1,})?$'\n)\n\nconst isIPv4 = (exports.isIPv4 = function isIPv4(host) {\n return IPv4Pattern.test(host)\n})\n\nconst isIPv6 = (exports.isIPv6 = function isIPv6(host) {\n return IPv6Pattern.test(host)\n})\n\nexports.isIP = function isIP(host) {\n if (isIPv4(host)) return 4\n if (isIPv6(host)) return 6\n return 0\n}\n{\n \"name\": \"bare-tcp\",\n \"version\": \"2.5.2\",\n \"description\": \"Native TCP sockets for JavaScript\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\",\n \"./constants\": \"./lib/constants.js\",\n \"./errors\": \"./lib/errors.js\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-tcp.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-tcp/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-tcp#readme\",\n \"engines\": {\n \"bare\": \">=1.16.0\"\n },\n \"dependencies\": {\n \"bare-dns\": \"^2.0.4\",\n \"bare-events\": \"^2.5.4\",\n \"bare-stream\": \"^2.6.4\"\n },\n \"devDependencies\": {\n \"bare-pipe\": \"^4.1.5\",\n \"brittle\": \"^3.5.0\",\n \"cmake-bare\": \"^1.1.6\",\n \"lunte\": \"^1.6.0\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"peerDependencies\": {\n \"bare-pipe\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"bare-pipe\": {\n \"optional\": true\n }\n }\n}\nmodule.exports = require.addon()\nconst { Duplex, Writable } = require('bare-stream')\nconst binding = require('./binding')\nconst constants = require('./lib/constants')\nconst errors = require('./lib/errors')\n\nconst defaultReadBufferSize = 65536\n\nconst context = binding.context()\n\nexports.Socket = class TLSSocket extends Duplex {\n constructor(socket, opts = {}) {\n const {\n isServer = false,\n cert = null,\n key = null,\n host = null,\n rejectUnauthorized = true,\n ca = null,\n alpnProtocols = null,\n eagerOpen = true,\n allowHalfOpen = true,\n readBufferSize = defaultReadBufferSize\n } = opts\n\n if (!isServer && rejectUnauthorized && !host) {\n throw new TypeError(\"'host' is required for client sockets when 'rejectUnauthorized' is true\")\n }\n\n super({ eagerOpen })\n\n this._state = 0\n\n this._socket = socket\n this._allowHalfOpen = allowHalfOpen\n\n this._pendingOpen = null\n this._pendingWrite = null\n this._pendingDestroy = null\n\n this._reading = Buffer.alloc(readBufferSize)\n this._buffer = []\n this._buffered = 0\n\n this._ondata = this._ondata.bind(this)\n this._ondrain = this._ondrain.bind(this)\n this._onend = this._onend.bind(this)\n this._onclose = this._onclose.bind(this)\n this._onerror = this._onerror.bind(this)\n\n socket.on('close', this._onclose).on('error', this._onerror)\n\n let alpn = null\n\n if (alpnProtocols && alpnProtocols.length > 0) {\n const parts = []\n\n for (const protocol of alpnProtocols) {\n const encoded = Buffer.from(protocol)\n\n if (encoded.byteLength === 0 || encoded.byteLength > 255) {\n throw new RangeError('ALPN protocol name must be 1-255 bytes')\n }\n\n parts.push(Buffer.of(encoded.byteLength), encoded)\n }\n\n alpn = Buffer.concat(parts)\n }\n\n try {\n this._handle = binding.init(\n context,\n isServer,\n cert,\n key,\n host,\n rejectUnauthorized,\n ca,\n alpn,\n this,\n this._onread,\n this._onwrite\n )\n } catch (err) {\n this._handle = null\n\n this.destroy(err)\n }\n }\n\n get socket() {\n return this._socket\n }\n\n get encrypted() {\n return true\n }\n\n get alpnProtocol() {\n return this._handle ? binding.alpnProtocol(this._handle) : null\n }\n\n _onconnect() {\n this._state |= constants.state.CONNECTED\n\n this.emit('connect')\n\n const cb = this._pendingOpen\n this._pendingOpen = null\n cb(null)\n }\n\n _ondata(data) {\n this._buffer.push(data)\n this._buffered += data.byteLength\n\n while (this._buffered > 0) {\n if (this._state & constants.state.CONNECTED) {\n let read\n try {\n read = binding.read(this._handle, this._reading)\n } catch (err) {\n return this.destroy(errors.from(err))\n }\n\n if (read < 0) break\n\n if (read === 0) {\n this.push(null)\n if (this._allowHalfOpen === false) this.end()\n return\n }\n\n const copy = Buffer.allocUnsafe(read)\n copy.set(this._reading.subarray(0, read))\n\n this.push(copy)\n } else {\n try {\n if (binding.handshake(this._handle)) this._onconnect()\n else break\n } catch (err) {\n err = errors.from(err)\n\n // Defer so any alert the handshake wrote to the underlying socket\n // gets a chance to flush before we tear it down.\n queueMicrotask(() => {\n if (this._pendingOpen) {\n const cb = this._pendingOpen\n this._pendingOpen = null\n cb(err)\n } else {\n this.destroy(err)\n }\n })\n return\n }\n }\n }\n }\n\n _ondrain() {\n if (this._pendingWrite === null) return\n const cb = this._pendingWrite\n this._pendingWrite = null\n cb(null)\n }\n\n _onend() {\n this.push(null)\n }\n\n _onclose() {\n this._socket.off('close', this._onclose).off('error', this._onerror)\n\n if (this._pendingDestroy) {\n const cb = this._pendingDestroy\n this._pendingDestroy = null\n cb()\n }\n }\n\n _onerror(err) {\n if (this._pendingOpen) {\n const cb = this._pendingOpen\n this._pendingOpen = null\n cb(err)\n } else if (this._pendingDestroy) {\n const cb = this._pendingDestroy\n this._pendingDestroy = null\n cb(err)\n } else {\n this.destroy(err)\n }\n }\n\n _onread(data) {\n if (this._buffered < data.byteLength) return 0\n\n let offset = 0\n let remaining = data.byteLength\n\n while (remaining > 0) {\n const chunk = this._buffer[0]\n\n if (chunk.byteLength <= remaining) {\n data.set(chunk, offset)\n\n offset += chunk.byteLength\n remaining -= chunk.byteLength\n\n this._buffer.shift()\n } else {\n data.set(chunk.subarray(0, remaining), offset)\n\n this._buffer[0] = chunk.subarray(remaining)\n\n remaining = 0\n }\n }\n\n this._buffered -= data.byteLength\n\n return data.byteLength\n }\n\n _onwrite(data) {\n this._socket.write(Buffer.from(data.slice()))\n\n return data.byteLength\n }\n\n _attach() {\n if (this._state & constants.state.ATTACHED) return\n this._state |= constants.state.ATTACHED\n\n this._socket.on('data', this._ondata).on('drain', this._ondrain).on('end', this._onend)\n }\n\n _detach() {\n if (!(this._state & constants.state.ATTACHED)) return\n this._state &= ~constants.state.ATTACHED\n\n this._socket.off('data', this._ondata).off('drain', this._ondrain).off('end', this._onend)\n }\n\n _open(cb) {\n this._pendingOpen = cb\n this._attach()\n\n try {\n if (binding.handshake(this._handle)) this._onconnect()\n } catch (err) {\n this._pendingOpen = null\n\n cb(errors.from(err))\n }\n }\n\n _write(data, encoding, cb) {\n try {\n binding.write(this._handle, data)\n\n if (Writable.isBackpressured(this._socket)) {\n this._pendingWrite = cb\n } else {\n cb(null)\n }\n } catch (err) {\n this._pendingWrite = null\n\n cb(errors.from(err))\n }\n }\n\n _final(cb) {\n try {\n binding.shutdown(this._handle)\n\n cb(null)\n } catch (err) {\n cb(err)\n }\n\n this._socket.end()\n }\n\n _predestroy() {\n if (this._handle) {\n this._detach()\n\n binding.destroy(this._handle)\n this._handle = null\n }\n\n this._socket.destroy()\n }\n\n _destroy(err, cb) {\n if (this._handle) {\n this._detach()\n\n binding.destroy(this._handle)\n this._handle = null\n }\n\n if (err) this._socket.destroy()\n\n if (this._socket.destroyed) cb(err)\n else this._pendingDestroy = cb\n }\n}\n\nexports.TLSSocket = exports.Socket // For Node.js compatibility\n\nexports.constants = constants\nexports.errors = errors\n\nconst net = require('./net')\n\nexports.createConnection = net.createConnection\nexports.createServer = net.createServer\n\n// For Node.js compatibility\nexports.connect = exports.createConnection\nmodule.exports = {\n state: {\n CONNECTED: 0x1,\n ATTACHED: 0x2\n }\n}\nmodule.exports = class TLSError extends Error {\n constructor(msg, code, fn = TLSError) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'TLSError'\n }\n\n static from(err) {\n return new TLSError(err.message, err.code, TLSError.from)\n }\n}\nconst EventEmitter = require('bare-events')\nconst net = require('bare-net')\nconst tls = require('bare-tls')\n\nclass TLSNetSocket extends tls.Socket {\n ref() {\n this.socket.ref()\n }\n\n unref() {\n this.socket.unref()\n }\n}\n\nclass TLSNetServer extends EventEmitter {\n constructor(opts = {}, onconnection) {\n if (typeof opts === 'function') {\n onconnection = opts\n opts = {}\n }\n\n const {\n cert = null,\n key = null,\n host = null,\n rejectUnauthorized = true,\n ca = null,\n alpnProtocols = null,\n eagerOpen = true,\n allowHalfOpen = true\n } = opts\n\n super()\n\n this._opts = {\n cert,\n key,\n host,\n rejectUnauthorized,\n ca,\n alpnProtocols,\n eagerOpen,\n allowHalfOpen\n }\n\n this._server = net.createServer(opts)\n this._server\n .on('listening', this._onlistening.bind(this))\n .on('connection', this._onconnection.bind(this))\n .on('error', this._onerror.bind(this))\n .on('close', this._onclose.bind(this))\n\n if (onconnection) this.on('connection', onconnection)\n }\n\n get listening() {\n return this._server.listening\n }\n\n address() {\n return this._server.address()\n }\n\n listen(...args) {\n this._server.listen(...args)\n return this\n }\n\n close(onclose) {\n if (onclose) this.once('close', onclose)\n this._server.close()\n }\n\n ref() {\n this._server.ref()\n }\n\n unref() {\n this._server.unref()\n }\n\n _onlistening() {\n this.emit('listening')\n }\n\n _onconnection(socket) {\n this.emit('connection', new TLSNetSocket(socket, { ...this._opts, isServer: true }))\n }\n\n _onerror(err) {\n this.emit('error', err)\n }\n\n _onclose() {\n this.emit('close')\n }\n}\n\nexports.createConnection = function createConnection(...args) {\n let opts = {}\n let onconnect\n\n if (typeof args[0] === 'string') {\n // createConnection(path[, onconnect])\n opts.path = args[0]\n onconnect = args[1]\n } else if (typeof args[0] === 'number') {\n // createConnection(port[, host][, onconnect])\n opts.port = args[0]\n\n if (typeof args[1] === 'function') {\n onconnect = args[1]\n } else {\n opts.host = args[1]\n onconnect = args[2]\n }\n } else {\n // createConnection(opts[, onconnect])\n opts = args[0] || {}\n onconnect = args[1]\n }\n\n if (!opts.host && !opts.path) opts.host = 'localhost'\n\n return new TLSNetSocket(net.createConnection(opts, onconnect), opts)\n}\n\nexports.createServer = function createServer(opts, onconnection) {\n return new TLSNetServer(opts, onconnection)\n}\n{\n \"name\": \"bare-tls\",\n \"version\": \"3.1.7\",\n \"description\": \"Transport Layer Security (TLS) streams for JavaScript\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\",\n \"./constants\": {\n \"types\": \"./lib/constants.d.ts\",\n \"default\": \"./lib/constants.js\"\n },\n \"./errors\": {\n \"types\": \"./lib/errors.d.ts\",\n \"default\": \"./lib/errors.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"net.js\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-tls.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-tls/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-tls#readme\",\n \"engines\": {\n \"bare\": \">=1.7.0\"\n },\n \"dependencies\": {\n \"bare-net\": \"^2.0.1\",\n \"bare-stream\": \"^2.6.4\"\n },\n \"devDependencies\": {\n \"bare-events\": \"^2.6.0\",\n \"bare-fs\": \"^4.0.2\",\n \"brittle\": \"^3.1.1\",\n \"cmake-bare\": \"^1.1.6\",\n \"cmake-fetch\": \"^1.0.0\",\n \"lunte\": \"^1.6.0\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nmodule.exports = require.addon()\nconst binding = require('./binding')\n\nconst t = binding.constants\n\nclass Type {\n constructor(type) {\n this._type = type\n }\n\n isUndefined() {\n return this._type === t.UNDEFINED\n }\n\n isNull() {\n return this._type === t.NULL\n }\n\n isBoolean() {\n return this._type === t.BOOLEAN\n }\n\n isNumber() {\n return (this._type & 0xff) === t.NUMBER\n }\n\n isInt32() {\n return (this._type & (0xff | t.INT32)) === (t.NUMBER | t.INT32)\n }\n\n isUint32() {\n return (this._type & (0xff | t.UINT32)) === (t.NUMBER | t.UINT32)\n }\n\n isString() {\n return this._type === t.STRING\n }\n\n isSymbol() {\n return this._type === t.SYMBOL\n }\n\n isObject() {\n return (this._type & 0xff) === t.OBJECT\n }\n\n isArray() {\n return this._type === (t.OBJECT | t.ARRAY)\n }\n\n isArguments() {\n return this._type === (t.OBJECT | t.ARGUMENTS)\n }\n\n isDate() {\n return this._type === (t.OBJECT | t.DATE)\n }\n\n isRegExp() {\n return this._type === (t.OBJECT | t.REGEXP)\n }\n\n isError() {\n return this._type === (t.OBJECT | t.ERROR)\n }\n\n isPromise() {\n return this._type === (t.OBJECT | t.PROMISE)\n }\n\n isProxy() {\n return this._type === (t.OBJECT | t.PROXY)\n }\n\n isGenerator() {\n return this._type === (t.OBJECT | t.GENERATOR)\n }\n\n isMap() {\n return this._type === (t.OBJECT | t.MAP)\n }\n\n isSet() {\n return this._type === (t.OBJECT | t.SET)\n }\n\n isWeakMap() {\n return this._type === (t.OBJECT | t.WEAK_MAP)\n }\n\n isWeakSet() {\n return this._type === (t.OBJECT | t.WEAK_SET)\n }\n\n isWeakRef() {\n return this._type === (t.OBJECT | t.WEAK_REF)\n }\n\n isArrayBuffer() {\n return this._type === (t.OBJECT | t.ARRAYBUFFER)\n }\n\n isSharedArrayBuffer() {\n return this._type === (t.OBJECT | t.SHAREDARRAYBUFFER)\n }\n\n isTypedArray() {\n return (this._type & 0xffff) === (t.OBJECT | t.TYPEDARRAY)\n }\n\n isInt8Array() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.INT8ARRAY)\n }\n\n isUint8Array() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.UINT8ARRAY)\n }\n\n isUint8ClampedArray() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.UINT8CLAMPEDARRAY)\n }\n\n isInt16Array() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.INT16ARRAY)\n }\n\n isUint16Array() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.UINT16ARRAY)\n }\n\n isInt32Array() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.INT32ARRAY)\n }\n\n isUint32Array() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.UINT32ARRAY)\n }\n\n isFloat16Array() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.FLOAT16ARRAY)\n }\n\n isFloat32Array() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.FLOAT32ARRAY)\n }\n\n isFloat64Array() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.FLOAT64ARRAY)\n }\n\n isBigInt64Array() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.BIGINT64ARRAY)\n }\n\n isBigUint64Array() {\n return this._type === (t.OBJECT | t.TYPEDARRAY | t.BIGUINT64ARRAY)\n }\n\n isDataView() {\n return this._type === (t.OBJECT | t.DATAVIEW)\n }\n\n isModuleNamespace() {\n return this._type === (t.OBJECT | t.MODULE_NAMESPACE)\n }\n\n isFunction() {\n return (this._type & 0xff) === t.FUNCTION\n }\n\n isAsyncFunction() {\n return (\n (this._type & (0xff | t.ASYNC_FUNCTION)) ===\n (t.FUNCTION | t.ASYNC_FUNCTION)\n )\n }\n\n isGeneratorFunction() {\n return (\n (this._type & (0xff | t.GENERATOR_FUNCTION)) ===\n (t.FUNCTION | t.GENERATOR_FUNCTION)\n )\n }\n\n isExternal() {\n return this._type === t.EXTERNAL\n }\n\n isBigInt() {\n return this._type === t.BIGINT\n }\n}\n\nmodule.exports = exports = function type(value) {\n switch (typeof value) {\n case 'undefined':\n return new Type(t.UNDEFINED)\n case 'boolean':\n return new Type(t.BOOLEAN)\n case 'number':\n return new Type(\n Number.isSafeInteger(value) ? binding.type(value) : t.NUMBER\n )\n case 'string':\n return new Type(t.STRING)\n case 'symbol':\n return new Type(t.SYMBOL)\n case 'object':\n return new Type(value === null ? t.NULL : binding.type(value))\n case 'function':\n return new Type(binding.type(value))\n case 'bigint':\n return new Type(t.BIGINT)\n }\n}\n\nexports.createTag = function createTag(...components) {\n const tag = new Uint32Array(4)\n for (let i = 0; i < 4; i++) tag[i] = components[i] || 0\n return tag\n}\n\nexports.addTag = function addTag(object, tag) {\n binding.addTag(object, tag)\n}\n\nexports.checkTag = function checkTag(object, tag) {\n return binding.checkTag(object, tag)\n}\n{\n \"name\": \"bare-type\",\n \"version\": \"1.1.0\",\n \"description\": \"Cross-realm type predicates for Bare\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"test\": \"prettier . --check && bare test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-type.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-type/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-type#readme\",\n \"engines\": {\n \"bare\": \">=1.2.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.4.0\",\n \"cmake-bare\": \"^1.1.6\",\n \"prettier\": \"^3.4.1\",\n \"prettier-config-standard\": \"^7.0.0\"\n }\n}\nmodule.exports = require.addon()\nconst path = require('bare-path')\nconst binding = require('./binding')\nconst errors = require('./lib/errors')\nconst URLSearchParams = require('./lib/url-search-params')\n\nconst kind = Symbol.for('bare.url.kind')\n\nconst isWindows = Bare.platform === 'win32'\n\nclass URL {\n static get [kind]() {\n return 0 // Compatibility version\n }\n\n constructor(input, base, opts = {}) {\n if (arguments.length === 0) throw errors.INVALID_URL()\n\n input = String(input)\n\n if (base !== undefined) base = String(base)\n\n this._components = new Uint32Array(8)\n\n this._parse(input, base, opts.throw !== false)\n\n if (this._href) this._params = new URLSearchParams(this.search, this)\n }\n\n get [kind]() {\n return URL[kind]\n }\n\n // https://url.spec.whatwg.org/#dom-url-href\n\n get href() {\n return this._href\n }\n\n set href(value) {\n this._update(value)\n\n this._params._parse(this.search)\n }\n\n // https://url.spec.whatwg.org/#dom-url-protocol\n\n get protocol() {\n return this._slice(0, this._components[0]) + ':'\n }\n\n set protocol(value) {\n this._update(this._replace(value.replace(/:+$/, ''), 0, this._components[0]))\n }\n\n // https://url.spec.whatwg.org/#dom-url-username\n\n get username() {\n return this._slice(this._components[0] + 3 /* :// */, this._components[1])\n }\n\n set username(value) {\n if (cannotHaveCredentialsOrPort(this)) {\n return\n }\n\n if (this.username === '') value += '@'\n\n this._update(this._replace(value, this._components[0] + 3 /* :// */, this._components[1]))\n }\n\n // https://url.spec.whatwg.org/#dom-url-password\n\n get password() {\n return this._href.slice(this._components[1] + 1 /* : */, this._components[2] - 1 /* @ */)\n }\n\n set password(value) {\n if (cannotHaveCredentialsOrPort(this)) {\n return\n }\n\n let start = this._components[1] + 1 /* : */\n let end = this._components[2] - 1 /* @ */\n\n if (this.password === '') {\n value = ':' + value\n start--\n }\n\n if (this.username === '') {\n value += '@'\n end++\n }\n\n this._update(this._replace(value, start, end))\n }\n\n // https://url.spec.whatwg.org/#dom-url-host\n\n get host() {\n return this._slice(this._components[2], this._components[5])\n }\n\n set host(value) {\n if (hasOpaquePath(this)) {\n return\n }\n\n this._update(\n this._replace(value, this._components[2], this._components[value.includes(':') ? 5 : 3])\n )\n }\n\n // https://url.spec.whatwg.org/#dom-url-hostname\n\n get hostname() {\n return this._slice(this._components[2], this._components[3])\n }\n\n set hostname(value) {\n if (hasOpaquePath(this)) {\n return\n }\n\n this._update(this._replace(value, this._components[2], this._components[3]))\n }\n\n // https://url.spec.whatwg.org/#dom-url-port\n\n get port() {\n return this._slice(this._components[3] + 1 /* : */, this._components[5])\n }\n\n set port(value) {\n if (cannotHaveCredentialsOrPort(this)) {\n return\n }\n\n let start = this._components[3] + 1 /* : */\n\n if (this.port === '') {\n value = ':' + value\n start--\n }\n\n this._update(this._replace(value, start, this._components[5]))\n }\n\n // https://url.spec.whatwg.org/#dom-url-pathname\n\n get pathname() {\n return this._slice(this._components[5], this._components[6] - 1 /* ? */)\n }\n\n set pathname(value) {\n if (hasOpaquePath(this)) {\n return\n }\n\n if (value[0] !== '/' && value[0] !== '\\\\') {\n value = '/' + value\n }\n\n this._update(this._replace(value, this._components[5], this._components[6] - 1 /* ? */))\n }\n\n // https://url.spec.whatwg.org/#dom-url-search\n\n get search() {\n return this._slice(this._components[6] - 1 /* ? */, this._components[7] - 1 /* # */)\n }\n\n set search(value) {\n if (value && value[0] !== '?') value = '?' + value\n\n this._update(\n this._replace(value, this._components[6] - 1 /* ? */, this._components[7] - 1 /* # */)\n )\n\n this._params._parse(this.search)\n }\n\n // https://url.spec.whatwg.org/#dom-url-searchparams\n\n get searchParams() {\n return this._params\n }\n\n // https://url.spec.whatwg.org/#dom-url-hash\n\n get hash() {\n return this._slice(this._components[7] - 1 /* # */)\n }\n\n set hash(value) {\n if (value && value[0] !== '#') value = '#' + value\n\n this._update(this._replace(value, this._components[7] - 1 /* # */))\n }\n\n toString() {\n return this._href\n }\n\n toJSON() {\n return this._href\n }\n\n [Symbol.for('bare.inspect')]() {\n return {\n __proto__: { constructor: URL },\n\n href: this.href,\n protocol: this.protocol,\n username: this.username,\n password: this.password,\n host: this.host,\n hostname: this.hostname,\n port: this.port,\n pathname: this.pathname,\n search: this.search,\n searchParams: this.searchParams,\n hash: this.hash\n }\n }\n\n _slice(start, end = this._href.length) {\n return this._href.slice(start, end)\n }\n\n _replace(replacement, start, end = this._href.length) {\n return this._slice(0, start) + replacement + this._slice(end)\n }\n\n _parse(input, base, shouldThrow) {\n try {\n this._href = binding.parse(\n String(input),\n base ? String(base) : null,\n this._components,\n shouldThrow\n )\n } catch (err) {\n if (err instanceof TypeError) throw err\n\n throw errors.INVALID_URL(`Invalid URL '${input}'`, input)\n }\n }\n\n _update(input) {\n try {\n this._parse(input, null, true)\n } catch (err) {\n if (err instanceof TypeError) throw err\n }\n }\n}\n\nmodule.exports = exports = URL\n\n// https://url.spec.whatwg.org/#url-opaque-path\nfunction hasOpaquePath(url) {\n return url.pathname[0] !== '/'\n}\n\n// https://url.spec.whatwg.org/#cannot-have-a-username-password-port\nfunction cannotHaveCredentialsOrPort(url) {\n return url.hostname === '' || url.protocol === 'file:'\n}\n\nexports.URL = URL\nexports.URLSearchParams = URLSearchParams\n\nexports.errors = errors\n\nexports.isURL = function isURL(value) {\n if (value instanceof URL) return true\n\n return typeof value === 'object' && value !== null && value[kind] === URL[kind]\n}\n\nexports.isURLSearchParams = URLSearchParams.isURLSearchParams\n\n// https://url.spec.whatwg.org/#dom-url-parse\nexports.parse = function parse(input, base) {\n const url = new URL(input, base, { throw: false })\n return url._href ? url : null\n}\n\n// https://url.spec.whatwg.org/#dom-url-canparse\nexports.canParse = function canParse(input, base) {\n return binding.canParse(String(input), base ? String(base) : null)\n}\n\nexports.fileURLToPath = function fileURLToPath(url) {\n if (typeof url === 'string') {\n url = new URL(url)\n }\n\n if (url.protocol !== 'file:') {\n throw errors.INVALID_URL_SCHEME('The URL must use the file: protocol')\n }\n\n if (isWindows) {\n if (/%2f|%5c/i.test(url.pathname)) {\n throw errors.INVALID_FILE_URL_PATH(\n 'The file: URL path must not include encoded \\\\ or / characters'\n )\n }\n } else {\n if (url.hostname) {\n throw errors.INVALID_FILE_URL_HOST(\"The file: URL host must be 'localhost' or empty\")\n }\n\n if (/%2f/i.test(url.pathname)) {\n throw errors.INVALID_FILE_URL_PATH('The file: URL path must not include encoded / characters')\n }\n }\n\n if (/%00/i.test(url.pathname)) {\n throw errors.INVALID_FILE_URL_PATH('The file: URL path must not include encoded NUL characters')\n }\n\n const pathname = path.normalize(decodeURIComponent(url.pathname))\n\n if (isWindows) {\n if (url.hostname) return '\\\\\\\\' + url.hostname + pathname\n\n const letter = pathname.charCodeAt(1) | 0x20\n\n if (letter < 0x61 /* a */ || letter > 0x7a /* z */ || pathname.charCodeAt(2) !== 0x3a /* : */) {\n throw errors.INVALID_FILE_URL_PATH('The file: URL path must be absolute')\n }\n\n return pathname.slice(1)\n }\n\n return pathname\n}\n\nexports.pathToFileURL = function pathToFileURL(pathname) {\n let resolved = path.resolve(pathname)\n\n if (pathname[pathname.length - 1] === '/') {\n resolved += '/'\n } else if (isWindows && pathname[pathname.length - 1] === '\\\\') {\n resolved += '\\\\'\n }\n\n resolved = resolved\n .replaceAll('%', '%25') // Must be first\n .replaceAll('#', '%23')\n .replaceAll('?', '%3f')\n .replaceAll('\\n', '%0a')\n .replaceAll('\\r', '%0d')\n .replaceAll('\\t', '%09')\n\n if (!isWindows) {\n resolved = resolved.replaceAll('\\\\', '%5c')\n }\n\n return new URL('file:' + resolved)\n}\n\nexports.format = function format(parts) {\n const { protocol, auth, host, hostname, port, pathname, search, query, hash, slashes } = parts\n\n let result = ''\n\n if (typeof protocol === 'string') {\n result += protocol\n\n if (protocol[protocol.length - 1] !== ':') {\n result += ':'\n }\n\n if (slashes === true || /https?|ftp|gopher|file/.test(protocol)) {\n result += '//'\n }\n }\n\n if (typeof auth === 'string') {\n if (host || hostname) result += auth + '@'\n }\n\n if (typeof host === 'string') result += host\n else {\n result += hostname\n\n if (port) result += ':' + port\n }\n\n if (typeof pathname === 'string' && pathname !== '') {\n if (pathname[0] !== '/') result += '/'\n result += pathname\n }\n\n if (typeof search === 'string') {\n if (search[0] !== '?') result += '?'\n result += search\n } else if (typeof query === 'object' && query !== null) {\n result += '?' + new URLSearchParams(query)\n }\n\n if (typeof hash === 'string') {\n if (hash[0] !== '#') result += '#'\n result += hash\n }\n\n return result\n}\nmodule.exports = class URLError extends Error {\n constructor(msg, fn = URLError, code = fn.name) {\n super(`${code}: ${msg}`)\n\n this.code = code\n\n if (Error.captureStackTrace) Error.captureStackTrace(this, fn)\n }\n\n get name() {\n return 'URLError'\n }\n\n static INVALID_URL(msg, input) {\n const err = new URLError(msg, URLError.INVALID_URL)\n\n err.input = input\n\n return err\n }\n\n static INVALID_URL_SCHEME(msg = 'Invalid URL') {\n return new URLError(msg, URLError.INVALID_URL_SCHEME)\n }\n\n static INVALID_FILE_URL_HOST(msg = 'Invalid file: URL host') {\n return new URLError(msg, URLError.INVALID_FILE_URL_HOST)\n }\n\n static INVALID_FILE_URL_PATH(msg = 'Invalid file: URL path') {\n return new URLError(msg, URLError.INVALID_FILE_URL_PATH)\n }\n}\nconst kind = Symbol.for('bare.url.search-params.kind')\n\nclass URLSearchParams {\n static _urls = new WeakMap()\n\n static get [kind]() {\n return 0 // Compatibility version\n }\n\n // https://url.spec.whatwg.org/#dom-urlsearchparams-urlsearchparams\n constructor(init, url = null) {\n this._params = new Map()\n\n if (url) URLSearchParams._urls.set(this, url)\n\n if (typeof init === 'string') {\n this._parse(init)\n } else if (init) {\n for (const [name, value] of typeof init[Symbol.iterator] === 'function'\n ? init\n : Object.entries(init)) {\n this.append(name, value)\n }\n }\n }\n\n get [kind]() {\n return URLSearchParams[kind]\n }\n\n // https://url.spec.whatwg.org/#dom-urlsearchparams-size\n get size() {\n return this._params.length\n }\n\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append(name, value = null) {\n if (value === null) return\n\n let list = this._params.get(name)\n\n if (list === undefined) {\n list = []\n this._params.set(name, list)\n }\n\n list.push(value)\n\n this._update()\n }\n\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n delete(name, value = null) {\n if (value === null) this._params.delete(name)\n else {\n let list = this._params.get(name)\n\n if (list === undefined) return\n\n list = list.filter((found) => found !== value)\n\n if (list.length === 0) this._params.delete(name)\n else this._params.set(name, list)\n }\n\n this._update()\n }\n\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get(name) {\n const list = this._params.get(name)\n\n if (list === undefined) return null\n\n return list[0]\n }\n\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll(name) {\n const list = this._params.get(name)\n\n if (list === undefined) return []\n\n return Array.from(list)\n }\n\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has(name, value = null) {\n const list = this._params.get(name)\n\n if (list === undefined) return false\n\n if (value === null) return true\n\n return list.includes(value)\n }\n\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set(name, value = null) {\n if (value === null) this._params.delete(name)\n else this._params.set(name, [value])\n\n this._update()\n }\n\n toString() {\n return this._serialize()\n }\n\n toJSON() {\n return [...this]\n }\n\n *[Symbol.iterator]() {\n for (const [name, values] of this._params) {\n for (const value of values) yield [name, value]\n }\n }\n\n [Symbol.for('bare.inspect')]() {\n const object = {\n __proto__: { constructor: URLSearchParams }\n }\n\n for (const [name, values] of this._params) {\n if (values.length === 1) object[name] = values[0]\n else object[name] = values\n }\n\n return object\n }\n\n // https://url.spec.whatwg.org/#concept-urlsearchparams-update\n _update() {\n const url = URLSearchParams._urls.get(this)\n\n if (url === undefined) return\n\n url.search = this._serialize()\n }\n\n // https://url.spec.whatwg.org/#concept-urlencoded-parser\n _parse(input) {\n if (input[0] === '?') input = input.substring(1)\n\n this._params = new Map()\n\n for (let sequence of input.split('&')) {\n if (sequence.length === 0) continue\n\n sequence = sequence.replace(/\\+/g, ' ')\n\n let i = sequence.indexOf('=')\n if (i === -1) i = sequence.length\n\n const name = decodeURIComponent(sequence.substring(0, i))\n const value = decodeURIComponent(sequence.substring(i + 1, sequence.length))\n\n let list = this._params.get(name)\n\n if (list === undefined) {\n list = []\n this._params.set(name, list)\n }\n\n list.push(value)\n }\n }\n\n // https://url.spec.whatwg.org/#concept-urlencoded-serializer\n _serialize() {\n let output = ''\n\n for (let [name, values] of this._params) {\n name = encodeURIComponent(name)\n\n for (const value of values) {\n if (output) output += '&'\n\n output += name + '=' + encodeURIComponent(value)\n }\n }\n\n return output\n }\n}\n\nmodule.exports = exports = URLSearchParams\n\nexports.isURLSearchParams = function isURLSearchParams(value) {\n if (value instanceof URLSearchParams) return true\n\n return typeof value === 'object' && value !== null && value[kind] === URLSearchParams[kind]\n}\n{\n \"name\": \"bare-url\",\n \"version\": \"2.4.5\",\n \"description\": \"WHATWG URL implementation for JavaScript\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./global\": {\n \"types\": \"./global.d.ts\",\n \"default\": \"./global.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"global.js\",\n \"global.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-url.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-url/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-url\",\n \"dependencies\": {\n \"bare-path\": \"^3.0.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"cmake-bare\": \"^1.1.6\",\n \"cmake-fetch\": \"^1.0.0\",\n \"lunte\": \"^1.6.0\",\n \"prettier\": \"^3.3.3\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nmodule.exports = require.addon()\nconst { Transform, Writable } = require('bare-stream')\nconst binding = require('./binding')\nconst constants = require('./lib/constants')\nconst errors = require('./lib/errors')\n\nexports.constants = constants\nexports.errors = errors\n\nconst MAX_OUTPUT_LENGTH = (Buffer.constants && Buffer.constants.MAX_LENGTH) || 0x100000000\n\nclass ZlibState {\n constructor(mode, opts = {}) {\n const {\n flush = constants.Z_NO_FLUSH,\n finishFlush = constants.Z_FINISH,\n chunkSize = constants.Z_DEFAULT_CHUNK,\n level = constants.Z_DEFAULT_LEVEL,\n windowBits = constants.Z_DEFAULT_WINDOWBITS,\n memLevel = constants.Z_DEFAULT_MEMLEVEL,\n strategy = constants.Z_DEFAULT_STRATEGY,\n maxOutputLength = MAX_OUTPUT_LENGTH\n } = opts\n\n this._mode = mode\n\n this._flushMode = flush\n this._finishFlushMode = finishFlush\n this._allocations = []\n\n this._maxOutputLength = maxOutputLength\n this._outputLength = 0\n\n this._buffer = Buffer.allocUnsafe(chunkSize)\n\n this._handle = binding.init(\n this._mode,\n this._buffer,\n level,\n windowBits,\n memLevel,\n strategy,\n this,\n this._onalloc,\n this._onfree\n )\n }\n\n _onalloc(size) {\n const buffer = Buffer.allocUnsafe(size)\n\n const view = new Uint32Array(buffer.buffer, buffer.byteOffset, buffer.byteLength / 4)\n\n view[0] = this._allocations.push(view) - 1\n\n return buffer\n }\n\n _onfree(id) {\n const last = this._allocations.pop()\n\n if (last[0] !== id) {\n this._allocations[(last[0] = id)] = last\n }\n }\n\n reset() {\n this._outputLength = 0\n\n binding.reset(this._handle)\n }\n\n *transform(data) {\n binding.load(this._handle, data)\n\n let available\n do {\n try {\n available = binding.transform(this._handle, this._flushMode)\n } catch (err) {\n throw errors[err.code](err.message)\n }\n\n const read = this._buffer.length - available\n\n if (read) {\n this._outputLength += read\n\n if (this._outputLength > this._maxOutputLength) {\n throw errors.LIMIT_EXCEEDED(\n `Output length exceeded maxOutputLength of ${this._maxOutputLength} bytes`\n )\n }\n\n const copy = Buffer.allocUnsafe(read)\n copy.set(this._buffer.subarray(0, read))\n\n yield copy\n }\n } while (available === 0)\n }\n\n *flush() {\n let available\n do {\n try {\n available = binding.transform(this._handle, this._finishFlushMode)\n } catch (err) {\n throw errors[err.code](err.message)\n }\n\n const read = this._buffer.length - available\n\n if (read) {\n this._outputLength += read\n\n if (this._outputLength > this._maxOutputLength) {\n throw errors.LIMIT_EXCEEDED(\n `Output length exceeded maxOutputLength of ${this._maxOutputLength} bytes`\n )\n }\n\n const copy = Buffer.allocUnsafe(read)\n copy.set(this._buffer.subarray(0, read))\n\n yield copy\n }\n } while (available === 0)\n\n try {\n binding.end(this._handle)\n } catch (err) {\n throw errors[err.code](err.message)\n }\n\n this._handle = null\n }\n}\n\nclass ZlibStream extends Transform {\n constructor(mode, opts = {}) {\n const { flush, ...streamOpts } = opts\n\n super(streamOpts)\n\n this._state = new ZlibState(mode, opts)\n }\n\n async flush(mode = constants.Z_FULL_FLUSH, cb) {\n if (typeof mode === 'function') {\n cb = mode\n mode = constants.Z_FULL_FLUSH\n }\n\n const previousMode = this._state._flushMode\n\n this._state._flushMode = mode\n\n await Writable.drained(this)\n\n this._state._flushMode = previousMode\n\n if (cb) cb(null) // For Node.js compatibility\n }\n\n reset() {\n if (this._state === null) {\n throw errors.STREAM_CLOSED('Stream has already closed')\n }\n\n this._state.reset()\n }\n\n _transform(data, encoding, cb) {\n let err = null\n\n try {\n for (const chunk of this._state.transform(data)) {\n this.push(chunk)\n }\n } catch (e) {\n err = e\n }\n\n cb(err)\n }\n\n _flush(cb) {\n let err = null\n\n try {\n for (const chunk of this._state.flush()) {\n this.push(chunk)\n }\n } catch (e) {\n err = e\n }\n\n this._state = null\n\n cb(err)\n }\n}\n\nfunction readAsBuffer(stream, buffer, cb) {\n const chunks = []\n\n stream.on('data', ondata).on('end', onend).on('error', onerror).end(buffer)\n\n function ondata(chunk) {\n chunks.push(chunk)\n }\n\n function onend() {\n cb(null, chunks.length === 1 ? chunks[0] : Buffer.concat(chunks))\n }\n\n function onerror(err) {\n stream.off('end', onend)\n cb(err)\n }\n}\n\nfunction transformToBuffer(mode, buffer, opts) {\n if (typeof buffer === 'string') buffer = Buffer.from(buffer)\n\n const state = new ZlibState(mode, opts)\n const chunks = []\n\n for (const chunk of state.transform(buffer)) {\n chunks.push(chunk)\n }\n\n for (const chunk of state.flush()) {\n chunks.push(chunk)\n }\n\n return chunks.length === 1 ? chunks[0] : Buffer.concat(chunks)\n}\n\nexports.Deflate = class ZlibDeflateStream extends ZlibStream {\n constructor(opts) {\n super(binding.DEFLATE, opts)\n }\n}\n\nexports.createDeflate = function createDeflate(opts) {\n return new exports.Deflate(opts)\n}\n\nexports.deflate = function deflate(buffer, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n readAsBuffer(new exports.Deflate(opts), buffer, cb)\n}\n\nexports.deflateSync = function deflateSync(buffer, opts) {\n return transformToBuffer(binding.DEFLATE, buffer, opts)\n}\n\nexports.Inflate = class ZlibInflateStream extends ZlibStream {\n constructor(opts) {\n super(binding.INFLATE, opts)\n }\n}\n\nexports.createInflate = function createInflate(opts) {\n return new exports.Inflate(opts)\n}\n\nexports.inflate = function inflate(buffer, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n readAsBuffer(new exports.Inflate(opts), buffer, cb)\n}\n\nexports.inflateSync = function inflateSync(buffer, opts) {\n return transformToBuffer(binding.INFLATE, buffer, opts)\n}\n\nexports.DeflateRaw = class ZlibDeflateRawStream extends ZlibStream {\n constructor(opts) {\n super(binding.DEFLATE_RAW, opts)\n }\n}\n\nexports.createDeflateRaw = function createDeflateRaw(opts) {\n return new exports.DeflateRaw(opts)\n}\n\nexports.deflateRaw = function deflateRaw(buffer, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n readAsBuffer(new exports.DeflateRaw(opts), buffer, cb)\n}\n\nexports.deflateRawSync = function deflateRawSync(buffer, opts) {\n return transformToBuffer(binding.DEFLATE_RAW, buffer, opts)\n}\n\nexports.InflateRaw = class ZlibInflateRawStream extends ZlibStream {\n constructor(opts) {\n super(binding.INFLATE_RAW, opts)\n }\n}\n\nexports.createInflateRaw = function createInflateRaw(opts) {\n return new exports.InflateRaw(opts)\n}\n\nexports.inflateRaw = function inflateRaw(buffer, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n readAsBuffer(new exports.InflateRaw(opts), buffer, cb)\n}\n\nexports.inflateRawSync = function inflateRawSync(buffer, opts) {\n return transformToBuffer(binding.INFLATE_RAW, buffer, opts)\n}\n\nexports.Gzip = class ZlibGzipStream extends ZlibStream {\n constructor(opts) {\n super(binding.GZIP, opts)\n }\n}\n\nexports.createGzip = function createGzip(opts) {\n return new exports.Gzip(opts)\n}\n\nexports.gzip = function gzip(buffer, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n readAsBuffer(new exports.Gzip(opts), buffer, cb)\n}\n\nexports.gzipSync = function gzipSync(buffer, opts) {\n return transformToBuffer(binding.GZIP, buffer, opts)\n}\n\nexports.Gunzip = class ZlibGunzipStream extends ZlibStream {\n constructor(opts) {\n super(binding.GUNZIP, opts)\n }\n}\n\nexports.createGunzip = function createGunzip(opts) {\n return new exports.Gunzip(opts)\n}\n\nexports.gunzip = function gunzip(buffer, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n readAsBuffer(new exports.Gunzip(opts), buffer, cb)\n}\n\nexports.gunzipSync = function gunzipSync(buffer, opts) {\n return transformToBuffer(binding.GUNZIP, buffer, opts)\n}\nconst binding = require('../binding')\n\nmodule.exports = binding.constants\nmodule.exports = class ZlibError extends Error {\n constructor(msg, code, fn = ZlibError) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'ZlibError'\n }\n\n static STREAM_CLOSED(msg) {\n return new ZlibError(msg, 'STREAM_CLOSED', ZlibError.STREAM_CLOSED)\n }\n\n static STREAM_ERROR(msg) {\n return new ZlibError(msg, 'STREAM_ERROR', ZlibError.STREAM_ERROR)\n }\n\n static DATA_ERROR(msg) {\n return new ZlibError(msg, 'DATA_ERROR', ZlibError.DATA_ERROR)\n }\n\n static MEM_ERROR(msg) {\n return new ZlibError(msg, 'MEM_ERROR', ZlibError.MEM_ERROR)\n }\n\n static BUF_ERROR(msg) {\n return new ZlibError(msg, 'BUF_ERROR', ZlibError.BUF_ERROR)\n }\n\n static VERSION_ERROR(msg) {\n return new ZlibError(msg, 'VERSION_ERROR', ZlibError.VERSION_ERROR)\n }\n\n static UNKNOWN_ERROR(msg) {\n return new ZlibError(msg, 'UNKNOWN_ERROR', ZlibError.UNKNOWN_ERROR)\n }\n\n static LIMIT_EXCEEDED(msg) {\n return new ZlibError(msg, 'LIMIT_EXCEEDED', ZlibError.LIMIT_EXCEEDED)\n }\n}\n{\n \"name\": \"bare-zlib\",\n \"version\": \"1.4.1\",\n \"description\": \"Stream-based zlib bindings for JavaScript\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\",\n \"./constants\": {\n \"types\": \"./lib/constants.d.ts\",\n \"default\": \"./lib/constants.js\"\n },\n \"./errors\": {\n \"types\": \"./lib/errors.d.ts\",\n \"default\": \"./lib/errors.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-bare --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bare-zlib.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-zlib/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-zlib\",\n \"dependencies\": {\n \"bare-stream\": \"^2.0.0\"\n },\n \"devDependencies\": {\n \"bare-fs\": \"^3.0.0\",\n \"brittle\": \"^3.5.0\",\n \"cmake-bare\": \"^1.1.7\",\n \"cmake-fetch\": \"^1.0.0\",\n \"lunte\": \"^1.6.0\",\n \"prettier\": \"^3.5.3\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"peerDependencies\": {\n \"bare-buffer\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"bare-buffer\": {\n \"optional\": true\n }\n }\n}\nconst FACTOR = new Uint16Array(8)\n\nfunction factor4096 (i, n) {\n while (n > 0) {\n const f = i & 4095\n FACTOR[--n] = f\n i = (i - f) / 4096\n }\n return FACTOR\n}\n\nmodule.exports = class BigSparseArray {\n constructor () {\n this.tiny = new TinyArray()\n this.maxLength = 4096\n this.factor = 1\n }\n\n set (index, val) {\n if (val !== undefined) {\n while (index >= this.maxLength) {\n this.maxLength *= 4096\n this.factor++\n if (!this.tiny.isEmptyish()) {\n const t = new TinyArray()\n t.set(0, this.tiny)\n this.tiny = t\n }\n }\n }\n\n const f = factor4096(index, this.factor)\n const last = this.factor - 1\n\n let tiny = this.tiny\n for (let i = 0; i < last; i++) {\n const next = tiny.get(f[i])\n if (next === undefined) {\n if (val === undefined) return\n tiny = tiny.set(f[i], new TinyArray())\n } else {\n tiny = next\n }\n }\n\n return tiny.set(f[last], val)\n }\n\n get (index) {\n if (index >= this.maxLength) return\n\n const f = factor4096(index, this.factor)\n const last = this.factor - 1\n\n let tiny = this.tiny\n for (let i = 0; i < last; i++) {\n tiny = tiny.get(f[i])\n if (tiny === undefined) return\n }\n\n return tiny.get(f[last])\n }\n}\n\nclass TinyArray {\n constructor () {\n this.s = 0\n this.b = new Array(1)\n this.f = new Uint16Array(1)\n }\n\n isEmptyish () {\n return this.b.length === 1 && this.b[0] === undefined\n }\n\n get (i) {\n if (this.s === 12) return this.b[i]\n const f = i >>> this.s\n const r = i & (this.b.length - 1)\n return this.f[r] === f ? this.b[r] : undefined\n }\n\n set (i, v) {\n while (this.s !== 12) {\n const f = i >>> this.s\n const r = i & (this.b.length - 1)\n const o = this.b[r]\n\n if (o === undefined || f === this.f[r]) {\n this.b[r] = v\n this.f[r] = f\n return v\n }\n\n this.grow()\n }\n\n this.b[i] = v\n return v\n }\n\n grow () {\n const os = this.s\n const ob = this.b\n const of = this.f\n\n this.s += 4\n this.b = new Array(this.b.length << 4)\n this.f = this.s === 12 ? null : new Uint8Array(this.b.length)\n\n const m = this.b.length - 1\n\n for (let or = 0; or < ob.length; or++) {\n if (ob[or] === undefined) continue\n\n const i = of[or] << os | or\n const f = i >>> this.s\n const r = i & m\n\n this.b[r] = ob[or]\n if (this.s !== 12) this.f[r] = f\n }\n }\n}\n{\n \"name\": \"big-sparse-array\",\n \"version\": \"1.0.3\",\n \"description\": \"A sparse array optimised for low memory whilst still being fast\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"brittle\": \"^3.1.1\",\n \"standard\": \"^16.0.3\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/big-sparse-array.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/big-sparse-array/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/big-sparse-array\"\n}\nconst b4a = require('b4a')\n\nmodule.exports = function (a, b) {\n return new Promise((resolve, reject) => binaryEquals(a, b, resolve, reject))\n}\n\nfunction binaryEquals (a, b, resolve, reject) {\n let aBuf = null\n let aEnded = false\n\n let bBuf = null\n let bEnded = false\n\n let closed = 0\n let done = false\n let error = null\n let equals = false\n\n a.on('readable', tick)\n a.on('end', onend)\n a.on('error', onerror)\n a.on('close', onclose)\n\n b.on('readable', tick)\n b.on('end', onend)\n b.on('error', onerror)\n b.on('close', onclose)\n\n function onerror (err) {\n error = err\n a.destroy()\n b.destroy()\n }\n\n function onclose () {\n if (++closed !== 2) return\n if (error !== null && done === false) reject(error)\n else resolve(equals)\n }\n\n function ondone (eq) {\n if (done) return\n done = true\n\n equals = eq\n\n a.destroy()\n b.destroy()\n }\n\n function onend () {\n if (this === a) aEnded = true\n else bEnded = true\n tick()\n }\n\n function tick () {\n while (done === false) {\n if (aBuf === null) aBuf = a.read()\n if (bBuf === null) bBuf = b.read()\n\n if (aBuf === null && bBuf === null && aEnded && bEnded) {\n ondone(true)\n return\n }\n\n if (aBuf !== null && (bBuf === null && bEnded)) {\n ondone(false)\n return\n }\n\n if (bBuf !== null && (aBuf === null && aEnded)) {\n ondone(false)\n return\n }\n\n if (aBuf === null || bBuf === null) return // read pending\n\n if (aBuf.byteLength === bBuf.byteLength) {\n if (b4a.equals(aBuf, bBuf)) {\n aBuf = bBuf = null\n continue\n }\n\n ondone(false)\n return\n }\n\n const min = Math.min(aBuf.byteLength, bBuf.byteLength)\n\n if (b4a.equals(aBuf.subarray(0, min), bBuf.subarray(0, min))) {\n aBuf = aBuf.byteLength === min ? null : aBuf.subarray(min)\n bBuf = bBuf.byteLength === min ? null : bBuf.subarray(min)\n continue\n }\n\n ondone(false)\n return\n }\n }\n}\n{\n \"name\": \"binary-stream-equals\",\n \"version\": \"1.0.0\",\n \"description\": \"Check if two binary streams have the same content\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"b4a\": \"^1.3.1\"\n },\n \"devDependencies\": {\n \"brittle\": \"^2.2.7\",\n \"standard\": \"^16.0.4\",\n \"streamx\": \"^2.12.4\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/binary-stream-equals.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/binary-stream-equals/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/binary-stream-equals\"\n}\nconst b4a = require('b4a')\n\nfunction byteLength (size) {\n return Math.ceil(size / 8)\n}\n\nfunction get (buffer, bit) {\n const n = buffer.BYTES_PER_ELEMENT * 8\n\n const offset = bit & (n - 1)\n const i = (bit - offset) / n\n\n return (buffer[i] & (1 << offset)) !== 0\n}\n\nfunction set (buffer, bit, value = true) {\n const n = buffer.BYTES_PER_ELEMENT * 8\n\n const offset = bit & (n - 1)\n const i = (bit - offset) / n\n const mask = 1 << offset\n\n if (value) {\n if ((buffer[i] & mask) !== 0) return false\n } else {\n if ((buffer[i] & mask) === 0) return false\n }\n\n buffer[i] ^= mask\n return true\n}\n\nfunction setRange (buffer, start, end, value = true) {\n const n = buffer.BYTES_PER_ELEMENT * 8\n\n let remaining = end - start\n let offset = start & (n - 1)\n let i = (start - offset) / n\n\n let changed = false\n\n while (remaining > 0) {\n const mask = (2 ** Math.min(remaining, n - offset) - 1) << offset\n\n if (value) {\n if ((buffer[i] & mask) !== mask) {\n buffer[i] |= mask\n changed = true\n }\n } else {\n if ((buffer[i] & mask) !== 0) {\n buffer[i] &= ~mask\n changed = true\n }\n }\n\n remaining -= n - offset\n offset = 0\n i++\n }\n\n return changed\n}\n\nfunction fill (buffer, value, start = 0, end = buffer.byteLength * 8) {\n const n = buffer.BYTES_PER_ELEMENT * 8\n let i, j\n\n {\n const offset = start & (n - 1)\n i = (start - offset) / n\n\n if (offset !== 0) {\n const mask = (2 ** Math.min(n - offset, end - start) - 1) << offset\n\n if (value) buffer[i] |= mask\n else buffer[i] &= ~mask\n\n i++\n }\n }\n\n {\n const offset = end & (n - 1)\n j = (end - offset) / n\n\n if (offset !== 0 && j >= i) {\n const mask = (2 ** offset) - 1\n\n if (value) buffer[j] |= mask\n else buffer[j] &= ~mask\n }\n }\n\n return buffer.fill(value ? (2 ** n) - 1 : 0, i, j)\n}\n\nfunction toggle (buffer, bit) {\n const n = buffer.BYTES_PER_ELEMENT * 8\n\n const offset = bit & (n - 1)\n const i = (bit - offset) / n\n const mask = 1 << offset\n\n buffer[i] ^= mask\n return (buffer[i] & mask) !== 0\n}\n\nfunction remove (buffer, bit) {\n return set(buffer, bit, false)\n}\n\nfunction removeRange (buffer, start, end) {\n return setRange(buffer, start, end, false)\n}\n\nfunction indexOf (buffer, value, position = 0) {\n for (let i = position, n = buffer.byteLength * 8; i < n; i++) {\n if (get(buffer, i) === value) return i\n }\n\n return -1\n}\n\nfunction lastIndexOf (buffer, value, position = buffer.byteLength * 8 - 1) {\n for (let i = position; i >= 0; i--) {\n if (get(buffer, i) === value) return i\n }\n\n return -1\n}\n\nfunction of (...bits) {\n return from(bits)\n}\n\nfunction from (bits) {\n const buffer = b4a.alloc(byteLength(bits.length))\n for (let i = 0; i < bits.length; i++) set(buffer, i, bits[i])\n return buffer\n}\n\nfunction * iterator (buffer) {\n for (let i = 0, n = buffer.byteLength * 8; i < n; i++) yield get(buffer, i)\n}\n\nmodule.exports = {\n byteLength,\n get,\n set,\n setRange,\n fill,\n toggle,\n remove,\n removeRange,\n indexOf,\n lastIndexOf,\n of,\n from,\n iterator\n}\n{\n \"name\": \"bits-to-bytes\",\n \"version\": \"1.3.0\",\n \"description\": \"Functions for doing bit manipulation of typed arrays\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"scripts\": {\n \"test\": \"standard && brittle test.mjs\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/bits-to-bytes.git\"\n },\n \"author\": \"Kasper Isager Dalsgarð \",\n \"license\": \"ISC\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bits-to-bytes/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bits-to-bytes#readme\",\n \"dependencies\": {\n \"b4a\": \"^1.5.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^2.3.1\",\n \"standard\": \"^17.0.0\"\n }\n}\nconst EventEmitter = require('events')\nconst Protomux = require('protomux')\nconst { Readable } = require('streamx')\nconst sodium = require('sodium-universal')\nconst b4a = require('b4a')\nconst c = require('compact-encoding')\nconst bitfield = require('compact-encoding-bitfield')\nconst bits = require('bits-to-bytes')\nconst errors = require('./lib/errors')\n\nexports.Server = class BlindRelayServer extends EventEmitter {\n constructor(opts = {}) {\n super()\n\n const { createStream } = opts\n\n this._createStream = createStream\n this._pairing = new Map()\n this._activePairingRefs = new Map()\n this._sessions = new Set()\n this.stats = createStats()\n }\n\n get sessions() {\n return this._sessions[Symbol.iterator]()\n }\n\n accept(stream, opts) {\n const session = new BlindRelaySession(this, stream, opts)\n\n this._sessions.add(session)\n this.stats.sessions.accepted++\n\n return session\n }\n\n async close() {\n const ending = []\n\n for (const session of this._sessions) {\n ending.push(session.end())\n }\n\n await Promise.all(ending)\n\n this._pairing.clear()\n }\n\n _trackActiveLink(keyString) {\n const refs = this._activePairingRefs.get(keyString) || 0\n\n if (refs === 0) this.stats.pairings.active++\n\n this._activePairingRefs.set(keyString, refs + 1)\n }\n\n _untrackActiveLink(keyString) {\n const refs = this._activePairingRefs.get(keyString)\n\n if (refs === undefined) return\n\n if (refs === 1) {\n this._activePairingRefs.delete(keyString)\n this.stats.pairings.active--\n } else {\n this._activePairingRefs.set(keyString, refs - 1)\n }\n }\n}\n\nclass BlindRelaySession extends EventEmitter {\n constructor(server, stream, opts = {}) {\n super()\n\n const { id, handshake, handshakeEncoding } = opts\n\n this._server = server\n this._mux = Protomux.from(stream)\n\n this._channel = this._mux.createChannel({\n protocol: 'blind-relay',\n id,\n handshake: handshake ? handshakeEncoding || c.raw : null,\n onopen: this._onopen.bind(this),\n onclose: this._onclose.bind(this),\n ondestroy: this._ondestroy.bind(this)\n })\n\n this._pair = this._channel.addMessage({\n encoding: m.pair,\n onmessage: this._onpair.bind(this)\n })\n\n this._unpair = this._channel.addMessage({\n encoding: m.unpair,\n onmessage: this._onunpair.bind(this)\n })\n\n this._ending = null\n this._destroyed = false\n this._error = null\n this._pairing = new Set()\n this._links = new Map()\n\n this._onerror = (err) => {\n this._server.stats.streams.errors++\n this.emit('error', err)\n }\n\n this._channel.open(handshake)\n }\n\n get closed() {\n return this._channel.closed\n }\n\n get mux() {\n return this._mux\n }\n\n get stream() {\n return this._mux.stream\n }\n\n _onopen() {\n this._server.stats.sessions.opened++\n this.emit('open')\n }\n\n _onclose() {\n this._ending = Promise.resolve()\n\n const err = this._error || errors.CHANNEL_CLOSED()\n this._server.stats.pairings.cancelled += this._pairing.size\n\n for (const token of this._pairing) {\n if (this._server._pairing.delete(token.toString('hex'))) {\n this._server.stats.pairings.pending--\n }\n }\n\n for (const link of this._links.values()) {\n link.destroy(err)\n }\n\n this._pairing.clear()\n this._links.clear()\n\n this._server._sessions.delete(this)\n this._server.stats.sessions.closed++\n\n this.emit('close')\n }\n\n _ondestroy() {\n this._destroyed = true\n this.emit('destroy')\n }\n\n _onpair({ isInitiator, token, id: remoteId }) {\n const keyString = token.toString('hex')\n\n let pair = this._server._pairing.get(keyString)\n\n if (pair === undefined) {\n pair = new BlindRelayPair(token)\n this._server._pairing.set(keyString, pair)\n this._server.stats.pairings.pending++\n } else if (pair.links[+isInitiator]) return\n\n this._pairing.add(keyString)\n this._server.stats.pairings.requested++\n\n pair.links[+isInitiator] = new BlindRelayLink(this, isInitiator, remoteId)\n\n if (!pair.paired) return\n\n this._server._pairing.delete(keyString)\n this._server.stats.pairings.pending--\n this._server.stats.pairings.matched++\n\n // 1st pass: Create the raw streams needed for each end of the link.\n for (const link of pair.links) {\n link.createStream()\n }\n\n // 2nd pass: Connect the raw streams and set up handlers.\n for (const link of pair.links) {\n link.remote = pair.remote(link.isInitiator)\n link.activate(keyString)\n }\n\n // 3rd pass: Let either end of the link know the streams were set up.\n for (const { isInitiator, session, remoteId, stream } of pair.links) {\n session._pair.send({\n isInitiator,\n token,\n id: stream.id,\n seq: 0\n })\n\n session._endMaybe()\n\n session.emit('pair', isInitiator, token, stream, remoteId)\n }\n }\n\n _onunpair({ token }) {\n const keyString = token.toString('hex')\n\n const pair = this._server._pairing.get(keyString)\n\n if (pair) {\n for (const link of pair.links) {\n if (link) link.session._pairing.delete(keyString)\n }\n\n this._server._pairing.delete(keyString)\n this._server.stats.pairings.pending--\n this._server.stats.pairings.cancelled++\n return\n }\n\n const link = this._links.get(keyString)\n\n if (link) {\n link.destroyPair(errors.PAIRING_CANCELLED())\n this._server.stats.pairings.cancelled++\n }\n }\n\n cork() {\n this._channel.cork()\n }\n\n uncork() {\n this._channel.uncork()\n }\n\n async end() {\n if (this._ending) return this._ending\n\n this._ending = EventEmitter.once(this, 'close')\n this._endMaybe()\n\n return this._ending\n }\n\n _endMaybe() {\n if (this._ending && this._pairing.size === 0) {\n this._channel.close()\n }\n }\n\n destroy(err) {\n if (this._destroyed) return\n this._destroyed = true\n\n this._error = err || errors.CHANNEL_DESTROYED()\n this._channel.close()\n }\n}\n\nclass BlindRelayPair {\n constructor(token) {\n this.token = token\n this.links = [null, null]\n }\n\n get paired() {\n return this.links[0] !== null && this.links[1] !== null\n }\n\n remote(isInitiator) {\n return this.links[isInitiator ? 0 : 1]\n }\n}\n\nclass BlindRelayLink {\n constructor(session, isInitiator, remoteId) {\n this.session = session\n this.isInitiator = isInitiator\n this.remoteId = remoteId\n this.stream = null\n this.remote = null\n this.keyString = null\n this._onclose = null\n }\n\n createStream() {\n if (this.stream) return\n\n this.stream = this.session._server._createStream({\n firewall: this._onfirewall.bind(this)\n })\n }\n\n activate(keyString) {\n const stream = this.stream\n\n this.keyString = keyString\n this._onclose = () => {\n if (this.stream !== stream) return\n\n this.stream = null\n unlink(this)\n this.session._links.delete(keyString)\n this.session._server._untrackActiveLink(keyString)\n this.session._server.stats.streams.closed++\n }\n\n stream.on('error', this.session._onerror).on('close', this._onclose).relayTo(this.remote.stream)\n\n this.session._pairing.delete(keyString)\n this.session._links.set(keyString, this)\n this.session._server._trackActiveLink(keyString)\n this.session._server.stats.streams.opened++\n }\n\n destroy(err) {\n const stream = this.stream\n\n if (!stream) return\n\n this.stream = null\n\n stream.off('close', this._onclose)\n this._onclose = null\n\n stream.off('error', this.session._onerror)\n unlink(this)\n this.session._links.delete(this.keyString)\n this.session._server._untrackActiveLink(this.keyString)\n this.session._server.stats.streams.closed++\n stream.on('error', noop).destroy(err)\n }\n\n destroyPair(err) {\n const remote = this.remote\n\n this.destroy(err)\n if (remote) remote.destroy(err)\n }\n\n _onfirewall(socket, port, host) {\n this.stream.connect(socket, this.remoteId, port, host)\n\n return false\n }\n}\n\nexports.Client = class BlindRelayClient extends EventEmitter {\n static _clients = new WeakMap()\n\n static from(stream, opts) {\n let client = this._clients.get(stream)\n if (client) return client\n client = new this(stream, opts)\n this._clients.set(stream, client)\n return client\n }\n\n constructor(stream, opts = {}) {\n super()\n\n const { id, handshake, handshakeEncoding } = opts\n\n this._mux = Protomux.from(stream)\n\n this._channel = this._mux.createChannel({\n protocol: 'blind-relay',\n id,\n handshake: handshake ? handshakeEncoding || c.raw : null,\n onopen: this._onopen.bind(this),\n onclose: this._onclose.bind(this),\n ondestroy: this._ondestroy.bind(this)\n })\n\n this._pair = this._channel.addMessage({\n encoding: m.pair,\n onmessage: this._onpair.bind(this)\n })\n\n this._unpair = this._channel.addMessage({\n encoding: m.unpair\n })\n\n this._ending = false\n this._destroyed = false\n this._error = null\n this._requests = new Map()\n\n this._channel.open(handshake)\n }\n\n get closed() {\n return this._channel.closed\n }\n\n get mux() {\n return this._mux\n }\n\n get stream() {\n return this._mux.stream\n }\n\n get requests() {\n return this._requests.values()\n }\n\n _onopen() {\n this.emit('open')\n }\n\n _onclose() {\n this._ending = Promise.resolve()\n\n const err = this._error || errors.CHANNEL_CLOSED()\n\n for (const request of this._requests.values()) {\n request.destroy(err)\n }\n\n this._requests.clear()\n\n this.constructor._clients.delete(this.stream)\n\n this.emit('close')\n }\n\n _ondestroy() {\n this._destroyed = true\n this.emit('destroy')\n }\n\n _onpair({ isInitiator, token, id: remoteId }) {\n const request = this._requests.get(token.toString('hex'))\n\n if (request === undefined || request.isInitiator !== isInitiator) return\n\n request.push(remoteId)\n request.push(null)\n\n this.emit('pair', request.isInitiator, request.token, request.stream, remoteId)\n }\n\n pair(isInitiator, token, stream) {\n if (this._destroyed) throw errors.CHANNEL_DESTROYED()\n\n const keyString = token.toString('hex')\n\n if (this._requests.has(keyString)) throw errors.ALREADY_PAIRING()\n\n const request = new BlindRelayRequest(this, isInitiator, token, stream)\n\n this._requests.set(keyString, request)\n\n return request\n }\n\n unpair(token) {\n if (this._destroyed) throw errors.CHANNEL_DESTROYED()\n\n const request = this._requests.get(token.toString('hex'))\n\n if (request) request.destroy(errors.PAIRING_CANCELLED())\n\n this._unpair.send({ token })\n }\n\n cork() {\n this._channel.cork()\n }\n\n uncork() {\n this._channel.uncork()\n }\n\n async end() {\n if (this._ending) return this._ending\n\n this._ending = EventEmitter.once(this, 'close')\n this._endMaybe()\n\n return this._ending\n }\n\n _endMaybe() {\n if (this._ending && this._requests.size === 0) {\n this._channel.close()\n }\n }\n\n destroy(err) {\n if (this._destroyed) return\n this._destroyed = true\n\n this._error = err || errors.CHANNEL_DESTROYED()\n this._channel.close()\n }\n}\n\nclass BlindRelayRequest extends Readable {\n constructor(client, isInitiator, token, stream) {\n super()\n\n this.client = client\n this.isInitiator = isInitiator\n this.token = token\n this.stream = stream\n }\n\n _open(cb) {\n if (this.client._destroyed) return cb(errors.CHANNEL_DESTROYED())\n\n this.client._pair.send({\n isInitiator: this.isInitiator,\n token: this.token,\n id: this.stream.id,\n seq: 0\n })\n\n cb(null)\n }\n\n _destroy(cb) {\n this.client._requests.delete(this.token.toString('hex'))\n\n cb(null)\n\n this.client._endMaybe()\n }\n}\n\nexports.token = function token(buf = b4a.allocUnsafe(32)) {\n sodium.randombytes_buf(buf)\n return buf\n}\n\nfunction noop() {}\n\nfunction unlink(link) {\n const remote = link.remote\n\n link.remote = null\n\n if (remote && remote.remote === link) {\n remote.remote = null\n }\n}\n\nfunction createStats() {\n const stats = {\n sessions: {\n accepted: 0,\n opened: 0,\n closed: 0,\n get active() {\n return this.accepted - this.closed\n }\n },\n pairings: {\n requested: 0,\n matched: 0,\n cancelled: 0,\n pending: 0,\n active: 0\n },\n streams: {\n opened: 0,\n closed: 0,\n errors: 0,\n get active() {\n return this.opened - this.closed\n }\n }\n }\n\n return stats\n}\n\nconst m = (exports.messages = {})\n\nconst flags = bitfield(7)\n\nm.pair = {\n preencode(state, m) {\n flags.preencode(state)\n c.fixed32.preencode(state, m.token)\n c.uint.preencode(state, m.id)\n c.uint.preencode(state, m.seq)\n },\n encode(state, m) {\n flags.encode(state, bits.of(m.isInitiator))\n c.fixed32.encode(state, m.token)\n c.uint.encode(state, m.id)\n c.uint.encode(state, m.seq)\n },\n decode(state) {\n const [isInitiator] = bits.iterator(flags.decode(state))\n\n return {\n isInitiator,\n token: c.fixed32.decode(state),\n id: c.uint.decode(state),\n seq: c.uint.decode(state)\n }\n }\n}\n\nm.unpair = {\n preencode(state, m) {\n flags.preencode(state)\n c.fixed32.preencode(state, m.token)\n },\n encode(state, m) {\n flags.encode(state, bits.of())\n c.fixed32.encode(state, m.token)\n },\n decode(state) {\n flags.decode(state)\n\n return {\n token: c.fixed32.decode(state)\n }\n }\n}\nmodule.exports = class BlindRelayError extends Error {\n constructor(msg, code, fn = BlindRelayError) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'BlindRelayError'\n }\n\n static DUPLICATE_CHANNEL(msg = 'Duplicate channel') {\n return new BlindRelayError(msg, 'DUPLICATE_CHANNEL', BlindRelayError.DUPLICATE_CHANNEL)\n }\n\n static CHANNEL_CLOSED(msg = 'Channel closed') {\n return new BlindRelayError(msg, 'CHANNEL_CLOSED', BlindRelayError.CHANNEL_CLOSED)\n }\n\n static CHANNEL_DESTROYED(msg = 'Channel destroyed') {\n return new BlindRelayError(msg, 'CHANNEL_DESTROYED', BlindRelayError.CHANNEL_DESTROYED)\n }\n\n static ALREADY_PAIRING(msg = 'Already pairing') {\n return new BlindRelayError(msg, 'ALREADY_PAIRING', BlindRelayError.ALREADY_PAIRING)\n }\n\n static PAIRING_CANCELLED(msg = 'Pairing cancelled') {\n return new BlindRelayError(msg, 'PAIRING_CANCELLED', BlindRelayError.PAIRING_CANCELLED)\n }\n}\n{\n \"name\": \"blind-relay\",\n \"version\": \"1.6.1\",\n \"description\": \"Blind relay for UDX over Protomux channels\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:bare\",\n \"test:bare\": \"brittle-bare --coverage test.mjs\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/blind-relay.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/blind-relay/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/blind-relay#readme\",\n \"imports\": {\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n }\n },\n \"dependencies\": {\n \"b4a\": \"^1.6.4\",\n \"bare-events\": \"^2.2.0\",\n \"bits-to-bytes\": \"^1.3.0\",\n \"compact-encoding\": \"^3.0.0\",\n \"compact-encoding-bitfield\": \"^1.0.0\",\n \"protomux\": \"^3.5.1\",\n \"sodium-universal\": \"^5.0.0\",\n \"streamx\": \"^2.15.1\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.2.1\",\n \"hyperdht\": \"^6.6.1\",\n \"lunte\": \"^1.0.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"udx-native\": \"^1.6.1\"\n }\n}\n// https://ipinfo.io/bogon\n\nconst b4a = require('b4a')\nconst c = require('compact-encoding')\n\nmodule.exports = exports = function isBogon (ip) {\n return isBogonIP(ensureBuffer(ip))\n}\n\nexports.isBogon = exports\n\nexports.isPrivate = function isPrivate (ip) {\n return isPrivateIP(ensureBuffer(ip))\n}\n\nexports.isReserved = function isReserved (ip) {\n return isReservedIP(ensureBuffer(ip))\n}\n\nfunction isBogonIP (ip) {\n return isPrivateIP(ip) || isReservedIP(ip)\n}\n\nfunction isPrivateIP (ip) {\n return ip.byteLength === 4 ? isPrivateIPv4(ip) : false // IPv6 has no private IPs\n}\n\nfunction isPrivateIPv4 (ip) {\n return (\n // 10.0.0.0/8 Private-use networks\n (ip[0] === 10) ||\n // 100.64.0.0/10 Carrier-grade NAT\n (ip[0] === 100 && ip[1] >= 64 && ip[1] <= 127) ||\n // 127.0.0.0/8 Loopback + Name collision occurrence (127.0.53.53)\n (ip[0] === 127) ||\n // 169.254.0.0/16 Link local\n (ip[0] === 169 && ip[1] === 254) ||\n // 172.16.0.0/12 Private-use networks\n (ip[0] === 172 && ip[1] >= 16 && ip[1] <= 31) ||\n // 192.168.0.0/16 Private-use networks\n (ip[0] === 192 && ip[1] === 168)\n )\n}\n\nfunction isReservedIP (ip) {\n return ip.byteLength === 4 ? isReservedIPv4(ip) : isReservedIPv6(ip)\n}\n\nfunction isReservedIPv4 (ip) {\n return (\n // 0.0.0.0/8 \"This\" network\n (ip[0] === 0) ||\n // 192.0.0.0/24 IETF protocol assignments\n (ip[0] === 192 && ip[1] === 0 && ip[2] === 0) ||\n // 192.0.2.0/24 TEST-NET-1\n (ip[0] === 192 && ip[1] === 0 && ip[2] === 2) ||\n // 198.18.0.0/15 Network interconnect device benchmark testing\n (ip[0] === 198 && ip[1] >= 18 && ip[1] <= 19) ||\n // 198.51.100.0/24 TEST-NET-2\n (ip[0] === 198 && ip[1] === 51 && ip[2] === 100) ||\n // 203.0.113.0/24 TEST-NET-3\n (ip[0] === 203 && ip[1] === 0 && ip[2] === 113) ||\n // 224.0.0.0/4 Multicast\n (ip[0] >= 224 && ip[0] <= 239) ||\n // 240.0.0.0/4 Reserved for future use\n (ip[0] >= 240) ||\n // 255.255.255.255/32\n (ip[0] === 255 && ip[1] === 255 && ip[2] === 255 && ip[3] === 255)\n )\n}\n\nfunction isReservedIPv6 (ip) {\n return (\n // ::/128 Node-scope unicast unspecified address\n // ::1/128 Node-scope unicast loopback address\n (\n ip[0] === 0 && ip[1] === 0 && ip[2] === 0 && ip[3] === 0 && ip[4] === 0 &&\n ip[5] === 0 && ip[6] === 0 && ip[7] === 0 && ip[8] === 0 && ip[9] === 0 &&\n ip[10] === 0 && ip[11] === 0 && ip[12] === 0 && ip[13] === 0 && ip[14] === 0 &&\n ip[15] <= 1\n ) ||\n // ::ffff:0:0/96 IPv4-mapped addresses\n // ::/96 IPv4-compatible addresses\n (\n ip[0] === 0 && ip[1] === 0 && ip[2] === 0 && ip[3] === 0 && ip[4] === 0 &&\n ip[5] === 0 && ip[6] === 0 && ip[7] === 0 && ip[8] === 0 && ip[9] === 0 &&\n (ip[10] === 0 || ip[10] === 0xff) &&\n (ip[11] === 0 || ip[11] === 0xff)\n ) ||\n // 100::/64 Remotely triggered black hole addresses\n (ip[0] === 0x01 && ip[1] === 0 && ip[2] === 0 && ip[3] === 0 && ip[4] === 0 && ip[5] === 0 && ip[6] === 0 && ip[7] === 0) ||\n // 2001:10::/28 Overlay routable cryptographic hash identifiers (ORCHID)\n (ip[0] === 0x20 && ip[1] === 0x01 && ip[2] === 0 && ip[3] >= 0x10 && ip[3] <= 0x1f) ||\n // 2001:20::/28 Overlay routable cryptographic hash identifiers version 2 (ORCHIDv2)\n (ip[0] === 0x20 && ip[1] === 0x01 && ip[2] === 0 && ip[3] >= 0x20 && ip[3] <= 0x2f) ||\n // 2001:db8::/32 Documentation prefix\n (ip[0] === 0x20 && ip[1] === 0x01 && ip[2] === 0x0d && ip[3] === 0xb8) ||\n // fc00::/7 Unique local addresses (ULA)\n (ip[0] >= 0xfc && ip[0] <= 0xfd) ||\n // fe80::/10 Link-local unicast\n (ip[0] === 0xfe && ip[1] >= 0x80 && ip[1] <= 0xbf) ||\n // ff00::/8 Multicast\n (ip[0] === 0xff)\n )\n}\n\nconst state = c.state(0, 0, b4a.allocUnsafe(1 /* family */ + 16))\n\nfunction ensureBuffer (ip) {\n if (b4a.isBuffer(ip)) return ip\n\n c.ip.preencode(state, ip)\n c.ip.encode(state, ip)\n\n const buffer = state.buffer.subarray(1 /* family */, state.end)\n\n state.start = 0\n state.end = 0\n\n return buffer\n}\n{\n \"name\": \"bogon\",\n \"version\": \"1.3.0\",\n \"description\": \"Check if an IP is a bogon\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"standard && brittle test.mjs\"\n },\n \"dependencies\": {\n \"compact-encoding\": \"^3.0.0\",\n \"compact-encoding-net\": \"^1.2.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.0.4\",\n \"nanobench\": \"^2.1.1\",\n \"standard\": \"^17.0.0\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/bogon.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/bogon/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/bogon\"\n}\nconst b4a = require('b4a')\n\nmodule.exports = codecs\n\ncodecs.ascii = createString('ascii')\ncodecs.utf8 = createString('utf-8')\ncodecs.hex = createString('hex')\ncodecs.base64 = createString('base64')\ncodecs.ucs2 = createString('ucs2')\ncodecs.utf16le = createString('utf16le')\ncodecs.ndjson = createJSON(true)\ncodecs.json = createJSON(false)\ncodecs.binary = {\n name: 'binary',\n encode: function encodeBinary (obj) {\n return typeof obj === 'string'\n ? b4a.from(obj, 'utf-8')\n : b4a.toBuffer(obj)\n },\n decode: function decodeBinary (buf) {\n return b4a.toBuffer(buf)\n }\n}\n\nfunction isCompactEncoding (c) {\n return !!(c.encode && c.decode && c.preencode)\n}\n\nfunction fromCompactEncoding (c) {\n return {\n name: 'compact-encoding',\n encode: function encodeWithCompact (value) {\n const state = { start: 0, end: 0, buffer: null, cache: null }\n c.preencode(state, value)\n state.buffer = b4a.allocUnsafe(state.end)\n c.encode(state, value)\n return state.buffer\n },\n decode: function decodeWithCompact (buffer) {\n return c.decode({ start: 0, end: buffer.byteLength, buffer, cache: null })\n }\n }\n}\n\nfunction codecs (fmt, fallback) {\n if (typeof fmt === 'object' && fmt) {\n return isCompactEncoding(fmt) ? fromCompactEncoding(fmt) : fmt\n }\n\n switch (fmt) {\n case 'ndjson': return codecs.ndjson\n case 'json': return codecs.json\n case 'ascii': return codecs.ascii\n case 'utf-8':\n case 'utf8': return codecs.utf8\n case 'hex': return codecs.hex\n case 'base64': return codecs.base64\n case 'ucs-2':\n case 'ucs2': return codecs.ucs2\n case 'utf16-le':\n case 'utf16le': return codecs.utf16le\n }\n\n return fallback !== undefined ? fallback : codecs.binary\n}\n\nfunction createJSON (newline) {\n return {\n name: newline ? 'ndjson' : 'json',\n encode: newline ? encodeNDJSON : encodeJSON,\n decode: function decodeJSON (buf) {\n return JSON.parse(b4a.toString(buf))\n }\n }\n\n function encodeJSON (val) {\n return b4a.from(JSON.stringify(val))\n }\n\n function encodeNDJSON (val) {\n return b4a.from(JSON.stringify(val) + '\\n')\n }\n}\n\nfunction createString (type) {\n return {\n name: type,\n encode: function encodeString (val) {\n if (typeof val !== 'string') val = val.toString()\n return b4a.from(val, type)\n },\n decode: function decodeString (buf) {\n return b4a.toString(buf, type)\n }\n }\n}\n{\n \"name\": \"codecs\",\n \"version\": \"3.1.0\",\n \"description\": \"Create an binary encoder/decoder for json, utf-8 or custom types\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"b4a\": \"^1.6.3\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.2.1\",\n \"compact-encoding\": \"^2.11.0\",\n \"standard\": \"^17.0.0\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/codecs.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/codecs/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/codecs\"\n}\nconst c = require('compact-encoding')\n\nmodule.exports = function bitfield(length) {\n if (length > 64) {\n throw new RangeError('Bitfield cannot be larger than 64 bits')\n }\n\n let byteLength\n if (length < 8) byteLength = 1\n else if (length <= 16) byteLength = 2\n else if (length <= 32) byteLength = 4\n else byteLength = 8\n\n return {\n preencode(state) {\n state.end++ // Length byte, used for data when byteLength === 1\n\n if (byteLength === 1);\n else if (byteLength === 2) c.uint16.preencode(state)\n else if (byteLength === 4) c.uint32.preencode(state)\n else c.uint64.preencode(state)\n },\n\n encode(state, b) {\n if (byteLength === 1);\n else if (byteLength === 2) c.uint8.encode(state, 0xfd)\n else if (byteLength === 4) c.uint8.encode(state, 0xfe)\n else c.uint8.encode(state, 0xff)\n\n if (typeof b === 'number') {\n if (byteLength === 1) c.uint8.encode(state, b)\n else if (byteLength === 2) c.uint16.encode(state, b)\n else if (byteLength === 4) c.uint32.encode(state, b)\n else c.uint64.encode(state, b)\n } else {\n state.buffer.set(b, state.start)\n\n if (b.byteLength < byteLength) {\n // Zero-fill the rest of the byte length.\n state.buffer.fill(\n 0,\n state.start + b.byteLength,\n state.start + byteLength\n )\n }\n\n state.start += byteLength\n }\n },\n\n decode(state) {\n const byte = state.buffer[state.start]\n\n let byteLength\n if (byte <= 0xfc) byteLength = 1\n else if (byte === 0xfd) byteLength = 2\n else if (byte === 0xfe) byteLength = 4\n else byteLength = 8\n\n if (byteLength > 1) state.start++ // Skip the length byte\n\n if (state.end - state.start < byteLength) throw new Error('Out of bounds')\n\n const b = state.buffer.subarray(state.start, (state.start += byteLength))\n\n return length <= 8 ? b.subarray(0, 1) : b\n }\n }\n}\n{\n \"name\": \"compact-encoding-bitfield\",\n \"version\": \"1.1.0\",\n \"description\": \"Compact codec for bitfields\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:node\": \"brittle-node --coverage test.mjs\",\n \"test:bare\": \"brittle-bare --coverage test.mjs\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/compact-encoding/compact-encoding-bitfield.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/compact-encoding/compact-encoding-bitfield/issues\"\n },\n \"homepage\": \"https://github.com/compact-encoding/compact-encoding-bitfield#readme\",\n \"imports\": {\n \"util\": {\n \"bare\": \"bare-utils\",\n \"default\": \"util\"\n }\n },\n \"dependencies\": {\n \"compact-encoding\": \"^3.0.0\"\n },\n \"devDependencies\": {\n \"bare-utils\": \"^1.5.1\",\n \"brittle\": \"^3.1.0\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^1.0.0\"\n }\n}\nconst LE = (exports.LE =\n new Uint8Array(new Uint16Array([0xff]).buffer)[0] === 0xff)\n\nexports.BE = !LE\nconst b4a = require('b4a')\n\nconst { BE } = require('./endian')\n\nexports.state = function (start = 0, end = 0, buffer = null) {\n return { start, end, buffer }\n}\n\nconst raw = (exports.raw = require('./raw'))\n\nconst uint = (exports.uint = {\n preencode(state, n) {\n state.end += n <= 0xfc ? 1 : n <= 0xffff ? 3 : n <= 0xffffffff ? 5 : 9\n },\n encode(state, n) {\n if (n <= 0xfc) uint8.encode(state, n)\n else if (n <= 0xffff) {\n state.buffer[state.start++] = 0xfd\n uint16.encode(state, n)\n } else if (n <= 0xffffffff) {\n state.buffer[state.start++] = 0xfe\n uint32.encode(state, n)\n } else {\n state.buffer[state.start++] = 0xff\n uint64.encode(state, n)\n }\n },\n decode(state) {\n const a = uint8.decode(state)\n if (a <= 0xfc) return a\n if (a === 0xfd) return uint16.decode(state)\n if (a === 0xfe) return uint32.decode(state)\n return uint64.decode(state)\n }\n})\n\nconst uint8 = (exports.uint8 = {\n preencode(state, n) {\n state.end += 1\n },\n encode(state, n) {\n validateUint(n)\n state.buffer[state.start++] = n\n },\n decode(state) {\n if (state.start >= state.end) throw new Error('Out of bounds')\n return state.buffer[state.start++]\n }\n})\n\nconst uint16 = (exports.uint16 = {\n preencode(state, n) {\n state.end += 2\n },\n encode(state, n) {\n validateUint(n)\n state.buffer[state.start++] = n\n state.buffer[state.start++] = n >>> 8\n },\n decode(state) {\n if (state.end - state.start < 2) throw new Error('Out of bounds')\n return state.buffer[state.start++] + state.buffer[state.start++] * 0x100\n }\n})\n\nconst uint24 = (exports.uint24 = {\n preencode(state, n) {\n state.end += 3\n },\n encode(state, n) {\n validateUint(n)\n state.buffer[state.start++] = n\n state.buffer[state.start++] = n >>> 8\n state.buffer[state.start++] = n >>> 16\n },\n decode(state) {\n if (state.end - state.start < 3) throw new Error('Out of bounds')\n return (\n state.buffer[state.start++] +\n state.buffer[state.start++] * 0x100 +\n state.buffer[state.start++] * 0x10000\n )\n }\n})\n\nconst uint32 = (exports.uint32 = {\n preencode(state, n) {\n state.end += 4\n },\n encode(state, n) {\n validateUint(n)\n state.buffer[state.start++] = n\n state.buffer[state.start++] = n >>> 8\n state.buffer[state.start++] = n >>> 16\n state.buffer[state.start++] = n >>> 24\n },\n decode(state) {\n if (state.end - state.start < 4) throw new Error('Out of bounds')\n return (\n state.buffer[state.start++] +\n state.buffer[state.start++] * 0x100 +\n state.buffer[state.start++] * 0x10000 +\n state.buffer[state.start++] * 0x1000000\n )\n }\n})\n\nconst uint32be = (exports.uint32be = {\n preencode(state, n) {\n state.end += 4\n },\n encode(state, n) {\n validateUint(n)\n state.buffer[state.start++] = n >>> 24\n state.buffer[state.start++] = n >>> 16\n state.buffer[state.start++] = n >>> 8\n state.buffer[state.start++] = n\n },\n decode(state) {\n if (state.end - state.start < 4) throw new Error('Out of bounds')\n return (\n state.buffer[state.start++] * 0x1000000 +\n state.buffer[state.start++] * 0x10000 +\n state.buffer[state.start++] * 0x100 +\n state.buffer[state.start++]\n )\n }\n})\n\nconst uint40 = (exports.uint40 = {\n preencode(state, n) {\n state.end += 5\n },\n encode(state, n) {\n validateUint(n)\n const r = Math.floor(n / 0x100)\n uint8.encode(state, n)\n uint32.encode(state, r)\n },\n decode(state) {\n if (state.end - state.start < 5) throw new Error('Out of bounds')\n return uint8.decode(state) + 0x100 * uint32.decode(state)\n }\n})\n\nconst uint48 = (exports.uint48 = {\n preencode(state, n) {\n state.end += 6\n },\n encode(state, n) {\n validateUint(n)\n const r = Math.floor(n / 0x10000)\n uint16.encode(state, n)\n uint32.encode(state, r)\n },\n decode(state) {\n if (state.end - state.start < 6) throw new Error('Out of bounds')\n return uint16.decode(state) + 0x10000 * uint32.decode(state)\n }\n})\n\nconst uint56 = (exports.uint56 = {\n preencode(state, n) {\n state.end += 7\n },\n encode(state, n) {\n validateUint(n)\n const r = Math.floor(n / 0x1000000)\n uint24.encode(state, n)\n uint32.encode(state, r)\n },\n decode(state) {\n if (state.end - state.start < 7) throw new Error('Out of bounds')\n return validateSafeUint(\n uint24.decode(state) + 0x1000000 * uint32.decode(state)\n )\n }\n})\n\nconst uint64 = (exports.uint64 = {\n preencode(state, n) {\n state.end += 8\n },\n encode(state, n) {\n validateUint(n)\n const r = Math.floor(n / 0x100000000)\n uint32.encode(state, n)\n uint32.encode(state, r)\n },\n decode(state) {\n if (state.end - state.start < 8) throw new Error('Out of bounds')\n return validateSafeUint(\n uint32.decode(state) + 0x100000000 * uint32.decode(state)\n )\n }\n})\n\nexports.uint64be = {\n preencode(state, n) {\n state.end += 8\n },\n encode(state, n) {\n validateUint(n)\n const r = Math.floor(n / 0x100000000)\n uint32be.encode(state, r)\n uint32be.encode(state, n)\n },\n decode(state) {\n if (state.end - state.start < 8) throw new Error('Out of bounds')\n return validateSafeUint(\n 0x100000000 * uint32be.decode(state) + uint32be.decode(state)\n )\n }\n}\n\nconst int = (exports.int = zigZagInt(uint))\nexports.int8 = zigZagInt(uint8)\nexports.int16 = zigZagInt(uint16)\nexports.int24 = zigZagInt(uint24)\nexports.int32 = zigZagInt(uint32)\nexports.int40 = zigZagInt(uint40)\nexports.int48 = zigZagInt(uint48)\nexports.int56 = zigZagInt(uint56)\nexports.int64 = zigZagInt(uint64)\n\nconst biguint64 = (exports.biguint64 = {\n preencode(state, n) {\n state.end += 8\n },\n encode(state, n) {\n const view = new DataView(\n state.buffer.buffer,\n state.start + state.buffer.byteOffset,\n 8\n )\n view.setBigUint64(0, n, true) // little endian\n state.start += 8\n },\n decode(state) {\n if (state.end - state.start < 8) throw new Error('Out of bounds')\n const view = new DataView(\n state.buffer.buffer,\n state.start + state.buffer.byteOffset,\n 8\n )\n const n = view.getBigUint64(0, true) // little endian\n state.start += 8\n return n\n }\n})\n\nexports.bigint64 = zigZagBigInt(biguint64)\n\nconst biguint = (exports.biguint = {\n preencode(state, n) {\n let len = 0\n for (let m = n; m; m = m >> 64n) len++\n uint.preencode(state, len)\n state.end += 8 * len\n },\n encode(state, n) {\n let len = 0\n for (let m = n; m; m = m >> 64n) len++\n uint.encode(state, len)\n const view = new DataView(\n state.buffer.buffer,\n state.start + state.buffer.byteOffset,\n 8 * len\n )\n for (let m = n, i = 0; m; m = m >> 64n, i += 8) {\n view.setBigUint64(i, BigInt.asUintN(64, m), true) // little endian\n }\n state.start += 8 * len\n },\n decode(state) {\n const len = uint.decode(state)\n if (state.end - state.start < 8 * len) throw new Error('Out of bounds')\n const view = new DataView(\n state.buffer.buffer,\n state.start + state.buffer.byteOffset,\n 8 * len\n )\n let n = 0n\n for (let i = len - 1; i >= 0; i--)\n n = (n << 64n) + view.getBigUint64(i * 8, true) // little endian\n state.start += 8 * len\n return n\n }\n})\n\nexports.bigint = zigZagBigInt(biguint)\n\nexports.lexint = require('./lexint')\n\nexports.float32 = {\n preencode(state, n) {\n state.end += 4\n },\n encode(state, n) {\n const view = new DataView(\n state.buffer.buffer,\n state.start + state.buffer.byteOffset,\n 4\n )\n view.setFloat32(0, n, true) // little endian\n state.start += 4\n },\n decode(state) {\n if (state.end - state.start < 4) throw new Error('Out of bounds')\n const view = new DataView(\n state.buffer.buffer,\n state.start + state.buffer.byteOffset,\n 4\n )\n const float = view.getFloat32(0, true) // little endian\n state.start += 4\n return float\n }\n}\n\nexports.float64 = {\n preencode(state, n) {\n state.end += 8\n },\n encode(state, n) {\n const view = new DataView(\n state.buffer.buffer,\n state.start + state.buffer.byteOffset,\n 8\n )\n view.setFloat64(0, n, true) // little endian\n state.start += 8\n },\n decode(state) {\n if (state.end - state.start < 8) throw new Error('Out of bounds')\n const view = new DataView(\n state.buffer.buffer,\n state.start + state.buffer.byteOffset,\n 8\n )\n const float = view.getFloat64(0, true) // little endian\n state.start += 8\n return float\n }\n}\n\nconst buffer = (exports.buffer = {\n preencode(state, b) {\n uint8array.preencode(state, b)\n },\n encode(state, b) {\n uint8array.encode(state, b)\n },\n decode(state) {\n const len = uint.decode(state)\n if (state.end - state.start < len) throw new Error('Out of bounds')\n return state.buffer.subarray(state.start, (state.start += len))\n }\n})\n\nexports.optionalBuffer = {\n preencode(state, b) {\n if (b) uint8array.preencode(state, b)\n else state.end++\n },\n encode(state, b) {\n if (b) uint8array.encode(state, b)\n else state.buffer[state.start++] = 0\n },\n decode(state) {\n const len = uint.decode(state)\n if (len === 0) return null\n if (state.end - state.start < len) throw new Error('Out of bounds')\n return state.buffer.subarray(state.start, (state.start += len))\n }\n}\n\nexports.binary = {\n ...buffer,\n preencode(state, b) {\n if (typeof b === 'string') utf8.preencode(state, b)\n else buffer.preencode(state, b)\n },\n encode(state, b) {\n if (typeof b === 'string') utf8.encode(state, b)\n else buffer.encode(state, b)\n }\n}\n\nexports.arraybuffer = {\n preencode(state, b) {\n uint.preencode(state, b.byteLength)\n state.end += b.byteLength\n },\n encode(state, b) {\n uint.encode(state, b.byteLength)\n\n const view = new Uint8Array(b)\n\n state.buffer.set(view, state.start)\n state.start += b.byteLength\n },\n decode(state) {\n const len = uint.decode(state)\n\n const b = new ArrayBuffer(len)\n const view = new Uint8Array(b)\n\n view.set(state.buffer.subarray(state.start, (state.start += len)))\n\n return b\n }\n}\n\nfunction typedarray(TypedArray, swap) {\n const n = TypedArray.BYTES_PER_ELEMENT\n\n return {\n preencode(state, b) {\n uint.preencode(state, b.length)\n state.end += b.byteLength\n },\n encode(state, b) {\n uint.encode(state, b.length)\n\n const view = new Uint8Array(b.buffer, b.byteOffset, b.byteLength)\n\n if (BE && swap) swap(view)\n\n state.buffer.set(view, state.start)\n state.start += b.byteLength\n },\n decode(state) {\n const len = uint.decode(state)\n\n let b = state.buffer.subarray(state.start, (state.start += len * n))\n if (b.byteLength !== len * n) throw new Error('Out of bounds')\n if (b.byteOffset % n !== 0) b = new Uint8Array(b)\n\n if (BE && swap) swap(b)\n\n return new TypedArray(b.buffer, b.byteOffset, b.byteLength / n)\n }\n }\n}\n\nconst uint8array = (exports.uint8array = typedarray(Uint8Array))\nexports.uint16array = typedarray(Uint16Array, b4a.swap16)\nexports.uint32array = typedarray(Uint32Array, b4a.swap32)\n\nexports.int8array = typedarray(Int8Array)\nexports.int16array = typedarray(Int16Array, b4a.swap16)\nexports.int32array = typedarray(Int32Array, b4a.swap32)\n\nexports.biguint64array = typedarray(BigUint64Array, b4a.swap64)\nexports.bigint64array = typedarray(BigInt64Array, b4a.swap64)\n\nexports.float32array = typedarray(Float32Array, b4a.swap32)\nexports.float64array = typedarray(Float64Array, b4a.swap64)\n\nfunction string(encoding) {\n return {\n preencode(state, s) {\n const len = b4a.byteLength(s, encoding)\n uint.preencode(state, len)\n state.end += len\n },\n encode(state, s) {\n const len = b4a.byteLength(s, encoding)\n uint.encode(state, len)\n b4a.write(state.buffer, s, state.start, encoding)\n state.start += len\n },\n decode(state) {\n const len = uint.decode(state)\n if (state.end - state.start < len) throw new Error('Out of bounds')\n return b4a.toString(\n state.buffer,\n encoding,\n state.start,\n (state.start += len)\n )\n },\n fixed(n) {\n return {\n preencode(state) {\n state.end += n\n },\n encode(state, s) {\n b4a.write(state.buffer, s, state.start, n, encoding)\n state.start += n\n },\n decode(state) {\n if (state.end - state.start < n) throw new Error('Out of bounds')\n return b4a.toString(\n state.buffer,\n encoding,\n state.start,\n (state.start += n)\n )\n }\n }\n }\n }\n}\n\nconst utf8 = (exports.string = exports.utf8 = string('utf-8'))\nexports.ascii = string('ascii')\nexports.hex = string('hex')\nexports.base64 = string('base64')\nexports.ucs2 = exports.utf16le = string('utf16le')\n\nexports.bool = {\n preencode(state, b) {\n state.end++\n },\n encode(state, b) {\n state.buffer[state.start++] = b ? 1 : 0\n },\n decode(state) {\n if (state.start >= state.end) throw Error('Out of bounds')\n return state.buffer[state.start++] === 1\n }\n}\n\nconst fixed = (exports.fixed = function fixed(n) {\n return {\n preencode(state, s) {\n if (s.byteLength !== n) throw new Error('Incorrect buffer size')\n state.end += n\n },\n encode(state, s) {\n state.buffer.set(s, state.start)\n state.start += n\n },\n decode(state) {\n if (state.end - state.start < n) throw new Error('Out of bounds')\n return state.buffer.subarray(state.start, (state.start += n))\n }\n }\n})\n\nexports.fixed32 = fixed(32)\nexports.fixed64 = fixed(64)\n\nexports.array = function array(enc) {\n return {\n preencode(state, list) {\n uint.preencode(state, list.length)\n for (let i = 0; i < list.length; i++) enc.preencode(state, list[i])\n },\n encode(state, list) {\n uint.encode(state, list.length)\n for (let i = 0; i < list.length; i++) enc.encode(state, list[i])\n },\n decode(state) {\n const len = uint.decode(state)\n if (len > 0x100000) throw new Error('Array is too big')\n const arr = new Array(len)\n for (let i = 0; i < len; i++) arr[i] = enc.decode(state)\n return arr\n }\n }\n}\n\nexports.frame = function frame(enc) {\n const dummy = exports.state()\n\n return {\n preencode(state, m) {\n const end = state.end\n enc.preencode(state, m)\n uint.preencode(state, state.end - end)\n },\n encode(state, m) {\n dummy.end = 0\n enc.preencode(dummy, m)\n uint.encode(state, dummy.end)\n enc.encode(state, m)\n },\n decode(state) {\n const end = state.end\n const len = uint.decode(state)\n state.end = state.start + len\n const m = enc.decode(state)\n state.start = state.end\n state.end = end\n return m\n }\n }\n}\n\nexports.date = {\n preencode(state, d) {\n int.preencode(state, d.getTime())\n },\n encode(state, d) {\n int.encode(state, d.getTime())\n },\n decode(state, d) {\n return new Date(int.decode(state))\n }\n}\n\nexports.json = {\n preencode(state, v) {\n utf8.preencode(state, JSON.stringify(v))\n },\n encode(state, v) {\n utf8.encode(state, JSON.stringify(v))\n },\n decode(state) {\n return JSON.parse(utf8.decode(state))\n }\n}\n\nexports.ndjson = {\n preencode(state, v) {\n utf8.preencode(state, JSON.stringify(v) + '\\n')\n },\n encode(state, v) {\n utf8.encode(state, JSON.stringify(v) + '\\n')\n },\n decode(state) {\n return JSON.parse(utf8.decode(state))\n }\n}\n\n// simple helper for when you want to just express nothing\nexports.none = {\n preencode(state, n) {\n // do nothing\n },\n encode(state, n) {\n // do nothing\n },\n decode(state) {\n return null\n }\n}\n\n// \"any\" encoders here for helping just structure any object without schematising it\n\nconst anyArray = {\n preencode(state, arr) {\n uint.preencode(state, arr.length)\n for (let i = 0; i < arr.length; i++) {\n any.preencode(state, arr[i])\n }\n },\n encode(state, arr) {\n uint.encode(state, arr.length)\n for (let i = 0; i < arr.length; i++) {\n any.encode(state, arr[i])\n }\n },\n decode(state) {\n const arr = []\n let len = uint.decode(state)\n while (len-- > 0) {\n arr.push(any.decode(state))\n }\n return arr\n }\n}\n\nconst anyObject = {\n preencode(state, o) {\n const keys = Object.keys(o)\n uint.preencode(state, keys.length)\n for (const key of keys) {\n utf8.preencode(state, key)\n any.preencode(state, o[key])\n }\n },\n encode(state, o) {\n const keys = Object.keys(o)\n uint.encode(state, keys.length)\n for (const key of keys) {\n utf8.encode(state, key)\n any.encode(state, o[key])\n }\n },\n decode(state) {\n let len = uint.decode(state)\n const o = {}\n while (len-- > 0) {\n const key = utf8.decode(state)\n o[key] = any.decode(state)\n }\n return o\n }\n}\n\nconst anyTypes = [\n exports.none,\n exports.bool,\n exports.string,\n exports.buffer,\n exports.uint,\n exports.int,\n exports.float64,\n anyArray,\n anyObject,\n exports.date\n]\n\nconst any = (exports.any = {\n preencode(state, o) {\n const t = getType(o)\n uint.preencode(state, t)\n anyTypes[t].preencode(state, o)\n },\n encode(state, o) {\n const t = getType(o)\n uint.encode(state, t)\n anyTypes[t].encode(state, o)\n },\n decode(state) {\n const t = uint.decode(state)\n if (t >= anyTypes.length) throw new Error('Unknown type: ' + t)\n return anyTypes[t].decode(state)\n }\n})\n\nconst port = (exports.port = uint16)\n\nconst address = (host, family) => {\n return {\n preencode(state, m) {\n host.preencode(state, m.host)\n port.preencode(state, m.port)\n },\n encode(state, m) {\n host.encode(state, m.host)\n port.encode(state, m.port)\n },\n decode(state) {\n return {\n host: host.decode(state),\n family,\n port: port.decode(state)\n }\n }\n }\n}\n\nconst ipv4 = (exports.ipv4 = {\n preencode(state) {\n state.end += 4\n },\n encode(state, string) {\n const start = state.start\n const end = start + 4\n\n let i = 0\n\n while (i < string.length) {\n let n = 0\n let c\n\n while (\n i < string.length &&\n (c = string.charCodeAt(i++)) !== /* . */ 0x2e\n ) {\n n = n * 10 + (c - /* 0 */ 0x30)\n }\n\n state.buffer[state.start++] = n\n }\n\n state.start = end\n },\n decode(state) {\n if (state.end - state.start < 4) throw new Error('Out of bounds')\n return (\n state.buffer[state.start++] +\n '.' +\n state.buffer[state.start++] +\n '.' +\n state.buffer[state.start++] +\n '.' +\n state.buffer[state.start++]\n )\n }\n})\n\nexports.ipv4Address = address(ipv4, 4)\n\nconst ipv6 = (exports.ipv6 = {\n preencode(state) {\n state.end += 16\n },\n encode(state, string) {\n const start = state.start\n const end = start + 16\n\n let i = 0\n let split = null\n\n while (i < string.length) {\n let n = 0\n let c\n\n while (\n i < string.length &&\n (c = string.charCodeAt(i++)) !== /* : */ 0x3a\n ) {\n if (c >= 0x30 && c <= 0x39) n = n * 0x10 + (c - /* 0 */ 0x30)\n else if (c >= 0x41 && c <= 0x46) n = n * 0x10 + (c - /* A */ 0x41 + 10)\n else if (c >= 0x61 && c <= 0x66) n = n * 0x10 + (c - /* a */ 0x61 + 10)\n }\n\n state.buffer[state.start++] = n >>> 8\n state.buffer[state.start++] = n\n\n if (i < string.length && string.charCodeAt(i) === /* : */ 0x3a) {\n i++\n split = state.start\n }\n }\n\n if (split !== null) {\n const offset = end - state.start\n state.buffer\n .copyWithin(split + offset, split)\n .fill(0, split, split + offset)\n }\n\n state.start = end\n },\n decode(state) {\n if (state.end - state.start < 16) throw new Error('Out of bounds')\n return (\n (\n state.buffer[state.start++] * 256 +\n state.buffer[state.start++]\n ).toString(16) +\n ':' +\n (\n state.buffer[state.start++] * 256 +\n state.buffer[state.start++]\n ).toString(16) +\n ':' +\n (\n state.buffer[state.start++] * 256 +\n state.buffer[state.start++]\n ).toString(16) +\n ':' +\n (\n state.buffer[state.start++] * 256 +\n state.buffer[state.start++]\n ).toString(16) +\n ':' +\n (\n state.buffer[state.start++] * 256 +\n state.buffer[state.start++]\n ).toString(16) +\n ':' +\n (\n state.buffer[state.start++] * 256 +\n state.buffer[state.start++]\n ).toString(16) +\n ':' +\n (\n state.buffer[state.start++] * 256 +\n state.buffer[state.start++]\n ).toString(16) +\n ':' +\n (\n state.buffer[state.start++] * 256 +\n state.buffer[state.start++]\n ).toString(16)\n )\n }\n})\n\nexports.ipv6Address = address(ipv6, 6)\n\nconst ip = (exports.ip = {\n preencode(state, string) {\n const family = string.includes(':') ? 6 : 4\n uint8.preencode(state, family)\n if (family === 4) ipv4.preencode(state)\n else ipv6.preencode(state)\n },\n encode(state, string) {\n const family = string.includes(':') ? 6 : 4\n uint8.encode(state, family)\n if (family === 4) ipv4.encode(state, string)\n else ipv6.encode(state, string)\n },\n decode(state) {\n const family = uint8.decode(state)\n if (family === 4) return ipv4.decode(state)\n else return ipv6.decode(state)\n }\n})\n\nexports.ipAddress = {\n preencode(state, m) {\n ip.preencode(state, m.host)\n port.preencode(state, m.port)\n },\n encode(state, m) {\n ip.encode(state, m.host)\n port.encode(state, m.port)\n },\n decode(state) {\n const family = uint8.decode(state)\n return {\n host: family === 4 ? ipv4.decode(state) : ipv6.decode(state),\n family,\n port: port.decode(state)\n }\n }\n}\n\nconst record = (exports.record = function (keyEncoding, valueEncoding) {\n return {\n preencode(state, v) {\n const keys = Object.keys(v)\n uint.preencode(state, keys.length)\n for (const k of keys) {\n keyEncoding.preencode(state, k)\n valueEncoding.preencode(state, v[k])\n }\n },\n encode(state, v) {\n const keys = Object.keys(v)\n uint.encode(state, keys.length)\n for (const k of keys) {\n keyEncoding.encode(state, k)\n valueEncoding.encode(state, v[k])\n }\n },\n decode(state) {\n const out = Object.create(null)\n const keys = uint.decode(state)\n for (let i = 0; i < keys; i++) {\n out[keyEncoding.decode(state)] = valueEncoding.decode(state)\n }\n return out\n }\n }\n})\n\nexports.stringRecord = record(utf8, utf8)\n\nfunction getType(o) {\n if (o === null || o === undefined) return 0\n if (typeof o === 'boolean') return 1\n if (typeof o === 'string') return 2\n if (b4a.isBuffer(o)) return 3\n if (typeof o === 'number') {\n if (Number.isInteger(o)) return o >= 0 ? 4 : 5\n return 6\n }\n if (Array.isArray(o)) return 7\n if (o instanceof Date) return 9\n if (typeof o === 'object') return 8\n\n throw new Error('Unsupported type for ' + o)\n}\n\nexports.from = function from(enc) {\n if (typeof enc === 'string') return fromNamed(enc)\n if (enc.preencode) return enc\n if (enc.encodingLength) return fromAbstractEncoder(enc)\n return fromCodec(enc)\n}\n\nfunction fromNamed(enc) {\n switch (enc) {\n case 'ascii':\n return raw.ascii\n case 'utf-8':\n case 'utf8':\n return raw.utf8\n case 'hex':\n return raw.hex\n case 'base64':\n return raw.base64\n case 'utf16-le':\n case 'utf16le':\n case 'ucs-2':\n case 'ucs2':\n return raw.ucs2\n case 'ndjson':\n return raw.ndjson\n case 'json':\n return raw.json\n case 'binary':\n default:\n return raw.binary\n }\n}\n\nfunction fromCodec(enc) {\n let tmpM = null\n let tmpBuf = null\n\n return {\n preencode(state, m) {\n tmpM = m\n tmpBuf = enc.encode(m)\n state.end += tmpBuf.byteLength\n },\n encode(state, m) {\n raw.encode(state, m === tmpM ? tmpBuf : enc.encode(m))\n tmpM = tmpBuf = null\n },\n decode(state) {\n return enc.decode(raw.decode(state))\n }\n }\n}\n\nfunction fromAbstractEncoder(enc) {\n return {\n preencode(state, m) {\n state.end += enc.encodingLength(m)\n },\n encode(state, m) {\n enc.encode(m, state.buffer, state.start)\n state.start += enc.encode.bytes\n },\n decode(state) {\n const m = enc.decode(state.buffer, state.start, state.end)\n state.start += enc.decode.bytes\n return m\n }\n }\n}\n\nexports.encode = function encode(enc, m) {\n const state = exports.state()\n enc.preencode(state, m)\n state.buffer = b4a.allocUnsafe(state.end)\n enc.encode(state, m)\n return state.buffer\n}\n\nexports.decode = function decode(enc, buffer) {\n return enc.decode(exports.state(0, buffer.byteLength, buffer))\n}\n\nfunction zigZagInt(enc) {\n return {\n preencode(state, n) {\n enc.preencode(state, zigZagEncodeInt(n))\n },\n encode(state, n) {\n enc.encode(state, zigZagEncodeInt(n))\n },\n decode(state) {\n return zigZagDecodeInt(enc.decode(state))\n }\n }\n}\n\nfunction zigZagDecodeInt(n) {\n return n === 0 ? n : (n & 1) === 0 ? n / 2 : -(n + 1) / 2\n}\n\nfunction zigZagEncodeInt(n) {\n // 0, -1, 1, -2, 2, ...\n return n < 0 ? 2 * -n - 1 : n === 0 ? 0 : 2 * n\n}\n\nfunction zigZagBigInt(enc) {\n return {\n preencode(state, n) {\n enc.preencode(state, zigZagEncodeBigInt(n))\n },\n encode(state, n) {\n enc.encode(state, zigZagEncodeBigInt(n))\n },\n decode(state) {\n return zigZagDecodeBigInt(enc.decode(state))\n }\n }\n}\n\nfunction zigZagDecodeBigInt(n) {\n return n === 0n ? n : (n & 1n) === 0n ? n / 2n : -(n + 1n) / 2n\n}\n\nfunction zigZagEncodeBigInt(n) {\n // 0, -1, 1, -2, 2, ...\n return n < 0n ? 2n * -n - 1n : n === 0n ? 0n : 2n * n\n}\n\nfunction validateSafeUint(n) {\n if (n > Number.MAX_SAFE_INTEGER)\n throw new Error(\n 'uint is greater than the maximum safe integer, use biguint/bigint'\n )\n return n\n}\n\nfunction validateUint(n) {\n if (n >= 0 === false /* Handles NaN as well */)\n throw new Error('uint must be positive')\n // Beyond this, Number arithmetic loses precision and silently corrupts the\n // encoding. The zig-zag int codecs route through here too, so this also\n // guards int values whose doubled magnitude exceeds the safe range.\n if (n > Number.MAX_SAFE_INTEGER)\n throw new Error(\n 'integer is greater than the maximum safe integer, use biguint/bigint'\n )\n}\nmodule.exports = {\n preencode,\n encode,\n decode\n}\n\nfunction preencode(state, num) {\n if (num < 251) {\n state.end++\n } else if (num < 256) {\n state.end += 2\n } else if (num < 0x10000) {\n state.end += 3\n } else if (num < 0x1000000) {\n state.end += 4\n } else if (num < 0x100000000) {\n state.end += 5\n } else {\n state.end++\n const exp = Math.floor(Math.log(num) / Math.log(2)) - 32\n preencode(state, exp)\n state.end += 6\n }\n}\n\nfunction encode(state, num) {\n const max = 251\n const x = num - max\n\n if (num < max) {\n state.buffer[state.start++] = num\n } else if (num < 256) {\n state.buffer[state.start++] = max\n state.buffer[state.start++] = x\n } else if (num < 0x10000) {\n state.buffer[state.start++] = max + 1\n state.buffer[state.start++] = (x >> 8) & 0xff\n state.buffer[state.start++] = x & 0xff\n } else if (num < 0x1000000) {\n state.buffer[state.start++] = max + 2\n state.buffer[state.start++] = x >> 16\n state.buffer[state.start++] = (x >> 8) & 0xff\n state.buffer[state.start++] = x & 0xff\n } else if (num < 0x100000000) {\n state.buffer[state.start++] = max + 3\n state.buffer[state.start++] = x >> 24\n state.buffer[state.start++] = (x >> 16) & 0xff\n state.buffer[state.start++] = (x >> 8) & 0xff\n state.buffer[state.start++] = x & 0xff\n } else {\n // need to use Math here as bitwise ops are 32 bit\n const exp = Math.floor(Math.log(x) / Math.log(2)) - 32\n state.buffer[state.start++] = 0xff\n\n encode(state, exp)\n const rem = x / Math.pow(2, exp - 11)\n\n for (let i = 5; i >= 0; i--) {\n state.buffer[state.start++] = (rem / Math.pow(2, 8 * i)) & 0xff\n }\n }\n}\n\nfunction decode(state) {\n const max = 251\n\n if (state.end - state.start < 1) throw new Error('Out of bounds')\n\n const flag = state.buffer[state.start++]\n\n if (flag < max) return flag\n\n if (state.end - state.start < flag - max + 1) {\n throw new Error('Out of bounds.')\n }\n\n if (flag < 252) {\n return state.buffer[state.start++] + max\n }\n\n if (flag < 253) {\n return (\n (state.buffer[state.start++] << 8) + state.buffer[state.start++] + max\n )\n }\n\n if (flag < 254) {\n return (\n (state.buffer[state.start++] << 16) +\n (state.buffer[state.start++] << 8) +\n state.buffer[state.start++] +\n max\n )\n }\n\n // << 24 result may be interpreted as negative\n if (flag < 255) {\n return (\n state.buffer[state.start++] * 0x1000000 +\n (state.buffer[state.start++] << 16) +\n (state.buffer[state.start++] << 8) +\n state.buffer[state.start++] +\n max\n )\n }\n\n const exp = decode(state)\n\n if (state.end - state.start < 6) throw new Error('Out of bounds')\n\n let rem = 0\n for (let i = 5; i >= 0; i--) {\n rem += state.buffer[state.start++] * Math.pow(2, 8 * i)\n }\n\n return rem * Math.pow(2, exp - 11) + max\n}\n{\n \"name\": \"compact-encoding\",\n \"version\": \"3.3.0\",\n \"description\": \"A series of compact encoding schemes for building small and fast parsers and serializers\",\n \"main\": \"index.js\",\n \"files\": [\n \"endian.js\",\n \"index.js\",\n \"lexint.js\",\n \"raw.js\"\n ],\n \"dependencies\": {\n \"b4a\": \"^1.3.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.0.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^1.0.0\"\n },\n \"scripts\": {\n \"format\": \"prettier . --write\",\n \"test\": \"prettier . --check && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/compact-encoding.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/compact-encoding/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/compact-encoding\"\n}\nconst b4a = require('b4a')\n\nconst { BE } = require('./endian')\n\nexports = module.exports = {\n preencode(state, b) {\n state.end += b.byteLength\n },\n encode(state, b) {\n state.buffer.set(b, state.start)\n state.start += b.byteLength\n },\n decode(state) {\n const b = state.buffer.subarray(state.start, state.end)\n state.start = state.end\n return b\n }\n}\n\nconst buffer = (exports.buffer = {\n preencode(state, b) {\n uint8array.preencode(state, b)\n },\n encode(state, b) {\n uint8array.encode(state, b)\n },\n decode(state) {\n const b = state.buffer.subarray(state.start)\n state.start = state.end\n return b\n }\n})\n\nexports.binary = {\n ...buffer,\n preencode(state, b) {\n if (typeof b === 'string') utf8.preencode(state, b)\n else buffer.preencode(state, b)\n },\n encode(state, b) {\n if (typeof b === 'string') utf8.encode(state, b)\n else buffer.encode(state, b)\n }\n}\n\nexports.arraybuffer = {\n preencode(state, b) {\n state.end += b.byteLength\n },\n encode(state, b) {\n const view = new Uint8Array(b)\n\n state.buffer.set(view, state.start)\n state.start += b.byteLength\n },\n decode(state) {\n const b = new ArrayBuffer(state.end - state.start)\n const view = new Uint8Array(b)\n\n view.set(state.buffer.subarray(state.start))\n\n state.start = state.end\n\n return b\n }\n}\n\nfunction typedarray(TypedArray, swap) {\n const n = TypedArray.BYTES_PER_ELEMENT\n\n return {\n preencode(state, b) {\n state.end += b.byteLength\n },\n encode(state, b) {\n const view = new Uint8Array(b.buffer, b.byteOffset, b.byteLength)\n\n if (BE && swap) swap(view)\n\n state.buffer.set(view, state.start)\n state.start += b.byteLength\n },\n decode(state) {\n let b = state.buffer.subarray(state.start)\n if (b.byteOffset % n !== 0) b = new Uint8Array(b)\n\n if (BE && swap) swap(b)\n\n state.start = state.end\n\n return new TypedArray(b.buffer, b.byteOffset, b.byteLength / n)\n }\n }\n}\n\nconst uint8array = (exports.uint8array = typedarray(Uint8Array))\nexports.uint16array = typedarray(Uint16Array, b4a.swap16)\nexports.uint32array = typedarray(Uint32Array, b4a.swap32)\n\nexports.int8array = typedarray(Int8Array)\nexports.int16array = typedarray(Int16Array, b4a.swap16)\nexports.int32array = typedarray(Int32Array, b4a.swap32)\n\nexports.biguint64array = typedarray(BigUint64Array, b4a.swap64)\nexports.bigint64array = typedarray(BigInt64Array, b4a.swap64)\n\nexports.float32array = typedarray(Float32Array, b4a.swap32)\nexports.float64array = typedarray(Float64Array, b4a.swap64)\n\nfunction string(encoding) {\n return {\n preencode(state, s) {\n state.end += b4a.byteLength(s, encoding)\n },\n encode(state, s) {\n state.start += b4a.write(state.buffer, s, state.start, encoding)\n },\n decode(state) {\n const s = b4a.toString(state.buffer, encoding, state.start)\n state.start = state.end\n return s\n }\n }\n}\n\nconst utf8 = (exports.string = exports.utf8 = string('utf-8'))\nexports.ascii = string('ascii')\nexports.hex = string('hex')\nexports.base64 = string('base64')\nexports.ucs2 = exports.utf16le = string('utf16le')\n\nexports.array = function array(enc) {\n return {\n preencode(state, list) {\n for (const value of list) enc.preencode(state, value)\n },\n encode(state, list) {\n for (const value of list) enc.encode(state, value)\n },\n decode(state) {\n const arr = []\n while (state.start < state.end) arr.push(enc.decode(state))\n return arr\n }\n }\n}\n\nexports.json = {\n preencode(state, v) {\n utf8.preencode(state, JSON.stringify(v))\n },\n encode(state, v) {\n utf8.encode(state, JSON.stringify(v))\n },\n decode(state) {\n return JSON.parse(utf8.decode(state))\n }\n}\n\nexports.ndjson = {\n preencode(state, v) {\n utf8.preencode(state, JSON.stringify(v) + '\\n')\n },\n encode(state, v) {\n utf8.encode(state, JSON.stringify(v) + '\\n')\n },\n decode(state) {\n return JSON.parse(utf8.decode(state))\n }\n}\nconst b4a = require('b4a')\nconst Hypercore = require('hypercore')\nconst ReadyResource = require('ready-resource')\nconst sodium = require('sodium-universal')\nconst crypto = require('hypercore-crypto')\nconst ID = require('hypercore-id-encoding')\nconst { isAndroid } = require('which-runtime')\nconst { STORAGE_EMPTY, ASSERTION } = require('hypercore-errors')\n\nconst auditStore = require('./lib/audit.js')\nconst GroupNotifyHandle = require('./lib/notify.js')\n\nconst [NS] = crypto.namespace('corestore', 1)\nconst DEFAULT_NAMESPACE = b4a.alloc(32) // This is meant to be 32 0-bytes\n\nclass StreamTracker {\n constructor() {\n this.records = []\n }\n\n add(stream, isExternal) {\n const record = { index: 0, stream, isExternal }\n record.index = this.records.push(record) - 1\n return record\n }\n\n remove(record) {\n const popped = this.records.pop()\n if (popped === record) return\n this.records[(popped.index = record.index)] = popped\n }\n\n attachAll(core) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i]\n const muxer = record.stream.noiseStream.userData\n if (!core.replicator.attached(muxer)) core.replicator.attachTo(muxer)\n }\n }\n\n destroy() {\n // reverse is safer cause we delete mb\n for (let i = this.records.length - 1; i >= 0; i--) {\n const record = this.records[i]\n if (!record.isExternal) record.stream.destroy()\n }\n }\n}\n\nclass SessionTracker {\n constructor() {\n this.map = new Map()\n }\n\n get size() {\n return this.map.size\n }\n\n get(id) {\n const existing = this.map.get(id)\n if (existing !== undefined) return existing\n const fresh = []\n this.map.set(id, fresh)\n return fresh\n }\n\n gc(id) {\n this.map.delete(id)\n }\n\n list(id) {\n return id ? this.map.get(id) || [] : [...this]\n }\n\n *[Symbol.iterator]() {\n for (const sessions of this.map.values()) {\n yield* sessions[Symbol.iterator]()\n }\n }\n}\n\nclass CoreTracker {\n constructor() {\n this.map = new Map()\n this.watching = []\n\n this._gcing = new Set()\n this._gcInterval = null\n this._gcCycleBound = this._gcCycle.bind(this)\n }\n\n get size() {\n return this.map.size\n }\n\n watch(store) {\n if (store.watchIndex !== -1) return\n store.watchIndex = this.watching.push(store) - 1\n }\n\n unwatch(store) {\n if (store.watchIndex === -1) return\n const head = this.watching.pop()\n if (head !== store) this.watching[(head.watchIndex = store.watchIndex)] = head\n store.watchIndex = -1\n }\n\n resume(id) {\n const core = this.map.get(id)\n\n if (!core) return null\n\n // signal back that we have a closing one stored\n if (core.closing) return core\n\n if (core.gc) {\n this._gcing.delete(core)\n if (this._gcing.size === 0) this._stopGC()\n core.gc = 0\n }\n\n return core\n }\n\n opened(id) {\n const core = this.map.get(id)\n return !!(core && core.opened && !core.closing)\n }\n\n get(id) {\n // we allow you do call this from the outside, so support normal buffers also\n if (b4a.isBuffer(id)) id = b4a.toString(id, 'hex')\n const core = this.map.get(id)\n if (!core || core.closing) return null\n return core\n }\n\n set(id, core) {\n this.map.set(id, core)\n if (this.watching.length > 0) this._emit(core)\n }\n\n _emit(core) {\n for (let i = this.watching.length - 1; i >= 0; i--) {\n const store = this.watching[i]\n for (const fn of store.watchers) fn(core)\n }\n }\n\n _gc(core) {\n const id = toHex(core.discoveryKey)\n if (this.map.get(id) === core) this.map.delete(id)\n }\n\n _gcCycle() {\n for (const core of this._gcing) {\n if (++core.gc < 4) continue\n const gc = this._gc.bind(this, core)\n core.close().then(gc, gc)\n this._gcing.delete(core)\n }\n\n if (this._gcing.size === 0) this._stopGC()\n }\n\n gc(core) {\n core.gc = 1 // first strike\n this._gcing.add(core)\n if (this._gcing.size === 1) this._startGC()\n }\n\n _stopGC() {\n clearInterval(this._gcInterval)\n this._gcInterval = null\n }\n\n _startGC() {\n if (this._gcInterval) return\n this._gcInterval = setInterval(this._gcCycleBound, 2000)\n if (this._gcInterval.unref) this._gcInterval.unref()\n }\n\n close() {\n this._stopGC()\n this._gcing.clear()\n\n const all = []\n for (const core of this.map.values()) {\n core.onidle = noop // no reentry\n all.push(core.close())\n }\n this.map.clear()\n\n return Promise.all(all)\n }\n\n *[Symbol.iterator]() {\n for (const core of this.map.values()) {\n if (!core.closing) yield core\n }\n }\n}\n\nclass FindingPeers {\n constructor() {\n this.count = 0\n this.pending = []\n this.destroyed = false\n }\n\n add(core) {\n if (this.count === 0) return\n this.pending.push(core.findingPeers())\n }\n\n inc(sessions) {\n if (this.destroyed || ++this.count !== 1) return\n\n for (const core of sessions) {\n this.pending.push(core.findingPeers())\n }\n }\n\n dec(sessions) {\n if (this.destroyed || --this.count !== 0) return\n while (this.pending.length > 0) this.pending.pop()()\n }\n\n destroy() {\n this.destroyed = true\n while (this.pending.length > 0) this.pending.pop()()\n }\n}\n\nclass Corestore extends ReadyResource {\n constructor(storage, opts = {}) {\n super()\n\n this.root = opts.root || null\n this.storage = this.root\n ? this.root.storage\n : Hypercore.defaultStorage(storage, {\n id: opts.id,\n allowBackup: opts.allowBackup,\n readOnly: opts.readOnly,\n wait: opts.wait,\n treeCache: opts.treeCache\n })\n this.streamTracker = this.root ? this.root.streamTracker : new StreamTracker()\n this.cores = this.root ? this.root.cores : new CoreTracker()\n this.sessions = new SessionTracker()\n this.corestores = this.root ? this.root.corestores : new Set()\n this.readOnly = opts.writable === false || !!opts.readOnly\n this.globalCache = this.root ? this.root.globalCache : opts.globalCache || null\n this.primaryKey = this.root ? this.root.primaryKey : opts.primaryKey || null\n this.ns = opts.namespace || DEFAULT_NAMESPACE\n this.manifestVersion = opts.manifestVersion || 1\n this.shouldSuspend = isAndroid ? !!opts.suspend : opts.suspend !== false\n this.active = opts.active !== false\n\n this.watchers = null\n this.watchIndex = -1\n\n this._groupNotifiers = new Map() // group notifications\n this._findingPeers = null // here for legacy\n this._ongcBound = this._ongc.bind(this)\n this._onGroupActiveBound = this._onGroupActive.bind(this)\n\n if (opts.primaryKey && !this.root && !opts.unsafe) {\n throw ASSERTION(\n 'Passing the primary key is unsafe unless you know what you are doing. Set unsafe: true to acknowledge that'\n )\n }\n\n this.ready().catch(noop)\n }\n\n watch(fn) {\n if (this.watchers === null) {\n this.watchers = new Set()\n this.cores.watch(this)\n }\n\n this.watchers.add(fn)\n }\n\n unwatch(fn) {\n if (this.watchers === null) return\n\n this.watchers.delete(fn)\n\n if (this.watchers.size === 0) {\n this.watchers = null\n this.cores.unwatch(this)\n }\n }\n\n _onGroupActive(topic, update) {\n this.emit('group-active', topic, update)\n\n const topicHex = b4a.toString(topic, 'hex')\n const handles = this._groupNotifiers.get(topicHex)\n if (!handles) return\n for (const handle of handles) handle.emit('update', update)\n }\n\n notifyGroup(topic) {\n const topicHex = b4a.toString(topic, 'hex')\n let handles = this._groupNotifiers.get(topicHex)\n\n if (!handles) {\n handles = []\n this._groupNotifiers.set(topicHex, handles)\n }\n\n const handle = new GroupNotifyHandle(this, topic)\n const length = handles.push(handle)\n handle.index = length - 1\n\n return handle\n }\n\n _removeGroupNotify(handle) {\n if (handle.index === -1) return\n\n const topicHex = b4a.toString(handle._topic, 'hex')\n const handles = this._groupNotifiers.get(topicHex)\n if (!handles) return\n\n const popped = handles.pop()\n if (popped !== handle) handles[(popped.index = handle.index)] = popped\n if (handles.length === 0) this._groupNotifiers.delete(topicHex)\n handle.index = -1\n }\n\n findingPeers() {\n if (this._findingPeers === null) this._findingPeers = new FindingPeers()\n this._findingPeers.inc(this.sessions)\n let done = false\n return () => {\n if (done || !this._findingPeers) return\n done = true\n this._findingPeers.dec(this.sessions)\n }\n }\n\n audit(opts = {}) {\n return auditStore(this, opts)\n }\n\n async suspend({ log = noop } = {}) {\n await log('Flushing db...')\n // If readOnly we don't need to flush\n if (!this.storage.readOnly) {\n await this.storage.db.flush()\n await log('Flusing db completed')\n }\n if (!this.shouldSuspend) return\n await log('Suspending db...')\n await this.storage.suspend({ log })\n await log('Suspending db completed')\n }\n\n resume() {\n return this.storage.resume()\n }\n\n session(opts) {\n this._maybeClosed()\n const root = this.root || this\n return new Corestore(null, {\n manifestVersion: this.manifestVersion,\n ...opts,\n root\n })\n }\n\n namespace(name, opts) {\n return this.session({\n ...opts,\n namespace: generateNamespace(this.ns, name)\n })\n }\n\n list(namespace) {\n return this.storage.createDiscoveryKeyStream(namespace)\n }\n\n getAuth(discoveryKey) {\n return this.storage.getAuth(discoveryKey)\n }\n\n _ongc(session) {\n if (session.sessions.length === 0) this.sessions.gc(session.id)\n }\n\n async _getOrSetSeed() {\n const seed = await this.storage.getSeed()\n if (seed !== null) return seed\n return await this.storage.setSeed(this.primaryKey || crypto.randomBytes(32))\n }\n\n async _open() {\n if (this.root !== null) {\n this.corestores.add(this)\n if (this.root.opened === false) await this.root.ready()\n this.primaryKey = this.root.primaryKey\n return\n }\n\n const primaryKey = await this._getOrSetSeed()\n\n if (this.primaryKey === null) {\n this.primaryKey = primaryKey\n return\n }\n\n if (!b4a.equals(primaryKey, this.primaryKey)) {\n throw new Error('Another corestore is stored here')\n }\n }\n\n async _close() {\n const closing = []\n const hanging = [...this.sessions]\n for (const sess of hanging) closing.push(sess.close())\n\n if (this.watchers !== null) {\n this.cores.unwatch(this)\n this.watchers = null\n }\n\n if (this._findingPeers !== null) {\n this._findingPeers.destroy()\n this._findingPeers = null\n }\n\n if (this.root !== null) {\n await Promise.all(closing)\n this.corestores.delete(this)\n return\n }\n\n for (const store of this.corestores) {\n closing.push(store.close())\n }\n\n await Promise.all(closing)\n\n await this.cores.close()\n await this.storage.close()\n }\n\n async _attachMaybe(muxer, discoveryKey) {\n if (this.opened === false) await this.ready()\n if (\n !this.cores.opened(toHex(discoveryKey)) &&\n !(await this.storage.hasCore(discoveryKey, { ifMigrated: true }))\n ) {\n return\n }\n if (this.closing) return\n\n const core = this._openCore(discoveryKey, { createIfMissing: false })\n\n if (!core) return\n if (!core.opened) await core.ready()\n\n if (!core.replicator.attached(muxer)) {\n core.replicator.attachTo(muxer)\n }\n\n core.checkIfIdle()\n }\n\n _shouldReplicate(core, muxer) {\n return (\n core.replicator.downloading && !core.replicator.attached(muxer) && core.opened && this.active\n )\n }\n\n replicate(isInitiator, opts) {\n this._maybeClosed()\n\n const isExternal = isStream(isInitiator)\n const stream = Hypercore.createProtocolStream(isInitiator, {\n ...opts,\n ondiscoverykey: (discoveryKey) => {\n if (this.closing) return\n const muxer = stream.noiseStream.userData\n return this._attachMaybe(muxer, discoveryKey)\n }\n })\n\n if (this.cores.size > 0) {\n const muxer = stream.noiseStream.userData\n const uncork = muxer.uncork.bind(muxer)\n muxer.cork()\n\n for (const core of this.cores) {\n if (!this._shouldReplicate(core, muxer)) {\n continue\n }\n core.replicator.attachTo(muxer)\n }\n\n stream.noiseStream.opened.then(uncork)\n }\n\n const record = this.streamTracker.add(stream, isExternal)\n stream.once('close', () => this.streamTracker.remove(record))\n return stream\n }\n\n _maybeClosed() {\n if (this.closing || (this.root !== null && this.root.closing)) {\n throw new Error('Corestore is closed')\n }\n }\n\n async staticify(core, opts) {\n if (!this.opened) await this.ready()\n if (!core.opened) await core.ready()\n\n const rx = core.state.storage.read()\n\n const headPromise = rx.getHead()\n const authPromise = rx.getAuth()\n\n rx.tryFlush()\n\n const [head, auth] = await Promise.all([headPromise, authPromise])\n if (!head || head.length === 0) throw new Error('Core must have data')\n\n const prologue = {\n length: head.length,\n hash: head.rootHash\n }\n\n const manifest = {\n version: 1,\n hash: auth.manifest.hash,\n quorum: 0,\n signers: [],\n prologue\n }\n\n const c = {\n key: null,\n discoveryKey: null,\n manifest,\n core: core.state.storage.core\n }\n\n c.key = Hypercore.key(c.manifest)\n c.discoveryKey = Hypercore.discoveryKey(c.key)\n\n await this.storage.createCore(c)\n\n const staticCore = this.get({ ...opts, key: c.key })\n await staticCore.ready()\n return staticCore\n }\n\n get(opts) {\n this._maybeClosed()\n\n if (b4a.isBuffer(opts) || typeof opts === 'string') opts = { key: opts }\n if (!opts) opts = {}\n\n const conf = {\n preload: null,\n sessions: null,\n ongc: null,\n core: null,\n active: opts.active !== false,\n encryption: opts.encryption || null,\n encryptionKey: opts.encryptionKey || null, // back compat, should remove\n isBlockKey: !!opts.isBlockKey, // back compat, should remove\n valueEncoding: opts.valueEncoding || null,\n exclusive: !!opts.exclusive,\n manifest: opts.manifest || null,\n keyPair: opts.keyPair || null,\n onwait: opts.onwait || null,\n pushOnly: opts.pushOnly === true,\n wait: opts.wait !== false,\n timeout: opts.timeout || 0,\n draft: !!opts.draft,\n writable: opts.writable === undefined && this.readOnly ? false : opts.writable\n }\n\n // name requires us to rt to storage + ready, so needs preload\n // same goes if user has defined async preload obvs\n if (opts.name || opts.preload) {\n conf.preload = this._preload(opts)\n return this._makeSession(conf)\n }\n\n if (opts.discoveryKey && !opts.key && !opts.manifest) {\n conf.preload = this._preloadCheckIfExists(opts)\n return this._makeSession(conf)\n }\n\n // if not not we can sync create it, which just is easier for the\n // upstream user in terms of guarantees (key is there etc etc)\n const core = this._openCore(null, opts)\n\n conf.core = core\n conf.sessions = this.sessions.get(core.id)\n conf.ongc = this._ongcBound\n\n return this._makeSession(conf)\n }\n\n _makeSession(conf) {\n const session = new Hypercore(null, null, conf)\n\n if (this._findingPeers !== null) this._findingPeers.add(session)\n return session\n }\n\n async createKeyPair(name, ns = this.ns) {\n if (this.opened === false) await this.ready()\n return createKeyPair(this.primaryKey, ns, name)\n }\n\n async _preloadCheckIfExists(opts) {\n const has = await this.storage.hasCore(opts.discoveryKey)\n if (!has) throw STORAGE_EMPTY('No Hypercore is stored here')\n return this._preload(opts)\n }\n\n async _preload(opts) {\n if (opts.preload) opts = { ...opts, ...(await opts.preload) }\n if (this.opened === false) await this.ready()\n\n const discoveryKey = opts.name\n ? await this.storage.getAlias({ name: opts.name, namespace: this.ns })\n : null\n this._maybeClosed()\n\n const core = this._openCore(discoveryKey, opts)\n\n return {\n core,\n sessions: this.sessions.get(core.id),\n ongc: this._ongcBound,\n manifest: opts.manifest || null,\n encryption: opts.encryption || null,\n encryptionKey: opts.encryptionKey || null, // back compat, should remove\n isBlockKey: !!opts.isBlockKey // back compat, should remove\n }\n }\n\n _auth(discoveryKey, opts) {\n const result = {\n keyPair: null,\n key: null,\n discoveryKey,\n manifest: null,\n group: null\n }\n\n if (opts.name) {\n result.keyPair = createKeyPair(this.primaryKey, this.ns, opts.name)\n } else if (opts.keyPair) {\n result.keyPair = opts.keyPair\n }\n\n if (opts.manifest) {\n result.manifest = opts.manifest\n } else if (result.keyPair && !result.discoveryKey) {\n result.manifest = {\n version: this.manifestVersion,\n signers: [{ publicKey: result.keyPair.publicKey }]\n }\n }\n\n if (opts.group) {\n result.group = opts.group\n }\n\n if (opts.key) result.key = ID.decode(opts.key)\n else if (result.manifest) result.key = Hypercore.key(result.manifest)\n\n if (result.discoveryKey) return result\n\n if (opts.discoveryKey) result.discoveryKey = ID.decode(opts.discoveryKey)\n else if (result.key) result.discoveryKey = crypto.discoveryKey(result.key)\n else throw new Error('Could not derive discovery from input')\n\n return result\n }\n\n _openCore(discoveryKey, opts) {\n const auth = this._auth(discoveryKey, opts)\n\n const id = toHex(auth.discoveryKey)\n const existing = this.cores.resume(id, auth.group)\n if (existing && !existing.closing) return existing\n\n const core = Hypercore.createCore(this.storage, {\n preopen: existing && existing.opened ? existing.closing : null, // always wait for the prev one to close first in any case...\n eagerUpgrade: true,\n notDownloadingLinger: opts.notDownloadingLinger,\n allowFork: opts.allowFork !== false,\n allowPush: !!opts.allowPush,\n inflightRange: opts.inflightRange,\n compat: false, // no compat for now :)\n force: opts.force,\n createIfMissing: opts.createIfMissing,\n discoveryKey: auth.discoveryKey,\n overwrite: opts.overwrite,\n key: auth.key,\n keyPair: auth.keyPair,\n legacy: opts.legacy,\n manifest: auth.manifest,\n group: auth.group,\n globalCache: opts.globalCache || this.globalCache || null,\n alias: opts.name ? { name: opts.name, namespace: this.ns } : null\n })\n\n core.onidle = () => {\n this.cores.gc(core)\n }\n\n core.ongroupupdate = this._onGroupActiveBound\n\n core.replicator.ondownloading = () => {\n if (this.active) this.streamTracker.attachAll(core)\n }\n\n this.cores.set(id, core)\n return core\n }\n}\n\nmodule.exports = Corestore\n\nfunction isStream(s) {\n return typeof s === 'object' && s && typeof s.pipe === 'function'\n}\n\nfunction generateNamespace(namespace, name) {\n if (!b4a.isBuffer(name)) name = b4a.from(name)\n const out = b4a.allocUnsafeSlow(32)\n sodium.crypto_generichash_batch(out, [namespace, name])\n return out\n}\n\nfunction deriveSeed(primaryKey, namespace, name) {\n if (!b4a.isBuffer(name)) name = b4a.from(name)\n const out = b4a.alloc(32)\n sodium.crypto_generichash_batch(out, [NS, namespace, name], primaryKey)\n return out\n}\n\nfunction createKeyPair(primaryKey, namespace, name) {\n const seed = deriveSeed(primaryKey, namespace, name)\n const buf = b4a.alloc(sodium.crypto_sign_PUBLICKEYBYTES + sodium.crypto_sign_SECRETKEYBYTES)\n const keyPair = {\n publicKey: buf.subarray(0, sodium.crypto_sign_PUBLICKEYBYTES),\n secretKey: buf.subarray(sodium.crypto_sign_PUBLICKEYBYTES)\n }\n sodium.crypto_sign_seed_keypair(keyPair.publicKey, keyPair.secretKey, seed)\n return keyPair\n}\n\nfunction noop() {}\n\nfunction toHex(discoveryKey) {\n return b4a.toString(discoveryKey, 'hex')\n}\nmodule.exports = async function* audit(store, { dryRun = false } = {}) {\n for await (const { discoveryKey, core } of store.storage.createCoreStream()) {\n if (core.version < 1) continue // not migrated, ignore\n\n const c = store.get({ discoveryKey, active: false })\n await c.ready()\n\n yield { discoveryKey, key: c.key, audit: await c.core.audit({ dryRun }) }\n\n try {\n await c.close()\n } catch {\n // ignore if failed, we are auditing...\n }\n }\n}\nconst { EventEmitter } = require('events')\nconst { Readable } = require('streamx')\n\nclass GroupNotifyHandle extends EventEmitter {\n constructor(store, topic) {\n super()\n this._store = store\n this._topic = topic\n this.index = -1\n }\n\n updates(opts) {\n return Readable.deferred(async () => {\n const groupId = await this._store.storage.getGroup(this._topic).catch(noop)\n if (groupId === null) return null\n return this._store.storage.createGroupUpdateStream(groupId, opts)\n })\n }\n\n destroy() {\n this._store._removeGroupNotify(this)\n }\n}\n\nmodule.exports = GroupNotifyHandle\n\nfunction noop() {}\n{\n \"name\": \"corestore\",\n \"version\": \"7.11.1\",\n \"description\": \"A Hypercore factory that simplifies managing collections of cores.\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"lib/*\"\n ],\n \"imports\": {\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n }\n },\n \"dependencies\": {\n \"b4a\": \"^1.6.7\",\n \"bare-events\": \"^2.8.3\",\n \"hypercore\": \"^11.32.0\",\n \"hypercore-crypto\": \"^3.4.2\",\n \"hypercore-errors\": \"^1.4.0\",\n \"hypercore-id-encoding\": \"^1.3.0\",\n \"ready-resource\": \"^1.1.1\",\n \"sodium-universal\": \"^5.0.1\",\n \"streamx\": \"^2.26.0\",\n \"which-runtime\": \"^1.2.1\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.7.0\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"rache\": \"^1.0.0\"\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:bare\": \"brittle-bare --coverage test/all.js\",\n \"lint\": \"prettier --check . && lunte\",\n \"test:node\": \"brittle-node --coverage test/all.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/corestore.git\"\n },\n \"author\": \"Holepunch Inc\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/corestore/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/corestore\"\n}\nmodule.exports = function debounce (worker, context = null) {\n debounced.running = null\n return debounced\n\n async function debounced () {\n if (debounced.running !== null) {\n try {\n await debounced.running\n } catch (_) {\n // ignore - do not fail on old errors\n }\n }\n\n // another \"thread\" beat us to it, just piggy pack on that one\n if (debounced.running !== null) return debounced.running\n\n debounced.running = worker.call(context)\n\n try {\n return await debounced.running\n } finally {\n debounced.running = null\n }\n }\n}\n{\n \"name\": \"debounceify\",\n \"version\": \"1.1.0\",\n \"description\": \"Tiny async debouncer\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"standard\": \"^16.0.3\",\n \"tape\": \"^5.1.1\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/debounceify.git\"\n },\n \"scripts\": {\n \"test\": \"standard && tape test.js\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/debounceify/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/debounceify\"\n}\nconst fs = require('fs')\nconst path = require('path')\nconst fsx = require('fs-native-extensions')\nconst b4a = require('b4a')\nconst ReadyResource = require('ready-resource')\nconst FDLock = require('fd-lock')\n\nconst PLATFORM = global.Bare ? global.Bare.platform : global.process.platform\nconst IS_WIN = PLATFORM === 'win32'\nconst IS_LINUX = PLATFORM === 'linux'\nconst MODIFIED_SLACK = 5000\nconst EMPTY = b4a.alloc(0)\nconst ATTR = IS_LINUX ? 'user.device-file' : 'device-file'\n\nconst nl = IS_WIN ? '\\r\\n' : '\\n'\n\nclass DeviceFile extends ReadyResource {\n constructor(filename, { create = true, wait = false, lock = wait, data = {} } = {}) {\n super()\n\n this.filename = filename\n this.data = data\n this.lock = null\n\n this._create = create\n this._wait = wait\n this._lock = lock\n }\n\n async _open() {\n if (await verifyDeviceFile(this)) return\n if (!this._create) throwDeviceFileError('No device file present', false)\n await writeDeviceFile(this)\n }\n\n static async validate(filename, data) {\n const file = new DeviceFile(filename, { create: false, wait: false, data })\n try {\n await verifyDeviceFile(file)\n } catch (err) {\n if (err.fatal && err.code === 'DEVICE_FILE') return false\n throw err\n }\n return true\n }\n\n transfer() {\n return this.lock ? this.lock.transfer() : -1\n }\n\n async _close() {\n if (this.lock) await this.lock.close()\n }\n\n async suspend() {\n if (!this.opened) await this.ready()\n if (this.lock) await this.lock.suspend()\n }\n\n async resume() {\n if (!this.opened) await this.ready()\n if (this.lock) await this.lock.resume()\n }\n}\n\nmodule.exports = DeviceFile\n\nasync function writeDeviceFile(device) {\n let s = ''\n\n for (const [key, value] of Object.entries(device.data)) {\n if (value === null) continue\n s += key + '=' + value + nl\n }\n\n await fs.promises.mkdir(path.dirname(device.filename), { recursive: true })\n\n const fd = await open(device.filename, 'w')\n\n device.lock = device._lock ? new FDLock(fd, { wait: device._wait }) : null\n\n if (device.lock) {\n try {\n await device.lock.ready()\n } catch (err) {\n await device.lock.close()\n throw err\n }\n }\n\n const st = await fstat(fd)\n\n const created = Date.now()\n\n s += 'device/platform=' + PLATFORM + nl\n s += 'device/inode=' + st.ino + nl\n s += 'device/created=' + created + nl\n\n if (await setAttr(fd, ATTR, b4a.from('original'))) {\n s += 'device/attribute=original' + nl\n }\n\n await write(fd, b4a.from(s))\n\n if (!device.lock) await close(fd)\n}\n\nasync function verifyDeviceFile(device) {\n let fd = 0\n\n try {\n fd = await open(device.filename, 'r+')\n } catch (e) {\n fd = 0\n }\n\n if (fd === 0) return false\n\n device.lock = device._lock ? new FDLock(fd, { wait: device._wait }) : null\n\n if (device.lock) {\n try {\n await device.lock.ready()\n } catch (err) {\n await device.lock.close()\n throw err\n }\n }\n\n const buf = await read(fd)\n const result = {}\n\n const s = b4a.toString(buf).trim().split('\\n')\n\n let inode = 0\n let created = 0\n let attr = ''\n let platform = ''\n\n for (const ln of s) {\n const i = ln.indexOf('=')\n if (i === -1) continue\n\n const k = ln.slice(0, i).trim()\n const v = ln.slice(i + 1).trim()\n\n switch (k) {\n case 'device/platform':\n platform = v\n break\n case 'device/inode':\n inode = Number(v)\n break\n case 'device/created':\n created = Number(v)\n break\n case 'device/attribute':\n attr = v\n break\n default:\n result[k] = v\n break\n }\n }\n\n for (const [k, v] of Object.entries(device.data)) {\n if (v === null) continue\n if (result[k] === undefined) continue // allow upserts\n if (result[k] !== '' + v) {\n await teardown()\n throwDeviceFileError(`Invalid device file, ${k} has changed. Was ${result[k]}, is ${v}`, true)\n }\n }\n\n const st = await fstat(fd)\n const at = await getAttr(fd, ATTR)\n\n const sameAttr = b4a.toString(at || EMPTY) === attr\n const modified = Math.max(st.mtime.getTime(), st.birthtime.getTime())\n\n if (platform && platform !== PLATFORM) {\n await teardown()\n throwDeviceFileError('Invalid device file, was made on different platform', true)\n }\n\n if (!sameAttr) {\n await teardown()\n throwDeviceFileError('Invalid device file, was moved unsafely', true)\n }\n\n if (st.ino !== inode || (created && Math.abs(modified - created) >= MODIFIED_SLACK)) {\n await teardown()\n throwDeviceFileError('Invalid device file, was modified', true)\n }\n\n if (!device.lock) await close(fd)\n\n device.data = result\n return true\n\n async function teardown() {\n if (device.lock) await device.lock.close()\n else await close(fd)\n }\n}\n\nasync function getAttr(fd, name) {\n try {\n return await fsx.getAttr(fd, name)\n } catch {\n return null\n }\n}\n\nasync function setAttr(fd, name, value) {\n try {\n await fsx.setAttr(fd, name, value)\n return true\n } catch {\n return false\n }\n}\n\nfunction fstat(fd) {\n return new Promise((resolve, reject) => {\n fs.fstat(fd, (err, st) => {\n if (err) reject(err)\n resolve(st)\n })\n })\n}\n\nfunction close(fd) {\n return new Promise((resolve, reject) => {\n fs.close(fd, (err, st) => {\n if (err) reject(err)\n resolve(st)\n })\n })\n}\n\nfunction write(fd, buf) {\n return new Promise((resolve, reject) => {\n let offset = 0\n\n onwrite(null, 0)\n\n function onwrite(err, wrote) {\n if (err) return reject(err)\n if (offset === buf.byteLength) return resolve()\n offset += wrote\n fs.write(fd, buf, offset, buf.byteLength - offset, offset, onwrite)\n }\n })\n}\n\nfunction read(fd) {\n const buf = b4a.allocUnsafe(4096)\n\n return new Promise((resolve, reject) => {\n let offset = 0\n\n fs.read(fd, buf, 0, buf.byteLength, 0, onread)\n\n function onread(err, read) {\n if (err) return reject(err)\n if (read === 0) return resolve(buf.subarray(0, offset))\n offset += read\n fs.read(fd, buf, offset, buf.byteLength - offset, offset, onread)\n }\n })\n}\n\nfunction open(filename, flags) {\n return new Promise((resolve, reject) => {\n fs.open(filename, flags, (err, fd) => {\n if (err) reject(err)\n resolve(fd)\n })\n })\n}\n\nfunction throwDeviceFileError(message, fatal) {\n const err = new Error(message)\n err.code = 'DEVICE_FILE'\n err.fatal = fatal\n throw err\n}\n{\n \"name\": \"device-file\",\n \"version\": \"2.3.1\",\n \"description\": \"Device only file\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"dependencies\": {\n \"b4a\": \"^1.6.7\",\n \"bare-fs\": \"^4.0.1\",\n \"bare-path\": \"^3.0.0\",\n \"fd-lock\": \"^2.1.0\",\n \"fs-native-extensions\": \"^1.4.0\",\n \"ready-resource\": \"^1.2.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.13.1\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:node\": \"brittle-node --coverage test.js\",\n \"test:bare\": \"brittle-bare --coverage test.js\"\n },\n \"imports\": {\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n }\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/device-file.git\"\n },\n \"author\": \"Holepunch Inc\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/device-file/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/device-file\"\n}\nconst { EventEmitter } = require('events')\nconst Table = require('kademlia-routing-table')\nconst TOS = require('time-ordered-set')\nconst UDX = require('udx-native')\nconst sodium = require('sodium-universal')\nconst c = require('compact-encoding')\nconst NatSampler = require('nat-sampler')\nconst b4a = require('b4a')\nconst NetworkHealth = require('./lib/health')\nconst IO = require('./lib/io')\nconst Query = require('./lib/query')\nconst Session = require('./lib/session')\nconst peer = require('./lib/peer')\nconst { UNKNOWN_COMMAND, INVALID_TOKEN } = require('./lib/errors')\nconst { PING, PING_NAT, FIND_NODE, DOWN_HINT, DELAYED_PING } = require('./lib/commands')\n\nconst TMP = b4a.allocUnsafe(32)\nconst TICK_INTERVAL = 5000\nconst SLEEPING_INTERVAL = 3 * TICK_INTERVAL\nconst STABLE_TICKS = 240 // if nothing major bad happens in ~20mins we can consider this node stable (if nat is friendly)\nconst MORE_STABLE_TICKS = 3 * STABLE_TICKS\nconst REFRESH_TICKS = 60 // refresh every ~5min when idle\nconst RECENT_NODE = 12 // we've heard from a node less than 1min ago\nconst OLD_NODE = 360 // if an node has been around more than 30 min we consider it old\n\nconst DEFAULTS = {\n concurrency: 10,\n maxWindow: IO.DEFAULT_MAX_WINDOW,\n maxPingDelay: 10_000\n}\n\nclass DHT extends EventEmitter {\n constructor(opts = {}) {\n super()\n\n this.bootstrapNodes = opts.bootstrap === false ? [] : (opts.bootstrap || []).map(parseNode)\n this.table = new Table(randomBytes(32))\n this.nodes = new TOS()\n this.udx = opts.udx || new UDX()\n this.io = new IO(this.table, this.udx, {\n ...opts,\n onrequest: this._onrequest.bind(this),\n onresponse: this._onresponse.bind(this),\n ontimeout: this._ontimeout.bind(this)\n })\n this.health = new NetworkHealth(this)\n\n this.concurrency = opts.concurrency || DEFAULTS.concurrency\n this.maxPingDelay = opts.maxPingDelay || DEFAULTS.maxPingDelay\n this.bootstrapped = false\n this.ephemeral = true\n this.firewalled = this.io.firewalled\n this.adaptive = typeof opts.ephemeral !== 'boolean' && opts.adaptive !== false\n this.destroyed = false\n this.suspended = false\n this.online = true\n this.degraded = false\n this.stats = {\n queries: { active: 0, total: 0 },\n requests: this.io.stats.requests,\n commands: {\n ping: this.io.stats.commands[PING],\n pingNat: this.io.stats.commands[PING_NAT],\n findNode: this.io.stats.commands[FIND_NODE],\n downHint: this.io.stats.commands[DOWN_HINT]\n }\n }\n\n this._nat = new NatSampler()\n this._quickFirewall = opts.quickFirewall !== false\n this._forcePersistent = opts.ephemeral === false\n this._repinging = 0\n this._checks = 0\n this._tick = randomOffset(100) // make sure to random offset all the network ticks\n this._refreshTicks = randomOffset(REFRESH_TICKS)\n this._stableTicks = this.adaptive ? STABLE_TICKS : 0\n this._tickInterval = setInterval(this._ontick.bind(this), TICK_INTERVAL)\n this._lastTick = Date.now()\n this._lastHost = null\n this._filterNode = opts.filterNode || opts.addNode || null // opts.addNode is deprecating, use opts.filterNode instead\n this._onrow = (row) => row.on('full', (node) => this._onfullrow(node, row))\n this._nonePersistentSamples = []\n this._bootstrapping = this._bootstrap()\n this._bootstrapping.catch(noop)\n this._sendDownHints = opts.sendDownHints !== false\n this._downHintsRateLimit =\n opts.downHintsRateLimit !== undefined ? opts.downHintsRateLimit : 10 * 5\n this._downHintsSentPerTick = 0\n this._pendingTimers = new Set()\n\n this.table.on('row', this._onrow)\n\n this.io.networkInterfaces.on('change', (interfaces) => this._onnetworkchange(interfaces))\n\n if (opts.nodes) {\n for (let i = opts.nodes.length - 1; i >= 0; i--) {\n this.addNode(opts.nodes[i])\n }\n }\n }\n\n static DEFAULTS = DEFAULTS\n\n static bootstrapper(port, host, opts) {\n if (!port) throw new Error('Port is required')\n if (!host) throw new Error('Host is required')\n if (host === '0.0.0.0' || host === '::') throw new Error('Invalid host')\n if (!UDX.isIPv4(host)) throw new Error('Host must be a IPv4 address')\n\n const dht = new this({\n port,\n ephemeral: false,\n firewalled: false,\n anyPort: false,\n bootstrap: [],\n ...opts\n })\n dht._nat.add(host, port)\n return dht\n }\n\n get id() {\n return this.ephemeral ? null : this.table.id\n }\n\n get host() {\n return this._nat.host\n }\n\n get port() {\n return this._nat.port\n }\n\n get randomized() {\n return this._nat.host !== null && this._nat.port === 0\n }\n\n get socket() {\n return this.firewalled ? this.io.clientSocket : this.io.serverSocket\n }\n\n get config() {\n return {\n concurrency: this.concurrency,\n maxWindow: this.io.congestion._maxWindow,\n randomPunchInterval: this._randomPunchInterval,\n connectionKeepAlive: this.connectionKeepAlive,\n sendDownHints: this._sendDownHints,\n downHintsRateLimit: this._downHintsRateLimit\n }\n }\n\n onmessage(socket, buf, rinfo) {\n if (buf.byteLength > 1) this.io.onmessage(socket, buf, rinfo)\n }\n\n bind() {\n return this.io.bind()\n }\n\n async suspend({ log = noop } = {}) {\n log('Suspending waiting for io bind...')\n await this.io.bind()\n log('Done, continuing')\n if (this.suspended || this.destroyed) return\n this.suspended = true\n clearInterval(this._tickInterval)\n log('Done, suspending io')\n await this.io.suspend({ log })\n log('Done, dht suspended')\n this.emit('suspend')\n }\n\n async resume({ log = noop } = {}) {\n if (!this.suspended || this.destroyed) return\n this.suspended = false\n this._tickInterval = setInterval(this._ontick.bind(this), TICK_INTERVAL)\n this._onwakeup()\n log('Resuming io')\n await this.io.resume()\n log('Done, dht resumed')\n this.io.networkInterfaces.on('change', (interfaces) => this._onnetworkchange(interfaces))\n this.refresh()\n this.emit('resume')\n }\n\n address() {\n const socket = this.socket\n return socket ? socket.address() : null\n }\n\n localAddress() {\n if (!this.io.serverSocket) return null\n\n return {\n host: localIP(this.udx),\n port: this.io.serverSocket.address().port\n }\n }\n\n remoteAddress() {\n if (!this.host) return null\n if (!this.port) return null\n if (this.firewalled) return null\n if (!this.io.serverSocket) return null\n\n const port = this.io.serverSocket.address().port\n if (port !== this.port) return null\n\n return {\n host: this.host,\n port\n }\n }\n\n addNode({ host, port }) {\n this._addNode({\n id: peer.id(host, port),\n port,\n host,\n token: null,\n to: null,\n sampled: 0,\n added: this._tick,\n pinged: 0,\n seen: 0,\n downHints: 0,\n prev: null,\n next: null\n })\n }\n\n toArray(opts) {\n const limit = opts && opts.limit\n if (limit === 0) return []\n return this.nodes.toArray({ limit, reverse: true }).map(({ host, port }) => ({ host, port }))\n }\n\n async fullyBootstrapped() {\n return this._bootstrapping\n }\n\n ready() {\n // Deprecating, use fullyBootstrapped instead (removed on next major)\n return this.fullyBootstrapped()\n }\n\n findNode(target, opts) {\n if (this.destroyed) throw new Error('Node destroyed')\n this._refreshTicks = REFRESH_TICKS\n return new Query(this, target, true, FIND_NODE, null, opts)\n }\n\n query({ target, command, value }, opts) {\n if (this.destroyed) throw new Error('Node destroyed')\n this._refreshTicks = REFRESH_TICKS\n return new Query(this, target, false, command, value || null, opts)\n }\n\n ping({ host, port }, opts) {\n let value = null\n\n if (opts && opts.size && opts.size > 0) value = b4a.alloc(opts.size)\n\n const req = this.io.createRequest(\n { id: null, host, port },\n null,\n true,\n PING,\n null,\n value,\n (opts && opts.session) || null,\n opts && opts.ttl\n )\n return this._requestToPromise(req, opts)\n }\n\n delayedPing({ host, port }, delayMs, opts) {\n if (delayMs > this.maxPingDelay) {\n throw new Error(`Delay exceeds max delay: ${this.maxPingDelay}ms`)\n }\n\n const value = b4a.allocUnsafe(4)\n c.uint32.encode({ start: 0, end: 4, buffer: value }, delayMs)\n\n const req = this.io.createRequest(\n { id: null, host, port },\n null,\n true,\n DELAYED_PING,\n null,\n value,\n (opts && opts.session) || null,\n opts && opts.ttl\n )\n // add 1 second to the timeout to account for network overhead\n req.timeout = delayMs + 1_000\n return this._requestToPromise(req, opts)\n }\n\n async rttStats() {\n const stats = {\n successes: 0,\n errors: 0,\n responses: {\n avgRtt: 0,\n errors: 0,\n avgCloserNodes: 0\n },\n closestReplies: {\n avgRtt: 0,\n errors: 0,\n avgCloserNodes: 0\n }\n }\n\n if (this.nodes.latest) {\n const q = this.findNode(this.nodes.latest.id)\n\n let responseCount = 0\n let closestCount = 0\n\n for await (const msg of q) {\n stats.responses.avgRtt += msg.rtt\n stats.responses.errors += msg.error\n stats.responses.avgCloserNodes += msg.closerNodes?.length || 0\n responseCount++\n }\n stats.responses.avgRtt /= responseCount\n stats.responses.avgCloserNodes /= responseCount\n\n for await (const msg of q.closestReplies) {\n stats.closestReplies.avgRtt += msg.rtt\n stats.closestReplies.errors += msg.error\n stats.closestReplies.avgCloserNodes += msg.closerNodes?.length || 0\n closestCount++\n }\n stats.closestReplies.avgRtt /= closestCount\n stats.closestReplies.avgCloserNodes /= closestCount\n\n stats.successes = q.successes\n stats.errors = q.errors\n }\n\n return stats\n }\n\n request({ token = null, command, target = null, value = null }, { host, port }, opts) {\n const req = this.io.createRequest(\n { id: null, host, port },\n token,\n false,\n command,\n target,\n value,\n (opts && opts.session) || null,\n opts && opts.ttl\n )\n return this._requestToPromise(req, opts)\n }\n\n session() {\n return new Session(this)\n }\n\n _requestToPromise(req, opts) {\n if (req === null) return Promise.reject(new Error('Node destroyed'))\n\n if (opts && opts.socket) req.socket = opts.socket\n if (opts && opts.retry === false) req.retries = 0\n\n return new Promise((resolve, reject) => {\n req.onresponse = resolve\n req.onerror = reject\n req.send()\n })\n }\n\n async _bootstrap() {\n const self = this\n\n await Promise.resolve() // wait a tick, so apis can be used from the outside\n await this.io.bind()\n\n this.emit('listening')\n\n // TODO: some papers describe more advanced ways of bootstrapping - we should prob look into that\n\n let first = this.firewalled && this._quickFirewall && !this._forcePersistent\n let testNat = false\n\n const onlyFirewall = !this._forcePersistent\n\n for (let i = 0; i < 2; i++) {\n await this._backgroundQuery(this.table.id).on('data', ondata).finished()\n\n if (this.bootstrapped || (!testNat && !this._forcePersistent)) break\n if (!(await this._updateNetworkState(onlyFirewall))) break\n }\n\n if (this.bootstrapped) return\n this.bootstrapped = true\n\n this.emit('ready')\n\n function ondata(data) {\n // Simple QUICK nat heuristic.\n // If we get ONE positive nat ping before the bootstrap query finishes\n // then we always to a nat test, no matter if we are adaptive...\n // This should be expanded in the future to try more than one node etc, not always hit the first etc\n // If this fails, then nbd, as the onstable hook will pick it up later.\n\n if (!first) return\n first = false\n\n const value = b4a.allocUnsafe(2)\n c.uint16.encode({ start: 0, end: 2, buffer: value }, self.io.serverSocket.address().port)\n\n self._request(\n data.from,\n false,\n true,\n PING_NAT,\n null,\n value,\n null,\n () => {\n testNat = true\n },\n noop\n )\n }\n }\n\n refresh() {\n const node = this.table.random()\n this._backgroundQuery(node ? node.id : this.table.id).on('error', noop)\n }\n\n async destroy() {\n const emitClose = !this.destroyed\n this.destroyed = true\n clearInterval(this._tickInterval)\n for (const timer of this._pendingTimers) {\n clearTimeout(timer)\n }\n await this.io.destroy()\n if (emitClose) this.emit('close')\n }\n\n _request(to, force, internal, command, target, value, session, onresponse, onerror) {\n if (internal && !this._sendDownHints && command === DOWN_HINT) return null\n const req = this.io.createRequest(to, null, internal, command, target, value, session)\n if (req === null) return null\n\n req.onresponse = onresponse\n req.onerror = onerror\n req.send(force)\n\n return req\n }\n\n _natAdd(host, port) {\n const prevHost = this._nat.host\n const prevPort = this._nat.port\n\n this._nat.add(host, port)\n\n if (prevHost === this._nat.host && prevPort === this._nat.port) return\n\n this.emit('nat-update', this._nat.host, this._nat.port)\n }\n\n // we don't check that this is a bootstrap node but we limit the sample size to very few nodes, so fine\n _sampleBootstrapMaybe(from, to) {\n if (this._nonePersistentSamples.length >= Math.max(1, this.bootstrapNodes.length)) return\n const id = from.host + ':' + from.port\n if (this._nonePersistentSamples.indexOf(id) > -1) return\n this._nonePersistentSamples.push(id)\n this._natAdd(to.host, to.port)\n }\n\n _addNodeFromNetwork(sample, from, to) {\n if (this._filterNode !== null && !this._filterNode(from)) {\n return\n }\n\n if (from.id === null) {\n this._sampleBootstrapMaybe(from, to)\n return\n }\n\n const oldNode = this.table.get(from.id)\n\n // refresh it, if we've seen this before\n if (oldNode) {\n if (sample && (oldNode.sampled === 0 || this._tick - oldNode.sampled >= OLD_NODE)) {\n oldNode.to = to\n oldNode.sampled = this._tick\n this._natAdd(to.host, to.port)\n }\n\n oldNode.pinged = oldNode.seen = this._tick\n this.nodes.add(oldNode)\n return\n }\n\n this._addNode({\n id: from.id,\n port: from.port,\n host: from.host,\n to,\n sampled: 0,\n added: this._tick,\n pinged: this._tick, // last time we interacted with them\n seen: this._tick, // last time we heard from them\n downHints: 0,\n prev: null,\n next: null\n })\n }\n\n _addNode(node) {\n if (this.nodes.has(node) || b4a.equals(node.id, this.table.id)) return\n\n node.added = node.pinged = node.seen = this._tick\n\n if (!this.table.add(node)) return\n this.nodes.add(node)\n\n if (node.to && node.sampled === 0) {\n node.sampled = this._tick\n this._natAdd(node.to.host, node.to.port)\n }\n\n this.emit('add-node', node)\n }\n\n _removeStaleNode(node, lastSeen) {\n if (node.seen <= lastSeen) this._removeNode(node)\n }\n\n _removeNode(node) {\n if (!this.nodes.has(node)) return\n\n this.table.remove(node.id)\n this.nodes.remove(node)\n\n this.emit('remove-node', node)\n }\n\n _onwakeup() {\n this._tick += 2 * OLD_NODE // bump the tick enough that everything appears old.\n this._tick += 8 - (this._tick & 7) - 2 // triggers a series of pings in two ticks\n this._stableTicks = MORE_STABLE_TICKS\n this._refreshTicks = 1 // triggers a refresh next tick (allow network time to wake up also)\n this._lastHost = null // clear network cache check\n this.health.reset()\n\n if (this.adaptive) {\n // TODO: re-enable this as soon as we find out why this is over triggering in some edge cases\n // this.firewalled = true\n // this.io.firewalled = true\n\n if (!this.ephemeral) {\n this.ephemeral = true\n this.io.ephemeral = true\n this.emit('ephemeral')\n }\n }\n\n this.emit('wakeup')\n }\n\n _onfullrow(newNode, row) {\n if (!this.bootstrapped || this._repinging >= 3) return\n\n let oldest = null\n for (const node of row.nodes) {\n if (node.pinged === this._tick) continue\n if (\n oldest === null ||\n oldest.pinged > node.pinged ||\n (oldest.pinged === node.pinged && oldest.added > node.added)\n ) {\n oldest = node\n }\n }\n\n if (oldest === null) return\n if (this._tick - oldest.pinged < RECENT_NODE && this._tick - oldest.added > OLD_NODE) return\n\n this._repingAndSwap(newNode, oldest)\n }\n\n _onnetworkchange(interfaces) {\n this.emit('network-change', interfaces)\n this.emit('network-update')\n }\n\n _repingAndSwap(newNode, oldNode) {\n const self = this\n const lastSeen = oldNode.seen\n\n oldNode.pinged = this._tick\n\n this._repinging++\n this._request(\n { id: null, host: oldNode.host, port: oldNode.port },\n false,\n true,\n PING,\n null,\n null,\n null,\n onsuccess,\n onswap\n )\n\n function onsuccess(m) {\n if (oldNode.seen <= lastSeen) return onswap()\n self._repinging--\n }\n\n function onswap(e) {\n self._repinging--\n self._removeNode(oldNode)\n self._addNode(newNode)\n }\n }\n\n _onrequest(req, external) {\n if (req.from.id !== null) {\n this._addNodeFromNetwork(!external, req.from, req.to)\n }\n\n if (req.internal) {\n switch (req.command) {\n // standard keep alive call\n case PING: {\n req.sendReply(0, null, false, false)\n return\n }\n case DELAYED_PING: {\n this._ondelayedping(req)\n return\n }\n // check if the other side can receive a message to their other socket\n case PING_NAT: {\n if (req.value === null || req.value.byteLength < 2) return\n const port = c.uint16.decode({ start: 0, end: 2, buffer: req.value })\n if (port === 0) return\n req.from.port = port\n req.sendReply(0, null, false, false)\n return\n }\n // empty dht reply back\n case FIND_NODE: {\n if (!req.target) return\n req.sendReply(0, null, false, true)\n return\n }\n // \"this is node you sent me is down\" - let's try to ping it\n case DOWN_HINT: {\n if (req.value === null || req.value.byteLength < 6) return\n if (this._checks < 10) {\n sodium.crypto_generichash(TMP, req.value.subarray(0, 6))\n const node = this.table.get(TMP)\n if (node && (node.pinged < this._tick || node.downHints === 0)) {\n node.downHints++\n this._check(node)\n }\n }\n req.sendReply(0, null, false, false)\n return\n }\n }\n\n req.sendReply(UNKNOWN_COMMAND, null, false, req.target !== null)\n return\n }\n\n // ask the user to handle it or reply back with a bad command\n if (this.onrequest(req) === false) {\n req.sendReply(UNKNOWN_COMMAND, null, false, req.target !== null)\n }\n }\n\n onrequest(req) {\n return this.emit('request', req)\n }\n\n _ondelayedping(req) {\n if (req.value === null || req.value.byteLength < 4) return\n const delayMs = c.uint32.decode({ start: 0, end: 4, buffer: req.value })\n if (delayMs > this.maxPingDelay) return\n const timer = setTimeout(() => {\n if (this.destroyed) return\n this._pendingTimers.delete(timer)\n req.sendReply(0, null, false, false)\n }, delayMs)\n this._pendingTimers.add(timer)\n }\n\n _onresponse(res, external) {\n this._addNodeFromNetwork(!external, res.from, res.to)\n }\n\n _ontimeout(req) {\n if (!req.to.id) return\n const node = this.table.get(req.to.id)\n if (node) this._removeNode(node)\n }\n\n _pingSome() {\n let cnt = this.io.inflight.length > 2 ? 3 : 5\n let oldest = this.nodes.oldest\n\n // tiny dht, pinged the bootstrap again\n if (!oldest) {\n this.refresh()\n return\n }\n\n // we've recently pinged the oldest one, so only trigger a couple of repings\n if (this._tick - oldest.pinged < RECENT_NODE) {\n cnt = 2\n }\n\n while (cnt--) {\n if (!oldest || this._tick === oldest.pinged) continue\n this._check(oldest)\n oldest = oldest.next\n }\n }\n\n _check(node) {\n node.pinged = this._tick\n\n const lastSeen = node.seen\n const onresponse = () => {\n this._checks--\n this._removeStaleNode(node, lastSeen)\n }\n const onerror = () => {\n this._checks--\n this._removeNode(node)\n }\n\n this._checks++\n this._request(\n { id: null, host: node.host, port: node.port },\n false,\n true,\n PING,\n null,\n null,\n null,\n onresponse,\n onerror\n )\n }\n\n _ontick() {\n const time = Date.now()\n\n if (time - this._lastTick > SLEEPING_INTERVAL && this.suspended === false) {\n this._onwakeup()\n } else {\n this._tick++\n }\n\n this._lastTick = time\n\n if (!this.bootstrapped || this.suspended) return\n\n if (this.adaptive && this.ephemeral && --this._stableTicks <= 0) {\n if (this._lastHost === this._nat.host) {\n // do not recheck the same network...\n this._stableTicks = MORE_STABLE_TICKS\n } else {\n this._updateNetworkState() // the promise returned here never fails so just ignore it\n }\n }\n\n if ((this._tick & 7) === 0) {\n this._pingSome()\n }\n\n if (\n ((this._tick & 63) === 0 && this.nodes.length < this.table.k) ||\n --this._refreshTicks <= 0\n ) {\n this.refresh()\n }\n\n this._downHintsSentPerTick = 0\n this.health.update()\n }\n\n async _updateNetworkState(onlyFirewall = false) {\n if (!this.ephemeral) return false\n if (onlyFirewall && !this.firewalled) return false\n\n const { host, port } = this._nat\n\n if (!onlyFirewall) {\n // remember what host we checked and reset the counter\n this._stableTicks = MORE_STABLE_TICKS\n this._lastHost = host\n }\n\n // check if we have a consistent host and port\n if (host === null || port === 0) {\n return false\n }\n\n const natSampler = this.firewalled ? new NatSampler() : this._nat\n\n // ask remote nodes to ping us on our server socket to see if we have the port open\n const firewalled = this.firewalled && (await this._checkIfFirewalled(natSampler))\n if (firewalled) return false\n\n this.firewalled = this.io.firewalled = false\n\n // incase it's called in parallel for some reason, or if our nat status somehow changed\n if (!this.ephemeral || host !== this._nat.host || port !== this._nat.port) return false\n // if the firewall probe returned a different host / non consistent port, bail as well\n if (natSampler.host !== host || natSampler.port === 0) return false\n\n const id = peer.id(natSampler.host, natSampler.port)\n\n if (!onlyFirewall) {\n this.ephemeral = this.io.ephemeral = false\n }\n\n if (natSampler !== this._nat) {\n const prevHost = this._nat.host\n const prevPort = this._nat.port\n\n this._nonePersistentSamples = []\n this._nat = natSampler\n\n if (prevHost !== this._nat.host || prevPort !== this._nat.port) {\n this.emit('nat-update', this._nat.host, this._nat.port)\n }\n }\n\n // TODO: we should make this a bit more defensive in terms of using more\n // resources to make sure that the new routing table contains as many alive nodes\n // as possible, vs blindly copying them over...\n\n // all good! copy over the old routing table to the new one\n if (!b4a.equals(this.table.id, id)) {\n const nodes = this.table.toArray()\n\n this.table = this.io.table = new Table(id)\n\n for (const node of nodes) {\n if (b4a.equals(node.id, id)) continue\n if (!this.table.add(node)) this.nodes.remove(node)\n }\n\n this.table.on('row', this._onrow)\n\n // we need to rebootstrap/refresh since we updated our id\n if (this.bootstrapped) this.refresh()\n }\n\n if (!this.ephemeral) {\n this.emit('persistent')\n }\n\n return true\n }\n\n async *_resolveBootstrapNodes() {\n for (let { host, port } of this.bootstrapNodes) {\n let doLookup = false\n\n if (host.indexOf('@') === -1) {\n doLookup = true\n } else {\n const [suggestedIP, fallbackHost] = host.split('@')\n try {\n await this.ping({ host: suggestedIP, port })\n host = suggestedIP\n } catch {\n host = fallbackHost\n doLookup = true\n }\n }\n\n if (doLookup) {\n try {\n host = UDX.isIPv4(host) ? host : (await this.udx.lookup(host, { family: 4 })).host\n } catch {\n continue\n }\n }\n\n yield {\n id: peer.id(host, port),\n host,\n port\n }\n }\n }\n\n async _addBootstrapNodes(nodes) {\n for await (const node of this._resolveBootstrapNodes()) {\n nodes.push(node)\n }\n }\n\n async _checkIfFirewalled(natSampler = new NatSampler()) {\n const nodes = []\n for (let node = this.nodes.latest; node && nodes.length < 5; node = node.prev) {\n nodes.push(node)\n }\n\n if (nodes.length < 5) await this._addBootstrapNodes(nodes)\n // if no nodes are available, including bootstrappers - bail\n if (nodes.length === 0) return true\n\n const hosts = new Set()\n const value = b4a.allocUnsafe(2)\n\n c.uint16.encode({ start: 0, end: 2, buffer: value }, this.io.serverSocket.address().port)\n\n // double check they actually came on the server socket...\n this.io.serverSocket.on('message', onmessage)\n\n const pongs = await requestAll(this, true, PING_NAT, value, nodes)\n\n let count = 0\n for (const res of pongs) {\n if (hosts.has(res.from.host)) {\n count++\n natSampler.add(res.to.host, res.to.port)\n }\n }\n\n this.io.serverSocket.removeListener('message', onmessage)\n\n // if we got no or very few replies, consider it a fluke\n if (count < (nodes.length >= 5 ? 3 : 1)) return true\n\n // check that the server socket has the same ip as the client socket\n if (natSampler.host === null || this._nat.host !== natSampler.host) return true\n\n // check that the local port of the server socket is the same as the remote port\n // TODO: we might want a flag to opt out of this heuristic for specific remapped port servers\n if (natSampler.port === 0 || natSampler.port !== this.io.serverSocket.address().port) {\n return true\n }\n\n return false\n\n function onmessage(_, { host }) {\n hosts.add(host)\n }\n }\n\n _backgroundQuery(target) {\n this._refreshTicks = REFRESH_TICKS\n\n const backgroundCon = Math.min(this.concurrency, Math.max(2, (this.concurrency / 8) | 0))\n const q = new Query(this, target, true, FIND_NODE, null, {\n concurrency: backgroundCon\n })\n\n q.on('data', () => {\n // yield to other traffic\n q.concurrency = this.io.inflight.length < 3 ? this.concurrency : backgroundCon\n })\n\n return q\n }\n\n // called by health\n _online() {\n if (this.online && !this.degraded) return\n this.online = true\n this.degraded = false\n this.emit('network-update')\n }\n\n // called by health\n _degraded() {\n if (this.degraded) return\n this.online = true\n this.degraded = true\n this.emit('network-update')\n }\n\n // called by health\n _offline() {\n if (!this.online) return\n this.online = false\n this.degraded = false\n this.emit('network-update')\n }\n}\n\nDHT.OK = 0\nDHT.ERROR_UNKNOWN_COMMAND = UNKNOWN_COMMAND\nDHT.ERROR_INVALID_TOKEN = INVALID_TOKEN\n\nmodule.exports = DHT\n\nfunction localIP(udx, family = 4) {\n let host = null\n\n for (const n of udx.networkInterfaces()) {\n if (n.family !== family || n.internal) continue\n\n // mac really likes en0, mb a better way but this shouldnt be bad anywhere so return now\n if (n.name === 'en0') return n.host\n\n // otherwise pick the first non internal host (let the loop continue in case we see en0)\n if (host === null) host = n.host\n }\n\n return host || (family === 4 ? '127.0.0.1' : '::1')\n}\n\nfunction parseNode(s) {\n if (typeof s === 'object') return s\n if (typeof s === 'number') return { host: '127.0.0.1', port: s }\n const [host, port] = s.split(':')\n if (!port) throw new Error('Bootstrap node format is host:port')\n\n return {\n host,\n port: Number(port)\n }\n}\n\nfunction randomBytes(n) {\n const b = b4a.alloc(n)\n sodium.randombytes_buf(b)\n return b\n}\n\nfunction randomOffset(n) {\n return n - ((Math.random() * 0.5 * n) | 0)\n}\n\nfunction requestAll(dht, internal, command, value, nodes) {\n let missing = nodes.length\n const replies = []\n\n return new Promise((resolve) => {\n for (const node of nodes) {\n const req = dht._request(\n node,\n false,\n internal,\n command,\n null,\n value,\n null,\n onsuccess,\n onerror\n )\n if (!req) return resolve(replies)\n }\n\n function onsuccess(res) {\n replies.push(res)\n if (--missing === 0) resolve(replies)\n }\n\n function onerror() {\n if (--missing === 0) resolve(replies)\n }\n })\n}\n\nfunction noop() {}\nexports.PING = 0\nexports.PING_NAT = 1\nexports.FIND_NODE = 2\nexports.DOWN_HINT = 3\nexports.DELAYED_PING = 4\nmodule.exports = class DHTError extends Error {\n constructor(msg, code, fn = DHTError) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'DHTError'\n }\n\n static UNKNOWN_COMMAND = 1\n static INVALID_TOKEN = 2\n\n static REQUEST_TIMEOUT(msg = 'Request timed out') {\n return new DHTError(msg, 'REQUEST_TIMEOUT', DHTError.REQUEST_TIMEOUT)\n }\n\n static REQUEST_DESTROYED(msg = 'Request destroyed') {\n return new DHTError(msg, 'REQUEST_DESTROYED', DHTError.REQUEST_DESTROYED)\n }\n\n static IO_SUSPENDED(msg = 'I/O suspended') {\n return new DHTError(msg, 'IO_SUSPENDED', DHTError.IO_SUSPENDED)\n }\n}\nconst MAX_HEALTH_WINDOW = 4\nconst OFFLINE_THRESHOLD = 2\nconst IDLE_THRESHOLD = 4\nconst DEGRADED_TIMEOUT_RATE_THRESHOLD = 0.5\n\nmodule.exports = class NetworkHealth {\n constructor(dht) {\n this._dht = dht\n this._window = []\n this._head = -1\n this._offlineTicks = 0\n this._degradedTicks = 0\n this._healthyTicks = 0\n this.online = true\n this.degraded = false\n }\n\n get oldest() {\n return this._window[this._tail]\n }\n\n get previous() {\n return this._window[(this._head - 1 + MAX_HEALTH_WINDOW) % MAX_HEALTH_WINDOW]\n }\n\n get newest() {\n return this._window[this._head]\n }\n\n get responses() {\n if (!this.newest || !this.previous) return 0\n return this.newest.responses - this.previous.responses\n }\n\n get timeouts() {\n if (!this.newest || !this.previous) return 0\n return this.newest.timeouts - this.previous.timeouts\n }\n\n get timeoutsRate() {\n if (this.timeouts === 0) return 0\n return this.timeouts / (this.responses + this.timeouts)\n }\n\n get cold() {\n return this._window.length < MAX_HEALTH_WINDOW\n }\n\n get idle() {\n return this.responses + this.timeouts < IDLE_THRESHOLD\n }\n\n get stats() {\n return {\n online: this.online,\n degraded: this.degraded,\n cold: this.cold,\n idle: this.idle,\n responses: this.responses,\n timeouts: this.timeouts,\n timeoutsRate: this.timeoutsRate\n }\n }\n\n get _tail() {\n return (this._head + 1) % MAX_HEALTH_WINDOW\n }\n\n reset() {\n this._window = []\n this._head = -1\n this._offlineTicks = 0\n this._degradedTicks = 0\n this._healthyTicks = 0\n this.online = true\n this.degraded = false\n this._dht._online()\n }\n\n update() {\n // update counters before dropping oldest\n if (this.oldest?.degraded) this._degradedTicks--\n else if (this.oldest?.degraded === false) this._healthyTicks--\n\n // move window\n this._head = this._tail\n this._window[this._head] = {\n responses: this._dht.stats.requests.responses,\n timeouts: this._dht.stats.requests.timeouts\n }\n\n // skip state changes\n if (this.cold || this.idle) return\n\n // update newest\n this.newest.offline = this.responses === 0\n this.newest.degraded =\n !this.newest.offline && this.timeoutsRate > DEGRADED_TIMEOUT_RATE_THRESHOLD\n\n // update counters\n if (this.newest.offline) this._offlineTicks++\n else {\n this._offlineTicks = 0\n if (this.newest.degraded) this._degradedTicks++\n else this._healthyTicks++\n }\n\n // check online/offline\n if (!this.newest.offline) this.online = true\n else if (this._offlineTicks >= OFFLINE_THRESHOLD) this.online = false\n\n // check degraded\n if (!this.online || this._healthyTicks === MAX_HEALTH_WINDOW) this.degraded = false\n else if (this._degradedTicks === MAX_HEALTH_WINDOW) this.degraded = true\n\n // fire events\n if (this.online && !this.degraded) this._dht._online()\n else if (this.degraded) this._dht._degraded()\n else this._dht._offline()\n }\n}\nconst FIFO = require('fast-fifo')\nconst sodium = require('sodium-universal')\nconst c = require('compact-encoding')\nconst b4a = require('b4a')\nconst AdaptiveTimeout = require('adaptive-timeout')\nconst peer = require('./peer')\nconst { INVALID_TOKEN, REQUEST_TIMEOUT, REQUEST_DESTROYED, IO_SUSPENDED } = require('./errors')\n\nconst VERSION = 0b11\nconst RESPONSE_ID = (0b0001 << 4) | VERSION\nconst REQUEST_ID = (0b0000 << 4) | VERSION\nconst EMPTY_ARRAY = []\nconst MAX_WINDOW = 80\n\nmodule.exports = class IO {\n constructor(\n table,\n udx,\n {\n maxWindow = MAX_WINDOW,\n port = 0,\n host = '0.0.0.0',\n anyPort = true,\n firewalled = true,\n onrequest,\n onresponse = noop,\n ontimeout = noop,\n adaptiveTimeout\n } = {}\n ) {\n this.table = table\n this.udx = udx\n this.inflight = []\n this.clientSocket = null\n this.serverSocket = null\n this.firewalled = firewalled !== false\n this.ephemeral = true\n this.congestion = new CongestionWindow(maxWindow)\n this.networkInterfaces = udx.watchNetworkInterfaces()\n this.suspended = false\n\n this.stats = {\n requests: {\n active: 0,\n total: 0,\n responses: 0,\n timeouts: 0,\n retries: 0\n },\n commands: [\n { tx: 0, rx: 0 }, // tx = transmitted, rx = received\n { tx: 0, rx: 0 },\n { tx: 0, rx: 0 },\n { tx: 0, rx: 0 }\n ]\n }\n\n this.onrequest = onrequest\n this.onresponse = onresponse\n this.ontimeout = ontimeout\n\n this._pending = new FIFO()\n this._rotateSecrets = 10\n this._tid = (Math.random() * 65536) | 0\n this._secrets = null\n this._drainInterval = null\n this._destroying = null\n this._binding = null\n\n // port can be a number or a range [start, to]\n this.portRange = port.length ? port : port === 0 ? [0, 0] : [port, port + 5]\n\n this._host = host\n this._anyPort = anyPort !== false\n this._boundServerPort = 0\n this._boundClientPort = 0\n\n this._adt = adaptiveTimeout ? new AdaptiveTimeout(adaptiveTimeout) : null\n }\n\n static DEFAULT_MAX_WINDOW = MAX_WINDOW\n\n onmessage(socket, buffer, { host, port }) {\n if (buffer.byteLength < 2 || !(port > 0 && port < 65536) || this.suspended === true) return\n\n const from = { id: null, host, port }\n const state = { start: 1, end: buffer.byteLength, buffer }\n const expectedSocket = this.firewalled ? this.clientSocket : this.serverSocket\n const external = socket !== expectedSocket\n\n if (buffer[0] === REQUEST_ID) {\n const req = Request.decode(this, socket, from, state)\n if (req === null) return\n if (\n req.token !== null &&\n !b4a.equals(req.token, this.token(req.from, 1)) &&\n !b4a.equals(req.token, this.token(req.from, 0))\n ) {\n req.error(INVALID_TOKEN, { token: true })\n return\n }\n this.onrequest(req, external)\n return\n }\n\n if (buffer[0] === RESPONSE_ID) {\n const res = decodeReply(from, state)\n if (res === null) return\n\n for (let i = 0; i < this.inflight.length; i++) {\n const req = this.inflight[i]\n if (req.tid !== res.tid) continue\n\n res.rtt = Date.now() - req._timestamp\n\n if (this._adt && req.sent <= 2) {\n this._adt.put(`${req.to.host}:${req.to.port}`, res.rtt)\n }\n\n if (i === this.inflight.length - 1) this.inflight.pop()\n else this.inflight[i] = this.inflight.pop()\n\n if (req.session) req.session._detach(req)\n\n // TODO: Auto retry here if errors.INVALID_TOKEN is returned?\n\n if (req._timeout) {\n clearTimeout(req._timeout)\n req._timeout = null\n }\n\n this.congestion.recv()\n\n if (req.internal && req.command < this.stats.commands.length) {\n this.stats.commands[req.command].rx++\n }\n\n this.stats.requests.active--\n this.stats.requests.responses++\n\n this.onresponse(res, external)\n req.onresponse(res, req)\n break\n }\n }\n }\n\n token(addr, i) {\n if (this._secrets === null) {\n const buf = b4a.alloc(64)\n this._secrets = [buf.subarray(0, 32), buf.subarray(32, 64)]\n sodium.randombytes_buf(this._secrets[0])\n sodium.randombytes_buf(this._secrets[1])\n }\n\n const token = b4a.allocUnsafe(32)\n sodium.crypto_generichash(token, b4a.from(addr.host), this._secrets[i])\n return token\n }\n\n async destroy() {\n if (this._destroying) return this._destroying\n this._destroying = this._destroy()\n return this._destroying\n }\n\n async _destroy() {\n // simplifies timing to await the bind here also, although it might be unneeded\n await this.bind()\n await this._clear(false)\n }\n\n async _clear(suspended) {\n if (this._drainInterval) {\n clearInterval(this._drainInterval)\n this._drainInterval = null\n }\n\n while (this.inflight.length) {\n const req = this.inflight.pop()\n if (req._timeout) clearTimeout(req._timeout)\n req._timeout = null\n req.destroyed = true\n\n if (req.session) req.session._detach(req)\n\n this.congestion.recv()\n this.stats.requests.active--\n\n req.onerror(suspended ? IO_SUSPENDED() : REQUEST_DESTROYED(), req)\n }\n\n await Promise.allSettled([this.serverSocket.close(), this.clientSocket.close()])\n\n this.networkInterfaces.destroy()\n }\n\n async suspend() {\n this.suspended = true\n await this._clear(true)\n\n this.congestion.clear()\n\n if (this._drainInterval) {\n clearInterval(this._drainInterval)\n this._drainInterval = null\n }\n }\n\n async _rebind(binding) {\n if (binding) await binding\n if (this._destroying) return this._destroying\n await this._bindSockets()\n this.networkInterfaces = this.udx.watchNetworkInterfaces()\n }\n\n resume() {\n this.suspended = false\n const binding = this._binding\n this._binding = this._rebind(binding)\n return this._binding\n }\n\n bind() {\n if (this._binding) return this._binding\n this._binding = this._bindSockets()\n return this._binding\n }\n\n async _bindSockets() {\n const serverSocket = this.udx.createSocket()\n\n const candidatePorts = []\n\n // Retrying previous port always has precedence\n if (this._boundServerPort) candidatePorts.push(this._boundServerPort)\n\n for (let i = this.portRange[0]; i < this.portRange[1]; i++) candidatePorts.push(i)\n\n for (const port of candidatePorts) {\n if (serverSocket.bound) break\n\n try {\n serverSocket.bind(port, this._host)\n } catch (err) {\n if (!this._anyPort) {\n await serverSocket.close()\n throw err\n }\n }\n }\n\n if (!serverSocket.bound) {\n try {\n serverSocket.bind(0, this._host)\n } catch (err) {\n await serverSocket.close()\n throw err\n }\n }\n\n const clientSocket = this.udx.createSocket()\n\n try {\n clientSocket.bind(this._boundClientPort || 0, this._host)\n } catch {\n try {\n clientSocket.bind(0, this._host)\n } catch (err) {\n await serverSocket.close()\n await clientSocket.close()\n throw err\n }\n }\n\n this._boundServerPort = serverSocket.address().port\n this._boundClientPort = clientSocket.address().port\n\n this.clientSocket = clientSocket\n this.serverSocket = serverSocket\n\n this.serverSocket.on('message', this.onmessage.bind(this, this.serverSocket))\n this.clientSocket.on('message', this.onmessage.bind(this, this.clientSocket))\n\n if (this._drainInterval === null) {\n this._drainInterval = setInterval(this._drain.bind(this), 750)\n if (this._drainInterval.unref) this._drainInterval.unref()\n }\n\n for (const req of this.inflight) {\n if (!req.socket) req.socket = this.firewalled ? this.clientSocket : this.serverSocket\n req.sent = 0\n req.send(false)\n }\n }\n\n _drain() {\n if (this._secrets !== null && --this._rotateSecrets === 0) {\n this._rotateSecrets = 10\n const tmp = this._secrets[0]\n this._secrets[0] = this._secrets[1]\n this._secrets[1] = tmp\n sodium.crypto_generichash(tmp, tmp)\n }\n\n this.congestion.drain()\n\n while (!this.congestion.isFull()) {\n const p = this._pending.shift()\n if (p === undefined) return\n p._sendNow()\n }\n }\n\n createRequest(to, token, internal, command, target, value, session, ttl) {\n if (this._destroying !== null) return null\n\n if (this._tid === 65536) this._tid = 0\n\n const tid = this._tid++\n const socket = this.firewalled ? this.clientSocket : this.serverSocket\n\n const req = new Request(\n this,\n socket,\n tid,\n null,\n to,\n token,\n internal,\n command,\n target,\n value,\n session,\n ttl || 0\n )\n this.inflight.push(req)\n if (session) session._attach(req)\n\n if (internal && command < this.stats.commands.length) {\n this.stats.commands[command].tx++\n }\n\n this.stats.requests.active++\n this.stats.requests.total++\n\n return req\n }\n}\n\nclass Request {\n constructor(io, socket, tid, from, to, token, internal, command, target, value, session, ttl) {\n this.socket = socket\n this.tid = tid\n this.from = from\n this.to = to\n this.token = token\n this.command = command\n this.target = target\n this.value = value\n this.internal = internal\n this.session = session\n this.ttl = ttl\n this.index = -1\n this.sent = 0\n this.retries = 3\n this.destroyed = false\n this.timeout = 0\n\n this.oncycle = noop\n this.onerror = noop\n this.onresponse = noop\n\n this._buffer = null\n this._io = io\n this._timeout = null\n this._timestamp = Date.now()\n }\n\n static decode(io, socket, from, state) {\n try {\n const flags = c.uint.decode(state)\n const tid = c.uint16.decode(state)\n const to = peer.ipv4.decode(state)\n const id = flags & 1 ? c.fixed32.decode(state) : null\n const token = flags & 2 ? c.fixed32.decode(state) : null\n const internal = (flags & 4) !== 0\n const command = c.uint.decode(state)\n const target = flags & 8 ? c.fixed32.decode(state) : null\n const value = flags & 16 ? c.buffer.decode(state) : null\n\n if (id !== null) from.id = validateId(id, from)\n\n return new Request(\n io,\n socket,\n tid,\n from,\n to,\n token,\n internal,\n command,\n target,\n value,\n null,\n 0\n )\n } catch {\n return null\n }\n }\n\n reply(value, opts = {}) {\n const socket = opts.socket || this.socket\n const to = opts.to || this.from\n this._sendReply(0, value || null, opts.token !== false, opts.closerNodes !== false, to, socket)\n }\n\n error(code, opts = {}) {\n const socket = opts.socket || this.socket\n const to = opts.to || this.from\n this._sendReply(code, null, opts.token === true, opts.closerNodes !== false, to, socket)\n }\n\n relay(value, to, opts) {\n const socket = (opts && opts.socket) || this.socket\n const buffer = this._encodeRequest(null, value, to, socket)\n socket.trySend(buffer, to.port, to.host, this.ttl)\n }\n\n send(force = false) {\n if (this.destroyed) return\n\n if (this.socket === null) return\n if (this._buffer === null) {\n this._buffer = this._encodeRequest(this.token, this.value, this.to, this.socket)\n }\n\n if (!force && this._io.congestion.isFull()) {\n this._io._pending.push(this)\n return\n }\n\n this._sendNow()\n }\n\n sendReply(error, value, token, hasCloserNodes) {\n this._sendReply(error, value, token, hasCloserNodes, this.from, this.socket, null)\n }\n\n _sendNow() {\n if (this.destroyed) return\n this.sent++\n this._io.congestion.send()\n this.socket.trySend(this._buffer, this.to.port, this.to.host, this.ttl)\n if (this._timeout) clearTimeout(this._timeout)\n const value =\n this.timeout || this._io._adt?.get(`${this.to.host}:${this.to.port}`, this.sent) || 1000\n this._timeout = setTimeout(oncycle, value, this)\n }\n\n destroy(err) {\n if (this.destroyed) return\n this.destroyed = true\n\n if (this._timeout) {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n const i = this._io.inflight.indexOf(this)\n if (i === -1) return\n\n if (i === this._io.inflight.length - 1) this._io.inflight.pop()\n else this._io.inflight[i] = this._io.inflight.pop()\n\n if (this.session) this.session._detach(this)\n\n this._io.stats.requests.active--\n this._io.congestion.recv()\n\n this.onerror(err || REQUEST_DESTROYED(), this)\n }\n\n _sendReply(error, value, token, hasCloserNodes, from, socket) {\n if (socket === null || this.destroyed) return\n\n const id = this._io.ephemeral === false && socket === this._io.serverSocket\n const closerNodes =\n this.target !== null && hasCloserNodes ? this._io.table.closest(this.target) : EMPTY_ARRAY\n const state = { start: 0, end: 1 + 1 + 6 + 2, buffer: null } // (type | version) + flags + to + tid\n\n if (id) state.end += 32\n if (token) state.end += 32\n if (closerNodes.length > 0) peer.ipv4Array.preencode(state, closerNodes)\n if (error > 0) c.uint.preencode(state, error)\n if (value) c.buffer.preencode(state, value)\n\n state.buffer = b4a.allocUnsafe(state.end)\n state.buffer[state.start++] = RESPONSE_ID\n state.buffer[state.start++] =\n (id ? 1 : 0) |\n (token ? 2 : 0) |\n (closerNodes.length > 0 ? 4 : 0) |\n (error > 0 ? 8 : 0) |\n (value ? 16 : 0)\n\n c.uint16.encode(state, this.tid)\n peer.ipv4.encode(state, from)\n\n if (id) c.fixed32.encode(state, this._io.table.id)\n if (token) c.fixed32.encode(state, this._io.token(from, 1))\n if (closerNodes.length > 0) peer.ipv4Array.encode(state, closerNodes)\n if (error > 0) c.uint.encode(state, error)\n if (value) c.buffer.encode(state, value)\n\n socket.trySend(state.buffer, from.port, from.host, this.ttl)\n }\n\n _encodeRequest(token, value, to, socket) {\n const id = this._io.ephemeral === false && socket === this._io.serverSocket\n const state = { start: 0, end: 1 + 1 + 6 + 2, buffer: null } // (type | version) + flags + to + tid\n\n if (id) state.end += 32\n if (token) state.end += 32\n\n c.uint.preencode(state, this.command)\n\n if (this.target) state.end += 32\n if (value) c.buffer.preencode(state, value)\n\n state.buffer = b4a.allocUnsafe(state.end)\n state.buffer[state.start++] = REQUEST_ID\n state.buffer[state.start++] =\n (id ? 1 : 0) |\n (token ? 2 : 0) |\n (this.internal ? 4 : 0) |\n (this.target ? 8 : 0) |\n (value ? 16 : 0)\n\n c.uint16.encode(state, this.tid)\n peer.ipv4.encode(state, to)\n\n if (id) c.fixed32.encode(state, this._io.table.id)\n if (token) c.fixed32.encode(state, token)\n\n c.uint.encode(state, this.command)\n\n if (this.target) c.fixed32.encode(state, this.target)\n if (value) c.buffer.encode(state, value)\n\n return state.buffer\n }\n}\n\nclass CongestionWindow {\n constructor(maxWindow) {\n this._i = 0\n this._total = 0\n this._window = [0, 0, 0, 0]\n this._maxWindow = maxWindow\n }\n\n clear() {\n this._i = 0\n this._total = 0\n this._window = [0, 0, 0, 0]\n }\n\n isFull() {\n return this._total >= 2 * this._maxWindow || this._window[this._i] >= this._maxWindow\n }\n\n recv() {\n if (this._window[this._i] > 0) {\n this._window[this._i]--\n this._total--\n }\n }\n\n send() {\n this._total++\n this._window[this._i]++\n }\n\n drain() {\n this._i = (this._i + 1) & 3\n this._total -= this._window[this._i]\n this._window[this._i] = 0 // clear oldest\n }\n}\n\nfunction noop() {}\n\nfunction oncycle(req) {\n req._timeout = null\n req.oncycle(req)\n if (req.sent > req.retries) {\n req._io.stats.requests.timeouts++\n req.destroy(REQUEST_TIMEOUT())\n req._io.ontimeout(req)\n } else {\n req._io.stats.requests.retries++\n req.send()\n }\n}\n\nfunction decodeReply(from, state) {\n try {\n const flags = c.uint.decode(state)\n const tid = c.uint16.decode(state)\n const to = peer.ipv4.decode(state)\n const id = flags & 1 ? c.fixed32.decode(state) : null\n const token = flags & 2 ? c.fixed32.decode(state) : null\n const closerNodes = flags & 4 ? peer.ipv4Array.decode(state) : null\n const error = flags & 8 ? c.uint.decode(state) : 0\n const value = flags & 16 ? c.buffer.decode(state) : null\n\n if (id !== null) from.id = validateId(id, from)\n\n return { tid, rtt: 0, from, to, token, closerNodes, error, value }\n } catch {\n return null\n }\n}\n\nfunction validateId(id, from) {\n const expected = peer.id(from.host, from.port)\n return b4a.equals(expected, id) ? expected : null\n}\nconst sodium = require('sodium-universal')\nconst c = require('compact-encoding')\nconst b4a = require('b4a')\n\nconst ipv4 = {\n ...c.ipv4Address,\n decode(state) {\n const ip = c.ipv4Address.decode(state)\n return {\n id: null, // populated by the callee\n host: ip.host,\n port: ip.port\n }\n }\n}\n\nmodule.exports = { id, ipv4, ipv4Array: c.array(ipv4) }\n\nfunction id(host, port, out = b4a.allocUnsafeSlow(32)) {\n const addr = out.subarray(0, 6)\n ipv4.encode({ start: 0, end: 6, buffer: addr }, { host, port })\n sodium.crypto_generichash(out, addr)\n return out\n}\nconst { Readable, getStreamError } = require('streamx')\nconst b4a = require('b4a')\nconst peer = require('./peer')\nconst { DOWN_HINT } = require('./commands')\n\nconst DONE = []\nconst DOWN = []\n\nmodule.exports = class Query extends Readable {\n constructor(dht, target, internal, command, value, opts = {}) {\n super()\n\n dht.stats.queries.total++\n dht.stats.queries.active++\n\n this.force = !!opts.force\n this.dht = dht\n this.k = this.dht.table.k\n this.target = target\n this.internal = internal\n this.command = command\n this.value = value\n this.errors = 0\n this.successes = 0\n this.concurrency = opts.concurrency || this.dht.concurrency\n this.inflight = 0\n this.map = opts.map || defaultMap\n this.retries =\n opts.retries === 0 ? 0 : opts.retries || (this.internal && command === DOWN_HINT ? 3 : 5)\n this.closestReplies = []\n\n this._slow = 0\n this._slowdown = false\n this._seen = new Map()\n this._pending = []\n this._fromTable = false\n this._commit = opts.commit === true ? autoCommit : opts.commit || null\n this._commiting = false\n this._session = opts.session || dht.session()\n this._autoDestroySession = !opts.session\n this._onlyClosestNodes = false\n\n this._onvisitbound = this._onvisit.bind(this)\n this._onerrorbound = this._onerror.bind(this)\n this._oncyclebound = this._oncycle.bind(this)\n\n const nodes = opts.nodes || opts.closestNodes\n const replies = opts.replies || opts.closestReplies\n\n // add them reverse as we pop below\n if (nodes) {\n for (let i = nodes.length - 1; i >= 0; i--) {\n const node = nodes[i]\n this._addPending(\n {\n id: node.id || peer.id(node.host, node.port),\n host: node.host,\n port: node.port\n },\n null\n )\n }\n } else if (replies) {\n for (let i = replies.length - 1; i >= 0; i--) {\n this._addPending(replies[i].from, null)\n }\n }\n\n if (opts.onlyClosestNodes) this._onlyClosestNodes = true\n }\n\n get closestNodes() {\n const nodes = new Array(this.closestReplies.length)\n\n for (let i = 0; i < nodes.length; i++) {\n nodes[i] = this.closestReplies[i].from\n }\n\n return nodes\n }\n\n finished() {\n return new Promise((resolve, reject) => {\n if (this.destroyed) {\n const error = getStreamError(this)\n if (error) reject(error)\n else resolve()\n return\n }\n\n const self = this\n let error = null\n\n this.resume()\n this.on('error', onerror)\n this.on('close', onclose)\n\n function onclose() {\n self.removeListener('error', onerror)\n self.removeListener('close', onclose)\n if (error) reject(error)\n else resolve()\n }\n\n function onerror(err) {\n error = err\n }\n })\n }\n\n _addFromTable() {\n if (this._pending.length >= this.k) return\n this._fromTable = true\n\n const closest = this.dht.table.closest(this.target, this.k - this._pending.length)\n\n for (const node of closest) {\n this._addPending({ id: node.id, host: node.host, port: node.port }, null)\n }\n }\n\n async _open(cb) {\n this._addFromTable()\n if (this._pending.length >= this.k) return cb(null)\n\n for await (const node of this.dht._resolveBootstrapNodes()) {\n this._addPending(node, null)\n }\n\n cb(null)\n }\n\n _isCloser(id) {\n return (\n this.closestReplies.length < this.k ||\n this._compare(id, this.closestReplies[this.closestReplies.length - 1].from.id) < 0\n )\n }\n\n _addPending(node, ref) {\n if (this._onlyClosestNodes) return false\n\n const addr = node.host + ':' + node.port\n const refs = this._seen.get(addr)\n const isCloser = this._isCloser(node.id)\n\n if (refs === DONE) {\n return isCloser\n }\n\n if (refs === DOWN) {\n if (ref) this._downHint(ref, node)\n return isCloser\n }\n\n if (refs) {\n if (ref !== null) refs.push(ref)\n return isCloser\n }\n\n if (!isCloser) {\n return false\n }\n\n this._seen.set(addr, ref === null ? [] : [ref])\n this._pending.push(node)\n\n return true\n }\n\n _read(cb) {\n this._readMore()\n cb(null)\n }\n\n _readMore() {\n if (this.destroying || this._commiting) return\n\n const concurrency = (this._slowdown ? 3 : this.concurrency) + this._slow\n\n while (this.inflight < concurrency && this._pending.length > 0) {\n const next = this._pending.pop()\n if (next && next.id && !this._isCloser(next.id)) continue\n this._visit(next)\n }\n\n // if reusing closest nodes, slow down after the first readMore tick to allow\n // the closest node a chance to reply before going broad to question more\n if (!this._fromTable && this.successes === 0 && this.errors === 0) {\n this._slowdown = true\n }\n\n if (this._pending.length > 0) return\n\n // if no inflight OR all the queries we are waiting on are marked as slow and we have a full result.\n if (\n this.inflight === 0 ||\n (this._slow === this.inflight && this.closestReplies.length >= this.k)\n ) {\n // if more than 3/4 failed and we only used cached nodes, try again from the routing table\n if (!this._fromTable && this.successes < this.k / 4) {\n this._addFromTable()\n this._readMore()\n return\n }\n\n this._flush()\n }\n }\n\n _flush() {\n if (this._commiting) return\n this._commiting = true\n\n if (this._commit === null) {\n this.push(null)\n return\n }\n\n const p = []\n for (const m of this.closestReplies) p.push(this._commit(m, this.dht, this))\n this._endAfterCommit(p)\n }\n\n _endAfterCommit(ps) {\n if (!ps.length) {\n this.destroy(new Error('Too few nodes responded'))\n return\n }\n\n const self = this\n\n let pending = ps.length\n let success = 0\n\n for (const p of ps) p.then(ondone, onerror)\n\n function ondone() {\n success++\n if (--pending === 0) self.push(null)\n }\n\n function onerror(err) {\n if (--pending > 0) return\n if (success) self.push(null)\n else self.destroy(err)\n }\n }\n\n _dec(req) {\n if (req.oncycle === noop) {\n this._slow--\n } else {\n req.oncycle = noop\n }\n this.inflight--\n }\n\n _onvisit(m, req) {\n this._dec(req)\n\n const addr = req.to.host + ':' + req.to.port\n this._seen.set(addr, DONE)\n\n if (this._commiting) return\n\n if (m.error === 0) this.successes++\n else this.errors++\n\n if (m.error === 0 && m.from.id !== null && this._isCloser(m.from.id)) this._pushClosest(m)\n\n if (m.closerNodes !== null) {\n for (const node of m.closerNodes) {\n node.id = peer.id(node.host, node.port)\n if (this.dht._filterNode !== null && !this.dht._filterNode(node)) continue\n if (b4a.equals(node.id, this.dht.table.id)) continue\n // TODO: we could continue here instead of breaking to ensure that one of the nodes in the closer list\n // is later marked as DOWN that we gossip that back\n if (!this._addPending(node, m.from)) break\n }\n }\n\n if (!this._fromTable && this.successes + this.errors >= this.concurrency) {\n this._slowdown = false\n }\n\n if (m.error !== 0) {\n this._readMore()\n return\n }\n\n const data = this.map(m)\n if (!data || this.push(data) !== false) {\n this._readMore()\n }\n }\n\n _onerror(err, req) {\n const addr = req.to.host + ':' + req.to.port\n const refs = this._seen.get(addr)\n\n if (err.code === 'REQUEST_TIMEOUT') {\n this._seen.set(addr, DOWN)\n for (const node of refs) this._downHint(node, req.to)\n }\n\n this._dec(req)\n this.errors++\n this._readMore()\n }\n\n _oncycle(req) {\n req.oncycle = noop\n this._slow++\n this._readMore()\n }\n\n _downHint(node, down) {\n // Check rate limit\n if (\n this.dht._downHintsRateLimit !== -1 &&\n this.dht._downHintsSentPerTick >= this.dht._downHintsRateLimit\n ) {\n return null\n }\n\n this.dht._downHintsSentPerTick++\n\n const state = { start: 0, end: 6, buffer: b4a.allocUnsafe(6) }\n peer.ipv4.encode(state, down)\n this.dht._request(node, false, true, DOWN_HINT, null, state.buffer, this._session, noop, noop)\n }\n\n _pushClosest(m) {\n this.closestReplies.push(m)\n for (let i = this.closestReplies.length - 2; i >= 0; i--) {\n const prev = this.closestReplies[i]\n const cmp = this._compare(prev.from.id, m.from.id)\n // if sorted, done!\n if (cmp < 0) break\n // if dup, splice it out (rare)\n if (cmp === 0) {\n this.closestReplies.splice(i + 1, 1)\n break\n }\n // swap and continue down\n this.closestReplies[i + 1] = prev\n this.closestReplies[i] = m\n }\n if (this.closestReplies.length > this.k) this.closestReplies.pop()\n }\n\n _compare(a, b) {\n for (let i = 0; i < a.length; i++) {\n if (a[i] === b[i]) continue\n const t = this.target[i]\n return (t ^ a[i]) - (t ^ b[i])\n }\n return 0\n }\n\n _visit(to) {\n this.inflight++\n\n const req = this.dht._request(\n to,\n this.force,\n this.internal,\n this.command,\n this.target,\n this.value,\n this._session,\n this._onvisitbound,\n this._onerrorbound\n )\n if (req === null) {\n this.destroy(new Error('Node was destroyed'))\n return\n }\n req.retries = this.retries\n req.oncycle = this._oncyclebound\n if (this.force) req.retries = 0\n }\n\n _destroy(cb) {\n this.dht.stats.queries.active--\n if (this._autoDestroySession) this._session.destroy()\n cb(null)\n }\n}\n\nfunction autoCommit(reply, dht, query) {\n if (!reply.token) return Promise.reject(new Error('No token received for closest node'))\n return dht.request(\n {\n token: reply.token,\n target: query.target,\n command: query.command,\n value: query.value\n },\n reply.from\n )\n}\n\nfunction defaultMap(m) {\n return m\n}\n\nfunction noop() {}\nmodule.exports = class Session {\n constructor(dht) {\n this.dht = dht\n this.inflight = []\n }\n\n _attach(req) {\n req.index = this.inflight.push(req) - 1\n }\n\n _detach(req) {\n const i = req.index\n if (i === -1) return\n req.index = -1\n\n if (i === this.inflight.length - 1) this.inflight.pop()\n else {\n const req = (this.inflight[i] = this.inflight.pop())\n req.index = i\n }\n }\n\n query({ target, command, value }, opts = {}) {\n return this.dht.query({ target, command, value }, { ...opts, session: this })\n }\n\n request({ token, command, target, value }, { host, port }, opts = {}) {\n return this.dht.request(\n { token, command, target, value },\n { host, port },\n { ...opts, session: this }\n )\n }\n\n ping({ host, port }, opts = {}) {\n return this.dht.ping({ host, port }, { ...opts, session: this })\n }\n\n destroy(err) {\n while (this.inflight.length) {\n const req = this.inflight[0]\n // prevent destroyed requests from contributing to congestion counts\n this.dht.io.congestion.recv()\n req.destroy(err)\n }\n }\n}\n{\n \"name\": \"dht-rpc\",\n \"version\": \"6.27.0\",\n \"description\": \"Make RPC calls over a Kademlia based DHT\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"lib/*.js\"\n ],\n \"imports\": {\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n }\n },\n \"dependencies\": {\n \"adaptive-timeout\": \"^1.0.1\",\n \"b4a\": \"^1.6.1\",\n \"bare-events\": \"^2.2.0\",\n \"compact-encoding\": \"^3.0.0\",\n \"compact-encoding-net\": \"^1.2.0\",\n \"fast-fifo\": \"^1.1.0\",\n \"kademlia-routing-table\": \"^1.0.1\",\n \"nat-sampler\": \"^1.0.1\",\n \"sodium-universal\": \"^5.0.0\",\n \"streamx\": \"^2.13.2\",\n \"time-ordered-set\": \"^2.0.0\",\n \"udx-native\": \"^1.5.3\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.0.0\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"test-suspend\": \"^1.0.0\"\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:bare\": \"brittle-bare --coverage test.js\",\n \"lint\": \"prettier --check . && lunte\",\n \"test:node\": \"brittle-node --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/dht-rpc.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/dht-rpc/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/dht-rpc#\"\n}\nmodule.exports = require('bare-events')\n{\n \"name\": \"events-universal\",\n \"version\": \"1.0.1\",\n \"description\": \"Universal wrapper for the Node.js events module\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"bare\": \"./bare.js\",\n \"react-native\": \"./react-native.js\",\n \"default\": \"./default.js\"\n }\n },\n \"files\": [\n \"index.js\",\n \"default.js\",\n \"bare.js\",\n \"react-native.js\"\n ],\n \"scripts\": {\n \"test\": \"prettier . --check\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/events-universal.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/events-universal/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/events-universal#readme\",\n \"dependencies\": {\n \"bare-events\": \"^2.7.0\"\n },\n \"devDependencies\": {\n \"prettier\": \"^3.4.2\",\n \"prettier-config-holepunch\": \"^1.0.0\"\n }\n}\nmodule.exports = class FixedFIFO {\n constructor (hwm) {\n if (!(hwm > 0) || ((hwm - 1) & hwm) !== 0) throw new Error('Max size for a FixedFIFO should be a power of two')\n this.buffer = new Array(hwm)\n this.mask = hwm - 1\n this.top = 0\n this.btm = 0\n this.next = null\n }\n\n clear () {\n this.top = this.btm = 0\n this.next = null\n this.buffer.fill(undefined)\n }\n\n push (data) {\n if (this.buffer[this.top] !== undefined) return false\n this.buffer[this.top] = data\n this.top = (this.top + 1) & this.mask\n return true\n }\n\n shift () {\n const last = this.buffer[this.btm]\n if (last === undefined) return undefined\n this.buffer[this.btm] = undefined\n this.btm = (this.btm + 1) & this.mask\n return last\n }\n\n peek () {\n return this.buffer[this.btm]\n }\n\n isEmpty () {\n return this.buffer[this.btm] === undefined\n }\n}\nconst FixedFIFO = require('./fixed-size')\n\nmodule.exports = class FastFIFO {\n constructor (hwm) {\n this.hwm = hwm || 16\n this.head = new FixedFIFO(this.hwm)\n this.tail = this.head\n this.length = 0\n }\n\n clear () {\n this.head = this.tail\n this.head.clear()\n this.length = 0\n }\n\n push (val) {\n this.length++\n if (!this.head.push(val)) {\n const prev = this.head\n this.head = prev.next = new FixedFIFO(2 * this.head.buffer.length)\n this.head.push(val)\n }\n }\n\n shift () {\n if (this.length !== 0) this.length--\n const val = this.tail.shift()\n if (val === undefined && this.tail.next) {\n const next = this.tail.next\n this.tail.next = null\n this.tail = next\n return this.tail.shift()\n }\n\n return val\n }\n\n peek () {\n const val = this.tail.peek()\n if (val === undefined && this.tail.next) return this.tail.next.peek()\n return val\n }\n\n isEmpty () {\n return this.length === 0\n }\n}\n{\n \"name\": \"fast-fifo\",\n \"version\": \"1.3.2\",\n \"description\": \"A fast fifo implementation similar to the one powering nextTick in Node.js core\",\n \"main\": \"index.js\",\n \"files\": [\n \"./index.js\",\n \"./fixed-size.js\"\n ],\n \"dependencies\": {},\n \"devDependencies\": {\n \"standard\": \"^17.1.0\",\n \"brittle\": \"^3.3.2\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/fast-fifo.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/fast-fifo/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/fast-fifo\"\n}\nmodule.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n{\n \"name\": \"fast-safe-stringify\",\n \"version\": \"2.1.1\",\n \"description\": \"Safely and quickly serialize JavaScript objects\",\n \"keywords\": [\n \"stable\",\n \"stringify\",\n \"JSON\",\n \"JSON.stringify\",\n \"safe\",\n \"serialize\"\n ],\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"standard && tap --no-esm test.js test-stable.js\",\n \"benchmark\": \"node benchmark.js\"\n },\n \"author\": \"David Mark Clements\",\n \"contributors\": [\n \"Ruben Bridgewater\",\n \"Matteo Collina\",\n \"Ben Gourley\",\n \"Gabriel Lesperance\",\n \"Alex Liu\",\n \"Christoph Walcher\",\n \"Nicholas Young\"\n ],\n \"license\": \"MIT\",\n \"typings\": \"index\",\n \"devDependencies\": {\n \"benchmark\": \"^2.1.4\",\n \"clone\": \"^2.1.0\",\n \"json-stringify-safe\": \"^5.0.1\",\n \"standard\": \"^11.0.0\",\n \"tap\": \"^12.0.0\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/davidmarkclements/fast-safe-stringify.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/davidmarkclements/fast-safe-stringify/issues\"\n },\n \"homepage\": \"https://github.com/davidmarkclements/fast-safe-stringify#readme\",\n \"dependencies\": {}\n}\nconst fs = require('fs')\nconst fsx = require('fs-native-extensions')\nconst onexit = require('resource-on-exit')\nconst ReadyResource = require('ready-resource')\n\nmodule.exports = class FDLock extends ReadyResource {\n constructor(fd, opts = {}) {\n const { wait = false } = opts\n\n super()\n\n this._fd = fd\n this._wait = wait\n this._locked = false\n\n onexit.add(this, closeSync)\n }\n\n get locked() {\n return this._locked\n }\n\n async _open() {\n try {\n await this._resume()\n } catch (err) {\n onexit.remove(this)\n await close(this)\n throw err\n }\n }\n\n async _close() {\n onexit.remove(this)\n await close(this)\n this._locked = false\n }\n\n transfer() {\n const fd = this._fd\n if (fd === -1) throw new Error('Lock has already been transferred')\n this._fd = -1\n onexit.remove(this)\n return fd\n }\n\n async suspend() {\n if (!this.opened) await this.ready()\n return this._suspend()\n }\n\n async _suspend() {\n if (this._fd === -1 || this._locked === false) return\n fsx.unlock(this._fd)\n this._locked = false\n }\n\n async resume() {\n if (!this.opened) await this.ready()\n return this._resume()\n }\n\n async _resume() {\n if (this._fd === -1 || this._locked === true) return\n if (this._wait) await fsx.waitForLock(this._fd)\n else if (!fsx.tryLock(this._fd)) {\n throw new Error('File descriptor could not be locked')\n }\n this._locked = true\n }\n}\n\nfunction close(lock) {\n const fd = lock._fd\n if (fd === -1) return\n lock._fd = -1\n return new Promise((resolve) => fs.close(fd, () => resolve()))\n}\n\nfunction closeSync(lock) {\n const fd = lock._fd\n if (fd === -1) return\n lock._fd = -1\n lock._locked = false\n try {\n fs.closeSync(fd)\n } catch {}\n}\n{\n \"name\": \"fd-lock\",\n \"version\": \"2.2.0\",\n \"description\": \"Stateful file descriptor locks for JavaScript\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": \"./index.js\"\n },\n \"imports\": {\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n }\n },\n \"files\": [\n \"index.js\"\n ],\n \"scripts\": {\n \"test\": \"npm run lint && npm run test:bare && npm run test:node\",\n \"test:bare\": \"bare test.js\",\n \"test:node\": \"node test.js\",\n \"lint\": \"prettier --check .\",\n \"format\": \"prettier --write .\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/fd-lock.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/fd-lock/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/fd-lock#readme\",\n \"dependencies\": {\n \"bare-fs\": \"^4.5.0\",\n \"fs-native-extensions\": \"^1.4.4\",\n \"ready-resource\": \"^1.2.0\",\n \"resource-on-exit\": \"^1.0.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"prettier\": \"^3.4.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nexports.fullRoots = function (index, result) {\n if (index & 1) throw new Error('You can only look up roots for depth(0) blocks')\n if (!result) result = []\n\n index /= 2\n\n let offset = 0\n let factor = 1\n\n while (true) {\n if (!index) return result\n while (factor * 2 <= index) factor *= 2\n result.push(offset + factor - 1)\n offset = offset + 2 * factor\n index -= factor\n factor = 1\n }\n}\n\nexports.futureRoots = function (index, result) {\n if (index & 1) throw new Error('You can only look up future roots for depth(0) blocks')\n if (!result) result = []\n\n let factor = 1\n\n // make first root\n while (factor * 2 <= index) factor *= 2\n\n // full factor of 2 - done\n if (factor * 2 - 2 === index) return result\n\n let pos = factor / 2 - 1\n\n // while its not a full tree\n while ((pos + factor / 2 - 1) !== index) {\n pos += factor\n\n // read too far, to to left child\n while ((pos + factor / 2 - 1) > index) {\n factor /= 2\n pos -= factor / 2\n }\n\n // the \"gap\" is a future root\n result.push(pos - factor / 2)\n }\n\n return result\n}\n\nexports.patch = function (from, to) {\n if (from === 0 || from >= to) return []\n\n const roots = exports.fullRoots(from)\n const target = exports.fullRoots(to)\n\n // first find the first root that is different\n\n let i = 0\n for (; i < target.length; i++) {\n if (i >= roots.length || roots[i] !== target[i]) break\n }\n\n const patch = []\n\n if (i < roots.length) {\n // now we need to grow the newest root until it hits the diff one\n let prev = roots.length - 1\n\n const ite = exports.iterator(roots[prev--])\n\n while (ite.index !== target[i]) {\n ite.sibling()\n\n if (prev >= 0 && ite.index === roots[prev]) {\n prev--\n } else {\n patch.push(ite.index)\n }\n\n patch.push(ite.parent())\n }\n\n i++ // patched to next root, so inc\n }\n\n // include the rest\n\n for (; i < target.length; i++) patch.push(target[i])\n\n return patch\n}\n\nexports.depth = function (index) {\n let depth = 0\n\n index += 1\n while (!(index & 1)) {\n depth++\n index = rightShift(index)\n }\n\n return depth\n}\n\nexports.sibling = function (index, depth) {\n if (!depth) depth = exports.depth(index)\n const offset = exports.offset(index, depth)\n\n return exports.index(depth, offset & 1 ? offset - 1 : offset + 1)\n}\n\nexports.parent = function (index, depth) {\n if (!depth) depth = exports.depth(index)\n const offset = exports.offset(index, depth)\n\n return exports.index(depth + 1, rightShift(offset))\n}\n\nexports.leftChild = function (index, depth) {\n if (!(index & 1)) return -1\n if (!depth) depth = exports.depth(index)\n return exports.index(depth - 1, exports.offset(index, depth) * 2)\n}\n\nexports.rightChild = function (index, depth) {\n if (!(index & 1)) return -1\n if (!depth) depth = exports.depth(index)\n return exports.index(depth - 1, 1 + (exports.offset(index, depth) * 2))\n}\n\nexports.children = function (index, depth) {\n if (!(index & 1)) return null\n\n if (!depth) depth = exports.depth(index)\n const offset = exports.offset(index, depth) * 2\n\n return [\n exports.index(depth - 1, offset),\n exports.index(depth - 1, offset + 1)\n ]\n}\n\nexports.leftSpan = function (index, depth) {\n if (!(index & 1)) return index\n if (!depth) depth = exports.depth(index)\n return exports.offset(index, depth) * twoPow(depth + 1)\n}\n\nexports.rightSpan = function (index, depth) {\n if (!(index & 1)) return index\n if (!depth) depth = exports.depth(index)\n return (exports.offset(index, depth) + 1) * twoPow(depth + 1) - 2\n}\n\nexports.nextLeaf = function (index) {\n let factor = 1\n let r = index\n\n while ((r & 1) === 1) {\n r = (r - 1) / 2\n factor *= 2\n }\n\n return index + factor + 1\n}\n\nexports.count = function (index, depth) {\n if (!(index & 1)) return 1\n if (!depth) depth = exports.depth(index)\n return twoPow(depth + 1) - 1\n}\n\nexports.countLeaves = function (index) {\n return (exports.count(index) + 1) / 2\n}\n\nexports.spans = function (index, depth) {\n if (!(index & 1)) return [index, index]\n if (!depth) depth = exports.depth(index)\n\n const offset = exports.offset(index, depth)\n const width = twoPow(depth + 1)\n\n return [offset * width, (offset + 1) * width - 2]\n}\n\nexports.index = function (depth, offset) {\n return (1 + 2 * offset) * twoPow(depth) - 1\n}\n\nexports.offset = function (index, depth) {\n if (!(index & 1)) return index / 2\n if (!depth) depth = exports.depth(index)\n\n return ((index + 1) / twoPow(depth) - 1) / 2\n}\n\nexports.iterator = function (index) {\n const ite = new Iterator()\n ite.seek(index || 0)\n return ite\n}\n\nfunction twoPow (n) {\n return n < 31 ? 1 << n : ((1 << 30) * (1 << (n - 30)))\n}\n\nfunction rightShift (n) {\n return (n - (n & 1)) / 2\n}\n\nfunction Iterator () {\n this.index = 0\n this.offset = 0\n this.factor = 0\n}\n\nIterator.prototype.seek = function (index) {\n this.index = index\n if (this.index & 1) {\n this.offset = exports.offset(index)\n this.factor = twoPow(exports.depth(index) + 1)\n } else {\n this.offset = index / 2\n this.factor = 2\n }\n}\n\nIterator.prototype.isLeft = function () {\n return (this.offset & 1) === 0\n}\n\nIterator.prototype.isRight = function () {\n return (this.offset & 1) === 1\n}\n\nIterator.prototype.isRoot = function (length) {\n const currentLength = 1 + (this.index + this.factor / 2 - 1) / 2\n if (length < currentLength) return false\n\n const factor = this.factor * 2\n const index = (this.offset & 1)\n ? this.index - this.factor / 2\n : this.index + this.factor / 2\n\n const parentLength = 1 + (index + factor / 2 - 1) / 2\n return parentLength > length\n}\n\nIterator.prototype.contains = function (index) {\n return index > this.index\n ? index < (this.index + this.factor / 2)\n : index < this.index\n ? index > (this.index - this.factor / 2)\n : true\n}\n\nIterator.prototype.prev = function () {\n if (!this.offset) return this.index\n this.offset--\n this.index -= this.factor\n return this.index\n}\n\nIterator.prototype.next = function () {\n this.offset++\n this.index += this.factor\n return this.index\n}\n\nIterator.prototype.count = function () {\n if (!(this.index & 1)) return 1\n return this.factor - 1\n}\n\nIterator.prototype.countLeaves = function () {\n return (this.count() + 1) / 2\n}\n\nIterator.prototype.sibling = function () {\n return this.isLeft() ? this.next() : this.prev()\n}\n\nIterator.prototype.parent = function () {\n if (this.offset & 1) {\n this.index -= this.factor / 2\n this.offset = (this.offset - 1) / 2\n } else {\n this.index += this.factor / 2\n this.offset /= 2\n }\n this.factor *= 2\n return this.index\n}\n\nIterator.prototype.leftSpan = function () {\n this.index = this.index - this.factor / 2 + 1\n this.offset = this.index / 2\n this.factor = 2\n return this.index\n}\n\nIterator.prototype.peekLeftSpan = function () {\n return this.index - this.factor / 2 + 1\n}\n\nIterator.prototype.rightSpan = function () {\n this.index = this.index + this.factor / 2 - 1\n this.offset = this.index / 2\n this.factor = 2\n return this.index\n}\n\nIterator.prototype.peekRightSpan = function () {\n return this.index + this.factor / 2 - 1\n}\n\nIterator.prototype.leftChild = function () {\n if (this.factor === 2) return this.index\n this.factor /= 2\n this.index -= this.factor / 2\n this.offset *= 2\n return this.index\n}\n\nIterator.prototype.rightChild = function () {\n if (this.factor === 2) return this.index\n this.factor /= 2\n this.index += this.factor / 2\n this.offset = 2 * this.offset + 1\n return this.index\n}\n\nIterator.prototype.nextTree = function () {\n this.index = this.index + this.factor / 2 + 1\n this.offset = this.index / 2\n this.factor = 2\n return this.index\n}\n\nIterator.prototype.prevTree = function () {\n if (!this.offset) {\n this.index = 0\n this.factor = 2\n } else {\n this.index = this.index - this.factor / 2 - 1\n this.offset = this.index / 2\n this.factor = 2\n }\n return this.index\n}\n\nIterator.prototype.fullRoot = function (index) {\n if (index <= this.index || (this.index & 1) > 0) return false\n while (index > this.index + this.factor + this.factor / 2) {\n this.index += this.factor / 2\n this.factor *= 2\n this.offset /= 2\n }\n return true\n}\n{\n \"name\": \"flat-tree\",\n \"version\": \"1.13.0\",\n \"description\": \"A series of functions to map a binary tree to a list\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"dependencies\": {},\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"standard\": \"^17.1.0\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/flat-tree.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/flat-tree/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/flat-tree\"\n}\nrequire.addon = require('require-addon')\n\nmodule.exports = require.addon('.', __filename)\nconst { isWindows } = require('which-runtime')\nconst binding = require('./binding')\n\nfunction onwork(err, result) {\n if (err) this.reject(err)\n else this.resolve(result)\n}\n\nexports.tryLock = function tryLock(fd, offset = 0, length = 0, opts = {}) {\n if (typeof offset === 'object') {\n opts = offset\n offset = 0\n }\n\n if (typeof length === 'object') {\n opts = length\n length = 0\n }\n\n if (typeof opts !== 'object' || opts === null) {\n opts = {}\n }\n\n try {\n binding.tryLock(fd, offset, length, opts.shared !== true)\n } catch (err) {\n if (err.code === 'EAGAIN') return false\n throw err\n }\n\n return true\n}\n\nexports.waitForLock = function waitForLock(fd, offset = 0, length = 0, opts = {}) {\n if (typeof offset === 'object') {\n opts = offset\n offset = 0\n }\n\n if (typeof length === 'object') {\n opts = length\n length = 0\n }\n\n if (typeof opts !== 'object' || opts === null) {\n opts = {}\n }\n\n const req = {\n handle: null,\n resolve: null,\n reject: null\n }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.waitForLock(fd, offset, length, opts.shared !== true, req, onwork)\n } catch (err) {\n return Promise.reject(err)\n }\n\n return promise\n}\n\nexports.waitForLockSync = function waitForLockSync(fd, offset = 0, length = 0, opts = {}) {\n if (typeof offset === 'object') {\n opts = offset\n offset = 0\n }\n\n if (typeof length === 'object') {\n opts = length\n length = 0\n }\n\n if (typeof opts !== 'object' || opts === null) {\n opts = {}\n }\n\n binding.waitForLockSync(fd, offset, length, opts.shared !== true)\n}\n\nexports.tryDowngradeLock = function tryDowngradeLock(fd, offset = 0, length = 0) {\n try {\n binding.tryDowngradeLock(fd, offset, length)\n } catch (err) {\n if (err.code === 'EAGAIN') return false\n throw err\n }\n\n return true\n}\n\nexports.waitForDowngradeLock = function downgradeLock(fd, offset = 0, length = 0) {\n const req = {\n handle: null,\n resolve: null,\n reject: null\n }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.waitForDowngradeLock(fd, offset, length, req, onwork)\n } catch (err) {\n return Promise.reject(err)\n }\n\n return promise\n}\n\nexports.waitForDowngradeLockSync = function waitForDowngradeLockSync(fd, offset = 0, length = 0) {\n binding.waitForDowngradeLockSync(fd, offset, length)\n}\n\nexports.tryUpgradeLock = function tryUpgradeLock(fd, offset = 0, length = 0) {\n try {\n binding.tryUpgradeLock(fd, offset, length)\n } catch (err) {\n if (err.code === 'EAGAIN') return false\n throw err\n }\n\n return true\n}\n\nexports.waitForUpgradeLock = function upgradeLock(fd, offset = 0, length = 0) {\n const req = {\n handle: null,\n resolve: null,\n reject: null\n }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.waitForUpgradeLock(fd, offset, length, req, onwork)\n } catch (err) {\n return Promise.reject(err)\n }\n\n return promise\n}\n\nexports.waitForUpgradeLockSync = function waitForUpgradeLockSync(fd, offset = 0, length = 0) {\n binding.waitForUpgradeLockSync(fd, offset, length)\n}\n\nexports.unlock = function unlock(fd, offset = 0, length = 0) {\n binding.unlock(fd, offset, length)\n}\n\nexports.trim = function trim(fd, offset, length) {\n const req = {\n handle: null,\n resolve: null,\n reject: null\n }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.trim(fd, offset, length, req, onwork)\n } catch (err) {\n return Promise.reject(err)\n }\n\n return promise\n}\n\nexports.trimSync = function trimSync(fd, offset, length) {\n binding.trimSync(fd, offset, length)\n}\n\nexports.sparse = function sparse(fd) {\n // Short circuit on everything but Windows\n if (!isWindows) return Promise.resolve()\n\n const req = {\n handle: null,\n resolve: null,\n reject: null\n }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.sparse(fd, req, onwork)\n } catch (err) {\n return Promise.reject(err)\n }\n\n return promise\n}\n\nexports.sparseSync = function sparseSync(fd) {\n // Short circuit on everything but Windows\n if (!isWindows) return\n\n binding.sparseSync(fd)\n}\n\nexports.swap = function swap(from, to) {\n const req = {\n handle: null,\n resolve: null,\n reject: null\n }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.swap(from, to, req, onwork)\n } catch (err) {\n return Promise.reject(err)\n }\n\n return promise\n}\n\nexports.swapSync = function swapSync(from, to) {\n binding.swapSync(from, to)\n}\n\nexports.getAttr = function getAttr(fd, name) {\n const req = {\n handle: null,\n resolve: null,\n reject: null\n }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.getAttr(fd, name, req, onwork)\n } catch (err) {\n return Promise.reject(err)\n }\n\n return promise.then((buffer) => (buffer === null ? null : Buffer.from(buffer)))\n}\n\nexports.getAttrSync = function getAttrSync(fd, name) {\n const buffer = binding.getAttrSync(fd, name)\n return buffer === null ? null : Buffer.from(buffer)\n}\n\nexports.setAttr = function setAttr(fd, name, value, encoding) {\n if (typeof value === 'string') value = Buffer.from(value, encoding)\n\n const req = {\n value,\n handle: null,\n resolve: null,\n reject: null\n }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.setAttr(\n fd,\n name,\n value.buffer,\n value.byteOffset,\n value.byteLength,\n req,\n onwork\n )\n } catch (err) {\n return Promise.reject(err)\n }\n\n return promise\n}\n\nexports.setAttrSync = function setAttrSync(fd, name, value, encoding) {\n if (typeof value === 'string') value = Buffer.from(value, encoding)\n\n binding.setAttrSync(fd, name, value.buffer, value.byteOffset, value.byteLength)\n}\n\nexports.removeAttr = function removeAttr(fd, name) {\n const req = {\n handle: null,\n resolve: null,\n reject: null\n }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.removeAttr(fd, name, req, onwork)\n } catch (err) {\n return Promise.reject(err)\n }\n\n return promise\n}\n\nexports.removeAttrSync = function removeAttrSync(fd, name) {\n binding.removeAttrSync(fd, name)\n}\n\nexports.listAttrs = function listAttrs(fd) {\n const req = {\n handle: null,\n resolve: null,\n reject: null\n }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.listAttrs(fd, req, onwork)\n } catch (err) {\n return Promise.reject(err)\n }\n\n return promise\n}\n\nexports.listAttrsSync = function listAttrsSync(fd) {\n return binding.listAttrsSync(fd)\n}\n{\n \"name\": \"fs-native-extensions\",\n \"version\": \"1.5.0\",\n \"description\": \"Native file system extensions for advanced file operations\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"macros.h\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"include\",\n \"src\",\n \"prebuilds\"\n ],\n \"imports\": {\n \"child_process\": {\n \"bare\": \"bare-subprocess\",\n \"default\": \"child_process\"\n },\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"fs/*\": {\n \"bare\": \"bare-fs/*\",\n \"default\": \"fs/*\"\n },\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n }\n },\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:bare\": \"brittle-bare --coverage test.js\",\n \"test:node\": \"brittle-node --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/fs-native-extensions.git\"\n },\n \"author\": \"Kasper Isager Dalsgarð \",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/fs-native-extensions/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/fs-native-extensions#readme\",\n \"dependencies\": {\n \"require-addon\": \"^1.1.0\",\n \"which-runtime\": \"^1.2.0\"\n },\n \"devDependencies\": {\n \"bare-compat-napi\": \"^1.3.8\",\n \"bare-fs\": \"^4.4.4\",\n \"bare-path\": \"^3.0.0\",\n \"bare-subprocess\": \"^4.0.5\",\n \"brittle\": \"^3.1.1\",\n \"cmake-bare\": \"^1.1.10\",\n \"cmake-fetch\": \"^1.4.7\",\n \"cmake-napi\": \"^1.0.5\",\n \"cmake-npm\": \"^1.1.0\",\n \"lunte\": \"^1.6.0\",\n \"minimist\": \"^1.2.6\",\n \"prettier\": \"^3.5.3\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"test-tmp\": \"^1.2.1\"\n }\n}\nconst codecs = require('codecs')\nconst { Readable } = require('streamx')\nconst mutexify = require('mutexify/promise')\nconst b4a = require('b4a')\nconst safetyCatch = require('safety-catch')\nconst ReadyResource = require('ready-resource')\nconst debounce = require('debounceify')\nconst Rache = require('rache')\nconst rrp = require('resolve-reject-promise')\n\nconst { all: unslabAll } = require('unslab')\n\nconst RangeIterator = require('./iterators/range')\nconst HistoryIterator = require('./iterators/history')\nconst DiffIterator = require('./iterators/diff')\nconst LocalBlockIterator = require('./iterators/local')\nconst Extension = require('./lib/extension')\nconst { YoloIndex, Node, Header } = require('./lib/messages')\nconst { BLOCK_NOT_AVAILABLE, DECODING_ERROR } = require('hypercore-errors')\n\nconst T = 5\nconst MIN_KEYS = T - 1\nconst MAX_CHILDREN = MIN_KEYS * 2 + 1\n\nconst SEP = b4a.alloc(1)\nconst EMPTY = b4a.alloc(0)\n\nclass Key {\n constructor(seq, value) {\n this.seq = seq\n this.value = value\n }\n}\n\nclass Child {\n constructor(seq, offset, value) {\n this.seq = seq\n this.offset = offset\n this.value = value\n }\n}\n\nclass Cache {\n constructor(rache) {\n this.keys = rache\n this.length = 0\n }\n\n get(seq) {\n return this.keys.get(seq) || null\n }\n\n set(seq, key) {\n this.keys.set(seq, key)\n if (seq >= this.length) this.length = seq + 1\n }\n\n gc(length) {\n // if we need to \"work\" more than 128 ticks, just bust the cache...\n if (this.length - length > 128) {\n this.keys.clear()\n } else {\n for (let i = length; i < this.length; i++) {\n this.keys.delete(i)\n }\n }\n\n this.length = length\n }\n\n clear() {\n this.keys.clear()\n }\n}\n\nclass Pointers {\n constructor(decoded) {\n this.levels = decoded.levels.map((l) => {\n const children = []\n const keys = []\n\n for (let i = 0; i < l.keys.length; i++) {\n keys.push(new Key(l.keys[i], null))\n }\n\n for (let i = 0; i < l.children.length; i += 2) {\n children.push(new Child(l.children[i], l.children[i + 1], null))\n }\n\n return { keys, children }\n })\n }\n\n get(i) {\n return this.levels[i]\n }\n\n hasKey(seq) {\n for (const lvl of this.levels) {\n for (const key of lvl.keys) {\n if (key.seq === seq) return true\n }\n }\n return false\n }\n}\n\nfunction inflate(entry) {\n if (entry.inflated === null) {\n entry.inflated = YoloIndex.decode(entry.index)\n entry.index = null\n }\n return new Pointers(entry.inflated)\n}\n\nfunction deflate(index) {\n const levels = index.map((l) => {\n const keys = []\n const children = []\n\n for (let i = 0; i < l.value.keys.length; i++) {\n keys.push(l.value.keys[i].seq)\n }\n\n for (let i = 0; i < l.value.children.length; i++) {\n children.push(l.value.children[i].seq, l.value.children[i].offset)\n }\n\n return { keys, children }\n })\n\n return YoloIndex.encode({ levels })\n}\n\nclass TreeNode {\n constructor(block, keys, children, offset) {\n this.block = block\n this.offset = offset\n this.keys = keys\n this.children = children\n this.changed = false\n\n this.preload()\n }\n\n preload() {\n if (this.block === null) return\n\n const core = getBackingCore(this.block.tree.core)\n if (!core) return\n\n const bitfield = core.core.bitfield\n const blocks = []\n\n for (let i = 0; i < this.keys.length; i++) {\n const k = this.keys[i]\n if (k.value) continue\n if (k.seq >= core.signedLength || (bitfield && bitfield.get(k.seq))) continue\n blocks.push(k.seq)\n }\n for (let i = 0; i < this.children.length; i++) {\n const c = this.children[i]\n if (c.value) continue\n if (c.seq >= core.signedLength || (bitfield && bitfield.get(c.seq))) continue\n blocks.push(c.seq)\n }\n\n if (blocks.length) core.download({ blocks })\n }\n\n async insertKey(key, value, child, node, encoding, cas) {\n let s = 0\n let e = this.keys.length\n let c\n\n while (s < e) {\n const mid = (s + e) >> 1\n c = b4a.compare(key.value, await this.getKey(mid))\n\n if (c === 0) {\n if (cas) {\n const prev = await this.getKeyNode(mid)\n if (!(await cas(prev.final(encoding), node))) return true\n }\n if (!this.block.tree.tree.alwaysDuplicate) {\n const prev = await this.getKeyNode(mid)\n if (sameValue(prev.value, value)) return true\n }\n this.changed = true\n this.keys[mid] = key\n return true\n }\n\n if (c < 0) e = mid\n else s = mid + 1\n }\n\n const i = c < 0 ? e : s\n this.keys.splice(i, 0, key)\n if (child) this.children.splice(i + 1, 0, new Child(0, 0, child))\n this.changed = true\n\n return this.keys.length < MAX_CHILDREN\n }\n\n removeKey(index) {\n this.keys.splice(index, 1)\n if (this.children.length) {\n this.children[index + 1].seq = 0 // mark as freed\n this.children.splice(index + 1, 1)\n }\n this.changed = true\n }\n\n async siblings(parent) {\n for (let i = 0; i < parent.children.length; i++) {\n if (parent.children[i].value === this) {\n const [left, right] = await Promise.all([\n i ? parent.getChildNode(i - 1) : null,\n i < parent.children.length - 1 ? parent.getChildNode(i + 1) : null\n ])\n return { left, index: i, right }\n }\n }\n\n throw new Error('Bad parent')\n }\n\n merge(node, median) {\n this.changed = true\n this.keys.push(median)\n for (let i = 0; i < node.keys.length; i++) this.keys.push(node.keys[i])\n for (let i = 0; i < node.children.length; i++) this.children.push(node.children[i])\n }\n\n async split() {\n const len = this.keys.length >> 1\n const right = TreeNode.create(this.block)\n\n while (right.keys.length < len) right.keys.push(this.keys.pop())\n right.keys.reverse()\n\n await this.getKey(this.keys.length - 1) // make sure the median is loaded\n const median = this.keys.pop()\n\n if (this.children.length) {\n while (right.children.length < len + 1) right.children.push(this.children.pop())\n right.children.reverse()\n }\n\n this.changed = true\n\n return {\n left: this,\n median,\n right\n }\n }\n\n getKeyNode(index) {\n return this.block.tree.getBlock(this.keys[index].seq)\n }\n\n async getChildNode(index) {\n const child = this.children[index]\n if (child.value) return child.value\n const block =\n child.seq === this.block.seq ? this.block : await this.block.tree.getBlock(child.seq)\n return (child.value = block.getTreeNode(child.offset))\n }\n\n setKey(index, key) {\n this.keys[index] = key\n this.changed = true\n }\n\n async getKey(index) {\n const key = this.keys[index]\n if (key.value) return key.value\n const k = key.seq === this.block.seq ? this.block.key : await this.block.tree.getKey(key.seq)\n return (key.value = k)\n }\n\n indexChanges(index, seq) {\n const offset = index.push(null) - 1\n this.changed = false\n\n for (const child of this.children) {\n if (!child.value || !child.value.changed) continue\n child.seq = seq\n child.offset = child.value.indexChanges(index, seq)\n index[child.offset] = child\n }\n\n return offset\n }\n\n updateChildren(seq, block) {\n for (const child of this.children) {\n if (!child.value || child.seq !== seq) continue\n child.value.block = block\n child.value.updateChildren(seq, block)\n }\n }\n\n static create(block) {\n const node = new TreeNode(block, [], [], 0)\n node.changed = true\n return node\n }\n}\n\nclass BlockEntry {\n constructor(seq, tree, entry) {\n this.seq = seq\n this.tree = tree\n this.index = null\n this.entry = entry\n this.key = entry.key\n this.value = entry.value\n }\n\n isTarget(key) {\n return b4a.equals(this.key, key)\n }\n\n inflate() {\n if (this.index === null) {\n this.index = inflate(this.entry)\n }\n }\n\n isDeletion() {\n if (this.value !== null) return false\n\n if (this.index === null) {\n this.index = inflate(this.entry)\n }\n\n return !this.index.hasKey(this.seq)\n }\n\n final(encoding) {\n return {\n seq: this.seq,\n key: encoding.key ? encoding.key.decode(this.key) : this.key,\n value: this.value && (encoding.value ? encoding.value.decode(this.value) : this.value)\n }\n }\n\n getTreeNode(offset) {\n if (this.index === null) {\n this.index = inflate(this.entry)\n }\n const entry = this.index.get(offset)\n return new TreeNode(this, entry.keys, entry.children, offset)\n }\n}\n\nclass CacheLock {\n constructor() {\n this.map = new Map()\n }\n\n enter(seq) {\n const pending = this.map.get(seq)\n\n if (!pending) {\n this.map.set(seq, [])\n return Promise.resolve()\n }\n\n const { resolve, promise } = rrp()\n pending.push(resolve)\n return promise\n }\n\n exit(seq) {\n const pending = this.map.get(seq)\n if (!pending.length) {\n this.map.delete(seq)\n return\n }\n\n pending.pop()()\n }\n}\n\nclass BatchEntry extends BlockEntry {\n constructor(seq, tree, key, value, index) {\n super(seq, tree, { key, value, index: null, inflated: null })\n this.pendingIndex = index\n }\n\n isTarget(key) {\n return false\n }\n\n getTreeNode(offset) {\n return this.pendingIndex[offset].value\n }\n}\n\nclass Hyperbee extends ReadyResource {\n constructor(core, opts = {}) {\n super()\n // this.feed is now deprecated, and will be this.core going forward\n this.feed = core\n this.core = core\n\n this.keyEncoding = opts.keyEncoding ? codecs(opts.keyEncoding) : null\n this.valueEncoding = opts.valueEncoding ? codecs(opts.valueEncoding) : null\n this.extension = opts.extension !== false ? getExtension(this, opts) : null\n this.metadata = opts.metadata || null\n this.lock = opts.lock || mutexify()\n this.sep = opts.sep || SEP\n this.readonly = !!opts.readonly\n this.prefix = opts.prefix || null\n\n // In a future version, this should be false by default\n this.alwaysDuplicate = opts.alwaysDuplicate !== false\n\n this._unprefixedKeyEncoding = this.keyEncoding\n this._sub = !!this.prefix\n this._checkout = opts.checkout || 0\n this._view = !!opts._view\n\n this._onappendBound = this._view ? null : this._onappend.bind(this)\n this._ontruncateBound = this._view ? null : this._ontruncate.bind(this)\n this._watchers = this._onappendBound ? [] : null\n this._entryWatchers = this._onappendBound ? [] : null\n this._sessions = opts.sessions !== false\n\n this._keyCache = null\n this._nodeCache = null\n this._cacheLock = new CacheLock()\n\n this._batches = []\n\n if (this._watchers) {\n this.core.on('append', this._onappendBound)\n this.core.on('truncate', this._ontruncateBound)\n }\n\n if (this.prefix && opts._sub) {\n this.keyEncoding = prefixEncoding(this.prefix, this.keyEncoding)\n }\n\n this.ready().catch(safetyCatch)\n }\n\n async _open() {\n if (this.core.opened === false) await this.core.ready()\n // bump the internal ranges since the nodes are small\n if (this._watchers && this.core.replicator.setInflightRange) {\n this.core.replicator.setInflightRange(256, 512)\n }\n\n // snapshot\n if (this._checkout === -1) this._checkout = Math.max(1, this.core.length)\n\n const baseCache = Rache.from(this.core.globalCache)\n this._keyCache = new Cache(baseCache)\n this._nodeCache = new Cache(Rache.from(baseCache))\n }\n\n get version() {\n return Math.max(1, this._checkout || this.core.length)\n }\n\n get id() {\n return this.core.id\n }\n\n get key() {\n return this.core.key\n }\n\n get discoveryKey() {\n return this.core.discoveryKey\n }\n\n get writable() {\n return this.core.writable\n }\n\n get readable() {\n return this.core.readable\n }\n\n replicate(isInitiator, opts) {\n return this.core.replicate(isInitiator, opts)\n }\n\n update(opts) {\n return this.core.update(opts)\n }\n\n peek(range, opts) {\n return iteratorPeek(this.createRangeIterator(range, { ...opts, limit: 1 }))\n }\n\n createRangeIterator(range, opts = {}) {\n // backwards compat range arg\n opts = opts ? { ...opts, ...range } : range\n\n const extension = opts.extension === false && opts.limit !== 0 ? null : this.extension\n const keyEncoding = opts.keyEncoding ? codecs(opts.keyEncoding) : this.keyEncoding\n\n if (extension) {\n const { onseq, onwait } = opts\n let version = 0\n let next = 0\n\n opts = encRange(keyEncoding, {\n ...opts,\n sub: this._sub,\n onseq(seq) {\n if (!version) version = seq + 1\n if (next) next--\n if (onseq) onseq(seq)\n },\n onwait(seq) {\n if (!next) {\n next = Extension.BATCH_SIZE\n extension.iterator(ite.snapshot(version))\n }\n if (onwait) onwait(seq)\n }\n })\n } else {\n opts = encRange(keyEncoding, { ...opts, sub: this._sub })\n }\n\n const ite = new RangeIterator(\n new Batch(this, this._makeSnapshot(), null, false, opts),\n null,\n opts\n )\n return ite\n }\n\n createReadStream(range, opts) {\n const signal = (opts && opts.signal) || null\n return iteratorToStream(this.createRangeIterator(range, opts), signal)\n }\n\n createHistoryStream(opts) {\n const session = opts && opts.live ? this.core.session() : this._makeSnapshot()\n const signal = (opts && opts.signal) || null\n return iteratorToStream(\n new HistoryIterator(new Batch(this, session, null, false, opts), opts),\n signal\n )\n }\n\n createDiffStream(right, range, opts) {\n if (typeof right === 'number') right = this.checkout(Math.max(1, right), { reuseSession: true })\n\n // backwards compat range arg\n opts = opts ? { ...opts, ...range } : range\n\n const signal = (opts && opts.signal) || null\n\n const keyEncoding = opts && opts.keyEncoding ? codecs(opts.keyEncoding) : this.keyEncoding\n if (keyEncoding) opts = encRange(keyEncoding, { ...opts, sub: this._sub })\n\n let done\n let closing\n let ite\n\n const left = this\n\n const rs = new Readable({\n signal,\n eagerOpen: true,\n async open(cb) {\n try {\n if (right.opened === false) await right.ready()\n if (left.opened === false) await left.ready()\n } catch (err) {\n cb(err)\n return\n }\n\n if (closing) {\n cb(null)\n return\n }\n\n if (left.core.closing || right.core.closing) {\n cb(new Error('Bee closed'))\n return\n }\n\n const snapshot = right.version > left.version ? right._makeSnapshot() : left._makeSnapshot()\n\n done = cb\n ite = new DiffIterator(\n new Batch(left, snapshot, null, false, opts),\n new Batch(right, snapshot, null, false, opts),\n opts\n )\n ite.open().then(fin, fin)\n },\n read(cb) {\n done = cb\n ite.next().then(push, fin)\n },\n predestroy() {\n if (!ite) {\n closing = Promise.resolve()\n } else {\n closing = ite.close()\n closing.catch(noop)\n }\n },\n destroy(cb) {\n done = cb\n if (!closing) closing = ite.close()\n closing.then(fin, fin)\n }\n })\n\n return rs\n\n function fin(err) {\n done(err)\n }\n\n function push(val) {\n rs.push(val)\n done(null)\n }\n }\n\n get(key, opts) {\n const b = new Batch(this, this._makeSnapshot(), null, true, opts)\n return b.get(key)\n }\n\n getBySeq(seq, opts) {\n const b = new Batch(this, this._makeSnapshot(), null, true, opts)\n return b.getBySeq(seq)\n }\n\n put(key, value, opts) {\n const b = new Batch(this, this.core, null, true, opts)\n return b.put(key, value, opts)\n }\n\n batch(opts) {\n return new Batch(this, this.core, mutexify(), true, opts)\n }\n\n del(key, opts) {\n const b = new Batch(this, this.core, null, true, opts)\n return b.del(key, opts)\n }\n\n watch(range, opts) {\n if (!this._watchers) throw new Error('Can only watch the main bee instance')\n return new Watcher(this, range, opts)\n }\n\n async getAndWatch(key, opts) {\n if (!this._watchers) throw new Error('Can only watch the main bee instance')\n\n const watcher = new EntryWatcher(this, key, opts)\n await watcher._debouncedUpdate()\n\n if (this.closing) {\n await watcher.close()\n throw new Error('Bee closed')\n }\n\n return watcher\n }\n\n _onappend() {\n for (const watcher of this._watchers) {\n watcher._onappend()\n }\n\n for (const watcher of this._entryWatchers) {\n watcher._onappend()\n }\n }\n\n _ontruncate(length) {\n for (const watcher of this._watchers) {\n watcher._ontruncate()\n }\n\n for (const watcher of this._entryWatchers) {\n watcher._ontruncate()\n }\n\n this._nodeCache.gc(length)\n this._keyCache.gc(length)\n }\n\n _makeSnapshot() {\n if (this._sessions === false) return this.core\n // TODO: better if we could encapsulate this in hypercore in the future\n return this._checkout <= this.core.length || this._checkout <= 1\n ? this.core.snapshot()\n : this.core.session({ snapshot: false })\n }\n\n async clearUnlinked(options = {}) {\n await this.ready()\n\n const { gte = 0, lt = this.version - 1, batchSize = 4096, wait = true } = options\n const checkout = this.version\n\n let prev = this.batch({ wait: false, checkout: gte })\n let b = this.batch({ wait, checkout })\n\n const iteBatch = this.batch({ wait: false, checkout })\n const ite = new LocalBlockIterator(iteBatch, { gte, lt })\n await ite.open()\n\n let ticks = 0\n\n while (true) {\n const data = await ite.next()\n if (!data) break\n\n if (!(await isLinked(b, data))) {\n if (b.core.closing || this.core.closing || this.closing) break\n await this.core.clear(data.seq)\n }\n\n const prevNode = await prev.get(data.key, { finalize: false }).catch(toNull)\n\n if (prevNode && !(await isLinked(b, prevNode))) {\n if (b.core.closing || this.core.closing || this.closing) break\n await this.core.clear(prevNode.seq)\n }\n\n if (ticks++ >= batchSize) {\n ticks = 0\n await prev.close()\n await b.close()\n\n prev = this.batch({ wait: false, checkout: gte })\n b = this.batch({ wait, checkout })\n }\n }\n\n if (b.core.closing || this.core.closing || this.closing) throw new Error('Core is closed')\n\n await b.close()\n await prev.close()\n await ite.close()\n await iteBatch.close()\n\n return lt\n }\n\n checkout(version, opts = {}) {\n if (version === 0) version = 1\n\n // same as above, just checkout isn't set yet...\n const snap =\n opts.reuseSession || this._sessions === false\n ? this.core\n : version <= this.core.length || version <= 1\n ? this.core.snapshot()\n : this.core.session({ snapshot: false })\n\n return new Hyperbee(snap, {\n _view: true,\n _sub: false,\n prefix: this.prefix,\n sep: this.sep,\n lock: this.lock,\n checkout: version,\n keyEncoding: opts.keyEncoding || this.keyEncoding,\n valueEncoding: opts.valueEncoding || this.valueEncoding,\n extension: this.extension !== null ? this.extension : false\n })\n }\n\n snapshot(opts) {\n return this.checkout(\n this.core.opened === false || this._checkout <= 0 ? -1 : Math.max(1, this.version),\n opts\n )\n }\n\n sub(prefix, opts = {}) {\n let sep = opts.sep || this.sep\n if (!b4a.isBuffer(sep)) sep = b4a.from(sep)\n\n prefix = b4a.concat([this.prefix || EMPTY, b4a.from(prefix), sep])\n\n const valueEncoding = codecs(opts.valueEncoding || this.valueEncoding)\n const keyEncoding = codecs(opts.keyEncoding || this._unprefixedKeyEncoding)\n\n return new Hyperbee(this.core, {\n _view: true,\n _sub: true,\n prefix,\n sep: this.sep,\n lock: this.lock,\n checkout: this._checkout,\n valueEncoding,\n keyEncoding,\n extension: this.extension !== null ? this.extension : false,\n metadata: this.metadata\n })\n }\n\n async getHeader(opts) {\n const blk = await this.core.get(0, opts)\n try {\n return blk && Header.decode(blk)\n } catch {\n throw DECODING_ERROR()\n }\n }\n\n async _close() {\n if (!this._view) {\n if (this._keyCache) this._keyCache.clear()\n if (this._nodeCache) this._nodeCache.clear()\n }\n\n if (this._watchers) {\n this.core.off('append', this._onappendBound)\n this.core.off('truncate', this._ontruncateBound)\n\n while (this._watchers.length) {\n await this._watchers[this._watchers.length - 1].close()\n }\n }\n\n if (this._entryWatchers) {\n while (this._entryWatchers.length) {\n await this._entryWatchers[this._entryWatchers.length - 1].close()\n }\n }\n\n while (this._batches.length) {\n await this._batches[this._batches.length - 1].close()\n }\n\n return this.core.close()\n }\n\n static async isHyperbee(core, opts) {\n await core.ready()\n\n const blk0 = await core.get(0, opts)\n if (blk0 === null) throw BLOCK_NOT_AVAILABLE()\n\n try {\n return Header.decode(blk0).protocol === 'hyperbee'\n } catch (err) {\n // undecodable\n return false\n }\n }\n}\n\nclass Batch {\n constructor(tree, core, batchLock, cache, options = {}) {\n this.tree = tree\n // this.feed is now deprecated, and will be this.core going forward\n this.feed = core\n this.core = core\n this.index = tree._batches.push(this) - 1\n this.blocks = cache ? new Map() : null\n this.autoFlush = !batchLock\n this.maxBlocksCached = options.maxBlocksCached || 128\n this.rootSeq = 0\n this.root = null\n this.length = 0\n this.checkout = options.checkout === undefined ? -1 : options.checkout\n this.options = options\n this.locked = null\n this.batchLock = batchLock\n this.onseq = this.options.onseq || noop\n this.appending = null\n this.isSnapshot = this.core !== this.tree.core\n this.shouldUpdate = this.options.update !== false\n this.updating = null\n this.encoding = {\n key: options.keyEncoding ? codecs(options.keyEncoding) : tree.keyEncoding,\n value: options.valueEncoding ? codecs(options.valueEncoding) : tree.valueEncoding\n }\n }\n\n async ready() {\n if (this.core.opened === false) await this.core.ready()\n if (this.tree.opened === false) await this.tree.ready()\n }\n\n async lock() {\n if (this.tree.readonly) throw new Error('Hyperbee is marked as read-only')\n if (this.locked === null) this.locked = await this.tree.lock()\n }\n\n get version() {\n if (this.checkout !== -1) return Math.max(1, this.checkout)\n return Math.max(1, this.tree._checkout || this.core.length + this.length)\n }\n\n async getRoot(ensureHeader) {\n await this.ready()\n if (ensureHeader) {\n if (this.core.length === 0 && this.core.writable && !this.tree.readonly) {\n await this.core.append(\n Header.encode({\n protocol: 'hyperbee',\n metadata: this.tree.metadata\n })\n )\n }\n }\n if (this.tree._checkout === 0 && this.checkout === -1 && this.shouldUpdate) {\n if (this.updating === null) this.updating = this.core.update()\n await this.updating\n }\n if (this.version < 2) return null\n return (await this.getBlock(this.version - 1)).getTreeNode(0)\n }\n\n async getKey(seq) {\n await this.tree._cacheLock.enter(seq)\n\n try {\n const k = this.core.fork === this.tree.core.fork ? this.tree._keyCache.get(seq) : null\n if (k !== null) return k\n const key = (await this._getBlock(seq)).key\n if (this.core.fork === this.tree.core.fork) this.tree._keyCache.set(seq, key)\n return key\n } finally {\n this.tree._cacheLock.exit(seq)\n }\n }\n\n async _getNode(seq) {\n const cached =\n this.tree._nodeCache !== null && this.core.fork === this.tree.core.fork\n ? this.tree._nodeCache.get(seq)\n : null\n if (cached !== null) return cached\n const entry = await this.core.get(seq, {\n ...this.options,\n valueEncoding: Node\n })\n if (entry === null) throw BLOCK_NOT_AVAILABLE()\n const wrap = copyEntry(entry)\n if (this.core.fork === this.tree.core.fork && this.tree._nodeCache !== null) {\n this.tree._nodeCache.set(seq, wrap)\n }\n return wrap\n }\n\n async getBlock(seq) {\n if (this.rootSeq === 0) this.rootSeq = seq\n await this.tree._cacheLock.enter(seq)\n\n try {\n return await this._getBlock(seq)\n } finally {\n this.tree._cacheLock.exit(seq)\n }\n }\n\n async _getBlock(seq) {\n let b = this.blocks && this.blocks.get(seq)\n if (b) return b\n this.onseq(seq)\n const entry = await this._getNode(seq)\n b = this.blocks && this.blocks.get(seq)\n if (b) return b\n b = new BlockEntry(seq, this, entry)\n if (this.blocks && this.blocks.size - this.length < this.maxBlocksCached) {\n this.blocks.set(seq, b)\n }\n return b\n }\n\n _onwait(key) {\n this.options.onwait = null\n this.tree.extension.get(this.rootSeq + 1, key)\n }\n\n _getEncoding(opts) {\n if (!opts) return this.encoding\n return {\n key: opts.keyEncoding ? codecs(opts.keyEncoding) : this.encoding.key,\n value: opts.valueEncoding ? codecs(opts.valueEncoding) : this.encoding.value\n }\n }\n\n peek(range, opts) {\n return iteratorPeek(this.createRangeIterator(range, { ...opts, limit: 1 }))\n }\n\n createRangeIterator(range, opts = {}) {\n // backwards compat range arg\n opts = opts ? { ...opts, ...range } : range\n\n const encoding = this._getEncoding(opts)\n return new RangeIterator(\n this,\n encoding,\n encRange(encoding.key, { ...opts, sub: this.tree._sub })\n )\n }\n\n createReadStream(range, opts) {\n const signal = (opts && opts.signal) || null\n return iteratorToStream(this.createRangeIterator(range, opts), signal)\n }\n\n async getBySeq(seq, opts) {\n const encoding = this._getEncoding(opts)\n\n try {\n const block = (await this.getBlock(seq)).final(encoding)\n return { key: block.key, value: block.value }\n } finally {\n await this._closeSnapshot()\n }\n }\n\n async get(key, opts) {\n const encoding = this._getEncoding(opts)\n const finalize = opts ? opts.finalize !== false : true\n\n try {\n return await this._get(key, encoding, finalize)\n } finally {\n await this._closeSnapshot()\n }\n }\n\n async _get(key, encoding, finalize) {\n key = enc(encoding.key, key)\n\n if (this.tree.extension !== null && this.options.extension !== false) {\n this.options.onwait = this._onwait.bind(this, key)\n }\n\n let node = await this.getRoot(false)\n if (!node) return null\n\n while (true) {\n if (node.block.isTarget(key)) {\n return node.block.isDeletion() ? null : finalize ? node.block.final(encoding) : node.block\n }\n\n let s = 0\n let e = node.keys.length\n let c\n\n while (s < e) {\n const mid = (s + e) >> 1\n\n c = b4a.compare(key, await node.getKey(mid))\n\n if (c === 0) {\n const block = await this.getBlock(node.keys[mid].seq)\n return finalize ? block.final(encoding) : block\n }\n\n if (c < 0) e = mid\n else s = mid + 1\n }\n\n if (!node.children.length) return null\n\n const i = c < 0 ? e : s\n node = await node.getChildNode(i)\n }\n }\n\n async links(key, seq) {\n let node = await this.getRoot(false)\n if (!node) return false\n\n if (node.block.seq === seq) return true\n\n while (true) {\n if (node.block.isTarget(key)) return false\n\n let s = 0\n let e = node.keys.length\n let c\n\n while (s < e) {\n const mid = (s + e) >> 1\n\n if (node.keys[mid].seq === seq) return true\n c = b4a.compare(key, await node.getKey(mid))\n\n if (c === 0) return false\n\n if (c < 0) e = mid\n else s = mid + 1\n }\n\n if (!node.children.length) return false\n\n const i = c < 0 ? e : s\n node = await node.getChildNode(i)\n if (node.block.seq === seq) return true\n }\n }\n\n async put(key, value, opts) {\n const release = this.batchLock ? await this.batchLock() : null\n\n const cas = (opts && opts.cas) || null\n const encoding = this._getEncoding(opts)\n\n if (!this.locked) await this.lock()\n if (!release) return this._put(key, value, encoding, cas)\n\n try {\n return await this._put(key, value, encoding, cas)\n } finally {\n release()\n }\n }\n\n async _put(key, value, encoding, cas) {\n const newNode = {\n seq: 0,\n key,\n value\n }\n key = enc(encoding.key, key)\n value = enc(encoding.value, value)\n\n const stack = []\n\n let root\n let node = (root = await this.getRoot(true))\n if (!node) node = root = TreeNode.create(null)\n\n const seq = (newNode.seq = this.core.length + this.length)\n const target = new Key(seq, key)\n\n while (node.children.length) {\n stack.push(node)\n node.changed = true // changed, but compressible\n\n let s = 0\n let e = node.keys.length\n let c\n\n while (s < e) {\n const mid = (s + e) >> 1\n c = b4a.compare(target.value, await node.getKey(mid))\n\n if (c === 0) {\n if (cas) {\n const prev = await node.getKeyNode(mid)\n if (!(await cas(prev.final(encoding), newNode))) return this._unlockMaybe()\n }\n if (!this.tree.alwaysDuplicate) {\n const prev = await node.getKeyNode(mid)\n if (sameValue(prev.value, value)) return this._unlockMaybe()\n }\n node.setKey(mid, target)\n return this._append(root, seq, key, value)\n }\n\n if (c < 0) e = mid\n else s = mid + 1\n }\n\n const i = c < 0 ? e : s\n node = await node.getChildNode(i)\n }\n\n let needsSplit = !(await node.insertKey(target, value, null, newNode, encoding, cas))\n if (!node.changed) return this._unlockMaybe()\n\n while (needsSplit) {\n const parent = stack.pop()\n const { median, right } = await node.split()\n\n if (parent) {\n needsSplit = !(await parent.insertKey(median, value, right, null, encoding, null))\n node = parent\n } else {\n root = TreeNode.create(node.block)\n root.changed = true\n root.keys.push(median)\n root.children.push(new Child(0, 0, node), new Child(0, 0, right))\n needsSplit = false\n }\n }\n\n return this._append(root, seq, key, value)\n }\n\n async del(key, opts) {\n const release = this.batchLock ? await this.batchLock() : null\n const cas = (opts && opts.cas) || null\n const encoding = this._getEncoding(opts)\n\n if (!this.locked) await this.lock()\n if (!release) return this._del(key, encoding, cas)\n\n try {\n return await this._del(key, encoding, cas)\n } finally {\n release()\n }\n }\n\n async _del(key, encoding, cas) {\n const delNode = {\n seq: 0,\n key,\n value: null\n }\n\n key = enc(encoding.key, key)\n\n const stack = []\n\n let node = await this.getRoot(true)\n if (!node) return this._unlockMaybe()\n\n const seq = (delNode.seq = this.core.length + this.length)\n\n while (true) {\n stack.push(node)\n\n let s = 0\n let e = node.keys.length\n let c\n\n while (s < e) {\n const mid = (s + e) >> 1\n c = b4a.compare(key, await node.getKey(mid))\n\n if (c === 0) {\n if (cas) {\n const prev = await node.getKeyNode(mid)\n if (!(await cas(prev.final(encoding), delNode))) return this._unlockMaybe()\n }\n if (node.children.length) await setKeyToNearestLeaf(node, mid, stack)\n else node.removeKey(mid)\n // we mark these as changed late, so we don't rewrite them if it is a 404\n for (const node of stack) node.changed = true\n return this._append(await rebalance(stack), seq, key, null)\n }\n\n if (c < 0) e = mid\n else s = mid + 1\n }\n\n if (!node.children.length) return this._unlockMaybe()\n\n const i = c < 0 ? e : s\n node = await node.getChildNode(i)\n }\n }\n\n async _closeSnapshot() {\n if (this.isSnapshot) {\n await this.core.close()\n this._finalize()\n }\n }\n\n async close() {\n if (this.isSnapshot) return this._closeSnapshot()\n\n this.root = null\n if (this.blocks) this.blocks.clear()\n this.length = 0\n this._unlock()\n }\n\n destroy() {\n // compat, remove later\n this.close().catch(noop)\n }\n\n toBlocks() {\n if (this.appending) return this.appending\n\n const batch = new Array(this.length)\n\n for (let i = 0; i < this.length; i++) {\n const seq = this.core.length + i\n const { pendingIndex, key, value } = this.blocks.get(seq)\n\n if (i < this.length - 1) {\n pendingIndex[0] = null\n let j = 0\n\n while (j < pendingIndex.length) {\n const idx = pendingIndex[j]\n if (idx !== null && idx.seq === seq) {\n idx.offset = j++\n continue\n }\n if (j === pendingIndex.length - 1) pendingIndex.pop()\n else pendingIndex[j] = pendingIndex.pop()\n }\n }\n\n batch[i] = Node.encode({\n key,\n value,\n index: deflate(pendingIndex)\n })\n }\n\n this.appending = batch\n return batch\n }\n\n flush() {\n if (!this.length) return this.close()\n\n const batch = this.toBlocks()\n\n this.root = null\n this.blocks.clear()\n this.length = 0\n\n return this._appendBatch(batch)\n }\n\n _unlockMaybe() {\n if (this.autoFlush) this._unlock()\n }\n\n _unlock() {\n const locked = this.locked\n this.locked = null\n if (locked !== null) locked()\n this._finalize()\n }\n\n _finalize() {\n // technically finalize can be called more than once, so here we just check if we already have been removed\n if (this.index >= this.tree._batches.length || this.tree._batches[this.index] !== this) return\n const top = this.tree._batches.pop()\n if (top === this) return\n top.index = this.index\n this.tree._batches[top.index] = top\n }\n\n _append(root, seq, key, value) {\n const index = []\n root.indexChanges(index, seq)\n index[0] = new Child(seq, 0, root)\n\n if (!this.autoFlush) {\n const block = new BatchEntry(seq, this, key, value, index)\n root.block = block\n this.root = root\n this.length++\n this.blocks.set(seq, block)\n\n root.updateChildren(seq, block)\n return\n }\n\n return this._appendBatch(\n Node.encode({\n key,\n value,\n index: deflate(index)\n })\n )\n }\n\n async _appendBatch(raw) {\n try {\n await this.core.append(raw)\n } finally {\n this._unlock()\n }\n }\n}\n\nclass EntryWatcher extends ReadyResource {\n constructor(bee, key, opts = {}) {\n super()\n\n this.keyEncoding = opts.keyEncoding || bee.keyEncoding\n this.valueEncoding = opts.valueEncoding || bee.valueEncoding\n\n this.index = bee._entryWatchers.push(this) - 1\n this.bee = bee\n\n this.key = key\n this.node = null\n\n this._forceUpdate = false\n this._debouncedUpdate = debounce(this._processUpdate.bind(this))\n }\n\n _close() {\n const top = this.bee._entryWatchers.pop()\n if (top !== this) {\n top.index = this.index\n this.bee._entryWatchers[top.index] = top\n }\n }\n\n _onappend() {\n this._debouncedUpdate()\n }\n\n _ontruncate() {\n this._forceUpdate = true\n this._debouncedUpdate()\n }\n\n async _processUpdate() {\n const force = this._forceUpdate\n this._forceUpdate = false\n\n let newNode\n try {\n newNode = await this.bee.get(this.key, {\n keyEncoding: this.keyEncoding,\n valueEncoding: this.valueEncoding\n })\n } catch (e) {\n if (e.code === 'SNAPSHOT_NOT_AVAILABLE') {\n // There was a truncate event before the get resolved\n // So this handler will run again anyway\n return\n } else if (this.bee.closing) {\n this.close().catch(safetyCatch)\n return\n }\n this.emit('error', e)\n return\n }\n\n if (force || newNode?.seq !== this.node?.seq) {\n this.node = newNode\n this.emit('update')\n }\n }\n}\n\nclass Watcher extends ReadyResource {\n constructor(bee, range, opts = {}) {\n super()\n\n this.keyEncoding = opts.keyEncoding || bee.keyEncoding\n this.valueEncoding = opts.valueEncoding || bee.valueEncoding\n this.index = bee._watchers.push(this) - 1\n this.bee = bee\n this.core = bee.core\n\n this.latestDiff = 0\n this.range = range\n this.map = opts.map || defaultWatchMap\n\n this.current = null\n this.previous = null\n this.currentMapped = null\n this.previousMapped = null\n this.stream = null\n\n this._lock = mutexify()\n this._flowing = false\n this._resolveOnChange = null\n this._differ = opts.differ || defaultDiffer\n this._eager = !!opts.eager\n this._onchange = opts.onchange || null\n\n this.on('newListener', autoFlowOnUpdate)\n\n this.ready().catch(safetyCatch)\n }\n\n async _consume() {\n if (this._flowing) return\n try {\n for await (const _ of this) {\n } // eslint-disable-line\n } catch {}\n }\n\n async _open() {\n await this.bee.ready()\n\n const opts = {\n keyEncoding: this.keyEncoding,\n valueEncoding: this.valueEncoding\n }\n\n // Point from which to start watching\n this.current = this._eager ? this.bee.checkout(1, opts) : this.bee.snapshot(opts)\n await this.current.ready()\n\n if (this._onchange) {\n if (this._eager) await this._onchange()\n this._consume()\n }\n }\n\n [Symbol.asyncIterator]() {\n this._flowing = true\n return this\n }\n\n _ontruncate() {\n this._onappend()\n }\n\n _onappend() {\n const resolve = this._resolveOnChange\n this._resolveOnChange = null\n if (resolve) resolve()\n }\n\n async _waitForChanges() {\n if (this.current.version < this.bee.version || this.closing) return\n\n await new Promise((resolve) => {\n this._resolveOnChange = resolve\n })\n }\n\n async next() {\n try {\n return await this._next()\n } catch (err) {\n if (this.closing) return { value: undefined, done: true }\n await this.close()\n throw err\n }\n }\n\n async _next() {\n const release = await this._lock()\n\n try {\n if (this.closing) return { value: undefined, done: true }\n\n if (!this.opened) await this.ready()\n\n while (true) {\n await this._waitForChanges()\n\n if (this.closing) return { value: undefined, done: true }\n\n await this._closePrevious()\n this.previous = this.current.snapshot()\n\n await this._closeCurrent()\n this.current = this.bee.snapshot({\n keyEncoding: this.keyEncoding,\n valueEncoding: this.valueEncoding\n })\n\n await this.current.ready()\n await this.previous.ready()\n\n if (this.current.core.fork !== this.previous.core.fork) {\n return await this._yield()\n }\n\n this.stream = this._differ(this.current, this.previous, this.range)\n\n try {\n for await (const data of this.stream) {\n // eslint-disable-line\n return await this._yield()\n }\n } finally {\n this.stream = null\n }\n }\n } finally {\n release()\n }\n }\n\n async _yield() {\n this.currentMapped = this.map(this.current)\n this.previousMapped = this.map(this.previous)\n\n if (this._onchange) {\n try {\n await this._onchange()\n } catch (err) {\n safetyCatch(err)\n }\n }\n\n this.emit('update')\n return { done: false, value: [this.currentMapped, this.previousMapped] }\n }\n\n async return() {\n await this.close()\n return { done: true }\n }\n\n async _close() {\n const top = this.bee._watchers.pop()\n if (top !== this) {\n top.index = this.index\n this.bee._watchers[top.index] = top\n }\n\n if (this.stream && !this.stream.destroying) {\n this.stream.destroy()\n }\n\n this._onappend() // Continue execution being closed\n\n await this._closeCurrent().catch(safetyCatch)\n await this._closePrevious().catch(safetyCatch)\n\n const release = await this._lock()\n release()\n }\n\n destroy() {\n return this.close()\n }\n\n async _closeCurrent() {\n if (this.currentMapped) await this.currentMapped.close()\n if (this.current) await this.current.close()\n this.current = this.currentMapped = null\n }\n\n async _closePrevious() {\n if (this.previousMapped) await this.previousMapped.close()\n if (this.previous) await this.previous.close()\n this.previous = this.previousMapped = null\n }\n}\n\nfunction autoFlowOnUpdate(name) {\n if (name === 'update') this._consume()\n}\n\nfunction defaultWatchMap(snapshot) {\n return snapshot\n}\n\nasync function leafSize(node, goLeft) {\n while (node.children.length) node = await node.getChildNode(goLeft ? 0 : node.children.length - 1)\n return node.keys.length\n}\n\nasync function setKeyToNearestLeaf(node, index, stack) {\n let [left, right] = await Promise.all([node.getChildNode(index), node.getChildNode(index + 1)])\n const [ls, rs] = await Promise.all([leafSize(left, false), leafSize(right, true)])\n\n if (ls < rs) {\n // if fewer leaves on the left\n stack.push(right)\n while (right.children.length) stack.push((right = right.children[0].value))\n node.keys[index] = right.keys.shift()\n } else {\n // if fewer leaves on the right\n stack.push(left)\n while (left.children.length) stack.push((left = left.children[left.children.length - 1].value))\n node.keys[index] = left.keys.pop()\n }\n}\n\nasync function rebalance(stack) {\n const root = stack[0]\n\n while (stack.length > 1) {\n const node = stack.pop()\n const parent = stack[stack.length - 1]\n\n if (node.keys.length >= MIN_KEYS) return root\n\n let { left, index, right } = await node.siblings(parent)\n\n // maybe borrow from left sibling?\n if (left && left.keys.length > MIN_KEYS) {\n left.changed = true\n node.keys.unshift(parent.keys[index - 1])\n if (left.children.length) node.children.unshift(left.children.pop())\n parent.keys[index - 1] = left.keys.pop()\n return root\n }\n\n // maybe borrow from right sibling?\n if (right && right.keys.length > MIN_KEYS) {\n right.changed = true\n node.keys.push(parent.keys[index])\n if (right.children.length) node.children.push(right.children.shift())\n parent.keys[index] = right.keys.shift()\n return root\n }\n\n // merge node with another sibling\n if (left) {\n index--\n right = node\n } else {\n left = node\n }\n\n left.merge(right, parent.keys[index])\n parent.removeKey(index)\n }\n\n // check if the tree shrunk\n if (!root.keys.length && root.children.length) return root.getChildNode(0)\n return root\n}\n\nfunction iteratorToStream(ite, signal) {\n let done\n let closing\n\n const rs = new Readable({\n signal,\n open(cb) {\n done = cb\n ite.open().then(fin, fin)\n },\n read(cb) {\n done = cb\n ite.next().then(push, fin)\n },\n predestroy() {\n closing = ite.close()\n closing.catch(noop)\n },\n destroy(cb) {\n done = cb\n if (!closing) closing = ite.close()\n closing.then(fin, fin)\n }\n })\n\n return rs\n\n function fin(err) {\n done(err)\n }\n\n function push(val) {\n rs.push(val)\n done(null)\n }\n}\n\nasync function iteratorPeek(ite) {\n try {\n await ite.open()\n return await ite.next()\n } finally {\n await ite.close()\n }\n}\n\nfunction encRange(e, opts) {\n if (!e) return opts\n\n if (e.encodeRange) {\n const r = e.encodeRange({\n gt: opts.gt,\n gte: opts.gte,\n lt: opts.lt,\n lte: opts.lte\n })\n opts.gt = r.gt\n opts.gte = r.gte\n opts.lt = r.lt\n opts.lte = r.lte\n return opts\n }\n\n if (opts.gt !== undefined) opts.gt = enc(e, opts.gt)\n if (opts.gte !== undefined) opts.gte = enc(e, opts.gte)\n if (opts.lt !== undefined) opts.lt = enc(e, opts.lt)\n if (opts.lte !== undefined) opts.lte = enc(e, opts.lte)\n if (opts.sub && !opts.gt && !opts.gte) opts.gt = enc(e, SEP)\n if (opts.sub && !opts.lt && !opts.lte) opts.lt = bump(enc(e, EMPTY))\n\n return opts\n}\n\nfunction bump(key) {\n // key should have been copied by enc above before hitting this\n key[key.length - 1]++\n return key\n}\n\nfunction enc(e, v) {\n if (v === undefined || v === null) return null\n if (e !== null) return e.encode(v)\n if (typeof v === 'string') return b4a.from(v)\n return v\n}\n\nfunction prefixEncoding(prefix, keyEncoding) {\n return {\n encode(key) {\n return b4a.concat([prefix, b4a.isBuffer(key) ? key : enc(keyEncoding, key)])\n },\n decode(key) {\n const sliced = key.slice(prefix.length, key.length)\n return keyEncoding ? keyEncoding.decode(sliced) : sliced\n }\n }\n}\n\nfunction copyEntry(entry) {\n let key = entry.key\n let value = entry.value\n let index = entry.index\n\n // key, value and index all refer to the same buffer (one hypercore block)\n // If together they are larger than half the buffer's byteLength,\n // this means that they got their own private slab (see Buffer.allocUnsafe docs)\n // so no need to unslab\n const size =\n key.byteLength +\n (value === null ? 0 : value.byteLength) +\n (index === null ? 0 : index.byteLength)\n if (2 * size < key.buffer.byteLength) {\n const [newKey, newValue, newIndex] = unslabAll([entry.key, entry.value, entry.index])\n key = newKey\n value = newValue\n index = newIndex\n }\n\n return {\n key,\n value,\n index,\n inflated: null\n }\n}\n\nfunction defaultDiffer(currentSnap, previousSnap, opts) {\n return currentSnap.createDiffStream(previousSnap, opts)\n}\n\nfunction toNull() {\n return null\n}\n\nfunction getBackingCore(core) {\n if (core.core) return core\n if (core.getBackingCore) return core.getBackingCore().session\n return null\n}\n\nfunction sameValue(a, b) {\n return a === b || (a !== null && b !== null && b4a.equals(a, b))\n}\n\nfunction noop() {}\n\nfunction getExtension(db, opts) {\n if (opts.extension === false) return null\n if (opts.extension && opts.extension !== true) return opts.extension\n return Extension.register(db)\n}\n\nasync function isLinked(batch, block) {\n const seq = block.seq\n block.inflate()\n\n const keys = [block.key]\n const wait = batch.options.wait\n\n for (const l of block.index.levels) {\n if (!l.keys.length) continue\n batch.options.wait = false\n try {\n keys.push(await batch.getKey(l.keys[0].seq))\n } catch {}\n batch.options.wait = wait\n }\n\n for (const k of keys) {\n if (await batch.links(k, seq)) return true\n }\n\n if (batch.core.closing) throw new Error('Core is closed')\n\n return false\n}\n\nmodule.exports = Hyperbee\nconst b4a = require('b4a')\n\nclass SubTree {\n constructor(node, parent) {\n this.node = node\n this.parent = parent\n\n this.isKey = node.children.length === 0\n this.i = this.isKey ? 1 : 0\n this.n = 0\n\n const child = this.isKey ? null : this.node.children[0]\n this.seq = child !== null ? child.seq : this.node.keys[0].seq\n this.offset = child !== null ? child.offset : 0\n }\n\n next() {\n this.i++\n this.isKey = (this.i & 1) === 1\n if (!this.isKey && !this.node.children.length) this.i++\n return this.update()\n }\n\n async bisect(key, incl) {\n let s = 0\n let e = this.node.keys.length\n let c\n\n while (s < e) {\n const mid = (s + e) >> 1\n c = cmp(key, await this.node.getKey(mid))\n\n if (c === 0) {\n if (incl) this.i = mid * 2 + 1\n else this.i = mid * 2 + (this.node.children.length ? 2 : 3)\n return true\n }\n\n if (c < 0) e = mid\n else s = mid + 1\n }\n\n const i = c < 0 ? e : s\n this.i = 2 * i + (this.node.children.length ? 0 : 1)\n return this.node.children.length === 0\n }\n\n update() {\n this.isKey = (this.i & 1) === 1\n this.n = this.i >> 1\n if (this.n >= (this.isKey ? this.node.keys.length : this.node.children.length)) return false\n const child = this.isKey ? null : this.node.children[this.n]\n this.seq = child !== null ? child.seq : this.node.keys[this.n].seq\n this.offset = child !== null ? child.offset : 0\n return true\n }\n\n async key() {\n return this.n < this.node.keys.length\n ? this.node.getKey(this.n)\n : this.parent && this.parent.key()\n }\n\n async compare(tree) {\n const [a, b] = await Promise.all([this.key(), tree.key()])\n return cmp(a, b)\n }\n}\n\nclass TreeIterator {\n constructor(batch, opts) {\n this.batch = batch\n this.stack = []\n this.lt = opts.lt || opts.lte || null\n this.lte = !!opts.lte\n this.gt = opts.gt || opts.gte || null\n this.gte = !!opts.gte\n this.seeking = !!this.gt\n this.encoding = opts.encoding || batch.encoding\n }\n\n async open() {\n const node = await this.batch.getRoot(false)\n if (!node || !node.keys.length) return\n const tree = new SubTree(node, null)\n if (this.seeking && !(await this._seek(tree))) return\n this.stack.push(tree)\n }\n\n async _seek(tree) {\n const done = await tree.bisect(this.gt, this.gte)\n const oob = !tree.update()\n if (done || oob) {\n this.seeking = false\n if (oob) return false\n }\n return true\n }\n\n peek() {\n if (!this.stack.length) return null\n return this.stack[this.stack.length - 1]\n }\n\n skip() {\n if (!this.stack.length) return\n if (!this.stack[this.stack.length - 1].next()) this.stack.pop()\n }\n\n async nextKey() {\n let n = null\n while (this.stack.length && n === null) n = await this.next()\n if (n === null) return null\n if (!this.lt) return n.final(this.encoding)\n\n const c = cmp(n.key, this.lt)\n if (this.lte ? c <= 0 : c < 0) return n.final(this.encoding)\n this.stack = []\n return null\n }\n\n async next() {\n if (!this.stack.length) return null\n\n const top = this.stack[this.stack.length - 1]\n const { isKey, n, seq } = top\n\n if (!top.next()) {\n this.stack.pop()\n }\n\n if (isKey) {\n this.seeking = false\n return this.batch.getBlock(seq)\n }\n\n const child = await top.node.getChildNode(n)\n top.node.children[n] = null // unlink to save memory\n const tree = new SubTree(child, top)\n if (this.seeking && !(await this._seek(tree))) return null\n this.stack.push(tree)\n\n return null\n }\n\n close() {\n return this.batch._closeSnapshot()\n }\n}\n\nmodule.exports = class DiffIterator {\n constructor(left, right, opts = {}) {\n this.left = new TreeIterator(left, opts)\n this.right = new TreeIterator(right, opts)\n this.limit = typeof opts.limit === 'number' ? opts.limit : -1\n }\n\n async open() {\n await Promise.all([this.left.open(), this.right.open()])\n }\n\n async next() {\n if (this.limit === 0) return null\n const res = await this._next()\n if (!res || (res.left === null && res.right === null)) return null\n this.limit--\n return res\n }\n\n async _next() {\n const a = this.left\n const b = this.right\n\n while (true) {\n const [l, r] = await Promise.all([a.peek(), b.peek()])\n\n if (!l && !r) return null\n if (!l) return { left: null, right: await b.nextKey() }\n if (!r) return { left: await a.nextKey(), right: null }\n\n if (l.seq === r.seq && l.isKey === r.isKey && l.offset === r.offset) {\n a.skip()\n b.skip()\n continue\n }\n\n const c = await l.compare(r)\n\n if (l.isKey && !r.isKey) {\n await b.next()\n continue\n }\n\n if (!l.isKey && r.isKey) {\n await a.next()\n continue\n }\n\n if (l.isKey && r.isKey) {\n if (c === 0) return { left: await a.nextKey(), right: await b.nextKey() }\n if (c < 0) return { left: await a.nextKey(), right: null }\n return { left: null, right: await b.nextKey() }\n }\n\n if (c === 0) await Promise.all([a.next(), b.next()])\n else if (c < 0) await b.next()\n else await a.next()\n }\n }\n\n async close() {\n await Promise.all([this.left.close(), this.right.close()])\n }\n}\n\nfunction cmp(a, b) {\n if (!a) return b ? 1 : 0\n if (!b) return a ? -1 : 0\n return b4a.compare(a, b)\n}\nmodule.exports = class HistoryIterator {\n constructor(batch, opts = {}) {\n this.batch = batch\n this.options = opts\n this.live = !!opts.live\n this.gte = 0\n this.lt = 0\n this.reverse = !!opts.reverse\n this.limit = typeof opts.limit === 'number' ? opts.limit : -1\n this.encoding = opts.encoding || batch.encoding\n if (this.live && this.reverse) {\n throw new Error('Cannot have both live and reverse enabled')\n }\n }\n\n async open() {\n await this.batch.getRoot(false) // does the update dance\n this.gte = gte(this.options, this.batch.version)\n this.lt = this.live ? Infinity : lt(this.options, this.batch.version)\n }\n\n async next() {\n if (this.limit === 0) return null\n if (this.limit > 0) this.limit--\n\n if (this.gte >= this.lt) return null\n\n if (this.reverse) {\n if (this.lt <= 1) return null\n return final(await this.batch.getBlock(--this.lt), this.encoding)\n }\n\n return final(await this.batch.getBlock(this.gte++), this.encoding)\n }\n\n close() {\n return this.batch._closeSnapshot()\n }\n}\n\nfunction final(node, encoding) {\n const type = node.isDeletion() ? 'del' : 'put'\n return { type, ...node.final(encoding) }\n}\n\nfunction gte(opts, version) {\n if (opts.gt) return (opts.gt < 0 ? opts.gt + version : opts.gt) + 1\n const gte = opts.gte || opts.since || 1\n return gte < 0 ? gte + version : gte\n}\n\nfunction lt(opts, version) {\n if (opts.lte === 0 || opts.lt === 0 || opts.end === 0) return 0\n if (opts.lte) return (opts.lte < 0 ? opts.lte + version : opts.lte) + 1\n const lt = opts.lt || opts.end || version\n return lt < 0 ? lt + version : lt\n}\nmodule.exports = class LocalBlocksIterator {\n constructor(batch, opts = {}) {\n this.batch = batch\n this.options = opts\n this.gte = 0\n this.lt = 0\n this.limit = typeof opts.limit === 'number' ? opts.limit : -1\n }\n\n async open() {\n await this.batch.getRoot(false) // does the update dance\n this.gte = gte(this.options, this.batch.version)\n this.lt = lt(this.options, this.batch.version)\n }\n\n async next() {\n if (this.limit === 0) return null\n if (this.limit > 0) this.limit--\n\n while (this.gte < this.lt) {\n try {\n return await this.batch.getBlock(this.gte++)\n } catch {\n continue\n }\n }\n\n return null\n }\n\n close() {\n return this.batch._closeSnapshot()\n }\n}\n\nfunction gte(opts, version) {\n if (opts.gt) return (opts.gt < 0 ? opts.gt + version : opts.gt) + 1\n const gte = opts.gte || opts.since || 1\n return gte < 0 ? gte + version : gte\n}\n\nfunction lt(opts, version) {\n if (opts.lte === 0 || opts.lt === 0 || opts.end === 0) return 0\n if (opts.lte) return (opts.lte < 0 ? opts.lte + version : opts.lte) + 1\n const lt = opts.lt || opts.end || version\n return lt < 0 ? lt + version : lt\n}\nconst b4a = require('b4a')\n\nmodule.exports = class RangeIterator {\n constructor(batch, encoding, opts = {}) {\n this.batch = batch\n this.stack = []\n this.opened = false\n this.encoding = encoding || batch.encoding\n\n this._limit = typeof opts.limit === 'number' ? opts.limit : -1\n this._gIncl = !opts.gt\n this._gKey = opts.gt || opts.gte || null\n this._lIncl = !opts.lt\n this._lKey = opts.lt || opts.lte || null\n this._reverse = !!opts.reverse\n this._version = 0\n this._checkpoint = opts.checkpoint && opts.checkpoint.length ? opts.checkpoint : null\n this._nexting = false\n this._closed = false\n }\n\n snapshot(version = this.batch.version) {\n const checkpoint = []\n for (const s of this.stack) {\n let { node, i } = s\n if (this._nexting && s === this.stack[this.stack.length - 1]) {\n i = this._reverse ? i + 1 : i - 1\n }\n if (!node.block) continue\n if (i < 0) continue\n checkpoint.push(node.block.seq, node.offset, i)\n }\n\n return {\n version,\n gte: this._gIncl ? this._gKey : null,\n gt: this._gIncl ? null : this._gKey,\n lte: this._lIncl ? this._lKey : null,\n lt: this._lIncl ? null : this._lKey,\n limit: this._limit,\n reverse: this._reverse,\n ended: this.opened && !checkpoint.length,\n checkpoint: this.opened ? checkpoint : []\n }\n }\n\n async open() {\n await this._open()\n this.opened = true\n }\n\n async _open() {\n if (this._checkpoint) {\n for (let j = 0; j < this._checkpoint.length; j += 3) {\n const seq = this._checkpoint[j]\n const offset = this._checkpoint[j + 1]\n const i = this._checkpoint[j + 2]\n this.stack.push({\n node: (await this.batch.getBlock(seq)).getTreeNode(offset),\n i\n })\n }\n return\n }\n\n this._nexting = true\n\n let node = await this.batch.getRoot(false)\n if (!node) {\n this._nexting = false\n return\n }\n\n const incl = this._reverse ? this._lIncl : this._gIncl\n const start = this._reverse ? this._lKey : this._gKey\n\n if (!start) {\n this.stack.push({ node, i: this._reverse ? node.keys.length << 1 : 0 })\n this._nexting = false\n this._preloadQuery()\n return\n }\n\n while (true) {\n const entry = { node, i: this._reverse ? node.keys.length << 1 : 0 }\n\n let s = 0\n let e = node.keys.length\n let c\n\n while (s < e) {\n const mid = (s + e) >> 1\n c = b4a.compare(start, await node.getKey(mid))\n\n if (c === 0) {\n if (incl) entry.i = mid * 2 + 1\n else entry.i = mid * 2 + (this._reverse ? 0 : 2)\n this.stack.push(entry)\n this._nexting = false\n this._preloadQuery()\n return\n }\n\n if (c < 0) e = mid\n else s = mid + 1\n }\n\n const i = c < 0 ? e : s\n entry.i = 2 * i + (this._reverse ? -1 : 1)\n\n if (entry.i >= 0 && entry.i <= node.keys.length << 1) this.stack.push(entry)\n if (!node.children.length) {\n this._nexting = false\n this._preloadQuery()\n return\n }\n\n node = await node.getChildNode(i)\n }\n }\n\n _preloadQuery() {\n const max = { nodes: 0, max: 2048 }\n\n if (this._limit === -1 && !this._reverse && this.stack.length) {\n for (const s of this.stack) {\n const k = (s.i - (s.i & 1)) / 2\n this._preload(s.node, k + 1, this._lKey, max).catch(noop)\n }\n }\n }\n\n async _preload(node, i, end, max) {\n for (; i < node.keys.length; i++) {\n const key = node.keys[i]\n const block = await this.batch.getBlock(key.seq)\n if (this._closed) return\n const c = end ? b4a.compare(block.key, end) : -1\n if (c >= 0 || max.nodes >= max.max || i >= node.children.length) return\n max.nodes++\n const next = await node.getChildNode(i)\n if (this._closed) return\n this._preload(next, 0, end, max).catch(noop)\n }\n\n if (node.children.length && max.nodes < max.max) {\n const next = await node.getChildNode(node.children.length - 1)\n if (this._closed) return\n this._preload(next, 0, end, max).catch(noop)\n }\n }\n\n async next() {\n // TODO: this nexting flag is only needed if someone asks for a snapshot during\n // a lookup (ie the extension, pretty important...).\n // A better solution would be to refactor this so top.i is incremented eagerly\n // to get the current block instead of the way it is done now (++i vs i++)\n this._nexting = true\n\n const end = this._reverse ? this._gKey : this._lKey\n const incl = this._reverse ? this._gIncl : this._lIncl\n\n while (this.stack.length && (this._limit === -1 || this._limit > 0)) {\n const top = this.stack[this.stack.length - 1]\n const isKey = (top.i & 1) === 1\n const n = this._reverse ? (top.i < 0 ? top.node.keys.length : top.i-- >> 1) : top.i++ >> 1\n\n if (!isKey) {\n if (!top.node.children.length) continue\n const node = await top.node.getChildNode(n)\n if (top.node.block.seq < this.batch.core.length) {\n top.node.children[n].value = null // unlink it to save memory\n }\n this.stack.push({ i: this._reverse ? node.keys.length << 1 : 0, node })\n continue\n }\n\n if (n >= top.node.keys.length) {\n this.stack.pop()\n continue\n }\n\n const key = top.node.keys[n]\n const block = await this.batch.getBlock(key.seq)\n if (end) {\n const c = b4a.compare(block.key, end)\n if (c === 0 ? !incl : this._reverse ? c < 0 : c > 0) {\n this._limit = 0\n break\n }\n }\n if (this._limit > 0) this._limit--\n this._nexting = false\n return block.final(this.encoding)\n }\n\n this._nexting = false\n return null\n }\n\n close() {\n this._closed = true\n return this.batch._closeSnapshot()\n }\n}\n\nfunction noop() {}\nconst { Extension } = require('./messages')\n\n// const MAX_ACTIVE = 32\nconst FLUSH_BATCH = 128\nconst MAX_PASSIVE_BATCH = 2048\nconst MAX_ACTIVE_BATCH = MAX_PASSIVE_BATCH + FLUSH_BATCH\n\nclass Batch {\n constructor(outgoing, from) {\n this.blocks = []\n this.start = 0\n this.end = 0\n this.outgoing = outgoing\n this.from = from\n }\n\n push(seq) {\n const len = this.blocks.push(seq)\n if (len === 1 || seq < this.start) this.start = seq\n if (len === 1 || seq >= this.end) this.end = seq + 1\n if (len >= FLUSH_BATCH) {\n this.send()\n this.clear()\n }\n }\n\n send() {\n if (!this.blocks.length) return\n this.outgoing.send(\n Extension.encode({\n cache: { blocks: this.blocks, start: this.start, end: this.end }\n }),\n this.from\n )\n }\n\n clear() {\n this.start = this.end = 0\n this.blocks = []\n }\n}\n\nclass HyperbeeExtension {\n constructor(db) {\n this.encoding = null\n this.outgoing = null\n this.db = db\n this.active = 0\n }\n\n get(version, key) {\n this.outgoing.broadcast(Extension.encode({ get: { version, key } }))\n }\n\n iterator(snapshot) {\n if (snapshot.ended) return\n if (snapshot.limit === 0) return\n if (snapshot.limit === -1) snapshot.limit = 0\n this.outgoing.broadcast(Extension.encode({ iterator: snapshot }))\n }\n\n onmessage(buf, from) {\n // TODO: handle max active extension messages\n // this.active++\n\n const message = decode(buf)\n if (!message) return\n\n if (message.cache) this.oncache(message.cache, from)\n if (message.get) this.onget(message.get, from)\n if (message.iterator) this.oniterator(message.iterator, from)\n }\n\n oncache(message, from) {\n if (!message.blocks.length) return\n this.db.core.download(message)\n }\n\n onget(message, from) {\n if (!message.version || message.version > this.db.version) return\n\n const b = new Batch(this.outgoing, from)\n const db = this.db.checkout(message.version)\n\n db.get(message.key, {\n extension: false,\n wait: false,\n update: false,\n onseq\n }).then(done, done)\n\n function done() {\n db.close().catch(noop)\n b.send()\n }\n\n function onseq(seq) {\n b.push(seq)\n }\n }\n\n async oniterator(message, from) {\n if (!message.version || message.version > this.db.version) return\n\n const b = new Batch(this.outgoing, from)\n const seqs = new Set()\n\n let skip = message.checkpoint.length\n let work = 0\n\n const db = this.db.checkout(message.version)\n const ite = db.createRangeIterator({\n ...message,\n wait: false,\n extension: false,\n update: false,\n limit: message.limit === 0 ? -1 : message.limit,\n onseq(seq) {\n if (skip && skip--) return\n if (seqs.has(seq)) return\n work++\n seqs.add(seq)\n b.push(seq)\n }\n })\n\n try {\n await ite.open()\n // eslint-disable-next-line no-unmodified-loop-condition\n while (work < MAX_ACTIVE_BATCH) {\n if (!(await ite.next())) break\n }\n } catch (_) {\n // do nothing\n } finally {\n ite.close().catch(noop)\n db.close().catch(noop)\n b.send()\n }\n }\n\n static register(db) {\n const e = new this(db)\n e.outgoing = db.core.registerExtension('hyperbee', e)\n return e\n }\n}\n\nHyperbeeExtension.BATCH_SIZE = MAX_PASSIVE_BATCH\n\nmodule.exports = HyperbeeExtension\n\nfunction decode(buf) {\n try {\n return Extension.decode(buf)\n } catch (err) {\n return null\n }\n}\n\nfunction noop() {}\n// This file is auto generated by the protocol-buffers compiler\n\n/* eslint-disable quotes */\n/* eslint-disable indent */\n/* eslint-disable no-redeclare */\n/* eslint-disable camelcase */\n/* eslint-disable no-var */\n\n// Remember to `npm install --save protocol-buffers-encodings`\nvar encodings = require('protocol-buffers-encodings')\nvar b4a = require('b4a')\nvar varint = encodings.varint\nvar skip = encodings.skip\n\nvar YoloIndex = exports.YoloIndex = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Header = exports.Header = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Node = exports.Node = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Extension = exports.Extension = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\ndefineYoloIndex()\ndefineHeader()\ndefineNode()\ndefineExtension()\n\nfunction defineYoloIndex () {\n var Level = YoloIndex.Level = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n }\n\n defineLevel()\n\n function defineLevel () {\n Level.encodingLength = encodingLength\n Level.encode = encode\n Level.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.keys)) {\n var packedLen = 0\n for (var i = 0; i < obj.keys.length; i++) {\n if (!defined(obj.keys[i])) continue\n var len = encodings.varint.encodingLength(obj.keys[i])\n packedLen += len\n }\n if (packedLen) {\n length += 1 + packedLen + varint.encodingLength(packedLen)\n }\n }\n if (defined(obj.children)) {\n var packedLen = 0\n for (var i = 0; i < obj.children.length; i++) {\n if (!defined(obj.children[i])) continue\n var len = encodings.varint.encodingLength(obj.children[i])\n packedLen += len\n }\n if (packedLen) {\n length += 1 + packedLen + varint.encodingLength(packedLen)\n }\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.keys)) {\n var packedLen = 0\n for (var i = 0; i < obj.keys.length; i++) {\n if (!defined(obj.keys[i])) continue\n packedLen += encodings.varint.encodingLength(obj.keys[i])\n }\n if (packedLen) {\n buf[offset++] = 10\n varint.encode(packedLen, buf, offset)\n offset += varint.encode.bytes\n }\n for (var i = 0; i < obj.keys.length; i++) {\n if (!defined(obj.keys[i])) continue\n encodings.varint.encode(obj.keys[i], buf, offset)\n offset += encodings.varint.encode.bytes\n }\n }\n if (defined(obj.children)) {\n var packedLen = 0\n for (var i = 0; i < obj.children.length; i++) {\n if (!defined(obj.children[i])) continue\n packedLen += encodings.varint.encodingLength(obj.children[i])\n }\n if (packedLen) {\n buf[offset++] = 18\n varint.encode(packedLen, buf, offset)\n offset += varint.encode.bytes\n }\n for (var i = 0; i < obj.children.length; i++) {\n if (!defined(obj.children[i])) continue\n encodings.varint.encode(obj.children[i], buf, offset)\n offset += encodings.varint.encode.bytes\n }\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n keys: [],\n children: []\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n var packedEnd = varint.decode(buf, offset)\n offset += varint.decode.bytes\n packedEnd += offset\n while (offset < packedEnd) {\n obj.keys.push(encodings.varint.decode(buf, offset))\n offset += encodings.varint.decode.bytes\n }\n break\n case 2:\n var packedEnd = varint.decode(buf, offset)\n offset += varint.decode.bytes\n packedEnd += offset\n while (offset < packedEnd) {\n obj.children.push(encodings.varint.decode(buf, offset))\n offset += encodings.varint.decode.bytes\n }\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n }\n\n YoloIndex.encodingLength = encodingLength\n YoloIndex.encode = encode\n YoloIndex.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.levels)) {\n for (var i = 0; i < obj.levels.length; i++) {\n if (!defined(obj.levels[i])) continue\n var len = Level.encodingLength(obj.levels[i])\n length += varint.encodingLength(len)\n length += 1 + len\n }\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.levels)) {\n for (var i = 0; i < obj.levels.length; i++) {\n if (!defined(obj.levels[i])) continue\n buf[offset++] = 10\n varint.encode(Level.encodingLength(obj.levels[i]), buf, offset)\n offset += varint.encode.bytes\n Level.encode(obj.levels[i], buf, offset)\n offset += Level.encode.bytes\n }\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n levels: []\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n var len = varint.decode(buf, offset)\n offset += varint.decode.bytes\n obj.levels.push(Level.decode(buf, offset, offset + len))\n offset += Level.decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineHeader () {\n var Metadata = Header.Metadata = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n }\n\n defineMetadata()\n\n function defineMetadata () {\n Metadata.encodingLength = encodingLength\n Metadata.encode = encode\n Metadata.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.contentFeed)) {\n var len = encodings.bytes.encodingLength(obj.contentFeed)\n length += 1 + len\n }\n if (defined(obj.userData)) {\n var len = encodings.bytes.encodingLength(obj.userData)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.contentFeed)) {\n buf[offset++] = 10\n encodings.bytes.encode(obj.contentFeed, buf, offset)\n offset += encodings.bytes.encode.bytes\n }\n if (defined(obj.userData)) {\n buf[offset++] = 18\n encodings.bytes.encode(obj.userData, buf, offset)\n offset += encodings.bytes.encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n contentFeed: null,\n userData: null\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.contentFeed = encodings.bytes.decode(buf, offset)\n offset += encodings.bytes.decode.bytes\n break\n case 2:\n obj.userData = encodings.bytes.decode(buf, offset)\n offset += encodings.bytes.decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n }\n\n Header.encodingLength = encodingLength\n Header.encode = encode\n Header.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.protocol)) throw new Error(\"protocol is required\")\n var len = encodings.string.encodingLength(obj.protocol)\n length += 1 + len\n if (defined(obj.metadata)) {\n var len = Metadata.encodingLength(obj.metadata)\n length += varint.encodingLength(len)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.protocol)) throw new Error(\"protocol is required\")\n buf[offset++] = 10\n encodings.string.encode(obj.protocol, buf, offset)\n offset += encodings.string.encode.bytes\n if (defined(obj.metadata)) {\n buf[offset++] = 18\n varint.encode(Metadata.encodingLength(obj.metadata), buf, offset)\n offset += varint.encode.bytes\n Metadata.encode(obj.metadata, buf, offset)\n offset += Metadata.encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n protocol: \"\",\n metadata: null\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.protocol = encodings.string.decode(buf, offset)\n offset += encodings.string.decode.bytes\n found0 = true\n break\n case 2:\n var len = varint.decode(buf, offset)\n offset += varint.decode.bytes\n obj.metadata = Metadata.decode(buf, offset, offset + len)\n offset += Metadata.decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineNode () {\n Node.encodingLength = encodingLength\n Node.encode = encode\n Node.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.index)) throw new Error(\"index is required\")\n var len = encodings.bytes.encodingLength(obj.index)\n length += 1 + len\n if (!defined(obj.key)) throw new Error(\"key is required\")\n var len = encodings.bytes.encodingLength(obj.key)\n length += 1 + len\n if (defined(obj.value)) {\n var len = encodings.bytes.encodingLength(obj.value)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.index)) throw new Error(\"index is required\")\n buf[offset++] = 10\n encodings.bytes.encode(obj.index, buf, offset)\n offset += encodings.bytes.encode.bytes\n if (!defined(obj.key)) throw new Error(\"key is required\")\n buf[offset++] = 18\n encodings.bytes.encode(obj.key, buf, offset)\n offset += encodings.bytes.encode.bytes\n if (defined(obj.value)) {\n buf[offset++] = 26\n encodings.bytes.encode(obj.value, buf, offset)\n offset += encodings.bytes.encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n index: null,\n key: null,\n value: null\n }\n var found0 = false\n var found1 = false\n while (true) {\n if (end <= offset) {\n if (!found0 || !found1) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.index = encodings.bytes.decode(buf, offset)\n offset += encodings.bytes.decode.bytes\n found0 = true\n break\n case 2:\n obj.key = encodings.bytes.decode(buf, offset)\n offset += encodings.bytes.decode.bytes\n found1 = true\n break\n case 3:\n obj.value = encodings.bytes.decode(buf, offset)\n offset += encodings.bytes.decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineExtension () {\n var Get = Extension.Get = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n }\n\n var Iterator = Extension.Iterator = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n }\n\n var Cache = Extension.Cache = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n }\n\n defineGet()\n defineIterator()\n defineCache()\n\n function defineGet () {\n Get.encodingLength = encodingLength\n Get.encode = encode\n Get.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.version)) {\n var len = encodings.varint.encodingLength(obj.version)\n length += 1 + len\n }\n if (defined(obj.key)) {\n var len = encodings.bytes.encodingLength(obj.key)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.version)) {\n buf[offset++] = 8\n encodings.varint.encode(obj.version, buf, offset)\n offset += encodings.varint.encode.bytes\n }\n if (defined(obj.key)) {\n buf[offset++] = 18\n encodings.bytes.encode(obj.key, buf, offset)\n offset += encodings.bytes.encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n version: 0,\n key: null\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.version = encodings.varint.decode(buf, offset)\n offset += encodings.varint.decode.bytes\n break\n case 2:\n obj.key = encodings.bytes.decode(buf, offset)\n offset += encodings.bytes.decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n }\n\n function defineIterator () {\n Iterator.encodingLength = encodingLength\n Iterator.encode = encode\n Iterator.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.version)) {\n var len = encodings.varint.encodingLength(obj.version)\n length += 1 + len\n }\n if (defined(obj.gte)) {\n var len = encodings.bytes.encodingLength(obj.gte)\n length += 1 + len\n }\n if (defined(obj.gt)) {\n var len = encodings.bytes.encodingLength(obj.gt)\n length += 1 + len\n }\n if (defined(obj.lte)) {\n var len = encodings.bytes.encodingLength(obj.lte)\n length += 1 + len\n }\n if (defined(obj.lt)) {\n var len = encodings.bytes.encodingLength(obj.lt)\n length += 1 + len\n }\n if (defined(obj.limit)) {\n var len = encodings.varint.encodingLength(obj.limit)\n length += 1 + len\n }\n if (defined(obj.reverse)) {\n var len = encodings.bool.encodingLength(obj.reverse)\n length += 1 + len\n }\n if (defined(obj.checkpoint)) {\n var packedLen = 0\n for (var i = 0; i < obj.checkpoint.length; i++) {\n if (!defined(obj.checkpoint[i])) continue\n var len = encodings.varint.encodingLength(obj.checkpoint[i])\n packedLen += len\n }\n if (packedLen) {\n length += 1 + packedLen + varint.encodingLength(packedLen)\n }\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.version)) {\n buf[offset++] = 8\n encodings.varint.encode(obj.version, buf, offset)\n offset += encodings.varint.encode.bytes\n }\n if (defined(obj.gte)) {\n buf[offset++] = 18\n encodings.bytes.encode(obj.gte, buf, offset)\n offset += encodings.bytes.encode.bytes\n }\n if (defined(obj.gt)) {\n buf[offset++] = 26\n encodings.bytes.encode(obj.gt, buf, offset)\n offset += encodings.bytes.encode.bytes\n }\n if (defined(obj.lte)) {\n buf[offset++] = 34\n encodings.bytes.encode(obj.lte, buf, offset)\n offset += encodings.bytes.encode.bytes\n }\n if (defined(obj.lt)) {\n buf[offset++] = 42\n encodings.bytes.encode(obj.lt, buf, offset)\n offset += encodings.bytes.encode.bytes\n }\n if (defined(obj.limit)) {\n buf[offset++] = 48\n encodings.varint.encode(obj.limit, buf, offset)\n offset += encodings.varint.encode.bytes\n }\n if (defined(obj.reverse)) {\n buf[offset++] = 56\n encodings.bool.encode(obj.reverse, buf, offset)\n offset += encodings.bool.encode.bytes\n }\n if (defined(obj.checkpoint)) {\n var packedLen = 0\n for (var i = 0; i < obj.checkpoint.length; i++) {\n if (!defined(obj.checkpoint[i])) continue\n packedLen += encodings.varint.encodingLength(obj.checkpoint[i])\n }\n if (packedLen) {\n buf[offset++] = 66\n varint.encode(packedLen, buf, offset)\n offset += varint.encode.bytes\n }\n for (var i = 0; i < obj.checkpoint.length; i++) {\n if (!defined(obj.checkpoint[i])) continue\n encodings.varint.encode(obj.checkpoint[i], buf, offset)\n offset += encodings.varint.encode.bytes\n }\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n version: 0,\n gte: null,\n gt: null,\n lte: null,\n lt: null,\n limit: 0,\n reverse: false,\n checkpoint: []\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.version = encodings.varint.decode(buf, offset)\n offset += encodings.varint.decode.bytes\n break\n case 2:\n obj.gte = encodings.bytes.decode(buf, offset)\n offset += encodings.bytes.decode.bytes\n break\n case 3:\n obj.gt = encodings.bytes.decode(buf, offset)\n offset += encodings.bytes.decode.bytes\n break\n case 4:\n obj.lte = encodings.bytes.decode(buf, offset)\n offset += encodings.bytes.decode.bytes\n break\n case 5:\n obj.lt = encodings.bytes.decode(buf, offset)\n offset += encodings.bytes.decode.bytes\n break\n case 6:\n obj.limit = encodings.varint.decode(buf, offset)\n offset += encodings.varint.decode.bytes\n break\n case 7:\n obj.reverse = encodings.bool.decode(buf, offset)\n offset += encodings.bool.decode.bytes\n break\n case 8:\n var packedEnd = varint.decode(buf, offset)\n offset += varint.decode.bytes\n packedEnd += offset\n while (offset < packedEnd) {\n obj.checkpoint.push(encodings.varint.decode(buf, offset))\n offset += encodings.varint.decode.bytes\n }\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n }\n\n function defineCache () {\n Cache.encodingLength = encodingLength\n Cache.encode = encode\n Cache.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.start)) throw new Error(\"start is required\")\n var len = encodings.varint.encodingLength(obj.start)\n length += 1 + len\n if (!defined(obj.end)) throw new Error(\"end is required\")\n var len = encodings.varint.encodingLength(obj.end)\n length += 1 + len\n if (defined(obj.blocks)) {\n var packedLen = 0\n for (var i = 0; i < obj.blocks.length; i++) {\n if (!defined(obj.blocks[i])) continue\n var len = encodings.varint.encodingLength(obj.blocks[i])\n packedLen += len\n }\n if (packedLen) {\n length += 1 + packedLen + varint.encodingLength(packedLen)\n }\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.start)) throw new Error(\"start is required\")\n buf[offset++] = 8\n encodings.varint.encode(obj.start, buf, offset)\n offset += encodings.varint.encode.bytes\n if (!defined(obj.end)) throw new Error(\"end is required\")\n buf[offset++] = 16\n encodings.varint.encode(obj.end, buf, offset)\n offset += encodings.varint.encode.bytes\n if (defined(obj.blocks)) {\n var packedLen = 0\n for (var i = 0; i < obj.blocks.length; i++) {\n if (!defined(obj.blocks[i])) continue\n packedLen += encodings.varint.encodingLength(obj.blocks[i])\n }\n if (packedLen) {\n buf[offset++] = 26\n varint.encode(packedLen, buf, offset)\n offset += varint.encode.bytes\n }\n for (var i = 0; i < obj.blocks.length; i++) {\n if (!defined(obj.blocks[i])) continue\n encodings.varint.encode(obj.blocks[i], buf, offset)\n offset += encodings.varint.encode.bytes\n }\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n start: 0,\n end: 0,\n blocks: []\n }\n var found0 = false\n var found1 = false\n while (true) {\n if (end <= offset) {\n if (!found0 || !found1) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.start = encodings.varint.decode(buf, offset)\n offset += encodings.varint.decode.bytes\n found0 = true\n break\n case 2:\n obj.end = encodings.varint.decode(buf, offset)\n offset += encodings.varint.decode.bytes\n found1 = true\n break\n case 3:\n var packedEnd = varint.decode(buf, offset)\n offset += varint.decode.bytes\n packedEnd += offset\n while (offset < packedEnd) {\n obj.blocks.push(encodings.varint.decode(buf, offset))\n offset += encodings.varint.decode.bytes\n }\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n }\n\n Extension.encodingLength = encodingLength\n Extension.encode = encode\n Extension.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.cache)) {\n var len = Cache.encodingLength(obj.cache)\n length += varint.encodingLength(len)\n length += 1 + len\n }\n if (defined(obj.get)) {\n var len = Get.encodingLength(obj.get)\n length += varint.encodingLength(len)\n length += 1 + len\n }\n if (defined(obj.iterator)) {\n var len = Iterator.encodingLength(obj.iterator)\n length += varint.encodingLength(len)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = b4a.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.cache)) {\n buf[offset++] = 10\n varint.encode(Cache.encodingLength(obj.cache), buf, offset)\n offset += varint.encode.bytes\n Cache.encode(obj.cache, buf, offset)\n offset += Cache.encode.bytes\n }\n if (defined(obj.get)) {\n buf[offset++] = 18\n varint.encode(Get.encodingLength(obj.get), buf, offset)\n offset += varint.encode.bytes\n Get.encode(obj.get, buf, offset)\n offset += Get.encode.bytes\n }\n if (defined(obj.iterator)) {\n buf[offset++] = 26\n varint.encode(Iterator.encodingLength(obj.iterator), buf, offset)\n offset += varint.encode.bytes\n Iterator.encode(obj.iterator, buf, offset)\n offset += Iterator.encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n cache: null,\n get: null,\n iterator: null\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n var len = varint.decode(buf, offset)\n offset += varint.decode.bytes\n obj.cache = Cache.decode(buf, offset, offset + len)\n offset += Cache.decode.bytes\n break\n case 2:\n var len = varint.decode(buf, offset)\n offset += varint.decode.bytes\n obj.get = Get.decode(buf, offset, offset + len)\n offset += Get.decode.bytes\n break\n case 3:\n var len = varint.decode(buf, offset)\n offset += varint.decode.bytes\n obj.iterator = Iterator.decode(buf, offset, offset + len)\n offset += Iterator.decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defined (val) {\n return val !== null && val !== undefined && (typeof val !== 'number' || !isNaN(val))\n}\n{\n \"name\": \"hyperbee\",\n \"version\": \"2.27.3\",\n \"description\": \"An append-only B-tree running on a Hypercore.\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"lib/**.js\",\n \"iterators/**.js\"\n ],\n \"dependencies\": {\n \"b4a\": \"^1.6.0\",\n \"codecs\": \"^3.0.0\",\n \"debounceify\": \"^1.0.0\",\n \"hypercore-errors\": \"^1.0.0\",\n \"mutexify\": \"^1.4.0\",\n \"protocol-buffers-encodings\": \"^1.2.0\",\n \"rache\": \"^1.0.0\",\n \"ready-resource\": \"^1.0.0\",\n \"resolve-reject-promise\": \"^1.1.0\",\n \"safety-catch\": \"^1.0.2\",\n \"streamx\": \"^2.12.4\",\n \"unslab\": \"^1.2.0\"\n },\n \"devDependencies\": {\n \"bare-process\": \"^4.2.2\",\n \"brittle\": \"^3.1.0\",\n \"hypercore\": \"^11.0.0\",\n \"lunte\": \"^1.0.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"protocol-buffers\": \"^4.2.0\",\n \"sub-encoder\": \"^1.0.6\",\n \"tree-to-string\": \"^1.1.1\"\n },\n \"imports\": {\n \"process\": {\n \"bare\": \"bare-process\",\n \"default\": \"process\"\n }\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:node\": \"brittle-node test/*.js\",\n \"test:bare\": \"brittle-bare test/*.js\",\n \"protobuf\": \"protocol-buffers schema.proto -o ./lib/messages.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/hyperbee.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hyperbee/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hyperbee\"\n}\nconst mutexify = require('mutexify')\nconst b4a = require('b4a')\n\nconst { BlockMapReadStream, BlobReadStream, BlobWriteStream } = require('./lib/streams')\nconst Monitor = require('./lib/monitor')\nconst blockMap = require('./lib/block-map')\n\nconst DEFAULT_BLOCK_SIZE = 2 ** 16\n\nclass HyperBlobsBatch {\n constructor(blobs) {\n this.blobs = blobs\n this.blocks = []\n this.bytes = 0\n }\n\n ready() {\n return this.blobs.ready()\n }\n\n async put(buffer) {\n if (!this.blobs.core.opened) await this.blobs.core.ready()\n\n const blockSize = this.blobs.blockSize\n const result = {\n blockOffset: this.blobs.core.length + this.blocks.length,\n blockLength: 0,\n byteOffset: this.blobs.core.byteLength + this.bytes,\n byteLength: 0\n }\n\n let offset = 0\n while (offset < buffer.byteLength) {\n const blk = buffer.subarray(offset, offset + blockSize)\n offset += blockSize\n\n result.blockLength++\n result.byteLength += blk.byteLength\n this.bytes += blk.byteLength\n this.blocks.push(blk)\n }\n\n return result\n }\n\n async get(id) {\n if (id.blockOffset < this.blobs.core.length) {\n return this.blobs.get(id)\n }\n\n const bufs = []\n\n for (\n let i = id.blockOffset - this.blobs.core.length;\n i < id.blockOffset + id.blockLength;\n i++\n ) {\n if (i >= this.blocks.length) return null\n bufs.push(this.blocks[i])\n }\n\n return bufs.length === 1 ? bufs[0] : b4a.concat(bufs)\n }\n\n async flush() {\n await this.blobs.core.append(this.blocks)\n this.blocks = []\n this.bytes = 0\n }\n\n close() {\n // noop, atm nothing to unlink\n }\n}\n\nclass Hyperblobs {\n constructor(core, opts = {}) {\n this.core = core\n this.blockSize = opts.blockSize || DEFAULT_BLOCK_SIZE\n\n this._lock = mutexify()\n this._monitors = new Set()\n\n this._boundUpdatePeers = this._updatePeers.bind(this)\n this._boundOnUpload = this._onUpload.bind(this)\n this._boundOnDownload = this._onDownload.bind(this)\n }\n\n get key() {\n return this.core.key\n }\n\n get discoveryKey() {\n return this.core.discoveryKey\n }\n\n get feed() {\n return this.core\n }\n\n get locked() {\n return this._lock.locked\n }\n\n replicate(isInitiator, opts) {\n return this.core.replicate(isInitiator, opts)\n }\n\n ready() {\n return this.core.ready()\n }\n\n close() {\n return this.core.close()\n }\n\n batch() {\n return new HyperBlobsBatch(this)\n }\n\n snapshot() {\n return new Hyperblobs(this.core.snapshot())\n }\n\n async put(blob, opts) {\n if (!b4a.isBuffer(blob)) blob = b4a.from(blob)\n const blockSize = (opts && opts.blockSize) || this.blockSize\n\n const stream = this.createWriteStream(opts)\n for (let i = 0; i < blob.length; i += blockSize) {\n stream.write(blob.subarray(i, i + blockSize))\n }\n stream.end()\n\n return new Promise((resolve, reject) => {\n stream.once('error', reject)\n stream.once('close', () => resolve(stream.id))\n })\n }\n\n async _getAll(id, opts) {\n if (id.blockLength === 1) return this.core.get(id.blockOffset, opts)\n\n const promises = new Array(id.blockLength)\n for (let i = 0; i < id.blockLength; i++) {\n promises[i] = this.core.get(id.blockOffset + i, opts)\n }\n\n const blocks = await Promise.all(promises)\n for (let i = 0; i < id.blockLength; i++) {\n if (blocks[i] === null) return null\n }\n return b4a.concat(blocks)\n }\n\n async get(id, opts) {\n if (isAll(id, opts)) return this._getAll(id, opts)\n\n const res = []\n try {\n for await (const block of this.createReadStream(id, opts)) {\n res.push(block)\n }\n } catch (error) {\n if (error.code === 'BLOCK_NOT_AVAILABLE') return null\n throw error\n }\n\n if (res.length === 1) return res[0]\n return b4a.concat(res)\n }\n\n getBlockMap(id) {\n return id.blockMap ? blockMap.get(this.core, id) : null\n }\n\n async getByteLength(id) {\n if (!id.blockMap || id.byteLength === 0) return id.byteLength\n const map = await this.getBlockMap(id)\n let size = 0\n for (const b of map.blocks) size += b.byteLength\n return size\n }\n\n async clear(id, opts) {\n if (id.blockMap) {\n const map = await blockMap.get(this.core, id, { wait: false })\n if (map) {\n for (const b of map.blocks) await this.core.clear(b.index, b.index + 1, opts)\n }\n }\n return this.core.clear(id.blockOffset, id.blockOffset + id.blockLength, opts)\n }\n\n createReadStream(id, opts) {\n const core = opts && opts.core ? opts.core : this.core\n return id.blockMap ? new BlockMapReadStream(core, id, opts) : new BlobReadStream(core, id, opts)\n }\n\n createWriteStream(opts) {\n const core = opts && opts.core ? opts.core : this.core\n return new BlobWriteStream(core, this._lock, opts)\n }\n\n monitor(id) {\n const monitor = new Monitor(this, id)\n if (this._monitors.size === 0) this._startListening()\n this._monitors.add(monitor)\n return monitor\n }\n\n _removeMonitor(mon) {\n this._monitors.delete(mon)\n if (this._monitors.size === 0) this._stopListening()\n }\n\n _updatePeers() {\n for (const m of this._monitors) m._updatePeers()\n }\n\n _onUpload(index, bytes, from) {\n for (const m of this._monitors) m._onUpload(index, bytes, from)\n }\n\n _onDownload(index, bytes, from) {\n for (const m of this._monitors) m._onDownload(index, bytes, from)\n }\n\n _startListening() {\n this.core.on('peer-add', this._boundUpdatePeers)\n this.core.on('peer-remove', this._boundUpdatePeers)\n this.core.on('upload', this._boundOnUpload)\n this.core.on('download', this._boundOnDownload)\n }\n\n _stopListening() {\n this.core.off('peer-add', this._boundUpdatePeers)\n this.core.off('peer-remove', this._boundUpdatePeers)\n this.core.off('upload', this._boundOnUpload)\n this.core.off('download', this._boundOnDownload)\n }\n}\n\nmodule.exports = Hyperblobs\n\nfunction isAll(id, opts) {\n if (id.blockMap) return false\n if (!opts) return true\n if (opts.start) return false\n if (opts.length !== undefined || opts.end !== undefined) return false\n if (opts.core) return false\n return true\n}\nconst c = require('compact-encoding')\nconst b4a = require('b4a')\nconst crypto = require('hypercore-crypto')\n\nconst block = {\n preencode(state, m) {\n c.uint.preencode(state, m.index)\n c.uint.preencode(state, m.byteLength)\n },\n encode(state, m) {\n c.uint.encode(state, m.index)\n c.uint.encode(state, m.byteLength)\n },\n decode(state) {\n return {\n index: c.uint.decode(state),\n byteLength: c.uint.decode(state)\n }\n }\n}\n\nconst list = c.array(block)\n\nconst map = {\n preencode(state, m) {\n c.uint.preencode(state, 0)\n list.preencode(state, m.blocks)\n },\n encode(state, m) {\n c.uint.encode(state, 0)\n list.encode(state, m.blocks)\n },\n decode(state) {\n const version = c.uint.decode(state)\n if (version > 0) throw new Error('Unsupported block map version')\n\n return {\n version,\n blocks: list.decode(state)\n }\n }\n}\n\nexports.hash = hashId\n\nfunction hashId(block) {\n return b4a.toString(crypto.hash(block), 'hex')\n}\n\nexports.get = getBlockMap\n\nasync function inferBlockMap(core, id, opts = {}) {\n const hashes = !!opts.hashes\n\n const map = {\n hashes: hashes ? new Map() : null,\n blocks: []\n }\n\n for (let i = id.blockOffset; i < id.blockOffset + id.blockLength; i++) {\n const block = await core.get(i)\n const entry = { index: i, byteLength: block.byteLength }\n map.blocks.push(entry)\n if (hashes) map.hashes.set(hashId(block), entry)\n }\n\n return map\n}\n\nasync function getBlockMap(core, id, opts = {}) {\n if (!id.blockMap) return inferBlockMap(core, id, opts)\n\n if (id.blockLength > 64) {\n throw new Error('Block map is too large')\n }\n\n const hashes = !!opts.hashes\n\n const map = {\n hashes: hashes ? new Map() : null,\n blocks: null\n }\n\n const promises = []\n\n for (let i = id.blockOffset; i < id.blockOffset + id.blockLength; i++) {\n promises.push(core.get(i))\n }\n\n const buffers = await Promise.all(promises)\n const m = decodeBlockMap(buffers)\n if (!m) return null\n\n map.blocks = m.blocks\n\n if (hashes && !core.writable) {\n const blocks = []\n for (let i = 0; i < map.blocks.length; i++) blocks.push(map.blocks[i].index)\n core.download({ blocks })\n }\n\n if (hashes) {\n for (let i = 0; i < map.blocks.length; i++) {\n const b = map.blocks[i]\n const block = await core.get(b.index)\n if (block === null) return null\n map.hashes.set(hashId(block), b)\n }\n }\n\n return map\n}\n\nexports.encode = encodeBlockMap\n\nfunction encodeBlockMap(header) {\n const result = []\n\n for (let i = 0; i < header.blocks.length; i += 8192) {\n const blocks =\n i === 0 && header.blocks.length < 8192 ? header.blocks : header.blocks.slice(i, i + 8192)\n\n const state = { start: 0, end: 0, buffer: null }\n const m = { version: 0, blocks }\n\n map.preencode(state, m)\n state.buffer = b4a.allocUnsafe(state.end)\n map.encode(state, m)\n\n result.push(state.buffer)\n }\n\n return result\n}\n\nexports.decode = decodeBlockMap\n\nfunction decodeBlockMap(buffers) {\n const result = {\n version: 0,\n blocks: null\n }\n\n for (let i = 0; i < buffers.length; i++) {\n if (!buffers[i]) return null\n\n const state = { start: 0, end: buffers[i].byteLength, buffer: buffers[i] }\n const r = map.decode(state)\n\n result.version = r.version\n\n if (result.blocks) result.blocks.push(...r.blocks)\n else result.blocks = r.blocks\n }\n\n return result\n}\nconst EventEmitter = require('events')\nconst speedometer = require('speedometer')\n\nmodule.exports = class Monitor extends EventEmitter {\n constructor(blobs, id) {\n super()\n\n if (!id) throw new Error('id is required')\n\n this.blobs = blobs\n this.id = id\n this.peers = 0\n this.uploadSpeedometer = null\n this.downloadSpeedometer = null\n\n const stats = {\n startTime: 0,\n percentage: 0,\n peers: 0,\n speed: 0,\n blocks: 0,\n totalBytes: 0, // local + bytes loaded during monitoring\n monitoringBytes: 0, // bytes loaded during monitoring\n targetBytes: 0,\n targetBlocks: 0\n }\n\n this.uploadStats = { ...stats }\n this.downloadStats = { ...stats }\n this.uploadStats.targetBytes = this.downloadStats.targetBytes = this.id.byteLength\n this.uploadStats.targetBlocks = this.downloadStats.targetBlocks = this.id.blockLength\n this.uploadStats.peers = this.downloadStats.peers = this.peers = this.blobs.core.peers.length\n\n this.uploadSpeedometer = speedometer()\n this.downloadSpeedometer = speedometer()\n\n // Handlers\n }\n\n // just an alias\n destroy() {\n return this.close()\n }\n\n close() {\n this.blobs._removeMonitor(this)\n }\n\n _onUpload(index, bytes, from) {\n this._updateStats(this.uploadSpeedometer, this.uploadStats, index, bytes, from)\n }\n\n _onDownload(index, bytes, from) {\n this._updateStats(this.downloadSpeedometer, this.downloadStats, index, bytes, from)\n }\n\n _updatePeers() {\n this.uploadStats.peers = this.downloadStats.peers = this.peers = this.blobs.core.peers.length\n this.emit('update')\n }\n\n _updateStats(speed, stats, index, bytes) {\n if (this.closing) return\n if (!isWithinRange(index, this.id)) return\n\n if (!stats.startTime) stats.startTime = Date.now()\n\n stats.speed = speed(bytes)\n stats.blocks++\n stats.totalBytes += bytes\n stats.monitoringBytes += bytes\n stats.percentage = toFixed((stats.blocks / stats.targetBlocks) * 100)\n\n this.emit('update')\n }\n\n downloadSpeed() {\n return this.downloadSpeedometer ? this.downloadSpeedometer() : 0\n }\n\n uploadSpeed() {\n return this.uploadSpeedometer ? this.uploadSpeedometer() : 0\n }\n}\n\nfunction isWithinRange(index, { blockOffset, blockLength }) {\n return index >= blockOffset && index < blockOffset + blockLength\n}\n\nfunction toFixed(n) {\n return Math.round(n * 100) / 100\n}\nconst { Readable, Writable } = require('streamx')\nconst { BLOCK_NOT_AVAILABLE } = require('hypercore-errors')\nconst blockMap = require('./block-map')\n\nclass BlobWriteStream extends Writable {\n constructor(core, lock, opts = {}) {\n super(opts)\n this.id = { blockOffset: 0, byteOffset: 0, blockLength: 0, byteLength: 0 }\n this.core = core\n\n this._dedup = !!opts.dedup\n this._blob = opts.blob || null\n this._hashes = null\n this._addBlockMap = !!opts.blockMap || this._dedup\n this._blockMap = this._addBlockMap ? { version: 0, blocks: [] } : null\n this._lock = lock\n this._release = null\n this._batch = []\n\n if (this._addBlockMap) this.id.blockMap = true\n }\n\n async _openp() {\n await this.core.ready()\n const release = await new Promise((resolve) => this._lock(resolve))\n\n this._release = release\n this.id.byteOffset = this.core.byteLength\n this.id.blockOffset = this.core.length\n\n if (!this._dedup) return\n\n if (this._blob) {\n const map = await blockMap.get(this.core, this._blob, { hashes: true })\n this._hashes = map.hashes\n } else {\n this._hashes = new Map()\n }\n }\n\n _open(cb) {\n this._openp().then(cb, cb)\n }\n\n async _finalp() {\n await this._append()\n\n if (this._blockMap) {\n const buffers = await blockMap.encode(this._blockMap)\n this.id.blockOffset = this.core.length\n this.id.byteOffset = this.core.byteLength\n await this.core.append(buffers)\n }\n\n this.id.blockLength = this.core.length - this.id.blockOffset\n this.id.byteLength = this.core.byteLength - this.id.byteOffset\n }\n\n _final(cb) {\n this._finalp().then(cb, cb)\n }\n\n _destroy(cb) {\n if (this._release) this._release()\n cb(null)\n }\n\n async _append() {\n if (!this._batch.length) return\n\n const batch = this._batch\n this._batch = []\n\n await this.core.append(batch)\n }\n\n _write(data, cb) {\n let dup = false\n\n if (this._blockMap) {\n let entry = {\n index: this.core.length + this._batch.length,\n byteLength: data.byteLength\n }\n\n if (this._hashes) {\n const id = blockMap.hash(data)\n const existing = this._hashes.get(id)\n\n if (existing) {\n entry = existing\n dup = true\n } else {\n this._hashes.set(id, entry)\n }\n }\n\n this._blockMap.blocks.push(entry)\n }\n\n if (dup) return cb()\n\n this._batch.push(data)\n\n if (this._batch.length >= 16) {\n this._append().then(cb, cb)\n return\n }\n\n return cb()\n }\n}\n\nclass BlockMapReadStream extends Readable {\n constructor(core, id, opts = {}) {\n super(opts)\n this.id = id\n this.core = core.session({ wait: opts.wait, timeout: opts.timeout })\n\n const noPrefetch = opts.wait === false || opts.prefetch === false || !core.core\n const start = opts.start || 0\n const end =\n opts.end === undefined ? (opts.length === undefined ? -1 : start + opts.length) : opts.end + 1\n\n this._blockMap = null\n\n this._rangeStart = start\n this._rangeEnd = end\n\n this._startIndex = 0\n this._startOffset = 0\n this._endIndex = -1\n this._endOffset = -1\n\n this._range = null\n this._noPrefetch = noPrefetch\n }\n\n async _openp() {\n this._blockMap = await blockMap.get(this.core, this.id)\n\n const [startIndex, startOffset, endIndex, endLength] = seekBlockMap(\n this._blockMap,\n this._rangeStart,\n this._rangeEnd\n )\n\n this._startIndex = startIndex\n this._startOffset = startOffset\n this._endIndex = endIndex\n this._endOffset = endLength\n\n if (this._endIndex === -1) {\n this._endIndex = this._blockMap.blocks.length\n this._endOffset = 0\n }\n }\n\n _open(cb) {\n this._openp().then(cb, cb)\n }\n\n _predestroy() {\n if (this._range) this._range.destroy()\n this.core.close().then(noop, noop)\n }\n\n _destroy(cb) {\n if (this._range) this._range.destroy()\n this.core.close().then(cb, cb)\n }\n\n _prefetch(index) {\n const blocks = []\n for (; index < this._endIndex; index++) blocks.push(this._blockMap.blocks[index].index)\n this._range = this.core.download({ blocks })\n }\n\n async _readp() {\n if (this._startIndex >= this._endIndex) {\n this.push(null)\n return\n }\n\n let block = null\n\n const index = this._startIndex++\n const b = this._blockMap.blocks[index]\n\n if (!this._range && !this._noPrefetch) {\n block = await this.core.get(b.index, { wait: false })\n if (!block && !this._range) this._prefetch(index)\n }\n\n if (!block) {\n block = await this.core.get(b.index)\n }\n\n if (!block) throw BLOCK_NOT_AVAILABLE()\n\n if (this._startOffset) {\n block = block.subarray(this._startOffset)\n this._startOffset = 0\n }\n\n if (this._startIndex === this._endIndex && this._endOffset) {\n block = block.subarray(0, block.byteLength - this._endOffset)\n }\n\n this.push(block)\n }\n\n _read(cb) {\n this._readp().then(cb, cb)\n }\n}\n\nclass BlobReadStream extends Readable {\n constructor(core, id, opts = {}) {\n super(opts)\n this.id = id\n this.core = core.session({ wait: opts.wait, timeout: opts.timeout })\n\n const start = id.blockOffset\n const end = id.blockOffset + id.blockLength\n const noPrefetch = opts.wait === false || opts.prefetch === false || !core.core\n\n this._prefetch = !noPrefetch\n this._range = null\n this._pos = opts.start !== undefined ? id.byteOffset + opts.start : id.byteOffset\n\n if (opts.length !== undefined) this._end = this._pos + opts.length\n else if (opts.end !== undefined) this._end = id.byteOffset + opts.end + 1\n else this._end = id.byteOffset + id.byteLength\n\n this._index = 0\n this._relativeOffset = 0\n this._bytesRead = 0\n }\n\n async _setStart() {\n if (this._pos === this.id.byteOffset) {\n this._index = this.id.blockOffset\n this._relativeOffset = 0\n return this._index\n }\n\n const result = await this.core.seek(this._pos)\n if (!result) throw BLOCK_NOT_AVAILABLE()\n\n this._index = result[0]\n this._relativeOffset = result[1]\n\n return this._index\n }\n\n async _setEnd() {\n if (this._end === this.id.byteOffset + this.id.byteLength) {\n return this.id.blockOffset + this.id.blockLength\n }\n\n const result = await this.core.seek(this._end)\n if (!result) return this.id.blockOffset + this.id.blockLength\n return result[0]\n }\n\n async _openp() {\n const [start, end] = await Promise.all([this._setStart(), this._setEnd()])\n if (this._prefetch) this._range = this.core.download({ start, end, linear: true })\n }\n\n _open(cb) {\n this._openp().then(cb, cb)\n }\n\n _predestroy() {\n if (this._range) this._range.destroy()\n this.core.close().then(noop, noop)\n }\n\n _destroy(cb) {\n if (this._range) this._range.destroy()\n this.core.close().then(cb, cb)\n }\n\n async _readp() {\n if (this._pos >= this._end) {\n this.push(null)\n return\n }\n\n let block = await this.core.get(this._index)\n if (!block) throw BLOCK_NOT_AVAILABLE()\n\n const remainder = this._end - this._pos\n if (this._relativeOffset || remainder < block.length) {\n block = block.subarray(this._relativeOffset, this._relativeOffset + remainder)\n }\n\n this._index++\n this._relativeOffset = 0\n this._pos += block.length\n this._bytesRead += block.length\n\n this.push(block)\n }\n\n _read(cb) {\n this._readp().then(cb, cb)\n }\n}\n\nmodule.exports = {\n BlockMapReadStream,\n BlobReadStream,\n BlobWriteStream\n}\n\nfunction noop() {}\n\nfunction seekBlockMap(map, start, end) {\n let s = -1\n let so = -1\n let e = -1\n let eo = -1\n\n for (let i = 0; i < map.blocks.length; i++) {\n const b = map.blocks[i]\n\n if (s === -1) {\n if (start < b.byteLength) {\n s = i\n so = start\n } else {\n start -= b.byteLength\n }\n }\n\n if (e === -1 && end > -1) {\n if (end <= b.byteLength) {\n e = i + 1\n eo = b.byteLength - end\n } else {\n end -= b.byteLength\n }\n }\n }\n\n return [s, so, e, eo]\n}\n{\n \"name\": \"hyperblobs\",\n \"version\": \"2.12.1\",\n \"description\": \"A blob store for Hypercore\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:node\": \"brittle-node test/*.js\",\n \"test:bare\": \"brittle-bare test/*.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/hyperblobs.git\"\n },\n \"keywords\": [\n \"hypercore\",\n \"blob\",\n \"store\"\n ],\n \"author\": \"Andrew Osheroff \",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hyperblobs/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hyperblobs#readme\",\n \"files\": [\n \"index.js\",\n \"lib/**.js\"\n ],\n \"imports\": {\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n }\n },\n \"dependencies\": {\n \"b4a\": \"^1.6.1\",\n \"bare-events\": \"^2.5.0\",\n \"compact-encoding\": \"^3.0.0\",\n \"hypercore-crypto\": \"^3.6.1\",\n \"hypercore-errors\": \"^1.1.1\",\n \"mutexify\": \"^1.4.0\",\n \"speedometer\": \"^1.1.0\",\n \"streamx\": \"^2.13.2\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.1.0\",\n \"hypercore\": \"^11.0.0\",\n \"lunte\": \"^1.0.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nconst sodium = require('sodium-universal')\nconst c = require('compact-encoding')\nconst b4a = require('b4a')\n\n// https://en.wikipedia.org/wiki/Merkle_tree#Second_preimage_attack\nconst LEAF_TYPE = b4a.from([0])\nconst PARENT_TYPE = b4a.from([1])\nconst ROOT_TYPE = b4a.from([2])\n\nconst HYPERCORE = b4a.from('hypercore')\n\nexports.keyPair = function (seed) {\n // key pairs might stay around for a while, so better not to use a default slab to avoid retaining it completely\n const slab = b4a.allocUnsafeSlow(\n sodium.crypto_sign_PUBLICKEYBYTES + sodium.crypto_sign_SECRETKEYBYTES\n )\n const publicKey = slab.subarray(0, sodium.crypto_sign_PUBLICKEYBYTES)\n const secretKey = slab.subarray(sodium.crypto_sign_PUBLICKEYBYTES)\n\n if (seed) sodium.crypto_sign_seed_keypair(publicKey, secretKey, seed)\n else sodium.crypto_sign_keypair(publicKey, secretKey)\n\n return {\n publicKey,\n secretKey\n }\n}\n\nexports.validateKeyPair = function (keyPair) {\n const pk = b4a.allocUnsafe(sodium.crypto_sign_PUBLICKEYBYTES)\n sodium.crypto_sign_ed25519_sk_to_pk(pk, keyPair.secretKey)\n return b4a.equals(pk, keyPair.publicKey)\n}\n\nexports.sign = function (message, secretKey) {\n // Dedicated slab for the signature, to avoid retaining unneeded mem and for security\n const signature = b4a.allocUnsafeSlow(sodium.crypto_sign_BYTES)\n sodium.crypto_sign_detached(signature, message, secretKey)\n return signature\n}\n\nexports.verify = function (message, signature, publicKey) {\n if (signature.byteLength !== sodium.crypto_sign_BYTES) return false\n if (publicKey.byteLength !== sodium.crypto_sign_PUBLICKEYBYTES) return false\n return sodium.crypto_sign_verify_detached(signature, message, publicKey)\n}\n\nexports.encrypt = function (message, publicKey) {\n const ciphertext = b4a.alloc(message.byteLength + sodium.crypto_box_SEALBYTES)\n sodium.crypto_box_seal(ciphertext, message, publicKey)\n return ciphertext\n}\n\nexports.decrypt = function (ciphertext, keyPair) {\n if (ciphertext.byteLength < sodium.crypto_box_SEALBYTES) return null\n\n const plaintext = b4a.alloc(ciphertext.byteLength - sodium.crypto_box_SEALBYTES)\n\n if (!sodium.crypto_box_seal_open(plaintext, ciphertext, keyPair.publicKey, keyPair.secretKey)) {\n return null\n }\n\n return plaintext\n}\n\nexports.encryptionKeyPair = function (seed) {\n const publicKey = b4a.alloc(sodium.crypto_box_PUBLICKEYBYTES)\n const secretKey = b4a.alloc(sodium.crypto_box_SECRETKEYBYTES)\n\n if (seed) {\n sodium.crypto_box_seed_keypair(publicKey, secretKey, seed)\n } else {\n sodium.crypto_box_keypair(publicKey, secretKey)\n }\n\n return {\n publicKey,\n secretKey\n }\n}\n\nexports.data = function (data) {\n const out = b4a.allocUnsafe(32)\n\n sodium.crypto_generichash_batch(out, [LEAF_TYPE, c.encode(c.uint64, data.byteLength), data])\n\n return out\n}\n\nexports.parent = function (a, b) {\n if (a.index > b.index) {\n const tmp = a\n a = b\n b = tmp\n }\n\n const out = b4a.allocUnsafe(32)\n\n sodium.crypto_generichash_batch(out, [\n PARENT_TYPE,\n c.encode(c.uint64, a.size + b.size),\n a.hash,\n b.hash\n ])\n\n return out\n}\n\nexports.tree = function (roots, out) {\n const buffers = new Array(3 * roots.length + 1)\n let j = 0\n\n buffers[j++] = ROOT_TYPE\n\n for (let i = 0; i < roots.length; i++) {\n const r = roots[i]\n buffers[j++] = r.hash\n buffers[j++] = c.encode(c.uint64, r.index)\n buffers[j++] = c.encode(c.uint64, r.size)\n }\n\n if (!out) out = b4a.allocUnsafe(32)\n sodium.crypto_generichash_batch(out, buffers)\n return out\n}\n\nexports.hash = function (data, out) {\n if (!out) out = b4a.allocUnsafe(32)\n if (!Array.isArray(data)) data = [data]\n\n sodium.crypto_generichash_batch(out, data)\n\n return out\n}\n\nexports.randomBytes = function (n) {\n const buf = b4a.allocUnsafe(n)\n sodium.randombytes_buf(buf)\n return buf\n}\n\nexports.discoveryKey = function (key) {\n if (!key || key.byteLength !== 32) throw new Error('Must pass a 32 byte buffer')\n // Discovery keys might stay around for a while, so better not to use slab memory (for better gc)\n const digest = b4a.allocUnsafeSlow(32)\n sodium.crypto_generichash(digest, HYPERCORE, key)\n return digest\n}\n\nif (sodium.sodium_free) {\n exports.free = function (secureBuf) {\n if (secureBuf.secure) sodium.sodium_free(secureBuf)\n }\n} else {\n exports.free = function () {}\n}\n\nexports.namespace = function (name, count) {\n const ids = typeof count === 'number' ? range(count) : count\n\n // Namespaces are long-lived, so better to use a dedicated slab\n const buf = b4a.allocUnsafeSlow(32 * ids.length)\n\n const list = new Array(ids.length)\n\n // ns is ephemeral, so default slab\n const ns = b4a.allocUnsafe(33)\n sodium.crypto_generichash(ns.subarray(0, 32), typeof name === 'string' ? b4a.from(name) : name)\n\n for (let i = 0; i < list.length; i++) {\n list[i] = buf.subarray(32 * i, 32 * i + 32)\n ns[32] = ids[i]\n sodium.crypto_generichash(list[i], ns)\n }\n\n return list\n}\n\nfunction range(count) {\n const arr = new Array(count)\n for (let i = 0; i < count; i++) arr[i] = i\n return arr\n}\n{\n \"name\": \"hypercore-crypto\",\n \"version\": \"3.7.0\",\n \"description\": \"The crypto primitives used in hypercore, extracted into a separate module\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"dependencies\": {\n \"b4a\": \"^1.6.6\",\n \"compact-encoding\": \"^3.0.0\",\n \"sodium-universal\": \"^5.0.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.5.0\",\n \"lunte\": \"^1.0.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:node\": \"brittle-node test.js\",\n \"test:bare\": \"brittle-bare test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/hypercore-crypto.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/hypercore-crypto/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/hypercore-crypto\"\n}\nconst IdEnc = require('hypercore-id-encoding')\n\nmodule.exports = class HypercoreError extends Error {\n constructor (msg, code, fn = HypercoreError, discoveryKey = null) {\n if (discoveryKey) msg = `${msg} (discovery key: ${IdEnc.normalize(discoveryKey)})`\n super(`${code}: ${msg}`)\n\n this.code = code\n this.discoveryKey = discoveryKey\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name () {\n return 'HypercoreError'\n }\n\n static ASSERTION (msg, discoveryKey = null) { // ERR_ASSERTION is picked up by safety-catch also\n return new HypercoreError(msg, 'ERR_ASSERTION', HypercoreError.ASSERT, discoveryKey)\n }\n\n static BAD_ARGUMENT (msg, discoveryKey = null) {\n return new HypercoreError(msg, 'BAD_ARGUMENT', HypercoreError.BAD_ARGUMENT, discoveryKey)\n }\n\n static STORAGE_EMPTY (msg, discoveryKey = null) {\n return new HypercoreError(msg, 'STORAGE_EMPTY', HypercoreError.STORAGE_EMPTY, discoveryKey)\n }\n\n static STORAGE_CONFLICT (msg, discoveryKey = null) {\n return new HypercoreError(msg, 'STORAGE_CONFLICT', HypercoreError.STORAGE_CONFLICT, discoveryKey)\n }\n\n static INVALID_SIGNATURE (msg, discoveryKey = null) {\n return new HypercoreError(msg, 'INVALID_SIGNATURE', HypercoreError.INVALID_SIGNATURE, discoveryKey)\n }\n\n static INVALID_CAPABILITY (msg, discoveryKey = null) {\n return new HypercoreError(msg, 'INVALID_CAPABILITY', HypercoreError.INVALID_CAPABILITY, discoveryKey)\n }\n\n static INVALID_CHECKSUM (msg = 'Invalid checksum', discoveryKey = null) {\n return new HypercoreError(msg, 'INVALID_CHECKSUM', HypercoreError.INVALID_CHECKSUM, discoveryKey)\n }\n\n static INVALID_OPERATION (msg, discoveryKey = null) {\n return new HypercoreError(msg, 'INVALID_OPERATION', HypercoreError.INVALID_OPERATION, discoveryKey)\n }\n\n static INVALID_PROOF (msg = 'Proof not verifiable', discoveryKey = null) {\n return new HypercoreError(msg, 'INVALID_PROOF', HypercoreError.INVALID_PROOF, discoveryKey)\n }\n\n static BLOCK_NOT_AVAILABLE (msg = 'Block is not available', discoveryKey = null) {\n return new HypercoreError(msg, 'BLOCK_NOT_AVAILABLE', HypercoreError.BLOCK_NOT_AVAILABLE, discoveryKey)\n }\n\n static SNAPSHOT_NOT_AVAILABLE (msg = 'Snapshot is not available', discoveryKey = null) {\n return new HypercoreError(msg, 'SNAPSHOT_NOT_AVAILABLE', HypercoreError.SNAPSHOT_NOT_AVAILABLE, discoveryKey)\n }\n\n static REQUEST_CANCELLED (msg = 'Request was cancelled', discoveryKey = null) {\n return new HypercoreError(msg, 'REQUEST_CANCELLED', HypercoreError.REQUEST_CANCELLED, discoveryKey)\n }\n\n static REQUEST_TIMEOUT (msg = 'Request timed out', discoveryKey = null) {\n return new HypercoreError(msg, 'REQUEST_TIMEOUT', HypercoreError.REQUEST_TIMEOUT, discoveryKey)\n }\n\n static SESSION_NOT_WRITABLE (msg = 'Session is not writable', discoveryKey = null) {\n return new HypercoreError(msg, 'SESSION_NOT_WRITABLE', HypercoreError.SESSION_NOT_WRITABLE, discoveryKey)\n }\n\n static SESSION_CLOSED (msg = 'Session is closed', discoveryKey = null) {\n return new HypercoreError(msg, 'SESSION_CLOSED', HypercoreError.SESSION_CLOSED, discoveryKey)\n }\n\n static BATCH_UNFLUSHED (msg = 'Batch not yet flushed', discoveryKey = null) {\n return new HypercoreError(msg, 'BATCH_UNFLUSHED', HypercoreError.BATCH_UNFLUSHED, discoveryKey)\n }\n\n static BATCH_ALREADY_EXISTS (msg = 'Batch already exists', discoveryKey = null) {\n return new HypercoreError(msg, 'BATCH_ALREADY_EXISTS', HypercoreError.BATCH_ALREADY_EXISTS, discoveryKey)\n }\n\n static BATCH_ALREADY_FLUSHED (msg = 'Batch has already been flushed', discoveryKey = null) {\n return new HypercoreError(msg, 'BATCH_ALREADY_FLUSHED', HypercoreError.BATCH_ALREADY_FLUSHED, discoveryKey)\n }\n\n static OPLOG_CORRUPT (msg = 'Oplog file appears corrupt or out of date', discoveryKey = null) {\n return new HypercoreError(msg, 'OPLOG_CORRUPT', HypercoreError.OPLOG_CORRUPT, discoveryKey)\n }\n\n static OPLOG_HEADER_OVERFLOW (msg = 'Oplog header exceeds page size', discoveryKey = null) {\n return new HypercoreError(msg, 'OPLOG_HEADER_OVERFLOW', HypercoreError.OPLOG_HEADER_OVERFLOW, discoveryKey)\n }\n\n static INVALID_OPLOG_VERSION (msg = 'Invalid header version', discoveryKey = null) {\n return new HypercoreError(msg, 'INVALID_OPLOG_VERSION', HypercoreError.INVALID_OPLOG_VERSION, discoveryKey)\n }\n\n static WRITE_FAILED (msg = 'Write to storage failed', discoveryKey = null) {\n return new HypercoreError(msg, 'WRITE_FAILED', HypercoreError.WRITE_FAILED, discoveryKey)\n }\n\n static DECODING_ERROR (msg = 'Decoding error', discoveryKey = null) {\n return new HypercoreError(msg, 'DECODING_ERROR', HypercoreError.DECODING_ERROR, discoveryKey)\n }\n\n static SESSION_MOVED (msg = 'Session moved', discoveryKey = null) {\n return new HypercoreError(msg, 'SESSION_MOVED', HypercoreError.SESSION_MOVED, discoveryKey)\n }\n}\n{\n \"name\": \"hypercore-errors\",\n \"version\": \"1.5.0\",\n \"description\": \"Hypercore errors\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/hypercore-errors.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hypercore-errors/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hypercore-errors#readme\",\n \"devDependencies\": {\n \"b4a\": \"^1.6.7\",\n \"brittle\": \"^3.1.3\",\n \"standard\": \"^17.0.0\"\n },\n \"dependencies\": {\n \"hypercore-id-encoding\": \"^1.3.0\"\n }\n}\nconst z32 = require('z32')\nconst b4a = require('b4a')\n\nmodule.exports = {\n encode,\n decode,\n normalize,\n isValid\n}\n\nfunction encode (key) {\n if (!b4a.isBuffer(key)) throw new Error('Key must be a Buffer')\n if (key.byteLength !== 32) throw new Error('Key must be 32-bytes long')\n return z32.encode(key)\n}\n\nfunction decode (id) {\n if (b4a.isBuffer(id)) {\n if (id.byteLength !== 32) throw new Error('ID must be 32-bytes long')\n return id\n }\n if (typeof id === 'string') {\n if (id.startsWith('pear://')) id = id.slice(7).split('/')[0]\n if (id.length === 52) return z32.decode(id)\n if (id.length === 64) {\n const buf = b4a.from(id, 'hex')\n if (buf.byteLength === 32) return buf\n }\n }\n throw new Error('Invalid Hypercore key')\n}\n\nfunction normalize (any) {\n return encode(decode(any))\n}\n\nfunction isValid (any) {\n try {\n decode(any)\n return true\n } catch {\n return false\n }\n}\n{\n \"name\": \"hypercore-id-encoding\",\n \"version\": \"1.3.0\",\n \"description\": \"Convert Hypercore keys to/from z-base32 or hex\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"files\": [\n \"index.js\"\n ],\n \"dependencies\": {\n \"b4a\": \"^1.5.3\",\n \"z32\": \"^1.0.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.1.1\",\n \"hypercore\": \"^10.0.0\",\n \"random-access-memory\": \"^6.0.0\",\n \"standard\": \"^17.1.0\"\n },\n \"license\": \"Apache-2.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/hypercore-id-encoding.git\"\n },\n \"keywords\": [],\n \"author\": \"\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hypercore-id-encoding/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hypercore-id-encoding#readme\"\n}\nfunction headLegacyMap(m) {\n return {\n version: 2, // version bumped from 1\n cores: m.allocated.cores,\n datas: m.allocated.datas,\n groups: 0,\n seed: m.seed,\n defaultDiscoveryKey: m.defaultDiscoveryKey\n }\n}\n\nmodule.exports = {\n headLegacyMap\n}\n// This file is autogenerated by the hyperschema compiler\n// Schema Version: 2\n/* eslint-disable camelcase */\n/* eslint-disable quotes */\n/* eslint-disable space-before-function-paren */\n\nconst { c } = require('hyperschema/runtime')\nconst external0 = require('../../external.js')\n\nconst VERSION = 2\n\n// eslint-disable-next-line no-unused-vars\nlet version = VERSION\n\n// @corestore/allocated\nconst encoding0 = {\n preencode(state, m) {\n c.uint.preencode(state, m.cores)\n c.uint.preencode(state, m.datas)\n },\n encode(state, m) {\n c.uint.encode(state, m.cores)\n c.uint.encode(state, m.datas)\n },\n decode(state) {\n const r0 = c.uint.decode(state)\n const r1 = c.uint.decode(state)\n\n return {\n cores: r0,\n datas: r1\n }\n }\n}\n\n// @corestore/head-v1\nconst encoding1 = {\n preencode(state, m) {\n state.end++ // max flag is 4 so always one byte\n\n if (m.allocated) encoding0.preencode(state, m.allocated)\n if (m.seed) c.fixed32.preencode(state, m.seed)\n if (m.defaultDiscoveryKey) c.fixed32.preencode(state, m.defaultDiscoveryKey)\n },\n encode(state, m) {\n const flags = (m.allocated ? 1 : 0) | (m.seed ? 2 : 0) | (m.defaultDiscoveryKey ? 4 : 0)\n\n c.uint.encode(state, flags)\n\n if (m.allocated) encoding0.encode(state, m.allocated)\n if (m.seed) c.fixed32.encode(state, m.seed)\n if (m.defaultDiscoveryKey) c.fixed32.encode(state, m.defaultDiscoveryKey)\n },\n decode(state) {\n const v = c.uint.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n version: v,\n allocated: (flags & 1) !== 0 ? encoding0.decode(state) : null,\n seed: (flags & 2) !== 0 ? c.fixed32.decode(state) : null,\n defaultDiscoveryKey: (flags & 4) !== 0 ? c.fixed32.decode(state) : null\n }\n }\n}\n\n// @corestore/head-v2\nconst encoding2 = {\n preencode(state, m) {\n c.uint.preencode(state, m.cores)\n c.uint.preencode(state, m.datas)\n c.uint.preencode(state, m.groups)\n state.end++ // max flag is 2 so always one byte\n\n if (m.seed) c.fixed32.preencode(state, m.seed)\n if (m.defaultDiscoveryKey) c.fixed32.preencode(state, m.defaultDiscoveryKey)\n },\n encode(state, m) {\n const flags = (m.seed ? 1 : 0) | (m.defaultDiscoveryKey ? 2 : 0)\n\n c.uint.encode(state, m.cores)\n c.uint.encode(state, m.datas)\n c.uint.encode(state, m.groups)\n c.uint.encode(state, flags)\n\n if (m.seed) c.fixed32.encode(state, m.seed)\n if (m.defaultDiscoveryKey) c.fixed32.encode(state, m.defaultDiscoveryKey)\n },\n decode(state) {\n const v = c.uint.decode(state)\n const r0 = c.uint.decode(state)\n const r1 = c.uint.decode(state)\n const r2 = c.uint.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n version: v,\n cores: r0,\n datas: r1,\n groups: r2,\n seed: (flags & 1) !== 0 ? c.fixed32.decode(state) : null,\n defaultDiscoveryKey: (flags & 2) !== 0 ? c.fixed32.decode(state) : null\n }\n }\n}\n\n// @corestore/head\nconst encoding3 = {\n preencode(state, m) {\n c.uint.preencode(state, m.version)\n switch (m.version) {\n case 0:\n case 1:\n encoding1.preencode(state, m)\n break\n case 2:\n encoding2.preencode(state, m)\n break\n default:\n throw new Error('Unsupported version')\n }\n },\n encode(state, m) {\n c.uint.encode(state, m.version)\n switch (m.version) {\n case 0:\n case 1:\n encoding1.encode(state, m)\n break\n case 2:\n encoding2.encode(state, m)\n break\n default:\n throw new Error('Unsupported version')\n }\n },\n decode(state) {\n const start = state.start\n const v = c.uint.decode(state)\n state.start = start\n switch (v) {\n case 0:\n case 1: {\n const decoded = encoding1.decode(state)\n const map = external0.headLegacyMap\n return map(decoded)\n }\n case 2: {\n const decoded = encoding2.decode(state)\n return decoded\n }\n default:\n throw new Error('Unsupported version')\n }\n }\n}\n\n// @corestore/alias\nconst encoding4 = {\n preencode(state, m) {\n c.string.preencode(state, m.name)\n c.fixed32.preencode(state, m.namespace)\n },\n encode(state, m) {\n c.string.encode(state, m.name)\n c.fixed32.encode(state, m.namespace)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.fixed32.decode(state)\n\n return {\n name: r0,\n namespace: r1\n }\n }\n}\n\n// @corestore/core\nconst encoding5 = {\n preencode(state, m) {\n c.uint.preencode(state, m.version)\n c.uint.preencode(state, m.corePointer)\n c.uint.preencode(state, m.dataPointer)\n state.end++ // max flag is 1 so always one byte\n\n if (m.alias) encoding4.preencode(state, m.alias)\n },\n encode(state, m) {\n const flags = m.alias ? 1 : 0\n\n c.uint.encode(state, m.version)\n c.uint.encode(state, m.corePointer)\n c.uint.encode(state, m.dataPointer)\n c.uint.encode(state, flags)\n\n if (m.alias) encoding4.encode(state, m.alias)\n },\n decode(state) {\n const r0 = c.uint.decode(state)\n const r1 = c.uint.decode(state)\n const r2 = c.uint.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n version: r0,\n corePointer: r1,\n dataPointer: r2,\n alias: (flags & 1) !== 0 ? encoding4.decode(state) : null\n }\n }\n}\n\nconst encoding6_enum = {\n blake2b: 'blake2b'\n}\n\n// @core/hashes enum\nconst encoding6 = {\n preencode(state, m) {\n state.end++ // max enum is 0 so always one byte\n },\n encode(state, m) {\n switch (m) {\n case 'blake2b':\n c.uint.encode(state, 0)\n break\n default:\n throw new Error('Unknown enum')\n }\n },\n decode(state) {\n switch (c.uint.decode(state)) {\n case 0:\n return 'blake2b'\n default:\n return null\n }\n }\n}\n\nconst encoding7_enum = {\n ed25519: 'ed25519'\n}\n\n// @core/signatures enum\nconst encoding7 = {\n preencode(state, m) {\n state.end++ // max enum is 0 so always one byte\n },\n encode(state, m) {\n switch (m) {\n case 'ed25519':\n c.uint.encode(state, 0)\n break\n default:\n throw new Error('Unknown enum')\n }\n },\n decode(state) {\n switch (c.uint.decode(state)) {\n case 0:\n return 'ed25519'\n default:\n return null\n }\n }\n}\n\n// @core/tree-node\nconst encoding8 = {\n preencode(state, m) {\n c.uint.preencode(state, m.index)\n c.uint.preencode(state, m.size)\n c.fixed32.preencode(state, m.hash)\n },\n encode(state, m) {\n c.uint.encode(state, m.index)\n c.uint.encode(state, m.size)\n c.fixed32.encode(state, m.hash)\n },\n decode(state) {\n const r0 = c.uint.decode(state)\n const r1 = c.uint.decode(state)\n const r2 = c.fixed32.decode(state)\n\n return {\n index: r0,\n size: r1,\n hash: r2\n }\n }\n}\n\n// @core/signer\nconst encoding9 = {\n preencode(state, m) {\n encoding7.preencode(state, m.signature)\n c.fixed32.preencode(state, m.namespace)\n c.fixed32.preencode(state, m.publicKey)\n },\n encode(state, m) {\n encoding7.encode(state, m.signature)\n c.fixed32.encode(state, m.namespace)\n c.fixed32.encode(state, m.publicKey)\n },\n decode(state) {\n const r0 = encoding7.decode(state)\n const r1 = c.fixed32.decode(state)\n const r2 = c.fixed32.decode(state)\n\n return {\n signature: r0,\n namespace: r1,\n publicKey: r2\n }\n }\n}\n\n// @core/prologue\nconst encoding10 = {\n preencode(state, m) {\n c.fixed32.preencode(state, m.hash)\n c.uint.preencode(state, m.length)\n },\n encode(state, m) {\n c.fixed32.encode(state, m.hash)\n c.uint.encode(state, m.length)\n },\n decode(state) {\n const r0 = c.fixed32.decode(state)\n const r1 = c.uint.decode(state)\n\n return {\n hash: r0,\n length: r1\n }\n }\n}\n\n// @core/manifest.signers\nconst encoding11_4 = c.array(encoding9)\n// @core/manifest.linked\nconst encoding11_6 = c.array(c.fixed32)\n\n// @core/manifest\nconst encoding11 = {\n preencode(state, m) {\n c.uint.preencode(state, m.version)\n state.end++ // max flag is 8 so always one byte\n encoding6.preencode(state, m.hash)\n c.uint.preencode(state, m.quorum)\n encoding11_4.preencode(state, m.signers)\n\n if (m.prologue) encoding10.preencode(state, m.prologue)\n if (m.linked) encoding11_6.preencode(state, m.linked)\n if (m.userData) c.buffer.preencode(state, m.userData)\n },\n encode(state, m) {\n const flags =\n (m.allowPatch ? 1 : 0) | (m.prologue ? 2 : 0) | (m.linked ? 4 : 0) | (m.userData ? 8 : 0)\n\n c.uint.encode(state, m.version)\n c.uint.encode(state, flags)\n encoding6.encode(state, m.hash)\n c.uint.encode(state, m.quorum)\n encoding11_4.encode(state, m.signers)\n\n if (m.prologue) encoding10.encode(state, m.prologue)\n if (m.linked) encoding11_6.encode(state, m.linked)\n if (m.userData) c.buffer.encode(state, m.userData)\n },\n decode(state) {\n const r0 = c.uint.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n version: r0,\n hash: encoding6.decode(state),\n quorum: c.uint.decode(state),\n allowPatch: (flags & 1) !== 0,\n signers: encoding11_4.decode(state),\n prologue: (flags & 2) !== 0 ? encoding10.decode(state) : null,\n linked: (flags & 4) !== 0 ? encoding11_6.decode(state) : null,\n userData: (flags & 8) !== 0 ? c.buffer.decode(state) : null\n }\n }\n}\n\n// @core/keyPair\nconst encoding12 = {\n preencode(state, m) {\n c.buffer.preencode(state, m.publicKey)\n c.optionalBuffer.preencode(state, m.secretKey)\n },\n encode(state, m) {\n c.buffer.encode(state, m.publicKey)\n c.optionalBuffer.encode(state, m.secretKey)\n },\n decode(state) {\n const r0 = c.buffer.decode(state)\n const r1 = c.optionalBuffer.decode(state)\n\n return {\n publicKey: r0,\n secretKey: r1\n }\n }\n}\n\n// @core/group\nconst encoding13 = {\n preencode(state, m) {\n state.end++ // max flag is 2 so always one byte\n\n if (m.key) c.fixed32.preencode(state, m.key)\n if (m.pointer) c.uint.preencode(state, m.pointer)\n },\n encode(state, m) {\n const flags = (m.key ? 1 : 0) | (m.pointer ? 2 : 0)\n\n c.uint.encode(state, flags)\n\n if (m.key) c.fixed32.encode(state, m.key)\n if (m.pointer) c.uint.encode(state, m.pointer)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n\n return {\n key: (flags & 1) !== 0 ? c.fixed32.decode(state) : null,\n pointer: (flags & 2) !== 0 ? c.uint.decode(state) : 0\n }\n }\n}\n\n// @core/auth.manifest\nconst encoding14_2 = c.frame(encoding11)\n\n// @core/auth\nconst encoding14 = {\n preencode(state, m) {\n c.fixed32.preencode(state, m.key)\n c.fixed32.preencode(state, m.discoveryKey)\n state.end++ // max flag is 4 so always one byte\n\n if (m.manifest) encoding14_2.preencode(state, m.manifest)\n if (m.keyPair) encoding12.preencode(state, m.keyPair)\n if (m.encryptionKey) c.buffer.preencode(state, m.encryptionKey)\n },\n encode(state, m) {\n const flags = (m.manifest ? 1 : 0) | (m.keyPair ? 2 : 0) | (m.encryptionKey ? 4 : 0)\n\n c.fixed32.encode(state, m.key)\n c.fixed32.encode(state, m.discoveryKey)\n c.uint.encode(state, flags)\n\n if (m.manifest) encoding14_2.encode(state, m.manifest)\n if (m.keyPair) encoding12.encode(state, m.keyPair)\n if (m.encryptionKey) c.buffer.encode(state, m.encryptionKey)\n },\n decode(state) {\n const r0 = c.fixed32.decode(state)\n const r1 = c.fixed32.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n key: r0,\n discoveryKey: r1,\n manifest: (flags & 1) !== 0 ? encoding14_2.decode(state) : null,\n keyPair: (flags & 2) !== 0 ? encoding12.decode(state) : null,\n encryptionKey: (flags & 4) !== 0 ? c.buffer.decode(state) : null\n }\n }\n}\n\n// @core/head\nconst encoding15 = {\n preencode(state, m) {\n c.uint.preencode(state, m.fork)\n c.uint.preencode(state, m.length)\n c.fixed32.preencode(state, m.rootHash)\n c.optionalBuffer.preencode(state, m.signature)\n state.end++ // max flag is 1 so always one byte\n\n if (version >= 2 && m.timestamp) c.uint64.preencode(state, m.timestamp)\n },\n encode(state, m) {\n const flags = version >= 2 && m.timestamp ? 1 : 0\n\n c.uint.encode(state, m.fork)\n c.uint.encode(state, m.length)\n c.fixed32.encode(state, m.rootHash)\n c.optionalBuffer.encode(state, m.signature)\n c.uint.encode(state, flags)\n\n if (version >= 2 && m.timestamp) c.uint64.encode(state, m.timestamp)\n },\n decode(state) {\n const r0 = c.uint.decode(state)\n const r1 = c.uint.decode(state)\n const r2 = c.fixed32.decode(state)\n const r3 = c.optionalBuffer.decode(state)\n const flags = state.start < state.end ? c.uint.decode(state) : 0\n\n return {\n fork: r0,\n length: r1,\n rootHash: r2,\n signature: r3,\n timestamp: version >= 2 && (flags & 1) !== 0 ? c.uint64.decode(state) : 0\n }\n }\n}\n\n// @core/hints\nconst encoding16 = {\n preencode(state, m) {\n state.end++ // max flag is 4 so always one byte\n\n if (m.contiguousLength) c.uint.preencode(state, m.contiguousLength)\n if (m.remoteContiguousLength) c.uint.preencode(state, m.remoteContiguousLength)\n if (m.recovering) c.uint.preencode(state, m.recovering)\n },\n encode(state, m) {\n const flags =\n (m.contiguousLength ? 1 : 0) | (m.remoteContiguousLength ? 2 : 0) | (m.recovering ? 4 : 0)\n\n c.uint.encode(state, flags)\n\n if (m.contiguousLength) c.uint.encode(state, m.contiguousLength)\n if (m.remoteContiguousLength) c.uint.encode(state, m.remoteContiguousLength)\n if (m.recovering) c.uint.encode(state, m.recovering)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n\n return {\n contiguousLength: (flags & 1) !== 0 ? c.uint.decode(state) : 0,\n remoteContiguousLength: (flags & 2) !== 0 ? c.uint.decode(state) : 0,\n recovering: (flags & 4) !== 0 ? c.uint.decode(state) : 0\n }\n }\n}\n\n// @core/session\nconst encoding17 = {\n preencode(state, m) {\n c.string.preencode(state, m.name)\n c.uint.preencode(state, m.dataPointer)\n },\n encode(state, m) {\n c.string.encode(state, m.name)\n c.uint.encode(state, m.dataPointer)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.uint.decode(state)\n\n return {\n name: r0,\n dataPointer: r1\n }\n }\n}\n\n// @core/sessions\nconst encoding18 = c.array(encoding17)\n\n// @core/dependency\nconst encoding19 = {\n preencode(state, m) {\n c.uint.preencode(state, m.dataPointer)\n c.uint.preencode(state, m.length)\n },\n encode(state, m) {\n c.uint.encode(state, m.dataPointer)\n c.uint.encode(state, m.length)\n },\n decode(state) {\n const r0 = c.uint.decode(state)\n const r1 = c.uint.decode(state)\n\n return {\n dataPointer: r0,\n length: r1\n }\n }\n}\n\nfunction setVersion(v) {\n version = v\n}\n\nfunction encode(name, value, v = VERSION) {\n version = v\n return c.encode(getEncoding(name), value)\n}\n\nfunction decode(name, buffer, v = VERSION) {\n version = v\n return c.decode(getEncoding(name), buffer)\n}\n\nfunction getEnum(name) {\n switch (name) {\n case '@core/hashes':\n return encoding6_enum\n case '@core/signatures':\n return encoding7_enum\n default:\n throw new Error('Enum not found ' + name)\n }\n}\n\nfunction getEncoding(name) {\n switch (name) {\n case '@corestore/allocated':\n return encoding0\n case '@corestore/head-v1':\n return encoding1\n case '@corestore/head-v2':\n return encoding2\n case '@corestore/head':\n return encoding3\n case '@corestore/alias':\n return encoding4\n case '@corestore/core':\n return encoding5\n case '@core/hashes':\n return encoding6\n case '@core/signatures':\n return encoding7\n case '@core/tree-node':\n return encoding8\n case '@core/signer':\n return encoding9\n case '@core/prologue':\n return encoding10\n case '@core/manifest':\n return encoding11\n case '@core/keyPair':\n return encoding12\n case '@core/group':\n return encoding13\n case '@core/auth':\n return encoding14\n case '@core/head':\n return encoding15\n case '@core/hints':\n return encoding16\n case '@core/session':\n return encoding17\n case '@core/sessions':\n return encoding18\n case '@core/dependency':\n return encoding19\n default:\n throw new Error('Encoder not found ' + name)\n }\n}\n\nfunction getStruct(name, v = VERSION) {\n const enc = getEncoding(name)\n return {\n preencode(state, m) {\n version = v\n enc.preencode(state, m)\n },\n encode(state, m) {\n version = v\n enc.encode(state, m)\n },\n decode(state) {\n version = v\n return enc.decode(state)\n }\n }\n}\n\nconst resolveStruct = getStruct // compat\n\nmodule.exports = {\n resolveStruct,\n getStruct,\n getEnum,\n getEncoding,\n encode,\n decode,\n setVersion,\n version\n}\nconst RocksDB = require('rocksdb-native')\nconst rrp = require('resolve-reject-promise')\nconst ScopeLock = require('scope-lock')\nconst DeviceFile = require('device-file')\nconst path = require('path')\nconst fs = require('fs')\nconst Xache = require('xache')\n\nconst View = require('./lib/view.js')\n\nconst VERSION = 2\nconst COLUMN_FAMILY = 'corestore'\n\nconst { store, core } = require('./lib/keys.js')\n\nconst { CorestoreRX, CorestoreTX, CoreTX, CoreRX } = require('./lib/tx.js')\n\nconst {\n createCoreStream,\n createAliasStream,\n createDiscoveryKeyStream,\n createBlockStream,\n createBitfieldStream,\n createUserDataStream,\n createTreeNodeStream,\n createMarkStream,\n createLocalStream,\n createGroupUpdateStream\n} = require('./lib/streams.js')\n\nconst EMPTY = new View()\n\nclass Atom {\n constructor(db) {\n this.db = db\n this.view = new View()\n this.flushedPromise = null\n this.flushing = false\n this.preflushes = []\n this.flushes = []\n }\n\n preflush(fn) {\n this.preflushes.push(fn)\n }\n\n onflush(fn) {\n this.flushes.push(fn)\n }\n\n flushed() {\n if (!this.flushing) return Promise.resolve()\n if (this.flushedPromise !== null) return this.flushedPromise.promise\n this.flushedPromise = rrp()\n return this.flushedPromise.promise\n }\n\n _resolve() {\n const f = this.flushedPromise\n this.flushedPromise = null\n f.resolve()\n }\n\n async flush() {\n if (this.flushing) throw new Error('Atom already flushing')\n this.flushing = true\n\n try {\n const plen = this.preflushes.length\n for (let i = 0; i < plen; i++) this.preflushes[i]()\n\n await View.flush(this.view.changes, this.db)\n\n const promises = []\n const len = this.flushes.length // in case of reentry\n for (let i = 0; i < len; i++) promises.push(this.flushes[i]())\n\n await Promise.all(promises)\n } finally {\n this.view.reset()\n this.flushing = false\n if (this.flushedPromise !== null) this._resolve()\n }\n }\n}\n\nclass HypercoreStorage {\n constructor(store, db, treeCache, core, view, atom) {\n this.store = store\n this.db = db\n this.core = core\n this.view = view\n this.atom = atom\n\n this.view.readStart()\n this.treeCache = treeCache\n }\n\n get readOnly() {\n return this.store.readOnly\n }\n\n get dependencies() {\n return this.core.dependencies\n }\n\n getDependencyLength() {\n return this.core.dependencies.length\n ? this.core.dependencies[this.core.dependencies.length - 1].length\n : -1\n }\n\n getDependency(length) {\n for (let i = this.core.dependencies.length - 1; i >= 0; i--) {\n const dep = this.core.dependencies[i]\n if (dep.length < length) return dep\n }\n\n return null\n }\n\n setDependencyHead(dep) {\n if (dep === null) {\n this.core.dependencies = []\n return\n }\n\n const deps = this.core.dependencies\n\n for (let i = deps.length - 1; i >= 0; i--) {\n const d = deps[i]\n\n if (d.dataPointer !== dep.dataPointer) continue\n\n // check if nothing changed\n if (d.length === dep.length && i === deps.length - 1) return\n\n this.core = {\n corePointer: this.core.corePointer,\n dataPointer: this.core.dataPointer,\n dependencies: deps.slice(0, i + 1)\n }\n\n this.core.dependencies[i] = {\n dataPointer: dep.dataPointer,\n length: dep.length\n }\n return // updated head so done\n }\n\n this.core.dependencies = [\n {\n dataPointer: dep.dataPointer,\n length: dep.length\n }\n ]\n }\n\n // TODO: this might have to be async if the dependents have changed, but prop ok for now\n updateDependencyLength(length, truncated) {\n const deps = this.core.dependencies\n\n const i = this.findDependencyIndex(length, truncated)\n if (i === -1) throw new Error('Dependency not found')\n\n this.core = {\n corePointer: this.core.corePointer,\n dataPointer: this.core.dataPointer,\n dependencies: deps.slice(0, i + 1)\n }\n\n if (this.core.dependencies[i].length !== length) {\n this.core.dependencies[i] = {\n dataPointer: deps[i].dataPointer,\n length\n }\n }\n }\n\n findDependencyIndex(length, truncated) {\n const deps = this.core.dependencies\n\n if (truncated) {\n for (let i = 0; i < deps.length; i++) {\n if (deps[i].length >= length) return i\n }\n\n return -1\n }\n\n for (let i = deps.length - 1; i >= 0; i--) {\n if (deps[i].length <= length) return i\n }\n\n return -1\n }\n\n get snapshotted() {\n return this.db._snapshot !== null\n }\n\n snapshot() {\n return new HypercoreStorage(\n this.store,\n this.db.snapshot(),\n this.treeCache,\n this.core,\n this.view.snapshot(),\n this.atom\n )\n }\n\n compact() {\n return Promise.all([\n this.db.compactRange(core.core(this.core.corePointer), core.core(this.core.corePointer)),\n this.db.compactRange(core.data(this.core.dataPointer), core.data(this.core.dataPointer))\n ])\n }\n\n atomize(atom) {\n if (this.atom && this.atom !== atom) {\n throw new Error('Cannot atomize and atomized session with a new atom')\n }\n\n return new HypercoreStorage(\n this.store,\n this.db.session(),\n this.treeCache,\n this.core,\n atom.view,\n atom\n )\n }\n\n createAtom() {\n return this.store.createAtom()\n }\n\n createBlockStream(opts) {\n return createBlockStream(this.core, this.db, this.view, opts)\n }\n\n createTreeNodeStream(opts) {\n return createTreeNodeStream(this.core, this.db, this.view, opts)\n }\n\n createBitfieldStream(opts) {\n return createBitfieldStream(this.core, this.db, this.view, opts)\n }\n\n createUserDataStream(opts) {\n return createUserDataStream(this.core, this.db, this.view, opts)\n }\n\n createMarkStream(opts) {\n return createMarkStream(this.core, this.db, this.view, opts)\n }\n\n createLocalStream(opts) {\n return createLocalStream(this.core, this.db, this.view, opts)\n }\n\n async resumeSession(name) {\n const rx = this.read()\n const existingSessionsPromise = rx.getSessions()\n\n rx.tryFlush()\n const existingSessions = await existingSessionsPromise\n\n const sessions = existingSessions || []\n const session = getSession(sessions, name, false)\n\n if (session === null) return null\n\n const core = {\n corePointer: this.core.corePointer,\n dataPointer: session.dataPointer,\n dependencies: []\n }\n\n const coreRx = new CoreRX(core, this.db, this.view, this.treeCache, this.store.stats, -1)\n\n const dependencyPromise = coreRx.getDependency()\n coreRx.tryFlush()\n\n const dependency = await dependencyPromise\n if (dependency) core.dependencies = this._addDependency(dependency)\n\n return new HypercoreStorage(\n this.store,\n this.db.session(),\n this.treeCache,\n core,\n this.atom ? this.view : new View(),\n this.atom\n )\n }\n\n async createSession(name, head) {\n const rx = this.read()\n\n const existingSessionsPromise = rx.getSessions()\n const existingHeadPromise = rx.getHead()\n\n rx.tryFlush()\n\n const [existingSessions, existingHead] = await Promise.all([\n existingSessionsPromise,\n existingHeadPromise\n ])\n if (head === null) head = existingHead\n\n if (existingHead !== null && head.length > existingHead.length) {\n throw new Error('Invalid head passed, ahead of core')\n }\n\n const sessions = existingSessions || []\n const session = getSession(sessions, name, true)\n const fresh = session.dataPointer === -1\n\n if (fresh) {\n session.dataPointer = await this.store._allocData()\n }\n\n const tx = this.write()\n\n tx.setSessions(sessions)\n\n const length = head === null ? 0 : head.length\n const core = {\n corePointer: this.core.corePointer,\n dataPointer: session.dataPointer,\n dependencies: this._addDependency({\n dataPointer: this.core.dataPointer,\n length\n })\n }\n\n const coreTx = new CoreTX(core, this.db, tx.view, tx.changes)\n\n if (length > 0) coreTx.setHead(head)\n coreTx.setDependency(core.dependencies[core.dependencies.length - 1])\n\n if (!fresh) {\n // nuke all existing state...\n coreTx.deleteBlockRange(0, -1)\n coreTx.deleteTreeNodeRange(0, -1)\n coreTx.deleteBitfieldPageRange(0, -1)\n }\n\n await tx.flush()\n\n return new HypercoreStorage(\n this.store,\n this.db.session(),\n this.treeCache,\n core,\n this.atom ? this.view : new View(),\n this.atom\n )\n }\n\n async createAtomicSession(atom, head) {\n const length = head === null ? 0 : head.length\n const core = {\n corePointer: this.core.corePointer,\n dataPointer: this.core.dataPointer,\n dependencies: this._addDependency(null)\n }\n\n const coreTx = new CoreTX(core, this.db, atom.view, [])\n\n if (length > 0) coreTx.setHead(head)\n\n await coreTx.flush()\n\n return this.atomize(atom)\n }\n\n _addDependency(dep) {\n const deps = []\n\n for (let i = 0; i < this.core.dependencies.length; i++) {\n const d = this.core.dependencies[i]\n\n if (dep !== null && d.length > dep.length) {\n if (d.dataPointer !== dep.dataPointer) {\n deps.push({ dataPointer: d.dataPointer, length: dep.length })\n }\n return deps\n }\n\n deps.push(d)\n }\n\n if (\n dep !== null &&\n (deps.length === 0 || deps[deps.length - 1].dataPointer !== dep.dataPointer)\n ) {\n deps.push(dep)\n }\n return deps\n }\n\n async deleteSessions() {\n const rx = this.read()\n const existingSessionsPromise = rx.getSessions()\n rx.tryFlush()\n\n const existingSessions = await existingSessionsPromise\n\n // Remove batches\n const coreTx = this.write()\n coreTx.setSessions([]) // Clear sessions record\n await coreTx.flush()\n\n const tx = this.db.write({ autoDestroy: true })\n\n for (const { dataPointer } of existingSessions) {\n const start = core.data(dataPointer)\n const end = core.data(dataPointer + 1)\n tx.tryDeleteRange(start, end)\n }\n\n await tx.flush()\n }\n\n read(fork = -1) {\n let treeCache = null\n if (!this.atom) treeCache = this.treeCache\n\n return new CoreRX(this.core, this.db, this.view, treeCache, this.store.stats, fork)\n }\n\n write() {\n return new CoreTX(this.core, this.db, this.atom ? this.view : null, [])\n }\n\n close() {\n if (this.view !== null) {\n this.view.readStop()\n this.view = null\n }\n\n return this.db.close()\n }\n\n static async export(ptr, db, { batches = false } = {}) {\n const rx = new CoreRX(ptr, db, EMPTY, null, null, -1)\n\n const core = {\n head: null,\n auth: null,\n sessions: [],\n data: null\n }\n\n const sessionsPromise = rx.getSessions()\n const headPromise = rx.getHead()\n const authPromise = rx.getAuth()\n\n rx.tryFlush()\n\n const [sessions, head, auth] = await Promise.all([sessionsPromise, headPromise, authPromise])\n\n core.head = head\n core.auth = { ...auth, keyPair: null }\n if (sessions) core.sessions = sessions.map((s) => s.name)\n\n const data = []\n\n data.push(exportData(ptr, db))\n\n if (batches) {\n for (const { dataPointer } of sessions) {\n data.push(exportData({ dataPointer, dependencies: [] }, db))\n }\n }\n\n core.data = await Promise.all(data)\n\n return core\n }\n\n static isParentStorage(storage, parent) {\n const last = getLastDependency(storage)\n return !!last && last.dataPointer === parent.core.dataPointer\n }\n}\n\nclass CorestoreStorage {\n constructor(db, opts = {}) {\n const storage = typeof db === 'string' ? db : null\n\n this.bootstrap = storage !== null\n this.path = storage !== null ? storage : path.join(db.path, '..')\n this.alwaysRecover = !!opts.alwaysRecover\n this.readOnly = !!opts.readOnly\n this.allowBackup = !!opts.allowBackup\n this.deviceFile = null\n this.wait = !!opts.wait\n\n // tmp sync fix for simplicty since not super deployed yet\n if (this.bootstrap && !this.readOnly) tmpFixStorage(this.path)\n\n this.id = opts.id || null\n this.view = null\n this.enters = 0\n this.lock = new ScopeLock()\n this.flushing = null\n this.version = 0\n this.migrating = null\n\n if ((this.bootstrap && !this.readOnly && !this.allowBackup) || this.wait) {\n const corestoreFile = path.join(this.path, 'CORESTORE')\n\n this.deviceFile = new DeviceFile(corestoreFile, {\n lock: true,\n wait: this.wait,\n data: { id: this.id }\n })\n }\n\n const dbPath = path.join(this.path, 'db')\n\n this.stats = {\n treeCache: {\n hits: 0,\n misses: 0,\n parallel: 0,\n skips: 0\n }\n }\n this.rocks = storage === null ? db : new RocksDB(dbPath, { ...opts, lock: this.deviceFile })\n this.db = createColumnFamily(this.rocks, opts)\n\n const { treeCache = { maxSize: 8192 } } = opts\n this.treeCache = new Xache(treeCache)\n }\n\n get opened() {\n return this.db.opened\n }\n\n get closed() {\n return this.db.closed\n }\n\n async ready() {\n if (this.version === 0) await this._migrateStore()\n return this.db.ready()\n }\n\n compact(opts) {\n return this.db.compactRange(opts)\n }\n\n async audit() {\n for await (const { core } of this.createCoreStream()) {\n const coreRx = new CoreRX(core, this.db, EMPTY, this.treeCache, this.stats, -1)\n const authPromise = coreRx.getAuth()\n\n coreRx.tryFlush()\n\n const auth = await authPromise\n\n if (!auth.manifest || auth.manifest.version > 0) continue\n if (auth.manifest.linked === null) continue\n\n auth.manifest.linked = null\n const coreTx = new CoreTX(core, this.db, null, [])\n coreTx.setAuth(auth)\n await coreTx.flush()\n }\n }\n\n async deleteCore(ptr) {\n const rx = new CoreRX(ptr, this.db, EMPTY, this.treeCache, this.stats, -1)\n\n const authPromise = rx.getAuth()\n const sessionsPromise = rx.getSessions()\n\n rx.tryFlush()\n\n const auth = await authPromise\n const sessions = await sessionsPromise\n\n // no core stored here\n if (!auth) return\n\n const tx = this.db.write({ autoDestroy: true })\n\n tx.tryDelete(store.core(auth.discoveryKey))\n\n // clear core\n const start = core.core(ptr.corePointer)\n const end = core.core(ptr.corePointer + 1)\n tx.tryDeleteRange(start, end)\n\n if (sessions) {\n for (const { dataPointer } of sessions) {\n const start = core.data(dataPointer)\n const end = core.data(dataPointer + 1)\n tx.tryDeleteRange(start, end)\n }\n }\n\n return tx.flush()\n }\n\n static isCoreStorage(db) {\n return isCorestoreStorage(db)\n }\n\n static from(db) {\n if (isCorestoreStorage(db)) return db\n return new this(db)\n }\n\n async _flush() {\n while (this.enters > 0) {\n await this.lock.lock()\n await this.lock.unlock()\n }\n }\n\n async _maybeRecover(view) {\n const r = path.join(this.db.path, 'RECOVERING')\n if (!(await fileExists(r))) return\n await this.setRecovering(view)\n await fs.promises.unlink(r)\n }\n\n _maybeRecoverLater(err) {\n if (!shouldRecover(err) && !this.alwaysRecover) return\n fs.writeFileSync(path.join(this.db.path, 'RECOVERING'), '')\n for (const file of fs.readdirSync(this.db.path)) {\n if (file.endsWith('.log')) fs.unlinkSync(path.join(this.db.path, file))\n }\n }\n\n // runs pre any other mutation and read\n async _migrateStore() {\n const view = await this._enter()\n\n try {\n if (this.version === VERSION) return\n\n await this._preopen\n\n try {\n await this.db.ready()\n } catch (err) {\n this._maybeRecoverLater(err)\n throw err\n }\n\n await this._maybeRecover(view)\n\n const rx = new CorestoreRX(this.db, view)\n const headPromise = rx.getHead()\n\n rx.tryFlush()\n const head = await headPromise\n\n const version = head === null ? 0 : head.version\n if (version === VERSION) {\n this.version = VERSION\n return\n }\n\n const target = { version: VERSION, dryRun: false }\n\n switch (version) {\n case 0: {\n await require('./migrations/0').store(this, target)\n break\n }\n case 1: {\n // implicit migration on write\n break\n }\n default: {\n throw new Error(\n 'Unsupported version: ' + version + ' - you should probably upgrade your dependencies'\n )\n }\n }\n\n this.version = VERSION\n } finally {\n await this._exit()\n }\n }\n\n // runs pre the core is returned to the user\n async _migrateCore(core, discoveryKey, version, locked) {\n const view = locked ? this.view : await this._enter()\n try {\n if (version === VERSION) return\n\n const target = { version: VERSION, dryRun: false }\n\n switch (version) {\n case 0: {\n await require('./migrations/0').core(core, target)\n break\n }\n case 1: {\n await require('./migrations/1').core(core, target)\n break\n }\n default: {\n throw new Error(\n 'Unsupported version: ' + version + ' - you should probably upgrade your dependencies'\n )\n }\n }\n\n if (locked === false) return\n\n // if its locked, then move the core state into the memview\n // in case the core is reopened from the memview, pre flush\n\n const rx = new CorestoreRX(this.db, EMPTY)\n const tx = new CorestoreTX(view)\n\n const corePromise = rx.getCore(discoveryKey)\n rx.tryFlush()\n\n tx.putCore(discoveryKey, await corePromise)\n tx.apply()\n } finally {\n if (!locked) await this._exit()\n }\n }\n\n async _enter() {\n this.enters++\n await this.lock.lock()\n if (this.view === null) this.view = new View()\n return this.view\n }\n\n async _exit() {\n this.enters--\n\n if (this.flushing === null) this.flushing = rrp()\n const flushed = this.flushing.promise\n\n if (this.enters === 0 || this.view.size() > 128) {\n try {\n await View.flush(this.view.changes, this.db)\n this.flushing.resolve()\n } catch (err) {\n this.flushing.reject(err)\n } finally {\n this.flushing = null\n this.view = null\n }\n }\n\n this.lock.unlock()\n return flushed\n }\n\n // when used with core catches this isnt transactional for simplicity, HOWEVER, its just a number\n // so worth the tradeoff\n async _allocData() {\n let dataPointer = 0\n\n const view = await this._enter()\n const tx = new CorestoreTX(view)\n\n try {\n const head = await this._getHead(view)\n\n dataPointer = head.datas++\n\n tx.setHead(head)\n tx.apply()\n } finally {\n await this._exit()\n }\n\n return dataPointer\n }\n\n // exposes here so migrations can easily access the head in an init state\n async _getHead(view) {\n const rx = new CorestoreRX(this.db, view)\n const headPromise = rx.getHead()\n rx.tryFlush()\n\n const head = await headPromise\n return head === null ? initStoreHead() : head\n }\n\n createAtom() {\n return new Atom(this.db)\n }\n\n async flush() {\n await this.rocks.flush()\n }\n\n async close() {\n if (this.db.closed) return\n await this._flush()\n await this.db.close()\n await this.rocks.close()\n this.treeCache.destroy()\n if (this.deviceFile) await this.deviceFile.close()\n }\n\n async clear() {\n if (this.version === 0) await this._migrateStore()\n\n const view = await this._enter()\n const tx = new CorestoreTX(view)\n\n tx.clear()\n tx.apply()\n\n await this._exit()\n }\n\n createCoreStream() {\n // TODO: be nice to run the mgiration here also, but too much plumbing atm\n return createCoreStream(this.db, EMPTY)\n }\n\n createAliasStream(namespace) {\n // TODO: be nice to run the mgiration here also, but too much plumbing atm\n return createAliasStream(this.db, EMPTY, namespace)\n }\n\n createDiscoveryKeyStream(namespace) {\n return createDiscoveryKeyStream(this.db, EMPTY, namespace)\n }\n\n createGroupUpdateStream(group, { since, reverse } = {}) {\n return createGroupUpdateStream(this.db, EMPTY, group, { gte: since, reverse })\n }\n\n async getAlias(alias) {\n if (this.version === 0) await this._migrateStore()\n\n const rx = new CorestoreRX(this.db, EMPTY)\n const discoveryKeyPromise = rx.getCoreByAlias(alias)\n rx.tryFlush()\n return discoveryKeyPromise\n }\n\n async getSeed() {\n if (this.version === 0) await this._migrateStore()\n\n const rx = new CorestoreRX(this.db, EMPTY)\n const headPromise = rx.getHead()\n\n rx.tryFlush()\n\n const head = await headPromise\n return head === null ? null : head.seed\n }\n\n async getGroup(topic) {\n if (this.version === 0) await this._migrateStore()\n\n const rx = new CorestoreRX(this.db, EMPTY)\n const groupPromise = rx.getGroup(topic)\n rx.tryFlush()\n return groupPromise\n }\n\n async setSeed(seed, { overwrite = true } = {}) {\n if (this.version === 0) await this._migrateStore()\n\n const view = await this._enter()\n const tx = new CorestoreTX(view)\n\n try {\n const rx = new CorestoreRX(this.db, view)\n const headPromise = rx.getHead()\n\n rx.tryFlush()\n\n const head = (await headPromise) || initStoreHead()\n\n if (head.seed === null || overwrite) head.seed = seed\n tx.setHead(head)\n tx.apply()\n\n return head.seed\n } finally {\n await this._exit()\n }\n }\n\n async setRecovering(view = null) {\n const recovering = Date.now()\n let keys = []\n\n for await (const data of this.createDiscoveryKeyStream()) {\n keys.push(data)\n if (keys.length > 16 * 1024) {\n await this._flushRecovering(recovering, view, keys)\n keys = []\n }\n }\n\n if (keys.length) await this._flushRecovering(recovering, view, keys)\n }\n\n async _flushRecovering(recovering, view, keys) {\n const own = !view\n if (own) view = await this._enter()\n const tx = new CorestoreTX(view)\n\n try {\n const infos = await this._getInfos(keys, { auth: false, head: false, hints: true })\n for (const inf of infos) {\n tx.setCoreHints(inf.core, { ...inf.hints, recovering })\n }\n tx.apply()\n } finally {\n if (own) await this._exit()\n }\n }\n\n async getDefaultDiscoveryKey() {\n if (this.version === 0) await this._migrateStore()\n\n const rx = new CorestoreRX(this.db, EMPTY)\n const headPromise = rx.getHead()\n\n rx.tryFlush()\n\n const head = await headPromise\n return head === null ? null : head.defaultDiscoveryKey\n }\n\n async setDefaultDiscoveryKey(discoveryKey, { overwrite = true } = {}) {\n if (this.version === 0) await this._migrateStore()\n\n const view = await this._enter()\n const tx = new CorestoreTX(view)\n\n try {\n const rx = new CorestoreRX(this.db, view)\n const headPromise = rx.getHead()\n\n rx.tryFlush()\n\n const head = (await headPromise) || initStoreHead()\n\n if (head.defaultDiscoveryKey === null || overwrite) head.defaultDiscoveryKey = discoveryKey\n tx.setHead(head)\n tx.apply()\n\n return head.defaultDiscoveryKey\n } finally {\n await this._exit()\n }\n }\n\n async hasCore(discoveryKey, { ifMigrated = false } = {}) {\n if (this.version === 0) await this._migrateStore()\n\n const rx = new CorestoreRX(this.db, EMPTY)\n const promise = rx.getCore(discoveryKey)\n\n rx.tryFlush()\n\n const core = await promise\n\n if (core === null) return false\n if (core.version === 0 && ifMigrated) return false\n\n return true\n }\n\n async getAuth(discoveryKey) {\n if (this.version === 0) await this._migrateStore()\n\n const rx = new CorestoreRX(this.db, EMPTY)\n const corePromise = rx.getCore(discoveryKey)\n\n rx.tryFlush()\n\n const core = await corePromise\n if (core === null) return null\n\n const read = this.db.read({ autoDestroy: true })\n const authPromise = CoreRX.getAuth(read, core)\n\n read.tryFlush()\n\n return authPromise\n }\n\n async getInfo(discoveryKey, opts) {\n return (await this.getInfos([discoveryKey], opts))[0]\n }\n\n async getInfos(discoveryKeys, opts) {\n if (this.version === 0) await this._migrateStore()\n return this._getInfos(discoveryKeys, opts)\n }\n\n async _getInfos(discoveryKeys, { auth = true, head = true, hints = true } = {}) {\n const rx = new CorestoreRX(this.db, EMPTY)\n const corePromises = new Array(discoveryKeys.length)\n\n for (let i = 0; i < discoveryKeys.length; i++) {\n corePromises[i] = rx.getCore(discoveryKeys[i])\n }\n\n rx.tryFlush()\n\n const cores = await Promise.all(corePromises)\n const read = this.db.read({ autoDestroy: true })\n\n const resultPromises = new Array(cores.length)\n\n for (let i = 0; i < cores.length; i++) {\n resultPromises[i] = cores[i]\n ? getInfoFromBatch(read, cores[i], discoveryKeys[i], auth, head, hints)\n : null\n }\n\n read.tryFlush()\n\n return Promise.all(resultPromises)\n }\n\n async suspend({ log = noop } = {}) {\n await log('Suspending hypercore storage...')\n await this.db.suspend()\n await log('db suspended')\n if (this.deviceFile) {\n await log('suspend deviceFile')\n await this.deviceFile.suspend()\n await log('deviceFile suspended')\n }\n }\n\n async resume() {\n if (this.deviceFile) await this.deviceFile.resume()\n await this.db.resume()\n }\n\n async resumeCore(discoveryKey) {\n if (this.version === 0) await this._migrateStore()\n\n if (!discoveryKey) {\n discoveryKey = await this.getDefaultDiscoveryKey()\n if (!discoveryKey) return null\n }\n\n const rx = new CorestoreRX(this.db, EMPTY)\n const corePromise = rx.getCore(discoveryKey)\n\n rx.tryFlush()\n const core = await corePromise\n\n if (core === null) return null\n return this._resumeFromPointers(EMPTY, discoveryKey, false, core)\n }\n\n async export(discoveryKey, opts) {\n const rx = new CorestoreRX(this.db, EMPTY)\n const corePromise = rx.getCore(discoveryKey)\n\n rx.tryFlush()\n const core = await corePromise\n if (core === null) return null\n\n let { dataPointer, corePointer } = core\n\n const ptr = { corePointer, dataPointer, dependencies: [] }\n\n while (true) {\n const rx = new CoreRX(\n { dataPointer, corePointer: 0, dependencies: [] },\n this.db,\n EMPTY,\n this.treeCache,\n this.stats,\n -1\n )\n const dependencyPromise = rx.getDependency()\n rx.tryFlush()\n const dependency = await dependencyPromise\n if (!dependency) break\n ptr.dependencies.push(dependency)\n dataPointer = dependency.dataPointer\n }\n\n const session = this.db.session()\n try {\n return await HypercoreStorage.export(ptr, session, opts)\n } finally {\n await session.close()\n }\n }\n\n async _resumeFromPointers(view, discoveryKey, create, { version, corePointer, dataPointer }) {\n const core = { corePointer, dataPointer, dependencies: [] }\n\n while (true) {\n const rx = new CoreRX(\n { dataPointer, corePointer: 0, dependencies: [] },\n this.db,\n view,\n this.treeCache,\n this.stats,\n -1\n )\n const dependencyPromise = rx.getDependency()\n rx.tryFlush()\n const dependency = await dependencyPromise\n if (!dependency) break\n core.dependencies.push(dependency)\n dataPointer = dependency.dataPointer\n }\n\n const result = new HypercoreStorage(this, this.db.session(), this.treeCache, core, EMPTY, null)\n\n if (version < VERSION) await this._migrateCore(result, discoveryKey, version, create)\n return result\n }\n\n // not allowed to throw validation errors as its a shared tx!\n async _create(\n view,\n { key, manifest, keyPair, encryptionKey, discoveryKey, alias, userData, core: ptrs }\n ) {\n const rx = new CorestoreRX(this.db, view)\n const tx = new CorestoreTX(view)\n\n const corePromise = rx.getCore(discoveryKey)\n const headPromise = rx.getHead()\n\n rx.tryFlush()\n\n let [core, head] = await Promise.all([corePromise, headPromise])\n if (core) return this._resumeFromPointers(view, discoveryKey, true, core)\n\n if (head === null) head = initStoreHead()\n if (head.defaultDiscoveryKey === null) head.defaultDiscoveryKey = discoveryKey\n\n const corePointer = ptrs ? ptrs.corePointer : head.cores++\n const dataPointer = ptrs ? ptrs.dataPointer : head.datas++\n\n core = { version: VERSION, corePointer, dataPointer, alias }\n\n tx.setHead(head)\n tx.putCore(discoveryKey, core)\n if (alias) tx.putCoreByAlias(alias, discoveryKey)\n\n const ptr = { corePointer, dataPointer, dependencies: [] }\n const ctx = new CoreTX(ptr, this.db, view, tx.changes)\n\n ctx.setAuth({\n key,\n discoveryKey,\n manifest,\n keyPair,\n encryptionKey\n })\n\n if (userData) {\n for (const { key, value } of userData) {\n ctx.putUserData(key, value)\n }\n }\n\n tx.apply()\n\n return new HypercoreStorage(this, this.db.session(), this.treeCache, ptr, EMPTY, null)\n }\n\n async createCore(data) {\n if (this.version === 0) await this._migrateStore()\n\n const view = await this._enter()\n\n try {\n return await this._create(view, data)\n } finally {\n await this._exit()\n }\n }\n\n // not allowed to throw validation errors as its a shared tx!\n async _createGroup(view, topic) {\n const rx = new CorestoreRX(this.db, view)\n const tx = new CorestoreTX(view)\n\n const groupPromise = rx.getGroup(topic)\n const headPromise = rx.getHead()\n\n rx.tryFlush()\n\n let group = await groupPromise\n if (group !== null) {\n return {\n key: topic,\n pointer: group\n }\n }\n\n let head = await headPromise\n if (head === null) head = initStoreHead()\n\n group = head.groups++\n\n tx.putGroup(topic, group)\n tx.setHead(head)\n tx.apply()\n\n return {\n key: topic,\n pointer: group\n }\n }\n\n async createGroup(topic) {\n if (this.version === 0) await this._migrateStore()\n\n const view = await this._enter()\n\n try {\n return await this._createGroup(view, topic)\n } finally {\n await this._exit()\n }\n }\n\n static isParentStorage(storage, parent) {\n return HypercoreStorage.isParentStorage(storage, parent)\n }\n}\n\nmodule.exports = CorestoreStorage\n\nfunction initStoreHead() {\n return {\n version: 0, // cause we wanna run the migration\n datas: 0,\n cores: 0,\n groups: 0,\n seed: null,\n defaultDiscoveryKey: null\n }\n}\n\nfunction getSession(sessions, name, alloc) {\n for (let i = 0; i < sessions.length; i++) {\n if (sessions[i].name === name) return sessions[i]\n }\n\n if (!alloc) return null\n\n const result = { name, dataPointer: -1 }\n sessions.push(result)\n return result\n}\n\nfunction isCorestoreStorage(s) {\n return typeof s === 'object' && !!s && typeof s.setDefaultDiscoveryKey === 'function'\n}\n\nfunction createColumnFamily(db, opts = {}) {\n const {\n tableCacheIndexAndFilterBlocks = true,\n blockCache = true,\n optimizeFiltersForMemory = false,\n blobFileSize = 256 * 1024 * 1024,\n blobGarbageCollectionAgeCutOff = 0.25,\n blobGarbageCollectionForceThreshold = 1.0\n } = opts\n\n const col = new RocksDB.ColumnFamily(COLUMN_FAMILY, {\n enableBlobFiles: true,\n minBlobSize: 4096,\n blobFileSize,\n enableBlobGarbageCollection: true,\n tableBlockSize: 8192,\n tableCacheIndexAndFilterBlocks,\n tableFormatVersion: 6,\n optimizeFiltersForMemory,\n blockCache,\n blobGarbageCollectionAgeCutOff,\n blobGarbageCollectionForceThreshold\n })\n\n return db.columnFamily(col)\n}\n\nfunction getLastDependency(storage) {\n return storage.dependencies.length ? storage.dependencies[storage.dependencies.length - 1] : null\n}\n\n// TODO: remove in like 3-6 mo\nfunction tmpFixStorage(p) {\n // if CORESTORE file is written, new format\n if (fs.existsSync(path.join(p, 'CORESTORE'))) return\n\n let files = []\n\n try {\n files = fs.readdirSync(p)\n } catch {}\n\n const notRocks = new Set([\n 'CORESTORE',\n 'primary-key',\n 'cores',\n 'app-preferences',\n 'cache',\n 'preferences.json',\n 'db',\n 'clone',\n 'core',\n 'notifications'\n ])\n\n for (const f of files) {\n if (notRocks.has(f)) continue\n\n try {\n fs.mkdirSync(path.join(p, 'db'))\n } catch {}\n\n fs.renameSync(path.join(p, f), path.join(p, 'db', f))\n }\n}\n\nasync function exportData(ptr, db, opts) {\n // just need dataPointer\n const reads = [\n toArray(createBlockStream(ptr, db, EMPTY, opts)),\n toArray(createTreeNodeStream(ptr, db, EMPTY, opts)),\n toArray(createBitfieldStream(ptr, db, EMPTY, opts))\n ]\n\n const [blocks, tree, bitfield] = await Promise.all(reads)\n\n return {\n blocks,\n tree,\n bitfield\n }\n}\n\nasync function toArray(stream) {\n const all = []\n for await (const e of stream) all.push(e)\n return all\n}\n\nasync function fileExists(path) {\n try {\n await fs.promises.stat(path)\n return true\n } catch {\n return false\n }\n}\n\nfunction shouldRecover(err) {\n return err.message.toLowerCase().indexOf('sequence number is being set backwards') > -1\n}\n\nfunction noop() {}\n\nasync function getInfoFromBatch(db, c, discoveryKey, getAuth, getHead, getHints) {\n const authPromise = getAuth ? CoreRX.getAuth(db, c) : null\n const headPromise = getHead ? CoreRX.getHead(db, c) : null\n const hintsPromise = getHints ? CoreRX.getHints(db, c) : null\n\n // ensure no uncaughts\n if (authPromise) authPromise.catch(noop)\n if (headPromise) headPromise.catch(noop)\n if (hintsPromise) hintsPromise.catch(noop)\n\n return {\n discoveryKey,\n core: c,\n auth: await authPromise,\n head: await headPromise,\n hints: await hintsPromise\n }\n}\nconst { Readable, getStreamError } = require('streamx')\nconst { core } = require('./keys')\n\nmodule.exports = class BlockStream extends Readable {\n constructor(core, db, updates, start, end, reverse) {\n super()\n\n this.core = core\n this.db = db\n this.updates = updates\n this.start = start\n this.end = end\n this.reverse = reverse === true\n\n this._drained = true\n this._consumed = 0\n this._stream = null\n this._oncloseBound = this._onclose.bind(this)\n this._maybeDrainBound = this._maybeDrain.bind(this)\n\n this._update()\n }\n\n _update() {\n if (this._consumed > this.core.dependencies.length) return\n\n const deps = this.core.dependencies\n const index = this._findDependencyIndex(deps)\n\n const curr = index < deps.length ? deps[index] : null\n const prev = index > 0 && index - 1 < deps.length ? deps[index - 1] : null\n\n const start = prev && prev.length > this.start ? prev.length : this.start\n const end = curr && (this.end === -1 || curr.length < this.end) ? curr.length : this.end\n\n const ptr = curr ? curr.dataPointer : this.core.dataPointer\n\n this._makeStream(core.block(ptr, start), core.block(ptr, end))\n }\n\n _findDependencyIndex(deps) {\n if (!this.reverse) return this._consumed++\n\n let i = deps.length - this._consumed++\n while (i > 0) {\n if (deps[i - 1].length <= this.end) return i\n i--\n this._consumed++\n }\n\n return 0\n }\n\n _predestroy() {\n if (this._stream !== null) this._stream.destroy()\n }\n\n _read(cb) {\n this._drained = this._onreadable()\n cb(null)\n }\n\n _maybeDrain() {\n if (this._drained === true) return\n this._drained = this._onreadable()\n }\n\n _onreadable() {\n if (this._stream === null) {\n this.push(null)\n return true\n }\n\n let data = this._stream.read()\n\n if (data === null) return false\n\n do {\n this.push(data)\n data = this._stream.read()\n } while (data !== null)\n\n return true\n }\n\n _onclose() {\n if (this.destroying) return\n\n const err = getStreamError(this._stream)\n\n if (err !== null) {\n this.destroy(err)\n return\n }\n\n // empty the current stream\n if (this._onreadable() === true) this._drained = true\n\n this._stream = null\n\n this._update()\n this._maybeDrain()\n }\n\n _makeStream(start, end) {\n this._stream = this.updates.iterator(this.db, start, end, this.reverse)\n this._stream.on('readable', this._maybeDrainBound)\n this._stream.on('error', noop)\n this._stream.on('close', this._oncloseBound)\n }\n}\n\nfunction noop() {}\nconst { Readable } = require('streamx')\n\n// used for returned a stream that just errors (during read during teardown)\n\nmodule.exports = class CloseErrorStream extends Readable {\n constructor(err) {\n super()\n this.error = err\n }\n\n _open(cb) {\n cb(this.error)\n }\n}\nconst { UINT, STRING } = require('index-encoder')\nconst c = require('compact-encoding')\nconst b4a = require('b4a')\n\nconst TL_HEAD = 0\nconst TL_CORE_BY_DKEY = 1\nconst TL_CORE_BY_ALIAS = 2\nconst TL_CORE = 3\nconst TL_DATA = 4\nconst TL_GROUP_BY_TOPIC = 5\nconst TL_GROUP = 6\n\nconst TL_END = TL_GROUP + 1\n\nconst CORE_AUTH = 0\nconst CORE_SESSIONS = 1\nconst CORE_GROUP = 2\n\nconst DATA_HEAD = 0\nconst DATA_DEPENDENCY = 1\nconst DATA_HINTS = 2\nconst DATA_BLOCK = 3\nconst DATA_TREE = 4\nconst DATA_BITFIELD = 5\nconst DATA_USER_DATA = 6\nconst DATA_LOCAL = 7\nconst DATA_MARK = 8\n\nconst slab = { buffer: b4a.allocUnsafe(65536), start: 0, end: 0 }\n\nconst store = {}\nconst core = {}\nconst group = {}\n\nstore.clear = function () {\n const state = alloc()\n let start = state.start\n UINT.encode(state, 0)\n const a = state.buffer.subarray(start, state.start)\n start = state.start\n UINT.encode(state, TL_END)\n const b = state.buffer.subarray(start, state.start)\n return [a, b]\n}\n\nstore.head = function () {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_HEAD)\n return state.buffer.subarray(start, state.start)\n}\n\nstore.core = function (discoveryKey) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_CORE_BY_DKEY)\n c.fixed32.encode(state, discoveryKey)\n return state.buffer.subarray(start, state.start)\n}\n\nstore.coreStart = function () {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_CORE_BY_DKEY)\n return state.buffer.subarray(start, state.start)\n}\n\nstore.coreEnd = function () {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_CORE_BY_DKEY + 1)\n return state.buffer.subarray(start, state.start)\n}\n\nstore.coreByAlias = function ({ namespace, name }) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_CORE_BY_ALIAS)\n c.fixed32.encode(state, namespace)\n STRING.encode(state, name)\n return state.buffer.subarray(start, state.start)\n}\n\nstore.coreByAliasStart = function (namespace) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_CORE_BY_ALIAS)\n if (namespace) c.fixed32.encode(state, namespace)\n return state.buffer.subarray(start, state.start)\n}\n\nstore.coreByAliasEnd = function (namespace) {\n const state = alloc()\n const start = state.start\n\n if (namespace) {\n UINT.encode(state, TL_CORE_BY_ALIAS)\n c.fixed32.encode(state, namespace)\n state.buffer[state.start++] = 0xff\n } else {\n UINT.encode(state, TL_CORE_BY_ALIAS + 1)\n }\n\n return state.buffer.subarray(start, state.start)\n}\n\nstore.alias = function (buffer) {\n const state = { buffer, start: 0, end: buffer.byteLength }\n UINT.decode(state) // ns\n const namespace = c.fixed32.decode(state)\n const name = STRING.decode(state)\n return { namespace, name }\n}\n\nstore.discoveryKey = function (buffer) {\n const state = { buffer, start: 0, end: buffer.byteLength }\n UINT.decode(state) // ns\n return c.fixed32.decode(state)\n}\n\ncore.core = function (ptr) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_CORE)\n UINT.encode(state, ptr)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.data = function (ptr) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.auth = function (ptr) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_CORE)\n UINT.encode(state, ptr)\n UINT.encode(state, CORE_AUTH)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.group = function (ptr) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_CORE)\n UINT.encode(state, ptr)\n UINT.encode(state, CORE_GROUP)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.sessions = function (ptr) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_CORE)\n UINT.encode(state, ptr)\n UINT.encode(state, CORE_SESSIONS)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.head = function (ptr) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n UINT.encode(state, DATA_HEAD)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.dependency = function (ptr) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n UINT.encode(state, DATA_DEPENDENCY)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.hints = function (ptr) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n UINT.encode(state, DATA_HINTS)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.block = function (ptr, index) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n UINT.encode(state, DATA_BLOCK)\n UINT.encode(state, index)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.tree = function (ptr, index) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n UINT.encode(state, DATA_TREE)\n UINT.encode(state, index)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.bitfield = function (ptr, index, type) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n UINT.encode(state, DATA_BITFIELD)\n UINT.encode(state, index)\n UINT.encode(state, type)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.userData = function (ptr, key) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n UINT.encode(state, DATA_USER_DATA)\n STRING.encode(state, key)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.userDataEnd = function (ptr) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n UINT.encode(state, DATA_USER_DATA + 1)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.mark = function (ptr, index) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n UINT.encode(state, DATA_MARK)\n UINT.encode(state, index)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.local = function (ptr, key) {\n if (key.byteLength > 2048) {\n throw new Error('local keys has an upper limit of 2048 bytes atm')\n }\n\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n UINT.encode(state, DATA_LOCAL)\n\n state.buffer.set(key, state.start)\n state.start += key.byteLength\n return state.buffer.subarray(start, state.start)\n}\n\ncore.localEnd = function (ptr) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_DATA)\n UINT.encode(state, ptr)\n UINT.encode(state, DATA_LOCAL + 1)\n return state.buffer.subarray(start, state.start)\n}\n\ncore.blockIndex = function (buffer) {\n const state = { buffer, start: 0, end: buffer.byteLength }\n UINT.decode(state) // ns\n UINT.decode(state) // ptr\n UINT.decode(state) // type\n return UINT.decode(state)\n}\n\ncore.bitfieldIndexAndType = function (buffer) {\n const state = { buffer, start: 0, end: buffer.byteLength }\n UINT.decode(state) // ns\n UINT.decode(state) // ptr\n UINT.decode(state) // type\n return [UINT.decode(state), UINT.decode(state)]\n}\n\ncore.userDataKey = function (buffer) {\n const state = { buffer, start: 0, end: buffer.byteLength }\n UINT.decode(state) // ns\n UINT.decode(state) // ptr\n UINT.decode(state) // type\n return STRING.decode(state)\n}\n\ncore.markKey = function (buffer) {\n const state = { buffer, start: 0, end: buffer.byteLength }\n UINT.decode(state) // ns\n UINT.decode(state) // ptr\n UINT.decode(state) // type\n return UINT.decode(state)\n}\n\ncore.localKey = function (buffer) {\n const state = { buffer, start: 0, end: buffer.byteLength }\n UINT.decode(state) // ns\n UINT.decode(state) // ptr\n UINT.decode(state) // type\n return state.buffer.subarray(state.start, state.end)\n}\n\ngroup.topic = function (topic) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_GROUP_BY_TOPIC)\n c.fixed32.encode(state, topic)\n return state.buffer.subarray(start, state.start)\n}\n\ngroup.entry = function (group, timestamp, ptr) {\n const state = alloc()\n const start = state.start\n UINT.encode(state, TL_GROUP)\n UINT.encode(state, group)\n c.uint64be.encode(state, timestamp)\n UINT.encode(state, ptr)\n return state.buffer.subarray(start, state.start)\n}\n\nmodule.exports = { store, core, group }\n\nfunction alloc() {\n if (slab.buffer.byteLength - slab.start < 4096) {\n slab.buffer = b4a.allocUnsafe(slab.buffer.byteLength)\n slab.start = 0\n }\n return slab\n}\nconst b4a = require('b4a')\nconst BlockDependencyStream = require('./block-dependency-stream.js')\nconst { core, store, group } = require('./keys.js')\nconst schema = require('../encoding/spec/hyperschema')\n\nconst CORESTORE_CORE = schema.getEncoding('@corestore/core')\nconst CORE_TREE_NODE = schema.getEncoding('@core/tree-node')\nconst EMPTY = b4a.alloc(0)\n\nmodule.exports = {\n createBlockStream,\n createBitfieldStream,\n createUserDataStream,\n createCoreStream,\n createAliasStream,\n createDiscoveryKeyStream,\n createTreeNodeStream,\n createMarkStream,\n createLocalStream,\n createGroupUpdateStream\n}\n\nfunction createCoreStream(db, view) {\n const start = store.coreStart()\n const end = store.coreEnd()\n\n const ite = view.iterator(db, start, end, false)\n\n ite._readableState.map = mapCore\n return ite\n}\n\nfunction createDiscoveryKeyStream(db, view, namespace) {\n const start = namespace ? store.coreByAliasStart(namespace) : store.coreStart()\n const end = namespace ? store.coreByAliasEnd(namespace) : store.coreEnd()\n\n const ite = view.iterator(db, start, end, false)\n\n ite._readableState.map = namespace ? mapNamespaceDiscoveryKeys : mapAllDiscoveryKeys\n return ite\n}\n\nfunction createAliasStream(db, view, namespace) {\n const start = store.coreByAliasStart(namespace)\n const end = store.coreByAliasEnd(namespace)\n\n const ite = view.iterator(db, start, end, false)\n\n ite._readableState.map = mapAlias\n return ite\n}\n\nfunction createGroupUpdateStream(db, view, groupID, { gte = 0, reverse = true } = {}) {\n const start = group.entry(groupID, gte, 0)\n const end = group.entry(groupID + 1, 0, 0)\n\n const ite = view.iterator(db, start, end, reverse)\n\n ite._readableState.map = mapGroupUpdate\n return ite\n}\n\nfunction createBlockIterator(ptr, db, view, start, end, reverse) {\n if (ptr.dependencies.length > 0) {\n return new BlockDependencyStream(ptr, db, view, start, end, reverse)\n }\n\n const s = core.block(ptr.dataPointer, start)\n const e = core.block(ptr.dataPointer, end === -1 ? Infinity : end)\n return view.iterator(db, s, e, reverse)\n}\n\nfunction createBlockStream(\n ptr,\n db,\n view,\n { gt = -1, gte = gt + 1, lte = -1, lt = lte === -1 ? -1 : lte + 1, reverse = false } = {}\n) {\n const ite = createBlockIterator(ptr, db, view, gte, lt, reverse)\n\n ite._readableState.map = mapBlock\n return ite\n}\n\nfunction createBitfieldStream(\n ptr,\n db,\n view,\n { gt = -1, gte = gt + 1, lte = -1, lt = lte === -1 ? -1 : lte + 1, reverse = false } = {}\n) {\n const s = core.bitfield(ptr.dataPointer, gte, 0)\n const e = core.bitfield(ptr.dataPointer, lt === -1 ? Infinity : lt, 0)\n const ite = view.iterator(db, s, e, false)\n\n ite._readableState.map = mapBitfield\n return ite\n}\n\n// NOTE: this does not do dependency lookups atm\nfunction createTreeNodeStream(\n ptr,\n db,\n view,\n { gt = -1, gte = gt + 1, lte = -1, lt = lte === -1 ? -1 : lte + 1, reverse = false } = {}\n) {\n const s = core.tree(ptr.dataPointer, gte, 0)\n const e = core.tree(ptr.dataPointer, lt === -1 ? Infinity : lt, 0)\n const ite = view.iterator(db, s, e, false)\n\n ite._readableState.map = mapTreeNode\n return ite\n}\n\nfunction createUserDataStream(\n ptr,\n db,\n view,\n { gt = null, gte = '', lte = null, lt = null, reverse = false } = {}\n) {\n if (gt !== null || lte !== null) {\n throw new Error('gt and lte not yet supported for user data streams')\n }\n\n const s = core.userData(ptr.dataPointer, gte)\n const e = lt === null ? core.userDataEnd(ptr.dataPointer) : core.userData(ptr.dataPointer, lt)\n const ite = view.iterator(db, s, e, false)\n\n ite._readableState.map = mapUserData\n return ite\n}\n\nfunction createMarkStream(\n ptr,\n db,\n view,\n { gt = -1, gte = gt + 1, lte = -1, lt = lte === -1 ? -1 : lte + 1, reverse = false } = {}\n) {\n const s = core.mark(ptr.dataPointer, gte)\n const e = core.mark(ptr.dataPointer, lt === -1 ? Infinity : lt)\n const ite = view.iterator(db, s, e, reverse)\n\n ite._readableState.map = mapMark\n return ite\n}\n\nfunction createLocalStream(\n ptr,\n db,\n view,\n { gt = null, gte = EMPTY, lte = null, lt = null, reverse = false } = {}\n) {\n if (gt !== null || lte !== null) throw new Error('gt and lte not yet supported for local streams')\n\n const s = core.local(ptr.dataPointer, gte)\n const e = lt === null ? core.localEnd(ptr.dataPointer) : core.local(ptr.dataPointer, lt)\n const ite = view.iterator(db, s, e, false)\n\n ite._readableState.map = mapLocal\n return ite\n}\n\nfunction mapBitfield(data) {\n const [index, type] = core.bitfieldIndexAndType(data.key)\n if (type !== 0) return null // ignore for now\n return { index, page: data.value }\n}\n\nfunction mapMark(data) {\n const index = core.markKey(data.key)\n return { index, page: data.value }\n}\n\nfunction mapLocal(data) {\n const key = core.localKey(data.key)\n return { key, value: data.value }\n}\n\nfunction mapGroupUpdate(data) {\n return data.value\n}\n\nfunction mapUserData(data) {\n const key = core.userDataKey(data.key)\n return { key, value: data.value }\n}\n\nfunction mapCore(data) {\n const discoveryKey = store.discoveryKey(data.key)\n const core = CORESTORE_CORE.decode({\n start: 0,\n end: data.value.byteLength,\n buffer: data.value\n })\n return { discoveryKey, core }\n}\n\nfunction mapAllDiscoveryKeys(data) {\n return store.discoveryKey(data.key)\n}\n\nfunction mapNamespaceDiscoveryKeys(data) {\n return data.value\n}\n\nfunction mapAlias(data) {\n const alias = store.alias(data.key)\n return { alias, discoveryKey: data.value }\n}\n\nfunction mapBlock(data) {\n return { index: core.blockIndex(data.key), value: data.value }\n}\n\nfunction mapTreeNode(data) {\n return CORE_TREE_NODE.decode({\n start: 0,\n end: data.value.byteLength,\n buffer: data.value\n })\n}\nconst b4a = require('b4a')\nconst c = require('compact-encoding')\nconst flat = require('flat-tree')\n\nconst schema = require('../encoding/spec/hyperschema')\nconst { store, core, group } = require('./keys.js')\nconst View = require('./view.js')\n\nconst CORESTORE_HEAD = schema.getEncoding('@corestore/head')\nconst CORESTORE_CORE = schema.getEncoding('@corestore/core')\nconst CORESTORE_GROUP = c.uint\n\nconst CORE_AUTH = schema.getEncoding('@core/auth')\nconst CORE_GROUP = schema.getEncoding('@core/group')\nconst CORE_SESSIONS = schema.getEncoding('@core/sessions')\nconst CORE_HEAD = schema.getEncoding('@core/head')\nconst CORE_TREE_NODE = schema.getEncoding('@core/tree-node')\nconst CORE_DEPENDENCY = schema.getEncoding('@core/dependency')\nconst CORE_HINTS = schema.getEncoding('@core/hints')\n\nclass CoreTX {\n constructor(core, db, view, changes) {\n if (db.snapshotted) throw new Error('Cannot open core tx on snapshot')\n this.core = core\n this.db = db\n this.view = view\n this.changes = changes\n }\n\n setAuth(auth) {\n this.changes.push([core.auth(this.core.corePointer), encode(CORE_AUTH, auth), null])\n }\n\n setSessions(sessions) {\n this.changes.push([core.sessions(this.core.corePointer), encode(CORE_SESSIONS, sessions), null])\n }\n\n setHead(head) {\n this.changes.push([core.head(this.core.dataPointer), encode(CORE_HEAD, head), null])\n }\n\n deleteHead() {\n this.changes.push([core.head(this.core.dataPointer), null, null])\n }\n\n setDependency(dep) {\n this.changes.push([core.dependency(this.core.dataPointer), encode(CORE_DEPENDENCY, dep), null])\n }\n\n setGroup(group) {\n this.changes.push([core.group(this.core.dataPointer), encode(CORE_GROUP, group), null])\n }\n\n deleteGroup() {\n this.changes.push([core.group(this.core.dataPointer), null, null])\n }\n\n setHints(hints) {\n this.changes.push([core.hints(this.core.dataPointer), encode(CORE_HINTS, hints), null])\n }\n\n putBlock(index, data) {\n this.changes.push([core.block(this.core.dataPointer, index), data, null])\n }\n\n deleteBlock(index) {\n this.changes.push([core.block(this.core.dataPointer, index), null, null])\n }\n\n deleteBlockRange(start, end) {\n this.changes.push([\n core.block(this.core.dataPointer, start),\n null,\n core.block(this.core.dataPointer, end === -1 ? Infinity : end)\n ])\n }\n\n putBitfieldPage(index, data) {\n this.changes.push([core.bitfield(this.core.dataPointer, index, 0), data, null])\n }\n\n deleteBitfieldPage(index) {\n this.changes.push([core.bitfield(this.core.dataPointer, index, 0), null, null])\n }\n\n deleteBitfieldPageRange(start, end) {\n this.changes.push([\n core.bitfield(this.core.dataPointer, start, 0),\n null,\n core.bitfield(this.core.dataPointer, end === -1 ? Infinity : end, 0)\n ])\n }\n\n putTreeNode(node) {\n this.changes.push([\n core.tree(this.core.dataPointer, node.index),\n encode(CORE_TREE_NODE, node),\n null\n ])\n }\n\n deleteTreeNode(index) {\n this.changes.push([core.tree(this.core.dataPointer, index), null, null])\n }\n\n deleteTreeNodeRange(start, end) {\n this.changes.push([\n core.tree(this.core.dataPointer, start),\n null,\n core.tree(this.core.dataPointer, end === -1 ? Infinity : end)\n ])\n }\n\n putUserData(key, value) {\n const buffer = typeof value === 'string' ? b4a.from(value) : value\n this.changes.push([core.userData(this.core.dataPointer, key), buffer, null])\n }\n\n deleteUserData(key) {\n this.changes.push([core.userData(this.core.dataPointer, key), null, null])\n }\n\n putMark(index, data) {\n this.changes.push([core.mark(this.core.dataPointer, index), data, null])\n }\n\n deleteMark(index) {\n this.changes.push([core.mark(this.core.dataPointer, index), null, null])\n }\n\n deleteMarkRange(start, end) {\n this.changes.push([\n core.mark(this.core.dataPointer, start),\n null,\n core.mark(this.core.dataPointer, end === -1 ? Infinity : end)\n ])\n }\n\n putLocal(key, value) {\n this.changes.push([core.local(this.core.dataPointer, key), value, null])\n }\n\n deleteLocal(key) {\n this.changes.push([core.local(this.core.dataPointer, key), null, null])\n }\n\n deleteLocalRange(start, end) {\n this.changes.push([\n core.local(this.core.dataPointer, start),\n null,\n end === null ? core.localEnd(this.core.dataPointer) : core.local(this.core.dataPointer, end)\n ])\n }\n\n putGroupUpdate(groupPtr, timestamp, key) {\n this.changes.push([group.entry(groupPtr, timestamp, this.core.corePointer), key, null])\n }\n\n deleteGroupUpdate(groupPtr, timestamp) {\n this.changes.push([group.entry(groupPtr, timestamp, this.core.corePointer), null, null])\n }\n\n flush() {\n const changes = this.changes\n if (changes === null) return Promise.resolve(!this.view)\n\n this.changes = null\n\n if (this.view) {\n this.view.apply(changes)\n return Promise.resolve(false)\n }\n\n return View.flush(changes, this.db)\n }\n}\n\nclass CoreRX {\n constructor(core, db, view, treeCache, stats, fork) {\n this.core = core\n this.read = db.read({ autoDestroy: true })\n this.view = view\n this.treeCache = treeCache\n this.fork = fork\n this.stats = stats\n\n view.readStart()\n }\n\n static async getAuth(db, c) {\n return decode(CORE_AUTH, await db.get(core.auth(c.corePointer)))\n }\n\n async getAuth() {\n return decode(CORE_AUTH, await this.view.get(this.read, core.auth(this.core.corePointer)))\n }\n\n async getSessions() {\n return decode(\n CORE_SESSIONS,\n await this.view.get(this.read, core.sessions(this.core.corePointer))\n )\n }\n\n static async getHead(db, c) {\n return decode(CORE_HEAD, await db.get(core.head(c.dataPointer)))\n }\n\n async getHead() {\n return decode(CORE_HEAD, await this.view.get(this.read, core.head(this.core.dataPointer)))\n }\n\n async getDependency() {\n return decode(\n CORE_DEPENDENCY,\n await this.view.get(this.read, core.dependency(this.core.dataPointer))\n )\n }\n\n async getGroup() {\n return await decode(\n CORE_GROUP,\n await this.view.get(this.read, core.group(this.core.corePointer))\n )\n }\n\n static async getHints(db, c) {\n return decode(CORE_HINTS, await db.get(core.hints(c.dataPointer)))\n }\n\n async getHints() {\n return decode(CORE_HINTS, await this.view.get(this.read, core.hints(this.core.dataPointer)))\n }\n\n getBlock(index) {\n const dep = findBlockDependency(this.core.dependencies, index)\n const data = dep === null ? this.core.dataPointer : dep.dataPointer\n return this.view.get(this.read, core.block(data, index))\n }\n\n getBitfieldPage(index) {\n return this.view.get(this.read, core.bitfield(this.core.dataPointer, index, 0))\n }\n\n async _resolveTreeCache(key, promise, entry) {\n try {\n const value = decode(CORE_TREE_NODE, await promise)\n const cached = this.treeCache.get(key)\n\n // preflight is gone; no-op\n if (cached !== entry) return value\n\n if (value !== null) {\n // replace cached entry with value\n this.treeCache.set(key, { pending: null, value })\n } else {\n // discard non-existing values\n this.treeCache.delete(key)\n }\n\n return value\n } catch (err) {\n // cleanup\n const cached = this.treeCache.get(key)\n if (cached === entry) {\n this.treeCache.delete(key)\n }\n\n throw err\n }\n }\n\n async getTreeNode(index) {\n const dep = findTreeDependency(this.core.dependencies, index)\n const data = dep === null ? this.core.dataPointer : dep.dataPointer\n\n if (!this.treeCache || this.fork < 0) {\n if (this.stats !== null) this.stats.treeCache.skips++\n // no-cache\n return decode(CORE_TREE_NODE, await this.view.get(this.read, core.tree(data, index)))\n }\n\n const key = `${data}:${index}:${this.fork}`\n let entry = this.treeCache.get(key)\n if (entry) {\n if (entry.pending) {\n if (this.stats !== null) this.stats.treeCache.parallel++\n return entry.pending\n }\n\n if (this.stats !== null) this.stats.treeCache.hits++\n return entry.value\n }\n\n if (this.stats !== null) this.stats.treeCache.misses++\n\n const promise = this.view.get(this.read, core.tree(data, index))\n entry = { pending: null, value: null }\n entry.pending = this._resolveTreeCache(key, promise, entry)\n this.treeCache.set(key, entry)\n\n return entry.pending\n }\n\n async hasTreeNode(index) {\n return (await this.getTreeNode(index)) !== null\n }\n\n getUserData(key) {\n return this.view.get(this.read, core.userData(this.core.dataPointer, key))\n }\n\n getMark(index) {\n return this.view.get(this.read, core.mark(this.core.dataPointer, index))\n }\n\n getLocal(key) {\n return this.view.get(this.read, core.local(this.core.dataPointer, key))\n }\n\n tryFlush() {\n this.read.tryFlush()\n this._free()\n }\n\n destroy() {\n this.read.destroy()\n this._free()\n }\n\n _free() {\n if (this.view === null) return\n this.view.readStop()\n this.view = null\n }\n}\n\nclass CorestoreTX {\n constructor(view) {\n this.view = view\n this.changes = []\n }\n\n setHead(head) {\n this.changes.push([store.head(), encode(CORESTORE_HEAD, head), null])\n }\n\n setCoreHints(c, hints) {\n this.changes.push([core.hints(c.dataPointer), encode(CORE_HINTS, hints), null])\n }\n\n putCore(discoveryKey, ptr) {\n this.changes.push([store.core(discoveryKey), encode(CORESTORE_CORE, ptr), null])\n }\n\n putCoreByAlias(alias, discoveryKey) {\n this.changes.push([store.coreByAlias(alias), discoveryKey, null])\n }\n\n putGroup(topic, groupPtr) {\n this.changes.push([group.topic(topic), encode(CORESTORE_GROUP, groupPtr), null])\n }\n\n deleteGroup(topic) {\n this.changes.push([group.topic(topic), null, null])\n }\n\n clear() {\n const [start, end] = store.clear()\n this.changes.push([start, null, end])\n }\n\n apply() {\n if (this.changes === null) return\n this.view.apply(this.changes)\n this.changes = null\n }\n}\n\nclass CorestoreRX {\n constructor(db, view) {\n this.read = db.read({ autoDestroy: true })\n this.view = view\n\n view.readStart()\n }\n\n async getHeadRaw(db) {\n return await this.view.get(this.read, store.head())\n }\n\n async getHead() {\n return decode(CORESTORE_HEAD, await this.view.get(this.read, store.head()))\n }\n\n async getCore(discoveryKey) {\n return decode(CORESTORE_CORE, await this.view.get(this.read, store.core(discoveryKey)))\n }\n\n getCoreByAlias(alias) {\n return this.view.get(this.read, store.coreByAlias(alias))\n }\n\n async getGroup(topic) {\n return decode(CORESTORE_GROUP, await this.view.get(this.read, group.topic(topic)))\n }\n\n tryFlush() {\n this.read.tryFlush()\n this._free()\n }\n\n destroy() {\n this.read.destroy()\n this._free()\n }\n\n _free() {\n if (this.view === null) return\n this.view.readStop()\n this.view = null\n }\n}\n\nmodule.exports = { CorestoreTX, CorestoreRX, CoreTX, CoreRX }\n\nfunction findBlockDependency(dependencies, index) {\n for (let i = 0; i < dependencies.length; i++) {\n const dep = dependencies[i]\n if (index < dep.length) return dep\n }\n\n return null\n}\n\nfunction findTreeDependency(dependencies, index) {\n for (let i = 0; i < dependencies.length; i++) {\n const dep = dependencies[i]\n if (flat.rightSpan(index) <= (dep.length - 1) * 2) return dep\n }\n\n return null\n}\n\nfunction decode(enc, buffer) {\n if (buffer === null) return null\n return enc.decode({ start: 0, end: buffer.byteLength, buffer })\n}\n\nfunction encode(enc, m) {\n // TODO: use fancy slab for small messages\n const state = { start: 0, end: 0, buffer: null }\n enc.preencode(state, m)\n state.buffer = b4a.allocUnsafe(state.end)\n enc.encode(state, m)\n return state.buffer\n}\nconst { Readable, getStreamError } = require('streamx')\nconst CloseErrorStream = require('./close-error-stream.js')\nconst b4a = require('b4a')\n\nclass OverlayStream extends Readable {\n constructor(stream, start, end, reverse, changes, cleared) {\n super()\n\n this.start = start\n this.end = end\n this.reverse = reverse\n this.changes = changes\n this.cleared = cleared\n this.change = 0\n this.range = 0\n\n this._stream = stream\n this._drained = false\n\n this._stream.on('readable', this._drainMaybe.bind(this))\n this._stream.on('error', noop)\n this._stream.on('close', this._onclose.bind(this))\n }\n\n _drainMaybe() {\n if (this._drained === true) return\n this._drained = this._onreadable()\n }\n\n _onclose() {\n if (this.destroying) return\n\n const err = getStreamError(this._stream)\n\n if (err !== null) {\n this.destroy(err)\n return\n }\n\n while (this.change < this.changes.length) {\n const c = this.changes[this.change++]\n const key = c[0]\n const value = c[1]\n\n if (value !== null && this._inRange(key)) this.push({ key, value })\n }\n\n this.push(null)\n this._stream = null\n }\n\n _onreadable() {\n let data = this._stream.read()\n if (data === null) return false\n\n let drained = false\n\n do {\n if (this._push(data) === true) drained = true\n data = this._stream.read()\n } while (data !== null)\n\n return drained\n }\n\n _read(cb) {\n this._drained = this._onreadable()\n cb(null)\n }\n\n _predestroy() {\n this._stream.destroy()\n }\n\n _push(entry) {\n const key = entry.key\n\n while (this.range < this.cleared.length) {\n const c = this.cleared[this.range]\n\n // we moved past the range\n if (this.reverse ? b4a.compare(key, c[0]) < 0 : b4a.compare(c[2], key) <= 0) {\n this.range++\n continue\n }\n\n // we didnt move past and are in, drop\n if (b4a.compare(c[0], key) <= 0 && b4a.compare(key, c[2]) < 0) {\n return false\n }\n\n break\n }\n\n let updated = false\n\n while (this.change < this.changes.length) {\n const c = this.changes[this.change]\n const key = c[0]\n const value = typeof c[1] === 'string' ? b4a.from(c[1]) : c[1]\n const cmp = b4a.compare(key, entry.key)\n\n // same value, if not deleted, return new one\n if (cmp === 0) {\n this.change++\n if (value === null || this._inRange(key) === false) return updated\n this.push({ key, value })\n return true\n }\n\n // we moved past the change, push it\n if (this.reverse ? cmp > 0 : cmp < 0) {\n this.change++\n if (value === null || this._inRange(key) === false) continue\n this.push({ key, value })\n updated = true\n continue\n }\n\n this.push(entry)\n return true\n }\n\n this.push(entry)\n return true\n }\n\n _inRange(key) {\n return b4a.compare(this.start, key) <= 0 && b4a.compare(key, this.end) < 0\n }\n}\n\nclass Overlay {\n constructor() {\n this.indexed = 0\n this.changes = null\n this.cleared = null\n this.reverse = false\n }\n\n update(view, reverse) {\n if (view.indexed === this.indexed) return\n\n const changes = view.map === null ? [] : [...view.map.values()]\n const cleared = view.cleared === null ? [] : view.cleared.slice(0)\n\n const cmp = reverse ? cmpChangeReverse : cmpChange\n\n changes.sort(cmp)\n cleared.sort(cmp)\n\n this.indexed = view.indexed\n this.changes = changes\n this.cleared = cleared\n this.reverse = reverse\n }\n\n createStream(stream, start, end, reverse) {\n return new OverlayStream(\n stream,\n start,\n end,\n reverse,\n this.reverse === reverse ? this.changes : reverseArray(this.changes),\n this.reverse === reverse ? this.cleared : reverseArray(this.cleared)\n )\n }\n}\n\nclass View {\n constructor() {\n this.map = null\n this.indexed = 0\n this.changes = null\n this.cleared = null\n this.overlay = null\n this.snap = null\n this.readers = 0\n }\n\n snapshot() {\n if (this._attached()) return this.snap.snapshot()\n\n const snap = new View()\n\n snap.map = this.map\n snap.indexed = this.indexed\n snap.changes = this.changes\n snap.cleared = this.cleared\n\n if (this._frozen()) return snap\n\n this.readers++\n snap.snap = this\n\n return snap\n }\n\n readStart() {\n if (this.snap !== null) this.readers++\n }\n\n readStop() {\n if (this.snap !== null && --this.readers === 0) this.snap.readers--\n }\n\n size() {\n return this.changes === null ? 0 : this.changes.length\n }\n\n updated() {\n return this.changes === null\n }\n\n get(read, key) {\n return this.changes === null ? read.get(key) : this._indexAndGet(read, key)\n }\n\n reset() {\n this.indexed = 0\n this.snap = this.map = this.changes = this.cleared = this.overlay = null\n }\n\n iterator(db, start, end, reverse) {\n if (dbClosing(db)) return new CloseErrorStream(new Error('RocksDB session is closed'))\n\n const stream = db.iterator({ gte: start, lt: end, reverse })\n if (this.changes === null) return stream\n\n this._index()\n\n if (this.overlay === null) this.overlay = new Overlay()\n this.overlay.update(this, reverse)\n return this.overlay.createStream(stream, start, end, reverse)\n }\n\n _indexAndGet(read, key) {\n this._index()\n const change = this.map.get(b4a.toString(key, 'hex'))\n\n if (change === undefined) {\n return this.cleared === null ? read.get(key) : this._readAndMaybeDrop(read, key)\n }\n\n return Promise.resolve(change[1])\n }\n\n async _readAndMaybeDrop(read, key) {\n const cleared = this.cleared // in case its cleared\n const value = await read.get(key)\n if (value === null) return null\n\n for (let i = 0; i < cleared.length; i++) {\n const c = cleared[i]\n // check if in range\n if (b4a.compare(c[0], key) <= 0 && b4a.compare(key, c[2]) < 0) return null\n }\n\n return value\n }\n\n _attached() {\n return this.snap !== null && this.changes === this.snap.changes\n }\n\n _frozen() {\n return this.changes === null || (this.snap !== null && this.changes !== this.snap.changes)\n }\n\n _index() {\n // if we are a snap and we are still attached (ie no mutations), simply copy the refs\n if (this._attached()) {\n this.snap._index()\n this.map = this.snap.map\n this.cleared = this.snap.cleared\n this.indexed = this.snap.indexed\n return\n }\n\n if (this.map === null) this.map = new Map()\n if (this.changes.length === this.indexed) return\n\n while (this.indexed < this.changes.length) {\n const c = this.changes[this.indexed++]\n\n if (c[2] === null) this.map.set(b4a.toString(c[0], 'hex'), c)\n else this._indexRange(c)\n }\n }\n\n _indexRange(range) {\n const s = b4a.toString(range[0], 'hex')\n const e = b4a.toString(range[2], 'hex')\n\n for (const [key, c] of this.map) {\n if (s <= key && key < e) this.map.set(key, [c[0], null, null])\n }\n\n if (this.cleared === null) this.cleared = []\n this.cleared.push(range)\n }\n\n apply(changes) {\n if (this.snap !== null) throw new Error('Illegal to push changes to a snapshot')\n\n if (this.readers !== 0 && this.changes !== null) {\n this.changes = this.changes.slice(0)\n this.cleared = this.cleared === null ? null : this.cleared.slice(0)\n this.map = this.map === null ? null : new Map([...this.map])\n }\n\n if (this.changes === null) {\n this.changes = changes\n return\n }\n\n for (let i = 0; i < changes.length; i++) {\n this.changes.push(changes[i])\n }\n }\n\n static async flush(changes, db) {\n if (changes === null) return true\n\n const w = db.write({ autoDestroy: true })\n\n for (const [start, value, end] of changes) {\n if (end !== null) w.tryDeleteRange(start, end)\n else if (value !== null) w.tryPut(start, value)\n else w.tryDelete(start)\n }\n\n await w.flush()\n\n return true\n }\n}\n\nmodule.exports = View\n\nfunction cmpChange(a, b) {\n const c = b4a.compare(a[0], b[0])\n return c === 0 ? b4a.compare(a[2], b[2]) : c\n}\n\nfunction cmpChangeReverse(a, b) {\n return cmpChange(b, a)\n}\n\nfunction noop() {}\n\nfunction reverseArray(list) {\n const r = new Array(list.length)\n for (let i = 0; i < list.length; i++) r[r.length - 1 - i] = list[i]\n return r\n}\n\n// TODO: expose from rocks instead\nfunction dbClosing(db) {\n return db._state.closing || db._index === -1\n}\nconst fs = require('fs')\nconst path = require('path')\nconst { Readable } = require('streamx')\nconst b4a = require('b4a')\nconst flat = require('flat-tree')\nconst crypto = require('hypercore-crypto')\nconst c = require('compact-encoding')\nconst m = require('./messages.js')\nconst View = require('../../lib/view.js')\nconst { CorestoreTX, CoreTX, CorestoreRX } = require('../../lib/tx.js')\n\nconst EMPTY_NODE = b4a.alloc(40)\nconst EMPTY_PAGE = b4a.alloc(4096)\n\nlet TREE_01_SKIP = null\nlet TREE_04_SKIP = null\nlet TREE_16_SKIP = null\n\nclass CoreListStream extends Readable {\n constructor (storage) {\n super()\n\n this.storage = storage\n this.stack = []\n }\n\n async _open (cb) {\n for (const a of await readdir(path.join(this.storage, 'cores'))) {\n for (const b of await readdir(path.join(this.storage, 'cores', a))) {\n for (const dkey of await readdir(path.join(this.storage, 'cores', a, b))) {\n this.stack.push(path.join(this.storage, 'cores', a, b, dkey))\n }\n }\n }\n\n cb(null)\n }\n\n async _read (cb) {\n while (true) {\n const next = this.stack.pop()\n if (!next) {\n this.push(null)\n break\n }\n\n const oplog = path.join(next, 'oplog')\n const result = await readOplog(oplog)\n if (!result) continue\n\n this.push(result)\n break\n }\n\n cb(null)\n }\n}\n\nfunction decodeOplogHeader (state) {\n c.uint32.decode(state) // cksum, ignore for now\n\n const l = c.uint32.decode(state)\n const length = l >> 2\n const headerBit = l & 1\n const partialBit = l & 2\n\n if (state.end - state.start < length) return null\n\n const end = state.start + length\n const result = { header: headerBit, partial: partialBit !== 0, byteLength: length + 8, message: null }\n\n try {\n result.message = m.oplog.header.decode({ start: state.start, end, buffer: state.buffer })\n } catch {\n return null\n }\n\n state.start = end\n return result\n}\n\nfunction decodeOplogEntry (state) {\n if (state.end - state.start < 8) return null\n\n c.uint32.decode(state) // cksum, ignore for now\n\n const l = c.uint32.decode(state)\n const length = l >>> 2\n const headerBit = l & 1\n const partialBit = l & 2\n\n if (state.end - state.start < length) return null\n\n const end = state.start + length\n\n const result = { header: headerBit, partial: partialBit !== 0, byteLength: length + 8, message: null }\n\n try {\n result.message = m.oplog.entry.decode({ start: state.start, end, buffer: state.buffer })\n } catch {\n return null\n }\n\n state.start = end\n\n return result\n}\n\nmodule.exports = { store, core }\n\nasync function store (storage, { version, dryRun = true, gc = true }) {\n const stream = new CoreListStream(storage.path)\n const view = new View()\n\n const tx = new CorestoreTX(view)\n const head = await storage._getHead(view)\n const primaryKeyFile = path.join(storage.path, 'primary-key')\n\n const primaryKey = await readFile(primaryKeyFile)\n\n if (!head.seed) head.seed = primaryKey\n\n for await (const data of stream) {\n const key = data.header.key\n const discoveryKey = crypto.discoveryKey(data.header.key)\n const files = getFiles(data.path)\n\n if (head.defaultDiscoveryKey === null) head.defaultDiscoveryKey = discoveryKey\n\n const core = {\n version: 0, // need later migration\n corePointer: head.allocated.cores++,\n dataPointer: head.allocated.datas++,\n alias: null\n }\n\n const ptr = { version: 0, corePointer: core.corePointer, dataPointer: core.dataPointer, dependencies: [] }\n const ctx = new CoreTX(ptr, storage.db, view, [])\n const userData = new Map()\n const treeNodes = new Map()\n\n const auth = {\n key,\n discoveryKey,\n manifest: data.header.manifest,\n keyPair: data.header.keyPair,\n encryptionKey: null\n }\n\n const tree = {\n length: 0,\n fork: 0,\n rootHash: null,\n signature: null\n }\n\n if (data.header.tree && data.header.tree.length) {\n tree.length = data.header.tree.length\n tree.fork = data.header.tree.fork\n tree.rootHash = data.header.tree.rootHash\n tree.signature = data.header.tree.signature\n }\n\n for (const { key, value } of data.header.userData) {\n userData.set(key, value)\n }\n\n for (const e of data.entries) {\n if (e.userData) userData.set(e.userData.key, e.userData.value)\n\n if (e.treeNodes) {\n for (const node of e.treeNodes) {\n treeNodes.set(node.index, node)\n ctx.putTreeNode(node)\n }\n }\n\n if (e.treeUpgrade) {\n if (e.treeUpgrade.ancestors !== tree.length) {\n throw new Error('Unflushed truncations not migrate-able atm')\n }\n\n tree.length = e.treeUpgrade.length\n tree.fork = e.treeUpgrade.fork\n tree.rootHash = null\n tree.signature = e.treeUpgrade.signature\n }\n }\n\n if (userData.has('corestore/name') && userData.has('corestore/namespace')) {\n core.alias = {\n name: b4a.toString(userData.get('corestore/name')),\n namespace: userData.get('corestore/namespace')\n }\n userData.delete('corestore/name')\n userData.delete('corestore/namespace')\n }\n\n for (const [key, value] of userData) {\n ctx.putUserData(key, value)\n }\n\n ctx.setAuth(auth)\n\n const getTreeNode = (index) => (treeNodes.get(index) || getTreeNodeFromFile(files.tree, index))\n\n if (tree.length) {\n if (tree.rootHash === null) tree.rootHash = crypto.tree(await getRoots(tree.length, getTreeNode))\n ctx.setHead(tree)\n }\n\n tx.putCore(discoveryKey, core)\n if (core.alias) tx.putCoreByAlias(core.alias, discoveryKey)\n\n await ctx.flush()\n }\n\n head.version = version\n tx.setHead(head)\n tx.apply()\n\n if (dryRun) return\n\n await View.flush(view.changes, storage.db)\n\n if (gc) await rm(primaryKeyFile)\n}\n\nclass BlockSlicer {\n constructor (filename) {\n this.stream = fs.createReadStream(filename)\n this.closed = new Promise(resolve => this.stream.once('close', resolve))\n this.offset = 0\n this.overflow = null\n }\n\n async take (offset, size) {\n let buffer = null\n if (offset < this.offset) throw new Error('overread')\n\n while (true) {\n let data = null\n\n if (this.overflow) {\n data = this.overflow\n this.overflow = null\n } else {\n data = this.stream.read()\n\n if (!data) {\n await new Promise(resolve => this.stream.once('readable', resolve))\n continue\n }\n }\n\n let chunk = null\n\n if (this.offset === offset || buffer) {\n chunk = data\n } else if (this.offset + data.byteLength > offset) {\n chunk = data.subarray(offset - this.offset)\n }\n\n this.offset += data.byteLength\n if (!chunk) continue\n\n if (buffer) buffer = b4a.concat([buffer, chunk])\n else buffer = chunk\n\n if (buffer.byteLength < size) continue\n\n const result = buffer.subarray(0, size)\n this.overflow = size === buffer.byteLength ? null : buffer.subarray(result.byteLength)\n this.offset -= (this.overflow ? this.overflow.byteLength : 0)\n return result\n }\n }\n\n close () {\n this.stream.on('error', noop)\n this.stream.destroy()\n return this.closed\n }\n}\n\nclass TreeSlicer {\n constructor () {\n this.buffer = null\n this.offset = 0\n }\n\n get size () {\n return this.buffer === null ? 0 : this.buffer.byteLength\n }\n\n push (data) {\n if (this.buffer === null) this.buffer = data\n else this.buffer = b4a.concat([this.buffer, data])\n this.offset += data.byteLength\n }\n\n skip () {\n let skipped = 0\n\n if (TREE_01_SKIP === null) {\n TREE_16_SKIP = b4a.alloc(16 * 40 * 100)\n TREE_04_SKIP = TREE_16_SKIP.subarray(0, 4 * 40 * 100)\n TREE_01_SKIP = TREE_16_SKIP.subarray(0, 1 * 40 * 100)\n }\n\n while (true) {\n if (this.buffer.byteLength >= TREE_16_SKIP.byteLength) {\n if (b4a.equals(this.buffer.subarray(0, TREE_16_SKIP.byteLength), TREE_16_SKIP)) {\n this.buffer = this.buffer.subarray(TREE_16_SKIP.byteLength)\n skipped += 1600\n continue\n }\n }\n\n if (this.buffer.byteLength >= TREE_04_SKIP.byteLength) {\n if (b4a.equals(this.buffer.subarray(0, TREE_04_SKIP.byteLength), TREE_04_SKIP)) {\n this.buffer = this.buffer.subarray(TREE_04_SKIP.byteLength)\n skipped += 400\n continue\n }\n }\n\n if (this.buffer.byteLength >= TREE_01_SKIP.byteLength) {\n if (b4a.equals(this.buffer.subarray(0, TREE_01_SKIP.byteLength), TREE_01_SKIP)) {\n this.buffer = this.buffer.subarray(TREE_01_SKIP.byteLength)\n skipped += 100\n continue\n }\n }\n break\n }\n\n return skipped\n }\n\n take () {\n const len = 40\n\n if (len <= this.size) {\n const chunk = this.buffer.subarray(0, len)\n this.buffer = this.buffer.subarray(len)\n return chunk\n }\n\n return null\n }\n}\n\nasync function core (core, { version, dryRun = true, gc = true }) {\n if (dryRun) return // dryRun mode not supported atm\n\n const rx = core.read()\n\n const promises = [rx.getAuth(), rx.getHead()]\n rx.tryFlush()\n\n const [auth, head] = await Promise.all(promises)\n\n if (!auth) return\n\n const dk = b4a.toString(auth.discoveryKey, 'hex')\n const files = getFiles(path.join(core.store.path, 'cores', dk.slice(0, 2), dk.slice(2, 4), dk))\n\n if (head === null || head.length === 0) {\n await commitCoreMigration(auth, core, version)\n if (gc) await runGC()\n return // no data\n }\n\n const oplog = await readOplog(files.oplog)\n if (!oplog) {\n const writable = !!auth.keyPair\n\n if (writable) {\n throw new Error('No oplog available writable core for ' + files.oplog + ', length = ' + (head ? head.length : 0))\n }\n\n // if not writable, just nuke it to recover, some bad state happened here, prop corruption from earlier versions\n const w = core.write()\n\n w.deleteBlockRange(0, -1)\n w.deleteTreeNodeRange(0, -1)\n w.deleteBitfieldPageRange(0, -1)\n w.deleteHead()\n\n await w.flush()\n\n await commitCoreMigration(auth, core, version)\n if (gc) await runGC()\n return // no data\n }\n\n const treeData = new TreeSlicer()\n\n let treeIndex = 0\n\n if (await exists(files.tree)) {\n for await (const data of fs.createReadStream(files.tree)) {\n treeData.push(data)\n\n let write = null\n\n while (true) {\n const skip = treeData.skip()\n treeIndex += skip\n\n const buf = treeData.take()\n if (buf === null) break\n\n const index = treeIndex++\n if (b4a.equals(buf, EMPTY_NODE)) continue\n\n if (write === null) write = core.write()\n write.putTreeNode(decodeTreeNode(index, buf))\n }\n\n if (write !== null) await write.flush()\n }\n }\n\n const buf = []\n if (await exists(files.bitfield)) {\n for await (const data of fs.createReadStream(files.bitfield)) {\n buf.push(data)\n }\n }\n\n let bitfield = b4a.concat(buf)\n if (bitfield.byteLength & 4095) bitfield = b4a.concat([bitfield, b4a.alloc(4096 - (bitfield.byteLength & 4095))])\n\n const pages = new Map()\n const headerBits = new Map()\n\n const roots = await getRootsFromStorage(core, head.length)\n\n for (const e of oplog.entries) {\n if (!e.bitfield) continue\n\n for (let i = 0; i < e.bitfield.length; i++) {\n headerBits.set(i + e.bitfield.start, !e.bitfield.drop)\n }\n }\n\n let batch = []\n\n const cache = new Map()\n const blocks = new BlockSlicer(files.data)\n\n for (const index of allBits(bitfield)) {\n if (headerBits.get(index) === false) continue\n if (index >= head.length) continue\n\n setBitInPage(index)\n\n batch.push(index)\n if (batch.length < 1024) continue\n\n await writeBlocksBatch()\n continue\n }\n\n if (batch.length) await writeBlocksBatch()\n\n await blocks.close()\n\n const w = core.write()\n\n for (const [index, bit] of headerBits) {\n if (!bit) continue\n if (index >= head.length) continue\n\n setBitInPage(index)\n\n const blk = await getBlockFromFile(files.data, core, index, roots, cache)\n w.putBlock(index, blk)\n }\n\n for (const [index, page] of pages) {\n w.putBitfieldPage(index, b4a.from(page.buffer, page.byteOffset, page.byteLength))\n }\n\n await w.flush()\n\n let contiguousLength = 0\n for await (const data of core.createBlockStream()) {\n if (data.index === contiguousLength) contiguousLength++\n else break\n }\n\n if (contiguousLength) {\n const w = core.write()\n w.setHints({ contiguousLength })\n await w.flush()\n }\n\n await commitCoreMigration(auth, core, version)\n\n if (gc) await runGC()\n\n async function runGC () {\n await rm(files.path)\n await rmdir(path.join(files.path, '..'))\n await rmdir(path.join(files.path, '../..'))\n await rmdir(path.join(core.store.path, 'cores'))\n }\n\n function setBitInPage (index) {\n const n = index & 32767\n const p = (index - n) / 32768\n\n let page = pages.get(p)\n\n if (!page) {\n page = new Uint32Array(1024)\n pages.set(p, page)\n }\n\n const o = n & 31\n const b = (n - o) / 32\n const v = 1 << o\n\n page[b] |= v\n }\n\n async function writeBlocksBatch () {\n const read = core.read()\n const promises = []\n for (const index of batch) promises.push(getByteRangeFromStorage(read, 2 * index, roots, cache))\n read.tryFlush()\n\n const r = await Promise.all(promises)\n const tx = core.write()\n\n for (let i = 0; i < r.length; i++) {\n const index = batch[i]\n const [offset, size] = r[i]\n\n const blk = await blocks.take(offset, size)\n tx.putBlock(index, blk)\n }\n\n batch = []\n if (cache.size > 16384) cache.clear()\n\n await tx.flush()\n }\n}\n\nasync function commitCoreMigration (auth, core, version) {\n const view = new View()\n const rx = new CorestoreRX(core.db, view)\n\n const storeCorePromise = rx.getCore(auth.discoveryKey)\n rx.tryFlush()\n\n const storeCore = await storeCorePromise\n\n storeCore.version = version\n\n const tx = new CorestoreTX(view)\n\n tx.putCore(auth.discoveryKey, storeCore)\n tx.apply()\n\n await View.flush(view.changes, core.db)\n}\n\nasync function getBlockFromFile (file, core, index, roots, cache) {\n const rx = core.read()\n const promise = getByteRangeFromStorage(rx, 2 * index, roots, cache)\n rx.tryFlush()\n const [offset, size] = await promise\n\n return new Promise(function (resolve) {\n readAll(file, size, offset, function (err, buf) {\n if (err) return resolve(null)\n resolve(buf)\n })\n })\n}\n\nfunction getFiles (dir) {\n return {\n path: dir,\n oplog: path.join(dir, 'oplog'),\n data: path.join(dir, 'data'),\n tree: path.join(dir, 'tree'),\n bitfield: path.join(dir, 'bitfield')\n }\n}\n\nasync function getRootsFromStorage (core, length) {\n const all = []\n const rx = core.read()\n for (const index of flat.fullRoots(2 * length)) {\n all.push(rx.getTreeNode(index))\n }\n rx.tryFlush()\n return Promise.all(all)\n}\n\nasync function getRoots (length, getTreeNode) {\n const all = []\n for (const index of flat.fullRoots(2 * length)) {\n all.push(await getTreeNode(index))\n }\n return all\n}\n\nfunction getCached (read, cache, index) {\n if (cache.has(index)) return cache.get(index)\n const p = read.getTreeNode(index)\n cache.set(index, p)\n return p\n}\n\nasync function getByteRangeFromStorage (read, index, roots, cache) {\n const promises = [getCached(read, cache, index), getByteOffsetFromStorage(read, index, roots, cache)]\n const [node, offset] = await Promise.all(promises)\n if (!node) throw new Error('Node not found during migration: ' + index)\n return [offset, node.size]\n}\n\nasync function getByteOffsetFromStorage (rx, index, roots, cache) {\n if (index === 0) return 0\n if ((index & 1) === 1) index = flat.leftSpan(index)\n\n let head = 0\n let offset = 0\n\n for (const node of roots) { // all async ticks happen once we find the root so safe\n head += 2 * ((node.index - head) + 1)\n\n if (index >= head) {\n offset += node.size\n continue\n }\n\n const ite = flat.iterator(node.index)\n const promises = []\n\n while (ite.index !== index) {\n if (index < ite.index) {\n ite.leftChild()\n } else {\n promises.push(getCached(rx, cache, ite.leftChild()))\n ite.sibling()\n }\n }\n\n const nodes = await Promise.all(promises)\n for (const node of nodes) offset += node.size\n\n return offset\n }\n\n throw new Error('Failed to find offset')\n}\n\nfunction decodeTreeNode (index, buf) {\n return { index, size: c.decode(c.uint64, buf), hash: buf.subarray(8) }\n}\n\nasync function getTreeNodeFromFile (file, index) {\n return new Promise(function (resolve) {\n readAll(file, 40, index * 40, function (err, buf) {\n if (err) return resolve(null)\n resolve(decodeTreeNode(index, buf))\n })\n })\n}\n\nfunction readAll (filename, length, pos, cb) {\n const buf = b4a.alloc(length)\n\n fs.open(filename, 'r', function (err, fd) {\n if (err) return cb(err)\n\n let offset = 0\n\n fs.read(fd, buf, offset, buf.byteLength, pos, function loop (err, read) {\n if (err) return done(err)\n if (read === 0) return done(new Error('Partial read'))\n offset += read\n if (offset === buf.byteLength) return done(null, buf)\n fs.read(fd, offset, buf.byteLength - offset, buf, pos + offset, loop)\n })\n\n function done (err, value) {\n fs.close(fd, () => cb(err, value))\n }\n })\n}\n\nasync function readdir (dir) {\n try {\n return await fs.promises.readdir(dir)\n } catch {\n return []\n }\n}\n\nasync function exists (file) {\n try {\n await fs.promises.stat(file)\n return true\n } catch {\n return false\n }\n}\n\nasync function readFile (file) {\n try {\n return await fs.promises.readFile(file)\n } catch {\n return null\n }\n}\n\nasync function rm (dir) {\n try {\n await fs.promises.rm(dir, { recursive: true })\n } catch {}\n}\n\nasync function rmdir (dir) {\n try {\n await fs.promises.rmdir(dir)\n } catch {}\n}\n\nfunction * allBits (buffer) {\n for (let i = 0; i < buffer.byteLength; i += EMPTY_PAGE.byteLength) {\n const page = buffer.subarray(i, i + EMPTY_NODE.byteLength)\n if (b4a.equals(page, EMPTY_PAGE)) continue\n\n const view = new Uint32Array(page.buffer, page.byteOffset, EMPTY_PAGE.byteLength / 4)\n\n for (let j = 0; j < view.length; j++) {\n const n = view[j]\n if (n === 0) continue\n\n for (let k = 0; k < 32; k++) {\n const m = 1 << k\n if (n & m) yield i * 8 + j * 32 + k\n }\n }\n }\n}\n\nfunction readOplog (oplog) {\n return new Promise(function (resolve) {\n fs.readFile(oplog, function (err, buffer) {\n if (err) return resolve(null)\n\n const state = { start: 0, end: buffer.byteLength, buffer }\n const headers = [1, 0]\n\n const h1 = decodeOplogHeader(state)\n state.start = 4096\n\n const h2 = decodeOplogHeader(state)\n state.start = 4096 * 2\n\n if (!h1 && !h2) return resolve(null)\n\n if (h1 && !h2) {\n headers[0] = h1.header\n headers[1] = h1.header\n } else if (!h1 && h2) {\n headers[0] = (h2.header + 1) & 1\n headers[1] = h2.header\n } else {\n headers[0] = h1.header\n headers[1] = h2.header\n }\n\n const header = (headers[0] + headers[1]) & 1\n const result = { path: path.dirname(oplog), header: null, entries: [] }\n const decoded = []\n\n result.header = header ? h2.message : h1.message\n\n if (result.header.external) {\n fs.readFile(path.join(oplog, '../header'), function (err, buffer) {\n if (err) return resolve(null)\n const start = result.header.external.start\n const end = start + result.header.external.length\n result.header = m.oplog.header.decode({ buffer, start, end })\n finish()\n })\n return\n }\n\n finish()\n\n function finish () {\n while (true) {\n const entry = decodeOplogEntry(state)\n if (!entry) break\n if (entry.header !== header) break\n\n decoded.push(entry)\n }\n\n while (decoded.length > 0 && decoded[decoded.length - 1].partial) decoded.pop()\n\n for (const e of decoded) {\n result.entries.push(e.message)\n }\n\n resolve(result)\n }\n })\n })\n}\n\nfunction noop () {}\n// needed here for compat, copied from old hypercore, do not change this\n\nconst c = require('compact-encoding')\nconst b4a = require('b4a')\n\nconst EMPTY = b4a.alloc(0)\nconst DEFAULT_NAMESPACE = b4a.from('4144eea531e483d54e0c14f4ca68e0644f355343ff6fcb0f005200e12cd747cb', 'hex')\n\nconst hashes = {\n preencode (state, m) {\n state.end++ // small uint\n },\n encode (state, m) {\n if (m === 'blake2b') {\n c.uint.encode(state, 0)\n return\n }\n\n throw new Error('Unknown hash: ' + m)\n },\n decode (state) {\n const n = c.uint.decode(state)\n if (n === 0) return 'blake2b'\n throw new Error('Unknown hash id: ' + n)\n }\n}\n\nconst signatures = {\n preencode (state, m) {\n state.end++ // small uint\n },\n encode (state, m) {\n if (m === 'ed25519') {\n c.uint.encode(state, 0)\n return\n }\n\n throw new Error('Unknown signature: ' + m)\n },\n decode (state) {\n const n = c.uint.decode(state)\n if (n === 0) return 'ed25519'\n throw new Error('Unknown signature id: ' + n)\n }\n}\n\nconst signer = {\n preencode (state, m) {\n signatures.preencode(state, m.signature)\n c.fixed32.preencode(state, m.namespace)\n c.fixed32.preencode(state, m.publicKey)\n },\n encode (state, m) {\n signatures.encode(state, m.signature)\n c.fixed32.encode(state, m.namespace)\n c.fixed32.encode(state, m.publicKey)\n },\n decode (state) {\n return {\n signature: signatures.decode(state),\n namespace: c.fixed32.decode(state),\n publicKey: c.fixed32.decode(state)\n }\n }\n}\n\nconst signerArray = c.array(signer)\n\nconst prologue = {\n preencode (state, p) {\n c.fixed32.preencode(state, p.hash)\n c.uint.preencode(state, p.length)\n },\n encode (state, p) {\n c.fixed32.encode(state, p.hash)\n c.uint.encode(state, p.length)\n },\n decode (state) {\n return {\n hash: c.fixed32.decode(state),\n length: c.uint.decode(state)\n }\n }\n}\n\nconst manifestv0 = {\n preencode (state, m) {\n hashes.preencode(state, m.hash)\n state.end++ // type\n\n if (m.prologue && m.signers.length === 0) {\n c.fixed32.preencode(state, m.prologue.hash)\n return\n }\n\n if (m.quorum === 1 && m.signers.length === 1 && !m.allowPatch) {\n signer.preencode(state, m.signers[0])\n } else {\n state.end++ // flags\n c.uint.preencode(state, m.quorum)\n signerArray.preencode(state, m.signers)\n }\n },\n encode (state, m) {\n hashes.encode(state, m.hash)\n\n if (m.prologue && m.signers.length === 0) {\n c.uint.encode(state, 0)\n c.fixed32.encode(state, m.prologue.hash)\n return\n }\n\n if (m.quorum === 1 && m.signers.length === 1 && !m.allowPatch) {\n c.uint.encode(state, 1)\n signer.encode(state, m.signers[0])\n } else {\n c.uint.encode(state, 2)\n c.uint.encode(state, m.allowPatch ? 1 : 0)\n c.uint.encode(state, m.quorum)\n signerArray.encode(state, m.signers)\n }\n },\n decode (state) {\n const hash = hashes.decode(state)\n const type = c.uint.decode(state)\n\n if (type > 2) throw new Error('Unknown type: ' + type)\n\n if (type === 0) {\n return {\n version: 0,\n hash,\n allowPatch: false,\n quorum: 0,\n signers: [],\n prologue: {\n hash: c.fixed32.decode(state),\n length: 0\n }\n }\n }\n\n if (type === 1) {\n return {\n version: 0,\n hash,\n allowPatch: false,\n quorum: 1,\n signers: [signer.decode(state)],\n prologue: null\n }\n }\n\n const flags = c.uint.decode(state)\n\n return {\n version: 0,\n hash,\n allowPatch: (flags & 1) !== 0,\n quorum: c.uint.decode(state),\n signers: signerArray.decode(state),\n prologue: null\n }\n }\n}\n\nconst manifest = exports.manifest = {\n preencode (state, m) {\n state.end++ // version\n if (m.version === 0) return manifestv0.preencode(state, m)\n\n state.end++ // flags\n hashes.preencode(state, m.hash)\n\n c.uint.preencode(state, m.quorum)\n signerArray.preencode(state, m.signers)\n if (m.prologue) prologue.preencode(state, m.prologue)\n },\n encode (state, m) {\n c.uint.encode(state, m.version)\n if (m.version === 0) return manifestv0.encode(state, m)\n\n c.uint.encode(state, (m.allowPatch ? 1 : 0) | (m.prologue ? 2 : 0) | (m.unencrypted ? 4 : 0))\n hashes.encode(state, m.hash)\n\n c.uint.encode(state, m.quorum)\n signerArray.encode(state, m.signers)\n if (m.prologue) prologue.encode(state, m.prologue)\n },\n decode (state) {\n const v = c.uint.decode(state)\n if (v === 0) return manifestv0.decode(state)\n if (v !== 1) throw new Error('Unknown version: ' + v)\n\n const flags = c.uint.decode(state)\n const hash = hashes.decode(state)\n const quorum = c.uint.decode(state)\n const signers = signerArray.decode(state)\n const unencrypted = (flags & 4) !== 0\n\n return {\n version: 1,\n hash,\n allowPatch: (flags & 1) !== 0,\n quorum,\n signers,\n prologue: (flags & 2) === 0 ? null : prologue.decode(state),\n unencrypted\n }\n }\n}\n\nconst node = {\n preencode (state, n) {\n c.uint.preencode(state, n.index)\n c.uint.preencode(state, n.size)\n c.fixed32.preencode(state, n.hash)\n },\n encode (state, n) {\n c.uint.encode(state, n.index)\n c.uint.encode(state, n.size)\n c.fixed32.encode(state, n.hash)\n },\n decode (state) {\n return {\n index: c.uint.decode(state),\n size: c.uint.decode(state),\n hash: c.fixed32.decode(state)\n }\n }\n}\n\nconst nodeArray = c.array(node)\n\nconst wire = exports.wire = {}\n\nwire.handshake = {\n preencode (state, m) {\n c.uint.preencode(state, 1)\n c.fixed32.preencode(state, m.capability)\n },\n encode (state, m) {\n c.uint.encode(state, m.seeks ? 1 : 0)\n c.fixed32.encode(state, m.capability)\n },\n decode (state) {\n const flags = c.uint.decode(state)\n return {\n seeks: (flags & 1) !== 0,\n capability: c.fixed32.decode(state)\n }\n }\n}\n\nconst requestBlock = {\n preencode (state, b) {\n c.uint.preencode(state, b.index)\n c.uint.preencode(state, b.nodes)\n },\n encode (state, b) {\n c.uint.encode(state, b.index)\n c.uint.encode(state, b.nodes)\n },\n decode (state) {\n return {\n index: c.uint.decode(state),\n nodes: c.uint.decode(state)\n }\n }\n}\n\nconst requestSeek = {\n preencode (state, s) {\n c.uint.preencode(state, s.bytes)\n c.uint.preencode(state, s.padding)\n },\n encode (state, s) {\n c.uint.encode(state, s.bytes)\n c.uint.encode(state, s.padding)\n },\n decode (state) {\n return {\n bytes: c.uint.decode(state),\n padding: c.uint.decode(state)\n }\n }\n}\n\nconst requestUpgrade = {\n preencode (state, u) {\n c.uint.preencode(state, u.start)\n c.uint.preencode(state, u.length)\n },\n encode (state, u) {\n c.uint.encode(state, u.start)\n c.uint.encode(state, u.length)\n },\n decode (state) {\n return {\n start: c.uint.decode(state),\n length: c.uint.decode(state)\n }\n }\n}\n\nwire.request = {\n preencode (state, m) {\n state.end++ // flags\n c.uint.preencode(state, m.id)\n c.uint.preencode(state, m.fork)\n\n if (m.block) requestBlock.preencode(state, m.block)\n if (m.hash) requestBlock.preencode(state, m.hash)\n if (m.seek) requestSeek.preencode(state, m.seek)\n if (m.upgrade) requestUpgrade.preencode(state, m.upgrade)\n if (m.priority) c.uint.preencode(state, m.priority)\n },\n encode (state, m) {\n const flags = (m.block ? 1 : 0) | (m.hash ? 2 : 0) | (m.seek ? 4 : 0) | (m.upgrade ? 8 : 0) | (m.manifest ? 16 : 0) | (m.priority ? 32 : 0)\n\n c.uint.encode(state, flags)\n c.uint.encode(state, m.id)\n c.uint.encode(state, m.fork)\n\n if (m.block) requestBlock.encode(state, m.block)\n if (m.hash) requestBlock.encode(state, m.hash)\n if (m.seek) requestSeek.encode(state, m.seek)\n if (m.upgrade) requestUpgrade.encode(state, m.upgrade)\n if (m.priority) c.uint.encode(state, m.priority)\n },\n decode (state) {\n const flags = c.uint.decode(state)\n\n return {\n id: c.uint.decode(state),\n fork: c.uint.decode(state),\n block: flags & 1 ? requestBlock.decode(state) : null,\n hash: flags & 2 ? requestBlock.decode(state) : null,\n seek: flags & 4 ? requestSeek.decode(state) : null,\n upgrade: flags & 8 ? requestUpgrade.decode(state) : null,\n manifest: (flags & 16) !== 0,\n priority: flags & 32 ? c.uint.decode(state) : 0\n }\n }\n}\n\nwire.cancel = {\n preencode (state, m) {\n c.uint.preencode(state, m.request)\n },\n encode (state, m) {\n c.uint.encode(state, m.request)\n },\n decode (state, m) {\n return {\n request: c.uint.decode(state)\n }\n }\n}\n\nconst dataUpgrade = {\n preencode (state, u) {\n c.uint.preencode(state, u.start)\n c.uint.preencode(state, u.length)\n nodeArray.preencode(state, u.nodes)\n nodeArray.preencode(state, u.additionalNodes)\n c.optionalBuffer.preencode(state, u.signature)\n },\n encode (state, u) {\n c.uint.encode(state, u.start)\n c.uint.encode(state, u.length)\n nodeArray.encode(state, u.nodes)\n nodeArray.encode(state, u.additionalNodes)\n c.optionalBuffer.encode(state, u.signature)\n },\n decode (state) {\n return {\n start: c.uint.decode(state),\n length: c.uint.decode(state),\n nodes: nodeArray.decode(state),\n additionalNodes: nodeArray.decode(state),\n signature: c.optionalBuffer.decode(state)\n }\n }\n}\n\nconst dataSeek = {\n preencode (state, s) {\n c.uint.preencode(state, s.bytes)\n nodeArray.preencode(state, s.nodes)\n },\n encode (state, s) {\n c.uint.encode(state, s.bytes)\n nodeArray.encode(state, s.nodes)\n },\n decode (state) {\n return {\n bytes: c.uint.decode(state),\n nodes: nodeArray.decode(state)\n }\n }\n}\n\nconst dataBlock = {\n preencode (state, b) {\n c.uint.preencode(state, b.index)\n c.optionalBuffer.preencode(state, b.value)\n nodeArray.preencode(state, b.nodes)\n },\n encode (state, b) {\n c.uint.encode(state, b.index)\n c.optionalBuffer.encode(state, b.value)\n nodeArray.encode(state, b.nodes)\n },\n decode (state) {\n return {\n index: c.uint.decode(state),\n value: c.optionalBuffer.decode(state) || EMPTY,\n nodes: nodeArray.decode(state)\n }\n }\n}\n\nconst dataHash = {\n preencode (state, b) {\n c.uint.preencode(state, b.index)\n nodeArray.preencode(state, b.nodes)\n },\n encode (state, b) {\n c.uint.encode(state, b.index)\n nodeArray.encode(state, b.nodes)\n },\n decode (state) {\n return {\n index: c.uint.decode(state),\n nodes: nodeArray.decode(state)\n }\n }\n}\n\nwire.data = {\n preencode (state, m) {\n state.end++ // flags\n c.uint.preencode(state, m.request)\n c.uint.preencode(state, m.fork)\n\n if (m.block) dataBlock.preencode(state, m.block)\n if (m.hash) dataHash.preencode(state, m.hash)\n if (m.seek) dataSeek.preencode(state, m.seek)\n if (m.upgrade) dataUpgrade.preencode(state, m.upgrade)\n if (m.manifest) manifest.preencode(state, m.manifest)\n },\n encode (state, m) {\n const flags = (m.block ? 1 : 0) | (m.hash ? 2 : 0) | (m.seek ? 4 : 0) | (m.upgrade ? 8 : 0) | (m.manifest ? 16 : 0)\n\n c.uint.encode(state, flags)\n c.uint.encode(state, m.request)\n c.uint.encode(state, m.fork)\n\n if (m.block) dataBlock.encode(state, m.block)\n if (m.hash) dataHash.encode(state, m.hash)\n if (m.seek) dataSeek.encode(state, m.seek)\n if (m.upgrade) dataUpgrade.encode(state, m.upgrade)\n if (m.manifest) manifest.encode(state, m.manifest)\n },\n decode (state) {\n const flags = c.uint.decode(state)\n\n return {\n request: c.uint.decode(state),\n fork: c.uint.decode(state),\n block: flags & 1 ? dataBlock.decode(state) : null,\n hash: flags & 2 ? dataHash.decode(state) : null,\n seek: flags & 4 ? dataSeek.decode(state) : null,\n upgrade: flags & 8 ? dataUpgrade.decode(state) : null,\n manifest: flags & 16 ? manifest.decode(state) : null\n }\n }\n}\n\nwire.noData = {\n preencode (state, m) {\n c.uint.preencode(state, m.request)\n },\n encode (state, m) {\n c.uint.encode(state, m.request)\n },\n decode (state, m) {\n return {\n request: c.uint.decode(state)\n }\n }\n}\n\nwire.want = {\n preencode (state, m) {\n c.uint.preencode(state, m.start)\n c.uint.preencode(state, m.length)\n },\n encode (state, m) {\n c.uint.encode(state, m.start)\n c.uint.encode(state, m.length)\n },\n decode (state) {\n return {\n start: c.uint.decode(state),\n length: c.uint.decode(state)\n }\n }\n}\n\nwire.unwant = {\n preencode (state, m) {\n c.uint.preencode(state, m.start)\n c.uint.preencode(state, m.length)\n },\n encode (state, m) {\n c.uint.encode(state, m.start)\n c.uint.encode(state, m.length)\n },\n decode (state, m) {\n return {\n start: c.uint.decode(state),\n length: c.uint.decode(state)\n }\n }\n}\n\nwire.range = {\n preencode (state, m) {\n state.end++ // flags\n c.uint.preencode(state, m.start)\n if (m.length !== 1) c.uint.preencode(state, m.length)\n },\n encode (state, m) {\n c.uint.encode(state, (m.drop ? 1 : 0) | (m.length === 1 ? 2 : 0))\n c.uint.encode(state, m.start)\n if (m.length !== 1) c.uint.encode(state, m.length)\n },\n decode (state) {\n const flags = c.uint.decode(state)\n\n return {\n drop: (flags & 1) !== 0,\n start: c.uint.decode(state),\n length: (flags & 2) !== 0 ? 1 : c.uint.decode(state)\n }\n }\n}\n\nwire.bitfield = {\n preencode (state, m) {\n c.uint.preencode(state, m.start)\n c.uint32array.preencode(state, m.bitfield)\n },\n encode (state, m) {\n c.uint.encode(state, m.start)\n c.uint32array.encode(state, m.bitfield)\n },\n decode (state, m) {\n return {\n start: c.uint.decode(state),\n bitfield: c.uint32array.decode(state)\n }\n }\n}\n\nwire.sync = {\n preencode (state, m) {\n state.end++ // flags\n c.uint.preencode(state, m.fork)\n c.uint.preencode(state, m.length)\n c.uint.preencode(state, m.remoteLength)\n },\n encode (state, m) {\n c.uint.encode(state, (m.canUpgrade ? 1 : 0) | (m.uploading ? 2 : 0) | (m.downloading ? 4 : 0) | (m.hasManifest ? 8 : 0))\n c.uint.encode(state, m.fork)\n c.uint.encode(state, m.length)\n c.uint.encode(state, m.remoteLength)\n },\n decode (state) {\n const flags = c.uint.decode(state)\n\n return {\n fork: c.uint.decode(state),\n length: c.uint.decode(state),\n remoteLength: c.uint.decode(state),\n canUpgrade: (flags & 1) !== 0,\n uploading: (flags & 2) !== 0,\n downloading: (flags & 4) !== 0,\n hasManifest: (flags & 8) !== 0\n }\n }\n}\n\nwire.reorgHint = {\n preencode (state, m) {\n c.uint.preencode(state, m.from)\n c.uint.preencode(state, m.to)\n c.uint.preencode(state, m.ancestors)\n },\n encode (state, m) {\n c.uint.encode(state, m.from)\n c.uint.encode(state, m.to)\n c.uint.encode(state, m.ancestors)\n },\n decode (state) {\n return {\n from: c.uint.encode(state),\n to: c.uint.encode(state),\n ancestors: c.uint.encode(state)\n }\n }\n}\n\nwire.extension = {\n preencode (state, m) {\n c.string.preencode(state, m.name)\n c.raw.preencode(state, m.message)\n },\n encode (state, m) {\n c.string.encode(state, m.name)\n c.raw.encode(state, m.message)\n },\n decode (state) {\n return {\n name: c.string.decode(state),\n message: c.raw.decode(state)\n }\n }\n}\n\nconst keyValue = {\n preencode (state, p) {\n c.string.preencode(state, p.key)\n c.optionalBuffer.preencode(state, p.value)\n },\n encode (state, p) {\n c.string.encode(state, p.key)\n c.optionalBuffer.encode(state, p.value)\n },\n decode (state) {\n return {\n key: c.string.decode(state),\n value: c.optionalBuffer.decode(state)\n }\n }\n}\n\nconst treeUpgrade = {\n preencode (state, u) {\n c.uint.preencode(state, u.fork)\n c.uint.preencode(state, u.ancestors)\n c.uint.preencode(state, u.length)\n c.optionalBuffer.preencode(state, u.signature)\n },\n encode (state, u) {\n c.uint.encode(state, u.fork)\n c.uint.encode(state, u.ancestors)\n c.uint.encode(state, u.length)\n c.optionalBuffer.encode(state, u.signature)\n },\n decode (state) {\n return {\n fork: c.uint.decode(state),\n ancestors: c.uint.decode(state),\n length: c.uint.decode(state),\n signature: c.optionalBuffer.decode(state)\n }\n }\n}\n\nconst bitfieldUpdate = { // TODO: can maybe be folded into a HAVE later on with the most recent spec\n preencode (state, b) {\n state.end++ // flags\n c.uint.preencode(state, b.start)\n c.uint.preencode(state, b.length)\n },\n encode (state, b) {\n state.buffer[state.start++] = b.drop ? 1 : 0\n c.uint.encode(state, b.start)\n c.uint.encode(state, b.length)\n },\n decode (state) {\n const flags = c.uint.decode(state)\n return {\n drop: (flags & 1) !== 0,\n start: c.uint.decode(state),\n length: c.uint.decode(state)\n }\n }\n}\n\nconst oplog = exports.oplog = {}\n\noplog.entry = {\n preencode (state, m) {\n state.end++ // flags\n if (m.userData) keyValue.preencode(state, m.userData)\n if (m.treeNodes) nodeArray.preencode(state, m.treeNodes)\n if (m.treeUpgrade) treeUpgrade.preencode(state, m.treeUpgrade)\n if (m.bitfield) bitfieldUpdate.preencode(state, m.bitfield)\n },\n encode (state, m) {\n const s = state.start++\n let flags = 0\n\n if (m.userData) {\n flags |= 1\n keyValue.encode(state, m.userData)\n }\n if (m.treeNodes) {\n flags |= 2\n nodeArray.encode(state, m.treeNodes)\n }\n if (m.treeUpgrade) {\n flags |= 4\n treeUpgrade.encode(state, m.treeUpgrade)\n }\n if (m.bitfield) {\n flags |= 8\n bitfieldUpdate.encode(state, m.bitfield)\n }\n\n state.buffer[s] = flags\n },\n decode (state) {\n const flags = c.uint.decode(state)\n return {\n userData: (flags & 1) !== 0 ? keyValue.decode(state) : null,\n treeNodes: (flags & 2) !== 0 ? nodeArray.decode(state) : null,\n treeUpgrade: (flags & 4) !== 0 ? treeUpgrade.decode(state) : null,\n bitfield: (flags & 8) !== 0 ? bitfieldUpdate.decode(state) : null\n }\n }\n}\n\nconst keyPair = {\n preencode (state, kp) {\n c.optionalBuffer.preencode(state, kp.publicKey)\n c.optionalBuffer.preencode(state, kp.secretKey)\n },\n encode (state, kp) {\n c.optionalBuffer.encode(state, kp.publicKey)\n c.optionalBuffer.encode(state, kp.secretKey)\n },\n decode (state) {\n return {\n publicKey: c.optionalBuffer.decode(state),\n secretKey: c.optionalBuffer.decode(state)\n }\n }\n}\n\nconst reorgHint = {\n preencode (state, r) {\n c.uint.preencode(state, r.from)\n c.uint.preencode(state, r.to)\n c.uint.preencode(state, r.ancestors)\n },\n encode (state, r) {\n c.uint.encode(state, r.from)\n c.uint.encode(state, r.to)\n c.uint.encode(state, r.ancestors)\n },\n decode (state) {\n return {\n from: c.uint.decode(state),\n to: c.uint.decode(state),\n ancestors: c.uint.decode(state)\n }\n }\n}\n\nconst reorgHintArray = c.array(reorgHint)\n\nconst hints = {\n preencode (state, h) {\n reorgHintArray.preencode(state, h.reorgs)\n c.uint.preencode(state, h.contiguousLength)\n },\n encode (state, h) {\n reorgHintArray.encode(state, h.reorgs)\n c.uint.encode(state, h.contiguousLength)\n },\n decode (state) {\n return {\n reorgs: reorgHintArray.decode(state),\n contiguousLength: state.start < state.end ? c.uint.decode(state) : 0\n }\n }\n}\n\nconst treeHeader = {\n preencode (state, t) {\n c.uint.preencode(state, t.fork)\n c.uint.preencode(state, t.length)\n c.optionalBuffer.preencode(state, t.rootHash)\n c.optionalBuffer.preencode(state, t.signature)\n },\n encode (state, t) {\n c.uint.encode(state, t.fork)\n c.uint.encode(state, t.length)\n c.optionalBuffer.encode(state, t.rootHash)\n c.optionalBuffer.encode(state, t.signature)\n },\n decode (state) {\n return {\n fork: c.uint.decode(state),\n length: c.uint.decode(state),\n rootHash: c.optionalBuffer.decode(state),\n signature: c.optionalBuffer.decode(state)\n }\n }\n}\n\nconst types = {\n preencode (state, t) {\n c.string.preencode(state, t.tree)\n c.string.preencode(state, t.bitfield)\n c.string.preencode(state, t.signer)\n },\n encode (state, t) {\n c.string.encode(state, t.tree)\n c.string.encode(state, t.bitfield)\n c.string.encode(state, t.signer)\n },\n decode (state) {\n return {\n tree: c.string.decode(state),\n bitfield: c.string.decode(state),\n signer: c.string.decode(state)\n }\n }\n}\n\nconst externalHeader = {\n preencode (state, m) {\n c.uint.preencode(state, m.start)\n c.uint.preencode(state, m.length)\n },\n encode (state, m) {\n c.uint.encode(state, m.start)\n c.uint.encode(state, m.length)\n },\n decode (state) {\n return {\n start: c.uint.decode(state),\n length: c.uint.decode(state)\n }\n }\n}\n\nconst keyValueArray = c.array(keyValue)\n\noplog.header = {\n preencode (state, h) {\n state.end += 2 // version + flags\n if (h.external) {\n externalHeader.preencode(state, h.external)\n return\n }\n c.fixed32.preencode(state, h.key)\n if (h.manifest) manifest.preencode(state, h.manifest)\n if (h.keyPair) keyPair.preencode(state, h.keyPair)\n keyValueArray.preencode(state, h.userData)\n treeHeader.preencode(state, h.tree)\n hints.preencode(state, h.hints)\n },\n encode (state, h) {\n c.uint.encode(state, 1)\n if (h.external) {\n c.uint.encode(state, 1) // ONLY set the first big for clarity\n externalHeader.encode(state, h.external)\n return\n }\n c.uint.encode(state, (h.manifest ? 2 : 0) | (h.keyPair ? 4 : 0))\n c.fixed32.encode(state, h.key)\n if (h.manifest) manifest.encode(state, h.manifest)\n if (h.keyPair) keyPair.encode(state, h.keyPair)\n keyValueArray.encode(state, h.userData)\n treeHeader.encode(state, h.tree)\n hints.encode(state, h.hints)\n },\n decode (state) {\n const version = c.uint.decode(state)\n\n if (version > 1) {\n throw new Error('Invalid header version. Expected <= 1, got ' + version)\n }\n\n if (version === 0) {\n const old = {\n types: types.decode(state),\n userData: keyValueArray.decode(state),\n tree: treeHeader.decode(state),\n signer: keyPair.decode(state),\n hints: hints.decode(state)\n }\n\n return {\n external: null,\n key: old.signer.publicKey,\n manifest: {\n version: 0,\n hash: old.types.tree,\n allowPatch: false,\n quorum: 1,\n signers: [{\n signature: old.types.signer,\n namespace: DEFAULT_NAMESPACE,\n publicKey: old.signer.publicKey\n }],\n prologue: null\n },\n keyPair: old.signer.secretKey ? old.signer : null,\n userData: old.userData,\n tree: old.tree,\n hints: old.hints\n }\n }\n\n const flags = c.uint.decode(state)\n\n if (flags & 1) {\n return {\n external: externalHeader.decode(state),\n key: null,\n manifest: null,\n keyPair: null,\n userData: null,\n tree: null,\n hints: null\n }\n }\n\n return {\n external: null,\n key: c.fixed32.decode(state),\n manifest: (flags & 2) !== 0 ? manifest.decode(state) : null,\n keyPair: (flags & 4) !== 0 ? keyPair.decode(state) : null,\n userData: keyValueArray.decode(state),\n tree: treeHeader.decode(state),\n hints: hints.decode(state)\n }\n }\n}\n\nconst uintArray = c.array(c.uint)\n\nconst multisigInput = {\n preencode (state, inp) {\n c.uint.preencode(state, inp.signer)\n c.fixed64.preencode(state, inp.signature)\n c.uint.preencode(state, inp.patch)\n },\n encode (state, inp) {\n c.uint.encode(state, inp.signer)\n c.fixed64.encode(state, inp.signature)\n c.uint.encode(state, inp.patch)\n },\n decode (state) {\n return {\n signer: c.uint.decode(state),\n signature: c.fixed64.decode(state),\n patch: c.uint.decode(state)\n }\n }\n}\n\nconst patchEncodingv0 = {\n preencode (state, n) {\n c.uint.preencode(state, n.start)\n c.uint.preencode(state, n.length)\n uintArray.preencode(state, n.nodes)\n },\n encode (state, n) {\n c.uint.encode(state, n.start)\n c.uint.encode(state, n.length)\n uintArray.encode(state, n.nodes)\n },\n decode (state) {\n return {\n start: c.uint.decode(state),\n length: c.uint.decode(state),\n nodes: uintArray.decode(state)\n }\n }\n}\n\nconst multisigInputv0 = {\n preencode (state, n) {\n state.end++\n c.uint.preencode(state, n.signer)\n c.fixed64.preencode(state, n.signature)\n if (n.patch) patchEncodingv0.preencode(state, n.patch)\n },\n encode (state, n) {\n c.uint.encode(state, n.patch ? 1 : 0)\n c.uint.encode(state, n.signer)\n c.fixed64.encode(state, n.signature)\n if (n.patch) patchEncodingv0.encode(state, n.patch)\n },\n decode (state) {\n const flags = c.uint.decode(state)\n return {\n signer: c.uint.decode(state),\n signature: c.fixed64.decode(state),\n patch: (flags & 1) ? patchEncodingv0.decode(state) : null\n }\n }\n}\n\nconst multisigInputArrayv0 = c.array(multisigInputv0)\nconst multisigInputArray = c.array(multisigInput)\n\nconst compactNode = {\n preencode (state, n) {\n c.uint.preencode(state, n.index)\n c.uint.preencode(state, n.size)\n c.fixed32.preencode(state, n.hash)\n },\n encode (state, n) {\n c.uint.encode(state, n.index)\n c.uint.encode(state, n.size)\n c.fixed32.encode(state, n.hash)\n },\n decode (state) {\n return {\n index: c.uint.decode(state),\n size: c.uint.decode(state),\n hash: c.fixed32.decode(state)\n }\n }\n}\n\nconst compactNodeArray = c.array(compactNode)\n\nexports.multiSignaturev0 = {\n preencode (state, s) {\n multisigInputArrayv0.preencode(state, s.proofs)\n compactNodeArray.preencode(state, s.patch)\n },\n encode (state, s) {\n multisigInputArrayv0.encode(state, s.proofs)\n compactNodeArray.encode(state, s.patch)\n },\n decode (state) {\n return {\n proofs: multisigInputArrayv0.decode(state),\n patch: compactNodeArray.decode(state)\n }\n }\n}\n\nexports.multiSignature = {\n preencode (state, s) {\n multisigInputArray.preencode(state, s.proofs)\n compactNodeArray.preencode(state, s.patch)\n },\n encode (state, s) {\n multisigInputArray.encode(state, s.proofs)\n compactNodeArray.encode(state, s.patch)\n },\n decode (state) {\n return {\n proofs: multisigInputArray.decode(state),\n patch: compactNodeArray.decode(state)\n }\n }\n}\nconst c = require('compact-encoding')\nconst schema = require('../../encoding/spec/hyperschema')\nconst { core: coreKey } = require('../../lib/keys.js')\nconst View = require('../../lib/view.js')\n\nconst CORE_AUTH = schema.getEncoding('@core/auth')\n\nconst { CorestoreRX, CorestoreTX } = require('../../lib/tx.js')\n\nasync function core (core, { version, dryRun = false } = {}) {\n if (dryRun) return // dryRun mode not supported atm\n\n const rx = core.db.read({ autoDestroy: true })\n const storedAuthPromise = rx.get(coreKey.auth(core.core.corePointer))\n\n rx.tryFlush()\n\n const storedAuth = await storedAuthPromise\n if (!storedAuth) return\n\n const auth = c.decode(CORE_AUTH, storedAuth)\n await commitCoreMigration(auth, core, version)\n}\n\nmodule.exports = { core }\n\nasync function commitCoreMigration (auth, core, version) {\n const view = new View()\n const rx = new CorestoreRX(core.db, view)\n\n const storeCorePromise = rx.getCore(auth.discoveryKey)\n rx.tryFlush()\n\n const storeCore = await storeCorePromise\n\n storeCore.version = version\n\n const tx = new CorestoreTX(view)\n tx.putCore(auth.discoveryKey, storeCore)\n tx.apply()\n\n await View.flush(view.changes, core.db)\n}\n{\n \"name\": \"hypercore-storage\",\n \"version\": \"3.2.0\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"lib/*.js\",\n \"encoding/*\",\n \"migrations/0/*.js\",\n \"migrations/1/*.js\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:bare\": \"brittle-bare test/all.js\",\n \"test:generate\": \"brittle -r test/all.js test/*.js\",\n \"test:node\": \"brittle-node test/all.js\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"description\": \"Storage engine for Hypercore\",\n \"imports\": {\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"fs/*\": {\n \"bare\": \"bare-fs/*\",\n \"default\": \"fs/*\"\n },\n \"os\": {\n \"bare\": \"bare-os\",\n \"default\": \"os\"\n },\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n }\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/hypercore-storage.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hypercore-storage/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hypercore-storage#readme\",\n \"dependencies\": {\n \"b4a\": \"^1.6.7\",\n \"bare-path\": \"^3.0.0\",\n \"compact-encoding\": \"^3.1.0\",\n \"device-file\": \"^2.1.2\",\n \"flat-tree\": \"^1.12.1\",\n \"hypercore-crypto\": \"^3.4.2\",\n \"hyperschema\": \"^1.21.0\",\n \"index-encoder\": \"^3.3.2\",\n \"resolve-reject-promise\": \"^1.0.0\",\n \"rocksdb-native\": \"^3.11.0\",\n \"scope-lock\": \"^1.2.4\",\n \"streamx\": \"^2.21.1\",\n \"xache\": \"^1.2.1\"\n },\n \"devDependencies\": {\n \"bare-os\": \"^3.9.1\",\n \"brittle\": \"^3.7.0\",\n \"hypercore-storage-2.9.0\": \"npm:hypercore-storage@^2.9.0\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"test-tmp\": \"^1.3.1\"\n }\n}\nconst { EventEmitter } = require('events')\nconst isOptions = require('is-options')\nconst crypto = require('hypercore-crypto')\nconst CoreStorage = require('hypercore-storage')\nconst c = require('compact-encoding')\nconst b4a = require('b4a')\nconst NoiseSecretStream = require('@hyperswarm/secret-stream')\nconst Protomux = require('protomux')\nconst id = require('hypercore-id-encoding')\nconst safetyCatch = require('safety-catch')\nconst unslab = require('unslab')\nconst flat = require('flat-tree')\nconst assert = require('nanoassert')\n\nconst { SMALL_WANTS } = require('./lib/feature-flags')\nconst { UPDATE_COMPAT } = require('./lib/wants')\nconst MarkBitfield = require('./lib/mark-bitfield')\n\nconst inspect = require('./lib/inspect')\nconst Core = require('./lib/core')\nconst Info = require('./lib/info')\nconst Download = require('./lib/download')\nconst DefaultEncryption = require('./lib/default-encryption')\nconst caps = require('./lib/caps')\nconst Replicator = require('./lib/replicator')\nconst { manifestHash, createManifest } = require('./lib/verifier')\nconst { ReadStream, WriteStream, ByteStream } = require('./lib/streams')\nconst { MerkleTree } = require('./lib/merkle-tree')\nconst { proof, verify } = require('./lib/fully-remote-proof')\nconst {\n ASSERTION,\n BAD_ARGUMENT,\n SESSION_CLOSED,\n SESSION_MOVED,\n SESSION_NOT_WRITABLE,\n SNAPSHOT_NOT_AVAILABLE,\n DECODING_ERROR,\n REQUEST_CANCELLED\n} = require('hypercore-errors')\n\n// Hypercore actually does not have any notion of max/min block sizes\n// but we enforce 15mb to ensure smooth replication (each block is transmitted atomically)\nconst MAX_SUGGESTED_BLOCK_SIZE = 15 * 1024 * 1024\n\nclass Hypercore extends EventEmitter {\n constructor(storage, key, opts) {\n super()\n\n if (isOptions(storage) && !storage.db) {\n opts = storage\n storage = null\n key = opts.key || null\n } else if (isOptions(key)) {\n opts = key\n key = opts.key || null\n }\n\n if (key && typeof key === 'string') key = id.decode(key)\n if (!opts) opts = {}\n\n if (!storage) storage = opts.storage\n\n this.core = null\n this.state = null\n this.encryption = null\n this.extensions = new Map()\n\n this.valueEncoding = null\n this.encodeBatch = null\n this.activeRequests = []\n this.sessions = null\n this.ongc = null\n\n this.keyPair = opts.keyPair || null\n this.readable = true\n this.writable = false\n this.exclusive = false\n this.opened = false\n this.closed = false\n this.weak = !!opts.weak\n this.snapshotted = !!opts.snapshot\n this.onseq = opts.onseq || null\n this.onwait = opts.onwait || null\n this.wait = opts.wait !== false\n this.timeout = opts.timeout || 0\n this.preload = null\n this.closing = null\n this.opening = null\n\n this._readonly = opts.writable === false\n this._preappend = preappend.bind(this)\n this._snapshot = null\n this._findingPeers = 0\n this._active = opts.weak ? !!opts.active : opts.active !== false\n\n this.waits = 0\n\n // Mark & Sweep GC\n this._marking = false\n this._marks = null\n\n this._sessionIndex = -1\n this._stateIndex = -1 // maintained by session state\n this._monitorIndex = -1 // maintained by replication state\n\n this.opening = this._open(storage, key, opts)\n this.opening.catch(safetyCatch)\n\n this.on('newListener', maybeAddMonitor)\n }\n\n [Symbol.for('nodejs.util.inspect.custom')](depth, opts) {\n return inspect(this, depth, opts)\n }\n\n static MAX_SUGGESTED_BLOCK_SIZE = MAX_SUGGESTED_BLOCK_SIZE\n\n static DefaultEncryption = DefaultEncryption\n\n static SMALL_WANTS = SMALL_WANTS\n\n static enable(flag) {\n const enableCompat = (flag & SMALL_WANTS) === 0\n UPDATE_COMPAT(enableCompat)\n }\n\n static setRecoveryPeers(peers) {\n Core.setRecoveryPeers(peers)\n }\n\n static key(manifest, { compat, version, namespace } = {}) {\n if (b4a.isBuffer(manifest)) {\n manifest = { version, signers: [{ publicKey: manifest, namespace }] }\n }\n return compat ? manifest.signers[0].publicKey : manifestHash(createManifest(manifest))\n }\n\n static discoveryKey(key) {\n return crypto.discoveryKey(key)\n }\n\n static blockEncryptionKey(key, encryptionKey) {\n return DefaultEncryption.blockEncryptionKey(key, encryptionKey)\n }\n\n static getProtocolMuxer(stream) {\n return stream.noiseStream.userData\n }\n\n static createCore(storage, opts) {\n return new Core(Hypercore.defaultStorage(storage), { autoClose: false, ...opts })\n }\n\n static createProtocolStream(isInitiator, opts = {}) {\n let outerStream = Protomux.isProtomux(isInitiator)\n ? isInitiator.stream\n : isStream(isInitiator)\n ? isInitiator\n : opts.stream\n\n let noiseStream = null\n\n if (outerStream) {\n noiseStream = outerStream.noiseStream\n } else {\n noiseStream = new NoiseSecretStream(isInitiator, null, opts)\n outerStream = noiseStream.rawStream\n }\n if (!noiseStream) throw BAD_ARGUMENT('Invalid stream', this.discoveryKey)\n\n if (!noiseStream.userData) {\n const protocol = Protomux.from(noiseStream)\n\n if (opts.keepAlive !== false && noiseStream.keepAlive === 0) {\n noiseStream.setKeepAlive(5000)\n }\n noiseStream.userData = protocol\n }\n\n if (opts.ondiscoverykey) {\n const ondiscoverykey = createDiscoveryKeyHandler(opts.ondiscoverykey)\n noiseStream.userData.pair({ protocol: 'hypercore/alpha' }, ondiscoverykey)\n }\n\n return outerStream\n }\n\n static defaultStorage(storage, opts = {}) {\n if (CoreStorage.isCoreStorage(storage)) return storage\n\n const directory = storage\n return new CoreStorage(directory, opts)\n }\n\n static clearRequests(session, err) {\n Replicator.clearRequests(session, err)\n }\n\n static destroyRequests(session, err) {\n if (isRequestsDestroyed(session)) return\n Replicator.clearRequests(session, err)\n session.push(null) // mark as dead\n }\n\n static async treeHashFromStorage(session, length = session.length) {\n const roots = await MerkleTree.getRoots(session.state, length)\n return crypto.tree(roots)\n }\n\n snapshot(opts) {\n return this.session({ ...opts, snapshot: true })\n }\n\n compact() {\n return this.core.compact()\n }\n\n session(opts = {}) {\n if (this.closing) {\n // This makes the closing logic a lot easier. If this turns out to be a problem\n // in practice, open an issue and we'll try to make a solution for it.\n throw SESSION_CLOSED('Cannot make sessions on a closing core', this.discoveryKey)\n }\n if (opts.checkout !== undefined && !opts.name && !opts.atom) {\n throw ASSERTION('Checkouts are only supported on atoms or named sessions', this.discoveryKey)\n }\n\n const wait = opts.wait === false ? false : this.wait\n const writable = opts.writable === undefined ? !this._readonly : opts.writable === true\n const onwait = opts.onwait === undefined ? this.onwait : opts.onwait\n const onseq = opts.onseq === undefined ? this.onseq : opts.onseq\n const timeout = opts.timeout === undefined ? this.timeout : opts.timeout\n const weak = opts.weak === undefined ? this.weak : opts.weak\n const marking = this._marking\n const marks = this._marks\n const Clz = opts.class || Hypercore\n const s = new Clz(null, this.key, {\n ...opts,\n wait,\n onwait,\n onseq,\n timeout,\n writable,\n weak,\n parent: this\n })\n s._marking = marking\n s._marks = marks\n\n return s\n }\n\n async setEncryptionKey(key, opts) {\n if (!this.opened) await this.opening\n const encryption = this._getEncryptionProvider({ key, block: !!(opts && opts.block) })\n return this.setEncryption(encryption)\n }\n\n async setEncryption(encryption) {\n if (!this.opened) await this.opening\n\n if (encryption === null) {\n this.encryption = encryption\n return\n }\n\n if (!isEncryptionProvider(encryption)) {\n throw ASSERTION('Provider does not satisfy HypercoreEncryption interface', this.discoveryKey)\n }\n\n this.encryption = encryption\n }\n\n async setGroup(topic) {\n if (!this.opened) await this.opening\n return this.core.setGroup(topic)\n }\n\n setKeyPair(keyPair) {\n this.keyPair = keyPair\n }\n\n setActive(bool) {\n const active = !!bool\n if (active === this._active || this.closing) return\n this._active = active\n if (!this.opened) return\n this.core.replicator.updateActivity(this._active ? 1 : -1)\n }\n\n async _open(storage, key, opts) {\n const preload = opts.preload || (opts.parent && opts.parent.preload)\n\n if (preload) {\n this.sessions = [] // in case someone looks at it like with peers\n this.preload = preload\n opts = { ...opts, ...(await this.preload) }\n this.preload = null\n }\n\n const parent = opts.parent || null\n const core = opts.core || (parent && parent.core)\n const sessions = opts.sessions || (parent && parent.sessions)\n const ongc = opts.ongc || (parent && parent.ongc)\n\n if (core) this.core = core\n if (ongc) this.ongc = ongc\n if (sessions) this.sessions = sessions\n\n if (this.sessions === null) this.sessions = []\n this._sessionIndex = this.sessions.push(this) - 1\n\n if (this.core === null) initOnce(this, storage, key, opts)\n if (this._monitorIndex === -2) this.core.addMonitor(this)\n\n try {\n await this._openSession(opts)\n } catch (err) {\n if (this.core.autoClose && this.core.hasSession() === false) await this.core.close()\n\n if (this.exclusive) this.core.unlockExclusive()\n\n this.core.removeMonitor(this)\n this._removeSession()\n\n if (this.state !== null) this.state.removeSession(this)\n\n this.closed = true\n this.emit('close')\n throw err\n }\n\n // Setup automatic recovery if in repair mode\n if (this.core._repairMode) {\n const recoverTreeNodeFromPeersBound = this.recoverTreeNodeFromPeers.bind(this)\n this.once('repaired', () => {\n this.off('peer-add', recoverTreeNodeFromPeersBound)\n })\n this.on('peer-add', recoverTreeNodeFromPeersBound)\n }\n\n this.emit('ready')\n\n // if we are a weak session the core might have closed...\n if (this.core.closing) this.close().catch(safetyCatch)\n }\n\n _removeSession() {\n if (this._sessionIndex === -1) return\n const head = this.sessions.pop()\n if (head !== this) this.sessions[(head._sessionIndex = this._sessionIndex)] = head\n this._sessionIndex = -1\n if (this.ongc !== null) this.ongc(this)\n }\n\n async _openSession(opts) {\n if (this.core.opened === false) await this.core.ready()\n\n if (this.keyPair === null) this.keyPair = opts.keyPair || this.core.header.keyPair\n\n const parent = opts.parent || null\n if (parent && parent.encryption) this.encryption = parent.encryption\n\n const e = getEncryptionOption(opts)\n if (!this.encryption) this.encryption = this._getEncryptionProvider(e)\n\n this.writable = this._isWritable()\n\n if (opts.valueEncoding) {\n this.valueEncoding = c.from(opts.valueEncoding)\n }\n if (opts.encodeBatch) {\n this.encodeBatch = opts.encodeBatch\n }\n\n // one session sets for pushOnly for all\n if (opts.pushOnly === true) {\n this.core.replicator.setPushOnly(true)\n }\n\n if (parent) {\n if (parent._stateIndex === -1) await parent.ready()\n if (!this.keyPair) this.keyPair = parent.keyPair\n\n const ps = parent.state\n\n if (ps) {\n const shouldSnapshot = this.snapshotted && !ps.isSnapshot()\n this.state = shouldSnapshot ? await ps.snapshot() : ps.ref()\n }\n\n if (this.snapshotted && this.core && !this._snapshot) {\n this._updateSnapshot()\n }\n }\n\n if (opts.exclusive && opts.writable !== false) {\n this.exclusive = true\n await this.core.lockExclusive()\n }\n\n const parentState = parent ? parent.state : this.core.state\n const checkout = opts.checkout === undefined ? -1 : opts.checkout\n const state = this.state\n\n if (opts.atom) {\n this.state = await parentState.createSession(null, false, opts.atom)\n if (state) state.unref()\n } else if (opts.name) {\n // todo: need to make named sessions safe before ready\n // atm we always copy the state in passCapabilities\n this.state = await parentState.createSession(opts.name, !!opts.overwrite, null)\n if (state) state.unref() // ref'ed above in setup session\n }\n\n if (this.state && checkout !== -1) {\n if (!opts.name && !opts.atom) {\n throw ASSERTION('Checkouts must be named or atomized', this.discoveryKey)\n }\n if (checkout > this.state.length) {\n throw ASSERTION(\n `Invalid checkout ${checkout} for ${opts.name}, length is ${this.state.length}`,\n this.discoveryKey\n )\n }\n if (this.state.prologue && checkout < this.state.prologue.length) {\n throw ASSERTION(\n `Invalid checkout ${checkout} for ${opts.name}, prologue length is ${this.state.prologue.length}`,\n this.discoveryKey\n )\n }\n if (checkout < this.state.length) await this.state.truncate(checkout, this.fork)\n }\n\n if (this.state === null) {\n this.state = this.core.state.ref()\n }\n\n this.writable = this._isWritable()\n\n if (this.snapshotted && this.core) this._updateSnapshot()\n\n this.state.addSession(this)\n // TODO: we need to rework the core reference flow, as the state and session do not always agree now due to moveTo\n this.core = this.state.core // in case it was wrong...\n\n if (opts.userData) {\n const tx = this.state.storage.write()\n for (const [key, value] of Object.entries(opts.userData)) {\n tx.putUserData(key, value)\n }\n await tx.flush()\n }\n\n if (opts.manifest && !this.core.header.manifest) {\n await this.core.setManifest(createManifest(opts.manifest))\n }\n\n this.core.replicator.updateActivity(this._active ? 1 : 0)\n\n this.opened = true\n }\n\n get replicator() {\n return this.core === null ? null : this.core.replicator\n }\n\n _getSnapshot() {\n return {\n length: this.state.length,\n byteLength: this.state.byteLength,\n fork: this.state.fork\n }\n }\n\n _updateSnapshot() {\n const prev = this._snapshot\n const next = (this._snapshot = this._getSnapshot())\n\n if (!prev) return true\n return prev.length !== next.length || prev.fork !== next.fork\n }\n\n _isWritable() {\n if (this._readonly) return false\n if (this.state && !this.state.isDefault()) return true\n return !!(this.keyPair && this.keyPair.secretKey)\n }\n\n close({ error } = {}) {\n if (this.closing) return this.closing\n\n this.closing = this._close(error || null)\n return this.closing\n }\n\n clearRequests(activeRequests, error) {\n if (!activeRequests.length) return\n if (this.core) this.core.replicator.clearRequests(activeRequests, error)\n }\n\n async _close(error) {\n if (this.opened === false) {\n try {\n await this.opening\n } catch (err) {\n if (!this.closed) throw err\n }\n }\n\n if (this.closed === true) return\n\n this.core.removeMonitor(this)\n this.state.removeSession(this)\n this._removeSession()\n\n this.readable = false\n this.writable = false\n this.opened = false\n\n const gc = []\n for (const ext of this.extensions.values()) {\n if (ext.session === this) gc.push(ext)\n }\n for (const ext of gc) ext.destroy()\n\n this.core.replicator.findingPeers -= this._findingPeers\n this.core.replicator.clearRequests(this.activeRequests, error)\n this.core.replicator.updateActivity(this._active ? -1 : 0)\n\n this._findingPeers = 0\n\n this.state.unref()\n\n if (this.exclusive) this.core.unlockExclusive()\n\n if (this.core.hasSession()) {\n // emit \"fake\" close as this is a session\n this.closed = true\n this.emit('close')\n return\n }\n\n if (this.core.autoClose) await this.core.close()\n\n this.closed = true\n this.emit('close')\n }\n\n async commit(session, opts) {\n await this.ready()\n await session.ready()\n\n return this.state.commit(session.state, { keyPair: this.keyPair, ...opts })\n }\n\n replicate(isInitiator, opts = {}) {\n // Only limitation here is that ondiscoverykey doesn't work atm when passing a muxer directly,\n // because it doesn't really make a lot of sense.\n if (Protomux.isProtomux(isInitiator)) return this._attachToMuxer(isInitiator)\n\n // if same stream is passed twice, ignore the 2nd one before we make sessions etc\n if (isStream(isInitiator) && this._isAttached(isInitiator)) return isInitiator\n\n const protocolStream = Hypercore.createProtocolStream(isInitiator, opts)\n const noiseStream = protocolStream.noiseStream\n const protocol = noiseStream.userData\n\n this._attachToMuxer(protocol)\n\n return protocolStream\n }\n\n _isAttached(stream) {\n return (\n stream.userData &&\n this.core &&\n this.core.replicator &&\n this.core.replicator.attached(stream.userData)\n )\n }\n\n _attachToMuxer(mux) {\n if (this.opened) {\n this.core.replicator.attachTo(mux)\n } else {\n this.opening.then(() => this.core.replicator.attachTo(mux), mux.destroy.bind(mux))\n }\n\n return mux\n }\n\n get id() {\n return this.core === null ? null : this.core.id\n }\n\n get key() {\n return this.core === null ? null : this.core.key\n }\n\n get discoveryKey() {\n return this.core === null ? null : this.core.discoveryKey\n }\n\n get manifest() {\n return this.core === null ? null : this.core.manifest\n }\n\n get length() {\n if (this._snapshot) return this._snapshot.length\n return this.opened === false ? 0 : this.state.length\n }\n\n get signedLength() {\n return this.opened === false ? 0 : this.state.signedLength()\n }\n\n /**\n * Deprecated. Use `const { byteLength } = await core.info()`.\n */\n get byteLength() {\n if (this.opened === false) return 0\n if (this._snapshot) return this._snapshot.byteLength\n return this.state.byteLength - this.state.length * this.padding\n }\n\n get remoteContiguousLength() {\n if (this.opened === false) return 0\n return Math.min(this.core.state.length, this.core.header.hints.remoteContiguousLength)\n }\n\n get contiguousLength() {\n if (this.opened === false) return 0\n return Math.min(this.core.state.length, this.core.header.hints.contiguousLength)\n }\n\n get contiguousByteLength() {\n return 0\n }\n\n get fork() {\n if (this.opened === false) return 0\n return this.state.fork\n }\n\n get padding() {\n if (this.encryption && this.key && this.manifest) {\n return this.encryption.padding(this.core, this.length)\n }\n\n return 0\n }\n\n get peers() {\n return this.opened === false ? [] : this.core.replicator.peers\n }\n\n get globalCache() {\n return this.opened === false ? null : this.core.globalCache\n }\n\n get recovering() {\n return this.opened === false ? 0 : this.core.header.hints.recovering\n }\n\n ready() {\n return this.opening\n }\n\n async recover() {\n if (this.opened === false) await this.opening\n return this.state.waitForRecovery()\n }\n\n async setUserData(key, value) {\n if (this.opened === false) await this.opening\n const existing = await this.getUserData(key)\n if (existing && b4a.isBuffer(value) && b4a.equals(existing, value)) return\n await this.state.setUserData(key, value)\n }\n\n async getUserData(key) {\n if (this.opened === false) await this.opening\n const batch = this.state.storage.read()\n const p = batch.getUserData(key)\n batch.tryFlush()\n return p\n }\n\n transferSession(core) {\n // todo: validate we can move\n\n if (this.weak === false) {\n this.core.activeSessions--\n core.activeSessions++\n }\n\n if (this._monitorIndex >= 0) {\n this.core.removeMonitor(this)\n core.addMonitor(this)\n }\n\n const old = this.core\n\n this.core = core\n\n old.replicator.clearRequests(this.activeRequests, SESSION_MOVED())\n\n this.emit('migrate', this.key)\n }\n\n findingPeers() {\n this._findingPeers++\n if (this.core !== null && !this.closing) this.core.replicator.findingPeers++\n\n let once = true\n\n return () => {\n if (this.closing || !once) return\n once = false\n this._findingPeers--\n if (this.core !== null && --this.core.replicator.findingPeers === 0) {\n this.core.replicator.queueUpdateAll()\n }\n }\n }\n\n async info(opts) {\n if (this.opened === false) await this.opening\n\n return Info.from(this, opts)\n }\n\n async update(opts) {\n if (this.opened === false) await this.opening\n if (this.closing !== null) return false\n if (this.snapshotted) return false\n\n if (this.writable && (!opts || opts.force !== true)) return false\n\n const remoteWait = this._shouldWait(opts, this.core.replicator.findingPeers > 0)\n\n let upgraded = false\n\n if (await this.core.replicator.applyPendingReorg()) {\n upgraded = true\n }\n\n if (!upgraded && remoteWait) {\n const activeRequests = (opts && opts.activeRequests) || this.activeRequests\n if (isRequestsDestroyed(activeRequests)) throw REQUEST_CANCELLED()\n\n const req = this.core.replicator.addUpgrade(activeRequests)\n\n try {\n upgraded = await req.promise\n } catch (err) {\n if (isSessionMoved(err)) return this.update(opts)\n throw err\n }\n }\n\n if (!upgraded) return false\n return true\n }\n\n async seek(bytes, opts) {\n if (this.opened === false) await this.opening\n if (!isValidIndex(bytes)) throw ASSERTION('seek is invalid', this.discoveryKey)\n\n const activeRequests = (opts && opts.activeRequests) || this.activeRequests\n if (isRequestsDestroyed(activeRequests)) throw REQUEST_CANCELLED()\n\n if (this.encryption && !this.core.manifest) {\n const req = this.replicator.addUpgrade(activeRequests)\n try {\n await req.promise\n } catch (err) {\n if (isSessionMoved(err)) return this.seek(bytes, opts)\n throw err\n }\n }\n\n const s = MerkleTree.seek(this.state, bytes, this.padding)\n\n const offset = await s.update()\n if (offset) return offset\n\n if (this.closing !== null) {\n throw SESSION_CLOSED('cannot seek on a closed session', this.discoveryKey)\n }\n\n if (!this._shouldWait(opts, this.wait)) return null\n\n if (isRequestsDestroyed(activeRequests)) throw REQUEST_CANCELLED()\n const req = this.core.replicator.addSeek(activeRequests, s)\n\n const timeout = opts && opts.timeout !== undefined ? opts.timeout : this.timeout\n if (timeout) req.context.setTimeout(req, timeout)\n\n try {\n return await req.promise\n } catch (err) {\n if (isSessionMoved(err)) return this.seek(bytes, opts)\n throw err\n }\n }\n\n async has(start, end = start + 1) {\n if (this.opened === false) await this.opening\n if (!isValidIndex(start) || !isValidIndex(end)) {\n throw ASSERTION('has range is invalid', this.discoveryKey)\n }\n\n if (this.state.isDefault()) {\n if (end === start + 1) return this.core.bitfield.get(start)\n\n const i = this.core.bitfield.firstUnset(start)\n return i === -1 || i >= end\n }\n\n if (end === start + 1) {\n const rx = this.state.storage.read()\n const block = rx.getBlock(start)\n rx.tryFlush()\n\n return (await block) !== null\n }\n\n let count = 0\n\n const stream = this.state.storage.createBlockStream({ gte: start, lt: end })\n for await (const block of stream) {\n if (block === null) return false\n count++\n }\n\n return count === end - start\n }\n\n async get(index, opts) {\n if (this.opened === false) await this.opening\n if (!isValidIndex(index)) throw ASSERTION('block index is invalid', this.discoveryKey)\n\n if (this.closing !== null) {\n throw SESSION_CLOSED('cannot get on a closed session', this.discoveryKey)\n }\n\n const encoding =\n (opts && opts.valueEncoding && c.from(opts.valueEncoding)) || this.valueEncoding\n\n if (this.onseq !== null) this.onseq(index, this)\n if (this._marking) await this.markBlock(index)\n\n const req = this._get(index, opts)\n\n let block = await req\n if (!block) return null\n\n if (opts && opts.raw) return block\n\n if (this.encryption && (!opts || opts.decrypt !== false)) {\n // Copy the block as it might be shared with other sessions.\n block = b4a.from(block)\n\n await this.encryption.decrypt(index, block, this.core)\n }\n\n return this._decode(encoding, block, index)\n }\n\n async clear(start, end = start + 1, opts) {\n if (this.opened === false) await this.opening\n if (this.closing !== null) {\n throw SESSION_CLOSED('cannot clear on a closed session', this.discoveryKey)\n }\n\n if (typeof end === 'object') {\n opts = end\n end = start + 1\n }\n\n if (!isValidIndex(start) || !isValidIndex(end)) {\n throw ASSERTION('clear range is invalid', this.discoveryKey)\n }\n\n const cleared = opts && opts.diff ? { blocks: 0 } : null\n\n if (start >= end) return cleared\n if (start >= this.length) return cleared\n\n await this.state.clear(start, end, cleared)\n\n return cleared\n }\n\n async purge() {\n await this._closeAllSessions(null)\n await this.core.purge()\n }\n\n async _get(index, opts) {\n const block = await readBlock(this.state.storage.read(), index)\n\n if (block !== null) return block\n\n if (this.closing !== null) {\n throw SESSION_CLOSED('cannot get on a closed session', this.discoveryKey)\n }\n\n // snapshot should check if core has block\n if (this._snapshot !== null) {\n checkSnapshot(this, index)\n const coreBlock = await readBlock(this.core.state.storage.read(), index)\n\n checkSnapshot(this, index)\n if (coreBlock !== null) return coreBlock\n }\n\n // lets check the bitfield to see if we got it during the above async calls\n // this is the last resort before replication, so always safe.\n if (this.core.bitfield.get(index)) {\n const coreBlock = await readBlock(this.state.storage.read(), index)\n // TODO: this should not be needed, only needed atm in case we are doing a moveTo during this (we should fix)\n if (coreBlock !== null) return coreBlock\n }\n\n if (!this._shouldWait(opts, this.wait)) return null\n\n this.waits++\n if (opts && opts.onwait) opts.onwait(index, this)\n if (this.onwait) this.onwait(index, this)\n\n const activeRequests = (opts && opts.activeRequests) || this.activeRequests\n if (isRequestsDestroyed(activeRequests)) throw REQUEST_CANCELLED()\n\n const force = opts ? opts.force === true : false\n const req = this.core.replicator.addBlock(activeRequests, index, force)\n req.snapshot = index < this.length\n\n const timeout = opts && opts.timeout !== undefined ? opts.timeout : this.timeout\n if (timeout) req.context.setTimeout(req, timeout)\n\n let replicatedBlock = null\n\n try {\n replicatedBlock = await req.promise\n } catch (err) {\n if (isSessionMoved(err)) return this._get(index, opts)\n throw err\n }\n\n if (this._snapshot !== null) checkSnapshot(this, index)\n return maybeUnslab(replicatedBlock)\n }\n\n _shouldWait(opts, defaultValue) {\n if (opts) {\n if (opts.wait === false) return false\n if (opts.wait === true) return true\n }\n return defaultValue\n }\n\n _setupMarks() {\n if (this._marks === null) {\n const storage = this.snapshotted ? this.core.state.storage : this.state.storage\n this._marks = new MarkBitfield(storage)\n }\n }\n\n async markBlock(start, end = start + 1) {\n if (this.opened === false) await this.opening\n\n this._setupMarks()\n\n // TODO support as single rocks batch\n const setPromises = []\n for (let i = start; i < end; i++) {\n setPromises.push(this._marks.set(i, true))\n }\n\n return Promise.all(setPromises)\n }\n\n async clearMarkings() {\n if (this.opened === false) await this.opening\n\n this._setupMarks()\n\n await this._marks.clear()\n this._marks = null\n }\n\n async startMarking() {\n if (this._marking) {\n throw ASSERTION(\"Hypercore cannot be gc'ed when already in gc mode\", this.discoveryKey)\n }\n if (this.state && this.state.name) {\n throw ASSERTION(\"Hypercore cannot be gc'ed when a named session\", this.discoveryKey)\n }\n if (this.state && this.state.storage.atom) {\n throw ASSERTION(\"Hypercore cannot be gc'ed when an atomic session\", this.discoveryKey)\n }\n if (this.opened === false) await this.opening\n await this.clearMarkings()\n\n this._marking = true\n }\n\n async sweep({ batchSize = 1000 } = {}) {\n if (this.opened === false) await this.opening\n\n assert(!this.snapshotted, 'Cannot sweep a snapshot')\n\n // No marks - load from storage\n this._setupMarks()\n\n let clearing = []\n let prevIndex = this.length\n for await (const index of this._marks.createMarkStream({ reverse: true })) {\n if (index + 1 === prevIndex) {\n prevIndex = index\n continue\n }\n clearing.push(this.clear(index + 1, prevIndex))\n if (clearing.length >= batchSize) {\n await Promise.all(clearing)\n clearing = []\n }\n prevIndex = index\n }\n // Clear range from the very start if not marked\n if (prevIndex > 0) clearing.push(this.clear(0, prevIndex))\n await Promise.all(clearing)\n\n this._marking = false\n await this.clearMarkings()\n }\n\n createReadStream(opts) {\n return new ReadStream(this, opts)\n }\n\n createWriteStream() {\n return new WriteStream(this)\n }\n\n createByteStream(opts) {\n return new ByteStream(this, opts)\n }\n\n download(range) {\n return new Download(this, range)\n }\n\n // TODO: get rid of this / deprecate it?\n undownload(range) {\n range.destroy(null)\n }\n\n // TODO: get rid of this / deprecate it?\n cancel(request) {\n // Do nothing for now\n }\n\n async truncate(newLength = 0, opts = {}) {\n if (this.opened === false) await this.opening\n if (this.closing) throw SESSION_CLOSED('Cannot append to a closed session', this.discoveryKey)\n\n const {\n fork = this.state.fork + 1,\n keyPair = this.keyPair,\n signature = null\n } = typeof opts === 'number' ? { fork: opts } : opts\n\n const isDefault = this.state === this.core.state\n const writable = !this._readonly && !!(signature || (keyPair && keyPair.secretKey))\n if (isDefault && writable === false && (newLength > 0 || fork !== this.state.fork)) {\n throw SESSION_NOT_WRITABLE('cannot append to a non-writable core', this.discoveryKey)\n }\n\n await this.state.truncate(newLength, fork, { keyPair, signature })\n\n // TODO: Should propagate from an event triggered by the oplog\n if (this.state === this.core.state) this.core.replicator.updateAll()\n }\n\n async append(blocks, opts = {}) {\n if (this.opened === false) await this.opening\n if (this.closing) throw SESSION_CLOSED('Cannot append to a closed session', this.discoveryKey)\n\n const isDefault = this.state === this.core.state\n const defaultKeyPair = this.state.name === null ? this.keyPair : null\n\n const { keyPair = defaultKeyPair, signature = null, maxLength, postappend = null } = opts\n const writable =\n !isDefault || !!signature || !!(keyPair && keyPair.secretKey) || opts.writable === true\n\n if (this._readonly || writable === false) {\n throw SESSION_NOT_WRITABLE('cannot append to a readonly core', this.discoveryKey)\n }\n\n blocks = Array.isArray(blocks) ? blocks : [blocks]\n\n const preappend = this.encryption && this._preappend\n\n const buffers = this.encodeBatch !== null ? this.encodeBatch(blocks) : new Array(blocks.length)\n\n if (this.encodeBatch === null) {\n for (let i = 0; i < blocks.length; i++) {\n buffers[i] = this._encode(this.valueEncoding, blocks[i])\n }\n }\n for (const b of buffers) {\n if (b.byteLength > MAX_SUGGESTED_BLOCK_SIZE) {\n throw BAD_ARGUMENT(\n 'Appended block exceeds the maximum suggested block size',\n this.discoveryKey\n )\n }\n }\n\n return this.state.append(buffers, { keyPair, signature, preappend, postappend, maxLength })\n }\n\n async signable(length = -1, fork = -1) {\n if (this.opened === false) await this.opening\n if (length === -1) length = this.length\n if (fork === -1) fork = this.fork\n\n return caps.treeSignable(this.key, await this.treeHash(length), length, fork)\n }\n\n async treeHash(length = -1) {\n if (this.opened === false) await this.opening\n if (length === -1) length = this.length\n if (length > 0 && !(await this.has(length - 1))) await this.get(length - 1)\n\n const roots = await MerkleTree.getRoots(this.state, length)\n return crypto.tree(roots)\n }\n\n async missingNodes(index) {\n if (this.opened === false) await this.opening\n return await MerkleTree.missingNodes(this.core.state, 2 * index, this.core.state.length)\n }\n\n async proof(opts) {\n if (this.opened === false) await this.opening\n const rx = this.state.storage.read()\n const proofPromise = MerkleTree.proof(this.state, rx, opts)\n const blockPromise = opts && opts.block ? rx.getBlock(opts.block.index) : null\n rx.tryFlush()\n const [proof, block] = await Promise.all([proofPromise, blockPromise])\n const settled = await proof.settle()\n if (block) settled.block.value = block\n return settled\n }\n\n async applyProof(proof, from) {\n if (this.opened === false) await this.opening\n return this.core.verify(proof, from)\n }\n\n async verifyFullyRemote(proof) {\n if (this.opened === false) await this.opening\n const batch = await MerkleTree.verifyFullyRemote(this.state, proof)\n await this.core._verifyBatchUpgrade(batch, proof.manifest)\n return batch\n }\n\n generateRemoteProofForTreeNode(treeNodeIndex) {\n const blockProofIndex = flat.rightSpan(treeNodeIndex) / 2\n return proof(this, {\n index: blockProofIndex,\n // + 1 to length so the block is included\n upgrade: { start: 0, length: blockProofIndex + 1 }\n })\n }\n\n async recoverFromRemoteProof(remoteProof) {\n this.core.replicator.setPushOnly(true)\n this.core._repairMode = true\n\n await this.core.state.mutex.lock()\n\n try {\n const p = await verify(this.core.db, remoteProof)\n if (!p) return false\n\n const tx = this.core.storage.write()\n for (const node of p.proof.upgrade.nodes) {\n tx.putTreeNode(node)\n }\n await tx.flush()\n\n const succeed = p.proof.upgrade.nodes.length !== 0\n if (succeed) {\n this.core.replicator.setPushOnly(false)\n }\n return succeed\n } finally {\n this.core.state.mutex.unlock()\n }\n }\n\n recoverTreeNodeFromPeers() {\n this.core.replicator.setPushOnly(true)\n\n for (const peer of this.core.replicator.peers) {\n const req = {\n id: 0,\n fork: this.fork,\n upgrade: {\n start: 0,\n length: this.length\n }\n }\n peer.wireRequest.send(req)\n }\n }\n\n registerExtension(name, handlers = {}) {\n if (this.extensions.has(name)) {\n const ext = this.extensions.get(name)\n ext.handlers = handlers\n ext.encoding = c.from(handlers.encoding || c.buffer)\n ext.session = this\n return ext\n }\n\n const ext = {\n name,\n handlers,\n encoding: c.from(handlers.encoding || c.buffer),\n session: this,\n send(message, peer) {\n const buffer = c.encode(this.encoding, message)\n peer.extension(name, buffer)\n },\n broadcast(message) {\n const buffer = c.encode(this.encoding, message)\n for (const peer of this.session.peers) {\n peer.extension(name, buffer)\n }\n },\n destroy() {\n for (const peer of this.session.peers) {\n if (peer.extensions.get(name) === ext) peer.extensions.delete(name)\n }\n this.session.extensions.delete(name)\n },\n _onmessage(state, peer) {\n const m = this.encoding.decode(state)\n if (this.handlers.onmessage) this.handlers.onmessage(m, peer)\n }\n }\n\n this.extensions.set(name, ext)\n\n if (this.core === null) this._monitorIndex = -2\n else this.core.addMonitor(this)\n\n for (const peer of this.peers) {\n peer.extensions.set(name, ext)\n }\n\n return ext\n }\n\n _encode(enc, val) {\n const state = { start: this.padding, end: this.padding, buffer: null }\n\n if (b4a.isBuffer(val)) {\n if (state.start === 0) return val\n state.end += val.byteLength\n } else if (enc) {\n enc.preencode(state, val)\n } else {\n val = b4a.from(val)\n if (state.start === 0) return val\n state.end += val.byteLength\n }\n\n state.buffer = b4a.allocUnsafe(state.end)\n\n if (enc) enc.encode(state, val)\n else state.buffer.set(val, state.start)\n\n return state.buffer\n }\n\n _decode(enc, block, index) {\n if (this.encryption) block = block.subarray(this.encryption.padding(this.core, index))\n try {\n if (enc) return c.decode(enc, block)\n } catch (err) {\n throw DECODING_ERROR(err.message, this.discoveryKey)\n }\n return block\n }\n\n _getEncryptionProvider(e) {\n if (isEncryptionProvider(e)) return e\n if (!e || !e.key) return null\n return new DefaultEncryption(e.key, this.key, { block: e.block, compat: this.core.compat })\n }\n}\n\nmodule.exports = Hypercore\n\nfunction isStream(s) {\n return typeof s === 'object' && s && typeof s.pipe === 'function'\n}\n\nasync function preappend(blocks) {\n const offset = this.state.length\n const fork = this.state.encryptionFork\n\n for (let i = 0; i < blocks.length; i++) {\n await this.encryption.encrypt(offset + i, blocks[i], fork, this.core)\n }\n}\n\nfunction isValidIndex(index) {\n return index === 0 || index > 0\n}\n\nfunction maybeUnslab(block) {\n // Unslab only when it takes up less then half the slab\n return block !== null && 2 * block.byteLength < block.buffer.byteLength ? unslab(block) : block\n}\n\nfunction checkSnapshot(snapshot, index) {\n if (index >= snapshot.state.snapshotCompatLength) {\n throw SNAPSHOT_NOT_AVAILABLE(\n `snapshot at index ${index} not available (max compat length ${snapshot.state.snapshotCompatLength})`,\n snapshot.discoveryKey\n )\n }\n}\n\nfunction readBlock(rx, index) {\n const promise = rx.getBlock(index)\n rx.tryFlush()\n return promise\n}\n\nfunction initOnce(session, storage, key, opts) {\n if (storage === null) storage = opts.storage || null\n if (key === null) key = opts.key || null\n\n session.core = new Core(Hypercore.defaultStorage(storage), {\n preopen: opts.preopen,\n eagerUpgrade: opts.eagerUpgrade !== false,\n notDownloadingLinger: opts.notDownloadingLinger,\n allowFork: opts.allowFork !== false,\n allowPush: !!opts.allowPush,\n pushOnly: !!opts.pushOnly,\n alwaysLatestBlock: !!opts.allowLatestBlock,\n inflightRange: opts.inflightRange,\n compat: opts.compat === true,\n force: opts.force,\n createIfMissing: opts.createIfMissing,\n discoveryKey: opts.discoveryKey,\n overwrite: opts.overwrite,\n key,\n keyPair: opts.keyPair,\n legacy: opts.legacy,\n manifest: opts.manifest,\n group: opts.group,\n globalCache: opts.globalCache || null // session is a temp option, not to be relied on unless you know what you are doing (no semver guarantees)\n })\n}\n\nfunction maybeAddMonitor(name) {\n if (name === 'append' || name === 'truncate') return\n if (this._monitorIndex >= 0 || this.closing) return\n\n if (this.core === null) {\n this._monitorIndex = -2\n } else {\n this.core.addMonitor(this)\n }\n}\n\nfunction isSessionMoved(err) {\n return err.code === 'SESSION_MOVED'\n}\n\nfunction getEncryptionOption(opts) {\n // old style, supported for now but will go away\n if (opts.encryptionKey) return { key: opts.encryptionKey, block: !!opts.isBlockKey }\n if (!opts.encryption) return null\n return b4a.isBuffer(opts.encryption) ? { key: opts.encryption } : opts.encryption\n}\n\nfunction isEncryptionProvider(e) {\n return e && isFunction(e.padding) && isFunction(e.encrypt) && isFunction(e.decrypt)\n}\n\nfunction isFunction(fn) {\n return !!fn && typeof fn === 'function'\n}\n\nfunction createDiscoveryKeyHandler(fn) {\n return ondiscoverykey\n function ondiscoverykey(id) {\n if (!id || id.byteLength !== 32) throw BAD_ARGUMENT('Invalid discovery key')\n return fn(id)\n }\n}\n\nfunction isRequestsDestroyed(activeRequests) {\n // TODO: move this to an object instead so we can store a property in next major\n return activeRequests.length > 0 && activeRequests[0] === null\n}\nconst crypto = require('hypercore-crypto')\nconst flat = require('flat-tree')\nconst b4a = require('b4a')\nconst { MerkleTree } = require('./merkle-tree')\n\nmodule.exports = async function auditCore(\n core,\n { tree = true, blocks = true, bitfield = true, dryRun = false } = {}\n) {\n const length = core.state.length\n const stats = {\n treeNodes: 0,\n blocks: 0,\n bits: 0,\n droppedTreeNodes: 0,\n droppedBlocks: 0,\n droppedBits: 0,\n corrupt: false\n }\n\n // audit the tree\n if (tree) {\n let tx = null\n\n const roots = await MerkleTree.getRootsFromStorage(core.state.storage, length)\n const stack = []\n\n for (const r of roots) {\n if (r === null) {\n if (!dryRun) {\n const storage = core.state.storage\n await storage.store.deleteCore(storage.core)\n return null\n }\n\n stats.corrupt = true\n }\n\n stack.push(r)\n }\n\n stats.treeNodes += roots.length\n\n while (stack.length > 0) {\n const node = stack.pop()\n\n if ((node.index & 1) === 0) continue\n\n const [left, right] = flat.children(node.index)\n\n const rx = core.state.storage.read()\n const leftNodePromise = rx.getTreeNode(left)\n const rightNodePromise = rx.getTreeNode(right)\n\n rx.tryFlush()\n\n const [leftNode, rightNode] = await Promise.all([leftNodePromise, rightNodePromise])\n\n if (isBadTree(node, leftNode, rightNode)) {\n if (!tx && !stats.corrupt) tx = core.state.storage.write()\n const [l, r] = flat.spans(node.index)\n tx.deleteTreeNodeRange(l, r + 1)\n stats.droppedTreeNodes++\n continue\n }\n\n if (!leftNode) continue\n\n stats.treeNodes += 2\n stack.push(leftNode, rightNode)\n }\n\n if (tx && !dryRun) await tx.flush()\n }\n\n // audit the blocks\n if (blocks) {\n let tx = null\n\n for await (const block of core.state.storage.createBlockStream()) {\n if (!core.bitfield.get(block.index)) {\n if (!tx && !stats.corrupt) tx = core.state.storage.write()\n tx.deleteBlock(block.index)\n stats.droppedBlocks++\n }\n\n const rx = core.state.storage.read()\n const treeNodePromise = rx.getTreeNode(2 * block.index)\n\n rx.tryFlush()\n\n const treeNode = await treeNodePromise\n\n if (isBadBlock(treeNode, block.value)) {\n if (!tx && !stats.corrupt) tx = core.state.storage.write()\n tx.deleteBlock(block.index)\n stats.droppedBlocks++\n continue\n }\n\n stats.blocks++\n }\n\n if (tx && !dryRun) await tx.flush()\n }\n\n if (bitfield) {\n let tx = null\n\n for (const index of allBits(core.bitfield)) {\n const rx = core.state.storage.read()\n const blockPromise = rx.getBlock(index)\n\n rx.tryFlush()\n\n const block = await blockPromise\n if (!block) {\n stats.droppedBits++\n if (dryRun) continue\n\n if (!tx && !stats.corrupt) tx = core.state.storage.write()\n\n core.bitfield.set(index, false)\n\n const page = core.bitfield.getBitfield(index)\n if (page.bitfield) tx.putBitfieldPage(page.index, page.bitfield)\n else tx.deleteBitfieldPage(page.index)\n continue\n }\n\n stats.bits++\n }\n\n if (tx && !dryRun) await tx.flush()\n }\n\n return stats\n}\n\nfunction isBadBlock(node, block) {\n if (!node) return true\n const hash = crypto.data(block)\n return !b4a.equals(hash, node.hash) || node.size !== block.byteLength\n}\n\nfunction isBadTree(parent, left, right) {\n if (!left && !right) return false\n if (!left || !right) return true\n const hash = crypto.parent(left, right)\n return !b4a.equals(hash, parent.hash) || parent.size !== left.size + right.size\n}\n\nfunction* allBits(bitfield) {\n let i = 0\n if (bitfield.get(0)) yield 0\n while (true) {\n i = bitfield.findFirst(true, i + 1)\n if (i === -1) break\n yield i\n }\n}\nconst b4a = require('b4a')\nconst quickbit = require('./compat').quickbit\n\nmodule.exports = class BitInterlude {\n constructor() {\n this.ranges = []\n }\n\n contiguousLength(from) {\n for (const r of this.ranges) {\n if (r.start > from) break\n if (!r.value && r.start <= from) return r.start\n }\n\n // TODO: be smarter\n while (this.get(from) === true) from++\n return from\n }\n\n get(index) {\n let start = 0\n let end = this.ranges.length\n\n while (start < end) {\n const mid = (start + end) >> 1\n const r = this.ranges[mid]\n\n if (index < r.start) {\n end = mid\n continue\n }\n\n if (index >= r.end) {\n if (mid === start) break\n start = mid\n continue\n }\n\n return r.value\n }\n\n return false\n }\n\n setRange(start, end, value) {\n if (start === end) return\n\n let r = null\n\n for (let i = 0; i < this.ranges.length; i++) {\n r = this.ranges[i]\n\n // if already inside, stop\n if (r.start <= start && end <= r.end) {\n if (value === r.value) return\n\n const ranges = mergeRanges(r, { start, end, value })\n this.ranges.splice(i, 1, ...ranges)\n\n return\n }\n\n // we wanna overun the interval\n if (start > r.end) {\n continue\n }\n\n // we overran but this interval is ending after us, move it back\n if (end >= r.start && end <= r.end) {\n r.start = r.value === value ? start : end\n if (r.value !== value) this.ranges.splice(i, 0, { start, end, value })\n return\n }\n\n // we overran but our start is contained in this interval, move start back\n if (start >= r.start && start <= r.end) {\n if (r.value !== value) {\n r.end = start // Crop current comparison\n\n // If there's a next range\n if (this.ranges.length - 1 > i) {\n const next = this.ranges[i + 1]\n // If the same, go next\n if (next.value === value) continue\n // Else we overlap so update next range\n if (next.start < end) next.start = end\n }\n\n this.ranges.splice(++i, 0, { start, end, value })\n return\n }\n\n start = r.start\n }\n\n let remove = 0\n\n for (let j = i; j < this.ranges.length; j++) {\n const n = this.ranges[j]\n if (n.start > end || n.value !== value) break\n if (n.start <= end && n.end > end) end = n.end\n remove++\n }\n\n this.ranges.splice(i, remove, { start, end, value })\n return\n }\n\n if (r !== null) {\n if (start <= r.end && end > r.end) {\n r.end = end\n return\n }\n\n // we never\n if (r.end > start) return\n }\n\n this.ranges.push({ start, end, value })\n }\n\n flush(tx, bitfield) {\n if (!this.ranges.length) return []\n\n let index = this.ranges[0].start\n const final = this.ranges[this.ranges.length - 1].end\n\n let i = 0\n\n while (index < final) {\n const page = bitfield.getBitfield(index) // read only\n const pageIndex = page ? page.index : bitfield.getPageIndex(index)\n\n const buf = b4a.allocUnsafe(bitfield.getPageByteLength())\n\n if (page) {\n const src = page.bitfield // Uint32Array\n buf.set(b4a.from(src.buffer, src.byteOffset, src.byteLength), 0)\n } else {\n b4a.fill(buf, 0)\n }\n\n const last = (pageIndex + 1) * (buf.byteLength << 3)\n const offset = pageIndex * (buf.byteLength << 3)\n\n let hasValue = false\n\n while (i < this.ranges.length) {\n const { start, end, value } = this.ranges[i]\n\n if (!hasValue && value) hasValue = true\n\n const from = start < index ? index : start\n const to = end < last ? end : last\n\n quickbit.fill(buf, value, from - offset, to - offset)\n\n index = to\n\n if (to === last) break\n\n i++\n }\n\n if (page || hasValue) tx.putBitfieldPage(pageIndex, buf)\n }\n\n return this.ranges\n }\n}\n\nfunction mergeRanges(a, b) {\n const ranges = []\n if (a.start < b.start) ranges.push({ start: a.start, end: b.start, value: a.value })\n ranges.push({ start: b.start, end: b.end, value: b.value })\n if (b.end < a.end) ranges.push({ start: b.end, end: a.end, value: a.value })\n\n return ranges\n}\nconst BigSparseArray = require('big-sparse-array')\nconst b4a = require('b4a')\nconst quickbit = require('./compat').quickbit\n\nconst BITS_PER_PAGE = 32768\nconst BYTES_PER_PAGE = BITS_PER_PAGE / 8\nconst WORDS_PER_PAGE = BYTES_PER_PAGE / 4\nconst BITS_PER_SEGMENT = 2097152\nconst BYTES_PER_SEGMENT = BITS_PER_SEGMENT / 8\nconst WORDS_PER_SEGMENT = BYTES_PER_SEGMENT / 4\nconst INITIAL_WORDS_PER_SEGMENT = 1024\nconst PAGES_PER_SEGMENT = BITS_PER_SEGMENT / BITS_PER_PAGE\nconst SEGMENT_GROWTH_FACTOR = 4\n\nclass BitfieldPage {\n constructor(index, segment) {\n this.index = index\n this.offset = index * BYTES_PER_PAGE - segment.offset\n this.bitfield = null\n this.segment = segment\n\n segment.add(this)\n }\n\n get tree() {\n return this.segment.tree\n }\n\n get(index, dirty) {\n return quickbit.get(this.bitfield, index)\n }\n\n set(index, val) {\n if (quickbit.set(this.bitfield, index, val)) {\n this.tree.update(this.offset * 8 + index)\n }\n }\n\n setRange(start, end, val) {\n quickbit.fill(this.bitfield, val, start, end)\n\n let i = Math.floor(start / 128)\n const n = i + Math.ceil((end - start) / 128)\n\n while (i <= n) this.tree.update(this.offset * 8 + i++ * 128)\n }\n\n findFirst(val, position) {\n return quickbit.findFirst(this.bitfield, val, position)\n }\n\n findLast(val, position) {\n return quickbit.findLast(this.bitfield, val, position)\n }\n\n count(start, length, val) {\n const end = start + length\n\n let i = start\n let c = 0\n\n while (length > 0) {\n const l = this.findFirst(val, i)\n if (l === -1 || l >= end) return c\n\n const h = this.findFirst(!val, l + 1)\n if (h === -1 || h >= end) return c + end - l\n\n c += h - l\n length -= h - i\n i = h\n }\n\n return c\n }\n}\n\nclass BitfieldSegment {\n constructor(index, bitfield) {\n this.index = index\n this.offset = index * BYTES_PER_SEGMENT\n this.tree = quickbit.Index.from(bitfield, BYTES_PER_SEGMENT)\n this.pages = new Array(PAGES_PER_SEGMENT)\n }\n\n get bitfield() {\n return this.tree.field\n }\n\n add(page) {\n const i = page.index - this.index * PAGES_PER_SEGMENT\n this.pages[i] = page\n\n const start = i * WORDS_PER_PAGE\n const end = start + WORDS_PER_PAGE\n\n if (end >= this.bitfield.length) this.reallocate(end)\n\n page.bitfield = this.bitfield.subarray(start, end)\n }\n\n reallocate(length) {\n let target = this.bitfield.length\n while (target < length) target *= SEGMENT_GROWTH_FACTOR\n\n const bitfield = new Uint32Array(target)\n bitfield.set(this.bitfield)\n\n this.tree = quickbit.Index.from(bitfield, BYTES_PER_SEGMENT)\n\n for (let i = 0; i < this.pages.length; i++) {\n const page = this.pages[i]\n if (!page) continue\n\n const start = i * WORDS_PER_PAGE\n const end = start + WORDS_PER_PAGE\n\n page.bitfield = bitfield.subarray(start, end)\n }\n }\n\n findFirst(val, position) {\n position = this.tree.skipFirst(!val, position)\n\n let j = position & (BITS_PER_PAGE - 1)\n let i = (position - j) / BITS_PER_PAGE\n\n if (i >= PAGES_PER_SEGMENT) return -1\n\n while (i < this.pages.length) {\n const p = this.pages[i]\n\n let index = -1\n\n if (p) index = p.findFirst(val, j)\n else if (!val) index = j\n\n if (index !== -1) return i * BITS_PER_PAGE + index\n\n j = 0\n i++\n }\n\n return -1\n }\n\n findLast(val, position) {\n position = this.tree.skipLast(!val, position)\n\n let j = position & (BITS_PER_PAGE - 1)\n let i = (position - j) / BITS_PER_PAGE\n\n if (i >= PAGES_PER_SEGMENT) return -1\n\n while (i >= 0) {\n const p = this.pages[i]\n\n let index = -1\n\n if (p) index = p.findLast(val, j)\n else if (!val) index = j\n\n if (index !== -1) return i * BITS_PER_PAGE + index\n\n j = BITS_PER_PAGE - 1\n i--\n }\n\n return -1\n }\n}\n\nmodule.exports = class Bitfield {\n static BITS_PER_PAGE = BITS_PER_PAGE\n static BYTES_PER_PAGE = BYTES_PER_PAGE\n\n constructor(buffer) {\n this.resumed = !!(buffer && buffer.byteLength >= 0)\n\n this._pages = new BigSparseArray()\n this._segments = new BigSparseArray()\n\n const view = this.resumed\n ? new Uint32Array(buffer.buffer, buffer.byteOffset, Math.floor(buffer.byteLength / 4))\n : new Uint32Array(INITIAL_WORDS_PER_SEGMENT)\n\n for (let i = 0; i < view.length; i += WORDS_PER_SEGMENT) {\n let bitfield = view.subarray(i, i + WORDS_PER_SEGMENT)\n let length = WORDS_PER_SEGMENT\n\n if (i === 0) {\n length = INITIAL_WORDS_PER_SEGMENT\n while (length < bitfield.length) length *= SEGMENT_GROWTH_FACTOR\n }\n\n if (bitfield.length !== length) {\n const copy = new Uint32Array(length)\n copy.set(bitfield, 0)\n bitfield = copy\n }\n\n const segment = new BitfieldSegment(i / WORDS_PER_SEGMENT, bitfield)\n this._segments.set(segment.index, segment)\n\n for (let j = 0; j < bitfield.length; j += WORDS_PER_PAGE) {\n const page = new BitfieldPage((i + j) / WORDS_PER_PAGE, segment)\n this._pages.set(page.index, page)\n }\n }\n }\n\n static from(bitfield) {\n return new Bitfield(bitfield.toBuffer(bitfield._pages.maxLength * BITS_PER_PAGE))\n }\n\n toBuffer(length) {\n const pages = Math.ceil(length / BITS_PER_PAGE)\n const buffer = b4a.allocUnsafe(pages * BYTES_PER_PAGE)\n\n for (let i = 0; i < pages; i++) {\n const page = this._pages.get(i)\n const offset = i * BYTES_PER_PAGE\n\n if (page) {\n const buf = b4a.from(\n page.bitfield.buffer,\n page.bitfield.byteOffset,\n page.bitfield.byteLength\n )\n\n buffer.set(buf, offset)\n } else {\n buffer.fill(0, offset, offset + BYTES_PER_PAGE)\n }\n }\n\n return buffer\n }\n\n getBitfield(index) {\n const i = this.getPageIndex(index)\n\n const p = this._pages.get(i)\n return p || null\n }\n\n merge(bitfield, length) {\n let i = 0\n\n while (i < length) {\n const start = bitfield.firstSet(i)\n if (start === -1) break\n\n i = bitfield.firstUnset(start)\n\n if (i === -1 || i > length) i = length\n\n this.setRange(start, i, true)\n\n if (i >= length) break\n }\n }\n\n get(index) {\n const j = index & (BITS_PER_PAGE - 1)\n const i = (index - j) / BITS_PER_PAGE\n\n const p = this._pages.get(i)\n\n return p ? p.get(j) : false\n }\n\n getPageByteLength() {\n return BYTES_PER_PAGE\n }\n\n getPageIndex(index) {\n const j = index & (BITS_PER_PAGE - 1)\n return (index - j) / BITS_PER_PAGE\n }\n\n getPage(index, create) {\n const i = this.getPageIndex(index)\n\n let p = this._pages.get(i)\n\n if (p) return p\n\n if (!create) return null\n\n const k = Math.floor(i / PAGES_PER_SEGMENT)\n const s =\n this._segments.get(k) ||\n this._segments.set(\n k,\n new BitfieldSegment(\n k,\n new Uint32Array(k === 0 ? INITIAL_WORDS_PER_SEGMENT : WORDS_PER_SEGMENT)\n )\n )\n\n p = this._pages.set(i, new BitfieldPage(i, s))\n\n return p\n }\n\n set(index, val) {\n const j = index & (BITS_PER_PAGE - 1)\n const i = (index - j) / BITS_PER_PAGE\n\n let p = this._pages.get(i)\n\n if (!p && val) {\n const k = Math.floor(i / PAGES_PER_SEGMENT)\n const s =\n this._segments.get(k) ||\n this._segments.set(\n k,\n new BitfieldSegment(\n k,\n new Uint32Array(k === 0 ? INITIAL_WORDS_PER_SEGMENT : WORDS_PER_SEGMENT)\n )\n )\n\n p = this._pages.set(i, new BitfieldPage(i, s))\n }\n\n if (p) p.set(j, val)\n }\n\n setRange(start, end, val) {\n let j = start & (BITS_PER_PAGE - 1)\n let i = (start - j) / BITS_PER_PAGE\n\n while (start < end) {\n let p = this._pages.get(i)\n\n if (!p && val) {\n const k = Math.floor(i / PAGES_PER_SEGMENT)\n const s =\n this._segments.get(k) ||\n this._segments.set(\n k,\n new BitfieldSegment(\n k,\n new Uint32Array(k === 0 ? INITIAL_WORDS_PER_SEGMENT : WORDS_PER_SEGMENT)\n )\n )\n\n p = this._pages.set(i, new BitfieldPage(i, s))\n }\n\n const offset = i * BITS_PER_PAGE\n const last = Math.min(end - offset, BITS_PER_PAGE)\n const range = last - j\n\n if (p) p.setRange(j, last, val)\n\n j = 0\n i++\n start += range\n }\n }\n\n findFirst(val, position) {\n let j = position & (BITS_PER_SEGMENT - 1)\n let i = (position - j) / BITS_PER_SEGMENT\n\n while (i < this._segments.maxLength) {\n const s = this._segments.get(i)\n\n let index = -1\n\n if (s) index = s.findFirst(val, j)\n else if (!val) index = j\n\n if (index !== -1) return i * BITS_PER_SEGMENT + index\n\n j = 0\n i++\n }\n\n return val ? -1 : this._segments.maxLength * BITS_PER_SEGMENT\n }\n\n firstSet(position) {\n return this.findFirst(true, position)\n }\n\n firstUnset(position) {\n return this.findFirst(false, position)\n }\n\n findLast(val, position) {\n let j = position & (BITS_PER_SEGMENT - 1)\n let i = (position - j) / BITS_PER_SEGMENT\n\n while (i >= 0) {\n const s = this._segments.get(i)\n\n let index = -1\n\n if (s) index = s.findLast(val, j)\n else if (!val) index = j\n\n if (index !== -1) return i * BITS_PER_SEGMENT + index\n\n j = BITS_PER_SEGMENT - 1\n i--\n }\n\n return -1\n }\n\n lastSet(position) {\n return this.findLast(true, position)\n }\n\n lastUnset(position) {\n return this.findLast(false, position)\n }\n\n hasUnset(start, length) {\n const end = start + length\n\n let j = start & (BITS_PER_SEGMENT - 1)\n let i = (start - j) / BITS_PER_SEGMENT\n\n while (i < this._segments.maxLength) {\n const s = this._segments.get(i)\n const index = s ? s.findFirst(false, j) : j\n if (index !== -1) return i * BITS_PER_SEGMENT + index < end\n\n j = 0\n i++\n\n if (i * BITS_PER_SEGMENT >= end) return false\n }\n\n return true\n }\n\n hasSet(start, length) {\n const end = start + length\n\n let j = start & (BITS_PER_SEGMENT - 1)\n let i = (start - j) / BITS_PER_SEGMENT\n\n while (i < this._segments.maxLength) {\n const s = this._segments.get(i)\n\n let index = -1\n\n if (s) index = s.findFirst(true, j)\n\n if (index !== -1) return i * BITS_PER_SEGMENT + index < end\n\n j = 0\n i++\n\n if (i * BITS_PER_SEGMENT >= end) return false\n }\n\n return false\n }\n\n count(start, length, val) {\n let j = start & (BITS_PER_PAGE - 1)\n let i = (start - j) / BITS_PER_PAGE\n let c = 0\n\n while (length > 0) {\n const p = this._pages.get(i)\n\n const end = Math.min(j + length, BITS_PER_PAGE)\n const range = end - j\n\n if (p) c += p.count(j, range, val)\n else if (!val) c += range\n\n j = 0\n i++\n length -= range\n }\n\n return c\n }\n\n countSet(start, length) {\n return this.count(start, length, true)\n }\n\n countUnset(start, length) {\n return this.count(start, length, false)\n }\n\n *want(start, length) {\n if (start & 31) {\n const d = start & 31\n start -= d\n length += d\n }\n\n let j = start & (BITS_PER_SEGMENT - 1)\n let i = (start - j) / BITS_PER_SEGMENT\n\n while (length > 0) {\n const s = this._segments.get(i)\n\n if (s) {\n let end = Math.min(j + length, BITS_PER_SEGMENT)\n if (end & 31) end += 32 - (end & 31)\n\n yield {\n start: i * BITS_PER_SEGMENT + j,\n bitfield: s.bitfield.subarray(j / 32, end / 32)\n }\n }\n\n j = 0\n i++\n length -= BITS_PER_SEGMENT\n }\n }\n\n clear(tx) {\n return tx.deleteBitfieldPageRange(0, -1)\n }\n\n onupdate(ranges) {\n for (const { start, end, value } of ranges) {\n this.setRange(start, end, value)\n }\n }\n\n static async open(storage, length) {\n if (length === 0) return new Bitfield(storage, null)\n\n const pages = Math.ceil(length / BITS_PER_PAGE)\n const buffer = b4a.alloc(pages * BYTES_PER_PAGE)\n const stream = storage.createBitfieldStream({ lt: pages })\n\n for await (const { index, page } of stream) {\n buffer.set(page, index * BYTES_PER_PAGE)\n }\n\n return new Bitfield(buffer)\n }\n}\nconst crypto = require('hypercore-crypto')\nconst sodium = require('sodium-universal')\nconst b4a = require('b4a')\nconst c = require('compact-encoding')\n\n// TODO: rename this to \"crypto\" and move everything hashing related etc in here\n// Also lets move the tree stuff from hypercore-crypto here\n\nconst [\n TREE,\n REPLICATE_INITIATOR,\n REPLICATE_RESPONDER,\n MANIFEST,\n DEFAULT_NAMESPACE,\n DEFAULT_ENCRYPTION\n] = crypto.namespace('hypercore', 6)\n\nexports.MANIFEST = MANIFEST\nexports.DEFAULT_NAMESPACE = DEFAULT_NAMESPACE\nexports.DEFAULT_ENCRYPTION = DEFAULT_ENCRYPTION\n\nexports.replicate = function (isInitiator, key, handshakeHash) {\n const out = b4a.allocUnsafe(32)\n sodium.crypto_generichash_batch(\n out,\n [isInitiator ? REPLICATE_INITIATOR : REPLICATE_RESPONDER, key],\n handshakeHash\n )\n return out\n}\n\nexports.treeSignable = function (manifestHash, treeHash, length, fork) {\n const state = { start: 0, end: 112, buffer: b4a.allocUnsafe(112) }\n c.fixed32.encode(state, TREE)\n c.fixed32.encode(state, manifestHash)\n c.fixed32.encode(state, treeHash)\n c.uint64.encode(state, length)\n c.uint64.encode(state, fork)\n return state.buffer\n}\n\nexports.treeSignableCompat = function (hash, length, fork, noHeader) {\n const end = noHeader ? 48 : 80\n const state = { start: 0, end, buffer: b4a.allocUnsafe(end) }\n if (!noHeader) c.fixed32.encode(state, TREE) // ultra legacy mode, kill in future major\n c.fixed32.encode(state, hash)\n c.uint64.encode(state, length)\n c.uint64.encode(state, fork)\n return state.buffer\n}\n// Export the appropriate version of `quickbit-universal` as the plain import\n// may resolve to an older version in some environments\nlet quickbit = require('quickbit-universal')\nif (\n typeof quickbit.findFirst !== 'function' ||\n typeof quickbit.findLast !== 'function' ||\n typeof quickbit.clear !== 'function'\n) {\n // This should always load the fallback from the locally installed version\n quickbit = require('quickbit-universal/fallback')\n}\nexports.quickbit = quickbit\nconst crypto = require('hypercore-crypto')\nconst flat = require('flat-tree')\nconst b4a = require('b4a')\nconst quickbit = require('quickbit-universal')\nconst Bitfield = require('./bitfield')\n\nconst MAX_BATCH_USED = 4 * 1024 * 1024\nconst MIN_BATCH_USED = 512 * 1024\n\n// just in its own file as its a bit involved\n\nmodule.exports = copyPrologue\n\nasync function copyPrologue(src, dst) {\n const prologue = dst.header.manifest.prologue\n\n if (src.length < prologue.length || prologue.length === 0) return\n\n const stack = []\n const roots = flat.fullRoots(prologue.length * 2)\n const batch = { roots, first: true, last: false, contig: 0, used: 0, tree: [], blocks: [] }\n\n for (let i = 0; i < roots.length; i++) {\n const node = roots[i]\n batch.tree.push(node)\n stack.push(node)\n }\n\n let lastPage = -1\n let lastBlock = -1\n\n for await (const data of src.storage.createBlockStream({\n gte: 0,\n lt: prologue.length,\n reverse: true\n })) {\n if (walkTree(stack, data.index * 2, batch) === false) {\n throw new Error('Missing block or tree node for ' + data.index)\n }\n\n batch.contig = data.index + 1 === lastBlock ? batch.contig + 1 : 1\n lastBlock = data.index\n\n const page = getBitfieldPage(data.index)\n batch.blocks.push(data)\n\n if (lastPage !== page) batch.used += 4096\n batch.used += Math.max(data.value.byteLength, 128) // 128 is just a sanity number to avoid mega batches\n\n // always safe to partially flush so we do that ondemand to reduce memory usage...\n if ((batch.used >= MIN_BATCH_USED && page !== lastPage) || batch.used >= MAX_BATCH_USED) {\n await flushBatch(prologue, src, dst, batch)\n }\n\n lastPage = page\n }\n\n if (lastBlock !== 0) batch.contig = 0\n\n batch.last = true\n await flushBatch(prologue, src, dst, batch)\n}\n\nasync function flushBatch(prologue, src, dst, batch) {\n const nodePromises = []\n\n const srcReader = src.storage.read()\n for (const index of batch.tree) {\n nodePromises.push(srcReader.getTreeNode(index))\n }\n srcReader.tryFlush()\n\n const nodes = await Promise.all(nodePromises)\n\n const pagePromises = []\n const dstReader = dst.storage.read()\n\n const headPromise = batch.first ? dstReader.getHead() : null\n if (headPromise) headPromise.catch(noop)\n\n let lastPage = -1\n for (const { index } of batch.blocks) {\n const page = getBitfieldPage(index)\n if (page === lastPage) continue\n lastPage = page\n pagePromises.push(dstReader.getBitfieldPage(page))\n }\n\n dstReader.tryFlush()\n\n const pages = await Promise.all(pagePromises)\n const head = headPromise === null ? null : await headPromise\n const userData = []\n\n // reads done!\n\n if (batch.first) {\n const roots = nodes.slice(0, batch.roots.length)\n\n for (const node of roots) {\n if (!node) throw new Error('Missing nodes for prologue hash')\n }\n\n const treeHash = crypto.tree(roots)\n if (!b4a.equals(treeHash, prologue.hash)) throw new Error('Prologue does not match source')\n }\n\n if (batch.first) {\n for await (const data of src.storage.createUserDataStream()) userData.push(data)\n }\n\n for (let i = 0; i < pages.length; i++) {\n if (!pages[i]) pages[i] = b4a.alloc(4096)\n }\n\n const tx = dst.storage.write()\n\n for (const node of nodes) tx.putTreeNode(node)\n\n lastPage = -1\n let pageIndex = -1\n\n for (const { index, value } of batch.blocks) {\n const page = getBitfieldPage(index)\n\n if (page !== lastPage) {\n lastPage = page\n pageIndex++\n // queue the page now, we mutate it below but its the same ref\n tx.putBitfieldPage(pageIndex, pages[pageIndex])\n }\n\n const pageBuffer = pages[pageIndex]\n quickbit.set(pageBuffer, getBitfieldOffset(index), true)\n tx.putBlock(index, value)\n }\n\n for (const { key, value } of userData) {\n tx.putUserData(key, value)\n }\n\n let upgraded = batch.first && !head\n if (upgraded) {\n tx.setHead(prologueToTree(prologue))\n }\n\n await tx.flush()\n\n if (upgraded) {\n const roots = nodes.slice(0, batch.roots.length)\n dst.state.setRoots(roots)\n dst.header.tree = prologueToTree(prologue)\n }\n\n if (userData.length > 0) {\n dst.header.userData = userData.concat(dst.header.userData)\n }\n\n if (batch.contig) {\n // TODO: we need to persist this somehow\n dst.header.hints.contiguousLength = batch.contig\n }\n\n let start = 0\n let length = 0\n\n // update in memory bitfield\n for (const { index } of batch.blocks) {\n if (start === 0 || start - 1 === index) {\n length++\n } else {\n if (length > 0) signalReplicator(dst, upgraded, start, length)\n upgraded = false\n length = 1\n }\n\n start = index\n dst.bitfield.set(index, true)\n }\n\n if (length > 0) signalReplicator(dst, upgraded, start, length)\n\n // unlink\n batch.tree = []\n batch.blocks = []\n batch.first = false\n batch.used = 0\n}\n\nfunction signalReplicator(core, upgraded, start, length) {\n if (upgraded) {\n core.replicator.cork()\n core.replicator.onhave(start, length, false)\n core.replicator.onupgrade()\n core.replicator.uncork()\n } else {\n core.replicator.onhave(start, length, false)\n }\n}\n\nfunction prologueToTree(prologue) {\n return {\n fork: 0,\n length: prologue.length,\n rootHash: prologue.hash,\n signature: null\n }\n}\n\nfunction getBitfieldPage(index) {\n return Math.floor(index / Bitfield.BITS_PER_PAGE)\n}\n\nfunction getBitfieldOffset(index) {\n return index & (Bitfield.BITS_PER_PAGE - 1)\n}\n\nfunction walkTree(stack, target, batch) {\n while (stack.length > 0) {\n const node = stack.pop()\n\n if ((node & 1) === 0) {\n if (node === target) return true\n continue\n }\n\n const ite = flat.iterator(node)\n if (!ite.contains(target)) continue\n\n while ((ite.index & 1) !== 0) {\n const left = ite.leftChild()\n const right = ite.sibling() // is right child\n\n batch.tree.push(left, right)\n\n if (ite.contains(target)) stack.push(left)\n else ite.sibling()\n }\n\n if (ite.index === target) return true\n }\n\n return false\n}\n\nfunction noop() {}\nconst crypto = require('hypercore-crypto')\nconst b4a = require('b4a')\nconst unslab = require('unslab')\nconst z32 = require('z32')\nconst Mutex = require('./mutex')\nconst { MerkleTree, ReorgBatch } = require('./merkle-tree')\nconst BitInterlude = require('./bit-interlude')\nconst Bitfield = require('./bitfield')\nconst RemoteBitfield = require('./remote-bitfield')\nconst {\n BAD_ARGUMENT,\n STORAGE_EMPTY,\n STORAGE_CONFLICT,\n INVALID_SIGNATURE,\n INVALID_CHECKSUM\n} = require('hypercore-errors')\nconst Verifier = require('./verifier')\nconst audit = require('./audit')\nconst copyPrologue = require('./copy-prologue')\nconst SessionState = require('./session-state')\nconst Replicator = require('./replicator')\n\nmodule.exports = class Core {\n constructor(db, opts = {}) {\n this.db = db\n this.storage = null\n this.replicator = new Replicator(this, opts)\n this.sessionStates = []\n this.monitors = []\n this.activeSessions = 0\n this.gc = 0 // corestore uses this to main a gc strike pool\n\n this.id = opts.key ? z32.encode(opts.key) : null\n this.key = opts.key || null\n this.discoveryKey = opts.discoveryKey || (opts.key && crypto.discoveryKey(opts.key)) || null\n this.manifest = null\n this.opening = null\n this.closing = null\n this.exclusive = null\n\n this.preupdate = null\n this.header = null\n this.compat = false\n this.bitfield = null\n this.verifier = null\n this.truncating = 0\n this.skipBitfield = null\n this.globalCache = opts.globalCache || null\n this.autoClose = opts.autoClose !== false\n this.onidle = noop\n this.ongroupupdate = noop\n\n this.state = null\n this.opened = false\n this.destroyed = false\n this.closed = false\n\n this.hintsChanged = false\n this.remoteContiguousLengthChanged = false\n\n this._bitfield = null\n this._verifies = null\n this._verifiesFlushed = null\n this._legacy = !!opts.legacy\n this._repairMode = false\n\n this.opening = this._open(opts)\n this.opening.catch(noop)\n }\n\n static setRecoveryPeers(peers) {\n SessionState.RECOVERY_PEERS = peers\n }\n\n ready() {\n return this.opening\n }\n\n addMonitor(s) {\n if (s._monitorIndex >= 0) return\n s._monitorIndex = this.monitors.push(s) - 1\n }\n\n removeMonitor(s) {\n if (s._monitorIndex < 0) return\n const head = this.monitors.pop()\n if (head !== s) this.monitors[(head._monitorIndex = s._monitorIndex)] = head\n s._monitorIndex = -1\n }\n\n emitRemoteContiguousLength() {\n if (!this.remoteContiguousLengthChanged) return\n this.remoteContiguousLengthChanged = false\n\n const length = this.header.hints.remoteContiguousLength\n\n for (let i = this.monitors.length - 1; i >= 0; i--) {\n this.monitors[i].emit('remote-contiguous-length', length)\n }\n }\n\n emitManifest() {\n for (let i = this.monitors.length - 1; i >= 0; i--) {\n this.monitors[i].emit('manifest')\n }\n }\n\n createUserDataStream(opts, session = this.state) {\n return session.storage.createUserDataStream(opts)\n }\n\n allSessions() {\n const sessions = []\n for (const state of this.sessionStates) {\n if (state.sessions.length) sessions.push(...state.sessions)\n }\n return sessions\n }\n\n hasSession() {\n return this.activeSessions !== 0\n }\n\n compact() {\n const compacting = []\n for (const s of this.sessionStates) {\n compacting.push(s.storage.compact())\n }\n return Promise.all(compacting)\n }\n\n checkIfIdle() {\n if (!this.opened || this.destroyed === true || this.hasSession() === true) return\n if (this.replicator.idle() === false) return\n if (this.state === null || this.state.mutex.idle() === false) return\n this.onidle()\n }\n\n async lockExclusive() {\n if (this.exclusive === null) this.exclusive = new Mutex()\n await this.exclusive.lock()\n }\n\n unlockExclusive() {\n if (this.exclusive !== null) this.exclusive.unlock()\n }\n\n async _open(opts) {\n try {\n await this._tryOpen(opts)\n } catch (err) {\n this.onidle()\n throw err\n }\n\n this.opened = true\n }\n\n async _tryOpen(opts) {\n if (opts.preopen) await opts.preopen // just a hook to allow exclusive access here...\n\n let storage = await this.db.resumeCore(this.discoveryKey)\n\n let overwrite = opts.overwrite === true\n\n const force = opts.force === true\n const createIfMissing = opts.createIfMissing !== false\n // kill this flag soon\n const legacy = !!opts.legacy\n\n // default to true for now if no manifest is provided\n let compat = opts.compat === true || (opts.compat !== false && !opts.manifest)\n\n let header = storage ? parseHeader(await getCoreInfo(storage)) : null\n\n const hadManifest = !!header && !!header.manifest && !!header.key\n const hadKeyPair = !!header && !!header.keyPair\n\n if (force && opts.key && header && !b4a.equals(header.key, opts.key)) {\n overwrite = true\n }\n\n if (!header && opts.discoveryKey && !(opts.key || opts.manifest)) {\n throw STORAGE_EMPTY('No Hypercore is stored here', this.discoveryKey)\n }\n\n if (!header || overwrite) {\n if (!createIfMissing) {\n throw STORAGE_EMPTY('No Hypercore is stored here', this.discoveryKey)\n }\n\n if (compat) {\n if (opts.key && opts.keyPair && !b4a.equals(opts.key, opts.keyPair.publicKey)) {\n throw BAD_ARGUMENT('Key must match publicKey when in compat mode', this.discoveryKey)\n }\n }\n\n const keyPair = opts.keyPair || (opts.key ? null : crypto.keyPair())\n\n const defaultManifest =\n !opts.manifest &&\n (!!opts.compat || !opts.key || !!(keyPair && b4a.equals(opts.key, keyPair.publicKey)))\n const manifest = defaultManifest\n ? Verifier.defaultSignerManifest(opts.key || keyPair.publicKey)\n : Verifier.createManifest(opts.manifest)\n\n header = {\n key: opts.key || (compat ? manifest.signers[0].publicKey : Verifier.manifestHash(manifest)),\n manifest,\n keyPair: keyPair\n ? { publicKey: keyPair.publicKey, secretKey: keyPair.secretKey || null }\n : null,\n frozen: false,\n tree: {\n fork: 0,\n length: 0,\n rootHash: null,\n signature: null,\n timestamp: 0\n },\n group: null,\n hints: {\n reorgs: [],\n contiguousLength: 0,\n remoteContiguousLength: 0,\n recovering: 0\n }\n }\n\n const discoveryKey = opts.discoveryKey || crypto.discoveryKey(header.key)\n\n storage = await this.db.createCore({\n key: header.key,\n manifest,\n keyPair,\n frozen: false,\n discoveryKey,\n userData: opts.userData || [],\n alias: opts.alias || null\n })\n }\n\n // unslab the long lived buffers to avoid keeping the slab alive\n header.key = unslab(header.key)\n\n if (header.tree) {\n header.tree.rootHash = unslab(header.tree.rootHash)\n header.tree.signature = unslab(header.tree.signature)\n }\n\n if (header.keyPair) {\n header.keyPair.publicKey = unslab(header.keyPair.publicKey)\n header.keyPair.secretKey = unslab(header.keyPair.secretKey)\n }\n\n if (header.keyPair) {\n header.keyPair.publicKey = unslab(header.keyPair.publicKey)\n header.keyPair.secretKey = unslab(header.keyPair.secretKey)\n }\n\n if (opts.manifest) {\n // if we provide a manifest and no key, verify that the stored key is the same\n if (\n !opts.key &&\n !Verifier.isValidManifest(header.key, Verifier.createManifest(opts.manifest))\n ) {\n throw STORAGE_CONFLICT('Manifest does not hash to provided key', this.discoveryKey)\n }\n\n if (!header.manifest) header.manifest = opts.manifest\n }\n\n if (opts.key && !b4a.equals(header.key, opts.key)) {\n throw STORAGE_CONFLICT('Another Hypercore is stored here', this.discoveryKey)\n }\n\n // if we signalled compat, but already now this core isn't disable it\n if (compat && header.manifest && !Verifier.isCompat(header.key, header.manifest)) {\n compat = false\n } else if (!compat && header.manifest && Verifier.isCompat(header.key, header.manifest)) {\n compat = true\n }\n\n const prologue = header.manifest ? header.manifest.prologue : null\n\n const bitfield = await Bitfield.open(storage, header.tree.length)\n\n const treeInfo = {\n fork: header.tree.fork,\n length: header.tree.length,\n signature: header.tree.signature,\n roots: await maybeGetRootsFromStorage(storage, header.tree.length),\n prologue\n }\n\n this._repairMode = !treeInfo.roots.length && treeInfo.length && !overwrite\n // Set push only mode if in repair mode\n if (this._repairMode) {\n this.replicator.setPushOnly(true)\n }\n\n if (opts.group) {\n if (!header.group) header.group = await this.db.createGroup(opts.group)\n else if (!b4a.equals(header.group.key, opts.group)) {\n throw STORAGE_CONFLICT(\n 'Core is already register to group: ' + b4a.toString(header.group.key, 'hex')\n )\n }\n\n const tx = storage.write()\n tx.setGroup(header.group)\n await tx.flush()\n }\n\n if (overwrite) {\n const tx = storage.write()\n tx.deleteTreeNodeRange(0, -1)\n tx.deleteBlockRange(0, -1)\n bitfield.clear(tx)\n await tx.flush()\n }\n\n const len = bitfield.findFirst(false, header.hints.contiguousLength)\n if (header.hints.contiguousLength !== len && !storage.readOnly) {\n header.hints.contiguousLength = len\n const tx = storage.write()\n tx.setHints(header.hints)\n await tx.flush()\n }\n\n // to unslab\n if (header.manifest) {\n header.manifest = Verifier.createManifest(header.manifest)\n if (!hadManifest || (header.keyPair && !hadKeyPair)) {\n const tx = storage.write()\n tx.setAuth({\n key: header.key,\n discoveryKey: crypto.discoveryKey(header.key),\n manifest: header.manifest,\n keyPair: header.keyPair\n })\n await tx.flush()\n }\n }\n\n const verifier = header.manifest\n ? new Verifier(header.key, header.manifest, { crypto, legacy })\n : null\n\n this.storage = storage\n this.header = header\n this.compat = compat\n this.bitfield = bitfield\n this.verifier = verifier\n this.state = new SessionState(this, null, storage, treeInfo, null)\n\n if (this.key === null) this.key = this.header.key\n if (this.discoveryKey === null) this.discoveryKey = crypto.discoveryKey(this.key)\n if (this.id === null) this.id = z32.encode(this.key)\n if (this.manifest === null) this.manifest = this.header.manifest\n }\n\n async audit(opts) {\n await this.state.mutex.lock()\n\n try {\n return await audit(this, opts)\n } finally {\n this.state._unlock()\n }\n }\n\n async setGroup(group) {\n await this.state.mutex.lock()\n try {\n if (!this.header.group) this.header.group = await this.db.createGroup(group)\n else if (!b4a.equals(this.header.group.key, group)) {\n throw STORAGE_CONFLICT(\n 'Core is already register to group: ' + b4a.toString(this.header.group.key, 'hex')\n )\n }\n\n const tx = this.storage.write()\n tx.setGroup(this.header.group)\n await tx.flush()\n } finally {\n this.state.mutex.unlock()\n }\n }\n\n async setManifest(manifest) {\n await this.state.mutex.lock()\n\n try {\n if (manifest && this.header.manifest === null) {\n if (!Verifier.isValidManifest(this.header.key, manifest)) {\n throw INVALID_CHECKSUM('Manifest hash does not match', this.discoveryKey)\n }\n\n const tx = this.state.createWriteBatch()\n this._setManifest(tx, Verifier.createManifest(manifest), null)\n await this.state.flush()\n }\n } finally {\n this.state._unlock()\n }\n }\n\n _setManifest(tx, manifest, keyPair) {\n if (!manifest && b4a.equals(keyPair.publicKey, this.header.key)) {\n manifest = Verifier.defaultSignerManifest(this.header.key)\n }\n if (!manifest) return\n\n const verifier = new Verifier(this.header.key, manifest, { legacy: this._legacy })\n\n if (verifier.prologue) this.state.prologue = Object.assign({}, verifier.prologue)\n\n this.manifest = this.header.manifest = manifest\n\n tx.setAuth({\n key: this.header.key,\n discoveryKey: this.discoveryKey,\n manifest,\n keyPair: this.header.keyPair\n // TODO: encryptionKey?\n })\n\n this.compat = verifier.compat\n this.verifier = verifier\n\n this.replicator.onupgrade()\n this.emitManifest()\n }\n\n async copyPrologue(src) {\n await this.state.mutex.lock()\n\n try {\n await src.mutex.lock()\n } catch (err) {\n this.state.mutex.unlock()\n throw err\n }\n\n try {\n await copyPrologue(src, this)\n } finally {\n src.mutex.unlock()\n this.state.mutex.unlock()\n this.checkIfIdle()\n }\n }\n\n flushed() {\n return this.state.flushed()\n }\n\n async _validateCommit(state, treeLength) {\n if (this.state.length > state.length) {\n return false // TODO: partial commit and truncation possible in the future\n }\n\n if (this.state.length > treeLength) {\n for (const root of this.state.roots) {\n const batchRoot = await MerkleTree.get(state, root.index)\n if (batchRoot.size !== root.size || !b4a.equals(batchRoot.hash, root.hash)) {\n return false\n }\n }\n }\n\n if (this.verifier === null) {\n return false // easier to assert than upsert\n }\n\n return true\n }\n\n _verifyBatchUpgrade(batch, manifest) {\n if (!this.header.manifest) {\n // compat, drop at some point\n if (!manifest) manifest = Verifier.defaultSignerManifest(this.header.key)\n\n if (\n !manifest ||\n !(\n Verifier.isValidManifest(this.header.key, manifest) ||\n Verifier.isCompat(this.header.key, manifest)\n )\n ) {\n throw INVALID_SIGNATURE('Proof contains an invalid manifest', this.discoveryKey) // TODO: proper error type\n }\n }\n\n const verifier =\n this.verifier ||\n new Verifier(this.header.key, Verifier.createManifest(manifest), { legacy: this._legacy })\n\n if (!verifier.verify(batch, batch.signature)) {\n throw INVALID_SIGNATURE('Proof contains an invalid signature', this.discoveryKey)\n }\n\n return manifest\n }\n\n async _verifyExclusive({ batch, bitfield, value, manifest }) {\n manifest = this._verifyBatchUpgrade(batch, manifest)\n\n if (\n !(await this.state._verifyBlock(\n batch,\n bitfield,\n value,\n this.header.manifest ? null : manifest\n ))\n ) {\n return false\n }\n\n if (!batch.upgraded && bitfield) {\n this.replicator.onhave(bitfield.start, bitfield.length, bitfield.drop)\n }\n\n return true\n }\n\n async _verifyShared() {\n if (!this._verifies.length) return false\n\n await this.state.mutex.lock()\n\n const tx = this.state.createWriteBatch()\n\n const verifies = this._verifies\n this._verifies = null\n this._verified = null\n\n try {\n for (const { batch, bitfield, value } of verifies) {\n if (!batch.commitable()) continue\n\n if (bitfield) {\n tx.putBlock(bitfield.start, value)\n }\n }\n\n const bits = new BitInterlude()\n\n for (let i = 0; i < verifies.length; i++) {\n const { batch, bitfield, manifest } = verifies[i]\n\n if (!batch.commitable()) {\n verifies[i] = null // signal that we cannot commit this one\n continue\n }\n\n if (bitfield) {\n bits.setRange(bitfield.start, bitfield.start + 1, true)\n }\n\n // if we got a manifest AND its strictly a non compat one, lets store it\n if (manifest && this.header.manifest === null) {\n if (!Verifier.isValidManifest(this.header.key, manifest)) {\n throw INVALID_CHECKSUM('Manifest hash does not match', this.discoveryKey)\n }\n this._setManifest(tx, manifest, null)\n }\n\n if (batch.commitable()) batch.commit(tx)\n }\n\n const ranges = bits.flush(tx, this.bitfield)\n\n await this.state.flush()\n\n for (const { start, end, value } of ranges) {\n this._setBitfieldRanges(start, end, value)\n }\n\n for (let i = 0; i < verifies.length; i++) {\n const bitfield = verifies[i] && verifies[i].bitfield\n if (bitfield) {\n this.updateContiguousLength(bitfield)\n this.replicator.onhave(bitfield.start, bitfield.length, bitfield.drop)\n }\n }\n\n if (this.hintsChanged) await this.flushHints()\n } finally {\n this.state._clearActiveBatch()\n this.state.mutex.unlock()\n }\n\n return verifies[0] !== null\n }\n\n async flushHints() {\n if (!this.hintsChanged) return\n this.hintsChanged = false // we unset this immediately as a \"debounce\"\n\n const tx = this.state.storage.write()\n\n tx.setHints({\n contiguousLength: this.header.hints.contiguousLength,\n remoteContiguousLength: this.header.hints.remoteContiguousLength,\n recovering: this.header.hints.recovering\n })\n\n await tx.flush()\n }\n\n async checkConflict(proof, from) {\n if (this.state.length < proof.upgrade.length || proof.fork !== this.state.fork) {\n // out of date this proof - ignore for now\n return false\n }\n\n // sanity check -> no manifest, no way to verify\n if (!this.header.manifest) {\n return false\n }\n\n const batch = MerkleTree.verifyFullyRemote(this.state, proof)\n\n try {\n this._verifyBatchUpgrade(batch, proof.manifest)\n } catch {\n return true\n }\n\n const roots = await maybeGetRootsFromStorage(this.storage, proof.upgrade.length)\n const remoteTreeHash = crypto.tree(proof.upgrade.nodes)\n const localTreeHash = crypto.tree(roots)\n\n try {\n const rx = this.state.storage.read()\n const treeProofPromise = MerkleTree.proof(this.state, rx, {\n block: null,\n hash: null,\n seek: null,\n upgrade: {\n start: 0,\n length: proof.upgrade.length\n }\n })\n\n rx.tryFlush()\n\n const treeProof = await treeProofPromise\n\n const verifyBatch = MerkleTree.verifyFullyRemote(this.state, await treeProof.settle())\n this._verifyBatchUpgrade(verifyBatch, this.header.manifest)\n } catch (err) {\n if (err.code !== 'INVALID_OPERATION') return true\n\n return !(await this._repairTreeNodes(proof))\n }\n\n // both proofs are valid, now check if they forked\n if (b4a.equals(localTreeHash, remoteTreeHash)) return false\n\n await this.state.mutex.lock()\n\n try {\n const tx = this.state.createWriteBatch()\n\n this.header.frozen = true\n\n tx.setAuth({\n key: this.header.key,\n discoveryKey: this.discoveryKey,\n manifest: this.header.manifest,\n keyPair: this.header.keyPair,\n frozen: true\n })\n\n await this.state.flush()\n } finally {\n this.state.mutex.unlock()\n }\n\n // tmp log so we can see these\n const id = b4a.toString(this.discoveryKey, 'hex')\n console.log(\n '[hypercore] conflict detected in ' +\n id +\n ' (writable=' +\n !!this.header.keyPair +\n ',quorum=' +\n this.header.manifest.quorum +\n ')'\n )\n await this._onconflict(proof)\n return true\n }\n\n async _repairTreeNodes(proof) {\n if (!this._repairMode) return false\n\n await this.state.mutex.lock()\n\n for (let i = this.monitors.length - 1; i >= 0; i--) {\n this.monitors[i].emit('repairing', proof)\n }\n\n try {\n const batch = MerkleTree.verifyFullyRemote(this.state, proof)\n this._verifyBatchUpgrade(batch, proof.manifest)\n } catch {\n this.state.mutex.unlock()\n for (let i = this.monitors.length - 1; i >= 0; i--) {\n this.monitors[i].emit('repair-failed')\n }\n return false\n }\n\n // Attempt to repair local merkle tree with remote roots\n const atom = this.storage.createAtom()\n const atomized = this.storage.atomize(atom)\n const tx = atomized.write()\n for (const node of proof.upgrade.nodes) {\n tx.putTreeNode(node)\n }\n await tx.flush()\n\n // Try local proof again\n try {\n const rx = atomized.read()\n const treeProofPromise = MerkleTree.proof(this.state, rx, {\n block: null,\n hash: null,\n seek: null,\n upgrade: {\n start: 0,\n length: proof.upgrade.length\n }\n })\n\n rx.tryFlush()\n\n const treeProof = await treeProofPromise\n\n const verifyBatch = MerkleTree.verifyFullyRemote(this.state, await treeProof.settle())\n this._verifyBatchUpgrade(verifyBatch, this.header.manifest)\n } catch (err) {\n this.state.mutex.unlock()\n for (let i = this.monitors.length - 1; i >= 0; i--) {\n this.monitors[i].emit('repair-failed')\n }\n return false\n }\n\n await atom.flush()\n\n for (let i = this.monitors.length - 1; i >= 0; i--) {\n this.monitors[i].emit('repaired', proof)\n }\n this.replicator.setPushOnly(false)\n this.state.mutex.unlock()\n return true\n }\n\n async verifyReorg(proof) {\n const batch = new ReorgBatch(this.state)\n await MerkleTree.reorg(this.state, proof, batch)\n const manifest = this._verifyBatchUpgrade(batch, proof.manifest)\n\n if (manifest && !this.header.manifest) {\n await this.state.mutex.lock()\n try {\n if (manifest && this.header.manifest === null) {\n const tx = this.state.createWriteBatch()\n this._setManifest(tx, Verifier.createManifest(manifest), null)\n await this.state.flush()\n }\n } finally {\n this.state._unlock()\n }\n }\n\n return batch\n }\n\n async verify(proof, from) {\n // We cannot apply \"other forks\" atm.\n // We should probably still try and they are likely super similar for non upgrades\n // but this is easy atm (and the above layer will just retry)\n if (proof.fork !== this.state.fork) return false\n\n const batch = await MerkleTree.verify(this.state, proof)\n\n if (batch.upgraded && batch.length <= this.state.length) {\n await batch.downgrade()\n }\n\n if (!batch.commitable()) {\n return false\n }\n\n const value = (proof.block && proof.block.value) || null\n const op = {\n batch,\n bitfield: value && { drop: false, start: proof.block.index, length: 1 },\n value,\n manifest: proof.manifest,\n from\n }\n\n if (batch.upgraded) {\n return this._verifyExclusive(op)\n }\n\n if (this._verifies !== null) {\n const verifies = this._verifies\n const i = verifies.push(op)\n await this._verified\n return verifies[i] !== null\n }\n\n this._verifies = [op]\n this._verified = this._verifyShared()\n\n return this._verified\n }\n\n async reorg(batch) {\n if (!batch.commitable()) return false\n\n this.truncating++\n\n try {\n await this.state.reorg(batch)\n } finally {\n this.truncating--\n }\n\n return true\n }\n\n openSkipBitfield() {\n if (this.skipBitfield !== null) return this.skipBitfield\n this.skipBitfield = new RemoteBitfield()\n const buf = this.bitfield.toBuffer(this.state.length)\n const bitfield = new Uint32Array(buf.buffer, buf.byteOffset, buf.byteLength / 4)\n this.skipBitfield.insert(0, bitfield)\n return this.skipBitfield\n }\n\n _setBitfieldRanges(start, end, value) {\n this.bitfield.setRange(start, end, value)\n if (this.skipBitfield !== null) this.skipBitfield.setRange(start, end, value)\n }\n\n close() {\n if (!this.closing) this.closing = this._close()\n return this.closing\n }\n\n updateContiguousLength(bitfield) {\n const contig = updateContigBatch(this.header.hints.contiguousLength, bitfield, this.bitfield)\n\n if (contig.length !== -1 && contig.length !== this.header.hints.contiguousLength) {\n this.header.hints.contiguousLength = contig.length\n this.hintsChanged = true\n }\n }\n\n updateRemoteContiguousLength(length) {\n this.header.hints.remoteContiguousLength = length\n this.hintsChanged = true\n this.remoteContiguousLengthChanged = true\n }\n\n onappend(tree, bitfield) {\n this.header.tree = tree\n\n if (!bitfield) {\n this.replicator.onupgrade()\n return\n }\n\n this.replicator.cork()\n\n const { start, length, drop } = bitfield\n\n this._setBitfieldRanges(start, start + length, true)\n this.updateContiguousLength({ start, length, drop: false })\n\n this.replicator.onupgrade()\n this.replicator.onhave(start, length, drop)\n this.replicator.uncork()\n }\n\n ontruncate(tree, { start, length }) {\n if (tree) this.header.tree = tree\n\n this.replicator.cork()\n\n this.replicator.ontruncate(start, length)\n this.replicator.onhave(start, length, true)\n this.replicator.onupgrade()\n this.replicator.uncork()\n\n for (const sessionState of this.sessionStates) {\n if (start < sessionState.snapshotCompatLength) sessionState.snapshotCompatLength = start\n }\n\n this._setBitfieldRanges(start, start + length, false)\n this.updateContiguousLength({ start, length, drop: true })\n }\n\n async _onconflict(proof) {\n await this.replicator.onconflict()\n\n for (let i = this.monitors.length - 1; i >= 0; i--) {\n const s = this.monitors[i]\n s.emit('conflict', proof.upgrade.length, proof.fork, proof)\n }\n\n const err = new Error('Two conflicting signatures exist for length ' + proof.upgrade.length)\n await this.closeAllSessions(err)\n }\n\n async closeAllSessions(err) {\n // this.sessions modifies itself when a session closes\n // This way we ensure we indeed iterate over all sessions\n const sessions = this.allSessions()\n\n const all = []\n for (const s of sessions) all.push(s.close({ error: err, force: false })) // force false or else infinite recursion\n await Promise.allSettled(all)\n }\n\n async destroy() {\n if (this.destroyed === true) return\n this.destroyed = true\n\n if (this.hasSession() === true) throw new Error('Cannot destroy while sessions are open')\n\n const weakSessions = this.allSessions()\n\n if (this.replicator) this.replicator.destroy()\n if (this.state) await this.state.close()\n\n // close all pending weak sessions...\n for (const s of weakSessions) s.close().catch(noop)\n }\n\n async _close() {\n if (this.opened === false) await this.opening\n if (this.hasSession() === true) throw new Error('Cannot close while sessions are open')\n\n if (this.replicator) await this.replicator.close()\n\n await this.destroy()\n if (this.autoClose) await this.storage.store.close()\n\n this.closed = true\n }\n}\n\nfunction updateContigBatch(start, upd, bitfield) {\n const end = upd.start + upd.length\n\n let c = start\n\n if (upd.drop) {\n // If we dropped a block in the current contig range, \"downgrade\" it\n if (c > upd.start) {\n c = upd.start\n }\n } else {\n if (c <= end && c >= upd.start) {\n c = end\n while (bitfield.get(c)) c++\n }\n }\n\n if (c === start) {\n return {\n length: -1\n }\n }\n\n if (c > start) {\n return {\n length: c\n }\n }\n\n return {\n length: c\n }\n}\n\nfunction getDefaultTree() {\n return {\n fork: 0,\n length: 0,\n rootHash: null,\n signature: null,\n timestamp: 0\n }\n}\n\nfunction parseHeader(info) {\n if (!info) return null\n\n return {\n key: info.key,\n manifest: info.manifest,\n external: null,\n keyPair: info.keyPair,\n tree: info.head || getDefaultTree(),\n group: info.group,\n hints: {\n reorgs: [],\n contiguousLength: info.hints ? info.hints.contiguousLength : 0,\n remoteContiguousLength: info.hints ? info.hints.remoteContiguousLength : 0,\n recovering: info.hints ? info.hints.recovering : 0\n }\n }\n}\n\nasync function maybeGetRootsFromStorage(storage, length) {\n try {\n return length ? await MerkleTree.getRootsFromStorage(storage, length) : []\n } catch (err) {\n if (err.code !== 'INVALID_OPERATION') throw err\n // If INVALID_OPERATION, a root is likely missing so load empty roots to try to recover\n return []\n }\n}\n\nfunction noop() {}\n\nasync function getCoreInfo(storage) {\n const r = storage.read()\n\n const auth = r.getAuth()\n const head = r.getHead()\n const hints = r.getHints()\n const group = r.getGroup()\n\n r.tryFlush()\n\n const [authInfo, headInfo, hintsInfo, groupInfo] = await Promise.all([auth, head, hints, group])\n return {\n ...authInfo,\n head: headInfo,\n hints: hintsInfo,\n group: groupInfo\n }\n}\nconst sodium = require('sodium-universal')\nconst c = require('compact-encoding')\nconst b4a = require('b4a')\nconst { DEFAULT_ENCRYPTION } = require('./caps')\n\nconst nonce = b4a.alloc(sodium.crypto_stream_NONCEBYTES)\n\nmodule.exports = class DefaultEncryption {\n static PADDING = 8\n\n constructor(encryptionKey, hypercoreKey, opts = {}) {\n this.key = encryptionKey\n this.compat = opts.compat === true\n\n const keys = DefaultEncryption.deriveKeys(encryptionKey, hypercoreKey, opts)\n\n this.blockKey = keys.block\n this.blindingKey = keys.blinding\n }\n\n static deriveKeys(encryptionKey, hypercoreKey, { block = false, compat = false } = {}) {\n const subKeys = b4a.alloc(2 * sodium.crypto_stream_KEYBYTES)\n\n const blockKey = block ? encryptionKey : subKeys.subarray(0, sodium.crypto_stream_KEYBYTES)\n const blindingKey = subKeys.subarray(sodium.crypto_stream_KEYBYTES)\n\n if (!block) {\n if (compat) {\n sodium.crypto_generichash_batch(blockKey, [encryptionKey], hypercoreKey)\n } else {\n sodium.crypto_generichash_batch(blockKey, [DEFAULT_ENCRYPTION, hypercoreKey, encryptionKey])\n }\n }\n\n sodium.crypto_generichash(blindingKey, blockKey)\n\n return {\n blinding: blindingKey,\n block: blockKey\n }\n }\n\n static blockEncryptionKey(hypercoreKey, encryptionKey) {\n const blockKey = b4a.alloc(sodium.crypto_stream_KEYBYTES)\n sodium.crypto_generichash_batch(blockKey, [DEFAULT_ENCRYPTION, hypercoreKey, encryptionKey])\n return blockKey\n }\n\n static encrypt(index, block, fork, blockKey, blindingKey) {\n const padding = block.subarray(0, DefaultEncryption.PADDING)\n block = block.subarray(DefaultEncryption.PADDING)\n\n c.uint64.encode({ start: 0, end: 8, buffer: padding }, fork)\n c.uint64.encode({ start: 0, end: 8, buffer: nonce }, index)\n\n // Zero out any previous padding.\n nonce.fill(0, 8, 8 + padding.byteLength)\n\n // Blind the fork ID, possibly risking reusing the nonce on a reorg of the\n // Hypercore. This is fine as the blinding is best-effort and the latest\n // fork ID shared on replication anyway.\n sodium.crypto_stream_xor(padding, padding, nonce, blindingKey)\n\n nonce.set(padding, 8)\n\n // The combination of a (blinded) fork ID and a block index is unique for a\n // given Hypercore and is therefore a valid nonce for encrypting the block.\n sodium.crypto_stream_xor(block, block, nonce, blockKey)\n }\n\n static decrypt(index, block, blockKey) {\n const padding = block.subarray(0, DefaultEncryption.PADDING)\n block = block.subarray(DefaultEncryption.PADDING)\n\n c.uint64.encode({ start: 0, end: 8, buffer: nonce }, index)\n\n nonce.set(padding, 8)\n\n // Decrypt the block using the blinded fork ID.\n sodium.crypto_stream_xor(block, block, nonce, blockKey)\n }\n\n encrypt(index, block, fork, core) {\n if (core.compat !== this.compat) this._reload(core)\n return DefaultEncryption.encrypt(index, block, fork, this.blockKey, this.blindingKey)\n }\n\n decrypt(index, block, core) {\n if (core.compat !== this.compat) this._reload(core)\n return DefaultEncryption.decrypt(index, block, this.blockKey)\n }\n\n padding() {\n return DefaultEncryption.PADDING\n }\n\n _reload(core) {\n const block = b4a.equals(this.key, this.blockKey)\n const keys = DefaultEncryption.deriveKeys(this.key, core.key, { block, compat: core.compat })\n\n this.blockKey = keys.blockKey\n this.blindingKey = keys.blindingKey\n }\n}\nmodule.exports = class Download {\n constructor(session, range) {\n this.session = session\n this.range = range\n this.request = null\n this.opened = false\n this.opening = this._open()\n this.opening.catch(noop)\n }\n\n ready() {\n return this.opening\n }\n\n async _open() {\n if (this.session.opened === false) await this.session.opening\n this._download()\n this.opened = true\n }\n\n async done() {\n await this.ready()\n\n try {\n return await this.request.promise\n } catch (err) {\n if (isSessionMoved(err)) return this._download()\n throw err\n }\n }\n\n _download() {\n const activeRequests = (this.range && this.range.activeRequests) || this.session.activeRequests\n this.request = this.session.core.replicator.addRange(activeRequests, this.range)\n this.request.promise.catch(noop)\n return this.request.promise\n }\n\n /**\n * Deprecated. Use `range.done()`.\n */\n downloaded() {\n return this.done()\n }\n\n destroy() {\n this._destroyBackground().catch(noop)\n }\n\n async _destroyBackground() {\n if (this.opened === false) await this.ready()\n if (this.request.context) this.request.context.detach(this.request)\n }\n}\n\nfunction noop() {}\n\nfunction isSessionMoved(err) {\n return err.code === 'SESSION_MOVED'\n}\nmodule.exports = {\n SMALL_WANTS: 1\n}\n// this helper is for fully remote proofs, is like in a push notification where no other context exists\n\nconst { MerkleTree } = require('./merkle-tree.js')\nconst messages = require('./messages.js')\nconst b4a = require('b4a')\nconst c = require('compact-encoding')\nconst crypto = require('hypercore-crypto')\nconst flat = require('flat-tree')\n\nclass SlimSession {\n constructor(storage, auth, head, roots) {\n this.fork = head ? head.fork : 0\n this.roots = roots\n this.length = head ? head.length : 0\n this.signature = head ? head.signature : null\n this.ancestors = this.length\n this.byteLength = 0\n this.prologue = auth.manifest.prologue\n this.storage = storage\n\n for (let i = 0; i < roots.length; i++) this.byteLength += roots[i].size\n }\n}\n\nmodule.exports = { verify, proof }\n\nasync function verify(storage, buffer, { referrer = null } = {}) {\n const state = { buffer, start: 0, end: buffer.byteLength }\n\n const discoveryKey = c.fixed32.decode(state)\n const proof = messages.wire.data.decode(state)\n\n const result = {\n key: null,\n discoveryKey,\n newer: true,\n length: 0,\n proof,\n block: null\n }\n\n const core = await storage.resumeCore(discoveryKey)\n if (core === null) return null\n\n let rx = core.read()\n const authPromise = rx.getAuth()\n const headPromise = rx.getHead()\n const referrerPromise = rx.getUserData('referrer')\n\n rx.tryFlush()\n\n const [auth, head, ref] = await Promise.all([authPromise, headPromise, referrerPromise])\n\n if (auth === null) return null\n\n if (referrer && (!ref || !b4a.equals(ref, referrer))) return null\n\n rx = core.read()\n\n const rootPromises = []\n\n for (const index of flat.fullRoots(head ? 2 * head.length : 0)) {\n rootPromises.push(rx.getTreeNode(index))\n }\n\n rx.tryFlush()\n\n let roots = await Promise.all(rootPromises)\n if (roots.some(isNull)) roots = []\n\n const length = head ? head.length : 0\n\n if (!auth.manifest || !auth.manifest.signers.length) return null\n\n const batch = await MerkleTree.verifyFullyRemote(new SlimSession(core, auth, head, roots), proof)\n const publicKey = auth.manifest.signers[0].publicKey\n\n let signable = null\n let signature = null\n\n if (auth.manifest.version === 0) {\n signable = batch.signable(auth.manifest.signers[0].namespace)\n signature = batch.signature\n } else {\n if (batch.signature[0] !== 1) return null\n if (batch.signature[1] !== 0) return null\n\n signable = batch.signable(auth.key)\n signature = batch.signature.subarray(2, 66)\n }\n\n if (!crypto.verify(signable, signature, publicKey)) {\n return null\n }\n\n result.key = auth.key\n result.discoveryKey = discoveryKey\n result.newer = batch.length > length\n result.length = batch.length\n result.block = proof.block\n\n return result\n}\n\nasync function proof(sender, { index, block = null, upgrade = null } = {}) {\n const proof = await sender.proof({\n block: block ? { index, nodes: 0 } : null,\n upgrade: upgrade ? upgrade : { start: 0, length: sender.length }\n })\n\n if (block) proof.block.value = block\n proof.manifest = sender.core.header.manifest\n\n const state = { buffer: null, start: 0, end: 0 }\n const data = { request: 0, ...proof }\n\n c.fixed32.preencode(state, sender.discoveryKey)\n messages.wire.data.preencode(state, data)\n\n state.buffer = b4a.allocUnsafe(state.end)\n\n c.fixed32.encode(state, sender.discoveryKey)\n messages.wire.data.encode(state, data)\n\n return state.buffer\n}\n\nfunction isNull(x) {\n return x === null\n}\nconst TICKS = 16\n\nmodule.exports = class HotswapQueue {\n constructor() {\n this.priorities = [[], [], []]\n }\n\n *pick(peer) {\n for (let i = 0; i < this.priorities.length; i++) {\n // try first one more than second one etc etc\n let ticks = (this.priorities.length - i) * TICKS\n const queue = this.priorities[i]\n\n for (let j = 0; j < queue.length; j++) {\n const r = j + Math.floor(Math.random() * queue.length - j)\n const a = queue[j]\n const b = queue[r]\n\n if (r !== j) {\n queue[(b.hotswap.index = j)] = b\n queue[(a.hotswap.index = r)] = a\n }\n\n if (hasInflight(b, peer)) continue\n\n yield b\n\n if (--ticks <= 0) break\n }\n }\n }\n\n add(block) {\n if (block.hotswap !== null) this.remove(block)\n if (block.inflight.length === 0 || block.inflight.length >= 3) return\n\n // TODO: also use other stuff to determine queue prio\n const queue = this.priorities[block.inflight.length - 1]\n\n const index = queue.push(block) - 1\n block.hotswap = { ref: this, queue, index }\n }\n\n remove(block) {\n const hotswap = block.hotswap\n if (hotswap === null) return\n\n block.hotswap = null\n const head = hotswap.queue.pop()\n if (head === block) return\n hotswap.queue[(head.hotswap.index = hotswap.index)] = head\n }\n}\n\nfunction hasInflight(block, peer) {\n for (let j = 0; j < block.inflight.length; j++) {\n if (block.inflight[j].peer === peer) return true\n }\n return false\n}\nmodule.exports = class Info {\n constructor(opts = {}) {\n this.key = opts.key\n this.discoveryKey = opts.discoveryKey\n this.length = opts.length || 0\n this.contiguousLength = opts.contiguousLength || 0\n this.byteLength = opts.byteLength || 0\n this.fork = opts.fork || 0\n this.padding = opts.padding || 0\n this.storage = opts.storage || null\n }\n\n static async from(session, opts = {}) {\n return new Info({\n key: session.key,\n discoveryKey: session.discoveryKey,\n length: session.length,\n contiguousLength: session.contiguousLength,\n byteLength: session.byteLength,\n fork: session.fork,\n padding: session.padding,\n storage: opts.storage ? await this.storage(session) : null\n })\n }\n\n static async storage(session) {\n const { oplog, tree, blocks, bitfield } = session.core\n try {\n return {\n oplog: await Info.bytesUsed(oplog.storage),\n tree: await Info.bytesUsed(tree.storage),\n blocks: await Info.bytesUsed(blocks.storage),\n bitfield: await Info.bytesUsed(bitfield.storage)\n }\n } catch {\n return null\n }\n }\n\n static bytesUsed(file) {\n return new Promise((resolve, reject) => {\n file.stat((err, st) => {\n if (err) {\n resolve(0) // prob just file not found (TODO, improve)\n } else if (typeof st.blocks !== 'number') {\n reject(new Error('cannot determine bytes used'))\n } else {\n resolve(st.blocks * 512)\n }\n })\n })\n }\n}\nconst b4a = require('b4a')\n\nmodule.exports = function (core, depth, opts) {\n let indent = ''\n if (typeof opts.indentationLvl === 'number') {\n while (indent.length < opts.indentationLvl) indent += ' '\n }\n\n let peers = ''\n const min = Math.min(core.peers.length, 5)\n\n for (let i = 0; i < min; i++) {\n const peer = core.peers[i]\n\n peers += `${indent} Peer(\\n`\n peers += `${indent} remotePublicKey: ${opts.stylize(toHex(peer.remotePublicKey), 'string')}\\n`\n peers += `${indent} remoteLength: ${opts.stylize(peer.remoteLength, 'number')}\\n`\n peers += `${indent} remoteFork: ${opts.stylize(peer.remoteFork, 'number')}\\n`\n peers += `${indent} remoteCanUpgrade: ${opts.stylize(peer.remoteCanUpgrade, 'boolean')}\\n`\n peers += `${indent} )\\n`\n }\n\n if (core.peers.length > 5) {\n peers += `${indent} ... and ${core.peers.length - 5} more\\n`\n }\n\n if (peers) peers = `[\\n${peers}${indent} ]`\n else peers = `[ ${opts.stylize(0, 'number')} ]`\n\n return (\n `${core.constructor.name}(\\n` +\n `${indent} id: ${opts.stylize(core.id, 'string')}\\n` +\n `${indent} key: ${opts.stylize(toHex(core.key), 'string')}\\n` +\n `${indent} discoveryKey: ${opts.stylize(toHex(core.discoveryKey), 'string')}\\n` +\n `${indent} opened: ${opts.stylize(core.opened, 'boolean')}\\n` +\n `${indent} closed: ${opts.stylize(core.closed, 'boolean')}\\n` +\n `${indent} snapshotted: ${opts.stylize(core.snapshotted, 'boolean')}\\n` +\n `${indent} writable: ${opts.stylize(core.writable, 'boolean')}\\n` +\n `${indent} length: ${opts.stylize(core.length, 'number')}\\n` +\n `${indent} fork: ${opts.stylize(core.fork, 'number')}\\n` +\n `${indent} sessions: [ ${opts.stylize(core.sessions.length, 'number')} ]\\n` +\n `${indent} activeRequests: [ ${opts.stylize(core.activeRequests.length, 'number')} ]\\n` +\n `${indent} peers: ${peers}\\n` +\n `${indent})`\n )\n}\n\nfunction toHex(buf) {\n return buf && b4a.toString(buf, 'hex')\n}\nconst BigSparseArray = require('big-sparse-array')\nconst { Transform } = require('streamx')\nconst quickbit = require('./compat').quickbit\nconst b4a = require('b4a')\n\nconst BITS_PER_PAGE = 32768\nconst BYTES_PER_PAGE = BITS_PER_PAGE / 8\n\nclass MarkPage {\n constructor() {\n this.bitfield = null\n this.loaded = new Promise((resolve) => {\n this.load = resolve\n })\n }\n\n setBitfield(bitfield) {\n this.bitfield = bitfield\n this.load()\n }\n\n get(index) {\n return quickbit.get(this.bitfield, index)\n }\n\n set(index, val) {\n quickbit.set(this.bitfield, index, val)\n }\n}\n\nmodule.exports = class MarkBitfield {\n static BITS_PER_PAGE = BITS_PER_PAGE\n static BYTES_PER_PAGE = BYTES_PER_PAGE\n\n constructor(storage) {\n this.storage = storage\n this._pages = new BigSparseArray()\n }\n\n async loadPage(pageIndex) {\n const p = this._pages.set(pageIndex, new MarkPage())\n const rx = this.storage.read()\n const pageBuf = rx.getMark(pageIndex)\n rx.tryFlush()\n const bitfield = (await pageBuf) ?? b4a.alloc(BYTES_PER_PAGE)\n await p.setBitfield(bitfield)\n return p\n }\n\n async get(index) {\n const j = index & (BITS_PER_PAGE - 1)\n const i = (index - j) / BITS_PER_PAGE\n\n let p = this._pages.get(i)\n if (!p) p = await this.loadPage(i)\n\n return p.get(j)\n }\n\n async set(index, val) {\n const j = index & (BITS_PER_PAGE - 1)\n const i = (index - j) / BITS_PER_PAGE\n\n let p = this._pages.get(i)\n\n if (!p && val) p = await this.loadPage(i)\n\n if (p) {\n await p.loaded\n p.set(j, val)\n const tx = this.storage.write()\n tx.putMark(i, p.bitfield)\n await tx.flush()\n }\n }\n\n async clear() {\n const tx = this.storage.write()\n tx.deleteMarkRange(0, -1)\n await tx.flush()\n this._pages = new BigSparseArray()\n }\n\n createMarkStream({ reverse = false } = {}) {\n return this.storage.createMarkStream({ reverse }).pipe(\n new Transform({\n transform({ index, page }, cb) {\n let bitIndex = reverse\n ? quickbit.findLast(page, true, BITS_PER_PAGE)\n : quickbit.findFirst(page, true, 0)\n while (bitIndex !== -1) {\n const blockIndex = index * BITS_PER_PAGE + bitIndex\n this.push(blockIndex)\n\n // Account for `bitIndex` being either causing infinite loop\n if (bitIndex === 0 && reverse) break\n\n bitIndex = reverse\n ? quickbit.findLast(page, true, bitIndex - 1)\n : quickbit.findFirst(page, true, bitIndex + 1)\n }\n\n cb(null)\n }\n })\n )\n }\n}\nconst flat = require('flat-tree')\nconst crypto = require('hypercore-crypto')\nconst b4a = require('b4a')\nconst unslab = require('unslab')\nconst caps = require('./caps')\nconst {\n INVALID_PROOF,\n INVALID_CHECKSUM,\n INVALID_OPERATION,\n BAD_ARGUMENT,\n ASSERTION\n} = require('hypercore-errors')\n\nclass NodeQueue {\n constructor(nodes, extra = null) {\n this.i = 0\n this.nodes = nodes\n this.extra = extra\n this.length = nodes.length + (this.extra === null ? 0 : 1)\n }\n\n shift(index) {\n if (this.extra !== null && this.extra.index === index) {\n const node = this.extra\n this.extra = null\n this.length--\n return node\n }\n\n if (this.i >= this.nodes.length) {\n throw INVALID_OPERATION('Expected node ' + index + ', got (nil)')\n }\n\n const node = this.nodes[this.i++]\n if (node.index !== index) {\n throw INVALID_OPERATION('Expected node ' + index + ', got node ' + node.index)\n }\n\n this.length--\n return node\n }\n}\n\nclass MerkleTreeBatch {\n constructor(session) {\n this.fork = session.fork\n this.roots = [...session.roots]\n this.length = session.length\n this.signature = session.signature\n this.ancestors = session.length\n this.byteLength = session.byteLength\n this.prologue = session.prologue\n this.hashCached = null\n\n this.committed = false\n this.truncated = false\n this.treeLength = session.length\n this.treeFork = session.fork\n this.storage = session.storage\n this.session = session\n this.nodes = []\n this.upgraded = false\n }\n\n checkout(length, additionalRoots) {\n const roots = []\n let r = 0\n\n const head = 2 * length - 2\n const gaps = new Set()\n const all = new Map()\n\n // additional roots is so the original roots can be passed (we mutate the array in appendRoot)\n if (additionalRoots) {\n for (const node of additionalRoots) all.set(node.index, node)\n }\n\n for (const node of this.nodes) all.set(node.index, node)\n\n for (const index of flat.fullRoots(head + 2)) {\n const left = flat.leftSpan(index)\n if (left !== 0) gaps.add(left - 1)\n\n if (r < this.roots.length && this.roots[r].index === index) {\n roots.push(this.roots[r++])\n continue\n }\n const node = all.get(index)\n if (!node) throw new BAD_ARGUMENT('root missing for given length')\n roots.push(node)\n }\n\n this.roots = roots\n this.length = length\n this.byteLength = totalSize(roots)\n this.hashCached = null\n this.signature = null\n\n for (let i = 0; i < this.nodes.length; i++) {\n const index = this.nodes[i].index\n if (index <= head && !gaps.has(index)) continue\n const last = this.nodes.pop()\n if (i < this.nodes.length) this.nodes[i--] = last\n }\n }\n\n prune(length) {\n if (length === 0) return\n\n const head = 2 * length - 2\n const gaps = new Set()\n\n // TODO: make a function for this in flat-tree\n for (const index of flat.fullRoots(head + 2)) {\n const left = flat.leftSpan(index)\n if (left !== 0) gaps.add(left - 1)\n }\n\n for (let i = 0; i < this.nodes.length; i++) {\n const index = this.nodes[i].index\n if (index > head || gaps.has(index)) continue\n const last = this.nodes.pop()\n if (i < this.nodes.length) this.nodes[i--] = last\n }\n }\n\n clone() {\n const b = new MerkleTreeBatch(this.session)\n\n b.fork = this.fork\n b.roots = [...this.roots]\n b.length = this.length\n b.byteLength = this.byteLength\n b.signature = this.signature\n b.treeLength = this.treeLength\n b.treeFork = this.treeFork\n b.tree = this.tree\n b.nodes = [...this.nodes]\n b.upgraded = this.upgraded\n\n return b\n }\n\n hash() {\n if (this.hashCached === null) this.hashCached = unslab(crypto.tree(this.roots))\n return this.hashCached\n }\n\n signable(manifestHash) {\n return caps.treeSignable(manifestHash, this.hash(), this.length, this.fork)\n }\n\n signableCompat(noHeader) {\n return caps.treeSignableCompat(this.hash(), this.length, this.fork, noHeader)\n }\n\n get(index) {\n if (index >= this.length * 2) {\n return null\n }\n\n for (const n of this.nodes) {\n if (n.index === index) return n\n }\n\n return getTreeNodeFromStorage(this.session.storage, index)\n }\n\n // deprecated, use sssion proof instead\n proof(batch, { block, hash, seek, upgrade }) {\n return generateProof(this.session, batch, block, hash, seek, upgrade)\n }\n\n verifyUpgrade(proof) {\n const unverified = verifyTree(proof, this.nodes)\n\n if (!proof.upgrade) throw INVALID_OPERATION('Expected upgrade proof')\n\n return verifyUpgrade(proof, unverified, this)\n }\n\n addNodesUnsafe(nodes) {\n for (let i = 0; i < nodes.length; i++) {\n this.nodes.push(nodes[i])\n }\n }\n\n append(buf) {\n const head = this.length * 2\n const ite = flat.iterator(head)\n const node = blockNode(head, buf)\n\n this.appendRoot(node, ite)\n }\n\n appendRoot(node, ite) {\n node = unslabNode(node)\n this.hashCached = null\n this.upgraded = true\n this.length += ite.factor / 2\n this.byteLength += node.size\n this.roots.push(node)\n this.nodes.push(node)\n\n while (this.roots.length > 1) {\n const a = this.roots[this.roots.length - 1]\n const b = this.roots[this.roots.length - 2]\n\n // TODO: just have a peek sibling instead? (pretty sure it's always the left sib as well)\n if (ite.sibling() !== b.index) {\n ite.sibling() // unset so it always points to last root\n break\n }\n\n const node = unslabNode(parentNode(ite.parent(), a, b))\n this.nodes.push(node)\n this.roots.pop()\n this.roots.pop()\n this.roots.push(node)\n }\n }\n\n commitable() {\n return (\n this.treeFork === this.session.fork &&\n (this.upgraded\n ? this.treeLength === this.session.length\n : this.treeLength <= this.session.length)\n )\n }\n\n commit(tx) {\n if (tx === undefined) throw INVALID_OPERATION('No database batch was passed')\n\n if (this.session.core._repairMode) {\n throw ASSERTION('Cannot commit while repair mode is on')\n }\n\n if (!this.commitable()) {\n throw INVALID_OPERATION('Tree was modified during batch, refusing to commit')\n }\n\n if (this.upgraded) this._commitUpgrade(tx)\n\n for (let i = 0; i < this.nodes.length; i++) {\n const node = this.nodes[i]\n tx.putTreeNode(node)\n }\n\n this.committed = true\n\n return this\n }\n\n _commitUpgrade(tx) {\n // TODO: If easy to detect, we should refuse an trunc+append here without a fork id\n // change. Will only happen on user error so mostly to prevent that.\n\n if (this.ancestors < this.treeLength) {\n tx.deleteTreeNodeRange(this.ancestors * 2, this.treeLength * 2)\n\n if (this.ancestors > 0) {\n const head = this.ancestors * 2\n const ite = flat.iterator(head - 2)\n\n while (true) {\n if (ite.contains(head) && ite.index < head) {\n tx.deleteTreeNode(ite.index)\n }\n if (ite.offset === 0) break\n ite.parent()\n }\n\n this.truncated = true\n }\n }\n }\n\n seek(bytes, padding) {\n return new ByteSeeker(this, this, bytes, padding)\n }\n\n byteRange(index) {\n const rx = this.storage.read()\n const range = getByteRange(this, index, rx)\n rx.tryFlush()\n\n return range\n }\n\n byteOffset(index) {\n if (index === 2 * this.length) return this.byteLength\n\n const rx = this.storage.read()\n const offset = getByteOffset(this, index, rx)\n rx.tryFlush()\n\n return offset\n }\n\n async downgrade() {\n if (!this.upgraded) return true\n\n const rx = this.storage.read()\n const nodePromises = []\n\n for (const r of this.roots) {\n nodePromises.push(rx.getTreeNode(r.index))\n }\n\n rx.tryFlush()\n\n const nodes = await Promise.all(nodePromises)\n\n for (let i = 0; i < this.roots.length; i++) {\n const root = this.roots[i]\n const node = nodes[i]\n\n if (!node) return false\n if (!b4a.equals(node.hash, root.hash)) return false\n }\n\n this.upgraded = false\n return true\n }\n\n async restore(length) {\n if (length === this.length) return this\n\n const roots = unslabNodes(await MerkleTree.getRootsFromStorage(this.storage, length))\n\n this.roots = roots\n this.length = length\n this.byteLength = totalSize(roots)\n this.ancestors = length\n\n for (const node of roots) this.byteLength += node.size\n\n return this\n }\n}\n\nclass ReorgBatch extends MerkleTreeBatch {\n constructor(session) {\n super(session)\n\n this.roots = []\n this.length = 0\n this.byteLength = 0\n this.diff = null\n this.ancestors = 0\n // We set upgraded because reorgs are signed so hit will\n // hit the same code paths (like the treeLength check in commit)\n this.upgraded = true\n this.want = {\n nodes: 0,\n start: 0,\n end: 0\n }\n }\n\n get finished() {\n return this.want === null\n }\n\n update(proof) {\n if (this.want === null) return true\n\n const nodes = []\n const root = verifyTree(proof, nodes)\n\n if (root === null || !b4a.equals(root.hash, this.diff.hash)) return false\n\n this.nodes.push(...nodes)\n return this._update(nodes)\n }\n\n async _update(nodes) {\n const n = new Map()\n for (const node of nodes) n.set(node.index, node)\n\n let diff = null\n const ite = flat.iterator(this.diff.index)\n const startingDiff = this.diff\n\n while ((ite.index & 1) !== 0) {\n const left = n.get(ite.leftChild())\n if (!left) break\n\n const existing = await getTreeNodeFromStorage(this.session.storage, left.index)\n if (!existing || !b4a.equals(existing.hash, left.hash)) {\n diff = left\n } else {\n diff = n.get(ite.sibling())\n }\n }\n\n if ((this.diff.index & 1) === 0) return true\n if (diff === null) return false\n if (startingDiff !== this.diff) return false\n\n return this._updateDiffRoot(diff)\n }\n\n _updateDiffRoot(diff) {\n if (this.want === null) return true\n\n const spans = flat.spans(diff.index)\n const start = spans[0] / 2\n const end = Math.min(this.treeLength, spans[1] / 2 + 1)\n const len = end - start\n\n this.ancestors = start\n this.diff = diff\n\n if ((diff.index & 1) === 0 || this.want.start >= this.treeLength || len <= 0) {\n this.want = null\n return true\n }\n\n this.want.start = start\n this.want.end = end\n this.want.nodes = log2(spans[1] - spans[0] + 2) - 1\n\n return false\n }\n}\n\nclass ByteSeeker {\n constructor(session, bytes, padding = 0) {\n this.session = session\n this.bytes = bytes\n this.padding = padding\n\n const size = session.byteLength - session.length * padding\n\n this.start = bytes >= size ? session.length : 0\n this.end = bytes < size ? session.length : 0\n }\n\n async _seek(bytes) {\n if (!bytes) return [0, 0]\n\n for (const node of this.session.roots) {\n // all async ticks happen once we find the root so safe\n const size = getUnpaddedSize(node, this.padding, null)\n\n if (bytes === size) return [flat.rightSpan(node.index) + 2, 0]\n if (bytes > size) {\n bytes -= size\n continue\n }\n\n const ite = flat.iterator(node.index)\n\n while ((ite.index & 1) !== 0) {\n const l = await getTreeNodeFromStorage(this.session.storage, ite.leftChild())\n\n if (l) {\n const size = getUnpaddedSize(l, this.padding, ite)\n\n if (size === bytes) return [ite.rightSpan() + 2, 0]\n if (size > bytes) continue\n bytes -= size\n ite.sibling()\n } else {\n ite.parent()\n return [ite.index, bytes]\n }\n }\n\n return [ite.index, bytes]\n }\n\n return null\n }\n\n async update() {\n // TODO: combine _seek and this, much simpler\n const res = await this._seek(this.bytes)\n if (!res) return null\n if ((res[0] & 1) === 0) return [res[0] / 2, res[1]]\n\n const span = flat.spans(res[0])\n this.start = span[0] / 2\n this.end = span[1] / 2 + 1\n\n return null\n }\n}\n\nclass TreeProof {\n constructor(session, block, hash, seek, upgrade) {\n this.fork = session.fork\n this.signature = session.signature\n\n this.block = block\n this.hash = hash\n this.seek = seek\n this.upgrade = upgrade\n\n this.pending = {\n node: null,\n seek: null,\n upgrade: null,\n additionalUpgrade: null\n }\n }\n\n async settle() {\n const result = {\n fork: this.fork,\n block: null,\n hash: null,\n seek: null,\n upgrade: null,\n manifest: null\n }\n\n const [pNode, pSeek, pUpgrade, pAdditional] = await settleProof(this.pending)\n\n if (this.block) {\n if (pNode === null) throw INVALID_OPERATION('Invalid block request')\n result.block = {\n index: this.block.index,\n value: null, // populated upstream, alloc it here for simplicity\n nodes: pNode\n }\n } else if (this.hash) {\n if (pNode === null) throw INVALID_OPERATION('Invalid block request')\n result.hash = {\n index: this.hash.index,\n nodes: pNode\n }\n }\n\n if (this.seek && pSeek !== null) {\n result.seek = {\n bytes: this.seek.bytes,\n nodes: pSeek\n }\n }\n\n if (this.upgrade) {\n result.upgrade = {\n start: this.upgrade.start,\n length: this.upgrade.length,\n nodes: pUpgrade,\n additionalNodes: pAdditional || [],\n signature: this.signature\n }\n }\n\n return result\n }\n}\n\nclass MerkleTree {\n static hash(s) {\n return unslab(crypto.tree(s.roots))\n }\n\n static signable(s, namespace) {\n return caps.treeSignable(namespace, MerkleTree.hash(s), s.length, s.fork)\n }\n\n static size(roots) {\n return totalSize(roots)\n }\n\n static span(roots) {\n return totalSpan(roots)\n }\n\n static getRoots(session, length) {\n return MerkleTree.getRootsFromStorage(session.storage, length)\n }\n\n static getRootsFromStorage(storage, length) {\n const indexes = flat.fullRoots(2 * length)\n const roots = new Array(indexes.length)\n const rx = storage.read()\n\n for (let i = 0; i < indexes.length; i++) {\n roots[i] = getTreeNodeOrError(rx, indexes[i])\n }\n\n rx.tryFlush()\n\n return Promise.all(roots)\n }\n\n static async upgradeable(session, length) {\n const indexes = flat.fullRoots(2 * length)\n const roots = new Array(indexes.length)\n const rx = session.storage.read()\n\n for (let i = 0; i < indexes.length; i++) {\n roots[i] = rx.getTreeNode(indexes[i])\n }\n\n rx.tryFlush()\n\n for (const node of await Promise.all(roots)) {\n if (node === null) return false\n }\n\n return true\n }\n\n static seek(session, bytes, padding) {\n return new ByteSeeker(session, bytes, padding)\n }\n\n static get(session, index) {\n return getTreeNodeFromStorage(session.storage, index)\n }\n\n static async truncate(session, length, batch, fork = batch.fork) {\n const head = length * 2\n const fullRoots = flat.fullRoots(head)\n\n for (let i = 0; i < fullRoots.length; i++) {\n const root = fullRoots[i]\n if (i < batch.roots.length && batch.roots[i].index === root) continue\n\n while (batch.roots.length > i) batch.roots.pop()\n batch.roots.push(unslabNode(await getTreeNodeFromStorageOrError(session.storage, root)))\n }\n\n while (batch.roots.length > fullRoots.length) {\n batch.roots.pop()\n }\n\n batch.fork = fork\n batch.length = length\n batch.ancestors = length\n batch.byteLength = totalSize(batch.roots)\n batch.upgraded = true\n\n return batch\n }\n\n static async reorg(session, proof, batch) {\n let unverified = null\n\n if (proof.block || proof.hash || proof.seek) {\n unverified = verifyTree(proof, batch.nodes)\n }\n\n if (!verifyUpgrade(proof, unverified, batch)) {\n throw INVALID_PROOF('Fork proof not verifiable')\n }\n\n for (const root of batch.roots) {\n const existing = await getTreeNodeFromStorage(session.storage, root.index)\n if (existing && b4a.equals(existing.hash, root.hash)) continue\n batch._updateDiffRoot(root)\n break\n }\n\n if (batch.diff !== null) {\n await batch._update(batch.nodes)\n } else {\n batch.want = null\n batch.ancestors = batch.length\n }\n\n return batch\n }\n\n static verifyFullyRemote(session, proof) {\n // TODO: impl this less hackishly\n const batch = new MerkleTreeBatch(session)\n\n batch.fork = proof.fork\n batch.roots = []\n batch.length = 0\n batch.ancestors = 0\n batch.byteLength = 0\n\n let unverified = verifyTree(proof, batch.nodes)\n\n if (proof.upgrade) {\n if (verifyUpgrade(proof, unverified, batch)) {\n unverified = null\n }\n }\n\n return batch\n }\n\n static async verify(session, proof) {\n const batch = new MerkleTreeBatch(session)\n\n let unverified = verifyTree(proof, batch.nodes)\n\n if (proof.upgrade) {\n if (verifyUpgrade(proof, unverified, batch)) {\n unverified = null\n }\n }\n\n if (unverified) {\n const verified = await getTreeNodeFromStorageOrError(session.storage, unverified.index)\n if (!b4a.equals(verified.hash, unverified.hash)) {\n throw INVALID_CHECKSUM('Invalid checksum at node ' + unverified.index)\n }\n }\n\n return batch\n }\n\n static proof(session, rx, { block, hash, seek, upgrade }) {\n return generateProof(session, rx, block, hash, seek, upgrade)\n }\n\n static maxMissingNodes(index, length) {\n const head = 2 * length\n const ite = flat.iterator(index)\n\n // See iterator.rightSpan()\n const iteRightSpan = ite.index + ite.factor / 2 - 1\n // If the index is not in the current tree, we do not know how many missing nodes there are...\n if (iteRightSpan >= head) return 0\n\n for (const r of flat.fullRoots(head)) {\n if (r === index) return 0\n }\n\n // need missing nodes not inclusive of index\n ite.parent()\n\n let cnt = 0\n while (!ite.contains(head)) {\n cnt++\n ite.parent()\n }\n\n return cnt\n }\n\n static async missingNodes(session, index, length) {\n const head = 2 * length\n const ite = flat.iterator(index)\n\n // See iterator.rightSpan()\n const iteRightSpan = ite.index + ite.factor / 2 - 1\n // If the index is not in the current tree, we do not know how many missing nodes there are...\n if (iteRightSpan >= head) return 0\n\n let cnt = 0\n // TODO: we could prop use a read batch here and do this in blocks of X for perf\n while (!ite.contains(head) && !(await hasTreeNode(session.storage, ite.index))) {\n cnt++\n if (cnt >= 1024) {\n throw ASSERTION('Bad arguments to missingNodes index=' + index + ' at length=' + length)\n }\n ite.parent()\n }\n\n return cnt\n }\n\n static byteOffset(session, index) {\n return getByteOffsetSession(session, index, null)\n }\n\n static byteRange(session, index) {\n const rx = session.storage.read()\n const offset = getByteOffsetSession(session, index, rx)\n const size = getNodeSize(index, rx)\n rx.tryFlush()\n return Promise.all([offset, size])\n }\n\n static upgradeLength(proof) {\n const extra = proof.additionalNodes\n\n if (extra.length) {\n const last = extra[extra.length - 1]\n const index = flat.rightSpan(last.index)\n return index / 2 + 1\n }\n\n return proof.start + proof.length\n }\n}\n\nmodule.exports = {\n MerkleTreeBatch,\n ReorgBatch,\n MerkleTree\n}\n\nasync function getNodeSize(index, rx) {\n return (await getTreeNodeOrError(rx, index)).size\n}\n\nasync function getByteOffsetSession(session, index, rx) {\n if (index === 2 * session.length) return session.byteLength\n\n const treeNodes =\n rx === null\n ? await getByteOffsetBatchFlush(session.roots, index, session.storage.read())\n : await getByteOffsetBatch(session.roots, index, rx)\n\n let offset = 0\n for (const node of treeNodes) offset += node.size\n\n return offset\n}\n\nasync function getByteOffset(tree, index, rx) {\n if (index === 2 * tree.length) return tree.byteLength\n\n const treeNodes = await getByteOffsetBatch(tree.roots, index, rx)\n\n let offset = 0\n for (const node of treeNodes) offset += node.size\n\n return offset\n}\n\nfunction getByteOffsetBatchFlush(roots, index, rx) {\n const treeNodes = getByteOffsetBatch(roots, index, rx)\n rx.tryFlush()\n return treeNodes\n}\n\nfunction getByteOffsetBatch(roots, index, rx) {\n if ((index & 1) === 1) index = flat.leftSpan(index)\n\n let head = 0\n let cnt = 0\n\n const promises = []\n\n for (const node of roots) {\n // all async ticks happen once we find the root so safe\n head += 2 * (node.index - head + 1)\n\n if (index >= head) {\n promises.push(node.size)\n continue\n }\n\n const ite = flat.iterator(node.index)\n\n while (ite.index !== index) {\n if (++cnt >= 1024) throw ASSERTION('Bad getByteOffsetSession index=' + index)\n\n if (index < ite.index) {\n ite.leftChild()\n } else {\n promises.push(getTreeNodeOrError(rx, ite.leftChild()))\n ite.sibling()\n }\n }\n\n return Promise.all(promises)\n }\n\n throw ASSERTION('Failed to find offset')\n}\n\nfunction getByteRange(tree, index, rx) {\n const head = 2 * tree.length\n if (((index & 1) === 0 ? index : flat.rightSpan(index)) >= head) {\n throw BAD_ARGUMENT('Index is out of bounds')\n }\n\n const offset = getByteOffset(tree, index, rx)\n const size = getNodeSize(index, rx)\n\n return Promise.all([offset, size])\n}\n\n// All the methods needed for proof verification\n\nfunction verifyTree({ block, hash, seek }, nodes) {\n const untrustedNode = block\n ? { index: 2 * block.index, value: block.value, nodes: block.nodes }\n : hash\n ? { index: hash.index, value: null, nodes: hash.nodes }\n : null\n\n if (untrustedNode === null && (!seek || !seek.nodes.length)) return null\n\n let root = null\n\n if (seek && seek.nodes.length) {\n const ite = flat.iterator(seek.nodes[0].index)\n const q = new NodeQueue(seek.nodes)\n\n root = q.shift(ite.index)\n nodes.push(root)\n\n while (q.length > 0) {\n const node = q.shift(ite.sibling())\n\n root = parentNode(ite.parent(), root, node)\n nodes.push(node)\n nodes.push(root)\n }\n }\n\n if (untrustedNode === null) return root\n\n const ite = flat.iterator(untrustedNode.index)\n const blockHash = untrustedNode.value && blockNode(ite.index, untrustedNode.value)\n\n const q = new NodeQueue(untrustedNode.nodes, root)\n\n root = blockHash || q.shift(ite.index)\n nodes.push(root)\n\n while (q.length > 0) {\n const node = q.shift(ite.sibling())\n\n root = parentNode(ite.parent(), root, node)\n nodes.push(node)\n nodes.push(root)\n }\n\n return root\n}\n\nfunction verifyUpgrade({ fork, upgrade }, blockRoot, batch) {\n const prologue = batch.prologue\n\n if (prologue) {\n const { start, length } = upgrade\n if (start < prologue.length && (start !== 0 || length < prologue.length)) {\n throw INVALID_PROOF('Upgrade does not satisfy prologue')\n }\n }\n\n const q = new NodeQueue(upgrade.nodes, blockRoot)\n\n let grow = batch.roots.length > 0\n let i = 0\n\n const to = 2 * (upgrade.start + upgrade.length)\n const ite = flat.iterator(0)\n\n for (; ite.fullRoot(to); ite.nextTree()) {\n if (i < batch.roots.length && batch.roots[i].index === ite.index) {\n i++\n continue\n }\n\n if (grow) {\n grow = false\n const root = ite.index\n if (i < batch.roots.length) {\n ite.seek(batch.roots[batch.roots.length - 1].index)\n while (ite.index !== root) {\n batch.appendRoot(q.shift(ite.sibling()), ite)\n }\n continue\n }\n }\n\n batch.appendRoot(q.shift(ite.index), ite)\n }\n\n if (prologue && batch.length === prologue.length) {\n if (!b4a.equals(prologue.hash, batch.hash())) {\n throw INVALID_PROOF('Invalid hash')\n }\n }\n\n const extra = upgrade.additionalNodes\n\n ite.seek(batch.roots[batch.roots.length - 1].index)\n i = 0\n\n while (i < extra.length && extra[i].index === ite.sibling()) {\n batch.appendRoot(extra[i++], ite)\n }\n\n while (i < extra.length) {\n const node = extra[i++]\n\n while (node.index !== ite.index) {\n if (ite.factor === 2) throw INVALID_OPERATION('Unexpected node: ' + node.index)\n ite.leftChild()\n }\n\n batch.appendRoot(node, ite)\n ite.sibling()\n }\n\n batch.signature = unslab(upgrade.signature)\n batch.fork = fork\n\n return q.extra === null\n}\n\nasync function seekFromHead(session, head, bytes, padding) {\n const roots = flat.fullRoots(head)\n\n for (let i = 0; i < roots.length; i++) {\n const root = roots[i]\n const node = await getTreeNodeFromStorage(session.storage, root)\n const size = getUnpaddedSize(node, padding, null)\n\n if (bytes === size) return root\n if (bytes > size) {\n bytes -= size\n continue\n }\n\n return seekTrustedTree(session, root, bytes, padding)\n }\n\n return head\n}\n\n// trust that bytes are within the root tree and find the block at bytes\n\nasync function seekTrustedTree(session, root, bytes, padding) {\n if (!bytes) return root\n\n const ite = flat.iterator(root)\n let cnt = 0\n\n while ((ite.index & 1) !== 0) {\n if (++cnt >= 1024) throw ASSERTION('Bad seekTrusted bytes=' + bytes + ', paddding=' + padding)\n const l = await getTreeNodeFromStorage(session.storage, ite.leftChild())\n\n if (l) {\n const size = getUnpaddedSize(l, padding, ite)\n if (size === bytes) return ite.index\n if (size > bytes) continue\n bytes -= size\n ite.sibling()\n } else {\n ite.parent()\n return ite.index\n }\n }\n\n return ite.index\n}\n\n// try to find the block at bytes without trusting that is *is* within the root passed\n\nasync function seekUntrustedTree(session, root, bytes, padding) {\n const offset =\n (await getByteOffsetSession(session, root, null)) -\n (padding ? (padding * flat.leftSpan(root)) / 2 : 0)\n\n if (offset > bytes) throw INVALID_OPERATION('Invalid seek')\n if (offset === bytes) return root\n\n bytes -= offset\n\n const node = await getTreeNodeFromStorageOrError(session.storage, root)\n\n if (getUnpaddedSize(node, padding, null) <= bytes) throw INVALID_OPERATION('Invalid seek')\n\n return seekTrustedTree(session, root, bytes, padding)\n}\n\n// Below is proof production, ie, construct proofs to verify a request\n// Note, that all these methods are sync as we can statically infer which nodes\n// are needed for the remote to verify given they arguments they passed us\n\nfunction seekProof(session, rx, seekRoot, root, p) {\n const ite = flat.iterator(seekRoot)\n let cnt = 0\n\n p.seek = []\n p.seek.push(getTreeNodeOrError(rx, ite.index))\n\n while (ite.index !== root) {\n if (++cnt >= 1024) throw ASSERTION('Bad seekProof seekRoot=' + seekRoot + ', root=' + root)\n ite.sibling()\n p.seek.push(getTreeNodeOrError(rx, ite.index))\n ite.parent()\n }\n}\n\nfunction blockAndSeekProof(session, rx, node, seek, seekRoot, root, p) {\n if (!node) return seekProof(session, rx, seekRoot, root, p)\n\n const ite = flat.iterator(node.index)\n let cnt = 0\n\n p.node = []\n if (!node.value) p.node.push(getTreeNodeOrError(rx, ite.index))\n\n while (ite.index !== root) {\n if (++cnt >= 1024) {\n throw ASSERTION('Bad blockAndSeekProof seekRoot=' + seekRoot + ', root=' + root)\n }\n ite.sibling()\n\n if (seek && ite.contains(seekRoot) && ite.index !== seekRoot) {\n seekProof(session, rx, seekRoot, ite.index, p)\n } else {\n p.node.push(getTreeNodeOrError(rx, ite.index))\n }\n\n ite.parent()\n }\n}\n\nfunction upgradeProof(session, rx, node, seek, from, to, subTree, p) {\n if (from === 0) p.upgrade = []\n\n for (const ite = flat.iterator(0); ite.fullRoot(to); ite.nextTree()) {\n // check if they already have the node\n if (ite.index + ite.factor / 2 < from) continue\n\n // connect existing tree\n if (p.upgrade === null && ite.contains(from - 2)) {\n p.upgrade = []\n\n const root = ite.index\n const target = from - 2\n let cnt = 0\n\n ite.seek(target)\n\n while (ite.index !== root) {\n if (++cnt >= 1024) throw ASSERTION('Bad upgradeProof target=' + target + ', root=' + root)\n\n ite.sibling()\n if (ite.index > target) {\n if (p.node === null && p.seek === null && ite.contains(subTree)) {\n blockAndSeekProof(session, rx, node, seek, subTree, ite.index, p)\n } else {\n p.upgrade.push(getTreeNodeOrError(rx, ite.index))\n }\n }\n ite.parent()\n }\n\n continue\n }\n\n if (p.upgrade === null) {\n p.upgrade = []\n }\n\n // if the subtree included is a child of this tree, include that one\n // instead of a dup node\n if (p.node === null && p.seek === null && ite.contains(subTree)) {\n blockAndSeekProof(session, rx, node, seek, subTree, ite.index, p)\n continue\n }\n\n // add root (can be optimised since the root might be in tree.roots)\n p.upgrade.push(getTreeNodeOrError(rx, ite.index))\n }\n}\n\nfunction additionalUpgradeProof(session, rx, from, to, p) {\n if (from === 0) p.additionalUpgrade = []\n\n for (const ite = flat.iterator(0); ite.fullRoot(to); ite.nextTree()) {\n // check if they already have the node\n if (ite.index + ite.factor / 2 < from) continue\n\n // connect existing tree\n if (p.additionalUpgrade === null && ite.contains(from - 2)) {\n p.additionalUpgrade = []\n\n const root = ite.index\n const target = from - 2\n let cnt = 0\n\n ite.seek(target)\n\n while (ite.index !== root) {\n if (++cnt >= 1024) {\n throw ASSERTION(\n 'Bad arguments to additionalUpgradeProof root=' + root + ' target=' + target\n )\n }\n ite.sibling()\n if (ite.index > target) {\n p.additionalUpgrade.push(getTreeNodeOrError(rx, ite.index))\n }\n ite.parent()\n }\n\n continue\n }\n\n if (p.additionalUpgrade === null) {\n p.additionalUpgrade = []\n }\n\n // add root (can be optimised since the root is in tree.roots)\n p.additionalUpgrade.push(getTreeNodeOrError(rx, ite.index))\n }\n}\n\nfunction nodesToRoot(index, nodes, head) {\n const ite = flat.iterator(index)\n\n for (let i = 0; i < nodes; i++) {\n ite.parent()\n if (ite.contains(head)) throw INVALID_OPERATION('Nodes is out of bounds')\n }\n\n return ite.index\n}\n\nfunction totalSize(nodes) {\n let s = 0\n for (const node of nodes) s += node.size\n return s\n}\n\nfunction totalSpan(nodes) {\n let s = 0\n for (const node of nodes) s += 2 * (node.index - s + 1)\n return s\n}\n\nfunction blockNode(index, value) {\n return { index, size: value.byteLength, hash: crypto.data(value) }\n}\n\nfunction parentNode(index, a, b) {\n return { index, size: a.size + b.size, hash: crypto.parent(a, b) }\n}\n\nfunction log2(n) {\n let res = 1\n\n while (n > 2) {\n n /= 2\n res++\n }\n\n return res\n}\n\nfunction normalizeIndexed(block, hash) {\n if (block) {\n return {\n value: true,\n index: block.index * 2,\n nodes: block.nodes,\n lastIndex: block.index\n }\n }\n if (hash) {\n return {\n value: false,\n index: hash.index,\n nodes: hash.nodes,\n lastIndex: flat.rightSpan(hash.index) / 2\n }\n }\n return null\n}\n\nasync function getTreeNodeOrError(rx, index) {\n const node = await rx.getTreeNode(index)\n if (node === null) {\n throw INVALID_OPERATION('Expected tree node ' + index + ' from storage, got (nil)')\n }\n return node\n}\n\nfunction getTreeNodeFromStorageOrError(storage, index) {\n const rx = storage.read()\n const p = getTreeNodeOrError(rx, index)\n rx.tryFlush()\n return p\n}\n\nfunction getTreeNodeFromStorage(storage, index) {\n const rx = storage.read()\n const node = rx.getTreeNode(index)\n rx.tryFlush()\n return node\n}\n\nfunction hasTreeNode(storage, index) {\n const rx = storage.read()\n const has = rx.hasTreeNode(index)\n rx.tryFlush()\n return has\n}\n\nasync function settleProof(p) {\n const result = [\n p.node && Promise.all(p.node),\n p.seek && Promise.all(p.seek),\n p.upgrade && Promise.all(p.upgrade),\n p.additionalUpgrade && Promise.all(p.additionalUpgrade)\n ]\n\n try {\n return await Promise.all(result)\n } catch (err) {\n if (p.node) await Promise.allSettled(p.node)\n if (p.seek) await Promise.allSettled(p.seek)\n if (p.upgrade) await Promise.allSettled(p.upgrade)\n if (p.additionalUpgrade) await Promise.allSettled(p.additionalUpgrade)\n throw err\n }\n}\n\n// tree can be either the merkle tree or a merkle tree batch\nasync function generateProof(session, rx, block, hash, seek, upgrade) {\n // Important that this does not throw inbetween making the promise arrays\n // and finalise being called, otherwise there will be lingering promises in the background\n\n if (session.prologue && upgrade) {\n upgrade.start = upgrade.start < session.prologue.length ? 0 : upgrade.start\n upgrade.length =\n upgrade.start < session.prologue.length ? session.prologue.length : upgrade.length\n }\n\n const head = 2 * session.length\n const from = upgrade ? upgrade.start * 2 : 0\n const to = upgrade ? from + upgrade.length * 2 : head\n const node = normalizeIndexed(block, hash)\n\n // can't do anything as we have no data...\n if (head === 0) return new TreeProof(session, null, null, null, null)\n\n if (from >= to || to > head) {\n throw INVALID_OPERATION('Invalid upgrade')\n }\n if (seek && upgrade && node !== null && node.index >= from) {\n throw INVALID_OPERATION('Cannot both do a seek and block/hash request when upgrading')\n }\n\n let subTree = head\n\n const p = new TreeProof(session, block, hash, seek, upgrade)\n\n if (node !== null && (!upgrade || node.lastIndex < upgrade.start)) {\n subTree = nodesToRoot(node.index, node.nodes, to)\n const seekRoot = seek\n ? await seekUntrustedTree(session, subTree, seek.bytes, seek.padding)\n : head\n blockAndSeekProof(session, rx, node, seek, seekRoot, subTree, p.pending)\n } else if ((node || seek) && upgrade) {\n subTree = seek ? await seekFromHead(session, to, seek.bytes, seek.padding) : node.index\n }\n\n if (upgrade) {\n upgradeProof(session, rx, node, seek, from, to, subTree, p.pending)\n if (head > to) additionalUpgradeProof(session, rx, to, head, p.pending)\n }\n\n return p\n}\n\nfunction getUnpaddedSize(node, padding, ite) {\n return padding === 0\n ? node.size\n : node.size - padding * (ite ? ite.countLeaves() : flat.countLeaves(node.index))\n}\n\nfunction unslabNodes(nodes) {\n for (const node of nodes) unslabNode(node)\n return nodes\n}\n\nfunction unslabNode(node) {\n if (node === null) return node\n node.hash = unslab(node.hash)\n return node\n}\nconst c = require('compact-encoding')\nconst { DEFAULT_NAMESPACE } = require('./caps')\nconst { INVALID_OPLOG_VERSION } = require('hypercore-errors')\nconst unslab = require('unslab')\n\nconst MANIFEST_PATCH = 0b00000001\nconst MANIFEST_PROLOGUE = 0b00000010\nconst MANIFEST_LINKED = 0b00000100\nconst MANIFEST_USER_DATA = 0b00001000\n\nconst hashes = {\n preencode(state, m) {\n state.end++ // small uint\n },\n encode(state, m) {\n if (m === 'blake2b') {\n c.uint.encode(state, 0)\n return\n }\n\n throw new Error('Unknown hash: ' + m)\n },\n decode(state) {\n const n = c.uint.decode(state)\n if (n === 0) return 'blake2b'\n throw new Error('Unknown hash id: ' + n)\n }\n}\n\nconst signatures = {\n preencode(state, m) {\n state.end++ // small uint\n },\n encode(state, m) {\n if (m === 'ed25519') {\n c.uint.encode(state, 0)\n return\n }\n\n throw new Error('Unknown signature: ' + m)\n },\n decode(state) {\n const n = c.uint.decode(state)\n if (n === 0) return 'ed25519'\n throw new Error('Unknown signature id: ' + n)\n }\n}\n\nconst signer = {\n preencode(state, m) {\n signatures.preencode(state, m.signature)\n c.fixed32.preencode(state, m.namespace)\n c.fixed32.preencode(state, m.publicKey)\n },\n encode(state, m) {\n signatures.encode(state, m.signature)\n c.fixed32.encode(state, m.namespace)\n c.fixed32.encode(state, m.publicKey)\n },\n decode(state) {\n return {\n signature: signatures.decode(state),\n namespace: c.fixed32.decode(state),\n publicKey: c.fixed32.decode(state)\n }\n }\n}\n\nconst signerArray = c.array(signer)\n\nconst prologue = {\n preencode(state, p) {\n c.fixed32.preencode(state, p.hash)\n c.uint.preencode(state, p.length)\n },\n encode(state, p) {\n c.fixed32.encode(state, p.hash)\n c.uint.encode(state, p.length)\n },\n decode(state) {\n return {\n hash: c.fixed32.decode(state),\n length: c.uint.decode(state)\n }\n }\n}\n\nconst manifestv0 = {\n preencode(state, m) {\n hashes.preencode(state, m.hash)\n state.end++ // type\n\n if (m.prologue && m.signers.length === 0) {\n c.fixed32.preencode(state, m.prologue.hash)\n return\n }\n\n if (m.quorum === 1 && m.signers.length === 1 && !m.allowPatch) {\n signer.preencode(state, m.signers[0])\n } else {\n state.end++ // flags\n c.uint.preencode(state, m.quorum)\n signerArray.preencode(state, m.signers)\n }\n },\n encode(state, m) {\n hashes.encode(state, m.hash)\n\n if (m.prologue && m.signers.length === 0) {\n c.uint.encode(state, 0)\n c.fixed32.encode(state, m.prologue.hash)\n return\n }\n\n if (m.quorum === 1 && m.signers.length === 1 && !m.allowPatch) {\n c.uint.encode(state, 1)\n signer.encode(state, m.signers[0])\n } else {\n c.uint.encode(state, 2)\n c.uint.encode(state, m.allowPatch ? 1 : 0)\n c.uint.encode(state, m.quorum)\n signerArray.encode(state, m.signers)\n }\n },\n decode(state) {\n const hash = hashes.decode(state)\n const type = c.uint.decode(state)\n\n if (type > 2) throw new Error('Unknown type: ' + type)\n\n if (type === 0) {\n return {\n version: 0,\n hash,\n allowPatch: false,\n quorum: 0,\n signers: [],\n prologue: {\n hash: c.fixed32.decode(state),\n length: 0\n },\n linked: null,\n userData: null\n }\n }\n\n if (type === 1) {\n return {\n version: 0,\n hash,\n allowPatch: false,\n quorum: 1,\n signers: [signer.decode(state)],\n prologue: null,\n linked: null,\n userData: null\n }\n }\n\n const flags = c.uint.decode(state)\n\n return {\n version: 0,\n hash,\n allowPatch: (flags & 1) !== 0,\n quorum: c.uint.decode(state),\n signers: signerArray.decode(state),\n prologue: null,\n linked: null,\n userData: null\n }\n }\n}\n\nconst fixed32Array = c.array(c.fixed32)\n\nconst manifest = (exports.manifest = {\n preencode(state, m) {\n state.end++ // version\n\n if (m.version === 0) return manifestv0.preencode(state, m)\n\n state.end++ // flags\n hashes.preencode(state, m.hash)\n\n c.uint.preencode(state, m.quorum)\n signerArray.preencode(state, m.signers)\n\n if (m.prologue) prologue.preencode(state, m.prologue)\n if (m.linked) fixed32Array.preencode(state, m.linked)\n if (m.userData) c.buffer.preencode(state, m.userData)\n },\n encode(state, m) {\n c.uint.encode(state, m.version)\n\n if (m.version === 0) return manifestv0.encode(state, m)\n\n let flags = 0\n if (m.allowPatch) flags |= MANIFEST_PATCH\n if (m.prologue) flags |= MANIFEST_PROLOGUE\n if (m.linked) flags |= MANIFEST_LINKED\n if (m.userData) flags |= MANIFEST_USER_DATA\n\n c.uint.encode(state, flags)\n hashes.encode(state, m.hash)\n\n c.uint.encode(state, m.quorum)\n signerArray.encode(state, m.signers)\n\n if (m.prologue) prologue.encode(state, m.prologue)\n if (m.linked) fixed32Array.encode(state, m.linked)\n if (m.userData) c.buffer.encode(state, m.userData)\n },\n decode(state) {\n const version = c.uint.decode(state)\n\n if (version === 0) return manifestv0.decode(state)\n if (version > 2) throw new Error('Unknown version: ' + version)\n\n const flags = c.uint.decode(state)\n const hash = hashes.decode(state)\n const quorum = c.uint.decode(state)\n const signers = signerArray.decode(state)\n\n const hasPatch = (flags & MANIFEST_PATCH) !== 0\n const hasPrologue = (flags & MANIFEST_PROLOGUE) !== 0\n const hasLinked = (flags & MANIFEST_LINKED) !== 0\n const hasUserData = (flags & MANIFEST_USER_DATA) !== 0\n\n return {\n version,\n hash,\n allowPatch: hasPatch,\n quorum,\n signers,\n prologue: hasPrologue ? prologue.decode(state) : null,\n linked: hasLinked ? fixed32Array.decode(state) : null,\n userData: hasUserData ? c.buffer.decode(state) : null\n }\n }\n})\n\nconst node = {\n preencode(state, n) {\n c.uint.preencode(state, n.index)\n c.uint.preencode(state, n.size)\n c.fixed32.preencode(state, n.hash)\n },\n encode(state, n) {\n c.uint.encode(state, n.index)\n c.uint.encode(state, n.size)\n c.fixed32.encode(state, n.hash)\n },\n decode(state) {\n return {\n index: c.uint.decode(state),\n size: c.uint.decode(state),\n hash: c.fixed32.decode(state)\n }\n }\n}\n\nconst nodeArray = c.array(node)\n\nconst wire = (exports.wire = {})\n\nwire.handshake = {\n preencode(state, m) {\n c.uint.preencode(state, 1)\n c.fixed32.preencode(state, m.capability)\n },\n encode(state, m) {\n c.uint.encode(state, m.seeks ? 1 : 0)\n c.fixed32.encode(state, m.capability)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n return {\n seeks: (flags & 1) !== 0,\n capability: unslab(c.fixed32.decode(state))\n }\n }\n}\n\nconst requestBlock = {\n preencode(state, b) {\n c.uint.preencode(state, b.index)\n c.uint.preencode(state, b.nodes)\n },\n encode(state, b) {\n c.uint.encode(state, b.index)\n c.uint.encode(state, b.nodes)\n },\n decode(state) {\n return {\n index: c.uint.decode(state),\n nodes: c.uint.decode(state)\n }\n }\n}\n\nconst requestSeek = {\n preencode(state, s) {\n c.uint.preencode(state, s.bytes)\n c.uint.preencode(state, s.padding)\n },\n encode(state, s) {\n c.uint.encode(state, s.bytes)\n c.uint.encode(state, s.padding)\n },\n decode(state) {\n return {\n bytes: c.uint.decode(state),\n padding: c.uint.decode(state)\n }\n }\n}\n\nconst requestUpgrade = {\n preencode(state, u) {\n c.uint.preencode(state, u.start)\n c.uint.preencode(state, u.length)\n },\n encode(state, u) {\n c.uint.encode(state, u.start)\n c.uint.encode(state, u.length)\n },\n decode(state) {\n return {\n start: c.uint.decode(state),\n length: c.uint.decode(state)\n }\n }\n}\n\nwire.request = {\n preencode(state, m) {\n state.end++ // flags\n c.uint.preencode(state, m.id)\n c.uint.preencode(state, m.fork)\n\n if (m.block) requestBlock.preencode(state, m.block)\n if (m.hash) requestBlock.preencode(state, m.hash)\n if (m.seek) requestSeek.preencode(state, m.seek)\n if (m.upgrade) requestUpgrade.preencode(state, m.upgrade)\n if (m.priority) c.uint.preencode(state, m.priority)\n },\n encode(state, m) {\n const flags =\n (m.block ? 1 : 0) |\n (m.hash ? 2 : 0) |\n (m.seek ? 4 : 0) |\n (m.upgrade ? 8 : 0) |\n (m.manifest ? 16 : 0) |\n (m.priority ? 32 : 0)\n\n c.uint.encode(state, flags)\n c.uint.encode(state, m.id)\n c.uint.encode(state, m.fork)\n\n if (m.block) requestBlock.encode(state, m.block)\n if (m.hash) requestBlock.encode(state, m.hash)\n if (m.seek) requestSeek.encode(state, m.seek)\n if (m.upgrade) requestUpgrade.encode(state, m.upgrade)\n if (m.priority) c.uint.encode(state, m.priority)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n\n return {\n id: c.uint.decode(state),\n fork: c.uint.decode(state),\n block: flags & 1 ? requestBlock.decode(state) : null,\n hash: flags & 2 ? requestBlock.decode(state) : null,\n seek: flags & 4 ? requestSeek.decode(state) : null,\n upgrade: flags & 8 ? requestUpgrade.decode(state) : null,\n manifest: (flags & 16) !== 0,\n priority: flags & 32 ? c.uint.decode(state) : 0\n }\n }\n}\n\nwire.cancel = {\n preencode(state, m) {\n c.uint.preencode(state, m.request)\n },\n encode(state, m) {\n c.uint.encode(state, m.request)\n },\n decode(state, m) {\n return {\n request: c.uint.decode(state)\n }\n }\n}\n\nconst dataUpgrade = {\n preencode(state, u) {\n c.uint.preencode(state, u.start)\n c.uint.preencode(state, u.length)\n nodeArray.preencode(state, u.nodes)\n nodeArray.preencode(state, u.additionalNodes)\n c.optionalBuffer.preencode(state, u.signature)\n },\n encode(state, u) {\n c.uint.encode(state, u.start)\n c.uint.encode(state, u.length)\n nodeArray.encode(state, u.nodes)\n nodeArray.encode(state, u.additionalNodes)\n c.optionalBuffer.encode(state, u.signature)\n },\n decode(state) {\n return {\n start: c.uint.decode(state),\n length: c.uint.decode(state),\n nodes: nodeArray.decode(state),\n additionalNodes: nodeArray.decode(state),\n signature: c.optionalBuffer.decode(state)\n }\n }\n}\n\nconst dataSeek = {\n preencode(state, s) {\n c.uint.preencode(state, s.bytes)\n nodeArray.preencode(state, s.nodes)\n },\n encode(state, s) {\n c.uint.encode(state, s.bytes)\n nodeArray.encode(state, s.nodes)\n },\n decode(state) {\n return {\n bytes: c.uint.decode(state),\n nodes: nodeArray.decode(state)\n }\n }\n}\n\nconst dataBlock = {\n preencode(state, b) {\n c.uint.preencode(state, b.index)\n c.buffer.preencode(state, b.value)\n nodeArray.preencode(state, b.nodes)\n },\n encode(state, b) {\n c.uint.encode(state, b.index)\n c.buffer.encode(state, b.value)\n nodeArray.encode(state, b.nodes)\n },\n decode(state) {\n return {\n index: c.uint.decode(state),\n value: c.buffer.decode(state),\n nodes: nodeArray.decode(state)\n }\n }\n}\n\nconst dataHash = {\n preencode(state, b) {\n c.uint.preencode(state, b.index)\n nodeArray.preencode(state, b.nodes)\n },\n encode(state, b) {\n c.uint.encode(state, b.index)\n nodeArray.encode(state, b.nodes)\n },\n decode(state) {\n return {\n index: c.uint.decode(state),\n nodes: nodeArray.decode(state)\n }\n }\n}\n\nwire.data = {\n preencode(state, m) {\n state.end++ // flags\n c.uint.preencode(state, m.request)\n c.uint.preencode(state, m.fork)\n\n if (m.block) dataBlock.preencode(state, m.block)\n if (m.hash) dataHash.preencode(state, m.hash)\n if (m.seek) dataSeek.preencode(state, m.seek)\n if (m.upgrade) dataUpgrade.preencode(state, m.upgrade)\n if (m.manifest) manifest.preencode(state, m.manifest)\n },\n encode(state, m) {\n const flags =\n (m.block ? 1 : 0) |\n (m.hash ? 2 : 0) |\n (m.seek ? 4 : 0) |\n (m.upgrade ? 8 : 0) |\n (m.manifest ? 16 : 0)\n\n c.uint.encode(state, flags)\n c.uint.encode(state, m.request)\n c.uint.encode(state, m.fork)\n\n if (m.block) dataBlock.encode(state, m.block)\n if (m.hash) dataHash.encode(state, m.hash)\n if (m.seek) dataSeek.encode(state, m.seek)\n if (m.upgrade) dataUpgrade.encode(state, m.upgrade)\n if (m.manifest) manifest.encode(state, m.manifest)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n\n return {\n request: c.uint.decode(state),\n fork: c.uint.decode(state),\n block: flags & 1 ? dataBlock.decode(state) : null,\n hash: flags & 2 ? dataHash.decode(state) : null,\n seek: flags & 4 ? dataSeek.decode(state) : null,\n upgrade: flags & 8 ? dataUpgrade.decode(state) : null,\n manifest: flags & 16 ? manifest.decode(state) : null\n }\n }\n}\n\nwire.noData = {\n preencode(state, m) {\n c.uint.preencode(state, m.request)\n c.uint.preencode(state, m.reason ? 1 : 0)\n if (m.reason) c.uint.preencode(state, m.reason)\n },\n encode(state, m) {\n c.uint.encode(state, m.request)\n c.uint.encode(state, m.reason ? 1 : 0)\n if (m.reason) c.uint.encode(state, m.reason)\n },\n decode(state, m) {\n const request = c.uint.decode(state)\n const flags = state.start < state.end ? c.uint.decode(state) : 0\n return {\n request,\n reason: flags & 1 ? c.uint.decode(state) : 0\n }\n }\n}\n\n// TODO: we should move to having these have a handle like in data, easier since they\n// allocate state in practice\nwire.want = {\n preencode(state, m) {\n c.uint.preencode(state, m.start)\n c.uint.preencode(state, m.length)\n\n const flags = m.any ? 1 : 0\n if (flags !== 0) c.uint.preencode(state, flags)\n },\n encode(state, m) {\n c.uint.encode(state, m.start)\n c.uint.encode(state, m.length)\n\n const flags = m.any ? 1 : 0\n if (flags !== 0) c.uint.encode(state, flags)\n },\n decode(state) {\n const start = c.uint.decode(state)\n const length = c.uint.decode(state)\n const flags = state.start < state.end ? c.uint.decode(state) : 0\n\n return {\n start,\n length,\n any: (flags & 1) !== 0\n }\n }\n}\n\nwire.unwant = {\n preencode(state, m) {\n c.uint.preencode(state, m.start)\n c.uint.preencode(state, m.length)\n\n const flags = m.any ? 1 : 0\n if (flags !== 0) c.uint.preencode(state, flags)\n },\n encode(state, m) {\n c.uint.encode(state, m.start)\n c.uint.encode(state, m.length)\n\n const flags = m.any ? 1 : 0\n if (flags !== 0) c.uint.encode(state, flags)\n },\n decode(state, m) {\n const start = c.uint.decode(state)\n const length = c.uint.decode(state)\n const flags = state.start < state.end ? c.uint.decode(state) : 0\n\n return {\n start,\n length,\n any: (flags & 1) !== 0\n }\n }\n}\n\nwire.range = {\n preencode(state, m) {\n state.end++ // flags\n c.uint.preencode(state, m.start)\n if (m.length !== 1) c.uint.preencode(state, m.length)\n },\n encode(state, m) {\n c.uint.encode(state, (m.drop ? 1 : 0) | (m.length === 1 ? 2 : 0))\n c.uint.encode(state, m.start)\n if (m.length !== 1) c.uint.encode(state, m.length)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n\n return {\n drop: (flags & 1) !== 0,\n start: c.uint.decode(state),\n length: (flags & 2) !== 0 ? 1 : c.uint.decode(state)\n }\n }\n}\n\nwire.bitfield = {\n preencode(state, m) {\n c.uint.preencode(state, m.start)\n c.uint32array.preencode(state, m.bitfield)\n },\n encode(state, m) {\n c.uint.encode(state, m.start)\n c.uint32array.encode(state, m.bitfield)\n },\n decode(state, m) {\n return {\n start: c.uint.decode(state),\n bitfield: c.uint32array.decode(state)\n }\n }\n}\n\nwire.sync = {\n preencode(state, m) {\n state.end++ // flags\n c.uint.preencode(state, m.fork)\n c.uint.preencode(state, m.length)\n c.uint.preencode(state, m.remoteLength)\n },\n encode(state, m) {\n c.uint.encode(\n state,\n (m.canUpgrade ? 1 : 0) |\n (m.uploading ? 2 : 0) |\n (m.downloading ? 4 : 0) |\n (m.hasManifest ? 8 : 0) |\n (m.allowPush ? 16 : 0)\n )\n c.uint.encode(state, m.fork)\n c.uint.encode(state, m.length)\n c.uint.encode(state, m.remoteLength)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n\n return {\n fork: c.uint.decode(state),\n length: c.uint.decode(state),\n remoteLength: c.uint.decode(state),\n canUpgrade: (flags & 1) !== 0,\n uploading: (flags & 2) !== 0,\n downloading: (flags & 4) !== 0,\n hasManifest: (flags & 8) !== 0,\n allowPush: (flags & 16) !== 0\n }\n }\n}\n\nwire.reorgHint = {\n preencode(state, m) {\n c.uint.preencode(state, m.from)\n c.uint.preencode(state, m.to)\n c.uint.preencode(state, m.ancestors)\n },\n encode(state, m) {\n c.uint.encode(state, m.from)\n c.uint.encode(state, m.to)\n c.uint.encode(state, m.ancestors)\n },\n decode(state) {\n return {\n from: c.uint.decode(state),\n to: c.uint.decode(state),\n ancestors: c.uint.decode(state)\n }\n }\n}\n\nwire.extension = {\n preencode(state, m) {\n c.string.preencode(state, m.name)\n c.raw.preencode(state, m.message)\n },\n encode(state, m) {\n c.string.encode(state, m.name)\n c.raw.encode(state, m.message)\n },\n decode(state) {\n return {\n name: c.string.decode(state),\n message: c.raw.decode(state)\n }\n }\n}\n\nconst keyValue = {\n preencode(state, p) {\n c.string.preencode(state, p.key)\n c.buffer.preencode(state, p.value)\n },\n encode(state, p) {\n c.string.encode(state, p.key)\n c.buffer.encode(state, p.value)\n },\n decode(state) {\n return {\n key: c.string.decode(state),\n value: c.buffer.decode(state)\n }\n }\n}\n\nconst treeUpgrade = {\n preencode(state, u) {\n c.uint.preencode(state, u.fork)\n c.uint.preencode(state, u.ancestors)\n c.uint.preencode(state, u.length)\n c.buffer.preencode(state, u.signature)\n },\n encode(state, u) {\n c.uint.encode(state, u.fork)\n c.uint.encode(state, u.ancestors)\n c.uint.encode(state, u.length)\n c.buffer.encode(state, u.signature)\n },\n decode(state) {\n return {\n fork: c.uint.decode(state),\n ancestors: c.uint.decode(state),\n length: c.uint.decode(state),\n signature: c.buffer.decode(state)\n }\n }\n}\n\nconst bitfieldUpdate = {\n // TODO: can maybe be folded into a HAVE later on with the most recent spec\n preencode(state, b) {\n state.end++ // flags\n c.uint.preencode(state, b.start)\n c.uint.preencode(state, b.length)\n },\n encode(state, b) {\n state.buffer[state.start++] = b.drop ? 1 : 0\n c.uint.encode(state, b.start)\n c.uint.encode(state, b.length)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n return {\n drop: (flags & 1) !== 0,\n start: c.uint.decode(state),\n length: c.uint.decode(state)\n }\n }\n}\n\nconst oplog = (exports.oplog = {})\n\noplog.entry = {\n preencode(state, m) {\n state.end++ // flags\n if (m.userData) keyValue.preencode(state, m.userData)\n if (m.treeNodes) nodeArray.preencode(state, m.treeNodes)\n if (m.treeUpgrade) treeUpgrade.preencode(state, m.treeUpgrade)\n if (m.bitfield) bitfieldUpdate.preencode(state, m.bitfield)\n },\n encode(state, m) {\n const s = state.start++\n let flags = 0\n\n if (m.userData) {\n flags |= 1\n keyValue.encode(state, m.userData)\n }\n if (m.treeNodes) {\n flags |= 2\n nodeArray.encode(state, m.treeNodes)\n }\n if (m.treeUpgrade) {\n flags |= 4\n treeUpgrade.encode(state, m.treeUpgrade)\n }\n if (m.bitfield) {\n flags |= 8\n bitfieldUpdate.encode(state, m.bitfield)\n }\n\n state.buffer[s] = flags\n },\n decode(state) {\n const flags = c.uint.decode(state)\n return {\n userData: (flags & 1) !== 0 ? keyValue.decode(state) : null,\n treeNodes: (flags & 2) !== 0 ? nodeArray.decode(state) : null,\n treeUpgrade: (flags & 4) !== 0 ? treeUpgrade.decode(state) : null,\n bitfield: (flags & 8) !== 0 ? bitfieldUpdate.decode(state) : null\n }\n }\n}\n\nconst keyPair = {\n preencode(state, kp) {\n c.buffer.preencode(state, kp.publicKey)\n c.buffer.preencode(state, kp.secretKey)\n },\n encode(state, kp) {\n c.buffer.encode(state, kp.publicKey)\n c.buffer.encode(state, kp.secretKey)\n },\n decode(state) {\n return {\n publicKey: c.buffer.decode(state),\n secretKey: c.buffer.decode(state)\n }\n }\n}\n\nconst reorgHint = {\n preencode(state, r) {\n c.uint.preencode(state, r.from)\n c.uint.preencode(state, r.to)\n c.uint.preencode(state, r.ancestors)\n },\n encode(state, r) {\n c.uint.encode(state, r.from)\n c.uint.encode(state, r.to)\n c.uint.encode(state, r.ancestors)\n },\n decode(state) {\n return {\n from: c.uint.decode(state),\n to: c.uint.decode(state),\n ancestors: c.uint.decode(state)\n }\n }\n}\n\nconst reorgHintArray = c.array(reorgHint)\n\nconst hints = {\n preencode(state, h) {\n reorgHintArray.preencode(state, h.reorgs)\n c.uint.preencode(state, h.contiguousLength)\n },\n encode(state, h) {\n reorgHintArray.encode(state, h.reorgs)\n c.uint.encode(state, h.contiguousLength)\n },\n decode(state) {\n return {\n reorgs: reorgHintArray.decode(state),\n contiguousLength: state.start < state.end ? c.uint.decode(state) : 0\n }\n }\n}\n\nconst treeHeader = {\n preencode(state, t) {\n c.uint.preencode(state, t.fork)\n c.uint.preencode(state, t.length)\n c.buffer.preencode(state, t.rootHash)\n c.buffer.preencode(state, t.signature)\n },\n encode(state, t) {\n c.uint.encode(state, t.fork)\n c.uint.encode(state, t.length)\n c.buffer.encode(state, t.rootHash)\n c.buffer.encode(state, t.signature)\n },\n decode(state) {\n return {\n fork: c.uint.decode(state),\n length: c.uint.decode(state),\n rootHash: c.buffer.decode(state),\n signature: c.buffer.decode(state)\n }\n }\n}\n\nconst types = {\n preencode(state, t) {\n c.string.preencode(state, t.tree)\n c.string.preencode(state, t.bitfield)\n c.string.preencode(state, t.signer)\n },\n encode(state, t) {\n c.string.encode(state, t.tree)\n c.string.encode(state, t.bitfield)\n c.string.encode(state, t.signer)\n },\n decode(state) {\n return {\n tree: c.string.decode(state),\n bitfield: c.string.decode(state),\n signer: c.string.decode(state)\n }\n }\n}\n\nconst externalHeader = {\n preencode(state, m) {\n c.uint.preencode(state, m.start)\n c.uint.preencode(state, m.length)\n },\n encode(state, m) {\n c.uint.encode(state, m.start)\n c.uint.encode(state, m.length)\n },\n decode(state) {\n return {\n start: c.uint.decode(state),\n length: c.uint.decode(state)\n }\n }\n}\n\nconst keyValueArray = c.array(keyValue)\n\noplog.header = {\n preencode(state, h) {\n state.end += 2 // version + flags\n if (h.external) {\n externalHeader.preencode(state, h.external)\n return\n }\n c.fixed32.preencode(state, h.key)\n if (h.manifest) manifest.preencode(state, h.manifest)\n if (h.keyPair) keyPair.preencode(state, h.keyPair)\n keyValueArray.preencode(state, h.userData)\n treeHeader.preencode(state, h.tree)\n hints.preencode(state, h.hints)\n },\n encode(state, h) {\n c.uint.encode(state, 1)\n if (h.external) {\n c.uint.encode(state, 1) // ONLY set the first big for clarity\n externalHeader.encode(state, h.external)\n return\n }\n c.uint.encode(state, (h.manifest ? 2 : 0) | (h.keyPair ? 4 : 0))\n c.fixed32.encode(state, h.key)\n if (h.manifest) manifest.encode(state, h.manifest)\n if (h.keyPair) keyPair.encode(state, h.keyPair)\n keyValueArray.encode(state, h.userData)\n treeHeader.encode(state, h.tree)\n hints.encode(state, h.hints)\n },\n decode(state) {\n const version = c.uint.decode(state)\n\n if (version > 1) {\n throw INVALID_OPLOG_VERSION('Invalid header version. Expected <= 1, got ' + version)\n }\n\n if (version === 0) {\n const old = {\n types: types.decode(state),\n userData: keyValueArray.decode(state),\n tree: treeHeader.decode(state),\n signer: keyPair.decode(state),\n hints: hints.decode(state)\n }\n\n return {\n external: null,\n key: old.signer.publicKey,\n manifest: {\n version: 0,\n hash: old.types.tree,\n allowPatch: false,\n quorum: 1,\n signers: [\n {\n signature: old.types.signer,\n namespace: DEFAULT_NAMESPACE,\n publicKey: old.signer.publicKey\n }\n ],\n prologue: null,\n linked: null,\n userData: null\n },\n keyPair: old.signer.secretKey ? old.signer : null,\n userData: old.userData,\n tree: old.tree,\n hints: old.hints\n }\n }\n\n const flags = c.uint.decode(state)\n\n if (flags & 1) {\n return {\n external: externalHeader.decode(state),\n key: null,\n manifest: null,\n keyPair: null,\n userData: null,\n tree: null,\n hints: null\n }\n }\n\n return {\n external: null,\n key: c.fixed32.decode(state),\n manifest: (flags & 2) !== 0 ? manifest.decode(state) : null,\n keyPair: (flags & 4) !== 0 ? keyPair.decode(state) : null,\n userData: keyValueArray.decode(state),\n tree: treeHeader.decode(state),\n hints: hints.decode(state)\n }\n }\n}\n\nconst uintArray = c.array(c.uint)\n\nconst multisigInput = {\n preencode(state, inp) {\n c.uint.preencode(state, inp.signer)\n c.fixed64.preencode(state, inp.signature)\n c.uint.preencode(state, inp.patch)\n },\n encode(state, inp) {\n c.uint.encode(state, inp.signer)\n c.fixed64.encode(state, inp.signature)\n c.uint.encode(state, inp.patch)\n },\n decode(state) {\n return {\n signer: c.uint.decode(state),\n signature: c.fixed64.decode(state),\n patch: c.uint.decode(state)\n }\n }\n}\n\nconst patchEncodingv0 = {\n preencode(state, n) {\n c.uint.preencode(state, n.start)\n c.uint.preencode(state, n.length)\n uintArray.preencode(state, n.nodes)\n },\n encode(state, n) {\n c.uint.encode(state, n.start)\n c.uint.encode(state, n.length)\n uintArray.encode(state, n.nodes)\n },\n decode(state) {\n return {\n start: c.uint.decode(state),\n length: c.uint.decode(state),\n nodes: uintArray.decode(state)\n }\n }\n}\n\nconst multisigInputv0 = {\n preencode(state, n) {\n state.end++\n c.uint.preencode(state, n.signer)\n c.fixed64.preencode(state, n.signature)\n if (n.patch) patchEncodingv0.preencode(state, n.patch)\n },\n encode(state, n) {\n c.uint.encode(state, n.patch ? 1 : 0)\n c.uint.encode(state, n.signer)\n c.fixed64.encode(state, n.signature)\n if (n.patch) patchEncodingv0.encode(state, n.patch)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n return {\n signer: c.uint.decode(state),\n signature: c.fixed64.decode(state),\n patch: flags & 1 ? patchEncodingv0.decode(state) : null\n }\n }\n}\n\nconst multisigInputArrayv0 = c.array(multisigInputv0)\nconst multisigInputArray = c.array(multisigInput)\n\nconst compactNode = {\n preencode(state, n) {\n c.uint.preencode(state, n.index)\n c.uint.preencode(state, n.size)\n c.fixed32.preencode(state, n.hash)\n },\n encode(state, n) {\n c.uint.encode(state, n.index)\n c.uint.encode(state, n.size)\n c.fixed32.encode(state, n.hash)\n },\n decode(state) {\n return {\n index: c.uint.decode(state),\n size: c.uint.decode(state),\n hash: c.fixed32.decode(state)\n }\n }\n}\n\nconst compactNodeArray = c.array(compactNode)\n\nexports.multiSignaturev0 = {\n preencode(state, s) {\n multisigInputArrayv0.preencode(state, s.proofs)\n compactNodeArray.preencode(state, s.patch)\n },\n encode(state, s) {\n multisigInputArrayv0.encode(state, s.proofs)\n compactNodeArray.encode(state, s.patch)\n },\n decode(state) {\n return {\n proofs: multisigInputArrayv0.decode(state),\n patch: compactNodeArray.decode(state)\n }\n }\n}\n\nexports.multiSignature = {\n preencode(state, s) {\n multisigInputArray.preencode(state, s.proofs)\n compactNodeArray.preencode(state, s.patch)\n },\n encode(state, s) {\n multisigInputArray.encode(state, s.proofs)\n compactNodeArray.encode(state, s.patch)\n },\n decode(state) {\n return {\n proofs: multisigInputArray.decode(state),\n patch: compactNodeArray.decode(state)\n }\n }\n}\nconst c = require('compact-encoding')\nconst b4a = require('b4a')\nconst flat = require('flat-tree')\nconst { MerkleTree } = require('./merkle-tree')\nconst { multiSignature, multiSignaturev0 } = require('./messages')\n\nmodule.exports = {\n assemblev0,\n assemble,\n inflatev0,\n inflate,\n partialSignature,\n signableLength\n}\n\nfunction inflatev0(data) {\n return c.decode(multiSignaturev0, data)\n}\n\nfunction inflate(data) {\n return c.decode(multiSignature, data)\n}\n\nasync function partialSignature(\n core,\n signer,\n from,\n to = core.state.length,\n signature = core.state.signature\n) {\n if (from > core.state.length) return null\n const nodes = to <= from ? null : await upgradeNodes(core, from, to)\n\n if (signature.byteLength !== 64) {\n signature = c.decode(multiSignature, signature).proofs[0].signature\n }\n\n return {\n signer,\n signature,\n patch: nodes ? to - from : 0,\n nodes\n }\n}\n\nasync function upgradeNodes(core, from, to) {\n const rx = core.state.storage.read()\n let p = null\n try {\n p = await MerkleTree.proof(core.state, rx, { upgrade: { start: from, length: to - from } })\n } catch (err) {\n rx.destroy()\n throw err\n }\n rx.tryFlush()\n return (await p.settle()).upgrade.nodes\n}\n\nfunction signableLength(lengths, quorum) {\n if (quorum <= 0) quorum = 1\n if (quorum > lengths.length) return 0\n\n return lengths.sort(cmp)[quorum - 1]\n}\n\nfunction cmp(a, b) {\n return b - a\n}\n\nfunction assemblev0(inputs) {\n const proofs = []\n const patch = []\n\n for (const u of inputs) {\n proofs.push(compressProof(u, patch))\n }\n\n return c.encode(multiSignaturev0, { proofs, patch })\n}\n\nfunction assemble(inputs) {\n const proofs = []\n const patch = []\n const seen = new Set()\n\n for (const u of inputs) {\n if (u.nodes) {\n for (const node of u.nodes) {\n if (seen.has(node.index)) continue\n seen.add(node.index)\n patch.push(node)\n }\n }\n\n proofs.push({\n signer: u.signer,\n signature: u.signature,\n patch: u.patch\n })\n }\n\n return c.encode(multiSignature, { proofs, patch })\n}\n\nfunction compareNode(a, b) {\n if (a.index !== b.index) return false\n if (a.size !== b.size) return false\n return b4a.equals(a.hash, b.hash)\n}\n\nfunction compressProof(proof, nodes) {\n return {\n signer: proof.signer,\n signature: proof.signature,\n patch: proof.patch ? compressUpgrade(proof, nodes) : null\n }\n}\n\nfunction compressUpgrade(p, nodes) {\n const u = {\n start: flat.rightSpan(p.nodes[p.nodes.length - 1].index) / 2 + 1,\n length: p.patch,\n nodes: []\n }\n\n for (const node of p.nodes) {\n let present = false\n for (let i = 0; i < nodes.length; i++) {\n if (!compareNode(nodes[i], node)) continue\n\n u.nodes.push(i)\n present = true\n break\n }\n\n if (present) continue\n u.nodes.push(nodes.push(node) - 1)\n }\n\n return u\n}\nmodule.exports = class Mutex {\n constructor() {\n this.locked = false\n this.destroyed = false\n\n this._destroying = null\n this._destroyError = null\n this._queue = []\n this._enqueue = (resolve, reject) => this._queue.push([resolve, reject])\n }\n\n idle() {\n return this._queue.length === 0 && this.locked === false\n }\n\n lock() {\n if (this.destroyed) {\n return Promise.reject(this._destroyError || new Error('Mutex has been destroyed'))\n }\n if (this.locked) return new Promise(this._enqueue)\n this.locked = true\n return Promise.resolve()\n }\n\n unlock() {\n if (!this._queue.length) {\n this.locked = false\n return\n }\n this._queue.shift()[0]()\n }\n\n destroy(err) {\n if (!this._destroying) {\n this._destroying = this.locked ? this.lock().catch(() => {}) : Promise.resolve()\n }\n\n this.destroyed = true\n if (err) this._destroyError = err\n\n if (err) {\n while (this._queue.length) this._queue.shift()[1](err)\n }\n\n return this._destroying\n }\n}\nconst FIFO = require('fast-fifo')\n\nmodule.exports = class ReceiverQueue {\n constructor() {\n this.queue = new FIFO()\n this.priority = []\n this.requests = new Map()\n this.length = 0\n }\n\n push(req) {\n // TODO: use a heap at some point if we wanna support multiple prios\n if (req.priority > 0) this.priority.push(req)\n else this.queue.push(req)\n\n this.requests.set(req.id, req)\n this.length++\n }\n\n shift() {\n while (this.priority.length > 0) {\n const msg = this.priority.pop()\n const req = this._processRequest(msg)\n if (req !== null) return req\n }\n\n while (this.queue.length > 0) {\n const msg = this.queue.shift()\n const req = this._processRequest(msg)\n if (req !== null) return req\n }\n\n return null\n }\n\n _processRequest(req) {\n if (req.block || req.hash || req.seek || req.upgrade || req.manifest) {\n this.requests.delete(req.id)\n this.length--\n return req\n }\n\n return null\n }\n\n clear() {\n this.queue.clear()\n this.priority = []\n this.length = 0\n this.requests.clear()\n }\n\n delete(id) {\n const req = this.requests.get(id)\n if (!req) return\n\n req.block = null\n req.hash = null\n req.seek = null\n req.upgrade = null\n req.manifest = false\n\n this.requests.delete(id)\n this.length--\n\n if (this.length === 0) {\n this.queue.clear()\n this.priority = []\n }\n }\n}\nconst BigSparseArray = require('big-sparse-array')\nconst quickbit = require('./compat').quickbit\n\nconst BITS_PER_PAGE = 32768\nconst BYTES_PER_PAGE = BITS_PER_PAGE / 8\nconst WORDS_PER_PAGE = BYTES_PER_PAGE / 4\nconst BITS_PER_SEGMENT = 2097152\nconst BYTES_PER_SEGMENT = BITS_PER_SEGMENT / 8\nconst PAGES_PER_SEGMENT = BITS_PER_SEGMENT / BITS_PER_PAGE\n\nclass RemoteBitfieldPage {\n constructor(index, bitfield, segment) {\n this.index = index\n this.offset = index * BYTES_PER_PAGE - segment.offset\n this.bitfield = bitfield\n this.segment = segment\n\n segment.add(this)\n }\n\n get tree() {\n return this.segment.tree\n }\n\n get(index) {\n return quickbit.get(this.bitfield, index)\n }\n\n set(index, val) {\n if (quickbit.set(this.bitfield, index, val)) {\n this.tree.update(this.offset * 8 + index)\n }\n }\n\n setRange(start, end, val) {\n quickbit.fill(this.bitfield, val, start, end)\n\n let i = Math.floor(start / 128)\n const n = i + Math.ceil((end - start) / 128)\n\n while (i <= n) this.tree.update(this.offset * 8 + i++ * 128)\n }\n\n findFirst(val, position) {\n return quickbit.findFirst(this.bitfield, val, position)\n }\n\n findLast(val, position) {\n return quickbit.findLast(this.bitfield, val, position)\n }\n\n insert(start, bitfield) {\n this.bitfield.set(bitfield, start / 32)\n this.segment.refresh()\n }\n\n clear(start, bitfield) {\n quickbit.clear(this.bitfield, { field: bitfield, offset: start })\n }\n}\n\nclass RemoteBitfieldSegment {\n constructor(index) {\n this.index = index\n this.offset = index * BYTES_PER_SEGMENT\n this.tree = quickbit.Index.from([], BYTES_PER_SEGMENT)\n this.pages = new Array(PAGES_PER_SEGMENT)\n this.pagesLength = 0\n }\n\n get chunks() {\n return this.tree.chunks\n }\n\n refresh() {\n this.tree = quickbit.Index.from(this.tree.chunks, BYTES_PER_SEGMENT)\n }\n\n add(page) {\n const pageIndex = page.index - this.index * PAGES_PER_SEGMENT\n if (pageIndex >= this.pagesLength) this.pagesLength = pageIndex + 1\n\n this.pages[pageIndex] = page\n\n const chunk = { field: page.bitfield, offset: page.offset }\n\n this.chunks.push(chunk)\n\n for (let i = this.chunks.length - 2; i >= 0; i--) {\n const prev = this.chunks[i]\n if (prev.offset <= chunk.offset) break\n this.chunks[i] = chunk\n this.chunks[i + 1] = prev\n }\n }\n\n findFirst(val, position) {\n position = this.tree.skipFirst(!val, position)\n\n let j = position & (BITS_PER_PAGE - 1)\n let i = (position - j) / BITS_PER_PAGE\n\n if (i >= PAGES_PER_SEGMENT) return -1\n\n while (i < this.pagesLength) {\n const p = this.pages[i]\n\n let index = -1\n\n if (p) index = p.findFirst(val, j)\n else if (!val) index = j\n\n if (index !== -1) return i * BITS_PER_PAGE + index\n\n j = 0\n i++\n }\n\n return val || this.pagesLength === PAGES_PER_SEGMENT ? -1 : this.pagesLength * BITS_PER_PAGE\n }\n\n findLast(val, position) {\n position = this.tree.skipLast(!val, position)\n\n let j = position & (BITS_PER_PAGE - 1)\n let i = (position - j) / BITS_PER_PAGE\n\n if (i >= PAGES_PER_SEGMENT) return -1\n\n while (i >= 0) {\n const p = this.pages[i]\n\n let index = -1\n\n if (p) index = p.findLast(val, j)\n else if (!val) index = j\n\n if (index !== -1) return i * BITS_PER_PAGE + index\n\n j = BITS_PER_PAGE - 1\n i--\n }\n\n return -1\n }\n}\n\nmodule.exports = class RemoteBitfield {\n static BITS_PER_PAGE = BITS_PER_PAGE\n static BITS_PER_SEGMENT = BITS_PER_SEGMENT\n\n constructor() {\n this._pages = new BigSparseArray()\n this._segments = new BigSparseArray()\n this._maxSegments = 0\n }\n\n getBitfield(index) {\n const j = index & (BITS_PER_PAGE - 1)\n const i = (index - j) / BITS_PER_PAGE\n\n const p = this._pages.get(i)\n return p || null\n }\n\n get(index) {\n const j = index & (BITS_PER_PAGE - 1)\n const i = (index - j) / BITS_PER_PAGE\n\n const p = this._pages.get(i)\n\n return p ? p.get(j) : false\n }\n\n set(index, val) {\n const j = index & (BITS_PER_PAGE - 1)\n const i = (index - j) / BITS_PER_PAGE\n\n let p = this._pages.get(i)\n\n if (!p && val) {\n const k = Math.floor(i / PAGES_PER_SEGMENT)\n const s = this._segments.get(k) || this._segments.set(k, new RemoteBitfieldSegment(k))\n if (this._maxSegments <= k) this._maxSegments = k + 1\n\n p = this._pages.set(i, new RemoteBitfieldPage(i, new Uint32Array(WORDS_PER_PAGE), s))\n }\n\n if (p) p.set(j, val)\n }\n\n setRange(start, end, val) {\n let j = start & (BITS_PER_PAGE - 1)\n let i = (start - j) / BITS_PER_PAGE\n\n while (start < end) {\n let p = this._pages.get(i)\n\n if (!p && val) {\n const k = Math.floor(i / PAGES_PER_SEGMENT)\n const s = this._segments.get(k) || this._segments.set(k, new RemoteBitfieldSegment(k))\n if (this._maxSegments <= k) this._maxSegments = k + 1\n\n p = this._pages.set(i, new RemoteBitfieldPage(i, new Uint32Array(WORDS_PER_PAGE), s))\n }\n\n const offset = i * BITS_PER_PAGE\n const last = Math.min(end - offset, BITS_PER_PAGE)\n const range = last - j\n\n if (p) p.setRange(j, last, val)\n\n j = 0\n i++\n start += range\n }\n }\n\n findFirst(val, position) {\n let j = position & (BITS_PER_SEGMENT - 1)\n let i = (position - j) / BITS_PER_SEGMENT\n\n while (i < this._maxSegments) {\n const s = this._segments.get(i)\n\n let index = -1\n\n if (s) index = s.findFirst(val, j)\n else if (!val) index = j\n\n if (index !== -1) return i * BITS_PER_SEGMENT + index\n\n j = 0\n i++\n }\n\n // For the val === false case, we always return at least\n // the 'position', also if nothing was found\n return val ? -1 : Math.max(position, this._maxSegments * BITS_PER_SEGMENT)\n }\n\n firstSet(position) {\n return this.findFirst(true, position)\n }\n\n firstUnset(position) {\n return this.findFirst(false, position)\n }\n\n findLast(val, position) {\n let j = position & (BITS_PER_SEGMENT - 1)\n let i = (position - j) / BITS_PER_SEGMENT\n\n while (i >= 0) {\n const s = this._segments.get(i)\n\n let index = -1\n\n if (s) index = s.findLast(val, j)\n else if (!val) index = j\n\n if (index !== -1) return i * BITS_PER_SEGMENT + index\n\n j = BITS_PER_SEGMENT - 1\n i--\n }\n\n return -1\n }\n\n lastSet(position) {\n return this.findLast(true, position)\n }\n\n lastUnset(position) {\n return this.findLast(false, position)\n }\n\n insert(start, bitfield) {\n if (start % 32 !== 0) return false\n\n let length = bitfield.byteLength * 8\n\n let j = start & (BITS_PER_PAGE - 1)\n let i = (start - j) / BITS_PER_PAGE\n\n while (length > 0) {\n let p = this._pages.get(i)\n\n if (!p) {\n const k = Math.floor(i / PAGES_PER_SEGMENT)\n const s = this._segments.get(k) || this._segments.set(k, new RemoteBitfieldSegment(k))\n if (this._maxSegments <= k) this._maxSegments = k + 1\n\n p = this._pages.set(i, new RemoteBitfieldPage(i, new Uint32Array(WORDS_PER_PAGE), s))\n }\n\n const end = Math.min(j + length, BITS_PER_PAGE)\n const range = end - j\n\n p.insert(j, bitfield.subarray(0, range / 32))\n\n bitfield = bitfield.subarray(range / 32)\n\n j = 0\n i++\n length -= range\n }\n\n return true\n }\n\n clear(start, bitfield) {\n if (start % 32 !== 0) return false\n\n let length = bitfield.byteLength * 8\n\n let j = start & (BITS_PER_PAGE - 1)\n let i = (start - j) / BITS_PER_PAGE\n\n while (length > 0) {\n let p = this._pages.get(i)\n\n if (!p) {\n const k = Math.floor(i / PAGES_PER_SEGMENT)\n const s = this._segments.get(k) || this._segments.set(k, new RemoteBitfieldSegment(k))\n if (this._maxSegments <= k) this._maxSegments = k + 1\n\n p = this._pages.set(i, new RemoteBitfieldPage(i, new Uint32Array(WORDS_PER_PAGE), s))\n }\n\n const end = Math.min(j + length, BITS_PER_PAGE)\n const range = end - j\n\n p.clear(j, bitfield.subarray(0, range / 32))\n\n bitfield = bitfield.subarray(range / 32)\n\n j = 0\n i++\n length -= range\n }\n\n return true\n }\n}\n/* DEV DOCS\n Every hypercore has one Replicator object managing its connections to other peers.\n There is one Peer object per peer connected to the Hypercore.\n Hypercores do not know about other hypercores, so when a peer is connected to multiple cores, there exists one Peer object per core.\n\n Hypercore indicates block should be downloaded through methods like Replicator.addRange or Replicator.addBlock\n Hypercore calls Replicator.updateActivity every time a hypercore session opens/closes\n Replicator.updateActivity ensures the Hypercore is downloading blocks as expected\n Replicator keeps track of:\n - Which blocks need to be downloaded (Replicator._blocks)\n - Which blocks currently have inflight requests (Replicator._inflight)\n\n Blocks are requested from remote peers by Peer objects. The flow is:\n - The replicator's updatePeer method gets called\n - The replicator detects whether the Peer can accept more requests (for example by checking if it's maxed out on inflight blocks)\n - The replicator then tells the Peer what to request (e.g. Peer_requestRange or Peer._requestBlock methods)\n\n The Peer object is responsible for tracking\n - Which blocks does the Peer have available (tracked in remoteBitfield)\n - Which blocks are you actively looking for from this peer (tracked in missingBlocks)\n - How many blocks are currently inflight (tracked in inflight)\n The Peer uses this information to decide which blocks to request from the peer in response to _requestRange requests and the like.\n*/\n\nconst b4a = require('b4a')\nconst safetyCatch = require('safety-catch')\nconst RandomIterator = require('random-array-iterator')\nconst flatTree = require('flat-tree')\nconst Mutex = require('./mutex')\nconst ReceiverQueue = require('./receiver-queue')\nconst HotswapQueue = require('./hotswap-queue')\nconst RemoteBitfield = require('./remote-bitfield')\nconst { MerkleTree } = require('./merkle-tree')\nconst w = require('./wants')\nconst { LocalWants, RemoteWants } = w\nconst {\n REQUEST_CANCELLED,\n REQUEST_TIMEOUT,\n INVALID_CAPABILITY,\n SNAPSHOT_NOT_AVAILABLE,\n ASSERTION\n} = require('hypercore-errors')\nconst m = require('./messages')\nconst caps = require('./caps')\n\nconst DEFAULT_MAX_INFLIGHT = [16, 512]\nconst SCALE_LATENCY = 50\nconst NOT_DOWNLOADING_SLACK = (20000 + Math.random() * 20000) | 0\nconst MAX_PEERS_UPGRADE = 3\nconst LAST_BLOCKS = 256\nconst MAX_RANGES = 64\nconst MIN_PEER_UPDATE_ALL = 40\n\nconst NOT_AVAILABLE = 1\nconst INVALID_REQUEST = 2\nconst MAX_INVALID_REQUESTS = 64\nconst MAX_BACKOFFS = MAX_INVALID_REQUESTS / 2\n\nconst PRIORITY = {\n NORMAL: 0,\n HIGH: 1,\n VERY_HIGH: 2,\n CANCELLED: 255 // reserved to mark cancellation\n}\n\nclass Attachable {\n constructor(replicator) {\n this.replicator = replicator\n this.resolved = false\n this.processing = false\n this.refs = []\n this.wants = null\n }\n\n addWant(w) {\n if (this.wants === null) this.wants = new Set()\n this.wants.add(w)\n }\n\n removeWant(w) {\n if (this.wants === null) return\n this.wants.delete(w)\n }\n\n attach(session) {\n const r = {\n context: this,\n session,\n sindex: 0,\n rindex: 0,\n snapshot: true,\n resolve: null,\n reject: null,\n promise: null,\n timeout: null\n }\n\n r.sindex = session.push(r) - 1\n r.rindex = this.refs.push(r) - 1\n r.promise = new Promise((resolve, reject) => {\n r.resolve = resolve\n r.reject = reject\n })\n\n return r\n }\n\n detach(r, err = null) {\n if (r.context !== this) return false\n\n this._detach(r)\n this._cancel(r, err)\n this.gc()\n\n return true\n }\n\n _detach(r) {\n const rh = this.refs.pop()\n const sh = r.session.pop()\n\n if (r.rindex < this.refs.length) this.refs[(rh.rindex = r.rindex)] = rh\n if (r.sindex < r.session.length) r.session[(sh.sindex = r.sindex)] = sh\n\n destroyRequestTimeout(r)\n r.context = null\n\n return r\n }\n\n gc() {\n if (this.refs.length > 0 || this.processing) return\n this._unref()\n\n if (this.wants === null) return\n\n const wants = this.wants\n this.wants = null\n\n let update = null\n\n for (const w of wants) {\n if (w.any) {\n const removed = w.wants.removeAnyRange(w.start, w.length, this)\n if (!removed) continue\n if (update === null) update = new Set()\n update.add(w.wants.peer)\n // TODO: should also use a free list for simplicity\n w.wants.peer.wireUnwant.send(removed)\n continue\n }\n\n if (w.wants.removeBatch(w.start, this)) {\n if (update === null) update = new Set()\n update.add(w.wants.peer)\n }\n }\n\n if (update === null) return\n for (const peer of update) {\n this.replicator.updatePeer(peer)\n }\n }\n\n processed() {\n this.processing = false\n this.gc()\n }\n\n _cancel(r, err) {\n r.reject(err || REQUEST_CANCELLED())\n }\n\n _unref() {\n // overwrite me\n }\n\n resolve(val) {\n this.resolved = true\n while (this.refs.length > 0) {\n this._detach(this.refs[this.refs.length - 1]).resolve(val)\n }\n this.gc()\n }\n\n reject(err) {\n this.resolved = true\n while (this.refs.length > 0) {\n this._detach(this.refs[this.refs.length - 1]).reject(err)\n }\n this.gc()\n }\n\n setTimeout(r, ms) {\n destroyRequestTimeout(r)\n r.timeout = setTimeout(onrequesttimeout, ms, r)\n }\n}\n\nclass BlockRequest extends Attachable {\n constructor(replicator, tracker, index, priority, force) {\n super(replicator)\n\n this.index = index\n this.priority = priority\n this.inflight = []\n this.queued = false\n this.hotswap = null\n this.tracker = tracker\n this.force = force\n }\n\n _unref() {\n if (this.resolved) return\n this.queued = false\n\n for (const req of this.inflight) {\n req.peer._cancelRequest(req)\n }\n\n this.tracker.remove(this.index)\n removeHotswap(this)\n }\n}\n\nclass RangeBatchRequest extends Attachable {\n constructor(replicator, batch) {\n super(replicator)\n\n this.batch = batch\n this.index = 0\n }\n}\n\nclass RangeRequest extends Attachable {\n constructor(replicator, ranges, start, end, linear, blocks) {\n super(replicator)\n\n this.start = start\n this.end = end\n this.linear = linear\n this.blocks = blocks\n this.ranges = ranges\n this.batches = []\n\n ranges.push(this)\n\n if (this.end === -1) {\n this.replicator._alwaysLatestBlock++\n }\n\n // As passed by the user, immut\n this.userStart = start\n this.userEnd = end\n }\n\n addBatch(batch) {\n for (let i = 0; i < this.batches.length; i++) {\n const b = this.batches[i]\n if (b.batch === batch) return false\n }\n const b = new RangeBatchRequest(this.replicator, batch)\n b.index = this.batches.length\n this.batches.push(b)\n return true\n }\n\n removeBatch(batch) {\n const head = this.batches.pop()\n\n if (head !== batch) {\n head.index = batch.index\n this.batches[head.index] = head\n }\n\n batch.gc()\n }\n\n _unref() {\n const rangeIndex = this.ranges.indexOf(this)\n if (rangeIndex === -1) return\n\n const h = this.ranges.pop()\n if (h !== this) {\n this.ranges[rangeIndex] = h\n }\n\n if (this.end === -1) {\n this.replicator._alwaysLatestBlock--\n }\n\n while (this.batches.length) {\n this.batches.pop().gc()\n }\n }\n\n _cancel(r) {\n r.resolve(false)\n }\n}\n\nclass UpgradeRequest extends Attachable {\n constructor(replicator, fork, length) {\n super(replicator)\n\n this.fork = fork\n this.length = length\n this.inflight = []\n }\n\n _unref() {\n if (this.resolved) return\n if (this.replicator.eagerUpgrade === true || this.inflight.length > 0) return\n this.replicator._upgrade = null\n }\n\n _cancel(r) {\n r.resolve(false)\n }\n}\n\nclass SeekRequest extends Attachable {\n constructor(replicator, seeks, seeker) {\n super(replicator)\n\n this.seeker = seeker\n this.inflight = []\n this.seeks = seeks\n }\n\n _unref() {\n if (this.resolved) return\n if (this.inflight.length > 0) return\n const i = this.seeks.indexOf(this)\n if (i === -1) return\n const h = this.seeks.pop()\n if (i < this.seeks.length) this.seeks[i] = h\n }\n}\n\nclass ForkRequest extends Attachable {\n constructor(replicator, fork) {\n super(replicator)\n this.fork = fork\n this.inflight = []\n this.batch = null\n }\n}\n\nclass InflightTracker {\n constructor() {\n this._requests = []\n this._free = []\n this._active = 0\n }\n\n get idle() {\n return this._active === 0\n }\n\n *[Symbol.iterator]() {\n for (const req of this._requests) {\n if (req !== null) yield req\n }\n }\n\n add(req) {\n const id = this._free.length ? this._free.pop() : this._requests.push(null)\n req.id = id\n this._requests[id - 1] = req\n this._active++\n return req\n }\n\n get(id) {\n return id <= this._requests.length ? this._requests[id - 1] : null\n }\n\n remove(id, roundtrip) {\n if (id > this._requests.length) return\n if (this._requests[id - 1]) this._active--\n this._requests[id - 1] = null\n if (roundtrip === true) this._free.push(id)\n }\n\n reusable(id) {\n this._free.push(id)\n }\n}\n\nclass BlockTracker {\n constructor(replicator) {\n this._replicator = replicator\n this._map = new Map()\n }\n\n [Symbol.iterator]() {\n return this._map.values()\n }\n\n isEmpty() {\n return this._map.size === 0\n }\n\n has(index) {\n return this._map.has(index)\n }\n\n get(index) {\n return this._map.get(index) || null\n }\n\n add(index, priority, force) {\n let b = this._map.get(index)\n if (b) return b\n\n b = new BlockRequest(this._replicator, this, index, priority, force)\n this._map.set(index, b)\n\n return b\n }\n\n remove(index) {\n const b = this.get(index)\n this._map.delete(index)\n return b\n }\n}\n\nclass RoundtripQueue {\n constructor() {\n this.queue = []\n this.tick = 0\n }\n\n clear() {\n const ids = new Array(this.queue.length)\n for (let i = 0; i < ids.length; i++) {\n ids[i] = this.queue[i][1]\n }\n\n this.queue = []\n\n return ids\n }\n\n add(id) {\n this.queue.push([++this.tick, id])\n }\n\n flush(tick) {\n let flushed = null\n\n for (let i = 0; i < this.queue.length; i++) {\n if (this.queue[i][0] > tick) break\n if (flushed === null) flushed = []\n flushed.push(this.queue[i][1])\n }\n\n if (flushed !== null) this.queue.splice(0, flushed.length)\n return flushed\n }\n}\n\nclass ProofRequest {\n constructor(msg, proof, block, manifest) {\n this.msg = msg\n this.proof = proof\n this.block = block\n this.manifest = manifest\n }\n\n async fulfill() {\n if (this.proof === null) return null\n\n const [proof, block] = await Promise.all([this.proof.settle(), this.block])\n\n if (this.manifest) proof.manifest = this.manifest\n if (!block && proof.block) return null\n\n if (block) proof.block.value = block\n return proof\n }\n}\n\nclass Peer {\n constructor(replicator, protomux, channel, inflightRange) {\n this.core = replicator.core\n this.replicator = replicator\n this.stream = protomux.stream\n this.protomux = protomux\n this.remotePublicKey = this.stream.remotePublicKey\n this.remoteSupportsSeeks = false\n this.inflightRange = inflightRange\n this.fullyDownloadedSignaled = 0\n\n this.paused = false\n this.removed = false\n\n this.channel = channel\n this.channel.userData = this\n\n this.wireSync = this.channel.messages[0]\n this.wireRequest = this.channel.messages[1]\n this.wireCancel = this.channel.messages[2]\n this.wireData = this.channel.messages[3]\n this.wireNoData = this.channel.messages[4]\n this.wireWant = this.channel.messages[5]\n this.wireUnwant = this.channel.messages[6]\n this.wireBitfield = this.channel.messages[7]\n this.wireRange = this.channel.messages[8]\n this.wireExtension = this.channel.messages[9]\n\n // Same stats as replicator, but for this specific peer\n this.stats = {\n wireSync: { tx: 0, rx: 0 },\n wireRequest: { tx: 0, rx: 0 },\n wireCancel: { tx: 0, rx: 0 },\n wireData: { tx: 0, rx: 0 },\n wireWant: { tx: 0, rx: 0 },\n wireUnwant: { tx: 0, rx: 0 },\n wireBitfield: { tx: 0, rx: 0 },\n wireRange: { tx: 0, rx: 0 },\n wireExtension: { tx: 0, rx: 0 },\n hotswaps: 0,\n invalidData: 0,\n invalidRequests: 0,\n backoffs: 0,\n notAvailableBackoffs: 0\n }\n\n this.receiverQueue = new ReceiverQueue()\n this.receiverBusy = false\n\n // most often not used, so made on demand\n this.roundtripQueue = null\n\n this.inflight = 0\n this.dataProcessing = 0\n\n this.canUpgrade = true\n\n this.needsSync = false\n this.syncsProcessing = 0\n this.lastUpgradableLength = 0\n this.lastUpgradableFork = 0\n\n this._remoteContiguousLength = 0\n\n // TODO: tweak pipelining so that data sent BEFORE remoteOpened is not cap verified!\n // we might wanna tweak that with some crypto, ie use the cap to encrypt it...\n // or just be aware of that, to only push non leaky data\n\n this.remoteOpened = false\n this.remoteBitfield = new RemoteBitfield()\n this.missingBlocks = new RemoteBitfield()\n\n this.pushedLength = 0\n\n this.remoteFork = 0\n this.remoteLength = 0\n this.remoteCanUpgrade = false\n this.remoteUploading = true\n this.remoteDownloading = true\n this.remoteSynced = false\n this.remoteHasManifest = false\n this.remoteAllowPush = false\n this.remoteRequests = new Map()\n\n this.segmentsWanted = new Set()\n this.broadcastedNonSparse = false\n\n this.wants = new LocalWants(this)\n this.remoteWants = new RemoteWants(this)\n\n this.lengthAcked = 0\n\n this.extensions = new Map()\n this.lastExtensionSent = ''\n this.lastExtensionRecv = ''\n\n replicator._ifAvailable++\n replicator._active++\n }\n\n get remoteContiguousLength() {\n return this.remoteBitfield.findFirst(false, this._remoteContiguousLength)\n }\n\n getMaxInflight() {\n const stream = this.stream.rawStream\n if (!stream.udx) return Math.min(this.inflightRange[1], this.inflightRange[0] * 3)\n\n const scale =\n stream.rtt <= SCALE_LATENCY\n ? 1\n : (stream.rtt / SCALE_LATENCY) * Math.min(1, 2 / this.replicator.peers.length)\n return Math.max(\n this.inflightRange[0],\n Math.round(Math.min(this.inflightRange[1], this.inflightRange[0] * scale))\n )\n }\n\n getMaxHotswapInflight() {\n const inf = this.getMaxInflight()\n return Math.max(16, inf / 2)\n }\n\n signalUpgrade() {\n if (this._shouldUpdateCanUpgrade() === true) this._updateCanUpgradeAndSync()\n else this.sendSync()\n }\n\n _markInflight(index) {\n this.missingBlocks.set(index, false)\n }\n\n broadcastRange(start, length, drop) {\n if (!this.isActive()) return\n\n if (drop) this._unclearLocalRange(start, length)\n else this._clearLocalRange(start, length)\n\n const fullyContig = this.core.header.hints.contiguousLength === this.core.state.length\n\n if (start + LAST_BLOCKS < this.core.state.length && !drop && !fullyContig) {\n if (!this.remoteWants.hasRange(start, length)) return\n }\n\n let force = false\n if (fullyContig && !drop) {\n start = 0\n length = this.core.state.length\n\n // Always send the broadcast when we switch from sparse to fully contiguous, so remote knows too\n if (this.fullyDownloadedSignaled < length) {\n this.fullyDownloadedSignaled = length\n force = true\n }\n }\n\n // TODO: consider also adding early-returns on the drop===true case\n if (!force && !drop) {\n // No need to broadcast if the remote already has this range\n\n if (this._remoteContiguousLength >= start + length) return\n\n if (length === 1) {\n if (this.remoteBitfield.get(start)) return\n } else {\n if (this.remoteBitfield.firstUnset(start) >= start + length) return\n }\n }\n\n this.wireRange.send({\n drop,\n start,\n length\n })\n incrementTx(this.stats.wireRange, this.replicator.stats.wireRange)\n }\n\n extension(name, message) {\n this.wireExtension.send({ name: name === this.lastExtensionSent ? '' : name, message })\n incrementTx(this.stats.wireExtension, this.replicator.stats.wireExtension)\n this.lastExtensionSent = name\n }\n\n onextension(message) {\n const name = message.name || this.lastExtensionRecv\n this.lastExtensionRecv = name\n const ext = this.extensions.get(name)\n if (ext) {\n ext._onmessage({ start: 0, end: message.message.byteLength, buffer: message.message }, this)\n }\n }\n\n sendSync() {\n // Skip syncs if in repair mode\n if (this.core._repairMode) return\n\n if (this.syncsProcessing !== 0) {\n this.needsSync = true\n return\n }\n\n if (this.core.state.fork !== this.remoteFork) {\n this.canUpgrade = false\n }\n\n this.needsSync = false\n\n this.wireSync.send({\n fork: this.core.state.fork,\n length: this.core.state.length,\n remoteLength: this.core.state.fork === this.remoteFork ? this.remoteLength : 0,\n canUpgrade: this.canUpgrade,\n uploading: true,\n downloading: this.replicator.isDownloading(),\n hasManifest: !!this.core.header.manifest && this.core.compat === false,\n allowPush: this.replicator.isAllowingPush()\n })\n incrementTx(this.stats.wireSync, this.replicator.stats.wireSync)\n }\n\n onopen({ seeks, capability }) {\n const expected = caps.replicate(\n this.stream.isInitiator === false,\n this.core.key,\n this.stream.handshakeHash\n )\n\n if (b4a.equals(capability, expected) !== true) {\n // TODO: change this to a rejection instead, less leakage\n throw INVALID_CAPABILITY('Remote sent an invalid replication capability')\n }\n\n if (this.remoteOpened === true) return\n this.remoteOpened = true\n this.remoteSupportsSeeks = seeks\n\n this.protomux.cork()\n\n this.sendSync()\n\n const contig = Math.min(this.core.state.length, this.core.header.hints.contiguousLength)\n if (contig > 0) {\n this.broadcastRange(0, contig, false)\n\n if (contig === this.core.state.length) {\n this.broadcastedNonSparse = true\n }\n }\n\n this.replicator._ifAvailable--\n this.replicator._addPeer(this)\n\n this.protomux.uncork()\n\n this.core.checkIfIdle()\n }\n\n onclose(isRemote) {\n // we might have signalled to the remote that we are done (ie not downloading) and the remote might agree on that\n // if that happens, the channel might be closed by the remote. if so just renegotiate it.\n // TODO: add a CLOSE_REASON to mux to we can make this cleaner...\n const reopen =\n isRemote === true &&\n this.remoteOpened === true &&\n this.remoteDownloading === false &&\n this.remoteUploading === true &&\n this.replicator.downloading === true\n\n if (this.remoteOpened === false) {\n this.replicator._ifAvailable--\n this.replicator.queueUpdateAll()\n return\n }\n\n this.remoteOpened = false\n this.removed = true\n this.remoteRequests.clear() // cancel all\n this.receiverQueue.clear()\n\n if (this.roundtripQueue !== null) {\n for (const id of this.roundtripQueue.clear()) this.replicator._inflight.reusable(id)\n }\n\n this.replicator._removePeer(this)\n\n if (reopen) {\n this.replicator._makePeer(this.protomux)\n }\n }\n\n closeIfIdle() {\n if (this.remoteDownloading === false && this.replicator.isDownloading() === false) {\n // idling, shut it down...\n this.channel.close()\n return true\n }\n\n return false\n }\n\n async onsync(msg) {\n const {\n fork,\n length,\n remoteLength,\n canUpgrade,\n uploading,\n downloading,\n hasManifest,\n allowPush\n } = msg\n\n const lengthChanged = length !== this.remoteLength\n const sameFork = fork === this.core.state.fork\n\n this.remoteSynced = true\n this.remoteFork = fork\n this.remoteLength = length\n this.remoteCanUpgrade = canUpgrade\n this.remoteUploading = uploading\n this.remoteDownloading = downloading\n this.remoteHasManifest = hasManifest\n this.remoteAllowPush = allowPush\n\n if (this.closeIfIdle()) return\n\n this.lengthAcked = sameFork ? remoteLength : 0\n this.syncsProcessing++\n\n this.replicator._updateFork(this)\n\n if (this.remoteLength > this.core.state.length && this.lengthAcked === this.core.state.length) {\n if (this.replicator._addUpgradeMaybe() !== null) this._update()\n }\n\n const upgrade =\n lengthChanged === false || sameFork === false\n ? this.canUpgrade && sameFork\n : await this._canUpgrade(length, fork)\n\n if (length === this.remoteLength && fork === this.core.state.fork) {\n this.canUpgrade = upgrade\n if (upgrade) {\n this.lastUpgradableFork = fork\n this.lastUpgradableLength = length\n }\n }\n\n if (--this.syncsProcessing !== 0) return // ie not latest\n\n if (\n this.needsSync === true ||\n (this.core.state.fork === this.remoteFork && this.core.state.length > this.remoteLength)\n ) {\n this.signalUpgrade()\n }\n\n this._update()\n }\n\n _shouldUpdateCanUpgrade() {\n return (\n this.core.state.fork === this.remoteFork &&\n this.core.state.length > this.remoteLength &&\n this.canUpgrade === false &&\n this.syncsProcessing === 0\n )\n }\n\n async _updateCanUpgradeAndSync() {\n const { length, fork } = this.core.state\n\n const remoteLength = this.remoteLength\n const remoteFork = this.remoteFork\n const canUpgrade = await this._canUpgrade(this.remoteLength, this.remoteFork)\n\n if (\n this.syncsProcessing > 0 ||\n length !== this.core.state.length ||\n fork !== this.core.state.fork\n ) {\n return\n }\n if (remoteLength !== this.remoteLength || remoteFork !== this.remoteFork) {\n return\n }\n if (canUpgrade === this.canUpgrade) {\n return\n }\n\n this.canUpgrade = canUpgrade\n if (canUpgrade) {\n this.lastUpgradableLength = this.remoteLength\n this.lastUpgradableFork = this.remoteFork\n }\n\n this.sendSync()\n }\n\n // Safe to call in the background - never fails\n async _canUpgrade(remoteLength, remoteFork) {\n if (remoteFork !== this.core.state.fork) return false\n\n if (remoteLength === 0) return true\n if (remoteLength >= this.core.state.length) return false\n\n try {\n // Rely on caching to make sure this is cheap...\n const canUpgrade = await MerkleTree.upgradeable(this.core.state, remoteLength)\n\n if (remoteFork !== this.core.state.fork) return false\n\n return canUpgrade\n } catch {\n return false\n }\n }\n\n async _getProof(batch, msg, pushing) {\n let block = null\n\n if (msg.block) {\n const index = msg.block.index\n\n if (!pushing && (msg.fork !== this.core.state.fork || !this.core.bitfield.get(index))) {\n return new ProofRequest(msg, null, null, null)\n }\n\n block = batch.getBlock(index)\n block.catch(noop)\n }\n\n const manifest = msg.manifest && !this.core.compat ? this.core.header.manifest : null\n\n try {\n const proof = await MerkleTree.proof(this.core.state, batch, msg)\n return new ProofRequest(msg, proof, block, manifest)\n } catch (err) {\n batch.destroy()\n\n this.replicator._oninvalidrequest(err, msg, this)\n\n if (this.stats.invalidRequests >= MAX_INVALID_REQUESTS) throw err\n\n await backoff(this.stats.invalidRequests)\n return null\n }\n }\n\n async onrequest(msg) {\n const size = this.remoteRequests.size\n this.remoteRequests.set(msg.id, msg)\n\n // if size didnt change -> id overwrite -> old one is deleted, cancel current and re-add\n if (size === this.remoteRequests.size) {\n this._cancel(msg.id)\n this.remoteRequests.set(msg.id, msg)\n }\n\n if (!this.protomux.drained || this.receiverQueue.length) {\n this.receiverQueue.push(msg)\n return\n }\n\n if (this.replicator.destroyed) return\n\n await this._handleRequest(msg)\n }\n\n oncancel(msg) {\n this._cancel(msg.request)\n }\n\n _cancel(id) {\n this.remoteRequests.delete(id)\n this.receiverQueue.delete(id)\n }\n\n ondrain() {\n return this._handleRequests()\n }\n\n async _handleRequests() {\n if (this.receiverBusy || this.replicator.destroyed) return\n this.receiverBusy = true\n this.protomux.cork()\n\n while (\n this.remoteOpened &&\n this.protomux.drained &&\n this.receiverQueue.length > 0 &&\n !this.removed\n ) {\n const msg = this.receiverQueue.shift()\n await this._handleRequest(msg)\n }\n\n this.protomux.uncork()\n this.receiverBusy = false\n }\n\n async push(index) {\n if (!this.remoteAllowPush) return\n if (!this.remoteDownloading) return\n if (this.core.state.length <= index) return\n if (this.core.state.fork !== this.remoteFork) return\n if (this.remoteBitfield.get(index)) return\n\n const msg = {\n id: 0,\n fork: this.core.state.fork,\n block: null,\n hash: null,\n seek: null,\n upgrade: null,\n manifest: this.remoteLength === 0,\n priority: 0\n }\n\n await this.replicator._txLock.lock()\n try {\n const remoteLength = Math.max(this.remoteLength, this.pushedLength)\n\n msg.block = {\n index,\n nodes: MerkleTree.maxMissingNodes(2 * index, remoteLength)\n }\n\n if (index >= remoteLength) {\n msg.upgrade = {\n start: remoteLength,\n length: this.core.state.length - remoteLength\n }\n }\n\n let req = null\n const batch = this.core.storage.read(this.core.state.fork)\n try {\n req = await this._getProof(batch, msg, true)\n } catch (err) {\n this.replicator._oninvalidrequest(err, msg, this)\n return\n }\n\n if (req === null) return\n batch.tryFlush()\n\n await this._fulfillRequest(req, true)\n } finally {\n this.replicator._txLock.unlock()\n }\n }\n\n async _handleRequest(msg) {\n const locked = !!msg.upgrade && this.remoteAllowPush\n\n if (locked) {\n // ensure contig push proofs\n await this.replicator._txLock.lock()\n const end = msg.upgrade.start + msg.upgrade.length\n\n if (this.pushedLength < end) {\n msg.upgrade.start = this.pushedLength\n msg.upgrade.length = end - this.pushedLength\n }\n }\n\n try {\n const batch = this.core.storage.read(this.core.state.fork)\n\n // TODO: could still be answerable if (index, fork) is an ancestor of the current fork\n const req =\n msg.fork === this.core.state.fork\n ? await this._getProof(batch, msg, false)\n : new ProofRequest(msg, null, null, null)\n\n if (req === null) {\n this.wireNoData.send({ request: msg.id, reason: INVALID_REQUEST })\n return\n }\n\n batch.tryFlush()\n\n await this._fulfillRequest(req, false)\n } finally {\n if (locked) this.replicator._txLock.unlock()\n }\n }\n\n async _fulfillRequest(req, pushing) {\n if (this.core._repairMode) {\n // if cancelled do not reply\n if (this.remoteRequests.get(req.msg.id) !== req.msg) {\n return\n }\n\n // sync from now on, so safe to delete from the map\n this.remoteRequests.delete(req.msg.id)\n\n // If cutting off the fulfillment, ensure promise is caught.\n // While repairing merkle tree nodes can be `nil` so can throw.\n req.fulfill().catch(safetyCatch)\n return\n }\n\n const proof = await req.fulfill()\n\n if (!pushing) {\n // if cancelled do not reply\n if (this.remoteRequests.get(req.msg.id) !== req.msg) {\n return\n }\n\n // sync from now on, so safe to delete from the map\n this.remoteRequests.delete(req.msg.id)\n } else if (!this.remoteAllowPush) {\n // if pushing but remote disabled it, just drop it\n return\n }\n\n if (!this.isActive() && proof.block !== null) {\n return\n }\n\n if (proof === null) {\n if (req.msg.manifest && this.core.header.manifest) {\n const manifest = this.core.header.manifest\n this.wireData.send({\n request: req.msg.id,\n fork: this.core.state.fork,\n block: null,\n hash: null,\n seek: null,\n upgrade: null,\n manifest\n })\n incrementTx(this.stats.wireData, this.replicator.stats.wireData)\n return\n }\n\n this.wireNoData.send({ request: req.msg.id, reason: NOT_AVAILABLE })\n return\n }\n\n if (proof.block !== null) {\n this.replicator._onupload(proof.block.index, proof.block.value.byteLength, this)\n }\n\n if (proof.upgrade) {\n const remoteLength = MerkleTree.upgradeLength(proof.upgrade)\n if (remoteLength > this.pushedLength) this.pushedLength = remoteLength\n }\n\n this.wireData.send({\n request: req.msg.id,\n fork: req.msg.fork,\n block: proof.block,\n hash: proof.hash,\n seek: proof.seek,\n upgrade: proof.upgrade,\n manifest: proof.manifest\n })\n incrementTx(this.stats.wireData, this.replicator.stats.wireData)\n }\n\n _cancelRequest(req) {\n if (req.priority === PRIORITY.CANCELLED) return\n // mark as cancelled also and avoid re-entry\n req.priority = PRIORITY.CANCELLED\n\n this.inflight--\n this.replicator._requestDone(req.id, false)\n\n // clear inflight state\n if (isBlockRequest(req)) this.replicator._unmarkInflight(req.block.index)\n if (isUpgradeRequest(req)) this.replicator._clearInflightUpgrade(req)\n\n if (this.roundtripQueue === null) this.roundtripQueue = new RoundtripQueue()\n this.roundtripQueue.add(req.id)\n this.wireCancel.send({ request: req.id })\n incrementTx(this.stats.wireCancel, this.replicator.stats.wireCancel)\n }\n\n _checkIfConflict() {\n this.paused = true\n\n const length = Math.min(this.core.state.length, this.remoteLength)\n if (length === 0) return // pause and ignore\n\n this.wireRequest.send({\n id: 0, // TODO: use an more explicit id for this eventually...\n fork: this.remoteFork,\n block: null,\n hash: null,\n seek: null,\n upgrade: {\n start: 0,\n length\n }\n })\n\n incrementTx(this.stats.wireRequest, this.replicator.stats.wireRequest)\n }\n\n _unmarkInflightBlockRequest(req, data) {\n if (isBlockRequest(req)) this.replicator._unmarkInflight(req.block.index)\n else if (data.block && !req) this.replicator._unmarkInflight(data.block.index)\n }\n\n async ondata(data) {\n if (data.request !== 0 && !data.upgrade) return this._handleData(data)\n\n await this.replicator._rxLock.lock()\n try {\n await this._handleData(data)\n } finally {\n this.replicator._rxLock.unlock()\n }\n }\n\n async _handleData(data) {\n // always allow a fork conflict proof to be sent\n if (data.request === 0 && data.upgrade && data.upgrade.start === 0) {\n if (await this.core.checkConflict(data, this)) return\n this.paused = false\n }\n\n const req = data.request > 0 ? this.replicator._inflight.get(data.request) : null\n const reorg = data.fork > this.core.state.fork\n\n // no push atm, TODO: check if this satisfies another pending request\n // allow reorg pushes tho as those are not written to storage so we'll take all the help we can get\n if (req === null && reorg === false && !this.replicator.allowPush) {\n return\n }\n\n // Skip accepting data if in repair mode to avoid corruption\n if (this.core._repairMode) {\n this.replicator._onnodata(this, req, NOT_AVAILABLE)\n return\n }\n\n if (req === null && reorg === false && data.block) {\n // mark this as inflight to avoid parallel requests\n this.replicator._markInflight(data.block.index)\n }\n\n if (req !== null) {\n if (req.peer !== this) return\n this._onrequestroundtrip(req)\n }\n\n try {\n if (reorg === true) return await this.replicator._onreorgdata(this, req, data)\n } catch (err) {\n safetyCatch(err)\n this._unmarkInflightBlockRequest(req, data)\n\n this.paused = true\n this.replicator._oninvaliddata(err, req, data, this)\n return\n }\n\n this.dataProcessing++\n if (isBlockRequest(req)) this.replicator._markProcessing(req.block.index)\n\n try {\n if (!this.replicator._matchingRequest(req, data) || !(await this.core.verify(data, this))) {\n this.replicator._onnodata(this, req, 0)\n return\n }\n } catch (err) {\n safetyCatch(err)\n this._unmarkInflightBlockRequest(req, data)\n\n if (err.code === 'WRITE_FAILED') {\n // For example, we don't want to keep pulling data when storage is full\n // TODO: notify the user somehow\n this.paused = true\n return\n }\n\n if (this.core.closed && !isCriticalError(err)) return\n\n if (err.code !== 'INVALID_OPERATION') {\n // might be a fork, verify\n this._checkIfConflict()\n }\n\n // if push mode, we MIGHT get an occasional bad message\n // no need to mega bail for that. TODO: rate limit instead as a general thing\n if (!this.replicator.allowPush) {\n this.paused = true\n }\n\n this.replicator._onnodata(this, req, 0)\n this.replicator._oninvaliddata(err, req, data, this)\n return\n } finally {\n if (isBlockRequest(req)) this.replicator._markProcessed(req.block.index)\n this.dataProcessing--\n }\n\n this.replicator._ondata(this, req, data)\n\n if (this._shouldUpdateCanUpgrade() === true) {\n this._updateCanUpgradeAndSync()\n }\n }\n\n onnodata({ request, reason }) {\n const req = request > 0 ? this.replicator._inflight.get(request) : null\n\n if (req === null || req.peer !== this) {\n this.replicator.queueUpdateAll()\n return\n }\n\n this._onrequestroundtrip(req)\n this.replicator._onnodata(this, req, reason)\n }\n\n _onrequestroundtrip(req) {\n if (req.priority === PRIORITY.CANCELLED) return\n // to avoid re-entry we also just mark it as cancelled\n req.priority = PRIORITY.CANCELLED\n\n this.inflight--\n this.replicator._requestDone(req.id, true)\n if (this.roundtripQueue === null) return\n const flushed = this.roundtripQueue.flush(req.rt)\n if (flushed === null) return\n for (const id of flushed) this.replicator._inflight.reusable(id)\n }\n\n onwant(range) {\n if (!this.remoteWants.add(range)) return\n this.replicator._onwant(this, range.start, range.length, range.any)\n }\n\n onunwant(range) {\n this.remoteWants.remove(range)\n }\n\n onbitfield({ start, bitfield }) {\n if (start < this._remoteContiguousLength) this._remoteContiguousLength = start // bitfield is always the truth\n this.remoteBitfield.insert(start, bitfield)\n this.missingBlocks.insert(start, bitfield)\n this._clearLocalRange(start, bitfield.byteLength * 8)\n this._update()\n }\n\n _clearLocalRange(start, length) {\n const bitfield = this.core.skipBitfield === null ? this.core.bitfield : this.core.skipBitfield\n\n if (length === 1) {\n this.missingBlocks.set(start, this._remoteHasBlock(start) && !bitfield.get(start))\n return\n }\n\n const contig = Math.min(this.core.state.length, this.core.header.hints.contiguousLength)\n\n if (start + length < contig) {\n this.missingBlocks.setRange(start, contig, false)\n return\n }\n\n const rem = start & 32767\n if (rem > 0) {\n start -= rem\n length += rem\n }\n\n const end = start + Math.min(length, this.core.state.length)\n while (start < end) {\n const local = bitfield.getBitfield(start)\n\n if (local && local.bitfield) {\n this.missingBlocks.clear(start, local.bitfield)\n }\n\n start += 32768\n }\n }\n\n _resetMissingBlock(index) {\n const bitfield = this.core.skipBitfield === null ? this.core.bitfield : this.core.skipBitfield\n this.missingBlocks.set(index, this._remoteHasBlock(index) && !bitfield.get(index))\n }\n\n _unclearLocalRange(start, length) {\n if (length === 1) {\n this._resetMissingBlock(start)\n return\n }\n\n const rem = start & (RemoteBitfield.BITS_PER_SEGMENT - 1)\n if (rem > 0) {\n start -= rem\n length += rem\n }\n\n const fixedStart = start\n\n const end = start + Math.min(length, this.remoteLength)\n while (start < end) {\n const remote = this.remoteBitfield.getBitfield(start)\n if (remote && remote.bitfield) {\n this.missingBlocks.insert(start, remote.bitfield)\n }\n\n start += RemoteBitfield.BITS_PER_SEGMENT\n }\n\n this._clearLocalRange(fixedStart, length)\n }\n\n async onrange({ drop, start, length }) {\n const has = drop === false\n\n if (drop === true && start < this._remoteContiguousLength) {\n this._remoteContiguousLength = start\n }\n\n if (start === 0 && drop === false) {\n if (length > this._remoteContiguousLength) {\n this._remoteContiguousLength = length\n if (\n this.remoteFork === this.core.state.fork &&\n length > this.core.header.hints.remoteContiguousLength\n ) {\n this.core.updateRemoteContiguousLength(length)\n }\n }\n } else if (length === 1) {\n const bitfield = this.core.skipBitfield === null ? this.core.bitfield : this.core.skipBitfield\n this.remoteBitfield.set(start, has)\n this.missingBlocks.set(start, has && !bitfield.get(start))\n } else {\n const rangeStart = this.remoteBitfield.findFirst(!has, start)\n const rangeEnd = length + start\n\n if (rangeStart !== -1 && rangeStart < rangeEnd) {\n this.remoteBitfield.setRange(rangeStart, rangeEnd, has)\n this.missingBlocks.setRange(rangeStart, rangeEnd, has)\n if (has) this._clearLocalRange(rangeStart, rangeEnd - rangeStart)\n }\n }\n\n if (this.core.hintsChanged) await this.core.flushHints()\n if (drop === false) this._update()\n\n this.core.emitRemoteContiguousLength()\n }\n\n onreorghint() {\n // TODO\n }\n\n _update() {\n // TODO: if this is in a batch or similar it would be better to defer it\n // we could do that with nextTick/microtick mb? (combined with a property on the session to signal read buffer mb)\n this.replicator.updatePeer(this)\n }\n\n async _onconflict() {\n this.protomux.cork()\n if (this.remoteLength > 0 && this.core.state.fork === this.remoteFork) {\n await this.onrequest({\n id: 0,\n fork: this.core.state.fork,\n block: null,\n hash: null,\n seek: null,\n upgrade: {\n start: 0,\n length: Math.min(this.core.state.length, this.remoteLength)\n }\n })\n }\n this.channel.close()\n this.protomux.uncork()\n }\n\n _makeRequest(needsUpgrade, priority, minLength) {\n if (needsUpgrade === true && this.replicator._shouldUpgrade(this) === false) {\n return null\n }\n\n // ensure that the remote has signalled they have the length we request\n if (this.remoteLength < minLength) {\n return null\n }\n\n if (needsUpgrade === false && this.replicator._autoUpgrade(this) === true) {\n needsUpgrade = true\n }\n\n return {\n peer: this,\n rt: this.roundtripQueue === null ? 0 : this.roundtripQueue.tick,\n id: 0,\n fork: this.remoteFork,\n block: null,\n hash: null,\n seek: null,\n upgrade:\n needsUpgrade === false\n ? null\n : { start: this.core.state.length, length: this.remoteLength - this.core.state.length },\n // remote manifest check can be removed eventually...\n manifest: this.core.header.manifest === null && this.remoteHasManifest === true,\n priority,\n timestamp: Date.now(),\n elapsed: 0\n }\n }\n\n _requestManifest() {\n const req = this._makeRequest(false, 0, 0)\n if (req === null) return\n\n this._send(req)\n }\n\n _includeLastBlock() {\n if (this.replicator._alwaysLatestBlock === 0) return null\n\n const index = this.remoteLength - 1\n\n // only valid if its an OOB get\n if (index < this.core.state.length) return null\n\n // do the normal checks\n if (!this._remoteHasBlock(index)) return null\n if (!this._canRequest(index, false)) return null\n\n // atm we only ever do one upgrade request in parallel, if that changes\n // then we should add some check here for inflights to avoid over requesting\n const b = this.replicator._blocks.add(index, PRIORITY.NORMAL, false)\n return b\n }\n\n _requestUpgrade(u) {\n if (this.replicator.pushOnly) return false\n\n const req = this._makeRequest(true, 0, 0)\n if (req === null) return false\n\n const b = this._includeLastBlock()\n\n if (b) this._sendBlockRequest(req, b)\n else this._send(req)\n\n return true\n }\n\n _requestSeek(s) {\n // if replicator is updating the seeks etc, bail and wait for it to drain\n if (this.replicator._updatesPending > 0) return false\n if (this.replicator.pushOnly) return false\n\n const { length, fork } = this.core.state\n\n if (fork !== this.remoteFork) return false\n\n if (s.seeker.start >= length) {\n const req = this._makeRequest(true, 0, 0)\n\n // We need an upgrade for the seek, if non can be provided, skip\n if (req === null) return false\n\n req.seek = this.remoteSupportsSeeks\n ? { bytes: s.seeker.bytes, padding: s.seeker.padding }\n : null\n\n s.inflight.push(req)\n this._send(req)\n\n return true\n }\n\n const len = s.seeker.end - s.seeker.start\n const off = s.seeker.start + Math.floor(Math.random() * len)\n\n for (let i = 0; i < len; i++) {\n let index = off + i\n if (index > s.seeker.end) index -= len\n\n if (this._remoteHasBlock(index) === false) continue\n if (this.core.bitfield.get(index) === true) continue\n if (!this._canRequest(index, false)) continue\n\n // Check if this block is currently inflight - if so pick another\n const b = this.replicator._blocks.get(index)\n if (b !== null && b.inflight.length > 0) continue\n\n // Block is not inflight, but we only want the hash, check if that is inflight\n const h = this.replicator._hashes.add(index, PRIORITY.NORMAL, false)\n if (h.inflight.length > 0) continue\n\n const req = this._makeRequest(false, h.priority, index + 1)\n if (req === null) continue\n\n const nodes = flatTree.depth(s.seeker.start + s.seeker.end - 1)\n\n req.hash = { index: 2 * index, nodes }\n req.seek = this.remoteSupportsSeeks\n ? { bytes: s.seeker.bytes, padding: s.seeker.padding }\n : null\n\n s.inflight.push(req)\n h.inflight.push(req)\n this._send(req)\n\n return true\n }\n\n this._maybeWantAnyRange(s.seeker.start, len, s)\n return false\n }\n\n _canRequest(index, force) {\n if (!(index >= 0)) throw ASSERTION('bad index to _canRequest: ' + index)\n\n if (!force && this.replicator.pushOnly) {\n return false\n }\n\n if (this.remoteLength >= this.core.state.length) {\n return true\n }\n\n if (index < this.lastUpgradableLength && this.lastUpgradableFork === this.core.state.fork) {\n return true\n }\n\n if (this.canUpgrade && this.syncsProcessing === 0) {\n return true\n }\n\n return false\n }\n\n _remoteHasBlock(index) {\n return index < this._remoteContiguousLength || this.remoteBitfield.get(index) === true\n }\n\n _sendBlockRequest(req, b) {\n if (this.core._repairMode) return\n\n req.block = { index: b.index, nodes: 0 }\n this.replicator._markInflight(b.index)\n\n b.inflight.push(req)\n this.replicator.hotswaps.add(b)\n this._send(req)\n }\n\n _requestBlock(b) {\n const { length, fork } = this.core.state\n\n if (this._remoteHasBlock(b.index) === false || fork !== this.remoteFork) {\n if (!this.core.bitfield.get(b.index)) this._maybeWant(b.index, b)\n return false\n }\n\n if (!this._canRequest(b.index, b.force)) return false\n\n const req = this._makeRequest(b.index >= length, b.priority, b.index + 1)\n if (req === null) return false\n\n this._sendBlockRequest(req, b)\n\n return true\n }\n\n _maybeWant(index, handle) {\n if (index < this.remoteContiguousLength) return\n\n const res = this.wants.add(index, handle)\n if (!res) return\n\n const batch = res.want && res.unwant\n if (batch) this.protomux.cork()\n\n if (res.unwant) {\n this.wireUnwant.send(res.unwant)\n incrementTx(this.stats.wireUnwant, this.replicator.stats.wireUnwant)\n }\n if (res.want) {\n this.wireWant.send(res.want)\n incrementTx(this.stats.wireWant, this.replicator.stats.wireWant)\n }\n\n if (batch) this.protomux.uncork()\n }\n\n _maybeWantAnyRange(start, length, handle) {\n if (handle.wants) {\n for (const w of handle.wants) {\n if ((w.start !== start || w.length !== length) && w.any) {\n const req = this.wants.removeAnyRange(w.start, w.length, handle)\n if (req) this.wireUnwant.send(req)\n }\n }\n }\n\n if (start + length <= this.remoteContiguousLength) return\n\n const req = this.wants.addAnyRange(start, length, handle)\n if (req) this.wireWant.send(req)\n }\n\n _requestRangeBlock(index, length) {\n if (this.core.bitfield.get(index) === true || !this._canRequest(index, false)) return false\n\n const b = this.replicator._blocks.add(index, PRIORITY.NORMAL, false)\n if (b.inflight.length > 0) {\n this.missingBlocks.set(index, false) // in case we missed some states just set them ondemand, nbd\n return false\n }\n\n const req = this._makeRequest(index >= length, b.priority, index + 1)\n\n // If the request cannot be satisfied, dealloc the block request if no one is subscribed to it\n if (req === null) {\n b.gc()\n return false\n }\n\n this._sendBlockRequest(req, b)\n\n // Don't think this will ever happen, as the pending queue is drained before the range queue\n // but doesn't hurt to check this explicitly here also.\n if (b.queued) b.queued = false\n return true\n }\n\n _findNext(i) {\n if (i < this._remoteContiguousLength) {\n if (this.core.skipBitfield === null) this.replicator._openSkipBitfield()\n i = this.core.skipBitfield.findFirst(false, i)\n if (i < this._remoteContiguousLength && i > -1) return i\n i = this._remoteContiguousLength\n }\n\n return this.missingBlocks.findFirst(true, i)\n }\n\n _addRangeBatch(r, offset, end) {\n const { WANT_BATCH } = w\n while (offset < end) {\n const next = this.core.bitfield.findFirst(false, offset)\n if (next === -1 || next >= end) return false\n\n const b = (next - (next & (WANT_BATCH - 1))) / WANT_BATCH\n\n if (r.addBatch(b)) return true\n\n offset = (b + 1) * WANT_BATCH\n }\n\n return false\n }\n\n _addLastRangeBatch(r, start, end) {\n const { WANT_BATCH } = w\n\n const next = this.core.bitfield.findLast(false, end - 1)\n if (next === -1 || next < start) return false\n\n const b = (next - (next & (WANT_BATCH - 1))) / WANT_BATCH\n\n return r.addBatch(b)\n }\n\n _populateRangeBatches(r) {\n const { WANT_BATCH } = w\n for (let i = r.batches.length - 1; i >= 0; i--) {\n const b = r.batches[i]\n const minStart = b.batch * WANT_BATCH\n const maxEnd = minStart + WANT_BATCH\n\n const start = Math.max(r.start, minStart)\n const end = Math.min(r.end === -1 ? maxEnd : r.end, maxEnd)\n\n if (start < end && this.core.bitfield.hasUnset(start, end - start)) continue\n\n r.removeBatch(b)\n }\n\n const end = r.end === -1 ? this.core.state.length : r.end\n if (end <= r.start) return\n\n // always keep the last batch in the range selected\n if (r.batches.length < 3) this._addLastRangeBatch(r, r.start, end)\n\n while (r.batches.length < 3) {\n const len = end - r.start\n const off = r.start + (r.linear ? 0 : Math.floor(Math.random() * len))\n\n if (!this._addRangeBatch(r, off, end) && !this._addRangeBatch(r, r.start, end)) break\n }\n }\n\n _requestRangeBatch(start, end, length) {\n let tries = this.inflight\n\n do {\n start = this._findNext(start)\n if (start === -1 || start >= end) break\n\n if (this._requestRangeBlock(start, length)) return true\n start++\n } while (tries-- > 0)\n\n return false\n }\n\n _getValidEnd(maxEnd) {\n // if we can upgrade the remote, or the remote is ahead, then all the remotes blocks are valid\n // otherwise truncate to the last length the remote has acked for us\n const maxLocalLength =\n this.canUpgrade || this.remoteLength >= this.core.state.length\n ? this.core.state.length\n : this.core.state.fork === this.lastUpgradableFork\n ? Math.min(this.lastUpgradableLength, this.core.state.length)\n : 0\n\n return Math.min(\n maxLocalLength,\n Math.min(maxEnd === -1 ? this.remoteLength : maxEnd, this.remoteLength)\n )\n }\n\n _requestRange(r) {\n const { WANT_BATCH } = w\n if (this.syncsProcessing > 0) return false\n\n const { length, fork } = this.core.state\n\n if (r.blocks) {\n for (let i = r.start; i < r.end; i++) {\n const index = r.blocks[i]\n const has = index < this._remoteContiguousLength || this.missingBlocks.get(index) === true\n if (has === true && this._requestRangeBlock(index, length)) return true\n this._maybeWant(index, r)\n }\n\n return false\n }\n\n this._populateRangeBatches(r)\n\n const end = this._getValidEnd(r.end)\n\n if (end <= r.start || fork !== this.remoteFork) return false\n\n for (let i = 0; i < r.batches.length; i++) {\n const b = r.batches[i]\n\n const batchStart = Math.max(b.batch * WANT_BATCH, r.start)\n const batchEnd = Math.min((b.batch + 1) * WANT_BATCH, end)\n const len = batchEnd - batchStart\n const off = batchStart + (r.linear ? 0 : Math.floor(Math.random() * len))\n\n if (\n this._requestRangeBatch(off, end, length) ||\n this._requestRangeBatch(batchStart, off, length)\n ) {\n return true\n }\n\n this._maybeWant(batchStart, b)\n }\n\n // Here we should consider making an OOB request (ie if the remote says they have a newer block)\n // but the upgrade code already does that, so no big deal for now\n\n return false\n }\n\n _requestForkProof(f) {\n if (!this.remoteLength) return\n if (this.replicator.pushOnly) return\n\n const req = this._makeRequest(false, 0, 0)\n if (req === null) return\n\n req.upgrade = { start: 0, length: this.remoteLength }\n req.manifest = !this.core.header.manifest\n\n f.inflight.push(req)\n this._send(req)\n }\n\n _requestForkRange(f) {\n if (f.fork !== this.remoteFork || f.batch.want === null) return false\n if (this.replicator.pushOnly) return false\n\n const end = Math.min(f.batch.want.end, this.remoteLength)\n if (end < f.batch.want.start) return false\n\n const len = end - f.batch.want.start\n const off = f.batch.want.start + Math.floor(Math.random() * len)\n\n for (let i = 0; i < len; i++) {\n let index = off + i\n if (index >= end) index -= len\n\n if (this._remoteHasBlock(index) === false) continue\n\n const req = this._makeRequest(false, 0, 0)\n if (req === null) return false\n\n req.hash = { index: 2 * index, nodes: f.batch.want.nodes }\n\n f.inflight.push(req)\n this._send(req)\n\n return true\n }\n\n this._maybeWantAnyRange(f.batch.want.start, len, f)\n return false\n }\n\n isActive() {\n if (this.paused || this.removed || this.core.header.frozen) return false\n return true\n }\n\n async _send(req) {\n const fork = this.core.state.fork\n\n this.inflight++\n this.replicator._inflight.add(req)\n\n if (req.upgrade !== null && req.fork === fork) {\n const u = this.replicator._addUpgrade()\n u.inflight.push(req)\n }\n\n try {\n if (req.block !== null && req.fork === fork) {\n req.block.nodes = await MerkleTree.missingNodes(\n this.core.state,\n 2 * req.block.index,\n this.core.state.length\n )\n if (req.priority === PRIORITY.CANCELLED) return\n }\n if (req.hash !== null && req.fork === fork && req.hash.nodes === 0) {\n req.hash.nodes = await MerkleTree.missingNodes(\n this.core.state,\n req.hash.index,\n this.core.state.length\n )\n if (req.priority === PRIORITY.CANCELLED) return\n\n // nodes === 0, we already have it, bail\n if (req.hash.nodes === 0 && (req.hash.index & 1) === 0) {\n this.inflight--\n this.replicator._resolveHashLocally(this, req)\n return\n }\n }\n } catch (err) {\n this.stream.destroy(err)\n return\n }\n\n this.wireRequest.send(req)\n incrementTx(this.stats.wireRequest, this.replicator.stats.wireRequest)\n }\n}\n\nmodule.exports = class Replicator {\n static Peer = Peer // hack to be able to access Peer from outside this module\n\n constructor(\n core,\n {\n notDownloadingLinger = NOT_DOWNLOADING_SLACK,\n eagerUpgrade = true,\n allowFork = true,\n allowPush = false,\n alwaysLatestBlock = false,\n inflightRange = null\n } = {}\n ) {\n this.core = core\n this.eagerUpgrade = eagerUpgrade\n this.allowFork = allowFork\n this.allowPush = allowPush\n this.ondownloading = null // optional external hook for monitoring downloading status\n this.peers = []\n this.findingPeers = 0 // updatable from the outside\n this.destroyed = false\n this.downloading = false\n this.pushOnly = false\n this.activeSessions = 0\n\n this.hotswaps = new HotswapQueue()\n this.inflightRange = inflightRange || DEFAULT_MAX_INFLIGHT\n\n // Note: nodata and unwant not currently tracked\n // tx = transmitted, rx = received\n this.stats = {\n wireSync: { tx: 0, rx: 0 },\n wireRequest: { tx: 0, rx: 0 },\n wireCancel: { tx: 0, rx: 0 },\n wireData: { tx: 0, rx: 0 },\n wireWant: { tx: 0, rx: 0 },\n wireUnwant: { tx: 0, rx: 0 },\n wireBitfield: { tx: 0, rx: 0 },\n wireRange: { tx: 0, rx: 0 },\n wireExtension: { tx: 0, rx: 0 },\n hotswaps: 0,\n invalidData: 0,\n invalidRequests: 0,\n backoffs: 0,\n notAvailableBackoffs: 0\n }\n\n this._attached = new Set()\n this._inflight = new InflightTracker()\n this._blocks = new BlockTracker(this)\n this._hashes = new BlockTracker(this)\n\n this._alwaysLatestBlock = alwaysLatestBlock ? 1 : 0\n this._queued = []\n\n this._seeks = []\n this._upgrade = null\n this._reorgs = []\n this._ranges = []\n\n this._rxLock = new Mutex()\n this._txLock = new Mutex()\n\n this._hadPeers = false\n this._active = 0\n this._ifAvailable = 0\n this._updatesPending = 0\n this._applyingReorg = null\n this._manifestPeer = null\n this._notDownloadingLinger = notDownloadingLinger\n this._notDownloadingTimer = null\n\n this._updateAllBump = null\n this._updateAllBound = this.updateAll.bind(this)\n\n const self = this\n this._onstreamclose = onstreamclose\n\n function onstreamclose() {\n self.detachFrom(this.userData)\n }\n }\n\n setInflightRange(min, max) {\n const def = this.inflightRange\n this.inflightRange = [min, max]\n for (const peer of this.peers) {\n if (peer.inflightRange !== def) continue\n peer.inflightRange = this.inflightRange\n }\n }\n\n updateActivity(inc, session) {\n this.activeSessions += inc\n this.setDownloading(this.activeSessions !== 0, session)\n }\n\n isDownloading() {\n return this.downloading || !this._inflight.idle\n }\n\n async push(index) {\n const all = []\n for (const peer of this.peers) {\n all.push(peer.push(index))\n }\n await Promise.all(all)\n }\n\n setAllowPush(allowPush) {\n if (allowPush === this.allowPush) return\n this.allowPush = allowPush\n for (const peer of this.peers) peer.sendSync()\n }\n\n isAllowingPush() {\n if (!this.allowPush) return false\n if (this._notDownloadingTimer) return false\n return this.downloading\n }\n\n setPushOnly(pushOnly) {\n if (pushOnly === this.pushOnly) return\n this.pushOnly = pushOnly\n }\n\n setDownloading(downloading) {\n const allowPush = this.isAllowingPush()\n const linger = this._notDownloadingLinger\n\n if (this._notDownloadingTimer) {\n clearTimeout(this._notDownloadingTimer)\n this._notDownloadingTimer = null\n }\n\n if (this.destroyed) return\n\n if (downloading || linger === 0) {\n if (!this._setDownloadingNow(downloading)) this.signalAllowPush(allowPush)\n return\n }\n\n this._notDownloadingTimer = setTimeout(setNotDownloadingLater, linger, this)\n if (this._notDownloadingTimer.unref) this._notDownloadingTimer.unref()\n this.signalAllowPush(allowPush)\n }\n\n signalAllowPush(allowPush) {\n if (allowPush === this.isAllowingPush()) return\n for (const peer of this.peers) peer.signalUpgrade()\n }\n\n _setDownloadingNow(downloading) {\n this._notDownloadingTimer = null\n\n if (this.downloading === downloading) return false\n this.downloading = downloading\n\n if (!downloading && this.isDownloading()) return false\n\n for (const peer of this.peers) peer.signalUpgrade()\n\n if (downloading) {\n // restart channel if needed...\n for (const protomux of this._attached) {\n if (!protomux.stream.handshakeHash) continue\n if (protomux.opened({ protocol: 'hypercore/alpha', id: this.core.discoveryKey })) continue\n this._makePeer(protomux, true)\n }\n } else {\n for (const peer of this.peers) peer.closeIfIdle()\n }\n\n if (this.ondownloading !== null && downloading) this.ondownloading()\n return true\n }\n\n cork() {\n for (const peer of this.peers) peer.protomux.cork()\n }\n\n uncork() {\n for (const peer of this.peers) peer.protomux.uncork()\n }\n\n // Called externally when a range of new blocks has been processed/removed\n onhave(start, length, drop = false) {\n for (const peer of this.peers) peer.broadcastRange(start, length, drop)\n }\n\n // Called externally when a truncation upgrade has been processed\n ontruncate(newLength, truncated) {\n const notify = []\n\n for (const blk of this._blocks) {\n if (blk.index < newLength) continue\n notify.push(blk)\n }\n\n for (const blk of notify) {\n for (const r of blk.refs) {\n if (r.snapshot === false) continue\n blk.detach(r, SNAPSHOT_NOT_AVAILABLE())\n }\n }\n\n for (const peer of this.peers) {\n peer.fullyDownloadedSignaled = Math.min(newLength, peer.fullyDownloadedSignaled)\n peer._unclearLocalRange(newLength, truncated)\n }\n }\n\n // Called externally when a upgrade has been processed\n onupgrade() {\n for (const peer of this.peers) peer.signalUpgrade()\n if (this._blocks.isEmpty() === false) this._resolveBlocksLocally()\n if (this._upgrade !== null) this._resolveUpgradeRequest(null)\n if (!this._blocks.isEmpty() || this._ranges.length !== 0 || this._seeks.length !== 0) {\n this._updateNonPrimary(true)\n }\n }\n\n // Called externally when a conflict has been detected and verified\n async onconflict() {\n const all = []\n for (const peer of this.peers) {\n all.push(peer._onconflict())\n }\n await Promise.allSettled(all)\n }\n\n async applyPendingReorg() {\n if (this._applyingReorg !== null) {\n await this._applyingReorg\n return true\n }\n\n for (let i = this._reorgs.length - 1; i >= 0; i--) {\n const f = this._reorgs[i]\n if (f.batch !== null && f.batch.finished) {\n await this._applyReorg(f)\n return true\n }\n }\n\n return false\n }\n\n addUpgrade(session) {\n if (this._upgrade !== null) {\n const ref = this._upgrade.attach(session)\n this._checkUpgradeIfAvailable()\n return ref\n }\n\n const ref = this._addUpgrade().attach(session)\n\n this.queueUpdateAll()\n\n return ref\n }\n\n addBlock(session, index, force) {\n const b = this._blocks.add(index, PRIORITY.HIGH, force)\n const ref = b.attach(session)\n\n this._queueBlock(b)\n this.queueUpdateAll()\n\n return ref\n }\n\n addSeek(session, seeker) {\n const s = new SeekRequest(this, this._seeks, seeker)\n const ref = s.attach(session)\n\n this._seeks.push(s)\n this.queueUpdateAll()\n\n return ref\n }\n\n addRange(\n session,\n { start = 0, end = -1, length = toLength(start, end), blocks = null, linear = false } = {}\n ) {\n if (blocks !== null) {\n // if using blocks, start, end just acts as frames around the blocks array\n start = 0\n end = length = blocks.length\n }\n\n const r = new RangeRequest(\n this,\n this._ranges,\n start,\n length === -1 ? -1 : start + length,\n linear,\n blocks\n )\n\n const ref = r.attach(session)\n\n // Trigger this to see if this is already resolved...\n // Also auto compresses the range based on local bitfield\n clampRange(this.core, r)\n\n if (r.end !== -1 && r.start >= r.end) {\n this._resolveRangeRequest(r)\n return ref\n }\n\n this.queueUpdateAll()\n\n return ref\n }\n\n cancel(ref) {\n ref.context.detach(ref, null)\n }\n\n static clearRequests(session, err) {\n if (session.length === 0) return\n if (session.length === 1 && session[0] === null) return\n\n const updated = new Set()\n\n while (session.length > 0) {\n const ref = session[session.length - 1]\n updated.add(ref.context.replicator)\n ref.context.detach(ref, err)\n }\n\n for (const replicator of updated) {\n replicator.queueUpdateAll()\n }\n }\n\n clearRequests(session, err = null) {\n let cleared = false\n while (session.length > 0) {\n const ref = session[session.length - 1]\n ref.context.detach(ref, err)\n cleared = true\n }\n\n if (cleared) this.queueUpdateAll()\n }\n\n _matchingRequest(req, data) {\n if (this.allowPush) {\n return true\n }\n if (data.block !== null && (req.block === null || req.block.index !== data.block.index)) {\n return false\n }\n if (data.hash !== null && (req.hash === null || req.hash.index !== data.hash.index)) {\n return false\n }\n if (data.seek !== null && (req.seek === null || req.seek.bytes !== data.seek.bytes)) {\n return false\n }\n if (data.upgrade !== null && req.upgrade === null) {\n return false\n }\n return req.fork === data.fork\n }\n\n _addUpgradeMaybe() {\n return this.eagerUpgrade === true ? this._addUpgrade() : this._upgrade\n }\n\n // TODO: this function is OVER called atm, at each updatePeer/updateAll\n // instead its more efficient to only call it when the conditions in here change - ie on sync/add/remove peer\n // Do this when we have more tests.\n _checkUpgradeIfAvailable() {\n if (this._ifAvailable > 0 && this.peers.length < MAX_PEERS_UPGRADE) return\n if (this._upgrade === null || this._upgrade.refs.length === 0) return\n if (this._hadPeers === false && this.findingPeers > 0) return\n\n const maxPeers = Math.min(this.peers.length, MAX_PEERS_UPGRADE)\n\n // check if a peer can upgrade us\n\n for (let i = 0; i < maxPeers; i++) {\n const peer = this.peers[i]\n\n if (peer.remoteSynced === false) return\n\n if (this.core.state.length === 0 && peer.remoteLength > 0) return\n\n if (peer.remoteLength <= this._upgrade.length || peer.remoteFork !== this._upgrade.fork) {\n continue\n }\n\n if (peer.syncsProcessing > 0) return\n\n if (peer.lengthAcked !== this.core.state.length && peer.remoteFork === this.core.state.fork) {\n return\n }\n\n if (peer.remoteCanUpgrade === true) return\n }\n\n // check if reorgs in progress...\n\n if (this._applyingReorg !== null) return\n\n // TODO: we prob should NOT wait for inflight reorgs here, seems better to just resolve the upgrade\n // and then apply the reorg on the next call in case it's slow - needs some testing in practice\n\n for (let i = 0; i < this._reorgs.length; i++) {\n const r = this._reorgs[i]\n if (r.inflight.length > 0) return\n }\n\n // if something is inflight, wait for that first\n if (this._upgrade.inflight.length > 0) return\n\n // nothing to do, indicate no update avail\n\n const u = this._upgrade\n this._upgrade = null\n u.resolve(false)\n }\n\n _addUpgrade() {\n if (this._upgrade !== null) return this._upgrade\n\n // TODO: needs a reorg: true/false flag to indicate if the user requested a reorg\n this._upgrade = new UpgradeRequest(this, this.core.state.fork, this.core.state.length)\n\n return this._upgrade\n }\n\n _addReorg(fork, peer) {\n if (this.allowFork === false) return null\n\n // TODO: eager gc old reorgs from the same peer\n // not super important because they'll get gc'ed when the request finishes\n // but just spam the remote can do ...\n\n for (const f of this._reorgs) {\n if (f.fork > fork && f.batch !== null) return null\n if (f.fork === fork) return f\n }\n\n const f = new ForkRequest(this, fork)\n\n this._reorgs.push(f)\n\n // maintain sorted by fork\n let i = this._reorgs.length - 1\n while (i > 0 && this._reorgs[i - 1].fork > fork) {\n this._reorgs[i] = this._reorgs[i - 1]\n this._reorgs[--i] = f\n }\n\n return f\n }\n\n _shouldUpgrade(peer) {\n if (this._upgrade !== null && this._upgrade.inflight.length > 0) return false\n return (\n peer.remoteCanUpgrade === true &&\n peer.remoteLength > this.core.state.length &&\n peer.lengthAcked === this.core.state.length\n )\n }\n\n _autoUpgrade(peer) {\n return (\n this._upgrade !== null &&\n peer.remoteFork === this.core.state.fork &&\n this._shouldUpgrade(peer)\n )\n }\n\n _addPeer(peer) {\n this._hadPeers = true\n this.peers.push(peer)\n this.updatePeer(peer)\n this._onpeerupdate(true, peer)\n }\n\n _requestDone(id, roundtrip) {\n this._inflight.remove(id, roundtrip)\n if (this.isDownloading() === true) return\n for (const peer of this.peers) peer.signalUpgrade()\n }\n\n _removePeer(peer) {\n this.peers.splice(this.peers.indexOf(peer), 1)\n peer.wants.destroy()\n\n if (this._manifestPeer === peer) this._manifestPeer = null\n\n let inflight = false\n for (const req of this._inflight) {\n if (req.peer !== peer) continue\n inflight = true\n this._inflight.remove(req.id, true)\n this._clearRequest(peer, req)\n }\n\n this._onpeerupdate(false, peer)\n if (inflight) {\n this.queueUpdateAll()\n } else {\n this._checkUpgradeIfAvailable()\n }\n }\n\n _queueBlock(b) {\n if (b.inflight.length > 0 || b.queued === true) return\n b.queued = true\n this._queued.push(b)\n }\n\n _resolveHashLocally(peer, req) {\n this._requestDone(req.id, false)\n this._resolveBlockRequest(this._hashes, req.hash.index / 2, null, req)\n this.updatePeer(peer)\n }\n\n // Runs in the background - not allowed to throw\n async _resolveBlocksLocally() {\n // TODO: check if fork compat etc. Requires that we pass down truncation info\n\n const clear = []\n const blocks = []\n\n const reader = this.core.storage.read()\n for (const b of this._blocks) {\n if (this.core.bitfield.get(b.index) === false) continue\n blocks.push(this._resolveLocalBlock(b, reader, clear))\n }\n reader.tryFlush()\n\n await Promise.all(blocks)\n\n if (!clear.length) return\n\n // Currently the block tracker does not support deletes during iteration, so we make\n // sure to clear them afterwards.\n for (const b of clear) {\n this._blocks.remove(b.index)\n removeHotswap(b)\n }\n }\n\n async _resolveLocalBlock(b, reader, resolved) {\n try {\n b.resolve(await reader.getBlock(b.index))\n } catch (err) {\n b.reject(err)\n return\n }\n\n resolved.push(b)\n }\n\n _resolveBlockRequest(tracker, index, value, req) {\n const b = tracker.remove(index)\n if (b === null) return false\n\n removeInflight(b.inflight, req)\n removeHotswap(b)\n b.queued = false\n\n b.resolve(value)\n\n if (b.inflight.length > 0) {\n // if anything is still inflight, cancel it\n for (let i = b.inflight.length - 1; i >= 0; i--) {\n const req = b.inflight[i]\n req.peer._cancelRequest(req)\n }\n }\n\n return true\n }\n\n _resolveUpgradeRequest(req) {\n if (req !== null) removeInflight(this._upgrade.inflight, req)\n\n if (\n this.core.state.length === this._upgrade.length &&\n this.core.state.fork === this._upgrade.fork\n ) {\n return false\n }\n\n const u = this._upgrade\n this._upgrade = null\n u.resolve(true)\n\n return true\n }\n\n _resolveRangeRequest(req) {\n req.resolve(true)\n req.gc()\n }\n\n _clearInflightBlock(tracker, req) {\n const isBlock = tracker === this._blocks\n const index = isBlock === true ? req.block.index : req.hash.index / 2\n const b = tracker.get(index)\n\n if (b === null || removeInflight(b.inflight, req) === false) return\n\n if (removeHotswap(b) === true && b.inflight.length > 0) {\n this.hotswaps.add(b)\n }\n\n if (b.refs.length > 0 && isBlock === true) {\n this._queueBlock(b)\n return\n }\n\n b.gc()\n }\n\n _clearInflightUpgrade(req) {\n if (this._upgrade === null || removeInflight(this._upgrade.inflight, req) === false) return\n this._upgrade.gc()\n }\n\n _clearInflightSeeks(req) {\n for (const s of this._seeks) {\n if (removeInflight(s.inflight, req) === false) continue\n s.gc()\n }\n }\n\n _clearInflightReorgs(req) {\n for (const r of this._reorgs) {\n removeInflight(r.inflight, req)\n }\n }\n\n _clearOldReorgs(fork) {\n for (let i = 0; i < this._reorgs.length; i++) {\n const f = this._reorgs[i]\n if (f.fork >= fork) continue\n if (i === this._reorgs.length - 1) this._reorgs.pop()\n else this._reorgs[i] = this._reorgs.pop()\n i--\n }\n }\n\n // \"slow\" updates here - async but not allowed to ever throw\n async _updateNonPrimary(updateAll) {\n // Check if running, if so skip it and the running one will issue another update for us (debounce)\n while (++this._updatesPending === 1) {\n let len = Math.min(MAX_RANGES, this._ranges.length)\n\n for (let i = 0; i < len; i++) {\n const r = this._ranges[i]\n\n clampRange(this.core, r)\n\n if (r.end !== -1 && r.start >= r.end) {\n this._resolveRangeRequest(r)\n i--\n if (len > this._ranges.length) len--\n if (this._ranges.length === MAX_RANGES) updateAll = true\n }\n }\n\n for (let i = 0; i < this._seeks.length; i++) {\n const s = this._seeks[i]\n\n let err = null\n let res = null\n\n try {\n res = await s.seeker.update()\n } catch (error) {\n err = error\n }\n\n if (!res && !err) continue\n\n if (i < this._seeks.length - 1) this._seeks[i] = this._seeks.pop()\n else this._seeks.pop()\n\n i--\n\n if (err) s.reject(err)\n else s.resolve(res)\n }\n\n // No additional updates scheduled - break\n if (--this._updatesPending === 0) break\n // Debounce the additional updates - continue\n this._updatesPending = 0\n }\n\n if (this._inflight.idle || updateAll) this.queueUpdateAll()\n }\n\n _clearRequest(peer, req) {\n if (req.block !== null) {\n this._clearInflightBlock(this._blocks, req)\n this._unmarkInflight(req.block.index)\n }\n\n if (req.hash !== null) {\n this._clearInflightBlock(this._hashes, req)\n }\n\n if (req.upgrade !== null && this._upgrade !== null) {\n this._clearInflightUpgrade(req)\n }\n\n if (this._seeks.length > 0) {\n this._clearInflightSeeks(req)\n }\n\n if (this._reorgs.length > 0) {\n this._clearInflightReorgs(req)\n }\n }\n\n _onnodata(peer, req, reason) {\n if (reason === NOT_AVAILABLE) {\n peer.stats.notAvailableBackoffs++\n this.stats.notAvailableBackoffs++\n\n if (peer.stats.notAvailableBackoffs >= MAX_BACKOFFS) {\n peer.paused = true\n }\n }\n\n if (reason === INVALID_REQUEST) {\n peer.stats.backoffs++\n this.stats.backoffs++\n\n if (peer.stats.backoffs >= MAX_BACKOFFS) {\n peer.paused = true\n }\n }\n\n if (req) {\n this._clearRequest(peer, req)\n }\n\n this.queueUpdateAll()\n }\n\n _openSkipBitfield() {\n // technically the skip bitfield gets bits cleared if .clear() is called\n // also which might be in inflight also, but that just results in that section being overcalled shortly\n // worst case, so ok for now\n\n const bitfield = this.core.openSkipBitfield()\n\n for (const req of this._inflight) {\n if (req.block) bitfield.set(req.block.index, true) // skip\n }\n }\n\n _markProcessing(index) {\n const b = this._blocks.get(index)\n if (b) {\n b.processing = true\n return\n }\n\n const h = this._hashes.get(index)\n if (h) h.processing = true\n }\n\n _markProcessed(index) {\n const b = this._blocks.get(index)\n if (b) return b.processed()\n\n const h = this._hashes.get(index)\n if (h) h.processed()\n }\n\n _markInflight(index) {\n if (this.core.skipBitfield !== null) this.core.skipBitfield.set(index, true)\n for (const peer of this.peers) peer._markInflight(index)\n }\n\n _unmarkInflight(index) {\n if (this.core.skipBitfield !== null) {\n this.core.skipBitfield.set(index, this.core.bitfield.get(index))\n }\n for (const peer of this.peers) peer._resetMissingBlock(index)\n }\n\n _ondata(peer, req, data) {\n if (req) {\n req.elapsed = Date.now() - req.timestamp\n }\n\n if (data.block !== null) {\n this._resolveBlockRequest(this._blocks, data.block.index, data.block.value, req)\n this._ondownload(data.block.index, data.block.value.byteLength, peer, req)\n }\n\n if (data.hash !== null && (data.hash.index & 1) === 0) {\n this._resolveBlockRequest(this._hashes, data.hash.index / 2, null, req)\n }\n\n if (this._upgrade !== null) {\n this._resolveUpgradeRequest(req)\n }\n\n if (this._seeks.length > 0) {\n this._clearInflightSeeks(req)\n }\n\n if (this._reorgs.length > 0) {\n this._clearInflightReorgs(req)\n }\n\n if (this._manifestPeer === peer && this.core.header.manifest !== null) {\n this._manifestPeer = null\n }\n\n if (this._seeks.length > 0 || this._ranges.length > 0) {\n this._updateNonPrimary(this._seeks.length > 0)\n }\n\n this.updatePeer(peer)\n }\n\n _onwant(peer, start, length, any) {\n if (!peer.isActive()) return\n\n const contig = Math.min(this.core.state.length, this.core.header.hints.contiguousLength)\n\n if (start + length < contig || this.core.state.length === contig || (any && start < contig)) {\n peer.wireRange.send({\n drop: false,\n start: 0,\n length: contig\n })\n incrementTx(peer.stats.wireRange, this.stats.wireRange)\n return\n }\n\n length = Math.min(length, this.core.state.length - start)\n\n if (any) {\n const bit = this.core.bitfield.firstSet(start)\n if (bit > -1 && bit < start + length) {\n peer.wireRange.send({\n drop: false,\n start: bit,\n length: 1\n })\n }\n return\n }\n\n for (const msg of this.core.bitfield.want(start, length)) {\n peer.wireBitfield.send(msg)\n incrementTx(peer.stats.wireBitfield, this.stats.wireBitfield)\n }\n }\n\n async _onreorgdata(peer, req, data) {\n const newBatch = data.upgrade && (await this.core.verifyReorg(data))\n const f = this._addReorg(data.fork, peer)\n\n if (f === null) {\n this.queueUpdateAll()\n return\n }\n\n removeInflight(f.inflight, req)\n\n if (f.batch) {\n await f.batch.update(data)\n } else if (data.upgrade) {\n f.batch = newBatch\n\n // Remove \"older\" reorgs in progress as we just verified this one.\n this._clearOldReorgs(f.fork)\n }\n\n if (f.batch && f.batch.finished) {\n if (this._addUpgradeMaybe() !== null) {\n await this._applyReorg(f)\n }\n }\n\n this.queueUpdateAll()\n }\n\n // Never throws, allowed to run in the background\n async _applyReorg(f) {\n // TODO: more optimal here to check if potentially a better reorg\n // is available, ie higher fork, and request that one first.\n // This will request that one after this finishes, which is fine, but we\n // should investigate the complexity in going the other way\n\n const u = this._upgrade\n const old = this._reorgs\n\n this._reorgs = [] // clear all as the nodes are against the old tree - easier\n this._applyingReorg = this.core.reorg(f.batch, null) // TODO: null should be the first/last peer?\n\n try {\n await this._applyingReorg\n } catch (err) {\n this._upgrade = null\n u.reject(err)\n }\n\n this._applyingReorg = null\n\n if (this._upgrade !== null) {\n this._resolveUpgradeRequest(null)\n }\n\n for (const peer of this.peers) this._updateFork(peer)\n\n // TODO: all the remaining is a tmp workaround until we have a flag/way for ANY_FORK\n for (const r of this._ranges) {\n r.start = r.userStart\n r.end = r.userEnd\n }\n\n for (const f of old) f.resolve()\n f.resolve()\n\n this.queueUpdateAll()\n }\n\n _maybeUpdate() {\n return this._upgrade !== null && this._upgrade.inflight.length === 0\n }\n\n _maybeRequestManifest() {\n return this.core.header.manifest === null && this._manifestPeer === null\n }\n\n _updateFork(peer) {\n if (\n this._applyingReorg !== null ||\n this.allowFork === false ||\n peer.remoteFork <= this.core.state.fork\n ) {\n return false\n }\n\n const f = this._addReorg(peer.remoteFork, peer)\n\n // TODO: one per peer is better\n if (f !== null && f.batch === null && f.inflight.length === 0) {\n return peer._requestForkProof(f)\n }\n\n return false\n }\n\n _updateHotswap(peer) {\n const maxHotswaps = peer.getMaxHotswapInflight()\n if (!peer.isActive() || peer.inflight >= maxHotswaps) return\n\n for (const b of this.hotswaps.pick(peer)) {\n if (peer._requestBlock(b) === false) continue\n peer.stats.hotswaps++\n peer.replicator.stats.hotswaps++\n if (peer.inflight >= maxHotswaps) break\n }\n }\n\n _updatePeer(peer) {\n if (!peer.isActive() || peer.inflight >= peer.getMaxInflight() || !peer.remoteUploading) {\n return false\n }\n\n // Eagerly request the manifest even if the remote length is 0. If not 0 we'll get as part of the upgrade request...\n if (\n this._maybeRequestManifest() === true &&\n peer.remoteLength === 0 &&\n peer.remoteHasManifest === true\n ) {\n this._manifestPeer = peer\n peer._requestManifest()\n }\n\n for (const s of this._seeks) {\n if (s.inflight.length > 0) continue // TODO: one per peer is better\n if (peer._requestSeek(s) === true) {\n return true\n }\n }\n\n // Implied that any block in the queue should be requested, no matter how many inflights\n const blks = new RandomIterator(this._queued)\n\n for (const b of blks) {\n if (b.queued === false || peer._requestBlock(b) === true) {\n b.queued = false\n blks.dequeue()\n return true\n }\n }\n\n return false\n }\n\n _updatePeerNonPrimary(peer) {\n if (!peer.isActive() || peer.inflight >= peer.getMaxInflight() || !peer.remoteUploading) {\n return false\n }\n\n const ranges = new RandomIterator(this._ranges)\n let tried = 0\n\n for (const r of ranges) {\n if (peer._requestRange(r) === true) {\n return true\n }\n if (++tried >= MAX_RANGES) break\n }\n\n // Iterate from newest fork to oldest fork...\n for (let i = this._reorgs.length - 1; i >= 0; i--) {\n const f = this._reorgs[i]\n if (f.batch !== null && f.inflight.length === 0 && peer._requestForkRange(f) === true) {\n return true\n }\n }\n\n if (this._maybeUpdate() === true && peer._requestUpgrade(this._upgrade) === true) {\n return true\n }\n\n return false\n }\n\n updatePeer(peer) {\n // Quick shortcut to wait for flushing reorgs - not needed but less waisted requests\n if (this._applyingReorg !== null) return\n\n while (this._updatePeer(peer) === true);\n while (this._updatePeerNonPrimary(peer) === true);\n\n if (this.peers.length > 1 && this._blocks.isEmpty() === false) {\n this._updateHotswap(peer)\n }\n\n this._checkUpgradeIfAvailable()\n }\n\n updateSubset() {\n return this.updateAll(false)\n }\n\n updateAll(all = true) {\n // Clear queued scan if a full scan\n if (this._updateAllBump !== null && all) {\n clearTimeout(this._updateAllBump)\n this._updateAllBump = null\n }\n\n // Quick shortcut to wait for flushing reorgs - not needed but less waisted requests\n if (this._applyingReorg !== null) return\n\n const peers = new RandomIterator(this.peers)\n\n const limit = all ? peers.length : MIN_PEER_UPDATE_ALL\n let tried = 0\n for (const peer of peers) {\n tried++\n if (this._updatePeer(peer) === true) {\n peers.requeue()\n }\n if (tried >= limit) break\n }\n\n // Check if we can skip the non primary check fully\n if (this._maybeUpdate() === false && this._ranges.length === 0 && this._reorgs.length === 0) {\n this._checkUpgradeIfAvailable()\n return\n }\n\n tried = 0\n for (const peer of peers.restart()) {\n tried++\n if (this._updatePeerNonPrimary(peer) === true) {\n peers.requeue()\n }\n if (tried >= limit) break\n }\n\n this._checkUpgradeIfAvailable()\n }\n\n getUpdateAllDelay(peers) {\n return Math.min(3000, Math.max(100, (peers.length - MIN_PEER_UPDATE_ALL) * 5))\n }\n\n queueUpdateAll() {\n if (this.peers.length < MIN_PEER_UPDATE_ALL) return this.updateAll()\n\n // Immediately scan subset\n this.updateSubset()\n\n // Schedule full scan\n if (this._updateAllBump !== null) return //skip if already scheduled\n this._updateAllBump = setTimeout(this._updateAllBound, this.getUpdateAllDelay(this.peers))\n }\n\n onpeerdestroy() {\n if (--this._active === 0) this.core.checkIfIdle()\n }\n\n attached(protomux) {\n return this._attached.has(protomux)\n }\n\n attachTo(protomux) {\n if (this.core.closed) return\n\n const makePeer = this._makePeer.bind(this, protomux)\n\n this._attached.add(protomux)\n protomux.pair({ protocol: 'hypercore/alpha', id: this.core.discoveryKey }, makePeer)\n protomux.stream.setMaxListeners(0)\n protomux.stream.on('close', this._onstreamclose)\n\n this._ifAvailable++\n this._active++\n\n protomux.stream.opened.then((opened) => {\n this._ifAvailable--\n this._active--\n\n if (opened && !this.destroyed) makePeer()\n this._checkUpgradeIfAvailable()\n\n this.core.checkIfIdle()\n })\n }\n\n detachFrom(protomux) {\n if (this._attached.delete(protomux)) {\n protomux.stream.removeListener('close', this._onstreamclose)\n protomux.unpair({ protocol: 'hypercore/alpha', id: this.core.discoveryKey })\n }\n }\n\n idle() {\n return this.peers.length === 0 && this._active === 0\n }\n\n close() {\n const waiting = []\n\n for (const peer of this.peers) {\n waiting.push(peer.channel.fullyClosed())\n }\n\n this.destroy()\n return Promise.all(waiting)\n }\n\n destroy() {\n if (this.destroyed) return\n this.destroyed = true\n\n if (this._notDownloadingTimer) {\n clearTimeout(this._notDownloadingTimer)\n this._notDownloadingTimer = null\n }\n\n if (this._updateAllBump) {\n clearTimeout(this._updateAllBump)\n this._updateAllBump = null\n }\n\n while (this.peers.length) {\n const peer = this.peers[this.peers.length - 1]\n this.detachFrom(peer.protomux)\n peer.channel.close() // peer is removed from array in onclose\n }\n\n for (const protomux of this._attached) {\n this.detachFrom(protomux)\n }\n }\n\n _makePeer(protomux) {\n const replicator = this\n if (protomux.opened({ protocol: 'hypercore/alpha', id: this.core.discoveryKey })) {\n return onnochannel()\n }\n\n const channel = protomux.createChannel({\n userData: null,\n protocol: 'hypercore/alpha',\n aliases: ['hypercore'],\n id: this.core.discoveryKey,\n handshake: m.wire.handshake,\n messages: [\n { encoding: m.wire.sync, onmessage: onwiresync },\n { encoding: m.wire.request, onmessage: onwirerequest },\n { encoding: m.wire.cancel, onmessage: onwirecancel },\n { encoding: m.wire.data, onmessage: onwiredata },\n { encoding: m.wire.noData, onmessage: onwirenodata },\n { encoding: m.wire.want, onmessage: onwirewant },\n { encoding: m.wire.unwant, onmessage: onwireunwant },\n { encoding: m.wire.bitfield, onmessage: onwirebitfield },\n { encoding: m.wire.range, onmessage: onwirerange },\n { encoding: m.wire.extension, onmessage: onwireextension }\n ],\n onopen: onwireopen,\n onclose: onwireclose,\n ondrain: onwiredrain,\n ondestroy: onwiredestroy\n })\n\n if (channel === null) return onnochannel()\n\n const peer = new Peer(replicator, protomux, channel, this.inflightRange)\n const stream = protomux.stream\n\n peer.channel.open({\n seeks: true,\n capability: caps.replicate(stream.isInitiator, this.core.key, stream.handshakeHash)\n })\n\n return true\n\n function onnochannel() {\n return false\n }\n }\n\n _onpeerupdate(added, peer) {\n const name = added ? 'peer-add' : 'peer-remove'\n const sessions = this.core.monitors\n\n for (let i = sessions.length - 1; i >= 0; i--) {\n sessions[i].emit(name, peer)\n\n if (added) {\n for (const ext of sessions[i].extensions.values()) {\n peer.extensions.set(ext.name, ext)\n }\n }\n }\n }\n\n _ondownload(index, byteLength, from, req) {\n const sessions = this.core.monitors\n\n for (let i = sessions.length - 1; i >= 0; i--) {\n const s = sessions[i]\n s.emit('download', index, byteLength - s.padding, from, req)\n }\n }\n\n _onupload(index, byteLength, from) {\n const sessions = this.core.monitors\n\n for (let i = sessions.length - 1; i >= 0; i--) {\n const s = sessions[i]\n s.emit('upload', index, byteLength - s.padding, from)\n }\n }\n\n _oninvaliddata(err, req, res, from) {\n const sessions = this.core.monitors\n\n this.stats.invalidData++\n from.stats.invalidData++\n for (let i = 0; i < sessions.length; i++) {\n sessions[i].emit('verification-error', err, req, res, from)\n }\n }\n\n _oninvalidrequest(err, req, from) {\n const sessions = this.core.monitors\n\n from.stats.invalidRequests++\n this.stats.invalidRequests++\n for (let i = 0; i < sessions.length; i++) {\n sessions[i].emit('invalid-request', err, req, from)\n }\n }\n}\n\nfunction removeHotswap(block) {\n if (block.hotswap === null) return false\n block.hotswap.ref.remove(block)\n return true\n}\n\nfunction removeInflight(inf, req) {\n const i = inf.indexOf(req)\n if (i === -1) return false\n if (i < inf.length - 1) inf[i] = inf.pop()\n else inf.pop()\n return true\n}\n\nfunction toLength(start, end) {\n return end === -1 ? -1 : end < start ? 0 : end - start\n}\n\nfunction clampRange(core, r) {\n if (r.blocks === null) {\n const start = core.bitfield.firstUnset(r.start)\n\n if (r.end === -1) r.start = start === -1 ? core.state.length : start\n else if (start === -1 || start >= r.end) r.start = r.end\n else {\n r.start = start\n\n const end = core.bitfield.lastUnset(r.end - 1)\n\n if (end === -1 || start >= end + 1) r.end = r.start\n else r.end = end + 1\n }\n } else {\n while (r.start < r.end && core.bitfield.get(r.blocks[r.start])) r.start++\n while (r.start < r.end && core.bitfield.get(r.blocks[r.end - 1])) r.end--\n }\n}\n\nfunction onrequesttimeout(req) {\n if (req.context) req.context.detach(req, REQUEST_TIMEOUT())\n}\n\nfunction destroyRequestTimeout(req) {\n if (req.timeout !== null) {\n clearTimeout(req.timeout)\n req.timeout = null\n }\n}\n\nfunction isCriticalError(err) {\n // TODO: expose .critical or similar on the hypercore errors that are critical (if all not are)\n return err.name === 'HypercoreError'\n}\n\nfunction onwireopen(m, c) {\n return c.userData.onopen(m)\n}\n\nfunction onwireclose(isRemote, c) {\n return c.userData.onclose(isRemote)\n}\n\nfunction onwiredestroy(c) {\n c.userData.replicator.onpeerdestroy()\n}\n\nfunction onwiredrain(c) {\n return c.userData.ondrain()\n}\n\nfunction onwiresync(m, c) {\n incrementRx(c.userData.stats.wireSync, c.userData.replicator.stats.wireSync)\n return c.userData.onsync(m)\n}\n\nfunction onwirerequest(m, c) {\n incrementRx(c.userData.stats.wireRequest, c.userData.replicator.stats.wireRequest)\n return c.userData.onrequest(m)\n}\n\nfunction onwirecancel(m, c) {\n incrementRx(c.userData.stats.wireCancel, c.userData.replicator.stats.wireCancel)\n return c.userData.oncancel(m)\n}\n\nfunction onwiredata(m, c) {\n incrementRx(c.userData.stats.wireData, c.userData.replicator.stats.wireData)\n return c.userData.ondata(m)\n}\n\nfunction onwirenodata(m, c) {\n return c.userData.onnodata(m)\n}\n\nfunction onwirewant(m, c) {\n incrementRx(c.userData.stats.wireWant, c.userData.replicator.stats.wireWant)\n return c.userData.onwant(m)\n}\n\nfunction onwireunwant(m, c) {\n return c.userData.onunwant(m)\n}\n\nfunction onwirebitfield(m, c) {\n incrementRx(c.userData.stats.wireBitfield, c.userData.replicator.stats.wireBitfield)\n return c.userData.onbitfield(m)\n}\n\nfunction onwirerange(m, c) {\n incrementRx(c.userData.stats.wireRange, c.userData.replicator.stats.wireRange)\n return c.userData.onrange(m)\n}\n\nfunction onwireextension(m, c) {\n incrementRx(c.userData.stats.wireExtension, c.userData.replicator.stats.wireExtension)\n return c.userData.onextension(m)\n}\n\nfunction setNotDownloadingLater(repl, session) {\n repl._setDownloadingNow(false, session)\n}\n\nfunction isBlockRequest(req) {\n return req !== null && req.block !== null\n}\n\nfunction isUpgradeRequest(req) {\n return req !== null && req.upgrade !== null\n}\n\nfunction incrementTx(stats1, stats2) {\n stats1.tx++\n stats2.tx++\n}\n\nfunction incrementRx(stats1, stats2) {\n stats1.rx++\n stats2.rx++\n}\n\nfunction noop() {}\n\nfunction backoff(times) {\n const sleep = times < 2 ? 200 : times < 5 ? 500 : times < 40 ? 1000 : 5000\n return new Promise((resolve) => setTimeout(resolve, sleep))\n}\nconst crypto = require('hypercore-crypto')\nconst b4a = require('b4a')\nconst assert = require('nanoassert')\nconst flat = require('flat-tree')\nconst quickbit = require('quickbit-universal')\nconst HypercoreStorage = require('hypercore-storage')\n\nconst {\n INVALID_OPERATION,\n INVALID_SIGNATURE,\n ASSERTION,\n SESSION_CLOSED,\n SESSION_NOT_WRITABLE\n} = require('hypercore-errors')\n\nconst Mutex = require('./mutex')\nconst Bitfield = require('./bitfield')\nconst { MerkleTree, MerkleTreeBatch } = require('./merkle-tree')\n\nclass SessionState {\n constructor(core, parent, storage, treeInfo, name) {\n this.core = core\n this.index = this.core.sessionStates.push(this) - 1\n\n this.storage = storage\n this.name = name\n this.sessions = []\n\n // small hack to close old storages as late as possible.\n // TODO: add a read lock so we can avoid that\n this.lingers = null\n\n this.parent = parent\n this.atomized = null\n this.mutex = new Mutex()\n\n // merkle state\n this.roots = treeInfo.roots.length ? treeInfo.roots : []\n this.fork = treeInfo.fork || 0\n this.length = this.roots.length ? MerkleTree.span(this.roots) / 2 : treeInfo.length\n this.byteLength = MerkleTree.size(this.roots)\n this.prologue = treeInfo.prologue || null\n this.signature = treeInfo.signature || null\n\n this.snapshotCompatLength = this.isSnapshot()\n ? Math.min(this.length, this.core.state.length)\n : -1\n this.lastTruncation = null\n this.groupUpdated = false\n\n this.active = 0\n\n this._activeTx = null\n this._pendingBitfield = null\n\n this.ref()\n }\n\n static RECOVERY_PEERS = null\n\n isSnapshot() {\n return this.storage.snapshotted\n }\n\n isDefault() {\n return this.core.state === this || this.isAtomicDefault()\n }\n\n isAtomicDefault() {\n return !!this.storage.atom && !!this.parent && this.parent.isDefault()\n }\n\n createTreeBatch() {\n return new MerkleTreeBatch(this)\n }\n\n addSession(s) {\n if (s._stateIndex !== -1) return\n s._stateIndex = this.sessions.push(s) - 1\n if (s.weak === false) this.core.activeSessions++\n }\n\n removeSession(s) {\n if (s._stateIndex === -1) return\n const head = this.sessions.pop()\n if (head !== s) this.sessions[(head._stateIndex = s._stateIndex)] = head\n s._stateIndex = -1\n if (s.weak === false) this.core.activeSessions--\n this.core.checkIfIdle()\n }\n\n flushedLength() {\n if (this.isDefault() || this.isSnapshot()) return this.length\n const deps = this.storage.dependencies\n if (deps.length) return deps[deps.length - 1].length\n return 0\n }\n\n signedLength() {\n const l = Math.min(this.flushedLength(), this.core.state.length)\n return this.isSnapshot() && l > this.snapshotCompatLength ? this.snapshotCompatLength : l\n }\n\n unref() {\n if (--this.active > 0) return\n this.close().catch(noop) // technically async, but only for the last db session\n }\n\n ref() {\n this.active++\n return this\n }\n\n hash() {\n return MerkleTree.hash(this)\n }\n\n setRoots(roots) {\n this.roots = roots\n this.length = MerkleTree.span(roots) / 2\n this.byteLength = MerkleTree.size(roots)\n }\n\n get encryptionFork() {\n return this.core.header.tree.fork\n }\n\n async _updateSnapshotStorage(storage) {\n if (!this.atomized || !this.atomized.flushing) return this.treeInfo()\n while (this.atomized.flushing) await this.atomized.flushed()\n\n let rx = storage.read()\n const headPromise = rx.getHead()\n const authPromise = rx.getAuth()\n const depPromise = rx.getDependency()\n\n rx.tryFlush()\n const [head, auth, dep] = await Promise.all([headPromise, authPromise, depPromise])\n\n storage.setDependencyHead(dep)\n\n const fork = head ? head.fork : 0\n const length = head ? head.length : 0\n\n rx = storage.read()\n const rootPromises = []\n for (const r of flat.fullRoots(length * 2)) {\n rootPromises.push(rx.getTreeNode(r))\n }\n\n rx.tryFlush()\n\n const roots = await Promise.all(rootPromises)\n\n // dbl check if we are hitting an regression from earler\n for (const root of roots) {\n if (root === null) {\n throw new Error(\n 'Bad snapshot from atomized session, id = ' +\n this.core.id +\n ' length = ' +\n length +\n ' fork = ' +\n fork\n )\n }\n }\n\n return {\n fork,\n roots,\n length,\n prologue: auth.manifest && auth.manifest.prologue,\n signature: head && head.signature\n }\n }\n\n treeInfo() {\n return {\n fork: this.fork,\n roots: this.roots.slice(),\n length: this.length,\n prologue: this.prologue,\n signature: this.signature\n }\n }\n\n async close() {\n if (this.index === -1) return\n\n this.active = 0\n this.mutex.destroy(new Error('Closed')).catch(noop)\n if (this.parent && this.parent.atomized) this.parent.atomized = null\n\n const closing = this.storage.close()\n\n const head = this.core.sessionStates.pop()\n if (head !== this) this.core.sessionStates[(head.index = this.index)] = head\n\n this.index = -1\n this.core.checkIfIdle()\n\n if (this.lingers !== null) {\n for (const storage of this.lingers) await storage.close()\n }\n\n return closing\n }\n\n async snapshot() {\n const storage = this.storage.snapshot()\n const treeInfo = await this._updateSnapshotStorage(storage)\n\n return new SessionState(this.core, null, storage, treeInfo, this.name)\n }\n\n updateDependency(tx, length) {\n const dependency = updateDependency(this, length, false)\n if (dependency) tx.setDependency(dependency)\n return dependency\n }\n\n updateGroupIndex(tx, tree) {\n const { pointer } = this.core.header.group\n\n tx.deleteGroupUpdate(pointer, this.core.header.tree.timestamp)\n tx.putGroupUpdate(pointer, tree.timestamp, this.core.header.key)\n\n this.groupUpdated = true\n }\n\n _clearActiveBatch() {\n this._activeTx = null\n }\n\n createWriteBatch() {\n assert(!this._activeTx && !this.storage.snapshotted)\n\n this._activeTx = this.storage.write()\n return this._activeTx\n }\n\n _unlock() {\n this._clearActiveBatch()\n this.mutex.unlock()\n this.core.checkIfIdle()\n }\n\n _flushHooks() {\n if (!this.groupUpdated) return\n this.groupUpdated = false\n this.core.ongroupupdate(this.core.header.group.key, {\n key: this.core.key,\n length: this.length,\n fork: this.fork\n })\n }\n\n async flush() {\n const tx = this._activeTx\n this._activeTx = null\n\n try {\n if (!(await tx.flush())) return false\n } finally {\n this._clearActiveBatch()\n }\n\n this.lastTruncation = null\n return true\n }\n\n _precommit(state) {\n assert(\n state.parent === this && state.storage.core.dataPointer === this.storage.core.dataPointer,\n 'Atomic state must flush to parent'\n )\n }\n\n async _commit() {\n await this.mutex.lock()\n\n try {\n const bitfield = this._pendingBitfield\n this._pendingBitfield = null\n this.lastTruncation = null\n await this.parent._oncommit(this, bitfield)\n } finally {\n this.mutex.unlock()\n }\n }\n\n async _oncommit(src, bitfield) {\n await this.mutex.lock()\n\n try {\n const currLength = this.length\n\n // load dependency into memory\n const rx = this.storage.read()\n const dependencyPromise = rx.getDependency()\n\n rx.tryFlush()\n\n const dependency = await dependencyPromise\n\n this.fork = src.fork\n this.length = src.length\n this.byteLength = src.byteLength\n this.roots = src.roots.slice()\n this.signature = src.signature\n\n const tree = {\n fork: this.fork,\n length: this.length,\n rootHash: this.hash(),\n signature: this.signature,\n timestamp: Date.now()\n }\n\n if (this.isDefault() && this.core.header.group) {\n const tx = this.createWriteBatch()\n this.updateGroupIndex(tx, tree)\n await this.flush()\n this._flushHooks()\n }\n\n if (dependency) this.storage.setDependencyHead(dependency)\n\n const b = bitfield\n\n if (b && b.truncated && b.start < currLength) {\n this.ontruncate(tree, b.start, currLength, true)\n if (!b || b.appends === 0) return\n }\n\n const append = b ? { start: b.start, length: b.appends, drop: false } : null\n\n this.onappend(tree, append, true)\n\n if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints()\n } finally {\n this._unlock()\n }\n }\n\n async setUserData(key, value) {\n await this.mutex.lock()\n\n try {\n const tx = this.createWriteBatch()\n tx.putUserData(key, value)\n\n return await this.flush()\n } finally {\n this._unlock()\n }\n }\n\n async _verifyBlock(batch, bitfield, value, manifest, from) {\n await this.mutex.lock()\n\n try {\n if (batch.upgraded && batch.length <= this.length) {\n await batch.downgrade()\n }\n\n if (!batch.commitable()) {\n return false\n }\n\n if (this.core.preupdate !== null) {\n await this.core.preupdate(batch, this.core.header.key)\n }\n\n const tx = this.createWriteBatch()\n\n if (bitfield) {\n tx.putBlock(bitfield.start, value)\n }\n\n if (bitfield && this.isDefault()) {\n await storeBitfieldRange(this.storage, tx, bitfield.start, bitfield.start + 1, true)\n }\n\n if (manifest) this.core._setManifest(tx, manifest, null)\n\n assert(batch.commitable(), 'Should still be commitable')\n batch.commit(tx)\n\n const head = {\n fork: batch.fork,\n length: batch.length,\n rootHash: batch.hash(),\n signature: batch.signature,\n timestamp: Date.now()\n }\n\n if (batch.upgraded) {\n tx.setHead(head)\n\n if (this.core.header.group) {\n this.updateGroupIndex(tx, head)\n }\n }\n\n const flushed = await this.flush()\n\n if (batch.upgraded) {\n this.roots = batch.roots\n this.length = batch.length\n this.byteLength = batch.byteLength\n this.fork = batch.fork\n this.signature = batch.signature\n\n this.onappend(head, bitfield, flushed)\n }\n\n if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints()\n } finally {\n this._unlock()\n }\n\n return true\n }\n\n async truncate(length, fork, { signature, keyPair } = {}) {\n if (!keyPair && this.isDefault()) keyPair = this.core.header.keyPair\n\n await this.mutex.lock()\n\n try {\n if (this.prologue && length < this.prologue.length) {\n throw INVALID_OPERATION('Truncation breaks prologue', this.core.discoveryKey)\n }\n if (length > this.length) {\n throw INVALID_OPERATION(\n 'Not a truncation, ' + length + ' must be less or equal to ' + this.length,\n this.core.discoveryKey\n )\n }\n\n const batch = this.createTreeBatch()\n await MerkleTree.truncate(this, length, batch, fork)\n\n if (signature) {\n batch.signature = signature\n this.core._verifyBatchUpgrade(batch)\n } else if (keyPair) {\n batch.signature = this.core.verifier.sign(batch, keyPair)\n }\n\n const tx = this.createWriteBatch()\n\n // upsert compat manifest\n if (this.core.verifier === null && keyPair) this.core._setManifest(tx, null, keyPair)\n\n const { dependency, tree, roots } = await this._truncate(tx, batch)\n\n for (const sessionState of this.core.sessionStates) {\n if (\n sessionState.isSnapshot() &&\n sessionState.name === this.name &&\n length < sessionState.snapshotCompatLength\n ) {\n sessionState.snapshotCompatLength = length\n }\n }\n\n const flushed = await this.flush()\n\n this.fork = tree.fork\n this.length = tree.length\n this.byteLength = MerkleTree.size(roots)\n this.roots = roots\n this.signature = tree.signature\n\n if (dependency) this.storage.setDependencyHead(dependency)\n\n this.ontruncate(tree, tree.length, batch.treeLength, flushed)\n\n if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints()\n } finally {\n this._unlock()\n }\n }\n\n async reorg(batch) {\n await this.mutex.lock()\n\n const storage = this.createWriteBatch()\n\n try {\n if (!batch.commitable()) return false\n\n const { dependency, tree } = await this._truncate(storage, batch)\n\n const flushed = await this.flush()\n\n this.fork = batch.fork\n this.length = batch.length\n this.byteLength = batch.byteLength\n this.roots = batch.roots\n this.signature = batch.signature\n\n if (dependency) this.storage.setDependencyHead(dependency)\n\n this.ontruncate(tree, batch.ancestors, batch.treeLength, flushed)\n\n if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints()\n } finally {\n this._unlock()\n }\n }\n\n async _truncate(storage, batch) {\n storage.deleteBlockRange(batch.ancestors, batch.treeLength)\n\n assert(batch.commitable(), 'Batch must be commitable')\n\n const tree = {\n fork: batch.fork,\n length: batch.length,\n rootHash: batch.hash(),\n signature: batch.signature,\n timestamp: Date.now()\n }\n\n if (this.isDefault() && this.core.header.group) {\n this.updateGroupIndex(storage, tree)\n }\n\n storage.setHead(tree)\n batch.commit(storage)\n\n const truncated = batch.length < this.flushedLength()\n const dependency = truncated ? updateDependency(this, batch.length, true) : null\n\n if (dependency) storage.setDependency(dependency)\n\n if (this.isDefault()) {\n await storeBitfieldRange(this.storage, storage, batch.ancestors, batch.treeLength, false)\n if (batch.ancestors < this.core.header.hints.contiguousLength) {\n this.core.header.hints.remoteContiguousLength = Math.min(\n batch.length,\n this.core.header.hints.remoteContiguousLength\n )\n storage.setHints({\n contiguousLength: batch.ancestors,\n remoteContiguousLength: this.core.header.hints.remoteContiguousLength\n })\n }\n }\n\n return { dependency, tree, roots: batch.roots }\n }\n\n async clear(start, end, cleared) {\n await this.mutex.lock()\n\n try {\n const tx = this.createWriteBatch()\n\n const ite = flat.iterator(start * 2)\n while (!isRootIndex(ite.index, this.roots)) {\n const a = ite.index\n const b = ite.sibling()\n ite.parent()\n\n const [left, right] = flat.spans(b)\n const s = left / 2\n const e = right / 2 + 1\n const has = s <= start && e <= end ? false : this.core.bitfield.hasSet(s, e - s)\n if (has) break\n\n tx.deleteTreeNode(a)\n tx.deleteTreeNode(b)\n }\n\n if (this.isDefault()) {\n await storeBitfieldRange(this.storage, tx, start, end, false)\n if (start < this.core.header.hints.contiguousLength) {\n tx.setHints({\n contiguousLength: start,\n remoteContiguousLength: this.core.header.hints.remoteContiguousLength\n })\n }\n }\n\n if (end - start === 1) tx.deleteBlock(start)\n else tx.deleteBlockRange(start, end)\n\n const dependency = start < this.flushedLength() ? updateDependency(this, start, true) : null\n\n const flushed = await this.flush()\n\n if (dependency) this.storage.setDependencyHead(dependency)\n\n // todo: atomic event handle\n if (this.isDefault() && flushed) {\n const length = end - start\n\n this.core.updateContiguousLength({ start, length, drop: true })\n this.core._setBitfieldRanges(start, end, false)\n this.core.replicator.onhave(start, length, true)\n\n if (this.core.hintsChanged) await this.core.flushHints()\n }\n } finally {\n this._unlock()\n }\n }\n\n // simple tool to wait for other peers to catch us up\n async waitForRecovery() {\n const length = this.length\n const replicator = this.core.replicator\n\n while (!this.closing) {\n let peers = getRecoveryPeers(replicator.peers)\n\n if (peers.length < 1) {\n await new Promise((resolve) => setTimeout(resolve, 5000))\n continue\n }\n\n let restart = false\n\n for (let i = 0; i < 32; i++) {\n await new Promise((resolve) => setTimeout(resolve, 250))\n\n peers = getRecoveryPeers(replicator.peers)\n\n if (this.closing || !validateRecoveryPeers(peers, this.length)) {\n restart = true\n break\n }\n }\n\n if (restart) continue\n\n if (this.length !== length) {\n throw SESSION_NOT_WRITABLE('core recovered during append')\n }\n\n this.core.header.hints.recovering = 0\n this.core.hintsChanged = true\n\n await this.mutex.lock()\n try {\n await this.core.flushHints()\n return\n } finally {\n this.mutex.unlock()\n }\n }\n\n throw SESSION_CLOSED('Cannot recover a closed session', this.discoveryKey)\n }\n\n async append(values, { signature, keyPair, preappend, postappend, maxLength = -1 } = {}) {\n if (!keyPair && this.isDefault()) keyPair = this.core.header.keyPair\n\n if (this.isDefault() && this.core.header.hints.recovering) await this.waitForRecovery()\n\n await this.mutex.lock()\n\n try {\n if (maxLength >= 0 && this.length + values.length > maxLength) {\n return { length: this.length, byteLength: this.byteLength }\n }\n\n const tx = this.createWriteBatch()\n\n // upsert compat manifest\n if (this.core.verifier === null && keyPair) this.core._setManifest(tx, null, keyPair)\n\n if (preappend) await preappend(values)\n\n if (!values.length) {\n await this.flush()\n return { length: this.length, byteLength: this.byteLength }\n }\n\n const batch = this.createTreeBatch()\n for (const val of values) batch.append(val)\n\n // only multisig can have prologue so signature is always present\n if (this.prologue && batch.length < this.prologue.length) {\n throw INVALID_OPERATION('Append is not consistent with prologue', this.core.discoveryKey)\n }\n\n if (signature) {\n batch.signature = signature\n this.core._verifyBatchUpgrade(batch)\n } else if (keyPair) {\n batch.signature = this.core.verifier.sign(batch, keyPair)\n }\n\n batch.commit(tx)\n\n const tree = {\n fork: batch.fork,\n length: batch.length,\n rootHash: batch.hash(),\n signature: batch.signature,\n timestamp: Date.now()\n }\n\n tx.setHead(tree)\n\n if (this.isDefault()) {\n await storeBitfieldRange(this.storage, tx, batch.ancestors, batch.length, true)\n if (this.length === this.core.header.hints.contiguousLength) {\n tx.setHints({\n contiguousLength: this.length + values.length,\n remoteContiguousLength: this.core.header.hints.remoteContiguousLength\n })\n }\n\n if (this.core.header.group) {\n this.updateGroupIndex(tx, tree)\n }\n }\n\n for (let i = 0; i < values.length; i++) {\n tx.putBlock(this.length + i, values[i])\n }\n\n const bitfield = {\n drop: false,\n start: batch.ancestors,\n length: values.length\n }\n\n const flushed = await this.flush()\n\n this.fork = batch.fork\n this.roots = batch.roots\n this.length = batch.length\n this.byteLength = batch.byteLength\n this.signature = batch.signature\n\n if (postappend) await postappend(values)\n\n this.onappend(tree, bitfield, flushed)\n\n if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints()\n\n return { length: this.length, byteLength: this.byteLength }\n } finally {\n this._unlock()\n }\n }\n\n onappend(tree, bitfield, flushed) {\n if (!flushed) this._updateBitfield(bitfield)\n else if (this.isDefault()) this.core.onappend(tree, bitfield)\n\n for (let i = this.sessions.length - 1; i >= 0; i--) {\n this.sessions[i].emit('append')\n }\n\n this._flushHooks()\n }\n\n ontruncate(tree, to, from, flushed) {\n const bitfield = { start: to, length: from - to, drop: true }\n\n this.lastTruncation = { from, to }\n\n if (!flushed) this._updateBitfield(bitfield)\n else if (this.isDefault()) this.core.ontruncate(tree, bitfield)\n\n for (const sessionState of this.core.sessionStates) {\n if (\n sessionState.isSnapshot() &&\n sessionState.name === this.name &&\n to < sessionState.snapshotCompatLength\n ) {\n sessionState.snapshotCompatLength = to\n }\n }\n\n for (let i = this.sessions.length - 1; i >= 0; i--) {\n this.sessions[i].emit('truncate', to, tree.fork)\n }\n\n this._flushHooks()\n }\n\n _updateBitfield(bitfield, flushed) {\n if (!bitfield) return\n\n const p = this._pendingBitfield\n const b = bitfield\n\n if (b.drop) {\n // truncation must be from end\n if (p && b.start + b.length !== p.start + p.appends) {\n throw INVALID_OPERATION('Atomic truncations must be contiguous', this.core.discoveryKey)\n }\n\n // actual truncation\n if (p === null || b.start < p.start) {\n this._pendingBitfield = { truncated: true, start: b.start, appends: 0 }\n return\n }\n\n // just clearing batch data\n p.appends = b.start - p.start\n\n // we cleared the current batch\n if (p.appends === 0) this._pendingBitfield = null\n\n return\n }\n\n if (p === null) {\n this._pendingBitfield = { truncated: false, start: b.start, appends: b.length }\n return\n }\n\n if (b.start !== p.start + p.appends) {\n throw INVALID_OPERATION('Atomic operations must be contiguous', this.core.discoveryKey)\n }\n\n p.appends += b.length\n }\n\n async catchup(length) {\n assert(!this.isDefault(), 'Cannot catchup signed state') // TODO: make this check better\n\n await this.mutex.lock()\n\n try {\n const origLength = this.length\n\n let sharedLength = 0\n for (let i = this.storage.dependencies.length - 1; i >= 0; i--) {\n const dep = this.storage.dependencies[i]\n if (dep.dataPointer === this.core.state.storage.core.dataPointer) {\n sharedLength = dep.length\n break\n }\n }\n\n const tx = this.createWriteBatch()\n const rx = this.core.state.storage.read()\n const rootPromises = []\n\n for (const root of flat.fullRoots(length * 2)) {\n rootPromises.push(rx.getTreeNode(root))\n }\n\n rx.tryFlush()\n\n const roots = await Promise.all(rootPromises)\n const truncating = sharedLength < origLength\n\n for (const node of roots) {\n if (node === null) {\n throw INVALID_OPERATION(\n 'Invalid catchup length, tree nodes not available',\n this.core.discoveryKey\n )\n }\n }\n\n const fork = truncating ? this.fork + 1 : this.fork\n\n // overwrite it atm, TODO: keep what we can connect to the tree\n tx.deleteBlockRange(0, -1)\n tx.deleteTreeNodeRange(0, -1)\n tx.deleteBitfieldPageRange(0, -1)\n\n const tree = {\n fork,\n length,\n rootHash: crypto.tree(roots),\n signature: null,\n timestamp: Date.now()\n }\n\n // never default state so do not update group index\n tx.setHead(tree)\n\n // prop a better way to do this\n const dep = updateDependency(this, sharedLength, true)\n dep.length = length\n\n tx.setDependency(dep)\n\n const flushed = await this.flush()\n\n this.storage.setDependencyHead(dep)\n\n this.fork = tree.fork\n this.roots = roots\n this.length = tree.length\n this.byteLength = MerkleTree.size(roots)\n\n if (truncating) this.ontruncate(tree, sharedLength, origLength, flushed)\n if (sharedLength < length) this.onappend(tree, null, flushed)\n\n if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints()\n } finally {\n this._unlock()\n }\n }\n\n async _overwrite(source, fork, length, treeLength, signature) {\n const blockPromises = []\n const treePromises = []\n const rootPromises = []\n\n const rx = source.storage.read()\n\n for (const root of flat.fullRoots(length * 2)) {\n rootPromises.push(rx.getTreeNode(root))\n }\n\n for (const index of flat.patch(treeLength * 2, length * 2)) {\n treePromises.push(rx.getTreeNode(index))\n }\n\n for (let i = treeLength; i < length; i++) {\n treePromises.push(rx.getTreeNode(i * 2))\n treePromises.push(rx.getTreeNode(i * 2 + 1))\n blockPromises.push(rx.getBlock(i))\n }\n\n rx.tryFlush()\n\n const [blocks, nodes, roots] = await Promise.all([\n Promise.all(blockPromises),\n Promise.all(treePromises),\n Promise.all(rootPromises)\n ])\n\n if (this.core.destroyed) throw new Error('Core destroyed')\n\n if (signature) {\n const batch = this.createTreeBatch()\n batch.roots = roots\n batch.length = length\n\n if (!this.core.verifier.verify(batch, signature)) {\n throw INVALID_SIGNATURE(\n 'Signature is not valid over committed tree',\n this.core.discoveryKey\n )\n }\n }\n\n const tx = this.createWriteBatch()\n\n // truncate existing tree\n if (treeLength < this.length) {\n tx.deleteBlockRange(treeLength, this.length)\n }\n\n for (const root of roots) tx.putTreeNode(root)\n\n // no nodes will be copied in shallow mode\n for (const node of nodes) {\n if (node !== null) tx.putTreeNode(node)\n }\n\n for (let i = 0; i < blocks.length; i++) {\n assert(blocks[i] !== null, 'has block')\n tx.putBlock(i + treeLength, blocks[i])\n }\n\n const totalLength = Math.max(length, this.length)\n\n if (totalLength > treeLength) {\n const firstPage = getBitfieldPage(treeLength)\n const lastPage = getBitfieldPage(totalLength - 1)\n\n const srx = this.storage.read()\n const bitfieldPagePromise = srx.getBitfieldPage(firstPage)\n srx.tryFlush()\n\n const bitfieldPage = await bitfieldPagePromise\n\n let index = treeLength\n\n for (let i = firstPage; i <= lastPage; i++) {\n const page = b4a.alloc(Bitfield.BYTES_PER_PAGE)\n tx.putBitfieldPage(i, page)\n\n // copy existing bits in\n if (i === firstPage && bitfieldPage) page.set(bitfieldPage)\n\n if (index < length) {\n index = fillBitfieldPage(page, index, length, i, true)\n if (index < length) continue\n }\n\n if (index < this.length) {\n index = fillBitfieldPage(page, index, this.length, i, false)\n }\n }\n }\n\n const tree = {\n fork,\n length,\n rootHash: crypto.tree(roots),\n signature,\n timestamp: Date.now()\n }\n\n if (this.isDefault() && this.core.header.group) {\n this.updateGroupIndex(tx, tree)\n }\n\n const upgraded = treeLength < this.length || this.length < length || tree.fork !== this.fork\n\n if (upgraded) tx.setHead(tree)\n\n const flushed = await this.flush()\n\n this.fork = tree.fork\n this.roots = roots\n this.length = length\n this.byteLength = MerkleTree.size(roots)\n this.signature = signature\n\n return { tree, flushed }\n }\n\n static isParent(state, parent) {\n // atomic batches have parent set\n if (state.parent && state.parent === parent) return true\n\n return HypercoreStorage.isParentStorage(state.storage, parent.storage)\n }\n\n async commit(state, { signature, keyPair, length = state.length, treeLength = -1 } = {}) {\n assert(\n this.isDefault() || (this.parent && this.parent.isDefault()),\n 'Can only commit into default state'\n )\n\n assert(SessionState.isParent(state, this), 'Cannot commit across cores')\n\n if (this.core._repairMode) {\n throw ASSERTION('Cannot commit while repair mode is on')\n }\n\n if (this.core.header.hints.recovering) await this.waitForRecovery()\n\n let srcLocked = false\n await this.mutex.lock()\n\n try {\n await state.mutex.lock()\n srcLocked = true\n\n if (treeLength === -1) treeLength = state.flushedLength()\n\n if (!(await this.core._validateCommit(state, treeLength))) return null\n if (this.length > length) return null\n\n if (this.length < length && !signature) {\n if (!keyPair) keyPair = this.core.header.keyPair\n const batch = state.createTreeBatch()\n if (length !== batch.length) await batch.restore(length)\n signature = this.core.verifier.sign(batch, keyPair)\n }\n\n const { tree, flushed } = await this._overwrite(\n state,\n this.fork,\n length,\n treeLength,\n signature\n )\n\n // gc blocks from source\n if (treeLength < length) {\n const tx = state.createWriteBatch()\n\n tx.deleteBlockRange(treeLength, length)\n const dependency = state.updateDependency(tx, length)\n\n await state.flush(tx)\n\n if (dependency) state.storage.setDependencyHead(dependency)\n }\n\n const bitfield = { start: treeLength, length: length - treeLength, drop: false }\n this.onappend(tree, bitfield, flushed)\n\n return {\n length: this.length,\n byteLength: this.byteLength\n }\n } finally {\n if (srcLocked) state._unlock()\n this._unlock()\n }\n }\n\n async _getTreeHeadAt(length) {\n if (length === null) return this.treeInfo()\n\n const head = getDefaultTree()\n\n head.length = length\n\n const roots = await MerkleTree.getRootsFromStorage(this.storage, length)\n const rootHash = crypto.tree(roots)\n\n head.fork = this.fork\n head.rootHash = rootHash\n\n if (length === this.length) head.signature = this.signature\n\n return head\n }\n\n _moveToCore(core, truncated, appended) {\n const head = this.core.sessionStates.pop()\n if (head !== this) this.core.sessionStates[(head.index = this.index)] = head\n\n this.core = core\n this.index = this.core.sessionStates.push(this) - 1\n\n for (let i = this.sessions.length - 1; i >= 0; i--) {\n const s = this.sessions[i]\n const manifest = s.manifest\n s.transferSession(this.core)\n if (!manifest && s.manifest) s.emit('manifest')\n if (truncated) s.emit('truncate', truncated.to, truncated.fork)\n if (appended) s.emit('append')\n }\n }\n\n async moveTo(core, length) {\n const state = core.state\n\n await this.mutex.lock()\n\n try {\n // if (state.storage && (await state.storage.resumeSession(this.name)) !== null) {\n // throw STORAGE_CONFLICT('Batch has already been created')\n // }\n\n const treeLength = this.length\n\n let truncated = null\n let appended = false\n\n if (!this.isSnapshot()) {\n if (this.lingers === null) this.lingers = []\n this.lingers.push(this.storage)\n\n const resumed = await state.storage.resumeSession(this.name)\n\n const truncation = length < this.length ? await truncateAndFlush(this, length) : null\n const treeInfo = truncation\n ? truncation.tree\n : resumed\n ? null\n : await state._getTreeHeadAt(this.length)\n\n const fork = truncation ? this.fork + 1 : this.fork\n\n // todo: validate treeInfo\n\n let storage = null\n\n if (resumed) {\n storage = resumed\n } else {\n treeInfo.fork = fork\n storage = await state.storage.createSession(this.name, treeInfo)\n }\n\n const roots = await MerkleTree.getRootsFromStorage(storage, length)\n\n this.storage = storage\n this.prologue = state.prologue\n this.fork = fork\n this.length = length\n this.byteLength = MerkleTree.size(roots)\n this.roots = roots\n\n if (truncation) {\n const { dependency } = truncation\n\n if (dependency) this.storage.setDependencyHead(dependency)\n truncated = { to: treeLength, fork }\n }\n\n if (this.length > treeLength) {\n appended = true\n }\n }\n\n for (let i = this.core.sessionStates.length - 1; i >= 0; i--) {\n const state = this.core.sessionStates[i]\n if (state === this) continue\n if (state.name === this.name) state._moveToCore(core.core)\n }\n\n this._moveToCore(core.core, truncated, appended)\n } finally {\n this._unlock()\n }\n }\n\n async createSession(name, overwrite, atom) {\n await this.mutex.lock()\n\n try {\n let storage = null\n let treeInfo = null\n\n if (!atom && !overwrite && this.storage) {\n storage = await this.storage.resumeSession(name)\n\n if (storage !== null) treeInfo = (await getCoreHead(storage)) || getDefaultTree()\n }\n\n const length = treeInfo ? treeInfo.length : this.length\n\n if (storage === null) {\n treeInfo = await this._getTreeHeadAt(length)\n\n if (atom) {\n storage = await this.storage.createAtomicSession(atom, treeInfo)\n } else {\n storage = await this.storage.createSession(name, treeInfo)\n }\n }\n\n if (this.atomized && atom) {\n throw new Error('Session already atomized')\n }\n\n const head = {\n fork: this.fork,\n roots:\n length === this.length\n ? this.roots.slice()\n : await MerkleTree.getRootsFromStorage(storage, length),\n length,\n prologue: this.prologue,\n signature: length === this.length ? this.signature : null\n }\n\n const state = new SessionState(\n this.core,\n atom ? this : null,\n storage,\n head,\n atom ? this.name : name\n )\n\n if (atom) {\n this.atomized = atom\n atom.preflush(this._precommit.bind(this, state))\n atom.onflush(state._commit.bind(state))\n }\n\n return state\n } finally {\n this._unlock()\n }\n }\n}\n\nmodule.exports = SessionState\n\nfunction noop() {}\n\nfunction getBitfieldPage(index) {\n return Math.floor(index / Bitfield.BITS_PER_PAGE)\n}\n\nfunction fillBitfieldPage(page, start, end, pageIndex, value) {\n const offset = pageIndex * Bitfield.BITS_PER_PAGE\n const max = offset + Bitfield.BITS_PER_PAGE\n\n const index = max < end ? max : end\n\n const from = start - offset\n const to = index - offset\n\n quickbit.fill(page, value, from, to)\n\n return index\n}\n\nasync function storeBitfieldRange(storage, tx, from, to, value) {\n if (from >= to) return\n\n const firstPage = getBitfieldPage(from)\n const lastPage = getBitfieldPage(to - 1)\n\n let index = from\n\n const rx = storage.read()\n\n const promises = []\n for (let i = firstPage; i <= lastPage; i++) {\n promises.push(rx.getBitfieldPage(i))\n }\n\n rx.tryFlush()\n\n const pages = await Promise.all(promises)\n const cnt = lastPage - firstPage + 1\n\n for (let i = 0; i < cnt; i++) {\n const pageIndex = i + firstPage\n if (!pages[i]) pages[i] = b4a.alloc(Bitfield.BYTES_PER_PAGE)\n\n index = fillBitfieldPage(pages[i], index, to, pageIndex, value)\n tx.putBitfieldPage(pageIndex, pages[i])\n }\n}\n\nasync function truncateAndFlush(s, length) {\n const batch = s.createTreeBatch()\n await MerkleTree.truncate(s, length, batch, s.fork)\n const tx = s.createWriteBatch()\n\n const info = await s._truncate(tx, batch)\n const flushed = await s.flush()\n\n return {\n tree: info.tree,\n roots: info.roots,\n dependency: info.dependency,\n flushed\n }\n}\n\nfunction updateDependency(state, length, truncated) {\n const i = state.storage.findDependencyIndex(length, truncated)\n if (i === -1) return null // skip default state and overlays of default\n\n return {\n dataPointer: state.storage.dependencies[i].dataPointer,\n length\n }\n}\n\nfunction getDefaultTree() {\n return {\n fork: 0,\n length: 0,\n rootHash: null,\n signature: null\n }\n}\n\nfunction getCoreHead(storage) {\n const b = storage.read()\n const p = b.getHead()\n b.tryFlush()\n return p\n}\n\nfunction isRootIndex(index, roots) {\n for (const node of roots) {\n if (node.index === index) return true\n }\n\n return false\n}\n\nfunction getRecoveryPeers(peers) {\n if (!SessionState.RECOVERY_PEERS) return peers\n\n const actual = []\n\n for (const p of peers) {\n for (const r of SessionState.RECOVERY_PEERS) {\n if (b4a.equals(p.remotePublicKey, r)) {\n actual.push(p)\n break\n }\n }\n }\n\n return actual\n}\n\nfunction validateRecoveryPeers(peers, length) {\n if (peers.length < 1) return false\n\n for (const p of peers) {\n if (p.remoteLength > length) return false\n if (p.remoteLength === 0 && !p.remoteSynced) return false\n }\n\n return true\n}\nconst { Writable, Readable } = require('streamx')\n\nclass ReadStream extends Readable {\n constructor(core, opts = {}) {\n super()\n\n this.core = core\n this.start = opts.start || 0\n this.end = typeof opts.end === 'number' ? opts.end : -1\n this.snapshot = !opts.live && opts.snapshot !== false\n this.live = this.end === -1 ? !!opts.live : false\n this.wait = typeof opts.wait === 'boolean' ? opts.wait : this.core.wait\n this.timeout = opts.timeout || core.timeout\n }\n\n _open(cb) {\n this._openP().then(cb, cb)\n }\n\n _read(cb) {\n this._readP().then(cb, cb)\n }\n\n async _openP() {\n if (this.end === -1) await this.core.update()\n else await this.core.ready()\n if (this.snapshot && this.end === -1) this.end = this.core.length\n }\n\n async _readP() {\n const end = this.live ? -1 : this.end === -1 ? this.core.length : this.end\n if (end >= 0 && this.start >= end) {\n this.push(null)\n return\n }\n\n this.push(await this.core.get(this.start++, { wait: this.wait, timeout: this.timeout }))\n }\n}\n\nexports.ReadStream = ReadStream\n\nclass WriteStream extends Writable {\n constructor(core) {\n super()\n this.core = core\n }\n\n _writev(batch, cb) {\n this._writevP(batch).then(cb, cb)\n }\n\n async _writevP(batch) {\n await this.core.append(batch)\n }\n}\n\nexports.WriteStream = WriteStream\n\nclass ByteStream extends Readable {\n constructor(core, opts = {}) {\n super()\n\n this._core = core\n this._index = 0\n this._range = null\n\n this._byteOffset = opts.byteOffset || 0\n this._byteLength = typeof opts.byteLength === 'number' ? opts.byteLength : -1\n this._prefetch = typeof opts.prefetch === 'number' ? opts.prefetch : 32\n\n this._applyOffset = this._byteOffset > 0\n }\n\n _open(cb) {\n this._openp().then(cb, cb)\n }\n\n _read(cb) {\n this._readp().then(cb, cb)\n }\n\n async _openp() {\n if (this._byteLength === -1) {\n await this._core.update()\n this._byteLength = Math.max(this._core.byteLength - this._byteOffset, 0)\n }\n }\n\n async _readp() {\n let data = null\n\n if (this._byteLength === 0) {\n this.push(null)\n return\n }\n\n let relativeOffset = 0\n\n if (this._applyOffset) {\n this._applyOffset = false\n\n const [block, byteOffset] = await this._core.seek(this._byteOffset)\n\n this._index = block\n relativeOffset = byteOffset\n }\n\n this._predownload(this._index + 1)\n data = await this._core.get(this._index++, { valueEncoding: 'binary' })\n\n if (relativeOffset > 0) data = data.subarray(relativeOffset)\n\n if (data.byteLength > this._byteLength) data = data.subarray(0, this._byteLength)\n this._byteLength -= data.byteLength\n\n this.push(data)\n if (this._byteLength === 0) this.push(null)\n }\n\n _predownload(index) {\n if (this._range) this._range.destroy()\n this._range = this._core.download({ start: index, end: index + this._prefetch, linear: true })\n }\n\n _destroy(cb) {\n if (this._range) this._range.destroy()\n cb(null)\n }\n}\n\nexports.ByteStream = ByteStream\nconst crypto = require('hypercore-crypto')\nconst b4a = require('b4a')\nconst c = require('compact-encoding')\nconst flat = require('flat-tree')\nconst { BAD_ARGUMENT } = require('hypercore-errors')\nconst unslab = require('unslab')\n\nconst m = require('./messages')\nconst multisig = require('./multisig')\nconst caps = require('./caps')\n\nclass Signer {\n constructor(\n manifestHash,\n version,\n index,\n { signature = 'ed25519', publicKey, namespace = caps.DEFAULT_NAMESPACE } = {}\n ) {\n if (!publicKey) throw BAD_ARGUMENT('public key is required for a signer')\n if (signature !== 'ed25519') throw BAD_ARGUMENT('Only Ed25519 signatures are supported')\n\n this.manifestHash = manifestHash\n this.version = version\n this.signer = index\n this.signature = signature\n this.publicKey = publicKey\n this.namespace = namespace\n }\n\n _ctx() {\n return this.version === 0 ? this.namespace : this.manifestHash\n }\n\n verify(batch, signature) {\n return crypto.verify(batch.signable(this._ctx()), signature, this.publicKey)\n }\n\n sign(batch, keyPair) {\n return crypto.sign(batch.signable(this._ctx()), keyPair.secretKey)\n }\n}\n\nclass CompatSigner extends Signer {\n constructor(index, signer, legacy) {\n super(null, 0, index, signer)\n this.legacy = legacy\n }\n\n verify(batch, signature) {\n return crypto.verify(batch.signableCompat(this.legacy), signature, this.publicKey)\n }\n\n sign(batch, keyPair) {\n return crypto.sign(batch.signableCompat(this.legacy), keyPair.secretKey)\n }\n}\n\nmodule.exports = class Verifier {\n constructor(\n manifestHash,\n manifest,\n { compat = isCompat(manifestHash, manifest), legacy = false } = {}\n ) {\n const self = this\n\n this.manifestHash = manifestHash\n this.compat = compat || manifest === null\n this.version = this.compat ? 0 : typeof manifest.version === 'number' ? manifest.version : 1\n this.hash = manifest.hash || 'blake2b'\n this.allowPatch = !this.compat && !!manifest.allowPatch\n this.quorum = this.compat ? 1 : defaultQuorum(manifest)\n\n this.signers = manifest.signers ? manifest.signers.map(createSigner) : []\n this.prologue = this.compat ? null : manifest.prologue || null\n\n function createSigner(signer, index) {\n return self.compat\n ? new CompatSigner(index, signer, legacy)\n : new Signer(manifestHash, self.version, index, signer)\n }\n }\n\n _verifyCompat(batch, signature) {\n if (!signature) return false\n\n if (this.compat || (!this.allowPatch && this.signers.length === 1)) {\n return !!signature && this.signers[0].verify(batch, signature)\n }\n\n return this._verifyMulti(batch, signature)\n }\n\n _inflate(signature) {\n if (this.version >= 1) return multisig.inflate(signature)\n const { proofs, patch } = multisig.inflatev0(signature)\n\n return {\n proofs: proofs.map(proofToVersion1),\n patch\n }\n }\n\n _verifyMulti(batch, signature) {\n if (!signature || this.quorum === 0) return false\n\n const { proofs, patch } = this._inflate(signature)\n if (proofs.length < this.quorum) return false\n\n const tried = new Uint8Array(this.signers.length)\n const nodes = this.allowPatch && patch.length ? toMap(patch) : null\n\n for (let i = 0; i < this.quorum; i++) {\n const inp = proofs[i]\n\n let tree = batch\n\n if (inp.patch && this.allowPatch) {\n tree = batch.clone()\n\n const upgrade = generateUpgrade(nodes, batch.length, inp.patch)\n const proof = {\n fork: tree.fork,\n block: null,\n hash: null,\n seek: null,\n upgrade,\n manifest: null\n }\n\n try {\n if (!tree.verifyUpgrade(proof)) return false\n } catch {\n return false\n }\n }\n\n if (inp.signer >= this.signers.length || tried[inp.signer]) return false\n tried[inp.signer] = 1\n\n const s = this.signers[inp.signer]\n if (!s.verify(tree, inp.signature)) return false\n }\n\n return true\n }\n\n verify(batch, signature) {\n if (this.version === 0) {\n return this._verifyCompat(batch, signature)\n }\n\n if (this.prologue !== null && batch.length <= this.prologue.length) {\n return batch.length === this.prologue.length && b4a.equals(batch.hash(), this.prologue.hash)\n }\n\n return this._verifyMulti(batch, signature)\n }\n\n // TODO: better api for this that is more ... multisig-ey\n sign(batch, keyPair) {\n if (!keyPair || !keyPair.secretKey) throw BAD_ARGUMENT('No key pair was passed')\n\n for (const s of this.signers) {\n if (b4a.equals(s.publicKey, keyPair.publicKey)) {\n const signature = s.sign(batch, keyPair)\n if (this.signers.length !== 1 || this.version === 0) return signature\n return this.assemble([{ signer: 0, signature, patch: 0, nodes: null }])\n }\n }\n\n throw BAD_ARGUMENT('Public key is not a declared signer')\n }\n\n assemble(inputs) {\n return this.version === 0 ? multisig.assemblev0(inputs) : multisig.assemble(inputs)\n }\n\n static manifestHash(manifest) {\n return manifestHash(manifest)\n }\n\n static encodeManifest(manifest) {\n return c.encode(m.manifest, manifest)\n }\n\n static decodeManifest(manifest) {\n return c.decode(m.manifest, manifest)\n }\n\n static defaultSignerManifest(publicKey) {\n return {\n version: 1,\n hash: 'blake2b',\n allowPatch: false,\n quorum: 1,\n signers: [\n {\n signature: 'ed25519',\n namespace: caps.DEFAULT_NAMESPACE,\n publicKey\n }\n ],\n prologue: null,\n linked: null,\n userData: null\n }\n }\n\n static fromManifest(manifest, opts) {\n const m = this.createManifest(manifest)\n return new this(manifestHash(m), m, opts)\n }\n\n static createManifest(inp) {\n if (!inp) return null\n\n if (inp.quorum && inp.quorum < 0) throw BAD_ARGUMENT('Quorum cannot be negative')\n if (inp.quorum && inp.signers && inp.quorum > inp.signers.length) {\n throw BAD_ARGUMENT('Quorum should not be higher than the number of signers')\n }\n\n const manifest = {\n version: getManifestVersion(inp), // defaults to v1\n hash: 'blake2b',\n allowPatch: !!inp.allowPatch,\n quorum: defaultQuorum(inp),\n signers: inp.signers ? inp.signers.map(parseSigner) : [],\n prologue: null,\n linked: null,\n userData: inp.userData || null\n }\n\n if (inp.hash && inp.hash !== 'blake2b') throw BAD_ARGUMENT('Only Blake2b hashes are supported')\n\n if (inp.prologue) {\n if (\n !(b4a.isBuffer(inp.prologue.hash) && inp.prologue.hash.byteLength === 32) ||\n !(inp.prologue.length >= 0)\n ) {\n throw BAD_ARGUMENT('Invalid prologue')\n }\n\n manifest.prologue = inp.prologue\n manifest.prologue.hash = unslab(manifest.prologue.hash)\n }\n\n if (manifest.userData !== null && manifest.version < 2) {\n throw BAD_ARGUMENT('Invalid field: userData')\n }\n\n if (inp.linked && inp.linked.length) {\n if (manifest.version < 2) throw BAD_ARGUMENT('Invalid field: linked')\n\n for (const key of inp.linked) {\n if (!(b4a.isBuffer(key) && key.byteLength === 32)) {\n throw BAD_ARGUMENT('Invalid key')\n }\n }\n\n manifest.linked = inp.linked\n }\n\n return manifest\n }\n\n static isValidManifest(key, manifest) {\n return b4a.equals(key, manifestHash(manifest))\n }\n\n static isCompat(key, manifest) {\n return isCompat(key, manifest)\n }\n\n static sign(manifest, batch, keyPair, opts) {\n return Verifier.fromManifest(manifest, opts).sign(batch, keyPair)\n }\n}\n\nfunction toMap(nodes) {\n const m = new Map()\n for (const node of nodes) m.set(node.index, node)\n return m\n}\n\nfunction isCompat(key, manifest) {\n return !!(\n manifest &&\n manifest.signers.length === 1 &&\n b4a.equals(key, manifest.signers[0].publicKey)\n )\n}\n\nfunction defaultQuorum(man) {\n if (typeof man.quorum === 'number') return man.quorum\n if (!man.signers || !man.signers.length) return 0\n return (man.signers.length >> 1) + 1\n}\n\nfunction generateUpgrade(patch, start, length) {\n const upgrade = { start, length, nodes: null, additionalNodes: [], signature: null }\n\n const from = start * 2\n const to = from + length * 2\n\n for (const ite = flat.iterator(0); ite.fullRoot(to); ite.nextTree()) {\n if (ite.index + ite.factor / 2 < from) continue\n\n if (upgrade.nodes === null && ite.contains(from - 2)) {\n upgrade.nodes = []\n\n const root = ite.index\n const target = from - 2\n\n ite.seek(target)\n\n while (ite.index !== root) {\n ite.sibling()\n if (ite.index > target) upgrade.nodes.push(patch.get(ite.index))\n ite.parent()\n }\n\n continue\n }\n\n if (upgrade.nodes === null) upgrade.nodes = []\n upgrade.nodes.push(patch.get(ite.index))\n }\n\n if (upgrade.nodes === null) upgrade.nodes = []\n return upgrade\n}\n\nfunction parseSigner(signer) {\n validateSigner(signer)\n return {\n signature: 'ed25519',\n namespace: unslab(signer.namespace || caps.DEFAULT_NAMESPACE),\n publicKey: unslab(signer.publicKey)\n }\n}\n\nfunction validateSigner(signer) {\n if (!signer || !signer.publicKey) throw BAD_ARGUMENT('Signer missing public key')\n if (signer.signature && signer.signature !== 'ed25519') {\n throw BAD_ARGUMENT('Only Ed25519 signatures are supported')\n }\n}\n\nfunction manifestHash(manifest) {\n const state = { start: 0, end: 32, buffer: null }\n m.manifest.preencode(state, manifest)\n state.buffer = b4a.allocUnsafe(state.end)\n c.raw.encode(state, caps.MANIFEST)\n m.manifest.encode(state, manifest)\n return crypto.hash(state.buffer)\n}\n\nfunction proofToVersion1(proof) {\n return {\n signer: proof.signer,\n signature: proof.signature,\n patch: proof.patch ? proof.patch.length : 0\n }\n}\n\nfunction getManifestVersion(inp) {\n if (typeof inp.version === 'number') return inp.version\n if (inp.linked && inp.linked.length) return 2\n if (inp.userData) return 2\n return 1\n}\nlet COMPAT = true\nlet BATCH_UINTS = COMPAT ? 65536 : 128\nlet BATCH_BYTES = BATCH_UINTS * 4\nlet BATCH = BATCH_BYTES * 8 // in bits\nconst MAX_REMOTE_BATCHES = 4\nconst MAX_RANGE = 8 * 256 * 1024\nconst MIN_RANGE = 32 // 4bit ints\nconst MAX = 512\nconst MAX_ANY = 16\n\nclass LocalWants {\n constructor(peer) {\n this.destroyed = false\n this.peer = peer\n this.wants = new Map()\n this.free = new Set()\n this.any = null\n }\n\n add(index, handle) {\n const b = (index - (index & (BATCH - 1))) / BATCH\n return this.addBatch(b, handle)\n }\n\n addAnyRange(start, length, handle) {\n if (this.destroyed) return null\n if (this.any === null) this.any = []\n\n if (COMPAT) {\n let r = start & (BATCH - 1)\n start -= r\n length += r\n r = length & (BATCH - 1)\n if (r) length = length - r + BATCH\n }\n\n for (let i = 0; i < this.any.length; i++) {\n const w = this.any[i]\n if (w.start === start && w.length === length) {\n w.handles.add(handle)\n handle.addWant(w)\n return null\n }\n }\n\n const w = { wants: this, start, length, any: true, handles: new Set([handle]) }\n this.any.push(w)\n handle.addWant(w)\n\n return { start, length, any: !COMPAT }\n }\n\n removeAnyRange(start, length, handle) {\n if (this.any === null) return null\n\n for (let i = 0; i < this.any.length; i++) {\n const w = this.any[i]\n if (w.start !== start || w.length !== length) continue\n\n w.handles.delete(handle)\n handle.removeWant(w)\n if (w.handles.size > 0) return null\n\n const head = this.any.pop()\n if (head !== w) this.any[i] = head\n return { start, length, any: !COMPAT }\n }\n\n return null\n }\n\n addBatch(index, handle) {\n if (this.destroyed) return null\n let w = this.wants.get(index)\n\n if (w) {\n const size = w.handles.size\n w.handles.add(handle)\n if (w.handles.size !== size) {\n handle.addWant(w)\n }\n return null\n }\n\n // start here is the batch number for simplicity....\n w = { wants: this, start: index, length: 0, any: false, handles: new Set([handle]) }\n\n if (this.free.has(index)) {\n this.free.delete(index)\n this.wants.set(index, w)\n handle.addWant(w)\n return null\n }\n\n let unwant = null\n if (this.wants.size + this.free.size === MAX) {\n if (this.free.size === 0) {\n return null\n }\n unwant = this._unwant()\n }\n\n this.wants.set(index, w)\n handle.addWant(w)\n\n return {\n want: { start: index * BATCH, length: BATCH, any: false },\n unwant\n }\n }\n\n remove(index, handle) {\n const b = (index - (index & (BATCH - 1))) / BATCH\n return this.removeBatch(b, handle)\n }\n\n removeBatch(index, handle) {\n if (this.destroyed) return false\n\n const w = this.wants.get(index)\n if (!w) {\n return false\n }\n\n w.handles.delete(handle)\n handle.removeWant(w)\n\n if (w.handles.size === 0) {\n this.free.add(index)\n this.wants.delete(index)\n return this.free.size === 1 && this.wants.size === MAX - 1\n }\n\n return false\n }\n\n destroy() {\n if (this.destroyed) return\n this.destroyed = true\n\n for (const w of this.wants.values()) {\n for (const handle of w.handles) {\n handle.removeWant(w)\n }\n }\n\n this.wants.clear()\n }\n\n _unwant() {\n for (const index of this.free) {\n this.free.delete(index)\n return { start: index * BATCH, length: BATCH, any: false }\n }\n return null\n }\n}\n\nclass RemoteWants {\n constructor() {\n this.any = null\n this.all = false\n this.size = 0\n this.batches = []\n }\n\n hasAny(start, length) {\n for (let i = 0; i < this.any.length; i++) {\n const a = this.any[i]\n const e = start + length\n const end = a.start + a.length\n\n if (a.start <= start && start < end) return true\n if (a.start < e && e <= end) return true\n }\n\n return this.all\n }\n\n hasRange(start, length) {\n if (this.any !== null && this.hasAny(start, length)) return true\n if (length === 1) return this.has(start)\n\n let smallest = -1\n\n for (let i = 0; i < this.batches.length; i++) {\n const b = this.batches[i]\n if (b.length < smallest || smallest === -1) smallest = b.length\n }\n\n if (smallest === -1) return this.all\n\n const r = start & (smallest - 1)\n const end = start + length\n\n let max = 3\n\n for (let i = start - r; i < end; i += smallest) {\n if (max-- === 0) return true // just to save work\n if (this.has(i)) return true\n }\n\n return this.all\n }\n\n has(index) {\n for (let i = 0; i < this.batches.length; i++) {\n const b = this.batches[i]\n const block = (index - (index & (b.length - 1))) / b.length\n if (b.ranges.has(block)) return true\n }\n\n return this.all\n }\n\n add(range) {\n if (range.any) {\n if (this.any === null) this.any = []\n if (this.any.length < MAX_ANY) this.any.push(range)\n else this.all = true\n return true\n }\n\n if (range.length > MAX_RANGE) return false\n\n if (!validateBatchRange(range)) {\n this.all = true\n return true\n }\n\n if (this.size >= MAX) {\n this.all = true\n return true\n }\n\n for (let i = 0; i < this.batches.length; i++) {\n const b = this.batches[i]\n if (b.length === range.length) {\n b.ranges.add(range.start / range.length)\n this.size++\n return true\n }\n }\n\n if (this.batches.length >= MAX_REMOTE_BATCHES) {\n this.all = true\n return true\n }\n\n this.batches.push({\n length: range.length,\n ranges: new Set([range.start / range.length])\n })\n this.size++\n\n return true\n }\n\n remove(range) {\n if (range.any) {\n if (this.any === null) return false\n\n for (let i = 0; i < this.any.length; i++) {\n const a = this.any[i]\n\n if (a.start === range.start && a.length === range.length) {\n const head = this.any.pop()\n if (head !== a) this.any[i] = head\n return true\n }\n }\n\n return false\n }\n\n if (!validateBatchRange(range)) return false\n\n for (let i = 0; i < this.batches.length; i++) {\n const b = this.batches[i]\n if (b.length !== range.length) continue\n\n const size = b.ranges.size\n b.ranges.delete(range.start / range.length)\n if (b.ranges.size !== size) this.size--\n\n if (b.ranges.size === 0) {\n const head = this.batches.pop()\n if (head !== b) this.batches[i] = head\n }\n\n return true\n }\n\n return false\n }\n}\n\nfunction UPDATE_COMPAT(isCompat) {\n COMPAT = isCompat\n BATCH_UINTS = COMPAT ? 65536 : 128\n BATCH_BYTES = BATCH_UINTS * 4\n BATCH = BATCH_BYTES * 8 // in bits\n exports.WANT_BATCH = BATCH\n}\n\nexports.LocalWants = LocalWants\nexports.RemoteWants = RemoteWants\nexports.WANT_BATCH = BATCH\nexports.UPDATE_COMPAT = UPDATE_COMPAT\n\nfunction validateBatchRange(range) {\n if (range.length > MAX_RANGE || range.length < MIN_RANGE) {\n return false\n }\n // check if power of two\n if ((range.length & (range.length - 1)) !== 0) {\n return false\n }\n // start must be a multiple of the length\n if (range.start & (range.length - 1)) {\n return false\n }\n\n return true\n}\n{\n \"name\": \"hypercore\",\n \"version\": \"11.34.1\",\n \"description\": \"Hypercore is a secure, distributed append-only log\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle test/all.js\",\n \"test:bare\": \"bare test/all.js\",\n \"test:generate\": \"brittle -r test/all.js test/*.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/hypercore.git\"\n },\n \"contributors\": [\n {\n \"name\": \"Mathias Buus\",\n \"email\": \"mathiasbuus@gmail.com\",\n \"url\": \"https://mafinto.sh\"\n },\n {\n \"name\": \"Andrew Osheroff\",\n \"email\": \"andrewosh@gmail.com\",\n \"url\": \"https://andrewosh.com\"\n }\n ],\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hypercore/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hypercore#readme\",\n \"files\": [\n \"index.js\",\n \"errors.js\",\n \"messages.js\",\n \"lib/**.js\"\n ],\n \"imports\": {\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n }\n },\n \"dependencies\": {\n \"@hyperswarm/secret-stream\": \"^6.0.0\",\n \"b4a\": \"^1.1.0\",\n \"bare-events\": \"^2.2.0\",\n \"big-sparse-array\": \"^1.0.3\",\n \"compact-encoding\": \"^3.0.0\",\n \"fast-fifo\": \"^1.3.0\",\n \"flat-tree\": \"^1.9.0\",\n \"hypercore-crypto\": \"^3.2.1\",\n \"hypercore-errors\": \"^1.5.0\",\n \"hypercore-id-encoding\": \"^1.2.0\",\n \"hypercore-storage\": \"^3.2.0\",\n \"is-options\": \"^1.0.1\",\n \"nanoassert\": \"^2.0.0\",\n \"protomux\": \"^3.5.0\",\n \"quickbit-universal\": \"^2.2.0\",\n \"random-array-iterator\": \"^1.0.0\",\n \"safety-catch\": \"^1.0.1\",\n \"sodium-universal\": \"^5.0.1\",\n \"streamx\": \"^2.12.4\",\n \"unslab\": \"^1.3.0\",\n \"z32\": \"^1.0.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.0.0\",\n \"debugging-stream\": \"^3.1.0\",\n \"hyperswarm\": \"^4.3.6\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"rache\": \"^1.0.0\",\n \"range-parser\": \"^1.2.1\",\n \"resolve-reject-promise\": \"^1.1.0\",\n \"speedometer\": \"^1.1.0\",\n \"test-tmp\": \"^1.0.2\",\n \"tiny-byte-size\": \"^1.1.0\",\n \"udx-native\": \"^1.6.1\",\n \"uncaughts\": \"^1.1.0\"\n }\n}\nconst IndexStream = require('./lib/stream.js')\nconst def = require('./lib/definition.js')\nconst b4a = require('b4a')\n\n// engines\nconst RocksEngine = require('./lib/engine/rocks.js')\nconst BeeEngine = require('./lib/engine/bee.js')\nconst Bee2Engine = require('./lib/engine/bee2.js')\n\nlet compareHasDups = false\n\nclass Updates {\n constructor(tick, entries) {\n this.refs = 1\n this.mutating = 0\n this.tick = tick // internal tie breaker clock for same key updates\n this.map = new Map(entries)\n this.locks = new Map()\n }\n\n get size() {\n return this.map.size\n }\n\n nextTick() {\n const tick = this.tick\n this.tick += 256 // 256 is how many trigger inserts can fire, deprecated anyway\n return tick\n }\n\n enter(collection) {\n if (collection.trigger !== null) {\n if (this.locks.has(collection.id)) return false\n this.locks.set(collection.id, { resolve: null, promise: null })\n }\n\n this.mutating++\n return true\n }\n\n exit(collection) {\n this.mutating--\n if (collection.trigger === null) return\n const { resolve } = this.locks.get(collection.id)\n this.locks.delete(collection.id)\n if (resolve) resolve()\n }\n\n wait(collection) {\n const state = this.locks.get(collection.id)\n if (state.promise) return state.promise\n state.promise = new Promise((resolve) => {\n state.resolve = resolve\n })\n return state.promise\n }\n\n ref() {\n this.refs++\n return this\n }\n\n unref() {\n this.refs--\n }\n\n detach() {\n const entries = new Array(this.map.size)\n\n if (entries.length > 0) {\n let i = 0\n for (const [key, u] of this.map) {\n const clone = {\n created: u.created,\n tick: u.tick,\n collection: u.collection,\n key: u.key,\n value: u.value,\n indexes: u.indexes.slice(0)\n }\n entries[i++] = [key, clone]\n }\n }\n\n this.refs--\n return new Updates(this.tick, entries)\n }\n\n get(key) {\n const u = this.map.get(b4a.toString(key, 'hex'))\n return u === undefined ? null : u\n }\n\n getIndex(index, key) {\n // 99% of all reads\n if (this.map.size === 0 || index.offset === -1) return null\n\n const matches = []\n\n for (const u of this.map.values()) {\n if (u.collection.id !== index.collection.id) continue\n\n const ups = u.indexes[index.offset]\n\n for (let i = 0; i < ups.length; i++) {\n if (b4a.equals(key, ups[i].key)) matches.push(u)\n }\n }\n\n if (!matches.length) return null\n\n let latest = matches[0]\n\n for (let i = 1; i < matches.length; i++) {\n const m = matches[i]\n if (m.tick > latest.tick) latest = m\n }\n\n return latest\n }\n\n flush() {\n this.map.clear()\n }\n\n update(collection, tick, key, value) {\n const u = {\n created: false,\n tick,\n collection,\n key,\n value,\n indexes: []\n }\n this.map.set(b4a.toString(key, 'hex'), u)\n return u\n }\n\n delete(key) {\n this.map.delete(b4a.toString(key, 'hex'))\n }\n\n batch() {\n const ordered = new Array(this.map.size)\n\n let sort = false\n let i = 0\n\n for (const u of this.map.values()) {\n if (i > 0 && u.tick < ordered[i - 1].tick) sort = true\n ordered[i++] = u\n }\n\n if (sort) ordered.sort(sortUpdates)\n\n const dedup = ordered.length > 1 ? new Set() : null\n const batch = []\n\n for (let i = ordered.length - 1; i >= 0; i--) {\n const u = ordered[i]\n\n for (let j = 0; j < u.indexes.length; j++) {\n const idx = u.indexes[j]\n\n // TODO: we can be more fancy here with only deduping non-unique indexes\n for (let k = 0; k < idx.length; k++) {\n const { key, value } = idx[k]\n if (dedup !== null) {\n const id = b4a.toString(key, 'hex')\n if (dedup.has(id)) continue\n dedup.add(id)\n }\n\n batch.push([key, value])\n }\n }\n\n // these keys are guaranteed unique so no dedup is needed\n batch.push([u.key, u.value])\n }\n\n return batch\n }\n\n collectionOverlay(collection, range, reverse) {\n const overlay = []\n\n // 99% of all reads\n if (this.map.size === 0) return overlay\n\n for (const u of this.map.values()) {\n if (u.collection.id !== collection.id) continue\n if (withinRange(range, u.key)) {\n overlay.push({\n tick: u.tick,\n key: u.key,\n value: u.value === null ? null : [u.key, u.value]\n })\n }\n }\n\n return sortOverlay(overlay, reverse)\n }\n\n indexOverlay(index, range, reverse) {\n const overlay = []\n\n // 99% of all reads\n if (this.map.size === 0 || index.offset === -1) return overlay\n\n const collection = index.collection\n\n for (const u of this.map.values()) {\n if (u.collection.id !== collection.id) continue\n for (const { key, value } of u.indexes[index.offset]) {\n if (withinRange(range, key)) {\n overlay.push({\n tick: u.tick,\n key,\n value: value === null ? null : [u.key, u.value]\n })\n }\n }\n }\n\n return sortOverlay(overlay, reverse)\n }\n}\n\nclass TriggeredHyperDB {\n constructor(db, tick) {\n this.db = db\n\n this.tick = tick\n this.maxTick = tick + 256\n }\n\n _nextTick() {\n const tick = ++this.tick\n if (tick >= this.maxTick) throw new Error('Too many inserts in the trigger')\n return tick\n }\n\n getAll(...args) {\n return this.db.getAll(...args)\n }\n\n get(...args) {\n return this.db.get(...args)\n }\n\n find(...args) {\n return this.db.find(...args)\n }\n\n findOne(...args) {\n return this.db.findOne(...args)\n }\n\n async insert(collection, record) {\n const tick = this._nextTick()\n return this.db.insert(collection, record, { tick })\n }\n\n async delete(collection, record) {\n const tick = this._nextTick()\n return this.db.delete(collection, record, { tick })\n }\n}\n\nclass HyperDB {\n constructor(\n engine,\n definition,\n {\n versions = definition.versions,\n snapshot = engine.snapshot(),\n updates = new Updates(1, []),\n rootInstance = null,\n writable = true,\n context = null\n } = {}\n ) {\n this.versions = versions\n this.context = context\n this.index = 0 // for the session\n this.engine = engine\n this.engineSnapshot = snapshot\n this.definition = definition\n this.updates = updates\n this.rootInstance = writable === true ? rootInstance || this : null\n this.watchers = null\n this.closing = null\n this.activeRequests = []\n\n this.engine.sessions.add(this)\n }\n\n static isDefinition(definition) {\n return def.isDefinition(definition)\n }\n\n static rocks(storage, definition, options = {}) {\n const readOnly = options.readOnly === true || options.readonly === true\n const trace = options.trace || null\n const engine = new RocksEngine(storage, { readOnly, trace })\n\n return new HyperDB(engine, def.compat(definition), options)\n }\n\n static bee(core, definition, options = {}) {\n const extension = options.extension\n const autoUpdate = !!options.autoUpdate\n const trace = options.trace || null\n const engine = new BeeEngine(core, { extension, trace })\n\n const db = new HyperDB(engine, def.compat(definition), options)\n\n if (autoUpdate) {\n const update = db.update.bind(db)\n core.on('append', update)\n core.on('truncate', update)\n }\n\n return db\n }\n\n static bee2(bee, definition, options = {}) {\n const { autoUpdate = false, trace = null, key = null, length = -1 } = options\n\n const engine = new Bee2Engine(bee, { trace, key, length })\n const db = new HyperDB(engine, def.compat(definition), options)\n\n if (autoUpdate) {\n bee.on('update', db.update.bind(db))\n }\n\n return db\n }\n\n get core() {\n return this.engine.core\n }\n\n get db() {\n return this.engine.db\n }\n\n get closed() {\n return this.engine === null\n }\n\n get writable() {\n return this.rootInstance !== null\n }\n\n get traceable() {\n // basically, are we not a write tx\n return this.rootInstance === this || this.rootInstance === null\n }\n\n get readable() {\n return this.closing !== null\n }\n\n get autoClose() {\n return this.rootInstance !== null && this.rootInstance !== this\n }\n\n setVersions(versions) {\n this.versions = versions\n }\n\n setDefinition(definition) {\n definition = def.compat(definition)\n\n this.versions = definition.versions\n this.definition = definition\n }\n\n cork() {\n if (this.engineSnapshot !== null) this.engineSnapshot.cork()\n }\n\n uncork() {\n if (this.engineSnapshot !== null) this.engineSnapshot.uncork()\n }\n\n ready() {\n return this.engineSnapshot === null ? Promise.resolve() : this.engineSnapshot.ready()\n }\n\n close() {\n if (this.closing === null) this.closing = this._close()\n return this.closing\n }\n\n changes(range = {}) {\n maybeClosed(this)\n const snap = range.live ? null : this.engineSnapshot\n return this.engine.changes(snap, this.versions, this.definition, range)\n }\n\n watch(fn) {\n if (this.watchers === null) this.watchers = new Set()\n this.watchers.add(fn)\n }\n\n unwatch(fn) {\n if (this.watchers === null) return\n this.watchers.delete(fn)\n }\n\n async _close() {\n this.engine.clearRequests(this.activeRequests)\n\n this.updates.unref()\n this.updates = null\n\n this.engineSnapshot.unref()\n this.engineSnapshot = null\n\n // if root, close all\n if (this.rootInstance === this) {\n await this.engine.sessions.close(this)\n }\n\n this.engine.sessions.remove(this)\n\n if (this.engine.tx === this) this.engine.exit()\n if (this.engine.sessions.size === 0) await this.engine.close()\n\n this.engine = null\n }\n\n _createSnapshot(rootInstance, writable, context) {\n const snapshot = this.engineSnapshot.ref()\n\n return new HyperDB(this.engine, this.definition, {\n versions: this.versions,\n snapshot,\n updates: this.updates.ref(),\n rootInstance,\n writable,\n context\n })\n }\n\n snapshot(options) {\n maybeClosed(this)\n\n const context = (options && options.context) || this.context\n return this._createSnapshot(this, false, context)\n }\n\n // in future major, lets move transaction to be exclusive (aka sync) always\n async exclusiveTransaction(options) {\n await this.engine.enter()\n\n if (this.closing) {\n this.engine.exit()\n maybeClosed(this)\n }\n\n this.engine.tx = this.transaction(options)\n return this.engine.tx\n }\n\n transaction(options) {\n maybeClosed(this)\n\n if (this.rootInstance !== this) {\n throw new Error('Can only make transactions on main instance')\n }\n\n const context = (options && options.context) || this.context\n const tx = this._createSnapshot(this, true, context)\n\n tx.update()\n\n return tx\n }\n\n find(indexName, query = {}, options) {\n if (options) query = { ...query, ...options }\n\n maybeClosed(this)\n\n const index = this.definition.resolveIndex(indexName)\n const collection =\n index === null ? this.definition.resolveCollection(indexName) : index.collection\n\n if (collection === null) throw new Error('Unknown index: ' + indexName)\n\n const { checkout = -1, limit, reverse = false } = query\n\n const range = index === null ? collection.encodeKeyRange(query) : index.encodeKeyRange(query)\n\n const overlay =\n checkout !== -1\n ? []\n : index === null\n ? this.updates.collectionOverlay(collection, range, reverse)\n : this.updates.indexOverlay(index, range, reverse)\n\n return new IndexStream(this, range, {\n index,\n collection,\n reverse,\n limit,\n overlay,\n checkout\n })\n }\n\n async findOne(indexName, query, options) {\n return this.find(indexName, query, { ...options, limit: 1 }).one()\n }\n\n updated(collectionName, record) {\n if (this.updates === null) return false\n if (!collectionName) return this.updates.size > 0\n\n const collection = this.definition.resolveCollection(collectionName)\n if (collection === null) return false\n\n const key = b4a.isBuffer(record) ? record : collection.encodeKey(record)\n const u = this.updates.get(key)\n return u !== null\n }\n\n getAll(batch) {\n const promises = []\n for (const b of batch) {\n if (Array.isArray(b)) promises.push(this.get(...b))\n else promises.push(b)\n }\n return Promise.all(promises)\n }\n\n async get(collectionName, record, { checkout = -1 } = {}) {\n maybeClosed(this)\n\n const snap = this.engineSnapshot.ref()\n\n try {\n const collection = this.definition.resolveCollection(collectionName)\n if (collection !== null) return await this._getCollection(collection, snap, record, checkout)\n\n const index = this.definition.resolveIndex(collectionName)\n if (index === null) throw new Error('Unknown index or collection: ' + collectionName)\n\n const key = index.encodeKey(record, this.context)\n if (key === null) return null\n\n const u = this.updates.getIndex(index, key)\n if (u !== null && checkout === -1) {\n return u.value === null\n ? null\n : index.collection.reconstruct(this.versions.schema, u.key, u.value)\n }\n\n const value = await snap.get(key, checkout, this.activeRequests)\n if (value === null) return null\n\n return this._getCollection(index.collection, snap, index.reconstruct(key, value), checkout)\n } finally {\n if (snap !== null) snap.unref()\n }\n }\n\n async _getCollection(collection, snap, record, checkout) {\n maybeClosed(this)\n\n // we allow passing the raw primary key here cause thats what the trigger passes for simplicity\n // you shouldnt rely on that.\n const key = b4a.isBuffer(record) ? record : collection.encodeKey(record)\n\n const u = this.updates.get(key)\n const value =\n u !== null && checkout === -1 ? u.value : await snap.get(key, checkout, this.activeRequests)\n\n // check again now cause we did async work above to engine might be nulled out\n maybeClosed(this)\n\n return this.engine.finalize(collection, this.versions, checkout, this.traceable, key, value)\n }\n\n async _runTrigger(tick, collection, key, record) {\n const db = new TriggeredHyperDB(this, tick)\n await collection.trigger(db, key, record, this.context)\n return db.tick\n }\n\n async delete(collectionName, record, { tick = 0 } = {}) {\n maybeClosed(this)\n\n if (this.updates.refs > 1) this.updates = this.updates.detach()\n\n const collection = this.definition.resolveCollection(collectionName)\n if (collection === null) return\n\n if (tick === 0) tick = this.updates.nextTick()\n\n while (this.updates.enter(collection) === false) await this.updates.wait(collection)\n\n const snap = this.engineSnapshot.ref()\n const key = collection.encodeKey(record)\n\n let prevValue = null\n\n try {\n prevValue = await this.engineSnapshot.get(key, -1, this.activeRequests)\n if (collection.trigger !== null) {\n tick = await this._runTrigger(tick, collection, record, null)\n }\n\n if (prevValue === null) {\n this.updates.delete(key)\n return\n }\n\n const prevDoc = collection.reconstruct(this.versions.schema, key, prevValue)\n const prevVersion = collection.decodedVersion\n\n const u = this.updates.update(collection, tick, key, null)\n\n for (let i = 0; i < collection.indexes.length; i++) {\n const idx = collection.indexes[i]\n if (idx.version > prevVersion) continue\n\n const del = idx.encodeIndexKeys(prevDoc, this.context)\n const ups = []\n\n u.indexes.push(ups)\n\n for (let j = 0; j < del.length; j++) ups.push({ key: del[j], value: null })\n }\n } finally {\n snap.unref()\n this.updates.exit(collection)\n }\n }\n\n async insert(collectionName, record, { tick = 0 } = {}) {\n maybeClosed(this)\n\n if (this.updates.refs > 1) this.updates = this.updates.detach()\n\n const collection = this.definition.resolveCollection(collectionName)\n if (collection === null) throw new Error('Unknown collection: ' + collectionName)\n\n if (tick === 0) tick = this.updates.nextTick()\n while (this.updates.enter(collection) === false) await this.updates.wait(collection)\n\n const snap = this.engineSnapshot.ref()\n const key = collection.encodeKey(record)\n const collectionVersion = Math.min(this.versions.db, collection.version)\n const value = collection.encodeValue(this.versions.schema, collectionVersion, record)\n\n let prevValue = null\n\n try {\n prevValue = await this.engineSnapshot.get(key, -1, this.activeRequests)\n if (collection.trigger !== null) {\n tick = await this._runTrigger(tick, collection, record, record)\n }\n\n const prevDoc =\n prevValue === null ? null : collection.reconstruct(this.versions.schema, key, prevValue)\n\n const prevVersion = prevDoc ? collection.decodedVersion : -1\n\n if (prevValue !== null && prevVersion === collectionVersion && b4a.equals(value, prevValue)) {\n this.updates.delete(key)\n return\n }\n\n const u = this.updates.update(collection, tick, key, value)\n\n u.created = prevValue === null\n\n for (let i = 0; i < collection.indexes.length; i++) {\n const idx = collection.indexes[i]\n const prevKeys =\n idx.version <= prevVersion ? idx.encodeIndexKeys(prevDoc, this.context) : []\n const nextKeys = idx.encodeIndexKeys(record, this.context)\n const ups = []\n\n u.indexes.push(ups)\n\n const [del, put] = diffKeys(prevKeys, nextKeys)\n const value = put.length === 0 ? null : idx.encodeValue(record)\n\n for (let j = 0; j < del.length; j++) ups.push({ key: del[j], value: null })\n for (let j = 0; j < put.length; j++) ups.push({ key: put[j], value })\n }\n } finally {\n snap.unref()\n this.updates.exit(collection)\n }\n }\n\n async insertAll(batch) {\n const promises = []\n\n for (const [collection, record, opts] of batch) {\n if (opts && opts.type === 'delete') {\n promises.push(this.delete(collection, record))\n } else {\n promises.push(this.insert(collection, record))\n }\n }\n\n await Promise.all(promises)\n }\n\n update() {\n maybeClosed(this)\n\n if (!this.engine.outdated(this.engineSnapshot)) return\n\n if (this.updates.refs > 1) this.updates = this.updates.detach()\n this.updates.flush()\n\n this.engineSnapshot.unref()\n this.engineSnapshot = this.engine.snapshot()\n\n if (this.watchers !== null) {\n for (const fn of this.watchers) fn()\n }\n }\n\n async _flush() {\n if (this.engine.outdated(this.engineSnapshot)) {\n throw new Error('Database has changed, refusing to commit')\n }\n\n if (this.updates.refs > 1) this.updates = this.updates.detach()\n\n await this.engine.commit(this.updates)\n\n this.update()\n\n if (this.rootInstance !== this && this.rootInstance.updates.size === 0) {\n this.rootInstance.update()\n }\n }\n\n async flush() {\n maybeClosed(this)\n\n if (this.engineSnapshot.opened === false) await this.engineSnapshot.ready()\n\n if (this.updates.mutating > 0) throw new Error('Insert/delete in progress, refusing to commit')\n if (this.rootInstance === null) throw new Error('Instance is not writable, refusing to commit')\n if (this.updates.size > 0) await this._flush()\n if (this.autoClose === true) await this.close()\n }\n}\n\nfunction maybeClosed(db) {\n if (db.closing !== null) throw new Error('Hyperdb is closed')\n}\n\nfunction withinRange(range, key) {\n if (range.gte && b4a.compare(range.gte, key) > 0) return false\n if (range.gt && b4a.compare(range.gt, key) >= 0) return false\n if (range.lte && b4a.compare(range.lte, key) < 0) return false\n if (range.lt && b4a.compare(range.lt, key) <= 0) return false\n return true\n}\n\nfunction sortKeys(a, b) {\n return b4a.compare(a, b)\n}\n\nfunction sortUpdates(a, b) {\n return a.tick - b.tick // oldest to newest\n}\n\nfunction compareOverlay(a, b) {\n const c = b4a.compare(a.key, b.key)\n if (c !== 0) return c\n compareHasDups = true\n return b.tick - a.tick\n}\n\nfunction reverseCompareOverlay(a, b) {\n const c = b4a.compare(b.key, a.key)\n if (c !== 0) return c\n compareHasDups = true\n return b.tick - a.tick\n}\n\nfunction diffKeys(a, b) {\n if (a.length === 0 || b.length === 0) return [a, b]\n\n // 90% of all indexes\n if (a.length === 1 && b.length === 1) {\n return b4a.equals(a[0], b[0]) ? [[], []] : [a, b]\n }\n\n a.sort(sortKeys)\n b.sort(sortKeys)\n\n const res = [[], []]\n let ai = 0\n let bi = 0\n\n while (true) {\n if (ai < a.length && bi < b.length) {\n const cmp = b4a.compare(a[ai], b[bi])\n\n if (cmp === 0) {\n ai++\n bi++\n } else if (cmp < 0) {\n res[0].push(a[ai++])\n } else {\n res[1].push(b[bi++])\n }\n\n continue\n }\n\n if (ai < a.length) res[0].push(a[ai++])\n else if (bi < b.length) res[1].push(b[bi++])\n else break\n }\n\n return res\n}\n\nfunction stripDups(overlay) {\n let j = 0\n\n for (let i = 0; i < overlay.length; i++) {\n const a = overlay[i]\n overlay[j++] = a\n while (i + 1 < overlay.length && b4a.equals(a.key, overlay[i + 1].key)) i++\n }\n\n overlay.length = j\n}\n\nfunction sortOverlay(overlay, reverse) {\n compareHasDups = false\n overlay.sort(reverse ? reverseCompareOverlay : compareOverlay)\n if (compareHasDups === true) stripDups(overlay)\n return overlay\n}\n\nmodule.exports = HyperDB\nfunction toChangesStream(stream, map) {\n const existingMap = stream._readableState.map\n stream._readableState.map = function (data) {\n let entry = data\n if (existingMap) {\n entry = existingMap(data)\n if (!entry) return null\n }\n\n return map(entry)\n }\n return stream\n}\n\nmodule.exports = toChangesStream\nexports.isDefinition = isDefinition\nexports.compat = makeCompat\n\nfunction makeCompat(definition) {\n if (definition.versions) return definition\n\n for (const c of definition.collections) {\n if (typeof c.version === 'number') continue\n const { encodeValue } = c\n c.encodeValue = function (schemaVersion, collectionVersion, record) {\n return encodeValue(schemaVersion, record)\n }\n c.version = 0\n c.decodedVersion = 0\n }\n\n for (const i of definition.indexes) {\n if (typeof i.version === 'number') continue\n i.version = 0\n }\n\n return {\n versions: { schema: definition.version, db: 0 },\n collections: definition.collections,\n indexes: definition.indexes,\n resolveCollection: definition.resolveCollection,\n resolveIndex: definition.resolveIndex\n }\n}\n\nfunction isDefinition(definition) {\n return !!(definition && typeof definition.resolveCollection === 'function')\n}\nconst HyperBee = require('hyperbee')\nconst ScopeLock = require('scope-lock')\nconst c = require('compact-encoding')\nconst RefCounter = require('refcounter')\nconst Hypercore = require('hypercore')\nconst Sessions = require('../sessions.js')\nconst toChangesStream = require('../changes-stream.js')\n\nclass BeeSnapshot {\n constructor(snap, onfree) {\n this.refs = 1\n this.snapshot = snap\n this.opened = false\n this.onfree = onfree\n }\n\n async ready() {\n await this.snapshot.ready()\n this.opened = true\n }\n\n ref() {\n this.refs++\n return this\n }\n\n unref() {\n if (--this.refs === 0) {\n this.snapshot.close().then(this.onfree, this.onfree)\n this.snapshot = null\n }\n }\n\n cork() {}\n\n uncork() {}\n\n getIndirectRange(reconstruct, entries, checkout, reqs) {\n const promises = new Array(entries.length)\n\n for (let i = 0; i < promises.length; i++) {\n const { key, value } = entries[i]\n promises[i] = getWrapped(this.snapshot, key, reconstruct(key, value), checkout, reqs)\n }\n\n return promises\n }\n\n getBatch(keys, checkout, reqs) {\n const promises = new Array(keys.length)\n\n for (let i = 0; i < keys.length; i++) {\n promises[i] = getValue(this.snapshot, keys[i], checkout, reqs)\n }\n\n return Promise.all(promises)\n }\n\n get(key, checkout, reqs) {\n return getValue(this.snapshot, key, checkout, reqs)\n }\n\n createReadStream(range, options) {\n return this.snapshot.createReadStream(range, options)\n }\n}\n\nmodule.exports = class BeeEngine {\n constructor(core, { extension, trace } = {}) {\n this.asap = true\n this.clock = 0\n this.core = core\n this.sessions = new Sessions()\n this.trace = trace\n this.snaps = new RefCounter()\n this.db = new HyperBee(core, {\n extension,\n keyEncoding: 'binary',\n valueEncoding: 'binary'\n })\n\n this.tx = null\n this.lock = new ScopeLock()\n\n this._freeSnapBound = this.snaps.dec.bind(this.snaps)\n }\n\n get closed() {\n return this.db.closed\n }\n\n ready() {\n return this.db.ready()\n }\n\n async close() {\n while (!this.snaps.isIdle()) await this.snaps.idle()\n await this.db.close()\n }\n\n enter() {\n return this.lock.lock()\n }\n\n exit() {\n this.tx = null\n this.lock.unlock()\n }\n\n finalize(collection, versions, checkout, tracing, key, value) {\n if (value === null) return null\n\n const reconstructed = collection.reconstruct(versions.schema, key, value)\n if (this.trace && tracing) this.trace(collection.name, reconstructed, checkout)\n\n return reconstructed\n }\n\n changes(snapshot, versions, definition, range) {\n const db = snapshot === null ? this.db : snapshot.snapshot\n const collectionsById = new Map()\n for (const c of definition.collections) collectionsById.set(c.id, c)\n\n return toChangesStream(\n db.createHistoryStream(range),\n mapChange.bind(null, versions, collectionsById)\n )\n }\n\n checkout(opts) {\n return null // not supported\n }\n\n snapshot() {\n this.snaps.inc()\n return new BeeSnapshot(this.db.snapshot(), this._freeSnapBound)\n }\n\n outdated(snap) {\n return (\n snap === null ||\n this.core.length !== snap.snapshot.core.length ||\n this.core.fork !== snap.snapshot.core.fork\n )\n }\n\n async commit(updates) {\n this.clock++\n\n let i = 0\n\n const entries = updates.batch()\n const batch = this.db.batch({ maxBlocksCached: entries.length * 2 })\n\n for (; i < entries.length; i++) {\n const [key, value] = entries[i]\n\n if (value !== null) await batch.put(key, value)\n else await batch.del(key)\n }\n\n await batch.flush()\n }\n\n clearRequests(reqs) {\n Hypercore.destroyRequests(reqs, null)\n }\n}\n\nasync function getWrapped(db, key, value, checkout, reqs) {\n return { key, value: [value, await getValue(db, value, checkout, reqs)] }\n}\n\nasync function getValue(db, key, checkout, activeRequests) {\n const node = await db.get(key, { checkout, activeRequests })\n return node === null ? null : node.value\n}\n\nfunction mapChange(versions, collectionsById, data) {\n const id = c.uint.decode({ start: 0, end: data.key.byteLength, buffer: data.key })\n const coll = collectionsById.get(id)\n if (coll === undefined) return null\n\n if (data.type === 'put') {\n const doc = coll.reconstruct(versions.schema, data.key, data.value)\n return { type: 'insert', seq: data.seq, collection: coll.name, value: doc }\n }\n\n const key = coll.reconstructKey(data.key)\n return { type: 'delete', seq: data.seq, collection: coll.name, value: key }\n}\nconst Hypercore = require('hypercore')\nconst ScopeLock = require('scope-lock')\nconst b4a = require('b4a')\nconst RefCounter = require('refcounter')\nconst c = require('compact-encoding')\n\nconst toChangesStream = require('../changes-stream.js')\nconst Sessions = require('../sessions.js')\n\nclass BeeSnapshot {\n constructor(snap, onfree) {\n this.refs = 1\n this.snapshot = snap\n this.opened = false\n this.onfree = onfree\n }\n\n async ready() {\n await this.snapshot.ready()\n this.opened = true\n }\n\n ref() {\n this.refs++\n return this\n }\n\n unref() {\n if (--this.refs === 0) {\n this.snapshot.close().then(this.onfree, this.onfree)\n this.snapshot = null\n }\n }\n\n cork() {}\n\n uncork() {}\n\n getIndirectRange(reconstruct, entries, checkout, reqs) {\n const promises = new Array(entries.length)\n\n for (let i = 0; i < promises.length; i++) {\n const { key, value } = entries[i]\n promises[i] = getWrapped(this.snapshot, key, reconstruct(key, value), checkout, reqs)\n }\n\n return promises\n }\n\n getBatch(keys, checkout, reqs) {\n const promises = new Array(keys.length)\n\n for (let i = 0; i < keys.length; i++) {\n promises[i] = getValue(this.snapshot, keys[i], checkout, reqs)\n }\n\n return Promise.all(promises)\n }\n\n get(key, checkout, reqs) {\n return getValue(this.snapshot, key, checkout, reqs)\n }\n\n createReadStream(range, options) {\n return this.snapshot.createReadStream({ ...range, ...options })\n }\n}\n\nmodule.exports = class Bee2Engine {\n constructor(bee, { trace, key, length = -1 } = {}) {\n this.asap = true\n this.clock = 0\n this.sessions = new Sessions()\n this.trace = trace\n this.snaps = new RefCounter()\n this.db = bee\n\n if (length > -1) this.db.move({ key, length })\n\n this.tx = null\n this.lock = new ScopeLock()\n\n this._freeSnapBound = this.snaps.dec.bind(this.snaps)\n }\n\n head() {\n return this.db.head()\n }\n\n get core() {\n return this.db.core\n }\n\n get closed() {\n return this.db.closed\n }\n\n ready() {\n return this.db.ready()\n }\n\n async close() {\n while (!this.snaps.isIdle()) await this.snaps.idle()\n await this.db.close()\n }\n\n enter() {\n return this.lock.lock()\n }\n\n exit() {\n this.tx = null\n this.lock.unlock()\n }\n\n finalize(collection, versions, checkout, tracing, key, value) {\n if (value === null) return null\n\n const reconstructed = collection.reconstruct(versions.schema, key, value)\n if (this.trace && tracing) this.trace(collection.name, reconstructed, checkout)\n\n return reconstructed\n }\n\n changes(snapshot, versions, definition, range) {\n const db = snapshot === null ? this.db : snapshot.snapshot\n\n const from = db.checkout(range.from)\n\n const collectionsById = new Map()\n for (const c of definition.collections) collectionsById.set(c.id, c)\n\n const stream = toChangesStream(\n from.createDiffStream(db, range),\n mapChange.bind(null, versions, collectionsById)\n )\n stream.on('close', () => from.close().catch(noop))\n return stream\n }\n\n snapshot() {\n this.snaps.inc()\n return new BeeSnapshot(this.db.snapshot(), this._freeSnapBound)\n }\n\n checkout(opts) {\n if (opts === -1) return null\n this.snaps.inc()\n return new BeeSnapshot(this.db.checkout(opts), this._freeSnapBound)\n }\n\n outdated(snap) {\n if (snap === null) return true\n\n const a = snap.snapshot.head()\n const b = this.db.head()\n if (!a || !b) return true\n\n if (a.length !== b.length) return true\n return !b4a.equals(a.key, b.key)\n }\n\n async commit(updates) {\n this.clock++\n\n let i = 0\n\n const entries = updates.batch()\n const batch = this.db.write()\n\n for (; i < entries.length; i++) {\n const [key, value] = entries[i]\n\n if (value !== null) batch.tryPut(key, value)\n else batch.tryDelete(key)\n }\n\n await batch.flush()\n }\n\n clearRequests(reqs) {\n Hypercore.destroyRequests(reqs, null)\n }\n}\n\nasync function getWrapped(db, key, value, checkout, reqs) {\n return { key, value: [value, await getValue(db, value, checkout, reqs)] }\n}\n\nasync function getValue(db, key, checkout, activeRequests) {\n const source = checkout === -1 || !checkout ? db : db.checkout(checkout)\n try {\n const node = await source.get(key, { checkout, activeRequests })\n return node === null ? null : node.value\n } finally {\n if (source !== db) source.close().catch(noop)\n }\n}\n\nfunction mapChange(versions, collectionsById, { left, right }) {\n const insert = !!right\n const data = insert ? right : left\n const id = c.uint.decode({ start: 0, end: data.key.byteLength, buffer: data.key })\n\n const coll = collectionsById.get(id)\n if (coll === undefined) return null\n const head = { length: data.core.length, key: b4a.from(data.core.key) }\n\n if (insert) {\n const doc = coll.reconstruct(versions.schema, data.key, data.value)\n return { type: 'insert', head, collection: coll.name, value: doc }\n }\n\n const key = coll.reconstructKey(data.key)\n return { type: 'delete', head, collection: coll.name, value: key }\n}\n\nfunction noop() {}\nconst RocksDB = require('rocksdb-native')\nconst ScopeLock = require('scope-lock')\nconst Sessions = require('../sessions.js')\n\nclass RocksSnapshot {\n constructor(snap, clock) {\n this.clock = clock\n this.corks = 0\n this.refs = 1\n this.snapshot = snap\n this.opened = true\n this.closed = false\n this.batch = null\n this.batches = []\n }\n\n ready() {\n return this.snapshot.ready()\n }\n\n ref() {\n this.refs++\n return this\n }\n\n unref() {\n if (--this.refs === 0) {\n this.closed = true\n this.snapshot.close().catch(noop)\n for (const b of this.batches) b.destroy()\n }\n }\n\n cork() {\n this.corks++\n if (this.batch === null) this.batch = this.snapshot.read()\n }\n\n uncork() {\n if (--this.corks !== 0) return\n if (this.batch !== null) this._flushBackground(this.batch)\n this.batch = null\n }\n\n // checkout, reqs is just here for completeness, not supported in rocks\n getIndirectRange(reconstruct, entries, checkout, reqs) {\n // TODO: add prop api for this in rocks, ie snapshot.closing\n if (this.snapshot._state.closing) return rejectAll(entries)\n\n const read = this.batches.length > 0 ? this.batches.pop() : this.snapshot.read()\n const promises = new Array(entries.length)\n\n for (let i = 0; i < promises.length; i++) {\n const { key, value } = entries[i]\n promises[i] = getWrapped(read, key, reconstruct(key, value))\n }\n\n this._flushBackground(read)\n return promises\n }\n\n // checkout is just here for completeness, not supported in rocks\n getBatch(keys, checkout, reqs) {\n const read = this.batches.length > 0 ? this.batches.pop() : this.snapshot.read()\n const promises = new Array(keys.length)\n\n for (let i = 0; i < promises.length; i++) {\n promises[i] = read.get(keys[i])\n }\n\n this._flushBackground(read)\n return Promise.all(promises)\n }\n\n // checkout is just here for completeness, not supported in rocks\n get(key, checkout, reqs) {\n return this.batch === null ? this.snapshot.get(key) : this.batch.get(key)\n }\n\n createReadStream(range, options) {\n return this.snapshot.iterator({ ...range, ...options })\n }\n\n async _flushBackground(batch) {\n try {\n await batch.flush()\n if (this.closed) batch.destroy()\n else this.batches.push(batch)\n } catch (err) {\n batch.destroy()\n }\n }\n}\n\nmodule.exports = class RocksEngine {\n constructor(storage, options = {}) {\n this.asap = false\n this.clock = 0\n this.sessions = new Sessions()\n this.trace = options.trace || null\n this.core = null\n this.db = typeof storage === 'object' ? storage : new RocksDB(storage, options)\n this.db.ready().catch(noop)\n this.write = null\n this.tx = null\n this.lock = new ScopeLock()\n }\n\n get closed() {\n return this.db.closed\n }\n\n enter() {\n return this.lock.lock()\n }\n\n exit() {\n this.tx = null\n this.lock.unlock()\n }\n\n ready() {\n return this.db.ready()\n }\n\n close() {\n if (this.write !== null) this.write.destroy()\n return this.db.close()\n }\n\n finalize(collection, versions, checkout, tracing, key, value) {\n if (value === null) return null\n\n const reconstructed = collection.reconstruct(versions.schema, key, value)\n if (this.trace && tracing) this.trace(collection.name, reconstructed, checkout)\n\n return reconstructed\n }\n\n changes() {\n throw new Error('Not supported in Rocks engine')\n }\n\n checkout(opts) {\n return null // not supported\n }\n\n snapshot() {\n return new RocksSnapshot(this.db.snapshot(), this.clock)\n }\n\n outdated(snap) {\n return snap === null || snap.clock !== this.clock\n }\n\n async commit(updates) {\n this.clock++\n\n if (this.write === null) this.write = this.db.write()\n\n const entries = updates.batch()\n\n for (let i = 0; i < entries.length; i++) {\n const [key, value] = entries[i]\n\n if (value !== null) this.write.tryPut(key, value)\n else this.write.tryDelete(key)\n }\n\n await this.write.flush()\n }\n\n clearRequests(reqs) {\n // api parity\n }\n}\n\nasync function getWrapped(read, key, value) {\n return { key, value: [value, await read.get(value)] }\n}\n\nfunction noop() {}\n\nfunction rejectAll(entries) {\n const promises = new Array(entries.length)\n for (let i = 0; i < entries.length; i++) {\n promises[i] = Promise.reject(new Error('Database is closed'))\n }\n return promises\n}\nmodule.exports = class SessionTracker {\n constructor() {\n this.sessions = []\n }\n\n get size() {\n return this.sessions.length\n }\n\n has(s) {\n return s.index < this.sessions.length && this.sessions[s.index] === s\n }\n\n add(s) {\n if (this.has(s)) return\n s.index = this.sessions.push(s) - 1\n }\n\n remove(s) {\n if (!this.has(s)) return\n\n const head = this.sessions.pop()\n if (head === s) return\n this.sessions[(head.index = s.index)] = head\n }\n\n close(skip) {\n const closing = []\n\n for (let i = this.sessions.length - 1; i >= 0; i--) {\n const s = this.sessions[i]\n if (s === skip) continue\n closing.push(s.close())\n }\n\n return Promise.all(closing)\n }\n}\nconst { Readable, isEnded, getStreamError } = require('streamx')\nconst b4a = require('b4a')\n\nmodule.exports = class IndexStream extends Readable {\n constructor(\n db,\n range,\n {\n index = null,\n collection = index.collection,\n reverse = false,\n limit = -1,\n overlay = [],\n checkout = 0\n }\n ) {\n super()\n\n this.versions = db.versions\n this.engine = db.engine\n this.checkout = checkout\n this.engineSnapshot = db.engineSnapshot\n this.snapshot = db.engine.checkout(checkout) || this.engineSnapshot\n this.activeRequests = db.activeRequests\n this.traceable = db.traceable\n this.collection = collection\n this.index = index\n\n this.stream = this.snapshot.createReadStream(range, {\n reverse,\n limit,\n checkout,\n activeRequests: this.activeRequests\n })\n this.streamClosed = false\n this.overlay = overlay\n this.overlayIndex = 0\n this.continueDestroy = null\n this.limit = limit\n this.reverse = reverse\n this.mapping = false\n this.ending = false\n\n this.snapshot.ref()\n }\n\n _open(cb) {\n const destroy = this.destroy.bind(this)\n const drain = this._drain.bind(this)\n const onclose = this._onclose.bind(this)\n\n this.stream.on('readable', drain)\n this.stream.on('end', drain)\n\n this.stream.on('error', destroy)\n this.stream.on('close', onclose)\n\n cb(null)\n }\n\n _onclose() {\n this.streamClosed = true\n if (isEnded(this.stream) === false) this.destroy()\n this._continueDestroyMaybe()\n }\n\n _continueDestroyMaybe() {\n if (this.mapping === true) return\n if (this.streamClosed === false) return\n if (this.continueDestroy === null) return\n\n const cb = this.continueDestroy\n this.continueDestroy = null\n this.snapshot.unref()\n\n // we own the bee snapshot\n if (this.engineSnapshot !== this.snapshot) this.snapshot.unref()\n\n cb(null)\n }\n\n _push(value) {\n if (value === null) return\n if (this.limit > 0) this.limit--\n this.push(\n this.engine.finalize(\n this.collection,\n this.versions,\n this.checkout,\n this.traceable,\n value[0],\n value[1]\n )\n )\n }\n\n _process(batch, ended) {\n for (let i = 0; i < batch.length && this.limit !== 0; i++) {\n const data = batch[i]\n\n while (this.limit !== 0) {\n if (this.overlayIndex >= this.overlay.length) {\n this._push(data.value)\n break\n }\n\n const cmp = b4a.compare(data.key, this.overlay[this.overlayIndex].key)\n if (this.reverse === true ? cmp > 0 : cmp < 0) {\n this._push(data.value)\n break\n }\n\n this._push(this.overlay[this.overlayIndex++].value)\n if (cmp === 0) break\n }\n }\n\n if (ended === true) {\n while (this.overlayIndex < this.overlay.length && this.limit !== 0) {\n this._push(this.overlay[this.overlayIndex++].value)\n }\n\n this.push(null)\n this.ending = true\n }\n }\n\n async _processAsap(promises, ended) {\n for (let i = 1; i < promises.length; i++) promises[i].catch(noop) // promises are handled\n\n for (let i = 0; i < promises.length; i++) {\n const batch = [await promises[i]]\n if (this.destroying === true) return\n this._process(batch, i === promises.length - 1 && ended)\n }\n }\n\n async _mapAndProcess() {\n this.mapping = true\n\n while (!Readable.isBackpressured(this) && this.destroying === false) {\n const entries = fullyDrain(this.stream)\n\n const promises =\n entries.length === 0\n ? entries\n : this.snapshot.getIndirectRange(\n this.index.reconstruct,\n entries,\n this.checkout,\n this.activeRequests\n )\n const ended = isEnded(this.stream)\n\n if (promises.length === 0 && ended === false) break\n\n try {\n if (this.engine.asap === true && promises.length > 1) {\n await this._processAsap(promises, ended)\n } else {\n const batch = await Promise.all(promises)\n if (this.destroying === false) this._process(batch, ended)\n }\n } catch (err) {\n await Promise.allSettled(promises)\n this.destroy(err)\n }\n }\n\n this.mapping = false\n this._continueDestroyMaybe()\n }\n\n _drain() {\n if (Readable.isBackpressured(this)) return\n\n if (this.index === null) {\n this._process(fullyDrainMapped(this.stream), isEnded(this.stream))\n } else if (this.mapping === false) {\n this._mapAndProcess()\n }\n }\n\n _read(cb) {\n this._drain()\n cb(null)\n }\n\n _predestroy() {\n this.stream.destroy()\n }\n\n _destroy(cb) {\n this.stream.destroy()\n this.continueDestroy = cb\n this._continueDestroyMaybe()\n }\n\n one() {\n const stream = this\n let last = null\n\n return new Promise(function (resolve, reject) {\n stream.on('error', noop)\n stream.on('readable', onreadable)\n stream.on('close', onclose)\n\n function onreadable() {\n while (true) {\n const data = stream.read()\n if (data === null) return\n last = data\n }\n }\n\n function onclose() {\n if (isEnded(stream)) resolve(last)\n else reject(getStreamError(stream, { all: true }))\n }\n })\n }\n\n async toArray() {\n const stream = this\n const list = []\n\n return new Promise(function (resolve, reject) {\n stream.on('error', noop)\n stream.on('readable', onreadable)\n stream.on('close', onclose)\n\n function onreadable() {\n while (true) {\n const data = stream.read()\n if (data === null) return\n list.push(data)\n }\n }\n\n function onclose() {\n if (isEnded(stream)) resolve(list)\n else reject(getStreamError(stream, { all: true }))\n }\n })\n }\n}\n\nfunction fullyDrainMapped(stream) {\n const batch = []\n\n while (true) {\n const data = stream.read()\n if (data === null) return batch\n batch.push({ key: data.key, value: [data.key, data.value] })\n }\n}\n\nfunction fullyDrain(stream) {\n const batch = []\n\n while (true) {\n const data = stream.read()\n if (data === null) return batch\n batch.push(data)\n }\n}\n\nfunction noop() {}\n{\n \"name\": \"hyperdb\",\n \"version\": \"6.7.0\",\n \"description\": \"P2P Indexable Database\",\n \"files\": [\n \"index.js\",\n \"runtime.js\",\n \"runtime.mjs\",\n \"builder/*.js\",\n \"builder/*.mjs\",\n \"lib/**\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"brittle-node test/*.js\",\n \"generate\": \"rm -rf test/fixtures/generated && node test/fixtures/generate.js\"\n },\n \"exports\": {\n \".\": \"./index.js\",\n \"./package\": \"./package.json\",\n \"./builder\": {\n \"import\": \"./builder/index.mjs\",\n \"default\": \"./builder/index.js\"\n },\n \"./runtime\": {\n \"import\": \"./runtime.mjs\",\n \"default\": \"./runtime.js\"\n }\n },\n \"imports\": {\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n }\n },\n \"dependencies\": {\n \"b4a\": \"^1.6.6\",\n \"compact-encoding\": \"^3.0.0\",\n \"generate-object-property\": \"^2.0.0\",\n \"generate-string\": \"^1.0.1\",\n \"hyperbee\": \"^2.24.2\",\n \"hypercore\": \"^11.29.0\",\n \"hyperschema\": \"^1.9.2\",\n \"index-encoder\": \"^3.4.0\",\n \"refcounter\": \"^1.0.0\",\n \"rocksdb-native\": \"^3.0.0\",\n \"scope-lock\": \"^1.2.4\",\n \"streamx\": \"^2.20.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.7.0\",\n \"corestore\": \"^7.8.0\",\n \"hyperbee2\": \"^2.7.1\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"test-tmp\": \"^1.2.1\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/hyperdb.git\"\n },\n \"author\": \"Holepunch Inc\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hyperdb/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hyperdb\"\n}\nmodule.exports = {\n c: require('compact-encoding'),\n b4a: require('b4a'),\n IndexEncoder: require('index-encoder')\n}\nconst c = require('compact-encoding')\nconst { getEncoding } = require('./spec/hyperschema')\n\nconst HyperdhtAddress = getEncoding('@hyperdht/address')\n\nfunction decode(buf) {\n const addr = c.decode(HyperdhtAddress, buf)\n return addr\n}\n\nfunction encode(key, nodes) {\n return c.encode(HyperdhtAddress, { key, nodes })\n}\n\nmodule.exports = { decode, encode }\n{\n \"name\": \"hyperdht-address\",\n \"version\": \"1.1.1\",\n \"description\": \"hyperdht-address\",\n \"main\": \"index.js\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n }\n },\n \"files\": [\n \"package.json\",\n \"index.js\",\n \"index.d.ts\",\n \"spec\"\n ],\n \"devDependencies\": {\n \"b4a\": \"^1.8.0\",\n \"brittle\": \"^3.19.0\",\n \"lunte\": \"^1.2.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"scripts\": {\n \"format\": \"prettier . --write\",\n \"test\": \"prettier . --check && lunte && brittle-bare test/index.js\",\n \"lint\": \"lunte\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/hyperdht-address.git\"\n },\n \"author\": \"Holepunch Inc\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hyperdht-address/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hyperdht-address\",\n \"dependencies\": {\n \"compact-encoding\": \"^3.0.0\",\n \"hyperschema\": \"^1.20.1\"\n }\n}\n// This file is autogenerated by the hyperschema compiler\n// Schema Version: 2\n/* eslint-disable camelcase */\n/* eslint-disable quotes */\n/* eslint-disable space-before-function-paren */\n\nconst { c } = require('hyperschema/runtime')\n\nconst VERSION = 2\n\n// eslint-disable-next-line no-unused-vars\nlet version = VERSION\n\n// @hyperdht/address.nodes\nconst encoding0_1 = c.array(c.ipv4Address)\n\n// @hyperdht/address\nconst encoding0 = {\n preencode(state, m) {\n c.fixed32.preencode(state, m.key)\n state.end++ // max flag is 1 so always one byte\n\n if (version >= 2 && m.nodes) encoding0_1.preencode(state, m.nodes)\n },\n encode(state, m) {\n const flags = version >= 2 && m.nodes ? 1 : 0\n\n c.fixed32.encode(state, m.key)\n c.uint.encode(state, flags)\n\n if (version >= 2 && m.nodes) encoding0_1.encode(state, m.nodes)\n },\n decode(state) {\n const r0 = c.fixed32.decode(state)\n const flags = state.start < state.end ? c.uint.decode(state) : 0\n\n return {\n key: r0,\n nodes: version >= 2 && (flags & 1) !== 0 ? encoding0_1.decode(state) : null\n }\n }\n}\n\nfunction setVersion(v) {\n version = v\n}\n\nfunction encode(name, value, v = VERSION) {\n version = v\n return c.encode(getEncoding(name), value)\n}\n\nfunction decode(name, buffer, v = VERSION) {\n version = v\n return c.decode(getEncoding(name), buffer)\n}\n\nfunction getEnum(name) {\n switch (name) {\n default:\n throw new Error('Enum not found ' + name)\n }\n}\n\nfunction getEncoding(name) {\n switch (name) {\n case '@hyperdht/address':\n return encoding0\n default:\n throw new Error('Encoder not found ' + name)\n }\n}\n\nfunction getStruct(name, v = VERSION) {\n const enc = getEncoding(name)\n return {\n preencode(state, m) {\n version = v\n enc.preencode(state, m)\n },\n encode(state, m) {\n version = v\n enc.encode(state, m)\n },\n decode(state) {\n version = v\n return enc.decode(state)\n }\n }\n}\n\nconst resolveStruct = getStruct // compat\n\nmodule.exports = {\n resolveStruct,\n getStruct,\n getEnum,\n getEncoding,\n encode,\n decode,\n setVersion,\n version\n}\nconst DHT = require('dht-rpc')\nconst sodium = require('sodium-universal')\nconst c = require('compact-encoding')\nconst b4a = require('b4a')\nconst safetyCatch = require('safety-catch')\nconst m = require('./lib/messages')\nconst SocketPool = require('./lib/socket-pool')\nconst Persistent = require('./lib/persistent')\nconst Router = require('./lib/router')\nconst Cache = require('xache')\nconst Server = require('./lib/server')\nconst connect = require('./lib/connect')\nconst { FIREWALL, BOOTSTRAP_NODES, COMMANDS } = require('./lib/constants')\nconst { hash, createKeyPair } = require('./lib/crypto')\nconst RawStreamSet = require('./lib/raw-stream-set')\nconst ConnectionPool = require('./lib/connection-pool')\nconst { STREAM_NOT_CONNECTED } = require('./lib/errors')\n\nconst DEFAULTS = {\n ...DHT.DEFAULTS,\n connectionKeepAlive: 5000,\n randomPunchInterval: 20000\n}\n\nclass HyperDHT extends DHT {\n constructor(opts = {}) {\n const port = opts.port || 49737\n const bootstrap = opts.bootstrap || BOOTSTRAP_NODES\n const nodes = opts.nodes || []\n\n super({ ...opts, port, bootstrap, nodes, filterNode })\n\n const { router, relayAddresses, persistent } = defaultCacheOpts(opts)\n\n this.defaultKeyPair = opts.keyPair || createKeyPair(opts.seed)\n this.listening = new Set()\n this.connectionKeepAlive =\n opts.connectionKeepAlive === false\n ? 0\n : opts.connectionKeepAlive || DEFAULTS.connectionKeepAlive\n\n // stats is inherited from dht-rpc so fwd the ones from there\n this.stats = {\n punches: { consistent: 0, random: 0, open: 0 },\n relaying: { attempts: 0, successes: 0, aborts: 0 },\n ...this.stats\n }\n this.rawStreams = new RawStreamSet(this)\n this.plugins = new Map()\n\n this._router = new Router(this, router)\n this._socketPool = new SocketPool(this, opts.host || '0.0.0.0')\n this._persistent = null\n this._validatedLocalAddresses = new Map()\n this._relayAddressesCache = new Cache(relayAddresses)\n\n this._deferRandomPunch = !!opts.deferRandomPunch\n this._lastRandomPunch = this._deferRandomPunch ? Date.now() : 0\n this._connectable = true\n this._randomPunchInterval = opts.randomPunchInterval || DEFAULTS.randomPunchInterval // min 20s between random punches...\n this._randomPunches = 0\n this._randomPunchLimit = 1 // set to one for extra safety for now\n\n this.once('persistent', () => {\n this._persistent = new Persistent(this, persistent)\n for (const plugin of this.plugins.values()) plugin.onpersistent()\n })\n\n this.on('network-change', () => {\n for (const server of this.listening) server.refresh()\n })\n\n this.on('network-update', () => {\n if (!this.online) return\n for (const server of this.listening) server.notifyOnline()\n })\n }\n\n static DEFAULTS = DEFAULTS\n\n connect(remotePublicKey, opts) {\n return connect(this, remotePublicKey, opts)\n }\n\n createServer(opts, onconnection) {\n if (typeof opts === 'function') return this.createServer({}, opts)\n if (opts && opts.onconnection) onconnection = opts.onconnection\n const s = new Server(this, opts)\n if (onconnection) s.on('connection', onconnection)\n return s\n }\n\n pool() {\n return new ConnectionPool(this)\n }\n\n async resume({ log = noop } = {}) {\n if (this._deferRandomPunch) this._lastRandomPunch = Date.now()\n await super.resume({ log })\n const resuming = []\n for (const server of this.listening) resuming.push(server.resume())\n log('Resuming hyperdht servers')\n await Promise.allSettled(resuming)\n log('Done, hyperdht fully resumed')\n }\n\n async suspend({ log = noop } = {}) {\n this._connectable = false // just so nothing gets connected during suspension\n const suspending = []\n for (const server of this.listening) suspending.push(server.suspend())\n log('Suspending all hyperdht servers')\n await Promise.allSettled(suspending)\n log('Done, clearing all raw streams')\n await this.rawStreams.clear()\n log('Done, suspending dht-rpc')\n await super.suspend({ log })\n log('Done, clearing raw streams again')\n await this.rawStreams.clear()\n log('Done, hyperdht fully suspended')\n this._connectable = true\n }\n\n async destroy({ force = false } = {}) {\n if (!force) {\n const closing = []\n for (const server of this.listening) closing.push(server.close())\n await Promise.allSettled(closing)\n }\n this._router.destroy()\n if (this._persistent) this._persistent.destroy()\n for (const plugin of this.plugins.values()) plugin.destroy()\n await this.rawStreams.clear()\n await this._socketPool.destroy()\n await super.destroy()\n }\n\n async validateLocalAddresses(addresses) {\n const list = []\n const socks = []\n const waiting = []\n\n for (const addr of addresses) {\n const { host } = addr\n\n if (this._validatedLocalAddresses.has(host)) {\n if (await this._validatedLocalAddresses.get(host)) {\n list.push(addr)\n }\n continue\n }\n\n const sock = this.udx.createSocket()\n try {\n sock.bind(0, host)\n } catch {\n this._validatedLocalAddresses.set(host, Promise.resolve(false))\n continue\n }\n\n socks.push(sock)\n\n // semi terrible heuristic until we proper fix local connections by racing them to the remote...\n const promise = new Promise((resolve) => {\n sock.on('message', () => resolve(true))\n setTimeout(() => resolve(false), 500)\n sock.trySend(b4a.alloc(1), sock.address().port, addr.host)\n })\n\n this._validatedLocalAddresses.set(host, promise)\n waiting.push(addr)\n }\n\n for (const addr of waiting) {\n const { host } = addr\n if (this._validatedLocalAddresses.has(host)) {\n if (await this._validatedLocalAddresses.get(host)) {\n list.push(addr)\n }\n continue\n }\n }\n\n for (const sock of socks) await sock.close()\n\n return list\n }\n\n findPeer(publicKey, opts = {}) {\n const target = opts.hash === false ? publicKey : hash(publicKey)\n opts = { ...opts, map: mapFindPeer }\n return this.query({ target, command: COMMANDS.FIND_PEER, value: null }, opts)\n }\n\n lookup(target, opts = {}) {\n opts = { ...opts, map: mapLookup }\n return this.query({ target, command: COMMANDS.LOOKUP, value: null }, opts)\n }\n\n lookupAndUnannounce(target, keyPair, opts = {}) {\n const unannounces = []\n const dht = this\n const userCommit = opts.commit || noop\n const signUnannounce = opts.signUnannounce || Persistent.signUnannounce\n\n if (this._persistent !== null) {\n // unlink self\n this._persistent.unannounce(target, keyPair.publicKey)\n }\n\n opts = { ...opts, map, commit }\n return this.query({ target, command: COMMANDS.LOOKUP, value: null }, opts)\n\n async function commit(reply, dht, query) {\n await Promise.all(unannounces) // can never fail, caught below\n return userCommit(reply, dht, query)\n }\n\n function map(reply) {\n const data = mapLookup(reply)\n\n if (!data || !data.token) return data\n\n let found = data.peers.length >= 20\n for (let i = 0; !found && i < data.peers.length; i++) {\n found = b4a.equals(data.peers[i].publicKey, keyPair.publicKey)\n }\n\n if (!found) return data\n\n if (!data.from.id) return data\n\n unannounces.push(\n dht\n ._requestUnannounce(keyPair, dht, target, data.token, data.from, signUnannounce)\n .catch(safetyCatch)\n )\n\n return data\n }\n }\n\n unannounce(target, keyPair, opts = {}) {\n return this.lookupAndUnannounce(target, keyPair, opts).finished()\n }\n\n announce(target, keyPair, relayAddresses, opts = {}) {\n const signAnnounce = opts.signAnnounce || Persistent.signAnnounce\n const bump = opts.bump || 0\n\n opts = { ...opts, commit }\n\n return opts.clear ? this.lookupAndUnannounce(target, keyPair, opts) : this.lookup(target, opts)\n\n function commit(reply, dht) {\n return dht._requestAnnounce(\n keyPair,\n dht,\n target,\n reply.token,\n reply.from,\n relayAddresses,\n signAnnounce,\n bump\n )\n }\n }\n\n async immutableGet(target, opts = {}) {\n opts = { ...opts, map: mapImmutable }\n\n const query = this.query({ target, command: COMMANDS.IMMUTABLE_GET, value: null }, opts)\n const check = b4a.allocUnsafe(32)\n\n for await (const node of query) {\n const { value } = node\n sodium.crypto_generichash(check, value)\n if (b4a.equals(check, target)) return node\n }\n\n return null\n }\n\n async immutablePut(value, opts = {}) {\n const target = b4a.allocUnsafe(32)\n sodium.crypto_generichash(target, value)\n\n opts = {\n ...opts,\n map: mapImmutable,\n commit(reply, dht) {\n return dht.request(\n { token: reply.token, target, command: COMMANDS.IMMUTABLE_PUT, value },\n reply.from\n )\n }\n }\n\n const query = this.query({ target, command: COMMANDS.IMMUTABLE_GET, value: null }, opts)\n await query.finished()\n\n return { hash: target, closestNodes: query.closestNodes }\n }\n\n async mutableGet(publicKey, opts = {}) {\n let refresh = opts.refresh || null\n let signed = null\n let result = null\n\n opts = { ...opts, map: mapMutable, commit: refresh ? commit : null }\n\n const target = b4a.allocUnsafe(32)\n sodium.crypto_generichash(target, publicKey)\n\n const userSeq = opts.seq || 0\n const query = this.query(\n { target, command: COMMANDS.MUTABLE_GET, value: c.encode(c.uint, userSeq) },\n opts\n )\n const latest = opts.latest !== false\n\n for await (const node of query) {\n if (result && node.seq <= result.seq) continue\n if (\n node.seq < userSeq ||\n !Persistent.verifyMutable(node.signature, node.seq, node.value, publicKey)\n )\n continue\n if (!latest) return node\n if (!result || node.seq > result.seq) result = node\n }\n\n return result\n\n function commit(reply, dht) {\n if (!signed && result && refresh) {\n if (refresh(result)) {\n signed = c.encode(m.mutablePutRequest, {\n publicKey,\n seq: result.seq,\n value: result.value,\n signature: result.signature\n })\n } else {\n refresh = null\n }\n }\n\n return signed\n ? dht.request(\n { token: reply.token, target, command: COMMANDS.MUTABLE_PUT, value: signed },\n reply.from\n )\n : Promise.resolve(null)\n }\n }\n\n async mutablePut(keyPair, value, opts = {}) {\n const signMutable = opts.signMutable || Persistent.signMutable\n\n const target = b4a.allocUnsafe(32)\n sodium.crypto_generichash(target, keyPair.publicKey)\n\n const seq = opts.seq || 0\n const signature = await signMutable(seq, value, keyPair)\n\n const signed = c.encode(m.mutablePutRequest, {\n publicKey: keyPair.publicKey,\n seq,\n value,\n signature\n })\n\n opts = {\n ...opts,\n map: mapMutable,\n commit(reply, dht) {\n return dht.request(\n { token: reply.token, target, command: COMMANDS.MUTABLE_PUT, value: signed },\n reply.from\n )\n }\n }\n\n // use seq = 0, for the query part here, as we don't care about the actual values\n const query = this.query(\n { target, command: COMMANDS.MUTABLE_GET, value: c.encode(c.uint, 0) },\n opts\n )\n await query.finished()\n\n return { publicKey: keyPair.publicKey, closestNodes: query.closestNodes, seq, signature }\n }\n\n onrequest(req) {\n switch (req.command) {\n case COMMANDS.PEER_HANDSHAKE: {\n this._router.onpeerhandshake(req)\n return true\n }\n case COMMANDS.PEER_HOLEPUNCH: {\n this._router.onpeerholepunch(req)\n return true\n }\n }\n\n if (this._persistent === null || this.id === null) return false\n\n switch (req.command) {\n case COMMANDS.FIND_PEER: {\n this._persistent.onfindpeer(req)\n return true\n }\n case COMMANDS.LOOKUP: {\n this._persistent.onlookup(req)\n return true\n }\n case COMMANDS.ANNOUNCE: {\n this._persistent.onannounce(req)\n return true\n }\n case COMMANDS.UNANNOUNCE: {\n this._persistent.onunannounce(req)\n return true\n }\n case COMMANDS.MUTABLE_PUT: {\n this._persistent.onmutableput(req)\n return true\n }\n case COMMANDS.MUTABLE_GET: {\n this._persistent.onmutableget(req)\n return true\n }\n case COMMANDS.IMMUTABLE_PUT: {\n this._persistent.onimmutableput(req)\n return true\n }\n case COMMANDS.IMMUTABLE_GET: {\n this._persistent.onimmutableget(req)\n return true\n }\n case COMMANDS.PLUGIN: {\n this._persistent.onplugin(req)\n return true\n }\n }\n\n return false\n }\n\n static keyPair(seed) {\n return createKeyPair(seed)\n }\n\n static hash(data) {\n return hash(data)\n }\n\n static connectRawStream(encryptedStream, rawStream, remoteId) {\n const stream = encryptedStream.rawStream\n\n if (!stream.connected) throw STREAM_NOT_CONNECTED()\n\n rawStream.connect(stream.socket, remoteId, stream.remotePort, stream.remoteHost)\n }\n\n createRawStream(opts) {\n return this.rawStreams.add(opts)\n }\n\n async _requestAnnounce(keyPair, dht, target, token, from, relayAddresses, sign, bump) {\n const ann = {\n peer: {\n publicKey: keyPair.publicKey,\n relayAddresses: relayAddresses || []\n },\n refresh: null,\n signature: null,\n bump\n }\n\n ann.signature = await sign(target, token, from.id, ann, keyPair)\n\n const value = c.encode(m.announce, ann)\n\n return dht.request(\n {\n token,\n target,\n command: COMMANDS.ANNOUNCE,\n value\n },\n from\n )\n }\n\n async _requestUnannounce(keyPair, dht, target, token, from, sign) {\n const unann = {\n peer: {\n publicKey: keyPair.publicKey,\n relayAddresses: []\n },\n signature: null\n }\n\n unann.signature = await sign(target, token, from.id, unann, keyPair)\n\n const value = c.encode(m.announce, unann)\n\n return dht.request(\n {\n token,\n target,\n command: COMMANDS.UNANNOUNCE,\n value\n },\n from\n )\n }\n\n register(name, plugin) {\n this.plugins.set(name, plugin)\n plugin.onregister(this)\n }\n}\n\nHyperDHT.BOOTSTRAP = BOOTSTRAP_NODES\nHyperDHT.FIREWALL = FIREWALL\n\nmodule.exports = HyperDHT\n\nfunction mapLookup(node) {\n if (!node.value) return null\n\n try {\n const l = c.decode(m.lookupRawReply, node.value)\n\n return {\n token: node.token,\n from: node.from,\n to: node.to,\n peers: l.peers,\n bump: l.bump\n }\n } catch {\n return null\n }\n}\n\nfunction mapFindPeer(node) {\n if (!node.value) return null\n\n try {\n return {\n token: node.token,\n from: node.from,\n to: node.to,\n peer: c.decode(m.peer, node.value)\n }\n } catch {\n return null\n }\n}\n\nfunction mapImmutable(node) {\n if (!node.value) return null\n\n return {\n token: node.token,\n from: node.from,\n to: node.to,\n value: node.value\n }\n}\n\nfunction mapMutable(node) {\n if (!node.value) return null\n\n try {\n const { seq, value, signature } = c.decode(m.mutableGetResponse, node.value)\n\n return {\n token: node.token,\n from: node.from,\n to: node.to,\n seq,\n value,\n signature\n }\n } catch {\n return null\n }\n}\n\nfunction noop() {}\n\nfunction filterNode(node) {\n // always skip these testnet nodes that got mixed in by accident, until they get updated\n return (\n !(node.port === 49738 && (node.host === '134.209.28.98' || node.host === '167.99.142.185')) &&\n !(node.port === 9400 && node.host === '35.233.47.252') &&\n !(node.host === '150.136.142.116')\n )\n}\n\nconst defaultMaxSize = 65536\nconst defaultMaxAge = 20 * 60 * 1000 // 20 minutes\n\nfunction defaultCacheOpts(opts) {\n const maxSize = opts.maxSize || defaultMaxSize\n const maxAge = opts.maxAge || defaultMaxAge\n\n return {\n router: {\n forwards: { maxSize, maxAge }\n },\n relayAddresses: { maxSize: Math.min(maxSize, 512), maxAge: 0 },\n persistent: {\n records: { maxSize, maxAge },\n refreshes: { maxSize, maxAge },\n mutables: {\n maxSize: (maxSize / 2) | 0,\n maxAge: opts.maxAge || 48 * 60 * 60 * 1000 // 48 hours\n },\n immutables: {\n maxSize: (maxSize / 2) | 0,\n maxAge: opts.maxAge || 48 * 60 * 60 * 1000 // 48 hours\n },\n bumps: { maxSize, maxAge }\n }\n }\n}\nconst safetyCatch = require('safety-catch')\nconst c = require('compact-encoding')\nconst Signal = require('signal-promise')\nconst { encodeUnslab } = require('./encode')\nconst Sleeper = require('./sleeper')\nconst m = require('./messages')\nconst Persistent = require('./persistent')\nconst { COMMANDS } = require('./constants')\n\nconst MIN_ACTIVE = 3\n\nmodule.exports = class Announcer {\n constructor(dht, keyPair, target, opts = {}) {\n this.dht = dht\n this.keyPair = keyPair\n this.target = target\n this.relays = []\n this.relayAddresses = []\n this.stopped = false\n this.suspended = false\n this.record = encodeUnslab(m.peer, { publicKey: keyPair.publicKey, relayAddresses: [] })\n this.online = new Signal()\n\n this._refreshing = false\n this._closestNodes = null\n this._active = null\n this._sleeper = new Sleeper()\n this._resumed = new Signal()\n this._signAnnounce = opts.signAnnounce || Persistent.signAnnounce\n this._signUnannounce = opts.signUnannounce || Persistent.signUnannounce\n this._updating = null\n this._activeQuery = null\n this._unannouncing = null\n\n this._serverRelays = [new Map(), new Map(), new Map()]\n }\n\n isRelay(addr) {\n const id = addr.host + ':' + addr.port\n const [a, b, c] = this._serverRelays\n return a.has(id) || b.has(id) || c.has(id)\n }\n\n async suspend({ log = noop } = {}) {\n if (this.suspended) return\n this.suspended = true\n\n log('Suspending announcer')\n\n // Suspend has its own sleep logic\n // so we don't want to hang on this one\n this.online.notify()\n\n if (this._activeQuery) this._activeQuery.destroy()\n\n this._sleeper.resume()\n if (this._updating) await this._updating\n log('Suspending announcer (post update)')\n\n if (this.suspended === false || this.stopped) return\n\n log('Suspending announcer (pre unannounce)')\n await this._unannounceCurrent()\n log('Suspending announcer (post unannounce)')\n }\n\n resume() {\n if (!this.suspended) return\n this.suspended = false\n\n this.refresh()\n this._sleeper.resume()\n this._resumed.notify()\n }\n\n refresh() {\n if (this.stopped) return\n this._refreshing = true\n }\n\n async start() {\n if (this.stopped) return\n this._active = this._runUpdate()\n await this._active\n if (this.stopped) return\n this._active = this._background()\n }\n\n async stop() {\n this.stopped = true\n this.online.notify() // Break out of the _background loop if we're offline\n this._sleeper.resume()\n this._resumed.notify()\n await this._active\n await this._unannounceCurrent()\n }\n\n async _unannounceCurrent() {\n while (this._unannouncing !== null) await this._unannouncing\n const un = (this._unannouncing = this._unannounceAll(this._serverRelays[2].values()))\n await this._unannouncing\n if (un === this._unannouncing) this._unannouncing = null\n }\n\n async _background() {\n while (!this.dht.destroyed && !this.stopped) {\n try {\n this._refreshing = false\n\n // ~5min +-\n for (let i = 0; i < 100 && !this.stopped && !this._refreshing && !this.suspended; i++) {\n const pings = []\n\n for (const node of this._serverRelays[2].values()) {\n pings.push(this.dht.ping(node))\n }\n\n const active = await resolved(pings)\n if (active < Math.min(pings.length, MIN_ACTIVE)) {\n this.refresh() // we lost too many relay nodes, retry all\n }\n\n if (this.stopped) return\n\n if (!this.suspended && !this._refreshing) await this._sleeper.pause(3000)\n }\n\n while (!this.stopped && this.suspended) await this._resumed.wait()\n\n if (!this.stopped) await this._runUpdate()\n\n while (!this.dht.online && !this.stopped && !this.suspended) {\n // Being offline can make _background repeat very quickly\n // So wait until we're back online\n await this.online.wait()\n }\n } catch (err) {\n safetyCatch(err)\n }\n }\n }\n\n async _runUpdate() {\n this._updating = this._update()\n await this._updating\n this._updating = null\n }\n\n async _update() {\n while (this._unannouncing) await this._unannouncing\n\n this._cycle()\n\n const q = (this._activeQuery = this.dht.findPeer(this.target, {\n hash: false,\n nodes: this._closestNodes\n }))\n\n try {\n await q.finished()\n } catch {\n // ignore failures...\n }\n\n this._activeQuery = null\n\n if (this.stopped || this.suspended) return\n\n const ann = []\n const replies = pickBest(q.closestReplies)\n\n const relays = []\n const relayAddresses = []\n\n if (!this.dht.firewalled) {\n const addr = this.dht.remoteAddress()\n if (addr) relayAddresses.push(addr)\n }\n\n for (const msg of replies) {\n ann.push(this._commit(msg, relays, relayAddresses))\n }\n\n await Promise.allSettled(ann)\n if (this.stopped || this.suspended) return\n\n this._closestNodes = q.closestNodes\n this.relays = relays\n this.relayAddresses = relayAddresses\n\n const removed = []\n for (const [key, value] of this._serverRelays[1]) {\n if (!this._serverRelays[2].has(key)) removed.push(value)\n }\n\n await this._unannounceAll(removed)\n }\n\n _unannounceAll(relays) {\n const unann = []\n for (const r of relays) unann.push(this._unannounce(r))\n return Promise.allSettled(unann)\n }\n\n async _unannounce(to) {\n const unann = {\n peer: {\n publicKey: this.keyPair.publicKey,\n relayAddresses: []\n },\n refresh: null,\n signature: null\n }\n\n const { from, token, value } = await this.dht.request(\n {\n token: null,\n command: COMMANDS.FIND_PEER,\n target: this.target,\n value: null\n },\n to\n )\n\n if (!token || !from.id || !value) return\n\n unann.signature = await this._signUnannounce(this.target, token, from.id, unann, this.keyPair)\n\n await this.dht.request(\n {\n token,\n command: COMMANDS.UNANNOUNCE,\n target: this.target,\n value: c.encode(m.announce, unann)\n },\n to\n )\n }\n\n async _commit(msg, relays, relayAddresses) {\n const ann = {\n peer: {\n publicKey: this.keyPair.publicKey,\n relayAddresses: []\n },\n refresh: null,\n signature: null\n }\n\n ann.signature = await this._signAnnounce(this.target, msg.token, msg.from.id, ann, this.keyPair)\n\n const res = await this.dht.request(\n {\n token: msg.token,\n command: COMMANDS.ANNOUNCE,\n target: this.target,\n value: c.encode(m.announce, ann)\n },\n msg.from\n )\n\n if (res.error !== 0) return\n\n if (relayAddresses.length < 3) relayAddresses.push({ host: msg.from.host, port: msg.from.port })\n relays.push({ relayAddress: msg.from, peerAddress: msg.to })\n\n this._serverRelays[2].set(msg.from.host + ':' + msg.from.port, msg.from)\n }\n\n _cycle() {\n const tmp = this._serverRelays[0]\n this._serverRelays[0] = this._serverRelays[1]\n this._serverRelays[1] = this._serverRelays[2]\n this._serverRelays[2] = tmp\n tmp.clear()\n }\n}\n\nfunction resolved(ps) {\n let replied = 0\n let ticks = ps.length + 1\n\n return new Promise((resolve) => {\n for (const p of ps) p.then(push, tick)\n tick()\n\n function push(v) {\n replied++\n tick()\n }\n\n function tick() {\n if (--ticks === 0) resolve(replied)\n }\n })\n}\n\nfunction pickBest(replies) {\n // TODO: pick the ones closest to us RTT wise\n return replies.slice(0, 3)\n}\n\nfunction noop() {}\nconst NoiseSecretStream = require('@hyperswarm/secret-stream')\nconst b4a = require('b4a')\nconst relay = require('blind-relay')\nconst { isReserved, isBogon } = require('bogon')\nconst safetyCatch = require('safety-catch')\nconst unslab = require('unslab')\nconst Semaphore = require('./semaphore')\nconst NoiseWrap = require('./noise-wrap')\nconst SecurePayload = require('./secure-payload')\nconst Holepuncher = require('./holepuncher')\nconst Sleeper = require('./sleeper')\nconst {\n clearRelayTimeout,\n confirmDirectUpgrade,\n destroyRelayConnection\n} = require('./relay-connection')\nconst { FIREWALL, ERROR } = require('./constants')\nconst { unslabbedHash } = require('./crypto')\nconst {\n CANNOT_HOLEPUNCH,\n HANDSHAKE_INVALID,\n HOLEPUNCH_ABORTED,\n HOLEPUNCH_INVALID,\n HOLEPUNCH_PROBE_TIMEOUT,\n HOLEPUNCH_DOUBLE_RANDOMIZED_NATS,\n PEER_CONNECTION_FAILED,\n PEER_NOT_FOUND,\n REMOTE_ABORTED,\n REMOTE_NOT_HOLEPUNCHABLE,\n REMOTE_NOT_HOLEPUNCHING,\n SERVER_ERROR,\n SERVER_INCOMPATIBLE,\n RELAY_ABORTED,\n SUSPENDED\n} = require('./errors')\nconst { decode } = require('hypercore-id-encoding')\nconst HyperDHTAddress = require('hyperdht-address')\n\nmodule.exports = function connect(dht, publicKey, opts = {}) {\n const pool = opts.pool || null\n\n const { key, nodes: providedNodes } = HyperDHTAddress.decode(\n b4a.isBuffer(publicKey) ? publicKey : decode(publicKey)\n )\n publicKey = key\n\n if (pool && pool.has(publicKey)) return pool.get(publicKey)\n\n publicKey = unslab(publicKey)\n\n opts.relayAddresses = opts.relayAddresses || providedNodes || []\n const keyPair = opts.keyPair || dht.defaultKeyPair\n const relayThrough = selectRelay(opts.relayThrough || null)\n const encryptedSocket = (opts.createSecretStream || defaultCreateSecretStream)(true, null, {\n publicKey: keyPair.publicKey,\n remotePublicKey: publicKey,\n autoStart: false,\n keepAlive: dht.connectionKeepAlive\n })\n\n // in case a socket is made during suspended state, destroy it immediately\n if (dht.suspended || !dht._connectable) {\n encryptedSocket.destroy(SUSPENDED())\n return encryptedSocket\n }\n\n if (pool) pool._attachStream(encryptedSocket, false)\n\n const id = b4a.toString(publicKey, 'hex')\n const c = {\n id,\n dht,\n session: dht.session(),\n relayAddresses: opts.relayAddresses,\n remoteRelayAddresses: [],\n pool,\n round: 0,\n target: unslabbedHash(publicKey),\n remotePublicKey: publicKey,\n reusableSocket: !!opts.reusableSocket,\n handshake: (opts.createHandshake || defaultCreateHandshake)(keyPair, publicKey),\n request: null,\n requesting: false,\n lan: opts.localConnection !== false,\n firewall: FIREWALL.UNKNOWN,\n rawStream: dht.createRawStream({ framed: true, firewall }),\n connect: null,\n query: null,\n puncher: null,\n payload: null,\n passiveConnectTimeout: null,\n serverSocket: null,\n serverAddress: null,\n onsocket: null,\n sleeper: new Sleeper(),\n encryptedSocket,\n\n // Relay state\n relayTimeout: null,\n relayThrough,\n relayToken: relayThrough ? relay.token() : null,\n relaySocket: null,\n relayClient: null,\n relayPaired: false,\n validUpgrade: true,\n relayKeepAlive: opts.relayKeepAlive || 5000\n }\n\n // If the raw stream receives an error signal pre connect (ie from the firewall hook), make sure\n // to forward that to the encrypted socket for proper teardown\n c.rawStream.on('error', autoDestroy)\n c.rawStream.once('connect', () => {\n c.rawStream.removeListener('error', autoDestroy)\n })\n\n encryptedSocket.on('close', function () {\n if (c.passiveConnectTimeout) clearPassiveConnectTimeout(c)\n if (c.query) c.query.destroy()\n if (c.puncher) c.puncher.destroy()\n if (c.rawStream) c.rawStream.destroy()\n c.session.destroy()\n c.sleeper.resume()\n })\n\n // Safe to run in the background - never throws\n if (dht.suspended) encryptedSocket.destroy(SUSPENDED())\n else connectAndHolepunch(c, opts)\n\n return encryptedSocket\n\n function autoDestroy(err) {\n maybeDestroyEncryptedSocket(c, err)\n }\n\n function firewall(socket, port, host) {\n // Check if the traffic originated from the socket on which we're expecting relay traffic. If so,\n // we haven't hole punched yet and the other side is just sending us traffic through the relay.\n if (c.relaySocket && isRelay(c.relaySocket, socket, port, host)) {\n c.validUpgrade = false\n return false\n }\n\n c.validUpgrade = true\n if (c.onsocket) {\n c.onsocket(socket, port, host)\n } else {\n c.serverSocket = socket\n c.serverAddress = { port, host }\n }\n return false\n }\n}\n\nfunction isDone(c) {\n // we are destroying or the puncher is connected - done\n if (c.encryptedSocket.destroying || !!(c.puncher && c.puncher.connected)) {\n return true\n }\n // not destroying, but no raw stream - def not done\n if (c.encryptedSocket.rawStream === null) {\n return false\n }\n // we are relayed, but the puncher is not done yet\n if (c.relaySocket && !!(c.puncher && !c.puncher.connected && !c.puncher.destroyed)) {\n return false\n }\n // we are done\n return true\n}\n\nasync function retryRoute(c, route) {\n const ref = c.dht._socketPool.lookup(route.socket)\n\n if (!ref) {\n if (route.socket === c.dht.socket) {\n await connectThroughNode(c, route.address, c.dht.socket)\n }\n return\n }\n\n ref.active()\n\n try {\n await connectThroughNode(c, route.address, route.socket)\n } catch {\n // if error, just ignore, and continue through the existing strat\n }\n\n ref.inactive()\n}\n\nasync function connectAndHolepunch(c, opts) {\n const route = c.reusableSocket ? c.dht._socketPool.routes.get(c.remotePublicKey) : null\n\n if (route) {\n await retryRoute(c, route)\n if (isDone(c)) return\n }\n\n await findAndConnect(c, opts)\n if (isDone(c)) return\n\n if (!c.connect) {\n // TODO: just a quick fix for now, should retry prob\n maybeDestroyEncryptedSocket(c, HANDSHAKE_INVALID())\n return\n }\n\n await holepunch(c, opts)\n}\n\nfunction getFirstRemoteAddress(addrs, serverAddress) {\n for (const addr of addrs) {\n if (isBogon(addr.host)) continue\n return addr\n }\n\n return serverAddress\n}\n\nasync function holepunch(c, opts) {\n let { relayAddress, serverAddress, clientAddress, payload } = c.connect\n\n const remoteHolepunchable = !!(payload.holepunch && payload.holepunch.relays.length)\n const relayed = diffAddress(serverAddress, relayAddress)\n\n if (payload.firewall === FIREWALL.OPEN || (relayed && !remoteHolepunchable)) {\n const addr = getFirstRemoteAddress(payload.addresses4, serverAddress)\n if (addr) {\n const socket = c.dht.socket\n c.dht.stats.punches.open++\n c.onsocket(socket, addr.port, addr.host)\n return\n }\n // TODO: check all addresses also obvs\n }\n\n const onabort = () => {\n c.session.destroy()\n maybeDestroyEncryptedSocket(c, HOLEPUNCH_ABORTED())\n }\n\n if (c.firewall === FIREWALL.OPEN) {\n c.passiveConnectTimeout = setTimeout(onabort, 10000)\n return\n }\n\n // Race the LAN shortcut with normal holepunch when possible. A blocked LAN ping\n // should not abort a connection that can still holepunch. If the remote is not\n // holepunchable, the LAN ping is the only remaining path.\n if (c.lan && relayed && clientAddress.host === serverAddress.host) {\n const serverAddresses = payload.addresses4.filter(onlyNonReserved)\n\n if (serverAddresses.length > 0) {\n const myAddresses = Holepuncher.localAddresses(c.dht.io.serverSocket)\n const addr = Holepuncher.matchAddress(myAddresses, serverAddresses) || serverAddresses[0]\n\n const socket = c.dht.io.serverSocket\n c.dht.ping(addr).then(onlanconnect, onlanerror)\n if (!remoteHolepunchable) return\n\n function onlanconnect() {\n // LAN and holepunch completions both converge through onsocket,\n // which claims c.rawStream once and ignores later winners.\n if (isDone(c)) return\n c.onsocket(socket, addr.port, addr.host)\n }\n\n function onlanerror() {\n if (!remoteHolepunchable) {\n maybeDestroyEncryptedSocket(c, HOLEPUNCH_ABORTED())\n }\n }\n }\n }\n\n if (!remoteHolepunchable) {\n maybeDestroyEncryptedSocket(c, CANNOT_HOLEPUNCH())\n return\n }\n\n c.puncher = new Holepuncher(c.dht, c.session, true, payload.firewall)\n\n c.puncher.onconnect = c.onsocket\n c.puncher.onabort = onabort\n\n const serverRelay = pickServerRelay(payload.holepunch.relays, relayAddress)\n\n // Begin holepunching!\n\n let probe\n try {\n probe = await probeRound(c, opts.fastOpen === false ? null : serverAddress, serverRelay, true)\n } catch (err) {\n destroyPuncher(c)\n // TODO: we should retry here with some of the other relays, bail for now\n maybeDestroyEncryptedSocket(c, err)\n return\n }\n\n if (isDone(c) || !probe) return\n const { token, peerAddress } = probe\n\n // If the relay the server picked is the same as the relay the client picked,\n // then we can use the peerAddress that round one indicates the server wants to use.\n // This shaves off a roundtrip if the server chose to reroll its socket due to some NAT\n // issue with the first one it picked (ie mobile nat inconsistencies...).\n // If the relays were different, then the server would not have a UDP session open on this address\n // to the client relay, which round2 uses.\n if (\n !diffAddress(serverRelay.relayAddress, relayAddress) &&\n diffAddress(serverAddress, peerAddress)\n ) {\n serverAddress = peerAddress\n await c.puncher.openSession(serverAddress)\n if (isDone(c)) return\n }\n\n // TODO: still continue here if a local connection might work, but then do not holepunch...\n if (\n opts.holepunch &&\n !opts.holepunch(\n c.puncher.remoteFirewall,\n c.puncher.nat.firewall,\n c.puncher.remoteAddresses,\n c.puncher.nat.addresses\n )\n ) {\n await abort(c, serverRelay, HOLEPUNCH_ABORTED('Client aborted holepunch'))\n return\n }\n\n try {\n await roundPunch(c, serverAddress, token, relayAddress, serverRelay, false)\n } catch (err) {\n destroyPuncher(c)\n // TODO: retry with another relay?\n maybeDestroyEncryptedSocket(c, err)\n }\n}\n\nasync function connectThroughNodes(c, addresses, socket) {\n for (const address of addresses) {\n if (isDone(c) || c.connect) return\n\n c.remoteRelayAddresses.push(address)\n await connectThroughNode(c, address, socket)\n }\n}\n\nasync function findAndConnect(c, opts) {\n let attempts = 0\n let relayAddresses =\n opts.relayAddresses && opts.relayAddresses.length ? opts.relayAddresses : null\n\n if (!relayAddresses) {\n const cachedRelayAddresses = c.dht._relayAddressesCache.get(c.id)\n if (cachedRelayAddresses) relayAddresses = cachedRelayAddresses\n }\n\n if (c.dht._persistent) {\n // check if we know the route ourself...\n const route = c.dht._router.get(c.target)\n if (route && route.relay !== null) {\n relayAddresses = [{ host: route.relay.host, port: route.relay.port }]\n }\n }\n\n // 2 is how many parallel connect attempts we want to do, we can make this configurable\n const preConnect = relayAddresses !== null && relayAddresses.length > 0\n const sem = new Semaphore(preConnect ? 3 : 2)\n const signal = sem.signal.bind(sem)\n const tries = relayAddresses !== null ? 2 : 1\n\n if (preConnect) {\n await sem.wait()\n connectThroughNodes(c, relayAddresses, null).then(signal, signal)\n }\n\n try {\n for (let i = 0; i < tries && !isDone(c) && !c.connect; i++) {\n c.query = c.dht.findPeer(c.target, {\n hash: false,\n session: c.session,\n nodes: relayAddresses,\n retries: 3\n })\n\n for await (const data of c.query) {\n await sem.wait()\n if (isDone(c)) return\n\n if (c.connect) {\n sem.signal()\n break\n }\n\n // Skip node already run via preConnect\n if (preConnect && relayAddresses && isRelayAddress(relayAddresses, data)) {\n sem.signal()\n continue\n }\n\n c.remoteRelayAddresses.push(data.from)\n attempts++\n connectThroughNode(c, data.from, null).then(signal, signal)\n }\n\n relayAddresses = null\n\n if (attempts > 0) await sem.flush()\n }\n\n c.query = null\n if (isDone(c)) return\n\n // flush the semaphore\n await sem.flush()\n if (isDone(c)) return\n } catch (err) {\n c.query = null\n maybeDestroyEncryptedSocket(c, err)\n return\n }\n\n if (!c.connect) {\n maybeDestroyEncryptedSocket(c, attempts ? PEER_CONNECTION_FAILED() : PEER_NOT_FOUND())\n }\n}\n\nasync function connectThroughNode(c, address, socket) {\n if (!c.requesting) {\n // If we have a stable server address, send it over now\n const addr = c.dht.remoteAddress()\n const localAddrs = c.lan ? Holepuncher.localAddresses(c.dht.io.serverSocket) : null\n const addresses4 = []\n\n if (addr) addresses4.push(addr)\n if (localAddrs) addresses4.push(...localAddrs)\n\n c.firewall = addr ? FIREWALL.OPEN : FIREWALL.UNKNOWN\n c.requesting = true\n c.request = await c.handshake.send({\n error: ERROR.NONE,\n firewall: c.firewall,\n holepunch: null,\n addresses4,\n addresses6: [],\n udx: {\n reusableSocket: c.reusableSocket,\n id: c.rawStream.id,\n seq: 0\n },\n secretStream: {},\n relayThrough: c.relayThrough ? { publicKey: c.relayThrough, token: c.relayToken } : null\n })\n if (isDone(c)) return\n }\n\n const { serverAddress, clientAddress, relayed, noise } = await c.dht._router.peerHandshake(\n c.target,\n { noise: c.request, socket, session: c.session },\n address\n )\n if (isDone(c) || c.connect) return\n\n const payload = await c.handshake.recv(noise)\n if (isDone(c) || !payload) return\n\n if (payload.version !== 1) {\n maybeDestroyEncryptedSocket(c, SERVER_INCOMPATIBLE())\n return\n }\n if (payload.error !== ERROR.NONE) {\n maybeDestroyEncryptedSocket(c, SERVER_ERROR())\n return\n }\n if (!payload.udx) {\n maybeDestroyEncryptedSocket(c, SERVER_ERROR('Server did not send UDX data'))\n return\n }\n\n const hs = c.handshake.final()\n\n c.handshake = null\n c.request = null\n c.requesting = false\n c.connect = {\n relayed,\n relayAddress: address,\n clientAddress,\n serverAddress,\n payload\n }\n\n c.payload = new SecurePayload(hs.holepunchSecret)\n\n c.onsocket = function (socket, port, host) {\n if (c.rawStream === null) return // Already hole punched\n\n if (c.rawStream.connected) {\n const rawStream = c.rawStream\n const remoteChanging = rawStream.changeRemote(socket, c.connect.payload.udx.id, port, host)\n confirmDirectUpgrade(c, rawStream, remoteChanging)\n } else {\n // cache the relay addrs for a future reconnect, we prefer the remote one so they\n // can give us the correct ones from their pov\n if (payload.relayAddresses && payload.relayAddresses.length) {\n c.dht._relayAddressesCache.set(c.id, payload.relayAddresses)\n } else if (c.remoteRelayAddresses.length) {\n c.dht._relayAddressesCache.set(c.id, c.remoteRelayAddresses)\n }\n\n c.rawStream.connect(socket, c.connect.payload.udx.id, port, host)\n c.encryptedSocket.start(c.rawStream, { handshake: hs })\n }\n\n if (c.reusableSocket && payload.udx.reusableSocket) {\n c.dht._socketPool.routes.add(c.remotePublicKey, c.rawStream)\n }\n\n if (c.puncher) {\n c.puncher.onabort = noop\n c.puncher.destroy()\n }\n\n if (c.passiveConnectTimeout) {\n clearPassiveConnectTimeout(c)\n }\n\n c.rawStream = null\n }\n\n if (payload.relayThrough || c.relayThrough) {\n relayConnection(c, c.relayThrough, payload, hs)\n }\n\n if (c.serverSocket) {\n c.onsocket(c.serverSocket, c.serverAddress.port, c.serverAddress.host)\n return\n }\n\n if (!relayed) {\n c.onsocket(socket || c.dht.socket, address.port, address.host)\n }\n\n c.session.destroy()\n}\n\nasync function updateHolepunch(c, peerAddress, relayAddr, payload) {\n const holepunch = await c.dht._router.peerHolepunch(\n c.target,\n {\n id: c.connect.payload.holepunch.id,\n payload: c.payload.encrypt(payload),\n peerAddress,\n socket: c.puncher.socket,\n session: c.session\n },\n relayAddr\n )\n\n if (isDone(c)) return null\n\n const remotePayload = c.payload.decrypt(holepunch.payload)\n if (!remotePayload) {\n throw HOLEPUNCH_INVALID()\n }\n\n const { error, firewall, punching, addresses, remoteToken } = remotePayload\n\n if (error === ERROR.TRY_LATER && c.relayToken && payload.punching) {\n return {\n tryLater: true,\n ...holepunch,\n payload: remotePayload\n }\n }\n\n if (error !== ERROR.NONE) {\n throw REMOTE_ABORTED('Remote aborted with error code ' + error)\n }\n\n const echoed = !!(remoteToken && payload.token && b4a.equals(remoteToken, payload.token))\n\n c.puncher.updateRemote({\n punching,\n firewall,\n addresses,\n verified: echoed ? peerAddress.host : null\n })\n\n return {\n tryLater: false,\n ...holepunch,\n payload: remotePayload\n }\n}\n\nasync function probeRound(c, serverAddress, serverRelay, retry) {\n // Open a quick low ttl session against what we think is the server\n if (serverAddress) await c.puncher.openSession(serverAddress)\n\n if (isDone(c)) return null\n\n const reply = await updateHolepunch(c, serverRelay.peerAddress, serverRelay.relayAddress, {\n error: ERROR.NONE,\n firewall: c.puncher.nat.firewall,\n round: c.round++,\n connected: false,\n punching: false,\n addresses: c.puncher.nat.addresses,\n remoteAddress: serverAddress,\n token: null,\n remoteToken: null\n })\n\n if (isDone(c) || !reply) return null\n\n const { peerAddress } = reply\n const { address, token } = reply.payload\n\n c.puncher.nat.add(reply.to, reply.from)\n\n // Open another quick low ttl session against what the server says their address is,\n // if they haven't said they are random yet\n if (\n c.puncher.remoteFirewall < FIREWALL.RANDOM &&\n address &&\n address.host &&\n address.port &&\n diffAddress(address, serverAddress)\n ) {\n await c.puncher.openSession(address)\n if (isDone(c)) return null\n }\n\n // If the remote told us they didn't know their nat firewall yet, give them a chance to figure it out\n // They might say this to see if the \"fast mode\" punch comes through first.\n if (c.puncher.remoteFirewall === FIREWALL.UNKNOWN) {\n await c.sleeper.pause(1000)\n if (isDone(c)) return null\n }\n\n let stable = await c.puncher.analyze(false)\n if (isDone(c)) return null\n\n // If the socket seems unstable, try to make it stable by setting the \"allowReopen\" flag\n // Mostly relevant for mobile networks\n if (!stable) {\n stable = await c.puncher.analyze(true)\n if (isDone(c)) return null\n if (stable) return probeRound(c, serverAddress, serverRelay, false)\n }\n\n if ((c.puncher.remoteFirewall === FIREWALL.UNKNOWN || !token) && retry) {\n return probeRound(c, serverAddress, serverRelay, false)\n }\n\n if (\n c.puncher.remoteFirewall === FIREWALL.UNKNOWN ||\n c.puncher.nat.firewall === FIREWALL.UNKNOWN\n ) {\n await abort(c, serverRelay, HOLEPUNCH_PROBE_TIMEOUT())\n return null\n }\n\n if (c.puncher.remoteFirewall >= FIREWALL.RANDOM && c.puncher.nat.firewall >= FIREWALL.RANDOM) {\n await abort(c, serverRelay, HOLEPUNCH_DOUBLE_RANDOMIZED_NATS())\n return null\n }\n\n return { token, peerAddress }\n}\n\nasync function roundPunch(c, serverAddress, remoteToken, clientRelay, serverRelay, delayed) {\n // We are gossiping our final NAT status to the other peer now\n // so make sure we don't update our local view for now as that can make things weird\n c.puncher.nat.freeze()\n\n const isRandom =\n c.puncher.remoteFirewall >= FIREWALL.RANDOM || c.puncher.nat.firewall >= FIREWALL.RANDOM\n if (isRandom) {\n while (\n c.dht._randomPunches >= c.dht._randomPunchLimit ||\n Date.now() - c.dht._lastRandomPunch < c.dht._randomPunchInterval\n ) {\n // if no relay can help, bail\n if (!c.relayToken) throw HOLEPUNCH_ABORTED()\n\n if (!delayed) {\n delayed = true\n await updateHolepunch(c, serverAddress, clientRelay, {\n error: ERROR.NONE,\n firewall: c.puncher.nat.firewall,\n round: c.round++,\n connected: false,\n punching: false,\n addresses: c.puncher.nat.addresses,\n remoteAddress: null,\n token: c.payload.token(serverAddress),\n remoteToken\n })\n if (isDone(c)) return\n }\n\n await tryLater(c)\n if (isDone(c)) return\n }\n }\n\n // increment now, so we can commit to punching\n if (isRandom) c.dht._randomPunches++\n\n let reply\n\n try {\n // if delayed switch to the servers chosen relay - we validated anyway\n reply = await updateHolepunch(\n c,\n delayed ? serverRelay.peerAddress : serverAddress,\n delayed ? serverRelay.relayAddress : clientRelay,\n {\n error: ERROR.NONE,\n firewall: c.puncher.nat.firewall,\n round: c.round++,\n connected: false,\n punching: true,\n addresses: c.puncher.nat.addresses,\n remoteAddress: null,\n token: delayed ? null : c.payload.token(serverAddress),\n remoteToken\n }\n )\n } finally {\n // decrement as punch increments for us\n if (isRandom) c.dht._randomPunches--\n }\n\n if (isDone(c)) return\n if (!reply) return\n\n if (reply.tryLater) {\n await tryLater(c)\n if (isDone(c)) return\n return roundPunch(c, serverAddress, remoteToken, clientRelay, serverRelay, true)\n }\n\n if (!c.puncher.remoteHolepunching) {\n throw REMOTE_NOT_HOLEPUNCHING()\n }\n\n if (!(await c.puncher.punch())) {\n throw REMOTE_NOT_HOLEPUNCHABLE()\n }\n}\n\nasync function tryLater(c) {\n if (!c.relayToken) throw HOLEPUNCH_ABORTED()\n await c.sleeper.pause(10000 + Math.round(Math.random() * 10000))\n}\n\nfunction maybeDestroyEncryptedSocket(c, err) {\n if (isDone(c)) return\n if (c.encryptedSocket.rawStream) return\n if (c.relaySocket) return // waiting for the relay\n if (c.puncher && !c.puncher.destroyed) return // waiting for the puncher\n c.session.destroy()\n c.encryptedSocket.destroy(err)\n}\n\nasync function abort(c, { peerAddress, relayAddress }, err) {\n try {\n await updateHolepunch(c, peerAddress, relayAddress, {\n error: ERROR.ABORTED,\n firewall: FIREWALL.UNKNOWN,\n round: c.round++,\n connected: false,\n punching: false,\n addresses: null,\n remoteAddress: null,\n token: null,\n remoteToken: null\n })\n } catch (err) {\n safetyCatch(err)\n }\n\n destroyPuncher(c)\n maybeDestroyEncryptedSocket(c, err)\n}\n\nfunction relayConnection(c, relayThrough, payload, hs) {\n let isInitiator\n let publicKey\n let token\n\n if (payload.relayThrough) {\n isInitiator = false\n publicKey = payload.relayThrough.publicKey\n token = payload.relayThrough.token\n } else {\n isInitiator = true\n publicKey = relayThrough\n token = c.relayToken\n }\n\n c.relayToken = token\n c.relaySocket = c.dht.connect(publicKey)\n c.relaySocket.setKeepAlive(c.relayKeepAlive)\n c.relayClient = relay.Client.from(c.relaySocket, { id: c.relaySocket.publicKey })\n c.relayTimeout = setTimeout(onabort, 15000, null)\n\n c.relayClient.pair(isInitiator, token, c.rawStream).on('error', onabort).on('data', ondata)\n\n function ondata(remoteId) {\n if (c.relayTimeout) clearRelayTimeout(c)\n if (c.rawStream === null) {\n onabort(null)\n return\n }\n\n c.relayPaired = true\n\n const { remotePort, remoteHost, socket } = c.relaySocket.rawStream\n\n c.rawStream\n .on('close', () => destroyRelayConnection(c))\n .connect(socket, remoteId, remotePort, remoteHost)\n\n c.encryptedSocket.start(c.rawStream, { handshake: hs })\n }\n\n function onabort(err) {\n destroyRelayConnection(c)\n maybeDestroyEncryptedSocket(c, err || RELAY_ABORTED())\n }\n}\n\nfunction clearPassiveConnectTimeout(c) {\n clearTimeout(c.passiveConnectTimeout)\n c.passiveConnectTimeout = null\n}\n\nfunction destroyPuncher(c) {\n if (c.puncher) c.puncher.destroy()\n c.session.destroy()\n}\n\nfunction pickServerRelay(relays, clientRelay) {\n for (const r of relays) {\n if (!diffAddress(r.relayAddress, clientRelay)) return r\n }\n return relays[0]\n}\n\nfunction diffAddress(a, b) {\n return a.host !== b.host || a.port !== b.port\n}\n\nfunction defaultCreateHandshake(keyPair, remotePublicKey) {\n return new NoiseWrap(keyPair, remotePublicKey)\n}\n\nfunction defaultCreateSecretStream(isInitiator, rawStream, opts) {\n return new NoiseSecretStream(isInitiator, rawStream, opts)\n}\n\nfunction onlyNonReserved(addr) {\n return !isReserved(addr.host)\n}\n\nfunction isRelay(relaySocket, socket, port, host) {\n const stream = relaySocket.rawStream\n if (!stream) return false\n if (stream.socket !== socket) return false\n return port === stream.remotePort && host === stream.remoteHost\n}\n\nfunction selectRelay(relayThrough) {\n if (typeof relayThrough === 'function') relayThrough = relayThrough()\n if (relayThrough === null) return null\n if (Array.isArray(relayThrough))\n return relayThrough[Math.floor(Math.random() * relayThrough.length)]\n return relayThrough\n}\n\nfunction isRelayAddress(relayAddresses, data) {\n for (const node of relayAddresses) {\n if (node.host === data.from.host && node.port === data.from.port) return true\n }\n\n return false\n}\n\nfunction noop() {}\nconst EventEmitter = require('events')\nconst b4a = require('b4a')\nconst errors = require('./errors')\n\nmodule.exports = class ConnectionPool extends EventEmitter {\n constructor(dht) {\n super()\n\n this._dht = dht\n this._servers = new Map()\n this._connecting = new Map()\n this._connections = new Map()\n }\n\n _attachServer(server) {\n const keyString = b4a.toString(server.publicKey, 'hex')\n\n this._servers.set(keyString, server)\n\n server\n .on('close', () => {\n this._servers.delete(keyString)\n })\n .on('connection', (socket) => {\n this._attachStream(socket, true)\n })\n }\n\n _attachStream(stream, opened) {\n const existing = this.get(stream.remotePublicKey)\n\n if (existing) {\n const keepNew =\n stream.isInitiator === existing.isInitiator ||\n b4a.compare(stream.publicKey, stream.remotePublicKey) > 0\n\n if (keepNew) {\n let closed = false\n\n const onclose = () => {\n closed = true\n }\n\n existing\n .on('error', noop)\n .on('close', () => {\n if (closed) return\n\n stream.off('error', noop).off('close', onclose)\n\n this._attachStream(stream, opened)\n })\n .destroy(errors.DUPLICATE_CONNECTION())\n\n stream.on('error', noop).on('close', onclose)\n } else {\n stream.on('error', noop).destroy(errors.DUPLICATE_CONNECTION())\n }\n\n return\n }\n\n const session = new ConnectionRef(this, stream)\n\n const keyString = b4a.toString(stream.remotePublicKey, 'hex')\n\n if (opened) {\n this._connections.set(keyString, session)\n\n stream.on('close', () => {\n this._connections.delete(keyString)\n })\n\n this.emit('connection', stream, session)\n } else {\n this._connecting.set(keyString, session)\n\n stream\n .on('error', noop)\n .on('close', () => {\n if (opened) this._connections.delete(keyString)\n else this._connecting.delete(keyString)\n })\n .on('open', () => {\n opened = true\n\n this._connecting.delete(keyString)\n this._connections.set(keyString, session)\n\n stream.off('error', noop)\n\n this.emit('connection', stream, session)\n })\n }\n\n return session\n }\n\n get connecting() {\n return this._connecting.size\n }\n\n get connections() {\n return this._connections.values()\n }\n\n has(publicKey) {\n const keyString = b4a.toString(publicKey, 'hex')\n\n return this._connections.has(keyString) || this._connecting.has(keyString)\n }\n\n get(publicKey) {\n const keyString = b4a.toString(publicKey, 'hex')\n\n const existing = this._connections.get(keyString) || this._connecting.get(keyString)\n\n return existing?._stream || null\n }\n}\n\nclass ConnectionRef {\n constructor(pool, stream) {\n this._pool = pool\n this._stream = stream\n this._refs = 0\n }\n\n active() {\n this._refs++\n }\n\n inactive() {\n this._refs--\n }\n\n release() {\n this._stream.destroy()\n }\n}\n\nfunction noop() {}\nconst crypto = require('hypercore-crypto')\n\nconst COMMANDS = (exports.COMMANDS = {\n PEER_HANDSHAKE: 0,\n PEER_HOLEPUNCH: 1,\n FIND_PEER: 2,\n LOOKUP: 3,\n ANNOUNCE: 4,\n UNANNOUNCE: 5,\n MUTABLE_PUT: 6,\n MUTABLE_GET: 7,\n IMMUTABLE_PUT: 8,\n IMMUTABLE_GET: 9,\n PLUGIN: 10\n})\n\nexports.BOOTSTRAP_NODES = [\n '88.99.3.86@node1.hyperdht.org:49737',\n '142.93.90.113@node2.hyperdht.org:49737',\n '138.68.147.8@node3.hyperdht.org:49737'\n]\n\nexports.FIREWALL = {\n UNKNOWN: 0,\n OPEN: 1,\n CONSISTENT: 2,\n RANDOM: 3\n}\n\nexports.ERROR = {\n // noise / connection related\n NONE: 0,\n ABORTED: 1,\n VERSION_MISMATCH: 2,\n TRY_LATER: 3,\n // dht related\n SEQ_REUSED: 16,\n SEQ_TOO_LOW: 17\n}\n\nconst [\n NS_ANNOUNCE,\n NS_UNANNOUNCE,\n NS_MUTABLE_PUT,\n NS_PEER_HANDSHAKE,\n NS_PEER_HOLEPUNCH,\n NS_PLUGIN\n] = crypto.namespace('hyperswarm/dht', [\n COMMANDS.ANNOUNCE,\n COMMANDS.UNANNOUNCE,\n COMMANDS.MUTABLE_PUT,\n COMMANDS.PEER_HANDSHAKE,\n COMMANDS.PEER_HOLEPUNCH,\n COMMANDS.PLUGIN\n])\n\nexports.NS = {\n ANNOUNCE: NS_ANNOUNCE,\n UNANNOUNCE: NS_UNANNOUNCE,\n MUTABLE_PUT: NS_MUTABLE_PUT,\n PEER_HANDSHAKE: NS_PEER_HANDSHAKE,\n PEER_HOLEPUNCH: NS_PEER_HOLEPUNCH,\n PLUGIN: NS_PLUGIN\n}\nconst sodium = require('sodium-universal')\nconst b4a = require('b4a')\n\nfunction hash(data) {\n const out = b4a.allocUnsafe(32)\n sodium.crypto_generichash(out, data)\n return out\n}\n\nfunction unslabbedHash(data) {\n const out = b4a.allocUnsafeSlow(32)\n sodium.crypto_generichash(out, data)\n return out\n}\n\nfunction createKeyPair(seed) {\n const publicKey = b4a.alloc(32)\n const secretKey = b4a.alloc(64)\n if (seed) sodium.crypto_sign_seed_keypair(publicKey, secretKey, seed)\n else sodium.crypto_sign_keypair(publicKey, secretKey)\n return { publicKey, secretKey }\n}\n\nmodule.exports = {\n hash,\n unslabbedHash,\n createKeyPair\n}\nconst b4a = require('b4a')\nconst cenc = require('compact-encoding')\n\nfunction encodeUnslab(enc, m) {\n // Faster than unslab(c.encode(enc, data)) because it avoids the mem copy.\n // Makes sense to put in compact-encoding when we need it in other modules too\n const state = cenc.state()\n enc.preencode(state, m)\n state.buffer = b4a.allocUnsafeSlow(state.end)\n enc.encode(state, m)\n return state.buffer\n}\n\nmodule.exports = {\n encodeUnslab\n}\nmodule.exports = class DHTError extends Error {\n constructor(msg, code, fn = DHTError) {\n super(`${code}: ${msg}`)\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n get name() {\n return 'DHTError'\n }\n\n static BAD_HANDSHAKE_REPLY(msg = 'Bad handshake reply') {\n return new DHTError(msg, 'BAD_HANDSHAKE_REPLY', DHTError.BAD_HANDSHAKE_REPLY)\n }\n\n static BAD_HOLEPUNCH_REPLY(msg = 'Bad holepunch reply') {\n return new DHTError(msg, 'BAD_HOLEPUNCH_REPLY', DHTError.BAD_HOLEPUNCH_REPLY)\n }\n\n static HOLEPUNCH_ABORTED(msg = 'Holepunch aborted') {\n return new DHTError(msg, 'HOLEPUNCH_ABORTED', DHTError.HOLEPUNCH_ABORTED)\n }\n\n static HOLEPUNCH_INVALID(msg = 'Invalid holepunch payload') {\n return new DHTError(msg, 'HOLEPUNCH_INVALID', DHTError.HOLEPUNCH_INVALID)\n }\n\n static HOLEPUNCH_PROBE_TIMEOUT(msg = 'Holepunching probe did not finish in time') {\n return new DHTError(msg, 'HOLEPUNCH_PROBE_TIMEOUT', DHTError.HOLEPUNCH_PROBE_TIMEOUT)\n }\n\n static HOLEPUNCH_DOUBLE_RANDOMIZED_NATS(msg = 'Both remote and local NATs are randomized') {\n return new DHTError(\n msg,\n 'HOLEPUNCH_DOUBLE_RANDOMIZED_NATS',\n DHTError.HOLEPUNCH_DOUBLE_RANDOMIZED_NATS\n )\n }\n\n static CANNOT_HOLEPUNCH(msg = 'Cannot holepunch to remote') {\n return new DHTError(msg, 'CANNOT_HOLEPUNCH', DHTError.CANNOT_HOLEPUNCH)\n }\n\n static REMOTE_NOT_HOLEPUNCHING(msg = 'Remote is not holepunching') {\n return new DHTError(msg, 'REMOTE_NOT_HOLEPUNCHING', DHTError.REMOTE_NOT_HOLEPUNCHING)\n }\n\n static REMOTE_NOT_HOLEPUNCHABLE(msg = 'Remote is not holepunchable') {\n return new DHTError(msg, 'REMOTE_NOT_HOLEPUNCHABLE', DHTError.REMOTE_NOT_HOLEPUNCHABLE)\n }\n\n static REMOTE_ABORTED(msg = 'Remote aborted') {\n return new DHTError(msg, 'REMOTE_ABORTED', DHTError.REMOTE_ABORTED)\n }\n\n static HANDSHAKE_UNFINISHED(msg = 'Handshake did not finish') {\n return new DHTError(msg, 'HANDSHAKE_UNFINISHED', DHTError.HANDSHAKE_UNFINISHED)\n }\n\n static HANDSHAKE_INVALID(msg = 'Received invalid handshake') {\n return new DHTError(msg, 'HANDSHAKE_INVALID', DHTError.HANDSHAKE_INVALID)\n }\n\n static ALREADY_LISTENING(msg = 'Already listening') {\n return new DHTError(msg, 'ALREADY_LISTENING', DHTError.ALREADY_LISTENING)\n }\n\n static KEYPAIR_ALREADY_USED(msg = 'Keypair already used') {\n return new DHTError(msg, 'KEYPAIR_ALREADY_USED', DHTError.KEYPAIR_ALREADY_USED)\n }\n\n static NODE_DESTROYED(msg = 'Node destroyed') {\n return new DHTError(msg, 'NODE_DESTROYED', DHTError.NODE_DESTROYED)\n }\n\n static PEER_CONNECTION_FAILED(msg = 'Could not connect to peer') {\n return new DHTError(msg, 'PEER_CONNECTION_FAILED', DHTError.PEER_CONNECTION_FAILED)\n }\n\n static PEER_NOT_FOUND(msg = 'Peer not found') {\n return new DHTError(msg, 'PEER_NOT_FOUND', DHTError.PEER_NOT_FOUND)\n }\n\n static STREAM_NOT_CONNECTED(msg = 'Stream is not connected') {\n return new DHTError(msg, 'STREAM_NOT_CONNECTED', DHTError.STREAM_NOT_CONNECTED)\n }\n\n static SERVER_INCOMPATIBLE(msg = 'Server is using an incompatible version') {\n return new DHTError(msg, 'SERVER_INCOMPATIBLE', DHTError.SERVER_INCOMPATIBLE)\n }\n\n static SERVER_ERROR(msg = 'Server returned an error') {\n return new DHTError(msg, 'SERVER_ERROR', DHTError.SERVER_ERROR)\n }\n\n static DUPLICATE_CONNECTION(msg = 'Duplicate connection') {\n return new DHTError(msg, 'DUPLICATE_CONNECTION', DHTError.DUPLICATE_CONNECTION)\n }\n\n static RELAY_ABORTED(msg = 'Relay aborted') {\n return new DHTError(msg, 'RELAY_ABORTED', DHTError.RELAY_ABORTED)\n }\n\n static SUSPENDED(msg = 'Suspended') {\n return new DHTError(msg, 'SUSPENDED', DHTError.SUSPENDED)\n }\n}\nconst b4a = require('b4a')\nconst Nat = require('./nat')\nconst Sleeper = require('./sleeper')\nconst { FIREWALL } = require('./constants')\n\nconst BIRTHDAY_SOCKETS = 256\nconst HOLEPUNCH = b4a.from([0])\nconst HOLEPUNCH_TTL = 5\nconst DEFAULT_TTL = 64\nconst MAX_REOPENS = 3\n\nmodule.exports = class Holepuncher {\n constructor(dht, session, isInitiator, remoteFirewall = FIREWALL.UNKNOWN) {\n const holder = dht._socketPool.acquire()\n\n this.dht = dht\n this.session = session\n\n this.nat = new Nat(dht, session, holder.socket)\n this.nat.autoSample()\n\n this.isInitiator = isInitiator\n\n // events\n this.onconnect = noop\n this.onabort = noop\n\n this.punching = false\n this.connected = false\n this.destroyed = false\n this.randomized = false\n\n // track remote state\n this.remoteFirewall = remoteFirewall\n this.remoteAddresses = []\n this.remoteHolepunching = false\n\n this._sleeper = new Sleeper()\n this._reopening = null\n this._timeout = null\n this._punching = null\n this._allHolders = []\n this._holder = this._addRef(holder)\n }\n\n get socket() {\n return this._holder.socket\n }\n\n updateRemote({ punching, firewall, addresses, verified }) {\n const remoteAddresses = []\n\n if (addresses) {\n for (const addr of addresses) {\n remoteAddresses.push({\n host: addr.host,\n port: addr.port,\n verified: verified === addr.host || this._isVerified(addr.host)\n })\n }\n }\n\n this.remoteFirewall = firewall\n this.remoteAddresses = remoteAddresses\n this.remoteHolepunching = punching\n }\n\n _isVerified(host) {\n for (const addr of this.remoteAddresses) {\n if (addr.verified && addr.host === host) {\n return true\n }\n }\n return false\n }\n\n ping(addr, socket = this._holder.socket) {\n return holepunch(socket, addr, false)\n }\n\n openSession(addr, socket = this._holder.socket) {\n return holepunch(socket, addr, true)\n }\n\n async analyze(allowReopen) {\n await this.nat.analyzing\n if (this._unstable()) {\n if (!allowReopen) return false\n if (!this._reopening) this._reopening = this._reopen()\n return this._reopening\n }\n return true\n }\n\n _unstable() {\n // TODO!!: We need an additional heuristic here... If we were NOT random in the past we should also do this.\n const firewall = this.nat.firewall\n return (\n (this.remoteFirewall >= FIREWALL.RANDOM && firewall >= FIREWALL.RANDOM) ||\n firewall === FIREWALL.UNKNOWN\n )\n }\n\n _reset() {\n const prev = this._holder\n\n this._allHolders.pop()\n this._holder = this._addRef(this.dht._socketPool.acquire())\n\n prev.release()\n this.nat.destroy()\n\n this.nat = new Nat(this.dht, this.session, this._holder.socket)\n // TODO: maybe make auto sampling configurable somehow?\n this.nat.autoSample()\n }\n\n _addRef(ref) {\n this._allHolders.push(ref)\n ref.onholepunchmessage = (msg, rinfo) => this._onholepunchmessage(msg, rinfo, ref)\n return ref\n }\n\n _onholepunchmessage(_, addr, ref) {\n if (!this.isInitiator) {\n // TODO: we don't need this if we had a way to connect a socket to many hosts\n holepunch(ref.socket, addr, false) // never fails\n return\n }\n\n if (this.connected) return\n\n this.connected = true\n this.punching = false\n\n for (const r of this._allHolders) {\n if (r === ref) continue\n r.release()\n }\n\n this._allHolders[0] = ref\n while (this._allHolders.length > 1) this._allHolders.pop()\n\n this._decrementRandomized()\n this.onconnect(ref.socket, addr.port, addr.host)\n }\n\n _done() {\n return this.destroyed || this.connected\n }\n\n async _reopen() {\n for (let i = 0; this._unstable() && i < MAX_REOPENS && !this._done() && !this.punching; i++) {\n this._reset()\n await this.nat.analyzing\n }\n\n return coerceFirewall(this.nat.firewall) === FIREWALL.CONSISTENT\n }\n\n punch() {\n if (!this._punching) this._punching = this._punch()\n return this._punching\n }\n\n async _punch() {\n if (this._done() || !this.remoteAddresses.length) return false\n\n this.punching = true\n\n // Coerce into consistency for now. Obvs we could make this this more efficient if we use that info\n // but that's seldomly used since those will just use tcp most of the time.\n\n const local = coerceFirewall(this.nat.firewall)\n const remote = coerceFirewall(this.remoteFirewall)\n\n // Note that most of these async functions are meant to run in the background\n // which is why we don't await them here and why they are not allowed to throw\n\n let remoteVerifiedAddress = null\n for (const addr of this.remoteAddresses) {\n if (addr.verified) {\n remoteVerifiedAddress = addr\n break\n }\n }\n\n if (local === FIREWALL.CONSISTENT && remote === FIREWALL.CONSISTENT) {\n this.dht.stats.punches.consistent++\n this._consistentProbe()\n return true\n }\n\n if (!remoteVerifiedAddress) return false\n\n if (local === FIREWALL.CONSISTENT && remote >= FIREWALL.RANDOM) {\n this.dht.stats.punches.random++\n this._incrementRandomized()\n this._randomProbes(remoteVerifiedAddress)\n return true\n }\n\n if (local >= FIREWALL.RANDOM && remote === FIREWALL.CONSISTENT) {\n this.dht.stats.punches.random++\n this._incrementRandomized()\n await this._openBirthdaySockets(remoteVerifiedAddress)\n if (this.punching) this._keepAliveRandomNat(remoteVerifiedAddress)\n return true\n }\n\n return false\n }\n\n // Note that this never throws so it is safe to run in the background\n async _consistentProbe() {\n // Here we do the sleep first because the \"fast open\" mode in the server just fired a ping\n if (!this.isInitiator) await this._sleeper.pause(1000)\n\n let tries = 0\n\n while (this.punching && tries++ < 10) {\n for (const addr of this.remoteAddresses) {\n // only try unverified addresses every 4 ticks\n if (!addr.verified && (tries & 3) !== 0) continue\n await holepunch(this._holder.socket, addr, false)\n }\n if (this.punching) await this._sleeper.pause(1000)\n }\n\n this._autoDestroy()\n }\n\n // Note that this never throws so it is safe to run in the background\n async _randomProbes(remoteAddr) {\n let tries = 1750 // ~35s\n\n while (this.punching && tries-- > 0) {\n const addr = { host: remoteAddr.host, port: randomPort() }\n await holepunch(this._holder.socket, addr, false)\n if (this.punching) await this._sleeper.pause(20)\n }\n\n this._autoDestroy()\n }\n\n // Note that this never throws so it is safe to run in the background\n async _keepAliveRandomNat(remoteAddr) {\n let i = 0\n let lowTTLRounds = 1\n\n // TODO: experiment with this here. We just bursted all the messages in\n // openOtherSockets to ensure the sockets are open, so it's potentially\n // a good idea to slow down for a bit.\n await this._sleeper.pause(100)\n\n let tries = 1750 // ~35s\n\n while (this.punching && tries-- > 0) {\n if (i === this._allHolders.length) {\n i = 0\n if (lowTTLRounds > 0) lowTTLRounds--\n }\n\n await holepunch(this._allHolders[i++].socket, remoteAddr, lowTTLRounds > 0)\n if (this.punching) await this._sleeper.pause(20)\n }\n\n this._autoDestroy()\n }\n\n async _openBirthdaySockets(remoteAddr) {\n while (this.punching && this._allHolders.length < BIRTHDAY_SOCKETS) {\n const ref = this._addRef(this.dht._socketPool.acquire())\n await holepunch(ref.socket, remoteAddr, HOLEPUNCH_TTL)\n }\n }\n\n _autoDestroy() {\n if (!this.connected) this.destroy()\n }\n\n _incrementRandomized() {\n if (!this.randomized) {\n this.randomized = true\n this.dht._randomPunches++\n }\n }\n\n _decrementRandomized() {\n if (this.randomized) {\n this.dht._lastRandomPunch = Date.now()\n this.randomized = false\n this.dht._randomPunches--\n }\n }\n\n destroy() {\n if (this.destroyed) return\n this.destroyed = true\n this.punching = false\n\n for (const ref of this._allHolders) ref.release()\n this._allHolders = []\n this.nat.destroy()\n\n if (!this.connected) {\n this._decrementRandomized()\n this.onabort()\n }\n }\n\n static ping(socket, addr) {\n return holepunch(socket, addr, false)\n }\n\n static localAddresses(socket) {\n return localAddresses(socket)\n }\n\n static matchAddress(myAddresses, externalAddresses) {\n return matchAddress(myAddresses, externalAddresses)\n }\n}\n\nfunction holepunch(socket, addr, lowTTL) {\n return socket.send(HOLEPUNCH, addr.port, addr.host, lowTTL ? HOLEPUNCH_TTL : DEFAULT_TTL)\n}\n\nfunction randomPort() {\n return (1000 + Math.random() * 64536) | 0\n}\n\nfunction coerceFirewall(fw) {\n return fw === FIREWALL.OPEN ? FIREWALL.CONSISTENT : fw\n}\n\nfunction localAddresses(socket) {\n const addrs = []\n const { host, port } = socket.address()\n\n if (host === '127.0.0.1') return [{ host, port }]\n\n for (const n of socket.udx.networkInterfaces()) {\n if (n.family !== 4 || n.internal) continue\n\n addrs.push({ host: n.host, port })\n }\n\n if (addrs.length === 0) {\n addrs.push({ host: '127.0.0.1', port })\n }\n\n return addrs\n}\n\nfunction matchAddress(localAddresses, remoteLocalAddresses) {\n if (remoteLocalAddresses.length === 0) return null\n\n let best = { segment: 1, addr: null }\n\n for (const localAddress of localAddresses) {\n // => 192.168.122.238\n const a = localAddress.host.split('.')\n\n for (const remoteAddress of remoteLocalAddresses) {\n // => 192.168.0.23\n // => 192.168.122.1\n const b = remoteAddress.host.split('.')\n\n // Matches 192.*.*.*\n if (a[0] === b[0]) {\n if (best.segment === 1) best = { segment: 2, addr: remoteAddress }\n\n // Matches 192.168.*.*\n if (a[1] === b[1]) {\n if (best.segment === 2) best = { segment: 3, addr: remoteAddress }\n\n // Matches 192.168.122.*\n if (a[2] === b[2]) return remoteAddress\n }\n }\n }\n }\n\n return best.addr\n}\n\nfunction noop() {}\nconst c = require('compact-encoding')\n\nconst ipv4 = {\n ...c.ipv4Address,\n decode(state) {\n const ip = c.ipv4Address.decode(state)\n return {\n host: ip.host,\n port: ip.port\n }\n }\n}\n\nconst ipv4Array = c.array(ipv4)\n\nconst ipv6 = {\n ...c.ipv6Address,\n decode(state) {\n const ip = c.ipv6Address.decode(state)\n return {\n host: ip.host,\n port: ip.port\n }\n }\n}\n\nconst ipv6Array = c.array(ipv6)\n\nexports.handshake = {\n preencode(state, m) {\n state.end += 1 + 1 + (m.peerAddress ? 6 : 0) + (m.relayAddress ? 6 : 0)\n c.buffer.preencode(state, m.noise)\n },\n encode(state, m) {\n const flags = (m.peerAddress ? 1 : 0) | (m.relayAddress ? 2 : 0)\n\n c.uint.encode(state, flags)\n c.uint.encode(state, m.mode)\n c.buffer.encode(state, m.noise)\n\n if (m.peerAddress) ipv4.encode(state, m.peerAddress)\n if (m.relayAddress) ipv4.encode(state, m.relayAddress)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n\n return {\n mode: c.uint.decode(state),\n noise: c.buffer.decode(state),\n peerAddress: flags & 1 ? ipv4.decode(state) : null,\n relayAddress: flags & 2 ? ipv4.decode(state) : null\n }\n }\n}\n\nconst relayInfo = {\n preencode(state, m) {\n state.end += 12\n },\n encode(state, m) {\n ipv4.encode(state, m.relayAddress)\n ipv4.encode(state, m.peerAddress)\n },\n decode(state) {\n return {\n relayAddress: ipv4.decode(state),\n peerAddress: ipv4.decode(state)\n }\n }\n}\n\nconst relayInfoArray = c.array(relayInfo)\n\nconst holepunchInfo = {\n preencode(state, m) {\n c.uint.preencode(state, m.id)\n relayInfoArray.preencode(state, m.relays)\n },\n encode(state, m) {\n c.uint.encode(state, m.id)\n relayInfoArray.encode(state, m.relays)\n },\n decode(state) {\n return {\n id: c.uint.decode(state),\n relays: relayInfoArray.decode(state)\n }\n }\n}\n\nconst udxInfo = {\n preencode(state, m) {\n state.end += 2 // version + features\n c.uint.preencode(state, m.id)\n c.uint.preencode(state, m.seq)\n },\n encode(state, m) {\n c.uint.encode(state, 1)\n c.uint.encode(state, m.reusableSocket ? 1 : 0)\n c.uint.encode(state, m.id)\n c.uint.encode(state, m.seq)\n },\n decode(state) {\n const version = c.uint.decode(state)\n const features = c.uint.decode(state)\n\n return {\n version,\n reusableSocket: (features & 1) !== 0,\n id: c.uint.decode(state),\n seq: c.uint.decode(state)\n }\n }\n}\n\nconst secretStreamInfo = {\n preencode(state, m) {\n c.uint.preencode(state, 1)\n },\n encode(state, m) {\n c.uint.encode(state, 1)\n },\n decode(state) {\n return {\n version: c.uint.decode(state)\n }\n }\n}\n\nconst relayThroughInfo = {\n preencode(state, m) {\n c.uint.preencode(state, 1) // version\n c.uint.preencode(state, 0) // flags\n c.fixed32.preencode(state, m.publicKey)\n c.fixed32.preencode(state, m.token)\n },\n encode(state, m) {\n c.uint.encode(state, 1)\n c.uint.encode(state, 0)\n c.fixed32.encode(state, m.publicKey)\n c.fixed32.encode(state, m.token)\n },\n decode(state) {\n const version = c.uint.decode(state)\n c.uint.decode(state)\n\n return {\n version,\n publicKey: c.fixed32.decode(state),\n token: c.fixed32.decode(state)\n }\n }\n}\n\nexports.noisePayload = {\n preencode(state, m) {\n state.end += 4 // version + flags + error + firewall\n if (m.holepunch) holepunchInfo.preencode(state, m.holepunch)\n if (m.addresses4 && m.addresses4.length) ipv4Array.preencode(state, m.addresses4)\n if (m.addresses6 && m.addresses6.length) ipv6Array.preencode(state, m.addresses6)\n if (m.udx) udxInfo.preencode(state, m.udx)\n if (m.secretStream) secretStreamInfo.preencode(state, m.secretStream)\n if (m.relayThrough) relayThroughInfo.preencode(state, m.relayThrough)\n if (m.relayAddresses) ipv4Array.preencode(state, m.relayAddresses)\n },\n encode(state, m) {\n let flags = 0\n\n if (m.holepunch) flags |= 1\n if (m.addresses4 && m.addresses4.length) flags |= 2\n if (m.addresses6 && m.addresses6.length) flags |= 4\n if (m.udx) flags |= 8\n if (m.secretStream) flags |= 16\n if (m.relayThrough) flags |= 32\n if (m.relayAddresses) flags |= 64\n\n c.uint.encode(state, 1) // version\n c.uint.encode(state, flags)\n c.uint.encode(state, m.error)\n c.uint.encode(state, m.firewall)\n\n if (m.holepunch) holepunchInfo.encode(state, m.holepunch)\n if (m.addresses4 && m.addresses4.length) ipv4Array.encode(state, m.addresses4)\n if (m.addresses6 && m.addresses6.length) ipv6Array.encode(state, m.addresses6)\n if (m.udx) udxInfo.encode(state, m.udx)\n if (m.secretStream) secretStreamInfo.encode(state, m.secretStream)\n if (m.relayThrough) relayThroughInfo.encode(state, m.relayThrough)\n if (m.relayAddresses) ipv4Array.encode(state, m.relayAddresses)\n },\n decode(state) {\n const version = c.uint.decode(state)\n\n if (version !== 1) {\n // Do not attempt to decode but return this back to the user so they can\n // actually handle it\n return {\n version,\n error: 0,\n firewall: 0,\n holepunch: null,\n addresses4: [],\n addresses6: [],\n udx: null,\n secretStream: null,\n relayThrough: null,\n relayAddresses: null\n }\n }\n\n const flags = c.uint.decode(state)\n\n return {\n version,\n error: c.uint.decode(state),\n firewall: c.uint.decode(state),\n holepunch: (flags & 1) !== 0 ? holepunchInfo.decode(state) : null,\n addresses4: (flags & 2) !== 0 ? ipv4Array.decode(state) : [],\n addresses6: (flags & 4) !== 0 ? ipv6Array.decode(state) : [],\n udx: (flags & 8) !== 0 ? udxInfo.decode(state) : null,\n secretStream: (flags & 16) !== 0 ? secretStreamInfo.decode(state) : null,\n relayThrough: (flags & 32) !== 0 ? relayThroughInfo.decode(state) : null,\n relayAddresses: (flags & 64) !== 0 ? ipv4Array.decode(state) : null\n }\n }\n}\n\nexports.holepunch = {\n preencode(state, m) {\n state.end += 2\n c.uint.preencode(state, m.id)\n c.buffer.preencode(state, m.payload)\n if (m.peerAddress) ipv4.preencode(state, m.peerAddress)\n },\n encode(state, m) {\n const flags = m.peerAddress ? 1 : 0\n c.uint.encode(state, flags)\n c.uint.encode(state, m.mode)\n c.uint.encode(state, m.id)\n c.buffer.encode(state, m.payload)\n if (m.peerAddress) ipv4.encode(state, m.peerAddress)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n return {\n mode: c.uint.decode(state),\n id: c.uint.decode(state),\n payload: c.buffer.decode(state),\n peerAddress: flags & 1 ? ipv4.decode(state) : null\n }\n }\n}\n\nexports.holepunchPayload = {\n preencode(state, m) {\n state.end += 4 // flags + error + firewall + round\n if (m.addresses) ipv4Array.preencode(state, m.addresses)\n if (m.remoteAddress) state.end += 6\n if (m.token) state.end += 32\n if (m.remoteToken) state.end += 32\n },\n encode(state, m) {\n const flags =\n (m.connected ? 1 : 0) |\n (m.punching ? 2 : 0) |\n (m.addresses ? 4 : 0) |\n (m.remoteAddress ? 8 : 0) |\n (m.token ? 16 : 0) |\n (m.remoteToken ? 32 : 0)\n\n c.uint.encode(state, flags)\n c.uint.encode(state, m.error)\n c.uint.encode(state, m.firewall)\n c.uint.encode(state, m.round)\n\n if (m.addresses) ipv4Array.encode(state, m.addresses)\n if (m.remoteAddress) ipv4.encode(state, m.remoteAddress)\n if (m.token) c.fixed32.encode(state, m.token)\n if (m.remoteToken) c.fixed32.encode(state, m.remoteToken)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n\n return {\n error: c.uint.decode(state),\n firewall: c.uint.decode(state),\n round: c.uint.decode(state),\n connected: (flags & 1) !== 0,\n punching: (flags & 2) !== 0,\n addresses: (flags & 4) !== 0 ? ipv4Array.decode(state) : null,\n remoteAddress: (flags & 8) !== 0 ? ipv4.decode(state) : null,\n token: (flags & 16) !== 0 ? c.fixed32.decode(state) : null,\n remoteToken: (flags & 32) !== 0 ? c.fixed32.decode(state) : null\n }\n }\n}\n\nconst peer = (exports.peer = {\n preencode(state, m) {\n state.end += 32\n ipv4Array.preencode(state, m.relayAddresses)\n },\n encode(state, m) {\n c.fixed32.encode(state, m.publicKey)\n ipv4Array.encode(state, m.relayAddresses)\n },\n decode(state) {\n return {\n publicKey: c.fixed32.decode(state),\n relayAddresses: ipv4Array.decode(state)\n }\n }\n})\n\nconst peers = (exports.peers = c.array(peer))\n\nconst rawPeers = c.array(c.raw)\n\nexports.lookupRawReply = {\n preencode(state, m) {\n rawPeers.preencode(state, m.peers)\n c.uint.preencode(state, m.bump)\n },\n encode(state, m) {\n rawPeers.encode(state, m.peers)\n c.uint.encode(state, m.bump)\n },\n decode(state) {\n return {\n peers: peers.decode(state),\n bump: state.start < state.end ? c.uint.decode(state) : 0\n }\n }\n}\n\nexports.announce = {\n preencode(state, m) {\n state.end++ // flags\n if (m.peer) peer.preencode(state, m.peer)\n if (m.refresh) state.end += 32\n if (m.signature) state.end += 64\n if (m.bump) c.uint.preencode(state, m.bump)\n },\n encode(state, m) {\n const flags = (m.peer ? 1 : 0) | (m.refresh ? 2 : 0) | (m.signature ? 4 : 0) | (m.bump ? 8 : 0)\n c.uint.encode(state, flags)\n if (m.peer) peer.encode(state, m.peer)\n if (m.refresh) c.fixed32.encode(state, m.refresh)\n if (m.signature) c.fixed64.encode(state, m.signature)\n if (m.bump) c.uint.encode(state, m.bump)\n },\n decode(state) {\n const flags = c.uint.decode(state)\n\n return {\n peer: (flags & 1) !== 0 ? peer.decode(state) : null,\n refresh: (flags & 2) !== 0 ? c.fixed32.decode(state) : null,\n signature: (flags & 4) !== 0 ? c.fixed64.decode(state) : null,\n bump: (flags & 8) !== 0 ? c.uint.decode(state) : 0\n }\n }\n}\n\nexports.mutableSignable = {\n preencode(state, m) {\n c.uint.preencode(state, m.seq)\n c.buffer.preencode(state, m.value)\n },\n encode(state, m) {\n c.uint.encode(state, m.seq)\n c.buffer.encode(state, m.value)\n },\n decode(state) {\n return {\n seq: c.uint.decode(state),\n value: c.buffer.decode(state)\n }\n }\n}\n\nexports.mutablePutRequest = {\n preencode(state, m) {\n c.fixed32.preencode(state, m.publicKey)\n c.uint.preencode(state, m.seq)\n c.buffer.preencode(state, m.value)\n c.fixed64.preencode(state, m.signature)\n },\n encode(state, m) {\n c.fixed32.encode(state, m.publicKey)\n c.uint.encode(state, m.seq)\n c.buffer.encode(state, m.value)\n c.fixed64.encode(state, m.signature)\n },\n decode(state) {\n return {\n publicKey: c.fixed32.decode(state),\n seq: c.uint.decode(state),\n value: c.buffer.decode(state),\n signature: c.fixed64.decode(state)\n }\n }\n}\n\nexports.mutableGetResponse = {\n preencode(state, m) {\n c.uint.preencode(state, m.seq)\n c.buffer.preencode(state, m.value)\n c.fixed64.preencode(state, m.signature)\n },\n encode(state, m) {\n c.uint.encode(state, m.seq)\n c.buffer.encode(state, m.value)\n c.fixed64.encode(state, m.signature)\n },\n decode(state) {\n return {\n seq: c.uint.decode(state),\n value: c.buffer.decode(state),\n signature: c.fixed64.decode(state)\n }\n }\n}\n\nexports.pluginRequest = {\n preencode(state, m) {\n c.string.preencode(state, m.plugin)\n c.uint.preencode(state, m.version)\n c.uint.preencode(state, m.command)\n state.end++ // max flag is 1 so always one byte\n\n if (m.value) c.buffer.preencode(state, m.value)\n },\n encode(state, m) {\n const flags = m.value ? 1 : 0\n\n c.string.encode(state, m.plugin)\n c.uint.encode(state, m.version)\n c.uint.encode(state, m.command)\n c.uint.encode(state, flags)\n\n if (m.value) c.buffer.encode(state, m.value)\n },\n decode(state) {\n const r0 = c.string.decode(state)\n const r1 = c.uint.decode(state)\n const r2 = c.uint.decode(state)\n const flags = c.uint.decode(state)\n\n return {\n plugin: r0,\n version: r1,\n command: r2,\n value: (flags & 1) !== 0 ? c.buffer.decode(state) : null\n }\n }\n}\nconst { FIREWALL } = require('../lib/constants')\n\nmodule.exports = class Nat {\n constructor(dht, session, socket) {\n this._samplesHost = []\n this._samplesFull = []\n this._visited = new Map()\n this._resolve = null\n this._minSamples = 4\n this._autoSampling = false\n\n this.dht = dht\n this.session = session\n this.socket = socket\n\n this.sampled = 0\n this.firewall = dht.firewalled ? FIREWALL.UNKNOWN : FIREWALL.OPEN\n this.addresses = null\n\n this.analyzing = new Promise((resolve) => {\n this._resolve = resolve\n })\n }\n\n autoSample(retry = true) {\n if (this._autoSampling) return\n this._autoSampling = true\n\n const self = this\n const socket = this.socket\n const maxPings = this._minSamples\n\n let skip = this.dht.nodes.length >= 8 ? 5 : 0\n let pending = 0\n\n // TODO: it would be best to pick the nodes to help us based on latency to us\n // That should reduce connect latency in general. We should investigate tracking that later on.\n\n // TODO 2: try to pick nodes with different IPs as well, as that'll help multi IP cell connections...\n // If we expose this from the nat sampler then the DHT should be able to help us filter out scams as well...\n\n for (\n let node = this.dht.nodes.latest;\n node && this.sampled + pending < maxPings;\n node = node.prev\n ) {\n if (skip > 0) {\n skip--\n continue\n }\n\n const ref = node.host + ':' + node.port\n\n if (this._visited.has(ref)) continue\n this._visited.set(ref, 1)\n\n pending++\n this.session.ping(node, { socket, retry: false }).then(onpong, onskip)\n }\n\n pending++\n onskip()\n\n function onpong(res) {\n self.add(res.to, res.from)\n onskip()\n }\n\n function onskip() {\n if (--pending === 0 && self.sampled < self._minSamples) {\n if (retry) {\n self._autoSampling = false\n self.autoSample(false)\n return\n }\n self._resolve()\n }\n }\n }\n\n destroy() {\n this._autoSampling = true\n this._minSamples = 0\n this._resolve()\n }\n\n unfreeze() {\n this.frozen = false\n this._updateFirewall()\n this._updateAddresses()\n }\n\n freeze() {\n this.frozen = true\n }\n\n _updateFirewall() {\n if (!this.dht.firewalled) {\n this.firewall = FIREWALL.OPEN\n return\n }\n\n if (this.sampled < 3) return\n\n const max = this._samplesFull[0].hits\n\n if (max >= 3) {\n this.firewall = FIREWALL.CONSISTENT\n return\n }\n\n if (max === 1) {\n this.firewall = FIREWALL.RANDOM\n return\n }\n\n // else max === 2\n\n // 1 host, >= 4 total samples ie, 2 bad ones -> random\n if (this._samplesHost.length === 1 && this.sampled > 3) {\n this.firewall = FIREWALL.RANDOM\n return\n }\n\n // double hit on two different ips -> assume consistent\n if (this._samplesHost.length > 1 && this._samplesFull[1].hits > 1) {\n this.firewall = FIREWALL.CONSISTENT\n return\n }\n\n // (4 is just means - all the samples we expect) - no decision - assume random\n if (this.sampled > 4) {\n this.firewall = FIREWALL.RANDOM\n }\n }\n\n _updateAddresses() {\n if (this.firewall === FIREWALL.UNKNOWN) {\n this.addresses = null\n return\n }\n\n if (this.firewall === FIREWALL.RANDOM) {\n this.addresses = [this._samplesHost[0]]\n return\n }\n\n if (this.firewall === FIREWALL.CONSISTENT) {\n this.addresses = []\n for (const addr of this._samplesFull) {\n if (addr.hits >= 2 || this.addresses.length < 2) this.addresses.push(addr)\n }\n }\n }\n\n update() {\n if (this.dht.firewalled && this.firewall === FIREWALL.OPEN) {\n this.firewall = FIREWALL.UNKNOWN\n }\n this._updateFirewall()\n this._updateAddresses()\n }\n\n add(addr, from) {\n const ref = from.host + ':' + from.port\n\n if (this._visited.get(ref) === 2) return\n this._visited.set(ref, 2)\n\n addSample(this._samplesHost, addr.host, 0)\n addSample(this._samplesFull, addr.host, addr.port)\n\n if ((++this.sampled >= 3 || !this.dht.firewalled) && !this.frozen) {\n this.update()\n }\n\n if (this.firewall === FIREWALL.CONSISTENT || this.firewall === FIREWALL.OPEN) {\n this._resolve()\n } else if (this.sampled >= this._minSamples) {\n this._resolve()\n }\n }\n}\n\nfunction addSample(samples, host, port) {\n for (let i = 0; i < samples.length; i++) {\n const s = samples[i]\n\n if (s.port !== port || s.host !== host) continue\n s.hits++\n\n for (; i > 0; i--) {\n const prev = samples[i - 1]\n if (prev.hits >= s.hits) return\n samples[i - 1] = s\n samples[i] = prev\n }\n\n return\n }\n\n samples.push({\n host,\n port,\n hits: 1\n })\n}\nconst NoiseSecretStream = require('@hyperswarm/secret-stream')\nconst NoiseHandshake = require('noise-handshake')\nconst curve = require('noise-curve-ed')\nconst c = require('compact-encoding')\nconst b4a = require('b4a')\nconst sodium = require('sodium-universal')\nconst m = require('./messages')\nconst { NS } = require('./constants')\nconst { HANDSHAKE_UNFINISHED } = require('./errors')\n\nconst NOISE_PROLOUGE = NS.PEER_HANDSHAKE\n\nmodule.exports = class NoiseWrap {\n constructor(keyPair, remotePublicKey) {\n this.isInitiator = !!remotePublicKey\n this.remotePublicKey = remotePublicKey\n this.keyPair = keyPair\n this.handshake = new NoiseHandshake('IK', this.isInitiator, keyPair, { curve })\n this.handshake.initialise(NOISE_PROLOUGE, remotePublicKey)\n }\n\n send(payload) {\n const buf = c.encode(m.noisePayload, payload)\n return this.handshake.send(buf)\n }\n\n recv(buf) {\n const payload = c.decode(m.noisePayload, this.handshake.recv(buf))\n this.remotePublicKey = b4a.toBuffer(this.handshake.rs)\n return payload\n }\n\n final() {\n if (!this.handshake.complete) throw HANDSHAKE_UNFINISHED()\n\n const holepunchSecret = b4a.allocUnsafe(32)\n\n sodium.crypto_generichash(holepunchSecret, NS.PEER_HOLEPUNCH, this.handshake.hash)\n\n return {\n isInitiator: this.isInitiator,\n publicKey: this.keyPair.publicKey,\n streamId: this.streamId,\n remotePublicKey: this.remotePublicKey,\n remoteId: NoiseSecretStream.id(this.handshake.hash, !this.isInitiator),\n holepunchSecret,\n hash: b4a.toBuffer(this.handshake.hash),\n rx: b4a.toBuffer(this.handshake.rx),\n tx: b4a.toBuffer(this.handshake.tx)\n }\n }\n}\nconst c = require('compact-encoding')\nconst sodium = require('sodium-universal')\nconst RecordCache = require('record-cache')\nconst Cache = require('xache')\nconst b4a = require('b4a')\nconst unslab = require('unslab')\n\nconst { encodeUnslab } = require('./encode')\nconst m = require('./messages')\nconst { NS, ERROR } = require('./constants')\n\nconst EMPTY = b4a.alloc(0)\nconst TMP = b4a.allocUnsafe(32)\nconst MAX_BUMP_DRIFT = 60_000\n\nmodule.exports = class Persistent {\n constructor(dht, opts) {\n this.dht = dht\n this.records = new RecordCache(opts.records)\n this.bumps = new Cache(opts.bumps)\n this.refreshes = new Cache(opts.refreshes)\n this.mutables = new Cache(opts.mutables)\n this.immutables = new Cache(opts.immutables)\n }\n\n onlookup(req) {\n if (!req.target) return\n\n const k = b4a.toString(req.target, 'hex')\n const records = this.records.get(k, 20)\n const bump = this.bumps.get(k) || 0\n const fwd = this.dht._router.get(k)\n\n if (fwd && records.length < 20) records.push(fwd.record)\n\n req.reply(records.length ? c.encode(m.lookupRawReply, { peers: records, bump }) : null)\n }\n\n onfindpeer(req) {\n if (!req.target) return\n const fwd = this.dht._router.get(req.target)\n req.reply(fwd ? fwd.record : null)\n }\n\n unannounce(target, publicKey) {\n const k = b4a.toString(target, 'hex')\n sodium.crypto_generichash(TMP, publicKey)\n\n if (b4a.equals(TMP, target)) this.dht._router.delete(k)\n this.records.remove(k, publicKey)\n }\n\n onunannounce(req) {\n if (!req.target || !req.token) return\n\n const unann = decode(m.announce, req.value)\n if (unann === null) return\n\n const { peer, signature } = unann\n if (!peer || !signature) return\n\n const signable = annSignable(req.target, req.token, this.dht.id, unann, NS.UNANNOUNCE)\n\n if (!sodium.crypto_sign_verify_detached(signature, signable, peer.publicKey)) {\n return\n }\n\n this.unannounce(req.target, peer.publicKey)\n req.reply(null, { token: false, closerNodes: false })\n }\n\n _onrefresh(token, req) {\n sodium.crypto_generichash(TMP, token)\n const activeRefresh = b4a.toString(TMP, 'hex')\n\n const r = this.refreshes.get(activeRefresh)\n if (!r) return\n\n const { announceSelf, k, record } = r\n const publicKey = record.subarray(0, 32)\n\n if (announceSelf) {\n this.dht._router.set(k, {\n relay: req.from,\n record,\n onconnect: null,\n onholepunch: null\n })\n this.records.remove(k, publicKey)\n } else {\n this.records.add(k, publicKey, record)\n }\n\n this.refreshes.delete(activeRefresh)\n this.refreshes.set(b4a.toString(token, 'hex'), r)\n\n req.reply(null, { token: false, closerNodes: false })\n }\n\n onannounce(req) {\n if (!req.target || !req.token || !this.dht.id) return\n\n const ann = decode(m.announce, req.value)\n if (ann === null) return\n\n const { peer, refresh, signature, bump } = ann\n\n if (!peer) {\n if (!refresh) return\n this._onrefresh(refresh, req)\n return\n }\n\n const signable = annSignable(req.target, req.token, this.dht.id, ann, NS.ANNOUNCE)\n\n if (!signature || !sodium.crypto_sign_verify_detached(signature, signable, peer.publicKey)) {\n return\n }\n\n // TODO: it would be potentially be more optimal to allow more than 3 addresses here for a findPeer response\n // and only use max 3 for a lookup reply\n if (peer.relayAddresses.length > 3) {\n peer.relayAddresses = peer.relayAddresses.slice(0, 3)\n }\n\n sodium.crypto_generichash(TMP, peer.publicKey)\n\n const k = b4a.toString(req.target, 'hex')\n const announceSelf = b4a.equals(TMP, req.target)\n const record = encodeUnslab(m.peer, peer)\n\n if (announceSelf) {\n this.dht._router.set(k, {\n relay: req.from,\n record,\n onconnect: null,\n onholepunch: null\n })\n this.records.remove(k, peer.publicKey)\n } else {\n const currentBump = this.bumps.get(k) || 0\n if (bump > currentBump && bump <= Date.now() + MAX_BUMP_DRIFT) this.bumps.set(k, bump)\n this.records.add(k, peer.publicKey, record)\n }\n\n if (refresh) {\n this.refreshes.set(b4a.toString(refresh, 'hex'), { k, record, announceSelf })\n }\n\n req.reply(null, { token: false, closerNodes: false })\n }\n\n onmutableget(req) {\n if (!req.target || !req.value) return\n\n let seq = 0\n try {\n seq = c.decode(c.uint, req.value)\n } catch {\n return\n }\n\n const k = b4a.toString(req.target, 'hex')\n const value = this.mutables.get(k)\n\n if (!value) {\n req.reply(null)\n return\n }\n\n const localSeq = c.decode(c.uint, value)\n req.reply(localSeq < seq ? null : value)\n }\n\n onmutableput(req) {\n if (!req.target || !req.token || !req.value) return\n\n const p = decode(m.mutablePutRequest, req.value)\n if (!p) return\n\n const { publicKey, seq, value, signature } = p\n\n const hash = b4a.allocUnsafe(32)\n sodium.crypto_generichash(hash, publicKey)\n if (!b4a.equals(hash, req.target)) return\n\n if (!value || !verifyMutable(signature, seq, value, publicKey)) return\n\n const k = b4a.toString(hash, 'hex')\n const local = this.mutables.get(k)\n\n if (local) {\n const existing = c.decode(m.mutableGetResponse, local)\n if (existing.value && existing.seq === seq && b4a.compare(value, existing.value) !== 0) {\n req.error(ERROR.SEQ_REUSED)\n return\n }\n if (seq < existing.seq) {\n req.error(ERROR.SEQ_TOO_LOW)\n return\n }\n }\n\n this.mutables.set(k, encodeUnslab(m.mutableGetResponse, { seq, value, signature }))\n req.reply(null)\n }\n\n onimmutableget(req) {\n if (!req.target) return\n\n const k = b4a.toString(req.target, 'hex')\n const value = this.immutables.get(k)\n\n req.reply(value || null)\n }\n\n onimmutableput(req) {\n if (!req.target || !req.token || !req.value) return\n\n const hash = b4a.alloc(32)\n sodium.crypto_generichash(hash, req.value)\n if (!b4a.equals(hash, req.target)) return\n\n const k = b4a.toString(hash, 'hex')\n this.immutables.set(k, unslab(req.value))\n\n req.reply(null)\n }\n\n onplugin(req) {\n if (!req.value) return\n\n const plugreq = decode(m.pluginRequest, req.value)\n if (plugreq === null) return\n\n const p = this.dht.plugins.get(plugreq.plugin)\n if (!p || p.version !== plugreq.version) return\n\n p.onrequest(plugreq, req)\n }\n\n destroy() {\n this.records.destroy()\n this.refreshes.destroy()\n this.mutables.destroy()\n this.immutables.destroy()\n }\n\n static signMutable(seq, value, keyPair) {\n const signable = b4a.allocUnsafe(32 + 32)\n const hash = signable.subarray(32)\n\n signable.set(NS.MUTABLE_PUT, 0)\n\n sodium.crypto_generichash(hash, c.encode(m.mutableSignable, { seq, value }))\n return sign(signable, keyPair)\n }\n\n static verifyMutable(signature, seq, value, publicKey) {\n return verifyMutable(signature, seq, value, publicKey)\n }\n\n static signAnnounce(target, token, id, ann, keyPair) {\n return sign(annSignable(target, token, id, ann, NS.ANNOUNCE), keyPair)\n }\n\n static signUnannounce(target, token, id, ann, keyPair) {\n return sign(annSignable(target, token, id, ann, NS.UNANNOUNCE), keyPair)\n }\n}\n\nfunction verifyMutable(signature, seq, value, publicKey) {\n const signable = b4a.allocUnsafe(32 + 32)\n const hash = signable.subarray(32)\n\n signable.set(NS.MUTABLE_PUT, 0)\n\n sodium.crypto_generichash(hash, c.encode(m.mutableSignable, { seq, value }))\n return sodium.crypto_sign_verify_detached(signature, signable, publicKey)\n}\n\nfunction annSignable(target, token, id, ann, ns) {\n const signable = b4a.allocUnsafe(32 + 32)\n const hash = signable.subarray(32)\n\n signable.set(ns, 0)\n\n sodium.crypto_generichash_batch(hash, [\n target,\n id,\n token,\n c.encode(m.peer, ann.peer), // note that this is the partial encoding of the announce message so we could just use that for perf\n ann.refresh || EMPTY\n ])\n\n return signable\n}\n\nfunction sign(signable, keyPair) {\n if (keyPair.sign) {\n return keyPair.sign(signable)\n }\n const secretKey = keyPair.secretKey ? keyPair.secretKey : keyPair\n const signature = b4a.allocUnsafe(64)\n sodium.crypto_sign_detached(signature, signable, secretKey)\n return signature\n}\n\nfunction decode(enc, val) {\n try {\n return val && c.decode(enc, val)\n } catch (err) {\n return null\n }\n}\nmodule.exports = class RawStreamSet {\n constructor(dht) {\n this._dht = dht\n\n this._prefix = 16 - 1 // 16 is the default stream-set side in udx\n this._streams = new Map()\n }\n\n get size() {\n return this._streams.size\n }\n\n [Symbol.iterator]() {\n return this._streams.values()\n }\n\n add(opts) {\n const self = this\n\n // TODO: we should prob have a udx helper for id generation, given the slight complexity\n // of the below. requires a PRNG in udx tho.\n\n let id = 0\n\n while (true) {\n id = (Math.random() * 0x100000000) >>> 0\n\n if (this._streams.has(id & this._prefix)) continue\n break\n }\n\n // always have ~50% change of rolling a free one\n if (2 * this._streams.size >= this._prefix) {\n // ie 0b11111 = 0b1111 + 1 + 0b1111\n this._prefix = 2 * this._prefix + 1\n\n // move the prefixes over\n const next = new Map()\n for (const stream of this._streams.values()) {\n next.set(stream.id & this._prefix, stream)\n }\n this._streams = next\n }\n\n const stream = this._dht.udx.createStream(id, opts)\n this._streams.set(id & this._prefix, stream)\n\n stream.on('close', onclose)\n\n return stream\n\n function onclose() {\n self._streams.delete(id & self._prefix)\n }\n }\n\n async clear() {\n const destroying = []\n\n for (const stream of this._streams.values()) {\n destroying.push(new Promise((resolve) => stream.once('close', resolve).destroy()))\n }\n\n await Promise.allSettled(destroying)\n }\n}\nconst b4a = require('b4a')\nconst safetyCatch = require('safety-catch')\n\nexports.clearRelayTimeout = clearRelayTimeout\nexports.closeRelayConnection = closeRelayConnection\nexports.confirmDirectUpgrade = confirmDirectUpgrade\nexports.destroyRelayConnection = destroyRelayConnection\n\nfunction clearRelayTimeout(connectionOrHandshake) {\n clearTimeout(connectionOrHandshake.relayTimeout)\n connectionOrHandshake.relayTimeout = null\n}\n\nfunction closeRelayConnection(connectionOrHandshake) {\n const socket = resetRelayConnection(connectionOrHandshake)\n\n if (socket) socket.end()\n}\n\nfunction confirmDirectUpgrade(connectionOrHandshake, rawStream, remoteChanging) {\n const cleanup = () => {\n rawStream.off('data', ondirect)\n rawStream.off('message', ondirect)\n rawStream.off('close', cleanup)\n }\n\n function ondirect() {\n if (!connectionOrHandshake.validUpgrade) {\n // reset, aka assume from direct\n connectionOrHandshake.validUpgrade = true\n return\n }\n\n cleanup()\n closeRelayConnection(connectionOrHandshake)\n }\n\n const confirm = () => {\n rawStream.on('data', ondirect)\n rawStream.on('message', ondirect)\n rawStream.once('close', cleanup)\n\n // Use a raw UDX message to make the peer observe the direct path without\n // writing application data into the secret stream.\n if (rawStream.trySend) rawStream.trySend(b4a.alloc(0))\n }\n\n if (!remoteChanging) {\n confirm()\n return\n }\n\n remoteChanging.then(confirm).catch(safetyCatch)\n}\n\nfunction destroyRelayConnection(connectionOrHandshake) {\n const socket = resetRelayConnection(connectionOrHandshake)\n\n if (socket) socket.destroy()\n}\n\nfunction resetRelayConnection(connectionOrHandshake) {\n if (connectionOrHandshake.relayTimeout) clearRelayTimeout(connectionOrHandshake)\n\n const socket = connectionOrHandshake.relaySocket\n // Drop relay references so the app connection no longer keeps relay state alive.\n connectionOrHandshake.relayToken = null\n connectionOrHandshake.relaySocket = null\n connectionOrHandshake.relayClient = null\n\n return socket\n}\nconst c = require('compact-encoding')\nconst Cache = require('xache')\nconst safetyCatch = require('safety-catch')\nconst b4a = require('b4a')\nconst { handshake, holepunch } = require('./messages')\nconst { COMMANDS } = require('./constants')\nconst { BAD_HANDSHAKE_REPLY, BAD_HOLEPUNCH_REPLY } = require('./errors')\n\nconst FROM_CLIENT = 0\nconst FROM_SERVER = 1\nconst FROM_RELAY = 2\nconst FROM_SECOND_RELAY = 3\nconst REPLY = 4\n\n// TODO: While the current design is very trustless in regards to clients/servers trusting the DHT,\n// we should add a bunch of rate limits everywhere, especially including here to avoid bad users\n// using a DHT node to relay traffic indiscriminately using the connect/holepunch messages.\n// That's mostly from an abuse POV as none of the messsages do amplication.\n\nmodule.exports = class Router {\n constructor(dht, opts) {\n this.dht = dht\n this.forwards = new Cache(opts.forwards)\n }\n\n set(target, state) {\n if (state.onpeerhandshake) {\n this.forwards.retain(toString(target), state)\n } else {\n this.forwards.set(toString(target), state)\n }\n }\n\n get(target) {\n return this.forwards.get(toString(target))\n }\n\n delete(target) {\n this.forwards.delete(toString(target))\n }\n\n destroy() {\n this.forwards.destroy()\n }\n\n async peerHandshake(target, { noise, peerAddress, relayAddress, socket, session }, to) {\n const dht = this.dht\n\n const requestValue = c.encode(handshake, {\n mode: FROM_CLIENT,\n noise,\n peerAddress,\n relayAddress\n })\n\n const res = await dht.request(\n { command: COMMANDS.PEER_HANDSHAKE, target, value: requestValue },\n to,\n { socket, session }\n )\n\n const hs = decode(handshake, res.value)\n if (\n !hs ||\n hs.mode !== REPLY ||\n to.host !== res.from.host ||\n to.port !== res.from.port ||\n !hs.noise\n ) {\n throw BAD_HANDSHAKE_REPLY()\n }\n\n return {\n noise: hs.noise,\n relayed: !!hs.peerAddress,\n serverAddress: hs.peerAddress || to,\n clientAddress: res.to\n }\n }\n\n async onpeerhandshake(req) {\n const hs = req.value && decode(handshake, req.value)\n if (!hs) return\n\n const { mode, noise, peerAddress, relayAddress } = hs\n\n const state = req.target && this.get(req.target)\n const isServer = !!(state && state.onpeerhandshake)\n const relay = state && state.relay\n\n if (isServer) {\n let reply = null\n try {\n reply = noise && (await state.onpeerhandshake({ noise, peerAddress }, req))\n } catch (e) {\n safetyCatch(e)\n return\n }\n if (!reply || !reply.noise) return\n const opts = { socket: reply.socket, closerNodes: false, token: false }\n\n switch (mode) {\n case FROM_CLIENT: {\n req.reply(\n c.encode(handshake, { mode: REPLY, noise: reply.noise, peerAddress: null }),\n opts\n )\n return\n }\n case FROM_RELAY: {\n req.relay(\n c.encode(handshake, { mode: FROM_SERVER, noise: reply.noise, peerAddress }),\n req.from,\n opts\n )\n return\n }\n case FROM_SECOND_RELAY: {\n if (!relayAddress) return\n req.relay(\n c.encode(handshake, { mode: FROM_SERVER, noise: reply.noise, peerAddress }),\n relayAddress,\n opts\n )\n return // eslint-disable-line\n }\n }\n } else {\n switch (mode) {\n case FROM_CLIENT: {\n // TODO: if no relay is known route closer to the target instead of timing out\n if (!noise) return\n if (!relay && !relayAddress) {\n // help the user route\n req.reply(null, { token: false, closerNodes: true })\n return\n }\n req.relay(\n c.encode(handshake, {\n mode: FROM_RELAY,\n noise,\n peerAddress: req.from,\n relayAddress: null\n }),\n relayAddress || relay\n )\n return\n }\n case FROM_RELAY: {\n if (!relay || !noise) return\n req.relay(\n c.encode(handshake, {\n mode: FROM_SECOND_RELAY,\n noise,\n peerAddress,\n relayAddress: req.from\n }),\n relay\n )\n return\n }\n case FROM_SERVER: {\n if (!peerAddress || !noise) return\n req.reply(\n c.encode(handshake, { mode: REPLY, noise, peerAddress: req.from, relayAddress: null }),\n { to: peerAddress, closerNodes: false, token: false }\n )\n return // eslint-disable-line\n }\n }\n }\n }\n\n async peerHolepunch(target, { id, payload, peerAddress, socket, session }, to) {\n const dht = this.dht\n const requestValue = c.encode(holepunch, {\n mode: FROM_CLIENT,\n id,\n payload,\n peerAddress\n })\n\n const res = await dht.request(\n { command: COMMANDS.PEER_HOLEPUNCH, target, value: requestValue },\n to,\n { socket, session }\n )\n\n const hp = decode(holepunch, res.value)\n if (!hp || hp.mode !== REPLY || to.host !== res.from.host || to.port !== res.from.port) {\n throw BAD_HOLEPUNCH_REPLY()\n }\n\n return {\n from: res.from,\n to: res.to,\n payload: hp.payload,\n peerAddress: hp.peerAddress || to\n }\n }\n\n async onpeerholepunch(req) {\n const hp = req.value && decode(holepunch, req.value)\n if (!hp) return\n\n const { mode, id, payload, peerAddress } = hp\n\n const state = req.target && this.get(req.target)\n const isServer = !!(state && state.onpeerholepunch)\n const relay = state && state.relay\n\n switch (mode) {\n case FROM_CLIENT: {\n if (!peerAddress && !relay) return\n req.relay(\n c.encode(holepunch, { mode: FROM_RELAY, id, payload, peerAddress: req.from }),\n peerAddress || relay\n )\n return\n }\n case FROM_RELAY: {\n if (!isServer || !peerAddress) return\n let reply = null\n try {\n reply = await state.onpeerholepunch({ id, payload, peerAddress }, req)\n } catch (e) {\n safetyCatch(e)\n return\n }\n if (!reply) return\n const opts = { socket: reply.socket, closerNodes: false, token: false }\n req.relay(\n c.encode(holepunch, { mode: FROM_SERVER, id: 0, payload: reply.payload, peerAddress }),\n req.from,\n opts\n )\n return\n }\n case FROM_SERVER: {\n req.reply(c.encode(holepunch, { mode: REPLY, id, payload, peerAddress: req.from }), {\n to: peerAddress,\n closerNodes: false,\n token: false\n })\n return // eslint-disable-line\n }\n }\n }\n}\n\nfunction decode(enc, val) {\n try {\n return c.decode(enc, val)\n } catch {\n return null\n }\n}\n\nfunction toString(t) {\n return typeof t === 'string' ? t : b4a.toString(t, 'hex')\n}\nconst sodium = require('sodium-universal')\nconst b4a = require('b4a')\nconst { holepunchPayload } = require('./messages')\n\nmodule.exports = class HolepunchPayload {\n constructor(holepunchSecret) {\n this._sharedSecret = holepunchSecret\n this._localSecret = b4a.allocUnsafe(32)\n\n sodium.randombytes_buf(this._localSecret)\n }\n\n decrypt(buffer) {\n const state = { start: 24, end: buffer.byteLength - 16, buffer }\n\n if (state.end <= state.start) return null\n\n const nonce = buffer.subarray(0, 24)\n const msg = state.buffer.subarray(state.start, state.end)\n const cipher = state.buffer.subarray(state.start)\n\n if (!sodium.crypto_secretbox_open_easy(msg, cipher, nonce, this._sharedSecret)) return null\n\n try {\n return holepunchPayload.decode(state)\n } catch {\n return null\n }\n }\n\n encrypt(payload) {\n const state = { start: 24, end: 24, buffer: null }\n holepunchPayload.preencode(state, payload)\n state.buffer = b4a.allocUnsafe(state.end + 16)\n\n const nonce = state.buffer.subarray(0, 24)\n const msg = state.buffer.subarray(state.start, state.end)\n const cipher = state.buffer.subarray(state.start)\n\n holepunchPayload.encode(state, payload)\n sodium.randombytes_buf(nonce)\n sodium.crypto_secretbox_easy(cipher, msg, nonce, this._sharedSecret)\n\n return state.buffer\n }\n\n token(addr) {\n const out = b4a.allocUnsafe(32)\n sodium.crypto_generichash(out, b4a.from(addr.host), this._localSecret)\n return out\n }\n}\nconst DONE = Promise.resolve(true)\nconst DESTROYED = Promise.resolve(false)\n\nmodule.exports = class Semaphore {\n constructor(limit = 1) {\n this.limit = limit\n this.active = 0\n this.waiting = []\n\n this.flushedPromise = null\n this.flushedResolve = null\n\n this.destroyed = false\n\n this._onwait = this._queueWaiting.bind(this)\n this._onflush = this._queueFlushed.bind(this)\n }\n\n _queueWaiting(resolve) {\n this.waiting.push(resolve)\n }\n\n _queueFlushed(resolve) {\n this.flushedResolve = resolve\n }\n\n wait() {\n if (this.destroyed === true) return DESTROYED\n\n if (this.active < this.limit && this.waiting.length === 0) {\n this.active++\n return DONE\n }\n\n return new Promise(this._onwait)\n }\n\n signal() {\n if (this.destroyed === true) return\n\n this.active--\n while (this.active < this.limit && this.waiting.length > 0 && this.destroyed === false) {\n this.active++\n this.waiting.shift()(true)\n }\n\n if (this.active === 0 && this.flushedResolve) {\n const resolve = this.flushedResolve\n this.flushedResolve = null\n this.flushedPromise = null\n resolve(true)\n }\n }\n\n async flush() {\n if (this.destroyed === true) return\n if (this.active === 0) return\n if (this.flushedPromise) return this.flushedPromise\n this.flushedPromise = new Promise(this._onflush)\n return this.flushedPromise\n }\n\n destroy() {\n this.destroyed = true\n this.active = 0\n while (this.waiting.length) this.waiting.pop()(false)\n if (this.flushedResolve) this.flushedResolve(false)\n }\n}\nconst { EventEmitter } = require('events')\nconst safetyCatch = require('safety-catch')\nconst NoiseSecretStream = require('@hyperswarm/secret-stream')\nconst b4a = require('b4a')\nconst relay = require('blind-relay')\nconst NoiseWrap = require('./noise-wrap')\nconst Announcer = require('./announcer')\nconst { FIREWALL, ERROR } = require('./constants')\nconst { unslabbedHash } = require('./crypto')\nconst SecurePayload = require('./secure-payload')\nconst Holepuncher = require('./holepuncher')\nconst {\n clearRelayTimeout,\n confirmDirectUpgrade,\n destroyRelayConnection\n} = require('./relay-connection')\nconst { isPrivate } = require('bogon')\nconst { ALREADY_LISTENING, NODE_DESTROYED, KEYPAIR_ALREADY_USED } = require('./errors')\n\nconst HANDSHAKE_CLEAR_WAIT = 10000\nconst HANDSHAKE_INITIAL_TIMEOUT = 10000\n\nmodule.exports = class Server extends EventEmitter {\n constructor(dht, opts = {}) {\n super()\n\n this.dht = dht\n this.target = null\n\n this.closed = false\n this.firewall = opts.firewall || (() => false)\n this.holepunch = opts.holepunch || (() => true)\n this.relayThrough = opts.relayThrough || null\n this.relayKeepAlive = opts.relayKeepAlive || 5000\n this.pool = opts.pool || null\n this.createHandshake = opts.createHandshake || defaultCreateHandshake\n this.createSecretStream = opts.createSecretStream || defaultCreateSecretStream\n this.suspended = false\n this.handshakeClearWait = opts.handshakeClearWait || HANDSHAKE_CLEAR_WAIT\n\n this._shareLocalAddress = opts.shareLocalAddress !== false\n this._reusableSocket = !!opts.reusableSocket\n this._neverPunch = opts.holepunch === false // useful for fully disabling punching\n this._keyPair = null\n this._announcer = null\n this._connects = new Map()\n this._holepunches = []\n this._listening = null\n this._closing = null\n }\n\n get listening() {\n return this._listening !== null\n }\n\n get publicKey() {\n return this._keyPair && this._keyPair.publicKey\n }\n\n get relayAddresses() {\n return this._announcer ? this._announcer.relayAddresses : []\n }\n\n onconnection(encryptedSocket) {\n this.emit('connection', encryptedSocket)\n }\n\n async suspend({ log = noop } = {}) {\n log('Suspending hyperdht server')\n if (this._listening !== null) await this._listening\n log('Suspending hyperdht server (post listening)')\n this.suspended = true\n this._clearAll()\n return this._announcer ? this._announcer.suspend({ log }) : Promise.resolve()\n }\n\n async resume() {\n if (this._listening !== null) await this._listening\n this.suspended = false\n return this._announcer ? this._announcer.resume() : Promise.resolve()\n }\n\n address() {\n if (!this._keyPair) return null\n\n return {\n publicKey: this._keyPair.publicKey,\n host: this.dht.host,\n port: this.dht.port\n }\n }\n\n close() {\n if (this._closing) return this._closing\n this._closing = this._close()\n return this._closing\n }\n\n _gc() {\n this.dht.listening.delete(this)\n if (this.target) this.dht._router.delete(this.target)\n }\n\n async _stopListening() {\n try {\n if (this._announcer) await this._announcer.stop()\n } catch {\n // ignore\n }\n\n this._announcer = null\n this._listening = null\n this._keyPair = null\n }\n\n async _close() {\n if (this._listening === null) {\n this.closed = true\n this.emit('close')\n return\n }\n\n try {\n await this._listening\n } catch (err) {\n safetyCatch(err)\n }\n\n this._gc()\n this._clearAll()\n\n await this._stopListening()\n\n this.closed = true\n this.emit('close')\n }\n\n _clearAll() {\n while (this._holepunches.length > 0) {\n const h = this._holepunches.pop()\n if (h && h.puncher) h.puncher.destroy()\n if (h && h.clearing) clearTimeout(h.clearing)\n if (h && h.prepunching) clearTimeout(h.prepunching)\n if (h && h.rawStream) h.rawStream.destroy()\n }\n\n this._connects.clear()\n }\n\n async listen(keyPair = this.dht.defaultKeyPair, opts = {}) {\n if (this._listening !== null) throw ALREADY_LISTENING()\n if (this.dht.destroyed) throw NODE_DESTROYED()\n\n this._listening = this._listen(keyPair, opts)\n await this._listening\n return this\n }\n\n async _listen(keyPair, opts) {\n // From now on, the DHT object which created me is responsible for closing me\n this.dht.listening.add(this)\n\n try {\n await this.dht.bind()\n if (this._closing) return\n\n for (const s of this.dht.listening) {\n if (s._keyPair && b4a.equals(s._keyPair.publicKey, keyPair.publicKey)) {\n throw KEYPAIR_ALREADY_USED()\n }\n }\n\n this.target = unslabbedHash(keyPair.publicKey)\n this._keyPair = keyPair\n this._announcer = new Announcer(this.dht, keyPair, this.target, opts)\n\n this.dht._router.set(this.target, {\n relay: null,\n record: this._announcer.record,\n onpeerhandshake: this._onpeerhandshake.bind(this),\n onpeerholepunch: this._onpeerholepunch.bind(this)\n })\n\n // warm it up for now\n this._localAddresses().catch(safetyCatch)\n\n await this._announcer.start()\n } catch (err) {\n await this._stopListening()\n this._gc()\n throw err\n }\n\n if (this._closing) return\n if (this.suspended) await this._announcer.suspend()\n\n if (this._closing) return\n if (this.dht.destroyed) throw NODE_DESTROYED()\n\n if (this.pool) this.pool._attachServer(this)\n\n this.emit('listening')\n }\n\n refresh() {\n if (this._announcer && !this.suspended) this._announcer.refresh()\n }\n\n notifyOnline() {\n if (this._announcer) this._announcer.online.notify()\n }\n\n _localAddresses() {\n return this.dht.validateLocalAddresses(Holepuncher.localAddresses(this.dht.io.serverSocket))\n }\n\n async _addHandshake(k, noise, clientAddress, { to: serverAddress, socket }, direct) {\n let id = this._holepunches.indexOf(null)\n if (id === -1) id = this._holepunches.push(null) - 1\n\n const hs = {\n round: 0,\n reply: null,\n puncher: null,\n payload: null,\n rawStream: null,\n encryptedSocket: null,\n prepunching: null,\n firewalled: true,\n clearing: null,\n replyFromPuncher: false,\n onsocket: null,\n aborted: false,\n\n // Relay state\n relayTimeout: null,\n relayToken: null,\n relaySocket: null,\n relayClient: null,\n relayPaired: false,\n validUpgrade: true\n }\n\n this._holepunches[id] = hs\n\n const handshake = this.createHandshake(this._keyPair, null)\n\n let remotePayload\n try {\n remotePayload = await handshake.recv(noise)\n } catch (err) {\n safetyCatch(err)\n this._clearLater(hs, id, k)\n return null\n }\n\n if (this._closing || this.suspended) return null\n\n try {\n hs.firewalled = await this.firewall(handshake.remotePublicKey, remotePayload, clientAddress)\n } catch (err) {\n safetyCatch(err)\n }\n\n if (this._closing || this.suspended) return null\n\n if (hs.firewalled) {\n this._clearLater(hs, id, k)\n return null\n }\n\n const error =\n remotePayload.version === 1\n ? remotePayload.udx\n ? ERROR.NONE\n : ERROR.ABORTED\n : ERROR.VERSION_MISMATCH\n\n const addresses = []\n const ourRemoteAddr = this.dht.remoteAddress()\n const ourLocalAddrs = this._shareLocalAddress ? await this._localAddresses() : null\n\n if (this._closing || this.suspended) return null\n\n if (ourRemoteAddr) addresses.push(ourRemoteAddr)\n if (ourLocalAddrs) addresses.push(...ourLocalAddrs)\n\n if (error === ERROR.NONE) {\n hs.rawStream = this.dht.createRawStream({\n framed: true,\n firewall(socket, port, host) {\n if (!(port > 0 && port < 65536)) return true\n\n // Check if the traffic originated from the socket on which we're expecting relay traffic. If so,\n // we haven't hole punched yet and the other side is just sending us traffic through the relay.\n if (hs.relaySocket && isRelay(hs.relaySocket, socket, port, host)) {\n hs.validUpgrade = false\n return false\n }\n\n hs.onsocket(socket, port, host)\n hs.validUpgrade = true\n return false\n }\n })\n\n hs.rawStream.on('error', autoDestroy)\n\n // Handles the case where onsocket is never called, but the stream got setup\n // This can happen on a relayed connection which never connects directly\n // (onsocket is called there only when the direct connection is established)\n const onrawstreamclose = () => {\n if (this._closing) return\n this._clearLater(hs, id, k)\n }\n hs.rawStream.on('close', onrawstreamclose)\n\n hs.onsocket = (socket, port, host) => {\n if (hs.rawStream === null) return // Already hole punched\n\n this._clearLater(hs, id, k)\n\n if (hs.prepunching) {\n clearTimeout(hs.prepunching)\n hs.prepunching = null\n }\n\n if (this._reusableSocket && remotePayload.udx.reusableSocket) {\n this.dht._socketPool.routes.add(handshake.remotePublicKey, hs.rawStream)\n }\n\n hs.rawStream.removeListener('error', autoDestroy)\n hs.rawStream.removeListener('close', onrawstreamclose)\n\n if (hs.rawStream.connected) {\n const rawStream = hs.rawStream\n const remoteChanging = rawStream.changeRemote(socket, remotePayload.udx.id, port, host)\n confirmDirectUpgrade(hs, rawStream, remoteChanging)\n } else {\n hs.rawStream.connect(socket, remotePayload.udx.id, port, host)\n hs.encryptedSocket = this.createSecretStream(false, hs.rawStream, {\n handshake: h,\n keepAlive: this.dht.connectionKeepAlive\n })\n\n this.onconnection(hs.encryptedSocket)\n }\n\n if (hs.puncher) {\n hs.puncher.onabort = noop\n hs.puncher.destroy()\n }\n\n hs.rawStream = null\n }\n\n function autoDestroy() {\n if (hs.puncher) hs.puncher.destroy()\n }\n }\n\n const relayAddresses = this.relayAddresses\n const relayThrough = selectRelay(this.relayThrough)\n\n if (relayThrough) hs.relayToken = relay.token()\n\n try {\n hs.reply = await handshake.send({\n error,\n firewall: ourRemoteAddr ? FIREWALL.OPEN : FIREWALL.UNKNOWN,\n holepunch: ourRemoteAddr ? null : { id, relays: this._announcer.relays },\n addresses4: addresses,\n addresses6: null,\n udx: {\n reusableSocket: this._reusableSocket,\n id: hs.rawStream ? hs.rawStream.id : 0,\n seq: 0\n },\n secretStream: {},\n relayThrough: relayThrough ? { publicKey: relayThrough, token: hs.relayToken } : null,\n relayAddresses: relayAddresses.length ? relayAddresses : null\n })\n } catch (err) {\n safetyCatch(err)\n if (hs.rawStream) hs.rawStream.destroy()\n this._clearLater(hs, id, k)\n return null\n }\n\n if (this._closing || this.suspended) {\n if (hs.rawStream) hs.rawStream.destroy()\n return null\n }\n\n const h = handshake.final()\n\n if (error !== ERROR.NONE) {\n if (hs.rawStream) hs.rawStream.destroy()\n this._clearLater(hs, id, k)\n return hs\n }\n\n if (remotePayload.firewall === FIREWALL.OPEN || direct) {\n const sock = direct ? socket : this.dht.socket\n this.dht.stats.punches.open++\n hs.onsocket(sock, clientAddress.port, clientAddress.host)\n return hs\n }\n\n if (relayThrough || remotePayload.relayThrough) {\n this._relayConnection(hs, relayThrough, remotePayload, h)\n }\n\n const onabort = () => {\n hs.aborted = true\n if (hs.prepunching) clearTimeout(hs.prepunching)\n hs.prepunching = null\n if (hs.puncher) {\n hs.puncher.onabort = noop\n hs.puncher.destroy()\n }\n if (hs.rawStream.destroyed) {\n this._clearLater(hs, id, k)\n return\n }\n\n hs.rawStream.on('close', () => this._clearLater(hs, id, k))\n if (hs.relayToken === null) hs.rawStream.destroy()\n }\n\n if (!direct && clientAddress.host === serverAddress.host) {\n const clientAddresses = remotePayload.addresses4.filter((addr) => isPrivate(addr.host))\n\n if (clientAddresses.length > 0 && this._shareLocalAddress) {\n const myAddresses = await this._localAddresses()\n const addr = Holepuncher.matchAddress(myAddresses, clientAddresses)\n\n if (addr) {\n hs.payload = new SecurePayload(h.holepunchSecret)\n setupHolepuncher(this.dht, hs, remotePayload.firewall, onabort)\n hs.prepunching = setTimeout(onabort, HANDSHAKE_INITIAL_TIMEOUT)\n return hs\n }\n }\n }\n\n if (this._closing || this.suspended) return null\n\n if (ourRemoteAddr || this._neverPunch) {\n hs.prepunching = setTimeout(onabort, HANDSHAKE_INITIAL_TIMEOUT)\n return hs\n }\n\n hs.payload = new SecurePayload(h.holepunchSecret)\n setupHolepuncher(this.dht, hs, remotePayload.firewall, onabort)\n hs.replyFromPuncher = true\n hs.prepunching = setTimeout(hs.puncher.destroy.bind(hs.puncher), HANDSHAKE_INITIAL_TIMEOUT)\n\n return hs\n }\n\n _clearLater(hs, id, k) {\n if (hs.clearing) return\n hs.clearing = setTimeout(() => this._clear(hs, id, k), this.handshakeClearWait)\n }\n\n _clear(hs, id, k) {\n if (id >= this._holepunches.length || this._holepunches[id] !== hs) return\n if (hs.clearing) clearTimeout(hs.clearing)\n\n this._holepunches[id] = null\n while (\n this._holepunches.length > 0 &&\n this._holepunches[this._holepunches.length - 1] === null\n ) {\n this._holepunches.pop()\n }\n this._connects.delete(k)\n }\n\n async _onpeerhandshake({ noise, peerAddress }, req) {\n const k = b4a.toString(noise, 'hex')\n\n // The next couple of statements MUST run within the same tick to prevent\n // a malicious peer from flooding us with handshakes.\n let p = this._connects.get(k)\n if (!p) {\n p = this._addHandshake(k, noise, peerAddress || req.from, req, !peerAddress)\n this._connects.set(k, p)\n }\n\n const h = await p\n if (!h) return null\n\n if (this._closing !== null || this.suspended) return null\n\n // Routed handshake replies advertise the socket they are sent from as the\n // server address. Same-LAN prepunch also creates a puncher, but it must\n // keep advertising the normal server socket so the LAN shortcut can open.\n return { socket: h.replyFromPuncher ? h.puncher.socket : null, noise: h.reply }\n }\n\n async _onpeerholepunch({ id, peerAddress, payload }, req) {\n const h = id < this._holepunches.length ? this._holepunches[id] : null\n if (!h) return null\n\n if (!peerAddress || this._closing !== null || this.suspended) return null\n if (!h.payload) return this._abort(h) // not opened\n\n const remotePayload = h.payload.decrypt(payload)\n if (!remotePayload) return null\n\n const p = h.puncher\n if (!p || !p.socket) return this._abort(h) // not opened\n\n const isServerRelay = this._announcer.isRelay(req.from)\n const { error, firewall, round, punching, addresses, remoteAddress, remoteToken } =\n remotePayload\n\n if (error !== ERROR.NONE) {\n // We actually do not need to set the round here, but just do it for consistency.\n if (round >= h.round) h.round = round\n return this._abort(h)\n }\n\n const token = h.payload.token(peerAddress)\n const echoed = isServerRelay && !!remoteToken && b4a.equals(token, remoteToken)\n\n // Update our heuristics here\n if (req.socket === p.socket) {\n p.nat.add(req.to, req.from)\n }\n\n if (round >= h.round) {\n h.round = round\n p.updateRemote({ punching, firewall, addresses, verified: echoed ? peerAddress.host : null })\n }\n\n // Wait for the analyzer to reach a conclusion...\n let stable = await p.analyze(false)\n if (p.destroyed) return null\n\n if (!p.remoteHolepunching && !stable) {\n stable = await p.analyze(true)\n if (p.destroyed) return null\n if (!stable) return this._abort(h)\n }\n\n // Fast mode! If we are consistent and the remote has opened a session to us (remoteAddress)\n // then fire a quick punch back. Note the await here just waits for the udp socket to flush.\n if (\n isConsistent(p.nat.firewall) &&\n remoteAddress &&\n hasSameAddr(p.nat.addresses, remoteAddress)\n ) {\n await p.ping(peerAddress)\n if (p.destroyed) return null\n }\n\n // Remote said they are punching (or willing to), so we will punch as well.\n // Note that this returns when the punching has STARTED, so no guarantee\n // we will have a connection after this promise etc.\n if (p.remoteHolepunching) {\n // TODO: still continue here if a local connection might work, but then do not holepunch...\n if (!this.holepunch(p.remoteFirewall, p.nat.firewall, p.remoteAddresses, p.nat.addresses)) {\n return p.destroyed ? null : this._abort(h)\n }\n\n if (h.prepunching) {\n clearTimeout(h.prepunching)\n h.prepunching = null\n }\n\n if (p.remoteFirewall >= FIREWALL.RANDOM || p.nat.firewall >= FIREWALL.RANDOM) {\n if (\n this.dht._randomPunches >= this.dht._randomPunchLimit ||\n Date.now() - this.dht._lastRandomPunch < this.dht._randomPunchInterval\n ) {\n if (!h.relayToken) return this._abort(h, ERROR.TRY_LATER)\n return {\n socket: p.socket,\n payload: h.payload.encrypt({\n error: ERROR.TRY_LATER,\n firewall: p.nat.firewall,\n round: h.round,\n connected: p.connected,\n punching: p.punching,\n addresses: p.nat.addresses,\n remoteAddress: null,\n token: isServerRelay ? token : null,\n remoteToken: remotePayload.token\n })\n }\n }\n }\n\n const punching = await p.punch()\n if (p.destroyed) return null\n if (!punching) return this._abort(h)\n }\n\n // Freeze that analysis as soon as we have a result we are giving to the other peer\n if (p.nat.firewall !== FIREWALL.UNKNOWN) {\n p.nat.freeze()\n }\n\n return {\n socket: p.socket,\n payload: h.payload.encrypt({\n error: ERROR.NONE,\n firewall: p.nat.firewall,\n round: h.round,\n connected: p.connected,\n punching: p.punching,\n addresses: p.nat.addresses,\n remoteAddress: null,\n token: isServerRelay ? token : null,\n remoteToken: remotePayload.token\n })\n }\n }\n\n _abort(h, error = ERROR.ABORTED) {\n if (!h.payload) {\n if (h.puncher) h.puncher.destroy()\n return null\n }\n\n const payload = h.payload.encrypt({\n error,\n firewall: FIREWALL.UNKNOWN,\n round: h.round,\n connected: false,\n punching: false,\n addresses: null,\n remoteAddress: null,\n token: null,\n remoteToken: null\n })\n\n if (h.puncher) h.puncher.destroy()\n\n return { socket: this.dht.socket, payload }\n }\n\n _relayConnection(hs, relayThrough, remotePayload, h) {\n this.dht.stats.relaying.attempts++\n\n let isInitiator\n let publicKey\n let token\n\n if (relayThrough) {\n isInitiator = true\n publicKey = relayThrough\n token = hs.relayToken\n } else {\n isInitiator = false\n publicKey = remotePayload.relayThrough.publicKey\n token = remotePayload.relayThrough.token\n }\n\n hs.relayToken = token\n hs.relaySocket = this.dht.connect(publicKey)\n hs.relaySocket.setKeepAlive(this.relayKeepAlive)\n hs.relayClient = relay.Client.from(hs.relaySocket, { id: hs.relaySocket.publicKey })\n hs.relayTimeout = setTimeout(onabort, 15000)\n\n hs.relayClient\n .pair(isInitiator, token, hs.rawStream)\n .on('error', onabort)\n .on('data', (remoteId) => {\n if (hs.relayTimeout) clearRelayTimeout(hs)\n if (hs.rawStream === null) {\n onabort(null)\n return\n }\n\n hs.relayPaired = true\n this.dht.stats.relaying.successes++\n\n if (hs.prepunching) clearTimeout(hs.prepunching)\n hs.prepunching = null\n\n const { remotePort, remoteHost, socket } = hs.relaySocket.rawStream\n\n hs.rawStream\n .on('close', () => destroyRelayConnection(hs))\n .connect(socket, remoteId, remotePort, remoteHost)\n\n hs.encryptedSocket = this.createSecretStream(false, hs.rawStream, {\n handshake: h,\n keepAlive: this.dht.connectionKeepAlive\n })\n\n this.onconnection(hs.encryptedSocket)\n })\n\n const dht = this.dht\n function onabort() {\n if (!hs.relayPaired) dht.stats.relaying.aborts++\n destroyRelayConnection(hs)\n if (hs.aborted && hs.rawStream) hs.rawStream.destroy()\n }\n }\n}\n\nfunction isConsistent(fw) {\n return fw === FIREWALL.OPEN || fw === FIREWALL.CONSISTENT\n}\n\nfunction hasSameAddr(addrs, other) {\n if (addrs === null) return false\n\n for (const addr of addrs) {\n if (addr.port === other.port && addr.host === other.host) return true\n }\n return false\n}\n\nfunction defaultCreateHandshake(keyPair, remotePublicKey) {\n return new NoiseWrap(keyPair, remotePublicKey)\n}\n\nfunction defaultCreateSecretStream(isInitiator, rawStream, opts) {\n return new NoiseSecretStream(isInitiator, rawStream, opts)\n}\n\nfunction setupHolepuncher(dht, hs, remoteFirewall, onabort) {\n if (hs.puncher) return\n\n hs.puncher = new Holepuncher(dht, dht.session(), false, remoteFirewall)\n hs.puncher.onconnect = hs.onsocket\n hs.puncher.onabort = onabort\n}\n\nfunction isRelay(relaySocket, socket, port, host) {\n const stream = relaySocket.rawStream\n if (!stream) return false\n if (stream.socket !== socket) return false\n return port === stream.remotePort && host === stream.remoteHost\n}\n\nfunction selectRelay(relayThrough) {\n if (typeof relayThrough === 'function') relayThrough = relayThrough()\n if (relayThrough === null) return null\n if (Array.isArray(relayThrough)) {\n return relayThrough[Math.floor(Math.random() * relayThrough.length)]\n }\n return relayThrough\n}\n\nfunction noop() {}\nmodule.exports = class Sleeper {\n constructor() {\n this._timeout = null\n this._resolve = null\n\n this._start = (resolve) => {\n this._resolve = resolve\n }\n\n this._trigger = () => {\n if (this._resolve === null) return\n const resolve = this._resolve\n this._timeout = null\n this._resolve = null\n resolve()\n }\n }\n\n pause(ms) {\n const p = new Promise(this._start)\n if (this._timeout !== null) {\n clearTimeout(this._timeout)\n this._trigger()\n }\n this._timeout = setTimeout(this._trigger, ms)\n return p\n }\n\n resume() {\n if (this._timeout !== null) {\n clearTimeout(this._timeout)\n this._trigger()\n }\n }\n}\nconst b4a = require('b4a')\n\nconst LINGER_TIME = 3000\n\nmodule.exports = class SocketPool {\n constructor(dht, host) {\n this._dht = dht\n this._sockets = new Map()\n this._lingering = new Set() // updated by the ref\n this._host = host\n\n this.routes = new SocketRoutes(this)\n }\n\n _onmessage(ref, data, address) {\n this._dht.onmessage(ref.socket, data, address)\n }\n\n _add(ref) {\n this._sockets.set(ref.socket, ref)\n }\n\n _remove(ref) {\n this._sockets.delete(ref.socket)\n this._lingering.delete(ref)\n }\n\n lookup(socket) {\n return this._sockets.get(socket) || null\n }\n\n setReusable(socket, bool) {\n const ref = this.lookup(socket)\n if (ref) ref.reusable = bool\n }\n\n acquire() {\n // TODO: Enable socket reuse\n return new SocketRef(this)\n }\n\n async destroy() {\n const closing = []\n\n for (const ref of this._sockets.values()) {\n ref._unlinger()\n closing.push(ref.socket.close())\n }\n\n await Promise.allSettled(closing)\n }\n}\n\nclass SocketRoutes {\n constructor(pool) {\n this._pool = pool\n this._routes = new Map()\n }\n\n add(publicKey, rawStream) {\n if (rawStream.socket) this._onconnect(publicKey, rawStream)\n else rawStream.on('connect', this._onconnect.bind(this, publicKey, rawStream))\n }\n\n get(publicKey) {\n const id = b4a.toString(publicKey, 'hex')\n const route = this._routes.get(id)\n if (!route) return null\n return route\n }\n\n _onconnect(publicKey, rawStream) {\n const id = b4a.toString(publicKey, 'hex')\n const socket = rawStream.socket\n\n let route = this._routes.get(id)\n\n if (!route) {\n const gc = () => {\n if (this._routes.get(id) === route) this._routes.delete(id)\n socket.removeListener('close', gc)\n }\n\n route = {\n socket,\n address: { host: rawStream.remoteHost, port: rawStream.remotePort },\n gc\n }\n\n this._routes.set(id, route)\n socket.on('close', gc)\n }\n\n this._pool.setReusable(socket, true)\n\n rawStream.on('error', () => {\n this._pool.setReusable(socket, false)\n if (!route) route = this._routes.get(id)\n if (route && route.socket === socket) route.gc()\n })\n }\n}\n\n// TODO: we should just make some \"user data\" object on udx to allow to attach this info\nclass SocketRef {\n constructor(pool) {\n this._pool = pool\n\n // Events\n this.onholepunchmessage = noop\n\n // Whether it should teardown immediately or wait a bit\n this.reusable = false\n\n this.socket = pool._dht.udx.createSocket()\n this.socket\n .on('close', this._onclose.bind(this))\n .on('message', this._onmessage.bind(this))\n .on('idle', this._onidle.bind(this))\n .on('busy', this._onbusy.bind(this))\n .bind(0, this._pool._host)\n\n this._refs = 1\n this._released = false\n this._closed = false\n\n this._timeout = null\n this._wasBusy = false\n\n this._pool._add(this)\n }\n\n _onclose() {\n this._pool._remove(this)\n }\n\n _onmessage(data, address) {\n if (data.byteLength > 1) {\n this._pool._onmessage(this, data, address)\n } else {\n this.onholepunchmessage(data, address, this)\n }\n }\n\n _onidle() {\n this._closeMaybe()\n }\n\n _onbusy() {\n this._wasBusy = true\n this._unlinger()\n }\n\n _reset() {\n this.onholepunchmessage = noop\n }\n\n _closeMaybe() {\n if (this._refs === 0 && this.socket.idle && !this._timeout) this._close()\n }\n\n _lingeringClose() {\n this._pool._lingering.delete(this)\n this._timeout = null\n this._closeMaybe()\n }\n\n _close() {\n this._unlinger()\n\n if (this.reusable && this._wasBusy) {\n this._wasBusy = false\n this._pool._lingering.add(this)\n this._timeout = setTimeout(this._lingeringClose.bind(this), LINGER_TIME)\n return\n }\n\n this._closed = true\n this.socket.close()\n }\n\n _unlinger() {\n if (this._timeout !== null) {\n clearTimeout(this._timeout)\n this._pool._lingering.delete(this)\n this._timeout = null\n }\n }\n\n get free() {\n return this._refs === 0\n }\n\n active() {\n this._refs++\n this._unlinger()\n }\n\n inactive() {\n this._refs--\n this._closeMaybe()\n }\n\n address() {\n return this.socket.address()\n }\n\n release() {\n if (this._released) return\n\n this._released = true\n this._reset()\n\n this._refs--\n this._closeMaybe()\n }\n}\n\nfunction noop() {}\n{\n \"name\": \"hyperdht\",\n \"version\": \"6.33.0\",\n \"description\": \"The DHT powering Hyperswarm\",\n \"main\": \"index.js\",\n \"browser\": \"browser.js\",\n \"bin\": {\n \"hyperdht\": \"./bin.js\"\n },\n \"files\": [\n \"index.js\",\n \"browser.js\",\n \"testnet.js\",\n \"bin.js\",\n \"lib/**.js\"\n ],\n \"imports\": {\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n },\n \"child_process\": {\n \"bare\": \"bare-node-child-process\",\n \"default\": \"child_process\"\n }\n },\n \"dependencies\": {\n \"@hyperswarm/secret-stream\": \"^6.6.2\",\n \"b4a\": \"^1.3.1\",\n \"bare-events\": \"^2.2.0\",\n \"blind-relay\": \"^1.3.0\",\n \"bogon\": \"^1.0.0\",\n \"compact-encoding\": \"^3.0.0\",\n \"dht-rpc\": \"^6.15.1\",\n \"hypercore-crypto\": \"^3.3.0\",\n \"hypercore-id-encoding\": \"^1.2.0\",\n \"hyperdht-address\": \"^1.0.1\",\n \"noise-curve-ed\": \"^2.0.0\",\n \"noise-handshake\": \"^4.0.0\",\n \"record-cache\": \"^1.1.1\",\n \"safety-catch\": \"^1.0.1\",\n \"signal-promise\": \"^1.0.3\",\n \"sodium-universal\": \"^5.0.1\",\n \"streamx\": \"^2.16.1\",\n \"unslab\": \"^1.3.0\",\n \"xache\": \"^1.1.0\"\n },\n \"devDependencies\": {\n \"bare-node-child-process\": \"^1.0.1\",\n \"brittle\": \"^3.0.0\",\n \"graceful-goodbye\": \"^1.3.0\",\n \"newline-decoder\": \"^1.0.2\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"test\": \"prettier --check . && node test/all.js\",\n \"test:bare\": \"bare test/all.js\",\n \"test:generate\": \"brittle -r test/all.js test/*.js\",\n \"integration\": \"brittle test/integration/*.js\",\n \"end-to-end\": \"brittle test/end-to-end/*.js\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"directories\": {\n \"lib\": \"lib\",\n \"test\": \"test\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/hyperdht.git\"\n },\n \"keywords\": [],\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hyperdht/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hyperdht#readme\"\n}\nconst ERRORS = {\n NONEXISTENT_ROUTE: 'NONEXISTENT_ROUTE',\n HANDLER_NOT_FOUND_BY_ID: 'HANDLER_NOT_FOUND_BY_ID',\n ROUTE_NOT_FOUND_BY_NAME: 'ROUTE_NOT_FOUND_BY_NAME'\n}\n\nclass DispatchError extends Error {\n constructor(code, message, fn = DispatchError) {\n super(message ? `${code}: ${message}` : code)\n this.code = code\n this.isDispatchError = true\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n static isDispatchError(err) {\n return err?.isDispatchError === true\n }\n\n static NONEXISTENT_ROUTE(name) {\n return new DispatchError(ERRORS.NONEXISTENT_ROUTE, name, DispatchError.NONEXISTENT_ROUTE)\n }\n\n static HANDLER_NOT_FOUND_BY_ID(id) {\n return new DispatchError(\n ERRORS.HANDLER_NOT_FOUND_BY_ID,\n id,\n DispatchError.HANDLER_NOT_FOUND_BY_ID\n )\n }\n\n static ROUTE_NOT_FOUND_BY_NAME(name) {\n return new DispatchError(\n ERRORS.ROUTE_NOT_FOUND_BY_NAME,\n name,\n DispatchError.ROUTE_NOT_FOUND_BY_NAME\n )\n }\n}\n\nmodule.exports = {\n DispatchError,\n ERRORS\n}\n{\n \"name\": \"hyperdispatch\",\n \"version\": \"1.6.0\",\n \"description\": \"Generate operations/endpoints using Hyperschema\",\n \"main\": \"index.js\",\n \"files\": [\n \"lib/*.js\",\n \"builder.mjs\",\n \"builder.cjs\",\n \"runtime.mjs\",\n \"runtime.cjs\"\n ],\n \"imports\": {\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n },\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"fs/*\": {\n \"bare\": \"bare-fs/*\",\n \"default\": \"fs/*\"\n }\n },\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"import\": \"./builder.mjs\",\n \"require\": \"./builder.cjs\"\n },\n \"./runtime\": {\n \"import\": \"./runtime.mjs\",\n \"require\": \"./runtime.cjs\"\n }\n },\n \"scripts\": {\n \"format\": \"prettier . --write\",\n \"test\": \"prettier . --check && brittle test/index.js && npm run example:rebuild\",\n \"example:rebuild\": \"node example.js && node example.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/hyperdispatch.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hyperdispatch/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hyperdispatch#readme\",\n \"devDependencies\": {\n \"brittle\": \"^3.7.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"test-tmp\": \"^1.3.0\",\n \"which-runtime\": \"^1.3.0\"\n },\n \"dependencies\": {\n \"b4a\": \"^1.6.7\",\n \"bare-fs\": \"^4.2.3\",\n \"bare-path\": \"^3.0.0\",\n \"compact-encoding\": \"^3.0.0\",\n \"generate-string\": \"^1.0.1\",\n \"hyperschema\": \"^1.3.2\",\n \"nanoassert\": \"^2.0.0\"\n }\n}\nconst { DispatchError, ERRORS } = require('./lib/errors.js')\n\nmodule.exports = {\n c: require('compact-encoding'),\n b4a: require('b4a'),\n assert: require('nanoassert'),\n DispatchError,\n ERRORS\n}\nconst Hyperbee = require('hyperbee')\nconst Hyperblobs = require('hyperblobs')\nconst isOptions = require('is-options')\nconst { Writable, Readable } = require('streamx')\nconst unixPathResolve = require('unix-path-resolve')\nconst MirrorDrive = require('mirror-drive')\nconst SubEncoder = require('sub-encoder')\nconst ReadyResource = require('ready-resource')\nconst safetyCatch = require('safety-catch')\nconst crypto = require('hypercore-crypto')\nconst Hypercore = require('hypercore')\nconst { BLOCK_NOT_AVAILABLE, BAD_ARGUMENT } = require('hypercore-errors')\nconst Monitor = require('./lib/monitor')\nconst Download = require('./lib/download')\n\nconst keyEncoding = new SubEncoder('files', 'utf-8')\n\nconst [BLOBS] = crypto.namespace('hyperdrive', 1)\n\nmodule.exports = class Hyperdrive extends ReadyResource {\n constructor(corestore, key, opts = {}) {\n super()\n\n if (isOptions(key)) {\n opts = key\n key = null\n }\n\n this.corestore = corestore\n this.db = opts._db || makeBee(key, corestore, opts)\n this.core = this.db.core\n this.blobs = null\n this.supportsMetadata = true\n this.encryptionKey = opts.encryptionKey || null\n this.monitors = new Set()\n\n this._active = opts.active !== false\n this._openingBlobs = null\n this._onwait = opts.onwait || null\n this._batching = !!(opts._checkout === null && opts._db)\n this._checkout = opts._checkout || null\n this._sessions = opts._sessions || new Set()\n this._sessions.add(this)\n\n this.ready().catch(safetyCatch)\n }\n\n [Symbol.asyncIterator]() {\n return this.entries()[Symbol.asyncIterator]()\n }\n\n static async getDriveKey(corestore) {\n const core = makeBee(undefined, corestore)\n await core.ready()\n const key = core.key\n await core.close()\n return key\n }\n\n static getContentKey(m, key) {\n if (m instanceof Hypercore) {\n if (m.core.compat) return null\n return Hyperdrive.getContentKey(m.manifest, m.key)\n }\n\n const manifest = generateContentManifest(m, key)\n if (!manifest) return null\n\n return Hypercore.key(manifest)\n }\n\n static getContentManifest(m, key) {\n return generateContentManifest(m, key)\n }\n\n _generateBlobsManifest() {\n const m = this.db.core.manifest\n if (this.db.core.core.compat) return null\n\n return generateContentManifest(m, this.core.key)\n }\n\n get id() {\n return this.core.id\n }\n\n get key() {\n return this.core.key\n }\n\n get discoveryKey() {\n return this.core.discoveryKey\n }\n\n get contentKey() {\n return this.blobs?.core.key\n }\n\n get version() {\n return this.db.version\n }\n\n get writable() {\n return this.core.writable\n }\n\n get readable() {\n return this.core.readable\n }\n\n findingPeers() {\n return this.corestore.findingPeers()\n }\n\n async truncate(version, { blobs = -1 } = {}) {\n if (!this.opened) await this.ready()\n\n if (version > this.core.length) {\n throw BAD_ARGUMENT('Bad truncation length')\n }\n\n const blobsVersion = blobs === -1 ? await this.getBlobsLength(version) : blobs\n const bl = await this.getBlobs()\n\n if (blobsVersion > bl.core.length) {\n throw BAD_ARGUMENT('Bad truncation length')\n }\n\n await this.core.truncate(version)\n await bl.core.truncate(blobsVersion)\n }\n\n async getBlobsLength(checkout) {\n if (!this.opened) await this.ready()\n\n if (!checkout) checkout = this.version\n\n const c = this.db.checkout(checkout)\n\n try {\n return await getBlobsLength(c)\n } finally {\n await c.close()\n }\n }\n\n replicate(isInitiator, opts) {\n return this.corestore.replicate(isInitiator, opts)\n }\n\n update(opts) {\n return this.db.update(opts)\n }\n\n _makeCheckout(snapshot) {\n return new Hyperdrive(this.corestore, this.key, {\n onwait: this._onwait,\n encryptionKey: this.encryptionKey,\n _checkout: this._checkout || this,\n _db: snapshot,\n _sessions: this._sessions\n })\n }\n\n checkout(version) {\n return this._makeCheckout(this.db.checkout(version))\n }\n\n batch() {\n return new Hyperdrive(this.corestore, this.key, {\n onwait: this._onwait,\n encryptionKey: this.encryptionKey,\n _checkout: null,\n _db: this.db.batch(),\n _sessions: this._sessions\n })\n }\n\n setActive(bool) {\n const active = !!bool\n if (active === this._active) return\n this._active = active\n this.core.setActive(active)\n if (this.blobs) this.blobs.core.setActive(active)\n }\n\n async flush() {\n await this.db.flush()\n return this.close()\n }\n\n async _close() {\n if (this.blobs && (!this._checkout || this.blobs !== this._checkout.blobs)) {\n await this.blobs.core.close()\n }\n\n await this.db.close()\n\n if (!this._checkout && !this._batching) {\n const all = this._sessions.size > 1 ? [...this._sessions] : []\n for (const s of all) {\n if (s === this) continue\n try {\n await s.close()\n } catch {}\n }\n\n await this.corestore.close()\n }\n\n await this.closeMonitors()\n this._sessions.delete(this)\n }\n\n async _openBlobsFromHeader(opts) {\n if (this.blobs) return true\n\n const header = await getBee(this.db).getHeader(opts)\n if (!header) return false\n\n if (this.blobs) return true\n\n const contentKey =\n header.metadata && header.metadata.contentFeed && header.metadata.contentFeed.subarray(0, 32)\n const blobsKey = contentKey || Hypercore.key(this._generateBlobsManifest())\n if (!blobsKey || blobsKey.length < 32) throw new Error('Invalid or no Blob store key set')\n\n const blobsCore = this.corestore.get({\n key: blobsKey,\n cache: false,\n onwait: this._onwait,\n encryptionKey: this.encryptionKey,\n keyPair: !contentKey && this.db.core.writable ? this.db.core.keyPair : null,\n active: this._active\n })\n await blobsCore.ready()\n\n if (this.closing) {\n await blobsCore.close()\n return false\n }\n\n this.blobs = new Hyperblobs(blobsCore)\n\n this.emit('blobs', this.blobs)\n this.emit('content-key', blobsCore.key)\n\n return true\n }\n\n async _open() {\n if (this._checkout) {\n await this._checkout.ready()\n this.blobs = this._checkout.blobs\n return\n }\n\n await this._openBlobsFromHeader({ wait: false })\n\n if (this.db.core.writable && !this.blobs) {\n const m = this._generateBlobsManifest()\n const blobsCore = this.corestore.get({\n manifest: m,\n name: m ? null : this.db.core.id + '/blobs', // simple trick to avoid blobs clashing if no namespace is provided...\n cache: false,\n onwait: this._onwait,\n encryptionKey: this.encryptionKey,\n compat: this.db.core.core.compat,\n active: this._active,\n keyPair: m && this.db.core.writable ? this.db.core.keyPair : null\n })\n await blobsCore.ready()\n\n this.blobs = new Hyperblobs(blobsCore)\n\n if (!m) getBee(this.db).metadata.contentFeed = this.blobs.core.key\n\n this.emit('blobs', this.blobs)\n this.emit('content-key', blobsCore.key)\n }\n\n await this.db.ready()\n\n if (!this.blobs) {\n // eagerly load the blob store....\n this._openingBlobs = this._openBlobsFromHeader()\n this._openingBlobs.catch(safetyCatch)\n }\n }\n\n async getBlobs() {\n if (this.blobs) return this.blobs\n\n if (this._checkout) {\n this.blobs = await this._checkout.getBlobs()\n } else {\n await this.ready()\n await this._openingBlobs\n }\n\n return this.blobs\n }\n\n monitor(name, opts = {}) {\n const monitor = new Monitor(this, { name, ...opts })\n this.monitors.add(monitor)\n return monitor\n }\n\n async closeMonitors() {\n const closing = []\n for (const monitor of this.monitors) closing.push(monitor.close())\n await Promise.allSettled(closing)\n }\n\n async get(name, opts) {\n const node = await this.entry(name, opts)\n if (!node?.value.blob) return null\n await this.getBlobs()\n const res = await this.blobs.get(node.value.blob, opts)\n\n if (res === null) throw BLOCK_NOT_AVAILABLE()\n return res\n }\n\n async putEntry(name, { executable = false, linkname = null, blob = null, metadata = null } = {}) {\n return this.db.put(std(name, false), { executable, linkname, blob, metadata }, { keyEncoding })\n }\n\n async put(name, buf, { executable = false, metadata = null } = {}) {\n await this.getBlobs()\n const blob = await this.blobs.put(buf)\n return this.db.put(\n std(name, false),\n { executable, linkname: null, blob, metadata },\n { keyEncoding }\n )\n }\n\n async del(name) {\n return this.db.del(std(name, false), { keyEncoding })\n }\n\n compare(a, b) {\n const diff = a.seq - b.seq\n return diff > 0 ? 1 : diff < 0 ? -1 : 0\n }\n\n async clear(name, opts) {\n if (!this.opened) await this.ready()\n\n let node = null\n\n try {\n node = await this.entry(name, { wait: false })\n } catch {\n // do nothing, prop not available\n }\n\n if (node === null || this.blobs === null) {\n return opts && opts.diff ? { blocks: 0 } : null\n }\n\n return this.blobs.clear(node.value.blob, opts)\n }\n\n async clearAll(opts) {\n if (!this.opened) await this.ready()\n\n if (this.blobs === null) {\n return opts && opts.diff ? { blocks: 0 } : null\n }\n\n return this.blobs.core.clear(0, this.blobs.core.length, opts)\n }\n\n async purge() {\n if (this._checkout || this._batch) throw new Error('Can only purge the main session')\n\n await this.ready() // Ensure blobs loaded if present\n await this.close()\n\n const proms = [this.core.purge()]\n if (this.blobs) proms.push(this.blobs.core.purge())\n await Promise.all(proms)\n }\n\n async symlink(name, dst, { metadata = null } = {}) {\n return this.db.put(\n std(name, false),\n { executable: false, linkname: dst, blob: null, metadata },\n { keyEncoding }\n )\n }\n\n async entry(name, opts) {\n if (!opts || !opts.follow) return this._entry(name, opts)\n\n for (let i = 0; i < 16; i++) {\n const node = await this._entry(name, opts)\n if (!node || !node.value.linkname) return node\n\n name = unixPathResolve(node.key, node.value.linkname)\n }\n\n throw new Error('Recursive symlink')\n }\n\n async _entry(name, opts) {\n if (typeof name !== 'string') return name\n\n return this.db.get(std(name, false), { ...opts, keyEncoding })\n }\n\n async exists(name) {\n return (await this.entry(name)) !== null\n }\n\n watch(folder) {\n folder = std(folder || '/', true)\n\n return this.db.watch(prefixRange(folder), {\n keyEncoding,\n map: (snap) => this._makeCheckout(snap)\n })\n }\n\n diff(length, folder, opts) {\n if (typeof folder === 'object' && folder && !opts) return this.diff(length, null, folder)\n\n folder = std(folder || '/', true)\n\n return this.db.createDiffStream(length, prefixRange(folder), {\n ...opts,\n keyEncoding\n })\n }\n\n async downloadDiff(length, folder, opts) {\n const dls = []\n\n for await (const entry of this.diff(length, folder, opts)) {\n if (!entry.left) continue\n const b = entry.left.value.blob\n if (!b) continue\n const blobs = await this.getBlobs()\n dls.push(blobs.core.download({ start: b.blockOffset, length: b.blockLength }))\n }\n\n return new Download(this, null, { downloads: dls })\n }\n\n async downloadRange(dbRanges, blobRanges) {\n const dls = []\n\n await this.ready()\n\n for (const range of dbRanges) {\n dls.push(this.db.core.download(range))\n }\n\n const blobs = await this.getBlobs()\n\n for (const range of blobRanges) {\n dls.push(blobs.core.download(range))\n }\n\n return new Download(this, null, { downloads: dls })\n }\n\n entries(range, opts) {\n const stream = this.db.createReadStream(range, { ...opts, keyEncoding })\n if (opts && opts.ignore) stream._readableState.map = createStreamMapIgnore(opts.ignore)\n return stream\n }\n\n download(folder = '/', opts) {\n if (typeof folder === 'object') return this.download(undefined, folder)\n\n return new Download(this, folder, opts)\n }\n\n async has(path) {\n const blobs = await this.getBlobs()\n const entry = !path || path.endsWith('/') ? null : await this.entry(path)\n if (entry) {\n const blob = entry.value.blob\n if (!blob) return false\n return this._hasEntry(blobs, blob)\n }\n let isDir = false\n for await (const entry of this.list(path)) {\n isDir = true\n const blob = entry.value.blob\n if (!blob) continue\n const has = await this._hasEntry(blobs, blob)\n if (!has) return false\n }\n return isDir\n }\n\n // atm always recursive, but we should add some depth thing to it\n list(folder, opts = {}) {\n if (typeof folder === 'object' && folder !== null) return this.list(undefined, folder)\n\n folder = std(folder || '/', true)\n\n const ignore = opts.ignore ? toIgnoreFunction(opts.ignore) : null\n const stream =\n opts && opts.recursive === false\n ? shallowReadStream(this.db, folder, false, ignore, opts)\n : this.entries(prefixRange(folder), { ...opts, ignore })\n return stream\n }\n\n readdir(folder, opts) {\n folder = std(folder || '/', true)\n return shallowReadStream(this.db, folder, true, null, opts)\n }\n\n mirror(out, opts) {\n return new MirrorDrive(this, out, opts)\n }\n\n createReadStream(name, opts) {\n const self = this\n\n let destroyed = false\n let rs = null\n\n const stream = new Readable({\n open(cb) {\n self.getBlobs().then(onblobs, cb)\n\n function onblobs() {\n self.entry(name).then(onnode, cb)\n }\n\n function onnode(node) {\n if (destroyed) return cb(null)\n if (!node) return cb(new Error('Blob does not exist'))\n if (self.closing) return cb(new Error('Closed'))\n\n if (!node.value.blob || node.value.blob.byteLength === 0) {\n stream.push(null)\n return cb(null)\n }\n\n rs = self.blobs.createReadStream(node.value.blob, opts)\n\n rs.on('data', function (data) {\n if (!stream.push(data)) rs.pause()\n })\n\n rs.on('end', function () {\n stream.push(null)\n })\n\n rs.on('error', function (err) {\n stream.destroy(err)\n })\n\n cb(null)\n }\n },\n read(cb) {\n rs.resume()\n cb(null)\n },\n predestroy() {\n destroyed = true\n if (rs) rs.destroy()\n }\n })\n\n return stream\n }\n\n createWriteStream(name, { executable = false, metadata = null, dedup = false } = {}) {\n const self = this\n\n let destroyed = false\n let ws = null\n let ondrain = null\n let onfinish = null\n\n async function open() {\n await self.getBlobs()\n if (destroyed) return\n\n if (dedup) {\n const entry = await self.entry(name)\n ws = self.blobs.createWriteStream({ dedup: true, blob: entry && entry.value.blob })\n } else {\n ws = self.blobs.createWriteStream()\n }\n\n ws.on('error', function (err) {\n stream.destroy(err)\n })\n\n ws.on('close', function () {\n const err = new Error('Closed')\n callOndrain(err)\n callOnfinish(err)\n })\n\n ws.on('finish', function () {\n callOnfinish(null)\n })\n\n ws.on('drain', function () {\n callOndrain(null)\n })\n }\n\n const stream = new Writable({\n open(cb) {\n open().then(cb, cb)\n },\n write(data, cb) {\n if (ws.write(data) === true) return cb(null)\n ondrain = cb\n },\n final(cb) {\n onfinish = cb\n ws.end()\n },\n predestroy() {\n destroyed = true\n if (ws) ws.destroy()\n }\n })\n\n return stream\n\n function callOnfinish(err) {\n if (!onfinish) return\n\n const cb = onfinish\n onfinish = null\n\n if (err) return cb(err)\n self.db\n .put(\n std(name, false),\n { executable, linkname: null, blob: ws.id, metadata },\n { keyEncoding }\n )\n .then(() => cb(null), cb)\n }\n\n function callOndrain(err) {\n if (ondrain) {\n const cb = ondrain\n ondrain = null\n cb(err)\n }\n }\n }\n\n async _hasEntry(blobs, blob) {\n if (blob.blockMap) {\n const hasMap = await blobs.core.has(blob.blockOffset, blob.blockOffset + blob.blockLength)\n if (!hasMap) return false\n\n const map = await blobs.getBlockMap(blob)\n for (const block of map.blocks) {\n const has = await blobs.core.has(block.index)\n if (!has) return false\n }\n return true\n } else {\n return blobs.core.has(blob.blockOffset, blob.blockOffset + blob.blockLength)\n }\n }\n\n static normalizePath(name) {\n return std(name, false)\n }\n}\n\nfunction shallowReadStream(files, folder, keys, ignore, opts) {\n let prev = '/'\n let prevName = ''\n\n return new Readable({\n async read(cb) {\n let node = null\n\n try {\n node = await files.peek(prefixRange(folder, prev), {\n ...opts,\n keyEncoding\n })\n } catch (err) {\n return cb(err)\n }\n\n if (!node) {\n this.push(null)\n return cb(null)\n }\n\n const suffix = node.key.slice(folder.length + 1)\n const i = suffix.indexOf('/')\n const name = i === -1 ? suffix : suffix.slice(0, i)\n\n prev = '/' + name + (i === -1 ? '' : '0')\n\n // just in case someone does /foo + /foo/bar, but we should prop not even support that\n if (name === prevName) {\n this._read(cb)\n return\n }\n\n prevName = name\n\n if (ignore && ignore(node.key)) {\n this._read(cb)\n return\n }\n\n this.push(keys ? name : node)\n cb(null)\n }\n })\n}\n\nfunction makeBee(key, corestore, opts = {}) {\n const name = key ? undefined : 'db'\n const core = corestore.get({\n key,\n name,\n exclusive: true,\n onwait: opts.onwait,\n encryptionKey: opts.encryptionKey,\n compat: opts.compat,\n active: opts.active\n })\n\n return new Hyperbee(core, {\n keyEncoding: 'utf-8',\n valueEncoding: 'json',\n metadata: { contentFeed: null },\n extension: opts.extension\n })\n}\n\nfunction getBee(bee) {\n // A Batch instance will have a .tree property for the actual Hyperbee\n return bee.tree || bee\n}\n\nfunction std(name, removeSlash) {\n // Note: only remove slash if you're going to use it as prefix range\n name = unixPathResolve('/', name)\n if (removeSlash && name.endsWith('/')) name = name.slice(0, -1)\n validateFilename(name)\n return name\n}\n\nfunction validateFilename(name) {\n if (name === '/') throw new Error('Invalid filename: ' + name)\n}\n\nfunction prefixRange(name, prev = '/') {\n // '0' is binary +1 of /\n return { gt: name + prev, lt: name + '0' }\n}\n\nfunction generateContentManifest(m, key) {\n if (m.version < 1) return null\n\n const signers = []\n\n if (!key) key = Hypercore.key(m)\n\n for (const s of m.signers) {\n const namespace = crypto.hash([BLOBS, key, s.namespace])\n signers.push({ ...s, namespace })\n }\n\n return {\n version: m.version,\n hash: 'blake2b',\n allowPatch: m.allowPatch,\n quorum: m.quorum,\n signers,\n prologue: null // TODO: could be configurable through the header still...\n }\n}\n\nasync function getBlobsLength(db) {\n let length = 0\n\n // Prefetch db core\n await db.ready() // Ensure length is loaded\n await db.core.download({ start: 0, end: db.core.length }).done()\n\n for await (const { value } of db.createReadStream()) {\n const b = value && value.blob\n if (!b) continue\n const len = b.blockOffset + b.blockLength\n if (len > length) length = len\n }\n\n return length\n}\n\nfunction toIgnoreFunction(ignore) {\n if (typeof ignore === 'function') return ignore\n\n const all = [].concat(ignore).map((e) => unixPathResolve('/', e))\n return (key) => all.some((path) => path === key || key.startsWith(path + '/'))\n}\n\nfunction createStreamMapIgnore(ignore) {\n return (node) => (ignore(node.key) ? null : node)\n}\nconst ReadyResource = require('ready-resource')\n\nmodule.exports = class Download extends ReadyResource {\n constructor(drive, folder, options) {\n super()\n\n this.drive = drive\n this.folder = folder\n this.options = options || {}\n this.downloads = this.options.downloads || []\n this._cancelled = new Promise((resolve) => {\n this._cancel = resolve\n })\n this.ready().catch(noop)\n }\n\n async _open() {\n const drive = this.drive\n const blobs = await drive.getBlobs()\n\n const entry =\n !this.folder || this.folder.endsWith('/')\n ? null\n : await drive.entry(this.folder, this.options)\n\n if (entry) {\n const blob = entry.value.blob\n if (!blob) return\n\n if (blob.blockMap) {\n const mapDownload = await this._cancellableDownload(\n this.constructor.downloadEntryMap(blobs, blob)\n )\n if (!mapDownload) return\n }\n\n const download = await this.constructor.downloadEntry(blobs, blob)\n this.downloads.push(download)\n return\n }\n\n if (this.folder !== null) {\n // first preload the list so we can use the full power afterwards to actually preload everything\n // eslint-disable-next-line\n for await (const _ of drive.list(this.folder, this.options)) {\n // ignore\n }\n\n const maps = []\n const entries = []\n for await (const entry of drive.list(this.folder, this.options)) {\n const blob = entry.value.blob\n if (!blob) continue\n if (blob.blockMap && blob.blockLength) {\n maps.push(blobs.core.download({ start: blob.blockOffset, length: blob.blockLength }))\n }\n entries.push(entry) // cache entries\n }\n\n const results = await Promise.all(maps.map((m) => this._cancellableDownload(m)))\n if (results.includes(false)) return\n\n for (const entry of entries) {\n const blob = entry.value.blob\n const download = await this.constructor.downloadEntry(blobs, blob)\n this.downloads.push(download)\n }\n }\n }\n\n static downloadEntryMap(blobs, blob) {\n return blobs.core.download({ start: blob.blockOffset, length: blob.blockLength })\n }\n\n static async downloadEntry(blobs, blob) {\n if (blob.blockMap) {\n const map = await blobs.getBlockMap(blob)\n const blocks = []\n for (const block of map.blocks) blocks.push(block.index)\n\n const download = blobs.core.download({ blocks })\n await download.ready()\n return download\n } else {\n const download = blobs.core.download({\n start: blob.blockOffset,\n length: blob.blockLength\n })\n await download.ready()\n return download\n }\n }\n\n async _cancellableDownload(download) {\n return Promise.race([\n download.done().then(() => true),\n this._cancelled.then(() => {\n download.destroy()\n return false\n })\n ])\n }\n\n _close() {\n for (const d of this.downloads) {\n d.destroy()\n }\n }\n\n destroy() {\n this.destroyed = true\n this._cancel()\n this._safeBackgroundDestroy()\n }\n\n async _safeBackgroundDestroy() {\n try {\n await this.ready()\n } catch {}\n\n await this.close()\n }\n\n async done() {\n await this.ready()\n await Promise.allSettled(this.downloads.map((d) => d.done()))\n }\n}\n\nfunction noop() {}\nconst ReadyResource = require('ready-resource')\nconst safetyCatch = require('safety-catch')\nconst speedometer = require('speedometer')\n\nmodule.exports = class Monitor extends ReadyResource {\n constructor(drive, opts = {}) {\n super()\n this.drive = drive\n this.blobs = null\n this.name = opts.name || null\n this.entry = opts.entry || null\n this.peers = 0\n\n this._boundOnUpload = this._onUpload.bind(this)\n this._boundOnDownload = this._onDownload.bind(this)\n this._boundPeerUpdate = this._updatePeers.bind(this)\n\n const stats = {\n startTime: 0,\n percentage: 0,\n peers: 0,\n speed: 0,\n blocks: 0,\n totalBytes: 0, // local + bytes loaded during monitoring\n monitoringBytes: 0, // bytes loaded during monitoring\n targetBytes: 0,\n targetBlocks: 0\n }\n\n // Updated on each upload/download event\n this.uploadStats = { ...stats }\n this.downloadStats = { ...stats }\n\n this.uploadSpeedometer = null\n this.downloadSpeedometer = null\n\n this.ready().catch(safetyCatch)\n }\n\n async _open() {\n await this.drive.ready()\n this.blobs = await this.drive.getBlobs()\n if (!this.entry && this.name) this.entry = await this.drive.entry(this.name)\n if (this.entry) this._setEntryInfo()\n\n this.uploadSpeedometer = speedometer()\n this.downloadSpeedometer = speedometer()\n\n this._updatePeers()\n\n // Handlers\n this.blobs.core.on('peer-add', this._boundPeerUpdate)\n this.blobs.core.on('peer-remove', this._boundPeerUpdate)\n this.blobs.core.on('upload', this._boundOnUpload)\n this.blobs.core.on('download', this._boundOnDownload)\n\n if (!this.entry) {\n this.drive.db.core.on('peer-add', this._boundPeerUpdate)\n this.drive.db.core.on('peer-remove', this._boundPeerUpdate)\n this.drive.db.core.on('upload', this._boundOnUpload)\n this.drive.db.core.on('download', this._boundOnDownload)\n }\n }\n\n async _close() {\n this.blobs.core.off('peer-add', this._boundPeerUpdate)\n this.blobs.core.off('peer-remove', this._boundPeerUpdate)\n this.blobs.core.off('upload', this._boundOnUpload)\n this.blobs.core.off('download', this._boundOnDownload)\n\n if (!this.entry) {\n this.drive.db.core.off('peer-add', this._boundPeerUpdate)\n this.drive.db.core.off('peer-remove', this._boundPeerUpdate)\n this.drive.db.core.off('upload', this._boundOnUpload)\n this.drive.db.core.off('download', this._boundOnDownload)\n }\n\n this.drive.monitors.delete(this)\n }\n\n _setEntryInfo() {\n if (!this.downloadStats.targetBytes || !this.downloadStats.targetBlocks) {\n this.downloadStats.targetBytes = this.entry.value.blob.byteLength\n this.downloadStats.targetBlocks = this.entry.value.blob.blockLength\n }\n\n if (!this.uploadStats.targetBytes || !this.uploadStats.targetBlocks) {\n this.uploadStats.targetBytes = this.entry.value.blob.byteLength\n this.uploadStats.targetBlocks = this.entry.value.blob.blockLength\n }\n }\n\n _onUpload(index, bytes, from) {\n this._updateStats(this.uploadSpeedometer, this.uploadStats, index, bytes, from)\n }\n\n _onDownload(index, bytes, from) {\n this._updateStats(this.downloadSpeedometer, this.downloadStats, index, bytes, from)\n }\n\n _updatePeers() {\n this.uploadStats.peers = this.downloadStats.peers = this.peers = this.blobs.core.peers.length\n }\n\n _updateStats(speed, stats, index, bytes, from) {\n if (this.closing) return\n if (this.entry && !isWithinRange(index, this.entry)) return\n\n if (!stats.startTime) stats.startTime = Date.now()\n\n stats.speed = speed(bytes)\n stats.blocks++\n stats.monitoringBytes += bytes\n stats.totalBytes += bytes\n // NOTE: you should not rely on the percentage until the monitor is initialized with the local state of the file\n stats.percentage = toFixed((stats.blocks / stats.targetBlocks) * 100)\n\n this.emit('update')\n }\n\n downloadSpeed() {\n return this.downloadSpeedometer ? this.downloadSpeedometer() : 0\n }\n\n uploadSpeed() {\n return this.uploadSpeedometer ? this.uploadSpeedometer() : 0\n }\n}\n\nfunction isWithinRange(index, entry) {\n if (!entry || !entry.value) return\n const { blockOffset, blockLength } = entry.value.blob\n return index >= blockOffset && index < blockOffset + blockLength\n}\n\nfunction toFixed(n) {\n return Math.round(n * 100) / 100\n}\n{\n \"name\": \"hyperdrive\",\n \"version\": \"13.3.3\",\n \"description\": \"Hyperdrive is a secure, real-time distributed file system\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"lib/**.js\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/hyperdrive.git\"\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:bare\": \"brittle-bare --coverage test.js\",\n \"test:node\": \"brittle-node --coverage test.js\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hyperdrive/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hyperdrive#readme\",\n \"dependencies\": {\n \"hyperbee\": \"^2.11.1\",\n \"hyperblobs\": \"^2.9.0\",\n \"hypercore\": \"^11.0.0\",\n \"hypercore-errors\": \"^1.0.0\",\n \"is-options\": \"^1.0.2\",\n \"mirror-drive\": \"^1.2.0\",\n \"ready-resource\": \"^1.0.0\",\n \"safety-catch\": \"^1.0.2\",\n \"speedometer\": \"^1.1.0\",\n \"streamx\": \"^2.12.4\",\n \"sub-encoder\": \"^2.1.1\",\n \"unix-path-resolve\": \"^1.0.2\"\n },\n \"devDependencies\": {\n \"b4a\": \"^1.6.0\",\n \"bare-events\": \"^2.5.4\",\n \"bare-fs\": \"^4.1.2\",\n \"bare-path\": \"^3.0.0\",\n \"brittle\": \"^3.1.0\",\n \"corestore\": \"^7.0.0\",\n \"debugging-stream\": \"^3.1.0\",\n \"hypercore-crypto\": \"^3.4.0\",\n \"hyperdht\": \"^6.6.0\",\n \"hyperswarm\": \"^4.0.0\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"test-tmp\": \"^1.3.0\"\n },\n \"imports\": {\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n },\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n }\n }\n}\n{\n \"name\": \"hyperschema\",\n \"version\": \"1.21.0\",\n \"description\": \"Create registries of declarative compact-encoding schemas\",\n \"files\": [\n \"lib/*.js\",\n \"builder.mjs\",\n \"builder.cjs\",\n \"runtime.mjs\",\n \"runtime.cjs\",\n \"primitives.mjs\",\n \"primitives.cjs\"\n ],\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"import\": \"./builder.mjs\",\n \"default\": \"./builder.cjs\"\n },\n \"./runtime\": {\n \"import\": \"./runtime.mjs\",\n \"default\": \"./runtime.cjs\"\n },\n \"./primitives\": {\n \"import\": \"./primitives.mjs\",\n \"default\": \"./primitives.cjs\"\n }\n },\n \"imports\": {\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n }\n },\n \"scripts\": {\n \"format\": \"prettier . --write\",\n \"test\": \"prettier . --check && brittle test/index.js\",\n \"test:bare\": \"prettier . --check && bare test/index.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/hyperschema.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hyperschema/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hyperschema#readme\",\n \"dependencies\": {\n \"bare-fs\": \"^4.0.1\",\n \"compact-encoding\": \"^3.0.0\",\n \"generate-object-property\": \"^2.0.0\",\n \"generate-string\": \"^1.0.1\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.7.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"test-tmp\": \"^1.3.0\"\n }\n}\nmodule.exports = {\n c: require('compact-encoding')\n}\nconst { EventEmitter } = require('events')\nconst { getStreamError } = require('streamx')\nconst DHT = require('hyperdht')\nconst spq = require('shuffled-priority-queue')\nconst b4a = require('b4a')\nconst unslab = require('unslab')\n\nconst PeerInfo = require('./lib/peer-info')\nconst RetryTimer = require('./lib/retry-timer')\nconst ConnectionSet = require('./lib/connection-set')\nconst PeerDiscovery = require('./lib/peer-discovery')\n\nconst MAX_PEERS = 64\nconst MAX_PARALLEL = 3\nconst MAX_CLIENT_CONNECTIONS = Infinity // TODO: Change\nconst MAX_SERVER_CONNECTIONS = Infinity\n\nconst ERR_MISSING_TOPIC = 'Topic is required and must be a 32-byte buffer'\nconst ERR_DESTROYED = 'Swarm has been destroyed'\nconst ERR_DUPLICATE = 'Duplicate connection'\nconst ERR_FIREWALL = 'Peer is firewalled'\n\nmodule.exports = class Hyperswarm extends EventEmitter {\n constructor(opts = {}) {\n super()\n const {\n seed,\n relayThrough,\n keyPair = DHT.keyPair(seed),\n maxPeers = MAX_PEERS,\n maxClientConnections = MAX_CLIENT_CONNECTIONS,\n maxServerConnections = MAX_SERVER_CONNECTIONS,\n maxParallel = MAX_PARALLEL,\n firewall = allowAll\n } = opts\n this.keyPair = keyPair\n\n this.dht =\n opts.dht ||\n new DHT({\n bootstrap: opts.bootstrap,\n nodes: opts.nodes,\n port: opts.port,\n deferRandomPunch: opts.deferRandomPunch,\n randomPunchInterval: opts.randomPunchInterval\n })\n this.server = this.dht.createServer(\n {\n firewall: this._handleFirewall.bind(this),\n relayThrough: this._maybeRelayConnection.bind(this),\n handshakeClearWait: opts.handshakeClearWait\n },\n this._handleServerConnection.bind(this)\n )\n\n this.destroyed = false\n this.suspended = false\n this.maxPeers = maxPeers\n this.maxClientConnections = maxClientConnections\n this.maxServerConnections = maxServerConnections\n this.maxParallel = maxParallel\n this.relayThrough = relayThrough ? toRelayFunction(relayThrough) : null\n\n this.connecting = 0\n this.connections = new Set()\n this.peers = new Map()\n this.explicitPeers = new Set()\n this.listening = null\n this.stats = {\n updates: 0,\n connects: {\n client: {\n opened: 0,\n closed: 0,\n attempted: 0\n },\n server: {\n // Note: there is no notion of 'attempts' for server connections\n opened: 0,\n closed: 0\n }\n },\n bannedPeers: 0\n }\n\n this._discovery = new Map()\n this._timer = new RetryTimer(this._requeue.bind(this), {\n backoffs: opts.backoffs,\n jitter: opts.jitter\n })\n this._queue = spq()\n\n this._allConnections = new ConnectionSet()\n this._pendingFlushes = []\n this._flushTick = 0\n\n this._drainingQueue = false\n this._clientConnections = 0\n this._serverConnections = 0\n this._firewall = firewall\n\n this.dht.on('network-change', this._handleNetworkChange.bind(this))\n this.dht.on('network-update', this._handleNetworkUpdate.bind(this))\n this.on('update', this._handleUpdate)\n }\n\n _maybeRelayConnection(force) {\n if (!this.relayThrough) return null\n return this.relayThrough(force, this)\n }\n\n _enqueue(peerInfo) {\n if (peerInfo.queued) return\n peerInfo.queued = true\n peerInfo._flushTick = this._flushTick\n this._queue.add(peerInfo)\n\n this._attemptClientConnections()\n }\n\n _requeue(batch) {\n if (this.suspended) return\n for (const peerInfo of batch) {\n peerInfo.waiting = false\n\n if (\n peerInfo._updatePriority() === false ||\n this._allConnections.has(peerInfo.publicKey) ||\n peerInfo.queued\n ) {\n continue\n }\n peerInfo.queued = true\n peerInfo._flushTick = this._flushTick\n this._queue.add(peerInfo)\n }\n\n this._attemptClientConnections()\n }\n\n _flushMaybe(peerInfo) {\n for (let i = 0; i < this._pendingFlushes.length; i++) {\n const flush = this._pendingFlushes[i]\n if (peerInfo._flushTick > flush.tick) continue\n if (--flush.missing > 0) continue\n flush.onflush(true)\n this._pendingFlushes.splice(i--, 1)\n }\n }\n\n _withinMaxPeers() {\n const e = this.explicitPeers.size\n const factor = e === 0 ? 1 : e < 2 ? 2 : e < 4 ? 3 : 4\n return factor * this._allConnections.size < this.maxPeers\n }\n\n _flushAllMaybe() {\n if (\n this.connecting > 0 ||\n (this._withinMaxPeers() && this._clientConnections < this.maxClientConnections)\n ) {\n return false\n }\n\n while (this._pendingFlushes.length) {\n const flush = this._pendingFlushes.pop()\n flush.onflush(true)\n }\n\n return true\n }\n\n _shouldConnectExplicit() {\n return !this.destroyed && !this.suspended && this.connecting < this.maxParallel\n }\n\n _shouldConnect() {\n return (\n !this.destroyed &&\n !this.suspended &&\n this.connecting < this.maxParallel &&\n this._withinMaxPeers() &&\n this._clientConnections < this.maxClientConnections\n )\n }\n\n _shouldRequeue(peerInfo) {\n if (this.suspended) return false\n if (peerInfo.explicit) return true\n for (const topic of peerInfo.topics) {\n if (this._discovery.has(b4a.toString(topic, 'hex')) && !this.destroyed) {\n return true\n }\n }\n return false\n }\n\n _connect(peerInfo, queued) {\n if (peerInfo.banned || this._allConnections.has(peerInfo.publicKey)) {\n if (queued) this._flushMaybe(peerInfo)\n return\n }\n\n // TODO: Support async firewalling at some point.\n if (this._handleFirewall(peerInfo.publicKey, null)) {\n if (queued) this._flushMaybe(peerInfo)\n return\n }\n\n const relayThrough = this._maybeRelayConnection(peerInfo.forceRelaying)\n const conn = this.dht.connect(peerInfo.publicKey, {\n relayAddresses: peerInfo.relayAddresses,\n keyPair: this.keyPair,\n relayThrough\n })\n this._allConnections.add(conn)\n\n this.stats.connects.client.attempted++\n\n this.connecting++\n this._clientConnections++\n let opened = false\n\n const onerror = (err) => {\n if (this.relayThrough && shouldForceRelaying(err.code)) {\n peerInfo.forceRelaying = true\n // Reset the attempts in order to fast connect to relay\n peerInfo.attempts = 0\n }\n }\n\n // Removed once a connection is opened\n conn.on('error', onerror)\n\n conn.on('open', () => {\n opened = true\n this.stats.connects.client.opened++\n\n this._connectDone()\n this.connections.add(conn)\n conn.removeListener('error', onerror)\n peerInfo._connected()\n peerInfo.client = true\n this.emit('connection', conn, peerInfo)\n if (queued) this._flushMaybe(peerInfo)\n\n this.emit('update')\n })\n conn.on('close', () => {\n if (!opened) this._connectDone()\n this.stats.connects.client.closed++\n\n const err = getStreamError(conn)\n if (shouldBan(err)) {\n this._banPeer(peerInfo, true, err)\n }\n\n this.connections.delete(conn)\n this._allConnections.delete(conn)\n this._clientConnections--\n peerInfo._disconnected()\n\n peerInfo.waiting = this._shouldRequeue(peerInfo) && this._timer.add(peerInfo)\n this._maybeDeletePeer(peerInfo)\n\n if (!opened && queued) this._flushMaybe(peerInfo)\n\n this._attemptClientConnections()\n\n this.emit('update')\n })\n\n this.emit('update')\n }\n\n _connectDone() {\n this.connecting--\n\n if (this.connecting < this.maxParallel) this._attemptClientConnections()\n if (this.connecting === 0) this._flushAllMaybe()\n }\n\n // Called when the PeerQueue indicates a connection should be attempted.\n _attemptClientConnections() {\n // Guard against re-entries - unsure if it still needed but doesn't hurt\n if (this._drainingQueue || this.suspended) return\n this._drainingQueue = true\n\n for (const peerInfo of this.explicitPeers) {\n if (!this._shouldConnectExplicit()) break\n if (\n peerInfo.attempts >= 5 ||\n Date.now() - peerInfo.disconnectedTime < peerInfo.attempts * 1000\n ) {\n continue\n }\n this._connect(peerInfo, false)\n }\n\n while (this._queue.length && this._shouldConnect()) {\n const peerInfo = this._queue.shift()\n peerInfo.queued = false\n this._connect(peerInfo, true)\n }\n this._drainingQueue = false\n if (this.connecting === 0) this._flushAllMaybe()\n }\n\n _handleFirewall(remotePublicKey, payload) {\n if (b4a.equals(remotePublicKey, this.keyPair.publicKey)) return true\n\n let peerInfo = this.peers.get(b4a.toString(remotePublicKey, 'hex'))\n if (peerInfo && peerInfo.banned) return true\n\n const firewalled = this._firewall(remotePublicKey, payload)\n if (firewalled) {\n if (!peerInfo) peerInfo = this._upsertPeer(remotePublicKey)\n this._banPeer(peerInfo, true, new Error(ERR_FIREWALL))\n }\n\n return firewalled\n }\n\n _handleServerConnectionSwap(existing, conn) {\n let closed = false\n\n existing.on('close', () => {\n if (closed) return\n\n conn.removeListener('error', noop)\n conn.removeListener('close', onclose)\n\n this._handleServerConnection(conn)\n })\n\n conn.on('error', noop)\n conn.on('close', onclose)\n\n function onclose() {\n closed = true\n }\n }\n\n // Called when the DHT receives a new server connection.\n _handleServerConnection(conn) {\n if (this.destroyed || this.suspended) {\n // TODO: Investigate why a final server connection can be received after close\n conn.on('error', noop)\n return conn.destroy(ERR_DESTROYED)\n }\n\n const existing = this._allConnections.get(conn.remotePublicKey)\n\n if (existing) {\n // If both connections are from the same peer,\n // - pick the new one if the existing stream is already established (has sent and received bytes),\n // because the other client must have lost that connection and be reconnecting\n // - otherwise, pick the one thats expected to initiate in a tie break\n const existingIsOutdated = existing.rawBytesRead > 0 && existing.rawBytesWritten > 0\n const expectedInitiator = b4a.compare(conn.publicKey, conn.remotePublicKey) > 0\n const keepNew = existingIsOutdated || expectedInitiator === conn.isInitiator\n\n if (keepNew === false) {\n existing.sendKeepAlive()\n conn.on('error', noop)\n conn.destroy(new Error(ERR_DUPLICATE))\n return\n }\n\n existing.on('error', noop)\n existing.destroy(new Error(ERR_DUPLICATE))\n this._handleServerConnectionSwap(existing, conn)\n return\n }\n\n // When reaching here, the connection will always be 'opened' next tick\n this.stats.connects.server.opened++\n\n const peerInfo = this._upsertPeer(conn.remotePublicKey, null)\n\n this.connections.add(conn)\n this._allConnections.add(conn)\n this._serverConnections++\n\n conn.on('close', () => {\n const err = getStreamError(conn)\n if (shouldBan(err)) {\n this._banPeer(peerInfo, true, err)\n }\n\n this.connections.delete(conn)\n this._allConnections.delete(conn)\n this._serverConnections--\n this.stats.connects.server.closed++\n\n this._maybeDeletePeer(peerInfo)\n\n this._attemptClientConnections()\n\n this.emit('update')\n })\n peerInfo.client = false\n this.emit('connection', conn, peerInfo)\n\n this.emit('update')\n }\n\n _upsertPeer(publicKey, relayAddresses) {\n if (b4a.equals(publicKey, this.keyPair.publicKey)) return null\n const keyString = b4a.toString(publicKey, 'hex')\n let peerInfo = this.peers.get(keyString)\n\n if (peerInfo) {\n peerInfo.relayAddresses = relayAddresses // new is always better\n return peerInfo\n }\n\n peerInfo = new PeerInfo({\n publicKey,\n relayAddresses\n })\n\n this.peers.set(keyString, peerInfo)\n return peerInfo\n }\n\n _handleUpdate() {\n this.stats.updates++\n }\n\n _maybeDeletePeer(peerInfo) {\n if (!peerInfo.shouldGC()) return\n\n const hasActiveConn = this._allConnections.has(peerInfo.publicKey)\n if (hasActiveConn) return\n\n const keyString = b4a.toString(peerInfo.publicKey, 'hex')\n this.peers.delete(keyString)\n }\n\n /*\n * Called when a peer is actively discovered during a lookup.\n *\n * Three conditions:\n * 1. Not a known peer -- insert into queue\n * 2. A known peer with normal priority -- do nothing\n * 3. A known peer with low priority -- bump priority, because it's been rediscovered\n */\n _handlePeer(peer, topic) {\n const peerInfo = this._upsertPeer(peer.publicKey, peer.relayAddresses)\n if (peerInfo) peerInfo._topic(topic)\n if (!peerInfo || this._allConnections.has(peer.publicKey)) return\n if (!peerInfo.prioritized || peerInfo.server) peerInfo._reset()\n if (peerInfo._updatePriority()) {\n this._enqueue(peerInfo)\n }\n }\n\n async _handleNetworkUpdate() {\n if (!this.online) return\n this._handleNetworkChange()\n }\n\n async _handleNetworkChange() {\n if (this.suspended) return\n\n // prioritize figuring out if existing connections are dead\n for (const conn of this._allConnections) {\n conn.sendKeepAlive()\n }\n\n const refreshes = []\n\n for (const discovery of this._discovery.values()) {\n refreshes.push(discovery.refresh())\n }\n\n await Promise.allSettled(refreshes)\n }\n\n _banPeer(peerInfo, banned, err) {\n peerInfo.ban(banned)\n this.stats.bannedPeers++\n this.emit('ban', peerInfo, err)\n }\n\n status(key) {\n return this._discovery.get(b4a.toString(key, 'hex')) || null\n }\n\n listen() {\n if (!this.listening) {\n if (this.destroyed) throw new Error('Swarm destroyed')\n this.listening = this.server.listen(this.keyPair)\n }\n return this.listening\n }\n\n // Object that exposes a cancellation method (destroy)\n // TODO: When you rejoin, it should reannounce + bump lookup priority\n join(topic, opts = {}) {\n if (this.destroyed) throw new Error('Swarm destroyed')\n if (!topic) throw new Error(ERR_MISSING_TOPIC)\n topic = unslab(topic)\n\n const topicString = b4a.toString(topic, 'hex')\n\n let discovery = this._discovery.get(topicString)\n\n if (discovery && !discovery.destroyed) {\n return discovery.session(opts)\n }\n\n discovery = new PeerDiscovery(this, topic, {\n limit: opts.limit,\n wait: discovery ? discovery.destroy() : null,\n suspended: this.suspended,\n onpeer: (peer) => this._handlePeer(peer, topic)\n })\n this._discovery.set(topicString, discovery)\n return discovery.session(opts)\n }\n\n // Returns a promise\n async leave(topic) {\n if (!topic) throw new Error(ERR_MISSING_TOPIC)\n const topicString = b4a.toString(topic, 'hex')\n if (!this._discovery.has(topicString)) return Promise.resolve()\n\n const discovery = this._discovery.get(topicString)\n\n try {\n await discovery.destroy()\n } catch {\n // ignore, prop network\n }\n\n if (this._discovery.get(topicString) === discovery) {\n this._discovery.delete(topicString)\n }\n }\n\n joinPeer(publicKey) {\n const peerInfo = this._upsertPeer(publicKey, null)\n if (!peerInfo) return\n if (!this.explicitPeers.has(peerInfo)) {\n peerInfo.explicit = true\n this.explicitPeers.add(peerInfo)\n }\n if (this._allConnections.has(publicKey)) return\n if (peerInfo._updatePriority()) {\n this._enqueue(peerInfo)\n }\n }\n\n leavePeer(publicKey) {\n const keyString = b4a.toString(publicKey, 'hex')\n if (!this.peers.has(keyString)) return\n\n const peerInfo = this.peers.get(keyString)\n peerInfo.explicit = false\n this.explicitPeers.delete(peerInfo)\n this._maybeDeletePeer(peerInfo)\n }\n\n // Returns a promise\n async flush() {\n const allFlushed = [...this._discovery.values()].map((v) => v.flushed())\n await Promise.all(allFlushed)\n if (this._flushAllMaybe()) return true\n const pendingSize = this._allConnections.size - this.connections.size\n if (!this._queue.length && !pendingSize) return true\n return new Promise((resolve) => {\n this._pendingFlushes.push({\n onflush: resolve,\n missing: this._queue.length + pendingSize,\n tick: this._flushTick++\n })\n })\n }\n\n async clear() {\n const cleared = Promise.allSettled([...this._discovery.values()].map((d) => d.destroy()))\n this._discovery.clear()\n return cleared\n }\n\n async destroy({ force } = {}) {\n if (this.destroyed && !force) return\n this.destroyed = true\n\n this._timer.destroy()\n\n if (!force) await this.clear()\n\n await this.server.close()\n\n while (this._pendingFlushes.length) {\n const flush = this._pendingFlushes.pop()\n flush.onflush(false)\n }\n\n await this.dht.destroy({ force })\n }\n\n async suspend({ log = noop } = {}) {\n if (this.suspended) return\n\n const promises = []\n\n promises.push(this.server.suspend({ log }))\n\n for (const discovery of this._discovery.values()) {\n promises.push(discovery.suspend({ log }))\n }\n\n const pending = []\n for (const connection of this._allConnections) {\n connection.destroy()\n pending.push(new Promise((resolve) => connection.on('close', resolve)))\n }\n\n this.suspended = true\n\n log('Suspending server and discovery... (' + promises.length + ')')\n await Promise.allSettled(promises)\n log('Done, suspending the dht...')\n await this.dht.suspend({ log })\n log('Done, swarm fully suspended')\n\n await Promise.all(pending)\n\n // reset queue\n this._timer.destroy()\n this._timer = new RetryTimer(this._requeue.bind(this), {\n backoffs: this._timer.backoffs,\n jitter: this._timer.jitter\n })\n this._queue = spq()\n }\n\n async resume({ log = noop } = {}) {\n if (!this.suspended) return\n\n log('Resuming the dht')\n await this.dht.resume()\n log('Done, resuming the server')\n await this.server.resume()\n log('Done, all discovery')\n\n for (const discovery of this._discovery.values()) {\n discovery.resume()\n }\n\n this.suspended = false\n this._attemptClientConnections()\n }\n\n topics() {\n return this._discovery.values()\n }\n}\n\nfunction noop() {}\n\nfunction allowAll() {\n return false\n}\n\nfunction shouldForceRelaying(code) {\n return (\n code === 'HOLEPUNCH_ABORTED' ||\n code === 'HOLEPUNCH_DOUBLE_RANDOMIZED_NATS' ||\n code === 'REMOTE_NOT_HOLEPUNCHABLE'\n )\n}\n\nfunction shouldBan() {\n // return !!err && err.name === 'HypercoreError' && err.code === 'INVALID_OPERATION'\n return false\n}\n\nfunction toRelayFunction(relayThrough) {\n return typeof relayThrough === 'function'\n ? relayThrough\n : (force, swarm) => (force || swarm.dht.randomized ? relayThrough : null)\n}\nmodule.exports = class BulkTimer {\n constructor(time, fn) {\n this._time = time\n this._fn = fn\n this._interval = null\n this._next = []\n this._pending = []\n this._destroyed = false\n }\n\n destroy() {\n if (this._destroyed) return\n this._destroyed = true\n clearInterval(this._interval)\n this._interval = null\n }\n\n _ontick() {\n if (!this._next.length && !this._pending.length) return\n if (this._next.length) this._fn(this._next)\n this._next = this._pending\n this._pending = []\n }\n\n add(info) {\n if (this._destroyed) return\n if (!this._interval) {\n this._interval = setInterval(this._ontick.bind(this), Math.floor(this._time * 0.66))\n }\n\n this._pending.push(info)\n }\n}\nconst b4a = require('b4a')\n\nmodule.exports = class ConnectionSet {\n constructor() {\n this._byPublicKey = new Map()\n }\n\n [Symbol.iterator]() {\n return this._byPublicKey.values()\n }\n\n get size() {\n return this._byPublicKey.size\n }\n\n has(publicKey) {\n return this._byPublicKey.has(toHex(publicKey))\n }\n\n get(publicKey) {\n return this._byPublicKey.get(toHex(publicKey))\n }\n\n add(connection) {\n this._byPublicKey.set(b4a.toString(connection.remotePublicKey, 'hex'), connection)\n }\n\n delete(connection) {\n const keyString = b4a.toString(connection.remotePublicKey, 'hex')\n const existing = this._byPublicKey.get(keyString)\n if (existing !== connection) return\n this._byPublicKey.delete(keyString)\n }\n}\n\nfunction toHex(b) {\n return typeof b === 'string' ? b : b4a.toString(b, 'hex')\n}\nconst safetyCatch = require('safety-catch')\nconst b4a = require('b4a')\n\nconst REFRESH_INTERVAL = 1000 * 60 * 10 // 10 min\nconst RANDOM_JITTER = 1000 * 60 * 2 // 2 min\nconst DELAY_GRACE_PERIOD = 1000 * 30 // 30s\n\nconst MAX_DISCOVERY_CACHE = 64\n\nmodule.exports = class PeerDiscovery {\n constructor(\n swarm,\n topic,\n { limit = Infinity, wait = null, suspended = false, onpeer = noop, onerror = safetyCatch }\n ) {\n this.limit = limit\n this.swarm = swarm\n this.topic = topic\n this.isClient = false\n this.isServer = false\n this.destroyed = false\n this.destroying = null\n this.suspended = suspended\n\n this._sessions = []\n this._clientSessions = 0\n this._serverSessions = 0\n\n this._onpeer = onpeer\n this._onerror = onerror\n\n this._discovered = new Set()\n this._activeQuery = null\n this._timer = null\n this._currentRefresh = null\n this._closestNodes = null\n this._firstAnnounce = true\n this._needsUnannounce = false\n this._refreshes = 0\n this._wait = wait\n }\n\n session({ server = true, client = true, limit = Infinity, onerror = safetyCatch }) {\n if (this.destroyed) throw new Error('PeerDiscovery is destroyed')\n const session = new PeerDiscoverySession(this)\n session.refresh({ server, client, limit }).catch(onerror)\n this._sessions.push(session)\n return session\n }\n\n _refreshLater(eager) {\n const jitter = Math.round(Math.random() * RANDOM_JITTER)\n const delay = !eager ? REFRESH_INTERVAL + jitter : jitter\n\n if (this._timer) clearTimeout(this._timer)\n\n const startTime = Date.now()\n this._timer = setTimeout(() => {\n // If your laptop went to sleep, and is coming back online...\n const overdue = Date.now() - startTime > delay + DELAY_GRACE_PERIOD\n if (overdue) this._refreshLater(true)\n else this.refresh().catch(this._onerror)\n }, delay)\n }\n\n _isActive() {\n return !this.destroyed && !this.suspended\n }\n\n // TODO: Allow announce to be an argument to this\n // TODO: Maybe announce should be a setter?\n async _refresh() {\n if (this.suspended) return\n const clock = ++this._refreshes\n\n if (this._wait) {\n await this._wait\n this._wait = null\n if (clock !== this._refreshes || !this._isActive()) return\n }\n\n const clear = this.isServer && this._firstAnnounce\n if (clear) this._firstAnnounce = false\n\n const opts = {\n clear,\n closestNodes: this._closestNodes\n }\n\n if (this.isServer) {\n await this.swarm.listen()\n // if a parallel refresh is happening, yield to the new one\n if (clock !== this._refreshes || !this._isActive()) return\n this._needsUnannounce = true\n }\n\n let limit = this.limit\n\n if (limit < Infinity && limit > 0) {\n for (const id of this._discovered) {\n if (!this.swarm.connections.has(id)) continue\n if (--limit === 0) break\n }\n }\n\n this._discovered.clear()\n\n const announcing = this.isServer\n const query = (this._activeQuery = announcing\n ? this.swarm.dht.announce(\n this.topic,\n this.swarm.keyPair,\n this.swarm.server.relayAddresses,\n opts\n )\n : this._needsUnannounce\n ? this.swarm.dht.lookupAndUnannounce(this.topic, this.swarm.keyPair, opts)\n : this.swarm.dht.lookup(this.topic, opts))\n\n try {\n for await (const data of this._activeQuery) {\n if (!this.isClient || !this._isActive()) continue\n for (const peer of data.peers) {\n if (limit < Infinity) {\n const id = b4a.toString(peer.publicKey, 'hex')\n\n if (this._discovered.size < MAX_DISCOVERY_CACHE) {\n this._discovered.add(id)\n }\n\n if (limit === 0) continue\n\n // there is a chance it has updated a connection during discovery and we go over\n // the limit - thats acceptable to avoid a complexity spiral here.\n if (!this.swarm.connections.has(id)) limit--\n }\n\n this._onpeer(peer, data)\n }\n }\n } catch (err) {\n if (this._isActive()) throw err\n } finally {\n if (this._activeQuery === query) {\n this._activeQuery = null\n if (!this.destroyed && !this.suspended) this._refreshLater(false)\n }\n }\n\n // This is set at the very end, when the query completes successfully.\n this._closestNodes = query.closestNodes\n\n if (clock !== this._refreshes) return\n\n // In this is the latest query, unannounce has been fulfilled as well\n if (!announcing) this._needsUnannounce = false\n }\n\n async refresh() {\n if (this.destroyed) throw new Error('PeerDiscovery is destroyed')\n\n const server = this._serverSessions > 0\n const client = this._clientSessions > 0\n\n if (this.suspended) return\n\n if (server === this.isServer && client === this.isClient) {\n if (this._currentRefresh) return this._currentRefresh\n this._currentRefresh = this._refresh()\n } else {\n if (this._activeQuery) this._activeQuery.destroy()\n this.isServer = server\n this.isClient = client\n this._currentRefresh = this._refresh()\n }\n\n const refresh = this._currentRefresh\n try {\n await refresh\n } catch {\n return false\n } finally {\n if (refresh === this._currentRefresh) {\n this._currentRefresh = null\n }\n }\n\n return true\n }\n\n async flushed() {\n if (this.swarm.listening) await this.swarm.listening\n\n try {\n await this._currentRefresh\n return true\n } catch {\n return false\n }\n }\n\n async _destroyMaybe() {\n if (this.destroyed) return\n\n try {\n if (this._sessions.length === 0) await this.swarm.leave(this.topic)\n else if (this._serverSessions === 0 && this._needsUnannounce) await this.refresh()\n } catch (err) {\n // ignore network failures here, as we are tearing down\n safetyCatch(err)\n }\n }\n\n destroy() {\n if (this.destroying) return this.destroying\n this.destroying = this._destroy()\n return this.destroying\n }\n\n async _abort(log) {\n const id = log === noop ? '' : b4a.toString(this.topic, 'hex')\n\n log('Aborting discovery', id)\n if (this._wait) await this._wait\n log('Aborting discovery (post wait)', id)\n\n if (this._activeQuery) {\n this._activeQuery.destroy()\n this._activeQuery = null\n }\n if (this._timer) {\n clearTimeout(this._timer)\n this._timer = null\n }\n\n let nodes = this._closestNodes\n\n if (this._currentRefresh) {\n try {\n await this._currentRefresh\n } catch {\n // If the destroy causes the refresh to fail, suppress it.\n }\n }\n\n log('Aborting discovery (post refresh)', id)\n if (this._isActive()) return\n\n if (!nodes) nodes = this._closestNodes\n else if (this._closestNodes !== nodes) {\n const len = nodes.length\n for (const newer of this._closestNodes) {\n if (newer.id && !hasNode(nodes, len, newer)) nodes.push(newer)\n }\n }\n\n if (this._needsUnannounce) {\n log('Unannouncing discovery', id)\n if (nodes && nodes.length) {\n await this.swarm.dht.unannounce(this.topic, this.swarm.keyPair, {\n closestNodes: nodes,\n onlyClosestNodes: true,\n force: true\n })\n }\n this._needsUnannounce = false\n log('Unannouncing discovery (done)', id)\n }\n }\n\n _destroy() {\n if (this.destroyed) return\n this.destroyed = true\n return this._abort(noop)\n }\n\n async suspend({ log = noop } = {}) {\n if (this.suspended) return\n this.suspended = true\n try {\n await this._abort(log)\n } catch {\n // ignore\n }\n }\n\n resume() {\n if (!this.suspended) return\n this.suspended = false\n this.refresh().catch(noop)\n }\n}\n\nclass PeerDiscoverySession {\n constructor(discovery) {\n this.discovery = discovery\n this.isClient = false\n this.isServer = false\n this.destroyed = false\n }\n\n get swarm() {\n return this.discovery.swarm\n }\n\n get topic() {\n return this.discovery.topic\n }\n\n async refresh({ client = this.isClient, server = this.isServer, limit = Infinity } = {}) {\n if (this.destroyed) throw new Error('PeerDiscovery is destroyed')\n if (!client && !server) throw new Error('Cannot refresh with neither client nor server option')\n\n if (client !== this.isClient) {\n this.isClient = client\n this.discovery._clientSessions += client ? 1 : -1\n }\n\n if (server !== this.isServer) {\n this.isServer = server\n this.discovery._serverSessions += server ? 1 : -1\n }\n\n this.discovery.limit = limit\n\n return this.discovery.refresh()\n }\n\n async flushed() {\n return this.discovery.flushed()\n }\n\n async destroy() {\n if (this.destroyed) return\n this.destroyed = true\n\n if (this.isClient) this.discovery._clientSessions--\n if (this.isServer) this.discovery._serverSessions--\n\n const index = this.discovery._sessions.indexOf(this)\n const head = this.discovery._sessions.pop()\n\n if (head !== this) this.discovery._sessions[index] = head\n\n return this.discovery._destroyMaybe()\n }\n}\n\nfunction hasNode(nodes, len, node) {\n for (let i = 0; i < len; i++) {\n const existing = nodes[i]\n if (existing.id && b4a.equals(existing.id, node.id)) return true\n }\n\n return false\n}\n\nfunction noop() {}\nconst { EventEmitter } = require('events')\nconst b4a = require('b4a')\nconst unslab = require('unslab')\n\nconst MIN_CONNECTION_TIME = 15000\n\nconst VERY_LOW_PRIORITY = 0\nconst LOW_PRIORITY = 1\nconst NORMAL_PRIORITY = 2\nconst HIGH_PRIORITY = 3\nconst VERY_HIGH_PRIORITY = 4\n\nmodule.exports = class PeerInfo extends EventEmitter {\n constructor({ publicKey, relayAddresses }) {\n super()\n\n this.publicKey = unslab(publicKey)\n this.relayAddresses = relayAddresses\n\n this.reconnecting = true\n this.proven = false\n this.connectedTime = -1\n this.disconnectedTime = 0\n this.banned = false\n this.tried = false\n this.explicit = false\n this.waiting = false\n this.forceRelaying = false\n\n // Set by the Swarm\n this.queued = false\n this.client = false\n this.topics = [] // TODO: remove on next major (check with mafintosh for context)\n\n this.attempts = 0\n this.priority = NORMAL_PRIORITY\n\n // Used by shuffled-priority-queue\n this._index = 0\n\n // Used for flush management\n this._flushTick = 0\n\n // Used for topic multiplexing\n this._seenTopics = new Set()\n }\n\n get server() {\n return !this.client\n }\n\n get prioritized() {\n return this.priority >= NORMAL_PRIORITY\n }\n\n _getPriority() {\n const peerIsStale = this.tried && !this.proven\n if (peerIsStale || this.attempts > 3) return VERY_LOW_PRIORITY\n if (this.attempts === 3) return LOW_PRIORITY\n if (this.attempts === 2) return HIGH_PRIORITY\n if (this.attempts === 1) return VERY_HIGH_PRIORITY\n return NORMAL_PRIORITY\n }\n\n _connected() {\n this.proven = true\n this.connectedTime = Date.now()\n }\n\n _disconnected() {\n this.disconnectedTime = Date.now()\n if (this.connectedTime > -1) {\n if (this.disconnectedTime - this.connectedTime >= MIN_CONNECTION_TIME) this.attempts = 0 // fast retry\n this.connectedTime = -1\n }\n this.attempts++\n }\n\n _deprioritize() {\n this.attempts = 3\n }\n\n _reset() {\n this.client = false\n this.proven = false\n this.tried = false\n this.attempts = 0\n }\n\n _updatePriority() {\n if (this.explicit && this.attempts > 3) this._deprioritize()\n if (this.banned || this.queued || this.attempts > 3) return false\n this.priority = this._getPriority()\n return true\n }\n\n _topic(topic) {\n const topicString = b4a.toString(topic, 'hex')\n if (this._seenTopics.has(topicString)) return\n this._seenTopics.add(topicString)\n this.topics.push(topic)\n this.emit('topic', topic)\n }\n\n reconnect(val) {\n this.reconnecting = !!val\n }\n\n ban(val) {\n this.banned = !!val\n }\n\n shouldGC() {\n return !(this.banned || this.queued || this.explicit || this.waiting)\n }\n}\nconst BulkTimer = require('./bulk-timer')\n\nconst BACKOFF_JITTER = 500\nconst BACKOFF_S = 1000 + Math.round(BACKOFF_JITTER * Math.random())\nconst BACKOFF_M = 5000 + Math.round(2 * BACKOFF_JITTER * Math.random())\nconst BACKOFF_L = 15000 + Math.round(4 * BACKOFF_JITTER * Math.random())\nconst BACKOFF_X = 1000 * 60 * 10 + Math.round(240 * BACKOFF_JITTER * Math.random())\n\nmodule.exports = class RetryTimer {\n constructor(\n push,\n { backoffs = [BACKOFF_S, BACKOFF_M, BACKOFF_L, BACKOFF_X], jitter = BACKOFF_JITTER } = {}\n ) {\n this.jitter = jitter\n this.backoffs = backoffs\n\n this._sTimer = new BulkTimer(backoffs[0] + Math.round(jitter * Math.random()), push)\n this._mTimer = new BulkTimer(backoffs[1] + Math.round(jitter * Math.random()), push)\n this._lTimer = new BulkTimer(backoffs[2] + Math.round(jitter * Math.random()), push)\n this._xTimer = new BulkTimer(backoffs[3] + Math.round(jitter * Math.random()), push)\n }\n\n _selectRetryTimer(peerInfo) {\n if (peerInfo.banned || !peerInfo.reconnecting) return null\n\n if (peerInfo.attempts > 3) {\n return peerInfo.explicit ? this._xTimer : null\n }\n\n if (peerInfo.attempts === 0) return this._sTimer\n if (peerInfo.proven) {\n switch (peerInfo.attempts) {\n case 1:\n return this._sTimer\n case 2:\n return this._mTimer\n case 3:\n return this._lTimer\n }\n } else {\n switch (peerInfo.attempts) {\n case 1:\n return this._mTimer\n case 2:\n return this._lTimer\n case 3:\n return this._lTimer\n }\n }\n\n return null\n }\n\n add(peerInfo) {\n const timer = this._selectRetryTimer(peerInfo)\n if (!timer) return false\n\n timer.add(peerInfo)\n return true\n }\n\n destroy() {\n this._sTimer.destroy()\n this._mTimer.destroy()\n this._lTimer.destroy()\n this._xTimer.destroy()\n }\n}\n{\n \"name\": \"hyperswarm\",\n \"version\": \"4.17.0\",\n \"description\": \"A distributed networking stack for connecting peers\",\n \"files\": [\n \"index.js\",\n \"lib/**.js\"\n ],\n \"imports\": {\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n },\n \"process\": {\n \"bare\": \"bare-process\",\n \"default\": \"process\"\n }\n },\n \"dependencies\": {\n \"b4a\": \"^1.3.1\",\n \"bare-events\": \"^2.2.0\",\n \"hyperdht\": \"^6.21.0\",\n \"safety-catch\": \"^1.0.2\",\n \"shuffled-priority-queue\": \"^2.1.0\",\n \"streamx\": \"^2.22.1\",\n \"unslab\": \"^1.3.0\"\n },\n \"devDependencies\": {\n \"bare-process\": \"^4.2.2\",\n \"brittle\": \"^3.0.2\",\n \"hypercore-crypto\": \"^3.4.0\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"which-runtime\": \"^1.3.2\"\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:generate\": \"brittle -r test/all.js test/*.js\",\n \"test:node\": \"brittle-node --coverage test/*.js\",\n \"test:bare\": \"bare test/all.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/hyperswarm.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"contributors\": [\n \"David Mark Clements (@davidmarkclem)\",\n \"Andrew Osheroff (@andrewosh)\"\n ],\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/hyperswarm/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/hyperswarm\"\n}\nconst b4a = require('b4a')\n\nconst EMPTY = b4a.alloc(0)\nconst MAX = b4a.from([0xff])\nconst BUFFER = {}\n\nBUFFER.preencode = function (state, buf) {\n if (buf === null) buf = EMPTY\n\n let i = 0\n let extra = 3\n\n while ((i = b4a.indexOf(buf, 0x00, i)) > -1) {\n i++\n extra++\n }\n\n state.end += buf.byteLength + extra\n}\n\nBUFFER.encode = function (state, buf) {\n if (buf === null) buf = EMPTY\n\n state.buffer[state.start++] = 0x00\n\n let prev = 0\n let i = 0\n\n while ((i = b4a.indexOf(buf, 0x00, i)) > -1) {\n const slice = buf.subarray(prev, ++i)\n\n state.buffer.set(slice, state.start)\n state.start += slice.byteLength\n state.buffer[state.start++] = 0x02\n prev = i\n }\n\n const slice = buf.subarray(prev)\n\n state.buffer.set(slice, state.start)\n state.start += slice.byteLength\n\n state.buffer[state.start++] = 0x00\n state.buffer[state.start++] = 0x01\n}\n\nBUFFER.decode = function (state) {\n if (state.start >= state.end) throw new Error('Out of bounds')\n if (state.buffer[state.start++] !== 0x00) {\n throw new Error('Invalid start of string')\n }\n\n let escaped = null\n\n let prev = state.start\n let i = state.start\n\n while ((i = b4a.indexOf(state.buffer, 0x00, i)) > -1) {\n const next = ++i < state.end ? state.buffer[i] : 0x00\n\n i++\n\n if (next === 0x01) {\n break\n }\n\n if (next === 0x02) {\n if (escaped === null) escaped = []\n escaped.push(state.buffer.subarray(prev, i - 1))\n prev = i\n continue\n }\n\n throw new Error('Unknown value in terminator')\n }\n\n if (i === -1) {\n throw new Error('No terminator found')\n }\n\n state.start = i\n const last = state.buffer.subarray(prev, i - 2)\n if (escaped === null) return last\n\n escaped.push(last)\n return b4a.concat(escaped)\n}\n\n// TODO: can be optimised a lot\n\nconst STRING = {}\n\nSTRING.preencode = function (state, str) {\n BUFFER.preencode(state, b4a.from(str || ''))\n}\n\nSTRING.encode = function (state, str) {\n BUFFER.encode(state, b4a.from(str || ''))\n}\n\nSTRING.decode = function (state, str) {\n return b4a.toString(BUFFER.decode(state))\n}\n\nconst UINT = {}\n\nUINT.preencode = function (state, n) {\n state.end += n <= 0xfb ? 1 : n <= 0xffff ? 3 : n <= 0xffffffff ? 5 : n === Infinity ? 1 : 9\n}\n\nUINT.encode = function (state, n) {\n if (n === Infinity) {\n state.buffer[state.start++] = 0xff\n return\n }\n\n if (n <= 0xfb) {\n state.buffer[state.start++] = n\n return\n }\n\n if (n <= 0xffff) {\n state.buffer[state.start++] = 0xfc\n state.buffer[state.start++] = n >>> 8\n state.buffer[state.start++] = n\n return\n }\n\n if (n <= 0xffffffff) {\n state.buffer[state.start++] = 0xfd\n encodeUint32(state, n)\n return\n }\n\n if (Number.isSafeInteger(n)) {\n state.buffer[state.start++] = 0xfe\n\n const r = Math.floor(n / 0x100000000)\n encodeUint32(state, r)\n encodeUint32(state, n)\n return\n }\n\n throw new Error('Invalid number ' + n)\n}\n\nUINT.decode = function (state) {\n if (state.start >= state.end) throw new Error('Out of bounds')\n\n const a = state.buffer[state.start++]\n\n if (a <= 0xfb) return a\n\n if (a === 0xfc) {\n if (state.end - state.start < 2) throw new Error('Out of bounds')\n return state.buffer[state.start++] * 0x100 + state.buffer[state.start++]\n }\n\n if (a === 0xfd) {\n return decodeUint32(state)\n }\n\n if (a === 0xfe) {\n return decodeUint32(state) * 0x100000000 + decodeUint32(state)\n }\n\n return Infinity\n}\n\nconst INT = {}\n\nINT.preencode = function (state, n) {\n // One asymmetric condition\n if (n >= -0xff && n < 0) {\n state.end += 2\n return\n }\n n = Math.abs(n)\n state.end += n <= 0xf6 ? 1 : n <= 0xffff ? 3 : n <= 0xffffffff ? 5 : n === Infinity ? 1 : 9\n}\n\nINT.encode = function (state, n) {\n if (n === Infinity) {\n state.buffer[state.start++] = 0xff\n return\n }\n\n if (n === -Infinity) {\n state.buffer[state.start++] = 0x00\n return\n }\n\n // Negative 64 bit\n if (n < -0xffffffff) {\n if (!Number.isSafeInteger(n)) throw new Error('Invalid number ' + n)\n state.buffer[state.start++] = 0x01\n\n const r = Math.floor(-n / 0x100000000)\n encodeUint32(state, -r + 0xffffffff)\n encodeUint32(state, -(-n % 0x100000000) + 0xffffffff)\n return\n }\n\n // Negative 32 bit\n if (n < -0xffff) {\n state.buffer[state.start++] = 0x02\n\n n += 0xffffffff\n encodeUint32(state, n)\n return\n }\n\n // Negative 16bit\n if (n < -0xff) {\n state.buffer[state.start++] = 0x03\n\n n += 0xffff\n state.buffer[state.start++] = n >>> 8\n state.buffer[state.start++] = n\n return\n }\n\n // Negative 8bit\n if (n < 0) {\n state.buffer[state.start++] = 0x04\n\n n += 0xff\n state.buffer[state.start++] = n\n return\n }\n\n // Remainder of 8bit space for positive int\n if (n <= 0xf6) {\n state.buffer[state.start++] = n + 0x05\n return\n }\n\n // Positive 16bit\n if (n <= 0xffff) {\n state.buffer[state.start++] = 0xfc\n state.buffer[state.start++] = n >>> 8\n state.buffer[state.start++] = n\n return\n }\n\n // Positive 32bit\n if (n <= 0xffffffff) {\n state.buffer[state.start++] = 0xfd\n encodeUint32(state, n)\n return\n }\n\n // Positive 64bit\n if (Number.isSafeInteger(n)) {\n state.buffer[state.start++] = 0xfe\n\n const r = Math.floor(n / 0x100000000)\n encodeUint32(state, r)\n encodeUint32(state, n)\n return\n }\n\n throw new Error('Invalid number ' + n)\n}\n\nINT.decode = function (state) {\n if (state.start >= state.end) throw new Error('Out of bounds')\n\n const a = state.buffer[state.start++]\n\n if (a === 0x00) return -Infinity\n\n if (a === 0x01) {\n // Split (2^64 - 1) into its 32 bit components\n // r * 0x100000000 + n - (2^64 - 1)\n // r * 0x100000000 + n - (0xffffffff * 0x100000000) - 0xffffffff\n // (r - 0xffffffff) * 0x100000000 + n - 0xffffffff\n return (decodeUint32(state) - 0xffffffff) * 0x100000000 + decodeUint32(state) - 0xffffffff\n }\n\n if (a === 0x02) {\n return decodeUint32(state) - 0xffffffff\n }\n\n if (a === 0x03) {\n if (state.end - state.start < 2) throw new Error('Out of bounds')\n return state.buffer[state.start++] * 0x100 + state.buffer[state.start++] - 0xffff\n }\n\n if (a === 0x04) return state.buffer[state.start++] - 0xff\n\n if (a <= 0xfb) return a - 0x05\n\n if (a === 0xfc) {\n if (state.end - state.start < 2) throw new Error('Out of bounds')\n return state.buffer[state.start++] * 0x100 + state.buffer[state.start++]\n }\n\n if (a === 0xfd) {\n return decodeUint32(state)\n }\n\n if (a === 0xfe) {\n return decodeUint32(state) * 0x100000000 + decodeUint32(state)\n }\n\n return Infinity\n}\n\nconst DATE = {}\n\nDATE.preencode = (state, d) => INT.preencode(state, d.getTime())\nDATE.encode = (state, d) => INT.encode(state, d.getTime())\nDATE.decode = (state) => new Date(INT.decode(state))\n\nconst BOOL = {}\n\nBOOL.preencode = (state, b) => UINT.preencode(state, b ? 1 : 0)\nBOOL.encode = (state, b) => UINT.encode(state, b ? 1 : 0)\nBOOL.decode = (state) => !!UINT.decode(state)\n\nmodule.exports = class IndexEncoder {\n constructor(encodings, { prefix = -1 } = {}) {\n this.encodings = encodings\n this.prefix = prefix\n }\n\n static BUFFER = BUFFER\n static STRING = STRING\n static UINT = UINT\n static INT = INT\n static DATE = DATE\n static BOOL = BOOL\n\n static lookup(c) {\n switch (c) {\n case 'uint':\n return UINT\n case 'uint8':\n return UINT\n case 'uint16':\n return UINT\n case 'uint24':\n return UINT\n case 'uint32':\n return UINT\n case 'uint40':\n return UINT\n case 'uint48':\n return UINT\n case 'uint56':\n return UINT\n case 'uint64':\n return UINT\n case 'int':\n return INT\n case 'int8':\n return INT\n case 'int16':\n return INT\n case 'int24':\n return INT\n case 'int32':\n return INT\n case 'int40':\n return INT\n case 'int48':\n return INT\n case 'int56':\n return INT\n case 'int64':\n return INT\n case 'string':\n return STRING\n case 'utf8':\n return STRING\n case 'ascii':\n return STRING\n case 'hex':\n return STRING\n case 'base64':\n return STRING\n case 'fixed32':\n return BUFFER\n case 'fixed64':\n return BUFFER\n case 'buffer':\n return BUFFER\n case 'date':\n return DATE\n case 'bool':\n return BOOL\n }\n\n throw new Error('Unknown type')\n }\n\n encode(keys) {\n return this._encode(keys, false)\n }\n\n _encode(keys, terminate) {\n if (b4a.isBuffer(keys)) return keys\n\n const state = { start: 0, end: 0, buffer: null }\n\n if (this.prefix !== -1) UINT.preencode(state, this.prefix)\n for (let i = 0; i < keys.length; i++) {\n this.encodings[i].preencode(state, keys[i])\n }\n\n if (terminate && keys.length < this.encodings.length) {\n state.end++\n }\n\n state.buffer = b4a.allocUnsafe(state.end)\n\n if (this.prefix !== -1) UINT.encode(state, this.prefix)\n for (let i = 0; i < keys.length; i++) {\n this.encodings[i].encode(state, keys[i])\n }\n\n if (terminate && keys.length < this.encodings.length) {\n state.buffer[state.start++] = MAX[0]\n }\n\n return state.buffer\n }\n\n decode(buffer) {\n const state = { start: 0, end: buffer.byteLength, buffer }\n const result = []\n\n if (this.prefix !== -1) UINT.decode(state)\n for (const enc of this.encodings) {\n const key = state.start < state.end ? enc.decode(state) : enc === UINT ? 0 : null\n result.push(key)\n }\n\n return result\n }\n\n encodeRange({ gt, gte, lt, lte }) {\n const range = {\n gt: gt && this._encode(gt, true),\n gte: gte && this._encode(gte, false),\n lt: lt && this._encode(lt, false),\n lte: lte && this._encode(lte, true)\n }\n\n if (this.prefix !== -1) {\n if (!gt && !gte) range.gte = encodeUint(this.prefix)\n if (!lt && !lte) range.lt = encodeUint(this.prefix + 1)\n }\n\n return range\n }\n}\n\nfunction encodeUint(n) {\n const state = { start: 0, end: 0, buffer: null }\n UINT.preencode(state, n)\n state.buffer = b4a.allocUnsafe(state.end)\n UINT.encode(state, n)\n return state.buffer\n}\n\nfunction encodeUint32(state, n) {\n state.buffer[state.start++] = n >>> 24\n state.buffer[state.start++] = n >>> 16\n state.buffer[state.start++] = n >>> 8\n state.buffer[state.start++] = n\n}\n\nfunction decodeUint32(state) {\n if (state.end - state.start < 4) throw new Error('Out of bounds')\n return (\n state.buffer[state.start++] * 0x1000000 +\n state.buffer[state.start++] * 0x10000 +\n state.buffer[state.start++] * 0x100 +\n state.buffer[state.start++]\n )\n}\n{\n \"name\": \"index-encoder\",\n \"version\": \"3.5.0\",\n \"description\": \"Encode multiple values into sorted keys\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"b4a\": \"^1.6.4\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.2.1\",\n \"hyperbee\": \"^2.10.5\",\n \"hypercore\": \"^11.0.0\",\n \"lunte\": \"^1.0.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:node\": \"brittle-node test.js\",\n \"test:bare\": \"brittle-bare test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/index-encoder.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/index-encoder/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/index-encoder\"\n}\nconst b4a = require('b4a')\n\nmodule.exports = function isOptions (opts) {\n return typeof opts === 'object' && opts && !b4a.isBuffer(opts)\n}\n{\n \"name\": \"is-options\",\n \"version\": \"1.0.2\",\n \"description\": \"Easily check if input is an options map\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"b4a\": \"^1.1.1\"\n },\n \"devDependencies\": {\n \"standard\": \"^11.0.1\",\n \"tape\": \"^4.9.0\"\n },\n \"scripts\": {\n \"test\": \"standard && tape test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/is-options.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/is-options/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/is-options\"\n}\nconst { EventEmitter } = require('events')\n\nmodule.exports = class RoutingTable extends EventEmitter {\n constructor (id, opts) {\n if (!opts) opts = {}\n\n super()\n\n this.id = id\n this.k = opts.k || 20\n this.size = 0\n this.rows = new Array(id.length * 8)\n }\n\n add (node) {\n const i = this._diff(node.id)\n\n let row = this.rows[i]\n\n if (!row) {\n row = this.rows[i] = new Row(this, i)\n this.emit('row', row)\n }\n\n const len = row.nodes.length\n if (!row.add(node, this.k)) return false\n\n this.size += row.nodes.length - len\n return true\n }\n\n remove (id) {\n const i = this._diff(id)\n const row = this.rows[i]\n if (!row) return false\n if (!row.remove(id)) return false\n this.size--\n return true\n }\n\n get (id) {\n const i = this._diff(id)\n const row = this.rows[i]\n if (!row) return null\n return row.get(id)\n }\n\n has (id) {\n return this.get(id) !== null\n }\n\n random () {\n let n = (Math.random() * this.size) | 0\n\n for (let i = 0; i < this.rows.length; i++) {\n const r = this.rows[i]\n if (!r) continue\n if (n < r.nodes.length) return r.nodes[n]\n n -= r.nodes.length\n }\n\n return null\n }\n\n closest (id, k) {\n if (!k) k = this.k\n\n const result = []\n const d = this._diff(id)\n\n // push close nodes\n for (let i = d; i >= 0 && result.length < k; i--) this._pushNodes(i, k, result)\n\n // if we don't have enough close nodes, populate from other rows, re the paper\n for (let i = d + 1; i < this.rows.length && result.length < k; i++) this._pushNodes(i, k, result)\n\n return result\n }\n\n _pushNodes (i, k, result) {\n const row = this.rows[i]\n if (!row) return\n\n const missing = Math.min(k - result.length, row.nodes.length)\n for (let j = 0; j < missing; j++) result.push(row.nodes[j])\n }\n\n toArray () {\n return this.closest(this.id, Infinity)\n }\n\n _diff (id) {\n for (let i = 0; i < id.length; i++) {\n const a = id[i]\n const b = this.id[i]\n\n if (a !== b) return i * 8 + Math.clz32(a ^ b) - 24\n }\n\n return this.rows.length - 1\n }\n}\n\nclass Row extends EventEmitter {\n constructor (table, index) {\n super()\n\n this.data = null // can be used be upstream for whatevs\n this.byteOffset = index >> 3\n this.index = index\n this.table = table\n this.nodes = []\n }\n\n add (node) {\n const id = node.id\n\n let l = 0\n let r = this.nodes.length - 1\n\n while (l <= r) {\n const m = (l + r) >> 1\n const c = this.compare(id, this.nodes[m].id)\n\n if (c === 0) {\n this.nodes[m] = node\n return true\n }\n\n if (c < 0) r = m - 1\n else l = m + 1\n }\n\n if (this.nodes.length >= this.table.k) {\n this.emit('full', node)\n return false\n }\n\n this.insert(l, node)\n return true\n }\n\n remove (id) {\n let l = 0\n let r = this.nodes.length - 1\n\n while (l <= r) {\n const m = (l + r) >> 1\n const c = this.compare(id, this.nodes[m].id)\n\n if (c === 0) {\n this.splice(m)\n return true\n }\n\n if (c < 0) r = m - 1\n else l = m + 1\n }\n\n return false\n }\n\n get (id) {\n let l = 0\n let r = this.nodes.length - 1\n\n while (l <= r) {\n const m = (l + r) >> 1\n const node = this.nodes[m]\n const c = this.compare(id, node.id)\n\n if (c === 0) return node\n if (c < 0) r = m - 1\n else l = m + 1\n }\n\n return null\n }\n\n insert (i, node) {\n this.nodes.push(node) // push node or null or whatevs, just trying to not be polymorphic\n for (let j = this.nodes.length - 1; j > i; j--) this.nodes[j] = this.nodes[j - 1]\n this.nodes[i] = node\n this.emit('add', node)\n }\n\n splice (i) {\n for (; i < this.nodes.length - 1; i++) this.nodes[i] = this.nodes[i + 1]\n this.emit('remove', this.nodes.pop())\n }\n\n // very likely they diverge after a couple of bytes so a simple impl, like this is prop fastest vs Buffer.compare\n compare (a, b) {\n for (let i = this.byteOffset; i < a.length; i++) {\n const ai = a[i]\n const bi = b[i]\n if (ai === bi) continue\n return ai < bi ? -1 : 1\n }\n return 0\n }\n}\n{\n \"name\": \"kademlia-routing-table\",\n \"version\": \"1.0.6\",\n \"description\": \"XOR based routing table used for P2P networks such as a Kademlia DHT.\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"imports\": {\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n }\n },\n \"dependencies\": {\n \"bare-events\": \"^2.2.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"standard\": \"^17.1.0\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"keywords\": [\n \"kademlia\",\n \"p2p\",\n \"k-bucket\",\n \"k-buckets\",\n \"xor\",\n \"routing\",\n \"distributed\",\n \"systems\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/kademlia-routing-table.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/kademlia-routing-table/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/kademlia-routing-table\"\n}\n/**\n * Get the text of a chunk from positional parameters.\n *\n * Note that for arrays, the returned result will be an array and that the first and/or last\n * element of the array may be a substring of that array item's text.\n *\n * @param {string|string[]} input - The input (string or array of strings) to split.\n * @param {number} start - The start of the chunk.\n * @param {number} end - The end of the chunk.\n * @returns {string|string[]} The text or array of texts of the chunk.\n */\nexport function getChunk(input, start, end) {\n const matches = [];\n let offset = 0;\n const inputs = Array.isArray(input) ? input : [input];\n for (const item of inputs) {\n // Error if not string.\n if (typeof item !== 'string')\n throw new TypeError(`Input must be a string or array of strings, got ${typeof item} for ${item}`);\n const itemLength = item.length;\n const itemStart = offset;\n const itemEnd = offset + itemLength;\n // Check if this item overlaps with the requested chunk\n if (start < itemEnd && itemStart < end) {\n // Calculate the actual start and end positions within this item\n const chunkStart = Math.max(0, start - itemStart);\n const chunkEnd = Math.min(itemLength, end - itemStart);\n // Extract the substring from this item\n const chunk = item.substring(chunkStart, chunkEnd);\n matches.push(chunk);\n }\n offset += itemLength;\n }\n // Return single string for single input, array for array input\n return Array.isArray(input) ? matches : matches[0] || '';\n}\n//# sourceMappingURL=get-chunk.js.mapexport { getChunk } from './get-chunk.js';\nexport { splitToParts, split } from './split.js';\n//# sourceMappingURL=index.js.mapimport { getChunk } from './get-chunk.js';\nexport var ChunkStrategy;\n(function (ChunkStrategy) {\n ChunkStrategy[\"character\"] = \"character\";\n ChunkStrategy[\"paragraph\"] = \"paragraph\";\n})(ChunkStrategy || (ChunkStrategy = {}));\n// Boundary functions take an array of string input and then return an array of arrays.\n// (Confusing!). The key part is that each sub-array is a group of parts that must *all* be\n// included in the same chunk if another sub-array is in the chunk, or fill the chunk and split\n// apart in subsequent chunks.\nconst BOUNDARIES = {\n [ChunkStrategy.character]: (inputs) => [inputs],\n [ChunkStrategy.paragraph]: (inputs) => {\n const groups = [];\n for (const input of inputs)\n for (const paragraph of input.split(/\\n\\n/))\n groups.push([paragraph]);\n return groups;\n }\n};\nconst CHUNK_STRATEGIES = new Set(Object.keys(BOUNDARIES));\nconst SINGLE_BYTE_CHAR_LIMIT = 255;\n/**\n * Assert that the chunk strategy is valid.\n * @param {unknown} chunkStrategy The chunk strategy to validate.\n * @throws {Error} If the chunk strategy is invalid.\n */\nfunction assertChunkStrategy(chunkStrategy) {\n if (!CHUNK_STRATEGIES.has(chunkStrategy))\n throw new Error(`Invalid chunk strategy. Must be one of: ${[...CHUNK_STRATEGIES].join(', ')}`);\n}\n/**\n * Finds and returns the matched parts (chunks) of the input string based on the provided split parts.\n *\n * @param {string} input - The original string to be split and matched.\n * @param {string[]} splitParts - The array of string parts to match within the input string.\n * @returns {Chunk[]} An array of Chunk objects, each representing a matched part of the input string.\n * @throws {Error} If a split part cannot be matched in the input string in the expected order.\n */\nconst findMatches = (input, splitParts) => {\n const matchedParts = [];\n let inputIndex = 0;\n splitPartsLoop: for (const splitPart of splitParts) {\n if (typeof splitPart !== 'string')\n throw new Error(`Splitter returned a non-string part: ${splitPart} for input: ${input}`);\n if (splitPart.length === 0) {\n continue;\n }\n // Helper to accumulate matches.\n const addMatch = ({ start, end }) => {\n matchedParts.push({\n text: splitPart,\n start,\n end\n });\n inputIndex = end;\n };\n // Fast path -- simple string match\n // When we **do** get a match, we'll capture some multibyte strings that we\n // can't match with the character by character match that ignores multibyte chars.\n if (input.startsWith(splitPart, inputIndex)) {\n addMatch({ start: inputIndex, end: inputIndex + splitPart.length });\n continue;\n }\n // Split the part and find first + last usable character indices.\n const splitPartChars = splitPart.split('');\n const splitPartCharsCodes = splitPartChars.map(char => char.charCodeAt(0));\n let firstValidIndex = -1;\n let lastValidIndex = -1;\n for (let i = 0; i < splitPartChars.length; i++) {\n if (splitPartCharsCodes[i] <= SINGLE_BYTE_CHAR_LIMIT) {\n if (firstValidIndex === -1) {\n firstValidIndex = i;\n }\n lastValidIndex = i;\n }\n }\n if (firstValidIndex === -1) {\n continue;\n }\n // Find the first valid character in the **split part**.\n // We'll now search starting from here in the split part.\n const firstValidChar = splitPartChars[firstValidIndex];\n let startPos = -1;\n // Search for the first valid character in the **input**.\n // We'll loop on the input until we find the first valid character or hit the end and error out.\n for (let i = inputIndex; i < input.length; i++) {\n if (input[i] === firstValidChar) {\n startPos = i;\n // Do the fast path again, in case we can catch other multibyte strings.\n if (input.startsWith(splitPart, startPos)) {\n // Found the whole part.\n addMatch({ start: startPos, end: startPos + splitPart.length });\n continue splitPartsLoop;\n }\n // Slow path -- only match on non-multibyte chars. Will miss some strings.\n let lastValidPos = startPos;\n for (let j = firstValidIndex + 1; j <= lastValidIndex; j++) {\n const nextValidChar = splitPartChars[j];\n if (splitPartCharsCodes[j] <= SINGLE_BYTE_CHAR_LIMIT) {\n // Find this character in the input after the current position\n for (let k = lastValidPos + 1; k < input.length; k++) {\n if (input[k] === nextValidChar) {\n lastValidPos = k;\n break;\n }\n }\n }\n }\n // Found the best subset we could.\n addMatch({ start: startPos, end: lastValidPos + 1 });\n continue splitPartsLoop;\n }\n }\n // Bail.\n throw new Error(`Splitter did not return any parts for input (${input.length}): \"${input.slice(0, 20)}\"... with part (${splitPart.length}): \"${splitPart.slice(0, 20)}\"...`);\n }\n return matchedParts;\n};\n/**\n * Split text into parts of text (or null if the part is ignored) and their start and end indices.\n *\n * While this function takes an array of strings, the `start` and `end` indices are from the\n * perspective of the entire input array as a joined long single string.\n *\n * **Note**: `start` and `end` are based on string indexing (`input[i]` or `input.split('')`) and\n * not on array-like iteration of the string (e.g. `[...input]` or `Array.from(input)`)\n *\n * @param {string[]} inputs - The inputs to split.\n * @param {Function} splitter - The function to split the text.\n * @param {number} baseOffset - The base offset to add to the start and end positions.\n * @returns {Chunk[]}\n */\nexport function splitToParts(inputs, splitter, baseOffset = 0) {\n const parts = [];\n let inputsOffset = 0;\n for (const input of inputs) {\n const splitParts = splitter(input);\n const matches = findMatches(input, splitParts);\n for (const match of matches) {\n parts.push({\n text: match.text,\n start: baseOffset + inputsOffset + match.start,\n end: baseOffset + inputsOffset + match.end\n });\n }\n // Finished a single input string..\n // Ignore and discard unmatched parts.\n inputsOffset += input.length;\n }\n return parts;\n}\n// Little helpers\nconst splitValidate = ({ chunkSize, chunkOverlap, splitter, chunkStrategy }) => {\n assertChunkStrategy(chunkStrategy);\n if (typeof chunkSize !== 'number' || !Number.isInteger(chunkSize))\n throw new Error('Chunk size must be a positive integer');\n if (chunkSize < 1)\n throw new Error('Chunk size must be at least 1');\n if (typeof chunkOverlap !== 'number' || !Number.isInteger(chunkOverlap))\n throw new Error(`Chunk overlap must be a non-negative integer. Found: ${chunkOverlap}`);\n if (chunkOverlap < 0)\n throw new Error('Chunk overlap must be at least 0');\n if (chunkOverlap >= chunkSize)\n throw new Error('Chunk overlap must be less than chunk size');\n if (typeof splitter !== 'function')\n throw new Error('Splitter must be a function');\n};\nclass ChunkParts {\n input;\n chunkOverlap;\n parts = [];\n lastEmittedPart = null;\n lastBoundaryPart = null;\n constructor(input, chunkOverlap) {\n this.input = input;\n this.chunkOverlap = chunkOverlap;\n }\n get length() {\n return this.parts.length;\n }\n push(part) {\n this.parts.push(part);\n if (part.isBoundary)\n this.lastBoundaryPart = part;\n }\n hasUnEmittedParts() {\n // First chunk.\n if (this.lastEmittedPart === null)\n return this.parts.length > 0;\n // Subsequent chunks.\n if (this.parts.length > 0) {\n // Check if have un-emitted parts past the end of last emitted part.\n const lastPart = this.parts[this.parts.length - 1];\n return lastPart.end > this.lastEmittedPart.end;\n }\n // Otherwise, we have no un-emitted parts.\n return false;\n }\n emit() {\n // Sanity check.\n if (this.parts.length === 0)\n throw new Error('Chunk parts is empty');\n // Prepare chunk.\n const start = this.parts[0].start;\n this.lastEmittedPart = this.parts[this.parts.length - 1];\n const end = this.lastEmittedPart.end;\n const chunk = {\n text: getChunk(this.input, start, end),\n start,\n end\n };\n // Reset state.\n // At this point, we seed the new parts array with the overlap, if any found.\n if (this.chunkOverlap > 0) {\n this.parts = this.parts.slice(-this.chunkOverlap);\n }\n else {\n this.parts = [];\n }\n // Clear out last boundary. We consider a new chunk to have \"no\" previous boundary.\n this.lastBoundaryPart = null;\n return chunk;\n }\n}\n/**\n * Split text into chunks.\n *\n * ## Chunk Structure\n * Note that when splitting into tokens if an array is passed to input, the array item boundary is\n * *always* a token boundary.\n *\n * In the returned structure, `start` is the start of the first token in the chunk and `end` is\n * the end of the last token. In between there may be unmatched / discarded parts between tokens\n * (e.g. if you split on whitespace, there may be spaces between tokens). The `text` field of\n * the returned chunk will include all the text or array of texts from the start to the end,\n * inclusive of the unmatched parts.\n *\n * ## Chunk Strategy\n * The `chunkStrategy` option allows you to specify how the chunks are grouped.\n * - `character`: There is no grouping preference here. Fit as many whole tokens as possible into a chunk.\n * - `paragraph`: Group tokens by paragraphs. If a paragraph exceeds the chunk size, it will be split across multiple chunks.\n *\n * @param {string|string[]} input - The input (string or array of strings) to split.\n * @param {Object} options\n * @param {number} options.chunkSize - The max number of tokens (from splitter) of each chunk.\n * @param {number} options.chunkOverlap - The overlapping number of tokens (from splitter) to include from previous chunk.\n * @param {Function} options.splitter - The function to split the text.\n * @param {string} options.chunkStrategy - The strategy used to group tokens into chunks.\n * @returns {Array<{text: string | null, start: number, end: number}>}\n */\nexport function split(input, { chunkSize = 512, chunkOverlap = 0, splitter = (text) => text.split(''), chunkStrategy = ChunkStrategy.character } = {}) {\n // Validation\n splitValidate({ chunkSize, chunkOverlap, splitter, chunkStrategy });\n // Chunk handling.\n const chunks = [];\n const chunkParts = new ChunkParts(input, chunkOverlap);\n // Inputs.\n const inputAsArray = Array.isArray(input) ? input : [input];\n const inputAsString = inputAsArray.join('');\n const groups = BOUNDARIES[chunkStrategy](inputAsArray);\n // Iteration.\n let baseOffset = -1;\n for (const group of groups) {\n // Empty pre-processed group.\n if (group.length === 0)\n continue;\n // Find the start of the first part in the group and update our offset.\n const firstPart = group[0];\n baseOffset = inputAsString.indexOf(firstPart, baseOffset + 1);\n if (baseOffset === -1)\n throw new Error(`Could not find start of group: ${group.slice(0, 20)}...`);\n // Split with parts plus our offset.\n const parts = splitToParts(group, splitter, baseOffset);\n // Empty post-processed group.\n if (parts.length === 0)\n continue;\n // Mark the **last** part as the boundary.\n parts[parts.length - 1].isBoundary = true;\n // If the current chunk has a portion with a boundary, and we can't fit this entire group\n // in the current chunk, emit the existing chunk and then continue adding to a fresh chunk.\n if (chunkParts.hasUnEmittedParts() &&\n chunkParts.lastBoundaryPart !== null &&\n chunkParts.length + parts.length > chunkSize) {\n chunks.push(chunkParts.emit());\n }\n // Should add parts to chunks. Start iterating.\n for (const part of parts) {\n // Add the part to the current chunk.\n chunkParts.push(part);\n // Sanity check.\n if (chunkParts.length > chunkSize)\n throw new Error(`Chunk size is ${chunkSize}, but chunkParts.length is ${chunkParts.length} -- ${JSON.stringify(chunkParts)}`);\n if (chunkParts.length === chunkSize)\n chunks.push(chunkParts.emit());\n }\n }\n // Handle last chunk.\n if (chunkParts.hasUnEmittedParts())\n chunks.push(chunkParts.emit());\n return chunks;\n}\n//# sourceMappingURL=split.js.map{\n \"name\": \"llm-splitter\",\n \"private\": false,\n \"version\": \"0.2.0\",\n \"description\": \"Efficient, configurable text chunking utility for LLM vectorization. Returns rich chunk metadata.\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"type\": \"module\",\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsc --project tsconfig.json\",\n \"check\": \"npm run lint && npm run test && npm run check-format\",\n \"check-format\": \"prettier --check .\",\n \"check-lint\": \"eslint .\",\n \"format\": \"prettier --write . && eslint --cache --fix .\",\n \"lint\": \"eslint .\",\n \"prebuild\": \"rm -rf dist\",\n \"prepare\": \"husky\",\n \"test\": \"node --loader ts-node/esm/transpile-only --test\",\n \"test:only\": \"npm run test -- --test-only\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/nearform/llm-splitter.git\"\n },\n \"keywords\": [\n \"llm\",\n \"splitter\",\n \"chunking\",\n \"text\",\n \"vectorization\"\n ],\n \"author\": \"Ryan Roemer \",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/nearform/llm-splitter/issues\"\n },\n \"homepage\": \"https://github.com/nearform/llm-splitter#readme\",\n \"devDependencies\": {\n \"@commitlint/cli\": \"^20.0.0\",\n \"@commitlint/config-conventional\": \"^20.0.0\",\n \"@eslint/js\": \"^9.30.0\",\n \"@types/node\": \"^24.1.0\",\n \"eslint\": \"^9.30.1\",\n \"eslint-config-prettier\": \"^10.1.5\",\n \"eslint-plugin-prettier\": \"^5.5.1\",\n \"globals\": \"^16.3.0\",\n \"husky\": \"^9.1.7\",\n \"lint-staged\": \"^16.1.0\",\n \"prettier\": \"^3.6.2\",\n \"tiktoken\": \"^1.0.21\",\n \"ts-node\": \"^10.9.2\",\n \"typescript\": \"^5.0.0\",\n \"typescript-eslint\": \"^8.45.0\"\n },\n \"lint-staged\": {\n \"*.{js,jsx}\": \"eslint --cache --fix\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\nconst EventEmitter = require('events')\nconst sameData = require('same-data')\nconst unixPathResolve = require('unix-path-resolve')\nconst streamEquals = require('binary-stream-equals')\nconst speedometer = require('speedometer')\nconst { pipelinePromise, isStream } = require('streamx')\nconst RabinStream = require('rabin-stream')\n\nconst SAME = 0\nconst DIFF = 1\nconst DIFF_META = 2\n\nclass Monitor extends EventEmitter {\n constructor(mirror, { interval = 250 } = {}) {\n super()\n\n this.mirror = mirror\n this.interval = setInterval(this.update.bind(this), interval)\n this.stats = null\n this.index = mirror.monitors.push(this) - 1\n\n this.update() // populate latest stats\n }\n\n get preloaded() {\n return this.mirror.preloaded\n }\n\n get destroyed() {\n return this.index === -1\n }\n\n update() {\n if (this.index === -1) return\n\n // NOTE: immutable (append-only) data structure\n this.stats = {\n peers: this.mirror.peers.length,\n download: {\n bytes: this.mirror.downloadedBytes,\n blocks: this.mirror.downloadedBlocks,\n speed: this.mirror.downloadSpeed(),\n progress: this.mirror.downloadProgress\n },\n upload: {\n bytes: this.mirror.uploadedBytes,\n blocks: this.mirror.uploadedBlocks,\n speed: this.mirror.uploadSpeed()\n }\n }\n\n this.emit('update', this.stats)\n }\n\n destroy() {\n if (this.index === -1) return\n\n clearInterval(this.interval)\n\n const head = this.mirror.monitors.pop()\n if (head !== this) {\n this.mirror.monitors[this.index] = head\n head.index = this.index\n }\n\n this.index = -1\n this.emit('destroy')\n }\n}\n\nmodule.exports = class MirrorDrive {\n constructor(src, dst, opts = {}) {\n this.src = src\n this.dst = dst\n\n this.prefix = toArray(opts.prefix || '/')\n this.dedup = !!opts.dedup\n this.dryRun = !!opts.dryRun\n this.prune = opts.prune !== false\n this.preload = opts.preload !== false && (!!src.getBlobs || !!dst.getBlobs)\n this.preloaded = false\n this.includeProgress = !!opts.progress && !!src.getBlobs\n this.includeEquals = !!opts.includeEquals\n this.filter = opts.filter || null\n this.metadataEquals = opts.metadataEquals || null\n this.batch = !!opts.batch\n this.entries = opts.entries || null\n this.transformers = opts.transformers || []\n\n this.count = { files: 0, add: 0, remove: 0, change: 0 }\n this.bytesRemoved = 0\n this.bytesAdded = 0\n this.ignore = opts.ignore ? toIgnoreFunction(opts.ignore) : null\n this.finished = false\n\n this.downloadedBlocks = 0\n this.downloadedBlocksEstimate = 0\n this.downloadedBytes = 0\n this.downloadSpeed = this.includeProgress ? speedometer() : null\n\n this.uploadedBlocks = 0\n this.uploadedBytes = 0\n this.uploadSpeed = this.includeProgress ? speedometer() : null\n\n this.monitors = []\n this.iterator = this._init()\n }\n\n [Symbol.asyncIterator]() {\n return this.iterator\n }\n\n get peers() {\n return this.src.core?.peers || []\n }\n\n get downloadProgress() {\n if (this.finished) return 1\n if (!this.downloadedBlocksEstimate) return 0\n // leave 3% incase our estimatation is wrong - then at least it wont appear done...\n return Math.min(0.99, this.downloadedBlocks / this.downloadedBlocksEstimate)\n }\n\n monitor(opts) {\n this.includeProgress = true\n if (this.downloadSpeed === null) this.downloadSpeed = speedometer()\n if (this.uploadSpeed === null) this.uploadSpeed = speedometer()\n return new Monitor(this, opts)\n }\n\n async done() {\n while (true) {\n const { done } = await this.iterator.next()\n if (done) break\n }\n }\n\n _onupload(index, byteLength) {\n this.uploadedBlocks++\n this.uploadedBytes += byteLength\n this.uploadSpeed(byteLength)\n }\n\n _ondownload(index, byteLength) {\n this.downloadedBlocks++\n this.downloadedBytes += byteLength\n this.downloadSpeed(byteLength)\n }\n\n async _getBlobRange(blobs, entry) {\n const blob = entry.value.blob\n if (!blob || !blob.byteLength) return null\n\n if (!blob.byteLength) {\n const dl = blobs.core.download({ start: blob.blockOffset, length: blob.blockLength })\n await dl.ready()\n return dl\n }\n\n const map = await blobs.getBlockMap(blob)\n if (!map) return null\n\n const blocks = []\n for (const b of map.blocks) blocks.push(b.index)\n\n const dl = blobs.core.download({ blocks })\n await dl.ready()\n return dl\n }\n\n async _flushPreload(blobs, entries) {\n const promises = []\n\n for (const entry of entries) {\n promises.push(this._getBlobRange(blobs, entry))\n }\n\n const ranges = await Promise.all(promises)\n\n this.downloadedBlocksEstimate = this.downloadedBlocks\n for (const dl of ranges) {\n if (!dl || !dl.request.context) continue\n this.downloadedBlocksEstimate += dl.request.context.end - dl.request.context.start\n }\n this.preloaded = true\n for (const m of this.monitors) {\n m.emit('preloaded')\n }\n\n for (const dl of ranges) {\n if (!dl) continue\n await dl.done()\n }\n }\n\n async *_init() {\n try {\n for await (const out of this._mirror()) yield out\n } finally {\n while (this.monitors.length) {\n this.monitors[this.monitors.length - 1].destroy()\n }\n }\n }\n\n async *_mirror() {\n await this.src.ready()\n await this.dst.ready()\n\n if (this.dst.core && !this.dst.core.writable) throw new Error('Destination must be writable')\n\n const blobs = this.includeProgress ? await this.src.getBlobs() : null\n const onupload = this._onupload.bind(this)\n const ondownload = this._ondownload.bind(this)\n\n if (blobs) {\n blobs.core.on('upload', onupload)\n blobs.core.on('download', ondownload)\n }\n\n const dst = this.batch ? this.dst.batch() : this.dst\n const dstBlobs = dst.getBlobs ? await dst.getBlobs() : null\n const srcBlobs = this.src.getBlobs ? await this.src.getBlobs() : null\n\n if (this.preload) {\n const blobs = srcBlobs || dstBlobs\n const entries = []\n const maps = []\n // we are gonna upgrade how much inflight blobs cause maps are tiny, remember old\n const inflight = blobs.core.replicator.inflightRange\n const d = srcBlobs ? null : dst\n\n for await (const [, srcEntry, dstEntry] of this._list(this.src, d, this.filter)) {\n const entry = d ? dstEntry : srcEntry\n if (!entry) continue\n entries.push(entry)\n const blob = entry.value.blob\n if (blob && blob.blockMap && blob.blockLength) {\n if (maps.length === 0) {\n // bump it\n blobs.core.replicator.setInflightRange(256, 512)\n }\n maps.push(blobs.core.download({ start: blob.blockOffset, length: blob.blockLength }))\n }\n }\n\n for (const m of maps) await m.done()\n blobs.core.replicator.setInflightRange(inflight)\n\n // flush in bg\n this._flushPreload(blobs, entries).catch(noop)\n }\n\n if (this.prune) {\n for await (const [key, dstEntry, srcEntry] of this._list(this.dst, this.src, null)) {\n if (srcEntry) continue\n\n const removed = await blobLength(dstEntry, dstBlobs)\n\n this.count.remove++\n this.bytesRemoved += removed\n yield { op: 'remove', key, bytesRemoved: removed, bytesAdded: 0 }\n\n if (!this.dryRun) await dst.del(key)\n }\n }\n\n for await (const [key, srcEntry, dstEntry] of this._list(this.src, dst, this.filter)) {\n if (!srcEntry) continue // Due entries option, src entry might not exist probably because it was pruned\n\n this.count.files++\n\n // If transformers are provided, we can't know if same before running them\n const hasTransformers = this.transformers && this.transformers.length > 0\n\n const s = hasTransformers === false ? await same(this, srcEntry, dstEntry) : DIFF\n\n if (s === SAME) {\n if (this.includeEquals) {\n yield { op: 'equal', key, bytesRemoved: 0, bytesAdded: 0 }\n }\n continue\n }\n\n const onlyMetadata = s === DIFF_META && !!dst.putEntry\n const dedup = !!dst.putEntry && this.dedup\n\n if (dstEntry) {\n const removed = onlyMetadata ? 0 : await blobLength(dstEntry, dstBlobs)\n const added = onlyMetadata ? 0 : await blobLength(srcEntry, srcBlobs)\n this.count.change++\n this.bytesRemoved += removed\n this.bytesAdded += added\n yield {\n op: 'change',\n key,\n bytesRemoved: removed,\n bytesAdded: added\n }\n } else {\n const added = await blobLength(srcEntry, srcBlobs)\n this.count.add++\n this.bytesAdded += added\n yield { op: 'add', key, bytesRemoved: 0, bytesAdded: added }\n }\n\n if (this.dryRun) {\n continue\n }\n\n const transformers = []\n\n for (const transformer of this.transformers) {\n if (typeof transformer !== 'function') throw new Error('transformer must be a function')\n\n const stream = transformer(key)\n\n if (stream === null) continue\n if (!isStream(stream)) throw new Error('transformer must return a stream')\n\n transformers.push(stream)\n }\n\n if (srcEntry.value.linkname) {\n await dst.symlink(key, srcEntry.value.linkname)\n } else if (!onlyMetadata) {\n if (dedup) transformers.push(new RabinStream())\n await pipelinePromise(\n this.src.createReadStream(srcEntry),\n ...transformers,\n dst.createWriteStream(key, {\n dedup,\n executable: srcEntry.value.executable,\n metadata: srcEntry.value.metadata\n })\n )\n } else {\n await dst.putEntry(key, {\n executable: srcEntry.value.executable,\n linkname: srcEntry.value.linkname,\n blob: dstEntry.value.blob,\n metadata: srcEntry.value.metadata\n })\n }\n }\n\n if (this.batch) await dst.flush()\n\n if (blobs) {\n blobs.core.off('upload', onupload)\n blobs.core.off('download', ondownload)\n }\n\n this.finished = true\n }\n\n async *_list(a, b, filter) {\n const lists = []\n\n for (const prefix of this.prefix) {\n if (this.entries) {\n lists.push(this.entries)\n } else {\n const stream = a.list(prefix, { ignore: this.ignore })\n if (stream.on) {\n stream.on('error', noop)\n stream.resume()\n stream.pause()\n }\n lists.push(stream)\n }\n }\n\n for (let i = 0; i < this.prefix.length; i++) {\n const prefix = this.prefix[i]\n const list = lists[i]\n\n for await (const entry of list) {\n const key = typeof entry === 'object' ? entry.key : entry\n\n if (filter && !filter(key)) continue\n\n const entryA = await a.entry(entry)\n const entryB = b ? await b.entry(key) : null\n\n yield [key, entryA, entryB]\n }\n\n if (prefix !== '/' && (!filter || filter(prefix))) {\n const entryA = await a.entry(prefix)\n const entryB = b ? await b.entry(prefix) : null\n\n if (!entryA && !entryB) continue\n\n yield [prefix, entryA, entryB]\n }\n }\n }\n}\n\nfunction blobLength(entry, blobs) {\n const blob = entry.value.blob\n if (!blob) return 0\n if (!blob.blockMap) return blob.byteLength\n return blobs.getByteLength(blob)\n}\n\nasync function same(m, srcEntry, dstEntry) {\n if (!dstEntry) return DIFF\n\n if (srcEntry.value.linkname || dstEntry.value.linkname) {\n return srcEntry.value.linkname === dstEntry.value.linkname ? SAME : DIFF\n }\n\n if (!maybeEquals(srcEntry, dstEntry)) return DIFF\n\n const eq = await streamEquals(m.src.createReadStream(srcEntry), m.dst.createReadStream(dstEntry))\n const diff = eq ? DIFF_META : DIFF\n\n if (srcEntry.value.executable !== dstEntry.value.executable) return diff\n if (!metadataEquals(m, srcEntry, dstEntry)) return diff\n\n return eq ? SAME : DIFF\n}\n\nfunction maybeEquals(srcEntry, dstEntry) {\n const srcBlob = srcEntry.value.blob\n const dstBlob = dstEntry.value.blob\n\n if (!srcBlob && !dstBlob) return true\n if (!srcBlob || !dstBlob) return false\n\n if (srcBlob.blockMap || dstBlob.blockMap) return true\n\n return srcBlob.byteLength === dstBlob.byteLength\n}\n\nfunction metadataEquals(m, srcEntry, dstEntry) {\n if (!m.src.supportsMetadata || !m.dst.supportsMetadata) return true\n\n const srcMetadata = srcEntry.value.metadata\n const dstMetadata = dstEntry.value.metadata\n\n if (m.metadataEquals) {\n return m.metadataEquals(srcMetadata, dstMetadata)\n }\n\n const noMetadata = !srcMetadata && !dstMetadata\n const identicalMetadata = !!(srcMetadata && dstMetadata && sameData(srcMetadata, dstMetadata))\n\n return noMetadata || identicalMetadata\n}\n\nfunction toIgnoreFunction(ignore) {\n if (typeof ignore === 'function') return ignore\n\n const all = [].concat(ignore).map((e) => unixPathResolve('/', e))\n return (key) => all.some((path) => path === key || key.startsWith(path + '/'))\n}\n\nfunction toArray(prefix) {\n return Array.isArray(prefix) ? prefix : [prefix]\n}\n\nfunction noop() {}\n{\n \"name\": \"mirror-drive\",\n \"version\": \"1.14.2\",\n \"description\": \"Mirror a hyperdrive or localdrive into another one\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"lib/**.js\"\n ],\n \"imports\": {\n \"events\": {\n \"bare\": \"bare-events\"\n },\n \"os\": {\n \"bare\": \"bare-os\",\n \"default\": \"os\"\n },\n \"stream\": {\n \"bare\": \"bare-stream\",\n \"default\": \"stream\"\n }\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:node\": \"brittle-node test/*.js\",\n \"test:bare\": \"brittle-bare test/*.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/mirror-drive.git\"\n },\n \"author\": \"Lucas Barrena (@LuKks)\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/mirror-drive/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/mirror-drive\",\n \"devDependencies\": {\n \"b4a\": \"^1.6.0\",\n \"bare-os\": \"^3.0.1\",\n \"bare-stream\": \"^2.6.5\",\n \"brittle\": \"^3.1.0\",\n \"corestore\": \"^7.0.0\",\n \"hyperdrive\": \"^13.0.0\",\n \"localdrive\": \"^2.2.0\",\n \"lunte\": \"^1.0.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"dependencies\": {\n \"bare-events\": \"^2.8.2\",\n \"binary-stream-equals\": \"^1.0.0\",\n \"rabin-stream\": \"^2.0.0\",\n \"same-data\": \"^1.0.0\",\n \"speedometer\": \"^1.1.0\",\n \"streamx\": \"^2.22.1\",\n \"unix-path-resolve\": \"^1.0.2\"\n }\n}\nvar queueTick = require('queue-tick')\n\nvar mutexify = function () {\n var queue = []\n var used = null\n\n var call = function () {\n used(release)\n }\n\n var acquire = function (fn) {\n if (used) return queue.push(fn)\n used = fn\n acquire.locked = true\n queueTick(call)\n return 0\n }\n\n acquire.locked = false\n\n var release = function (fn, err, value) {\n used = null\n acquire.locked = false\n if (queue.length) acquire(queue.shift())\n if (fn) fn(err, value)\n }\n\n return acquire\n}\n\nmodule.exports = mutexify\n{\n \"name\": \"mutexify\",\n \"version\": \"1.4.0\",\n \"description\": \"mutex lock for javascript\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"queue-tick\": \"^1.0.0\"\n },\n \"devDependencies\": {\n \"standard\": \"^14.3.3\",\n \"tape\": \"^3.0.2\"\n },\n \"scripts\": {\n \"test\": \"tape test.js\",\n \"posttest\": \"npm run lint\",\n \"lint\": \"standard\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/mutexify.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/mutexify/issues\"\n },\n \"keywords\": [\n \"mutex\",\n \"lock\"\n ],\n \"homepage\": \"https://github.com/mafintosh/mutexify\"\n}\nvar mutexify = require('.')\n\nvar mutexifyPromise = function () {\n var lock = mutexify()\n\n var acquire = function () {\n return new Promise(lock)\n }\n\n Object.defineProperty(acquire, 'locked', {\n get: function () { return lock.locked },\n enumerable: true\n })\n\n return acquire\n}\n\nmodule.exports = mutexifyPromise\nmodule.exports = assert\n\nclass AssertionError extends Error {}\nAssertionError.prototype.name = 'AssertionError'\n\n/**\n * Minimal assert function\n * @param {any} t Value to check if falsy\n * @param {string=} m Optional assertion error message\n * @throws {AssertionError}\n */\nfunction assert (t, m) {\n if (!t) {\n var err = new AssertionError(m)\n if (Error.captureStackTrace) Error.captureStackTrace(err, assert)\n throw err\n }\n}\n{\n \"name\": \"nanoassert\",\n \"version\": \"2.0.0\",\n \"description\": \"Nanoscale assertion module\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"tape\": \"^4.9.1\"\n },\n \"scripts\": {\n \"test\": \"tape test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/emilbayes/nanoassert.git\"\n },\n \"keywords\": [\n \"assert\",\n \"unassert\",\n \"power-assert\",\n \"tiny\",\n \"nano\",\n \"pico\"\n ],\n \"author\": \"Emil Bay \",\n \"license\": \"ISC\",\n \"bugs\": {\n \"url\": \"https://github.com/emilbayes/nanoassert/issues\"\n },\n \"homepage\": \"https://github.com/emilbayes/nanoassert#readme\"\n}\nmodule.exports = class NatSampler {\n constructor () {\n this.host = null\n this.port = 0\n this.size = 0\n\n this._a = null\n this._b = null\n this._threshold = 0\n this._top = 0\n this._samples = []\n }\n\n add (host, port) {\n const a = this._bump(host, port, 2)\n const b = this._bump(host, 0, 1)\n\n if (this._samples.length < 32) {\n this.size++\n this._threshold = this.size - (this.size < 4 ? 0 : this.size < 8 ? 1 : this.size < 12 ? 2 : 3)\n this._samples.push(a, b)\n this._top += 2\n } else {\n if (this._top === 32) this._top = 0\n\n const oa = this._samples[this._top]\n this._samples[this._top++] = a\n oa.hits--\n\n const ob = this._samples[this._top]\n this._samples[this._top++] = b\n ob.hits--\n }\n\n if (this._a === null || this._a.hits < a.hits) this._a = a\n if (this._b === null || this._b.hits < b.hits) this._b = b\n\n if (this._a.hits >= this._threshold) {\n this.host = this._a.host\n this.port = this._a.port\n } else if (this._b.hits >= this._threshold) {\n this.host = this._b.host\n this.port = 0\n } else {\n this.host = null\n this.port = 0\n }\n\n return a.hits\n }\n\n _bump (host, port, inc) {\n for (let i = 0; i < 4; i++) {\n const j = (this._top - inc - (2 * i)) & 31\n if (j >= this._samples.length) return { host, port, hits: 1 }\n const s = this._samples[j]\n if (s.port === port && s.host === host) {\n s.hits++\n return s\n }\n }\n return { host, port, hits: 1 }\n }\n}\n{\n \"name\": \"nat-sampler\",\n \"version\": \"1.0.1\",\n \"description\": \"Sample addresses to figure out if a host + port is consistent\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"standard\": \"^16.0.3\",\n \"tape\": \"^5.2.2\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/nat-sampler.git\"\n },\n \"scripts\": {\n \"test\": \"standard && tape test.js\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/nat-sampler/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/nat-sampler\"\n}\n/* eslint-disable camelcase */\nconst sodium = require('sodium-universal')\nconst assert = require('nanoassert')\nconst b4a = require('b4a')\n\nconst DHLEN = sodium.crypto_scalarmult_ed25519_BYTES\nconst PKLEN = sodium.crypto_scalarmult_ed25519_BYTES\nconst SCALARLEN = sodium.crypto_scalarmult_ed25519_BYTES\nconst SKLEN = sodium.crypto_sign_SECRETKEYBYTES\nconst ALG = 'Ed25519'\n\nmodule.exports = {\n DHLEN,\n PKLEN,\n SCALARLEN,\n SKLEN,\n ALG,\n name: ALG,\n generateKeyPair,\n dh\n}\n\nfunction generateKeyPair (privKey) {\n if (privKey) return generateSeedKeyPair(privKey.subarray(0, 32))\n\n const keyPair = {}\n keyPair.secretKey = b4a.alloc(SKLEN)\n keyPair.publicKey = b4a.alloc(PKLEN)\n\n sodium.crypto_sign_keypair(keyPair.publicKey, keyPair.secretKey)\n return keyPair\n}\n\nfunction generateSeedKeyPair (seed) {\n const keyPair = {}\n keyPair.secretKey = b4a.alloc(SKLEN)\n keyPair.publicKey = b4a.alloc(PKLEN)\n\n sodium.crypto_sign_seed_keypair(keyPair.publicKey, keyPair.secretKey, seed)\n return keyPair\n}\n\nfunction dh (publicKey, { scalar, secretKey }) {\n // tweaked keys expose scalar directly\n if (!scalar) {\n assert(secretKey.byteLength === SKLEN)\n\n // libsodium stores seed not actual scalar\n const sk = b4a.alloc(64)\n sodium.crypto_hash_sha512(sk, secretKey.subarray(0, 32))\n sk[0] &= 248\n sk[31] &= 127\n sk[31] |= 64\n\n scalar = sk.subarray(0, 32)\n }\n\n assert(scalar.byteLength === SCALARLEN)\n assert(publicKey.byteLength === PKLEN)\n\n const output = b4a.alloc(DHLEN)\n\n // we clamp if necessary above\n sodium.crypto_scalarmult_ed25519_noclamp(\n output,\n scalar,\n publicKey\n )\n\n return output\n}\n{\n \"name\": \"noise-curve-ed\",\n \"version\": \"2.1.0\",\n \"description\": \"Ed25519 elliptic curve operations for [`noise-handshake`](https://github.com/chm-diederichs/noise-handshake)\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"npx standard && tape test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/chm-diederichs/noise-curve-ed.git\"\n },\n \"keywords\": [],\n \"author\": \"\",\n \"license\": \"ISC\",\n \"bugs\": {\n \"url\": \"https://github.com/chm-diederichs/noise-curve-ed/issues\"\n },\n \"homepage\": \"https://github.com/chm-diederichs/noise-curve-ed#readme\",\n \"dependencies\": {\n \"b4a\": \"^1.1.0\",\n \"nanoassert\": \"^2.0.0\",\n \"sodium-universal\": \"^5.0.0\"\n },\n \"devDependencies\": {\n \"noise-handshake\": \"^3.0.0\",\n \"standard\": \"^16.0.3\",\n \"tape\": \"^5.2.2\"\n }\n}\nconst sodium = require('sodium-universal')\nconst b4a = require('b4a')\n\nmodule.exports = class CipherState {\n constructor (key) {\n this.key = key || null\n this.nonce = 0\n this.CIPHER_ALG = 'ChaChaPoly'\n }\n\n initialiseKey (key) {\n this.key = key\n this.nonce = 0\n }\n\n setNonce (nonce) {\n this.nonce = nonce\n }\n\n encrypt (plaintext, ad) {\n if (!this.hasKey) return plaintext\n if (!ad) ad = b4a.alloc(0)\n\n const ciphertext = encryptWithAD(this.key, this.nonce, ad, plaintext)\n if (ciphertext.length > 65535) throw new Error(`ciphertext length of ${ciphertext.length} exceeds maximum Noise message length of 65535`)\n this.nonce++\n\n return ciphertext\n }\n\n decrypt (ciphertext, ad) {\n if (!this.hasKey) return ciphertext\n if (!ad) ad = b4a.alloc(0)\n if (ciphertext.length > 65535) throw new Error(`ciphertext length of ${ciphertext.length} exceeds maximum Noise message length of 65535`)\n\n const plaintext = decryptWithAD(this.key, this.nonce, ad, ciphertext)\n this.nonce++\n\n return plaintext\n }\n\n get hasKey () {\n return this.key !== null\n }\n\n _clear () {\n sodium.sodium_memzero(this.key)\n this.key = null\n this.nonce = null\n }\n\n static get MACBYTES () {\n return 16\n }\n\n static get NONCEBYTES () {\n return 8\n }\n\n static get KEYBYTES () {\n return 32\n }\n}\n\nfunction encryptWithAD (key, counter, additionalData, plaintext) {\n // for our purposes, additionalData will always be a pubkey so we encode from hex\n if (!b4a.isBuffer(additionalData)) additionalData = b4a.from(additionalData, 'hex')\n if (!b4a.isBuffer(plaintext)) plaintext = b4a.from(plaintext, 'hex')\n\n const nonce = b4a.alloc(sodium.crypto_aead_chacha20poly1305_ietf_NPUBBYTES)\n const view = new DataView(nonce.buffer, nonce.byteOffset, nonce.byteLength)\n view.setUint32(4, counter, true)\n\n const ciphertext = b4a.alloc(plaintext.byteLength + sodium.crypto_aead_chacha20poly1305_ietf_ABYTES)\n\n sodium.crypto_aead_chacha20poly1305_ietf_encrypt(ciphertext, plaintext, additionalData, null, nonce, key)\n return ciphertext\n}\n\nfunction decryptWithAD (key, counter, additionalData, ciphertext) {\n // for our purposes, additionalData will always be a pubkey so we encode from hex\n if (!b4a.isBuffer(additionalData)) additionalData = b4a.from(additionalData, 'hex')\n if (!b4a.isBuffer(ciphertext)) ciphertext = b4a.from(ciphertext, 'hex')\n\n const nonce = b4a.alloc(sodium.crypto_aead_chacha20poly1305_ietf_NPUBBYTES)\n const view = new DataView(nonce.buffer, nonce.byteOffset, nonce.byteLength)\n view.setUint32(4, counter, true)\n\n const plaintext = b4a.alloc(ciphertext.byteLength - sodium.crypto_aead_chacha20poly1305_ietf_ABYTES)\n\n sodium.crypto_aead_chacha20poly1305_ietf_decrypt(plaintext, null, ciphertext, additionalData, nonce, key)\n return plaintext\n}\n/* eslint-disable camelcase */\nconst {\n crypto_kx_SEEDBYTES,\n crypto_kx_keypair,\n crypto_kx_seed_keypair,\n crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES,\n crypto_scalarmult,\n crypto_scalarmult_base\n} = require('sodium-universal')\n\nconst assert = require('nanoassert')\nconst b4a = require('b4a')\n\nconst DHLEN = crypto_scalarmult_BYTES\nconst PKLEN = crypto_scalarmult_BYTES\nconst SKLEN = crypto_scalarmult_SCALARBYTES\nconst SEEDLEN = crypto_kx_SEEDBYTES\nconst ALG = '25519'\n\nmodule.exports = {\n DHLEN,\n PKLEN,\n SKLEN,\n SEEDLEN,\n ALG,\n generateKeyPair,\n generateSeedKeyPair,\n dh\n}\n\nfunction generateKeyPair (privKey) {\n const keyPair = {}\n\n keyPair.secretKey = privKey || b4a.alloc(SKLEN)\n keyPair.publicKey = b4a.alloc(PKLEN)\n\n if (privKey) {\n crypto_scalarmult_base(keyPair.publicKey, keyPair.secretKey)\n } else {\n crypto_kx_keypair(keyPair.publicKey, keyPair.secretKey)\n }\n\n return keyPair\n}\n\nfunction generateSeedKeyPair (seed) {\n assert(seed.byteLength === SKLEN)\n\n const keyPair = {}\n keyPair.secretKey = b4a.alloc(SKLEN)\n keyPair.publicKey = b4a.alloc(PKLEN)\n\n crypto_kx_seed_keypair(keyPair.publicKey, keyPair.secretKey, seed)\n return keyPair\n}\n\nfunction dh (publicKey, { secretKey }) {\n assert(secretKey.byteLength === SKLEN)\n assert(publicKey.byteLength === PKLEN)\n\n const output = b4a.alloc(DHLEN)\n\n crypto_scalarmult(\n output,\n secretKey,\n publicKey\n )\n\n return output\n}\nconst hmacBlake2b = require('./hmac')\nconst b4a = require('b4a')\n\nconst HASHLEN = 64\n\nmodule.exports = {\n hkdf,\n HASHLEN\n}\n\n// HMAC-based Extract-and-Expand KDF\n// https://www.ietf.org/rfc/rfc5869.txt\n\nfunction hkdf (salt, inputKeyMaterial, info = '', length = 2 * HASHLEN) {\n const pseudoRandomKey = hkdfExtract(salt, inputKeyMaterial)\n return hkdfExpand(pseudoRandomKey, info, length)\n}\n\nfunction hkdfExtract (salt, inputKeyMaterial) {\n const hmac = b4a.alloc(HASHLEN)\n return hmacDigest(hmac, salt, inputKeyMaterial)\n}\n\nfunction hkdfExpand (key, info, length) {\n // Put in dedicated slab to avoid keeping shared slab from being gc'ed\n const buffer = b4a.allocUnsafeSlow(length)\n\n const infoBuf = b4a.from(info)\n let prev = infoBuf\n\n const result = []\n for (let i = 0; i < length; i += HASHLEN) {\n const pos = b4a.from([(i / HASHLEN) + 1])\n\n const out = buffer.subarray(i, i + HASHLEN)\n result.push(out)\n\n prev = hmacDigest(out, key, [prev, infoBuf, pos])\n }\n\n return result\n}\n\nfunction hmacDigest (out, key, input) {\n hmacBlake2b(out, input, key)\n return out\n}\n/* eslint-disable camelcase */\nconst b4a = require('b4a')\nconst { sodium_memzero, crypto_generichash, crypto_generichash_batch } = require('sodium-universal')\n\nconst HASHLEN = 64\nconst BLOCKLEN = 128\nconst scratch = b4a.alloc(BLOCKLEN * 3)\nconst HMACKey = scratch.subarray(BLOCKLEN * 0, BLOCKLEN * 1)\nconst OuterKeyPad = scratch.subarray(BLOCKLEN * 1, BLOCKLEN * 2)\nconst InnerKeyPad = scratch.subarray(BLOCKLEN * 2, BLOCKLEN * 3)\n\n// Post-fill is done in the cases where someone caught an exception that\n// happened before we were able to clear data at the end\n\nmodule.exports = function hmac (out, batch, key) {\n if (key.byteLength > BLOCKLEN) {\n crypto_generichash(HMACKey.subarray(0, HASHLEN), key)\n sodium_memzero(HMACKey.subarray(HASHLEN))\n } else {\n // Covers key <= BLOCKLEN\n HMACKey.set(key)\n sodium_memzero(HMACKey.subarray(key.byteLength))\n }\n\n for (let i = 0; i < HMACKey.byteLength; i++) {\n OuterKeyPad[i] = 0x5c ^ HMACKey[i]\n InnerKeyPad[i] = 0x36 ^ HMACKey[i]\n }\n sodium_memzero(HMACKey)\n\n crypto_generichash_batch(out, [InnerKeyPad].concat(batch))\n sodium_memzero(InnerKeyPad)\n crypto_generichash_batch(out, [OuterKeyPad, out])\n sodium_memzero(OuterKeyPad)\n}\n\nmodule.exports.BYTES = HASHLEN\nmodule.exports.KEYBYTES = BLOCKLEN\nconst assert = require('nanoassert')\nconst b4a = require('b4a')\n\nconst SymmetricState = require('./symmetric-state')\nconst { HASHLEN } = require('./hkdf')\n\nconst PRESHARE_IS = Symbol('initiator static key preshared')\nconst PRESHARE_RS = Symbol('responder static key preshared')\n\nconst TOK_PSK = Symbol('psk')\n\nconst TOK_S = Symbol('s')\nconst TOK_E = Symbol('e')\n\nconst TOK_ES = Symbol('es')\nconst TOK_SE = Symbol('se')\nconst TOK_EE = Symbol('ee')\nconst TOK_SS = Symbol('ss')\n\nconst HANDSHAKES = Object.freeze({\n NN: [\n [TOK_E],\n [TOK_E, TOK_EE]\n ],\n NNpsk0: [\n [TOK_PSK, TOK_E],\n [TOK_E, TOK_EE]\n ],\n XX: [\n [TOK_E],\n [TOK_E, TOK_EE, TOK_S, TOK_ES],\n [TOK_S, TOK_SE]\n ],\n XXpsk0: [\n [TOK_PSK, TOK_E],\n [TOK_E, TOK_EE, TOK_S, TOK_ES],\n [TOK_S, TOK_SE]\n ],\n IK: [\n PRESHARE_RS,\n [TOK_E, TOK_ES, TOK_S, TOK_SS],\n [TOK_E, TOK_EE, TOK_SE]\n ],\n XK: [\n PRESHARE_RS,\n [TOK_E, TOK_ES],\n [TOK_E, TOK_EE],\n [TOK_S, TOK_SE]\n ]\n})\n\nclass Writer {\n constructor () {\n this.size = 0\n this.buffers = []\n }\n\n push (b) {\n this.size += b.byteLength\n this.buffers.push(b)\n }\n\n end () {\n const all = b4a.alloc(this.size)\n let offset = 0\n for (const b of this.buffers) {\n all.set(b, offset)\n offset += b.byteLength\n }\n return all\n }\n}\n\nclass Reader {\n constructor (buf) {\n this.offset = 0\n this.buffer = buf\n }\n\n shift (n) {\n const start = this.offset\n const end = this.offset += n\n if (end > this.buffer.byteLength) throw new Error('Insufficient bytes')\n return this.buffer.subarray(start, end)\n }\n\n end () {\n return this.shift(this.buffer.byteLength - this.offset)\n }\n}\n\nmodule.exports = class NoiseState extends SymmetricState {\n constructor (pattern, initiator, staticKeypair, opts = {}) {\n super(opts)\n\n this.s = staticKeypair || this.curve.generateKeyPair()\n this.e = null\n\n this.psk = null\n if (opts && opts.psk) this.psk = opts.psk\n\n this.re = null\n this.rs = null\n\n this.pattern = pattern\n this.handshake = HANDSHAKES[this.pattern].slice()\n\n this.isPskHandshake = !!this.psk && hasPskToken(this.handshake)\n\n this.protocol = b4a.from([\n 'Noise',\n this.pattern,\n this.DH_ALG,\n this.CIPHER_ALG,\n 'BLAKE2b'\n ].join('_'))\n\n this.initiator = initiator\n this.complete = false\n\n this.rx = null\n this.tx = null\n this.hash = null\n }\n\n initialise (prologue, remoteStatic) {\n if (this.protocol.byteLength <= HASHLEN) this.digest.set(this.protocol)\n else this.mixHash(this.protocol)\n\n this.chainingKey = b4a.from(this.digest)\n\n this.mixHash(prologue)\n\n while (!Array.isArray(this.handshake[0])) {\n const message = this.handshake.shift()\n\n // handshake steps should be as arrays, only\n // preshare tokens are provided otherwise\n assert(message === PRESHARE_RS || message === PRESHARE_IS,\n 'Unexpected pattern')\n\n const takeRemoteKey = this.initiator\n ? message === PRESHARE_RS\n : message === PRESHARE_IS\n\n if (takeRemoteKey) this.rs = remoteStatic\n\n const key = takeRemoteKey ? this.rs : this.s.publicKey\n assert(key != null, 'Remote pubkey required')\n\n this.mixHash(key)\n }\n }\n\n final () {\n const [k1, k2] = this.split()\n\n this.tx = this.initiator ? k1 : k2\n this.rx = this.initiator ? k2 : k1\n\n this.complete = true\n this.hash = this.getHandshakeHash()\n\n this._clear()\n }\n\n recv (buf) {\n const r = new Reader(buf)\n\n for (const pattern of this.handshake.shift()) {\n switch (pattern) {\n case TOK_PSK :\n this.mixKeyAndHash(this.psk)\n break\n\n case TOK_E :\n this.re = r.shift(this.curve.PKLEN)\n this.mixHash(this.re)\n if (this.isPskHandshake) this.mixKeyNormal(this.re)\n break\n\n case TOK_S : {\n const klen = this.hasKey ? this.curve.PKLEN + 16 : this.curve.PKLEN\n this.rs = this.decryptAndHash(r.shift(klen))\n break\n }\n\n case TOK_EE :\n case TOK_ES :\n case TOK_SE :\n case TOK_SS : {\n const useStatic = keyPattern(pattern, this.initiator)\n\n const localKey = useStatic.local ? this.s : this.e\n const remoteKey = useStatic.remote ? this.rs : this.re\n\n this.mixKey(remoteKey, localKey)\n break\n }\n\n default :\n throw new Error('Unexpected message')\n }\n }\n\n const payload = this.decryptAndHash(r.end())\n\n if (!this.handshake.length) this.final()\n return payload\n }\n\n send (payload = b4a.alloc(0)) {\n const w = new Writer()\n\n for (const pattern of this.handshake.shift()) {\n switch (pattern) {\n case TOK_PSK :\n this.mixKeyAndHash(this.psk)\n break\n\n case TOK_E :\n if (this.e === null) this.e = this.curve.generateKeyPair()\n this.mixHash(this.e.publicKey)\n if (this.isPskHandshake) this.mixKeyNormal(this.e.publicKey)\n w.push(this.e.publicKey)\n break\n\n case TOK_S :\n w.push(this.encryptAndHash(this.s.publicKey))\n break\n\n case TOK_ES :\n case TOK_SE :\n case TOK_EE :\n case TOK_SS : {\n const useStatic = keyPattern(pattern, this.initiator)\n\n const localKey = useStatic.local ? this.s : this.e\n const remoteKey = useStatic.remote ? this.rs : this.re\n\n this.mixKey(remoteKey, localKey)\n break\n }\n\n default :\n throw new Error('Unexpected message')\n }\n }\n\n w.push(this.encryptAndHash(payload))\n const response = w.end()\n\n if (!this.handshake.length) this.final()\n return response\n }\n\n _clear () {\n super._clear()\n\n this.e.secretKey.fill(0)\n this.e.publicKey.fill(0)\n\n this.re.fill(0)\n\n this.e = null\n this.re = null\n }\n}\n\nfunction keyPattern (pattern, initiator) {\n const ret = {\n local: false,\n remote: false\n }\n\n switch (pattern) {\n case TOK_EE:\n return ret\n\n case TOK_ES:\n ret.local ^= !initiator\n ret.remote ^= initiator\n return ret\n\n case TOK_SE:\n ret.local ^= initiator\n ret.remote ^= !initiator\n return ret\n\n case TOK_SS:\n ret.local ^= 1\n ret.remote ^= 1\n return ret\n }\n}\n\nfunction hasPskToken (handshake) {\n return handshake.some(x => {\n return Array.isArray(x) && x.indexOf(TOK_PSK) !== -1\n })\n}\n{\n \"name\": \"noise-handshake\",\n \"version\": \"4.2.0\",\n \"description\": \"Noise protocol handshake\",\n \"main\": \"noise.js\",\n \"files\": [\n \"*.js\"\n ],\n \"scripts\": {\n \"test\": \"standard && brittle test/*.js\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/noise-handshake.git\"\n },\n \"dependencies\": {\n \"b4a\": \"^1.1.0\",\n \"nanoassert\": \"^2.0.0\",\n \"sodium-universal\": \"^5.0.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"noise-protocol\": \"chm-diederichs/noise-protocol.git#xx-ephemeral-key\",\n \"standard\": \"^16.0.3\"\n }\n}\nconst sodium = require('sodium-universal')\nconst assert = require('nanoassert')\nconst b4a = require('b4a')\nconst CipherState = require('./cipher')\nconst curve = require('./dh')\nconst { HASHLEN, hkdf } = require('./hkdf')\n\nmodule.exports = class SymmetricState extends CipherState {\n constructor (opts = {}) {\n super()\n\n this.curve = opts.curve || curve\n this.digest = b4a.alloc(HASHLEN)\n this.chainingKey = null\n this.offset = 0\n\n this.DH_ALG = this.curve.ALG\n }\n\n mixHash (data) {\n accumulateDigest(this.digest, data)\n }\n\n mixKeyAndHash (key) {\n const [ck, tempH, tempK] = hkdf(this.chainingKey, key, '', 3 * HASHLEN)\n this.chainingKey = ck\n this.mixHash(tempH)\n this.initialiseKey(tempK.subarray(0, 32))\n }\n\n mixKeyNormal (key) {\n const [ck, tempK] = hkdf(this.chainingKey, key)\n this.chainingKey = ck\n this.initialiseKey(tempK.subarray(0, 32))\n }\n\n mixKey (remoteKey, localKey) {\n const dh = this.curve.dh(remoteKey, localKey)\n const hkdfResult = hkdf(this.chainingKey, dh)\n this.chainingKey = hkdfResult[0]\n this.initialiseKey(hkdfResult[1].subarray(0, 32))\n }\n\n encryptAndHash (plaintext) {\n const ciphertext = this.encrypt(plaintext, this.digest)\n accumulateDigest(this.digest, ciphertext)\n return ciphertext\n }\n\n decryptAndHash (ciphertext) {\n const plaintext = this.decrypt(ciphertext, this.digest)\n accumulateDigest(this.digest, ciphertext)\n return plaintext\n }\n\n getHandshakeHash (out) {\n if (!out) return this.getHandshakeHash(b4a.alloc(HASHLEN))\n assert(out.byteLength === HASHLEN, `output must be ${HASHLEN} bytes`)\n\n out.set(this.digest)\n return out\n }\n\n split () {\n const res = hkdf(this.chainingKey, b4a.alloc(0))\n return res.map(k => k.subarray(0, 32))\n }\n\n _clear () {\n super._clear()\n\n sodium.sodium_memzero(this.digest)\n sodium.sodium_memzero(this.chainingKey)\n\n this.digest = null\n this.chainingKey = null\n this.offset = null\n\n this.curve = null\n }\n\n static get alg () {\n return CipherState.alg + '_BLAKE2b'\n }\n}\n\nfunction accumulateDigest (digest, input) {\n const toHash = b4a.concat([digest, input])\n sodium.crypto_generichash(digest, toHash)\n}\nvar varint = require('varint')\nvar svarint = require('signed-varint')\nvar b4a = require('b4a')\n\nexports.make = encoder\n\nexports.name = function (enc) {\n var keys = Object.keys(exports)\n for (var i = 0; i < keys.length; i++) {\n if (exports[keys[i]] === enc) return keys[i]\n }\n return null\n}\n\nexports.skip = function (type, buffer, offset) {\n switch (type) {\n case 0:\n varint.decode(buffer, offset)\n return offset + varint.decode.bytes\n\n case 1:\n return offset + 8\n\n case 2:\n var len = varint.decode(buffer, offset)\n return offset + varint.decode.bytes + len\n\n case 3:\n case 4:\n throw new Error('Groups are not supported')\n\n case 5:\n return offset + 4\n }\n\n throw new Error('Unknown wire type: ' + type)\n}\n\nexports.bytes = encoder(2,\n function encode (val, buffer, offset) {\n var oldOffset = offset\n var len = bufferLength(val)\n\n varint.encode(len, buffer, offset)\n offset += varint.encode.bytes\n\n if (b4a.isBuffer(val)) b4a.copy(val, buffer, offset)\n else b4a.write(buffer, val, offset, len)\n offset += len\n\n encode.bytes = offset - oldOffset\n return buffer\n },\n function decode (buffer, offset) {\n var oldOffset = offset\n\n var len = varint.decode(buffer, offset)\n offset += varint.decode.bytes\n\n var val = buffer.subarray(offset, offset + len)\n offset += val.length\n\n decode.bytes = offset - oldOffset\n return val\n },\n function encodingLength (val) {\n var len = bufferLength(val)\n return varint.encodingLength(len) + len\n }\n)\n\nexports.string = encoder(2,\n function encode (val, buffer, offset) {\n var oldOffset = offset\n var len = b4a.byteLength(val)\n\n varint.encode(len, buffer, offset, 'utf-8')\n offset += varint.encode.bytes\n\n b4a.write(buffer, val, offset, len)\n offset += len\n\n encode.bytes = offset - oldOffset\n return buffer\n },\n function decode (buffer, offset) {\n var oldOffset = offset\n\n var len = varint.decode(buffer, offset)\n offset += varint.decode.bytes\n\n var val = b4a.toString(buffer, 'utf-8', offset, offset + len)\n offset += len\n\n decode.bytes = offset - oldOffset\n return val\n },\n function encodingLength (val) {\n var len = b4a.byteLength(val)\n return varint.encodingLength(len) + len\n }\n)\n\nexports.bool = encoder(0,\n function encode (val, buffer, offset) {\n buffer[offset] = val ? 1 : 0\n encode.bytes = 1\n return buffer\n },\n function decode (buffer, offset) {\n var bool = buffer[offset] > 0\n decode.bytes = 1\n return bool\n },\n function encodingLength () {\n return 1\n }\n)\n\nexports.int32 = encoder(0,\n function encode (val, buffer, offset) {\n varint.encode(val < 0 ? val + 4294967296 : val, buffer, offset)\n encode.bytes = varint.encode.bytes\n return buffer\n },\n function decode (buffer, offset) {\n var val = varint.decode(buffer, offset)\n decode.bytes = varint.decode.bytes\n return val > 2147483647 ? val - 4294967296 : val\n },\n function encodingLength (val) {\n return varint.encodingLength(val < 0 ? val + 4294967296 : val)\n }\n)\n\nexports.int64 = encoder(0,\n function encode (val, buffer, offset) {\n if (val < 0) {\n var last = offset + 9\n varint.encode(val * -1, buffer, offset)\n offset += varint.encode.bytes - 1\n buffer[offset] = buffer[offset] | 0x80\n while (offset < last - 1) {\n offset++\n buffer[offset] = 0xff\n }\n buffer[last] = 0x01\n encode.bytes = 10\n } else {\n varint.encode(val, buffer, offset)\n encode.bytes = varint.encode.bytes\n }\n return buffer\n },\n function decode (buffer, offset) {\n var val = varint.decode(buffer, offset)\n if (val >= Math.pow(2, 63)) {\n var limit = 9\n while (buffer[offset + limit - 1] === 0xff) limit--\n limit = limit || 9\n var subset = b4a.allocUnsafe(limit)\n b4a.copy(buffer, subset, 0, offset, offset + limit)\n subset[limit - 1] = subset[limit - 1] & 0x7f\n val = -1 * varint.decode(subset, 0)\n decode.bytes = 10\n } else {\n decode.bytes = varint.decode.bytes\n }\n return val\n },\n function encodingLength (val) {\n return val < 0 ? 10 : varint.encodingLength(val)\n }\n)\n\nexports.sint32 =\nexports.sint64 = encoder(0,\n svarint.encode,\n svarint.decode,\n svarint.encodingLength\n)\n\nexports.uint32 =\nexports.uint64 =\nexports.enum =\nexports.varint = encoder(0,\n varint.encode,\n varint.decode,\n varint.encodingLength\n)\n\n// we cannot represent these in javascript so we just use buffers\nexports.fixed64 =\nexports.sfixed64 = encoder(1,\n function encode (val, buffer, offset) {\n b4a.copy(val, buffer, offset)\n encode.bytes = 8\n return buffer\n },\n function decode (buffer, offset) {\n var val = buffer.subarray(offset, offset + 8)\n decode.bytes = 8\n return val\n },\n function encodingLength () {\n return 8\n }\n)\n\nexports.double = encoder(1,\n function encode (val, buffer, offset) {\n b4a.writeDoubleLE(buffer, val, offset)\n encode.bytes = 8\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readDoubleLE(buffer, offset)\n decode.bytes = 8\n return val\n },\n function encodingLength () {\n return 8\n }\n)\n\nexports.fixed32 = encoder(5,\n function encode (val, buffer, offset) {\n b4a.writeUInt32LE(buffer, val, offset)\n encode.bytes = 4\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readUInt32LE(buffer, offset)\n decode.bytes = 4\n return val\n },\n function encodingLength () {\n return 4\n }\n)\n\nexports.sfixed32 = encoder(5,\n function encode (val, buffer, offset) {\n b4a.writeInt32LE(buffer, val, offset)\n encode.bytes = 4\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readInt32LE(buffer, offset)\n decode.bytes = 4\n return val\n },\n function encodingLength () {\n return 4\n }\n)\n\nexports.float = encoder(5,\n function encode (val, buffer, offset) {\n b4a.writeFloatLE(buffer, val, offset)\n encode.bytes = 4\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readFloatLE(buffer, offset)\n decode.bytes = 4\n return val\n },\n function encodingLength () {\n return 4\n }\n)\n\nfunction encoder (type, encode, decode, encodingLength) {\n encode.bytes = decode.bytes = 0\n\n return {\n type: type,\n encode: encode,\n decode: decode,\n encodingLength: encodingLength\n }\n}\n\nfunction bufferLength (val) {\n return b4a.isBuffer(val) ? val.length : b4a.byteLength(val)\n}\n{\n \"name\": \"protocol-buffers-encodings\",\n \"version\": \"1.2.0\",\n \"description\": \"Base encodings for protocol-buffers\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"b4a\": \"^1.6.0\",\n \"signed-varint\": \"^2.0.1\",\n \"varint\": \"5.0.0\"\n },\n \"devDependencies\": {\n \"standard\": \"^14.3.4\",\n \"tape\": \"^5.0.1\"\n },\n \"scripts\": {\n \"test\": \"standard && tape test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/protocol-buffers-encodings.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/protocol-buffers-encodings/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/protocol-buffers-encodings\"\n}\nconst b4a = require('b4a')\nconst c = require('compact-encoding')\nconst queueTick = require('queue-tick')\nconst safetyCatch = require('safety-catch')\nconst unslab = require('unslab')\n\nconst MAX_BUFFERED = 32768\nconst MAX_BACKLOG = Infinity // TODO: impl \"open\" backpressure\nconst MAX_BATCH = 8 * 1024 * 1024\n\nclass Channel {\n constructor(\n mux,\n info,\n userData,\n protocol,\n aliases,\n id,\n handshake,\n messages,\n onopen,\n onclose,\n ondestroy,\n ondrain\n ) {\n this.userData = userData\n this.protocol = protocol\n this.aliases = aliases\n this.id = id\n this.handshake = null\n this.messages = []\n\n this.opened = false\n this.closed = false\n this.destroyed = false\n\n this.onopen = onopen\n this.onclose = onclose\n this.ondestroy = ondestroy\n this.ondrain = ondrain\n\n this._handshake = handshake\n this._mux = mux\n this._info = info\n this._localId = 0\n this._remoteId = 0\n this._active = 0\n this._extensions = null\n\n this._decBound = this._dec.bind(this)\n this._decAndDestroyBound = this._decAndDestroy.bind(this)\n\n this._openedPromise = null\n this._openedResolve = null\n\n this._destroyedPromise = null\n this._destroyedResolve = null\n\n for (const m of messages) this.addMessage(m)\n }\n\n get drained() {\n return this._mux.drained\n }\n\n fullyOpened() {\n if (this.opened) return Promise.resolve(true)\n if (this.closed) return Promise.resolve(false)\n if (this._openedPromise) return this._openedPromise\n\n this._openedPromise = new Promise((resolve) => {\n this._openedResolve = resolve\n })\n return this._openedPromise\n }\n\n fullyClosed() {\n if (this.destroyed) return Promise.resolve()\n if (this._destroyedPromise) return this._destroyedPromise\n\n this._destroyedPromise = new Promise((resolve) => {\n this._destroyedResolve = resolve\n })\n return this._destroyedPromise\n }\n\n open(handshake) {\n const id = this._mux._free.length > 0 ? this._mux._free.pop() : this._mux._local.push(null) - 1\n\n this._info.opened++\n this._info.lastChannel = this\n this._localId = id + 1\n this._mux._local[id] = this\n\n if (this._remoteId === 0) {\n this._info.outgoing.push(this._localId)\n }\n\n const state = { buffer: null, start: 2, end: 2 }\n\n c.uint.preencode(state, this._localId)\n c.string.preencode(state, this.protocol)\n c.optionalBuffer.preencode(state, this.id)\n if (this._handshake) this._handshake.preencode(state, handshake)\n\n state.buffer = this._mux._alloc(state.end)\n\n state.buffer[0] = 0\n state.buffer[1] = 1\n c.uint.encode(state, this._localId)\n c.string.encode(state, this.protocol)\n c.optionalBuffer.encode(state, this.id)\n if (this._handshake) this._handshake.encode(state, handshake)\n\n this._mux._write0(state.buffer)\n }\n\n _dec() {\n if (--this._active === 0 && this.closed === true) this._destroy()\n }\n\n _decAndDestroy(err) {\n this._dec()\n this._mux._safeDestroy(err)\n }\n\n _fullyOpenSoon() {\n this._mux._remote[this._remoteId - 1].session = this\n queueTick(this._fullyOpenOrDestroy.bind(this))\n }\n\n _fullyOpenOrDestroy() {\n try {\n this._fullyOpen()\n } catch (err) {\n this._mux._safeDestroyBound(err)\n }\n }\n\n _fullyOpen() {\n if (this.opened === true || this.closed === true) return\n\n const remote = this._mux._remote[this._remoteId - 1]\n\n this.handshake = this._handshake ? this._handshake.decode(remote.state) : null\n this._track(this.onopen(this.handshake, this))\n\n remote.session = this\n remote.state = null\n if (remote.pending !== null) this._drain(remote)\n if (this._mux._destroying === true) return\n\n this.opened = true\n this._resolveOpen(true)\n }\n\n _resolveOpen(opened) {\n if (this._openedResolve !== null) {\n this._openedResolve(opened)\n this._openedResolve = this._openedPromise = null\n }\n }\n\n _resolveDestroyed() {\n if (this._destroyedResolve !== null) {\n this._destroyedResolve()\n this._destroyedResolve = this._destroyedPromise = null\n }\n }\n\n _drain(remote) {\n for (let i = 0; i < remote.pending.length; i++) {\n const p = remote.pending[i]\n this._mux._buffered -= byteSize(p.state)\n this._recv(p.type, p.state)\n if (this._mux._destroying === true) return\n }\n\n remote.pending = null\n this._mux._resumeMaybe()\n }\n\n _track(p) {\n if (isPromise(p) === true) {\n this._active++\n return p.then(this._decBound, this._decAndDestroyBound)\n }\n\n return null\n }\n\n _close(isRemote) {\n if (this.closed === true) return\n this.closed = true\n\n this._info.opened--\n if (this._info.lastChannel === this) this._info.lastChannel = null\n\n if (this._remoteId > 0) {\n this._mux._remote[this._remoteId - 1] = null\n this._remoteId = 0\n // If remote has acked, we can reuse the local id now\n // otherwise, we need to wait for the \"ack\" to arrive\n this._mux._free.push(this._localId - 1)\n }\n\n this._mux._local[this._localId - 1] = null\n this._localId = 0\n\n this._mux._gc(this._info)\n this._track(this.onclose(isRemote, this))\n\n if (this._active === 0) this._destroy()\n\n this._resolveOpen(false)\n }\n\n _destroy() {\n if (this.destroyed === true) return\n this.destroyed = true\n this._track(this.ondestroy(this))\n this._resolveDestroyed()\n }\n\n _recv(type, state) {\n if (type < this.messages.length) {\n const m = this.messages[type]\n const p = m.recv(state, this)\n if (m.autoBatch === true) return p\n }\n return null\n }\n\n cork() {\n this._mux.cork()\n }\n\n uncork() {\n this._mux.uncork()\n }\n\n close() {\n if (this.closed === true) return\n\n const state = { buffer: null, start: 2, end: 2 }\n\n c.uint.preencode(state, this._localId)\n\n state.buffer = this._mux._alloc(state.end)\n\n state.buffer[0] = 0\n state.buffer[1] = 3\n c.uint.encode(state, this._localId)\n\n this._close(false)\n this._mux._write0(state.buffer)\n }\n\n addMessage(opts) {\n if (!opts) return this._skipMessage()\n\n const type = this.messages.length\n const autoBatch = opts.autoBatch !== false\n const encoding = opts.encoding || c.raw\n const onmessage = opts.onmessage || noop\n\n const s = this\n const typeLen = encodingLength(c.uint, type)\n\n const m = {\n type,\n autoBatch,\n encoding,\n onmessage,\n recv(state, session) {\n return session._track(m.onmessage(encoding.decode(state), session))\n },\n send(m, session = s) {\n if (session.closed === true) return false\n\n const mux = session._mux\n const state = { buffer: null, start: 0, end: typeLen }\n\n if (mux._batch !== null) {\n encoding.preencode(state, m)\n state.buffer = mux._alloc(state.end)\n\n c.uint.encode(state, type)\n encoding.encode(state, m)\n\n mux._pushBatch(session._localId, state.buffer)\n return true\n }\n\n c.uint.preencode(state, session._localId)\n encoding.preencode(state, m)\n\n state.buffer = mux._alloc(state.end)\n\n c.uint.encode(state, session._localId)\n c.uint.encode(state, type)\n encoding.encode(state, m)\n\n mux.drained = mux.stream.write(state.buffer)\n\n return mux.drained\n }\n }\n\n this.messages.push(m)\n\n return m\n }\n\n _skipMessage() {\n const type = this.messages.length\n const m = {\n type,\n encoding: c.raw,\n onmessage: noop,\n recv(state, session) {},\n send(m, session) {}\n }\n\n this.messages.push(m)\n return m\n }\n}\n\nmodule.exports = class Protomux {\n constructor(stream, { alloc } = {}) {\n if (stream.userData === null) stream.userData = this\n\n this.isProtomux = true\n this.stream = stream\n this.corked = 0\n this.drained = true\n\n this._alloc =\n alloc || (typeof stream.alloc === 'function' ? stream.alloc.bind(stream) : b4a.allocUnsafe)\n this._safeDestroyBound = this._safeDestroy.bind(this)\n this._uncorkBound = this.uncork.bind(this)\n\n this._remoteBacklog = 0\n this._buffered = 0\n this._paused = false\n this._remote = []\n this._local = []\n this._free = []\n this._batch = null\n this._batchState = null\n\n this._infos = new Map()\n this._notify = new Map()\n // stream.destroyed flips asynchronously on streamx-based transports.\n this._destroying = false\n\n this.stream.on('data', this._ondata.bind(this))\n this.stream.on('drain', this._ondrain.bind(this))\n this.stream.on('end', this._onend.bind(this))\n this.stream.on('error', noop) // we handle this in \"close\"\n this.stream.on('close', this._shutdown.bind(this))\n }\n\n static from(stream, opts) {\n if (stream.userData && stream.userData.isProtomux) return stream.userData\n if (stream.isProtomux) return stream\n return new this(stream, opts)\n }\n\n static isProtomux(mux) {\n return typeof mux === 'object' && mux.isProtomux === true\n }\n\n *[Symbol.iterator]() {\n for (const session of this._local) {\n if (session !== null) yield session\n }\n }\n\n isIdle() {\n return this._local.length === this._free.length\n }\n\n cork() {\n if (++this.corked === 1) {\n this._batch = []\n this._batchState = { buffer: null, start: 0, end: 1 }\n }\n }\n\n uncork() {\n if (--this.corked === 0) {\n this._sendBatch(this._batch, this._batchState)\n this._batch = null\n this._batchState = null\n }\n }\n\n getLastChannel({ protocol, id = null }) {\n const key = toKey(protocol, id)\n const info = this._infos.get(key)\n if (info) return info.lastChannel\n return null\n }\n\n pair({ protocol, id = null }, notify) {\n this._notify.set(toKey(protocol, id), notify)\n }\n\n unpair({ protocol, id = null }) {\n this._notify.delete(toKey(protocol, id))\n }\n\n opened({ protocol, id = null }) {\n const key = toKey(protocol, id)\n const info = this._infos.get(key)\n return info ? info.opened > 0 : false\n }\n\n createChannel({\n userData = null,\n protocol,\n aliases = [],\n id = null,\n unique = true,\n handshake = null,\n messages = [],\n onopen = noop,\n onclose = noop,\n ondestroy = noop,\n ondrain = noop\n }) {\n if (this.stream.destroyed) return null\n\n const info = this._get(protocol, id, aliases)\n if (unique && info.opened > 0) return null\n\n if (info.incoming.length === 0) {\n return new Channel(\n this,\n info,\n userData,\n protocol,\n aliases,\n id,\n handshake,\n messages,\n onopen,\n onclose,\n ondestroy,\n ondrain\n )\n }\n\n this._remoteBacklog--\n\n const remoteId = info.incoming.shift()\n const r = this._remote[remoteId - 1]\n if (r === null) return null\n\n const session = new Channel(\n this,\n info,\n userData,\n protocol,\n aliases,\n id,\n handshake,\n messages,\n onopen,\n onclose,\n ondestroy,\n ondrain\n )\n\n session._remoteId = remoteId\n session._fullyOpenSoon()\n\n return session\n }\n\n _pushBatch(localId, buffer) {\n if (this._batchState.end >= MAX_BATCH) {\n this._sendBatch(this._batch, this._batchState)\n this._batch = []\n this._batchState = { buffer: null, start: 0, end: 1 }\n }\n\n if (this._batch.length === 0 || this._batch[this._batch.length - 1].localId !== localId) {\n this._batchState.end++\n c.uint.preencode(this._batchState, localId)\n }\n c.buffer.preencode(this._batchState, buffer)\n this._batch.push({ localId, buffer })\n }\n\n _sendBatch(batch, state) {\n if (batch.length === 0) return\n\n let prev = batch[0].localId\n\n state.buffer = this._alloc(state.end)\n state.buffer[state.start++] = 0\n state.buffer[state.start++] = 0\n\n c.uint.encode(state, prev)\n\n for (let i = 0; i < batch.length; i++) {\n const b = batch[i]\n if (prev !== b.localId) {\n state.buffer[state.start++] = 0\n c.uint.encode(state, (prev = b.localId))\n }\n c.buffer.encode(state, b.buffer)\n }\n\n this.drained = this.stream.write(state.buffer)\n }\n\n _get(protocol, id, aliases = []) {\n const key = toKey(protocol, id)\n\n let info = this._infos.get(key)\n if (info) return info\n\n info = {\n key,\n protocol,\n aliases: [],\n id,\n pairing: 0,\n opened: 0,\n incoming: [],\n outgoing: [],\n lastChannel: null\n }\n this._infos.set(key, info)\n\n for (const alias of aliases) {\n const key = toKey(alias, id)\n info.aliases.push(key)\n\n this._infos.set(key, info)\n }\n\n return info\n }\n\n _gc(info) {\n if (info.opened === 0 && info.outgoing.length === 0 && info.incoming.length === 0) {\n this._infos.delete(info.key)\n\n for (const alias of info.aliases) this._infos.delete(alias)\n }\n }\n\n _ondata(buffer) {\n if (buffer.byteLength === 0) return // ignore empty frames...\n try {\n const state = { buffer, start: 0, end: buffer.byteLength }\n this._decode(c.uint.decode(state), state)\n } catch (err) {\n this._safeDestroy(err)\n }\n }\n\n _ondrain() {\n this.drained = true\n\n for (const s of this._local) {\n if (s !== null) s._track(s.ondrain(s))\n }\n }\n\n _onend() {\n // TODO: support half open mode for the users who wants that here\n this.stream.end()\n }\n\n _decode(remoteId, state) {\n const type = c.uint.decode(state)\n\n if (remoteId === 0) {\n return this._oncontrolsession(type, state)\n }\n\n const r = remoteId <= this._remote.length ? this._remote[remoteId - 1] : null\n\n // if the channel is closed ignore - could just be a pipeline message...\n if (r === null) return null\n\n if (r.pending !== null) {\n this._bufferMessage(r, type, state)\n return null\n }\n\n return r.session._recv(type, state)\n }\n\n _oncontrolsession(type, state) {\n switch (type) {\n case 0:\n this._onbatch(state)\n break\n\n case 1:\n // return the promise back up as this has sideeffects so we can batch reply\n return this._onopensession(state)\n\n case 2:\n this._onrejectsession(state)\n break\n\n case 3:\n this._onclosesession(state)\n break\n }\n\n return null\n }\n\n _bufferMessage(r, type, { buffer, start, end }) {\n const state = { buffer, start, end } // copy\n r.pending.push({ type, state })\n this._buffered += byteSize(state)\n this._pauseMaybe()\n }\n\n _pauseMaybe() {\n if (this._paused === true || this._buffered <= MAX_BUFFERED) return\n this._paused = true\n this.stream.pause()\n }\n\n _resumeMaybe() {\n if (this._paused === false || this._buffered > MAX_BUFFERED) return\n this._paused = false\n this.stream.resume()\n }\n\n _onbatch(state) {\n const end = state.end\n let remoteId = c.uint.decode(state)\n\n let waiting = null\n\n while (state.end > state.start) {\n const len = c.uint.decode(state)\n if (len === 0) {\n remoteId = c.uint.decode(state)\n continue\n }\n state.end = state.start + len\n // if batch contains more than one message, cork it so we reply back with a batch\n if (end !== state.end && waiting === null) {\n waiting = []\n this.cork()\n }\n const p = this._decode(remoteId, state)\n if (waiting !== null && p !== null) waiting.push(p)\n state.start = state.end\n state.end = end\n }\n\n if (waiting !== null) {\n // the waiting promises are not allowed to throw but we destroy the stream in case we are wrong\n Promise.all(waiting).then(this._uncorkBound, this._safeDestroyBound)\n }\n }\n\n _onopensession(state) {\n const remoteId = c.uint.decode(state)\n const protocol = c.string.decode(state)\n const id = unslab(c.optionalBuffer.decode(state))\n\n // remote tried to open the control session - auto reject for now\n // as we can use as an explicit control protocol declaration if we need to\n if (remoteId === 0) {\n this._rejectSession(0)\n return null\n }\n\n const rid = remoteId - 1\n const info = this._get(protocol, id)\n\n // allow the remote to grow the ids by one\n if (this._remote.length === rid) {\n this._remote.push(null)\n }\n\n if (rid >= this._remote.length || this._remote[rid] !== null) {\n throw new Error('Invalid open message')\n }\n\n if (info.outgoing.length > 0) {\n const localId = info.outgoing.shift()\n const session = this._local[localId - 1]\n\n if (session === null) {\n // we already closed the channel - ignore\n this._free.push(localId - 1)\n return null\n }\n\n this._remote[rid] = { state, pending: null, session: null }\n\n session._remoteId = remoteId\n session._fullyOpen()\n return null\n }\n\n const copyState = { buffer: state.buffer, start: state.start, end: state.end }\n this._remote[rid] = { state: copyState, pending: [], session: null }\n\n if (++this._remoteBacklog > MAX_BACKLOG) {\n throw new Error('Remote exceeded backlog')\n }\n\n info.pairing++\n info.incoming.push(remoteId)\n\n return this._requestSession(protocol, id, info).catch(this._safeDestroyBound)\n }\n\n _onrejectsession(state) {\n const localId = c.uint.decode(state)\n\n // TODO: can be done smarter...\n for (const info of this._infos.values()) {\n const i = info.outgoing.indexOf(localId)\n if (i === -1) continue\n\n info.outgoing.splice(i, 1)\n\n const session = this._local[localId - 1]\n\n this._free.push(localId - 1)\n if (session !== null) session._close(true)\n\n this._gc(info)\n return\n }\n\n throw new Error('Invalid reject message')\n }\n\n _onclosesession(state) {\n const remoteId = c.uint.decode(state)\n\n if (remoteId === 0) return // ignore\n\n const rid = remoteId - 1\n const r = rid < this._remote.length ? this._remote[rid] : null\n\n if (r === null) return\n\n if (r.session !== null) r.session._close(true)\n }\n\n async _requestSession(protocol, id, info) {\n const notify = this._notify.get(toKey(protocol, id)) || this._notify.get(toKey(protocol, null))\n\n if (notify) await notify(id)\n\n if (--info.pairing > 0) return\n\n while (info.incoming.length > 0) {\n this._rejectSession(info, info.incoming.shift())\n }\n\n this._gc(info)\n }\n\n _rejectSession(info, remoteId) {\n if (remoteId > 0) {\n const r = this._remote[remoteId - 1]\n\n if (r.pending !== null) {\n for (let i = 0; i < r.pending.length; i++) {\n this._buffered -= byteSize(r.pending[i].state)\n }\n }\n\n this._remote[remoteId - 1] = null\n this._resumeMaybe()\n }\n\n const state = { buffer: null, start: 2, end: 2 }\n\n c.uint.preencode(state, remoteId)\n\n state.buffer = this._alloc(state.end)\n\n state.buffer[0] = 0\n state.buffer[1] = 2\n c.uint.encode(state, remoteId)\n\n this._write0(state.buffer)\n }\n\n _write0(buffer) {\n if (this._batch !== null) {\n this._pushBatch(0, buffer.subarray(1))\n return\n }\n\n this.drained = this.stream.write(buffer)\n }\n\n destroy(err) {\n this._destroying = true\n this.stream.destroy(err)\n }\n\n _safeDestroy(err) {\n safetyCatch(err)\n this._destroying = true\n this.stream.destroy(err)\n }\n\n _shutdown() {\n this._destroying = true\n for (const s of this._local) {\n if (s !== null) s._close(true)\n }\n }\n}\n\nfunction noop() {}\n\nfunction toKey(protocol, id) {\n return protocol + '##' + (id ? b4a.toString(id, 'hex') : '')\n}\n\nfunction byteSize(state) {\n return 512 + (state.end - state.start)\n}\n\nfunction isPromise(p) {\n return !!(p && typeof p.then === 'function')\n}\n\nfunction encodingLength(enc, val) {\n const state = { buffer: null, start: 0, end: 0 }\n enc.preencode(state, val)\n return state.end\n}\n{\n \"name\": \"protomux\",\n \"version\": \"3.11.0\",\n \"description\": \"Multiplex multiple message oriented protocols over a stream\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"dependencies\": {\n \"b4a\": \"^1.3.1\",\n \"compact-encoding\": \"^3.0.0\",\n \"queue-tick\": \"^1.0.0\",\n \"safety-catch\": \"^1.0.1\",\n \"unslab\": \"^1.3.0\"\n },\n \"devDependencies\": {\n \"@hyperswarm/secret-stream\": \"^6.0.0\",\n \"brittle\": \"^3.0.0\",\n \"lunte\": \"^1.0.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:node\": \"brittle-node test.js\",\n \"test:bare\": \"brittle-bare test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/protomux.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/protomux/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/protomux\"\n}\n{\n \"name\": \"queue-tick\",\n \"version\": \"1.0.1\",\n \"description\": \"Next tick shim that prefers process.nextTick over queueMicrotask for compat\",\n \"main\": \"./process-next-tick.js\",\n \"browser\": \"./queue-microtask.js\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"standard\": \"^16.0.3\",\n \"tape\": \"^5.3.1\"\n },\n \"scripts\": {\n \"test\": \"standard && tape test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/queue-tick.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/queue-tick/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/queue-tick\"\n}\nmodule.exports = (typeof process !== 'undefined' && typeof process.nextTick === 'function')\n ? process.nextTick.bind(process)\n : require('./queue-microtask')\nmodule.exports = typeof queueMicrotask === 'function' ? queueMicrotask : (fn) => Promise.resolve().then(fn)\nrequire.addon = require('require-addon')\n\nmodule.exports = require.addon('.', __filename)\nconst binding = require('./binding')\n\nexports.get = function get(field, bit) {\n const n = field.byteLength * 8\n\n if (bit < 0) bit += n\n if (bit < 0 || bit >= n) return false\n\n return binding.quickbit_napi_get(toBuffer(field), bit) !== 0\n}\n\nexports.set = function set(field, bit, value = true) {\n const n = field.byteLength * 8\n\n if (bit < 0) bit += n\n if (bit < 0 || bit >= n) return false\n\n return binding.quickbit_napi_set(toBuffer(field), bit, value ? 1 : 0) !== 0\n}\n\nexports.fill = function fill(\n field,\n value,\n start = 0,\n end = field.byteLength * 8\n) {\n const n = field.byteLength * 8\n\n if (start < 0) start += n\n if (end < 0) end += n\n if (start < 0 || start >= field.byteLength * 8 || start >= end) return field\n\n binding.quickbit_napi_fill(toBuffer(field), value ? 1 : 0, start, end)\n return field\n}\n\nexports.clear = function clear(field, ...chunks) {\n binding.quickbit_napi_clear(toBuffer(field), chunks.map(toBufferChunk))\n}\n\nexports.findFirst = function findFirst(field, value, position = 0) {\n const n = field.byteLength * 8\n\n if (position < 0) position += n\n if (position < 0) position = 0\n if (position >= n) return -1\n\n return binding.quickbit_napi_find_first(\n toBuffer(field),\n value ? 1 : 0,\n position\n )\n}\n\nexports.findLast = function findLast(\n field,\n value,\n position = field.byteLength * 8 - 1\n) {\n const n = field.byteLength * 8\n\n if (position < 0) position += n\n if (position < 0) return -1\n if (position >= n) position = n - 1\n\n return binding.quickbit_napi_find_last(\n toBuffer(field),\n value ? 1 : 0,\n position\n )\n}\n\nfunction toBuffer(field) {\n if (field.BYTES_PER_ELEMENT === 1) return field\n return new Uint8Array(field.buffer, field.byteOffset, field.byteLength)\n}\n\nfunction toBufferChunk(chunk) {\n return { field: toBuffer(chunk.field), offset: chunk.offset }\n}\n\nclass Index {\n static from(fieldOrChunks, byteLength = -1) {\n if (Array.isArray(fieldOrChunks)) {\n return new SparseIndex(fieldOrChunks, byteLength)\n } else {\n return new DenseIndex(fieldOrChunks, byteLength)\n }\n }\n\n constructor(byteLength) {\n this._byteLength = byteLength\n this.handle = Buffer.allocUnsafe(binding.sizeof_quickbit_index_t)\n }\n\n get byteLength() {\n return this._byteLength\n }\n\n skipFirst(value, position = 0) {\n const n = this.byteLength * 8\n\n if (position < 0) position += n\n if (position < 0) position = 0\n if (position >= n) return n - 1\n\n return binding.quickbit_napi_skip_first(\n this.handle,\n this.byteLength,\n value ? 1 : 0,\n position\n )\n }\n\n skipLast(value, position = this.byteLength * 8 - 1) {\n const n = this.byteLength * 8\n\n if (position < 0) position += n\n if (position < 0) return 0\n if (position >= n) position = n - 1\n\n return binding.quickbit_napi_skip_last(\n this.handle,\n this.byteLength,\n value ? 1 : 0,\n position\n )\n }\n}\n\nexports.Index = Index\n\nclass DenseIndex extends Index {\n constructor(field, byteLength) {\n super(byteLength)\n this.field = field\n\n binding.quickbit_napi_index_init(this.handle, toBuffer(this.field))\n }\n\n get byteLength() {\n if (this._byteLength !== -1) return this._byteLength\n return this.field.byteLength\n }\n\n update(bit) {\n const n = this.byteLength * 8\n\n if (bit < 0) bit += n\n if (bit < 0 || bit >= n) return false\n\n return (\n binding.quickbit_napi_index_update(\n this.handle,\n toBuffer(this.field),\n bit\n ) !== 0\n )\n }\n}\n\nfunction selectChunk(chunks, offset) {\n for (let i = 0; i < chunks.length; i++) {\n const next = chunks[i]\n\n const start = next.offset\n const end = next.offset + next.field.byteLength\n\n if (offset >= start && offset + 16 <= end) {\n return next\n }\n }\n\n return null\n}\n\nclass SparseIndex extends Index {\n constructor(chunks, byteLength) {\n super(byteLength)\n this.chunks = chunks\n\n binding.quickbit_napi_index_init_sparse(\n this.handle,\n this.chunks.map(toBufferChunk)\n )\n }\n\n get byteLength() {\n if (this._byteLength !== -1) return this._byteLength\n const last = this.chunks[this.chunks.length - 1]\n return last ? last.offset + last.field.byteLength : 0\n }\n\n update(bit) {\n const n = this.byteLength * 8\n\n if (bit < 0) bit += n\n if (bit < 0 || bit >= n) return false\n\n const j = Math.floor(bit / 128)\n\n const offset = j * 16\n\n const chunk = selectChunk(this.chunks, offset)\n\n if (chunk === null) return false\n\n return (\n binding.quickbit_napi_index_update_sparse(\n this.handle,\n toBuffer(chunk.field),\n chunk.offset,\n bit\n ) !== 0\n )\n }\n}\n{\n \"name\": \"quickbit-native\",\n \"version\": \"2.4.8\",\n \"description\": \"libquickbit JavaScript bindings for Node.js\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"macros.h\",\n \"binding.cc\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"test\": \"npm run lint && npm run test:bare && npm run test:node\",\n \"test:bare\": \"bare test.mjs\",\n \"test:node\": \"node test.mjs\",\n \"lint\": \"prettier . --check\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/quickbit-native.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/quickbit-native/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/quickbit-native#readme\",\n \"dependencies\": {\n \"require-addon\": \"^1.1.0\"\n },\n \"devDependencies\": {\n \"b4a\": \"^1.6.7\",\n \"bare-compat-napi\": \"^1.3.2\",\n \"brittle\": \"^3.1.0\",\n \"cmake-bare\": \"^1.1.7\",\n \"cmake-fetch\": \"^1.1.0\",\n \"cmake-napi\": \"^1.0.2\",\n \"prettier\": \"^3.5.3\",\n \"prettier-config-standard\": \"^7.0.0\"\n }\n}\nconst simdle = require('simdle-universal')\n\nconst INDEX_LEN = (16 /* root */ + 128 * 16 /* children */) * 2\n\nconst get = exports.get = function get (field, bit) {\n const n = field.byteLength * 8\n\n if (bit < 0) bit += n\n if (bit < 0 || bit >= n) return false\n\n const m = field.BYTES_PER_ELEMENT * 8\n\n const offset = bit & (m - 1)\n const i = (bit - offset) / m\n\n return (field[i] & (1 << offset)) !== 0\n}\n\nconst set = exports.set = function set (field, bit, value = true) {\n const n = field.byteLength * 8\n\n if (bit < 0) bit += n\n if (bit < 0 || bit >= n) return false\n\n const m = field.BYTES_PER_ELEMENT * 8\n\n const offset = bit & (m - 1)\n const i = (bit - offset) / m\n const mask = 1 << offset\n\n if (value) {\n if ((field[i] & mask) !== 0) return false\n } else {\n if ((field[i] & mask) === 0) return false\n }\n\n field[i] ^= mask\n\n return true\n}\n\nexports.fill = function fill (field, value, start = 0, end = field.byteLength * 8) {\n const n = field.byteLength * 8\n\n if (start < 0) start += n\n if (end < 0) end += n\n if (start < 0 || start >= field.byteLength * 8 || start >= end) return field\n\n const m = field.BYTES_PER_ELEMENT * 8\n\n let i, j\n\n {\n const offset = start & (m - 1)\n i = (start - offset) / m\n\n if (offset !== 0) {\n let shift = m - offset\n if (end - start < shift) shift = end - start\n\n const mask = ((1 << shift) - 1) << offset\n\n if (value) field[i] |= mask\n else field[i] &= ~mask\n\n i++\n }\n }\n\n {\n const offset = end & (m - 1)\n j = (end - offset) / m\n\n if (offset !== 0 && j >= i) {\n const mask = (1 << offset) - 1\n\n if (value) field[j] |= mask\n else field[j] &= ~mask\n }\n }\n\n if (i < j) field.fill(value ? (2 ** m) - 1 : 0, i, j)\n\n return field\n}\n\nexports.clear = function clear (field, ...chunks) {\n const n = field.byteLength\n\n for (const chunk of chunks) {\n if (chunk.offset >= n) continue\n\n const m = chunk.field.byteLength\n\n let i = chunk.offset\n let j = 0\n\n while (((i & 15) !== 0 || (j & 15) !== 0) && i < n && j < m) {\n field[i] = field[i] & ~chunk.field[j]\n i++\n j++\n }\n\n if (i + 15 < n && j + 15 < m) {\n const len = Math.min(n - (n & 15) - i, m - (m & 15) - j)\n\n simdle.clear(field.subarray(i, i + len), chunk.field.subarray(j, j + len), field.subarray(i, i + len))\n }\n\n while (i < n && j < m) {\n field[i] = field[i] & ~chunk.field[j]\n i++\n j++\n }\n }\n}\n\nfunction bitOffset (bit, offset) {\n return !bit ? offset : (INDEX_LEN * 8 / 2) + offset\n}\n\nfunction byteOffset (bit, offset) {\n return !bit ? offset : (INDEX_LEN / 2) + offset\n}\n\nexports.findFirst = function findFirst (field, value, position = 0) {\n const n = field.byteLength * 8\n\n if (position < 0) position += n\n if (position < 0) position = 0\n if (position >= n) return -1\n\n value = !!value\n\n for (let i = position; i < n; i++) {\n if (get(field, i) === value) return i\n }\n\n return -1\n}\n\nexports.findLast = function findLast (field, value, position = field.byteLength * 8 - 1) {\n const n = field.byteLength * 8\n\n if (position < 0) position += n\n if (position < 0) return -1\n if (position >= n) position = n - 1\n\n value = !!value\n\n for (let i = position; i >= 0; i--) {\n if (get(field, i) === value) return i\n }\n\n return -1\n}\n\nconst Index = exports.Index = class Index {\n static from (fieldOrChunks, byteLength = -1) {\n if (Array.isArray(fieldOrChunks)) {\n return new SparseIndex(fieldOrChunks, byteLength)\n } else {\n return new DenseIndex(fieldOrChunks, byteLength)\n }\n }\n\n constructor (byteLength) {\n this._byteLength = byteLength\n this.handle = new Uint32Array(INDEX_LEN / 4)\n }\n\n get byteLength () {\n return this._byteLength\n }\n\n skipFirst (value, position = 0) {\n const n = this.byteLength * 8\n\n if (position < 0) position += n\n if (position < 0) position = 0\n if (position >= n) return n - 1\n\n let i = Math.floor(position / 16384)\n\n if (i > 127) return position\n\n while (i <= 127 && get(this.handle, bitOffset(value, i))) {\n i++\n }\n\n if (i === 128) return n - 1\n\n let k = i * 16384\n let j = 0\n\n if (position > k) j = Math.floor((position - k) / 128)\n\n while (j <= 127 && get(this.handle, bitOffset(value, i * 128 + j + 128))) {\n j++\n k += 128\n }\n\n if (j === 128 && i !== 127) return this.skipFirst(value, (i + 1) * 16384)\n\n if (k > position) position = k\n\n return position < n ? position : n - 1\n }\n\n skipLast (value, position = this.byteLength * 8 - 1) {\n const n = this.byteLength * 8\n\n if (position < 0) position += n\n if (position < 0) return 0\n if (position >= n) position = n - 1\n\n let i = Math.floor(position / 16384)\n\n if (i > 127) return position\n\n while (i >= 0 && get(this.handle, bitOffset(value, i))) {\n i--\n }\n\n if (i === -1) return 0\n\n let k = ((i + 1) * 16384) - 1\n let j = 127\n\n if (position < k) j = 128 - Math.ceil((k - position) / 128)\n\n while (j >= 0 && get(this.handle, bitOffset(value, i * 128 + j + 128))) {\n j--\n k -= 128\n }\n\n if (j === -1 && i !== 0) return this.skipLast(value, i * 16384 - 1)\n\n if (k < position) position = k\n\n return position\n }\n}\n\nclass DenseIndex extends Index {\n constructor (field, byteLength) {\n super(byteLength)\n this.field = field\n\n const m = field.BYTES_PER_ELEMENT\n\n for (let i = 0; i < 128; i++) {\n for (let j = 0; j < 128; j++) {\n const offset = (i * 128 + j) * 16\n let allz = true\n let allo = false\n\n if (offset + 16 <= this.field.byteLength) {\n const vec = this.field.subarray(offset / m, (offset + 16) / m)\n\n allz = simdle.allz(vec)\n allo = simdle.allo(vec)\n }\n\n const k = i * 128 + 128 + j\n\n set(this.handle, bitOffset(false, k), allz)\n set(this.handle, bitOffset(true, k), allo)\n }\n\n {\n const offset = byteOffset(false, i * 16 + 16) / 4\n const allo = simdle.allo(this.handle.subarray(offset, offset + 4))\n\n set(this.handle, bitOffset(false, i), allo)\n }\n\n {\n const offset = byteOffset(true, i * 16 + 16) / 4\n const allo = simdle.allo(this.handle.subarray(offset, offset + 4))\n\n set(this.handle, bitOffset(true, i), allo)\n }\n }\n }\n\n get byteLength () {\n if (this._byteLength !== -1) return this._byteLength\n return this.field.byteLength\n }\n\n update (bit) {\n const n = this.byteLength * 8\n\n if (bit < 0) bit += n\n if (bit < 0 || bit >= n) return false\n\n const m = this.field.BYTES_PER_ELEMENT\n\n const i = Math.floor(bit / 16384)\n const j = Math.floor(bit / 128)\n\n const offset = (j * 16) / m\n const vec = this.field.subarray(offset, offset + (16 / m))\n\n const allz = simdle.allz(vec)\n const allo = simdle.allo(vec)\n\n let changed = false\n\n if (set(this.handle, bitOffset(false, 128 + j), allz)) {\n changed = true\n\n const offset = byteOffset(false, i * 16 + 16) / 4\n const allo = simdle.allo(this.handle.subarray(offset, offset + 4))\n\n set(this.handle, bitOffset(false, i), allo)\n }\n\n if (set(this.handle, bitOffset(true, 128 + j), allo)) {\n changed = true\n\n const offset = byteOffset(true, i * 16 + 16) / 4\n const allo = simdle.allo(this.handle.subarray(offset, offset + 4))\n\n set(this.handle, bitOffset(true, i), allo)\n }\n\n return changed\n }\n}\n\nfunction selectChunk (chunks, offset) {\n for (let i = 0; i < chunks.length; i++) {\n const next = chunks[i]\n\n const start = next.offset\n const end = next.offset + next.field.byteLength\n\n if (offset >= start && offset + 16 <= end) {\n return next\n }\n }\n\n return null\n}\n\nclass SparseIndex extends Index {\n constructor (chunks, byteLength) {\n super(byteLength)\n this.chunks = chunks\n\n for (let i = 0; i < 128; i++) {\n for (let j = 0; j < 128; j++) {\n const offset = (i * 128 + j) * 16\n let allz = true\n let allo = false\n\n const chunk = selectChunk(this.chunks, offset)\n\n if (chunk !== null) {\n const m = chunk.field.BYTES_PER_ELEMENT\n\n const vec = chunk.field.subarray((offset - chunk.offset) / m, (offset - chunk.offset + 16) / m)\n\n allz = simdle.allz(vec)\n allo = simdle.allo(vec)\n }\n\n const k = i * 128 + 128 + j\n\n set(this.handle, bitOffset(false, k), allz)\n set(this.handle, bitOffset(true, k), allo)\n }\n\n {\n const offset = byteOffset(false, i * 16 + 16) / 4\n const allo = simdle.allo(this.handle.subarray(offset, offset + 4))\n\n set(this.handle, bitOffset(false, i), allo)\n }\n\n {\n const offset = byteOffset(true, i * 16 + 16) / 4\n const allo = simdle.allo(this.handle.subarray(offset, offset + 4))\n\n set(this.handle, bitOffset(true, i), allo)\n }\n }\n }\n\n get byteLength () {\n if (this._byteLength !== -1) return this._byteLength\n const last = this.chunks[this.chunks.length - 1]\n return last ? last.offset + last.field.byteLength : 0\n }\n\n update (bit) {\n const n = this.byteLength * 8\n\n if (bit < 0) bit += n\n if (bit < 0 || bit >= n) return false\n\n const i = Math.floor(bit / 16384)\n const j = Math.floor(bit / 128)\n\n const offset = j * 16\n\n const chunk = selectChunk(this.chunks, offset)\n\n if (chunk === null) return false\n\n const m = chunk.field.BYTES_PER_ELEMENT\n\n const vec = chunk.field.subarray((offset - chunk.offset) / m, (offset - chunk.offset + 16) / m)\n\n const allz = simdle.allz(vec)\n const allo = simdle.allo(vec)\n\n let changed = false\n\n if (set(this.handle, bitOffset(false, 128 + j), allz)) {\n changed = true\n\n const offset = byteOffset(false, i * 16 + 16) / 4\n const allo = simdle.allo(this.handle.subarray(offset, offset + 4))\n\n set(this.handle, bitOffset(false, i), allo)\n }\n\n if (set(this.handle, bitOffset(true, 128 + j), allo)) {\n changed = true\n\n const offset = byteOffset(true, i * 16 + 16) / 4\n const allo = simdle.allo(this.handle.subarray(offset, offset + 4))\n\n set(this.handle, bitOffset(true, i), allo)\n }\n\n return changed\n }\n}\nconst fallback = require('./fallback')\n\ntry {\n const native = require('quickbit-native')\n\n // These functions are faster in JavaScript\n exports.get = fallback.get\n exports.set = fallback.set\n exports.fill = fallback.fill\n\n // These functions are faster in C\n exports.clear = native.clear\n exports.findFirst = native.findFirst\n exports.findLast = native.findLast\n exports.Index = native.Index\n} catch {\n module.exports = fallback\n}\n{\n \"name\": \"quickbit-universal\",\n \"version\": \"2.2.0\",\n \"description\": \"Universal wrapper for libquickbit with a JavaScript fallback\",\n \"main\": \"index.js\",\n \"files\": [\n \"fallback.js\",\n \"index.js\"\n ],\n \"browser\": {\n \"./index.js\": \"./fallback.js\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.mjs\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/quickbit-universal.git\"\n },\n \"author\": \"Kasper Isager Dalsgarð \",\n \"license\": \"ISC\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/quickbit-universal/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/quickbit-universal#readme\",\n \"dependencies\": {\n \"b4a\": \"^1.6.0\",\n \"simdle-universal\": \"^1.1.0\"\n },\n \"optionalDependencies\": {\n \"quickbit-native\": \"^2.2.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.1.0\",\n \"standard\": \"^17.0.0\"\n }\n}\nrequire.addon = require('require-addon')\n\nmodule.exports = require.addon('.', __filename)\nconst binding = require('./binding')\n\nclass RabinChunker {\n constructor(opts = {}) {\n const {\n minSize = 512 * 1024, // 512 KiB\n maxSize = 8 * 1024 * 1024 // 8 MiB\n } = opts\n\n this._handle = binding.init(minSize, maxSize)\n }\n\n *push(data) {\n while (true) {\n const length = binding.push(this._handle, data.buffer, data.byteOffset, data.byteLength)\n\n if (length === 0) return\n\n data = data.subarray(length)\n\n yield binding.lastChunk(this._handle)\n }\n }\n\n end() {\n const length = binding.end(this._handle)\n\n if (length === 0) return null\n\n return binding.lastChunk(this._handle)\n }\n}\n\nexports.Chunker = RabinChunker\n{\n \"name\": \"rabin-native\",\n \"version\": \"2.0.0\",\n \"description\": \"librabin bindings for JavaScript\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": \"./index.js\"\n },\n \"imports\": {\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n }\n },\n \"files\": [\n \"index.js\",\n \"binding.c\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:bare\": \"brittle-bare --coverage test.js\",\n \"test:node\": \"brittle-node --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/rabin-native.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/rabin-native/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/rabin-native#readme\",\n \"dependencies\": {\n \"require-addon\": \"^1.1.0\"\n },\n \"devDependencies\": {\n \"bare-compat-napi\": \"^1.3.9\",\n \"bare-fs\": \"^4.5.3\",\n \"bare-path\": \"^3.0.0\",\n \"brittle\": \"^3.1.0\",\n \"cmake-bare\": \"^1.1.7\",\n \"cmake-fetch\": \"^1.1.0\",\n \"cmake-napi\": \"^1.0.2\",\n \"cmake-npm\": \"^1.1.0\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nconst { Transform } = require('streamx')\nconst rabin = require('rabin-native')\n\nmodule.exports = class RabinStream extends Transform {\n constructor(opts = {}) {\n super()\n\n this._rabin = new rabin.Chunker(opts)\n this._buffer = []\n }\n\n _transform(data, cb) {\n if (typeof data === 'string') data = Buffer.from(data)\n\n this._buffer.push(data)\n\n const chunks = this._rabin.push(data)\n\n for (const chunk of chunks) {\n let data = this._buffer[0]\n\n if (data.byteLength < chunk.length) {\n data = Buffer.concat(this._buffer)\n\n this._buffer = []\n } else {\n this._buffer.pop()\n }\n\n this.push(data.subarray(0, chunk.length))\n\n data = data.subarray(chunk.length)\n\n if (data.byteLength) this._buffer.unshift(data)\n }\n\n cb(null)\n }\n\n _flush(cb) {\n if (this._buffer.length) {\n this.push(Buffer.concat(this._buffer))\n }\n\n this._buffer = []\n\n cb(null)\n }\n}\n{\n \"name\": \"rabin-stream\",\n \"version\": \"2.0.0\",\n \"description\": \"Streaming Rabin chunker\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": \"./index.js\"\n },\n \"imports\": {\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n }\n },\n \"files\": [\n \"index.js\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:bare\": \"brittle-bare --coverage test.js\",\n \"test:node\": \"brittle-node --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/rabin-stream.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/rabin-stream/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/rabin-stream#readme\",\n \"dependencies\": {\n \"rabin-native\": \"^2.0.0\",\n \"streamx\": \"^2.23.0\"\n },\n \"devDependencies\": {\n \"bare-fs\": \"^4.5.4\",\n \"bare-path\": \"^3.0.0\",\n \"brittle\": \"^3.1.0\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nclass CacheEntry {\n constructor (key, index, map) {\n this.key = key\n this.index = index\n this.map = map\n }\n}\n\nclass CacheValue {\n constructor (entry, value) {\n this.entry = entry\n this.value = value\n }\n}\n\nclass Rache {\n constructor ({ maxSize = 65536, parent = null } = {}) {\n this.maxSize = parent?.maxSize || maxSize\n\n this._array = parent?._array || []\n this._map = new Map()\n }\n\n static from (cache) {\n return cache ? new this({ parent: cache }) : new this()\n }\n\n get globalSize () {\n return this._array.length\n }\n\n get size () {\n return this._map.size\n }\n\n sub () {\n return new Rache({ parent: this })\n }\n\n set (key, value) { // ~constant time\n const existing = this._map.get(key)\n if (existing !== undefined) {\n existing.value = value\n return\n }\n\n if (this._array.length >= this.maxSize) this._gc()\n\n const entry = new CacheEntry(key, this._array.length, this._map)\n this._array.push(entry)\n const cacheValue = new CacheValue(entry, value)\n this._map.set(key, cacheValue)\n }\n\n delete (key) {\n const existing = this._map.get(key)\n if (existing === undefined) return false\n\n this._delete(existing.entry.index)\n return true\n }\n\n get (key) {\n const existing = this._map.get(key)\n return existing === undefined ? undefined : existing.value\n }\n\n * [Symbol.iterator] () {\n for (const [key, { value }] of this._map) {\n yield [key, value]\n }\n }\n\n keys () {\n return this._map.keys()\n }\n\n * values () {\n for (const { value } of this._map.values()) {\n yield value\n }\n }\n\n clear () {\n // The entries in map linger on in _array,\n // so on top of clearing the map, we also kill the ref,\n // so that any gc running later on the old map won't interfere\n // (in case a new entry was added with the same key as a cleared entry)\n\n this._map.clear()\n this._map = new Map()\n }\n\n destroy () {\n this._map = null\n this._array = null\n }\n\n _gc () {\n this._delete(Math.floor(Math.random() * this._array.length))\n }\n\n _delete (index) { // ~constant time\n if (index >= this._array.length) throw new Error('Cannot delete unused index (logic bug?)')\n\n const head = this._array.pop()\n let removed = head\n\n if (index < this._array.length) {\n removed = this._array[index]\n head.index = index\n this._array[index] = head\n }\n\n removed.map.delete(removed.key)\n }\n}\n\nmodule.exports = Rache\n{\n \"name\": \"rache\",\n \"version\": \"1.0.0\",\n \"description\": \"Random-eviction cache\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"standard && brittle test.js --coverage\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/rache.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/rache/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/rache#readme\",\n \"files\": [\n \"index.js\"\n ],\n \"dependencies\": {},\n \"devDependencies\": {\n \"brittle\": \"^3.5.2\",\n \"standard\": \"^17.1.0\"\n }\n}\nmodule.exports = class RandomArrayIterator {\n constructor (values) {\n this.values = values\n this.start = 0\n this.length = this.values.length\n }\n\n next () {\n if (this.length === 0) {\n if (this.start === 0) return { done: true, value: undefined }\n this.length = this.start\n this.start = 0\n }\n\n const i = this.start + ((Math.random() * this.length) | 0)\n const j = this.start + --this.length\n const value = this.values[i]\n\n this.values[i] = this.values[j]\n this.values[j] = value\n\n return { done: false, value }\n }\n\n dequeue () {\n this.values[this.start + this.length] = this.values[this.values.length - 1]\n this.values.pop()\n }\n\n requeue () {\n const i = this.start + this.length\n const value = this.values[i]\n this.values[i] = this.values[this.start]\n this.values[this.start++] = value\n }\n\n restart () {\n this.start = 0\n this.length = this.values.length\n return this\n }\n\n [Symbol.iterator] () {\n return this\n }\n}\n{\n \"name\": \"random-array-iterator\",\n \"version\": \"1.0.0\",\n \"description\": \"An iterator to iterate an array in random order with controls to requeue or dequeue elements during the iteration\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"standard\": \"^16.0.3\",\n \"tape\": \"^5.0.1\"\n },\n \"scripts\": {\n \"test\": \"standard && tape test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/random-array-iterator.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/random-array-iterator/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/random-array-iterator\"\n}\nconst EventEmitter = require('events')\n\nmodule.exports = class ReadyResource extends EventEmitter {\n constructor () {\n super()\n\n this.opening = null\n this.closing = null\n\n this.opened = false\n this.closed = false\n }\n\n ready () {\n if (this.opening !== null) return this.opening\n this.opening = open(this)\n return this.opening\n }\n\n close () {\n if (this.closing !== null) return this.closing\n this.closing = close(this)\n return this.closing\n }\n\n async _open () {\n // add impl here\n }\n\n async _close () {\n // add impl here\n }\n}\n\nasync function open (self) {\n // open after close\n if (self.closing !== null) return\n\n try {\n await self._open()\n } catch (err) {\n self.close() // safe to run in bg\n throw err\n }\n\n self.opened = true\n self.emit('ready')\n}\n\nasync function close (self) {\n try {\n if (self.opened === false && self.opening !== null) await self.opening\n } catch {\n // ignore errors on closing\n }\n if (self.opened === true || self.opening === null) await self._close()\n self.closed = true\n self.emit('close')\n}\n{\n \"name\": \"ready-resource\",\n \"version\": \"1.2.0\",\n \"description\": \"Modern single resource management\",\n \"main\": \"index.js\",\n \"imports\": {\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n }\n },\n \"types\": \"index.d.ts\",\n \"files\": [\n \"index.js\",\n \"index.d.ts\"\n ],\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.1.0\",\n \"standard\": \"^17.0.0\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/ready-resource.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/ready-resource/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/ready-resource\",\n \"dependencies\": {\n \"bare-events\": \"^2.2.0\"\n }\n}\nconst b4a = require('b4a')\n\nvar EMPTY = []\n\nmodule.exports = RecordCache\n\nfunction RecordSet () {\n this.list = []\n this.map = new Map()\n}\n\nRecordSet.prototype.add = function (record, value) {\n var k = toString(record)\n var r = this.map.get(k)\n if (r) return false\n\n r = {index: this.list.length, record: value || record}\n this.list.push(r)\n this.map.set(k, r)\n return true\n}\n\nRecordSet.prototype.remove = function (record) {\n var k = toString(record)\n var r = this.map.get(k)\n if (!r) return false\n\n swap(this.list, r.index, this.list.length - 1)\n this.list.pop()\n this.map.delete(k)\n return true\n}\n\nfunction RecordStore () {\n this.records = new Map()\n this.size = 0\n}\n\nRecordStore.prototype.add = function (name, record, value) {\n var r = this.records.get(name)\n\n if (!r) {\n r = new RecordSet()\n this.records.set(name, r)\n }\n\n if (r.add(record, value)) {\n this.size++\n return true\n }\n\n return false\n}\n\nRecordStore.prototype.remove = function (name, record, value) {\n var r = this.records.get(name)\n if (!r) return false\n\n if (r.remove(record, value)) {\n this.size--\n if (!r.map.size) this.records.delete(name)\n return true\n }\n\n return false\n}\n\nRecordStore.prototype.get = function (name) {\n var r = this.records.get(name)\n return r ? r.list : EMPTY\n}\n\nfunction RecordCache (opts) {\n if (!(this instanceof RecordCache)) return new RecordCache(opts)\n if (!opts) opts = {}\n\n this.maxSize = opts.maxSize || Infinity\n this.maxAge = opts.maxAge || 0\n\n this._onstale = opts.onStale || opts.onstale || null\n this._fresh = new RecordStore()\n this._stale = new RecordStore()\n this._interval = null\n this._gced = false\n\n if (this.maxAge && this.maxAge < Infinity) {\n // 2/3 gives us a span of 0.66-1.33 maxAge or avg maxAge\n var tick = Math.ceil(2 / 3 * this.maxAge)\n this._interval = setInterval(this._gcAuto.bind(this), tick)\n if (this._interval.unref) this._interval.unref()\n }\n}\n\nObject.defineProperty(RecordCache.prototype, 'size', {\n get: function () {\n return this._fresh.size + this._stale.size\n }\n})\n\nRecordCache.prototype.add = function (name, record, value) {\n this._stale.remove(name, record, value)\n if (this._fresh.add(name, record, value) && this._fresh.size > this.maxSize) {\n this._gc()\n }\n}\n\nRecordCache.prototype.remove = function (name, record, value) {\n this._fresh.remove(name, record, value)\n this._stale.remove(name, record, value)\n}\n\nRecordCache.prototype.get = function (name, n) {\n var a = this._fresh.get(name)\n var b = this._stale.get(name)\n var aLen = a.length\n var bLen = b.length\n var len = aLen + bLen\n\n if (n > len || !n) n = len\n var result = new Array(n)\n\n for (var i = 0; i < n; i++) {\n var j = Math.floor(Math.random() * (aLen + bLen))\n if (j < aLen) {\n result[i] = a[j].record\n swap(a, j, --aLen)\n } else {\n j -= aLen\n result[i] = b[j].record\n swap(b, j, --bLen)\n }\n }\n\n return result\n}\n\nRecordCache.prototype._gcAuto = function () {\n if (!this._gced) this._gc()\n this._gced = false\n}\n\nRecordCache.prototype._gc = function () {\n if (this._onstale && this._stale.size > 0) this._onstale(this._stale)\n this._stale = this._fresh\n this._fresh = new RecordStore()\n this._gced = true\n}\n\nRecordCache.prototype.clear = function () {\n this._gc()\n this._gc()\n}\n\nRecordCache.prototype.destroy = function () {\n this.clear()\n clearInterval(this._interval)\n this._interval = null\n}\n\nfunction toString (record) {\n return b4a.isBuffer(record) ? b4a.toString(record, 'hex') : record\n}\n\nfunction swap (list, a, b) {\n var tmp = list[a]\n tmp.index = b\n list[b].index = a\n list[a] = list[b]\n list[b] = tmp\n}\n{\n \"name\": \"record-cache\",\n \"version\": \"1.2.0\",\n \"description\": \"Cache optimised for record like things\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"b4a\": \"^1.3.1\"\n },\n \"devDependencies\": {\n \"standard\": \"^10.0.3\",\n \"tape\": \"^4.8.0\"\n },\n \"scripts\": {\n \"test\": \"standard && tape test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/record-cache.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/record-cache/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/record-cache\"\n}\nmodule.exports = class RefCounter {\n constructor() {\n this.count = 0\n\n this._onidle = null\n this._idle = null\n }\n\n isIdle() {\n return this.count === 0\n }\n\n idle() {\n if (this.count === 0) return Promise.resolve()\n if (this._idle !== null) return this._idle\n\n this._idle = new Promise((resolve) => {\n this._onidle = resolve\n })\n\n return this._idle\n }\n\n inc() {\n this.count++\n }\n\n dec() {\n if (--this.count > 0) return\n\n if (this._onidle !== null) {\n const resolve = this._onidle\n this._idle = null\n this._onidle = null\n resolve()\n }\n }\n}\n{\n \"name\": \"refcounter\",\n \"version\": \"1.0.0\",\n \"description\": \"Simple refcounter\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {},\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/refcounter.git\"\n },\n \"author\": \"Holepunch Inc\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/refcounter/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/refcounter\"\n}\nmodule.exports = require.addon.bind(require)\n{\n \"name\": \"require-addon\",\n \"version\": \"1.2.0\",\n \"description\": \"Import native addons across JavaScript runtimes\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": {\n \"bare\": \"./lib/bare.js\",\n \"node\": \"./lib/node.js\",\n \"default\": \"./lib/default.js\"\n }\n },\n \"imports\": {\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n },\n \"url\": {\n \"bare\": \"bare-url\",\n \"default\": \"url\"\n }\n },\n \"files\": [\n \"lib\"\n ],\n \"scripts\": {\n \"test\": \"npm run lint && npm run test:bare && npm run test:node\",\n \"test:bare\": \"bare test.js\",\n \"test:node\": \"node test.js\",\n \"lint\": \"prettier --check .\",\n \"format\": \"prettier --write .\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/require-addon.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/require-addon/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/require-addon#readme\",\n \"engines\": {\n \"bare\": \">=1.10.0\"\n },\n \"dependencies\": {\n \"bare-addon-resolve\": \"^1.3.0\"\n },\n \"devDependencies\": {\n \"bare-bundle\": \"^1.8.1\",\n \"bare-bundle-evaluate\": \"^1.1.0\",\n \"bare-fs\": \"^4.0.0\",\n \"bare-path\": \"^3.0.0\",\n \"bare-url\": \"^2.1.0\",\n \"brittle\": \"^3.7.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nlet tmpResolve = null\nlet tmpReject = null\n\nif (Promise.withResolvers) {\n module.exports = Promise.withResolvers.bind(Promise)\n} else {\n module.exports = function resolveRejectPromise () {\n const promise = new Promise(setTmp)\n const result = { promise, resolve: tmpResolve, reject: tmpReject }\n tmpResolve = tmpReject = null\n return result\n }\n}\n\nfunction setTmp (resolve, reject) {\n tmpResolve = resolve\n tmpReject = reject\n}\n{\n \"name\": \"resolve-reject-promise\",\n \"version\": \"1.1.0\",\n \"description\": \"Create an inverted promise with no function allocs\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"standard\"\n },\n \"devDependencies\": {\n \"standard\": \"^17.1.2\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/resolve-reject-promise.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/resolve-reject-promise/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/resolve-reject-promise\"\n}\nconst resources = new Map()\n\nexports.add = function(resource, teardown) {\n resources.set(resource, teardown)\n}\n\nexports.remove = function(resource) {\n resources.delete(resource)\n}\n\nif (global.Bare) global.Bare.on('exit', run)\nelse global.process.on('exit', run)\n\nfunction run() {\n for (const [resource, teardown] of resources) {\n teardown(resource)\n }\n}\n{\n \"name\": \"resource-on-exit\",\n \"version\": \"1.0.0\",\n \"description\": \"Register sync teardown handlers for a resource\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {},\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/bare-teardown.git\"\n },\n \"author\": \"Holepunch Inc.\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/bare-teardown/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/bare-teardown\"\n}\nrequire.addon = require('require-addon')\n\nmodule.exports = require.addon('.', __filename)\nconst ColumnFamily = require('./lib/column-family')\nconst Iterator = require('./lib/iterator')\nconst Snapshot = require('./lib/snapshot')\nconst State = require('./lib/state')\nconst { BloomFilterPolicy, RibbonFilterPolicy } = require('./lib/filter-policy')\nconst constants = require('./lib/constants')\n\nclass RocksDB {\n constructor(path, opts = {}) {\n const {\n columnFamily,\n state = new State(this, path, opts),\n snapshot = null,\n keyEncoding = null,\n valueEncoding = null\n } = opts\n\n this._state = state\n this._snapshot = snapshot\n this._columnFamily = state.getColumnFamily(columnFamily)\n this._keyEncoding = keyEncoding\n this._valueEncoding = valueEncoding\n this._index = -1\n\n this._state.addSession(this)\n }\n\n get opened() {\n return this._state.opened\n }\n\n get closed() {\n return this.isRoot() ? this._state.closed : this._index === -1\n }\n\n get path() {\n return this._state.path\n }\n\n get stats() {\n return this._state.stats\n }\n\n get snapshotted() {\n return this._snapshot !== null\n }\n\n get defaultColumnFamily() {\n return this._columnFamily\n }\n\n session({\n columnFamily = this._columnFamily,\n snapshot = this._snapshot !== null,\n keyEncoding = this._keyEncoding,\n valueEncoding = this._valueEncoding\n } = {}) {\n maybeClosed(this)\n\n return new RocksDB(null, {\n state: this._state,\n columnFamily,\n snapshot: snapshot ? this._snapshot || new Snapshot(this._state) : null,\n keyEncoding,\n valueEncoding\n })\n }\n\n columnFamily(name, opts) {\n return this.session({ ...opts, columnFamily: name })\n }\n\n snapshot() {\n return this.session({ snapshot: true })\n }\n\n isRoot() {\n return this === this._state.db\n }\n\n ready() {\n return this._state.ready()\n }\n\n async close({ force } = {}) {\n if (!this._state.opened) await this._state.ready()\n\n if (this._index !== -1) this._state.removeSession(this)\n\n if (force) {\n while (this._state.sessions.length > 0) {\n await this._state.sessions[this._state.sessions.length - 1].close()\n }\n }\n\n return this.isRoot() ? this._state.close() : Promise.resolve()\n }\n\n suspend() {\n maybeClosed(this)\n\n return this._state.suspend()\n }\n\n resume() {\n maybeClosed(this)\n\n return this._state.resume()\n }\n\n isIdle() {\n return this._state.handles.isIdle()\n }\n\n idle() {\n return this._state.handles.idle()\n }\n\n iterator(range, opts) {\n maybeClosed(this)\n\n return new Iterator(this, { ...range, ...opts })\n }\n\n async *keys(range, opts) {\n for await (const { key } of this.iterator(range, {\n ...opts,\n values: false\n })) {\n yield key\n }\n }\n\n async peek(range, opts) {\n for await (const value of this.iterator({ ...range, ...opts, limit: 1 })) {\n return value\n }\n\n return null\n }\n\n read(opts) {\n maybeClosed(this)\n\n return this._state.createReadBatch(this, opts)\n }\n\n write(opts) {\n maybeClosed(this)\n\n return this._state.createWriteBatch(this, opts)\n }\n\n flush(opts) {\n maybeClosed(this)\n\n return this._state.flush(this, opts)\n }\n\n async get(key, opts) {\n const batch = this.read({ ...opts, capacity: 1, autoDestroy: true })\n const value = batch.get(key)\n batch.tryFlush()\n return value\n }\n\n async put(key, value, opts) {\n const batch = this.write({ ...opts, capacity: 1, autoDestroy: true })\n batch.tryPut(key, value)\n await batch.flush()\n }\n\n async delete(key, opts) {\n const batch = this.write({ ...opts, capacity: 1, autoDestroy: true })\n batch.tryDelete(key)\n await batch.flush()\n }\n\n async deleteRange(start, end, opts) {\n const batch = this.write({ ...opts, capacity: 1, autoDestroy: true })\n batch.tryDeleteRange(start, end)\n await batch.flush()\n }\n\n async compact(opts = {}) {\n maybeClosed(this)\n\n await this._state.compact(this, opts)\n }\n\n async compactRange(start = null, end = null, opts = {}) {\n if (typeof end === 'object' && end !== null) {\n opts = end\n end = null\n } else if (typeof start === 'object' && start !== null) {\n opts = start\n start = null\n end = null\n }\n\n await this._state.compactRange(this, start, end, opts)\n }\n\n async approximateSize(start, end, opts = {}) {\n return this._state.approximateSize(this, start, end, opts)\n }\n\n async currentWalFile() {\n maybeClosed(this)\n\n return this._state.currentWalFile()\n }\n\n async getStatsLevel() {\n maybeClosed(this)\n\n return this._state.getStatsLevel()\n }\n\n async setStatsLevel(level) {\n maybeClosed(this)\n\n await this._state.setStatsLevel(level)\n }\n\n async getProperty(name) {\n maybeClosed(this)\n\n return this._state.getProperty(name)\n }\n\n _ref() {\n if (this._snapshot) this._snapshot.ref()\n this._state.handles.inc()\n }\n\n _unref() {\n if (this._snapshot) this._snapshot.unref()\n this._state.handles.dec()\n }\n\n diagnostics() {\n return this._state.diagnostics()\n }\n}\n\nmodule.exports = exports = RocksDB\n\nexports.constants = constants\n\nexports.ColumnFamily = ColumnFamily\nexports.BloomFilterPolicy = BloomFilterPolicy\nexports.RibbonFilterPolicy = RibbonFilterPolicy\n\nfunction maybeClosed(db) {\n if (db._state.closing || db._index === -1) throw new Error('RocksDB session is closed')\n}\nconst c = require('compact-encoding')\nconst binding = require('../binding')\n\nconst empty = Buffer.alloc(0)\nconst resolved = Promise.resolve()\n\nclass RocksDBBatch {\n constructor(db, opts = {}) {\n const { capacity = 8, autoDestroy = false } = opts\n\n db._ref()\n\n this._db = db\n this._destroyed = false\n this._capacity = capacity\n this._operations = []\n this._promises = []\n\n this._enqueuePromise = this._enqueuePromise.bind(this)\n\n this._request = null\n this._resolve = null\n this._reject = null\n\n this._handle = null\n this._buffer = null\n this._autoDestroy = autoDestroy\n this._stats = null\n\n this._resetStats()\n\n if (db._state.opened === true) this.ready()\n }\n\n _reuse(db, opts = {}) {\n const { autoDestroy = false } = opts\n\n db._ref()\n\n this._db = db\n this._destroyed = false\n this._autoDestroy = autoDestroy\n }\n\n _onfinished(err) {\n const resolve = this._resolve\n const reject = this._reject\n\n if (this._request) this._db._state.io.dec()\n\n this._operations = []\n this._promises = []\n this._request = null\n this._resolve = null\n this._reject = null\n\n this._resetStats()\n\n if (this._autoDestroy === true) this.destroy()\n\n if (reject !== null && err) reject(err)\n else if (resolve !== null) resolve()\n }\n\n _resize() {\n if (this._operations.length <= this._capacity) return false\n\n while (this._operations.length > this._capacity) {\n this._capacity *= 2\n }\n\n return true\n }\n\n async ready() {\n if (this._handle !== null) return\n\n if (this._db._state.opened === false) await this._db._state.ready()\n\n this._init()\n }\n\n destroy() {\n if (this._request) throw new Error('Request in progress')\n if (this._destroyed) return\n\n this._destroyed = true\n\n if (this._promises.length) this._abort()\n\n this._db._unref()\n this._onfree()\n }\n\n _onfree() {\n this._resetStats()\n this._db._state.freeBatch(this, false)\n this._db = null\n }\n\n _abort() {\n for (let i = 0; i < this._promises.length; i++) {\n const promise = this._promises[i]\n if (promise !== null) promise.reject(new Error('Batch is destroyed'))\n }\n\n this._onfinished(new Error('Batch is destroyed'))\n }\n\n _resetStats() {}\n\n async flush() {\n if (this._request) throw new Error('Request in progress')\n if (this._destroyed) throw new Error('Batch is destroyed')\n\n this._request = new Promise((resolve, reject) => {\n this._resolve = resolve\n this._reject = reject\n })\n\n this._flush()\n\n return this._request\n }\n\n tryFlush() {\n if (this._request) throw new Error('Request in progress')\n if (this._destroyed) throw new Error('Batch is destroyed')\n\n this._request = resolved\n\n this._flush()\n }\n\n async _flush() {\n if (this._handle === null) await this.ready()\n\n this._db._state.io.inc()\n\n if (this._db._state.resumed !== null) {\n const resumed = await this._db._state.resumed.promise\n\n if (!resumed) {\n if (this._destroyed) {\n this._db._state.io.dec()\n } else {\n this._destroyed = true\n this._abort()\n this._db._unref()\n }\n }\n }\n }\n\n _enqueuePromise(resolve, reject) {\n this._promises.push({ resolve, reject })\n }\n\n _encodeKey(k) {\n if (this._db._keyEncoding) return c.encode(this._db._keyEncoding, k)\n if (typeof k === 'string') return Buffer.from(k)\n return k\n }\n\n _encodeValue(v) {\n if (this._db._valueEncoding) return c.encode(this._db._valueEncoding, v)\n if (v === null) return empty\n if (typeof v === 'string') return Buffer.from(v)\n return v\n }\n\n _decodeValue(b) {\n if (this._db._valueEncoding) return c.decode(this._db._valueEncoding, b)\n return b\n }\n}\n\nexports.ReadBatch = class RocksDBReadBatch extends RocksDBBatch {\n constructor(db, opts = {}) {\n super(db, opts)\n\n const { asyncIO = false, fillCache = true } = opts\n\n this._asyncIO = asyncIO\n this._fillCache = fillCache\n }\n\n _init() {\n this._handle = binding.readInit()\n this._buffer = binding.readBuffer(this._handle, this._capacity)\n }\n\n _resize() {\n if (super._resize() && this._handle !== null) {\n this._buffer = binding.readBuffer(this._handle, this._capacity)\n }\n }\n\n async _flush() {\n await super._flush()\n\n if (this._destroyed) return\n\n try {\n binding.read(\n this._db._state._handle,\n this._handle,\n this._operations,\n this._db._snapshot ? this._db._snapshot._handle : undefined,\n this._asyncIO,\n this._fillCache,\n this,\n this._onread\n )\n } catch (err) {\n this._db._state.io.dec()\n throw err\n }\n\n this._db._state.stats.gets += this._stats.gets\n this._db._state.stats.readBatches++\n }\n\n _onread(errs, values) {\n let applied = true\n\n for (let i = 0, n = this._promises.length; i < n; i++) {\n const err = errs[i]\n if (err) applied = false\n\n const promise = this._promises[i]\n if (promise === null) continue\n\n if (err) promise.reject(err)\n else promise.resolve(values[i] ? this._decodeValue(Buffer.from(values[i])) : null)\n }\n\n this._onfinished(applied ? null : new AggregateError(errs, 'Batch was not applied'))\n }\n\n _resetStats() {\n this._stats = { gets: 0 }\n }\n\n get(key) {\n if (this._request) throw new Error('Request already in progress')\n this._stats.gets++\n\n const promise = new Promise(this._enqueuePromise)\n\n this._operations.push(new RocksDBGet(this._encodeKey(key), this._db._columnFamily))\n\n this._resize()\n\n return promise\n }\n}\n\nexports.WriteBatch = class RocksDBWriteBatch extends RocksDBBatch {\n _init() {\n this._handle = binding.writeInit()\n this._buffer = binding.writeBuffer(this._handle, this._capacity)\n }\n\n _resize() {\n if (super._resize() && this._handle !== null) {\n this._buffer = binding.writeBuffer(this._handle, this._capacity)\n }\n }\n\n _onfree() {\n this._resetStats()\n this._db._state.freeBatch(this, true)\n this._db = null\n }\n\n async _flush() {\n await super._flush()\n\n if (this._destroyed) return\n\n try {\n binding.write(this._db._state._handle, this._handle, this._operations, this, this._onwrite)\n } catch (err) {\n this._db._state.io.dec()\n throw err\n }\n\n this._db._state.stats.puts += this._stats.puts\n this._db._state.stats.deletes += this._stats.deletes\n this._db._state.stats.rangeDeletes += this._stats.rangeDeletes\n this._db._state.stats.writeBatches++\n }\n\n _onwrite(err) {\n const applied = !err\n\n for (let i = 0, n = this._promises.length; i < n; i++) {\n const promise = this._promises[i]\n if (promise === null) continue\n\n if (err) promise.reject(err)\n else promise.resolve()\n }\n\n this._onfinished(applied ? null : new Error('Batch was not applied', { cause: err }))\n }\n\n _resetStats() {\n this._stats = { puts: 0, deletes: 0, rangeDeletes: 0 }\n }\n\n put(key, value) {\n if (this._request) throw new Error('Request already in progress')\n this._stats.puts++\n\n const promise = new Promise(this._enqueuePromise)\n\n this._operations.push(\n new RocksDBPut(this._encodeKey(key), this._encodeValue(value), this._db._columnFamily)\n )\n\n this._resize()\n\n return promise\n }\n\n tryPut(key, value) {\n if (this._request) throw new Error('Request already in progress')\n this._stats.puts++\n\n this._operations.push(\n new RocksDBPut(this._encodeKey(key), this._encodeValue(value), this._db._columnFamily)\n )\n\n this._promises.push(null)\n\n this._resize()\n }\n\n delete(key) {\n if (this._request) throw new Error('Request already in progress')\n this._stats.deletes++\n\n const promise = new Promise(this._enqueuePromise)\n\n this._operations.push(new RocksDBDelete(this._encodeKey(key), this._db._columnFamily))\n\n this._resize()\n\n return promise\n }\n\n tryDelete(key) {\n if (this._request) throw new Error('Request already in progress')\n this._stats.deletes++\n\n this._operations.push(new RocksDBDelete(this._encodeKey(key), this._db._columnFamily))\n\n this._promises.push(null)\n\n this._resize()\n }\n\n deleteRange(start, end) {\n if (this._request) throw new Error('Request already in progress')\n this._stats.rangeDeletes++\n\n const promise = new Promise(this._enqueuePromise)\n\n this._operations.push(\n new RocksDBDeleteRange(this._encodeKey(start), this._encodeKey(end), this._db._columnFamily)\n )\n\n this._resize()\n\n return promise\n }\n\n tryDeleteRange(start, end) {\n if (this._request) throw new Error('Request already in progress')\n this._stats.rangeDeletes++\n\n this._operations.push(\n new RocksDBDeleteRange(this._encodeKey(start), this._encodeKey(end), this._db._columnFamily)\n )\n\n this._promises.push(null)\n\n this._resize()\n }\n}\n\nclass RocksDBGet {\n constructor(key, columnFamily) {\n this.key = key\n this.columnFamily = columnFamily._handle\n }\n\n get type() {\n return binding.GET\n }\n}\n\nclass RocksDBPut {\n constructor(key, value, columnFamily) {\n this.key = key\n this.value = value\n this.columnFamily = columnFamily._handle\n }\n\n get type() {\n return binding.PUT\n }\n}\n\nclass RocksDBDelete {\n constructor(key, columnFamily) {\n this.key = key\n this.columnFamily = columnFamily._handle\n }\n\n get type() {\n return binding.DELETE\n }\n}\n\nclass RocksDBDeleteRange {\n constructor(start, end, columnFamily) {\n this.start = start\n this.end = end\n this.columnFamily = columnFamily._handle\n }\n\n get type() {\n return binding.DELETE_RANGE\n }\n}\nconst binding = require('../binding')\nconst constants = require('./constants')\nconst { BloomFilterPolicy } = require('./filter-policy')\n\nclass RocksDBColumnFamily {\n constructor(name, opts = {}) {\n const {\n // Blob options\n enableBlobFiles = false,\n minBlobSize = 0,\n blobFileSize = 0,\n enableBlobGarbageCollection = true,\n // Block table options\n tableBlockSize = 8192,\n tableCacheIndexAndFilterBlocks = true,\n tableFormatVersion = 6,\n optimizeFiltersForMemory = false,\n blockCache = true,\n filterPolicy = new BloomFilterPolicy(10),\n topLevelIndexPinningTier = constants.pinningTier.ALL,\n partitionPinningTier = constants.pinningTier.ALL,\n unpartitionedPinningTier = constants.pinningTier.ALL,\n optimizeFiltersForHits = false,\n numLevels = 7,\n maxWriteBufferNumber = 2,\n blobGarbageCollectionAgeCutOff = 0.25,\n blobGarbageCollectionForceThreshold = 1.0\n } = opts\n\n this._name = name\n this._flushing = null\n this._options = {\n enableBlobFiles,\n minBlobSize,\n blobFileSize,\n enableBlobGarbageCollection,\n tableBlockSize,\n tableCacheIndexAndFilterBlocks,\n tableFormatVersion,\n optimizeFiltersForMemory,\n blockCache,\n filterPolicy,\n topLevelIndexPinningTier,\n partitionPinningTier,\n unpartitionedPinningTier,\n optimizeFiltersForHits,\n numLevels,\n maxWriteBufferNumber,\n blobGarbageCollectionAgeCutOff,\n blobGarbageCollectionForceThreshold\n }\n\n const filterPolicyArguments = [0, 0, 0]\n\n if (filterPolicy !== null) {\n filterPolicyArguments[0] = filterPolicy.type\n\n switch (filterPolicy.type) {\n case 1: // Bloom filter policy\n filterPolicyArguments[1] = filterPolicy.bitsPerKey\n break\n case 2: // Ribbon filter policy\n filterPolicyArguments[1] = filterPolicy.bloomEquivalentBitsPerKey\n filterPolicyArguments[2] = filterPolicy.bloomBeforeLevel\n\n break\n }\n }\n\n this._handle = binding.columnFamilyInit(\n name,\n enableBlobFiles,\n minBlobSize,\n blobFileSize,\n enableBlobGarbageCollection,\n tableBlockSize,\n tableCacheIndexAndFilterBlocks,\n tableFormatVersion,\n optimizeFiltersForMemory,\n blockCache === false,\n ...filterPolicyArguments,\n topLevelIndexPinningTier,\n partitionPinningTier,\n unpartitionedPinningTier,\n optimizeFiltersForHits,\n numLevels,\n maxWriteBufferNumber,\n blobGarbageCollectionAgeCutOff,\n blobGarbageCollectionForceThreshold\n )\n }\n\n cloneSettings(name) {\n return new RocksDBColumnFamily(name, this._options)\n }\n\n get name() {\n return this._name\n }\n\n destroy() {\n if (this._handle === null) return\n\n binding.columnFamilyDestroy(this._handle)\n\n this._handle = null\n }\n}\n\nmodule.exports = RocksDBColumnFamily\nmodule.exports = {\n pinningTier: {\n NONE: 0,\n FLUSHED_AND_SIMILAR: 1,\n ALL: 2\n },\n garbageCollectionPolicy: {\n DEFAULT: 0,\n FORCE: 1,\n DISABLE: 2\n },\n bottommostLevelCompaction: {\n NONE: 0,\n SKIP: 1,\n FORCE: 2\n },\n walRecoveryMode: {\n TOLERATE_CORRUPTED_TAIL_RECORDS: 0,\n ABSOLUTE_CONSISTENCY: 1,\n POINT_IN_TIME: 2,\n SKIP_ANY_CORRUPTED_RECORDS: 3\n },\n statsLevel: {\n DISABLE_ALL: 0,\n EXCEPT_HISTOGRAM_OR_TIMERS: 1,\n EXCEPT_TIMERS: 2,\n EXCEPT_DETAILED_TIMERS: 3,\n EXCEPT_TIME_FOR_MUTEX: 4,\n ALL: 5\n },\n walFileType: {\n ARCHIVED: 0,\n ALIVE: 1\n }\n}\nexports.BloomFilterPolicy = class RocksDBBloomFilterPolicy {\n get type() {\n return 1\n }\n\n constructor(bitsPerKey) {\n this.bitsPerKey = bitsPerKey\n }\n}\n\nexports.RibbonFilterPolicy = class RocksDBRibbonFilterPolicy {\n get type() {\n return 2\n }\n\n constructor(bloomEquivalentBitsPerKey, bloomBeforeLevel = 0) {\n this.bloomEquivalentBitsPerKey = bloomEquivalentBitsPerKey\n this.bloomBeforeLevel = bloomBeforeLevel\n }\n}\nconst { Readable } = require('streamx')\nconst c = require('compact-encoding')\nconst binding = require('../binding')\n\nconst empty = Buffer.alloc(0)\n\nmodule.exports = class RocksDBIterator extends Readable {\n constructor(db, opts = {}) {\n const {\n gt = null,\n gte = null,\n lt = null,\n lte = null,\n reverse = false,\n values = true,\n limit = Infinity,\n capacity = 8\n } = opts\n\n super()\n\n db._ref()\n\n this._db = db\n\n this._gt = gt ? this._encodeKey(gt) : empty\n this._gte = gte ? this._encodeKey(gte) : empty\n this._lt = lt ? this._encodeKey(lt) : empty\n this._lte = lte ? this._encodeKey(lte) : empty\n\n this._reverse = reverse\n this._values = values\n this._limit = limit < 0 ? Infinity : limit\n this._capacity = capacity\n this._opened = false\n\n this._pendingOpen = null\n this._pendingRead = null\n this._pendingDestroy = null\n\n this._buffer = null\n this._handle = null\n\n if (this._db._state.opened === true) this.ready()\n }\n\n _onopen(err) {\n const cb = this._pendingOpen\n this._pendingOpen = null\n this._opened = true\n this._db._state.io.dec()\n cb(err)\n }\n\n _onread(err, keys, values) {\n const cb = this._pendingRead\n this._pendingRead = null\n this._db._state.io.dec()\n if (err) return cb(err)\n\n const n = keys.length\n\n this._limit -= n\n\n for (let i = 0; i < n; i++) {\n this.push({\n key: this._decodeKey(Buffer.from(keys[i])),\n value: this._values ? this._decodeValue(Buffer.from(values[i])) : null\n })\n }\n\n if (n < this._capacity) this.push(null)\n\n cb(null)\n }\n\n _onclose(err) {\n const cb = this._pendingDestroy\n this._pendingDestroy = null\n this._db._state.io.dec()\n this._db._unref()\n cb(err)\n }\n\n _resize() {\n if (this._handle !== null) {\n this._buffer = binding.iteratorBuffer(this._handle, this._capacity)\n }\n }\n\n async ready() {\n if (this._handle !== null) return\n\n if (this._db._state.opened === false) await this._db._state.ready()\n\n this._init()\n }\n\n _init() {\n this._handle = binding.iteratorInit()\n this._buffer = binding.iteratorBuffer(this._handle, this._capacity)\n }\n\n async _open(cb) {\n await this.ready()\n\n this._db._state.io.inc()\n\n if (this._db._state.resumed !== null) {\n const resumed = await this._db._state.resumed.promise\n\n if (!resumed) {\n this._db._state.io.dec()\n\n return cb(new Error('RocksDB session is closed'))\n }\n }\n\n this._pendingOpen = cb\n\n try {\n binding.iteratorOpen(\n this._db._state._handle,\n this._handle,\n this._db._columnFamily._handle,\n this._gt,\n this._gte,\n this._lt,\n this._lte,\n this._reverse,\n !this._values, // Keys only\n this._db._snapshot ? this._db._snapshot._handle : undefined,\n this,\n this._onopen,\n this._onclose,\n this._onread\n )\n } catch (err) {\n this._db._state.io.dec()\n\n cb(err)\n }\n }\n\n async _read(cb) {\n this._db._state.io.inc()\n\n if (this._db._state.resumed !== null) {\n const resumed = await this._db._state.resumed.promise\n\n if (!resumed) {\n this._db._state.io.dec()\n\n return cb(new Error('RocksDB session is closed'))\n }\n }\n\n this._pendingRead = cb\n\n try {\n binding.iteratorRead(this._handle, Math.min(this._capacity, this._limit))\n } catch (err) {\n this._db._state.io.dec()\n\n cb(err)\n }\n }\n\n async _destroy(cb) {\n await this.ready()\n\n this._db._state.io.inc()\n\n if (this._opened === false) {\n this._db._state.io.dec()\n this._db._unref()\n\n return cb(null)\n }\n\n this._pendingDestroy = cb\n\n try {\n binding.iteratorClose(this._handle)\n } catch (err) {\n this._db._state.io.dec()\n this._db._unref()\n\n cb(err)\n }\n }\n\n _encodeKey(k) {\n if (this._db._keyEncoding !== null) return c.encode(this._db._keyEncoding, k)\n if (typeof k === 'string') return Buffer.from(k)\n return k\n }\n\n _decodeKey(b) {\n if (this._db._keyEncoding !== null) return c.decode(this._db._keyEncoding, b)\n return b\n }\n\n _decodeValue(b) {\n if (this._db._valueEncoding !== null) return c.decode(this._db._valueEncoding, b)\n return b\n }\n}\nconst binding = require('../binding')\n\nmodule.exports = class RocksDBSnapshot {\n constructor(state) {\n this._state = state\n\n this._handle = null\n this._refs = 0\n\n if (state.deferSnapshotInit === false) this._init()\n }\n\n _init() {\n this._handle = binding.snapshotCreate(this._state._handle)\n }\n\n ref() {\n this._refs++\n }\n\n unref() {\n if (--this._refs > 0) return\n\n if (this._handle === null) return\n\n binding.snapshotDestroy(this._handle)\n\n this._handle = null\n }\n}\nconst ReadyResource = require('ready-resource')\nconst RefCounter = require('refcounter')\nconst rrp = require('resolve-reject-promise')\nconst SignalPromise = require('signal-promise')\nconst c = require('compact-encoding')\nconst { ReadBatch, WriteBatch } = require('./batch')\nconst ColumnFamily = require('./column-family')\nconst binding = require('../binding')\nconst constants = require('./constants')\n\nconst MAX_BATCH_REUSE = 64\nconst empty = Buffer.alloc(0)\n\nmodule.exports = class RocksDBState extends ReadyResource {\n constructor(db, path, opts) {\n super()\n\n const {\n columnFamily = new ColumnFamily('default', opts),\n columnFamilies = [],\n readOnly = false,\n createIfMissing = true,\n createMissingColumnFamilies = true,\n maxBackgroundJobs = 6,\n bytesPerSync = 1048576,\n maxOpenFiles = -1,\n useDirectReads = false,\n avoidUnnecessaryBlockingIO = false,\n skipStatsUpdateOnOpen = false,\n useDirectIOForFlushAndCompaction = false,\n maxFileOpeningThreads = 16,\n lock = null,\n walRecoveryMode = constants.walRecoveryMode.POINT_IN_TIME,\n bestEffortsRecovery = false,\n enableStatistics = false,\n statsLevel = constants.statsLevel.EXCEPT_HISTOGRAM_OR_TIMERS,\n walTtlSeconds = 0,\n walSizeLimitMegabytes = 0,\n avoidFlushDuringShutdown = false,\n walFilterPrefixes = []\n } = opts\n\n this.path = path\n this.db = db\n this.handles = new RefCounter()\n this.io = new RefCounter()\n this.sessions = []\n this.columnFamilies = [columnFamily]\n this.deferSnapshotInit = true\n this.resumed = null\n this.stats = {\n gets: 0,\n puts: 0,\n deletes: 0,\n rangeDeletes: 0,\n readBatches: 0,\n writeBatches: 0\n }\n\n this._suspended = false\n this._suspending = false\n this._updating = false\n this._updatingSignal = new SignalPromise()\n this._columnsFlushed = false\n this._lock = lock\n this._readBatches = []\n this._writeBatches = []\n\n for (const columnFamily of columnFamilies) {\n this.columnFamilies.push(\n typeof columnFamily === 'string' ? new ColumnFamily(columnFamily, opts) : columnFamily\n )\n }\n\n this._handle = binding.init(\n readOnly,\n createIfMissing,\n createMissingColumnFamilies,\n maxBackgroundJobs,\n bytesPerSync,\n maxOpenFiles,\n useDirectReads,\n avoidUnnecessaryBlockingIO,\n skipStatsUpdateOnOpen,\n useDirectIOForFlushAndCompaction,\n maxFileOpeningThreads,\n walRecoveryMode,\n bestEffortsRecovery,\n enableStatistics,\n statsLevel,\n walTtlSeconds,\n walSizeLimitMegabytes,\n avoidFlushDuringShutdown,\n walFilterPrefixes.map(encodePrefix)\n )\n }\n\n createReadBatch(db, opts) {\n if (this._readBatches.length === 0) return new ReadBatch(db, opts)\n const batch = this._readBatches.pop()\n batch._reuse(db, opts)\n return batch\n }\n\n createWriteBatch(db, opts) {\n if (this._writeBatches.length === 0) return new WriteBatch(db, opts)\n const batch = this._writeBatches.pop()\n batch._reuse(db, opts)\n return batch\n }\n\n freeBatch(batch, writable) {\n if (batch._capacity > 16) return\n const queue = writable ? this._writeBatches : this._readBatches\n if (queue.length >= MAX_BATCH_REUSE) return\n queue.push(batch)\n }\n\n addSession(db) {\n db._index = this.sessions.push(db) - 1\n if (db._snapshot) db._snapshot.ref()\n }\n\n removeSession(db) {\n const head = this.sessions.pop()\n if (head !== db) this.sessions[(head._index = db._index)] = head\n db._index = -1\n if (db._snapshot) db._snapshot.unref()\n }\n\n upsertColumnFamily(c) {\n if (typeof c === 'string') {\n let col = this.getColumnFamilyByName(c)\n if (col) return col\n col = this.columnFamilies[0].cloneSettings(c)\n this.columnFamilies.push(col)\n return col\n }\n\n if (this.columnFamilies.includes(c)) return c\n this.columnFamilies.push(c)\n return c\n }\n\n getColumnFamily(c) {\n if (!c) return this.columnFamilies[0]\n if (!this._columnsFlushed) return this.upsertColumnFamily(c)\n\n if (typeof c !== 'string') return c\n\n const col = this.getColumnFamilyByName(c)\n if (col === null) throw new Error('Unknown column family')\n return col\n }\n\n getColumnFamilyByName(name) {\n for (const col of this.columnFamilies) {\n if (col.name === name) return col\n }\n return null\n }\n\n async _open() {\n await Promise.resolve() // Allow column families to populate if on-demand\n\n if (this._lock) await this._lock.ready()\n\n const req = { resolve: null, reject: null, handle: null }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n this._columnsFlushed = true\n\n const lock = this._lock === null ? -1 : this._lock.transfer()\n\n req.handle = binding.open(\n this._handle,\n this,\n this.path,\n this.columnFamilies.map((c) => c._handle),\n lock,\n req,\n onopen\n )\n\n await promise\n\n this.deferSnapshotInit = false\n\n for (const session of this.sessions) {\n if (session._snapshot) session._snapshot._init()\n }\n\n function onopen(err) {\n if (err) req.reject(err)\n else req.resolve()\n }\n }\n\n async _close() {\n while (this._updating) await this._updatingSignal.wait()\n if (this.resumed) this.resumed.resolve(false)\n\n while (!this.io.isIdle()) await this.io.idle()\n while (!this.handles.isIdle()) await this.handles.idle()\n\n while (this.sessions.length > 0) {\n await this.sessions[this.sessions.length - 1].close()\n }\n\n for (const columnFamily of this.columnFamilies) columnFamily.destroy()\n\n const req = { resolve: null, reject: null, handle: null }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n req.handle = binding.close(this._handle, req, onclose)\n\n try {\n await promise\n } finally {\n if (this._lock) await this._lock.close()\n }\n\n function onclose(err) {\n if (err) req.reject(err)\n else req.resolve()\n }\n }\n\n async flush(db, opts) {\n if (this.opened === false) await this.ready()\n\n this.io.inc()\n\n if (this.resumed !== null) {\n const resumed = await this.resumed.promise\n\n if (!resumed) {\n this.io.dec()\n\n throw new Error('RocksDB session is closed')\n }\n }\n\n const req = { resolve: null, reject: null, handle: null }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.flush(this._handle, db._columnFamily._handle, req, onflush)\n\n await promise\n } finally {\n this.io.dec()\n }\n\n function onflush(err) {\n if (err) req.reject(err)\n else req.resolve()\n }\n }\n\n suspend() {\n this._suspending = true\n return this.update()\n }\n\n resume() {\n this._suspending = false\n return this.update()\n }\n\n async update() {\n while (this._updating) await this._updatingSignal.wait()\n if (this._suspending === this._suspended || this.closing) return\n this._updating = true\n try {\n if (this._suspending) await this._suspend()\n else await this._resume()\n } finally {\n this._updating = false\n this._updatingSignal.notify()\n }\n }\n\n async _suspend() {\n if (this._suspended === true) return\n\n while (!this.io.isIdle()) await this.io.idle()\n\n this.io.inc()\n this.resumed = rrp()\n\n const req = { resolve: null, reject: null, handle: null }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.suspend(this._handle, req, onsuspend)\n\n await promise\n\n this._suspended = true\n } finally {\n this.io.dec()\n }\n\n function onsuspend(err) {\n if (err) req.reject(err)\n else req.resolve()\n }\n }\n\n async _resume() {\n if (this._suspended === false) return\n\n const req = { resolve: null, reject: null, handle: null }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n req.handle = binding.resume(this._handle, req, onresume)\n\n await promise\n\n this._suspended = false\n\n const resumed = this.resumed\n this.resumed = null\n resumed.resolve(true)\n\n function onresume(err) {\n if (err) req.reject(err)\n else req.resolve()\n }\n }\n\n async compact(db, opts) {\n if (this.opened === false) await this.ready()\n\n this.io.inc()\n\n const {\n exclusive = false,\n blobGarbageCollectionPolicy = constants.garbageCollectionPolicy.DEFAULT,\n blobGarbageCollectionAgeCutoff = 0.25,\n bottommostLevelCompaction = constants.bottommostLevelCompaction.NONE\n } = opts\n\n const req = { resolve: null, reject: null, handle: null }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.compact(\n this._handle,\n db._columnFamily._handle,\n exclusive,\n blobGarbageCollectionPolicy,\n blobGarbageCollectionAgeCutoff,\n bottommostLevelCompaction,\n req,\n oncompact\n )\n\n await promise\n } finally {\n this.io.dec()\n }\n\n function oncompact(err) {\n if (err) req.reject(err)\n else req.resolve()\n }\n }\n\n async compactRange(db, start, end, opts) {\n if (this.opened === false) await this.ready()\n\n this.io.inc()\n\n const {\n exclusive = false,\n blobGarbageCollectionPolicy = constants.garbageCollectionPolicy.DEFAULT,\n blobGarbageCollectionAgeCutoff = 0.25,\n bottommostLevelCompaction = constants.bottommostLevelCompaction.NONE\n } = opts\n\n start = this._encodeKey(start)\n end = this._encodeKey(end)\n\n const req = { resolve: null, reject: null, handle: null, start, end }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.compactRange(\n this._handle,\n db._columnFamily._handle,\n start,\n end,\n exclusive,\n blobGarbageCollectionPolicy,\n blobGarbageCollectionAgeCutoff,\n bottommostLevelCompaction,\n req,\n oncompactrange\n )\n\n await promise\n } finally {\n this.io.dec()\n }\n\n function oncompactrange(err) {\n if (err) req.reject(err)\n else req.resolve()\n }\n }\n\n async approximateSize(db, start, end, opts) {\n if (this.opened === false) await this.ready()\n\n this.io.inc()\n\n const { includeMemtables = false, includeFiles = true, filesSizeErrorMargin = -1 } = opts\n\n start = this._encodeKey(start)\n end = this._encodeKey(end)\n\n const req = { resolve: null, reject: null, handle: null, start, end }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.approximateSize(\n this._handle,\n db._columnFamily._handle,\n start,\n end,\n includeMemtables,\n includeFiles,\n filesSizeErrorMargin,\n req,\n onapproximatesize\n )\n\n return await promise\n } finally {\n this.io.dec()\n }\n\n function onapproximatesize(err, result) {\n if (err) req.reject(err)\n else req.resolve(result)\n }\n }\n\n async currentWalFile() {\n if (this.opened === false) await this.ready()\n\n this.io.inc()\n\n const req = { resolve: null, reject: null, handle: null }\n\n const promise = new Promise((resolve, reject) => {\n req.resolve = resolve\n req.reject = reject\n })\n\n try {\n req.handle = binding.currentWalFile(this._handle, req, oncurrentwalfile)\n\n return await promise\n } finally {\n this.io.dec()\n }\n\n function oncurrentwalfile(err, path, number, type, startSequence, size) {\n if (err) req.reject(err)\n else req.resolve({ path, number, type, startSequence, size })\n }\n }\n\n async getStatsLevel() {\n if (this.opened === false) await this.ready()\n\n return binding.statsLevelGet(this._handle)\n }\n\n async setStatsLevel(level) {\n if (this.opened === false) await this.ready()\n\n binding.statsLevelSet(this._handle, level)\n }\n\n async getProperty(name) {\n if (this.opened === false) await this.ready()\n\n return binding.propertyGet(this._handle, name)\n }\n\n _encodeKey(k) {\n if (this.db._keyEncoding) return c.encode(this.db._keyEncoding, k)\n if (typeof k === 'string') return Buffer.from(k)\n if (k === null) return empty\n return k\n }\n\n diagnostics() {\n return {\n suspended: this._suspended,\n suspending: this._suspending,\n updating: this._updating,\n resumedPending: this.resumed !== null,\n io: this.io.count,\n handles: this.handles.count,\n sessions: this.sessions.length\n }\n }\n}\n\nfunction encodePrefix(prefix) {\n if (typeof prefix === 'string') return Buffer.from(prefix)\n return prefix\n}\n{\n \"name\": \"rocksdb-native\",\n \"version\": \"3.17.2\",\n \"description\": \"librocksdb bindings for JavaScript\",\n \"exports\": {\n \".\": \"./index.js\",\n \"./package\": \"./package.json\"\n },\n \"imports\": {\n \"crypto\": {\n \"bare\": \"bare-crypto\",\n \"default\": \"crypto\"\n },\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n }\n },\n \"files\": [\n \"index.js\",\n \"binding.cc\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"lib\",\n \"prebuilds\",\n \"!prebuilds/android-*/**/*.node\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write . && lunte --fix\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:bare && npm run test:node\",\n \"test:bare\": \"brittle-bare --coverage test.js\",\n \"test:node\": \"brittle-node --coverage test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/rocksdb-native.git\"\n },\n \"author\": \"Holepunch Inc\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/rocksdb-native/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/rocksdb-native\",\n \"engines\": {\n \"bare\": \">=1.16.0\"\n },\n \"dependencies\": {\n \"compact-encoding\": \"^3.0.0\",\n \"ready-resource\": \"^1.0.0\",\n \"refcounter\": \"^1.0.0\",\n \"require-addon\": \"^1.0.2\",\n \"resolve-reject-promise\": \"^1.1.0\",\n \"signal-promise\": \"^1.0.3\",\n \"streamx\": \"^2.16.1\"\n },\n \"devDependencies\": {\n \"bare-compat-napi\": \"^1.3.0\",\n \"bare-crypto\": \"^1.12.0\",\n \"bare-fs\": \"^4.5.0\",\n \"bare-path\": \"^3.0.0\",\n \"brittle\": \"^3.5.0\",\n \"cmake-bare\": \"^1.1.14\",\n \"cmake-fetch\": \"^1.0.1\",\n \"cmake-napi\": \"^1.0.6\",\n \"fd-lock\": \"^2.0.0\",\n \"lunte\": \"^1.8.0\",\n \"paparam\": \"^1.9.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nmodule.exports = safetyCatch\n\nfunction isActuallyUncaught (err) {\n if (!err) return false\n return err instanceof TypeError ||\n err instanceof SyntaxError ||\n err instanceof ReferenceError ||\n err instanceof EvalError ||\n err instanceof RangeError ||\n err instanceof URIError ||\n err.code === 'ERR_ASSERTION' ||\n err.name === 'AssertionError'\n}\n\nfunction throwErrorNT (err) {\n queueMicrotask(() => { throw err })\n}\n\nfunction safetyCatch (err) {\n if (isActuallyUncaught(err)) {\n throwErrorNT(err)\n throw err\n }\n}\n{\n \"name\": \"safety-catch\",\n \"version\": \"1.0.3\",\n \"description\": \"Small module that makes sure your catch, caught an actual error and not a programming mistake or assertion\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {},\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/safety-catch.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/safety-catch/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/safety-catch\"\n}\nmodule.exports = sameData\n\nfunction type (o) {\n const t = typeof o\n\n return t === 'object'\n ? Array.isArray(o)\n ? 'array'\n : isTypedArray(o)\n ? (typeof o.equals === 'function') ? 'buffer' : 'array'\n : (o === null ? 'null' : 'object')\n : t\n}\n\nfunction isTypedArray (a) {\n return !!a && typeof a.length === 'number' && ArrayBuffer.isView(a.array)\n}\n\nfunction sameData (a, b) {\n if (a === b) return true\n\n const ta = type(a)\n const tb = type(b)\n\n if (ta !== tb) return false\n\n if (ta === 'buffer') return a.equals(b)\n\n if (ta === 'array') {\n if (a.length !== b.length) return false\n\n for (let i = 0; i < a.length; i++) {\n if (!sameData(a[i], b[i])) return false\n }\n\n return true\n }\n\n if (ta !== 'object') return false\n\n const ea = Object.entries(a)\n const eb = Object.entries(b)\n\n if (ea.length !== eb.length) return false\n\n ea.sort(cmp)\n eb.sort(cmp)\n\n for (let i = 0; i < ea.length; i++) {\n if (ea[i][0] !== eb[i][0] || !sameData(ea[i][1], eb[i][1])) return false\n }\n\n return true\n}\n\nfunction cmp (a, b) {\n return a[0] === b[0] ? 0 : a[0] < b[0] ? -1 : 1\n}\n{\n \"name\": \"same-data\",\n \"version\": \"1.0.0\",\n \"description\": \"Deep equal with no deps and only for 'data' objects, ie basic objects, arrays, primitives and typed arrays\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.1.1\",\n \"standard\": \"^17.0.0\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/same-data.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/same-data/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/same-data\"\n}\nlet tmpResolve = null\n\nmodule.exports = class ScopeLock {\n constructor ({ debounce = false } = {}) {\n this.debounce = debounce\n this.waiting = []\n this.locked = false\n this.skip = 0\n this.destroyed = false\n }\n\n flush () {\n if (this.locked === false && this.waiting.length === 0) return Promise.resolve(this.destroyed === false)\n\n const promise = new Promise(setTmpResolve)\n const resolve = tmpResolve\n\n tmpResolve = null\n this.waiting.push({ lock: false, resolve })\n\n return promise\n }\n\n destroy () {\n this.destroyed = true\n }\n\n lock () {\n const promise = new Promise(setTmpResolve)\n const resolve = tmpResolve\n\n tmpResolve = null\n\n if (this.locked === true) {\n this.waiting.push({ lock: true, resolve })\n return promise\n }\n\n if (this.destroyed === true) {\n resolve(false)\n return promise\n }\n\n this.locked = true\n resolve(true)\n\n return promise\n }\n\n unlock () {\n if (this.destroyed === true) {\n for (let i = 0; i < this.waiting.length; i++) {\n this.waiting[i].resolve(false)\n }\n this.waiting = []\n this.skip = 0\n this.locked = false\n return\n }\n\n if (this.skip !== 0) {\n for (let i = 0; i < this.skip; i++) {\n const { lock, resolve } = this.waiting[i]\n resolve(lock === false)\n }\n\n this.waiting = this.waiting.slice(this.skip)\n this.skip = 0\n }\n\n while (this.waiting.length > 0 && this.waiting[0].lock === false) {\n this.waiting.shift().resolve(true)\n }\n\n if (this.waiting.length === 0) {\n this.locked = false\n return\n }\n\n const { resolve } = this.waiting.shift()\n if (this.debounce === true) this.skip = this.waiting.length\n\n resolve(true)\n }\n}\n\nfunction setTmpResolve (resolve) {\n tmpResolve = resolve\n}\n{\n \"name\": \"scope-lock\",\n \"version\": \"1.2.4\",\n \"description\": \"Some concurrency semantics around entering scopes\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"devDependencies\": {\n \"brittle\": \"^3.7.0\",\n \"standard\": \"^17.1.2\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/scope-lock.git\"\n },\n \"author\": \"Holepunch Inc.\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/scope-lock/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/scope-lock\"\n}\nconst set = require('unordered-set')\n\nmodule.exports = opts => new ShuffledPriorityQueue(opts)\n\nclass ShuffledPriorityQueue {\n constructor (opts) {\n this.priorities = []\n this.equals = (opts && opts.equals) || null\n }\n\n get length () {\n return this.priorities.reduce(add, 0)\n }\n\n [Symbol.iterator] () {\n return new Iterator(this)\n }\n\n head () {\n for (let i = this.priorities.length - 1; i >= 0; i--) {\n const q = this.priorities[i]\n if (q.length) return shuffle(q, 0)\n }\n return null\n }\n\n tail () {\n for (let i = 0; i < this.priorities.length; i++) {\n const q = this.priorities[i]\n if (q.length) return shuffle(q, 0)\n }\n return null\n }\n\n prev (prev) {\n if (!prev) return this.tail()\n return next(this.priorities, prev, 1)\n }\n\n next (prev) {\n if (!prev) return this.head()\n return next(this.priorities, prev, -1)\n }\n\n shift () {\n return this.remove(this.head())\n }\n\n pop () {\n return this.remove(this.tail())\n }\n\n add (val) {\n const prio = val.priority || 0\n while (prio >= this.priorities.length) this.priorities.push([])\n set.add(this.priorities[prio], val)\n return val\n }\n\n remove (val) {\n if (!val) return null\n\n if (val._index === undefined) {\n val = this.find(val)\n if (!val) return null\n }\n\n return set.remove(this.priorities[val.priority || 0], val)\n }\n\n has (val) {\n if (val._index === undefined) return this.find(val)\n const priority = val.priority || 0\n if (priority >= this.priorities.length) return false\n return set.has(this.priorities[priority], val)\n }\n\n find (val) {\n if (val._index !== undefined) return val\n\n const prio = val.priority || 0\n const qs = this.priorities\n if (prio >= qs.length) return null\n\n const q = qs[prio]\n\n for (let i = 0; i < q.length; i++) {\n if (this.equals(q[i], val)) return q[i]\n }\n\n return null\n }\n}\n\nclass Iterator {\n constructor (queue) {\n this.prev = null\n this.queue = queue\n }\n\n next () {\n const next = this.queue.next(this.prev)\n this.prev = next\n return { done: !next, value: next }\n }\n}\n\nfunction shuffle (q, i) {\n const ran = i + Math.floor(Math.random() * (q.length - i))\n set.swap(q, q[ran], q[i])\n return q[i]\n}\n\nfunction next (queues, prev, inc) {\n let i = prev.priority || 0\n let j = (prev._index || 0) + 1\n\n while (true) {\n if (i < 0 || i >= queues.length) return null\n const q = queues[i]\n\n if (j >= q.length) {\n i += inc\n j = 0\n continue\n }\n\n return shuffle(q, j)\n }\n}\n\nfunction add (len, b) {\n return len + b.length\n}\n{\n \"name\": \"shuffled-priority-queue\",\n \"version\": \"2.1.0\",\n \"description\": \"A priority queue that shuffles elements with the same priority.\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"standard && tape test.js\"\n },\n \"dependencies\": {\n \"unordered-set\": \"^2.0.1\"\n },\n \"devDependencies\": {\n \"standard\": \"^12.0.1\",\n \"tape\": \"^4.9.1\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/shuffled-priority-queue.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/shuffled-priority-queue/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/shuffled-priority-queue\"\n}\nmodule.exports = class Signal {\n constructor () {\n this._resolve = null\n this._reject = null\n this._promise = null\n this._bind = bind.bind(this)\n this._onerror = clear.bind(this)\n this._onsuccess = clear.bind(this, null)\n this._timers = new Set()\n }\n\n wait (max) {\n if (!this._promise) {\n this._promise = new Promise(this._bind)\n this._promise.then(this._onsuccess).catch(this._onerror)\n }\n if (max) return this._sleep(max)\n return this._promise\n }\n\n _sleep (max) {\n const s = new Promise((resolve, reject) => {\n const done = () => {\n this._timers.delete(state)\n resolve(true)\n }\n const id = setTimeout(done, max)\n const state = { id, resolve, reject }\n this._timers.add(state)\n })\n\n return s\n }\n\n notify (err) {\n if (!this._promise) return\n const resolve = this._resolve\n const reject = this._reject\n this._promise = null\n if (err) reject(err)\n else resolve(true)\n }\n}\n\nfunction clear (err) {\n for (const { id, resolve, reject } of this._timers) {\n clearTimeout(id)\n if (err) reject(err)\n else resolve(true)\n }\n this._timers.clear()\n}\n\nfunction bind (resolve, reject) {\n this._resolve = resolve\n this._reject = reject\n}\n{\n \"name\": \"signal-promise\",\n \"version\": \"1.0.3\",\n \"description\": \"Simple wait/notify promise with optional max wait time\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {},\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/signal-promise.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/signal-promise/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/signal-promise\"\n}\nvar varint = require('varint')\nexports.encode = function encode (v, b, o) {\n v = v >= 0 ? v*2 : v*-2 - 1\n var r = varint.encode(v, b, o)\n encode.bytes = varint.encode.bytes\n return r\n}\nexports.decode = function decode (b, o) {\n var v = varint.decode(b, o)\n decode.bytes = varint.decode.bytes\n return v & 1 ? (v+1) / -2 : v / 2\n}\n\nexports.encodingLength = function (v) {\n return varint.encodingLength(v >= 0 ? v*2 : v*-2 - 1)\n}\n{\n \"name\": \"signed-varint\",\n \"description\": \"efficiently store signed integers in varint\",\n \"version\": \"2.0.1\",\n \"homepage\": \"https://github.com/dominictarr/signed-varint\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/dominictarr/signed-varint.git\"\n },\n \"dependencies\": {\n \"varint\": \"~5.0.0\"\n },\n \"devDependencies\": {\n \"tape\": \"~2.12.3\"\n },\n \"scripts\": {\n \"test\": \"node test.js\"\n },\n \"author\": \"Dominic Tarr (http://dominictarr.com)\",\n \"license\": \"MIT\"\n}\nrequire.addon = require('require-addon')\n\nmodule.exports = require.addon('.', __filename)\nconst binding = require('./binding')\nconst b4a = require('b4a')\n\nfunction predicate(u8, u16, u32) {\n return function predicate(buf) {\n if (buf.byteLength % 16 !== 0) {\n throw new Error('Buffer length must be a multiple of 16')\n }\n\n const n = buf.BYTES_PER_ELEMENT\n\n if (n === 1) return u8(buf)\n if (n === 2) return u16(buf)\n return u32(buf)\n }\n}\n\nfunction unary(u8, u16, u32) {\n return function unary(buf, result = b4a.allocUnsafe(buf.byteLength)) {\n if (buf.byteLength % 16 !== 0) {\n throw new Error('Buffer length must be a multiple of 16')\n }\n\n if (buf.byteLength !== result.byteLength) {\n throw new Error('Length of result buffer is insufficient')\n }\n\n const n = buf.BYTES_PER_ELEMENT\n\n if (n === 1) u8(buf, result)\n else if (n === 2) u16(buf, result)\n else u32(buf, result)\n\n return result\n }\n}\n\nfunction binary(u8, u16, u32) {\n return function binary(a, b, result = b4a.allocUnsafe(a.byteLength)) {\n if (a.byteLength % 16 !== 0) {\n throw new Error('Buffer length must be a multiple of 16')\n }\n\n if (a.byteLength !== b.byteLength || a.byteLength !== result.byteLength) {\n throw new Error('Buffers must be the same length')\n }\n\n const n = a.BYTES_PER_ELEMENT\n\n if (n === 1) u8(a, b, result)\n else if (n === 2) u16(a, b, result)\n else u32(a, b, result)\n\n return result\n }\n}\n\nfunction reduce(u8, u16, u32) {\n return function reduce(buf) {\n if (buf.byteLength % 16 !== 0) {\n throw new Error('Buffer length must be a multiple of 16')\n }\n\n const n = buf.BYTES_PER_ELEMENT\n\n if (n === 1) return u8(buf)\n if (n === 2) return u16(buf)\n return u32(buf)\n }\n}\n\nexports.allo = predicate(\n binding.simdle_native_allo_v128_u8,\n binding.simdle_native_allo_v128_u16,\n binding.simdle_native_allo_v128_u32\n)\n\nexports.allz = predicate(\n binding.simdle_native_allz_v128_u8,\n binding.simdle_native_allz_v128_u16,\n binding.simdle_native_allz_v128_u32\n)\n\nexports.and = binary(\n binding.simdle_native_and_v128_u8,\n binding.simdle_native_and_v128_u16,\n binding.simdle_native_and_v128_u32\n)\n\nexports.clear = binary(\n binding.simdle_native_clear_v128_u8,\n binding.simdle_native_clear_v128_u16,\n binding.simdle_native_clear_v128_u32\n)\n\nexports.clo = unary(\n binding.simdle_native_clo_v128_u8,\n binding.simdle_native_clo_v128_u16,\n binding.simdle_native_clo_v128_u32\n)\n\nexports.clz = unary(\n binding.simdle_native_clz_v128_u8,\n binding.simdle_native_clz_v128_u16,\n binding.simdle_native_clz_v128_u32\n)\n\nexports.cnt = unary(\n binding.simdle_native_cnt_v128_u8,\n binding.simdle_native_cnt_v128_u16,\n binding.simdle_native_cnt_v128_u32\n)\n\nexports.cto = unary(\n binding.simdle_native_cto_v128_u8,\n binding.simdle_native_cto_v128_u16,\n binding.simdle_native_cto_v128_u32\n)\n\nexports.ctz = unary(\n binding.simdle_native_ctz_v128_u8,\n binding.simdle_native_ctz_v128_u16,\n binding.simdle_native_ctz_v128_u32\n)\n\nexports.not = unary(\n binding.simdle_native_not_v128_u8,\n binding.simdle_native_not_v128_u16,\n binding.simdle_native_not_v128_u32\n)\n\nexports.or = binary(\n binding.simdle_native_or_v128_u8,\n binding.simdle_native_or_v128_u16,\n binding.simdle_native_or_v128_u32\n)\n\nexports.sum = reduce(\n binding.simdle_native_sum_v128_u8,\n binding.simdle_native_sum_v128_u16,\n binding.simdle_native_sum_v128_u32\n)\n\nexports.xor = binary(\n binding.simdle_native_xor_v128_u8,\n binding.simdle_native_xor_v128_u16,\n binding.simdle_native_xor_v128_u32\n)\n{\n \"name\": \"simdle-native\",\n \"version\": \"1.3.9\",\n \"description\": \"libsimdle JavaScript bindings for Node.js\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"binding.cc\",\n \"binding.js\",\n \"CMakeLists.txt\",\n \"prebuilds\"\n ],\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check .\",\n \"test\": \"npm run lint && npm run test:bare && npm run test:node\",\n \"test:bare\": \"bare test.mjs\",\n \"test:node\": \"node test.mjs\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/simdle-native.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/simdle-native/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/simdle-native#readme\",\n \"dependencies\": {\n \"b4a\": \"^1.6.0\",\n \"require-addon\": \"^1.1.0\"\n },\n \"devDependencies\": {\n \"bare-compat-napi\": \"^1.3.2\",\n \"brittle\": \"^3.1.0\",\n \"cmake-bare\": \"^1.1.7\",\n \"cmake-fetch\": \"^1.1.0\",\n \"cmake-napi\": \"^1.0.2\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^1.0.0\"\n }\n}\nconst b4a = require('b4a')\nconst scalar = require('./scalar')\n\nfunction view (buf, n) {\n if (n === buf.BYTES_PER_ELEMENT) return buf\n\n let TypedArray\n\n if (n === 1) TypedArray = Uint8Array\n else if (n === 2) TypedArray = Uint16Array\n else TypedArray = Uint32Array\n\n return new TypedArray(buf.buffer, buf.byteOffset, buf.byteLength / n)\n}\n\nfunction unary (u8, u16 = u8, u32 = u16) {\n return function unary (buf, result = b4a.allocUnsafe(buf.byteLength)) {\n if (buf.byteLength % 16 !== 0) {\n throw new Error('Buffer length must be a multiple of 16')\n }\n\n if (buf.byteLength !== result.byteLength) {\n throw new Error('Length of result buffer is insufficient')\n }\n\n const n = buf.BYTES_PER_ELEMENT\n\n if (n === 1) u8(buf, view(result, n))\n else if (n === 2) u16(buf, view(result, n))\n else u32(buf, view(result, n))\n\n return result\n }\n}\n\nfunction binary (u8, u16 = u8, u32 = u16) {\n return function binary (a, b, result = b4a.allocUnsafe(a.byteLength)) {\n if (a.byteLength % 16 !== 0) {\n throw new Error('Buffer length must be a multiple of 16')\n }\n\n if (a.byteLength !== b.byteLength || a.byteLength !== result.byteLength) {\n throw new Error('Buffers must be the same length')\n }\n\n const n = a.BYTES_PER_ELEMENT\n\n if (n === 1) u8(a, b, view(result, n))\n else if (n === 2) u16(a, b, view(result, n))\n else u32(a, b, view(result, n))\n\n return result\n }\n}\n\nfunction reduce (u8, u16 = u8, u32 = u16) {\n return function reduce (buf) {\n if (buf.byteLength % 16 !== 0) {\n throw new Error('Buffer length must be a multiple of 16')\n }\n\n const n = buf.BYTES_PER_ELEMENT\n\n if (n === 1) return u8(buf)\n if (n === 2) return u16(buf)\n return u32(buf)\n }\n}\n\nexports.allo = function allo (buf) {\n if (buf.byteLength % 16 !== 0) {\n throw new Error('Buffer length must be a multiple of 16')\n }\n\n const m = 2 ** (buf.BYTES_PER_ELEMENT * 8) - 1\n\n for (let i = 0, n = buf.length; i < n; i++) {\n if (buf[i] !== m) return false\n }\n\n return true\n}\n\nexports.allz = function allz (buf) {\n if (buf.byteLength % 16 !== 0) {\n throw new Error('Buffer length must be a multiple of 16')\n }\n\n for (let i = 0, n = buf.length; i < n; i++) {\n if (buf[i] !== 0) return false\n }\n\n return true\n}\n\nexports.and = binary(\n (a, b, result) => {\n for (let i = 0, n = result.length; i < n; i++) {\n result[i] = a[i] & b[i]\n }\n }\n)\n\nexports.clear = binary(\n (a, b, result) => {\n for (let i = 0, n = result.length; i < n; i++) {\n result[i] = a[i] & ~b[i]\n }\n }\n)\n\nexports.clo = unary(\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = 24 - scalar.clo(buf[i])\n }\n },\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = 16 - scalar.clo(buf[i])\n }\n },\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = scalar.clo(buf[i])\n }\n }\n)\n\nexports.clz = unary(\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = 24 - scalar.clz(buf[i])\n }\n },\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = 16 - scalar.clz(buf[i])\n }\n },\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = scalar.clz(buf[i])\n }\n }\n)\n\nexports.cnt = unary(\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = scalar.cnt(buf[i]) & 0xff\n }\n },\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = scalar.cnt(buf[i]) & 0xffff\n }\n },\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = scalar.cnt(buf[i])\n }\n }\n)\n\nexports.cto = unary(\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = Math.min(scalar.cto(buf[i]), 8)\n }\n },\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = Math.min(scalar.cto(buf[i]), 16)\n }\n },\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = scalar.cto(buf[i])\n }\n }\n)\n\nexports.ctz = unary(\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = Math.min(scalar.ctz(buf[i]), 8)\n }\n },\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = Math.min(scalar.ctz(buf[i]), 16)\n }\n },\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = scalar.ctz(buf[i])\n }\n }\n)\n\nexports.not = unary(\n (buf, result) => {\n for (let i = 0, n = buf.length; i < n; i++) {\n result[i] = ~buf[i]\n }\n }\n)\n\nexports.or = binary(\n (a, b, result) => {\n for (let i = 0, n = result.length; i < n; i++) {\n result[i] = a[i] | b[i]\n }\n }\n)\n\nexports.sum = reduce(\n (buf) => {\n let result = 0n\n\n for (let i = 0, n = buf.length; i < n; i++) {\n result += BigInt(buf[i])\n }\n\n return result\n }\n)\n\nexports.xor = binary(\n (a, b, result) => {\n for (let i = 0, n = result.length; i < n; i++) {\n result[i] = a[i] ^ b[i]\n }\n }\n)\ntry {\n module.exports = require('simdle-native')\n} catch {\n module.exports = require('./fallback')\n}\n{\n \"name\": \"simdle-universal\",\n \"version\": \"1.1.2\",\n \"description\": \"Universal wrapper for libsimdle with a JavaScript fallback\",\n \"main\": \"index.js\",\n \"files\": [\n \"fallback.js\",\n \"index.js\",\n \"scalar.js\"\n ],\n \"browser\": {\n \"./index.js\": \"./fallback.js\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.mjs\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/simdle-universal.git\"\n },\n \"author\": \"Kasper Isager Dalsgarð \",\n \"license\": \"ISC\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/simdle-universal/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/simdle-universal#readme\",\n \"dependencies\": {\n \"b4a\": \"^1.6.0\"\n },\n \"optionalDependencies\": {\n \"simdle-native\": \"^1.1.1\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.1.0\",\n \"standard\": \"^17.0.0\"\n }\n}\nconst clz = exports.clz = function clz (n) {\n return Math.clz32(n)\n}\n\nexports.clo = function clo (n) {\n return clz(~n)\n}\n\nconst ctz = exports.ctz = function ctz (n) {\n return 32 - (n === 0 ? 0 : (clz(n & -n) + 1))\n}\n\nexports.cto = function cto (n) {\n return ctz(~n)\n}\n\nexports.cnt = function cnt (n) {\n n = n - ((n >>> 1) & 0x55555555)\n n = (n & 0x33333333) + ((n >>> 2) & 0x33333333)\n n = (n + (n >>> 4)) & 0x0f0f0f0f\n n = (n * 0x01010101) >>> 24\n return n\n}\nrequire.addon = require('require-addon')\nmodule.exports = require.addon('.', __filename)\nconst assert = require('assert')\nconst binding = require('./binding')\nconst { isNode } = require('which-runtime')\n\nconst OPTIONAL = Buffer.from(new ArrayBuffer(0))\n\nmodule.exports = exports = { ...binding }\n\n// memory\n\nexports.sodium_memzero = function (buf) {\n assert(ArrayBuffer.isView(buf), 'buf must be a typed array')\n\n binding.sodium_memzero(buf)\n}\n\nexports.sodium_mlock = function (buf) {\n assert(ArrayBuffer.isView(buf), 'buf must be a typed array')\n\n const res = binding.sodium_mlock(buf)\n\n if (res !== 0) throw new Error('memory lock failed')\n}\n\nexports.sodium_munlock = function (buf) {\n assert(ArrayBuffer.isView(buf), 'buf must be a typed array')\n\n const res = binding.sodium_munlock(buf)\n\n if (res !== 0) throw new Error('memory unlock failed')\n}\n\nexports.sodium_malloc = function (size) {\n assert(size >= 0, 'invalid size')\n\n const buf = Buffer.from(binding.sodium_malloc(size))\n buf.secure = true\n return buf\n}\n\nexports.sodium_free = function (buf) {\n if (!buf || !buf.secure) return\n\n binding.sodium_free(buf.buffer)\n}\n\nexports.sodium_mprotect_noaccess = function (buf) {\n const res = binding.sodium_mprotect_noaccess(buf.buffer)\n\n if (res !== 0) throw new Error('failed to lock buffer')\n}\n\nexports.sodium_mprotect_readonly = function (buf) {\n const res = binding.sodium_mprotect_readonly(buf.buffer)\n\n if (res !== 0) throw new Error('failed to unlock buffer')\n}\n\nexports.sodium_mprotect_readwrite = function (buf) {\n const res = binding.sodium_mprotect_readwrite(buf.buffer)\n\n if (res !== 0) throw new Error('failed to unlock buffer')\n}\n\n// crypto_randombytes\n\nexports.randombytes_buf = function (buffer) {\n assert(ArrayBuffer.isView(buffer), 'buffer must be a typed array')\n\n binding.randombytes_buf(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nexports.randombytes_buf_deterministic = function (buffer, seed) {\n assert(ArrayBuffer.isView(buffer), 'buffer must be a typed array')\n assert(ArrayBuffer.isView(seed), 'seed must be a typed array')\n assert(\n seed.byteLength === binding.randombytes_SEEDBYTES,\n \"seed must be 'randombytes_SEEDBYTES' bytes\"\n )\n\n binding.randombytes_buf_deterministic(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n\n seed.buffer,\n seed.byteOffset,\n seed.byteLength\n )\n}\n\n// sodium_helpers\n\nexports.sodium_memcmp = function (a, b) {\n assert(ArrayBuffer.isView(a), 'a must be a typed array')\n assert(ArrayBuffer.isView(b), 'b must be a typed array')\n assert(a.byteLength === b.byteLength, 'buffers must be of same length')\n\n return binding.sodium_memcmp(a, b)\n}\n\nexports.sodium_add = function (a, b) {\n assert(ArrayBuffer.isView(a), 'a must be a typed array')\n assert(ArrayBuffer.isView(b), 'b must be a typed array')\n assert(a.byteLength === b.byteLength, 'buffers must be of same length')\n\n binding.sodium_add(a, b)\n}\n\nexports.sodium_sub = function (a, b) {\n assert(ArrayBuffer.isView(a), 'a must be a typed array')\n assert(ArrayBuffer.isView(b), 'b must be a typed array')\n assert(a.byteLength === b.byteLength, 'buffers must be of same length')\n\n binding.sodium_sub(a, b)\n}\n\nexports.sodium_compare = function (a, b) {\n assert(ArrayBuffer.isView(a), 'a must be a typed array')\n assert(ArrayBuffer.isView(b), 'b must be a typed array')\n assert(a.byteLength === b.byteLength, 'buffers must be of same length')\n\n return binding.sodium_compare(a, b)\n}\n\nexports.sodium_is_zero = function (buffer, length) {\n if (length === undefined) length = buffer.byteLength\n\n assert(ArrayBuffer.isView(buffer), 'buffer must be a typed array')\n assert(length >= 0 && length <= buffer.byteLength, 'invalid length')\n\n return binding.sodium_is_zero(buffer, length)\n}\n\nexports.sodium_pad = function (buffer, unpaddedBuflen, blockSize) {\n assert(ArrayBuffer.isView(buffer), 'buffer must be a typed array')\n assert(unpaddedBuflen <= buffer.byteLength, 'unpadded length cannot exceed buffer length')\n assert(blockSize <= buffer.byteLength, 'block size cannot exceed buffer length')\n assert(blockSize >= 1, 'block size must be at least 1 byte')\n assert(\n buffer.byteLength >= unpaddedBuflen + (blockSize - (unpaddedBuflen % blockSize)),\n 'buf not long enough'\n )\n\n return binding.sodium_pad(buffer, unpaddedBuflen, blockSize)\n}\n\nexports.sodium_unpad = function (buffer, paddedBuflen, blockSize) {\n assert(ArrayBuffer.isView(buffer), 'buffer must be a typed array')\n assert(paddedBuflen <= buffer.byteLength, 'unpadded length cannot exceed buffer length')\n assert(blockSize <= buffer.byteLength, 'block size cannot exceed buffer length')\n assert(blockSize >= 1, 'block size must be at least 1 byte')\n\n return binding.sodium_unpad(buffer, paddedBuflen, blockSize)\n}\n\n// crypto_sign\n\nexports.crypto_sign_keypair = function (pk, sk) {\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(\n pk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"pk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n assert(\n sk.byteLength === binding.crypto_sign_SECRETKEYBYTES,\n \"sk must be 'crypto_sign_SECRETKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_sign_keypair(pk, sk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_sign_seed_keypair = function (pk, sk, seed) {\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(ArrayBuffer.isView(seed), 'seed must be a typed array')\n assert(\n pk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"pk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n assert(\n sk.byteLength === binding.crypto_sign_SECRETKEYBYTES,\n \"sk must be 'crypto_sign_SECRETKEYBYTES' bytes\"\n )\n assert(\n seed.byteLength === binding.crypto_sign_SEEDBYTES,\n \"seed must be 'crypto_sign_SEEDBYTES' bytes\"\n )\n\n const res = binding.crypto_sign_seed_keypair(pk, sk, seed)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_sign = function (sm, m, sk) {\n assert(ArrayBuffer.isView(sm), 'sm must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(\n sm.byteLength === binding.crypto_sign_BYTES + m.byteLength,\n \"sm must be 'm.byteLength + crypto_sign_BYTES' bytes\"\n )\n assert(\n sk.byteLength === binding.crypto_sign_SECRETKEYBYTES,\n \"sk must be 'crypto_sign_SECRETKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_sign(sm, m, sk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_sign_open = function (m, sm, pk) {\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(sm), 'sm must be a typed array')\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(\n sm.byteLength >= binding.crypto_sign_BYTES,\n \"sm must be at least 'crypto_sign_BYTES' bytes\"\n )\n assert(\n m.byteLength === sm.byteLength - binding.crypto_sign_BYTES,\n \"m must be 'sm.byteLength - crypto_sign_BYTES' bytes\"\n )\n assert(\n pk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"pk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_sign_open(m, sm, pk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_sign_open = function (m, sm, pk) {\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(sm), 'sm must be a typed array')\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(\n sm.byteLength >= binding.crypto_sign_BYTES,\n \"sm must be at least 'crypto_sign_BYTES' bytes\"\n )\n assert(\n m.byteLength === sm.byteLength - binding.crypto_sign_BYTES,\n \"m must be 'sm.byteLength - crypto_sign_BYTES' bytes\"\n )\n assert(\n pk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"pk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n\n return binding.crypto_sign_open(m, sm, pk)\n}\n\nexports.crypto_sign_detached = function (sig, m, sk) {\n assert(ArrayBuffer.isView(sig), 'sig must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(sig.byteLength === binding.crypto_sign_BYTES, \"sig must be 'crypto_sign_BYTES' bytes\")\n assert(\n sk.byteLength === binding.crypto_sign_SECRETKEYBYTES,\n \"sk must be 'crypto_sign_SECRETKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_sign_detached(sig, m, sk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_sign_verify_detached = function (sig, m, pk) {\n assert(ArrayBuffer.isView(sig), 'sig must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(\n sig.byteLength >= binding.crypto_sign_BYTES,\n \"sig must be at least 'crypto_sign_BYTES' bytes\"\n )\n assert(\n pk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"pk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n\n return binding.crypto_sign_verify_detached(\n sig.buffer,\n sig.byteOffset,\n sig.byteLength,\n\n m.buffer,\n m.byteOffset,\n m.byteLength,\n\n pk.buffer,\n pk.byteOffset,\n pk.byteLength\n )\n}\n\nexports.crypto_sign_ed25519_sk_to_pk = function (pk, sk) {\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(\n pk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"pk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n assert(\n sk.byteLength === binding.crypto_sign_SECRETKEYBYTES,\n \"sk must be 'crypto_sign_SECRETKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_sign_ed25519_sk_to_pk(pk, sk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_sign_ed25519_pk_to_curve25519 = function (x25519pk, ed25519pk) {\n assert(ArrayBuffer.isView(x25519pk), 'x25519pk must be a typed array')\n assert(ArrayBuffer.isView(ed25519pk), 'ed25519pk must be a typed array')\n assert(\n x25519pk.byteLength === binding.crypto_box_PUBLICKEYBYTES,\n \"x25519pk must be 'crypto_box_PUBLICKEYBYTES' bytes\"\n )\n assert(\n ed25519pk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"ed25519pk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_sign_ed25519_pk_to_curve25519(x25519pk, ed25519pk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_sign_ed25519_sk_to_curve25519 = function (x25519sk, ed25519sk) {\n assert(ArrayBuffer.isView(x25519sk), 'x25519sk must be a typed array')\n assert(ArrayBuffer.isView(ed25519sk), 'ed25519sk must be a typed array')\n assert(\n x25519sk.byteLength === binding.crypto_box_SECRETKEYBYTES,\n \"x25519sk must be 'crypto_box_SECRETKEYBYTES' bytes\"\n )\n\n const edLen = ed25519sk.byteLength\n\n assert(\n edLen === binding.crypto_sign_SECRETKEYBYTES || edLen === binding.crypto_box_SECRETKEYBYTES,\n \"ed25519sk must be 'crypto_sign_SECRETKEYBYTES' or 'crypto_sign_SECRETKEYBYTES - crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_sign_ed25519_sk_to_curve25519(x25519sk, ed25519sk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\n// crypto_box\n\nexports.crypto_box_keypair = function (pk, sk) {\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(\n pk.byteLength === binding.crypto_box_PUBLICKEYBYTES,\n \"pk must be 'crypto_box_PUBLICKEYBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(\n sk.byteLength === binding.crypto_box_SECRETKEYBYTES,\n \"sk must be 'crypto_box_SECRETKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_box_keypair(pk, sk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_box_seed_keypair = function (pk, sk, seed) {\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(\n pk.byteLength === binding.crypto_box_PUBLICKEYBYTES,\n \"pk must be 'crypto_box_PUBLICKEYBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(\n sk.byteLength === binding.crypto_box_SECRETKEYBYTES,\n \"sk must be 'crypto_box_SECRETKEYBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(seed), 'seed must be a typed array')\n assert(\n seed.byteLength === binding.crypto_box_SEEDBYTES,\n \"seed must be 'crypto_box_SEEDBYTES' bytes\"\n )\n\n const res = binding.crypto_box_seed_keypair(pk, sk, seed)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_box_easy = function (c, m, n, pk, sk) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(\n c.byteLength === m.byteLength + exports.crypto_box_MACBYTES,\n \"c must be 'm.byteLength + crypto_box_MACBYTES' bytes\"\n )\n assert(n.byteLength === exports.crypto_box_NONCEBYTES, \"n must be 'crypto_box_NONCEBYTES' bytes\")\n assert(\n pk.byteLength === exports.crypto_box_PUBLICKEYBYTES,\n \"pk must be 'crypto_box_PUBLICKEYBYTES' bytes\"\n )\n assert(\n sk.byteLength === exports.crypto_box_SECRETKEYBYTES,\n \"sk must be 'crypto_box_SECRETKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_box_easy(c, m, n, pk, sk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_box_detached = function (c, mac, m, n, pk, sk) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(mac), 'mac must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(mac.byteLength === exports.crypto_box_MACBYTES, \"mac must be 'crypto_box_MACBYTES' bytes\")\n assert(n.byteLength === exports.crypto_box_NONCEBYTES, \"n must be 'crypto_box_NONCEBYTES' bytes\")\n assert(\n pk.byteLength === exports.crypto_box_PUBLICKEYBYTES,\n \"pk must be 'crypto_box_PUBLICKEYBYTES' bytes\"\n )\n assert(\n sk.byteLength === exports.crypto_box_SECRETKEYBYTES,\n \"sk must be 'crypto_box_SECRETKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_box_detached(c, mac, m, n, pk, sk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_box_open_easy = function (m, c, n, pk, sk) {\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(\n c.byteLength >= exports.crypto_box_MACBYTES,\n \"c must be at least 'crypto_box_MACBYTES' bytes\"\n )\n assert(\n m.byteLength === c.byteLength - exports.crypto_box_MACBYTES,\n \"m must be 'c.byteLength - crypto_box_MACBYTES' bytes\"\n )\n assert(n.byteLength === exports.crypto_box_NONCEBYTES, \"n must be 'crypto_box_NONCEBYTES' bytes\")\n assert(\n pk.byteLength === exports.crypto_box_PUBLICKEYBYTES,\n \"pk must be 'crypto_box_PUBLICKEYBYTES' bytes\"\n )\n assert(\n sk.byteLength === exports.crypto_box_SECRETKEYBYTES,\n \"sk must be 'crypto_box_SECRETKEYBYTES' bytes\"\n )\n\n return binding.crypto_box_open_easy(m, c, n, pk, sk)\n}\n\nexports.crypto_box_open_detached = function (m, c, mac, n, pk, sk) {\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(mac), 'mac must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(m.byteLength === c.byteLength, \"m must be 'c.byteLength' bytes\")\n assert(mac.byteLength === exports.crypto_box_MACBYTES, \"mac must be 'crypto_box_MACBYTES' bytes\")\n assert(n.byteLength === exports.crypto_box_NONCEBYTES, \"n must be 'crypto_box_NONCEBYTES' bytes\")\n assert(\n pk.byteLength === exports.crypto_box_PUBLICKEYBYTES,\n \"pk must be 'crypto_box_PUBLICKEYBYTES' bytes\"\n )\n assert(\n sk.byteLength === exports.crypto_box_SECRETKEYBYTES,\n \"sk must be 'crypto_box_SECRETKEYBYTES' bytes\"\n )\n\n return binding.crypto_box_open_detached(m, c, mac, n, pk, sk)\n}\n\nexports.crypto_box_seal = function (c, m, pk) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(\n c.byteLength === m.byteLength + exports.crypto_box_SEALBYTES,\n \"c must be 'm.byteLength + crypto_box_SEALBYTES' bytes\"\n )\n assert(\n pk.byteLength === exports.crypto_box_PUBLICKEYBYTES,\n \"pk must be 'crypto_box_PUBLICKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_box_seal(c, m, pk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_box_seal_open = function (m, c, pk, sk) {\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(\n c.byteLength >= exports.crypto_box_SEALBYTES,\n \"c must be at least 'crypto_box_SEALBYTES' bytes\"\n )\n assert(\n m.byteLength === c.byteLength - exports.crypto_box_SEALBYTES,\n \"m must be 'c.byteLength - crypto_box_SEALBYTES' bytes\"\n )\n assert(\n pk.byteLength === exports.crypto_box_PUBLICKEYBYTES,\n \"pk must be 'crypto_box_PUBLICKEYBYTES' bytes\"\n )\n assert(\n sk.byteLength === exports.crypto_box_SECRETKEYBYTES,\n \"sk must be 'crypto_box_SECRETKEYBYTES' bytes\"\n )\n\n return binding.crypto_box_seal_open(\n m.buffer,\n m.byteOffset,\n m.byteLength,\n\n c.buffer,\n c.byteOffset,\n c.byteLength,\n\n pk.buffer,\n pk.byteOffset,\n pk.byteLength,\n\n sk.buffer,\n sk.byteOffset,\n sk.byteLength\n )\n}\n\n// crypto_secretbox\n\nexports.crypto_secretbox_easy = function (c, m, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n c.byteLength === m.byteLength + binding.crypto_secretbox_MACBYTES,\n \"c must be 'm.byteLength + crypto_secretbox_MACBYTES' bytes\"\n )\n assert(\n n.byteLength === binding.crypto_secretbox_NONCEBYTES,\n \"n must be 'crypto_secretbox_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_secretbox_KEYBYTES,\n \"k must be 'crypto_secretbox_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_secretbox_easy(c, m, n, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_secretbox_open_easy = function (m, c, n, k) {\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n c.byteLength >= binding.crypto_secretbox_MACBYTES,\n \"c must be at least 'crypto_secretbox_MACBYTES' bytes\"\n )\n assert(\n m.byteLength === c.byteLength - binding.crypto_secretbox_MACBYTES,\n \"m must be 'c.byteLength - crypto_secretbox_MACBYTES' bytes\"\n )\n assert(\n n.byteLength === binding.crypto_secretbox_NONCEBYTES,\n \"n must be 'crypto_secretbox_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_secretbox_KEYBYTES,\n \"k must be 'crypto_secretbox_KEYBYTES' bytes\"\n )\n\n return binding.crypto_secretbox_open_easy(m, c, n, k)\n}\n\nexports.crypto_secretbox_detached = function (c, mac, m, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(mac), 'mac must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(\n mac.byteLength === binding.crypto_secretbox_MACBYTES,\n \"mac must be 'crypto_secretbox_MACBYTES' bytes\"\n )\n assert(\n n.byteLength === binding.crypto_secretbox_NONCEBYTES,\n \"n must be 'crypto_secretbox_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_secretbox_KEYBYTES,\n \"k must be 'crypto_secretbox_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_secretbox_detached(c, mac, m, n, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_secretbox_open_detached = function (m, c, mac, n, k) {\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(mac), 'mac must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(m.byteLength === c.byteLength, \"m must be 'c.byteLength' bytes\")\n assert(\n mac.byteLength === binding.crypto_secretbox_MACBYTES,\n \"mac must be 'crypto_secretbox_MACBYTES' bytes\"\n )\n assert(\n n.byteLength === binding.crypto_secretbox_NONCEBYTES,\n \"n must be 'crypto_secretbox_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_secretbox_KEYBYTES,\n \"k must be 'crypto_secretbox_KEYBYTES' bytes\"\n )\n\n return binding.crypto_secretbox_open_detached(m, c, mac, n, k)\n}\n\n// crypto_generichash\n\nexports.crypto_generichash = function (output, input, key) {\n if (!key) key = OPTIONAL\n\n assert(ArrayBuffer.isView(output), 'output must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(\n output.byteLength >= binding.crypto_generichash_BYTES_MIN &&\n output.byteLength <= binding.crypto_generichash_BYTES_MAX,\n 'output must be between crypto_generichash_BYTES_MIN and crypto_generichash_BYTES_MAX bytes'\n )\n\n if (key !== OPTIONAL) {\n assert(ArrayBuffer.isView(key), 'key must be a typed array')\n assert(\n key.byteLength >= binding.crypto_generichash_KEYBYTES_MIN &&\n key.byteLength <= binding.crypto_generichash_KEYBYTES_MAX,\n 'key must be between crypto_generichash_KEYBYTES_MIN and crypto_generichash_KEYBYTES_MAX bytes'\n )\n }\n\n const res = binding.crypto_generichash(\n output.buffer,\n output.byteOffset,\n output.byteLength,\n\n input.buffer,\n input.byteOffset,\n input.byteLength,\n\n key.buffer,\n key.byteOffset,\n key.byteLength\n )\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_generichash_batch = function (output, batch, key) {\n assert(ArrayBuffer.isView(output), 'output must be a typed array')\n\n if (isNode || batch.length < 4) {\n const res = binding.crypto_generichash_batch(output, batch, !!key, key || OPTIONAL)\n if (res !== 0) throw new Error('status: ' + res)\n } else {\n const state = Buffer.alloc(binding.crypto_generichash_STATEBYTES)\n\n exports.crypto_generichash_init(state, key, output.byteLength)\n\n for (const buf of batch) {\n exports.crypto_generichash_update(state, buf)\n }\n\n exports.crypto_generichash_final(state, output)\n }\n}\n\nexports.crypto_generichash_keygen = function (key) {\n assert(ArrayBuffer.isView(key), 'key must be a typed array')\n assert(\n key.byteLength === binding.crypto_generichash_KEYBYTES,\n \"key must be 'crypto_generichash_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_generichash_keygen(key.buffer, key.byteOffset, key.byteLength)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_generichash_init = function (state, key, outputLength) {\n if (!key) key = OPTIONAL\n\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_generichash_STATEBYTES,\n \"state must be 'crypto_generichash_STATEBYTES' bytes\"\n )\n\n const res = binding.crypto_generichash_init(\n state.buffer,\n state.byteOffset,\n state.byteLength,\n\n key.buffer,\n key.byteOffset,\n key.byteLength,\n\n outputLength\n )\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_generichash_update = function (state, input) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(\n state.byteLength === binding.crypto_generichash_STATEBYTES,\n \"state must be 'crypto_generichash_STATEBYTES' bytes\"\n )\n\n const res = binding.crypto_generichash_update(\n state.buffer,\n state.byteOffset,\n state.byteLength,\n\n input.buffer,\n input.byteOffset,\n input.byteLength\n )\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_generichash_final = function (state, output) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(ArrayBuffer.isView(output), 'output must be a typed array')\n assert(\n state.byteLength === binding.crypto_generichash_STATEBYTES,\n \"state must be 'crypto_generichash_STATEBYTES' bytes\"\n )\n\n const res = binding.crypto_generichash_final(\n state.buffer,\n state.byteOffset,\n state.byteLength,\n\n output.buffer,\n output.byteOffset,\n output.byteLength\n )\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\n// secretstream\n\nexports.crypto_secretstream_xchacha20poly1305_keygen = function (k) {\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_secretstream_xchacha20poly1305_KEYBYTES,\n \"k must be 'crypto_secretstream_xchacha20poly1305_KEYBYTES' bytes\"\n )\n\n binding.crypto_secretstream_xchacha20poly1305_keygen(k.buffer, k.byteOffset, k.byteLength)\n}\n\nexports.crypto_secretstream_xchacha20poly1305_init_push = function (state, header, k) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(ArrayBuffer.isView(header), 'header must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n state.byteLength === binding.crypto_secretstream_xchacha20poly1305_STATEBYTES,\n \"state must be 'crypto_secretstream_xchacha20poly1305_STATEBYTES' bytes\"\n )\n assert(\n header.byteLength === binding.crypto_secretstream_xchacha20poly1305_HEADERBYTES,\n \"header must be 'crypto_secretstream_xchacha20poly1305_HEADERBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_secretstream_xchacha20poly1305_KEYBYTES,\n \"k must be 'crypto_secretstream_xchacha20poly1305_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_secretstream_xchacha20poly1305_init_push(\n state.buffer,\n state.byteOffset,\n state.byteLength,\n\n header.buffer,\n header.byteOffset,\n header.byteLength,\n\n k.buffer,\n k.byteOffset,\n k.byteLength\n )\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_secretstream_xchacha20poly1305_init_pull = function (state, header, k) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(ArrayBuffer.isView(header), 'header must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n state.byteLength === binding.crypto_secretstream_xchacha20poly1305_STATEBYTES,\n \"state must be 'crypto_secretstream_xchacha20poly1305_STATEBYTES' bytes\"\n )\n assert(\n header.byteLength === binding.crypto_secretstream_xchacha20poly1305_HEADERBYTES,\n \"header must be 'crypto_secretstream_xchacha20poly1305_HEADERBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_secretstream_xchacha20poly1305_KEYBYTES,\n \"k must be 'crypto_secretstream_xchacha20poly1305_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_secretstream_xchacha20poly1305_init_pull(\n state.buffer,\n state.byteOffset,\n state.byteLength,\n\n header.buffer,\n header.byteOffset,\n header.byteLength,\n\n k.buffer,\n k.byteOffset,\n k.byteLength\n )\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_secretstream_xchacha20poly1305_push = function (state, c, m, ad, tag) {\n if (!ad) ad = OPTIONAL\n\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(\n state.byteLength === binding.crypto_secretstream_xchacha20poly1305_STATEBYTES,\n \"state must be 'crypto_secretstream_xchacha20poly1305_STATEBYTES' bytes\"\n )\n assert(\n c.byteLength === m.byteLength + binding.crypto_secretstream_xchacha20poly1305_ABYTES,\n \"c must be 'm.byteLength + crypto_secretstream_xchacha20poly1305_ABYTES' bytes\"\n )\n\n const res = binding.crypto_secretstream_xchacha20poly1305_push(\n state.buffer,\n state.byteOffset,\n state.byteLength,\n\n c.buffer,\n c.byteOffset,\n c.byteLength,\n\n m.buffer,\n m.byteOffset,\n m.byteLength,\n\n ad.buffer,\n ad.byteOffset,\n ad.byteLength,\n\n tag\n )\n\n if (res < 0) throw new Error('push failed')\n\n return res\n}\n\nexports.crypto_secretstream_xchacha20poly1305_pull = function (state, m, tag, c, ad) {\n if (!ad) ad = OPTIONAL\n\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_secretstream_xchacha20poly1305_STATEBYTES,\n \"state must be 'crypto_secretstream_xchacha20poly1305_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(tag), 'tag must be a typed array')\n assert(tag.byteLength === 1, 'tag must be 1 byte')\n\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(\n c.byteLength >= binding.crypto_secretstream_xchacha20poly1305_ABYTES,\n \"c must be at least 'crypto_secretstream_xchacha20poly1305_ABYTES' bytes\"\n )\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(\n m.byteLength === c.byteLength - binding.crypto_secretstream_xchacha20poly1305_ABYTES,\n \"m must be 'c.byteLength - crypto_secretstream_xchacha20poly1305_ABYTES' bytes\"\n )\n\n const res = binding.crypto_secretstream_xchacha20poly1305_pull(\n state.buffer,\n state.byteOffset,\n state.byteLength,\n\n m.buffer,\n m.byteOffset,\n m.byteLength,\n\n tag.buffer,\n tag.byteOffset,\n tag.byteLength,\n\n c.buffer,\n c.byteOffset,\n c.byteLength,\n\n ad.buffer,\n ad.byteOffset,\n ad.byteLength\n )\n\n if (res < 0) throw new Error('pull failed')\n\n return res\n}\n\nexports.crypto_secretstream_xchacha20poly1305_rekey = function (state) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_secretstream_xchacha20poly1305_STATEBYTES,\n \"state must be 'crypto_secretstream_xchacha20poly1305_STATEBYTES' bytes\"\n )\n\n binding.crypto_secretstream_xchacha20poly1305_rekey(\n state.buffer,\n state.byteOffset,\n state.byteLength\n )\n}\n\n// crypto_stream\n\nexports.crypto_stream = function (c, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n n.byteLength === binding.crypto_stream_NONCEBYTES,\n \"n must be 'crypto_stream_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_KEYBYTES,\n \"k must be 'crypto_stream_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream(c, n, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_xor = function (c, m, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(\n n.byteLength === binding.crypto_stream_NONCEBYTES,\n \"n must be 'crypto_stream_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_KEYBYTES,\n \"k must be 'crypto_stream_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_xor(\n c.buffer,\n c.byteOffset,\n c.byteLength,\n\n m.buffer,\n m.byteOffset,\n m.byteLength,\n\n n.buffer,\n n.byteOffset,\n n.byteLength,\n\n k.buffer,\n k.byteOffset,\n k.byteLength\n )\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_chacha20 = function (c, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n n.byteLength === binding.crypto_stream_chacha20_NONCEBYTES,\n \"n must be 'crypto_stream_chacha20_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_chacha20_KEYBYTES,\n \"k must be 'crypto_stream_chacha20_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_chacha20(c, n, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_chacha20_xor = function (c, m, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(\n n.byteLength === binding.crypto_stream_chacha20_NONCEBYTES,\n \"n must be 'crypto_stream_chacha20_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_chacha20_KEYBYTES,\n \"k must be 'crypto_stream_chacha20_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_chacha20_xor(c, m, n, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_chacha20_xor_ic = function (c, m, n, ic, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(\n n.byteLength === binding.crypto_stream_chacha20_NONCEBYTES,\n \"n must be 'crypto_stream_chacha20_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_chacha20_KEYBYTES,\n \"k must be 'crypto_stream_chacha20_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_chacha20_xor_ic(c, m, n, ic, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_chacha20_ietf = function (c, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n n.byteLength === binding.crypto_stream_chacha20_ietf_NONCEBYTES,\n \"n must be 'crypto_stream_chacha20_ietf_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_chacha20_ietf_KEYBYTES,\n \"k must be 'crypto_stream_chacha20_ietf_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_chacha20_ietf(c, n, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_chacha20_ietf_xor = function (c, m, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(\n n.byteLength === binding.crypto_stream_chacha20_ietf_NONCEBYTES,\n \"n must be 'crypto_stream_chacha20_ietf_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_chacha20_ietf_KEYBYTES,\n \"k must be 'crypto_stream_chacha20_ietf_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_chacha20_ietf_xor(c, m, n, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_chacha20_ietf_xor_ic = function (c, m, n, ic, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(\n n.byteLength === binding.crypto_stream_chacha20_ietf_NONCEBYTES,\n \"n must be 'crypto_stream_chacha20_ietf_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_chacha20_ietf_KEYBYTES,\n \"k must be 'crypto_stream_chacha20_ietf_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_chacha20_ietf_xor_ic(c, m, n, ic, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_xchacha20 = function (c, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n n.byteLength === binding.crypto_stream_xchacha20_NONCEBYTES,\n \"n must be 'crypto_stream_xchacha20_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_xchacha20_KEYBYTES,\n \"k must be 'crypto_stream_xchacha20_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_xchacha20(c, n, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_xchacha20_xor = function (c, m, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(\n n.byteLength === binding.crypto_stream_xchacha20_NONCEBYTES,\n \"n must be 'crypto_stream_xchacha20_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_xchacha20_KEYBYTES,\n \"k must be 'crypto_stream_xchacha20_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_xchacha20_xor(c, m, n, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_xchacha20_xor_ic = function (c, m, n, ic, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(\n n.byteLength === binding.crypto_stream_xchacha20_NONCEBYTES,\n \"n must be 'crypto_stream_xchacha20_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_xchacha20_KEYBYTES,\n \"k must be 'crypto_stream_xchacha20_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_xchacha20_xor_ic(c, m, n, ic, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_salsa20 = function (c, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n n.byteLength === binding.crypto_stream_salsa20_NONCEBYTES,\n \"n must be 'crypto_stream_salsa20_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_salsa20_KEYBYTES,\n \"k must be 'crypto_stream_salsa20_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_salsa20(c, n, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_salsa20_xor = function (c, m, n, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(\n n.byteLength === binding.crypto_stream_salsa20_NONCEBYTES,\n \"n must be 'crypto_stream_salsa20_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_salsa20_KEYBYTES,\n \"k must be 'crypto_stream_salsa20_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_salsa20_xor(c, m, n, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_stream_salsa20_xor_ic = function (c, m, n, ic, k) {\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(\n n.byteLength === binding.crypto_stream_salsa20_NONCEBYTES,\n \"n must be 'crypto_stream_salsa20_NONCEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_stream_salsa20_KEYBYTES,\n \"k must be 'crypto_stream_salsa20_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_stream_salsa20_xor_ic(c, m, n, ic, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\n// crypto_auth\n\nexports.crypto_auth = function (out, input, k) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(out.byteLength === binding.crypto_auth_BYTES, \"out must be 'crypto_auth_BYTES' bytes\")\n assert(k.byteLength === binding.crypto_auth_KEYBYTES, \"k must be 'crypto_auth_KEYBYTES' bytes\")\n\n const res = binding.crypto_auth(out, input, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_auth_verify = function (h, input, k) {\n assert(ArrayBuffer.isView(h), 'h must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(h.byteLength === binding.crypto_auth_BYTES, \"h must be 'crypto_auth_BYTES' bytes\")\n assert(k.byteLength === binding.crypto_auth_KEYBYTES, \"k must be 'crypto_auth_KEYBYTES' bytes\")\n\n return binding.crypto_auth_verify(h, input, k)\n}\n\n// crypto_onetimeauth\n\nexports.crypto_onetimeauth = function (out, input, k) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n out.byteLength === binding.crypto_onetimeauth_BYTES,\n \"out must be 'crypto_onetimeauth_BYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_onetimeauth_KEYBYTES,\n \"k must be 'crypto_onetimeauth_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_onetimeauth(out, input, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_onetimeauth_init = function (state, k) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n state.byteLength === binding.crypto_onetimeauth_STATEBYTES,\n \"state must be 'crypto_onetimeauth_STATEBYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_onetimeauth_KEYBYTES,\n \"k must be 'crypto_onetimeauth_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_onetimeauth_init(state, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_onetimeauth_update = function (state, input) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(\n state.byteLength === binding.crypto_onetimeauth_STATEBYTES,\n \"state must be 'crypto_onetimeauth_STATEBYTES' bytes\"\n )\n\n const res = binding.crypto_onetimeauth_update(state, input)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_onetimeauth_final = function (state, out) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(\n state.byteLength === binding.crypto_onetimeauth_STATEBYTES,\n \"state must be 'crypto_onetimeauth_STATEBYTES' bytes\"\n )\n assert(\n out.byteLength === binding.crypto_onetimeauth_BYTES,\n \"out must be 'crypto_onetimeauth_BYTES' bytes\"\n )\n\n const res = binding.crypto_onetimeauth_final(state, out)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_onetimeauth_verify = function (h, input, k) {\n assert(ArrayBuffer.isView(h), 'h must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n h.byteLength === binding.crypto_onetimeauth_BYTES,\n \"h must be 'crypto_onetimeauth_BYTES' bytes\"\n )\n assert(\n k.byteLength === binding.crypto_onetimeauth_KEYBYTES,\n \"k must be 'crypto_onetimeauth_KEYBYTES' bytes\"\n )\n\n return binding.crypto_onetimeauth_verify(h, input, k)\n}\n\n// crypto_pwhash\n\nexports.crypto_pwhash = function (out, passwd, salt, opslimit, memlimit, alg) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(ArrayBuffer.isView(salt), 'salt must be a typed array')\n assert(\n out.byteLength >= binding.crypto_pwhash_BYTES_MIN,\n \"out must be at least 'crypto_pwhash_BYTES_MIN' bytes\"\n )\n assert(\n out.byteLength <= binding.crypto_pwhash_BYTES_MAX,\n \"out must be at most 'crypto_pwhash_BYTES_MAX' bytes\"\n )\n assert(\n salt.byteLength === binding.crypto_pwhash_SALTBYTES,\n \"salt must be 'crypto_pwhash_SALTBYTES' bytes\"\n )\n assert(\n opslimit >= binding.crypto_pwhash_OPSLIMIT_MIN,\n \"opslimit must be at least 'crypto_pwhash_OPSLIMIT_MIN'\"\n )\n assert(\n opslimit <= binding.crypto_pwhash_OPSLIMIT_MAX,\n \"opslimit must be at most 'crypto_pwhash_OPSLIMIT_MAX'\"\n )\n assert(\n memlimit >= binding.crypto_pwhash_MEMLIMIT_MIN,\n \"memlimit must be at least 'crypto_pwhash_MEMLIMIT_MIN'\"\n )\n assert(\n memlimit <= binding.crypto_pwhash_MEMLIMIT_MAX,\n \"memlimit must be at most 'crypto_pwhash_MEMLIMIT_MAX'\"\n )\n assert(alg >= 1 && alg <= 2, 'alg must be either Argon2i 1.3 or Argon2id 1.3')\n\n const res = binding.crypto_pwhash(out, passwd, salt, opslimit, memlimit, alg)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_pwhash_async = function (\n out,\n passwd,\n salt,\n opslimit,\n memlimit,\n alg,\n callback = undefined\n) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(ArrayBuffer.isView(salt), 'salt must be a typed array')\n assert(\n out.byteLength >= binding.crypto_pwhash_BYTES_MIN,\n \"out must be at least 'crypto_pwhash_BYTES_MIN' bytes\"\n )\n assert(\n out.byteLength <= binding.crypto_pwhash_BYTES_MAX,\n \"out must be at most 'crypto_pwhash_BYTES_MAX' bytes\"\n )\n assert(\n salt.byteLength === binding.crypto_pwhash_SALTBYTES,\n \"salt must be 'crypto_pwhash_SALTBYTES' bytes\"\n )\n assert(\n opslimit >= binding.crypto_pwhash_OPSLIMIT_MIN,\n \"opslimit must be at least 'crypto_pwhash_OPSLIMIT_MIN'\"\n )\n assert(\n opslimit <= binding.crypto_pwhash_OPSLIMIT_MAX,\n \"opslimit must be at most 'crypto_pwhash_OPSLIMIT_MAX'\"\n )\n assert(\n memlimit >= binding.crypto_pwhash_MEMLIMIT_MIN,\n \"memlimit must be at least 'crypto_pwhash_MEMLIMIT_MIN'\"\n )\n assert(\n memlimit <= binding.crypto_pwhash_MEMLIMIT_MAX,\n \"memlimit must be at most 'crypto_pwhash_MEMLIMIT_MAX'\"\n )\n assert(alg >= 1 && alg <= 2, 'alg must be either Argon2i 1.3 or Argon2id 1.3')\n\n const [done, promise] = checkStatus(callback)\n\n binding.crypto_pwhash_async(\n out.buffer,\n out.byteOffset,\n out.byteLength,\n\n passwd.buffer,\n passwd.byteOffset,\n passwd.byteLength,\n\n salt.buffer,\n salt.byteOffset,\n salt.byteLength,\n\n opslimit,\n memlimit,\n alg,\n\n done\n )\n\n return promise\n}\n\nexports.crypto_pwhash_str = function (out, passwd, opslimit, memlimit) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(\n out.byteLength === binding.crypto_pwhash_STRBYTES,\n \"out must be 'crypto_pwhash_STRBYTES' bytes\"\n )\n assert(typeof opslimit === 'number', 'opslimit must be a number')\n assert(\n opslimit >= binding.crypto_pwhash_OPSLIMIT_MIN,\n \"opslimit must be at least 'crypto_pwhash_OPSLIMIT_MIN'\"\n )\n assert(\n opslimit <= binding.crypto_pwhash_OPSLIMIT_MAX,\n \"opslimit must be at most 'crypto_pwhash_OPSLIMIT_MAX'\"\n )\n assert(typeof memlimit === 'number', 'memlimit must be a number')\n assert(\n memlimit >= binding.crypto_pwhash_MEMLIMIT_MIN,\n \"memlimit must be at least 'crypto_pwhash_MEMLIMIT_MIN'\"\n )\n assert(\n memlimit <= binding.crypto_pwhash_MEMLIMIT_MAX,\n \"memlimit must be at most 'crypto_pwhash_MEMLIMIT_MAX'\"\n )\n\n const res = binding.crypto_pwhash_str(out, passwd, opslimit, memlimit)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_pwhash_str_async = function (out, passwd, opslimit, memlimit, callback = undefined) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(\n out.byteLength === binding.crypto_pwhash_STRBYTES,\n \"out must be 'crypto_pwhash_STRBYTES' bytes\"\n )\n assert(passwd.byteLength > 0, 'passwd must not be empty')\n assert(typeof opslimit === 'number', 'opslimit must be a number')\n assert(\n opslimit >= binding.crypto_pwhash_OPSLIMIT_MIN,\n \"opslimit must be at least 'crypto_pwhash_OPSLIMIT_MIN'\"\n )\n assert(\n opslimit <= binding.crypto_pwhash_OPSLIMIT_MAX,\n \"opslimit must be at most 'crypto_pwhash_OPSLIMIT_MAX'\"\n )\n assert(typeof memlimit === 'number', 'memlimit must be a number')\n assert(\n memlimit >= binding.crypto_pwhash_MEMLIMIT_MIN,\n \"memlimit must be at least 'crypto_pwhash_MEMLIMIT_MIN'\"\n )\n assert(\n memlimit <= binding.crypto_pwhash_MEMLIMIT_MAX,\n \"memlimit must be at most 'crypto_pwhash_MEMLIMIT_MAX'\"\n )\n\n const [done, promise] = checkStatus(callback)\n\n binding.crypto_pwhash_str_async(\n out.buffer,\n out.byteOffset,\n out.byteLength,\n\n passwd.buffer,\n passwd.byteOffset,\n passwd.byteLength,\n\n opslimit,\n memlimit,\n\n done\n )\n\n return promise\n}\n\nexports.crypto_pwhash_str_verify = function (str, passwd) {\n assert(ArrayBuffer.isView(str), 'str must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(\n str.byteLength === binding.crypto_pwhash_STRBYTES,\n \"str must be 'crypto_pwhash_STRBYTES' bytes\"\n )\n\n return binding.crypto_pwhash_str_verify(str, passwd)\n}\n\nexports.crypto_pwhash_str_verify_async = function (str, passwd, callback = undefined) {\n assert(ArrayBuffer.isView(str), 'str must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(\n str.byteLength === binding.crypto_pwhash_STRBYTES,\n \"str must be 'crypto_pwhash_STRBYTES' bytes\"\n )\n assert(passwd.byteLength > 0, 'passwd must not be empty')\n\n const [done, promise] = checkStatus(callback, true)\n\n binding.crypto_pwhash_str_verify_async(\n str.buffer,\n str.byteOffset,\n str.byteLength,\n\n passwd.buffer,\n passwd.byteOffset,\n passwd.byteLength,\n\n done\n )\n\n return promise\n}\n\nexports.crypto_pwhash_str_needs_rehash = function (str, opslimit, memlimit) {\n assert(ArrayBuffer.isView(str), 'str must be a typed array')\n assert(\n str.byteLength === binding.crypto_pwhash_STRBYTES,\n \"str must be 'crypto_pwhash_STRBYTES' bytes\"\n )\n assert(\n opslimit >= binding.crypto_pwhash_OPSLIMIT_MIN,\n \"opslimit must be at least 'crypto_pwhash_OPSLIMIT_MIN'\"\n )\n assert(\n opslimit <= binding.crypto_pwhash_OPSLIMIT_MAX,\n \"opslimit must be at most 'crypto_pwhash_OPSLIMIT_MAX'\"\n )\n assert(\n memlimit >= binding.crypto_pwhash_MEMLIMIT_MIN,\n \"memlimit must be at least 'crypto_pwhash_MEMLIMIT_MIN'\"\n )\n assert(\n memlimit <= binding.crypto_pwhash_MEMLIMIT_MAX,\n \"memlimit must be at most 'crypto_pwhash_MEMLIMIT_MAX'\"\n )\n\n return binding.crypto_pwhash_str_needs_rehash(str, opslimit, memlimit)\n}\n\nexports.crypto_pwhash_scryptsalsa208sha256 = function (out, passwd, salt, opslimit, memlimit) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(ArrayBuffer.isView(salt), 'salt must be a typed array')\n assert(\n out.byteLength >= binding.crypto_pwhash_scryptsalsa208sha256_BYTES_MIN,\n \"out must be at least 'crypto_pwhash_scryptsalsa208sha256_BYTES_MIN' bytes\"\n )\n assert(\n out.byteLength <= binding.crypto_pwhash_scryptsalsa208sha256_BYTES_MAX,\n \"out must be at most 'crypto_pwhash_scryptsalsa208sha256_BYTES_MAX' bytes\"\n )\n assert(\n salt.byteLength === binding.crypto_pwhash_scryptsalsa208sha256_SALTBYTES,\n \"salt must be 'crypto_pwhash_scryptsalsa208sha256_SALTBYTES' bytes\"\n )\n assert(\n opslimit >= binding.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN,\n \"opslimit must be at least 'crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN'\"\n )\n assert(\n opslimit <= binding.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX,\n \"opslimit must be at most 'crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX'\"\n )\n assert(\n memlimit >= binding.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN,\n \"memlimit must be at least 'crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN'\"\n )\n assert(\n memlimit <= binding.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX,\n \"memlimit must be at most 'crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX'\"\n )\n\n const res = binding.crypto_pwhash_scryptsalsa208sha256(out, passwd, salt, opslimit, memlimit)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_pwhash_scryptsalsa208sha256_async = function (\n out,\n passwd,\n salt,\n opslimit,\n memlimit,\n callback = undefined\n) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(ArrayBuffer.isView(salt), 'salt must be a typed array')\n assert(\n out.byteLength >= binding.crypto_pwhash_scryptsalsa208sha256_BYTES_MIN,\n \"out must be at least 'crypto_pwhash_scryptsalsa208sha256_BYTES_MIN' bytes\"\n )\n assert(\n out.byteLength <= binding.crypto_pwhash_scryptsalsa208sha256_BYTES_MAX,\n \"out must be at most 'crypto_pwhash_scryptsalsa208sha256_BYTES_MAX' bytes\"\n )\n assert(passwd.byteLength > 0, 'passwd must not be empty')\n assert(\n salt.byteLength === binding.crypto_pwhash_scryptsalsa208sha256_SALTBYTES,\n \"salt must be 'crypto_pwhash_scryptsalsa208sha256_SALTBYTES' bytes\"\n )\n assert(\n opslimit >= binding.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN,\n \"opslimit must be at least 'crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN'\"\n )\n assert(\n opslimit <= binding.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX,\n \"opslimit must be at most 'crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX'\"\n )\n assert(\n memlimit >= binding.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN,\n \"memlimit must be at least 'crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN'\"\n )\n assert(\n memlimit <= binding.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX,\n \"memlimit must be at most 'crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX'\"\n )\n\n const [done, promise] = checkStatus(callback)\n\n binding.crypto_pwhash_scryptsalsa208sha256_async(\n out.buffer,\n out.byteOffset,\n out.byteLength,\n\n passwd.buffer,\n passwd.byteOffset,\n passwd.byteLength,\n\n salt.buffer,\n salt.byteOffset,\n salt.byteLength,\n\n opslimit,\n memlimit,\n\n done\n )\n\n return promise\n}\n\nexports.crypto_pwhash_scryptsalsa208sha256_str_async = function (\n out,\n passwd,\n opslimit,\n memlimit,\n callback = undefined\n) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(\n out.byteLength === binding.crypto_pwhash_scryptsalsa208sha256_STRBYTES,\n \"out must be 'crypto_pwhash_scryptsalsa208sha256_STRBYTES' bytes\"\n )\n assert(passwd.byteLength > 0, 'passwd must not be empty')\n assert(\n opslimit >= binding.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN,\n \"opslimit must be at least 'crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN'\"\n )\n assert(\n opslimit <= binding.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX,\n \"opslimit must be at most 'crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX'\"\n )\n assert(\n memlimit >= binding.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN,\n \"memlimit must be at least 'crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN'\"\n )\n assert(\n memlimit <= binding.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX,\n \"memlimit must be at most 'crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX'\"\n )\n\n const [done, promise] = checkStatus(callback)\n\n binding.crypto_pwhash_scryptsalsa208sha256_str_async(\n out.buffer,\n out.byteOffset,\n out.byteLength,\n\n passwd.buffer,\n passwd.byteOffset,\n passwd.byteLength,\n\n opslimit,\n memlimit,\n\n done\n )\n\n return promise\n}\n\nexports.crypto_pwhash_scryptsalsa208sha256_str = function (out, passwd, opslimit, memlimit) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(\n out.byteLength === binding.crypto_pwhash_scryptsalsa208sha256_STRBYTES,\n \"out must be 'crypto_pwhash_scryptsalsa208sha256_STRBYTES' bytes\"\n )\n assert(passwd.byteLength > 0, 'passwd must not be empty')\n assert(\n opslimit >= binding.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN,\n \"opslimit must be at least 'crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN'\"\n )\n assert(\n opslimit <= binding.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX,\n \"opslimit must be at most 'crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX'\"\n )\n assert(\n memlimit >= binding.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN,\n \"memlimit must be at least 'crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN'\"\n )\n assert(\n memlimit <= binding.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX,\n \"memlimit must be at most 'crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX'\"\n )\n\n const res = binding.crypto_pwhash_scryptsalsa208sha256_str(out, passwd, opslimit, memlimit)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_pwhash_scryptsalsa208sha256_str_verify_async = function (\n str,\n passwd,\n callback = undefined\n) {\n assert(ArrayBuffer.isView(str), 'str must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(\n str.byteLength === binding.crypto_pwhash_scryptsalsa208sha256_STRBYTES,\n \"str must be 'crypto_pwhash_scryptsalsa208sha256_STRBYTES' bytes\"\n )\n assert(passwd.byteLength > 0, 'passwd must not be empty')\n\n const [done, promise] = checkStatus(callback, true)\n\n binding.crypto_pwhash_scryptsalsa208sha256_str_verify_async(\n str.buffer,\n str.byteOffset,\n str.byteLength,\n\n passwd.buffer,\n passwd.byteOffset,\n passwd.byteLength,\n\n done\n )\n\n return promise\n}\n\nexports.crypto_pwhash_scryptsalsa208sha256_str_verify = function (str, passwd) {\n assert(ArrayBuffer.isView(str), 'str must be a typed array')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(\n str.byteLength === binding.crypto_pwhash_scryptsalsa208sha256_STRBYTES,\n \"str must be 'crypto_pwhash_scryptsalsa208sha256_STRBYTES' bytes\"\n )\n assert(passwd.byteLength > 0, 'passwd must not be empty')\n\n return binding.crypto_pwhash_scryptsalsa208sha256_str_verify(str, passwd)\n}\n\nexports.crypto_pwhash_scryptsalsa208sha256_str_needs_rehash = function (str, opslimit, memlimit) {\n assert(ArrayBuffer.isView(str), 'str must be a typed array')\n assert(\n str.byteLength === binding.crypto_pwhash_scryptsalsa208sha256_STRBYTES,\n \"str must be 'crypto_pwhash_scryptsalsa208sha256_STRBYTES' bytes\"\n )\n assert(\n opslimit >= binding.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN,\n \"opslimit must be at least 'crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN'\"\n )\n assert(\n opslimit <= binding.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX,\n \"opslimit must be at most 'crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX'\"\n )\n assert(\n memlimit >= binding.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN,\n \"memlimit must be at least 'crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN'\"\n )\n assert(\n memlimit <= binding.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX,\n \"memlimit must be at most 'crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX'\"\n )\n\n return binding.crypto_pwhash_scryptsalsa208sha256_str_needs_rehash(str, opslimit, memlimit)\n}\n\n// crypto_kx\n\nexports.crypto_kx_keypair = function (pk, sk) {\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(\n pk.byteLength === binding.crypto_kx_PUBLICKEYBYTES,\n \"pk must be 'crypto_kx_PUBLICKEYBYTES' bytes\"\n )\n assert(\n sk.byteLength === binding.crypto_kx_SECRETKEYBYTES,\n \"sk must be 'crypto_kx_SECRETKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_kx_keypair(pk, sk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_kx_seed_keypair = function (pk, sk, seed) {\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(ArrayBuffer.isView(seed), 'seed must be a typed array')\n assert(\n pk.byteLength === binding.crypto_kx_PUBLICKEYBYTES,\n \"pk must be 'crypto_kx_PUBLICKEYBYTES' bytes\"\n )\n assert(\n sk.byteLength === binding.crypto_kx_SECRETKEYBYTES,\n \"sk must be 'crypto_kx_SECRETKEYBYTES' bytes\"\n )\n assert(\n seed.byteLength === binding.crypto_kx_SEEDBYTES,\n \"seed must be 'crypto_kx_SEEDBYTES' bytes\"\n )\n\n const res = binding.crypto_kx_seed_keypair(pk, sk, seed)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_kx_client_session_keys = function (rx, tx, clientPk, clientSk, serverPk) {\n if (!rx) rx = undefined\n if (!tx) tx = undefined\n\n assert(rx || tx, 'at least one session key must be specified')\n\n if (rx) {\n assert(ArrayBuffer.isView(rx), 'rx must be a typed array')\n assert(\n rx.byteLength === binding.crypto_kx_SESSIONKEYBYTES,\n \"rx must be 'crypto_kx_SESSIONKEYBYTES' bytes\"\n )\n }\n\n if (tx) {\n assert(ArrayBuffer.isView(tx), 'tx must be a typed array')\n assert(\n tx.byteLength === binding.crypto_kx_SESSIONKEYBYTES,\n \"tx must be 'crypto_kx_SESSIONKEYBYTES' bytes\"\n )\n }\n\n assert(ArrayBuffer.isView(clientPk), 'clientPk must be a typed array')\n assert(ArrayBuffer.isView(clientSk), 'clientSk must be a typed array')\n assert(ArrayBuffer.isView(serverPk), 'serverPk must be a typed array')\n assert(\n clientPk.byteLength === binding.crypto_kx_PUBLICKEYBYTES,\n \"clientPk must be 'crypto_kx_PUBLICKEYBYTES' bytes\"\n )\n assert(\n clientSk.byteLength === binding.crypto_kx_SECRETKEYBYTES,\n \"clientSk must be 'crypto_kx_SECRETKEYBYTES' bytes\"\n )\n assert(\n serverPk.byteLength === binding.crypto_kx_PUBLICKEYBYTES,\n \"serverPk must be 'crypto_kx_PUBLICKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_kx_client_session_keys(rx, tx, clientPk, clientSk, serverPk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_kx_server_session_keys = function (rx, tx, serverPk, serverSk, clientPk) {\n if (!rx) rx = undefined\n if (!tx) tx = undefined\n\n assert(rx || tx, 'at least one session key must be specified')\n\n if (rx) {\n assert(ArrayBuffer.isView(rx), 'rx must be a typed array')\n assert(\n rx.byteLength === binding.crypto_kx_SESSIONKEYBYTES,\n \"rx must be 'crypto_kx_SESSIONKEYBYTES' bytes\"\n )\n }\n\n if (tx) {\n assert(ArrayBuffer.isView(tx), 'tx must be a typed array')\n assert(\n tx.byteLength === binding.crypto_kx_SESSIONKEYBYTES,\n \"tx must be 'crypto_kx_SESSIONKEYBYTES' bytes\"\n )\n }\n\n assert(ArrayBuffer.isView(serverPk), 'serverPk must be a typed array')\n assert(ArrayBuffer.isView(serverSk), 'serverSk must be a typed array')\n assert(ArrayBuffer.isView(clientPk), 'clientPk must be a typed array')\n assert(\n serverPk.byteLength === binding.crypto_kx_PUBLICKEYBYTES,\n \"serverPk must be 'crypto_kx_PUBLICKEYBYTES' bytes\"\n )\n assert(\n serverSk.byteLength === binding.crypto_kx_SECRETKEYBYTES,\n \"serverSk must be 'crypto_kx_SECRETKEYBYTES' bytes\"\n )\n assert(\n clientPk.byteLength === binding.crypto_kx_PUBLICKEYBYTES,\n \"clientPk must be 'crypto_kx_PUBLICKEYBYTES' bytes\"\n )\n\n const res = binding.crypto_kx_server_session_keys(rx, tx, serverPk, serverSk, clientPk)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\n// crypto_scalarmult\n\nexports.crypto_scalarmult_base = function (q, n) {\n assert(ArrayBuffer.isView(q), 'q must be a typed array')\n assert(\n q.byteLength === binding.crypto_scalarmult_BYTES,\n \"q must be 'crypto_scalarmult_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.crypto_scalarmult_SCALARBYTES,\n \"n must be 'crypto_scalarmult_SCALARBYTES' bytes\"\n )\n\n const res = binding.crypto_scalarmult_base(q, n)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_scalarmult = function (q, n, p) {\n assert(ArrayBuffer.isView(q), 'q must be a typed array')\n assert(\n q.byteLength === binding.crypto_scalarmult_BYTES,\n \"q must be 'crypto_scalarmult_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.crypto_scalarmult_SCALARBYTES,\n \"n must be 'crypto_scalarmult_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(p), 'p must be a typed array')\n assert(\n p.byteLength === binding.crypto_scalarmult_BYTES,\n \"p must be 'crypto_scalarmult_BYTES' bytes\"\n )\n\n const res = binding.crypto_scalarmult(q, n, p)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_scalarmult_ed25519_base = function (q, n) {\n assert(ArrayBuffer.isView(q), 'q must be a typed array')\n assert(\n q.byteLength === binding.crypto_scalarmult_ed25519_BYTES,\n \"q must be 'crypto_scalarmult_ed25519_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.crypto_scalarmult_ed25519_SCALARBYTES,\n \"n must be 'crypto_scalarmult_ed25519_SCALARBYTES' bytes\"\n )\n\n const res = binding.crypto_scalarmult_ed25519_base(q, n)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_scalarmult_ed25519 = function (q, n, p) {\n assert(ArrayBuffer.isView(q), 'q must be a typed array')\n assert(\n q.byteLength === binding.crypto_scalarmult_ed25519_BYTES,\n \"q must be 'crypto_scalarmult_ed25519_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.crypto_scalarmult_ed25519_SCALARBYTES,\n \"n must be 'crypto_scalarmult_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(p), 'p must be a typed array')\n assert(\n p.byteLength === binding.crypto_scalarmult_ed25519_BYTES,\n \"p must be 'crypto_scalarmult_ed25519_BYTES' bytes\"\n )\n\n const res = binding.crypto_scalarmult_ed25519(q, n, p)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_core_ed25519_is_valid_point = function (p) {\n assert(ArrayBuffer.isView(p), 'p must be a typed array')\n assert(\n p.byteLength === binding.crypto_core_ed25519_BYTES,\n \"p must be 'crypto_core_ed25519_BYTES' bytes\"\n )\n\n return binding.crypto_core_ed25519_is_valid_point(p)\n}\n\nexports.crypto_core_ed25519_from_uniform = function (p, r) {\n assert(ArrayBuffer.isView(p), 'p must be a typed array')\n assert(\n p.byteLength === binding.crypto_core_ed25519_BYTES,\n \"p must be 'crypto_core_ed25519_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(r), 'r must be a typed array')\n assert(\n r.byteLength === binding.crypto_core_ed25519_UNIFORMBYTES,\n \"r must be 'crypto_core_ed25519_UNIFORMBYTES' bytes\"\n )\n\n const res = binding.crypto_core_ed25519_from_uniform(p, r)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_scalarmult_ed25519_base_noclamp = function (q, n) {\n assert(ArrayBuffer.isView(q), 'q must be a typed array')\n assert(\n q.byteLength === binding.crypto_scalarmult_ed25519_BYTES,\n \"q must be 'crypto_scalarmult_ed25519_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.crypto_scalarmult_ed25519_SCALARBYTES,\n \"n must be 'crypto_scalarmult_ed25519_SCALARBYTES' bytes\"\n )\n\n const res = binding.crypto_scalarmult_ed25519_base_noclamp(q, n)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_scalarmult_ed25519_noclamp = function (q, n, p) {\n assert(ArrayBuffer.isView(q), 'q must be a typed array')\n assert(\n q.byteLength === binding.crypto_scalarmult_ed25519_BYTES,\n \"q must be 'crypto_scalarmult_ed25519_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.crypto_scalarmult_ed25519_SCALARBYTES,\n \"n must be 'crypto_scalarmult_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(p), 'p must be a typed array')\n assert(\n p.byteLength === binding.crypto_scalarmult_ed25519_BYTES,\n \"p must be 'crypto_scalarmult_ed25519_BYTES' bytes\"\n )\n\n const res = binding.crypto_scalarmult_ed25519_noclamp(q, n, p)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\n// crypto_core\n\nexports.crypto_core_ed25519_add = function (r, p, q) {\n assert(ArrayBuffer.isView(r), 'r must be a typed array')\n assert(\n r.byteLength === binding.crypto_core_ed25519_BYTES,\n \"r must be 'crypto_core_ed25519_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(p), 'p must be a typed array')\n assert(\n p.byteLength === binding.crypto_core_ed25519_BYTES,\n \"p must be 'crypto_core_ed25519_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(q), 'q must be a typed array')\n assert(\n q.byteLength === binding.crypto_core_ed25519_BYTES,\n \"q must be 'crypto_core_ed25519_BYTES' bytes\"\n )\n\n const res = binding.crypto_core_ed25519_add(r, p, q)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_core_ed25519_sub = function (r, p, q) {\n assert(ArrayBuffer.isView(r), 'r must be a typed array')\n assert(\n r.byteLength === binding.crypto_core_ed25519_BYTES,\n \"r must be 'crypto_core_ed25519_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(p), 'p must be a typed array')\n assert(\n p.byteLength === binding.crypto_core_ed25519_BYTES,\n \"p must be 'crypto_core_ed25519_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(q), 'q must be a typed array')\n assert(\n q.byteLength === binding.crypto_core_ed25519_BYTES,\n \"q must be 'crypto_core_ed25519_BYTES' bytes\"\n )\n\n const res = binding.crypto_core_ed25519_sub(r, p, q)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_core_ed25519_scalar_random = function (r) {\n assert(ArrayBuffer.isView(r), 'r must be a typed array')\n assert(\n r.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"r must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n\n binding.crypto_core_ed25519_scalar_random(r)\n}\n\nexports.crypto_core_ed25519_scalar_reduce = function (r, s) {\n assert(ArrayBuffer.isView(r), 'r must be a typed array')\n assert(\n r.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"r must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(s), 's must be a typed array')\n assert(\n s.byteLength === binding.crypto_core_ed25519_NONREDUCEDSCALARBYTES,\n \"s must be 'crypto_core_ed25519_NONREDUCEDSCALARBYTES' bytes\"\n )\n\n binding.crypto_core_ed25519_scalar_reduce(r, s)\n}\n\nexports.crypto_core_ed25519_scalar_invert = function (recip, s) {\n assert(ArrayBuffer.isView(recip), 'recip must be a typed array')\n assert(\n recip.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"recip must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(s), 's must be a typed array')\n assert(\n s.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"s must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n\n binding.crypto_core_ed25519_scalar_invert(recip, s)\n}\n\nexports.crypto_core_ed25519_scalar_negate = function (neg, s) {\n assert(ArrayBuffer.isView(neg), 'neg must be a typed array')\n assert(\n neg.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"neg must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(s), 's must be a typed array')\n assert(\n s.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"s must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n\n binding.crypto_core_ed25519_scalar_negate(neg, s)\n}\n\nexports.crypto_core_ed25519_scalar_complement = function (comp, s) {\n assert(ArrayBuffer.isView(comp), 'comp must be a typed array')\n assert(\n comp.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"comp must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(s), 's must be a typed array')\n assert(\n s.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"s must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n\n binding.crypto_core_ed25519_scalar_complement(comp, s)\n}\n\nexports.crypto_core_ed25519_scalar_add = function (z, x, y) {\n assert(ArrayBuffer.isView(z), 'z must be a typed array')\n assert(\n z.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"z must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(x), 'x must be a typed array')\n assert(\n x.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"x must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(y), 'y must be a typed array')\n assert(\n y.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"y must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n\n binding.crypto_core_ed25519_scalar_add(z, x, y)\n}\n\nexports.crypto_core_ed25519_scalar_sub = function (z, x, y) {\n assert(ArrayBuffer.isView(z), 'z must be a typed array')\n assert(\n z.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"z must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(x), 'x must be a typed array')\n assert(\n x.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"x must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(y), 'y must be a typed array')\n assert(\n y.byteLength === binding.crypto_core_ed25519_SCALARBYTES,\n \"y must be 'crypto_core_ed25519_SCALARBYTES' bytes\"\n )\n\n binding.crypto_core_ed25519_scalar_sub(z, x, y)\n}\n\n// crypto_shorthash\n\nexports.crypto_shorthash = function (out, input, k) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(\n out.byteLength === binding.crypto_shorthash_BYTES,\n \"out must be 'crypto_shorthash_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_shorthash_KEYBYTES,\n \"k must be 'crypto_shorthash_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_shorthash(out, input, k)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\n// crypto_kdf\n\nexports.crypto_kdf_keygen = function (key) {\n assert(ArrayBuffer.isView(key), 'key must be a typed array')\n assert(key.byteLength === binding.crypto_kdf_KEYBYTES, \"key must be 'crypto_kdf_KEYBYTES' bytes\")\n\n binding.crypto_kdf_keygen(key)\n}\n\nexports.crypto_kdf_derive_from_key = function (subkey, subkeyId, ctx, key) {\n assert(ArrayBuffer.isView(subkey), 'subkey must be a typed array')\n assert(\n subkey.byteLength >= binding.crypto_kdf_BYTES_MIN,\n \"subkey must be at least 'crypto_kdf_BYTES_MIN' bytes\"\n )\n assert(\n subkey.byteLength <= binding.crypto_kdf_BYTES_MAX,\n \"subkey must be at most 'crypto_kdf_BYTES_MAX' bytes\"\n )\n assert(ArrayBuffer.isView(ctx), 'ctx must be a typed array')\n assert(\n ctx.byteLength === binding.crypto_kdf_CONTEXTBYTES,\n \"ctx must be 'crypto_kdf_CONTEXTBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(key), 'key must be a typed array')\n assert(key.byteLength === binding.crypto_kdf_KEYBYTES, \"key must be 'crypto_kdf_KEYBYTES' bytes\")\n\n const res = binding.crypto_kdf_derive_from_key(subkey, subkeyId, ctx, key)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\n// crypto_hash\n\nexports.crypto_hash = function (out, input) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(out.byteLength === binding.crypto_hash_BYTES, \"out must be 'crypto_hash_BYTES' bytes\")\n\n const res = binding.crypto_hash(out, input)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_hash_sha256 = function (out, input) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(\n out.byteLength === binding.crypto_hash_sha256_BYTES,\n \"out must be 'crypto_hash_sha256_BYTES' bytes\"\n )\n\n const res = binding.crypto_hash_sha256(out, input)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_hash_sha256_init = function (state) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_hash_sha256_STATEBYTES,\n \"state must be 'crypto_hash_sha256_STATEBYTES' bytes\"\n )\n\n const res = binding.crypto_hash_sha256_init(state)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_hash_sha256_update = function (state, input) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(\n state.byteLength === binding.crypto_hash_sha256_STATEBYTES,\n \"state must be 'crypto_hash_sha256_STATEBYTES' bytes\"\n )\n\n const res = binding.crypto_hash_sha256_update(state, input)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_hash_sha256_final = function (state, out) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_hash_sha256_STATEBYTES,\n \"state must be 'crypto_hash_sha256_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(\n out.byteLength === binding.crypto_hash_sha256_BYTES,\n \"out must be 'crypto_hash_sha256_BYTES' bytes\"\n )\n\n const res = binding.crypto_hash_sha256_final(state, out)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_hash_sha512 = function (out, input) {\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(\n out.byteLength === binding.crypto_hash_sha512_BYTES,\n \"out must be 'crypto_hash_sha512_BYTES' bytes\"\n )\n\n const res = binding.crypto_hash_sha512(out, input)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_hash_sha512_init = function (state) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_hash_sha512_STATEBYTES,\n \"state must be 'crypto_hash_sha512_STATEBYTES' bytes\"\n )\n\n const res = binding.crypto_hash_sha512_init(state)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_hash_sha512_update = function (state, input) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(ArrayBuffer.isView(input), 'input must be a typed array')\n assert(\n state.byteLength === binding.crypto_hash_sha512_STATEBYTES,\n \"state must be 'crypto_hash_sha512_STATEBYTES' bytes\"\n )\n\n const res = binding.crypto_hash_sha512_update(state, input)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\nexports.crypto_hash_sha512_final = function (state, out) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_hash_sha512_STATEBYTES,\n \"state must be 'crypto_hash_sha512_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(\n out.byteLength === binding.crypto_hash_sha512_BYTES,\n \"out must be 'crypto_hash_sha512_BYTES' bytes\"\n )\n\n const res = binding.crypto_hash_sha512_final(state, out)\n\n if (res !== 0) throw new Error('status: ' + res)\n}\n\n// crypto_aead\n\nexports.crypto_aead_xchacha20poly1305_ietf_keygen = function (k) {\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_aead_xchacha20poly1305_ietf_KEYBYTES,\n \"k must be 'crypto_aead_xchacha20poly1305_ietf_KEYBYTES' bytes\"\n )\n\n binding.crypto_aead_xchacha20poly1305_ietf_keygen(k)\n}\n\nexports.crypto_aead_xchacha20poly1305_ietf_encrypt = function (c, m, ad, nsec, npub, k) {\n if (!ad) ad = undefined\n\n assert(nsec === null, 'nsec must always be set to null')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(\n c.byteLength === m.byteLength + binding.crypto_aead_xchacha20poly1305_ietf_ABYTES,\n \"c must be 'm.byteLength + crypto_aead_xchacha20poly1305_ietf_ABYTES' bytes\"\n )\n assert(c.byteLength <= 0xffffffff, 'c.byteLength must be a 32bit integer')\n assert(ArrayBuffer.isView(npub), 'npub must be a typed array')\n assert(\n npub.byteLength === binding.crypto_aead_xchacha20poly1305_ietf_NPUBBYTES,\n \"npub must be 'crypto_aead_xchacha20poly1305_ietf_NPUBBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_aead_xchacha20poly1305_ietf_KEYBYTES,\n \"k must be 'crypto_aead_xchacha20poly1305_ietf_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_aead_xchacha20poly1305_ietf_encrypt(c, m, ad, npub, k)\n\n if (res < 0) throw new Error('could not encrypt data')\n\n return res\n}\n\nexports.crypto_aead_xchacha20poly1305_ietf_decrypt = function (m, nsec, c, ad, npub, k) {\n if (!ad) ad = undefined\n\n assert(nsec === null, 'nsec must always be set to null')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(\n m.byteLength === c.byteLength - binding.crypto_aead_xchacha20poly1305_ietf_ABYTES,\n \"m must be 'c.byteLength - crypto_aead_xchacha20poly1305_ietf_ABYTES' bytes\"\n )\n assert(m.byteLength <= 0xffffffff, 'm.byteLength must be a 32bit integer')\n assert(ArrayBuffer.isView(npub), 'npub must be a typed array')\n assert(\n npub.byteLength === binding.crypto_aead_xchacha20poly1305_ietf_NPUBBYTES,\n \"npub must be 'crypto_aead_xchacha20poly1305_ietf_NPUBBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_aead_xchacha20poly1305_ietf_KEYBYTES,\n \"k must be 'crypto_aead_xchacha20poly1305_ietf_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_aead_xchacha20poly1305_ietf_decrypt(m, c, ad, npub, k)\n\n if (res < 0) throw new Error('could not verify data')\n\n return res\n}\n\nexports.crypto_aead_xchacha20poly1305_ietf_encrypt_detached = function (\n c,\n mac,\n m,\n ad,\n nsec,\n npub,\n k\n) {\n if (!ad) ad = undefined\n\n assert(nsec === null, 'nsec must always be set to null')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(ArrayBuffer.isView(mac), 'mac must be a typed array')\n assert(\n mac.byteLength === binding.crypto_aead_xchacha20poly1305_ietf_ABYTES,\n \"mac must be 'crypto_aead_xchacha20poly1305_ietf_ABYTES' bytes\"\n )\n assert(ArrayBuffer.isView(npub), 'npub must be a typed array')\n assert(\n npub.byteLength === binding.crypto_aead_xchacha20poly1305_ietf_NPUBBYTES,\n \"npub must be 'crypto_aead_xchacha20poly1305_ietf_NPUBBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_aead_xchacha20poly1305_ietf_KEYBYTES,\n \"k must be 'crypto_aead_xchacha20poly1305_ietf_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_aead_xchacha20poly1305_ietf_encrypt_detached(c, mac, m, ad, npub, k)\n\n if (res < 0) throw new Error('could not encrypt data')\n\n return res\n}\n\nexports.crypto_aead_xchacha20poly1305_ietf_decrypt_detached = function (\n m,\n nsec,\n c,\n mac,\n ad,\n npub,\n k\n) {\n if (!ad) ad = undefined\n\n assert(nsec === null, 'nsec must always be set to null')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(m.byteLength === c.byteLength, \"m must be 'c.byteLength' bytes\")\n assert(ArrayBuffer.isView(mac), 'mac must be a typed array')\n assert(\n mac.byteLength === binding.crypto_aead_xchacha20poly1305_ietf_ABYTES,\n \"mac must be 'crypto_aead_xchacha20poly1305_ietf_ABYTES' bytes\"\n )\n assert(ArrayBuffer.isView(npub), 'npub must be a typed array')\n assert(\n npub.byteLength === binding.crypto_aead_xchacha20poly1305_ietf_NPUBBYTES,\n \"npub must be 'crypto_aead_xchacha20poly1305_ietf_NPUBBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_aead_xchacha20poly1305_ietf_KEYBYTES,\n \"k must be 'crypto_aead_xchacha20poly1305_ietf_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_aead_xchacha20poly1305_ietf_decrypt_detached(m, c, mac, ad, npub, k)\n\n if (res !== 0) throw new Error('could not verify data')\n}\n\nexports.crypto_aead_chacha20poly1305_ietf_keygen = function (k) {\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_aead_chacha20poly1305_ietf_KEYBYTES,\n \"k must be 'crypto_aead_chacha20poly1305_ietf_KEYBYTES' bytes\"\n )\n\n binding.crypto_aead_chacha20poly1305_ietf_keygen(k)\n}\n\nexports.crypto_aead_chacha20poly1305_ietf_encrypt = function (c, m, ad, nsec, npub, k) {\n if (!ad) ad = undefined\n\n assert(nsec === null, 'nsec must always be set to null')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(\n c.byteLength === m.byteLength + binding.crypto_aead_chacha20poly1305_ietf_ABYTES,\n \"c must be 'm.byteLength + crypto_aead_chacha20poly1305_ietf_ABYTES' bytes\"\n )\n assert(c.byteLength <= 0xffffffff, 'c.byteLength must be a 32bit integer')\n assert(ArrayBuffer.isView(npub), 'npub must be a typed array')\n assert(\n npub.byteLength === binding.crypto_aead_chacha20poly1305_ietf_NPUBBYTES,\n \"npub must be 'crypto_aead_chacha20poly1305_ietf_NPUBBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_aead_chacha20poly1305_ietf_KEYBYTES,\n \"k must be 'crypto_aead_chacha20poly1305_ietf_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_aead_chacha20poly1305_ietf_encrypt(c, m, ad, npub, k)\n\n if (res < 0) throw new Error('could not encrypt data')\n\n return res\n}\n\nexports.crypto_aead_chacha20poly1305_ietf_decrypt = function (m, nsec, c, ad, npub, k) {\n if (!ad) ad = undefined\n\n assert(nsec === null, 'nsec must always be set to null')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(\n m.byteLength === c.byteLength - binding.crypto_aead_chacha20poly1305_ietf_ABYTES,\n \"m must be 'c.byteLength - crypto_aead_chacha20poly1305_ietf_ABYTES' bytes\"\n )\n assert(m.byteLength <= 0xffffffff, 'm.byteLength must be a 32bit integer')\n assert(ArrayBuffer.isView(npub), 'npub must be a typed array')\n assert(\n npub.byteLength === binding.crypto_aead_chacha20poly1305_ietf_NPUBBYTES,\n \"npub must be 'crypto_aead_chacha20poly1305_ietf_NPUBBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_aead_chacha20poly1305_ietf_KEYBYTES,\n \"k must be 'crypto_aead_chacha20poly1305_ietf_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_aead_chacha20poly1305_ietf_decrypt(m, c, ad, npub, k)\n\n if (res < 0) throw new Error('could not verify data')\n\n return res\n}\n\nexports.crypto_aead_chacha20poly1305_ietf_encrypt_detached = function (\n c,\n mac,\n m,\n ad,\n nsec,\n npub,\n k\n) {\n if (!ad) ad = undefined\n\n assert(nsec === null, 'nsec must always be set to null')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n assert(ArrayBuffer.isView(mac), 'mac must be a typed array')\n assert(\n mac.byteLength === binding.crypto_aead_chacha20poly1305_ietf_ABYTES,\n \"mac must be 'crypto_aead_chacha20poly1305_ietf_ABYTES' bytes\"\n )\n assert(ArrayBuffer.isView(npub), 'npub must be a typed array')\n assert(\n npub.byteLength === binding.crypto_aead_chacha20poly1305_ietf_NPUBBYTES,\n \"npub must be 'crypto_aead_chacha20poly1305_ietf_NPUBBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_aead_chacha20poly1305_ietf_KEYBYTES,\n \"k must be 'crypto_aead_chacha20poly1305_ietf_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_aead_chacha20poly1305_ietf_encrypt_detached(c, mac, m, ad, npub, k)\n\n if (res < 0) throw new Error('could not encrypt data')\n\n return res\n}\n\nexports.crypto_aead_chacha20poly1305_ietf_decrypt_detached = function (\n m,\n nsec,\n c,\n mac,\n ad,\n npub,\n k\n) {\n if (!ad) ad = undefined\n\n assert(nsec === null, 'nsec must always be set to null')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(m.byteLength === c.byteLength, \"m must be 'c.byteLength' bytes\")\n assert(ArrayBuffer.isView(mac), 'mac must be a typed array')\n assert(\n mac.byteLength === binding.crypto_aead_chacha20poly1305_ietf_ABYTES,\n \"mac must be 'crypto_aead_chacha20poly1305_ietf_ABYTES' bytes\"\n )\n assert(ArrayBuffer.isView(npub), 'npub must be a typed array')\n assert(\n npub.byteLength === binding.crypto_aead_chacha20poly1305_ietf_NPUBBYTES,\n \"npub must be 'crypto_aead_chacha20poly1305_ietf_NPUBBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_aead_chacha20poly1305_ietf_KEYBYTES,\n \"k must be 'crypto_aead_chacha20poly1305_ietf_KEYBYTES' bytes\"\n )\n\n const res = binding.crypto_aead_chacha20poly1305_ietf_decrypt_detached(m, c, mac, ad, npub, k)\n\n if (res !== 0) throw new Error('could not verify data')\n}\n\n// crypto_stream\n\nexports.crypto_stream_xor_wrap_init = function (state, n, k) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.sn_crypto_stream_xor_STATEBYTES,\n \"state must be 'sn_crypto_stream_xor_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.crypto_stream_NONCEBYTES,\n \"n must be 'crypto_stream_NONCEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_stream_KEYBYTES,\n \"k must be 'crypto_stream_KEYBYTES' bytes\"\n )\n\n binding.crypto_stream_xor_wrap_init(state, n, k)\n}\n\nexports.crypto_stream_xor_wrap_update = function (state, c, m) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.sn_crypto_stream_xor_STATEBYTES,\n \"state must be 'sn_crypto_stream_xor_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n\n binding.crypto_stream_xor_wrap_update(state, c, m)\n}\n\nexports.crypto_stream_xor_wrap_final = function (state) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.sn_crypto_stream_xor_STATEBYTES,\n \"state must be 'sn_crypto_stream_xor_STATEBYTES' bytes\"\n )\n\n binding.crypto_stream_xor_wrap_final(state)\n}\n\nexports.crypto_stream_chacha20_xor_wrap_init = function (state, n, k) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_chacha20_xor_STATEBYTES,\n \"state must be 'crypto_stream_chacha20_xor_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.crypto_stream_chacha20_NONCEBYTES,\n \"n must be 'crypto_stream_chacha20_NONCEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_stream_chacha20_KEYBYTES,\n \"k must be 'crypto_stream_chacha20_KEYBYTES' bytes\"\n )\n\n binding.crypto_stream_chacha20_xor_wrap_init(state, n, k)\n}\n\nexports.crypto_stream_chacha20_xor_wrap_update = function (state, c, m) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_chacha20_xor_STATEBYTES,\n \"state must be 'crypto_stream_chacha20_xor_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n\n binding.crypto_stream_chacha20_xor_wrap_update(state, c, m)\n}\n\nexports.crypto_stream_chacha20_xor_wrap_final = function (state) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_chacha20_xor_STATEBYTES,\n \"state must be 'crypto_stream_chacha20_xor_STATEBYTES' bytes\"\n )\n\n binding.crypto_stream_chacha20_xor_wrap_final(state)\n}\n\nexports.crypto_stream_chacha20_ietf_xor_wrap_init = function (state, n, k) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_chacha20_ietf_xor_STATEBYTES,\n \"state must be 'crypto_stream_chacha20_ietf_xor_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.crypto_stream_chacha20_ietf_NONCEBYTES,\n \"n must be 'crypto_stream_chacha20_ietf_NONCEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_stream_chacha20_ietf_KEYBYTES,\n \"k must be 'crypto_stream_chacha20_ietf_KEYBYTES' bytes\"\n )\n\n binding.crypto_stream_chacha20_ietf_xor_wrap_init(state, n, k)\n}\n\nexports.crypto_stream_chacha20_ietf_xor_wrap_update = function (state, c, m) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_chacha20_ietf_xor_STATEBYTES,\n \"state must be 'crypto_stream_chacha20_ietf_xor_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n\n binding.crypto_stream_chacha20_ietf_xor_wrap_update(state, c, m)\n}\n\nexports.crypto_stream_chacha20_ietf_xor_wrap_final = function (state) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_chacha20_ietf_xor_STATEBYTES,\n \"state must be 'crypto_stream_chacha20_ietf_xor_STATEBYTES' bytes\"\n )\n\n binding.crypto_stream_chacha20_ietf_xor_wrap_final(state)\n}\n\nexports.crypto_stream_xchacha20_xor_wrap_init = function (state, n, k) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_xchacha20_xor_STATEBYTES,\n \"state must be 'crypto_stream_xchacha20_xor_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.crypto_stream_xchacha20_NONCEBYTES,\n \"n must be 'crypto_stream_xchacha20_NONCEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_stream_xchacha20_KEYBYTES,\n \"k must be 'crypto_stream_xchacha20_KEYBYTES' bytes\"\n )\n\n binding.crypto_stream_xchacha20_xor_wrap_init(state, n, k)\n}\n\nexports.crypto_stream_xchacha20_xor_wrap_update = function (state, c, m) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_xchacha20_xor_STATEBYTES,\n \"state must be 'crypto_stream_xchacha20_xor_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n\n binding.crypto_stream_xchacha20_xor_wrap_update(state, c, m)\n}\n\nexports.crypto_stream_xchacha20_xor_wrap_final = function (state) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_xchacha20_xor_STATEBYTES,\n \"state must be 'crypto_stream_xchacha20_xor_STATEBYTES' bytes\"\n )\n\n binding.crypto_stream_xchacha20_xor_wrap_final(state)\n}\n\nexports.crypto_stream_salsa20_xor_wrap_init = function (state, n, k) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_salsa20_xor_STATEBYTES,\n \"state must be 'crypto_stream_salsa20_xor_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.crypto_stream_salsa20_NONCEBYTES,\n \"n must be 'crypto_stream_salsa20_NONCEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(k), 'k must be a typed array')\n assert(\n k.byteLength === binding.crypto_stream_salsa20_KEYBYTES,\n \"k must be 'crypto_stream_salsa20_KEYBYTES' bytes\"\n )\n\n binding.crypto_stream_salsa20_xor_wrap_init(state, n, k)\n}\n\nexports.crypto_stream_salsa20_xor_wrap_update = function (state, c, m) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_salsa20_xor_STATEBYTES,\n \"state must be 'crypto_stream_salsa20_xor_STATEBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(c), 'c must be a typed array')\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(c.byteLength === m.byteLength, \"c must be 'm.byteLength' bytes\")\n\n binding.crypto_stream_salsa20_xor_wrap_update(state, c, m)\n}\n\nexports.crypto_stream_salsa20_xor_wrap_final = function (state) {\n assert(ArrayBuffer.isView(state), 'state must be a typed array')\n assert(\n state.byteLength === binding.crypto_stream_salsa20_xor_STATEBYTES,\n \"state must be 'crypto_stream_salsa20_xor_STATEBYTES' bytes\"\n )\n\n binding.crypto_stream_salsa20_xor_wrap_final(state)\n}\n\n// experimental\n\nexports.extension_tweak_ed25519_base = function (n, p, ns) {\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"n must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(p), 'p must be a typed array')\n assert(\n p.byteLength === binding.extension_tweak_ed25519_BYTES,\n \"p must be 'extension_tweak_ed25519_BYTES' bytes\"\n )\n\n binding.extension_tweak_ed25519_base(n, p, ns)\n}\n\nexports.extension_tweak_ed25519_sign_detached = function (sig, m, scalar, pk) {\n assert(ArrayBuffer.isView(sig), 'sig must be a typed array')\n assert(sig.byteLength === binding.crypto_sign_BYTES, \"sig must be 'crypto_sign_BYTES' bytes\")\n assert(ArrayBuffer.isView(m), 'm must be a typed array')\n assert(ArrayBuffer.isView(scalar), 'scalar must be a typed array')\n assert(\n scalar.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"scalar must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n\n if (pk) {\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(\n pk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"pk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n }\n\n const res = binding.extension_tweak_ed25519_sign_detached(sig, m, scalar, pk)\n\n if (res !== 0) throw new Error('failed to compute signature')\n}\n\nexports.extension_tweak_ed25519_sk_to_scalar = function (n, sk) {\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"n must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(sk), 'sk must be a typed array')\n assert(\n sk.byteLength === binding.crypto_sign_SECRETKEYBYTES,\n \"sk must be 'crypto_sign_SECRETKEYBYTES' bytes\"\n )\n\n binding.extension_tweak_ed25519_sk_to_scalar(n, sk)\n}\n\nexports.extension_tweak_ed25519_scalar = function (scalarOut, scalar, ns) {\n assert(ArrayBuffer.isView(scalarOut), 'scalarOut must be a typed array')\n assert(\n scalarOut.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"scalarOut must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(scalar), 'scalar must be a typed array')\n assert(\n scalar.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"scalar must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n\n binding.extension_tweak_ed25519_scalar(scalarOut, scalar, ns)\n}\n\nexports.extension_tweak_ed25519_pk = function (tpk, pk, ns) {\n assert(ArrayBuffer.isView(tpk), 'tpk must be a typed array')\n assert(\n tpk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"tpk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(\n pk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"pk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n\n const res = binding.extension_tweak_ed25519_pk(tpk, pk, ns)\n\n if (res !== 0) throw new Error('failed to tweak public key')\n}\n\nexports.extension_tweak_ed25519_keypair = function (pk, scalarOut, scalarIn, ns) {\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(\n pk.byteLength === binding.extension_tweak_ed25519_BYTES,\n \"pk must be 'extension_tweak_ed25519_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(scalarOut), 'scalarOut must be a typed array')\n assert(\n scalarOut.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"scalarOut must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(scalarIn), 'scalarIn must be a typed array')\n assert(\n scalarIn.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"scalarIn must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n\n binding.extension_tweak_ed25519_keypair(pk, scalarOut, scalarIn, ns)\n}\n\nexports.extension_tweak_ed25519_scalar_add = function (scalarOut, scalar, n) {\n assert(ArrayBuffer.isView(scalarOut), 'scalarOut must be a typed array')\n assert(\n scalarOut.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"scalarOut must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(scalar), 'scalar must be a typed array')\n assert(\n scalar.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"scalar must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(n), 'n must be a typed array')\n assert(\n n.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"n must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n\n binding.extension_tweak_ed25519_scalar_add(scalarOut, scalar, n)\n}\n\nexports.extension_tweak_ed25519_pk_add = function (tpk, pk, p) {\n assert(ArrayBuffer.isView(tpk), 'tpk must be a typed array')\n assert(\n tpk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"tpk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(\n pk.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"pk must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(p), 'p must be a typed array')\n assert(\n p.byteLength === binding.crypto_sign_PUBLICKEYBYTES,\n \"p must be 'crypto_sign_PUBLICKEYBYTES' bytes\"\n )\n\n const res = binding.extension_tweak_ed25519_pk_add(tpk, pk, p)\n\n if (res !== 0) throw new Error('failed to add tweak to public key')\n}\n\nexports.extension_tweak_ed25519_keypair_add = function (pk, scalarOut, scalarIn, tweak) {\n assert(ArrayBuffer.isView(pk), 'pk must be a typed array')\n assert(\n pk.byteLength === binding.extension_tweak_ed25519_BYTES,\n \"pk must be 'extension_tweak_ed25519_BYTES' bytes\"\n )\n assert(ArrayBuffer.isView(scalarOut), 'scalarOut must be a typed array')\n assert(\n scalarOut.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"scalarOut must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(scalarIn), 'scalarIn must be a typed array')\n assert(\n scalarIn.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"scalarIn must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n assert(ArrayBuffer.isView(tweak), 'tweak must be a typed array')\n assert(\n tweak.byteLength === binding.extension_tweak_ed25519_SCALARBYTES,\n \"tweak must be 'extension_tweak_ed25519_SCALARBYTES' bytes\"\n )\n\n const res = binding.extension_tweak_ed25519_keypair_add(pk, scalarOut, scalarIn, tweak)\n\n if (res !== 0) throw new Error('failed to add tweak to keypair')\n}\n\nexports.extension_pbkdf2_sha512_async = function (out, passwd, salt, iter, outlen, callback) {\n assert(\n iter >= binding.extension_pbkdf2_sha512_ITERATIONS_MIN,\n \"iter must be at least 'extension_pbkdf2_sha512_ITERATIONS_MIN'\"\n )\n assert(\n outlen <= binding.extension_pbkdf2_sha512_BYTES_MAX,\n \"outlen must be at most 'extension_pbkdf2_sha512_BYTES_MAX'\"\n )\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(out.byteLength >= outlen, \"out must be at least 'outlen' bytes\")\n assert(out.byteLength > 0, 'out must not be empty')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(passwd.byteLength > 0, 'passwd must not be empty')\n assert(ArrayBuffer.isView(salt), 'salt must be a typed array')\n assert(salt.byteLength > 0, 'salt must not be empty')\n\n const [done, promise] = checkStatus(callback)\n\n binding.extension_pbkdf2_sha512_async(\n out.buffer,\n out.byteOffset,\n out.byteLength,\n\n passwd.buffer,\n passwd.byteOffset,\n passwd.byteLength,\n\n salt.buffer,\n salt.byteOffset,\n salt.byteLength,\n\n iter,\n outlen,\n\n done\n )\n\n return promise\n}\n\nexports.extension_pbkdf2_sha512 = function (out, passwd, salt, iter, outlen) {\n assert(\n iter >= binding.extension_pbkdf2_sha512_ITERATIONS_MIN,\n \"iter must be at least 'extension_pbkdf2_sha512_ITERATIONS_MIN'\"\n )\n assert(\n outlen <= binding.extension_pbkdf2_sha512_BYTES_MAX,\n \"outlen must be at most 'extension_pbkdf2_sha512_BYTES_MAX'\"\n )\n assert(ArrayBuffer.isView(out), 'out must be a typed array')\n assert(out.byteLength >= outlen, \"out must be at least 'outlen' bytes\")\n assert(out.byteLength > 0, 'out must not be empty')\n assert(ArrayBuffer.isView(passwd), 'passwd must be a typed array')\n assert(passwd.byteLength > 0, 'passwd must not be empty')\n assert(ArrayBuffer.isView(salt), 'salt must be a typed array')\n assert(salt.byteLength > 0, 'salt must not be empty')\n\n const res = binding.extension_pbkdf2_sha512(out, passwd, salt, iter, outlen)\n\n if (res !== 0) throw new Error('failed to add tweak to public key')\n}\n\nfunction checkStatus(callback, booleanResult = false) {\n let done, promise\n\n if (typeof callback === 'function') {\n done = function (status) {\n if (booleanResult) callback(null, status === 0)\n else if (status === 0) callback(null)\n else callback(new Error('status: ' + status))\n }\n } else {\n promise = new Promise(function (resolve, reject) {\n done = function (status) {\n if (booleanResult) resolve(status === 0)\n else if (status === 0) resolve()\n else reject(new Error('status: ' + status))\n }\n })\n }\n\n return [done, promise]\n}\n{\n \"name\": \"sodium-native\",\n \"version\": \"5.1.0\",\n \"description\": \"Low level bindings for libsodium\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\",\n \"binding.cc\",\n \"binding.js\",\n \"extensions\",\n \"prebuilds\",\n \"CMakeLists.txt\"\n ],\n \"imports\": {\n \"assert\": {\n \"bare\": \"bare-assert\",\n \"node\": \"assert\"\n }\n },\n \"addon\": true,\n \"dependencies\": {\n \"bare-assert\": \"^1.2.0\",\n \"require-addon\": \"^1.1.0\",\n \"which-runtime\": \"^1.2.1\"\n },\n \"devDependencies\": {\n \"bare-compat-napi\": \"^1.3.5\",\n \"brittle\": \"^3.16.2\",\n \"cmake-bare\": \"^1.6.1\",\n \"cmake-fetch\": \"^1.4.3\",\n \"cmake-napi\": \"^1.2.1\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"scripts\": {\n \"test\": \"prettier . --check && npm run test:node && npm run test:bare\",\n \"test:node\": \"node test/all.js\",\n \"test:bare\": \"bare test/all.js\"\n },\n \"standard\": {\n \"ignore\": [\n \"/test/fixtures/*.js\"\n ]\n },\n \"engines\": {\n \"bare\": \">=1.16.0\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/sodium-native.git\"\n },\n \"contributors\": [\n \"Emil Bay (http://bayes.dk)\",\n \"Mathias Buus (https://mafinto.sh)\",\n \"Christophe Diederichs \"\n ],\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/sodium-native/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/sodium-native\"\n}\nconst sodium = require('sodium-universal')\nconst b4a = require('b4a')\n\nconst ABYTES = sodium.crypto_secretstream_xchacha20poly1305_ABYTES\nconst TAG_MESSAGE = sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE\nconst TAG_FINAL = sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL\nconst STATEBYTES = sodium.crypto_secretstream_xchacha20poly1305_STATEBYTES\nconst HEADERBYTES = sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES\nconst KEYBYTES = sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES\nconst TAG_FINAL_BYTE = b4a.isBuffer(TAG_FINAL) ? TAG_FINAL[0] : TAG_FINAL\n\nconst EMPTY = b4a.alloc(0)\nconst TAG = b4a.alloc(1)\n\nclass Push {\n constructor (key, state = b4a.allocUnsafeSlow(STATEBYTES), header = b4a.allocUnsafeSlow(HEADERBYTES)) {\n if (!TAG_FINAL) throw new Error('JavaScript sodium version needs to support crypto_secretstream_xchacha20poly')\n\n this.key = key\n this.state = state\n this.header = header\n\n sodium.crypto_secretstream_xchacha20poly1305_init_push(this.state, this.header, this.key)\n }\n\n next (message, cipher = b4a.allocUnsafe(message.byteLength + ABYTES)) {\n sodium.crypto_secretstream_xchacha20poly1305_push(this.state, cipher, message, null, TAG_MESSAGE)\n return cipher\n }\n\n final (message = EMPTY, cipher = b4a.allocUnsafe(ABYTES)) {\n sodium.crypto_secretstream_xchacha20poly1305_push(this.state, cipher, message, null, TAG_FINAL)\n return cipher\n }\n}\n\nclass Pull {\n constructor (key, state = b4a.allocUnsafeSlow(STATEBYTES)) {\n if (!TAG_FINAL) throw new Error('JavaScript sodium version needs to support crypto_secretstream_xchacha20poly')\n\n this.key = key\n this.state = state\n this.final = false\n }\n\n init (header) {\n sodium.crypto_secretstream_xchacha20poly1305_init_pull(this.state, header, this.key)\n }\n\n next (cipher, message = b4a.allocUnsafe(cipher.byteLength - ABYTES)) {\n sodium.crypto_secretstream_xchacha20poly1305_pull(this.state, message, TAG, cipher, null)\n this.final = TAG[0] === TAG_FINAL_BYTE\n return message\n }\n}\n\nfunction keygen (buf = b4a.alloc(KEYBYTES)) {\n sodium.crypto_secretstream_xchacha20poly1305_keygen(buf)\n return buf\n}\n\nmodule.exports = {\n keygen,\n KEYBYTES,\n ABYTES,\n STATEBYTES,\n HEADERBYTES,\n Push,\n Pull\n}\n{\n \"name\": \"sodium-secretstream\",\n \"version\": \"1.2.0\",\n \"description\": \"Wraps libsodiums secretstream in a higher level abstraction\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"b4a\": \"^1.1.1\",\n \"sodium-universal\": \"^5.0.0\"\n },\n \"devDependencies\": {\n \"standard\": \"^17.0.0\"\n },\n \"scripts\": {\n \"test\": \"standard\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/sodium-secretstream.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/sodium-secretstream/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/sodium-secretstream\"\n}\nmodule.exports = require('sodium-native')\n{\n \"name\": \"sodium-universal\",\n \"version\": \"5.0.1\",\n \"description\": \"Universal wrapper for sodium-javascript and sodium-native working in Node.js and the Browser\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"sodium-native\": \"^5.0.1\"\n },\n \"peerDependencies\": {\n \"sodium-javascript\": \"~0.8.0\"\n },\n \"peerDependenciesMeta\": {\n \"sodium-javascript\": {\n \"optional\": true\n }\n },\n \"scripts\": {\n \"prepublish\": \"./build-scripts/generate.js\"\n },\n \"browser\": {\n \"sodium-native\": \"sodium-javascript\"\n },\n \"browserify\": {\n \"transform\": [\n \"./build-scripts/transform.js\"\n ]\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/sodium-universal.git\"\n },\n \"keywords\": [\n \"libsodium\",\n \"sodium\",\n \"sodium-native\",\n \"sodium-javascript\",\n \"browserify\"\n ],\n \"contributors\": [\n \"Emil Bay (http://bayes.dk)\",\n \"Mathias Buus (https://mafinto.sh)\",\n \"Christophe Diederichs \"\n ],\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/sodium-universal/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/sodium-universal#readme\"\n}\nvar tick = 1\nvar maxTick = 65535\nvar resolution = 4\nvar timer\nvar inc = function () {\n tick = (tick + 1) & maxTick\n}\n\n\nmodule.exports = function (seconds) {\n if (!timer) {\n timer = setInterval(inc, (1000 / resolution) | 0)\n if (timer.unref) timer.unref()\n }\n\n var size = resolution * (seconds || 5)\n var buffer = [0]\n var pointer = 1\n var last = (tick - 1) & maxTick\n\n return function (delta) {\n var dist = (tick - last) & maxTick\n if (dist > size) dist = size\n last = tick\n\n while (dist--) {\n if (pointer === size) pointer = 0\n buffer[pointer] = buffer[pointer === 0 ? size - 1 : pointer - 1]\n pointer++\n }\n\n if (delta) buffer[pointer - 1] += delta\n\n var top = buffer[pointer - 1]\n var btm = buffer.length < size ? 0 : buffer[pointer === size ? 0 : pointer]\n\n return buffer.length < resolution ? top : (top - btm) * resolution / buffer.length\n }\n}\n{\n \"name\": \"speedometer\",\n \"version\": \"1.1.0\",\n \"repository\": \"git://github.com/mafintosh/speedometer\",\n \"description\": \"simple speed measurement in javascript\",\n \"license\": \"MIT\",\n \"keywords\": [\n \"speed\",\n \"bytes\",\n \"per\",\n \"second\",\n \"transfer\"\n ],\n \"author\": \"Mathias Buus Madsen \"\n}\nconst { EventEmitter } = require('events-universal')\nconst FIFO = require('fast-fifo')\nconst TextDecoder = require('text-decoder')\n\nconst StreamError = require('./lib/errors.js')\n\n// if we do a future major, expect queue microtask to be there always, for now a bit defensive\nconst qmt =\n typeof queueMicrotask === 'undefined' ? (fn) => global.process.nextTick(fn) : queueMicrotask\n\n// 29 bits used total (4 from shared, 14 from read, and 11 from write)\nconst MAX = (1 << 29) - 1\n\n// Shared state\nconst OPENING = 0b0001\nconst PREDESTROYING = 0b0010\nconst DESTROYING = 0b0100\nconst DESTROYED = 0b1000\n\nconst NOT_OPENING = MAX ^ OPENING\nconst NOT_PREDESTROYING = MAX ^ PREDESTROYING\n\n// Read state (4 bit offset from shared state)\nconst READ_ACTIVE = 0b00000000000001 << 4\nconst READ_UPDATING = 0b00000000000010 << 4\nconst READ_PRIMARY = 0b00000000000100 << 4\nconst READ_QUEUED = 0b00000000001000 << 4\nconst READ_RESUMED = 0b00000000010000 << 4\nconst READ_PIPE_DRAINED = 0b00000000100000 << 4\nconst READ_ENDING = 0b00000001000000 << 4\nconst READ_EMIT_DATA = 0b00000010000000 << 4\nconst READ_EMIT_READABLE = 0b00000100000000 << 4\nconst READ_EMITTED_READABLE = 0b00001000000000 << 4\nconst READ_DONE = 0b00010000000000 << 4\nconst READ_NEXT_TICK = 0b00100000000000 << 4\nconst READ_NEEDS_PUSH = 0b01000000000000 << 4\nconst READ_READ_AHEAD = 0b10000000000000 << 4\n\n// Combined read state\nconst READ_FLOWING = READ_RESUMED | READ_PIPE_DRAINED\nconst READ_ACTIVE_AND_NEEDS_PUSH = READ_ACTIVE | READ_NEEDS_PUSH\nconst READ_PRIMARY_AND_ACTIVE = READ_PRIMARY | READ_ACTIVE\nconst READ_EMIT_READABLE_AND_QUEUED = READ_EMIT_READABLE | READ_QUEUED\nconst READ_RESUMED_READ_AHEAD = READ_RESUMED | READ_READ_AHEAD\n\nconst READ_NOT_ACTIVE = MAX ^ READ_ACTIVE\nconst READ_NON_PRIMARY = MAX ^ READ_PRIMARY\nconst READ_NON_PRIMARY_AND_PUSHED = MAX ^ (READ_PRIMARY | READ_NEEDS_PUSH)\nconst READ_PUSHED = MAX ^ READ_NEEDS_PUSH\nconst READ_PAUSED = MAX ^ READ_RESUMED\nconst READ_NOT_QUEUED = MAX ^ (READ_QUEUED | READ_EMITTED_READABLE)\nconst READ_NOT_ENDING = MAX ^ READ_ENDING\nconst READ_PIPE_NOT_DRAINED = MAX ^ READ_FLOWING\nconst READ_NOT_NEXT_TICK = MAX ^ READ_NEXT_TICK\nconst READ_NOT_UPDATING = MAX ^ READ_UPDATING\nconst READ_NO_READ_AHEAD = MAX ^ READ_READ_AHEAD\nconst READ_PAUSED_NO_READ_AHEAD = MAX ^ READ_RESUMED_READ_AHEAD\n\n// Write state (18 bit offset, 4 bit offset from shared state and 14 from read state)\nconst WRITE_ACTIVE = 0b00000000001 << 18\nconst WRITE_UPDATING = 0b00000000010 << 18\nconst WRITE_PRIMARY = 0b00000000100 << 18\nconst WRITE_QUEUED = 0b00000001000 << 18\nconst WRITE_UNDRAINED = 0b00000010000 << 18\nconst WRITE_DONE = 0b00000100000 << 18\nconst WRITE_EMIT_DRAIN = 0b00001000000 << 18\nconst WRITE_NEXT_TICK = 0b00010000000 << 18\nconst WRITE_WRITING = 0b00100000000 << 18\nconst WRITE_FINISHING = 0b01000000000 << 18\nconst WRITE_CORKED = 0b10000000000 << 18\n\nconst WRITE_NOT_ACTIVE = MAX ^ (WRITE_ACTIVE | WRITE_WRITING)\nconst WRITE_NON_PRIMARY = MAX ^ WRITE_PRIMARY\nconst WRITE_NOT_FINISHING = MAX ^ (WRITE_ACTIVE | WRITE_FINISHING)\nconst WRITE_DRAINED = MAX ^ WRITE_UNDRAINED\nconst WRITE_NOT_QUEUED = MAX ^ WRITE_QUEUED\nconst WRITE_NOT_NEXT_TICK = MAX ^ WRITE_NEXT_TICK\nconst WRITE_NOT_UPDATING = MAX ^ WRITE_UPDATING\nconst WRITE_NOT_CORKED = MAX ^ WRITE_CORKED\n\n// Combined shared state\nconst ACTIVE = READ_ACTIVE | WRITE_ACTIVE\nconst NOT_ACTIVE = MAX ^ ACTIVE\nconst DONE = READ_DONE | WRITE_DONE\nconst DESTROY_STATUS = DESTROYING | DESTROYED | PREDESTROYING\nconst OPEN_STATUS = DESTROY_STATUS | OPENING\nconst AUTO_DESTROY = DESTROY_STATUS | DONE\nconst NON_PRIMARY = WRITE_NON_PRIMARY & READ_NON_PRIMARY\nconst ACTIVE_OR_TICKING = WRITE_NEXT_TICK | READ_NEXT_TICK\nconst TICKING = ACTIVE_OR_TICKING & NOT_ACTIVE\nconst IS_OPENING = OPEN_STATUS | TICKING\n\n// Combined shared state and read state\nconst READ_PRIMARY_STATUS = OPEN_STATUS | READ_ENDING | READ_DONE\nconst READ_STATUS = OPEN_STATUS | READ_DONE | READ_QUEUED\nconst READ_ENDING_STATUS = OPEN_STATUS | READ_ENDING | READ_QUEUED\nconst READ_READABLE_STATUS = OPEN_STATUS | READ_EMIT_READABLE | READ_QUEUED | READ_EMITTED_READABLE\nconst SHOULD_NOT_READ =\n OPEN_STATUS | READ_ACTIVE | READ_ENDING | READ_DONE | READ_NEEDS_PUSH | READ_READ_AHEAD\nconst READ_BACKPRESSURE_STATUS = DESTROY_STATUS | READ_ENDING | READ_DONE\nconst READ_UPDATE_SYNC_STATUS = READ_UPDATING | OPEN_STATUS | READ_NEXT_TICK | READ_PRIMARY\nconst READ_NEXT_TICK_OR_OPENING = READ_NEXT_TICK | OPENING\n\n// Combined write state\nconst WRITE_PRIMARY_STATUS = OPEN_STATUS | WRITE_FINISHING | WRITE_DONE\nconst WRITE_QUEUED_AND_UNDRAINED = WRITE_QUEUED | WRITE_UNDRAINED\nconst WRITE_QUEUED_AND_ACTIVE = WRITE_QUEUED | WRITE_ACTIVE\nconst WRITE_DRAIN_STATUS = WRITE_QUEUED | WRITE_UNDRAINED | OPEN_STATUS | WRITE_ACTIVE\nconst WRITE_STATUS = OPEN_STATUS | WRITE_ACTIVE | WRITE_QUEUED | WRITE_CORKED\nconst WRITE_PRIMARY_AND_ACTIVE = WRITE_PRIMARY | WRITE_ACTIVE\nconst WRITE_ACTIVE_AND_WRITING = WRITE_ACTIVE | WRITE_WRITING\nconst WRITE_FINISHING_STATUS = OPEN_STATUS | WRITE_FINISHING | WRITE_QUEUED_AND_ACTIVE | WRITE_DONE\nconst WRITE_BACKPRESSURE_STATUS = WRITE_UNDRAINED | DESTROY_STATUS | WRITE_FINISHING | WRITE_DONE\nconst WRITE_UPDATE_SYNC_STATUS = WRITE_UPDATING | OPEN_STATUS | WRITE_NEXT_TICK | WRITE_PRIMARY\nconst WRITE_DROP_DATA = WRITE_FINISHING | WRITE_DONE | DESTROY_STATUS\n\nconst asyncIterator = Symbol.asyncIterator || Symbol('asyncIterator')\n\nclass WritableState {\n constructor(\n stream,\n { highWaterMark = 16384, map = null, mapWritable, byteLength, byteLengthWritable } = {}\n ) {\n this.stream = stream\n this.queue = new FIFO()\n this.highWaterMark = highWaterMark\n this.buffered = 0\n this.error = null\n this.pipeline = null\n this.drains = null // if we add more seldomly used helpers we might them into a subobject so its a single ptr\n this.byteLength = byteLengthWritable || byteLength || defaultByteLength\n this.map = mapWritable || map\n this.afterWrite = afterWrite.bind(this)\n this.afterUpdateNextTick = updateWriteNT.bind(this)\n }\n\n get ending() {\n return (this.stream._duplexState & WRITE_FINISHING) !== 0\n }\n\n get ended() {\n return (this.stream._duplexState & WRITE_DONE) !== 0\n }\n\n push(data) {\n if ((this.stream._duplexState & WRITE_DROP_DATA) !== 0) return false\n if (this.map !== null) data = this.map(data)\n\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n\n if (this.buffered < this.highWaterMark) {\n this.stream._duplexState |= WRITE_QUEUED\n return true\n }\n\n this.stream._duplexState |= WRITE_QUEUED_AND_UNDRAINED\n return false\n }\n\n shift() {\n const data = this.queue.shift()\n\n this.buffered -= this.byteLength(data)\n if (this.buffered === 0) this.stream._duplexState &= WRITE_NOT_QUEUED\n\n return data\n }\n\n end(data) {\n if (typeof data === 'function') {\n this.stream.once('finish', data)\n } else if (data !== undefined && data !== null) {\n this.push(data)\n }\n\n this.stream._duplexState = (this.stream._duplexState | WRITE_FINISHING) & WRITE_NON_PRIMARY\n }\n\n autoBatch(data, cb) {\n const buffer = []\n const stream = this.stream\n\n buffer.push(data)\n while ((stream._duplexState & WRITE_STATUS) === WRITE_QUEUED_AND_ACTIVE) {\n buffer.push(stream._writableState.shift())\n }\n\n if ((stream._duplexState & OPEN_STATUS) !== 0) return cb(null)\n stream._writev(buffer, cb)\n }\n\n update() {\n const stream = this.stream\n\n stream._duplexState |= WRITE_UPDATING\n\n do {\n while ((stream._duplexState & WRITE_STATUS) === WRITE_QUEUED) {\n const data = this.shift()\n stream._duplexState |= WRITE_ACTIVE_AND_WRITING\n stream._write(data, this.afterWrite)\n }\n\n if ((stream._duplexState & WRITE_PRIMARY_AND_ACTIVE) === 0) this.updateNonPrimary()\n } while (this.continueUpdate() === true)\n\n stream._duplexState &= WRITE_NOT_UPDATING\n }\n\n updateNonPrimary() {\n const stream = this.stream\n\n if ((stream._duplexState & WRITE_FINISHING_STATUS) === WRITE_FINISHING) {\n stream._duplexState = stream._duplexState | WRITE_ACTIVE\n stream._final(afterFinal.bind(this))\n return\n }\n\n if ((stream._duplexState & DESTROY_STATUS) === DESTROYING) {\n if ((stream._duplexState & ACTIVE_OR_TICKING) === 0) {\n stream._duplexState |= ACTIVE\n stream._destroy(afterDestroy.bind(this))\n }\n return\n }\n\n if ((stream._duplexState & IS_OPENING) === OPENING) {\n stream._duplexState = (stream._duplexState | ACTIVE) & NOT_OPENING\n stream._open(afterOpen.bind(this))\n }\n }\n\n continueUpdate() {\n if ((this.stream._duplexState & WRITE_NEXT_TICK) === 0) return false\n this.stream._duplexState &= WRITE_NOT_NEXT_TICK\n return true\n }\n\n updateCallback() {\n if ((this.stream._duplexState & WRITE_UPDATE_SYNC_STATUS) === WRITE_PRIMARY) {\n this.update()\n } else {\n this.updateNextTick()\n }\n }\n\n updateNextTick() {\n if ((this.stream._duplexState & WRITE_NEXT_TICK) !== 0) return\n this.stream._duplexState |= WRITE_NEXT_TICK\n if ((this.stream._duplexState & WRITE_UPDATING) === 0) qmt(this.afterUpdateNextTick)\n }\n}\n\nclass ReadableState {\n constructor(\n stream,\n { highWaterMark = 16384, map = null, mapReadable, byteLength, byteLengthReadable } = {}\n ) {\n this.stream = stream\n this.queue = new FIFO()\n this.highWaterMark = highWaterMark === 0 ? 1 : highWaterMark\n this.buffered = 0\n this.readAhead = highWaterMark > 0\n this.error = null\n this.pipeline = null\n this.byteLength = byteLengthReadable || byteLength || defaultByteLength\n this.map = mapReadable || map\n this.pipeTo = null\n this.afterRead = afterRead.bind(this)\n this.afterUpdateNextTick = updateReadNT.bind(this)\n }\n\n get ending() {\n return (this.stream._duplexState & READ_ENDING) !== 0\n }\n\n get ended() {\n return (this.stream._duplexState & READ_DONE) !== 0\n }\n\n pipe(pipeTo, cb) {\n if (this.pipeTo !== null) throw StreamError.BAD_ARGUMENT('Can only pipe to one destination')\n if (typeof cb !== 'function') cb = null\n\n this.stream._duplexState |= READ_PIPE_DRAINED\n this.pipeTo = pipeTo\n this.pipeline = new Pipeline(this.stream, pipeTo, cb)\n\n if (cb) this.stream.on('error', noop) // We already error handle this so supress crashes\n\n if (isStreamx(pipeTo)) {\n pipeTo._writableState.pipeline = this.pipeline\n if (cb) pipeTo.on('error', noop) // We already error handle this so supress crashes\n pipeTo.on('finish', this.pipeline.finished.bind(this.pipeline)) // TODO: just call finished from pipeTo itself\n } else {\n const onerror = this.pipeline.done.bind(this.pipeline, pipeTo)\n const onclose = this.pipeline.done.bind(this.pipeline, pipeTo, null) // onclose has a weird bool arg\n pipeTo.on('error', onerror)\n pipeTo.on('close', onclose)\n pipeTo.on('finish', this.pipeline.finished.bind(this.pipeline))\n }\n\n pipeTo.on('drain', afterDrain.bind(this))\n this.stream.emit('piping', pipeTo)\n pipeTo.emit('pipe', this.stream)\n }\n\n push(data) {\n const stream = this.stream\n\n if (data === null) {\n this.highWaterMark = 0\n stream._duplexState = (stream._duplexState | READ_ENDING) & READ_NON_PRIMARY_AND_PUSHED\n return false\n }\n\n if (this.map !== null) {\n data = this.map(data)\n if (data === null) {\n stream._duplexState &= READ_PUSHED\n return this.buffered < this.highWaterMark\n }\n }\n\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n\n stream._duplexState = (stream._duplexState | READ_QUEUED) & READ_PUSHED\n\n return this.buffered < this.highWaterMark\n }\n\n shift() {\n const data = this.queue.shift()\n\n this.buffered -= this.byteLength(data)\n if (this.buffered === 0) {\n this.stream._duplexState &= READ_NOT_QUEUED\n }\n\n return data\n }\n\n unshift(data) {\n const pending = [this.map !== null ? this.map(data) : data]\n while (this.buffered > 0) pending.push(this.shift())\n\n for (let i = 0; i < pending.length - 1; i++) {\n const data = pending[i]\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n }\n\n this.push(pending[pending.length - 1])\n }\n\n read() {\n const stream = this.stream\n\n if ((stream._duplexState & READ_STATUS) === READ_QUEUED) {\n const data = this.shift()\n\n if (this.pipeTo !== null && this.pipeTo.write(data) === false) {\n stream._duplexState &= READ_PIPE_NOT_DRAINED\n }\n\n if ((stream._duplexState & READ_EMIT_DATA) !== 0) {\n stream.emit('data', data)\n }\n\n return data\n }\n\n if (this.readAhead === false) {\n stream._duplexState |= READ_READ_AHEAD\n this.updateNextTick()\n }\n\n return null\n }\n\n drain() {\n const stream = this.stream\n\n while (\n (stream._duplexState & READ_STATUS) === READ_QUEUED &&\n (stream._duplexState & READ_FLOWING) !== 0\n ) {\n const data = this.shift()\n\n if (this.pipeTo !== null && this.pipeTo.write(data) === false) {\n stream._duplexState &= READ_PIPE_NOT_DRAINED\n }\n\n if ((stream._duplexState & READ_EMIT_DATA) !== 0) {\n stream.emit('data', data)\n }\n }\n }\n\n update() {\n const stream = this.stream\n\n stream._duplexState |= READ_UPDATING\n\n do {\n this.drain()\n\n while (\n this.buffered < this.highWaterMark &&\n (stream._duplexState & SHOULD_NOT_READ) === READ_READ_AHEAD\n ) {\n stream._duplexState |= READ_ACTIVE_AND_NEEDS_PUSH\n stream._read(this.afterRead)\n this.drain()\n }\n\n if ((stream._duplexState & READ_READABLE_STATUS) === READ_EMIT_READABLE_AND_QUEUED) {\n stream._duplexState |= READ_EMITTED_READABLE\n stream.emit('readable')\n }\n\n if ((stream._duplexState & READ_PRIMARY_AND_ACTIVE) === 0) {\n this.updateNonPrimary()\n }\n } while (this.continueUpdate() === true)\n\n stream._duplexState &= READ_NOT_UPDATING\n }\n\n updateNonPrimary() {\n const stream = this.stream\n\n if ((stream._duplexState & READ_ENDING_STATUS) === READ_ENDING) {\n stream._duplexState = (stream._duplexState | READ_DONE) & READ_NOT_ENDING\n stream.emit('end')\n\n if ((stream._duplexState & AUTO_DESTROY) === DONE) {\n stream._duplexState |= DESTROYING\n }\n\n if (this.pipeTo !== null) {\n this.pipeTo.end()\n }\n }\n\n if ((stream._duplexState & DESTROY_STATUS) === DESTROYING) {\n if ((stream._duplexState & ACTIVE_OR_TICKING) === 0) {\n stream._duplexState |= ACTIVE\n stream._destroy(afterDestroy.bind(this))\n }\n return\n }\n\n if ((stream._duplexState & IS_OPENING) === OPENING) {\n stream._duplexState = (stream._duplexState | ACTIVE) & NOT_OPENING\n stream._open(afterOpen.bind(this))\n }\n }\n\n continueUpdate() {\n if ((this.stream._duplexState & READ_NEXT_TICK) === 0) return false\n this.stream._duplexState &= READ_NOT_NEXT_TICK\n return true\n }\n\n updateCallback() {\n if ((this.stream._duplexState & READ_UPDATE_SYNC_STATUS) === READ_PRIMARY) {\n this.update()\n } else {\n this.updateNextTick()\n }\n }\n\n updateNextTickIfOpen() {\n if ((this.stream._duplexState & READ_NEXT_TICK_OR_OPENING) !== 0) return\n this.stream._duplexState |= READ_NEXT_TICK\n if ((this.stream._duplexState & READ_UPDATING) === 0) qmt(this.afterUpdateNextTick)\n }\n\n updateNextTick() {\n if ((this.stream._duplexState & READ_NEXT_TICK) !== 0) return\n this.stream._duplexState |= READ_NEXT_TICK\n if ((this.stream._duplexState & READ_UPDATING) === 0) qmt(this.afterUpdateNextTick)\n }\n}\n\nclass TransformState {\n constructor(stream) {\n this.data = null\n this.afterTransform = afterTransform.bind(stream)\n this.afterFinal = null\n }\n}\n\nclass Pipeline {\n constructor(src, dst, cb) {\n this.from = src\n this.to = dst\n this.afterPipe = cb\n this.error = null\n this.pipeToFinished = false\n }\n\n finished() {\n this.pipeToFinished = true\n }\n\n done(stream, err) {\n if (err) this.error = err\n\n if (stream === this.to) {\n this.to = null\n\n if (this.from !== null) {\n if ((this.from._duplexState & READ_DONE) === 0 || !this.pipeToFinished) {\n this.from.destroy(this.error || StreamError.PREMATURE_CLOSE('Writable stream closed'))\n }\n return\n }\n }\n\n if (stream === this.from) {\n this.from = null\n\n if (this.to !== null) {\n if ((stream._duplexState & READ_DONE) === 0) {\n this.to.destroy(this.error || StreamError.PREMATURE_CLOSE('Readable stream closed'))\n }\n return\n }\n }\n\n if (this.afterPipe !== null) this.afterPipe(this.error)\n this.to = this.from = this.afterPipe = null\n }\n}\n\nfunction afterDrain() {\n this.stream._duplexState |= READ_PIPE_DRAINED\n this.updateCallback()\n}\n\nfunction afterFinal(err) {\n const stream = this.stream\n if (err) stream.destroy(err)\n\n if ((stream._duplexState & DESTROY_STATUS) === 0) {\n stream._duplexState |= WRITE_DONE\n stream.emit('finish')\n }\n\n if ((stream._duplexState & AUTO_DESTROY) === DONE) {\n stream._duplexState |= DESTROYING\n }\n\n stream._duplexState &= WRITE_NOT_FINISHING\n\n // no need to wait the extra tick here, so we short circuit that\n if ((stream._duplexState & WRITE_UPDATING) === 0) {\n this.update()\n } else {\n this.updateNextTick()\n }\n}\n\nfunction afterDestroy(err) {\n const stream = this.stream\n\n if (!err && !StreamError.isStreamDestroyed(this.error)) err = this.error\n if (err) stream.emit('error', err)\n\n stream._duplexState |= DESTROYED\n stream.emit('close')\n\n const rs = stream._readableState\n const ws = stream._writableState\n\n if (rs !== null && rs.pipeline !== null) {\n rs.pipeline.done(stream, err)\n }\n\n if (ws !== null) {\n while (ws.drains !== null && ws.drains.length > 0) {\n ws.drains.shift().resolve(false)\n }\n\n if (ws.pipeline !== null) {\n ws.pipeline.done(stream, err)\n }\n }\n}\n\nfunction afterWrite(err) {\n const stream = this.stream\n\n if (err) stream.destroy(err)\n stream._duplexState &= WRITE_NOT_ACTIVE\n\n if (this.drains !== null) tickDrains(this.drains)\n\n if ((stream._duplexState & WRITE_DRAIN_STATUS) === WRITE_UNDRAINED) {\n stream._duplexState &= WRITE_DRAINED\n\n if ((stream._duplexState & WRITE_EMIT_DRAIN) === WRITE_EMIT_DRAIN) {\n stream.emit('drain')\n }\n }\n\n this.updateCallback()\n}\n\nfunction afterRead(err) {\n if (err) this.stream.destroy(err)\n this.stream._duplexState &= READ_NOT_ACTIVE\n\n if (this.readAhead === false && (this.stream._duplexState & READ_RESUMED) === 0) {\n this.stream._duplexState &= READ_NO_READ_AHEAD\n }\n\n this.updateCallback()\n}\n\nfunction updateReadNT() {\n if ((this.stream._duplexState & READ_UPDATING) === 0) {\n this.stream._duplexState &= READ_NOT_NEXT_TICK\n this.update()\n }\n}\n\nfunction updateWriteNT() {\n if ((this.stream._duplexState & WRITE_UPDATING) === 0) {\n this.stream._duplexState &= WRITE_NOT_NEXT_TICK\n this.update()\n }\n}\n\nfunction tickDrains(drains) {\n for (let i = 0; i < drains.length; i++) {\n // drains.writes are monotonic, so if one is 0 its always the first one\n if (--drains[i].writes === 0) {\n drains.shift().resolve(true)\n i--\n }\n }\n}\n\nfunction afterOpen(err) {\n const stream = this.stream\n\n if (err) stream.destroy(err)\n\n if ((stream._duplexState & DESTROYING) === 0) {\n if ((stream._duplexState & READ_PRIMARY_STATUS) === 0) {\n stream._duplexState |= READ_PRIMARY\n }\n\n if ((stream._duplexState & WRITE_PRIMARY_STATUS) === 0) {\n stream._duplexState |= WRITE_PRIMARY\n }\n\n stream.emit('open')\n }\n\n stream._duplexState &= NOT_ACTIVE\n\n if (stream._writableState !== null) {\n stream._writableState.updateCallback()\n }\n\n if (stream._readableState !== null) {\n stream._readableState.updateCallback()\n }\n}\n\nfunction afterTransform(err, data) {\n if (data !== undefined && data !== null) this.push(data)\n this._writableState.afterWrite(err)\n}\n\nfunction newListener(name) {\n if (this._readableState !== null) {\n if (name === 'data') {\n this._duplexState |= READ_EMIT_DATA | READ_RESUMED_READ_AHEAD\n this._readableState.updateNextTick()\n }\n if (name === 'readable') {\n this._duplexState |= READ_EMIT_READABLE\n this._readableState.updateNextTick()\n }\n }\n\n if (this._writableState !== null) {\n if (name === 'drain') {\n this._duplexState |= WRITE_EMIT_DRAIN\n this._writableState.updateNextTick()\n }\n }\n}\n\nclass Stream extends EventEmitter {\n constructor(opts) {\n super()\n\n this._duplexState = 0\n this._readableState = null\n this._writableState = null\n\n if (opts) {\n if (opts.open) this._open = opts.open\n if (opts.destroy) this._destroy = opts.destroy\n if (opts.predestroy) this._predestroy = opts.predestroy\n if (opts.signal) opts.signal.addEventListener('abort', abort.bind(this))\n }\n\n this.on('newListener', newListener)\n }\n\n _open(cb) {\n cb(null)\n }\n\n _destroy(cb) {\n cb(null)\n }\n\n _predestroy() {\n // does nothing\n }\n\n get readable() {\n return this._readableState !== null ? true : undefined\n }\n\n get writable() {\n return this._writableState !== null ? true : undefined\n }\n\n get destroyed() {\n return (this._duplexState & DESTROYED) !== 0\n }\n\n get destroying() {\n return (this._duplexState & DESTROY_STATUS) !== 0\n }\n\n destroy(err) {\n if ((this._duplexState & DESTROY_STATUS) === 0) {\n if (!err) err = StreamError.STREAM_DESTROYED()\n this._duplexState = (this._duplexState | DESTROYING) & NON_PRIMARY\n\n if (this._readableState !== null) {\n this._readableState.highWaterMark = 0\n this._readableState.error = err\n }\n\n if (this._writableState !== null) {\n this._writableState.highWaterMark = 0\n this._writableState.error = err\n }\n\n this._duplexState |= PREDESTROYING\n this._predestroy()\n this._duplexState &= NOT_PREDESTROYING\n\n if (this._readableState !== null) {\n this._readableState.updateNextTick()\n }\n\n if (this._writableState !== null) {\n this._writableState.updateNextTick()\n }\n }\n }\n}\n\nclass Readable extends Stream {\n constructor(opts) {\n super(opts)\n\n this._duplexState |= OPENING | WRITE_DONE | READ_READ_AHEAD\n this._readableState = new ReadableState(this, opts)\n\n if (opts) {\n if (this._readableState.readAhead === false) this._duplexState &= READ_NO_READ_AHEAD\n if (opts.read) this._read = opts.read\n if (opts.eagerOpen) this._readableState.updateNextTick()\n if (opts.encoding) this.setEncoding(opts.encoding)\n }\n }\n\n static deferred(fn, opts) {\n const out = new PassThrough(opts)\n\n fn()\n .then((src) => {\n if (src === null) return out.end()\n if (out.destroying) return\n pipeline(src, out, noop)\n })\n .catch((err) => out.destroy(err))\n\n return out\n }\n\n setEncoding(encoding) {\n const dec = new TextDecoder(encoding)\n const map = this._readableState.map || echo\n this._readableState.map = mapOrSkip\n return this\n\n function mapOrSkip(data) {\n const next = dec.push(data)\n return next === '' && (data.byteLength !== 0 || dec.remaining > 0) ? null : map(next)\n }\n }\n\n _read(cb) {\n cb(null)\n }\n\n pipe(dest, cb) {\n this._readableState.updateNextTick()\n this._readableState.pipe(dest, cb)\n return dest\n }\n\n read() {\n this._readableState.updateNextTick()\n return this._readableState.read()\n }\n\n push(data) {\n this._readableState.updateNextTickIfOpen()\n return this._readableState.push(data)\n }\n\n unshift(data) {\n this._readableState.updateNextTickIfOpen()\n return this._readableState.unshift(data)\n }\n\n resume() {\n this._duplexState |= READ_RESUMED_READ_AHEAD\n this._readableState.updateNextTick()\n return this\n }\n\n pause() {\n this._duplexState &=\n this._readableState.readAhead === false ? READ_PAUSED_NO_READ_AHEAD : READ_PAUSED\n return this\n }\n\n static _fromAsyncIterator(ite, opts) {\n let destroy\n\n const rs = new Readable({\n ...opts,\n read(cb) {\n ite.next().then(push).then(cb.bind(null, null)).catch(cb)\n },\n predestroy() {\n destroy = ite.return()\n },\n destroy(cb) {\n if (!destroy) return cb(null)\n destroy.then(cb.bind(null, null)).catch(cb)\n }\n })\n\n return rs\n\n function push(data) {\n if (data.done) rs.push(null)\n else rs.push(data.value)\n }\n }\n\n static from(data, opts) {\n if (isReadStreamx(data)) return data\n if (data[asyncIterator]) return this._fromAsyncIterator(data[asyncIterator](), opts)\n if (!Array.isArray(data)) data = data === undefined ? [] : [data]\n\n let i = 0\n return new Readable({\n ...opts,\n read(cb) {\n this.push(i === data.length ? null : data[i++])\n cb(null)\n }\n })\n }\n\n static isBackpressured(rs) {\n return (\n (rs._duplexState & READ_BACKPRESSURE_STATUS) !== 0 ||\n rs._readableState.buffered >= rs._readableState.highWaterMark\n )\n }\n\n static isPaused(rs) {\n return (rs._duplexState & READ_RESUMED) === 0\n }\n\n [asyncIterator]() {\n const stream = this\n\n let error = null\n let promiseResolve = null\n let promiseReject = null\n\n this.on('error', (err) => {\n error = err\n })\n this.on('readable', onreadable)\n this.on('close', onclose)\n\n return {\n [asyncIterator]() {\n return this\n },\n next() {\n return new Promise(function (resolve, reject) {\n promiseResolve = resolve\n promiseReject = reject\n const data = stream.read()\n if (data !== null) ondata(data)\n else if ((stream._duplexState & DESTROYED) !== 0) ondata(null)\n })\n },\n return() {\n return destroy(null)\n },\n throw(err) {\n return destroy(err)\n }\n }\n\n function onreadable() {\n if (promiseResolve !== null) ondata(stream.read())\n }\n\n function onclose() {\n if (promiseResolve !== null) ondata(null)\n }\n\n function ondata(data) {\n if (promiseReject === null) return\n if (error) {\n promiseReject(error)\n } else if (data === null && (stream._duplexState & READ_DONE) === 0) {\n promiseReject(StreamError.STREAM_DESTROYED())\n } else {\n promiseResolve({ value: data, done: data === null })\n }\n promiseReject = promiseResolve = null\n }\n\n function destroy(err) {\n stream.destroy(err)\n return new Promise((resolve, reject) => {\n if (stream._duplexState & DESTROYED) return resolve({ value: undefined, done: true })\n stream.once('close', function () {\n if (err) reject(err)\n else resolve({ value: undefined, done: true })\n })\n })\n }\n }\n}\n\nclass Writable extends Stream {\n constructor(opts) {\n super(opts)\n\n this._duplexState |= OPENING | READ_DONE\n this._writableState = new WritableState(this, opts)\n\n if (opts) {\n if (opts.writev) this._writev = opts.writev\n if (opts.write) this._write = opts.write\n if (opts.final) this._final = opts.final\n if (opts.eagerOpen) this._writableState.updateNextTick()\n }\n }\n\n cork() {\n this._duplexState |= WRITE_CORKED\n }\n\n uncork() {\n this._duplexState &= WRITE_NOT_CORKED\n this._writableState.updateNextTick()\n }\n\n _writev(batch, cb) {\n cb(null)\n }\n\n _write(data, cb) {\n this._writableState.autoBatch(data, cb)\n }\n\n _final(cb) {\n cb(null)\n }\n\n static isBackpressured(ws) {\n return (ws._duplexState & WRITE_BACKPRESSURE_STATUS) !== 0\n }\n\n static drained(ws) {\n if (ws.destroyed) return Promise.resolve(false)\n\n const state = ws._writableState\n const pending = isWritev(ws) ? Math.min(1, state.queue.length) : state.queue.length\n const writes = pending + (ws._duplexState & WRITE_WRITING ? 1 : 0)\n if (writes === 0) return Promise.resolve(true)\n\n if (state.drains === null) state.drains = []\n return new Promise((resolve) => {\n state.drains.push({ writes, resolve })\n })\n }\n\n write(data) {\n this._writableState.updateNextTick()\n return this._writableState.push(data)\n }\n\n end(data) {\n this._writableState.updateNextTick()\n this._writableState.end(data)\n return this\n }\n}\n\nclass Duplex extends Readable {\n // and Writable\n constructor(opts) {\n super(opts)\n\n this._duplexState = OPENING | (this._duplexState & READ_READ_AHEAD)\n this._writableState = new WritableState(this, opts)\n\n if (opts) {\n if (opts.writev) this._writev = opts.writev\n if (opts.write) this._write = opts.write\n if (opts.final) this._final = opts.final\n }\n }\n\n cork() {\n this._duplexState |= WRITE_CORKED\n }\n\n uncork() {\n this._duplexState &= WRITE_NOT_CORKED\n this._writableState.updateNextTick()\n }\n\n _writev(batch, cb) {\n cb(null)\n }\n\n _write(data, cb) {\n this._writableState.autoBatch(data, cb)\n }\n\n _final(cb) {\n cb(null)\n }\n\n write(data) {\n this._writableState.updateNextTick()\n return this._writableState.push(data)\n }\n\n end(data) {\n this._writableState.updateNextTick()\n this._writableState.end(data)\n return this\n }\n}\n\nclass Transform extends Duplex {\n constructor(opts) {\n super(opts)\n this._transformState = new TransformState(this)\n\n if (opts) {\n if (opts.transform) this._transform = opts.transform\n if (opts.flush) this._flush = opts.flush\n }\n }\n\n _write(data, cb) {\n if (this._readableState.buffered >= this._readableState.highWaterMark) {\n this._transformState.data = data\n } else {\n this._transform(data, this._transformState.afterTransform)\n }\n }\n\n _read(cb) {\n if (this._transformState.data !== null) {\n const data = this._transformState.data\n this._transformState.data = null\n cb(null)\n this._transform(data, this._transformState.afterTransform)\n } else {\n cb(null)\n }\n }\n\n destroy(err) {\n super.destroy(err)\n if (this._transformState.data !== null) {\n this._transformState.data = null\n this._transformState.afterTransform()\n }\n }\n\n _transform(data, cb) {\n cb(null, data)\n }\n\n _flush(cb) {\n cb(null)\n }\n\n _final(cb) {\n this._transformState.afterFinal = cb\n this._flush(transformAfterFlush.bind(this))\n }\n}\n\nclass PassThrough extends Transform {}\n\nfunction transformAfterFlush(err, data) {\n const cb = this._transformState.afterFinal\n if (err) return cb(err)\n\n if (data !== null && data !== undefined) this.push(data)\n this.push(null)\n cb(null)\n}\n\nfunction pipelinePromise(...streams) {\n return new Promise((resolve, reject) => {\n return pipeline(...streams, (err) => {\n if (err) return reject(err)\n resolve()\n })\n })\n}\n\nfunction pipeline(stream, ...streams) {\n const all = Array.isArray(stream) ? [...stream, ...streams] : [stream, ...streams]\n const done = all.length && typeof all[all.length - 1] === 'function' ? all.pop() : null\n\n if (all.length < 2) throw StreamError.BAD_ARGUMENT('Pipeline requires at least 2 streams')\n\n let src = all[0]\n let dest = null\n let error = null\n\n for (let i = 1; i < all.length; i++) {\n dest = all[i]\n\n if (isStreamx(src)) {\n src.pipe(dest, onerror)\n } else {\n errorHandle(src, true, i > 1, onerror)\n src.pipe(dest)\n }\n\n src = dest\n }\n\n if (done) {\n let fin = false\n\n const autoDestroy =\n isStreamx(dest) || !!(dest._writableState && dest._writableState.autoDestroy)\n\n dest.on('error', (err) => {\n if (error === null) error = err\n })\n\n dest.on('finish', () => {\n fin = true\n if (!autoDestroy) done(error)\n })\n\n if (autoDestroy) {\n dest.on('close', () => done(error || (fin ? null : StreamError.PREMATURE_CLOSE())))\n }\n }\n\n return dest\n\n function errorHandle(s, rd, wr, onerror) {\n s.on('error', onerror)\n s.on('close', onclose)\n\n function onclose() {\n if (rd && s._readableState && !s._readableState.ended) {\n return onerror(StreamError.PREMATURE_CLOSE())\n }\n if (wr && s._writableState && !s._writableState.ended) {\n return onerror(StreamError.PREMATURE_CLOSE())\n }\n }\n }\n\n function onerror(err) {\n if (!err || error) return\n error = err\n\n for (const s of all) {\n s.destroy(err)\n }\n }\n}\n\nfunction echo(s) {\n return s\n}\n\nfunction isStream(stream) {\n return !!stream._readableState || !!stream._writableState\n}\n\nfunction isStreamx(stream) {\n return typeof stream._duplexState === 'number' && isStream(stream)\n}\n\nfunction isEnding(stream) {\n return !!stream._readableState && stream._readableState.ending\n}\n\nfunction isEnded(stream) {\n return !!stream._readableState && stream._readableState.ended\n}\n\nfunction isFinishing(stream) {\n return !!stream._writableState && stream._writableState.ending\n}\n\nfunction isFinished(stream) {\n return !!stream._writableState && stream._writableState.ended\n}\n\nfunction getStreamError(stream, opts = {}) {\n const err =\n (stream._readableState && stream._readableState.error) ||\n (stream._writableState && stream._writableState.error)\n\n // avoid implicit errors by default\n return !opts.all && StreamError.isStreamDestroyed(err) ? null : err\n}\n\nfunction isReadStreamx(stream) {\n return isStreamx(stream) && stream.readable\n}\n\nfunction isDisturbed(stream) {\n return (\n (stream._duplexState & OPENING) !== OPENING ||\n (stream._duplexState & DESTROYING) === DESTROYING ||\n (stream._duplexState & ACTIVE_OR_TICKING) !== 0\n )\n}\n\nfunction isTypedArray(data) {\n return typeof data === 'object' && data !== null && typeof data.byteLength === 'number'\n}\n\nfunction defaultByteLength(data) {\n return isTypedArray(data) ? data.byteLength : 1024\n}\n\nfunction noop() {}\n\nfunction abort() {\n this.destroy(StreamError.ABORTED())\n}\n\nfunction isWritev(s) {\n return s._writev !== Writable.prototype._writev && s._writev !== Duplex.prototype._writev\n}\n\nmodule.exports = {\n pipeline,\n pipelinePromise,\n isStream,\n isStreamx,\n isEnding,\n isEnded,\n isFinishing,\n isFinished,\n isDisturbed,\n getStreamError,\n Stream,\n Writable,\n Readable,\n Duplex,\n Transform,\n // Export PassThrough for compatibility with Node.js core's stream module\n PassThrough\n}\nmodule.exports = class StreamError extends Error {\n constructor(msg, code, fn = StreamError) {\n super(msg)\n\n this.code = code\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, fn)\n }\n }\n\n static isStreamDestroyed(err) {\n return err && err.code === 'STREAM_DESTROYED'\n }\n\n static isPrematureClose(err) {\n return err && err.code === 'PREMATURE_CLOSE'\n }\n\n static isAborted(err) {\n return err && err.code === 'ABORTED'\n }\n\n static isBadArgument(err) {\n return err && err.code === 'BAD_ARGUMENT'\n }\n\n get name() {\n return 'StreamError'\n }\n\n static STREAM_DESTROYED() {\n return new StreamError('Stream was destroyed', 'STREAM_DESTROYED', StreamError.STREAM_DESTROYED)\n }\n\n static PREMATURE_CLOSE(msg = 'Premature close') {\n return new StreamError(msg, 'PREMATURE_CLOSE', StreamError.PREMATURE_CLOSE)\n }\n\n static ABORTED() {\n return new StreamError('Stream aborted', 'ABORTED', StreamError.ABORTED)\n }\n\n static BAD_ARGUMENT(msg = 'Bad argument') {\n return new StreamError(msg, 'BAD_ARGUMENT', StreamError.BAD_ARGUMENT)\n }\n}\n{\n \"name\": \"streamx\",\n \"version\": \"2.28.0\",\n \"description\": \"An iteration of the Node.js core streams with a series of improvements\",\n \"main\": \"index.js\",\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"default\": \"./index.js\"\n },\n \"./package\": \"./package.json\",\n \"./errors\": {\n \"types\": \"./lib/errors.d.ts\",\n \"default\": \"./lib/errors\"\n }\n },\n \"dependencies\": {\n \"events-universal\": \"^1.0.0\",\n \"fast-fifo\": \"^1.3.2\",\n \"text-decoder\": \"^1.1.0\"\n },\n \"devDependencies\": {\n \"b4a\": \"^1.6.6\",\n \"brittle\": \"^3.1.1\",\n \"end-of-stream\": \"^1.4.4\",\n \"lunte\": \"^1.8.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n },\n \"files\": [\n \"index.js\",\n \"index.d.ts\",\n \"runtime.d.ts\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier . --write\",\n \"test\": \"brittle test/all.js && brittle-bare test/all.js\",\n \"lint\": \"prettier . --check && lunte\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/streamx.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/streamx/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/streamx\"\n}\nconst codecs = require('codecs')\nconst b = require('b4a')\n\nconst SEP = b.alloc(1)\nconst SEP_BUMPED = b.from([0x1])\nconst EMPTY = b.alloc(0)\n\nmodule.exports = class SubEncoder {\n constructor (prefix, encoding, parent = null) {\n this.userEncoding = codecs(encoding)\n this.prefix = prefix != null ? createPrefix(prefix, parent) : null\n this.lt = this.prefix && b.concat([this.prefix.subarray(0, this.prefix.byteLength - 1), SEP_BUMPED])\n }\n\n _encodeRangeUser (r) {\n if (this.userEncoding.encodeRange) return this.userEncoding.encodeRange(r)\n\n const res = {}\n if (r.gt != null) res.gt = this.userEncoding.encode(r.gt)\n if (r.gte != null) res.gte = this.userEncoding.encode(r.gte)\n if (r.lte != null) res.lte = this.userEncoding.encode(r.lte)\n if (r.lt != null) res.lt = this.userEncoding.encode(r.lt)\n\n return res\n }\n\n _addPrefix (key) {\n return this.prefix ? b.concat([this.prefix, key]) : key\n }\n\n encode (key) {\n return this._addPrefix(this.userEncoding.encode(key))\n }\n\n encodeRange (range) {\n const r = this._encodeRangeUser(range)\n\n if (r.gt) r.gt = this._addPrefix(r.gt)\n else if (r.gte) r.gte = this._addPrefix(r.gte)\n else if (this.prefix) r.gte = this.prefix\n\n if (r.lt) r.lt = this._addPrefix(r.lt)\n else if (r.lte) r.lte = this._addPrefix(r.lte)\n else if (this.prefix) r.lt = this.lt\n\n return r\n }\n\n decode (key) {\n return this.userEncoding.decode(this.prefix ? key.subarray(this.prefix.byteLength) : key)\n }\n\n sub (prefix, encoding) {\n return new SubEncoder(prefix || EMPTY, compat(encoding), this.prefix)\n }\n}\n\nfunction createPrefix (prefix, parent) {\n prefix = typeof prefix === 'string' ? b.from(prefix) : prefix\n\n if (prefix && parent) return b.concat([parent, prefix, SEP])\n if (prefix) return b.concat([prefix, SEP])\n if (parent) return b.concat([parent, SEP])\n return SEP\n}\n\nfunction compat (enc) {\n if (enc && enc.keyEncoding) return enc.keyEncoding\n return enc\n}\n{\n \"name\": \"sub-encoder\",\n \"version\": \"2.1.3\",\n \"description\": \"Generate sub encodings for key/value stores\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"standard && brittle test/*.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/sub-encoder.git\"\n },\n \"keywords\": [\n \"kv-store\",\n \"encoding\",\n \"hyperbee\"\n ],\n \"author\": \"Andrew Osheroff \",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/sub-encoder/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/sub-encoder#readme\",\n \"devDependencies\": {\n \"brittle\": \"^3.1.1\",\n \"compact-encoding\": \"^2.12.0\",\n \"hyperbee\": \"^2.11.0\",\n \"hypercore\": \"^10.3.2\",\n \"index-encoder\": \"^3.0.0\",\n \"random-access-memory\": \"^6.0.0\",\n \"standard\": \"^17.0.0\"\n },\n \"dependencies\": {\n \"b4a\": \"^1.6.0\",\n \"codecs\": \"^3.1.0\"\n }\n}\nconst constants = { // just for envs without fs\n S_IFMT: 61440,\n S_IFDIR: 16384,\n S_IFCHR: 8192,\n S_IFBLK: 24576,\n S_IFIFO: 4096,\n S_IFLNK: 40960\n}\n\ntry {\n module.exports = require('fs').constants || constants\n} catch {\n module.exports = constants\n}\nconst { Writable, Readable, getStreamError } = require('streamx')\nconst FIFO = require('fast-fifo')\nconst b4a = require('b4a')\nconst headers = require('./headers')\n\nconst EMPTY = b4a.alloc(0)\nconst MAX_HEADER_SIZE = 4 * 1024 * 1024 // arbitrary big number\n\nclass BufferList {\n constructor () {\n this.buffered = 0\n this.shifted = 0\n this.queue = new FIFO()\n\n this._offset = 0\n }\n\n push (buffer) {\n this.buffered += buffer.byteLength\n this.queue.push(buffer)\n }\n\n shiftFirst (size) {\n return this.buffered === 0 ? null : this._next(size)\n }\n\n shift (size) {\n if (size > this.buffered) return null\n if (size === 0) return EMPTY\n\n let chunk = this._next(size)\n\n if (size === chunk.byteLength) return chunk // likely case\n\n const chunks = [chunk]\n\n while ((size -= chunk.byteLength) > 0) {\n chunk = this._next(size)\n chunks.push(chunk)\n }\n\n return b4a.concat(chunks)\n }\n\n _next (size) {\n const buf = this.queue.peek()\n const rem = buf.byteLength - this._offset\n\n if (size >= rem) {\n const sub = this._offset ? buf.subarray(this._offset, buf.byteLength) : buf\n this.queue.shift()\n this._offset = 0\n this.buffered -= rem\n this.shifted += rem\n return sub\n }\n\n this.buffered -= size\n this.shifted += size\n\n return buf.subarray(this._offset, (this._offset += size))\n }\n}\n\nclass Source extends Readable {\n constructor (self, header, offset) {\n super()\n\n this.header = header\n this.offset = offset\n\n this._parent = self\n }\n\n _read (cb) {\n if (this.header.size === 0) {\n this.push(null)\n }\n if (this._parent._stream === this) {\n this._parent._update()\n }\n cb(null)\n }\n\n _predestroy () {\n this._parent.destroy(getStreamError(this))\n }\n\n _detach () {\n if (this._parent._stream === this) {\n this._parent._stream = null\n this._parent._missing = overflow(this.header.size)\n this._parent._update()\n }\n }\n\n _destroy (cb) {\n this._detach()\n cb(null)\n }\n}\n\nclass Extract extends Writable {\n constructor (opts) {\n super(opts)\n\n if (!opts) opts = {}\n\n this._buffer = new BufferList()\n this._offset = 0\n this._header = null\n this._stream = null\n this._missing = 0\n this._longHeader = false\n this._callback = noop\n this._locked = false\n this._finished = false\n this._pax = null\n this._paxGlobal = null\n this._gnuLongPath = null\n this._gnuLongLinkPath = null\n this._filenameEncoding = opts.filenameEncoding || 'utf-8'\n this._allowUnknownFormat = !!opts.allowUnknownFormat\n this._unlockBound = this._unlock.bind(this)\n }\n\n _unlock (err) {\n this._locked = false\n\n if (err) {\n this.destroy(err)\n this._continueWrite(err)\n return\n }\n\n this._update()\n }\n\n _consumeHeader () {\n if (this._locked) return false\n\n this._offset = this._buffer.shifted\n\n try {\n this._header = headers.decode(this._buffer.shift(512), this._filenameEncoding, this._allowUnknownFormat)\n } catch (err) {\n this._continueWrite(err)\n return false\n }\n\n if (!this._header) return true\n\n this._header.byteOffset = this._buffer.shifted\n\n switch (this._header.type) {\n case 'gnu-long-path':\n case 'gnu-long-link-path':\n case 'pax-global-header':\n case 'pax-header':\n this._longHeader = true\n this._missing = this._header.size\n if (this._missing > MAX_HEADER_SIZE) {\n this._continueWrite(new Error('Header exceeds max size'))\n return false\n }\n return true\n }\n\n this._locked = true\n this._applyLongHeaders()\n\n if (!(this._header.size >= 0)) {\n this._continueWrite(new Error('Invalid header'))\n return false\n }\n\n if (this._header.size === 0 || this._header.type === 'directory') {\n this.emit('entry', this._header, this._createStream(), this._unlockBound)\n return true\n }\n\n this._stream = this._createStream()\n this._missing = this._header.size\n\n this.emit('entry', this._header, this._stream, this._unlockBound)\n return true\n }\n\n _applyLongHeaders () {\n if (this._gnuLongPath) {\n this._header.name = this._gnuLongPath\n this._gnuLongPath = null\n }\n\n if (this._gnuLongLinkPath) {\n this._header.linkname = this._gnuLongLinkPath\n this._gnuLongLinkPath = null\n }\n\n if (this._pax) {\n if (this._pax.path) this._header.name = this._pax.path\n if (this._pax.linkpath) this._header.linkname = this._pax.linkpath\n if (this._pax.size) this._header.size = parseInt(this._pax.size, 10)\n this._header.pax = this._pax\n this._pax = null\n }\n }\n\n _decodeLongHeader (buf) {\n switch (this._header.type) {\n case 'gnu-long-path':\n this._gnuLongPath = headers.decodeLongPath(buf, this._filenameEncoding)\n break\n case 'gnu-long-link-path':\n this._gnuLongLinkPath = headers.decodeLongPath(buf, this._filenameEncoding)\n break\n case 'pax-global-header':\n this._paxGlobal = headers.decodePax(buf)\n break\n case 'pax-header':\n this._pax = this._paxGlobal === null\n ? headers.decodePax(buf)\n : Object.assign({}, this._paxGlobal, headers.decodePax(buf))\n break\n }\n }\n\n _consumeLongHeader () {\n this._longHeader = false\n this._missing = overflow(this._header.size)\n\n const buf = this._buffer.shift(this._header.size)\n\n try {\n this._decodeLongHeader(buf)\n } catch (err) {\n this._continueWrite(err)\n return false\n }\n\n return true\n }\n\n _consumeStream () {\n const buf = this._buffer.shiftFirst(this._missing)\n if (buf === null) return false\n\n this._missing -= buf.byteLength\n const drained = this._stream.push(buf)\n\n if (this._missing === 0) {\n this._stream.push(null)\n if (drained) this._stream._detach()\n return drained && this._locked === false\n }\n\n return drained\n }\n\n _createStream () {\n return new Source(this, this._header, this._offset)\n }\n\n _update () {\n while (this._buffer.buffered > 0 && !this.destroying) {\n if (this._missing > 0) {\n if (this._stream !== null) {\n if (this._consumeStream() === false) return\n continue\n }\n\n if (this._longHeader === true) {\n if (this._missing > this._buffer.buffered) break\n if (this._consumeLongHeader() === false) return false\n continue\n }\n\n const ignore = this._buffer.shiftFirst(this._missing)\n if (ignore !== null) this._missing -= ignore.byteLength\n continue\n }\n\n if (this._buffer.buffered < 512) break\n if (this._stream !== null || this._consumeHeader() === false) return\n }\n\n this._continueWrite(null)\n }\n\n _continueWrite (err) {\n const cb = this._callback\n this._callback = noop\n cb(err)\n }\n\n _write (data, cb) {\n this._callback = cb\n this._buffer.push(data)\n this._update()\n }\n\n _final (cb) {\n this._finished = this._missing === 0 && this._buffer.buffered === 0\n cb(this._finished ? null : new Error('Unexpected end of data'))\n }\n\n _predestroy () {\n this._continueWrite(null)\n }\n\n _destroy (cb) {\n if (this._stream) this._stream.destroy(getStreamError(this))\n cb(null)\n }\n\n [Symbol.asyncIterator] () {\n let error = null\n\n let promiseResolve = null\n let promiseReject = null\n\n let entryStream = null\n let entryCallback = null\n\n const extract = this\n\n this.on('entry', onentry)\n this.on('error', (err) => { error = err })\n this.on('close', onclose)\n\n return {\n [Symbol.asyncIterator] () {\n return this\n },\n next () {\n return new Promise(onnext)\n },\n return () {\n return destroy(null)\n },\n throw (err) {\n return destroy(err)\n }\n }\n\n function consumeCallback (err) {\n if (!entryCallback) return\n const cb = entryCallback\n entryCallback = null\n cb(err)\n }\n\n function onnext (resolve, reject) {\n if (error) {\n return reject(error)\n }\n\n if (entryStream) {\n resolve({ value: entryStream, done: false })\n entryStream = null\n return\n }\n\n promiseResolve = resolve\n promiseReject = reject\n\n consumeCallback(null)\n\n if (extract._finished && promiseResolve) {\n promiseResolve({ value: undefined, done: true })\n promiseResolve = promiseReject = null\n }\n }\n\n function onentry (header, stream, callback) {\n entryCallback = callback\n stream.on('error', noop) // no way around this due to tick sillyness\n\n if (promiseResolve) {\n promiseResolve({ value: stream, done: false })\n promiseResolve = promiseReject = null\n } else {\n entryStream = stream\n }\n }\n\n function onclose () {\n consumeCallback(error)\n if (!promiseResolve) return\n if (error) promiseReject(error)\n else promiseResolve({ value: undefined, done: true })\n promiseResolve = promiseReject = null\n }\n\n function destroy (err) {\n extract.destroy(err)\n consumeCallback(err)\n return new Promise((resolve, reject) => {\n if (extract.destroyed) return resolve({ value: undefined, done: true })\n extract.once('close', function () {\n if (err) reject(err)\n else resolve({ value: undefined, done: true })\n })\n })\n }\n }\n}\n\nmodule.exports = function extract (opts) {\n return new Extract(opts)\n}\n\nfunction noop () {}\n\nfunction overflow (size) {\n size &= 511\n return size && 512 - size\n}\nconst b4a = require('b4a')\n\nconst ZEROS = '0000000000000000000'\nconst SEVENS = '7777777777777777777'\nconst ZERO_OFFSET = '0'.charCodeAt(0)\nconst USTAR_MAGIC = b4a.from([0x75, 0x73, 0x74, 0x61, 0x72, 0x00]) // ustar\\x00\nconst USTAR_VER = b4a.from([ZERO_OFFSET, ZERO_OFFSET])\nconst GNU_MAGIC = b4a.from([0x75, 0x73, 0x74, 0x61, 0x72, 0x20]) // ustar\\x20\nconst GNU_VER = b4a.from([0x20, 0x00])\nconst MASK = 0o7777\nconst MAGIC_OFFSET = 257\nconst VERSION_OFFSET = 263\n\nexports.decodeLongPath = function decodeLongPath (buf, encoding) {\n return decodeStr(buf, 0, buf.length, encoding)\n}\n\nexports.encodePax = function encodePax (opts) { // TODO: encode more stuff in pax\n let result = ''\n if (opts.name) result += addLength(' path=' + opts.name + '\\n')\n if (opts.linkname) result += addLength(' linkpath=' + opts.linkname + '\\n')\n const pax = opts.pax\n if (pax) {\n for (const key in pax) {\n result += addLength(' ' + key + '=' + pax[key] + '\\n')\n }\n }\n return b4a.from(result)\n}\n\nexports.decodePax = function decodePax (buf) {\n const result = {}\n\n while (buf.length) {\n let i = 0\n while (i < buf.length && buf[i] !== 32) i++\n const len = parseInt(b4a.toString(buf.subarray(0, i)), 10)\n if (!len) return result\n\n const b = b4a.toString(buf.subarray(i + 1, len - 1))\n const keyIndex = b.indexOf('=')\n if (keyIndex === -1) return result\n result[b.slice(0, keyIndex)] = b.slice(keyIndex + 1)\n\n buf = buf.subarray(len)\n }\n\n return result\n}\n\nexports.encode = function encode (opts) {\n const buf = b4a.alloc(512)\n let name = opts.name\n let prefix = ''\n\n if (opts.typeflag === 5 && name[name.length - 1] !== '/') name += '/'\n if (b4a.byteLength(name) !== name.length) return null // utf-8\n\n while (b4a.byteLength(name) > 100) {\n const i = name.indexOf('/')\n if (i === -1) return null\n prefix += prefix ? '/' + name.slice(0, i) : name.slice(0, i)\n name = name.slice(i + 1)\n }\n\n if (b4a.byteLength(name) > 100 || b4a.byteLength(prefix) > 155) return null\n if (opts.linkname && b4a.byteLength(opts.linkname) > 100) return null\n\n b4a.write(buf, name)\n b4a.write(buf, encodeOct(opts.mode & MASK, 6), 100)\n b4a.write(buf, encodeOct(opts.uid, 6), 108)\n b4a.write(buf, encodeOct(opts.gid, 6), 116)\n encodeSize(opts.size, buf, 124)\n b4a.write(buf, encodeOct((opts.mtime.getTime() / 1000) | 0, 11), 136)\n\n buf[156] = ZERO_OFFSET + toTypeflag(opts.type)\n\n if (opts.linkname) b4a.write(buf, opts.linkname, 157)\n\n b4a.copy(USTAR_MAGIC, buf, MAGIC_OFFSET)\n b4a.copy(USTAR_VER, buf, VERSION_OFFSET)\n if (opts.uname) b4a.write(buf, opts.uname, 265)\n if (opts.gname) b4a.write(buf, opts.gname, 297)\n b4a.write(buf, encodeOct(opts.devmajor || 0, 6), 329)\n b4a.write(buf, encodeOct(opts.devminor || 0, 6), 337)\n\n if (prefix) b4a.write(buf, prefix, 345)\n\n b4a.write(buf, encodeOct(cksum(buf), 6), 148)\n\n return buf\n}\n\nexports.decode = function decode (buf, filenameEncoding, allowUnknownFormat) {\n let typeflag = buf[156] === 0 ? 0 : buf[156] - ZERO_OFFSET\n\n let name = decodeStr(buf, 0, 100, filenameEncoding)\n const mode = decodeOct(buf, 100, 8)\n const uid = decodeOct(buf, 108, 8)\n const gid = decodeOct(buf, 116, 8)\n const size = decodeOct(buf, 124, 12)\n const mtime = decodeOct(buf, 136, 12)\n const type = toType(typeflag)\n const linkname = buf[157] === 0 ? null : decodeStr(buf, 157, 100, filenameEncoding)\n const uname = decodeStr(buf, 265, 32)\n const gname = decodeStr(buf, 297, 32)\n const devmajor = decodeOct(buf, 329, 8)\n const devminor = decodeOct(buf, 337, 8)\n\n const c = cksum(buf)\n\n // checksum is still initial value if header was null.\n if (c === 8 * 32) return null\n\n // valid checksum\n if (c !== decodeOct(buf, 148, 8)) throw new Error('Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?')\n\n if (isUSTAR(buf)) {\n // ustar (posix) format.\n // prepend prefix, if present.\n if (buf[345]) name = decodeStr(buf, 345, 155, filenameEncoding) + '/' + name\n } else if (isGNU(buf)) {\n // 'gnu'/'oldgnu' format. Similar to ustar, but has support for incremental and\n // multi-volume tarballs.\n } else {\n if (!allowUnknownFormat) {\n throw new Error('Invalid tar header: unknown format.')\n }\n }\n\n // to support old tar versions that use trailing / to indicate dirs\n if (typeflag === 0 && name && name[name.length - 1] === '/') typeflag = 5\n\n return {\n name,\n mode,\n uid,\n gid,\n size,\n byteOffset: 0,\n mtime: new Date(1000 * mtime),\n type,\n linkname,\n uname,\n gname,\n devmajor,\n devminor,\n pax: null\n }\n}\n\nfunction isUSTAR (buf) {\n return b4a.equals(USTAR_MAGIC, buf.subarray(MAGIC_OFFSET, MAGIC_OFFSET + 6))\n}\n\nfunction isGNU (buf) {\n return b4a.equals(GNU_MAGIC, buf.subarray(MAGIC_OFFSET, MAGIC_OFFSET + 6)) &&\n b4a.equals(GNU_VER, buf.subarray(VERSION_OFFSET, VERSION_OFFSET + 2))\n}\n\nfunction clamp (index, len, defaultValue) {\n if (typeof index !== 'number') return defaultValue\n index = ~~index // Coerce to integer.\n if (index >= len) return len\n if (index >= 0) return index\n index += len\n if (index >= 0) return index\n return 0\n}\n\nfunction toType (flag) {\n switch (flag) {\n case 0:\n return 'file'\n case 1:\n return 'link'\n case 2:\n return 'symlink'\n case 3:\n return 'character-device'\n case 4:\n return 'block-device'\n case 5:\n return 'directory'\n case 6:\n return 'fifo'\n case 7:\n return 'contiguous-file'\n case 72:\n return 'pax-header'\n case 55:\n return 'pax-global-header'\n case 27:\n return 'gnu-long-link-path'\n case 28:\n case 30:\n return 'gnu-long-path'\n }\n\n return null\n}\n\nfunction toTypeflag (flag) {\n switch (flag) {\n case 'file':\n return 0\n case 'link':\n return 1\n case 'symlink':\n return 2\n case 'character-device':\n return 3\n case 'block-device':\n return 4\n case 'directory':\n return 5\n case 'fifo':\n return 6\n case 'contiguous-file':\n return 7\n case 'pax-header':\n return 72\n }\n\n return 0\n}\n\nfunction indexOf (block, num, offset, end) {\n for (; offset < end; offset++) {\n if (block[offset] === num) return offset\n }\n return end\n}\n\nfunction cksum (block) {\n let sum = 8 * 32\n for (let i = 0; i < 148; i++) sum += block[i]\n for (let j = 156; j < 512; j++) sum += block[j]\n return sum\n}\n\nfunction encodeOct (val, n) {\n val = val.toString(8)\n if (val.length > n) return SEVENS.slice(0, n) + ' '\n return ZEROS.slice(0, n - val.length) + val + ' '\n}\n\nfunction encodeSizeBin (num, buf, off) {\n buf[off] = 0x80\n for (let i = 11; i > 0; i--) {\n buf[off + i] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nfunction encodeSize (num, buf, off) {\n if (num.toString(8).length > 11) {\n encodeSizeBin(num, buf, off)\n } else {\n b4a.write(buf, encodeOct(num, 11), off)\n }\n}\n\n/* Copied from the node-tar repo and modified to meet\n * tar-stream coding standard.\n *\n * Source: https://github.com/npm/node-tar/blob/51b6627a1f357d2eb433e7378e5f05e83b7aa6cd/lib/header.js#L349\n */\nfunction parse256 (buf) {\n // first byte MUST be either 80 or FF\n // 80 for positive, FF for 2's comp\n let positive\n if (buf[0] === 0x80) positive = true\n else if (buf[0] === 0xFF) positive = false\n else return null\n\n // build up a base-256 tuple from the least sig to the highest\n const tuple = []\n let i\n for (i = buf.length - 1; i > 0; i--) {\n const byte = buf[i]\n if (positive) tuple.push(byte)\n else tuple.push(0xFF - byte)\n }\n\n let sum = 0\n const l = tuple.length\n for (i = 0; i < l; i++) {\n sum += tuple[i] * Math.pow(256, i)\n }\n\n return positive ? sum : -1 * sum\n}\n\nfunction decodeOct (val, offset, length) {\n val = val.subarray(offset, offset + length)\n offset = 0\n\n // If prefixed with 0x80 then parse as a base-256 integer\n if (val[offset] & 0x80) {\n return parse256(val)\n } else {\n // Older versions of tar can prefix with spaces\n while (offset < val.length && val[offset] === 32) offset++\n const end = clamp(indexOf(val, 32, offset, val.length), val.length, val.length)\n while (offset < end && val[offset] === 0) offset++\n if (end === offset) return 0\n return parseInt(b4a.toString(val.subarray(offset, end)), 8)\n }\n}\n\nfunction decodeStr (val, offset, length, encoding) {\n return b4a.toString(val.subarray(offset, indexOf(val, 0, offset, offset + length)), encoding)\n}\n\nfunction addLength (str) {\n const len = b4a.byteLength(str)\n let digits = Math.floor(Math.log(len) / Math.log(10)) + 1\n if (len + digits >= Math.pow(10, digits)) digits++\n\n return (len + digits) + str\n}\nexports.extract = require('./extract')\nexports.pack = require('./pack')\nconst { Readable, Writable, getStreamError } = require('streamx')\nconst b4a = require('b4a')\n\nconst constants = require('./constants')\nconst headers = require('./headers')\n\nconst DMODE = 0o755\nconst FMODE = 0o644\n\nconst END_OF_TAR = b4a.alloc(1024)\n\nclass Sink extends Writable {\n constructor (pack, header, callback) {\n super({ mapWritable, eagerOpen: true })\n\n this.written = 0\n this.header = header\n\n this._callback = callback\n this._linkname = null\n this._isLinkname = header.type === 'symlink' && !header.linkname\n this._isVoid = header.type !== 'file' && header.type !== 'contiguous-file'\n this._finished = false\n this._pack = pack\n this._openCallback = null\n\n if (this._pack._stream === null) this._pack._stream = this\n else this._pack._pending.push(this)\n }\n\n _open (cb) {\n this._openCallback = cb\n if (this._pack._stream === this) this._continueOpen()\n }\n\n _continuePack (err) {\n if (this._callback === null) return\n\n const callback = this._callback\n this._callback = null\n\n callback(err)\n }\n\n _continueOpen () {\n if (this._pack._stream === null) this._pack._stream = this\n\n const cb = this._openCallback\n this._openCallback = null\n if (cb === null) return\n\n if (this._pack.destroying) return cb(new Error('pack stream destroyed'))\n if (this._pack._finalized) return cb(new Error('pack stream is already finalized'))\n\n this._pack._stream = this\n\n if (!this._isLinkname) {\n this._pack._encode(this.header)\n }\n\n if (this._isVoid) {\n this._finish()\n this._continuePack(null)\n }\n\n cb(null)\n }\n\n _write (data, cb) {\n if (this._isLinkname) {\n this._linkname = this._linkname ? b4a.concat([this._linkname, data]) : data\n return cb(null)\n }\n\n if (this._isVoid) {\n if (data.byteLength > 0) {\n return cb(new Error('No body allowed for this entry'))\n }\n return cb()\n }\n\n this.written += data.byteLength\n if (this._pack.push(data)) return cb()\n this._pack._drain = cb\n }\n\n _finish () {\n if (this._finished) return\n this._finished = true\n\n if (this._isLinkname) {\n this.header.linkname = this._linkname ? b4a.toString(this._linkname, 'utf-8') : ''\n this._pack._encode(this.header)\n }\n\n overflow(this._pack, this.header.size)\n\n this._pack._done(this)\n }\n\n _final (cb) {\n if (this.written !== this.header.size) { // corrupting tar\n return cb(new Error('Size mismatch'))\n }\n\n this._finish()\n cb(null)\n }\n\n _getError () {\n return getStreamError(this) || new Error('tar entry destroyed')\n }\n\n _predestroy () {\n this._pack.destroy(this._getError())\n }\n\n _destroy (cb) {\n this._pack._done(this)\n\n this._continuePack(this._finished ? null : this._getError())\n\n cb()\n }\n}\n\nclass Pack extends Readable {\n constructor (opts) {\n super(opts)\n this._drain = noop\n this._finalized = false\n this._finalizing = false\n this._pending = []\n this._stream = null\n }\n\n entry (header, buffer, callback) {\n if (this._finalized || this.destroying) throw new Error('already finalized or destroyed')\n\n if (typeof buffer === 'function') {\n callback = buffer\n buffer = null\n }\n\n if (!callback) callback = noop\n\n if (!header.size || header.type === 'symlink') header.size = 0\n if (!header.type) header.type = modeToType(header.mode)\n if (!header.mode) header.mode = header.type === 'directory' ? DMODE : FMODE\n if (!header.uid) header.uid = 0\n if (!header.gid) header.gid = 0\n if (!header.mtime) header.mtime = new Date()\n\n if (typeof buffer === 'string') buffer = b4a.from(buffer)\n\n const sink = new Sink(this, header, callback)\n\n if (b4a.isBuffer(buffer)) {\n header.size = buffer.byteLength\n sink.write(buffer)\n sink.end()\n return sink\n }\n\n if (sink._isVoid) {\n return sink\n }\n\n return sink\n }\n\n finalize () {\n if (this._stream || this._pending.length > 0) {\n this._finalizing = true\n return\n }\n\n if (this._finalized) return\n this._finalized = true\n\n this.push(END_OF_TAR)\n this.push(null)\n }\n\n _done (stream) {\n if (stream !== this._stream) return\n\n this._stream = null\n\n if (this._finalizing) this.finalize()\n if (this._pending.length) this._pending.shift()._continueOpen()\n }\n\n _encode (header) {\n if (!header.pax) {\n const buf = headers.encode(header)\n if (buf) {\n this.push(buf)\n return\n }\n }\n this._encodePax(header)\n }\n\n _encodePax (header) {\n const paxHeader = headers.encodePax({\n name: header.name,\n linkname: header.linkname,\n pax: header.pax\n })\n\n const newHeader = {\n name: 'PaxHeader',\n mode: header.mode,\n uid: header.uid,\n gid: header.gid,\n size: paxHeader.byteLength,\n mtime: header.mtime,\n type: 'pax-header',\n linkname: header.linkname && 'PaxHeader',\n uname: header.uname,\n gname: header.gname,\n devmajor: header.devmajor,\n devminor: header.devminor\n }\n\n this.push(headers.encode(newHeader))\n this.push(paxHeader)\n overflow(this, paxHeader.byteLength)\n\n newHeader.size = header.size\n newHeader.type = header.type\n this.push(headers.encode(newHeader))\n }\n\n _doDrain () {\n const drain = this._drain\n this._drain = noop\n drain()\n }\n\n _predestroy () {\n const err = getStreamError(this)\n\n if (this._stream) this._stream.destroy(err)\n\n while (this._pending.length) {\n const stream = this._pending.shift()\n stream.destroy(err)\n stream._continueOpen()\n }\n\n this._doDrain()\n }\n\n _read (cb) {\n this._doDrain()\n cb()\n }\n}\n\nmodule.exports = function pack (opts) {\n return new Pack(opts)\n}\n\nfunction modeToType (mode) {\n switch (mode & constants.S_IFMT) {\n case constants.S_IFBLK: return 'block-device'\n case constants.S_IFCHR: return 'character-device'\n case constants.S_IFDIR: return 'directory'\n case constants.S_IFIFO: return 'fifo'\n case constants.S_IFLNK: return 'symlink'\n }\n\n return 'file'\n}\n\nfunction noop () {}\n\nfunction overflow (self, size) {\n size &= 511\n if (size) self.push(END_OF_TAR.subarray(0, 512 - size))\n}\n\nfunction mapWritable (buf) {\n return b4a.isBuffer(buf) ? buf : b4a.from(buf)\n}\n{\n \"name\": \"tar-stream\",\n \"version\": \"3.2.0\",\n \"description\": \"tar-stream is a streaming tar parser and generator and nothing else. It operates purely using streams which means you can easily extract/parse tarballs without ever hitting the file system.\",\n \"main\": \"index.js\",\n \"files\": [\n \"*.js\"\n ],\n \"browser\": {\n \"fs\": false\n },\n \"imports\": {\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n }\n },\n \"scripts\": {\n \"test\": \"standard && brittle test/*.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/mafintosh/tar-stream.git\"\n },\n \"author\": \"Mathias Buus \",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/tar-stream/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/tar-stream\",\n \"dependencies\": {\n \"b4a\": \"^1.6.4\",\n \"bare-fs\": \"^4.5.5\",\n \"fast-fifo\": \"^1.2.0\",\n \"streamx\": \"^2.15.0\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"concat-stream\": \"^2.0.0\",\n \"standard\": \"^17.0.1\"\n }\n}\nconst { Readable } = require('streamx')\n\nmodule.exports = function (s, forks = 2) {\n const streams = new Array(forks)\n const status = new Array(forks).fill(true)\n\n let ended = false\n\n for (let i = 0; i < forks; i++) {\n streams[i] = new Readable({\n read (cb) {\n const check = !status[i]\n status[i] = true\n if (check && allReadable()) s.resume()\n cb(null)\n }\n })\n }\n\n s.on('end', function () {\n ended = true\n for (const stream of streams) stream.push(null)\n })\n\n s.on('error', function (err) {\n for (const stream of streams) stream.destroy(err)\n })\n\n s.on('close', function () {\n if (ended) return\n for (const stream of streams) stream.destroy()\n })\n\n s.on('data', function (data) {\n let needsPause = false\n for (let i = 0; i < streams.length; i++) {\n if (!(status[i] = streams[i].push(data))) {\n needsPause = true\n }\n }\n if (needsPause) s.pause()\n })\n\n return streams\n\n function allReadable () {\n for (let j = 0; j < status.length; j++) {\n if (!status[j]) return false\n }\n return true\n }\n}\n{\n \"name\": \"teex\",\n \"version\": \"1.0.1\",\n \"description\": \"Turn a readable stream into multiple readable streamx streams\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"streamx\": \"^2.12.5\"\n },\n \"devDependencies\": {\n \"standard\": \"^14.3.4\",\n \"tape\": \"^5.0.1\"\n },\n \"scripts\": {\n \"test\": \"standard && tape test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/teex.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/teex/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/teex\"\n}\nconst PassThroughDecoder = require('./lib/pass-through-decoder')\nconst UTF8Decoder = require('./lib/utf8-decoder')\n\nmodule.exports = class TextDecoder {\n constructor(encoding = 'utf8') {\n this.encoding = normalizeEncoding(encoding)\n\n switch (this.encoding) {\n case 'utf8':\n this.decoder = new UTF8Decoder()\n break\n case 'utf16le':\n case 'base64':\n throw new Error('Unsupported encoding: ' + this.encoding)\n default:\n this.decoder = new PassThroughDecoder(this.encoding)\n }\n }\n\n get remaining() {\n return this.decoder.remaining\n }\n\n push(data) {\n if (typeof data === 'string') return data\n return this.decoder.decode(data)\n }\n\n // For Node.js compatibility\n write(data) {\n return this.push(data)\n }\n\n end(data) {\n let result = ''\n if (data) result = this.push(data)\n result += this.decoder.flush()\n return result\n }\n}\n\nfunction normalizeEncoding(encoding) {\n encoding = encoding.toLowerCase()\n\n switch (encoding) {\n case 'utf8':\n case 'utf-8':\n return 'utf8'\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le'\n case 'latin1':\n case 'binary':\n return 'latin1'\n case 'base64':\n case 'ascii':\n case 'hex':\n return encoding\n default:\n throw new Error('Unknown encoding: ' + encoding)\n }\n}\nconst b4a = require('b4a')\n\nmodule.exports = class PassThroughDecoder {\n constructor(encoding) {\n this.encoding = encoding\n }\n\n get remaining() {\n return 0\n }\n\n decode(data) {\n return b4a.toString(data, this.encoding)\n }\n\n flush() {\n return ''\n }\n}\nconst b4a = require('b4a')\n\n/**\n * https://encoding.spec.whatwg.org/#utf-8-decoder\n */\nmodule.exports = class UTF8Decoder {\n constructor() {\n this._reset()\n }\n\n get remaining() {\n return this.bytesSeen\n }\n\n decode(data) {\n if (data.byteLength === 0) return ''\n\n if (this.bytesNeeded === 0 && trailingIncomplete(data, 0) === 0) {\n this.bytesSeen = trailingBytesSeen(data)\n return b4a.toString(data, 'utf8')\n }\n\n let result = ''\n let start = 0\n\n if (this.bytesNeeded > 0) {\n while (start < data.byteLength) {\n const byte = data[start]\n\n if (byte < this.lowerBoundary || byte > this.upperBoundary) {\n result += '\\ufffd'\n this._reset()\n break\n }\n\n this.lowerBoundary = 0x80\n this.upperBoundary = 0xbf\n this.codePoint = (this.codePoint << 6) | (byte & 0x3f)\n this.bytesSeen++\n start++\n\n if (this.bytesSeen === this.bytesNeeded) {\n result += String.fromCodePoint(this.codePoint)\n this._reset()\n break\n }\n }\n\n if (this.bytesNeeded > 0) return result\n }\n\n const trailing = trailingIncomplete(data, start)\n const end = data.byteLength - trailing\n\n if (end > start) result += b4a.toString(data, 'utf8', start, end)\n\n for (let i = end; i < data.byteLength; i++) {\n const byte = data[i]\n\n if (this.bytesNeeded === 0) {\n if (byte <= 0x7f) {\n this.bytesSeen = 0\n result += String.fromCharCode(byte)\n } else if (byte >= 0xc2 && byte <= 0xdf) {\n this.bytesNeeded = 2\n this.bytesSeen = 1\n this.codePoint = byte & 0x1f\n } else if (byte >= 0xe0 && byte <= 0xef) {\n if (byte === 0xe0) this.lowerBoundary = 0xa0\n else if (byte === 0xed) this.upperBoundary = 0x9f\n this.bytesNeeded = 3\n this.bytesSeen = 1\n this.codePoint = byte & 0xf\n } else if (byte >= 0xf0 && byte <= 0xf4) {\n if (byte === 0xf0) this.lowerBoundary = 0x90\n else if (byte === 0xf4) this.upperBoundary = 0x8f\n this.bytesNeeded = 4\n this.bytesSeen = 1\n this.codePoint = byte & 0x7\n } else {\n this.bytesSeen = 1\n result += '\\ufffd'\n }\n\n continue\n }\n\n if (byte < this.lowerBoundary || byte > this.upperBoundary) {\n result += '\\ufffd'\n i--\n this._reset()\n\n continue\n }\n\n this.lowerBoundary = 0x80\n this.upperBoundary = 0xbf\n\n this.codePoint = (this.codePoint << 6) | (byte & 0x3f)\n this.bytesSeen++\n\n if (this.bytesSeen === this.bytesNeeded) {\n result += String.fromCodePoint(this.codePoint)\n this._reset()\n }\n }\n\n return result\n }\n\n flush() {\n const result = this.bytesNeeded > 0 ? '\\ufffd' : ''\n this._reset()\n return result\n }\n\n _reset() {\n this.codePoint = 0\n this.bytesNeeded = 0\n this.bytesSeen = 0\n this.lowerBoundary = 0x80\n this.upperBoundary = 0xbf\n }\n}\n\nfunction trailingIncomplete(data, start) {\n const len = data.byteLength\n if (len <= start) return 0\n\n const limit = Math.max(start, len - 4)\n\n let i = len - 1\n while (i > limit && (data[i] & 0xc0) === 0x80) i--\n\n if (i < start) return 0\n\n const byte = data[i]\n\n let needed\n if (byte <= 0x7f) return 0\n if (byte >= 0xc2 && byte <= 0xdf) needed = 2\n else if (byte >= 0xe0 && byte <= 0xef) needed = 3\n else if (byte >= 0xf0 && byte <= 0xf4) needed = 4\n else return 0\n\n const available = len - i\n return available < needed ? available : 0\n}\n\nfunction trailingBytesSeen(data) {\n const len = data.byteLength\n if (len === 0) return 0\n\n const last = data[len - 1]\n\n if (last <= 0x7f) return 0\n if ((last & 0xc0) !== 0x80) return 1\n\n const limit = Math.max(0, len - 4)\n\n let i = len - 2\n while (i >= limit && (data[i] & 0xc0) === 0x80) i--\n\n if (i < 0) return 1\n\n const first = data[i]\n\n let needed\n if (first >= 0xc2 && first <= 0xdf) needed = 2\n else if (first >= 0xe0 && first <= 0xef) needed = 3\n else if (first >= 0xf0 && first <= 0xf4) needed = 4\n else return 1\n\n if (len - i !== needed) return 1\n\n if (needed >= 3) {\n const second = data[i + 1]\n if (first === 0xe0 && second < 0xa0) return 1\n if (first === 0xed && second > 0x9f) return 1\n if (first === 0xf0 && second < 0x90) return 1\n if (first === 0xf4 && second > 0x8f) return 1\n }\n\n return 0\n}\n{\n \"name\": \"text-decoder\",\n \"version\": \"1.2.7\",\n \"description\": \"Streaming text decoder that preserves multibyte Unicode characters\",\n \"exports\": {\n \"./package\": \"./package.json\",\n \".\": \"./index.js\"\n },\n \"files\": [\n \"index.js\",\n \"lib\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:node\": \"brittle-node test.js\",\n \"test:bare\": \"brittle-bare test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/text-decoder.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/text-decoder/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/text-decoder#readme\",\n \"dependencies\": {\n \"b4a\": \"^1.6.4\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^1.0.0\"\n }\n}\nmodule.exports = class TimeOrderedSet {\n constructor () {\n this.oldest = null\n this.latest = null\n this.length = 0\n }\n\n has (node) {\n return !!(node.next || node.prev) || node === this.oldest\n }\n\n add (node) {\n if (this.has(node)) this.remove(node)\n\n if (!this.latest && !this.oldest) {\n this.latest = this.oldest = node\n node.prev = node.next = null\n } else {\n this.latest.next = node\n node.prev = this.latest\n node.next = null\n this.latest = node\n }\n\n this.length++\n\n return node\n }\n\n remove (node) {\n if (!this.has(node)) return node\n\n if (this.oldest !== node && this.latest !== node) {\n node.prev.next = node.next\n node.next.prev = node.prev\n } else {\n if (this.oldest === node) {\n this.oldest = node.next\n if (this.oldest) this.oldest.prev = null\n }\n if (this.latest === node) {\n this.latest = node.prev\n if (this.latest) this.latest.next = null\n }\n }\n\n node.next = node.prev = null\n this.length--\n\n return node\n }\n\n toArray ({ limit = Infinity, reverse = false } = {}) {\n const list = []\n\n if (reverse) {\n let node = this.latest\n while (node && limit--) {\n list.push(node)\n node = node.prev\n }\n } else {\n let node = this.oldest\n while (node && limit--) {\n list.push(node)\n node = node.next\n }\n }\n\n return list\n }\n}\n{\n \"name\": \"time-ordered-set\",\n \"version\": \"2.0.1\",\n \"description\": \"Efficiently maintain a set of nodes ordered by the time they were added to the set\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"devDependencies\": {\n \"brittle\": \"^3.0.0\",\n \"standard\": \"^17.1.2\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/time-ordered-set.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/time-ordered-set/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/time-ordered-set\"\n}\nmodule.exports = class TimerBrowser {\n constructor (ms, fn, ctx = null, interval = false) {\n this.ms = ms\n this.ontimeout = fn\n this.context = ctx || null\n this.interval = interval\n this.done = false\n\n this._timer = interval\n ? setInterval(callInterval, ms, this)\n : setTimeout(callTimeout, ms, this)\n }\n\n unref () {}\n\n ref () {}\n\n refresh () {\n if (this.done) return\n\n if (this.interval) {\n clearInterval(this._timer)\n this._timer = setInterval(callInterval, this.ms, this)\n } else {\n clearTimeout(this._timer)\n this._timer = setTimeout(callTimeout, this.ms, this)\n }\n }\n\n destroy () {\n this.done = true\n this.ontimeout = null\n\n if (this.interval) clearInterval(this._timer)\n else clearTimeout(this._timer)\n }\n\n static once (ms, fn, ctx) {\n return new this(ms, fn, ctx, false)\n }\n\n static on (ms, fn, ctx) {\n return new this(ms, fn, ctx, true)\n }\n}\n\nfunction callTimeout (self) {\n self.done = true\n self.ontimeout.call(self.context)\n}\n\nfunction callInterval (self) {\n self.ontimeout.call(self.context)\n}\nmodule.exports = isNode()\n ? require('./node')\n : require('./browser')\n\nfunction isNode () {\n const to = setTimeout(function () {}, 1000)\n clearTimeout(to)\n return !!to.refresh\n}\nmodule.exports = class Timer {\n constructor (ms, fn, ctx = null, interval = false) {\n this.ms = ms\n this.ontimeout = fn\n this.context = ctx\n this.interval = interval\n this.done = false\n\n this._timer = interval\n ? setInterval(callInterval, ms, this)\n : setTimeout(callTimeout, ms, this)\n }\n\n unref () {\n this._timer.unref()\n }\n\n ref () {\n this._timer.ref()\n }\n\n refresh () {\n if (this.done !== true) this._timer.refresh()\n }\n\n destroy () {\n this.done = true\n this.ontimeout = null\n if (this.interval) clearInterval(this._timer)\n else clearTimeout(this._timer)\n }\n\n static once (ms, fn, ctx) {\n return new this(ms, fn, ctx, false)\n }\n\n static on (ms, fn, ctx) {\n return new this(ms, fn, ctx, true)\n }\n}\n\nfunction callTimeout (self) {\n self.done = true\n self.ontimeout.call(self.context)\n}\n\nfunction callInterval (self) {\n self.ontimeout.call(self.context)\n}\n{\n \"name\": \"timeout-refresh\",\n \"version\": \"2.0.1\",\n \"description\": \"Efficiently refresh a timer\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"standard\": \"^16.0.4\",\n \"tape\": \"^5.5.2\"\n },\n \"browser\": \"./browser.js\",\n \"scripts\": {\n \"test\": \"standard && tape test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/timeout-refresh.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/timeout-refresh/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/timeout-refresh\"\n}\n\"use strict\";var F=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var G=(a,e)=>{for(var n in e)F(a,n,{get:e[n],enumerable:!0})},I=(a,e,n,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of z(e))!E.call(a,t)&&t!==n&&F(a,t,{get:()=>e[t],enumerable:!(o=S(e,t))||o.enumerable});return a};var K=a=>I(F({},\"__esModule\",{value:!0}),a);var u0={};G(u0,{cleanString:()=>k,detect:()=>s0,detectAll:()=>j,langName:()=>Y,langRegion:()=>b,supportedLanguages:()=>P,toISO2:()=>D,toISO3:()=>p,validateISO2:()=>y});module.exports=K(u0);var V={TINYLD_CONFIG:\"heavy\"};var J=/[,.。,、#%&/\\\\+*¡!¿?[\\]!?;:…„“«»”\"“_–—~]/gi,W=/[0-9]/g,w=/[\\uFF10-\\uFF19]/g,q=/\\s\\s+/g,x=/’/gi,_=/[\\u0300-\\u036f]/g;function Z(a){return typeof a==\"string\"||a instanceof String}function k(a){return a.toLowerCase().replace(x,\"'\").replace(J,\" \").replace(w,e=>String.fromCharCode(e.charCodeAt(0)-65248)).replace(W,\"\").replace(q,\" \").trim()}function R(a){return a.normalize(\"NFD\").replace(_,\"\")}var Q={light:{TRAINING_UNIQUE_GRAMS:[1,2,3,4],TOP_LANGUAGE_UNIQUE_GRAMS:60,TOP_LANGUAGE_STATS_GRAMS:50},normal:{TRAINING_UNIQUE_GRAMS:[1,2,3,4,5],TOP_LANGUAGE_UNIQUE_GRAMS:100,TOP_LANGUAGE_STATS_GRAMS:180},heavy:{TRAINING_UNIQUE_GRAMS:[1,2,3,4,5],TOP_LANGUAGE_UNIQUE_GRAMS:320,TOP_LANGUAGE_STATS_GRAMS:1024}},m=V.TINYLD_CONFIG||\"normal\",A=Q[m].TRAINING_UNIQUE_GRAMS,d0=Q[m].TOP_LANGUAGE_UNIQUE_GRAMS,m0=Q[m].TOP_LANGUAGE_STATS_GRAMS,h=1e4;function g(a){return Math.round(a*h)/h}var C=a=>{let e={only:[],verbose:!1};return a?Object.assign(e,a):e},B={afr:{code:\"af\",region:\"africa\",name:\"Afrikaans\",skipLight:!0},amh:{code:\"am\",region:\"africa\",name:\"Amharic\",skipLight:!0,coefProb:0},ber:{code:\"ber\",region:\"africa\",name:\"Berber\",skipLight:!0,coefProb:.25},run:{code:\"rn\",region:\"africa\",name:\"Kirundi\",skipLight:!0},jpn:{code:\"ja\",region:\"asia-east\",name:\"Japanese\",alias:[\"jp\"],coefProb:0},cmn:{code:\"zh\",region:\"asia-east\",name:\"Chinese\",alias:[\"cn\"],coefProb:.25},kor:{code:\"ko\",region:\"asia-east\",name:\"Korean\",alias:[\"kr\"],coefProb:0},mya:{code:\"my\",region:\"asia\",name:\"Burmese\",skipLight:!0,coefProb:0},tha:{code:\"th\",region:\"asia\",name:\"Thai\",coefProb:0},vie:{code:\"vi\",region:\"asia\",name:\"Vietnamese\",skipLight:!0,coefProb:0},ind:{code:\"id\",region:\"asia\",name:\"Indonesian\",skipLight:!0},khm:{code:\"km\",region:\"asia\",name:\"Khmer\",skipLight:!0,coefProb:0},tgl:{code:\"tl\",region:\"asia\",name:\"Tagalog\",skipLight:!0},ben:{code:\"bn\",region:\"asia-south\",name:\"Bengali\",coefProb:0},tam:{code:\"ta\",region:\"asia-south\",name:\"Tamil\",skipLight:!0,coefProb:0},hin:{code:\"hi\",region:\"asia-south\",name:\"Hindi\",coefProb:0},urd:{code:\"ur\",region:\"asia-south\",name:\"Urdu\",skipLight:!0,coefProb:0},guj:{code:\"gu\",region:\"asia-south\",name:\"Gujarati\",skipLight:!0,coefProb:0},kan:{code:\"kn\",region:\"asia-south\",name:\"Kannada\",skipLight:!0,coefProb:0},tel:{code:\"te\",region:\"asia-south\",name:\"Telugu\",skipLight:!0,coefProb:0},fra:{code:\"fr\",region:\"europe-west\",name:\"French\"},eng:{code:\"en\",region:\"europe-west\",name:\"English\",alias:[\"us\",\"gb\"]},deu:{code:\"de\",region:\"europe-west\",name:\"German\",coefProb:.5},spa:{code:\"es\",region:\"europe-west\",name:\"Spanish\"},por:{code:\"pt\",region:\"europe-west\",name:\"Portuguese\",alias:[\"po\"]},ita:{code:\"it\",region:\"europe-west\",name:\"Italian\"},nld:{code:\"nl\",region:\"europe-west\",name:\"Dutch\"},gle:{code:\"ga\",region:\"europe-west\",name:\"Irish\",skipLight:!0},lat:{code:\"la\",region:\"europe\",name:\"Latin\",skipLight:!0},ces:{code:\"cs\",region:\"europe\",name:\"Czech\",skipLight:!0},srp:{code:\"sr\",region:\"europe\",name:\"Serbian\",skipLight:!0},ell:{code:\"el\",region:\"europe\",name:\"Greek\",alias:[\"gr\"],coefProb:0},mkd:{code:\"mk\",region:\"europe\",name:\"Macedonian\",skipLight:!0,coefProb:1.5},slk:{code:\"sk\",region:\"europe\",name:\"Slovak\",skipLight:!0},dan:{code:\"da\",region:\"europe-north\",name:\"Danish\",skipLight:!0,coefProb:1.5},swe:{code:\"sv\",region:\"europe-north\",name:\"Swedish\"},fin:{code:\"fi\",region:\"europe-north\",name:\"Finnish\"},nob:{code:\"no\",region:\"europe-north\",name:\"Norwegian\",coefProb:1.5},isl:{code:\"is\",region:\"europe-north\",name:\"Icelandic\",skipLight:!0,coefProb:.5},hun:{code:\"hu\",region:\"europe-east\",name:\"Hungarian\"},ron:{code:\"ro\",region:\"europe-east\",name:\"Romanian\",coefProb:.5},bul:{code:\"bg\",region:\"europe-east\",name:\"Bulgarian\",skipLight:!0},bel:{code:\"be\",region:\"europe-east\",name:\"Belarusian\",skipLight:!0},rus:{code:\"ru\",region:\"europe-east\",name:\"Russian\"},ukr:{code:\"uk\",region:\"europe-east\",name:\"Ukrainian\",skipLight:!0},pol:{code:\"pl\",region:\"europe-east\",name:\"Polish\",coefProb:.5},lit:{code:\"lt\",region:\"europe-east\",name:\"Lithuanian\",skipLight:!0},est:{code:\"et\",region:\"europe-east\",name:\"Estonian\",skipLight:!0},lvs:{code:\"lv\",region:\"europe-east\",name:\"Latvian\",skipLight:!0},hye:{code:\"hy\",region:\"middle-east\",name:\"Armenian\",skipLight:!0,coefProb:0},tur:{code:\"tr\",region:\"middle-east\",name:\"Turkish\"},heb:{code:\"he\",region:\"middle-east\",name:\"Hebrew\",coefProb:0},yid:{code:\"yi\",region:\"middle-east\",name:\"Yiddish\",skipLight:!0,coefProb:.5},ara:{code:\"ar\",region:\"middle-east\",name:\"Arabic\",coefProb:0},pes:{code:\"fa\",region:\"middle-east\",name:\"Persian\",skipLight:!0,coefProb:0},tat:{code:\"tt\",region:\"middle-east\",name:\"Tatar\",skipLight:!0,coefProb:0},kaz:{code:\"kk\",region:\"middle-east\",name:\"Kazakh\",skipLight:!0},mon:{code:\"mn\",region:\"middle-east\",name:\"Mongolian\",skipLight:!0},tuk:{code:\"tk\",region:\"middle-east\",name:\"Turkmen\",skipLight:!0},epo:{code:\"eo\",region:\"other\",name:\"Esperanto\",skipLight:!0,coefProb:.5},vol:{code:\"vo\",region:\"other\",name:\"Volapuk\",skipLight:!0,coefProb:.5},tlh:{code:\"tlh\",region:\"other\",name:\"Klingon\",skipLight:!0,coefProb:.25}},X=new Set(Object.entries(B).filter(a=>m===\"heavy\"||m===\"normal\"||m===\"light\"&&!a[1].skipLight).map(a=>a[0])),P=[...X.values()],D0=Object.fromEntries(P.map((a,e)=>[a,e+1])),T=Object.fromEntries(P.map((a,e)=>[e+1,a]));function b(a){return a in B?B[a].region:\"\"}function Y(a){return a in B?B[a].name:\"\"}function y(a){let e=Object.entries(B).find(o=>o[1].code===a);if(e)return e[1].code;let n=Object.entries(B).find(o=>o[1].alias&&o[1].alias.includes(a));return n?n[1].code:\"\"}function D(a){return a in B?B[a].code:a}function p(a){let e=Object.entries(B).find(o=>o[1].code===a);if(e)return e[0];let n=Object.entries(B).find(o=>o[1].alias&&o[1].alias.includes(a));return n?n[0]:\"\"}var U={id:\"tinyld-dict\",multiples:{\" ' \":\"0T03\",\" ''\":\"0R040T021B0S1D13\",\" 'a\":\"1F041Q7Q\",\" 'ac\":\"1Q52\",\" 'ach\":\"1Q8I\",\" 'd\":\"1F0F\",\" 'e\":\"1QK8\",\" 'e'\":\"1QNF\",\" 'e' \":\"1QSG\",\" 'ej\":\"1Q7W\",\" 'ej \":\"1QCV\",\" 'i\":\"1F021Q5O\",\" 'iv \":\"1Q4K\",\" 'n\":\"019Y0D06\",\" 'n \":\"01JW\",\" 'ny\":\"0D0B\",\" 'nyo\":\"0D0L\",\" 'o\":\"1QAT\",\" 'oh\":\"1QE3\",\" 'oh \":\"1QHK\",\" 's\":\"0R04\",\" 't\":\"1F05\",\" 'u\":\"1Q2H\",\" 'y\":\"0D02\",\" (i\":\"0T02\",\" -a\":\"1O03\",\" -d\":\"1N0A\",\" -n\":\"1N0A\",\" -v\":\"1103\",\" a-\":\"03020L0L1507\",\" a-t\":\"03020L0Z\",\" a-t-\":\"03040L1N\",\" aam\":\"111A\",\" aamu\":\"112E\",\" aan\":\"017W0RA9\",\" aan \":\"013Q0RA8\",\" aand\":\"010S0R0C\",\" aang\":\"011Z0R1C\",\" aans\":\"010N0R08\",\" aanv\":\"010L0R0D\",\" aar\":\"010H0P020R120T091102\",\" aard\":\"0R1B\",\" aas\":\"11031C1N\",\" aast\":\"1C3Y\",\" ab \":\"0N0Q0T1V1P0J\",\" aba \":\"0441\",\" abag\":\"044E\",\" abai\":\"0L030P050S32\",\" aban\":\"030904BX0L0E0M030O0H0P091506\",\" abav\":\"043I\",\" abb\":\"0N020Q4L1416\",\" abba\":\"0Q141411\",\" abbi\":\"0N020Q3D\",\" aber\":\"030N0N4E0P0E0T050Z02\",\" abh\":\"0N040S1L0T0C\",\" abha\":\"0N020S65\",\" abie\":\"0O0D0T041B081C2N\",\" abit\":\"0Q100T04\",\" abl\":\"03020M0Y0N03140S\",\" able\":\"0M1B0N03\",\" abou\":\"0M4F\",\" abra\":\"0O090P0E0T0T1O03\",\" abri\":\"031A0D060L030O0U0P0Q\",\" abu\":\"030A0L020M020O0W0P030T09150C1B0F1O03\",\" aby\":\"0U530Y591A0R\",\" aby \":\"0U3U0Y6H1A10\",\" abyc\":\"0U24\",\" abys\":\"0U1C\",\" ac \":\"0T18\",\" aca\":\"03040B040O1E0P1415231F02\",\" acab\":\"0O1F0P111F02\",\" acas\":\"0O090P05152N\",\" acc\":\"03020L1P0M0X0O0P0Q1Z0R060T2Q0Z041006151F\",\" acce\":\"0L0N0M0D0O050Q0S0R060T130Z0510061511\",\" acci\":\"0L0E0M0C0O0S0Q020T19150T\",\" ace\":\"030U0O180P0S0T0B15EK1F0B\",\" acea\":\"1579\",\" acel\":\"0O020P02152B1F0E\",\" acer\":\"03040O0T0P040T06\",\" aces\":\"0P061595\",\" ach\":\"0L1Q0M030N0H0P3S0R1A0S2L0T091A02\",\" ach \":\"0N070SA41A02\",\" acha\":\"0L040P1M0T03\",\" ache\":\"0L2E0P09\",\" acho\":\"0P30\",\" acht\":\"0N0L0R1O\",\" aco\":\"0O0Z0P2O152T\",\" acol\":\"151Z\",\" acon\":\"0O0A0P22\",\" acor\":\"0O080P0W1519\",\" acr\":\"0M060P120T03\",\" acre\":\"0P1C\",\" act\":\"0L0L0M0O0O0S0R080T0Q150W\",\" acu\":\"033O0O0W0P080S1C0T05153J\",\" acu \":\"036W0S5G\",\" acue\":\"0O0S\",\" acum\":\"0O021543\",\" ad \":\"03SG0Q1W0T9K0Z0B14061P1E\",\" ada \":\"0BCT\",\" adal\":\"0BCV1F04\",\" adam\":\"03040L020T061F221N671O02\",\" adel\":\"0O0A1P2X\",\" ades\":\"0Q1I0T0F150D\",\" adev\":\"152Q\",\" adh\":\"0T0Q1403\",\" adiu\":\"0T0X\",\" adl\":\"032S0Z021F02\",\" adli\":\"0365\",\" adm\":\"0L090M0D0O0D0P0D0T0C150C1O06\",\" ador\":\"0L0H0M020O070P0R0Q090T09150F1O03\",\" adve\":\"0L050M030O050P040T1G\",\" adı\":\"1F0Y\",\" ae\":\"0O040P050Q050T2Z0V06150B1B041C1X1O04\",\" aed\":\"0T12\",\" aedi\":\"0T13\",\" aeg\":\"0T221C21\",\" aega\":\"1C37\",\" aegy\":\"0T1H\",\" aeq\":\"0T0X\",\" aequ\":\"0T0Z\",\" af \":\"011A0R1B0Z9E137N\",\" afe\":\"030F0O070P0515061O11\",\" afer\":\"03071O21\",\" aff\":\"0L0V0M090N030Q1M0T0N0Z0310091F0A\",\" affa\":\"0L0W0M040Q110Z02\",\" afg\":\"010K0R0R0Z08\",\" afge\":\"010L0R0X\",\" afi\":\"04540L060O070P091507\",\" afis\":\"048W\",\" afra\":\"030D0M0N\",\" afs\":\"010J0R0E0Z0O130Q\",\" aft\":\"03020M140Z1010021324\",\" afte\":\"03040M1K0Z15\",\" aftu\":\"134B\",\" ag \":\"0SJW\",\" aga \":\"03031C45\",\" agai\":\"0M1S0S3S\",\" agam\":\"03030B0A0SQU0T04\",\" agat\":\"030504220SE9\",\" age\":\"030E0L030M0A0O030P040R020T0U10021504\",\" agl\":\"0Q071N0Y\",\" agla\":\"1N1B\",\" ago\":\"0M0B0O070P240T071O06\",\" agor\":\"0P2M\",\" agt\":\"010S0Z02\",\" agte\":\"010Q0Z02\",\" agu\":\"03050O1G0P080S8J1O02\",\" agua\":\"0O1P0P04\",\" agus\":\"03060SPR\",\" agyr\":\"1N14\",\" agş\":\"1N1D\",\" agşa\":\"1N1V\",\" aha\":\"030E0432\",\" aha \":\"0304042Z\",\" aho\":\"04620O2B0U020Y0C141I\",\" aho \":\"04AF\",\" ahog\":\"0O04140Z\",\" ahor\":\"0O2X\",\" ahí\":\"0O0N\",\" ahí \":\"0O0U\",\" ai \":\"0L150Q0N1103157Q\",\" aic\":\"0S18153Z\",\" aici\":\"0S4R1553\",\" aid\":\"0L1511031C0R\",\" aida\":\"0L0211041C1V\",\" aide\":\"0L1L\",\" aig\":\"0L040S1Y\",\" aige\":\"0S72\",\" aik\":\"11561B03\",\" aika\":\"11A8\",\" aim\":\"0L250S0M\",\" aime\":\"0L2Q\",\" ain\":\"0L0G0P2F0S180T0211321C1J\",\" aina\":\"115F\",\" aind\":\"0P32\",\" ainm\":\"0S4I\",\" ainu\":\"11061C3H\",\" air \":\"0B210L050M080S7Z\",\" airg\":\"0S49\",\" ais\":\"0L020O020S111B02\",\" ait\":\"0L090S180T0Z11041C1M1F07\",\" ait \":\"0L0F0T111F07\",\" aita\":\"11031C2U\",\" aith\":\"0S4Z\",\" aiu\":\"0Q35\",\" aiut\":\"0Q37\",\" aiv\":\"1113\",\" aiva\":\"112D\",\" aiz\":\"1D5W\",\" aizm\":\"1D2T\",\" aizs\":\"1D1R\",\" aizv\":\"1D2K\",\" aizņ\":\"1D2Y\",\" aj \":\"0Y28\",\" aja\":\"0B06113I1C1B1N0I\",\" ajat\":\"114F\",\" ajn\":\"1O0S\",\" ajn \":\"1O1F\",\" ajt\":\"1415\",\" ajtó\":\"1415\",\" aju\":\"0O020P2B154T\",\" ajud\":\"0P2W\",\" ajun\":\"1521\",\" ajut\":\"153Z\",\" ak \":\"0Y2L1B021N0E\",\" aka\":\"030J046V0B9G0D0A14861F02\",\" akal\":\"03090B0C0D0H\",\" akan\":\"03050BGO\",\" akar\":\"0302042Z148D\",\" akaz\":\"043O\",\" akc\":\"14031A041B021O0O\",\" ake\":\"031P\",\" akh\":\"0B0U\",\" akhi\":\"0B1N\",\" aki \":\"141W\",\" akin\":\"0D3E14091B0N\",\" akk\":\"037V0R04120G142B\",\" akk \":\"036W\",\" akke\":\"038T\",\" akko\":\"0R05142E\",\" akku\":\"1103120G\",\" akl\":\"03050D0E1B041F0A\",\" akla\":\"03020D0Q1B07\",\" ako\":\"041O0D810U030V1H0Y9C1O07\",\" ako \":\"0DAQ0V3S0YBA\",\" akon\":\"0D3X\",\" aku\":\"030J041G0BLG10021A021O07\",\" aku \":\"0BSG\",\" akv\":\"0Z031O0Q\",\" akvo\":\"1O1C\",\" aké\":\"0Y1A\",\" aké \":\"0Y1J\",\" aký\":\"0Y13\",\" aký \":\"0Y17\",\" akş\":\"1F0X\",\" akşa\":\"1F19\",\" alad\":\"1N17\",\" alam\":\"03040B0K0D3211031F0B\",\" alat\":\"110414171C2J\",\" alc\":\"0M020O0I0P080Q0V0R040T03150A\",\" alcu\":\"0Q0U\",\" ald\":\"0O020P030Z1W101Y122O131Y1F2E1N2J1O07\",\" aldr\":\"0Z23101Y122H133F\",\" aldy\":\"1N2Y\",\" aldı\":\"1F34\",\" ale \":\"0U470Y2X150Y1A3S\",\" aleb\":\"0Y2E\",\" alen\":\"0L020Z0O1109120W\",\" algo\":\"0O330P1G\",\" algu\":\"0O3P0P4S\",\" ali \":\"0P0F0V4I1F1H\",\" alia\":\"0O020P020T0G11051O35\",\" aliq\":\"0T2B\",\" alka\":\"112G140T1B10\",\" all \":\"0M460N0A100412091C17\",\" all'\":\"0Q1I\",\" alli\":\"03040L070Z041006132B\",\" allt\":\"0N02103B121N136C\",\" allé\":\"0L1R\",\" allí\":\"0O0Z\",\" alma\":\"0110030J0O0A0P0814081F361N36\",\" almo\":\"0M0K0O090P0G1O03\",\" alo\":\"0D020L0Q0M0O0O02110Q\",\" alon\":\"0M0X\",\" alor\":\"0L17\",\" alr\":\"0M0R0O0A\",\" alre\":\"0M100O0D\",\" als\":\"03020M0B0N4U0R7M140J\",\" als \":\"0N7K0R7J\",\" alsj\":\"0R1B\",\" alst\":\"0R17\",\" alt \":\"0N0P0Z1Y122415071F03\",\" alti\":\"0Q020R2E0T0B0Z1N11041O05\",\" altr\":\"0Q1K\",\" alty\":\"011B1N0Q\",\" altı\":\"1F17\",\" alud\":\"14121O02\",\" alus\":\"110H1B041C1O\",\" alv\":\"0P020Z071207130M14051O0W\",\" alve\":\"0Z02130N1O1E\",\" alw\":\"0M130R02\",\" alwa\":\"0M1I\",\" aly\":\"1B021N1T\",\" alyp\":\"1N1Q\",\" alı\":\"1F1M\",\" alž\":\"1B031D15\",\" alžī\":\"1D2Y\",\" am \":\"031Q0M0U0N1W15G6\",\" ama \":\"030D0D050O090P0D0Q0D1F2O\",\" amac\":\"0S4Z1F06\",\" amag\":\"0307043C\",\" amah\":\"0320048K\",\" amak\":\"0305042Z\",\" aman\":\"03190L030M050O080P1M0Q050T0H1O03\",\" amas\":\"030C045Y0O030T081O1C\",\" amat\":\"043I0L020Q060T131B031O06\",\" amaz\":\"030A044K0L020M05\",\" amee\":\"1C1L\",\" amek\":\"0353\",\" amh\":\"0S1L\",\" amhá\":\"0S2T\",\" ami \":\"0L190Q0414141O05\",\" amic\":\"0L030Q3L0T3B\",\" amig\":\"0O2I0P2A\",\" amik\":\"0305142K1O2J\",\" amin\":\"0D0L140D15191O04\",\" amis\":\"0L170O070T0C1O06\",\" amit\":\"0L030T0B143S\",\" amm\":\"03020Q0P110C\",\" amo\":\"0D030L0H0M060O0V0P120Q0W0T1R1O0H\",\" amo \":\"0D030O0B0P0F0Q0J0T0W1O0L\",\" amor\":\"0O0T0P0U0Q0E0T0Y1O05\",\" amá\":\"0P020S0Z\",\" amár\":\"0S3J\",\" an \":\"0L050M2M0N4P0SSG0T1310021205150I1F0B\",\" an-\":\"0S22\",\" anak\":\"0B590D0Q\",\" anc\":\"0L080M030O0A0P020Q4K0T0H1F09\",\" anch\":\"0O030Q1O0T03\",\" anco\":\"0Q31\",\" and \":\"0MGA0Z02\",\" anda\":\"034U0BAC0O0J0P0M0Q9K10051F0Q\",\" andi\":\"0Q3Q1C1H\",\" ang \":\"0DSG\",\" angi\":\"0B0B1A1X\",\" ango\":\"1418\",\" angļ\":\"1D25\",\" ani \":\"0U1S0Y1Y15351A0Q\",\" anj\":\"0B0T0P02\",\" anji\":\"0B1L\",\" anka\":\"03030N021002110A1O21\",\" anko\":\"0N050Z0C1003120B1O2Q\",\" anks\":\"1B2P\",\" anl\":\"0N030Z02100F1F2S\",\" anla\":\"0N021F3I\",\" ann \":\"0SCX1A03\",\" anne\":\"0L030N050Q02110C12101F1V\",\" anni\":\"0L0A0Q120T0P1102\",\" anno\":\"0L070M070Q0I0T2R1006110L\",\" anny\":\"141K\",\" ano \":\"0D2D0P100U0K\",\" anoi\":\"0S8E\",\" anon\":\"0D0Y1O06\",\" anos\":\"0P24\",\" anot\":\"0M0M0O030P03\",\" ans \":\"0L1U0N06\",\" anse\":\"0N040S920Z021003\",\" ansi\":\"0N050O030P040Q030S5G0Z07100A11071207\",\" answ\":\"0M0L\",\" ant \":\"1B4V\",\" ante\":\"0O2H0P1O0T1I10041133\",\" antw\":\"0N0R0R0V\",\" anv\":\"0Z02100T\",\" anvä\":\"100T\",\" any\":\"03020M3Q142D\",\" any \":\"0M1R\",\" anym\":\"0M0Q\",\" anyo\":\"0D020M0O\",\" anyt\":\"0M1J\",\" ao\":\"0P480S44\",\" ao \":\"0P49\",\" aon\":\"0P060S4L\",\" aon \":\"0SDB\",\" aont\":\"0S41\",\" aos\":\"0P0S\",\" aos \":\"0P0Z\",\" apa \":\"0BG5140A150I\",\" apa-\":\"0B1B\",\" apak\":\"0B9K\",\" apen\":\"0O0D0P170R021O0C\",\" aper\":\"0L050P070Q0G0T161O0F\",\" api\":\"03030B0C0T0311041B41\",\" apie\":\"1B7Y\",\" apl\":\"0O070P05150D1A021B0Y1O04\",\" apm\":\"1B071D15\",\" appe\":\"0L1H0M0A0N020Q0U0R0Q0T0O0Z0A110J1206\",\" appr\":\"0L2P0M0D0Q0F0T08\",\" apre\":\"0O1Y0P2D0Q02150A1O02\",\" apro\":\"0O0K0P0L152B1O04\",\" aprè\":\"0L28\",\" aps\":\"0V041B1S1D21\",\" apsi\":\"1B28\",\" apsē\":\"1D1R\",\" apu\":\"03030O0A0P020T10110L140A1O0F\",\" apud\":\"0T131O0V\",\" apá\":\"141G\",\" apám\":\"1413\",\" aq\":\"032T0O2F0P470T1J\",\" aql\":\"031W\",\" aql-\":\"0348\",\" aqu\":\"03040O3Q0P530T2W\",\" aqua\":\"0T2E\",\" aque\":\"0O160P1Q\",\" aqui\":\"0P4S0T0F\",\" aquí\":\"0O3Q\",\" ar \":\"030F0P080SEL154V1BEQ1D9J\",\" ara \":\"03SG1F0B\",\" arak\":\"043I\",\" aras\":\"044K0T031F0N1N0Z\",\" araw\":\"0D1M\",\" arba\":\"03021B1Q1O0J\",\" arbe\":\"0N360R030Z2K101J121D\",\" arbo\":\"0T121O0R\",\" arc\":\"0L030M030N020O050P030Q020R020T0O0U02140M1A021B03\",\" are\":\"03050M6U0O040P050Q0I0T07155W1A041B041O05\",\" are \":\"0M871576\",\" aren\":\"0M0X0O050Q0H0T05\",\" ari \":\"04BR\",\" arik\":\"0304045F\",\" ark\":\"0D020Z021003110612061B0B1F2W1O03\",\" arka\":\"11021F3W\",\" arma\":\"030O0O0F0P0E0Q020T0N100415081C6H\",\" aro\":\"0M0N15051B031O04\",\" arou\":\"0M0V\",\" arra\":\"030T0L090M020O060P090Q0S1411\",\" arri\":\"0L370M0H0O0A0P030Q1J0R02\",\" arrê\":\"0L1T\",\" ars\":\"0T0715071C0R\",\" arst\":\"1C1V\",\" artı\":\"1F1S\",\" aru\":\"0309150C1C1J\",\" aru \":\"03031C34\",\" arv\":\"0T030Z02111A1C46\",\" arva\":\"0T02110N1C94\",\" arz\":\"0N0B1F021N0X\",\" arí\":\"0S0M\",\" arís\":\"0S2K\",\" arī\":\"1D2I\",\" arī \":\"1D6C\",\" as \":\"014J0L1V0M3U0P6R0S2T\",\" as-\":\"033B0L1H\",\" as-d\":\"033G\",\" as-t\":\"031Z0L2I\",\" asa\":\"031Y041D0B0D0D090O030P031F03\",\" asaw\":\"031J0D0F\",\" asc\":\"0O060Q0W0T0M151A\",\" asco\":\"0O020Q0R\",\" ascu\":\"151N\",\" ase\":\"03D00O0I1115150Q1O06\",\" aseg\":\"03KG0O0A\",\" ash\":\"044C0M02\",\" asho\":\"043O\",\" asia\":\"0B070M020O020Q030T050Z021150\",\" asj\":\"1C0X\",\" asja\":\"1C1S\",\" ask\":\"03090M1T0Z02100311041F07\",\" ask \":\"0M0V\",\" aske\":\"03080M1H0Z0311081F09\",\" asl\":\"03020M061F1Z1N0Q\",\" asla\":\"03021F28\",\" aso\":\"0D0D0O051504\",\" aso \":\"0D0M\",\" aspe\":\"03030L020O050P020Q1U0T0G1O16\",\" aspi\":\"0L020O030P020T0X1A02\",\" asse\":\"012K03090L1N0M020P070Q090T06\",\" assi\":\"03060L140M040P290Q0J0T05\",\" assu\":\"03050L0C0M070P0P0Q0A0T06\",\" asta\":\"15DW\",\" astă\":\"151X\",\" asu\":\"03080D060O0I112T150G1C0K\",\" aszt\":\"140Y\",\" así\":\"0O1F\",\" así \":\"0O1U\",\" at \":\"03020D3M0M4L0O020R080T0H0ZL512931F051P4J\",\" ata \":\"043O1F05\",\" atas\":\"0B300O031B04\",\" atau\":\"0B2L\",\" atb\":\"1D1G\",\" atbi\":\"1D2A\",\" atc\":\"1D0W\",\" atce\":\"1D25\",\" atei\":\"0Z0211031B4A\",\" aten\":\"030F0O0K0P0N0R0315141O2P\",\" atg\":\"1B081D0S\",\" ati\":\"03050D0C0P0G150H1B181O0F\",\" atid\":\"1B2D\",\" atin\":\"03020D0M0P06150G1O0U\",\" atk\":\"1B091D1N\",\" atka\":\"1B071D25\",\" atkl\":\"1D1R\",\" atn\":\"03061B0G1D15\",\" atnā\":\"1D21\",\" atos\":\"1B0Q1P2D\",\" atp\":\"1B031D11\",\" atpa\":\"1B051D1W\",\" atq\":\"0T1B\",\" atqu\":\"0T1E\",\" atra\":\"0O0N0P170T030U0315061A041B061D3U\",\" atro\":\"0O040P021B4C1D1W\",\" ats\":\"1B691D1G\",\" atsa\":\"1B3Z\",\" atsi\":\"1B87\",\" att \":\"10KR\",\" atte\":\"0L340M0H0Q0M0T040Z04\",\" atv\":\"13071B1R1D1R\",\" atva\":\"1B0J1D2F\",\" atvy\":\"1B23\",\" atvē\":\"1D1W\",\" atá\":\"0S4U\",\" atá \":\"0SH8\",\" atâ\":\"1526\",\" atât\":\"152N\",\" até\":\"0P1J\",\" até \":\"0P1Y\",\" atė\":\"1B0W\",\" atėj\":\"1B1Q\",\" au \":\"0L6C1568\",\" auc\":\"0L140N240T08\",\" auch\":\"0N3I\",\" aucu\":\"0L1X\",\" aud\":\"0L030M020O030P020T2M150E1B06\",\" audi\":\"0L030M030O030P020T2D\",\" auf\":\"0N8T0T07\",\" auf \":\"0NAT\",\" augs\":\"1D3U\",\" auj\":\"0L1E\",\" aujo\":\"0L2D\",\" auk\":\"1002110K13061B16\",\" aukš\":\"1B1V\",\" aur\":\"0L0Y0T1H110T150C\",\" aus \":\"0N5P\",\" auss\":\"0L310N0S\",\" aut \":\"0T0Y0U02\",\" aute\":\"0L030R030T260U091102\",\" autr\":\"0L2L\",\" autt\":\"1140\",\" autó\":\"1429\",\" aux\":\"0L1R0T0C\",\" aux \":\"0L2X\",\" av \":\"105Y12AJ\",\" avai\":\"0L3M0M031111\",\" avan\":\"0L2G0O060P040Q09110315081F031O05\",\" ave\":\"0L870M020O0H0P080Q710T0M154F1O06\",\" avea\":\"152R\",\" avec\":\"0L9D\",\" avem\":\"0T03151X\",\" aver\":\"0L050M020O0C0Q1T0T04150E1O08\",\" avet\":\"0Q34\",\" avev\":\"0Q27\",\" avez\":\"0L4A\",\" avg\":\"1007120A\",\" avis\":\"0L0B0O070P0C0T0B0Z0D120A\",\" avo\":\"0L3G0M050R0H1106150A1D0Q1O04\",\" avoi\":\"0L2F0M061109\",\" avon\":\"0L370R0N\",\" avr\":\"0Q1N10031F08\",\" avre\":\"0Q1B\",\" avs\":\"100Y120F\",\" avu\":\"041V0Q0M0T0F1002110B151W1F0T\",\" avut\":\"0Q0M152E\",\" avv\":\"0Q0T1204\",\" aw\":\"032U0B0C0D040M0L1A021N2T\",\" awa\":\"030T0B0N0M0Y1A02\",\" away\":\"0M11\",\" awen\":\"032T\",\" aws\":\"1N30\",\" awst\":\"0D021N44\",\" awt\":\"03020D041N0V\",\" awto\":\"0D081N17\",\" ax\":\"031E1003\",\" ay\":\"03K5040N0B110D2G0L040O211F3U\",\" ay \":\"03GJ0D3S1F0G\",\" aya\":\"033G04190B1O0D0K0L031F0X\",\" aya \":\"037D\",\" ayah\":\"0B2Z\",\" ayaw\":\"03040D0Z\",\" aye\":\"032H0L030O13\",\" ayen\":\"0359\",\" ayer\":\"0O1F\",\" ayn\":\"1F14\",\" aynı\":\"1F1E\",\" ayr\":\"1F14\",\" ayrı\":\"1F1J\",\" ayu\":\"03020D020O1Z\",\" ayud\":\"0O2J\",\" az \":\"14S81F0T\",\" azo\":\"0429141Y\",\" azon\":\"1418\",\" azt\":\"147Z\",\" azt \":\"147Q\",\" azér\":\"140Z\",\" aç\":\"0P0A1F2G1N1T\",\" açı\":\"1F1O\",\" açık\":\"1F1R\",\" aí\":\"0P09\",\" að\":\"13OF\",\" að \":\"13SG\",\" añ\":\"0O1S\",\" año\":\"0O2M\",\" año \":\"0O16\",\" años\":\"0O2A\",\" aú\":\"0O0H\",\" aún\":\"0O0R\",\" aún \":\"0O0Z\",\" aý\":\"1NDD\",\" aýa\":\"1N1Y\",\" aýal\":\"1N1X\",\" aýd\":\"1N57\",\" aýda\":\"1N1Q\",\" aýdy\":\"1N3W\",\" aýdý\":\"1N1Q\",\" aýt\":\"1NBD\",\" aýt \":\"1N19\",\" aýtd\":\"1NAC\",\" aýtm\":\"1N46\",\" aĉ\":\"1O0Q\",\" aĉe\":\"1O12\",\" aĉet\":\"1O24\",\" ač\":\"03031B0B\",\" aĝ\":\"1O09\",\" ağ\":\"1F1L\",\" aĵ\":\"1O03\",\" aň\":\"1N0G\",\" aş\":\"150G1F101N0X\",\" aš\":\"1BOB\",\" aš \":\"1BSG\",\" ať\":\"0U0C\",\" aŭ\":\"1O2M\",\" aŭ \":\"1O1A\",\" aŭd\":\"1O0X\",\" aŭdi\":\"1O1A\",\" aŭs\":\"1O0O\",\" aŭt\":\"1O1B\",\" aŭto\":\"1O27\",\" až\":\"0U0P0Y09\",\" až \":\"0U140Y0G\",\" aș\":\"154K\",\" aș \":\"1521\",\" așa\":\"153M\",\" așa \":\"154E\",\" așt\":\"151X\",\" aște\":\"152G\",\" aț\":\"150H\",\" aɣ\":\"032Y\",\" aṭ\":\"032R\",\" aṭa\":\"032S\",\" aṭas\":\"035X\",\" ba \":\"0D4A0S3V120A\",\" baa\":\"010F0R0L1103\",\" baba\":\"032004220D1K14041F1X\",\" back\":\"0M2C0N041003\",\" bad \":\"0M0P0N030R070Z0N100E\",\" badi\":\"1P0Z\",\" bag \":\"0M060Z0D\",\" bagi\":\"0B1V\",\" bago\":\"0D1B\",\" bagu\":\"0B1L0D040L050P02\",\" bagy\":\"0D031N1O\",\" bagā\":\"1D2F\",\" baha\":\"0B8U0D221F061N0Q\",\" bahw\":\"0B3P\",\" bai\":\"014T0B2M0L0L0O0D0P0G0S11150C1B1F1D0U\",\" baie\":\"0154150D\",\" baig\":\"0L061B1K\",\" baik\":\"0B531B0E\",\" bain\":\"0L0B0S2T\",\" baj\":\"0B0B0O0V140Z1A02\",\" baka\":\"0B0D0D0V1002130P1F0I1O02\",\" baki\":\"0D1P1102130E1O04\",\" bamb\":\"0Q141102\",\" banc\":\"0L050O0D0P0A0Q0R0U03150E\",\" bani\":\"152F1O03\",\" banj\":\"0435\",\" bans\":\"0D0I\",\" bany\":\"0B600D031F08\",\" bar \":\"0D030L030M040N020O030P020Q030V060Z0410031N79\",\" bard\":\"1A611F0D1N2F\",\" bare\":\"0M050V060Z131002122G\",\" bari\":\"044Q0D071O03\",\" barm\":\"1N2K\",\" barn\":\"0Z13101Y121V132614051B02\",\" baru\":\"0B3D0P09\",\" bará\":\"1434\",\" barý\":\"1N1N\",\" bast\":\"0D040O0U0P0O0Q0H1F061O041Q14\",\" bata\":\"041V0B0B0D1G0L040O050P081B0C1F021O0I\",\" bav\":\"041R0L030U0C0V041F031Q07\",\" baw\":\"0B0T0D0A1A0D\",\" bawa\":\"0B1L0D0J\",\" bay\":\"0B0B0D0F0M051F0Q\",\" baya\":\"03020B070D0K0M061F09\",\" baz\":\"04110U031402150B1F1A1O08\",\" bazı\":\"1F19\",\" bağ\":\"1F16\",\" baş\":\"1F641N5K\",\" başa\":\"1F1A1N20\",\" başg\":\"1N25\",\" başk\":\"1F2O\",\" başl\":\"1F2O1N33\",\" başı\":\"1F1L\",\" baš\":\"0V0Z\",\" baš \":\"0V21\",\" be \":\"0M7G100A14311B1R\",\" be'\":\"1Q72\",\" be'n\":\"1Q57\",\" beau\":\"0L5L0M0M150D\",\" bebe\":\"0B2B0O0N0P0S15051F0H\",\" bec\":\"0M1D0Q02140Q1F03\",\" beca\":\"0M1D\",\" beco\":\"0M0J\",\" bedr\":\"0M040N040R0J0Z101215\",\" beds\":\"0Z1F\",\" bee\":\"0M2N0N0D0R121402\",\" been\":\"0M3C0N060R05\",\" beet\":\"0R10\",\" bef\":\"0M0Z0N0M0Z071007140T\",\" befo\":\"0M1C0N030Z0310031408\",\" begg\":\"0M020Z0J120F\",\" begi\":\"01160B1S0M090N0F0R160Z021002\",\" bego\":\"0N030R0X\",\" begr\":\"0N0F0R1K0Z0A1008120C\",\" begy\":\"0Z1E121F\",\" beh\":\"01170M0F0N0L0Q040R0P0Y080Z0R1037120H1406\",\" beho\":\"010T0R0C0Z0610021205\",\" behö\":\"102V\",\" behø\":\"0Z0G\",\" bei \":\"0N2Z0Q021506\",\" beid\":\"0N0Y0R0C0S491D2A\",\" bein\":\"0M0Y0N0F1206130H\",\" beir\":\"0P030S2K\",\" bek\":\"01150B1B0N0Z0R0S0Z0D100B120T1309140D1F2C\",\" beke\":\"0B2B0R0M0Z021402\",\" bekl\":\"0N040R040Z04100212091F31\",\" beko\":\"010T0N0W\",\" beky\":\"0Z091002120C\",\" bel \":\"010I0L030Q070R0F1Q0D\",\" bela\":\"01100B520N030P0C0R131F081O22\",\" bele\":\"0N090P060R0B141J1F041O0L\",\" beli\":\"0B0O0M130N070V080Z021F0C\",\" belk\":\"1F0U1N16\",\" belo\":\"010P0M080N030P090R0K0V061O02\",\" belu\":\"0B320R02\",\" bem\":\"0N0C0P2N0R040Z04140G1B06\",\" bem \":\"0P35\",\" bena\":\"0B3T0N030R02\",\" beni\":\"03020N020Q030R020T071F961O02\",\" benn\":\"1422\",\" beno\":\"010S1O02\",\" bent\":\"0B0D0D020R3K14061B0H\",\" bep\":\"010H0B050R0814041B081Q0A\",\" bera\":\"0B8U0N02130G1F06\",\" berd\":\"0B1S0D0C1N2W\",\" berg\":\"0B1K0L020N0F0R0F10071B02\",\" berh\":\"0B4K\",\" beri\":\"0B340N080R081F0O1N1E\",\" berj\":\"0B2K130B1N0O\",\" berk\":\"03030B3Q\",\" berm\":\"0B311N2Z\",\" bern\":\"0B0Y0L021B1E\",\" berp\":\"0B23\",\" bers\":\"0B4V0T02\",\" bert\":\"0B5J\",\" beru\":\"0B2U0N0C0U020Z0410031406\",\" berä\":\"1014\",\" berý\":\"1N1I\",\" besa\":\"0B2D0N030O070V0B\",\" besc\":\"0N1M0R15\",\" bese\":\"010G0D0I0N050R040Z02\",\" besi\":\"011O0M020N0H1B04\",\" besk\":\"01100V080Z0O1006120M\",\" besl\":\"010P0R140Z0M100B12051F09\",\" beso\":\"010K0B270L350N0M0O04\",\" bess\":\"03020N1M\",\" besz\":\"1463\",\" besö\":\"100F\",\" besø\":\"0Z0Q120P\",\" bet \":\"0M0310021B681D8C\",\" beta\":\"010S0B090R0X0Z0T100K120N1404\",\" bete\":\"01160N060R2310061414\",\" bety\":\"0Z0F100E120H\",\" bev\":\"010S0N0D0Q0U0R0X0Z0E100A120B140N1B0R\",\" beve\":\"0Q0C0R0714071B1H\",\" bew\":\"010H0N0S0R0Y\",\" bez \":\"0U1M0V2B0Y1P1A1L1D37\",\" bezo\":\"0R131O2O\",\" beý\":\"1N1B\",\" beýl\":\"1N14\",\" bh\":\"0SLY\",\" bha\":\"0S1V\",\" bhai\":\"0S6M\",\" bhe\":\"0S4W\",\" bhea\":\"0S87\",\" bhei\":\"0SBD\",\" bhf\":\"0SE7\",\" bhfa\":\"0S6E\",\" bhfu\":\"0SSG\",\" bhr\":\"0S1L\",\" bhri\":\"0S2K\",\" bhu\":\"0S1T\",\" bhua\":\"0S2T\",\" bhur\":\"0S32\",\" bhí\":\"0S6T\",\" bhí \":\"0SLC\",\" bi \":\"0V33\",\" bia\":\"0B190Q0B0S131A0D\",\" bia \":\"0S41\",\" bias\":\"0B1E\",\" bibe\":\"0D030N020T0V0Z0310021F02\",\" bibi\":\"042M0B080D080T16\",\" bic\":\"0B0K0L030M060O0E0P0D0Q0K0V0A140Z150I1O091Q0I\",\" biel\":\"0Q0I0Y18\",\" bien\":\"0L6X0N030O3M1O04\",\" biet\":\"01120N04\",\" biez\":\"1D2T\",\" biež\":\"1D3G\",\" bif\":\"041K\",\" big \":\"0M0L\",\" bih\":\"0V1W1Q31\",\" bih \":\"0V4R1Q2V\",\" bij\":\"0L020R3R1A021B0T1DA41Q1Z\",\" bij \":\"0R3C\",\" bija\":\"1B0N1DI71Q2H\",\" biji\":\"1D21\",\" bijn\":\"0R0Y\",\" biju\":\"1D3U\",\" bik\":\"042K0D020M031402\",\" bil \":\"0Z1T1013120L1Q0C\",\" bila\":\"0B1Y0D0E0V4A10041B071Q0D\",\" bild\":\"0N0Q100H120O1F131N0V1O0F\",\" bilg\":\"1F15\",\" bilj\":\"03030V0810061N20\",\" bilm\":\"1F491N9K\",\" bilo\":\"0D030V5K1Q0A\",\" bilý\":\"1N90\",\" bim\":\"043D1Q1A\",\" bin \":\"0N521F07\",\" bina\":\"0B0B0D0U0T031F0B1Q0D\",\" bine\":\"155G1F041Q0T\",\" bini\":\"0D0S1F02\",\" binn\":\"010K0R14\",\" bino\":\"1PSG\",\" bint\":\"0B0P0D0G\",\" binö\":\"1P1U\",\" bio \":\"0V9N1004\",\" biq\":\"1Q70\",\" biq \":\"1Q4N\",\" bir \":\"0B0B1FS11NB21Q1C\",\" bira\":\"04F71F391N201Q0R\",\" bire\":\"045L1F03\",\" biri\":\"04411F3S1N3I\",\" birk\":\"14031F1E\",\" birl\":\"1F1X\",\" birn\":\"1N19\",\" birr\":\"0Q0X\",\" birç\":\"1F14\",\" bisa\":\"04220BF00D021Q0U\",\" bish\":\"042Z0N04\",\" biso\":\"0Q281Q0W\",\" bist\":\"0N2V0Q020V0D\",\" bita\":\"04410D0210021Q0I\",\" bite\":\"044X0M0210021F03\",\" bith\":\"0S8U\",\" biti\":\"0V3B1F13\",\" bitt\":\"0M020N2T0R030Z0210031F0B\",\" biz\":\"04290L0614331A021F5N1N9Y\",\" biz \":\"1F3I1N7K\",\" bize\":\"1F1M1N1Z\",\" bizi\":\"1F2N1N4G\",\" bizo\":\"043I140U\",\" bizt\":\"1429\",\" bj\":\"0Z0510061202130T1B03\",\" bje\":\"0Z09\",\" ble \":\"123D\",\" blev\":\"0R030Z4U101P\",\" bli \":\"10181223\",\" blij\":\"0R2Q\",\" blir\":\"100W1229\",\" blit\":\"0N031210\",\" bliv\":\"0Z36100F\",\" blod\":\"0Z0D100812071P1Y\",\" bloe\":\"0R1B\",\" blom\":\"010I0Z0Q100I120C\",\" bly\":\"012G0Z0710071205\",\" bly \":\"012D\",\" blå\":\"0Z0F100E120K\",\" blå \":\"0Z0E10061209\",\" bo \":\"0Z041007120B1A0H\",\" boa\":\"0M060P0V15061O03\",\" boa \":\"0P0V\",\" bodd\":\"1008120F\",\" boe\":\"012G0R2F0Z0F\",\" boek\":\"012A0R2S\",\" bog\":\"0V0J0Z1J1404150K1A0J1Q1Z\",\" bog \":\"0Z14\",\" boge\":\"0Z0F\",\" boh \":\"0Y1F\",\" boi\":\"0L150P031A08\",\" boj\":\"0U100V0E0Y0X1A051O021Q0D\",\" bojí\":\"0U140Y0R\",\" bok\":\"101D121S14041A021B061F02\",\" bok \":\"100I120G\",\" boke\":\"100Q120T\",\" bol \":\"0L030Y6N1F031N1G\",\" bola\":\"0B0J0D040O020P080Y3J1A031N7I\",\" bold\":\"0Z03141D1N3W\",\" bole\":\"0B310O030U0F0V0S0Y0I1A021Q0E\",\" boli\":\"0Q030V0C0Y2K0Z0215051A0C1F021O02\",\" bolj\":\"0V2H1N17\",\" bolm\":\"1N73\",\" bolo\":\"0P0C0Y2N140B\",\" bols\":\"0O0F0P0A1N4E\",\" bolu\":\"1N4T\",\" bolý\":\"1N3Q\",\" bom \":\"0P1S0R021Q18\",\" bon \":\"0L2Q\",\" bona\":\"0T0Z1O3T\",\" bone\":\"0B090M020P030R021O3A1Q0Q\",\" boni\":\"0O0I0P0R0T0G\",\" bonn\":\"0L2C\",\" bonu\":\"0T1E1O02\",\" bonv\":\"1O22\",\" boo\":\"010M0M120N020R0Y0T04\",\" book\":\"0M1C\",\" bor \":\"0Z1O1013121G1404\",\" borg\":\"0Z041322\",\" bort\":\"0Z0A1010120W14091Q0A\",\" borð\":\"1344\",\" bose\":\"046M0D02\",\" both\":\"0M13\",\" bott\":\"010T0L020M070Q0C1004\",\" bou\":\"0L1W0M0M0R070U06\",\" boug\":\"0L0F0M0P\",\" bov\":\"0R0D0T091O071P1B1Q08\",\" bovü\":\"1P1J\",\" boy\":\"0M0H1F0Z\",\" boý\":\"1N14\",\" bp\":\"0S0R\",\" bra \":\"10271213\",\" brat\":\"0N020U1B0V160Y1Y1A0Y\",\" brau\":\"0N2713101D1D\",\" brav\":\"0L040M030P070Q0R1O03\",\" brea\":\"0M0V\",\" bren\":\"0N050R0Y1207130L\",\" brev\":\"0O030P0A0Q040T0I0Z0X100G120L\",\" brie\":\"010Q0M020N0U0R0T\",\" broe\":\"01160R1G0Z03\",\" brol\":\"1B2R\",\" bror\":\"0Z0P100H120O\",\" brug\":\"0R060Z33\",\" bruk\":\"100F121G\",\" bry\":\"0Z0J100G120I1A04\",\" bryd\":\"0Z0F\",\" brz\":\"0U120V0L1A0E\",\" brzy\":\"0U161A05\",\" bræ\":\"0Z0J1306\",\" bræn\":\"0Z0F\",\" brö\":\"100R\",\" bröd\":\"100F\",\" brø\":\"0Z0P120K\",\" brød\":\"0Z0T120G\",\" brā\":\"1D0Z\",\" brāl\":\"1D1R\",\" brī\":\"1D1U\",\" brīn\":\"1D1R\",\" brīv\":\"1D21\",\" bu \":\"03040L071FD71NEC\",\" bua\":\"0B0S0S1C\",\" buac\":\"0S3A\",\" buc\":\"0M020N100Q040T03151H\",\" buch\":\"0N1N\",\" bude\":\"0U5B0V4U0Y6R\",\" budo\":\"0U120Y0O1A05\",\" budu\":\"0U1H0V131F05\",\" budú\":\"0Y17\",\" bue\":\"0O2S\",\" buen\":\"03030O3M\",\" bug\":\"0D020Q0614021F1S\",\" bugü\":\"1F2F\",\" buh\":\"04190D0T\",\" buha\":\"0D12\",\" bui\":\"010Q0M0E0Q040R16\",\" buil\":\"0M0J\",\" buit\":\"010N0R1E\",\" buk \":\"1P1A\",\" buka\":\"0B5J0D0M\",\" buki\":\"0B090D051P3F\",\" buku\":\"0B4H\",\" bula\":\"0B1R0D0H1F111N14\",\" bulu\":\"1F1O\",\" bum\":\"0B0B0D0W\",\" buma\":\"0D0S\",\" bumi\":\"0B0L0D0R\",\" bun \":\"1528\",\" bunu\":\"1FAB\",\" bună\":\"152E\",\" buo\":\"0D0C0Q1M\",\" buon\":\"0D0L0Q1N\",\" bura\":\"0P031F5O\",\" burd\":\"0Z0O120S\",\" buru\":\"03030B1X\",\" bus \":\"010I0B0H0D070L0P0M0F0N0F0O060R0N0Z091B2W\",\" busc\":\"0O140P090Z02\",\" buss\":\"0Z0N100H111F120K14061C1Z\",\" busy\":\"0M0L\",\" but \":\"0L0B0M36\",\" buti\":\"0D020Z0F1004120A1O0C\",\" buv\":\"0L051B9A\",\" buva\":\"0L031B2U\",\" buvo\":\"0L021BFD\",\" buw\":\"0D0B\",\" buwa\":\"0D0J\",\" buy\":\"0M0W1F031Q06\",\" buy \":\"0M14\",\" bw\":\"041S\",\" bwa\":\"0429\",\" by \":\"012Q0M2Y0U3H0Y900Z0D100212071A1G\",\" byc\":\"0U3V1A03\",\" bych\":\"0U5C\",\" byd\":\"0U0T0Z02\",\" bydl\":\"0U14\",\" bye\":\"0Z0H120Y\",\" byen\":\"0Z0H120X\",\" byg\":\"0Z0H100F120I130K\",\" bygg\":\"0Z0B100F12091317\",\" byl\":\"0U9Y1A0M\",\" byl \":\"0U7N\",\" byla\":\"0U2X\",\" byli\":\"0U161A0Y\",\" bylo\":\"0U2G\",\" byr\":\"1316\",\" byrj\":\"132F\",\" bys\":\"0U1Z\",\" bys \":\"0U1Y\",\" byst\":\"0U0T1A02\",\" być\":\"1A1Z\",\" być \":\"1A35\",\" był\":\"1A86\",\" był \":\"1A4U\",\" była\":\"1A2Q\",\" byłe\":\"1A25\",\" było\":\"1A3D\",\" byť\":\"0Y31\",\" byť \":\"0Y3R\",\" bá\":\"0O020P020S1J0U0C0Y0V130A141I\",\" bán\":\"0S0O140Q\",\" bán \":\"0S2K\",\" bár\":\"141S\",\" bás\":\"0O020S0Q0U050Y0O\",\" bás \":\"0S32\",\" bâ\":\"0L06\",\" bä\":\"0N04101C1N2A1P0N\",\" bäl\":\"1P0T\",\" bär\":\"0N03100A1N2M\",\" bärd\":\"1N1L\",\" bäri\":\"1N20\",\" bäs\":\"100K\",\" bäst\":\"100K\",\" bät\":\"100O\",\" bätt\":\"100O\",\" bå\":\"0Z05100J1206\",\" båd\":\"0Z0D100I120A\",\" bæ\":\"0Z0412021310\",\" bæku\":\"1320\",\" bé\":\"0L0A0O040S13140M\",\" béa\":\"0S1A\",\" béar\":\"0S4R\",\" bê\":\"0L040P05\",\" bí\":\"0P020S0W0U09131J140P\",\" bíl\":\"0U0C131O\",\" bír\":\"1414\",\" bó\":\"131I1A0A\",\" bók\":\"132E\",\" bók \":\"1321\",\" bö\":\"0N04101P130O14091F151N0J1P0F\",\" böc\":\"100M1F02\",\" böck\":\"100M\",\" bör\":\"101K130Z140A\",\" börj\":\"101B\",\" börn\":\"1321\",\" böyl\":\"1F16\",\" bø\":\"0Z10120T\",\" bøg\":\"0Z0P\",\" bøge\":\"0Z0V\",\" bøk\":\"120Q\",\" bøke\":\"120P\",\" bør\":\"0Z1N1213\",\" bør \":\"0Z0D1211\",\" børn\":\"0Z1J\",\" bú\":\"0O020Y07131M1407\",\" búi\":\"131M\",\" búin\":\"132I\",\" bü\":\"0N0B14091F3G1N0R1P0R\",\" büt\":\"1F1J1N0V\",\" büti\":\"1N16\",\" bütü\":\"1F21\",\" büy\":\"1F2E\",\" büyü\":\"1F3A\",\" bý\":\"0U230Y0R130L\",\" být\":\"0U2M\",\" být \":\"0U3M\",\" býv\":\"0U0T0Y1A\",\" býva\":\"0U120Y1M\",\" bă\":\"151W\",\" bē\":\"1D1C\",\" bēr\":\"1D1R\",\" bērn\":\"1D4H\",\" bė\":\"1B0E\",\" bę\":\"1A2I\",\" będ\":\"1A3L\",\" będz\":\"1A45\",\" bě\":\"0U0H\",\" bı\":\"1F1P\",\" bır\":\"1F1L\",\" bıra\":\"1F26\",\" bū\":\"1B3D1D58\",\" būs\":\"1B0N1D1N\",\" būs \":\"1D3Q\",\" būt\":\"1B341D4V\",\" būt \":\"1B0H1D63\",\" būti\":\"1B4H\",\" būtu\":\"1B091D4H\",\" bɣ\":\"033G\",\" bɣan\":\"033B\",\" bɣi\":\"0327\",\" bɣiɣ\":\"033Q\",\" c'\":\"04180L5M0Q1N\",\" c'e\":\"0L8C0Q0H\",\" c'es\":\"0LDF\",\" c'i\":\"041Z\",\" c'è\":\"0Q26\",\" c'è \":\"0Q28\",\" c'é\":\"0L10\",\" c'ét\":\"0L1Q\",\" ca \":\"1557\",\" cab\":\"0L030M030O1I0P121506\",\" cabe\":\"0O0X0P16\",\" cac\":\"0L0I0O060P0W0Q060T03\",\" cach\":\"0L0T0O050P14\",\" cad\":\"0L0G0O190P110Q0E0R090S3E0T0E150P1F0A\",\" cad \":\"0SCX\",\" cada\":\"0O1I0P0S0T03\",\" cae\":\"0O090T2B\",\" cael\":\"0T16\",\" caf\":\"0L0O0M020O0O0P0P0Q0O0R020T040Z031511\",\" café\":\"0L120N020O0U0P0U0R02\",\" cai\":\"0L050M020O020P0W0Q020S5K0T041507\",\" cail\":\"0L020S65\",\" cain\":\"0S3S0T04\",\" cait\":\"0S9X\",\" call\":\"0M1L0O0W0Q020T03\",\" cama\":\"0L040O0R0P0J\",\" camb\":\"0L030O1E0Q0Z\",\" came\":\"0M170O020P020Q0M0R050T08151U\",\" cami\":\"0L080O1R0P170Q080T021F02\",\" can \":\"0M4U1F06\",\" can'\":\"0M2H\",\" cana\":\"0D040L0M0M090O0G0P0H0Q0R0R0C0T090Z0E150F1F03\",\" cane\":\"04I90P080Q0X0T22\",\" cani\":\"0Q080T22\",\" cank\":\"0489\",\" cans\":\"0O0Q0P0P\",\" cant\":\"0B0S0O150P0V0Q0S0T0R1506\",\" cap\":\"0B040L0R0M0A0O0Y0P0W0Q2X0T20151H\",\" capi\":\"0L0D0M050O0C0P0D0Q1S0T0V150E\",\" car \":\"0L0R0M1F\",\" cara\":\"0B200L090O0U0P0O0Q060T051508\",\" care\":\"0L030M160O030P020T07159Q\",\" carr\":\"0L090M0C0O0N0P280Q0K0S4Z\",\" cart\":\"0L0N0M020O150P170Q0E0T05152R\",\" casa\":\"0O500P5K0Q3C151F\",\" casi\":\"0O120Q03\",\" cat \":\"0M0D0S49\",\" cath\":\"0L060M020S3J0T03\",\" cau\":\"0L0M0M0F0O0F0P0L0Q0B0T1F151K\",\" caus\":\"0L0W0M0A0O0I0P0N0Q0A0T0Z\",\" cał\":\"1A1O\",\" ce \":\"0LC90Q0E15EM\",\" cea\":\"0S5P152N\",\" cean\":\"0S4I\",\" ceap\":\"0S3J\",\" cear\":\"0SBR1509\",\" cec\":\"0L0R0Q050T0H\",\" ceci\":\"0L1B0T0I\",\" ced\":\"0O030P0K0T051O02\",\" cee\":\"151Z\",\" ceea\":\"152J\",\" cei\":\"0L030S0Q150Z\",\" ceis\":\"0S2T\",\" cel \":\"152Z1A05\",\" cela\":\"0B0A0L490T041O07\",\" cele\":\"0M040O080P050Q020T0Z0U020V08151E1A041O02\",\" celu\":\"0L190O040P090V0615081A07\",\" cem\":\"0O020P051P15\",\" cep\":\"0B0V0L030O030T071F05\",\" cepa\":\"0B1P\",\" cerc\":\"0L040O0T0P0A0Q2F1508\",\" cert\":\"0L1O0M0C0O020P220Q0G0T0W150E1O1R\",\" ces\":\"0L200O030P030Q030T060U150Y1L1F0C\",\" ces \":\"0L2U\",\" cest\":\"0O020P020U1L0Y1Y\",\" cet\":\"0L5Q0T0C1O04\",\" cet \":\"0L21\",\" cett\":\"0L7Q\",\" cev\":\"152Z1F0S\",\" ceva\":\"153S1F12\",\" ceļ\":\"1D18\",\" ceļo\":\"1D1M\",\" cha'\":\"1Q9I\",\" chah\":\"1QA6\",\" chai\":\"0L0E0M070S7A\",\" cham\":\"0L1U0M030O030P1J0R02\",\" chan\":\"0L4D0M1G0N080O020P090R020T0B0Z0810071Q0M\",\" chao\":\"0S2K\",\" chaq\":\"0L1B0O031Q4I\",\" chat\":\"0L1G0M020P070U021A021Q1O\",\" chau\":\"0L1M0R020Z02\",\" chaw\":\"1Q4R\",\" chc\":\"0U570YA11A6Y\",\" chce\":\"0U450YBU1A3S\",\" chci\":\"0U381A4M\",\" chcę\":\"1A2Y\",\" che \":\"0QOB\",\" chea\":\"0M080SGK1509\",\" cheg\":\"0P2C1Q1Y\",\" cher\":\"0L220M021Q0C\",\" chev\":\"0L1D\",\" chez\":\"0L23\",\" chi \":\"0Q2I\",\" chia\":\"0L020Q2X152V\",\" chie\":\"0L220Q2D\",\" chil\":\"0M1E0O040Q030T0411021Q0B\",\" chiu\":\"0Q0T\",\" chl\":\"0S1P0U140Y2I1A07\",\" chla\":\"0U0Y0Y21\",\" chli\":\"0Y0Z\",\" chlo\":\"0S5X\",\" chod\":\"0U1V0Y1E1A1V\",\" choi\":\"0L100M070S2T\",\" chom\":\"0S8U1Q0E\",\" chon\":\"0S3S1Q12\",\" chor\":\"0P0L0Y141A141Q1N\",\" chos\":\"0L5H0M041Q12\",\" cht\":\"0U2B\",\" chtě\":\"0U32\",\" chu'\":\"1Q72\",\" chua\":\"0S4R\",\" chui\":\"0SCK\",\" chun\":\"0SFI1Q14\",\" chy\":\"0U1W0Y1I1A0L\",\" chyb\":\"0U1O0Y0X1A0Y\",\" ché\":\"0L030S1P\",\" chéa\":\"0S2K\",\" chéi\":\"0S4I\",\" chó\":\"0S1Y\",\" chón\":\"0S58\",\" chýb\":\"0Y0X\",\" chło\":\"1A1H\",\" ci \":\"0Q4S150F1A2G\",\" cib\":\"0Q0I0T14\",\" cibu\":\"0T0U\",\" cid\":\"0P151F0E\",\" cida\":\"0P1G\",\" cie\":\"0L0C0O1Q0P080Q090Y0E1A2K1D0S\",\" cieb\":\"1A1S\",\" cier\":\"0O0Y1A0G\",\" cik\":\"030H14051D36\",\" cik \":\"1D7N\",\" cil\":\"0Q0E0V071D661F021P34\",\" cil \":\"1P12\",\" cili\":\"03031P19\",\" cils\":\"1P11\",\" cilv\":\"1DEN\",\" cinc\":\"0O0Y0P0L150X\",\" cine\":\"0O090P080Q0H0T0D155L\",\" cint\":\"0B1M0O050P03\",\" circ\":\"0L0C0M040O080P060Q0B0T101508\",\" cirk\":\"0Z0D100214021O08\",\" citt\":\"0Q0W\",\" citu\":\"1D2O\",\" ciu\":\"0O12150Q\",\" ciud\":\"0O1E150W\",\" ciò\":\"0Q0W\",\" ciò \":\"0Q0W\",\" cię\":\"1A29\",\" cię \":\"1A2R\",\" clas\":\"0L0O0M0M0O120P070Q0A0T07150U\",\" cle\":\"0L030M0M\",\" clea\":\"0M0R\",\" clo\":\"0L080M0X\",\" clos\":\"0M0Q\",\" clu\":\"0L030M050O040P030R020S0Q\",\" co \":\"043G0U9W1A69\",\" coch\":\"0L040O1J\",\" coci\":\"0O0T\",\" coe\":\"0P030T0R\",\" cog\":\"0L020O0E0Q040T1H\",\" cogn\":\"0L030Q030T0U\",\" coi\":\"0L0C0M020O030P2H0Q050S130T02\",\" cois\":\"0P32\",\" cold\":\"0M0J\",\" coll\":\"0L0U0M0I0Q0G0R040T14\",\" colo\":\"0L0I0M0B0O0T0P0Y0Q0N0R020T0H1505\",\" com \":\"0PD8\",\" comb\":\"0L2G0M020O070P0A0Q07\",\" come\":\"0M270O3I0P4P0Q4E0T0N150D\",\" comh\":\"0S3S\",\" comi\":\"0L030M0L0O240P200Q0U0T0E1509\",\" comm\":\"0LC00M0R0Q0K0R090T19\",\" como\":\"0O5P0P5Y0Q021505\",\" comp\":\"0L6H0M1U0N0A0O5Y0P5G0Q4Y0R0R0T1I0Z0N153N\",\" con \":\"0L040OCJ0Q8P\",\" cona\":\"0S4I0T0C\",\" conc\":\"0L190M0J0O0Z0P130Q0K0R0F0T0U1517\",\" cond\":\"0L1Q0M080O170P0J0Q0I0R020T0K151S\",\" conf\":\"0L1V0M0K0O1H0P1J0Q0N0R030T111511\",\" conh\":\"0P2F\",\" conm\":\"0O0V\",\" conn\":\"0L3K0M030Q03\",\" cono\":\"0O2H0P0B0Q2D\",\" cons\":\"0L3R0M0X0O390P4W0Q190R070T3R1528\",\" cont\":\"0L4W0M130O4P0P4Y0Q350R0O0T1Q1538\",\" conv\":\"0L120M0M0O170P1U0Q0J0T1D150T\",\" cop\":\"0L0E0M060O080P0C0Q0H0T040U04152Z\",\" copi\":\"0L0I0O060P020Q080T041530\",\" cora\":\"0L020O0N0P0S0Q0E0T0H1A0B\",\" corr\":\"0L0U0M0A0O1Z0P1K0Q0T0R070T0E\",\" cort\":\"0O0Y0P0I0Q07\",\" cos\":\"041D0L040M080O290P0S0QIX0S0Z0T03150N\",\" cos'\":\"0Q0S\",\" cosa\":\"0O230Q4N\",\" cose\":\"042F0O050Q13\",\" cost\":\"03030L050M0B0O0P0P0Y0QCG0T02150U\",\" così\":\"0Q36\",\" cosú\":\"0S2K\",\" cou\":\"0L4Y0M400N030P020R02\",\" coul\":\"0L0R0M3T\",\" coun\":\"0M0Z0R02\",\" coup\":\"0L200M08\",\" cour\":\"0L3O0M0D\",\" coś\":\"1A1L\",\" coś \":\"1A2K\",\" cra\":\"0L0R0M0D0P020Q040T141507\",\" cras\":\"0M030T14\",\" cre\":\"0L060M0G0O3X0P0L0Q230R040T2J1592\",\" cred\":\"0M030Q1G0T1I157B\",\" cree\":\"0M020O1N1507\",\" creo\":\"0O25\",\" crez\":\"152A\",\" cri\":\"0L0T0M0F0O0O0P220Q0F0R040T08150X\",\" cria\":\"0L030O050P1X\",\" cro\":\"0L240M0B0O020P030Q080T051504\",\" croi\":\"0L2T\",\" cs\":\"1484\",\" csa\":\"14AK\",\" csak\":\"148R\",\" csal\":\"141K\",\" cse\":\"141C\",\" csi\":\"1458\",\" csin\":\"144O\",\" cso\":\"141O\",\" cu \":\"15FJ\",\" cua\":\"0B0D0O5I\",\" cual\":\"0O10\",\" cuan\":\"0O4X\",\" cub\":\"0O0B0T160Z02\",\" cubi\":\"0O060T17\",\" cuc\":\"0B070O0B0Q0P0T091403\",\" cue\":\"0L020O1U\",\" cuen\":\"0O16\",\" cui\":\"0L0S0O0Q0P0X0Q100S1E0T1A150G\",\" cui \":\"0Q100T0L150A\",\" cuid\":\"0O0Z0P16\",\" cuir\":\"0L040S3S\",\" cuk\":\"03050B0X0U070Y0B140D1A071B081D0K\",\" cuku\":\"0B1J1D1I\",\" cul\":\"0L0E0M040O0S0P0K0Q060R040T1I150Y\",\" cum\":\"04260B090O0J0P070T6I15651F09\",\" cum \":\"0T6G154P\",\" cump\":\"0O0P0P08153A\",\" cun\":\"0P020T0T1522\",\" cuno\":\"152N\",\" cur \":\"0T3E\",\" curr\":\"0M050Q020T141102\",\" cuá\":\"0O33\",\" cuál\":\"0O19\",\" cuán\":\"0O2V\",\" cy\":\"0L020T060Z0C10091A04\",\" cyk\":\"0Z0W100C\",\" cyke\":\"0Z0N1008\",\" cykl\":\"0Z0G1004\",\" cz\":\"1ABQ\",\" cza\":\"1A33\",\" czas\":\"1A4B\",\" cze\":\"1A2U\",\" czeg\":\"1A1D\",\" czek\":\"1A1E\",\" czy\":\"1A8V\",\" czy \":\"1AB1\",\" czyt\":\"1A1N\",\" czło\":\"1A1O\",\" cá\":\"0O0F0P040S2Z\",\" cá \":\"0P030S2Y\",\" câ\":\"0P081584\",\" câin\":\"151U\",\" cân\":\"0P03156B\",\" când\":\"1564\",\" cânt\":\"1521\",\" cât\":\"154K\",\" cât \":\"153J\",\" câte\":\"152C\",\" cã\":\"0P09\",\" cæ\":\"0T0B\",\" cé\":\"0L0A0O040P0F0S61140C\",\" cé \":\"0S2L\",\" céa\":\"0S13\",\" céar\":\"0S2K\",\" cén\":\"0S3I\",\" cén \":\"0SDB\",\" cí\":\"0O020P020U0J0Y0R1405\",\" cít\":\"0U0P0Y18\",\" cíti\":\"0U0F0Y1J\",\" có\":\"0O1J0P040S211A0A\",\" cóc\":\"0S0Z\",\" cóca\":\"0S41\",\" cóm\":\"0O29\",\" cómo\":\"0O2V\",\" cón\":\"0S0M\",\" cóna\":\"0S2K\",\" cô\":\"0L0D\",\" cú\":\"0S17\",\" cúr\":\"0S0M\",\" cü\":\"1F0H\",\" că\":\"15F8\",\" că \":\"15IJ\",\" căr\":\"151Y\",\" cē\":\"0T04\",\" cī\":\"1D0E\",\" cō\":\"0T06\",\" cœ\":\"0L0C0T07\",\" cū\":\"0T0C\",\" d'\":\"0L8T0P020Q0T0S44\",\" d'a\":\"0L5O0Q0V0S1J\",\" d'ao\":\"0S3J\",\" d'ar\":\"0L1S0Q03\",\" d'au\":\"0L1O\",\" d'e\":\"0L290Q03\",\" d'en\":\"0L1B\",\" d'f\":\"0S1N\",\" d'fh\":\"0S6M\",\" d'i\":\"0L150Q050S0X\",\" d'o\":\"0L0W0Q07\",\" d'u\":\"0L35\",\" d'un\":\"0L53\",\" d'é\":\"0L0Z0S0M\",\" d'éi\":\"0S2K\",\" d'ê\":\"0L0U\",\" d'êt\":\"0L1G\",\" d-\":\"03MO\",\" d-a\":\"0341\",\" d-aɣ\":\"038C\",\" d-i\":\"0324\",\" d-is\":\"0330\",\" d-n\":\"032Y\",\" d-ns\":\"032R\",\" d-s\":\"035B\",\" d-sɣ\":\"03B1\",\" d-t\":\"03AO\",\" d-ta\":\"036L\",\" d-te\":\"039H\",\" d-ts\":\"0345\",\" d-tu\":\"0339\",\" d-y\":\"0349\",\" d-ya\":\"0339\",\" d-ye\":\"0354\",\" daa\":\"01710D070R2Q\",\" daar\":\"016Z0R3J\",\" dab\":\"0N0B0O030T0J1B2V1D0O1P0N1Q2A\",\" daba\":\"0O030T031B5U1Q0C\",\" dac\":\"0N0I0R0W154B1A031Q21\",\" dach\":\"0N0U0R181A051Q3I\",\" dacă\":\"155F\",\" dag \":\"010S0R220Z3A101N122M133V\",\" daga\":\"0D09100G131D1403\",\" dage\":\"0N070R0U0Z1B100J1217\",\" dagh\":\"1Q61\",\" dah\":\"0B050D100N081F6B1Q9P\",\" dah \":\"1Q8P\",\" daha\":\"0D041F8E1Q1A\",\" dahi\":\"0D1O0N071F05\",\" dahj\":\"1Q6G\",\" dai\":\"0D040M020Q0E150F1B1L1F0I\",\" dain\":\"1B2E\",\" daj\":\"0V0Q0Y141A0L1Q3V\",\" dak\":\"03260R051B051F0N\",\" dakk\":\"034S\",\" dal \":\"0Q130U180Y1014031Q0A\",\" dala\":\"0B830D1B0U0B0V0D0Y0C1A021Q18\",\" dalk\":\"010P\",\" dall\":\"0Q1T\",\" daly\":\"1B1R\",\" dalš\":\"0U0V\",\" dana\":\"0B0F0N080T090V5N1B081Q0C\",\" dane\":\"0D030N020Q041A031Q62\",\" dank\":\"01100N0Y0R0J1O10\",\" dann\":\"0N1M0Q060Z02\",\" dans\":\"010P0LFD0R0G0V0B0Z0S100D120G130J150D1F0I\",\" dao\":\"0S1P0V0C\",\" daoi\":\"0S58\",\" dap\":\"0B200D0W0Q020R021Q25\",\" dapa\":\"0B3K0D1M1Q23\",\" daq\":\"0P0O1Q4E\",\" daqu\":\"0P0U1Q1G\",\" dar \":\"0N020O0L0P0T15431B7Q1F02\",\" darb\":\"1B4V1D5C\",\" dari\":\"0BCX0N0B0P021B041Q0J\",\" daro\":\"0U021B1Q\",\" dary\":\"1B49\",\" darī\":\"1D8S\",\" das\":\"0B080NJR0O030P1M0R021PEC1Q4B\",\" das \":\"0NLY0O040P210R021PGB\",\" daso\":\"1Q4U\",\" dass\":\"0NBS\",\" dat \":\"013X0ROA0T0E15271P1N1Q0I\",\" dato\":\"0O030Q0S0Z02100C150Q1O02\",\" datt\":\"0Z0J120C\",\" dau\":\"0M080N09130O150J1B6C1D4J\",\" daud\":\"1DB4\",\" daug\":\"0M0B1BCE\",\" davv\":\"0Q1F\",\" daw\":\"03050D081A0B1Q0M\",\" daw \":\"0D0F\",\" day\":\"03070B040D020M1M1F0A1Q0I\",\" day \":\"0M1M\",\" days\":\"0M0L\",\" daş\":\"1N1U\",\" daşa\":\"1N1B\",\" daž\":\"0Y081B181D1P\",\" dažn\":\"1B28\",\" dc\":\"0U0B0Y0H\",\" dcér\":\"0Y10\",\" dd\":\"0339\",\" dea\":\"0M0R0S2L0T07150E\",\" dear\":\"0M020S6E\",\" deas\":\"0S2K1505\",\" debe\":\"0O4K0T110V071B0A\",\" dece\":\"0M040O080P060Q020R020T0W0V0D0Z02150B1O02\",\" deci\":\"0M0W0O310P0U0Q0W0T0F0V0B151E1O14\",\" decâ\":\"153A\",\" dedi\":\"0O070P050Q030T1H0Y0G15051F0P1O06\",\" dee\":\"010S0M070R1D0T05\",\" deed\":\"0R18\",\" deel\":\"010P0R0K\",\" deg \":\"03OT127U\",\" degl\":\"0Q0V\",\" dei\":\"0N320P2I0Q2P0S220T0X1309\",\" dei \":\"0P070Q2Q0T0L\",\" deic\":\"0S2T\",\" dein\":\"0N520T07\",\" deir\":\"0S41\",\" deix\":\"0P2R\",\" dej\":\"0O2L0U0O0Y0I0Z061002151G1B06\",\" deja\":\"0O28151G1B09\",\" dek\":\"0B0L0D020R040U02120C1A021B021F031O0Z\",\" del \":\"0O8H0Q4V0Z09100E12091P0G\",\" dela\":\"0B0H0M020O0A0P1D0T021008\",\" dele\":\"0M020O030P2I0R050T0T0Z0510031206\",\" dell\":\"0Q6E\",\" dem \":\"0N7G0Z22101B121X\",\" dema\":\"0L500M040O1T0P111O28\",\" den \":\"0NBV0S4I0U1W0ZAM1097126Y\",\" dene\":\"0N0C0R021A051F16\",\" deng\":\"0BHQ0Z041F03\",\" denk\":\"0N200R3Y\",\" denn\":\"0N1K0U090Y0S0Z3X100W1245\",\" dent\":\"0L0M0M020O0J0P0T0Q0L0T0E15061A051O0F\",\" deo\":\"0T0O0V07150Q\",\" depa\":\"0B280M030O040P021515\",\" depo\":\"0O0A0P190T051F02\",\" depu\":\"0L1V0T0415081O02\",\" der \":\"0NM60R020ZB0121R1402\",\" dere\":\"0D020N070O0P0Z1D122I14021F0I\",\" dern\":\"0L25\",\" des \":\"0LGZ0N400O020R03150G1O0B\",\" desa\":\"0B0C0O1D0P0R0Y0X\",\" desc\":\"0L0H0M050O1M0P270Q040T0E152G\",\" desd\":\"0O1G0P0N\",\" dese\":\"0M070O130P1D0T080U0O0V11150H1A031B031O08\",\" desi\":\"0D060M060O080P0C0Q090T120V130Y0E1505\",\" desp\":\"0M080O300P0L0T04153N\",\" dess\":\"0L0Q0N080P0Y0Q020Z02100E120E1402\",\" det \":\"0ZMQ10NO12NZ\",\" deti\":\"0V0A0Y1T\",\" dett\":\"0L050Q4D0Z3K101K125Q\",\" deu\":\"01270L2G0N0U0O020P1I0R0S0T2M1P1D\",\" deu \":\"0P0T\",\" deur\":\"012C0R0Z\",\" deus\":\"0P110T29\",\" deut\":\"0N1F1P1L\",\" deux\":\"0L45\",\" deva\":\"0L140P070U031F0X1O3D\",\" deve\":\"0L1X0M070P3Z0Q1B0T0A0V0F150X1F021O06\",\" devi\":\"0L0W0M030P0F0Q0Q150K1B061O1F\",\" devo\":\"0L1L0M020O080P0O0Q1I0T080V1Q1O0J\",\" devr\":\"0L3315141F05\",\" dez\":\"0P0K0R4O15161O0Z\",\" deze\":\"0P060R681O03\",\" dezi\":\"1O1U\",\" değ\":\"1F9Z\",\" deği\":\"1FCP\",\" deň\":\"0Y1Q1N0D\",\" deň \":\"0Y25\",\" deš\":\"0U0F0V091B0Y\",\" deši\":\"1B1W\",\" dh\":\"0S79\",\" dhe\":\"0S1P\",\" dhea\":\"0S49\",\" dhei\":\"0S2K\",\" dhu\":\"0S24\",\" dhui\":\"0S87\",\" dhá\":\"0S0X\",\" dhá \":\"0S3S\",\" dhé\":\"0S32\",\" dhéa\":\"0SBR\",\" di \":\"03070BGN0D0G0O090QPS0S0M0T031204\",\" dia \":\"0BPC0P2E0Q090S3A\",\" dias\":\"0P13\",\" dib\":\"0B1P0D020O07\",\" diba\":\"0B1K\",\" dice\":\"0O1O0Q1B0T1S\",\" dich\":\"0N4Z0O0S0Q040R0T\",\" dici\":\"0O090P0B0Q080T1P\",\" did\":\"0B0C0M810T5C1B2D\",\" did \":\"0M4L\",\" dide\":\"0B071B39\",\" didi\":\"0B070T0W1B04\",\" didn\":\"0M6Q\",\" didy\":\"0T4R\",\" die \":\"01S40M0A0NP80R6X0T13\",\" dien\":\"0N0B0O0A0R0B1B5S1D7R\",\" dies\":\"0NA40T1D\",\" diev\":\"0Y1O1B101D1W\",\" diez\":\"0O0S1D2F\",\" dieť\":\"0Y0Z\",\" dif\":\"0L1I0M0T0O1J0P1I0Q190T1715161O0E\",\" dife\":\"0O0S0P0Q0Q07150Q1O0N\",\" diff\":\"0L2K0M140Q130T1A1103\",\" difí\":\"0O110P0Y\",\" dig \":\"0Z76106Y\",\" diga\":\"0O0I0P0T\",\" dij\":\"0B0F0O2G0V031Q08\",\" dije\":\"0O0T\",\" dijo\":\"0O27\",\" dik\":\"0B0U0D020R0G1004120514031B021F131O07\",\" dikk\":\"0R061F16\",\" dila\":\"0B1D0D060T04\",\" dili\":\"0D030P020T0N1F0O1N2W1O07\",\" dime\":\"0O080Q0U\",\" din \":\"031W0D0C0Z3U1030123415C51F02\",\" dina\":\"0D080O020P03100S1506\",\" dine\":\"0O260R040Z1B1210\",\" ding\":\"010G0B150D020L040N0Q0R0U1B0H\",\" dinh\":\"0P1M\",\" dink\":\"011Y1B03\",\" dinl\":\"1F1A\",\" dint\":\"152C\",\" dio\":\"0O1F0Q0A1O0H\",\" dio \":\"0O0X0Q0A1O0S\",\" dios\":\"0O0Y\",\" dipe\":\"0B1S0Q05\",\" dir \":\"0N4L1Q0K\",\" dira\":\"0L0N1O1P\",\" dirb\":\"1B3R\",\" diri\":\"030L0B320L0A0O070P0M0Q090T031B021O5C\",\" dis \":\"01240L0U1Q2Y\",\" disc\":\"0L140M0J0O150P0T0Q0N0R070T3T1517\",\" disp\":\"0L1I0M040O0M0P0H0Q100T0B15161O0M\",\" diss\":\"0L070M020P520Q1Q0T0B0Z0Y120V\",\" dit \":\"01FQ0L550R850Z1L100F120B\",\" dito\":\"0D0Z0P080Q02\",\" ditt\":\"10191212\",\" diu\":\"0B050T0P\",\" dive\":\"0L070M020O0I0P0M0Q2B0T0I15051O0E\",\" divi\":\"0L080M030O090P0A0Q040T0W1O061Q5Q\",\" dix\":\"0L0K0T4O\",\" dixi\":\"0T4B\",\" diy\":\"0D0D1F0N\",\" diz\":\"0P2T0Q061F06\",\" diz \":\"0P0W\",\" dize\":\"0P2K\",\" diñ\":\"1N15\",\" diñl\":\"1N16\",\" diý\":\"1N8C\",\" diýd\":\"1N1Q\",\" diýe\":\"1N1S\",\" diýi\":\"1N6C\",\" diýý\":\"1N19\",\" diň\":\"1N3M\",\" diňe\":\"1N27\",\" diňl\":\"1N2V\",\" dj\":\"100G1305\",\" dju\":\"100K\",\" dl\":\"0S0W0U100Y1M1A2S1P1R\",\" dla\":\"1A3Z\",\" dla \":\"1A3P\",\" dlac\":\"1A2F\",\" dle\":\"0U021P0Z\",\" dled\":\"1P15\",\" dlh\":\"0Y2D\",\" dlho\":\"0Y1V\",\" dli\":\"1P19\",\" dlin\":\"1P1G\",\" dlo\":\"0U1G\",\" dlou\":\"0U20\",\" dlí\":\"0S0X\",\" dne\":\"0U2U0V060Y31\",\" dnes\":\"0U3G0Y3J\",\" do \":\"0MBR0P9Q0Q020S6R0U6I0V1A0Y801AAM1O0J1Q0Y\",\" doa\":\"0P02152Y\",\" doar\":\"153L\",\" doba\":\"0V1Q\",\" dobb\":\"0Q0Q0Z05\",\" dobi\":\"0V28\",\" dobr\":\"0P040U2M0V6G0Y6T1A56\",\" dobř\":\"0U25\",\" doce\":\"0O080P070R030T0U0U0D1A05\",\" doch\":\"0N280R0G0S3J0U031A041Q9G\",\" docu\":\"0L070M030O060P060Q050R030T0T1509\",\" dod\":\"0Q020R070U0A0V0C1A0B1D1C\",\" doe\":\"014P0M3G0P0J0R6G\",\" doe \":\"0R1K\",\" doen\":\"014S0P0M0R5L\",\" does\":\"0M4O\",\" doet\":\"0R1G\",\" dog \":\"010L0M0V0Q020Z06100H1P14\",\" dogi\":\"1P1O\",\" dogr\":\"1N2T\",\" dogt\":\"010K\",\" doi\":\"0L2Q0M1V0P15150U\",\" doin\":\"0M2K\",\" dois\":\"0L2E0P1E\",\" doit\":\"0L1K\",\" dok \":\"0V1U\",\" dola\":\"0B0G0U0C0V1K150J1A0I1F171N0L1O0B\",\" dolg\":\"144F\",\" dom \":\"010Q0R090S7R0Y1U10031A151P1Z\",\" doma\":\"0L040Q270U190V0I0Y1P1A021F021O04\",\" domh\":\"0S32\",\" domo\":\"0T0M0U090Y2K1A0I1O241P2G\",\" domu\":\"0T3S0U0H0Y0C1A381F03\",\" domā\":\"1D7I\",\" domů\":\"0U1E\",\" don \":\"0L030O020S65\",\" don'\":\"0M7W\",\" dond\":\"0O0X0R041F07\",\" done\":\"0M1H0T0A0U020V0J\",\" donn\":\"0L3P0N040Q0P\",\" doo\":\"010W0D0A0M0N0R3S0U061A02\",\" dood\":\"010V0R16\",\" doon\":\"0D0I\",\" door\":\"0M0V0R3M\",\" dop\":\"0N030Q0V0U1G0V0K0Y0E1A0F1Q0C\",\" dopi\":\"0U151A0B\",\" dopo\":\"0Q0T0U0B\",\" dora\":\"0S2T0U0D0Y0E1A041B03\",\" dore\":\"0P02151O\",\" dori\":\"151M\",\" dorm\":\"0L160O170P160Q0X0T1O15171O1H\",\" dos \":\"0D020L0C0O2X0P341Q0A\",\" dost\":\"0U3A0V170Y1K1A1G1F091N31\",\" dot\":\"0L020Q0L0U07100A1A0Q1D1J1Q0M\",\" doti\":\"1D2Y\",\" dou\":\"0L170M0A0P070R040U0Y1520\",\" douf\":\"0U1A\",\" două\":\"152E\",\" dov\":\"0Q8D0U0X0V0T0Y0W0Z04150C1B0F\",\" dove\":\"0Q4X0U050V070Z03150B\",\" dovo\":\"0U0T0V1R0Y0T\",\" dovr\":\"0Q2L\",\" dovu\":\"0Q0U\",\" dow\":\"0M100R020Z021A0G1N0L\",\" down\":\"0M1E0R020Z03\",\" dođ\":\"0V13\",\" doğ\":\"1F2B\",\" doğr\":\"1F1V\",\" dra \":\"1005120M\",\" draa\":\"0R0W\",\" drak\":\"0U020Z0E12051B031O02\",\" drar\":\"1003120F\",\" drau\":\"0N0G130X1B5I1D5Q\",\" drei\":\"0N210R021205\",\" drek\":\"131Z\",\" dren\":\"0Z0Y130P\",\" drep\":\"120I130X151E\",\" dric\":\"100W\",\" drie\":\"010T0R211B03\",\" drik\":\"0Z1I1213\",\" driv\":\"0M0V0Z021003\",\" dro \":\"120G\",\" droi\":\"0L1A\",\" dron\":\"010I0R0I0Z061O05\",\" droo\":\"010G0R0I\",\" droš\":\"1D2F\",\" drug\":\"0M050R030V4S1A0Q1B0D\",\" druh\":\"0U0W0Y1F\",\" druk\":\"0R0R0Z0G1204130B\",\" dræ\":\"0Z0K\",\" dræb\":\"0Z0O\",\" drö\":\"100F\",\" drø\":\"0Z0I120H\",\" drøm\":\"0Z0L120H\",\" dt\":\"0S2W\",\" dtí\":\"0S1C\",\" dtí \":\"0S4Z\",\" du \":\"0L7Q0NCN0ZHQ10K112M31B0X1O131P17\",\" dua\":\"0B1H0P0R0T0Q1F031O09\",\" dua \":\"0B2V1F041O0E\",\" duas\":\"0P0Y0T0K\",\" dubi\":\"0Q030T0S1O02\",\" duc\":\"0O050T0T0U05151R1A05\",\" dud\":\"0B0O0O0D1F021O07\",\" dudu\":\"0B1B\",\" due\":\"0M030O0J0Q1M0Z03\",\" due \":\"0M040Q1L\",\" duf\":\"041R0N020Z021O02\",\" dufi\":\"042Z\",\" dui\":\"010S0R1C0S6D\",\" duin\":\"0SEG\",\" duit\":\"0R0Y0SA4\",\" duj\":\"1B021Q5V\",\" duj \":\"1Q5H\",\" duk\":\"041K0Z04100512061B0M\",\" dul\":\"0B0S0D020O080S3A0T0E150A1B031Q06\",\" dul \":\"0SCK\",\" dulu\":\"0B1I\",\" dum \":\"0T0R0Z06100712081O3A\",\" duma\":\"0D0P1F02\",\" dumn\":\"151R1A0A\",\" duni\":\"0B27\",\" duno\":\"1P2A\",\" dunö\":\"1P6H\",\" duo\":\"0T1S1B1K1O0F\",\" dup\":\"0P020T03140215241Q07\",\" după\":\"152Q\",\" dura\":\"0L0E0O1E0P100Q0L0T04150I1F091N0J\",\" durc\":\"0N29\",\" durm\":\"0O0A0P031F0B1N1G\",\" duru\":\"0T071F181N0L\",\" durv\":\"14021D2O\",\" dush\":\"044Q\",\" duy\":\"1F241Q0G\",\" duyd\":\"1F14\",\" duý\":\"1N1P\",\" duş\":\"1F041N1L\",\" duż\":\"1A1X\",\" dużo\":\"1A21\",\" dva\":\"0U140V0P0Y1C1B02\",\" dva \":\"0U0U0V1A0Y0K\",\" dve\":\"0U0X0V0G0Y2K1B05\",\" dve \":\"0V150Y16\",\" dver\":\"0Y1X\",\" dveř\":\"0U1A\",\" dvi\":\"1B1Q\",\" dvě \":\"0U0T\",\" dw\":\"0R021A1E\",\" dy\":\"03020D020M020Z0I100B120G13101A0C1B041N17\",\" dyb\":\"0Z09\",\" dyn\":\"1N0Y\",\" dyp\":\"1209\",\" dyr\":\"0Z0Z100A120U131N1A021N0D\",\" dyr \":\"0Z0O1003120D\",\" dyrn\":\"132C\",\" dz\":\"030A1A5W1D8N\",\" dze\":\"1D1S\",\" dzer\":\"1D32\",\" dzi\":\"1A831D3D\",\" dzie\":\"1A751D3Q\",\" dzim\":\"1D1W\",\" dzir\":\"1D2F\",\" dzis\":\"1A1K\",\" dziś\":\"1A1U\",\" dzī\":\"1D66\",\" dzīv\":\"1DEN\",\" dà\":\"0Q03\",\" dá\":\"0O020P0F0S0R0U1G0Y1013061402\",\" dä\":\"102M1N8M\",\" däl\":\"1NBS\",\" däl \":\"1N85\",\" däld\":\"1N3Q\",\" dälm\":\"1N4U\",\" där\":\"103H\",\" där \":\"1036\",\" då\":\"0Z08100X120C\",\" då \":\"100M\",\" dål\":\"100M\",\" dåli\":\"100M\",\" dår\":\"0Z0L120U\",\" dårl\":\"0Z0P120U\",\" dæ\":\"0Z04130A\",\" dæk\":\"0Z09\",\" dè\":\"0L06\",\" dé\":\"0L6I0O0D0P030S3N0U070Z02140A\",\" déa\":\"0S49\",\" déan\":\"0SEG\",\" déb\":\"0L0P0O03\",\" déc\":\"0L270O020P02\",\" déci\":\"0L1F\",\" déj\":\"0L1V0O0B\",\" déjà\":\"0L2J\",\" dép\":\"0L17\",\" dés\":\"0L1K\",\" déso\":\"0L1D\",\" dét\":\"0L15\",\" déte\":\"0L19\",\" dê\":\"0P09\",\" dí\":\"0O200P020S1I0U1I1403\",\" día\":\"0O2Z\",\" día \":\"0O2K\",\" días\":\"0O1F\",\" dío\":\"0S0X\",\" díol\":\"0S2K\",\" dít\":\"0U0S\",\" dítě\":\"0U12\",\" dív\":\"0P020U1C\",\" dívk\":\"0U0X\",\" dî\":\"0L08\",\" dó\":\"0O1B0P0B0S1Q130E1A02\",\" dó \":\"0S1A1306\",\" dói\":\"0P030S0M\",\" dón\":\"0O1R\",\" dónd\":\"0O2A\",\" dô\":\"0Y1I\",\" dôle\":\"0Y0Z\",\" dôv\":\"0Y17\",\" dö\":\"101Y1307140H1F221N181P3M\",\" dö \":\"100B1P4G\",\" död\":\"100Z\",\" döda\":\"100K\",\" dön\":\"14111F1N\",\" dönt\":\"1413\",\" dör\":\"100Z14021F0E1N0O\",\" dörr\":\"100U\",\" döw\":\"1N0Y\",\" dø\":\"0Z0Z120Z\",\" dø \":\"0Z07120A\",\" død\":\"0Z181213\",\" død \":\"0Z0G1207\",\" døde\":\"0Z0Y120R\",\" dør\":\"0Z0X120P\",\" døre\":\"0Z0S120E\",\" dú\":\"0P050S1S0Y0N1303\",\" dúf\":\"0Y10\",\" dúfa\":\"0Y19\",\" dúi\":\"0S1L\",\" dúir\":\"0S4R\",\" dû\":\"0L0G\",\" dû \":\"0L0Q\",\" dü\":\"0N0414041F861N5W1P0D\",\" dün\":\"0N021F2C1N13\",\" dün \":\"1F1T\",\" düny\":\"1F1C\",\" düný\":\"1N1I\",\" düý\":\"1N21\",\" düýn\":\"1N2E\",\" düş\":\"1F671N4P\",\" düşü\":\"1F7J1N4Z\",\" dā\":\"1D1E\",\" dār\":\"1D13\",\" dārz\":\"1D1W\",\" dă\":\"150O\",\" dē\":\"0T091D10\",\" dēl\":\"0T051D0U\",\" dė\":\"1B2A\",\" dėl\":\"1B1W\",\" dėl \":\"1B3U\",\" dě\":\"0U48\",\" děl\":\"0U40\",\" děla\":\"0U3G\",\" dělá\":\"0U1Y\",\" dět\":\"0U1T\",\" děti\":\"0U1U\",\" dī\":\"0T0P1D0H\",\" dı\":\"1F19\",\" dış\":\"1F1G\",\" dışa\":\"1F1A\",\" dł\":\"1A0Y\",\" dłu\":\"1A1C\",\" dług\":\"1A1R\",\" dř\":\"0U0G\",\" dřív\":\"0U0T\",\" dū\":\"0T021B02\",\" dů\":\"0U1J\",\" důle\":\"0U0R\",\" dům\":\"0U14\",\" dům \":\"0U1J\",\" dž\":\"0U030V0M1B0O1D0Q\",\" dži\":\"0V031B0R\",\" ea\":\"0L020M1S0S260T34154M\",\" ea \":\"0S180T2E157I\",\" eac\":\"0M0H\",\" each\":\"0M0O\",\" eag\":\"0M020S0V\",\" eagl\":\"0S2T\",\" eam\":\"0T2N\",\" eam \":\"0T2H\",\" ear\":\"0M0Y0T04\",\" earl\":\"0M0P\",\" eas\":\"0M0K0T0I\",\" eat\":\"0M1A\",\" eat \":\"0M15\",\" ebb\":\"0Q04141O\",\" ebbe\":\"0Q03141G\",\" ebl\":\"1O1C\",\" eble\":\"1O1D\",\" ecc\":\"0Q0P0T1G\",\" ecce\":\"0Q070T16\",\" ech\":\"0N070O0M0R21150N\",\" echt\":\"0N0B0R2Q\",\" ed \":\"030Y0Q0A1P0Y\",\" ede\":\"0T0W111G1F3I1N5T\",\" eden\":\"0T071F091N49\",\" eder\":\"0T0G1F1T1N27\",\" edil\":\"1F1F1N22\",\" edip\":\"1F021N4W\",\" edit\":\"0T10\",\" ediy\":\"1F2Y\",\" edu\":\"0M030O080P070Q060T0L110515071A021O051P0Z\",\" edun\":\"0T0C1P15\",\" edz\":\"14051O11\",\" edzi\":\"1O1L\",\" edý\":\"1N41\",\" edýä\":\"1N5F\",\" ee\":\"01270R9C1C2O\",\" eel\":\"1C0Q\",\" een\":\"011U0RP5\",\" een \":\"011D0RRS\",\" eens\":\"0R1W\",\" eer\":\"01110R1R\",\" eers\":\"010P0R1J\",\" ees\":\"1C2J\",\" eest\":\"1C4F\",\" eet\":\"01270R0W\",\" eet \":\"012C0R14\",\" ef \":\"1327\",\" eff\":\"0L0O0M070Q070R030T0O0Z021003120B\",\" eft\":\"0Z2J1020133J\",\" efte\":\"0Z331020\",\" efti\":\"137B\",\" ege\":\"0T100Z0Q100O120Q14071N1Y1O091P0K\",\" egen\":\"0T020Z0F100J120M\",\" eger\":\"0T030Z0914051N2O\",\" egg\":\"0M041209130C\",\" egn\":\"0Z0410031209\",\" ego \":\"0T31\",\" egr\":\"0T0P\",\" egy\":\"0M030R030Z021002110214Q2\",\" egy \":\"14LW\",\" egye\":\"144I\",\" egyi\":\"141F\",\" egym\":\"141A\",\" egys\":\"1427\",\" együ\":\"1414\",\" egé\":\"142R\",\" egés\":\"142T\",\" eh\":\"0L030N0B0Q02110Q14061C0D1F03\",\" ei \":\"0N020P020R020T2E11HX120915611B041CLQ\",\" eie\":\"01120N040R090T061209\",\" eie \":\"010G\",\" eig\":\"0M040N0U0R0T131Y\",\" eige\":\"0N1D0R14\",\" eigi\":\"1320\",\" eik\":\"0R02111M1B0N\",\" eikö\":\"112H\",\" eil\":\"0N040R060S1J111I1B0A1C1K\",\" eile\":\"0N020S5X11381C3O\",\" ein \":\"0NFQ130X\",\" eina\":\"0N07131C1B1L\",\" eind\":\"010I0N070R0W\",\" eine\":\"0NL6\",\" einh\":\"0N05132D\",\" einm\":\"0N1Q130R\",\" einn\":\"0N02132H\",\" eins\":\"0N0X1367\",\" einu\":\"13271B0V\",\" eis\":\"0N080P040R020T0Q1B0K\",\" eit\":\"0M06131Q1B1O\",\" eiti\":\"1B3C\",\" eitt\":\"133I\",\" eiu\":\"0T3Q\",\" eius\":\"0T3Y\",\" eiv\":\"111Q\",\" eivä\":\"1147\",\" eje\":\"0O0E0Z0A1N1G\",\" ejo\":\"045O\",\" ejo \":\"049T\",\" ek \":\"01RY1P0E\",\" ek'\":\"010H\",\" ek's\":\"010G\",\" ekk\":\"13L714031O08\",\" ekke\":\"133X\",\" ekki\":\"13SG\",\" ekst\":\"0D030V080Z0512071O1J\",\" ekt\":\"120A1O02\",\" ekz\":\"1O17\",\" ekzi\":\"1O1A\",\" el \":\"0OPO148215BX1F081O2K1P34\",\" ela\":\"0P8P140Q1C3N1P0Q\",\" ela \":\"0P9G1P0Q\",\" elab\":\"1C1V\",\" elad\":\"140E1C1V\",\" elan\":\"11021C22\",\" elas\":\"0P1N\",\" eld\":\"1007120A131J14081F061O03\",\" ele \":\"0PE3150E1F041P0U\",\" eles\":\"0P4I1404\",\" elev\":\"0M030O030P060T030Z0D1007120C150H\",\" elf\":\"0N020R02141W1D0J1O02\",\" elfo\":\"1411\",\" elh\":\"141E\",\" eli \":\"110H1P19\",\" elk\":\"01230N060R1Y14241O02\",\" elka\":\"0R1B1406\",\" elke\":\"01240N0A0R12140T\",\" ella\":\"0O911O02\",\" ello\":\"0O2N140A\",\" elm\":\"143J1F0B1N0E1O02\",\" elme\":\"141X\",\" elmo\":\"1413\",\" elo\":\"0O020P030T031116140G\",\" els\":\"0M0G0Z1W121P131I141U1O07\",\" else\":\"0M0M\",\" elsk\":\"0Z2B121P1334\",\" első\":\"1419\",\" elt\":\"0N0F14181O0B\",\" elu\":\"14091C16\",\" elu \":\"1C1L\",\" elv\":\"1002120914221O02\",\" elve\":\"120614131O02\",\" elä\":\"112T\",\" eläm\":\"113E\",\" elé\":\"0O040P03142S\",\" elég\":\"1429\",\" elő\":\"144A\",\" előt\":\"141K\",\" em \":\"0PB7\",\" ema \":\"1C5S\",\" emb\":\"0L0G0M050O0I0P0U144U1O04\",\" embe\":\"1454\",\" eme\":\"0M020O020P020Q020T19140F1A031F07\",\" emer\":\"0M030O030P030T0Y1A061O02\",\" emin\":\"1F1Y\",\" eml\":\"141D\",\" emlé\":\"1419\",\" emm\":\"0L060R0211181N15\",\" emma\":\"1N1L\",\" emme\":\"0L060R02112Z\",\" emot\":\"0M030N020R02100E\",\" emp\":\"0B090D020L0V0M080N0A0O1V0P130T05\",\" empe\":\"0O18\",\" empr\":\"0L0C0O0B0P16\",\" ena\":\"0B0U0O0B10051C161O05\",\" enam\":\"0B0Q0O0E1C2X1O0A\",\" enc\":\"0L2E0M040O3F0P2L\",\" enca\":\"0O120P0B\",\" enco\":\"0L3Q0M040O280P2P\",\" end \":\"0M0E0Z2V1C1L\",\" enda\":\"100H120F130V1C2U1O03\",\" ende\":\"0M050N0U0P060Z0E120E\",\" endn\":\"0Z0V\",\" endr\":\"0L0J120D\",\" enem\":\"0M050O0C1133\",\" enes\":\"0Z0P120I\",\" enf\":\"0L290O180P0A\",\" enfa\":\"0L320O0D\",\" enfe\":\"0L040O110P06\",\" enga\":\"0L050M030O0B0P0C0Z0M1209131Z\",\" enge\":\"010T0N060P040R1N0Z19100W1216143D1F0A\",\" engi\":\"0M041346\",\" engl\":\"0M0O0N170V1W0Z071003113U1205130C151R1O02\",\" enh\":\"0Z0E1002120J1O05\",\" enhv\":\"0Z0F120I\",\" enig\":\"012D0R0V0Z08120C1O04\",\" enim\":\"0T161102\",\" enj\":\"0M0G\",\" enjo\":\"0M0M\",\" enk\":\"0N020R0N0Z05100B110D120L1O04\",\" enke\":\"0N030R0W0Z0610091108120H1O03\",\" enn\":\"0L0E111U123A131M142J1C14\",\" enn \":\"122R132E\",\" enne\":\"0L0A113W14151C1E\",\" ennå\":\"120K\",\" eno\":\"0M0L0O0E0P060Q030R050Z04100211041O03\",\" enou\":\"0M0T\",\" enq\":\"0L020P0K\",\" enqu\":\"0L040P0Q\",\" ens \":\"100G\",\" ensa\":\"0O060P02100M\",\" ense\":\"0L1C0O0U0T03\",\" ensi\":\"0P0Q1149\",\" ensk\":\"1328\",\" ente\":\"0L1X0M090N020O1A0P1I0Z031N0J1O05\",\" entr\":\"0L2O0M030N020O2Y0P2E0Q111O0A\",\" ents\":\"0N1S\",\" entã\":\"0P0U\",\" env\":\"0L1A0M040O0I0P0K10061O05\",\" enä\":\"1002111L\",\" enää\":\"113W\",\" eo\":\"0S0T0T22\",\" eo \":\"0T1S\",\" eos\":\"0T1I\",\" eos \":\"0T1K\",\" epi\":\"0P020T10\",\" epis\":\"0T11\",\" epl\":\"120H130G\",\" eple\":\"120H\",\" epä\":\"111I\",\" eq\":\"0M020O0I0P090T0S\",\" equ\":\"0M040O0S0P0B0Q020T1I\",\" equi\":\"0M020O110P0C0T0K\",\" equu\":\"0T0T\",\" er \":\"0NAW0R8M0ZSG102412SC13RP1F02\",\" era\":\"0O2Y0P2T0Q8V0R090T4V1009156I1O0K\",\" era \":\"0O3B0P340Q5H10091562\",\" eram\":\"0P0G0T0R1515\",\" eran\":\"0O0H0Q3E0T0X\",\" erat\":\"0T3E\",\" erbe\":\"0N021N12\",\" ere\":\"0N030O1B0Q020T041104140O1P0F\",\" eres\":\"0O1Q1403\",\" erf\":\"0N130R020Z0310051208130T\",\" erg\":\"0N0A0P030R2F0T0U\",\" erg \":\"0R2S\",\" ergo\":\"0T0U\",\" erit\":\"0T131127\",\" erk\":\"0N0T0R020Z041007120814051F1Q\",\" erke\":\"0N0C0R021F2D\",\" ero\":\"0B070D030Q1G0R0E0T0A110U150A\",\" ero \":\"0Q1E0T091106\",\" err\":\"03030L0J0M020N0E0O0O0P120Q0K0T0U141T\",\" erra\":\"0O020P0P0T0K\",\" erre\":\"0L0U0N0J1417\",\" erro\":\"0M020O0S0P0M0Q0K0T08\",\" ers\":\"0N1R1002\",\" erst\":\"0N240Z02\",\" ert\":\"0N070R021008135C1F051N1J\",\" ert \":\"1008135G\",\" erti\":\"1N22\",\" ertu\":\"135Z\",\" eru\":\"0R080T0B137X\",\" eru \":\"13CU\",\" erum\":\"132K\",\" erv\":\"0P020R0Q\",\" erva\":\"0P020R0T\",\" erő\":\"1419\",\" es \":\"0B060L1L0NC00OKI0T421DQA\",\" es-\":\"0L0R\",\" es-t\":\"0L1B\",\" esa\":\"0O1V0Q0O0T081B1A1D2I1P30\",\" esa \":\"0O24\",\" esag\":\"0Q031P3B\",\" esam\":\"0Q071B1E1D3U\",\" esat\":\"0Q0B1B131D2O\",\" esc\":\"0L090M050O4Y0P510Q080T071O02\",\" esca\":\"0L0A0M060O0U0P0K0T07\",\" esco\":\"0O0R0P2H0Q02\",\" escr\":\"0O2C0P2L\",\" escu\":\"0O2F0P0W\",\" ese\":\"0N020O210Q0B141C15051F021O03\",\" ese \":\"0O2L\",\" eset\":\"1412\",\" esi\":\"0Q0G1110140F1B1U1C0Y1D3C1F02\",\" esi \":\"1B3S1D83\",\" esim\":\"110N1C1O\",\" esk\":\"0D09140C1F0U1O05\",\" eski\":\"0D021F15\",\" esm\":\"0P021D68\",\" esmu\":\"1DER\",\" esn\":\"0T0S14091F02\",\" esne\":\"0T0T1F02\",\" eso\":\"0O3Q\",\" eso \":\"0O4J\",\" espa\":\"0D0E0L0A0O1P0P0X110N\",\" espo\":\"0L060O0M0P0Q0Q02\",\" esq\":\"0O070P1C\",\" esqu\":\"0O0A0P1O\",\" ess\":\"0L160M020N120P3R0Q4E0T8110021402\",\" essa\":\"0L1S0P2B\",\" esse\":\"0L040M020N1O0P2J0Q4D0R020T8H1103\",\" est \":\"0LPZ0TSG\",\" est-\":\"0L5B\",\" esta\":\"0D0C0M020OFC0PCQ0Q051OSE\",\" este\":\"0O5W0P480Q020Z021103141815RZ1O02\",\" esti\":\"0L040O080P170Q030T13110714051OE4\",\" estn\":\"0T21\",\" esto\":\"0O820P5H0Q0H0T0A1F031O2I\",\" estr\":\"0O0V0P1M0Q091O0B\",\" estu\":\"0D0A0O3J0P2G1O2K\",\" está\":\"0OE80PD3\",\" estã\":\"0P30\",\" esu\":\"0T0E1B2M\",\" esu \":\"1B5D\",\" esz\":\"1428\",\" esze\":\"1411\",\" et \":\"0LAN0TLC0Z9F112P128A1CBI1F0I1N0V1P2T\",\" etd\":\"1N4M\",\" etdi\":\"1N69\",\" ete\":\"0O040P040R1P110I14041F021O09\",\" eten\":\"0R2B11051O04\",\" eti\":\"0O020Q0G0T1N1F07\",\" etia\":\"0T1Q\",\" etj\":\"1N1A\",\" etje\":\"1N1S\",\" etm\":\"1F4S1NAX\",\" etme\":\"1F611NBX\",\" etmä\":\"1N34\",\" eto\":\"1PDP\",\" etos\":\"1PFL\",\" ett\":\"107B11DG1232140T1C111F3Y\",\" ett \":\"107B120A\",\" ette\":\"115W122T140G1C2J\",\" etti\":\"1F5D\",\" että\":\"11ND\",\" etu\":\"110A1P0X\",\" etuv\":\"1P11\",\" etw\":\"0N2A\",\" etwa\":\"0N3S\",\" eu \":\"0L160PLE0Z021543\",\" euc\":\"0N11\",\" euch\":\"0N1Q\",\" eum\":\"0T4A\",\" eum \":\"0T4H\",\" evd\":\"1F0W\",\" evde\":\"1F18\",\" eve \":\"0M021F1J\",\" even\":\"0M1I0O030P030Q020R110T050Z02150A1O04\",\" ever\":\"0M4N\",\" evi\":\"0M050O0D0P080Q090Z0410031207150H1F191O0B\",\" evl\":\"1F15\",\" ew\":\"0N021A02\",\" ex \":\"0Q020T2T\",\" exa\":\"0L0K0M0J0O0P0P0L0R070T081007150R\",\" exc\":\"0L0P0M0I0O0L0P0G0R070T0W150L\",\" exe\":\"0L090M040P0F0T101006150G\",\" exi\":\"0L0D0M060N040O0N0P0T0T0Q0U0B1002151V\",\" exis\":\"0L0E0M060N060O0O0P0U0T040U0E1002152D\",\" exp\":\"0L0Z0M1J0N050O1H0P1D0R070T1K0U031004151V\",\" expe\":\"0L030M1A0N040O0K0P0I0R040T0Z0U021002150P\",\" expl\":\"0L0Q0M0J0N020O0V0P0P0R020T0C1519\",\" exs\":\"0T1D\",\" exsp\":\"0T12\",\" ext\":\"0L0C0M0B0N020O1H0P0K0R040T0T1004150J\",\" extr\":\"0L0G0M0B0N040O1K0P0E0R050T0F1004150K\",\" ey\":\"0M09130Q1F05\",\" eye\":\"0M0H\",\" ez\":\"14AF15031F05\",\" ez \":\"14E3\",\" eze\":\"0R021435\",\" ezek\":\"141X\",\" ezt\":\"1488\",\" ezt \":\"148O\",\" eð\":\"131H\",\" eða\":\"1326\",\" eða \":\"134J\",\" eý\":\"1N0T\",\" eýý\":\"1N0Y\",\" eýýä\":\"1N1B\",\" eā\":\"0T0C\",\" eĉ\":\"1O0K\",\" eĉ \":\"1O0V\",\" eğ\":\"1F1H\",\" eī\":\"0T04\",\" eō\":\"0T0D\",\" eş\":\"15081F0I1N19\",\" eşi\":\"1F081N1P\",\" eşit\":\"1F041N1B\",\" eš\":\"0Y1S\",\" ešt\":\"0Y32\",\" ešte\":\"0Y3T\",\" eŭ\":\"1O07\",\" eș\":\"152I\",\" eșt\":\"153V\",\" ești\":\"154Y\",\" fa \":\"0Q1V14091P0Q\",\" fac \":\"0T06153O\",\" facc\":\"0Q1B\",\" faci\":\"0L130M020O050P080Q0J0T5A152A1O12\",\" fact\":\"0L070M0A0O040T2C1509\",\" facă\":\"152I\",\" fah\":\"0N10\",\" fahr\":\"0N1M\",\" fai\":\"0LD70M0F0Q0F0S0T1507\",\" fair\":\"0L9I0M07\",\" fais\":\"0L3M\",\" fait\":\"0L9V0M03\",\" fakt\":\"0B070N030U060Z08100J1105120H1A0A1B0C1O0W\",\" fala\":\"0P4Q14071O04\",\" fald\":\"0O030Z0U1O02\",\" fall\":\"0L0D0M0C0N0O0O080Q090T05100E1208132A\",\" falo\":\"0P0P14021O02\",\" falt\":\"0O0T0P0K1205\",\" fand\":\"0N0D0Z0R1O02\",\" fang\":\"0N070Z0D1205130I\",\" fao\":\"0S2T\",\" faoi\":\"0SAY\",\" far \":\"0M0F0Q060Z1F100K120E\",\" fara\":\"0O030P040Q061005138N14021O1S\",\" farb\":\"0N0A0Y1210051O06\",\" fare\":\"0P0A0Q600Z0B120U1F041O0C\",\" fari\":\"031A0L030M020P0F0T05131T1O6D\",\" fark\":\"1106140A1F1T\",\" farl\":\"0Q1M0Z0F1007120B\",\" faru\":\"1O1A\",\" farv\":\"0Z0G\",\" fat \":\"0M030Z021P22\",\" fath\":\"0M0V\",\" fatt\":\"0Q3X0Z0H100J1209\",\" fau\":\"0L2F0M040N050T02\",\" faut\":\"0L3H\",\" faz\":\"0P7K1F1Y\",\" faz \":\"0P1I\",\" faze\":\"0P7U\",\" fazl\":\"1F2N\",\" faç\":\"0L0D0P0Y\",\" faça\":\"0P0V\",\" fea\":\"0M070O020S38\",\" fear\":\"0M070SBR\",\" fec\":\"0O030P0I0Q0L0T2D1403\",\" feci\":\"0Q040T1U\",\" fee\":\"0M140R0G\",\" feel\":\"0M1A\",\" fei\":\"0N0H0P0W0R050S1N121O1306\",\" feic\":\"0S2T\",\" feil\":\"121G\",\" feir\":\"0S2T\",\" feit\":\"0P0X0R07\",\" fej\":\"0Z0S141V\",\" feje\":\"0Z021412\",\" fejl\":\"0Z0T1408\",\" fek\":\"14171O02\",\" fel \":\"100S1435151G\",\" fele\":\"0T1G1431\",\" fell\":\"037R0M0E120X1404\",\" felt\":\"0M0O0Z021204140X\",\" fem \":\"0Z0T100G120G\",\" femi\":\"0P020T1B0Z031103\",\" femm\":\"0L2K0Q02\",\" fer \":\"0L06132Y\",\" fera\":\"0L1F0T05\",\" ferd\":\"120W\",\" feri\":\"0L080N030O020P0C0Q0D0T0A0Z08120A15281F021O0E\",\" ferm\":\"0L1D0Q0Q0T02150B1O0N\",\" ferð\":\"1339\",\" fess\":\"030B0L020T0V\",\" few\":\"0M0H\",\" few \":\"0M0N\",\" fez\":\"0P1D\",\" fez \":\"0P1P\",\" fh\":\"03020S6M\",\" fha\":\"0S13\",\" fhe\":\"0S1J\",\" fhei\":\"0S4I\",\" fhi\":\"03020S2R\",\" fhio\":\"0SAC\",\" fho\":\"0S11\",\" fhá\":\"0S0Q\",\" fhái\":\"0S2K\",\" fi \":\"1578\",\" fia\":\"0L040O020Q080T0A14271O05\",\" fiat\":\"0Q020T081414\",\" fic\":\"0L080O020P3M0T03101R1404\",\" fica\":\"0P3G\",\" fick\":\"101R1404\",\" fico\":\"0P14\",\" fid\":\"0L030Q0U0T0J1O0E1P40\",\" fido\":\"0Q021O041P2S\",\" fidö\":\"1P17\",\" fie\":\"0L0B0M040N090O0Q0P020Q0A0R0J0T0I1006120815451O06\",\" fie \":\"1532\",\" fiec\":\"151Y\",\" fies\":\"0O0S\",\" fig\":\"0L050M0H0O020P030Q1C0T03141F\",\" figl\":\"0Q19\",\" figy\":\"141H\",\" fii\":\"151Q\",\" fik\":\"0Z0P1108120Z1F131O051P11\",\" fik \":\"0Z0T\",\" fikk\":\"120W\",\" fiku\":\"1P14\",\" filh\":\"0P26\",\" fill\":\"0L200M06\",\" fimm\":\"131Z\",\" find\":\"0M190N1K0Z18\",\" fine\":\"0L020M0A0O030Q100T081O0B\",\" fini\":\"0L1C0M0N0Q140T0E1O0W\",\" finn\":\"0L030N030Z021025121T133M14051O04\",\" fint\":\"0Q060Z021003120E\",\" fiq\":\"0P0O\",\" fiqu\":\"0P0U\",\" fire\":\"0L020M0L0Z0N120C\",\" firs\":\"0M180Z02\",\" fisk\":\"0Z0O100J120C130U\",\" fiu\":\"0Q080T021402151P\",\" fiz\":\"0P110V04141715071A031B021F031O02\",\" fize\":\"0P0R1415\",\" fj\":\"0Z0D100B120E1319\",\" fje\":\"0Z0U120N\",\" fjel\":\"120C\",\" fjer\":\"0Z0U120A\",\" fjo\":\"0Z061002120B\",\" flen\":\"0T031P6E\",\" fler\":\"0T060Z0U100H120X\",\" fles\":\"0R0A0Z0A1004120G130L\",\" fli\":\"0L030M060N0E0R030Z05100T120E\",\" flic\":\"0L03100O\",\" flod\":\"0Z0F1006\",\" flum\":\"0T10\",\" fly\":\"0M050Z161014121E1308\",\" flyg\":\"0Z05100M\",\" flyt\":\"0Z0E100D120I130H\",\" flyv\":\"0Z0G\",\" foa\":\"156D\",\" foar\":\"157H\",\" foc\":\"0M020S161406150B\",\" foca\":\"0S3J\",\" fod\":\"0T040Z0V1402\",\" fodb\":\"0Z0D\",\" foe\":\"0T0P\",\" fog\":\"0P0C0Q040S1P148P\",\" fog \":\"1427\",\" foga\":\"1417\",\" fogh\":\"0S6U\",\" fogl\":\"0Q04140X\",\" fogo\":\"0P0B1428\",\" foi\":\"0L1Q0P4Z\",\" foi \":\"0L040P68\",\" fois\":\"0L2P\",\" folk\":\"0Z0L100I121D\",\" folo\":\"151P\",\" foly\":\"1420\",\" fon\":\"0L180O050P040Q090T06140Y15051O07\",\" font\":\"0L0S0P050Q020T05140Z1O08\",\" foo\":\"0L070M0S0Q02\",\" food\":\"0M0M\",\" for \":\"0MA50P090ZD0100212BN1O0E\",\" fora\":\"0P1Q0T070Z0K120F1O02\",\" forb\":\"0Z1312121O03\",\" fore\":\"0M0H0Q020T0Q0Z1F121Z131L1O0B\",\" forf\":\"0T020Z0E120L1O03\",\" forg\":\"0M0X0Z08120914071O16\",\" forh\":\"0Z0I120I\",\" fori\":\"0T0H14021O1J\",\" fork\":\"0Z0Y120S1O08\",\" forl\":\"0Z0N120G1O0P\",\" forn\":\"0P050Q060Z0C120H1O02\",\" forr\":\"0Z0A120D140H\",\" fors\":\"0N040Q0L0T040Z3E1002123J1O02\",\" forv\":\"0Z0H120H130G1O07\",\" foræ\":\"0Z0S\",\" fos\":\"0P0N0Q14140215B11O02\",\" foss\":\"0L020P0P0Q13\",\" fost\":\"0P030Q0215DP\",\" fou\":\"0L0Z0M120R0O0U02\",\" foun\":\"0M10\",\" fout\":\"0L070R0W\",\" fra \":\"0Q0G0Z3H123I\",\" frag\":\"0L020N2D0O020Q020T051O04\",\" frai\":\"0L0C0S3A\",\" fram\":\"0L021016120C133M\",\" fras\":\"0O0R0P0O0Q0R\",\" frat\":\"0Q0V0T2Q150X1O1P\",\" frau\":\"0N200T02\",\" frea\":\"0M020S3A\",\" frem\":\"0N0C0Z1612171O0E\",\" fren\":\"0M1O0O0F0P0G0Q021F021O0J\",\" freu\":\"0N3I\",\" frie\":\"0M1M0N0D0R050Z02\",\" from\":\"0L070M3Z1O05\",\" fruk\":\"100J12081O0D\",\" frum\":\"0T05130L152E1O02\",\" fry\":\"0Z0B100412091A03\",\" frá\":\"132L\",\" frá \":\"134N\",\" frå\":\"103G\",\" fråg\":\"101D\",\" från\":\"1025\",\" frè\":\"0L0Q\",\" frèr\":\"0L19\",\" frí\":\"0O0K0Y08130I\",\" frü\":\"0N11\",\" früh\":\"0N1N\",\" fua\":\"0S1G\",\" fuai\":\"0S32\",\" fue\":\"0O5O0T0Q\",\" fue \":\"0O4G\",\" fuer\":\"0O2O0T0R\",\" fug\":\"0O020P070Q050T0P0Z0L1207130A150M\",\" fugl\":\"0Z0O1207130L\",\" fui\":\"0L050O0S0P0Q0T2I\",\" fui \":\"0L020O0N0P0W0T08\",\" fuis\":\"0O060T10\",\" fuit\":\"0L040T1F\",\" fuld\":\"0Z0X\",\" full\":\"0M0D100S120S131F1402\",\" fund\":\"0M020O070P0C0R020T060Z0H1004131M1A021O06\",\" funn\":\"0M06120D\",\" fuo\":\"0Q0X\",\" fuor\":\"0Q0S\",\" fur\":\"0L090M060N040O030P050Q080T0S140G151C1O03\",\" fut \":\"0L1D1403\",\" fy\":\"0Z0A100H1102120A136L\",\" fyl\":\"0Z081008120B130U\",\" fyr\":\"0Z0H100E1209139O\",\" fyri\":\"13FL\",\" fyrs\":\"132I\",\" fá\":\"0O0I0P0H0S281316140W\",\" fác\":\"0O0P0P0I\",\" fáci\":\"0O0W0P0M\",\" fái\":\"0S0M1307\",\" fáil\":\"0S2K\",\" fát\":\"0S1A130C1405\",\" fáth\":\"0S58\",\" fä\":\"0N0B100U\",\" fär\":\"100T\",\" färd\":\"100H\",\" få\":\"0Z0X10311218\",\" få \":\"0Z18101C121O\",\" fåe\":\"0Z0G\",\" fået\":\"0Z0K\",\" fåg\":\"100E\",\" får\":\"0Z0S101Q1214\",\" får \":\"0Z0X101P1212\",\" fåt\":\"100E120D\",\" fått\":\"100E120D\",\" fæ\":\"0Z0D12021312\",\" fæn\":\"0Z0A\",\" fær\":\"0Z0D130J\",\" færd\":\"0Z0E\",\" fé\":\"0L060P080S5N130V142B\",\" féa\":\"0S0V\",\" féac\":\"0S32\",\" féi\":\"0S61\",\" féid\":\"0SET\",\" féin\":\"0S8E\",\" fél\":\"0L03130K142O\",\" fér\":\"0P08142D\",\" férf\":\"141C\",\" férj\":\"140Y\",\" fê\":\"0L0C\",\" fí\":\"0O040P040S0M0Y061306\",\" fío\":\"0S0O\",\" fó\":\"0P020S0W132G\",\" fól\":\"131I\",\" fólk\":\"1334\",\" fór\":\"1323\",\" fór \":\"133G\",\" fós\":\"0S0M\",\" fós \":\"0S2K\",\" fö\":\"10F1130Z140R1P0F\",\" föd\":\"100K\",\" föl\":\"100Z1306141W\",\" föld\":\"141A\",\" följ\":\"100P\",\" för\":\"10I0130E\",\" för \":\"109O\",\" förb\":\"100L\",\" före\":\"1010\",\" förk\":\"100M\",\" förl\":\"100Y\",\" förr\":\"100Q\",\" förs\":\"104K\",\" förv\":\"100K\",\" förä\":\"100T\",\" fø\":\"0Z1G1223\",\" fød\":\"0Z10120G\",\" føds\":\"0Z0D1204\",\" født\":\"0Z0M120B\",\" føl\":\"0Z0Y121V\",\" føle\":\"0Z0J1212\",\" følg\":\"0Z0G120J\",\" før\":\"0Z21122X\",\" før \":\"0Z12121I\",\" førs\":\"0Z1A1217\",\" fú\":\"0O061403\",\" fü\":\"0N2G140M\",\" für\":\"0N4H140F\",\" für \":\"0N6W\",\" fă\":\"154J\",\" făc\":\"154V\",\" făcu\":\"155V\",\" făr\":\"1522\",\" fără\":\"152M\",\" fē\":\"0T0B\",\" fī\":\"0T03\",\" fı\":\"1F0M\",\" fő\":\"140Q\",\" fœ\":\"0T03\",\" g \":\"0302\",\" ga \":\"0B040R2G0V1L120N\",\" gaa\":\"017J0D0A0R5F\",\" gaan\":\"017W0D0I0R4J\",\" gaat\":\"0R2V\",\" gabi\":\"0D0K\",\" gac\":\"0S49\",\" gach\":\"0SFP\",\" gad\":\"0B0C0V020Z0F1A051D491P0M\",\" gade\":\"0Z0D\",\" gads\":\"1D2K\",\" gadu\":\"1D2F\",\" gadā\":\"1D43\",\" gae\":\"0S18\",\" gaei\":\"0S4Z\",\" gaf\":\"0O050R0R0Z021002130Q\",\" gaf \":\"0R101314\",\" gag\":\"0B070D0H0L0O130G\",\" gaga\":\"0B0F0D0V\",\" gah\":\"1N0V\",\" gai\":\"0L020M021B0T1D29\",\" gaid\":\"1B041D3C\",\" gais\":\"1B0E1D25\",\" gal \":\"0Z02120A1B21\",\" gald\":\"1D2A1N1D\",\" gall\":\"0O0B0Q0K0T2B1F02\",\" galm\":\"1N1I\",\" galv\":\"1B6H1D2O\",\" galė\":\"1B2Y\",\" gama\":\"132T\",\" gami\":\"0D0N0L031B0Q\",\" gaml\":\"0Z0L100J120I130J\",\" gamm\":\"0Z14100T120Y\",\" gan \":\"03050S6M1D2K\",\" gana\":\"0D020O1C1B0X1F02\",\" gand\":\"0B070D051B0A1D2O\",\" gang\":\"0N020R040Z21122D131P\",\" ganh\":\"0P0U\",\" gano\":\"0D0I\",\" gans\":\"0Z04100F120P\",\" ganz\":\"0N2S\",\" gap\":\"1A021N1T\",\" gapy\":\"1N22\",\" garo\":\"0P0P\",\" garš\":\"1D3L\",\" gata\":\"044X0D080P021006150I1D2F\",\" gato\":\"044K0O120P0R\",\" gaty\":\"1N4D\",\" gau\":\"0L080R020T0O0U0213051B0I\",\" gav\":\"0M0M0P020R030Z14100S120I1B0H\",\" gav \":\"0Z0Z100S1209\",\" gave\":\"0M0U0P020R040Z0D1208\",\" gaw\":\"0D12\",\" gawi\":\"0D1N\",\" gaza\":\"1N1E\",\" gazd\":\"0Y0F140X\",\" gaç\":\"1N10\",\" gaý\":\"1N1N\",\" gc\":\"0S4T\",\" gca\":\"0S0T\",\" gce\":\"0S13\",\" gcea\":\"0S3J\",\" gco\":\"0S16\",\" gcr\":\"0S0V\",\" gcó\":\"0S13\",\" gcón\":\"0S41\",\" gd\":\"0V1B1A2C\",\" gde\":\"0V1L\",\" gde \":\"0V41\",\" gdy\":\"1A1H\",\" gdz\":\"1A1Y\",\" gdzi\":\"1A34\",\" ge \":\"0R1A101A\",\" gea\":\"0N050R090S0O150D1O03\",\" geb\":\"01350N260R471P0N\",\" gebe\":\"010I0N1B0R1Z\",\" gebo\":\"010X0N0F0R13\",\" gebr\":\"011A0N0N0R27\",\" gec\":\"0R041F1S\",\" gece\":\"1F2C\",\" ged\":\"01380B080N0S0R2M0Z04\",\" geda\":\"0N0Q0R21\",\" gedi\":\"010G0N050R07\",\" gedo\":\"011A0R09\",\" gedr\":\"010V0N020R0M\",\" gedu\":\"010G0B0F0N080R0B\",\" gee\":\"013B0N020R791O08\",\" gee \":\"011Z\",\" geef\":\"0R1T\",\" geen\":\"01160R7R\",\" gef\":\"0N2E0R0613171O03\",\" geg\":\"01200N1X0R1A130M1B02\",\" gega\":\"011B0N0L0R0L\",\" gege\":\"010I0N2G0R11\",\" geh\":\"012E0N4N0R1R\",\" geha\":\"01120N0E0R0S\",\" gehe\":\"010K0N3L0R0J\",\" geho\":\"010X0N0B0R10\",\" geht\":\"0N1T\",\" gek\":\"01270N130R2H1306\",\" geko\":\"011O0N0S0R1V\",\" geld\":\"011B03090N200R281F2H1N33\",\" gele\":\"01180N180R1Z1B091F2L1N2R\",\" geli\":\"0N0D0R0Y1F221N1X\",\" gelj\":\"1N1J\",\" gelm\":\"1F1Z1N2F\",\" gelo\":\"010L0N040P050Q090R1Q1507\",\" gelu\":\"010V0N020R1N\",\" gely\":\"010T\",\" gelý\":\"1N31\",\" gema\":\"01120N190R1H\",\" geme\":\"010G0N0J0O030Q030R0C1003\",\" genn\":\"0Z0I\",\" geno\":\"01120L040N0A0R1X0Z02100K\",\" gens\":\"0L230Z031206\",\" gent\":\"03030L0J0M030O1R0P110Q0V0T0E0Z04\",\" gep\":\"010V0N080R0L1N1N1O0G1P0E\",\" gepl\":\"0N020R071N20\",\" gepr\":\"010S0R0C\",\" gera\":\"0D050N1P0P0J0R090T03136O1B6G\",\" gere\":\"010V0N0G0O020P030R0P0T081B0N1F5N1N4P\",\" geri\":\"0N0E0R020T0A132I1B4Q1F26\",\" germ\":\"0L020M0C0Q0M0T0T150U1O0W\",\" gern\":\"0N280Z16\",\" gerç\":\"1F5A\",\" gerð\":\"1348\",\" gesa\":\"0N1S1P0G\",\" gesc\":\"0N430R19\",\" gese\":\"0N1X\",\" gesi\":\"01240N0H\",\" gesk\":\"011D\",\" gesl\":\"010G0R0P\",\" geso\":\"010K\",\" gesê\":\"011D\",\" get \":\"03020M3I133V\",\" geti\":\"1002130H1F111N1B\",\" gett\":\"0M0L0Q031002\",\" getu\":\"0R03136P\",\" gev\":\"012N0R381F02\",\" geva\":\"010X0R1I\",\" geve\":\"0R17\",\" gevo\":\"010S0R1B\",\" gevr\":\"010K0R0B\",\" gew\":\"012T0N2A0R3S\",\" gewe\":\"01100N0R0R24\",\" gewo\":\"011E0N0X0R2K\",\" gez\":\"03020N080R311F0F1N20\",\" geze\":\"0N040R161F051N2O\",\" gezi\":\"0R221F0A\",\" gezo\":\"0N040R0S\",\" geç\":\"1F3Y1N3X\",\" geç \":\"1F16\",\" geçe\":\"1F1H1N1V\",\" geçi\":\"1F1V1N1X\",\" gh\":\"0Q050S3315091QNV\",\" gha\":\"0Q030S0V1QOP\",\" ghah\":\"1QRL\",\" ghaj\":\"1Q8R\",\" ghe\":\"0S0M15051Q1U\",\" ghi\":\"0Q04150B1Q4Z\",\" ghit\":\"1Q4H\",\" ghl\":\"0S13\",\" ghla\":\"0S3S\",\" gho\":\"0M021QF8\",\" ghoj\":\"1Q7U\",\" ghot\":\"1Q4S\",\" gi \":\"12151B0B\",\" gia\":\"0Q1I\",\" giap\":\"0Q13\",\" gib\":\"0N1X1F2X\",\" gibi\":\"1F3Y\",\" gibt\":\"0N2Q\",\" gic\":\"101N\",\" gick\":\"101N\",\" gid\":\"0Z0A1F331N43\",\" gide\":\"1F2Q1N25\",\" gidi\":\"1F1K1N1B\",\" gidý\":\"1N25\",\" gif\":\"04110M050N020R020Z0Y100O120M130K\",\" gift\":\"0M070N030R020Z15100O120M1315\",\" gih\":\"043K\",\" gihe\":\"0447\",\" gij\":\"0R091N1Q\",\" gije\":\"1N1I\",\" gik\":\"04260Z1E1217\",\" gik \":\"0Z1P\",\" gikk\":\"1217\",\" gil\":\"0B0B0N03102E1B07\",\" gill\":\"102E\",\" gim\":\"0B040O0214021B11\",\" gina\":\"0D1O\",\" ging\":\"0N1B0R2C\",\" gio\":\"0Q4P\",\" gioc\":\"0Q1N\",\" gior\":\"0Q2D\",\" giov\":\"0Q0S\",\" gir \":\"120L\",\" gird\":\"1B261F0J\",\" girl\":\"0M0X\",\" gis\":\"011804320D020R1A1006\",\" gist\":\"011B0R1Q\",\" gitd\":\"1N24\",\" gitj\":\"1N1O\",\" gitm\":\"1F4R1N48\",\" gitt\":\"120E1F2M\",\" gitu\":\"044Q\",\" giu\":\"0Q11\",\" giv\":\"0M140Z1E10031P1Q\",\" giv \":\"0Z0H\",\" give\":\"0M1F0Z181003\",\" givo\":\"1P1D\",\" giy\":\"1F10\",\" già\":\"0Q1G\",\" già \":\"0Q1H\",\" gj\":\"0Z0G101O123T130H\",\" gje\":\"1225\",\" gjen\":\"1213\",\" gjer\":\"120F\",\" gjo\":\"0Z1910291228\",\" gjor\":\"0Z1I10291228\",\" gjø\":\"125G\",\" gjør\":\"125F\",\" glad\":\"0M0E0R020T0C0V0I0Z0E100I120R1O02\",\" glas\":\"010G0M0C0N0A0R0A0V110Z0E100L12091O0D\",\" glau\":\"0N2Z1B04\",\" gle\":\"0N0V0R020V0V0Z0Y1210131G1P11\",\" gled\":\"0V281209\",\" glem\":\"0Z14120R\",\" glet\":\"1P15\",\" gli\":\"0L040Q3Z0R0A0Z0212051O02\",\" gli \":\"0Q3U\",\" glo \":\"011G\",\" glæ\":\"0Z0C1307\",\" glæd\":\"0Z0E\",\" glö\":\"100Z11021307\",\" glöm\":\"100Y\",\" glü\":\"0N0Z\",\" glüc\":\"0N1M\",\" gn\":\"0S0M1A031D0K\",\" go \":\"0M330SD41A2E\",\" god \":\"0M0D0R0G0V0T0Z1L100F121K1P0I\",\" gode\":\"0R020Z0H120K\",\" godi\":\"0V4E1004\",\" godt\":\"0Z2V121G\",\" godz\":\"1A1J\",\" goe\":\"012T0M080R4D\",\" goed\":\"011O0R5S\",\" goei\":\"011B0R02\",\" goi\":\"0M34\",\" goin\":\"0M49\",\" golo\":\"0O021P1T\",\" golö\":\"1P2X\",\" gon\":\"0L020M0E0Q03144I1P0F\",\" gond\":\"144N\",\" good\":\"0M2U\",\" gork\":\"1N2H\",\" gos\":\"0L020P4Y0V091A05\",\" gost\":\"0P670V06\",\" got\":\"0M1Y0N0F0O030P020V06100K130O1A0P\",\" got \":\"0M2J\",\" gott\":\"0M050N0P100K131E\",\" gou\":\"010H0L0F0R09\",\" gou \":\"010G\",\" gov\":\"0M060P090Q050V1N\",\" govo\":\"0V44\",\" gow\":\"1N82\",\" gowy\":\"1N9U\",\" goý\":\"1N2M\",\" goş\":\"1N0Y\",\" graa\":\"010N0R2C1102\",\" grac\":\"0O0W1A031O02\",\" grae\":\"0T0S\",\" graž\":\"1B3R\",\" grea\":\"0M0R150B\",\" grei\":\"0N03120I131K1B48\",\" gret\":\"1B0D1P1J\",\" greš\":\"0V1S\",\" greș\":\"151X\",\" grib\":\"1D9X\",\" groe\":\"011A0R17\",\" groo\":\"01150R1Q\",\" gros\":\"0L170O030P030Q041A02\",\" grot\":\"0L020R1G10021B07\",\" groß\":\"0N2X\",\" grun\":\"0N0P0Z0T100E1217130O1O06\",\" grá\":\"0P040S16130I\",\" grá \":\"0S49\",\" grä\":\"100I\",\" grå\":\"0Z04100H1212\",\" gråd\":\"120L\",\" gråt\":\"100F120F\",\" græ\":\"0Z0X130J\",\" græd\":\"0Z0H\",\" græs\":\"0Z0E\",\" grø\":\"0Z0L120H\",\" grøn\":\"0Z0O120F\",\" grā\":\"1D25\",\" grām\":\"1D58\",\" grį\":\"1B1C\",\" grįž\":\"1B23\",\" grū\":\"1D0S\",\" grūt\":\"1D21\",\" gua\":\"0M040O0N0P0F0Q23\",\" guar\":\"0M050O0F0P0I0Q1Q\",\" gud\":\"0Z0G100A12091B021P5Y\",\" gud \":\"0Z0E10071206\",\" gudi\":\"1P6W\",\" guf\":\"042R\",\" gufa\":\"0435\",\" guh\":\"043Y\",\" gui\":\"0L0B0M090O0A0P060Q0M0Z07\",\" guk\":\"046C\",\" guko\":\"047X\",\" gula\":\"0B0F0D0G1002\",\" gum\":\"0D0S14031A02\",\" guma\":\"0D17\",\" gun\":\"0B0R0D020M090R02\",\" gur\":\"0B0O0D060S1N15091F081N1F\",\" gur \":\"0S65\",\" guru\":\"0B191F0A\",\" gus\":\"04D40D2M0O4A0Q030T03150A1O06\",\" gusa\":\"046G0D07\",\" gush\":\"045Y\",\" guso\":\"043C\",\" gust\":\"0D4L0O5K0Q030T03150D1A021O0C\",\" gusu\":\"047L\",\" gut\":\"04AJ0D020N360T02120Q1N1K\",\" gut \":\"0N32\",\" guta\":\"04470N021N14\",\" gute\":\"049I0N28\",\" gutt\":\"0T02120Q\",\" guy\":\"0M0D\",\" gv\":\"1O03\",\" gy\":\"1003144G1B3X1N5K\",\" gya\":\"1428\",\" gyak\":\"141J\",\" gyd\":\"1B0S\",\" gydy\":\"1B1K\",\" gye\":\"144M\",\" gyer\":\"144M\",\" gyo\":\"141G\",\" gyor\":\"141D\",\" gys\":\"1N10\",\" gyv\":\"1B5I\",\" gyve\":\"1B90\",\" gyz\":\"1N5U\",\" gyz \":\"1N33\",\" gyzy\":\"1N40\",\" gá\":\"0P020S0K13081403\",\" gâ\":\"0L08151C\",\" gân\":\"1523\",\" gând\":\"152O\",\" gä\":\"0N03100I\",\" gå\":\"0Z1Q104S122D\",\" gå \":\"0Z1I102K1228\",\" gåe\":\"0Z0G\",\" gået\":\"0Z0J\",\" gån\":\"101H\",\" gång\":\"101H\",\" går\":\"0Z2O102D1238\",\" går \":\"0Z34102B1234\",\" gåt\":\"100B120O\",\" gått\":\"100A120J\",\" gæ\":\"0Z04132H\",\" gær\":\"1329\",\" gær \":\"133O\",\" gæt\":\"0Z03131N\",\" gæti\":\"132Z\",\" gé\":\"0L0H1409\",\" gê\":\"0L020P04\",\" gó\":\"131Q1A0D\",\" góð\":\"132R\",\" góða\":\"1321\",\" góðu\":\"131Z\",\" gö\":\"1041130S14051FAO1NAM\",\" gör\":\"1057140A1F8D1NBH\",\" gör \":\"1023\",\" göra\":\"1038\",\" görd\":\"1F251N4J\",\" göre\":\"1F1S1N1J\",\" görm\":\"1F2K1N2M\",\" görü\":\"1F5I1N3N\",\" görý\":\"1N31\",\" gös\":\"1F0Y\",\" göst\":\"1F1B\",\" göz\":\"1F1L1N2G\",\" gözl\":\"1F0Y1N1Z\",\" gø\":\"0Z15\",\" gør\":\"0Z30\",\" gør \":\"0Z1I\",\" gøre\":\"0Z27\",\" gü\":\"0N021F701N8Q\",\" gül\":\"1F0U1N19\",\" gün\":\"0N021F3Y1N6Y\",\" gün \":\"1F261N4R\",\" güni\":\"1N1B\",\" günü\":\"1F1D1N0S\",\" gür\":\"1F091N3V\",\" gürl\":\"1N4H\",\" güv\":\"1F17\",\" güve\":\"1F1N\",\" güz\":\"1F1H\",\" güze\":\"1F21\",\" gā\":\"1D0G\",\" gă\":\"151H\",\" găs\":\"151S\",\" găsi\":\"151P\",\" gė\":\"1B0M\",\" gł\":\"1A1H\",\" gło\":\"1A1A\",\" h \":\"0L030P03\",\" ha \":\"0O3P0QFS102X123C147B1O02\",\" ha'\":\"1Q47\",\" ha'd\":\"1Q5K\",\" ha-t\":\"033G\",\" haa\":\"015R0N0C0R6J110H\",\" haar\":\"01520N0K0R7H1106\",\" haat\":\"010X0R0O\",\" haba\":\"0D0J1N0Q\",\" habe\":\"0NEQ0O1S0T981F0R\",\" habi\":\"0B0C0L1N0M030O1F0P0B0T3Q\",\" habl\":\"0O5E1Q2A\",\" habí\":\"0O2J\",\" hac\":\"0O7F0T0U\",\" hac \":\"0T0W\",\" hace\":\"0O84\",\" haci\":\"0O1C\",\" had \":\"0M4J0R4P1Q0E\",\" hadd\":\"0R0P123R140H\",\" hade\":\"0Z0Q102U\",\" hae\":\"0T3E1104\",\" haec\":\"0T38\",\" haf\":\"041G0N020Z0C1007134L1F1H\",\" hafa\":\"1350\",\" haft\":\"0Z0E10071F1S\",\" hafð\":\"132C\",\" hag\":\"041V0O0W120A130F142K1Q0E\",\" haga\":\"042S0O0U130F\",\" hagy\":\"142Q\",\" hai \":\"0B070Q3X150T\",\" haig\":\"1C29\",\" haj\":\"0P020V0Q10031108141W1Q0H\",\" hajd\":\"0V1U\",\" hakk\":\"11071C291F3T\",\" haky\":\"1N4B\",\" hal \":\"0B3Z1407\",\" hala\":\"0B0A0D0E1109140N1F0P1N5O\",\" halb\":\"0N0I1C1E\",\" hald\":\"131W14021F02\",\" halu\":\"0D0211JF\",\" halv\":\"0R030Z0W100B110J120C1402\",\" ham \":\"0Z411236\",\" hamp\":\"0B1B110N\",\" hamw\":\"043C\",\" han \":\"0O1C0ZGB10FH12F6\",\" hana\":\"0D041106133D\",\" hanc\":\"0T0V\",\" hang\":\"0B0D0D130M080R0B0Z02141H1F1T\",\" hann\":\"0Q3C0T03100413RA\",\" hany\":\"0B2X1403\",\" hanz\":\"042Z\",\" hap\":\"0D0K0M1Z11061F0E1N0D1Q0E\",\" hapo\":\"0D0W\",\" happ\":\"0M2Q1108\",\" har \":\"0ZN210G412IE1Q0K\",\" hara\":\"044X0B160D0B140G1F021O07\",\" hard\":\"01150D0G0M140R0U120H\",\" hari\":\"04EF0B750D050L020O021F0Y\",\" haru\":\"0B7O\",\" has \":\"0M5U0O210T061N1J\",\" hast\":\"0N4K0O1W0Z0310021F1G1O041Q2V\",\" hasz\":\"141Q\",\" hat \":\"0M060ND00Z06140B1Q0B\",\" hata\":\"100W130Y140K1F1D\",\" hate\":\"0M0J0R03120R\",\" hatt\":\"0N3I0Z02100B110I120O130I1F03\",\" hatı\":\"1F16\",\" hau\":\"0L0H0N2E0T0E1117\",\" haus\":\"0L020N3D0T03111O\",\" hava\":\"110A14081B021F1H1O8A\",\" havd\":\"0Z3I\",\" have\":\"0MA70P090R030Z3M1005120514031O05\",\" havi\":\"0M0K0P0V14021O2D\",\" hay\":\"0D080O4A1F2U\",\" hay \":\"0O4Z\",\" haya\":\"0D040O0N1F2M\",\" haz\":\"0O0B142Q1F131O04\",\" haza\":\"141J1O09\",\" hazu\":\"1417\",\" hazı\":\"1F1D\",\" haç\":\"1N2U\",\" haça\":\"1N3W\",\" haý\":\"1N33\",\" haýy\":\"1N2A\",\" he \":\"041O0MC60O2J11401Q06\",\" he'\":\"0M271Q0C\",\" he'd\":\"0M0M\",\" he's\":\"0M261Q0I\",\" hea\":\"0M2C1C3X\",\" hea \":\"1C5P\",\" head\":\"0M0M1C22\",\" hear\":\"0M1U\",\" heb\":\"0B040N030O020P020RH20T0Q0Z041O03\",\" heb \":\"0REK\",\" hebb\":\"0R7J\",\" hebt\":\"0R31\",\" hec\":\"0O1C0R020T041Q0B\",\" hech\":\"0O1Q0R021Q0I\",\" hed\":\"03020Z0J11091F0F\",\" hedd\":\"03030Z0K\",\" hee\":\"011E0RD1\",\" heef\":\"0RDU\",\" heel\":\"01160R2O\",\" hef\":\"0N02137O\",\" hef \":\"134Z\",\" hefu\":\"138G\",\" hefð\":\"132L\",\" heg\":\"0Z021306140M1Q3V\",\" hegh\":\"1Q6L\",\" heh\":\"045711031Q0A\",\" hehe\":\"0491\",\" hei\":\"0L020M020N1G0R05113A120C135K\",\" heil\":\"0N0A0R031117131Y\",\" heim\":\"0N0F0R02137R\",\" hej\":\"0V030Z0410061A021O121Q0A\",\" hejm\":\"1O21\",\" hela\":\"0O0A0R05100Z1O02\",\" held\":\"0M060N040R070Z0A12061348\",\" heli\":\"0O020R02110414021C2X1O03\",\" hell\":\"0M060N060Z0J100D1106120L\",\" help\":\"011R0M350R24112R1O2Q\",\" helt\":\"0Z0V100M1212\",\" hely\":\"143H\",\" hem \":\"0R5W100X1F0U1N4M1Q0B\",\" hemi\":\"10021N1Q\",\" hemm\":\"0Z08100R110412091N61\",\" hen \":\"0R0Z0Z0Q1004\",\" hend\":\"0B0B0Z41120L130T\",\" heni\":\"1N1D\",\" henk\":\"112F\",\" henn\":\"03020Z0210391236135L\",\" hep\":\"110213071F1G1N1I\",\" hepd\":\"1N20\",\" her \":\"0M6J0N0C0Z4Y122M1F6O1N2F\",\" herb\":\"0L020N070T0B13261A0K1O08\",\" here\":\"0M3J0N070O040R020T060U0411091N0H1O05\",\" herh\":\"0R050Z041F15\",\" heri\":\"0O0D0R0N0T13\",\" herk\":\"0N020R08110M1F21\",\" herm\":\"0O2L110N\",\" hers\":\"0M0N0N020R0C0Z02\",\" hes\":\"0M020P020T030U030Z0R120F13091F071Q0D\",\" hest\":\"0Z0X120F130K\",\" het \":\"01RI0RSG1002\",\" hete\":\"0R050Z02100H1102120C140F\",\" heto\":\"1P2G\",\" heu\":\"0L2N0N1U0R030T05\",\" heur\":\"0L4G\",\" heut\":\"0N2Y\",\" hey\":\"0M02131H1F0E\",\" heyr\":\"1332\",\" hib\":\"1419\",\" hibá\":\"1415\",\" hic\":\"0O0Z0T421Q0F\",\" hic \":\"0T4A\",\" hici\":\"0O0T\",\" hid\":\"0B1O0M090O020P021103140X\",\" hidu\":\"0B36\",\" hie\":\"01A70L100N2P0O0B0R430T0B110X1O0O1P27\",\" hiel\":\"0N0E0O060R0Q1P2L\",\" hier\":\"01AR0L1Q0N420O080R4T11061O1C\",\" hig\":\"0D060M0H0O0214051Q0C\",\" high\":\"0M0O1Q0L\",\" hii\":\"110C1C0Q\",\" hij\":\"0B040O1H0RFL1Q19\",\" hij \":\"0RJO\",\" hijo\":\"0O1F\",\" hili\":\"0D061N1D\",\" hilj\":\"0V0B111M1C1H\",\" him \":\"0M4U\",\" hims\":\"0M14\",\" hina\":\"0D0U0N0B0Z0P\",\" hind\":\"0DCX0N040R020Z0210031F041O04\",\" hini\":\"0D0I\",\" his \":\"0M930T0F\",\" hiss\":\"100411081F1S\",\" hisz\":\"14291A0B\",\" hit \":\"0M09100F120C\",\" hitt\":\"0R02101511031333140R\",\" hiz\":\"0O141F05\",\" hizo\":\"0O1H\",\" hiç\":\"1F4X1N7C\",\" hiç \":\"1F4J1N9E\",\" hiçb\":\"1F2B\",\" hj\":\"0Z1F1025121S1328\",\" hje\":\"0Z241249\",\" hjel\":\"0Z02121V\",\" hjem\":\"0Z211220\",\" hjer\":\"0Z0J120I\",\" hjá\":\"132N\",\" hjál\":\"133U\",\" hjä\":\"102U\",\" hjäl\":\"102H\",\" hjæ\":\"0Z1E\",\" hjæl\":\"0Z1P\",\" hl\":\"0U250V0E0Y2N132Z\",\" hla\":\"0U1X0V0B0Y39130X\",\" hlad\":\"0U140V0T0Y29\",\" hlav\":\"0U130Y18\",\" hle\":\"0U0Q0V061307\",\" hled\":\"0U0Z\",\" hljó\":\"1322\",\" hlu\":\"0U0G0Y0H131K\",\" hlut\":\"131X\",\" hn\":\"0U0D0Y0R130A\",\" hne\":\"0U0E0Y161307\",\" ho \":\"0Q9Y0U350Y461O07\",\" hobu\":\"1C1V\",\" hoc\":\"0N0E0T5V0U020Y0B1F081QB1\",\" hoc \":\"0T67\",\" hoch\":\"0N0N0U021QHJ\",\" hod\":\"0T1V0U3P0V070Y1Y120F1O13\",\" hode\":\"120F\",\" hodi\":\"0T1Z0U280Y1J1O26\",\" hodn\":\"0U2X\",\" hoe\":\"015L0R62\",\" hoe \":\"013A0R4Q\",\" hoek\":\"011U0R04\",\" hoev\":\"010K0R1T\",\" hog\":\"0O040R0714NN1Q19\",\" hogy\":\"14OG\",\" hoi\":\"110F1C0Q\",\" hoj\":\"0O080P24\",\" hoje\":\"0P2O\",\" hol \":\"0N02142T1QFX\",\" hold\":\"0M0A0Z2Q121N1409\",\" holn\":\"141V\",\" hom \":\"013Z\",\" homb\":\"0O2I\",\" home\":\"0M280P1Y0T041103\",\" homi\":\"0T2U\",\" homm\":\"0L2E110F1C4Z\",\" hon \":\"109P\",\" hond\":\"011I0R1Z\",\" hono\":\"0L020M030O040T0610341A021O06\",\" honu\":\"137J\",\" hoo\":\"011I0M020R2V1C0L\",\" hoof\":\"010G0R1G\",\" hoop\":\"0R10\",\" hoor\":\"010P0R0V\",\" hope\":\"0M180R07110B\",\" hopp\":\"0Z02100Z1209\",\" hora\":\"0L020O230P200T191O02\",\" horf\":\"131X\",\" horl\":\"010I0L020R091F021O0A\",\" horo\":\"0T0G11021O1J\",\" hort\":\"0T18\",\" hos \":\"0T040Z0E100C120A1Q14\",\" hoss\":\"140Y\",\" hou\":\"013E0M1N0P080R4A0U041107\",\" hou \":\"013F0R2J\",\" houd\":\"0R37\",\" hour\":\"0M0N\",\" hous\":\"0M1M0U03110A\",\" hov\":\"0U070Y7W0Z0U1209140U1Q0M\",\" hove\":\"0Z111209\",\" hovo\":\"0U080Y9N\",\" how\":\"0M391N26\",\" how \":\"0M4A\",\" howa\":\"1N1O\",\" hoy\":\"0O1T\",\" hoy \":\"0O2C\",\" hoz\":\"143L\",\" hozz\":\"142M\",\" hoć\":\"0V10\",\" hoće\":\"0V1M\",\" hoş\":\"1F1I1N0D\",\" hoşl\":\"1F1E\",\" hr\":\"0U1O0V0N0Y2Z0Z03132Q1503\",\" hr \":\"0Z091309\",\" hra\":\"0U100V0N0Y1D130V\",\" hraj\":\"0U0T\",\" hrd\":\"0U080Y1E\",\" hri\":\"0V02131G\",\" hrin\":\"132J\",\" hru\":\"0U090Y0X\",\" hub\":\"0B070D020O0P0U04\",\" huc\":\"0T0I1Q3U\",\" huch\":\"1Q6J\",\" hue\":\"0O0P\",\" hug\":\"0D020M071002132L\",\" hugs\":\"1331\",\" hui\":\"012T0L070O020R340T0Y110F\",\" huil\":\"010G0R0O1104\",\" huis\":\"012I0R3A\",\" huiu\":\"0T0T\",\" huj\":\"0B121Q0O\",\" huja\":\"0B22\",\" hul \":\"010K0Z04\",\" hull\":\"016G030411121205140A1C1A\",\" hulp\":\"010N0R0T\",\" humi\":\"0D0L0L050M020O030P030T051O04\",\" hun \":\"0R1U0ZA712A3\",\" hund\":\"0M070N1I0O040Z3U101L121K133L1O1H\",\" huo\":\"1165\",\" huol\":\"1139\",\" huom\":\"116K\",\" huon\":\"115I\",\" hur \":\"104V1Q0Q\",\" hurt\":\"0M0H0Z0Q\",\" hus\":\"0D020M060U040Z2C101P12231405\",\" hus \":\"0Z1E100T120C\",\" huse\":\"0Z0J100R1215\",\" husk\":\"0Z0N120L\",\" huv\":\"100Q110B1C161Q06\",\" huvi\":\"110S1C2X\",\" huvu\":\"100Q\",\" huw\":\"0D140R06\",\" huwa\":\"0D1X\",\" hv\":\"0U040V0D0Y0B0Z7K128E13CT\",\" hva\":\"0V0F0Z5R126S1385\",\" hva \":\"126R\",\" hvad\":\"0Z6W\",\" hvar\":\"133I\",\" hvað\":\"13D6\",\" hve\":\"0Z37123R13BA\",\" hvem\":\"0Z241221\",\" hver\":\"0Z1P121R13JH\",\" hvi\":\"0Y0F0Z3E123F\",\" hvid\":\"0Z0S\",\" hvil\":\"0Z1A1214\",\" hvis\":\"0Z25121Y\",\" hvit\":\"120F\",\" hvo\":\"0Z8O1289131T\",\" hvor\":\"0ZAD1289133P\",\" hy \":\"01B0\",\" hyv\":\"1181\",\" hyvi\":\"117U\",\" hyvä\":\"11BO\",\" há\":\"0O040P2G0S0P0U060Y05131M143K\",\" há \":\"0P2V\",\" hán\":\"1418\",\" hány\":\"141A\",\" hár\":\"130E1428\",\" háro\":\"1426\",\" hát\":\"130L141L\",\" ház\":\"143H\",\" háza\":\"141S\",\" hâ\":\"0L0215041F1E\",\" hâl\":\"1F1M\",\" hâlâ\":\"1F23\",\" hä\":\"0N10109R11GY1C2H1N1T\",\" häl\":\"0N0C100H11021N0K\",\" häm\":\"100N110G\",\" hämt\":\"100M\",\" hän\":\"0N0G101S11OM\",\" hän \":\"11SG\",\" händ\":\"0N0G1019\",\" häne\":\"11L2\",\" hänt\":\"10071154\",\" här\":\"10A71103\",\" här \":\"109W\",\" häs\":\"0N03100A1C19\",\" häst\":\"100A1C34\",\" hät\":\"0N1F1108\",\" hätt\":\"0N2D\",\" häz\":\"1N1V\",\" häzi\":\"1N2K\",\" hå\":\"0Z0U1020120N\",\" håb\":\"0Z0M\",\" håbe\":\"0Z0M\",\" hål\":\"101T\",\" håll\":\"101P\",\" hån\":\"0Z0T120J\",\" hånd\":\"0Z0Z120J\",\" håp\":\"120R\",\" håpe\":\"120L\",\" hår\":\"0Z0V100X120D\",\" hår \":\"0Z0K100G1205\",\" hård\":\"0Z0D1004\",\" hæ\":\"0T0D0Z0C131P\",\" hæn\":\"0Z0L\",\" hænd\":\"0Z0H\",\" hæt\":\"131F\",\" hætt\":\"1331\",\" hé\":\"0L080O020S0V131R140V\",\" héi\":\"0S0M\",\" hér\":\"0L060O031328\",\" hér \":\"132X\",\" hét\":\"1421\",\" hê\":\"010K\",\" hê \":\"011B\",\" hí\":\"1413\",\" hív\":\"141M\",\" hó\":\"130A140H\",\" hô\":\"0L04\",\" hõ\":\"1C0B\",\" hö\":\"0N0N10241107131614091N0T\",\" höf\":\"0N03131C\",\" höfu\":\"132B\",\" hög\":\"100W\",\" höl\":\"0N03100E1107140N\",\" hör\":\"0N16101D\",\" hörd\":\"100E\",\" hø\":\"0Z11121C\",\" høj\":\"0Z13\",\" høje\":\"0Z0G\",\" høn\":\"0Z09\",\" hør\":\"0Z1C121V\",\" høre\":\"0Z0Q1214\",\" hørt\":\"0Z0W120P\",\" høs\":\"0Z021209\",\" høy\":\"1214\",\" høye\":\"120G\",\" hú\":\"0O020P02137Z140M\",\" hún\":\"0O020P0213B6\",\" hún \":\"13KL\",\" hús\":\"131O140R\",\" húsi\":\"132F\",\" hü\":\"0N05140D1C0H1F09\",\" hī\":\"0T04\",\" hı\":\"1F0Y\",\" hľ\":\"0Y0V\",\" hľa\":\"0Y1H\",\" hľad\":\"0Y1P\",\" hō\":\"0T03\",\" i'\":\"0M44\",\" i'd\":\"0M0W\",\" i'd \":\"0M17\",\" i'l\":\"0M1D\",\" i'll\":\"0M1V\",\" i'm\":\"0M45\",\" i'm \":\"0M5N\",\" i'v\":\"0M1E\",\" i've\":\"0M1W\",\" i-\":\"1520\",\" i-a\":\"1539\",\" i-a \":\"1521\",\" i-am\":\"151M\",\" ia \":\"0B240P07150O1O02\",\" iac\":\"0T14\",\" iaco\":\"0T0W\",\" iad\":\"0S161F02\",\" iad \":\"0S4R\",\" iam\":\"0T1O1O0M\",\" iam \":\"0T1J1O16\",\" iap\":\"0T0V\",\" iapo\":\"0T0V\",\" iar\":\"0S3L1519\",\" iarr\":\"0SCX\",\" iba\":\"030K041Z0D110O0E0T090Y1M\",\" iba \":\"0D0J0O0F0Y20\",\" iban\":\"03150D0P0O02\",\" ibi\":\"04FP0D0D0T1C\",\" ibi \":\"043C0T0Z\",\" ibik\":\"043O\",\" ibin\":\"046G0D0A\",\" ibir\":\"0474\",\" ibit\":\"044E0T05\",\" ibu\":\"03040B1F\",\" ibu \":\"0B1E\",\" ica\":\"030204291F02\",\" ice\":\"030N041O0M06\",\" ich\":\"0NNP0Y3A1A0S\",\" ich \":\"0NSG0Y421A19\",\" ici\":\"04190L2C\",\" ici \":\"0L3Y\",\" ico\":\"04D1\",\" ico \":\"04J9\",\" icu\":\"0432\",\" icum\":\"0459\",\" id \":\"0T351P0K\",\" ida\":\"03030P0F100R1F03\",\" idag\":\"100R\",\" ide \":\"0B0F0V1P0Y0Q0Z07141E\",\" idee\":\"0N0I0Q050R0T0Z0612061519\",\" idei\":\"0P0Z140B150C\",\" idem\":\"0T0B0V1Q0Y15\",\" idir\":\"0303043C\",\" idé\":\"0L0S0P020Z05100E1207140B\",\" idée\":\"0L161002\",\" idő\":\"1448\",\" idő \":\"1411\",\" ie\":\"010X0Q0Q0R1C0T0F151X1B0J1DAR1O04\",\" ied\":\"0R1V1D1Y\",\" iede\":\"0R2I1D1M\",\" iedo\":\"1D25\",\" ieg\":\"1D0Z\",\" iek\":\"1D11\",\" iem\":\"010F0R171D0Z\",\" iema\":\"010G0R1M\",\" ien\":\"0P020T0B1D0U\",\" iep\":\"1D1A\",\" ier\":\"0Q150R020T04151T1D15\",\" iera\":\"1D1W\",\" ieri\":\"0Q16151Y\",\" ies\":\"0T0915081D2Y\",\" iesp\":\"1D4C\",\" iet\":\"011P0R241D1W\",\" iet \":\"1D32\",\" iets\":\"011T0R2V\",\" iev\":\"1D0S\",\" ieš\":\"1B0U\",\" iešk\":\"1B1Q\",\" if\":\"031A040R0M1L0Z0210091F081P13\",\" if \":\"0M2W1P1B\",\" iga\":\"030D041G14441C3I1O03\",\" iga \":\"030H1C2D\",\" igal\":\"1C3V\",\" igaz\":\"144D\",\" ige\":\"030X0Z0X101D1413\",\" igen\":\"03080Z15101D1415\",\" igi\":\"030204HS0T0M1O05\",\" igif\":\"044X\",\" igih\":\"04CC\",\" igik\":\"043O\",\" igit\":\"04A40T0N\",\" igj\":\"121K\",\" igje\":\"121K\",\" igr\":\"03020P070V13\",\" igra\":\"03050V2H\",\" igå\":\"100H\",\" igår\":\"100F\",\" ih\":\"030G040P0D020N4P0U040V0G0Z04100J112S1F1R\",\" iha\":\"0D03111R14021F03\",\" ihan\":\"113Q1F04\",\" ihj\":\"0Z0A1004\",\" ihm\":\"0N1O1139\",\" ihm \":\"0N2T\",\" ihmi\":\"1170\",\" ihn\":\"0N350U07\",\" ihn \":\"0N3H\",\" ihne\":\"0N1U0U09\",\" ihr\":\"0N6Y\",\" ihr \":\"0N6L\",\" ihre\":\"0N5A\",\" iht\":\"1F1U\",\" ihti\":\"1F2I\",\" ihå\":\"100E\",\" ij\":\"030B041C0R051402\",\" ija\":\"041O\",\" ik \":\"0RSG\",\" ika\":\"041O0B0F0D0S0V0G\",\" ika-\":\"0D0O\",\" ikaw\":\"0D0I\",\" iki\":\"04PM0D0511191B181F201N1U\",\" iki \":\"04S41B2I1F1M1N1G\",\" ikib\":\"042S\",\" ikin\":\"04830D09112W1F0D\",\" ikk\":\"0ZJM110K12MB1C0S\",\" ikka\":\"1C1Z\",\" ikke\":\"0ZMF12MC\",\" il \":\"0LJV0QKY\",\" ila\":\"031A0D0X11021F0A\",\" ilan\":\"03040D111F03\",\" ild\":\"0Z09\",\" ile\":\"030O0O030P021A0X1F2N\",\" ile \":\"1A1F1F35\",\" ilg\":\"1B1G1D231F1J\",\" ilga\":\"1B1M\",\" ilgi\":\"1B0P1D321F24\",\" ili\":\"030P0D020T080V0W1B021F0B1O5H\",\" ili \":\"030D0V2B1O86\",\" ilin\":\"030F1O1R\",\" ill\":\"03030L050M080N020Q050R030T7B100I110S130I140P\",\" illa\":\"03050T26100H111X130O1406\",\" ille\":\"0M020Q020R020T1H140C\",\" illi\":\"0T1T1404\",\" illu\":\"0L050M020N020Q020R020T23\",\" ilm\":\"03020B07112H1C1T\",\" ilma\":\"0304114N1C2U\",\" ilo\":\"0D09110O1A031O02\",\" ils\":\"0L4V1B03\",\" ils \":\"0L83\",\" ilt\":\"1111\",\" ilta\":\"112K\",\" ilu\":\"03070O050P051A041C1Q1O02\",\" ilus\":\"0O040P031C45\",\" ily\":\"142K\",\" ilye\":\"142P\",\" im \":\"0N460V090Y0V1A0F\",\" ima \":\"0V5Y\",\" imam\":\"0V43\",\" iman\":\"0342042S\",\" imao\":\"0V1T\",\" imaš\":\"0V26\",\" imb\":\"046C0D040L030Q0C0T03\",\" imbe\":\"04530D03\",\" imbw\":\"0447\",\" ime\":\"031K0P0A0S0O0V0J0Z021102150R1C0I\",\" imea\":\"0S2K\",\" imir\":\"032R\",\" imm\":\"0L0F0M080N2E0Q0O0R020T0J\",\" imme\":\"0L050M080N3Y0Q090T02\",\" imo\":\"0P020T060Z0B100E1206\",\" imod\":\"0Z0D\",\" impa\":\"042S0L0B0M030O060P040Q1S150A\",\" impe\":\"0L030M020O080P0B0Q0S0T121O07\",\" imv\":\"041O\",\" imy\":\"0479\",\" imya\":\"04C7\",\" ina \":\"0D050SB5\",\" inan\":\"0D030T021F1U\",\" inco\":\"0L0K0M050O0C0P0F0Q160T0H150A\",\" ind \":\"0Z1C\",\" inde\":\"0L030M060N070O080P070Q020R030T080Z0S1505\",\" indt\":\"0Z0E\",\" infa\":\"0O080P030Q0A0T0J1O2N\",\" inga\":\"042F0B0Z0D030Q060R03100K1402\",\" ingg\":\"0B320D02\",\" ingi\":\"042M0B9Q0Q021508\",\" ingl\":\"0D0P0O1L0P1F0Q0M1C3V\",\" ingo\":\"0459\",\" ini \":\"03030BMA\",\" inii\":\"0D0F\",\" inim\":\"03070D030P090T0C150M1CAC\",\" iniz\":\"0Q0W\",\" ink\":\"042V0R041003140T1F021O04\",\" inku\":\"042Z\",\" inn \":\"1215131R\",\" inna\":\"03020Q0C100G130J\",\" inne\":\"0N0B0O02100G120Q140I1A0N\",\" inni\":\"0S3J130F14091A06\",\" inns\":\"120F\",\" inné\":\"0S3A1402\",\" insa\":\"0M020T091F2K\",\" insi\":\"0L050M0D0O050P050Q0E0S320T08100311031O04\",\" into\":\"0L020M1R0O020Q041103\",\" intr\":\"0L060M060O060P050Q060R020T0R100M151O\",\" inu\":\"03050D060L040O030P020Q040T051507\",\" inve\":\"0L0B0M090N020O0K0P0P0Q0G0R020T1N150H1O09\",\" invi\":\"0L0S0M0B0O0X0Q0O0T100Z0C120A150L1O0F\",\" iny\":\"046M0D0E\",\" inya\":\"043I\",\" inyo\":\"043C0D0R\",\" inyu\":\"043O\",\" inz\":\"04490N02\",\" inzu\":\"044E\",\" io\":\"0P020Q890S1P0T1315031O1M\",\" io \":\"0QCM1O0G\",\" ioa\":\"0T0W\",\" ioan\":\"0T0Y\",\" iom\":\"1O12\",\" iom \":\"1O1L\",\" ion\":\"0S1G1O13\",\" ion \":\"1O26\",\" iona\":\"0S2K\",\" iont\":\"0S2T\",\" ipa\":\"0D0H0V041402\",\" ipi\":\"0D0L\",\" ipin\":\"0D12\",\" ips\":\"0T1Z\",\" ipse\":\"0T0S\",\" ir \":\"0O1Z0P281B8Z1DSG1N0J\",\" ire\":\"03090O030P0B0T18\",\" ire \":\"0T17\",\" iri\":\"0302045V0P070T0314051O1I\",\" iri \":\"030204740T031O1M\",\" iris\":\"1O1D\",\" irl\":\"0Q0V1002\",\" irla\":\"0P020Q0V1103\",\" irm\":\"0O050P1I\",\" irmã\":\"0P1U\",\" iry\":\"04361A02\",\" iryo\":\"042Z\",\" is \":\"01RI03020MFT0RQJ0SK10T140Z0710031205149O1P45\",\" isa \":\"0D181C52\",\" isah\":\"046Y\",\" isan\":\"0D3V\",\" isd\":\"0D08\",\" ise\":\"031J0Z0210031C181F05\",\" iseg\":\"03081C1L\",\" ish\":\"043K\",\" isi\":\"03070B030D0H11031F051P0F\",\" isip\":\"0D0H\",\" isk\":\"03030D030V0Y1108141H\",\" isko\":\"0V0H141K\",\" isle\":\"1NAF\",\" islä\":\"1N2M\",\" ism\":\"03060T0314331F05\",\" isme\":\"030A142X\",\" isn\":\"0M2J\",\" isn'\":\"0M3H\",\" iso\":\"0P020Q02111K\",\" isp\":\"0D020Q020V1N1B0B\",\" iss\":\"03070M040N0A0P8F\",\" isso\":\"0PAH\",\" ist \":\"0NQ3\",\" iste\":\"03020S490T060V080Z02140Z1FA0\",\" isti\":\"0B090Q020T040V231F6B\",\" isto\":\"0D040P2E0T040V1V150E1A061B0Y\",\" istu\":\"0T0M0V0711321C1Z\",\" istý\":\"0Y1C\",\" isä\":\"111V\",\" isän\":\"112I\",\" it \":\"0M810T0B1P12\",\" it'\":\"0M2P\",\" it's\":\"0M3F\",\" ita \":\"0T15\",\" itan\":\"042Z0D03\",\" itat\":\"042Z0D02\",\" ite\":\"0308042V0T0X\",\" iter\":\"0T0T\",\" ith\":\"0S2R\",\" ithe\":\"0S8E\",\" iti\":\"0D0H0T081B0A1F0B1N0D\",\" itin\":\"0D0J0T071B0L\",\" ito\":\"0D4L\",\" ito \":\"0D7D\",\" iton\":\"0D0W\",\" its\":\"0M0L112S\",\" its \":\"0M0Q\",\" itse\":\"0M03116Q\",\" itt\":\"030H146B1F02\",\" itt \":\"1461\",\" itu\":\"0BEE0D020T04\",\" itu \":\"0BNI\",\" iu\":\"0T2L151B1O0W\",\" iu \":\"1O0S\",\" iub\":\"0T05151V\",\" iud\":\"0T0R\",\" iul\":\"0T121506\",\" iuli\":\"0T131508\",\" ius\":\"0T0T\",\" iuv\":\"0T0O\",\" ivy\":\"04B40M03\",\" ivya\":\"0441\",\" ivyo\":\"04CH\",\" iw\":\"030Z040S\",\" iwa\":\"030G04260D02\",\" iy\":\"032I043R0D2G1F53\",\" iya\":\"0D1W\",\" iyan\":\"0D3F\",\" iyi\":\"032E044Q1F5T\",\" iyi \":\"047A1F6L\",\" iyi-\":\"035B\",\" iyo\":\"045Y0D2Q\",\" iyo \":\"04A40D17\",\" iyon\":\"0D3V\",\" iz \":\"0V17\",\" izb\":\"0V0L0Y1J1509\",\" izd\":\"0V091D3J\",\" izda\":\"0V0C1D6X\",\" izg\":\"0V2A14091D0X\",\" izgl\":\"0V3H\",\" izgu\":\"0V1S\",\" izi\":\"0302043O0B041F1D\",\" izin\":\"044E0B081F1U\",\" izl\":\"0V0G1D0O1F0Z\",\" izle\":\"1F15\",\" izm\":\"0V0L14021D18\",\" izma\":\"1D2A\",\" izr\":\"0V091D0W\",\" izs\":\"1D2Z\",\" izsa\":\"1D21\",\" izsk\":\"1D3Q\",\" izv\":\"0V151D13\",\" iç\":\"1FBC1N1O\",\" içi\":\"1FBB1N0Q\",\" için\":\"1FEL1N0N\",\" iñ\":\"1N0O\",\" iý\":\"1N1T\",\" iým\":\"1N17\",\" iýme\":\"1N14\",\" iĝ\":\"1O0B\",\" iī\":\"0T03\",\" iň\":\"1N1I\",\" iň \":\"1N14\",\" iňl\":\"1N12\",\" iňli\":\"1N1G\",\" iś\":\"1A0R\",\" iść \":\"1A1Q\",\" iş\":\"1F331N54\",\" iş \":\"1F0T1N13\",\" işi\":\"1F131N2S\",\" işi \":\"1F0L1N27\",\" işl\":\"1F0G1N2Y\",\" işle\":\"1F0M1N3O\",\" iš\":\"0V080Y0T1BAU\",\" iš \":\"1B6R\",\" iše\":\"1B11\",\" išei\":\"1B26\",\" išg\":\"1B17\",\" išm\":\"1B14\",\" išs\":\"1B1W\",\" išsi\":\"1B2F\",\" išt\":\"1B12\",\" išv\":\"1B1U\",\" išė\":\"1B0T\",\" išėj\":\"1B1N\",\" i̇\":\"1F5C\",\" i̇n\":\"1F1T\",\" i̇ng\":\"1F1B\",\" i̇s\":\"1F18\",\" j'\":\"0L8W\",\" j'a\":\"0LBH\",\" j'ai\":\"0LFP\",\" j'e\":\"0L1F\",\" j'é\":\"0L1A\",\" j'ét\":\"0L1X\",\" jaa\":\"010T0R1Y11081C12\",\" jaap\":\"1C1V\",\" jaar\":\"010S0R2L\",\" jab\":\"0O020U0J0V0A0Y191A0E1Q09\",\" jabl\":\"0U0Q0Y1A\",\" jad\":\"0B0P1A0I\",\" jaf\":\"1316\",\" jafn\":\"132H\",\" jag\":\"0B060N030R020Z0510SG1Q0T\",\" jag \":\"10SG\",\" jah\":\"0B040N1T0U0211041C0S1Q1I\",\" jah \":\"1C1H1Q14\",\" jahr\":\"0N31\",\" jai\":\"0M031B1Q\",\" jai \":\"1B31\",\" jaj\":\"0V0514071A081Q3Y\",\" jaj \":\"14071Q4G\",\" jak \":\"0U6K1A8R\",\" jaki\":\"1A31\",\" jako\":\"0U430V1B11041A0U1O07\",\" jaké\":\"0U0V\",\" jaký\":\"0U0X\",\" jal\":\"0B1F0L060R040Z0211151C1R1Q0L\",\" jala\":\"0B2N110O1C17\",\" jalg\":\"1C29\",\" jam \":\"0B2Z0T0K1B5D1O2W\",\" jama\":\"0L4M0P0D1F02\",\" jamm\":\"010S0R04\",\" jang\":\"0B581Q0I\",\" jao\":\"1C0K\",\" jaok\":\"1C1E\",\" japa\":\"010V0M0H0N0W0R170V1A0Z0T100O113B120X132K1O14\",\" japo\":\"0L1B0O0M0P0F0U0N0Y1A15181A1X1B1Z1F10\",\" japá\":\"140Y\",\" japā\":\"1D2A\",\" jaro\":\"0U051O2D\",\" jat\":\"0B0K110U1Q7L\",\" jatl\":\"1QCF\",\" jau\":\"0B0M0L0411021B5E1D7M\",\" jau \":\"1B641D5Q\",\" jauk\":\"1D25\",\" jaun\":\"0L071B281D8C\",\" jaut\":\"1B0P1D3Z\",\" jauč\":\"1B1H\",\" jaw\":\"0B0J\",\" jazy\":\"0U1P0Y2M\",\" jd\":\"0U0O\",\" je \":\"0LQE0N0E0RN00UNU0VRI0YSG1A0L1O1R1Q8V\",\" jeb\":\"1D0S\",\" jed\":\"03060N1X0U4D0V4T0Y601A34\",\" jeda\":\"0V36\",\" jede\":\"0N300U190V1V0Y1A1A0P\",\" jedi\":\"0U0T0V180Y1N\",\" jedl\":\"0U0C0Y101A02\",\" jedn\":\"0U3L0V5U0Y331A21\",\" jedz\":\"1A1O\",\" jeg\":\"0ZRI12SG140K1A2P1Q06\",\" jeg \":\"0ZSG12SG\",\" jego\":\"1A4A\",\" jeh\":\"0U2K0Y36\",\" jeho\":\"0D020U3I0Y3X\",\" jei\":\"0P091B2E\",\" jei \":\"1B1P\",\" jeig\":\"1B3C\",\" jej\":\"0U1R0Y411A271Q08\",\" jej \":\"0U030Y4Y1A3I\",\" jeji\":\"0U0R\",\" její\":\"0U1M\",\" jel\":\"0B0G0U0E0V09142B1Q0D\",\" jele\":\"0B09141Y\",\" jem\":\"0B060N0T0Y101A091Q07\",\" jen \":\"0U2C130G1O1L\",\" jent\":\"120P\",\" jep\":\"0B13\",\" jepa\":\"0B26\",\" jer \":\"0V1H0Z0Z\",\" jere\":\"0Z0M\",\" jesi\":\"0V251A06\",\" jest\":\"0U2D0V101ARV\",\" jesz\":\"1A2R\",\" jet\":\"0L0D0N1H0U0C\",\" jetz\":\"0N2H\",\" jeu\":\"0L1G0R05\",\" jeun\":\"0L1P\",\" jew\":\"041V0M03\",\" jewe\":\"043C0M02\",\" jez\":\"0R0A0U0N0V1A1A08\",\" jezi\":\"0V321A0A\",\" jeś\":\"1A1P\",\" jeśl\":\"1A26\",\" ješ\":\"0U380V03\",\" ješt\":\"0U4H\",\" ji \":\"0U1T1BB1\",\" jib\":\"1P0Z1Q2P\",\" jibl\":\"1P121Q0C\",\" jie\":\"1B6U1P0E\",\" jie \":\"1BC3\",\" jiem\":\"1B1M\",\" jih\":\"1QD1\",\" jih \":\"1QA6\",\" jihv\":\"1Q65\",\" jij\":\"0R241Q2K\",\" jij \":\"0R2U\",\" jik\":\"0B1F\",\" jika\":\"0B2U\",\" jima\":\"1P1D1Q0A\",\" jin\":\"0U1B1Q1F\",\" jiné\":\"0U0S\",\" jiq\":\"1Q5O\",\" jis\":\"0U0Q1BHM1P0Z1Q24\",\" jis \":\"1BRE\",\" jiso\":\"1P151Q1Q\",\" jist\":\"0U11\",\" jm\":\"0U0Q\",\" jmén\":\"0U0Y\",\" jo \":\"0U040Z0D111U120M1B4Z1D11\",\" job\":\"0M0Q0N030Z06101H1223142L1504\",\" job \":\"0M0W0N040R020Z06\",\" jobb\":\"101H1223142Q\",\" joga\":\"0P1814071N2Q\",\" jogo\":\"0P0V140A\",\" joi\":\"0L090M061116\",\" jok\":\"0M05114F1B0M1P0F\",\" joka\":\"117W\",\" jong\":\"0R21\",\" jonk\":\"112S\",\" joo\":\"11091C2H\",\" jook\":\"11031C1V\",\" joon\":\"1C1O\",\" jop\":\"110B1D0X\",\" jopr\":\"1D2F\",\" jord\":\"0Z0V100E120E\",\" jos \":\"1191150W1B6A\",\" jot\":\"114J\",\" jota\":\"1167\",\" jotk\":\"112J\",\" jou\":\"01B30L4K0M030R2F0Z02111L\",\" jou \":\"01B60R1J\",\" joue\":\"0L28\",\" jour\":\"0L500M040N020R040Z02\",\" jouw\":\"0R1O\",\" jov\":\"0O0J0P0K0T03\",\" još\":\"0V1T\",\" još \":\"0V4L\",\" js\":\"0UL0\",\" jse\":\"0UK7\",\" jsem\":\"0UOW\",\" jsi\":\"0U77\",\" jsi \":\"0U9S\",\" jsm\":\"0U4F\",\" jsme\":\"0U63\",\" jso\":\"0U48\",\" jsou\":\"0U5U\",\" jst\":\"0U2U\",\" jste\":\"0U3Y\",\" ju \":\"0V050Y2S10091O05\",\" jub\":\"0O020T051C0Y1Q0A\",\" juba\":\"1C2D\",\" jue\":\"0O0U\",\" jueg\":\"0O0Y\",\" jug\":\"0B170L070N050O19\",\" juga\":\"0B2D0O1B\",\" juh\":\"110R1C181Q61\",\" juh \":\"1Q5E\",\" juht\":\"1C2N\",\" jul \":\"0Z0I10041P0R1Q1K\",\" jule\":\"0Z0M1002\",\" jull\":\"01260R6O\",\" jum\":\"0B0F0L020M05110O150E1B1W1D361Q07\",\" jums\":\"1B3H1D7V\",\" junt\":\"0O0U0P0T\",\" juo\":\"112I1B32\",\" juo \":\"110U1B1W\",\" juok\":\"111X1B1X\",\" juos\":\"110F1B1Q\",\" jus \":\"0B070L051B1E\",\" jusq\":\"0L1J\",\" jutr\":\"0V0O1A1S\",\" juu\":\"11211C1Q\",\" juur\":\"114H1C1L\",\" juče\":\"0V1Y\",\" już\":\"1A2R\",\" już \":\"1A4E\",\" jy\":\"019K1103\",\" jy \":\"01J8\",\" já\":\"0P2K0U1D130C141I\",\" já \":\"0P340U27130E\",\" jár\":\"1424\",\" ját\":\"141N\",\" játs\":\"1416\",\" jä\":\"100L113C1C47\",\" jäi\":\"110D1C0I\",\" jäl\":\"111G\",\" jälk\":\"112S\",\" jär\":\"100311131C1N\",\" järg\":\"1C31\",\" jät\":\"100D111D1C0S\",\" jää\":\"111H1C21\",\" jí\":\"0U38\",\" jí \":\"0U1O\",\" jíd\":\"0U0V\",\" jídl\":\"0U13\",\" jíst\":\"0U0S\",\" jít\":\"0U1U\",\" jít \":\"0U2I\",\" jó\":\"0O04130P143C\",\" jó \":\"144F\",\" jól\":\"130L1432\",\" jól \":\"1434\",\" jõ\":\"1C1H\",\" jõu\":\"1C0X\",\" jõud\":\"1C1H\",\" jö\":\"130A141Z1P1T\",\" jön\":\"141O1P23\",\" jöni\":\"1P2G\",\" jöt\":\"141K\",\" jött\":\"141O\",\" jöv\":\"1416\",\" jø\":\"0Z02\",\" jú\":\"0P031402\",\" jā\":\"1D4K\",\" jād\":\"1D0Z\",\" jāda\":\"1D2A\",\" jāp\":\"1D0W\",\" ją\":\"1A0R1B17\",\" ją \":\"1A121B1X\",\" ję\":\"1A0Q\",\" języ\":\"1A1M\",\" jį\":\"1B1X\",\" jį \":\"1B34\",\" jū\":\"1B5Z1D7J\",\" jūs\":\"1B901D85\",\" jūs \":\"1BE41DF1\",\" jūsu\":\"1D58\",\" jūsų\":\"1B45\",\" jūt\":\"1D0Z\",\" jų\":\"1B0R\",\" jų \":\"1B18\",\" k'\":\"040H\",\" ka \":\"0D3F0V051C151DDP1P2Q\",\" kaa\":\"0D050R0J110V1C1M\",\" kaas\":\"0R0611041C2D\",\" kabu\":\"0B090D071F15\",\" kad\":\"0B080D050V39110O1BH71D351F6F1O02\",\" kad \":\"0V121BPC1D7R\",\" kada\":\"0B0F0D050V741B621F7K1O02\",\" kaf\":\"0N0F0U0B0V0B0Z15100V120L130I1D171F0H1O0F1P12\",\" kaff\":\"0N0P0Z1E100U120J1310\",\" kafi\":\"1D2Y1P11\",\" kag\":\"0D0A0Z06\",\" kaga\":\"0D0G\",\" kah\":\"0D1311271C1I1F11\",\" kaha\":\"0D0O\",\" kahd\":\"112S\",\" kahe\":\"11021C22\",\" kahi\":\"0D131F03\",\" kahv\":\"112A1F15\",\" kai\":\"0D2G0N02116L1B8Z1C0N1D0O\",\" kai \":\"110I1B48\",\" kaib\":\"0D0Q\",\" kaik\":\"11DG\",\" kail\":\"0D3K1B04\",\" kain\":\"0D0911041B1M\",\" kaip\":\"110P1BB9\",\" kait\":\"1C1L\",\" kaj\":\"14051O9N\",\" kaj \":\"1OHB\",\" kaka\":\"0B0S0D0Z0V0F1002110214031N1Q\",\" kako\":\"0V6T1002\",\" kaks\":\"115A1C48\",\" kala\":\"0B4C0D0T111M140I1B031C1A1F1F\",\" kalb\":\"0D031BEE1F0A\",\" kald\":\"0D040Z0J120I130C1F1P\",\" kall\":\"100S1119120C13151C1A\",\" kalm\":\"0R051F1N\",\" kaln\":\"1B0Z1D2K\",\" kam \":\"0N130U0X0Y131B0U\",\" kama\":\"0B1I0D0S0U0H0Y0A11081O02\",\" kamb\":\"03020D051B30\",\" kami\":\"042F0BAY0D350V0814041A071O03\",\" kamu\":\"0BMP0D041B0E1F03\",\" kan \":\"018E036D0B0X0R890ZAN108I128P1F06\",\" kand\":\"048E0D030N020R020U0214031A041B041C171F041O09\",\" kang\":\"0D141103\",\" kani\":\"0D1E0N020Z04100311071P1C\",\" kann\":\"0N8D111M132N\",\" kano\":\"11031P9G\",\" kans\":\"0D040R0F100I11AC120L1F04\",\" kany\":\"04220D331403\",\" kao\":\"0V201C0X\",\" kao \":\"0V52\",\" kaot\":\"1C22\",\" kapa\":\"0B2J0D1Q14021F151O1C\",\" kapi\":\"0D0I0N060R030U040Z021002110514041A041B091O06\",\" kapı\":\"1F1D\",\" kar \":\"01121F0C\",\" kard\":\"14031B061C341F1Y1O02\",\" karu\":\"0D031B021C1V1O03\",\" karı\":\"1F17\",\" karş\":\"1F1Y\",\" kas \":\"1BAO1CQZ1DF1\",\" kasa\":\"0D130Z0411041F0E\",\" kasi\":\"0B1L0D0I\",\" kass\":\"0N020Z08100211071C48\",\" kast\":\"0D0O0N020R090Z0D100A110I120B130G14031F041O0B\",\" kasu\":\"0B070D041C2X\",\" kasv\":\"11361C10\",\" kat \":\"010V0R0T0Z0Y1F021P1A\",\" kata\":\"0B3P0D0W0N030U030Z03110914041A061B071F041O05\",\" kati\":\"0D06110714021B0T1F041O041P1I\",\" katr\":\"1D3L\",\" kats\":\"115Y1P0G\",\" katt\":\"0R0E0Z1G1013110I12121F06\",\" katė\":\"1B1X\",\" kau\":\"0B4X0D0B0N100R02114S13101B091C1R1D2Y\",\" kau \":\"0B96\",\" kaua\":\"111W1C1Z\",\" kaun\":\"0D0D113O\",\" kaup\":\"113L1321\",\" kaut\":\"110B1D6G\",\" kav\":\"0U021002110G14021B0Y1C0E1F0B1O02\",\" kay\":\"030J0B0E0D431F20\",\" kay \":\"0D1O\",\" kaya\":\"0B0J0D1Y1F09\",\" kayb\":\"1F1L\",\" kayo\":\"0D37\",\" kays\":\"03170D0V\",\" kaza\":\"0Y0C1A0B1B031F2E\",\" kazi\":\"0435\",\" kaç\":\"1F1Q\",\" kaķi\":\"1D1W\",\" każ\":\"1A1B\",\" każd\":\"1A22\",\" kaž\":\"0U200V1S0Y2T1B26\",\" každ\":\"0U2S0Y3I\",\" kaže\":\"0V3K\",\" kažk\":\"1B4C\",\" kd\":\"0U7F0Y3E\",\" kde\":\"0U320Y5R\",\" kde \":\"0U450Y72\",\" kdo\":\"0U32\",\" kdo \":\"0U45\",\" kdy\":\"0U6H\",\" kdy \":\"0U29\",\" kdyb\":\"0U22\",\" když\":\"0U4E\",\" ke \":\"0B6P0U0J1O9O\",\" keb\":\"0B1Z0Y0L1B02\",\" kebe\":\"0B1Q\",\" kec\":\"03080B1W1405\",\" keci\":\"0B1Y\",\" ked\":\"0B0V0Y2D0Z0A142G1C0U1F0L\",\" keda\":\"0B0K1C22\",\" kedv\":\"142H\",\" kedy\":\"0Y2V\",\" kee\":\"010P0M0M0R1D1C94\",\" keeg\":\"1C52\",\" keel\":\"0R031CG1\",\" keep\":\"0M0U\",\" keer\":\"010N0R1C\",\" keh\":\"0B100N03110J\",\" kehi\":\"0B1F110I\",\" kein\":\"0N7E110D\",\" kel \":\"14021P1C\",\" kela\":\"0B1M\",\" keli\":\"0B0O11031B4Q1F0J1P2I\",\" kelk\":\"1B051O1V\",\" kell\":\"03020N05112T14BS1C5P1N0S\",\" kelu\":\"0B2N\",\" kem\":\"031Z0B480Z0210021102131V140H1F06\",\" kema\":\"0B4D1F03\",\" kemb\":\"0B2R\",\" kemu\":\"0B10132W\",\" kena\":\"0B2Z1B091F06\",\" kend\":\"0B0B0D020R060Z1Z1F46\",\" kenn\":\"030R0N1W0R0M133I\",\" kep\":\"0B2M0M0911021B0B\",\" kepa\":\"0B4A1B04\",\" kera\":\"04350B1O1104\",\" kere\":\"0B1L0R08142I1F06\",\" kerr\":\"1156\",\" kers\":\"0R2E1102\",\" kert\":\"0B0H117E140P1B04\",\" kerü\":\"141A\",\" kes\":\"0B250D04112Z14081C3Y1F1C1N0Q1O02\",\" kes \":\"1C841F04\",\" kesa\":\"0B1M\",\" kese\":\"0B1S14041F03\",\" kesi\":\"1F15\",\" kesk\":\"113W1F03\",\" keti\":\"0B3J1B15\",\" keu\":\"0B040R0L1102\",\" kev\":\"110C1414\",\" key\":\"0D060M08131H1F05\",\" keyp\":\"1322\",\" kez\":\"143G1F0S\",\" kezd\":\"1429\",\" keze\":\"1410\",\" keď\":\"0Y2D\",\" keď \":\"0Y2U\",\" kh\":\"0B07\",\" ki \":\"146M1F0U\",\" kia\":\"140H1B0E1O4S\",\" kial\":\"14041O37\",\" kiam\":\"1O57\",\" kib\":\"042D140A1B031F08\",\" kic\":\"0M03141Y\",\" kics\":\"1422\",\" kid\":\"0M0F1102140B\",\" kie\":\"0R0A0Y0E112O140C1A3P1B3Z1O53\",\" kie \":\"1O2E\",\" kied\":\"1A53\",\" kiek\":\"1B7G\",\" kiel\":\"115L14021A021O6Z\",\" kig\":\"04190Z0G1403\",\" kigg\":\"0Z0E\",\" kii\":\"115514021C1N\",\" kiin\":\"115J\",\" kiir\":\"112I1C3L\",\" kiit\":\"113U\",\" kij\":\"0R19140E\",\" kijk\":\"0R1P\",\" kik\":\"0R020Z021002140O1P6G\",\" kiko\":\"1P6S\",\" kil \":\"1P1Y\",\" kila\":\"0D0G\",\" kill\":\"0M0N0Z021007\",\" kim \":\"0V061A0P1F1N1N2H1P3K\",\" kimi\":\"1F0S1N16\",\" kims\":\"1F2B\",\" kimw\":\"044X\",\" kina\":\"0D1O0U060Z081005110312061A07\",\" kind\":\"011W0M0Q0N2K0R2M0Z0410021C2N\",\" kinn\":\"14031C26\",\" kio\":\"0O030R02110414051A041B051O5N\",\" kio \":\"1O36\",\" kiom\":\"1O2F\",\" kion\":\"1O5T\",\" kira\":\"045L0B0M110614051F0B\",\" kiri\":\"042S0B0F11061C17\",\" kirj\":\"11DG1C5C\",\" kis\":\"0D020M0B0N031002111I14341O081P6P\",\" kis \":\"141M1P1A\",\" kisi\":\"1O0A1P6O\",\" kiss\":\"0M0F113J1406\",\" kita\":\"0BAJ0D18110N140D1B1M1F2E1N43\",\" kiu\":\"110814031O5R\",\" kiu \":\"1O6S\",\" kiuj\":\"1O2O\",\" kiun\":\"1O26\",\" kiç\":\"1N0Z\",\" kiçi\":\"1N19\",\" kiö\":\"14021P33\",\" kiöp\":\"1P3L\",\" kiş\":\"1F1S1N0K\",\" kişi\":\"1F2F1N0Q\",\" kj\":\"0Y060Z031002122C130H\",\" kje\":\"121Z\",\" kjem\":\"120E\",\" kjen\":\"1215\",\" kjæ\":\"120R\",\" kjær\":\"120R\",\" kjø\":\"1234\",\" kjøp\":\"121T\",\" kjør\":\"120O\",\" klaa\":\"0R12\",\" klai\":\"1B1X\",\" klam\":\"0N020Y14\",\" klar\":\"0N0G0Z0M100U121Z1O11\",\" klas\":\"0D0F0N0F0R0H0Z0D10081106120H14031A0N1B0T1F031O0H\",\" klau\":\"0N0214021B3V1D2F\",\" kle\":\"01110N1D0R1V0U051002120A1O02\",\" klei\":\"010Q0N250R1E\",\" klo\":\"0N030R0I0U070Y0G0Z0Y100Q1102120Y1B021O06\",\" kloc\":\"100N\",\" klok\":\"0R070Z0U1002120X\",\" kluk\":\"0U0B133J\",\" klus\":\"0R021D1W\",\" klä\":\"100R\",\" klæ\":\"0Z08120A1307\",\" klíč\":\"0U0R\",\" kna\":\"0N040R060Z07100F12061B021O10\",\" knab\":\"1O20\",\" kne\":\"0M190N02\",\" knew\":\"0M1O\",\" kni\":\"0M050N030R080U2G0Y510Z07100812091B02\",\" knih\":\"0U3C0Y5L\",\" knj\":\"0V1D\",\" knji\":\"0V3G\",\" kno\":\"0M6F0N040R07\",\" know\":\"0M8J\",\" kny\":\"1B2W\",\" knyg\":\"1B5W\",\" kníh\":\"0Y13\",\" ko \":\"04I80D8V0V1E10021B1L1D741P44\",\" koc\":\"0N090R0C141I1A121F09\",\" koch\":\"0N0G0R0G1A1M\",\" kocs\":\"141A\",\" kod\":\"0V0J11041B3V1C1M1F03\",\" kodu\":\"1C3L1F03\",\" kodė\":\"1B7T\",\" koe\":\"01150R0H0Z04110J1C3M\",\" koek\":\"010I0R05\",\" koer\":\"1C8M\",\" kof\":\"010Y0N040R0U0V0412051N0J\",\" koff\":\"01100N060R151205\",\" kog\":\"0V0D0Z061A0G1C0V\",\" kogu\":\"1C1Z\",\" koh\":\"0N020U0H0Y0P11171C3P\",\" koht\":\"112B1C4C\",\" kohv\":\"1C1S\",\" koi\":\"1120\",\" koir\":\"114H\",\" koj\":\"0V4G1B0F1C19\",\" koja\":\"0V201B0B\",\" koje\":\"0V2K\",\" koji\":\"0V5F1B06\",\" koju\":\"0V171C34\",\" koki\":\"11041B3W1O08\",\" koko\":\"114V1O05\",\" koks\":\"1B2A\",\" kol \":\"1B1W\",\" kold\":\"0Z0K1402\",\" koli\":\"0U2C0V4L11091A021O02\",\" kolm\":\"116J1C4F\",\" kom \":\"013X0R1O0Z1T101X121V133C\",\" koma\":\"0V0D13361A031B0J1O02\",\" kome\":\"0D030R220U020V0R110H1A051B081O1Y\",\" komi\":\"0N04110413481A081B031F0B1O07\",\" komm\":\"0N4C0Z47106K110J124P1407\",\" komt\":\"0R1T\",\" kon \":\"011G0R1M1002\",\" kona\":\"0V0I1206131F1O1F\",\" kone\":\"0D030U0J0Y0E0Z0V110L120C1B0C1O02\",\" kons\":\"0B0H0D040N060Z06100K110L120E1A061B071F0C1O4G\",\" konu\":\"131J1F7G\",\" koo\":\"011A0R0O11091C2Z\",\" kool\":\"0R031C2Q\",\" koop\":\"010Y0R0D\",\" koos\":\"0R02110C1C3L\",\" kop \":\"0R070Z0H\",\" kope\":\"0R1511041A02\",\" kopi\":\"0B1D0N020R030U020V060Z0211061A031B051O05\",\" kopā\":\"1D1W\",\" kord\":\"1C37\",\" kori\":\"0V21110H1O03\",\" kork\":\"111N1A021F1X\",\" korr\":\"010G0N080Z081005110314071C37\",\" kort\":\"0D030R0H0Z0L100H1109120D14021B0C1C131O07\",\" korá\":\"1415\",\" kos \":\"010V\",\" kosk\":\"11AY\",\" kot\":\"0B1Q0D0G112R14021A0U1O02\",\" kota\":\"0B341A0A\",\" koti\":\"114H\",\" kots\":\"0D0T\",\" kou\":\"010N0R0L0U2Z111U\",\" koul\":\"0U02114C\",\" koup\":\"0U2S\",\" kouř\":\"0U0X\",\" kov\":\"0U03111S14041B061F0A1O07\",\" kova\":\"112D1F05\",\" koy\":\"1F0X\",\" koč\":\"0U14\",\" kočk\":\"0U1F\",\" koľ\":\"0Y37\",\" koľk\":\"0Y3X\",\" kra \":\"035U\",\" krab\":\"0U0E0Y0Y\",\" kraj\":\"0U030V0V0Y1H1A101O05\",\" krav\":\"0U050V0A0Y180Z02110612041F051O05\",\" kred\":\"0N030U030V080Z051A051B051F051O34\",\" krig\":\"0Z0H1007120A\",\" krij\":\"0R130V0A\",\" kry\":\"01110U030Z09100312071A071B03\",\" kry \":\"0113\",\" krá\":\"0U1M0Y24\",\" krás\":\"0U140Y1D\",\" krā\":\"1D0W\",\" ks\":\"1A1M\",\" ksi\":\"1A2A\",\" ksią\":\"1A37\",\" kt\":\"0U1T0Y4V1A3H\",\" kte\":\"0U2Z\",\" kter\":\"0U3R\",\" kto\":\"0Y861A27\",\" kto \":\"0Y4T1A2A\",\" ktor\":\"0Y5N\",\" któ\":\"1A2X\",\" któr\":\"1A4M\",\" ku \":\"04DY0B050Y0E11021A02\",\" kua\":\"0B0H\",\" kub\":\"04NO0B0B1A03\",\" kuba\":\"030304BX\",\" kube\":\"04ID0B091A02\",\" kubi\":\"04H3\",\" kuc\":\"0B0Z0N060U0C0V050Y0J1A0A\",\" kuci\":\"0B1V\",\" kug\":\"04DQ0N020Z04\",\" kuga\":\"042Z\",\" kuge\":\"047A0N03\",\" kugi\":\"0491\",\" kugu\":\"046A\",\" kuh\":\"0N020V0311021C0R\",\" kuhu\":\"1C1S\",\" kui\":\"0R02118S1C9W1O0F\",\" kui \":\"1CGT\",\" kuid\":\"1C5S\",\" kuin\":\"11I3\",\" kuj\":\"042R\",\" kuja\":\"044Q1102\",\" kuka\":\"116T\",\" kuku\":\"045L0B070D031O02\",\" kula\":\"0B0D0D0U1F0C\",\" kull\":\"030J100211071F1U\",\" kuma\":\"0D2011051F04\",\" kume\":\"0453\",\" kumu\":\"042Z0D0G\",\" kun \":\"0R0V0Z2511B612081O71\",\" kuna\":\"1C4V\",\" kund\":\"0D040N050Z05101I1O02\",\" kung\":\"03020D4E1005\",\" kuni\":\"0B0B0D05110X1C1E1O0A\",\" kunn\":\"0R390Z2J1014112D122G130S\",\" kunt\":\"0R1L11081O02\",\" kuny\":\"044X\",\" kuo\":\"112M1B0U\",\" kuo \":\"1B1H\",\" kuol\":\"1158\",\" kup\":\"0B090U080V1B110B14021A1N1B031F02\",\" kupi\":\"0V2J110G1A261B03\",\" kur \":\"1B7Q1D71\",\" kura\":\"044Q0B101D211F0M1O1J\",\" kuri\":\"048K0D0211051B731D1R1O0E\",\" kurl\":\"1D3G\",\" kuro\":\"0435\",\" kuru\":\"044X1D2O1F0G\",\" kury\":\"043O0D03\",\" kurš\":\"1D3G\",\" kus \":\"0R030U031C7S\",\" kut\":\"0B040D050V05111B141X1C0L1F0I1O0J\",\" kuts\":\"0D0811211C1E1F02\",\" kuty\":\"141X\",\" kuu\":\"11651C4M\",\" kuul\":\"117L1C7S\",\" kuv\":\"04720V06100211121F02\",\" kuva\":\"04350V0F111S\",\" kuvu\":\"046M\",\" kuvy\":\"0435\",\" kuw\":\"0D0J\",\" kuwa\":\"0D0N\",\" kuz\":\"042Z1A031F0A1O03\",\" kuza\":\"043V\",\" kuć\":\"0V21\",\" kući\":\"0V2U\",\" kv\":\"0U0O0V030Y170Z0M101F120Q131M1B0Y1O15\",\" kva\":\"0U030V030Z07100J120613061B141O14\",\" kvai\":\"1B1P\",\" kvar\":\"0Z03100F1B051O0X\",\" kve\":\"0Y1C1102120U130Y1B041O03\",\" kvel\":\"120T\",\" kvet\":\"0Y1O\",\" kvi\":\"0Y0B0Z1E100T120V13061B061O0N\",\" kvin\":\"0Z1M100Q120R1O11\",\" kvä\":\"100N\",\" kväl\":\"100M\",\" kvö\":\"1317\",\" kvöl\":\"132J\",\" kw\":\"0109046S0R0J1A0I\",\" kw'\":\"043R\",\" kw'i\":\"046A\",\" kwa\":\"010H043D0R1P1A04\",\" kwaa\":\"010G0R0B\",\" kwam\":\"0R1P\",\" kwi\":\"048U0R091A0I\",\" kwig\":\"043O\",\" kwu\":\"042K\",\" kyk\":\"010V1108\",\" kyk \":\"010V\",\" kyl\":\"0Z041007112V1B02\",\" kyll\":\"0Z041134\",\" kyn\":\"110G130L1N1D\",\" kys\":\"0U030Z0L100C112B120C\",\" kyss\":\"0Z0H100B1209\",\" kysy\":\"1153\",\" ká\":\"0U0E0Y0T140R\",\" káv\":\"0U0K0Y1C1412\",\" kávu\":\"0U0H0Y17\",\" kávé\":\"1415\",\" kä\":\"0N06102E11651C321N1U\",\" käe\":\"1C0Z\",\" käi\":\"1C1X\",\" kän\":\"102K11091N1E\",\" kän \":\"1N1S\",\" känd\":\"100N\",\" känn\":\"101O110M\",\" kär\":\"100F110K\",\" käs\":\"0N03111E\",\" käsi\":\"112O\",\" käv\":\"1123\",\" käve\":\"1138\",\" käy\":\"114Z\",\" käyn\":\"112H\",\" käyt\":\"116U\",\" kää\":\"111A\",\" kään\":\"112N\",\" kå\":\"1203\",\" kæ\":\"0Z0I130G\",\" kæm\":\"0Z0A\",\" kær\":\"0Z0W130L\",\" kære\":\"0Z0P\",\" kærl\":\"0Z0D\",\" ké\":\"0U0C146F\",\" kép\":\"142C\",\" képe\":\"141F\",\" kér\":\"1465\",\" kérd\":\"142H\",\" kére\":\"141G\",\" kérl\":\"1419\",\" kés\":\"143O\",\" kész\":\"142A\",\" két\":\"1438\",\" két \":\"142G\",\" kéž \":\"0U0S\",\" kí\":\"130D140W\",\" kív\":\"1418\",\" kõ\":\"1C6L\",\" kõi\":\"1C60\",\" kõig\":\"1C3Y\",\" kõik\":\"1CAO\",\" kõn\":\"1C0L\",\" kõr\":\"1C19\",\" kõrv\":\"1C1H\",\" kö\":\"0N1C102B110A130P145T1F2K1N6J1P1N\",\" köl\":\"14191F02\",\" köm\":\"1N3F1P1F\",\" köme\":\"1N4M\",\" kömö\":\"1P0Z\",\" kön\":\"0N301002143X1N0E\",\" könn\":\"0N4L141A\",\" köny\":\"142Y\",\" köp\":\"101Y14031F161N4N\",\" köp \":\"10021N4J\",\" köpa\":\"100M\",\" köpe\":\"10061F1F\",\" köpt\":\"1013\",\" kör\":\"0N07100S141J1F05\",\" kös\":\"0N021417\",\" kösz\":\"1418\",\" köt\":\"1008130M140O1F1A\",\" kötü\":\"1F1R\",\" köv\":\"141X\",\" köve\":\"141V\",\" köz\":\"144S\",\" köze\":\"141F\",\" közö\":\"141E\",\" kø\":\"0Z1U1202\",\" køb\":\"0Z2K\",\" købe\":\"0Z17\",\" købt\":\"0Z1W\",\" kød\":\"0Z0B\",\" køk\":\"0Z09\",\" køl\":\"0Z09\",\" kør\":\"0Z1F\",\" køre\":\"0Z19\",\" kørt\":\"0Z0F\",\" kú\":\"0Y1V\",\" kúp\":\"0Y33\",\" kúpi\":\"0Y3E\",\" kü\":\"0N0E14111C3J1F1D1N0F\",\" kül\":\"142E1C1Q1F05\",\" küla\":\"1C1Z\",\" külö\":\"141B\",\" küm\":\"0N061C0N\",\" küs\":\"0N0814021C1T\",\" küsi\":\"1C4F\",\" küç\":\"1F0Y\",\" küçü\":\"1F1A\",\" ký\":\"0U060Y0J1303\",\" kým \":\"0U0B0Y11\",\" kā\":\"1DBR\",\" kā \":\"1D73\",\" kād\":\"1D5C\",\" kāda\":\"1D2T\",\" kāds\":\"1D4C\",\" kādu\":\"1D2F\",\" kāp\":\"1D2P\",\" kāpē\":\"1D5U\",\" ką\":\"1A041B4F\",\" ką \":\"1B71\",\" kė\":\"1B0A\",\" kı\":\"1F4M\",\" kır\":\"1F18\",\" kıs\":\"1F0V\",\" kız\":\"1F2M\",\" kız \":\"1F1P\",\" kļ\":\"1D29\",\" kļu\":\"1D0Z\",\" kļuv\":\"1D2K\",\" kļū\":\"1D1W\",\" kļūd\":\"1D21\",\" kľ\":\"0Y0H\",\" kľúč\":\"0Y0X\",\" kū\":\"1B0D\",\" l'\":\"0LD80Q6R1O03\",\" l'a\":\"0LAC0Q3S\",\" l'a \":\"0L1K\",\" l'ai\":\"0L490Q02\",\" l'an\":\"0L1Q0Q0K\",\" l'ar\":\"0L2D0Q0E\",\" l'au\":\"0L1I0Q0L\",\" l'av\":\"0L1M0Q0C\",\" l'e\":\"0L3J0Q13\",\" l'en\":\"0L1Q\",\" l'es\":\"0L1H0Q0M\",\" l'h\":\"0L290Q2J\",\" l'ha\":\"0L0B0Q1I\",\" l'ho\":\"0L170Q14\",\" l'i\":\"0L250Q1T\",\" l'in\":\"0L280Q15\",\" l'o\":\"0L1W0Q0T\",\" l'u\":\"0L0Z0Q1B\",\" l'un\":\"0L1D0Q0I\",\" l'é\":\"0L2V\",\" l'éc\":\"0L25\",\" l'ét\":\"0L18\",\" l-\":\"151S\",\" l-a\":\"152Y\",\" l-am\":\"151W\",\" laa\":\"012V0R32110K\",\" laas\":\"010Y\",\" laat\":\"01240R3Y110U\",\" laba\":\"0D0Q0T081BCZ1D1W\",\" labh\":\"0SCK\",\" labi\":\"0D0A0O030T031B1S1D71\",\" labs\":\"1D3Z\",\" labu\":\"1D1R\",\" labā\":\"1D53\",\" lac\":\"0L080M030N0C0Q040R0H0T1I150K1O0C\",\" lad \":\"0Z1V1Q0J\",\" lade\":\"0N090Z0J100C\",\" lae\":\"0T161C0G\",\" laet\":\"0T14\",\" lage\":\"0N0D0R040Z021005120X1O03\",\" lagi\":\"0B4X1312\",\" lah\":\"0B0E0D1D0U03110M1C1U1Q08\",\" laha\":\"0D2C\",\" lahk\":\"1C2D\",\" lai \":\"1DCH\",\" laik\":\"1B941DEA\",\" laim\":\"11031B3Q1D32\",\" lain\":\"0B2P0L02112S\",\" laip\":\"1B0D1D1W\",\" lais\":\"0L36110P1B1M\",\" lait\":\"0L0J113R\",\" laiš\":\"1B1O\",\" laki\":\"0B1O0D06110G140M\",\" laku\":\"0B2S1403\",\" lal\":\"03030B190D0P1A021Q09\",\" lala\":\"0D17\",\" lalu\":\"0B2G\",\" lama\":\"030J0B2E0D0X\",\" land\":\"010V0M0A0N130R1U0Z1W100M121F131V1O1B\",\" lank\":\"010V11041B0H\",\" laps\":\"0T03115D1C37\",\" larg\":\"0L080M0E0O0T0P050Q021505\",\" las \":\"0N050OCL0R06130G15051A02\",\" lasc\":\"0Q27\",\" lass\":\"0L020N2D140K\",\" lasī\":\"1D2A\",\" lat \":\"10031A1K\",\" late\":\"0M150N040R310T0C12061A04\",\" latl\":\"1Q56\",\" latv\":\"11021D21\",\" lauk\":\"110O1B3P\",\" laul\":\"113I1C37\",\" laus\":\"0N031130130T1C17\",\" lave\":\"0L0N0P020Z23\",\" lavo\":\"0P030Q4O0T031B031O02\",\" law\":\"03030D050M0A0R061Q7A\",\" law'\":\"1QC0\",\" laý\":\"1N0U\",\" laŭ\":\"1O1B\",\" laŭ \":\"1O1M\",\" lea\":\"0M2B0O030Q020S9N0T031402\",\" leab\":\"0SET\",\" lean\":\"0M020S2K0T03\",\" lear\":\"0M13\",\" leat\":\"0SH8\",\" leav\":\"0M1F\",\" leb\":\"030F0B4G0N2N0Y0J1407\",\" lebe\":\"0N3R1403\",\" lebi\":\"0B8A\",\" lee\":\"011U0D020N060O0U0R2B1002140B\",\" leer\":\"0N0A0O0V0R16\",\" lees\":\"010T0R0L1408\",\" lef\":\"0M0X1105140V\",\" left\":\"0M1A\",\" legg\":\"0Q1I0R05120H131M1405\",\" legi\":\"0P020T1A140515091O12\",\" legj\":\"1415\",\" legy\":\"141V\",\" leh\":\"03060N0N0U08110M144J1C0E\",\" lehe\":\"144L\",\" lei \":\"0P070Q7U1209\",\" leid\":\"0N140R0C1B0T1C1S\",\" leik\":\"112M1323\",\" leil\":\"0P03120C1B04\",\" leis\":\"0N0G0P030SCC1B16\",\" leit\":\"0N060P0H0S3J1323\",\" leið\":\"133F\",\" lej\":\"03020O0D0Z0B10031408\",\" leke\":\"1003120D1F02\",\" lekk\":\"010V0R0G1A05\",\" leká\":\"0Y27\",\" lel\":\"0B0O0R041104140P\",\" lemb\":\"0B090P0Y\",\" len \":\"0Y1N\",\" lena\":\"0S32\",\" leng\":\"0D070O11121R133814051B1M1Q2D\",\" lenn\":\"110C143U1C10\",\" leor\":\"0S5G\",\" lepš\":\"0U0V0Y1I\",\" ler\":\"0N0Y0P0K0R1J0Z031003120414061O1Z\",\" lera\":\"0R0T1402\",\" lere\":\"0R19\",\" lern\":\"0N1K1O3K\",\" les \":\"0LPC0O1E0R0A0U02\",\" lesa\":\"0U03131W\",\" lese\":\"0N0V0U081212\",\" lest\":\"0P02120K1323\",\" lesz\":\"144L\",\" let \":\"0M1E0R060U0Y0Z0G\",\" let'\":\"0M0X\",\" lett\":\"03020L150M0G0Q2A0R070Z06120R141R\",\" letz\":\"0N1K\",\" leu\":\"0L2M0N0S0P050R1A1103\",\" leuk\":\"0R1H1103\",\" leur\":\"0L4E\",\" leva\":\"0L050O0U0P1B0T07100B\",\" leve\":\"0L0A0M040P090R2M0T020Z16100E1109121C1422\",\" lew\":\"011B03020B061A07\",\" lewe\":\"011E1A03\",\" ley\":\"0O0K131714021F1E1Q06\",\" leyl\":\"1F1X\",\" lez\":\"030G0Q0A0R0Q0U0214041F04\",\" leze\":\"0R0Y0U02\",\" leý\":\"1N1J\",\" leýl\":\"1N24\",\" lh\":\"03070P190U0E\",\" lhe\":\"03030P1I\",\" lhe \":\"0P1L\",\" li \":\"0P050Q1I0VAX1OBR\",\" li-\":\"1P8B\",\" li-b\":\"1P12\",\" li-k\":\"1P1A\",\" li-l\":\"1P1U\",\" li-ä\":\"1P1F\",\" lia\":\"0B030M020P020T041B0A1O2A\",\" lia \":\"0P020T031O2U\",\" libr\":\"0D180L0O0M060O3A0Q260T3D1O2K\",\" lice\":\"0L030M030O030P040Q090T1G0V0B15091A041O02\",\" lich\":\"0N0G0R0S\",\" lide\":\"0P020U0A0Z371003120615051F04\",\" lido\":\"0P021D1R\",\" lidt\":\"0Z0U\",\" lidé\":\"0U1L\",\" lidí\":\"0U10\",\" lieb\":\"0N3M0O02\",\" lief\":\"011E0N0A0R0X\",\" lieg\":\"010K0N0Y0R0E1P0O\",\" liel\":\"1D9D\",\" liet\":\"0R0I0Y0Q11021B1H1D3U\",\" liev\":\"0R0X1104\",\" lif\":\"0M130R03130R140515061B021P1E\",\" life\":\"0M1E\",\" lige\":\"0O040Z24\",\" ligg\":\"0R0B0Z131012120P130H\",\" lign\":\"0L0C0T0Q0Z0F12061O0A\",\" ligt\":\"0D030R0T\",\" lih\":\"0B0P0D02110R1C1Q\",\" liha\":\"0B1D0D02111O1C1A\",\" liht\":\"1C31\",\" lii\":\"0N021006113J1C25\",\" liia\":\"113S\",\" liig\":\"1C3S\",\" liik\":\"1133\",\" lij\":\"0R1B1B071Q0B\",\" lijk\":\"0R1C\",\" lika\":\"100L110H\",\" like\":\"0M6R1102123V\",\" likt\":\"120G1B0I\",\" lill\":\"0Z171006120F1C22\",\" lilä\":\"1P1W\",\" limb\":\"152Q\",\" lin \":\"030B1O3R\",\" ling\":\"0D0G0L090M020O020P060Q100T3W15081O2F1P111Q0D\",\" linn\":\"0S5G11191C2D\",\" lio\":\"0L030M020S901B031P0F\",\" liom\":\"0SQG\",\" lisä\":\"112N\",\" lita\":\"100K\",\" liti\":\"0Q050S32\",\" litt\":\"03020L060M140T170Z02121D\",\" liv\":\"0L1U0M1P0P290Q030Z161015121Y15041O02\",\" liv \":\"0Z0R100M120L\",\" live\":\"0M1V0Q030Z0K100E12161O04\",\" livr\":\"0L330P2V\",\" lj\":\"03030V29100K130S\",\" lju\":\"0V2Q100M\",\" ljub\":\"0V1X\",\" ljud\":\"0V3Z1004\",\" ll\":\"03680O5B\",\" lla\":\"03280O2B\",\" llam\":\"0O2H\",\" llan\":\"034Y0O02\",\" lle\":\"0O4L\",\" lleg\":\"0O2X\",\" llev\":\"0O2J\",\" lli\":\"034I\",\" llin\":\"035T\",\" lliɣ\":\"034H\",\" llo\":\"0O0Y\",\" llu\":\"03020O0I\",\" lo \":\"0B030OBK0Q6E0Z041206\",\" loc\":\"0L060M0C0N040O0I0P080Q040T2H10031402153N\",\" loc \":\"151O\",\" locu\":\"0L030O030T1S152U\",\" lod\":\"0U020Z071A081Q7N\",\" lodn\":\"1Q4E\",\" loe\":\"1C0K\",\" logo\":\"0D020P0J1O021P2G\",\" logö\":\"1P1A\",\" loi\":\"0L0R110E\",\" lol\":\"0D06\",\" long\":\"0D020L2A0M1T0P0V0R030T1A1O1V\",\" loo\":\"0D0H0M2E0R0K1C24\",\" loob\":\"0D0W\",\" look\":\"0M38\",\" loom\":\"1C2Q\",\" lop\":\"0R0E0V031002112R140A1Q0E\",\" lope\":\"0R0I1130\",\" lopp\":\"1002112G\",\" loq\":\"0T421Q23\",\" loqu\":\"0T4B\",\" lor \":\"1523\",\" loro\":\"0Q5V\",\" lors\":\"0L1T\",\" los \":\"0N0E0OGY0R061A021Q1J\",\" lost\":\"0M0N0R02\",\" lot \":\"0M1L0R030T0512071A03\",\" lov\":\"0M1E0U030Z0G100C120J140F150B1B0F\",\" love\":\"0M1W0Z0B120C\",\" loĝ\":\"1O0Y\",\" loĝa\":\"1O1A\",\" lua\":\"0B140P070S0Q151O\",\" luar\":\"0B1R\",\" lub\":\"0B040D021A371B021C0I1Q0C\",\" lubi\":\"0D021A4P\",\" lucr\":\"0T021557\",\" ludz\":\"1A2F\",\" luf\":\"03030N070Z0J10061206\",\" luft\":\"0N0C0Z0N10061206\",\" lug\":\"010H0D080O0U0P0W0Z0610091C111Q1G\",\" luga\":\"0D0E0O130P15\",\" luge\":\"0Z021C29\",\" lui \":\"0L6P0Q6Y0R0315B5\",\" luis\":\"0D020O020R0U1104\",\" luke\":\"113D\",\" lukk\":\"0R020Z0M1104120E\",\" lukm\":\"1N1I\",\" luma\":\"0B090D141O02\",\" lume\":\"110J152D1Q0B\",\" lumi\":\"0D0G0L0J0T04110Q150S1O04\",\" luo\":\"0Q05112V\",\" lup\":\"0B0O0D040Q020T0J110J150J1O041Q33\",\" lupa\":\"0B1B0D08111C1Q0P\",\" lur\":\"1005120L1Q0F\",\" lure\":\"120F\",\" luu\":\"112C\",\" luul\":\"115C\",\" lyc\":\"0L030T07100U\",\" lyck\":\"100U\",\" lyd\":\"0Z08100212091B02\",\" lyk\":\"010M0Z0L1104120L130E\",\" lyk \":\"010L\",\" lykk\":\"0Z0Q1107120K\",\" lys\":\"0Z0P100K120Y\",\" lyss\":\"100H\",\" lyst\":\"0Z0C120I\",\" lyt\":\"0Z0B12051B06\",\" lyv\":\"0Z091205\",\" là\":\"0L130Q08\",\" là \":\"0L1E0Q0C\",\" lá\":\"0O0A0P1A0S2B0U0C0Y0I1310143Z\",\" lá \":\"0P190S0Z\",\" lán\":\"0S0O130G142G\",\" lán \":\"0S2T\",\" lány\":\"142D\",\" lásk\":\"0U0I0Y0Z\",\" lát\":\"130W1465\",\" láto\":\"141M\",\" látt\":\"130G142I\",\" lâ\":\"0L030P02150E\",\" lä\":\"0N0I105M113Y1C4Z1P0Z\",\" läb\":\"1C0S\",\" läbi\":\"1C1Z\",\" läg\":\"100S\",\" lägg\":\"100H\",\" läh\":\"114G1C37\",\" lähe\":\"11461C6X\",\" läht\":\"114Q\",\" läk\":\"100C110E1C1U\",\" läks\":\"110Y1C4I\",\" läm\":\"100U110I\",\" lämn\":\"100S\",\" län\":\"0N0E101U11051P0E\",\" läng\":\"0N0F101O\",\" lär\":\"0N03101M\",\" lära\":\"1011\",\" läs\":\"0N0B101H1105\",\" läsa\":\"100G\",\" läst\":\"100H\",\" lät\":\"100V\",\" lätt\":\"100O\",\" lää\":\"1113\",\" lääk\":\"112O\",\" lå\":\"0Z0A102V120A\",\" låg\":\"100D\",\" lån\":\"0Z0D101O120F\",\" lång\":\"101B\",\" låt\":\"101G\",\" låt \":\"100P\",\" læ\":\"0T050Z23120Z131S\",\" læg\":\"0Z0X\",\" læge\":\"0Z0V\",\" læn\":\"0Z1A\",\" læng\":\"0Z1I\",\" lær\":\"0Z23122I131K\",\" læra\":\"132I\",\" lære\":\"0Z201222\",\" lært\":\"0Z0G1209\",\" læs\":\"0Z1A130C\",\" læse\":\"0Z0Y\",\" læst\":\"0Z0K130F\",\" lè\":\"0L06\",\" lé\":\"0L0A0S2Y0U0W130I1415\",\" léa\":\"0S1E\",\" léam\":\"0S4I\",\" léi\":\"0S28\",\" léi \":\"0S3A\",\" léin\":\"0S2T\",\" lê\":\"0P04\",\" lì\":\"0Q0M\",\" lì \":\"0Q0Z\",\" lí\":\"0O080P0Z0U160Y0I133L\",\" líb\":\"0U1F\",\" líbí\":\"0U1C\",\" líf\":\"131G\",\" lík\":\"132K\",\" líka\":\"133R\",\" lín\":\"0O050P110U04\",\" líng\":\"0P1B\",\" lít\":\"0U05131K\",\" lõ\":\"1C2O\",\" lõp\":\"1C1P\",\" lõpe\":\"1C1S\",\" lõpu\":\"1C1O\",\" lö\":\"0N06100W1112130U14031P7C\",\" löd\":\"1P2I\",\" lödo\":\"1P2B\",\" löf\":\"10031P6C\",\" löfo\":\"1P68\",\" lös\":\"0N0C100H\",\" löy\":\"111R\",\" lø\":\"0Z0S1211\",\" løb\":\"0Z0X\",\" løb \":\"0Z0G\",\" løbe\":\"0Z0O\",\" løp\":\"120W\",\" løpe\":\"120N\",\" løs\":\"0Z0F120Q\",\" lü\":\"0N051C0I1F1M1P0T\",\" lüt\":\"1F1Q\",\" lütf\":\"1F2D\",\" lă\":\"150X\",\" lăsa\":\"151M\",\" lē\":\"0T02\",\" lė\":\"1B0M\",\" lī\":\"0T031D2A\",\" līd\":\"1D29\",\" līdz\":\"1D5Q\",\" lū\":\"0T081B021D2Z\",\" lūd\":\"0T081D3D\",\" lūdz\":\"1D8G\",\" m'\":\"0L390S17\",\" m'a\":\"0L3I0S0M\",\" m'a \":\"0L2Z\",\" m'e\":\"0L11\",\" m-\":\"1525\",\" m-a\":\"153J\",\" m-am\":\"152N\",\" ma \":\"011403440L3M0Q2F0Y4R143A1A4R1CQT\",\" maa\":\"016S0B0R0D0W0R7G113U1C2M1F07\",\" maaa\":\"0D0T\",\" maaf\":\"0B1H\",\" maai\":\"112Y1C1V\",\" maak\":\"013Q0R2G1102\",\" maan\":\"010Y0R1D111Y\",\" maar\":\"012I0D050R621105\",\" maas\":\"0D02110T1C1V\",\" mab\":\"0B0A0D0V1Q0J\",\" maba\":\"0D0I\",\" mabi\":\"0D0G\",\" mabu\":\"0B0K0D0N\",\" mac \":\"0S3S\",\" macc\":\"0Q16\",\" mach\":\"0L0C0M060N5P0O030P0D0R090T081Q1V\",\" macs\":\"1413\",\" mad \":\"0M080Z0E\",\" mada\":\"0D150L0414091F02\",\" made\":\"0L020M1G0O060P070Z0511021F04\",\" madr\":\"0O1L0P050Q0W0S5G\",\" mag \":\"011I0N1F0R1E\",\" mag-\":\"0D1S\",\" maga\":\"0D1Z0L0M0M020Q041455150K1A021C481O04\",\" magb\":\"0D0Q\",\" magh\":\"0D0M1Q2A\",\" magk\":\"0D1E\",\" magl\":\"0D0L0Q04\",\" magp\":\"0D11\",\" mags\":\"0D1A0N08\",\" magt\":\"0D0U0Z04\",\" magu\":\"0D0F140Q\",\" magy\":\"141F\",\" magá\":\"142M\",\" maha\":\"0B130D1511081C1A1F05\",\" mahd\":\"112U\",\" mahi\":\"0D1C\",\" mai \":\"0L030N020Q3W140A15GW\",\" maid\":\"0S2T1109\",\" main\":\"0B0J0D0E0L3U0M07110R\",\" maio\":\"0P150T0U\",\" mais\":\"0D040L8V0P96111P1B18\",\" mait\":\"0D030SJZ11131B051C10\",\" maja\":\"11031C4C1Q1S\",\" majd\":\"142J\",\" mají\":\"0U18\",\" majú\":\"0Y21\",\" maka\":\"0B8D0D1T110N14021B021F07\",\" make\":\"0M210R1U0Z021002110F1F03\",\" maki\":\"0D1E0M0D1F0A\",\" makl\":\"010T\",\" maks\":\"0B0H112U1C2J1D1W1N0J1O02\",\" mal \":\"010G0L210N270O120P0P0Q040Y2Z1F09\",\" malb\":\"1O1U\",\" malf\":\"1O3W\",\" malo\":\"0O0E0T0K0U060V2V0Y0A1A031B131O0I1Q0C\",\" malp\":\"1O28\",\" mals\":\"1O31\",\" malu\":\"0B0G0D0E0P030T0V0U020V0A1A021O04\",\" mam \":\"1A56\",\" mamm\":\"03040L020Q090T07100J11021206130J\",\" mane\":\"0O0T0P0L0T1W1B7Y\",\" manh\":\"0P0Y\",\" manj\":\"0V0K1O4A\",\" mann\":\"0M020N1P0R0F100E1103121L133W\",\" mano\":\"0D080L060O1A0Q0G1BH61O0X\",\" mans\":\"0D080T0G110C1D631O03\",\" mant\":\"0D040L0C0N050O0U0P0K0Q070R020V0711041F0A1O08\",\" many\":\"0M1O1B04\",\" manę\":\"1B43\",\" manĝ\":\"1O3N\",\" map\":\"0D0G0M020O040P030Q020U041A041O021Q0E\",\" mapa\":\"0D0M0O050P041Q0I\",\" mar \":\"0O0F0P0F0S7J\",\" mare\":\"0O040Q090T0J0Z021538\",\" marg\":\"0L020O020P031102133V\",\" marr\":\"0L0B0M0T0O040P030Q021104\",\" maru\":\"0D0L1F02\",\" marí\":\"0O1Q130B\",\" mas \":\"0D2D0O020P401Q13\",\" masa\":\"0B2X0D1B0O040U03150D1F0T1O02\",\" masi\":\"0B420D051Q0U\",\" masl\":\"1N1D\",\" masu\":\"0B1O0D041F05\",\" masy\":\"0B0A0D0V\",\" masz\":\"14031A2F\",\" mat \":\"100J120G130P\",\" mata\":\"0B2D0D1R0O0K0P0C10051109130G1B121Q0I\",\" mati\":\"0B1V0D080L1J0Q071104130H\",\" matk\":\"0U0Y0Y1B11451A0Z\",\" matr\":\"0O070Q060T181103\",\" matt\":\"03030M0L0Q1310061105\",\" matu\":\"0D0I0Q020T09130C1O03\",\" mau\":\"0B2I0D030L0V0N070P080Q0H11041B09\",\" mau \":\"0B470P08\",\" mauv\":\"0L1C\",\" max\":\"0T0X14021504\",\" maxi\":\"0L020T0Z14021505\",\" may \":\"0D7Q0M0X\",\" mayo\":\"0D030M020O1B\",\" mayr\":\"0D0S\",\" maz\":\"030Y1D291F02\",\" mað\":\"131Z\",\" maðu\":\"1346\",\" mañ\":\"0O1Y1N2B\",\" maña\":\"0O2L1N34\",\" mač\":\"030U0V0L0Y291B0N\",\" mačk\":\"0V1A0Y2L\",\" maň\":\"1N49\",\" maňa\":\"1N5T\",\" maş\":\"150D1N1Q\",\" maşy\":\"1N1G\",\" maš\":\"0V091B0X1D0Z\",\" maši\":\"0V0F1B1W\",\" mašī\":\"1D2K\",\" mať\":\"0Y11\",\" mať \":\"0Y1A\",\" maž\":\"1B1Q\",\" maža\":\"1B1V\",\" maș\":\"152A\",\" mași\":\"152W\",\" maɣ\":\"034X\",\" maɣe\":\"03AL\",\" mb\":\"044L0S33\",\" mba\":\"042H\",\" mbe\":\"043Y0S1A\",\" mbei\":\"0S3S\",\" mber\":\"044K\",\" mbw\":\"045O\",\" mbwi\":\"0497\",\" mbé\":\"0S0O\",\" mbéa\":\"0S2K\",\" mc\":\"03020T03\",\" me \":\"0L7J0M740ODP0P7J0Q3T0R7M0T6U0V3011381C68\",\" me'\":\"1Q6L\",\" me'r\":\"1QAH\",\" mea\":\"0M0S0S0T0T5D154V\",\" mea \":\"0T3M155G\",\" meam\":\"0T1E\",\" mean\":\"0M0Q\",\" mecu\":\"0T0X\",\" med \":\"0ZBA108U12B1\",\" medo\":\"0P0U\",\" medy\":\"0D0F1A041B031F02\",\" mee\":\"012B0M0N0N090R5211031C6J\",\" mee \":\"0R19\",\" meel\":\"1CD1\",\" meer\":\"01210N0F0R48\",\" mees\":\"0R0Y1C22\",\" meet\":\"0M0V\",\" megb\":\"141B\",\" megc\":\"1413\",\" mege\":\"0Z5512051419\",\" megf\":\"141E\",\" megh\":\"141W1Q1R\",\" megi\":\"141N\",\" megk\":\"141U\",\" megl\":\"0Q14141O\",\" megm\":\"141H\",\" megs\":\"141H\",\" megt\":\"1432\",\" megv\":\"142A\",\" megy\":\"1429\",\" megé\":\"141H\",\" meh\":\"03050D020N2J1104140C\",\" mehr\":\"0N46\",\" mei \":\"0R020T1C150X\",\" meid\":\"0R02115C1C1L\",\" meie\":\"1C3Y\",\" meil\":\"0L1D0N0211441B161C4C\",\" mein\":\"0NBC1104130H\",\" meir\":\"132Q\",\" meis\":\"010Y0N0R0R0Z0T09110F1B03\",\" meit\":\"111J1D2K\",\" mej\":\"0B0N0O2910041N0E1Q1C\",\" meja\":\"0B1B\",\" mejo\":\"0O2V\",\" mek\":\"030J0V03110B14081A021B021D0J1F0O1N1P1O02\",\" mekd\":\"1N29\",\" mele\":\"0B1E0Q06140P151B1F02\",\" melh\":\"0P2G\",\" meli\":\"0B5Q0D030M030T0U\",\" melk\":\"01150R0L112W120C\",\" mell\":\"030A0T030Z0P100D120W141G\",\" melm\":\"034L\",\" mely\":\"141Q\",\" mem \":\"1O1D\",\" mema\":\"0B61\",\" memb\":\"0BIE0L0A0M050P060Q040T03150D1O06\",\" meme\":\"0B2L0T09\",\" memi\":\"0B720T0G\",\" memp\":\"0B49\",\" men \":\"0M0C0R1G0Z2Y101O12311NS01P1C\",\" mena\":\"0B5G0L0A100E1B06\",\" menc\":\"0B5O0O040P021O05\",\" mend\":\"0B680L020T0D1F021N1O1O08\",\" mene\":\"0B540L030R0B0T030V360Z0C118E120J140C\",\" meng\":\"0BLR0N0C0R02\",\" menj\":\"0B6C0V0A141K\",\" meno\":\"0B1Z0O1M0P110Q0G0Y1V11181B02\",\" menu\":\"0B6M0L030O0M0R020Z02\",\" meny\":\"03030B9C1404\",\" meo\":\"0T12\",\" meo \":\"0T0T\",\" mer \":\"030I0L0J10171225\",\" mera\":\"0B3P0Q0510031F141N0X\",\" mere\":\"0B9F0O0B0P090R020T040Z1K110R140715181B08\",\" merg\":\"0P03154Z1B2C\",\" merk\":\"0N0A0R07111G120I130I1B031F081O04\",\" mert\":\"1104142A\",\" mery\":\"1F031N9S\",\" mes \":\"0L3H0O0J0R081BJB\",\" mesi\":\"0B0L0Q060Y14\",\" mesm\":\"0P34\",\" mess\":\"0L0F0M0D0N090Q180T02140G\",\" mest\":\"0D020P030V1I0Y210Z0F10061103120N130B14051B0A\",\" met \":\"016D0L080M0I0RBK\",\" mett\":\"0L1A0Q0T1204\",\" metu\":\"0T0B1B211O07\",\" metų\":\"1B2E\",\" meu\":\"0L0C0P640R020T4X154N\",\" meu \":\"0P6A155W\",\" meum\":\"0T2B\",\" meus\":\"0P1L0T31\",\" með\":\"1386\",\" með \":\"13ED\",\" meñ\":\"1N1Y\",\" meñ \":\"1N1Q\",\" mež\":\"1D1R\",\" mežā\":\"1D1R\",\" mf\":\"042A\",\" mfi\":\"046I\",\" mfis\":\"04B6\",\" mg\":\"03040D4Q1A02\",\" mga\":\"03030D8K\",\" mga \":\"0DER\",\" mh\":\"0S7B\",\" mha\":\"0S5P\",\" mhad\":\"0S3S\",\" mhai\":\"0SET\",\" mhá\":\"0S11\",\" mhát\":\"0S32\",\" mi-\":\"154U\",\" mi-a\":\"155F\",\" mia\":\"0Q3N0S1E14181A2T1O6U\",\" mia \":\"0Q3O1O89\",\" miaj\":\"1O2D\",\" mian\":\"0S5P1O33\",\" miat\":\"141A\",\" miał\":\"1A3E\",\" mida\":\"1CH7\",\" midd\":\"010P0M060R0Q0Z08100C120I\",\" mied\":\"0O0S\",\" mieg\":\"1B2Z\",\" miei\":\"0Q0X\",\" miej\":\"1A1L\",\" miel\":\"0L040O030Q02118L140J1A0G1B0P1O04\",\" mien\":\"0L0E0O0X1O04\",\" mier\":\"0O030Y0B15091D25\",\" mies\":\"0Y1J113Q1A371B2E\",\" mieu\":\"0L1V\",\" mig \":\"0ZAS109T13AS\",\" migh\":\"0M191Q13\",\" migl\":\"0Q16\",\" mih\":\"0T89110Z1407\",\" mihi\":\"0T8P112E\",\" mij\":\"0RD6150B1A02\",\" mij \":\"0R51\",\" mijn\":\"0RDA\",\" miki\":\"135T\",\" miko\":\"1429\",\" miks\":\"117M1C8P1O05\",\" mikä\":\"116M\",\" milo\":\"0U0K0Y0Z1O03\",\" milu\":\"0U170Y2A\",\" mily\":\"0D03142N1F0B\",\" mim \":\"0P25\",\" min \":\"0Z8K105L125V14031O6Q1Q0R\",\" mind\":\"0M0M0N080R0F0Z0U1008120C14ER1C8G1Q1G\",\" ming\":\"0B1G\",\" minh\":\"0P5K\",\" minn\":\"100G110S1208138K1C4C1F051N0N\",\" mins\":\"03030D070R0A1008120C\",\" mint\":\"0B0Q0O06146Y150I1B0J\",\" minä\":\"11MU\",\" mio\":\"0Q42\",\" mio \":\"0Q44\",\" mir \":\"0N951Q0Z\",\" miro\":\"046Y0L050T04150B\",\" mis \":\"0L0Y0O200R0D11021CBA\",\" mise\":\"0L090M020O030Q060S3S0T0Y\",\" misi\":\"0O020T0E1B031F3O1O03\",\" misl\":\"0R040V8O1206\",\" mism\":\"0D020O2B\",\" mit \":\"0L090NAS0Z2H1460\",\" mite\":\"0N07116F\",\" mitt\":\"0N110T0D1023110A121J132V1C45\",\" mitä\":\"11KP\",\" miy\":\"0D031F15\",\" miyi\":\"1F1B\",\" mié\":\"144S\",\" miér\":\"0O02144Z\",\" mj\":\"100C1321\",\" mjö\":\"100E132X\",\" mjög\":\"1364\",\" mjöl\":\"100E\",\" ml\":\"030Y0U2X0V0M0Y1K1A09\",\" mla\":\"03040U0W0V0I0Y1C\",\" mlad\":\"0U180V0X0Y1O\",\" mli\":\"030V0Y10\",\" mlie\":\"0Y19\",\" mlu\":\"0U35\",\" mluv\":\"0U4D\",\" mn\":\"0U1W0V2Q0Y181A43\",\" mne \":\"0U0X0Y0O\",\" mni\":\"1A59\",\" mnie\":\"1A88\",\" mno\":\"0U1Z0V3A0Y1K\",\" mnog\":\"0V72\",\" mnoh\":\"0U1M0Y0L\",\" mnou\":\"0U110Y13\",\" mo \":\"0D5P0S70\",\" moc\":\"0N020O020P020R040U270Y0C14041A09\",\" moc \":\"0U2R\",\" mod \":\"0Z0P150R\",\" modo\":\"0O0A0P080Q0L0T0W1O02\",\" moe\":\"018D0P040R9J\",\" moed\":\"0P050R1U\",\" moei\":\"010P0R1F\",\" moen\":\"011G\",\" moes\":\"010T0R10\",\" moet\":\"015X0R8I\",\" mog\":\"0Q0G0R0O0V5F14021A3G\",\" moga\":\"0V3B\",\" moge\":\"0R0X\",\" mogl\":\"0Q0G0V1X1A0D\",\" mogu\":\"0V7Z\",\" mogę\":\"1A3M\",\" moh\":\"0B050U2I0Y1W14021Q0B\",\" mohl\":\"0U2E0Y15\",\" moho\":\"0B090U080Y19\",\" mohu\":\"0U0X\",\" moi\":\"0L4U0O040P0411061A1B\",\" moi \":\"0L59110A1A09\",\" moim\":\"1A1D\",\" moin\":\"0L1P\",\" moj\":\"0O030U2T0V4J0Y661A3Q1Q0V\",\" moj \":\"0V4P1Q0W\",\" moja\":\"0O040V2H0Y341A1S\",\" moje\":\"0U300V290Y2P1A3K\",\" mok\":\"0U0311031A031B5N1O03\",\" moka\":\"11041B1U1O02\",\" moky\":\"1B6F\",\" moli\":\"0O020T030V2U\",\" molt\":\"0Q6U\",\" mon \":\"0L8S0Z031Q0M\",\" mond\":\"0L3K0M0J0N090Q0O0R0D149Y15091O1N\",\" mone\":\"0M1G0O060Q020T07111Y1A041B061O04\",\" mong\":\"0D1T1Q0K\",\" mono\":\"0L020O0514021O21\",\" moo\":\"01180M070R1A110D\",\" mooi\":\"010T0R1J\",\" moon\":\"010G0M05\",\" mor \":\"0Z1M100D120K1508\",\" more\":\"0D020M2I0P030Q030T090V0B0Z03120F\",\" morg\":\"0N1Z0R220Z2E1013121G133J1O1B\",\" mori\":\"0O0F0Q0D0T14\",\" morn\":\"0M0O\",\" morr\":\"0P19\",\" mors\":\"0Q030R020T090Z051005120D1A02\",\" mort\":\"0L1W0O030P130Q0W0T2M1O2V\",\" mosc\":\"0L020O040P040Q0S0T041505\",\" mosh\":\"0435\",\" most\":\"0M0V0O0E0P0P0Q0G0U0A0Y0A0Z021002145X1A08\",\" mot \":\"0L0W100U12181P0W\",\" mote\":\"0L051B1W\",\" moth\":\"0M0R\",\" mou\":\"0L0Z0M0C0U0C\",\" mov\":\"0M0V0O0A0P080Q020T0F1O07\",\" move\":\"0M0M0O050P040T0E\",\" movi\":\"0M0L0O070P060Q021O08\",\" moy\":\"0L0D0T0V\",\" moys\":\"0T0X\",\" moż\":\"1A4S\",\" może\":\"1A65\",\" mož\":\"0U1A0V4S0Y1D\",\" možd\":\"0V1T\",\" može\":\"0VA2\",\" možn\":\"0U1S0Y1M\",\" mp\":\"041P\",\" mpa\":\"041Z\",\" mr\":\"03090M030U0I0V0Q0Y0K1A03\",\" mu \":\"04O00U2A0V0X0Y371A1F1C591F1P\",\" mu'\":\"1Q4A\",\" mub\":\"04261Q0D\",\" muc\":\"0M1J0O540Q031A021Q17\",\" much\":\"0M230O6N1A031Q22\",\" mud\":\"042K0B110O050P0U0V041Q1S\",\" muda\":\"0B210O040P0R1103\",\" mudu\":\"044E1F021Q0C\",\" mue\":\"0L020O1B\",\" muer\":\"0O1D\",\" mug\":\"043Y0R021N0Y1Q0W\",\" muga\":\"1N1B\",\" mugo\":\"0435\",\" muh\":\"04650Z021F181Q0E\",\" muhi\":\"048W\",\" muht\":\"1F1H\",\" muid\":\"0S4R110D\",\" muis\":\"0R05113I\",\" muit\":\"0PAF110K\",\" muj\":\"0O181Q1A\",\" muje\":\"0O1M\",\" muk\":\"04220B050D0L0V03111V\",\" muka\":\"0B0B114H\",\" mukh\":\"0D13\",\" mul \":\"11051CDH\",\" mula\":\"0B270D171404\",\" mulh\":\"0P1B\",\" muli\":\"0D090T0T0Z0M120Q\",\" mull\":\"110T1CCF\",\" mult\":\"0D030L050M030O090P070Q020T4J158V1O5K\",\" mulț\":\"153J\",\" mums\":\"1B4L1DAD\",\" mun \":\"100311281351\",\" munc\":\"0B0B152A\",\" mund\":\"0D0I0N0A0O230P1Y0T110Z08132X1A021L151N16\",\" mung\":\"0B361Q0S\",\" munk\":\"1102142V\",\" muns\":\"04CX\",\" munt\":\"04640D030R04130V150C\",\" muny\":\"1N6U\",\" muri\":\"04EF0B0H0O0P0T021103151E1Q0B\",\" mus \":\"0T040Z051B251Q1B\",\" musa\":\"042Z0T06\",\" mush\":\"046Y1Q1I\",\" muss\":\"0N4C\",\" must\":\"0M13111S1C1E\",\" musu\":\"0L050O020Q021F3O\",\" musz\":\"140G1A22\",\" musí\":\"0U5L0Y5W\",\" mutl\":\"1F1P1Q17\",\" muto\":\"04291P54\",\" mutt\":\"0N1D118S\",\" muu\":\"0R06113K1C1D\",\" muus\":\"11061C1L\",\" muut\":\"116V\",\" muy\":\"0O4C1F0E1Q08\",\" muy \":\"0O5O\",\" muz\":\"041Z0R0L0U070V0H150Y1A0N1B0Q1F041O0G\",\" muzi\":\"0R0T0U020V1115121B1H1O0P\",\" muž\":\"0U0Z0V060Y1C\",\" mv\":\"040S\",\" mw\":\"045Q\",\" mw'\":\"0457\",\" mw'i\":\"0491\",\" mwa\":\"0454\",\" mwan\":\"043C\",\" mwe\":\"042D\",\" mwen\":\"043C\",\" mwi\":\"044Q\",\" mwiz\":\"044E\",\" my \":\"01F40M5G0U0E0Y0K1A07\",\" myc\":\"103P\",\" myck\":\"103P\",\" mye\":\"122Y\",\" mye \":\"122Y\",\" myl\":\"1A071B1I\",\" myli\":\"1A071B2H\",\" myn\":\"1003131F\",\" mynd\":\"1330\",\" mys\":\"0L030M0F0U430Y6B100311021A04\",\" mysl\":\"0U5N0Y7Q\",\" myö\":\"112Y\",\" myöh\":\"113K\",\" myös\":\"112L\",\" myś\":\"1A2R\",\" myśl\":\"1A4D\",\" má\":\"0O540P0G0S1Z0U7T0YD413291466\",\" má \":\"0P030U4U0Y6P1310\",\" mái\":\"0S1G\",\" máir\":\"0S5P\",\" mál\":\"0U0I0Y0C131F\",\" mám\":\"0U570Y6H\",\" mám \":\"0U5K0Y6J\",\" máme\":\"0U1C0Y1M\",\" már\":\"0Y7114AZ\",\" már \":\"149O\",\" mári\":\"0Y8L1420\",\" más\":\"0O7G0P030U03144C\",\" más \":\"0O9L0P021418\",\" mási\":\"1410\",\" máso\":\"1414\",\" mát\":\"0U0U0Y1Q130L\",\" máte\":\"0U150Y25\",\" máš\":\"0U1W0Y2J\",\" máš \":\"0U2M0Y34\",\" mâ\":\"0L02152Z\",\" mâi\":\"1523\",\" mâin\":\"152O\",\" mân\":\"152W\",\" mânc\":\"152G\",\" mã\":\"0P1H\",\" mãe\":\"0P12\",\" mãe \":\"0P1A\",\" mão\":\"0P0R\",\" mä\":\"0N0F0Y0I101C111B1C2N\",\" mä \":\"111B\",\" mäl\":\"1C0N\",\" mäle\":\"1C1H\",\" män\":\"0N0B101E11051C1J\",\" mäng\":\"1C3S\",\" männ\":\"0N0H10101106\",\" må\":\"0Z1C104U122G\",\" må \":\"0Z1M1005123W\",\" måd\":\"0Z0G\",\" måde\":\"0Z0K\",\" mål\":\"0Z0B100F120F\",\" mån\":\"0Z0Q102J120L\",\" måna\":\"100G\",\" måne\":\"0Z0V1004120L\",\" mång\":\"101R\",\" mås\":\"0Z0C103A\",\" måsk\":\"0Z0F\",\" måst\":\"103A\",\" måt\":\"0Z091002121F\",\" måte\":\"120R\",\" mått\":\"0Z0A1002120O\",\" mæ\":\"0Z0F130A\",\" mæl\":\"0Z0G\",\" mælk\":\"0Z0K\",\" mæn\":\"0Z0D\",\" mænd\":\"0Z0E\",\" mær\":\"0Z08\",\" mè\":\"0L0O\",\" mèr\":\"0L0Y\",\" mère\":\"0L1M\",\" mé\":\"0L1A0O0F0P0M0SGD0U0Y134S144I\",\" mé \":\"0SIW0U0N\",\" méd\":\"0L0U0O0G0P0N1403\",\" médi\":\"0L0N0O0L0P0T1404\",\" még\":\"1495\",\" még \":\"148X\",\" mér\":\"0L08137O140V\",\" mér \":\"13F0\",\" mê\":\"0L150P0A\",\" mêm\":\"0L1W\",\" même\":\"0L37\",\" mí\":\"0O190P030S0P0U1M132X1407\",\" mí \":\"0O1B0U02\",\" mín\":\"0O030P03134N1402\",\" mín \":\"1338\",\" mína\":\"1323\",\" mínu\":\"132N1402\",\" mís\":\"0U17\",\" míst\":\"0U1N\",\" mít\":\"0U0Y\",\" mít \":\"0U1B\",\" mó\":\"0O030P020S28130T140A1A4R\",\" mó \":\"0S0O\",\" móg\":\"1A18\",\" mógł\":\"1A1Z\",\" mój\":\"1A24\",\" mój \":\"1A3E\",\" mór\":\"0S1Y\",\" mór \":\"0S5G\",\" mów\":\"1A3K\",\" mówi\":\"1A5A\",\" mô\":\"0Y5A\",\" môj\":\"0Y3M\",\" môj \":\"0Y40\",\" môž\":\"0Y5K\",\" môže\":\"0Y6L\",\" mõ\":\"1C31\",\" mõi\":\"1C0U\",\" mõis\":\"1C22\",\" mõn\":\"1C0Y\",\" mõne\":\"1C1H\",\" mõt\":\"1C14\",\" mõtl\":\"1C1S\",\" mö\":\"0N0Y100Y1102130N14061C0B1N091P2D\",\" möc\":\"0N1I\",\" möch\":\"0N2I\",\" möd\":\"1P2V\",\" mödi\":\"1P3B\",\" mör\":\"100E130M\",\" möt\":\"100G\",\" mø\":\"0Z0K120P\",\" mød\":\"0Z0X\",\" møde\":\"0Z0K\",\" mødt\":\"0Z0I\",\" mør\":\"0Z0C120G\",\" mørk\":\"0Z0E120G\",\" møt\":\"1217\",\" møte\":\"120R\",\" møtt\":\"120G\",\" mú\":\"0O0E0P0L0S120Y071303140H\",\" múi\":\"0S18\",\" múin\":\"0S4Z\",\" mús\":\"0O0M0P0O\",\" músi\":\"0O0S0P0U\",\" mü\":\"0N0Q1C0M1F291N18\",\" müm\":\"1F0B1N0Z\",\" mümk\":\"1F0G1N1D\",\" müs\":\"0N141F09\",\" müss\":\"0N1V\",\" mý\":\"0U0F0Y0E\",\" mā\":\"0T0B1D52\",\" māc\":\"1D1N\",\" mācī\":\"1D2Y\",\" māj\":\"1D33\",\" māja\":\"1D32\",\" mājā\":\"1D3Q\",\" māk\":\"1D0W\",\" mă\":\"157I\",\" mă \":\"158E\",\" măn\":\"151P\",\" mănâ\":\"1522\",\" mē\":\"0T0H1D7X\",\" mē \":\"0T0T\",\" mēr\":\"1D11\",\" mēs\":\"1D7P\",\" mēs \":\"1DHM\",\" mēģ\":\"1D0W\",\" mēģi\":\"1D2A\",\" mė\":\"1B2W\",\" mėg\":\"1B36\",\" mėgs\":\"1B59\",\" mėn\":\"1B0U\",\" mě\":\"0U7G\",\" mě \":\"0U62\",\" měl\":\"0U4M\",\" měl \":\"0U4A\",\" měla\":\"0U0R\",\" měli\":\"0U19\",\" měs\":\"0U1Q\",\" měst\":\"0U1M\",\" měsí\":\"0U0T\",\" mī\":\"0T031D20\",\" mīl\":\"0T031D29\",\" mīlu\":\"1D3G\",\" mı\":\"1F43\",\" mı \":\"1F3D\",\" mıs\":\"1F0Y\",\" mısı\":\"1F1A\",\" mň\":\"0Y10\",\" mňa\":\"0Y1Q\",\" mňa \":\"0Y22\",\" mœ\":\"0T03\",\" mū\":\"1B1L1D3O\",\" mūs\":\"1B2J1D2Y\",\" mūsu\":\"1D58\",\" mūsų\":\"1B56\",\" mūz\":\"1D18\",\" mūzi\":\"1D32\",\" mů\":\"0U3O\",\" můj\":\"0U2Q\",\" můj \":\"0U3T\",\" můž\":\"0U3A\",\" může\":\"0U3R\",\" můžu\":\"0U0S\",\" mű\":\"140K\",\" n'\":\"049M0L9S0Q03\",\" n'a\":\"046M0L82\",\" n'a \":\"0L3F\",\" n'ab\":\"04410L07\",\" n'ai\":\"0L53\",\" n'am\":\"045L\",\" n'av\":\"0L29\",\" n'e\":\"0L5C\",\" n'es\":\"0L7N\",\" n'i\":\"04BJ0L0E\",\" n'ib\":\"042Z\",\" n'ig\":\"042S\",\" n'im\":\"042S0L0I\",\" n'in\":\"044E0L02\",\" n'it\":\"042Z\",\" n'o\":\"0L0S\",\" n'u\":\"04BG\",\" n'um\":\"04EK\",\" n'y\":\"0L1F\",\" n'y \":\"0L2E\",\" n'é\":\"0L0X\",\" n'ét\":\"0L1D\",\" n-\":\"03030S0Y151A\",\" n-a\":\"1521\",\" naa\":\"010S0D080R8D110P\",\" naam\":\"010K0R0Y110G\",\" naar\":\"0R9T1107\",\" nabi\":\"031G042S0D050R02\",\" nabo\":\"041V0Z0D120A\",\" naby\":\"010G1A02\",\" nach\":\"0N7P0R0W0SC50U0A0Y0Q1Q0B\",\" naci\":\"0O0S0P071A041B031O0F\",\" nad \":\"0U0B0V070Y0R1A0P1CAO\",\" nada\":\"0D020O400P3A0R060U030V1V1A0O\",\" nade\":\"0R081A061Q9U\",\" nadi\":\"03040O221F0A\",\" nae\":\"1C12\",\" naer\":\"1C2J\",\" nag-\":\"0D1D\",\" naga\":\"0D0H\",\" nagb\":\"0D13\",\" nagd\":\"0D0G\",\" nagh\":\"0D0R1Q1E\",\" nagi\":\"042F0D0J1B06\",\" nagk\":\"0D0Z\",\" nagl\":\"0D140V0810021A0D\",\" nagm\":\"0D0K\",\" nagp\":\"0D18\",\" nags\":\"0D1N\",\" nagt\":\"0D1H\",\" nagu\":\"0D0C1C34\",\" nagy\":\"14AM\",\" nah\":\"041R0D0F0N0K0U0E0Y0S11031N1G1Q3K\",\" naha\":\"0D081N1S\",\" naii\":\"0D0L1103\",\" nain\":\"0D05111E1C26\",\" nais\":\"0D070L06111X1C3E\",\" naj\":\"0U160V200Y3M1A291O08\",\" najb\":\"0V1M0Y0G1A0I1O0E\",\" najl\":\"0V060Y1B1A0T\",\" nají\":\"0U0U\",\" naka\":\"0D520U0311021A03\",\" naki\":\"0D261F03\",\" nakt\":\"1B1P1D1D\",\" nal\":\"0D0A0U0D0V080Y081A0I1C0H\",\" nam \":\"0R0H0T0G0V2M1A19\",\" nama\":\"0B2X0D1B0U040V111A021B1J\",\" name\":\"0M0W0N0U0R060V0Y1B0G1N0L\",\" nami\":\"0D2S0R030Y0S1A0J1B0L\",\" namn\":\"100R\",\" namo\":\"0P0K1B27\",\" namu\":\"0B0K0D051B2E\",\" nana\":\"0D0U0L02\",\" nang\":\"0D64\",\" nani\":\"0D0M\",\" nanj\":\"044K\",\" naoz\":\"0Y24\",\" nap \":\"14201Q0E\",\" napa\":\"0D1S0U070V0E11071A02\",\" napi\":\"0D040U050V2H1102140A1A1A\",\" napr\":\"0U0E0V2C0Y0G14091A2B\",\" naps\":\"0U0Z1404\",\" napí\":\"0U060Y2F\",\" naro\":\"0D020U120V0E0Y1K1A0D\",\" nas \":\"0P0O0V2C1A1L\",\" nasa\":\"0D2D\",\" nasc\":\"0P0Q0Q0L0T09\",\" nasz\":\"1A2M\",\" nası\":\"1F3R\",\" nat \":\"010G0R040T020Z0A\",\" nata\":\"0B090D130L040O040P0B0Q0L0T1Y\",\" nati\":\"0D2L0L0G0M0F0N060O060P050Q020R080T0A0Z0810051507\",\" natt\":\"0Z0F100L120X\",\" nauc\":\"1A24\",\" naud\":\"11021B1J1D2Y\",\" nauj\":\"1B4P\",\" nauč\":\"0U140V220Y1L\",\" nav \":\"1DHM1Q1A\",\" navn\":\"0Z12120F\",\" navš\":\"0U0X0Y12\",\" naw\":\"0302042O0D0A1A0Q\",\" nawa\":\"0D0I\",\" nawe\":\"0304044Q1A0V\",\" nazi\":\"0Q4P0Z021F08\",\" nači\":\"0V1M\",\" naš\":\"0U2H0V190Y351B04\",\" naše\":\"0U1S0V0U0Y17\",\" naši\":\"0U0G0V0K0Y17\",\" nd\":\"04JZ0S2A\",\" nda\":\"04SG\",\" ndab\":\"04AL\",\" ndaf\":\"0441\",\" ndag\":\"04A4\",\" ndak\":\"04G8\",\" ndam\":\"044E\",\" ndan\":\"043C\",\" ndar\":\"0447\",\" ndas\":\"04F3\",\" ndat\":\"043C\",\" ndaz\":\"04EF\",\" nde\":\"043D0S0X\",\" nde \":\"0447\",\" ndea\":\"0S3J\",\" ndi\":\"04EE\",\" ndi \":\"04BX\",\" ndib\":\"0453\",\" ndik\":\"043O\",\" ndip\":\"0441\",\" ndá\":\"0S0O\",\" ndái\":\"0S2T\",\" ne-a\":\"151T\",\" nea\":\"0M0C0Q090S1A0T06150G1B1Y1D1Y1O04\",\" neam\":\"0S3J\",\" neat\":\"1B2N1D321O03\",\" nebe\":\"0N0H0U0R0Y0W1B1N\",\" nebi\":\"0U021B0H1D3U\",\" nebo\":\"0U280V0C0Y3J\",\" nebu\":\"0U2S0Y1Z150O1B2O1O04\",\" neby\":\"0U2N\",\" nebū\":\"1B1G1D1R\",\" nec\":\"03050M080O2G0P0H0Q080T2B0U5B0Y55150W1O0P\",\" nec \":\"0T1G\",\" nece\":\"0M070O370P0L0Q080T0K150R1O1D\",\" nech\":\"0U750Y63\",\" ned \":\"0Z0U100G120T\",\" neda\":\"0U0A1B1R1D2F\",\" nede\":\"0R0L0V1T0Y0O0Z08100312071B0E1F551O06\",\" nedo\":\"0U1Y0V0T0Y0Y1B091D2A1P4F\",\" nedz\":\"1D2O\",\" nedē\":\"1D1R\",\" nedě\":\"0U16\",\" nee\":\"011X0M370R1J0U051B031C181D2C1O05\",\" nee \":\"010K0R0H\",\" need\":\"0M4D1C2U\",\" neem\":\"011E0R15\",\" nees\":\"1D5U\",\" nego\":\"0D020O0C0P050Q0S0T0R0V301A021O06\",\" negr\":\"0O0I0P0515081B0K1D3L\",\" negu\":\"1B1J\",\" neh\":\"03030N0J0U0S0Y2Q141R1F0A1Q7C\",\" neh \":\"1QAQ\",\" neho\":\"0U0N0Y2L1408\",\" nehé\":\"1417\",\" nei \":\"0Q0F120H130Y1B1Z\",\" neid\":\"0N031C1H\",\" neie\":\"1B051D2F\",\" neil\":\"1B051C26\",\" neiz\":\"0V061D2T\",\" neiš\":\"1B1M\",\" nej\":\"03020U4O0Y2I0Z0H100E14021B0A1Q09\",\" nej \":\"0Y0O0Z0L100E\",\" neje\":\"0U0I0Y131402\",\" nejl\":\"0U0Q\",\" nejs\":\"0U34\",\" nek \":\"0R021O0Q1P1J\",\" neka\":\"0V1N1B241D881O02\",\" neke\":\"0V0Z149M1B1K\",\" neki\":\"0V1A143J\",\" nekk\":\"034I\",\" neko\":\"0U0H0V3Z1B051D3G1O09\",\" nekü\":\"1415\",\" nekā\":\"1D4C\",\" nel \":\"0Q25\",\" nela\":\"0P051B1Y\",\" neli\":\"0U03110M1B0O1P1D\",\" nell\":\"032B0Q2K\",\" nem \":\"0P1E14SG1P0U1Q0A\",\" nema\":\"0U0B0V510Y1O131M1B2W1D1D1O03\",\" neme\":\"0R0V0Y0U130Y14071B0C\",\" neml\":\"03060U0R1F02\",\" nemo\":\"0T1L0U3Y0V300Y2P1B13\",\" nemu\":\"0U190Y0Z\",\" nemy\":\"03020U0N0Y171B0A\",\" nemá\":\"0U4R0Y4G\",\" nemô\":\"0Y3G\",\" nemė\":\"1B1U\",\" nemě\":\"0U2I\",\" nemů\":\"0U2Q\",\" nena\":\"0U0X0Y0I1B09\",\" nend\":\"1C29\",\" nenh\":\"0P14\",\" neni\":\"1O7N\",\" neno\":\"0U031B4F1D2O\",\" není\":\"0U62\",\" nepa\":\"0U0E0Y0D1BAD1D7R1O02\",\" nepi\":\"0U0D0Y0B1B071D3C\",\" nepo\":\"0T060U2T0V0A0Y5K150I1O02\",\" nepr\":\"0U0J0V0W0Y2R1B2I1O0E\",\" nepř\":\"0U23\",\" neq\":\"030A0T141Q09\",\" nequ\":\"0T17\",\" ner \":\"100M\",\" nere\":\"15061B1R1F661O03\",\" nero\":\"0Q050U0T0Y2211081B02\",\" neru\":\"0U021D1W\",\" nesa\":\"0U031B1N1D3G\",\" nesc\":\"0T2I1O03\",\" nesi\":\"1B3V1F03\",\" nesk\":\"03020U050Y1K1B0U\",\" nesm\":\"03020U0T0Y0P\",\" nesn\":\"0U0V\",\" nesp\":\"0U0I0Y151B071D2K\",\" ness\":\"031Z0P0K0Q1M\",\" nesu\":\"1B4K1O02\",\" net \":\"012H0R101B1V1F021Q5B\",\" nete\":\"1B1F\",\" neti\":\"11041B221D1D1N0J\",\" nett\":\"03660L0E0N0B0Z021107120F\",\" netu\":\"0U090Y0D1B5B\",\" neud\":\"0U0Z\",\" neue\":\"0N1S\",\" neum\":\"0O020U0T\",\" neur\":\"0R020U020Y0Y\",\" neuž\":\"1B1J\",\" neva\":\"0O050P040U071B1H1DDL\",\" neve\":\"0M2R0P080Q060R020U030V0G0Y1Y14221B14\",\" nevi\":\"0Q040U1I0V090Y77150A1B071D5C1O021P0I\",\" nevo\":\"0U050V0815431O02\",\" nevy\":\"0U120Y151B05\",\" neví\":\"0U2Z\",\" nevē\":\"1D3L\",\" nevě\":\"0U23\",\" nex\":\"03040M0U\",\" next\":\"0M15\",\" nez\":\"030Z04AM0L080U3G0V0D0Y2R1D2S1F02\",\" neza\":\"04HB0U1V0V0G0Y1H1F02\",\" nezi\":\"1D6G\",\" nezn\":\"0U0U0Y0B\",\" neć\":\"0V1N\",\" neće\":\"0V2P\",\" neį\":\"1B0Y\",\" neř\":\"0U12\",\" neře\":\"0U0X\",\" neš\":\"0U0B0V200Y0I1B0V\",\" nešt\":\"0U030V521B03\",\" než\":\"0U320Y1C1B3B\",\" než \":\"0U3Q0Y1F\",\" neži\":\"0U051B6F\",\" ng\":\"0304046Z0B0C0DAH0S0V1Q65\",\" ng \":\"0DGM\",\" nga\":\"030204A40B060D1I1Q3E\",\" nga \":\"03030D0K\",\" ngah\":\"04G3\",\" ngay\":\"0D28\",\" ngi\":\"045H0D021Q0N\",\" ngir\":\"044Q\",\" ngo\":\"04390B041Q3C\",\" ngo \":\"044K\",\" ngr\":\"0S0M\",\" ngu\":\"0D071Q1P\",\" nia\":\"1O1P\",\" nia \":\"1O1Z\",\" nic \":\"0U3I1A2C\",\" nich\":\"0NP10R030U0B0Y0J1A0F\",\" nici\":\"157T\",\" nico\":\"042S\",\" nie \":\"01SG0N2D0YBT1ASG\",\" niek\":\"0Y5D1A0L1BDU\",\" niem\":\"011M0N1T0R1V11021A17\",\" nien\":\"0Q1H1A0Q\",\" niet\":\"0O030RPP1A03\",\" nieu\":\"0R2F1A0A\",\" nieč\":\"0Y3O\",\" nif\":\"1P0R\",\" nig\":\"0M0T0Q0T0T0H1A1V1O0A\",\" nigd\":\"1A2Z\",\" nige\":\"0Q0U0T04\",\" nigh\":\"0M13\",\" nih\":\"0T2R1F041Q13\",\" nihi\":\"0T2X\",\" nii\":\"116B1C32\",\" nii \":\"11031C6H\",\" niin\":\"11C5\",\" nij\":\"0R020U020V5D1F02\",\" nije\":\"0VCS1F03\",\" nika\":\"0U050V5I\",\" nikd\":\"0U680Y4L\",\" niko\":\"041V0U100V2Q0Y0K1A0O\",\" niks\":\"011D0R0C\",\" nikt\":\"0Y201A1D\",\" nila\":\"0B080D2W\",\" nime\":\"113I152E1C1Z\",\" nimi\":\"0T160U0D0Y0I111J152P1A071C1A\",\" nimu\":\"0497\",\" nin \":\"1O1G\",\" ninc\":\"145F\",\" nind\":\"045Y\",\" ning\":\"042F0O1E0P1R0T04150K1C1S\",\" niny\":\"0D4H\",\" nir\":\"0N021N37\",\" nire\":\"0D021N3J\",\" nis\":\"0P0A0T0L0V5311021A061F02\",\" nisa\":\"0V911F02\",\" nisi\":\"0T0L0V1Y\",\" nito\":\"0D0Z\",\" niy\":\"04150D4W1F0D\",\" niya\":\"0D8D\",\" nið\":\"1313\",\" niðu\":\"1321\",\" niñ\":\"0O23\",\" niño\":\"0O27\",\" nič\":\"0U0C0Y3E\",\" nič \":\"0Y3Y\",\" niš\":\"0V1H\",\" ništ\":\"0V3R\",\" niż\":\"1A1H\",\" niż \":\"1A2A\",\" nj\":\"0V2Z10041306\",\" nje\":\"0V2F\",\" njeg\":\"0V4A\",\" nk\":\"043D\",\" nk'\":\"042K\",\" nk'u\":\"0435\",\" nka\":\"041O\",\" nko\":\"0429\",\" nkor\":\"042Z\",\" nku\":\"042D\",\" nn\":\"031F\",\" no-\":\"1P1J\",\" no-l\":\"1P1T\",\" noa\":\"152N\",\" noas\":\"1523\",\" nobi\":\"0T23\",\" noc\":\"0L020N3M0O1H0Q020R060T1D0U0U0Y161A0R\",\" noch\":\"0N5Y0O1U0R08\",\" noct\":\"0O020T16\",\" nod\":\"011E0R2C1D0U\",\" nodi\":\"011I0R35\",\" noe\":\"0R0A0T0A127A1F09\",\" noe \":\"0T061248\",\" noen\":\"123B\",\" nog\":\"012B0R490V070Z4Y100K1A091D1P\",\" nog \":\"011W0R5I100F\",\" noge\":\"0V070Z4T\",\" nogl\":\"0Z19\",\" nogu\":\"0V061D1W\",\" noi\":\"0L0J0M050P1I0Q3X111A153E\",\" noi \":\"0Q3V1546\",\" noin\":\"112M\",\" noit\":\"0P1T1109\",\" nok\":\"0Z0W1103121C13241D0U1F061O0K\",\" nok \":\"0Z13121C\",\" nokk\":\"1106134H\",\" nol\":\"0Q020T2L11071D0W1PA3\",\" noli\":\"0T1Z\",\" nolo\":\"0T0G11071PA2\",\" nolö\":\"1P1R\",\" nom\":\"0B060L1P0O0V0P0Z0Q0R0T2I1D0Q1O171Q1B\",\" nom \":\"0L171Q2A\",\" nomb\":\"0L1F0O131O0B\",\" nome\":\"0P190Q0N0T1W1O02\",\" non\":\"0B040L180M060QSG0TJ80Z021Q09\",\" non \":\"0L200QSG0TIK\",\" nonn\":\"0Q0P0T1P\",\" noo\":\"011M0D0O0M020R2M1C19\",\" nooi\":\"011A0R30\",\" noon\":\"0D180M02\",\" noor\":\"0R0C1C2U\",\" nop\":\"111415081D1P\",\" nope\":\"112M\",\" nopi\":\"1D3L\",\" nord\":\"0L090N060Q0G0Z081004120H150A1O08\",\" norg\":\"0Z041003120F\",\" nori\":\"15051BCH\",\" nors\":\"0Z0410021105120O1B4Y\",\" norv\":\"0Q0H0V1P14031B041F031O02\",\" norė\":\"1B4R\",\" nos \":\"0L1E0O3E0P2T0T260U0214041A03\",\" nosi\":\"0U070V1F1A0D1B071P17\",\" noso\":\"0O1I0T0A\",\" noss\":\"0P2G\",\" nost\":\"0O020Q2J0T2R110N150X\",\" not \":\"0M700N031F051Q61\",\" nota\":\"0L020O0B0P080Q050T07131V15051A02\",\" note\":\"0L0B0M060N020P020Q020R030U020Z021D1W\",\" noth\":\"0M0V\",\" noti\":\"0L020M0C0N030O0I0Q0E0T021D581O03\",\" notr\":\"0L2S\",\" nou\":\"01250LDU0R091111152Q\",\" nou \":\"01270R0D151P\",\" nous\":\"0LIL1121\",\" nouv\":\"0L39\",\" nova\":\"0P1B0T0O0V1H1O2A\",\" novi\":\"0O0N0P020T100U0I0V1X0Y0A\",\" novo\":\"0P1T0T050U0B0V0K\",\" nové\":\"0U0V0Y0S\",\" nový\":\"0U0T0Y0W\",\" now\":\"0M1R1A1L\",\" now \":\"0M2B\",\" noz\":\"1D0U\",\" ns\":\"0305042R\",\" nsh\":\"0472\",\" nsha\":\"049C\",\" nt\":\"030404FJ\",\" nta\":\"04HP\",\" nta \":\"04HO\",\" ntac\":\"0447\",\" ntar\":\"042Z\",\" nti\":\"04HN\",\" ntib\":\"04AL\",\" ntid\":\"043C\",\" ntim\":\"0464\",\" ntit\":\"043O\",\" ntiw\":\"043V\",\" ntiy\":\"043I\",\" ntu\":\"04AS\",\" ntun\":\"0441\",\" ntus\":\"044K\",\" nu \":\"0L020R2A0Z1Y102P15S41O061P2E\",\" nu-\":\"1557\",\" nu-i\":\"1537\",\" nu-m\":\"151V\",\" nua\":\"0L050S30\",\" nua \":\"0S4R\",\" nuai\":\"0S4Z\",\" nue\":\"0L020O421B08\",\" nues\":\"0O2Q\",\" nuev\":\"0O2N\",\" nui\":\"0L101102\",\" nuit\":\"0L1O\",\" nuk\":\"111Y1B0C1O02\",\" nukk\":\"113D\",\" nuli\":\"1B0C1O051P0Z\",\" null\":\"0L080N030Q190T1D1403\",\" num \":\"0P0O0T29\",\" nun\":\"0N0A0O230P2I0T421B021O1Q1Q07\",\" nun \":\"0N0H1O2Y\",\" nunc\":\"0O2R0P350T2O\",\" nunq\":\"0T14\",\" nuo\":\"0Q2T111F1B4X\",\" nuo \":\"110I1B4P\",\" nuom\":\"1B1F\",\" nuor\":\"112R\",\" nuov\":\"0Q281B05\",\" nup\":\"0T071B0R\",\" nuq\":\"1Q93\",\" nuq \":\"1Q8F\",\" nuqd\":\"1Q6E\",\" nur\":\"03020M020N2P0T0311071B071O27\",\" nur \":\"0N4H1O49\",\" nus\":\"0T021B48\",\" nusi\":\"1B5I\",\" nust\":\"1B1T\",\" nuu\":\"010F1102\",\" nuw\":\"01120302\",\" nuwe\":\"01150302\",\" ny \":\"0Z0N100J1102120N\",\" nya\":\"042O0B0G100P140S\",\" nya \":\"100O\",\" nye\":\"042Z0Z0P120R142V\",\" nye \":\"0Z0T120R\",\" nyel\":\"1429\",\" nyen\":\"0453\",\" nyi\":\"04261419\",\" nyin\":\"042Z\",\" nyo\":\"04221412\",\" nyok\":\"042S\",\" nyt\":\"0Z0G1009113B120J\",\" nyt \":\"0Z0B117W\",\" nytt\":\"0Z061009120G\",\" nyu\":\"04191419\",\" nyug\":\"1418\",\" nz\":\"045S\",\" nzi\":\"043Y\",\" nzo\":\"0497\",\" nzob\":\"042Z\",\" nzog\":\"044X\",\" nzok\":\"043V\",\" nzu\":\"0436\",\" nzu \":\"045L\",\" ná\":\"0S490U4E0Y4O131E140J\",\" ná \":\"0S3C130F\",\" nái\":\"0S1C\",\" náis\":\"0S4I\",\" náj\":\"0U020Y10\",\" nál\":\"0U06130B1418\",\" nála\":\"0U071410\",\" nám\":\"0U220Y1H1309\",\" nám \":\"0U230Y1R\",\" náro\":\"0U090Y0X\",\" nás\":\"0U210Y1N\",\" nás \":\"0U2C0Y1R\",\" nã\":\"0PLO\",\" não\":\"0POG\",\" não \":\"0PR9\",\" nä\":\"0N0D103P115K1C4V1NA1\",\" näd\":\"1C0U1N1J\",\" näda\":\"1C22\",\" nädi\":\"1N1X\",\" näe\":\"110S1C1F\",\" näg\":\"1C1M\",\" nägi\":\"1C2U\",\" näh\":\"0N0B111Y1C0L1N21\",\" nähi\":\"1N2T\",\" nähn\":\"112D\",\" näi\":\"111S1C19\",\" näin\":\"112R1C1E\",\" näk\":\"111D\",\" näm\":\"0N021003110T1N99\",\" näme\":\"1NBX\",\" när\":\"103J\",\" när \":\"102P\",\" näs\":\"101D\",\" näst\":\"1018\",\" näy\":\"1131\",\" näyt\":\"1178\",\" näç\":\"1N1W\",\" näçe\":\"1N2J\",\" nå\":\"0Z0K104N122C\",\" nå \":\"0Z041002122E\",\" någ\":\"105Y\",\" någo\":\"1053\",\" någr\":\"100Y\",\" når\":\"0Z18123J\",\" når \":\"0Z1I123J\",\" næ\":\"0Z0S120C131B\",\" nær\":\"0Z0N120W130N\",\" næs\":\"0Z191315\",\" næst\":\"0Z1B132E\",\" né\":\"0L0K0P020Q041436\",\" néh\":\"141M\",\" néhá\":\"1414\",\" nél\":\"141D\",\" nélk\":\"141G\",\" néz\":\"1430\",\" ní\":\"0P030SHL0U0S0Y0D1309\",\" ní \":\"0SBB0U0M\",\" níl\":\"0S9U\",\" níl \":\"0SQR\",\" níli\":\"0S2K\",\" ním \":\"0U0V0Y0P\",\" nío\":\"0S2T\",\" níor\":\"0S4R\",\" níos\":\"0S6M\",\" nó\":\"0P320S1B0T02130M1A03\",\" nó \":\"0S1E\",\" nós\":\"0P3P\",\" nós \":\"0P4O\",\" nõ\":\"1C14\",\" nõu\":\"1C16\",\" nõus\":\"1C1S\",\" nö\":\"0N02100D11021404\",\" nø\":\"0Z0H120G\",\" nød\":\"0Z0S120I\",\" nødt\":\"0Z0M\",\" nøg\":\"0Z0E\",\" nøgl\":\"0Z0F\",\" nøk\":\"120A\",\" nøy\":\"1208\",\" nú\":\"0O0B0P0D131B\",\" nü\":\"0N021C181F041P0F\",\" nüü\":\"1C1J\",\" nüüd\":\"1C3S\",\" ný\":\"131E\",\" nýj\":\"1316\",\" nā\":\"0T061D26\",\" nāk\":\"1D1J\",\" nē\":\"0T061D0M\",\" nė\":\"1B1V\",\" nėr\":\"1B2J\",\" nėra\":\"1B54\",\" ně\":\"0U58\",\" něc\":\"0U28\",\" něco\":\"0U34\",\" něj\":\"0U1T\",\" něj \":\"0U0U\",\" něja\":\"0U1Q\",\" něk\":\"0U3H\",\" někd\":\"0U2N\",\" něko\":\"0U1C\",\" někt\":\"0U0R\",\" něm\":\"0U0R\",\" nō\":\"0T16\",\" nōn\":\"0T1I\",\" nōn \":\"0T17\",\" nő\":\"1410\",\" nū\":\"0T02\",\" o'\":\"0M02\",\" oa\":\"1004151Z\",\" oam\":\"152U\",\" oame\":\"153N\",\" ob \":\"0N0R0T081P30\",\" oba \":\"0U0I0V071P28\",\" obai\":\"0S8U\",\" obe \":\"0V0H1P5K\",\" obes\":\"1P1R\",\" obi\":\"0Q040T030V0J151H1A0X1PD3\",\" obi \":\"1P3B\",\" obik\":\"1P9S\",\" obin\":\"1P28\",\" obis\":\"1P17\",\" obr\":\"0O090P0R0T020U0I0V0G0Y0Z15061A0J\",\" obri\":\"0P0T\",\" obs \":\"1P17\",\" obsi\":\"1P19\",\" obě\":\"0U0S\",\" occ\":\"0L0U0M050O020Q1L0T1E\",\" occi\":\"0L040O030T0T\",\" occu\":\"0L160M050Q0T0T0I\",\" och\":\"0O0A0R080U0D0Y0R108N15101A0D\",\" och \":\"108O1A03\",\" ock\":\"100S\",\" ocks\":\"100S\",\" ocr\":\"0S0O\",\" ocra\":\"0S2T\",\" oct\":\"0L020M060O030T0P1505\",\" ocu\":\"0O1B0P0N0T19151A\",\" ocul\":\"0O090P030T1C\",\" ocup\":\"0O0V0P0R151M\",\" od \":\"0U1S0V4L0Y271A30\",\" oda\":\"0V0D141R15071F1E\",\" oda \":\"140Y1B031F09\",\" ode\":\"0L020N1K0P0B0T070U1I0V0Y1A0K1P1L\",\" odel\":\"1P1G\",\" oder\":\"0N2M0T08\",\" odeš\":\"0U140V0H\",\" odg\":\"0V111A02\",\" odgo\":\"0V2L\",\" odi\":\"0O0J0P030Q140T0N0Y0T1508\",\" odiš\":\"0Y10\",\" odl\":\"0U070V130Y091A04\",\" odlu\":\"0V1N\",\" odo\":\"0Q040T050U020V040Y0H11211O05\",\" odot\":\"114Z\",\" odp\":\"0U1S0Y2Q1A1E\",\" odpo\":\"0U1Z0Y2N1A1Z\",\" odu\":\"0V0F1F031P0V\",\" odun\":\"1F021P11\",\" oe\":\"0R03\",\" of \":\"012E0MCF0R2K131V1P0Z\",\" ofe\":\"0O060P0D150L1A031O071P21\",\" ofe \":\"1P1N\",\" off\":\"0L0F0M1O0N0B0Q0E0R040T0K0Z0810051206\",\" off \":\"0M1C\",\" offi\":\"0L040M0L0N020R030T0G0Z031002\",\" ofi\":\"0O0E0P0415071A031B021F0C1O0A1P2J\",\" ofi \":\"1P1R\",\" oft\":\"0M0L0N0P0Z0I100R1212130Y1O0R\",\" oft \":\"0N16131Y\",\" ofta\":\"100R1O02\",\" ofte\":\"0M0S0Z0M12121O1F\",\" og \":\"0ZB512EI13B0\",\" oge\":\"0R0O1P0E\",\" ogen\":\"0R0W\",\" ogg\":\"0Q1X\",\" oggi\":\"0Q1W\",\" ogl\":\"0V031A0G1N34\",\" ogla\":\"1N3R\",\" ogn\":\"0Q1E1A04\",\" ogni\":\"0Q1B1A07\",\" ogs\":\"0Z0W1213\",\" også\":\"0Z131213\",\" ohn\":\"0N110U04\",\" ohne\":\"0N1O\",\" oi\":\"0L070M020O020P090S1E111O\",\" oib\":\"0S0M\",\" oibr\":\"0S2K\",\" oik\":\"112T\",\" oike\":\"116P\",\" oj\":\"0O0M11041A0Z\",\" ojc\":\"1A1E\",\" ojo\":\"0O0P\",\" okam\":\"0U090Y0D1N1L\",\" okaz\":\"1A0K1O2R\",\" oki\":\"1A031P25\",\" okik\":\"1P22\",\" okk\":\"134E\",\" okka\":\"1355\",\" okku\":\"1348\",\" oko\":\"0U0B0V0J0Y0S14151A0F\",\" okol\":\"0U0A0V060Y0Y1A0A\",\" okt\":\"0B050D030N030R030Z0E100214081O02\",\" okto\":\"0B0A0N050R050Z0H10021O04\",\" oku\":\"0V040Y0E1A061F2V1N1D1O10\",\" okul\":\"0Y0I1A091F1R1O15\",\" okuw\":\"1N1V\",\" okö\":\"1P0T\",\" ol \":\"1F091NIS1O2B1P2E\",\" ola\":\"0B070D020O020Q0E140G15051B041F7F1N781P1M\",\" ola \":\"1P1N\",\" olab\":\"1F1N\",\" olac\":\"1F3O\",\" olan\":\"0D020Q0F15061B081F1S\",\" olar\":\"1F2H1N9R\",\" old\":\"0M0X0Z02140Q1FA0\",\" old \":\"0M10\",\" oldu\":\"1FD7\",\" ole\":\"0B110T0B0U0211NM1A021CHG1O021P2Z\",\" ole \":\"11MK1CCV1P33\",\" oled\":\"1C9J\",\" oleh\":\"0B20\",\" olek\":\"110K1C45\",\" olem\":\"11671C4S\",\" olen\":\"11HZ1CE6\",\" olet\":\"0T0411FN1C1Z\",\" olev\":\"11471C10\",\" olh\":\"0P1I\",\" olha\":\"0P0R\",\" olho\":\"0P0Z\",\" oli \":\"11KP1CDR1P3Q\",\" olid\":\"1C22\",\" olik\":\"100911141P52\",\" olin\":\"113M1C17\",\" olis\":\"1189\",\" oll\":\"117C14021C1F\",\" olla\":\"0O02117X1C3H\",\" olle\":\"112B\",\" ollu\":\"1186\",\" olm\":\"1F6Z\",\" olma\":\"1F91\",\" oln\":\"1C1P\",\" olnu\":\"1C45\",\" olu\":\"0V03110E1C0I1F2K\",\" olur\":\"1F24\",\" olv\":\"0O0Z141M\",\" olva\":\"141P\",\" olvi\":\"0O19\",\" oly\":\"100D1103144J\",\" olya\":\"144O\",\" om \":\"01BX0R7W0Z5X108Z126J150Z1P1Q\",\" oma\":\"0N020R0511121C7R1P0J\",\" oma \":\"0N030R05110E1CGK1P0G\",\" omd\":\"0R0P\",\" omda\":\"0R0X\",\" ome \":\"1P1N\",\" omes\":\"1P15\",\" omi\":\"0Q020T040V05110P1P5R\",\" omi \":\"1P36\",\" omik\":\"1P1J\",\" omis\":\"11101P28\",\" omk\":\"0Z0G1005\",\" omkr\":\"0Z0F1004\",\" omn\":\"0T7P\",\" omne\":\"0T3H\",\" omni\":\"0T4U\",\" omr\":\"0R020Z0610041209\",\" omt\":\"010H0Z021206\",\" on \":\"0L3X0M600U120V540Y2J11SG1A581CSG1F0P1N0P\",\" ona\":\"0R050U0W0V3C0Y221A371F2T\",\" ona \":\"0U180V7Z0Y2K1A531F3K\",\" onc\":\"0L060M0C0O02\",\" ond\":\"01200O020P2P0R270V0E0Z0D10021F0N1N0T1O02\",\" onda\":\"0O020P040R050V101F0V1N14\",\" onde\":\"01240P3B0R2S0Z02\",\" one\":\"0M300Q090R030T050U040V071A04\",\" one \":\"0M3U0V0E1A07\",\" ong\":\"010N0L020R18111J\",\" onge\":\"010P0R1O113Q\",\" oni\":\"0U0A0V1H0Y0O1A0V1O3A1P1E\",\" oni \":\"0U0E0V3D0Y0T1A1E1O661P0Z\",\" onk\":\"0N040Z06114G12071O07\",\" onko\":\"119V\",\" onl\":\"0M1H0Q020R061F5G\",\" onla\":\"0R051F7C\",\" only\":\"0M1Y\",\" onn\":\"11231403\",\" onne\":\"113S\",\" ono\":\"0Q020R020V131504\",\" ono \":\"0V2D1A02\",\" ons\":\"01CH0R2T0Z021P0E\",\" ons \":\"01CX0R3J\",\" ont\":\"01240L3E0M020P130R2Q100H\",\" ont \":\"0L5F100H\",\" ontb\":\"010G0R0M\",\" onte\":\"0P1E0R02\",\" ontm\":\"010K0R0W\",\" onts\":\"0R0S\",\" onu\":\"1FD61N58\",\" onu \":\"1F9W\",\" onun\":\"1F92\",\" onuñ\":\"1N2R\",\" onuň\":\"1N4G\",\" ony\":\"0U020Y0A1N7G\",\" ony \":\"0U020Y0C1N9X\",\" onz\":\"0L020P020R1F\",\" onze\":\"0L030P020R1T\",\" oo\":\"013P0D020R10110H1C1O\",\" ooi\":\"0R0W\",\" ooit\":\"0R17\",\" ook\":\"01110R1V1103\",\" ook \":\"01120R2J\",\" oom\":\"010J0R08\",\" oop\":\"010Z\",\" oop \":\"010Q\",\" oor\":\"015P0R0K\",\" oor \":\"014J0R02\",\" oot\":\"110B1C1K\",\" oota\":\"1C3S\",\" op \":\"015O0RB40Z2I\",\" opd\":\"0R050Z09\",\" open\":\"0M0U0R1D\",\" opet\":\"0R020V1A1140\",\" opf\":\"0N030Z0H\",\" opg\":\"01140R120Z05\",\" opge\":\"01160R1E\",\" opis\":\"0D05114U1A05\",\" opp\":\"0L050M070Q050R040T120Z031118125B\",\" opp \":\"122C\",\" oppf\":\"120I\",\" oppi\":\"0T0R112V\",\" oppl\":\"120G\",\" oppt\":\"120C\",\" opr\":\"0R050U1O0V0G0Y0G0Z0415141A06\",\" opra\":\"0U2A0V0C0Y0H\",\" opu\":\"0T1V0U0D0V030Y0A15061A09\",\" opus\":\"0T1Y0U0G0Y0C1A04\",\" opv\":\"010H0R030Z05\",\" opvo\":\"010G0R02\",\" or \":\"0L020M18\",\" ora \":\"0P030Q220T06150W1O02\",\" orad\":\"1F1K\",\" oran\":\"0BA30L060M030N050R040Z0211041B041F041O0E\",\" oras\":\"0D111B0Z1F02\",\" ord \":\"0Z0Q100J120O\",\" orde\":\"0M0E0N030O0M0P090R070Z0D100B120G\",\" oriu\":\"0T0V\",\" orm\":\"0Q050S3X10051F06\",\" orm \":\"0SEM1002\",\" orsz\":\"1414\",\" ort\":\"0N060S200T051F0M\",\" ort \":\"0N080S65\",\" orð\":\"131C\",\" os \":\"0L020O0O0P8L0T060Z2G\",\" osaa\":\"115J\",\" osc\":\"0O0B0Q020T0S\",\" ose\":\"0L020V100Y0E\",\" oseć\":\"0V27\",\" osk\":\"10041A041C18\",\" oska\":\"1A061C2X\",\" osp\":\"0D020Q0P0U050Y0I\",\" oss\":\"0P020Q080T031029123K\",\" oss \":\"1029123K\",\" osta\":\"0Q020U0D0V3I0Y0U11371A1D1C1O\",\" osti\":\"0T0G112K1C1A\",\" ota\":\"0V0I110V1N15\",\" otag\":\"1N1L\",\" ote\":\"0D020U1Y0Y1C11051F0A\",\" otec\":\"0U1F0Y1M\",\" otev\":\"0U1A\",\" oth\":\"0M15\",\" othe\":\"0M1K\",\" otr\":\"0O2G0U060V0310061A091D0Q\",\" otra\":\"0O1J0U02\",\" otro\":\"0O1Q0U041004\",\" ots\":\"11031C28\",\" otsi\":\"1C1L\",\" otsu\":\"1C26\",\" ott\":\"0Q0M0Z08111W143C\",\" ott \":\"1429\",\" otta\":\"1139\",\" otth\":\"141B\",\" otu\":\"10021F1C1N201P0E\",\" otur\":\"10021F1D1N2K\",\" otv\":\"0V0M0Y1F\",\" otvo\":\"0V1F0Y1N\",\" oty\":\"1N1I\",\" otyr\":\"1N22\",\" otá\":\"0U0R0Y1J\",\" otáz\":\"0U110Y1X\",\" ou\":\"01180L2D0M2K0P4M0R0L11091505\",\" ou \":\"010M0L1T0P1V\",\" oub\":\"0L0O\",\" oud\":\"010J0R291105\",\" oud \":\"0R0W\",\" oude\":\"0R22\",\" oue\":\"010Z\",\" ouer\":\"0112\",\" our\":\"0L030M1H0P07\",\" our \":\"0M1V\",\" out\":\"0L030M360P2B110B\",\" out \":\"0M3R\",\" outr\":\"0L020P2L\",\" ouv\":\"0L0W0P1B\",\" ouvi\":\"0P1L\",\" ova\":\"0T090V281004115H\",\" ova \":\"0T090V22\",\" ovaj\":\"0V31\",\" ovat\":\"11CM\",\" ovd\":\"0V2B\",\" ovde\":\"0V5T\",\" ove\":\"0M1B0O030P020R580T0A0V0I0Y0A0Z4I110O1244\",\" over\":\"0M1S0R6X0Z5D1243\",\" ovo\":\"0P0A0U070V470Y0K1O05\",\" ovo \":\"0P040V80\",\" ow\":\"0M0E1A091N0S\",\" owa\":\"1A021N0U\",\" owad\":\"1A041N16\",\" own\":\"0M0N\",\" own \":\"0M0Q\",\" ox\":\"0P02\",\" oy\":\"0O051F1Z1P0Z\",\" oyn\":\"1F17\",\" oyna\":\"1F1E\",\" oyu\":\"1F0V1P17\",\" oyuf\":\"1P1F\",\" oyun\":\"1F15\",\" oz\":\"0U040V090Y071A041N0I\",\" oí\":\"0O0J\",\" oñ\":\"1N0Y\",\" oña\":\"1N14\",\" oña \":\"1N16\",\" où\":\"0L1P\",\" où \":\"0L2V\",\" oý\":\"1N1U\",\" oýn\":\"1N18\",\" oýna\":\"1N1L\",\" oč\":\"0U0L0V0U0Y17\",\" oči\":\"0U0I0V0M0Y1D\",\" oči \":\"0U0I0V0O0Y0Y\",\" oğ\":\"1F0K\",\" oň\":\"1N1E\",\" oňa\":\"1N1Y\",\" oňa \":\"1N2C\",\" p \":\"1A03\",\" pa \":\"010W0D1H0V0I1D20\",\" pa'\":\"1Q65\",\" pa' \":\"1Q6A\",\" paa\":\"010J0D0R0N0G0R0Z11051B0L\",\" paan\":\"0D0X\",\" paar\":\"010K0D090N0R0R1B\",\" pab\":\"0B060D0D0O02130P1B1F1Q08\",\" pada\":\"0B9V0U040V161A131B8K\",\" pado\":\"14031B0D1D1R\",\" padr\":\"0O2E0P060Q0Z1B02\",\" padė\":\"1B57\",\" pae\":\"0Q0K0T0I1102\",\" pag-\":\"0D0Z\",\" paga\":\"0D030O0Q0P0J0Q0Q1B4U1D2A1O06\",\" pagh\":\"0D080Q041Q9T\",\" pagi\":\"0B1V0D080Q050R030T0615051B061O0F\",\" pagk\":\"0D29\",\" pagp\":\"0D0H\",\" pags\":\"0D0S\",\" pagt\":\"0D0H\",\" pagā\":\"1D21\",\" pah\":\"0B0B0D06111G15081F0A1Q0I\",\" pai\":\"0L0V0M0O0O020P230Q05112L1B0L1C0G\",\" pai \":\"0P1Q\",\" paik\":\"113E1B03\",\" pain\":\"0L0N0M0K111K1B04\",\" pais\":\"0L020O020P0U110L1C10\",\" paka\":\"0B0Y0D0511061B1W1O04\",\" pake\":\"0N021003110I1B1F1F05\",\" paki\":\"03020D0X0Q0D1B09\",\" pakl\":\"1B1X1D1D\",\" pald\":\"1D2F\",\" palj\":\"119I1C81\",\" palu\":\"0T0211031C6X\",\" palī\":\"1D6X\",\" pama\":\"0B0B0D0C0U0P1B29\",\" pami\":\"0D0L1A141B1R\",\" pan \":\"0O0G0U041A2U\",\" pang\":\"0B0L0D2A\",\" papp\":\"100P110E1206130F\",\" papr\":\"14021B26\",\" papu\":\"0D0I110314021A021B05\",\" paq\":\"0L020O031Q6R\",\" paq \":\"1Q4H\",\" par \":\"0L6I0O0B0P030T020V0E0Z0D1006120B15051DK31Q0Q\",\" parc\":\"0L1H0O030P020Q0E0T05150R\",\" pard\":\"0L0H0R021B201O0U\",\" paro\":\"0L0H0O020P070Q0W1B1F1O4Z\",\" parv\":\"0L0K0T1F11021B03\",\" parā\":\"0T021D1R\",\" pas \":\"0LSG0R0C0U030V0O0Z091B231Q0I\",\" pasa\":\"0B0D0D0A0O3H15051A061BB71D4Z1F041O06\",\" pasi\":\"0B0E0D020O0414041BDW1O1M\",\" pask\":\"0D04110H1A021B4D1D251O02\",\" pat \":\"150I1B311D37\",\" pata\":\"0D0K0L020O090P020Q050R02110314031B1Q1F051Q0E\",\" pate\":\"0O020Q030T2T1B181D6C1F03\",\" pats\":\"11021B1Q1D2F\",\" patī\":\"1D6G\",\" paur\":\"0Q0S\",\" pava\":\"1B2V1D1I\",\" pavo\":\"0O020T020U041B1K\",\" pavy\":\"1B1G\",\" pay\":\"0B060D060L1M0M0F1F081Q0O\",\" pays\":\"0L1T\",\" paz\":\"0O080P080Q0O0V0A140315031D1C1F0S\",\" paí\":\"0O100P0W\",\" país\":\"0O1B0P14\",\" paš\":\"1B0P1D1P\",\" paž\":\"0V0B1B2B\",\" paži\":\"1B1S\",\" pc\":\"1A02\",\" pe \":\"15F5\",\" pea\":\"0L040M080S0T1C8I\",\" pea \":\"1C29\",\" peab\":\"1C2J\",\" pead\":\"1C1L\",\" peak\":\"1C42\",\" peal\":\"1C4C\",\" pean\":\"0S2K1C3V\",\" pec\":\"0B040O0B0P030Q070T3114021O04\",\" pecu\":\"0T28\",\" pedi\":\"0O0J0P1H0T0L140H\",\" peg\":\"0B050O080P0X0Q0A0Z021Q0L\",\" pei\":\"0L0Q0N020O020P0E0T03110H1B091C0R\",\" peid\":\"1C1H\",\" peke\":\"0B2F\",\" pekn\":\"0Y10\",\" pela\":\"0B220O030P1O0T05112V\",\" pelk\":\"112V\",\" pelo\":\"0L030O0P0P1W1111\",\" pem\":\"0B1Y1Q0M\",\" pema\":\"0B19\",\" pend\":\"0B1V0L1K0O030P050T051O08\",\" pene\":\"0B0L0T031O061P19\",\" peng\":\"0B2Z0Z1Y1018121H\",\" penk\":\"11081B25\",\" pent\":\"0B0V0P020Q0215CC1O0F\",\" pení\":\"0U1E\",\" peně\":\"0U12\",\" peo\":\"0M1L0O0A\",\" peop\":\"0M27\",\" peq\":\"0O0U0P0O1Q0A\",\" pequ\":\"0O130P0V\",\" per \":\"0B0D0M020N040QF10R0R0T2E10031B6K1O421Q0H\",\" pera\":\"0B2L0D0X0O020P030T03\",\" perc\":\"0B1G0L060M040O040P0H0Q5M0T0G140W1O02\",\" perd\":\"0B090L280O290P200Q0W0T0L1B0H1F031O1B\",\" perg\":\"0BAK0P210T0E1B0A\",\" perl\":\"0B2Z0T031B031O03\",\" pern\":\"0B680P090T031B1C\",\" pero\":\"0D140O4V0U090Y0P\",\" perr\":\"0L030O1N0T030Z02\",\" pert\":\"0B2Z0L090O090P0T0T0B1B091O02\",\" pes \":\"0U1A0Y1C1F02\",\" pesa\":\"0B1T0O0N0P0A0Q06\",\" pess\":\"0L020P380Q040T051108\",\" peti\":\"0L380T0F1O0Y\",\" petr\":\"0O030P020T080U03151Y1B041F031O05\",\" peu\":\"0L8L1103\",\" peu \":\"0L3D\",\" peur\":\"0L1C1103\",\" peut\":\"0L4T\",\" peux\":\"0L4T\",\" pew\":\"1A1C\",\" pewn\":\"1A1J\",\" peňa\":\"0Y12\",\" pf\":\"0N0B\",\" pha\":\"0L030M020N030T0Y\",\" phar\":\"0L050M020T0Y\",\" pho\":\"0L0L0M0L0S0Z0T0N\",\" phon\":\"0M0L\",\" phr\":\"0L0U0T03\",\" phra\":\"0L1F\",\" piac\":\"0Q5U1404\",\" pid\":\"0B040O0L113Z1C1M\",\" pida\":\"0B080O021C2D\",\" pidä\":\"117U\",\" pie \":\"0O0E1D3C\",\" pied\":\"0L0U0O0A0Q0F1D3C1O0V\",\" piek\":\"1A051D1R\",\" pien\":\"0O190Q0D11351A2B1B121D1M\",\" piep\":\"1A021D1W\",\" pier\":\"0L0H0M020O0I1103152E1A1L1D1R\",\" pies\":\"0O070Y0G1A0U1D1W\",\" piet\":\"0M020Q050T0315051B191D2Y\",\" pig\":\"0L020M020Q060T070Z111B06\",\" pige\":\"0L030T050Z18\",\" pii\":\"110V1C1B\",\" pij\":\"0R0K0U0I0V0H0Y1D15031A0N1Q1V\",\" pije\":\"0U0G0V0U0Y1D1A0E\",\" piki\":\"0B2P11021N851O02\",\" pili\":\"0B0K0D0G1B0G\",\" piln\":\"0U051A071B0Z1D2K\",\" pils\":\"1D2K\",\" pina\":\"0D3Q\",\" pini\":\"0D091B4L\",\" pint\":\"0B1O0D0D0O0L0P0F11091O04\",\" pio\":\"0L020P090Q0K1A0H\",\" pirk\":\"1B1P\",\" pirm\":\"0D021B3L1D5C\",\" pisc\":\"0L050O050P050Q040T151506\",\" pita\":\"0D030V44\",\" pitk\":\"114H\",\" pitä\":\"11CH\",\" più\":\"0Q5B\",\" più \":\"0Q5D\",\" pię\":\"1A1K\",\" pięk\":\"1A1I\",\" piš\":\"0V0X\",\" piše\":\"0V1S\",\" plaa\":\"010G0R101C17\",\" plac\":\"0L140M0S0O070P020T4A0U05156O1A021O02\",\" plai\":\"0L1X0M02\",\" plau\":\"0T041B2T\",\" plav\":\"0U0Y0V0I\",\" play\":\"0M1L0O0B\",\" plaî\":\"0L1V\",\" plea\":\"0M1I150A\",\" plec\":\"153T1A07\",\" plej\":\"0Z0B1O48\",\" plek\":\"010G0R0B1102\",\" plen\":\"0M030O030P030T0J1O26\",\" pleu\":\"0L1I\",\" pli\":\"0L030R020V0B0Z02100315161A041B0C1O4J1P0Z\",\" pli \":\"1O7G\",\" plo\":\"0L060R080T0J0U050Y0B100515241A041B081O0B\",\" plou\":\"151P\",\" plu \":\"0L071O21\",\" plus\":\"0LCH0R020T0N0U020Z03110H15051A021O02\",\" plá\":\"0O050P020U130Y1F\",\" plán\":\"0U0Y\",\" pláv\":\"0Y12\",\" plā\":\"1D0U\",\" plān\":\"1D21\",\" plă\":\"152Z\",\" plăc\":\"1529\",\" pn\":\"0U02\",\" po \":\"0D7L0U1M0V100Y4C1A4D1B1Q1O021Q1D\",\" po'\":\"0Q1U1Q0X\",\" po' \":\"0Q1V1Q14\",\" poa\":\"154C\",\" poat\":\"154Z\",\" pob\":\"0O0I0P0A0U090V0W0Y0J1A0I\",\" pobe\":\"0V1O\",\" poc\":\"0L050M030O1W0Q0L0T0G0U100Y0T14041A2A\",\" poch\":\"0L090Q080U120Y0Q1A0O\",\" poco\":\"0O270Q0C\",\" pocz\":\"1A1H\",\" pod \":\"0U0S0V0J0Y0W1A161P0L\",\" pode\":\"0O1D0P770U0E0V0815051A0J\",\" podo\":\"0U0C0Y171A1I\",\" podr\":\"0O1W0U080V0O0Y0A1A0X\",\" podí\":\"0O0Q0U11\",\" pog\":\"0R020V1K1A0T\",\" pogl\":\"0V201A07\",\" poh\":\"0B0H0U0X0Y1M110H140D1Q2U\",\" poi\":\"0L1N0M0A0P0C0Q0F113R1A031B021C0V\",\" poik\":\"1147\",\" poin\":\"0L1H0M0C11031A05\",\" pois\":\"0L0O0M030P0G114R1C26\",\" poj\":\"0U0P0V0W100K110H1A16\",\" pojk\":\"100K\",\" poko\":\"0U1F0Y0V14051A1I\",\" poku\":\"0U1D0V29\",\" poln\":\"0N021C1H\",\" poma\":\"0T050U0F0V1G0Y181A0W1O02\",\" pomo\":\"0Q020U3C0V4B0Y1Y110G1A1V1O0E\",\" pomô\":\"0Y2R\",\" pond\":\"0D020L020M020O040R020T030U0H0Y10\",\" pone\":\"0O0X0T0D0V1A1B04\",\" pong\":\"0D1L0O0A1Q4R\",\" pono\":\"0U050V281A0B\",\" pont\":\"0L080O030P0T0Q0L0T0914161O07\",\" poo\":\"0M090R050Y0B1C24\",\" pool\":\"0M040R031C4C\",\" popr\":\"0U0K0V0R0Y0K1A1T\",\" por \":\"0OFK0PBM1OBM\",\" pori\":\"0Y19\",\" porq\":\"0O1W0P19\",\" posa\":\"0L030U080V221A03\",\" posl\":\"0U280V500Y17\",\" poss\":\"0L1C0M0H0P3W0Q470T4A1104\",\" posz\":\"14021A1R\",\" pot \":\"0L040R021567\",\" poti\":\"0T1D0U020V06110C\",\" potp\":\"0V1W\",\" potr\":\"0Q1J0U0G0V2W0Y48150H1A3O\",\" potř\":\"0U48\",\" pou\":\"0LG10M040P1R0U100Y0L\",\" pouc\":\"0L020P22\",\" pour\":\"0LKN0M04\",\" pouv\":\"0L4A\",\" použ\":\"0U0R0Y0P\",\" pov\":\"0P0A0Q0A0U160V140YAK150R1O5U1Q0X\",\" pova\":\"0U0B0Y0C1O88\",\" pove\":\"0M020Q0A0U030V0U0YAR150X\",\" povi\":\"0U060Y1O1O1H\",\" povr\":\"0U020V1P\",\" povu\":\"0V081O1A\",\" pow\":\"0M081A89\",\" powi\":\"1AA0\",\" powo\":\"1A1I\",\" poz\":\"0O020U2A0V1R0Y5C1404150L1A1W1F031O02\",\" pozd\":\"0U1A1A05\",\" pozn\":\"0U0G0V1K0Y2Q1A0M\",\" pozo\":\"0O020U0R0V0P0Y101A0E\",\" pozr\":\"0Y1L\",\" poč\":\"0U1P0V160Y4V\",\" poče\":\"0U040V1T\",\" počk\":\"0U0Y0Y12\",\" poču\":\"0Y2G\",\" počí\":\"0U0S0Y18\",\" poď\":\"0Y0W\",\" poľ\":\"0Y11\",\" poř\":\"0U16\",\" pořá\":\"0U1L\",\" pož\":\"0U100V0B0Y1I1B03\",\" poži\":\"0Y1O1B04\",\" požá\":\"0U14\",\" poț\":\"152P\",\" poți\":\"153G\",\" praa\":\"012V0R0M\",\" prac\":\"0M080O050R0E0U2T0Y3415081A4X\",\" prad\":\"1B3R\",\" prae\":\"0T2J1B0L1C22\",\" pral\":\"1A031B1H\",\" pran\":\"0B1S0D0S0Q0I0T0L0V0A1A031B4G1C4C\",\" pras\":\"0U051A021B1L\",\" prat\":\"0L0E0P0I0Q070R170V0K101R1B081F04\",\" prav\":\"0T030U3B0V3Q0Y4A1B0B1O0K\",\" praw\":\"1A4V\",\" praė\":\"1B1H\",\" praš\":\"0U021B4W\",\" pre \":\"0V2V0Y3G\",\" prea\":\"153D\",\" prec\":\"0M030O0O0P500Q060R0E0T070Y0K100I150K1O0L\",\" pred\":\"0M030O040P020Q020V3C0Y4V150I1O03\",\" pref\":\"0M080O0T0P0S0Q120U0315151O13\",\" preg\":\"0M030O290P070Q0A0V0B150O\",\" prek\":\"0V1X0Y2V1B0F\",\" pren\":\"0L400O060P040Q2D0V0A1F041O1B\",\" preo\":\"0O0R0P0T0Q0Y1505\",\" prep\":\"0M090O0R0P0G0Q0P0V100Y1D15051O0H\",\" pret\":\"0M0U0O060P0M0Q030R040T0L0V160Y1H15081D2O1O15\",\" prev\":\"0M060O070P070Q060V2L1506\",\" preč\":\"0Y8V\",\" pri \":\"0V0D0Y171O8U\",\" pria\":\"0B170L020T060Y2X1B04\",\" prie\":\"0L0S0R020Y0E15311B871D6G1O02\",\" prij\":\"0R0F0V3L0Y0C\",\" prip\":\"0V0Q0Y1Q1B0S1O0J\",\" pris\":\"0L270M070O0E0P070V0O0Y0F0Z0E100712091B2X1O08\",\" prič\":\"0V43\",\" priš\":\"0Y29\",\" pro \":\"0N040T140U471B091O31\",\" pron\":\"0L090M030O140P0N0Q0V0T070U070V1Y11021O04\",\" proo\":\"0M021C1Z\",\" prox\":\"0L030T0U\",\" proč\":\"0U5N0V12\",\" proš\":\"0U040V1Y\",\" prv\":\"0U0L0V0W0Y0X\",\" prvn\":\"0U0R\",\" prz\":\"1AGN\",\" prze\":\"1AEP\",\" przy\":\"1AD8\",\" prá\":\"0O040P030U460Y47\",\" prác\":\"0O060U3I0Y1P\",\" práv\":\"0U1S0Y35\",\" præ\":\"0T1D0Z0I\",\" pré\":\"0L3H0P06\",\" préf\":\"0L1F\",\" prés\":\"0L1P0O02\",\" prê\":\"0L0V0P02\",\" prêt\":\"0L1H\",\" prí\":\"0O020P030S0X0Y6C\",\" príd\":\"0Y28\",\" príl\":\"0Y26\",\" prío\":\"0S3S\",\" prís\":\"0Y15\",\" pró\":\"0O0G0P18130K141I1A0U\",\" prób\":\"141K1A18\",\" próp\":\"0P0Q\",\" próx\":\"0O0J0P0T\",\" prø\":\"0Z0H121J\",\" prøv\":\"0Z0K121J\",\" prš\":\"0U0P0Y0T\",\" psa\":\"0U0Y0V0A0Y0X1A0D\",\" psa \":\"0U0Z0V0Q0Y141A0K\",\" pt\":\"0U0F0V061A08\",\" pue\":\"0O970T4D\",\" pued\":\"0O9O\",\" puel\":\"0T1T\",\" puer\":\"0O140T2X\",\" puh\":\"117714021C0V1Q34\",\" puh \":\"1Q59\",\" puhe\":\"113A\",\" puhu\":\"11CY\",\" pui\":\"0L1I0R02110H150D1B0L\",\" puis\":\"0L2I110T\",\" puk\":\"0B0S110E\",\" puku\":\"0B1K1108\",\" pul \":\"1F021N1G1P0L\",\" pula\":\"0B2G0D0D0P021108\",\" pulc\":\"0T2V\",\" pulk\":\"1D21\",\" pum\":\"0D161Q0J\",\" puma\":\"0D0S\",\" pumu\":\"0D18\",\" pun \":\"0B1U0V071509\",\" puna\":\"111P1C1H\",\" puno\":\"0D0S0V1R1O04\",\" punt\":\"0D050O0U0Q0G0R0A1103\",\" puny\":\"0B60\",\" puo\":\"0Q0V111O1B0I\",\" puoi\":\"0Q0V\",\" puol\":\"11421B04\",\" pup\":\"0D0A0M020N020T061B021O021Q0M\",\" pupu\":\"0D0H\",\" puq\":\"1Q6J\",\" pus \":\"150W1Q68\",\" pusa\":\"0B070D0H\",\" put \":\"0L030M140R020V1Q\",\" puta\":\"0L020O020T1I0V1C\",\" pute\":\"0T070V071565\",\" puti\":\"0B0R0D0H1O02\",\" puto\":\"0T130V0J110K1O02\",\" putu\":\"0B080V0R151O\",\" puu\":\"111G1C1I\",\" puw\":\"0D11\",\" puwe\":\"0D1X\",\" può\":\"0Q22\",\" può \":\"0Q23\",\" puț\":\"151O\",\" puți\":\"1525\",\" pw\":\"0D02\",\" pys\":\"113F1A03\",\" pyst\":\"114C\",\" pysy\":\"112O\",\" pyy\":\"111E\",\" pá\":\"0O0E0P0G0S1G0U0O0Y1E140O\",\" pái\":\"0S1P\",\" páis\":\"0S41\",\" pár\":\"0O020U0L0Y0B1419\",\" páč\":\"0Y1D\",\" páči\":\"0Y1P\",\" pâ\":\"0L051515\",\" pân\":\"0P02151L\",\" până\":\"1521\",\" pã\":\"0P08\",\" pä\":\"0Y0I1003115D1C3J1P0H\",\" päe\":\"1C1K\",\" päev\":\"1C3V\",\" päi\":\"113S1C0H\",\" päiv\":\"118A\",\" pär\":\"1003110B1C1X\",\" pära\":\"1C2X\",\" päri\":\"1C1V\",\" pää\":\"115L\",\" pääl\":\"112K\",\" pääs\":\"114X\",\" päät\":\"113P\",\" på\":\"0Z5I10CS127H\",\" på \":\"0ZDJ10G612GP\",\" pæ\":\"0Z02\",\" pè\":\"0L0R\",\" pèr\":\"0L17\",\" père\":\"0L22\",\" pé\":\"0L0E0O040P0F141T\",\" pén\":\"0L05143E\",\" pénz\":\"143F\",\" pê\":\"0L04\",\" pí\":\"0U0K0Y151305\",\" píš\":\"0U0D0Y1A\",\" píše\":\"0U0D0Y1B\",\" pó\":\"0O020P020S0M130714051A16\",\" pô\":\"0P0B0Y0P\",\" pôj\":\"0Y10\",\" pôjd\":\"0Y19\",\" põ\":\"0P021C15\",\" põh\":\"1C0Z\",\" pö\":\"110I14021P12\",\" pú\":\"0O060P06\",\" pü\":\"1C0Z1P4I\",\" pük\":\"1P5J\",\" püko\":\"1P2I\",\" pükö\":\"1P2G\",\" püü\":\"1C0N\",\" pā\":\"0T021D4W\",\" pār\":\"1D69\",\" pārd\":\"1D25\",\" pārl\":\"1D2A\",\" pārs\":\"1D2T\",\" pārā\":\"1D2O\",\" pă\":\"152Z\",\" păr\":\"152K\",\" pē\":\"1D2L\",\" pēc\":\"1D1R\",\" pēc \":\"1D43\",\" pė\":\"1B08\",\" pě\":\"0U0M\",\" pł\":\"1A18\",\" pœ\":\"0T02\",\" př\":\"0UBP\",\" pře\":\"0U8H\",\" před\":\"0U4A\",\" přek\":\"0U1G\",\" přes\":\"0U3P\",\" při\":\"0U6F\",\" při \":\"0U0S\",\" přij\":\"0U2T\",\" přip\":\"0U1G\",\" přiš\":\"0U1D\",\" přá\":\"0U13\",\" přát\":\"0U19\",\" pří\":\"0U4I\",\" příl\":\"0U1K\",\" přít\":\"0U1H\",\" příš\":\"0U0W\",\" pů\":\"0U0S\",\" půj\":\"0U0V\",\" půjd\":\"0U0R\",\" qa\":\"03061L0E1QLZ\",\" qac\":\"1Q43\",\" qach\":\"1Q6Y\",\" qaq\":\"1Q5S\",\" qaq \":\"1Q66\",\" qar\":\"1Q51\",\" qar'\":\"1Q75\",\" qas\":\"03051Q8D\",\" qast\":\"1Q7K\",\" qat\":\"1Q7S\",\" qatl\":\"1QC8\",\" qe\":\"030E1Q5O\",\" qi\":\"1Q3K\",\" qo\":\"1Q7X\",\" qon\":\"1Q42\",\" qu'\":\"0LA11Q32\",\" qu'e\":\"0L4X\",\" qu'i\":\"0L88\",\" qu'o\":\"0L1N\",\" qu'u\":\"0L1K\",\" qua\":\"0L3L0M060N060P9S0QCM0TF5\",\" qua \":\"0Q0X0T0Y\",\" quae\":\"0T4S\",\" qual\":\"0L090M030N040P2T0Q780T0D\",\" quam\":\"0T6U\",\" quan\":\"0L4K0P760Q4M0T36\",\" quar\":\"0L0F0M030P110Q060T0G\",\" quas\":\"0L030P0Y0Q0M0T0J\",\" que\":\"0LO80M0L0N030ORR0PSG0QFQ0T1Q\",\" que \":\"0LRG0OSG0PSG\",\" qued\":\"0O2X0P02\",\" quel\":\"0LAN0N030Q5F\",\" quem\":\"0O080P3J0T1J\",\" quer\":\"0L020N020O2O0P970T07\",\" ques\":\"0L1N0M0P0O060P0A0QBO0T02\",\" qui\":\"0L840M0Z0O930P1C0Q3J0TGP\",\" qui \":\"0LC50Q360T4M\",\" quia\":\"0T1D\",\" quid\":\"0T7Z\",\" quie\":\"0M090O890P040T07\",\" quin\":\"0L060O090P0C0Q0F0T24\",\" quis\":\"0O0Q0P0W0T3E\",\" quit\":\"0L0T0M0Q0O0E\",\" quié\":\"0O2E\",\" quo\":\"0L1K0Q020TBT\",\" quo \":\"0T1O\",\" quod\":\"0T4R\",\" quoi\":\"0L2H\",\" quom\":\"0T16\",\" quoq\":\"0T15\",\" quot\":\"0L060Q020T3N\",\" quæ\":\"0T21\",\" quæ \":\"0T1R\",\" qué\":\"0O7V\",\" qué \":\"0OA2\",\" raa\":\"010M0R11110C1C33\",\" raak\":\"010G0R0F1107\",\" raam\":\"0R0D11061C7D\",\" raba\":\"0302043C1O02\",\" rach\":\"0N020S410T071A071Q0E\",\" rada\":\"0U020Y201B0Q\",\" radě\":\"0U0U\",\" rae\":\"0T1Y\",\" raed\":\"0T22\",\" rag\":\"0B030L020Q2C0Z02140E1B041Q07\",\" raga\":\"0Q1D14091B04\",\" ragi\":\"0Q0Q\",\" rah\":\"0B07111X1C3E1F0N\",\" raha\":\"0B0D11491C3Y1F0T\",\" rahu\":\"1C1L\",\" rahv\":\"1C31\",\" rai\":\"0L100M0M0P0B0S3C110A1B04\",\" raib\":\"0SCR\",\" rain\":\"0M0L0P04\",\" rais\":\"0L1M0M07\",\" rajt\":\"14121O1D\",\" raka\":\"100411531A04\",\" raks\":\"1D2Y\",\" rani\":\"0V1N\",\" rank\":\"110G1A051B2L\",\" rans\":\"119I\",\" rapi\":\"0L0U0M020P090Q0B0T03150D1O1K\",\" rapp\":\"0L1A0Q0A0R020Z0310051103\",\" rasa\":\"0B1J1002\",\" rask\":\"0V080Z02110E120E1B031C2J\",\" raw\":\"0D0B\",\" raw \":\"0D0K\",\" raz\":\"0O0N0P0D0Q060V410Y0I1A1V1N0D1O02\",\" razg\":\"0V1L\",\" razl\":\"0V29\",\" razm\":\"0V1L\",\" razu\":\"0V2G1A08\",\" raš\":\"1B1A\",\" read\":\"0M1O\",\" rech\":\"0L0G0N1R0O060R0X\",\" reci\":\"0M020O0Y0P040Q020T070V1F15081O04\",\" reco\":\"0L1B0M0J0O1A0P0Q0T0G150D\",\" rect\":\"0O030T0S\",\" recu\":\"0L050O0X0P0F0Q020T051510\",\" reda\":\"0O020T0210111O03\",\" redd\":\"0R080T0M0Z0C120W1F0I\",\" rede\":\"010I0L020N180O020P040R0I0T080Z05\",\" redi\":\"0L020T16\",\" redz\":\"1D7R\",\" reg \":\"012N\",\" rega\":\"0D050L3K0M030N020O0R0P020Q0G1O0D\",\" rege\":\"0N0W0R1R0T0C0Z0D100412071507\",\" regg\":\"0Q02141L\",\" regn\":\"0N0G0Q0E0T0K0Z1I100K120W130Q1O02\",\" regt\":\"011W\",\" reh \":\"1Q51\",\" reik\":\"1105130O1B9S\",\" reis\":\"0N0T0R0L1103120W1C1O\",\" reiz\":\"0N030R091D3Q\",\" reið\":\"131Y\",\" rej\":\"0L070M020Z0L140D\",\" rejs\":\"0Z0Q\",\" reka\":\"045F0V301F03\",\" reke\":\"010P0R0F\",\" reme\":\"0L0O0M0N0O0614071O05\",\" remé\":\"0P06141D\",\" renc\":\"0B0N0L1K\",\" rend\":\"0L330O040P030Q0B0R0814301O06\",\" resu\":\"0D030M080O0U0P0B0R070Z041004120C1O03\",\" ret \":\"0Z161Q12\",\" rett\":\"0N080Z0B121U1404\",\" reve\":\"0L0R0M040O060P080T0T150H1O15\",\" rey\":\"0O091325\",\" reyk\":\"132I\",\" reyn\":\"1325\",\" reë\":\"010W\",\" reël\":\"010L\",\" reč\":\"0V1E0Y08\",\" rh\":\"0L030T04\",\" ria\":\"0P020Q030S1A0Y0C\",\" rico\":\"0O0F0P0C0Q1A\",\" rid\":\"0L050M0A0O030P020Q0M0T0I0Z03150Q1O0J\",\" rie\":\"0L2J0N0D0O070Q1U0R040Y0U11031B07\",\" riek\":\"0Y0Y\",\" rien\":\"0L490O020Q02\",\" ries\":\"0N070O050Q1P\",\" rif\":\"0Q0M1O08\",\" rig\":\"0L030M170Q0L0T020Z11130L1O11\",\" riga\":\"1O1Y\",\" righ\":\"0M1M\",\" rigt\":\"0Z0Q\",\" rii\":\"11121C1M\",\" rij\":\"0R1B\",\" rik\":\"10111118120T1C0O1O03\",\" rikt\":\"100O1208\",\" rimw\":\"045R\",\" rin \":\"0D101Q0D\",\" ring\":\"0D040M060N050Q0A0R040Z16100Z12121O04\",\" rinn\":\"0S581109\",\" rip\":\"0Q0Z0T0411031O0H\",\" rir\":\"042V0L0A0P07\",\" rira\":\"042Z0P02\",\" risp\":\"0Q1I\",\" rist\":\"0Q0V110H\",\" rith\":\"0S32130B\",\" rito\":\"0D0X0Q0G\",\" riu\":\"0P020Q18\",\" rius\":\"0Q0Z\",\" robí\":\"0Y1R\",\" rodi\":\"0O030U280V110Y21\",\" rodz\":\"1A29\",\" rog \":\"153N\",\" roga\":\"0T0V\",\" roh\":\"0N020U03110A14071C1J\",\" rohk\":\"110N1C2J\",\" roi\":\"0L090S0Q1102\",\" rok\":\"0B060R0G0U0U0Y2J110314071A121D181O03\",\" roko\":\"0Y1O110614061O03\",\" roku\":\"0U050Y0A1A1E\",\" romm\":\"120N\",\" ron\":\"0L060O030P030R0F14071C0K1O04\",\" roo\":\"010Z0D0C0M100R0N11081C0O\",\" rook\":\"010K0R0A\",\" room\":\"0M18110G\",\" roon\":\"0D0L\",\" ross\":\"0Q0D1420\",\" rou\":\"0L170M050P0P0R020U021105\",\" rov\":\"0Q070U090Y191403\",\" rovn\":\"0U0C0Y1J\",\" roz\":\"0R050U420Y5914031A3U1O07\",\" rozh\":\"0U1G0Y1L\",\" rozm\":\"0U090Y0A1A1O\",\" rozp\":\"0U0E0Y1D1A0N\",\" rozu\":\"0U0R0Y111A16\",\" rua\":\"0B0T0P0E\",\" ruan\":\"0B1L\",\" rub\":\"0M020O030Q0E0T0X1O03\",\" rud\":\"0M030S4F0Z021B09\",\" rud \":\"0SEZ\",\" rugs\":\"1B061N1S\",\" ruh\":\"04220N0E140Y1F06\",\" rui\":\"010F0L030M030O0C0P070R0G0T0511021O02\",\" ruk\":\"0U0J0V0L0Y141105\",\" rum \":\"0Z02100H\",\" ruma\":\"0B6N0O02110A\",\" rumm\":\"0Z04100G\",\" run\":\"0M0G0N050R020Z0C100D110D120P1B021D3K1Q0E\",\" rund\":\"0N050R020Z0F1002120P\",\" runā\":\"1D8S\",\" ruo\":\"0Q02111U1B0A\",\" ruok\":\"1131\",\" rur\":\"041R0T0E1Q2Q\",\" rusk\":\"0U0S0V090Y0L110A\",\" russ\":\"0L0N0M090N0F0P0B0Q0Q0R090T050Z09120A\",\" rw\":\"03020422\",\" rwa\":\"043V\",\" rwan\":\"042S\",\" ry'\":\"041Z\",\" rya\":\"048B\",\" ryar\":\"046Y\",\" ryaw\":\"043O\",\" ryc\":\"0U0Y1002\",\" rych\":\"0U1B\",\" ryg\":\"0Z0U10051205\",\" ryge\":\"0Z0J\",\" ryi\":\"0429\",\" ryiw\":\"042S\",\" ryt\":\"1B2B\",\" ryto\":\"1B3E\",\" rz\":\"03051A1J\",\" rze\":\"1A1C\",\" rzec\":\"1A1P\",\" rá\":\"0O0J0P0K0S0W0U3O0Y3213171427\",\" rá \":\"0S0T1420\",\" rád\":\"0P040U540Y3Z140S\",\" rád \":\"0U530Y4V140M\",\" ráda\":\"0U13\",\" rádi\":\"0P060U0W1407\",\" rám \":\"1410\",\" rán\":\"0U0U0Y13140D\",\" ráno\":\"0U0Z0Y1C\",\" ráp\":\"0O0S0P0J\",\" rápi\":\"0O110P0P\",\" ráð\":\"131Y\",\" ráðl\":\"1337\",\" râ\":\"150X\",\" rä\":\"0N02102111061C6S\",\" räd\":\"100W\",\" rädd\":\"100V\",\" rät\":\"0N02101E\",\" rätt\":\"101C1103\",\" rää\":\"1C87\",\" rääg\":\"1CD3\",\" rääk\":\"1C6R\",\" rå\":\"0Z08100L1207\",\" råd\":\"0Z0G100D120F\",\" råd \":\"0Z0A1009120C\",\" ræ\":\"0Z04130G\",\" rè\":\"0L08\",\" ré\":\"0L3Z0P020S1Q13191419\",\" rég\":\"0L0I141D\",\" réi\":\"0S1R\",\" réid\":\"0S2T\",\" rép\":\"0L1Q\",\" répo\":\"0L1T\",\" rés\":\"0L10141L\",\" rész\":\"141N\",\" rét\":\"0L03131X1402\",\" rétt\":\"1342\",\" réu\":\"0L0U\",\" rê\":\"0L0B\",\" rí\":\"0O0D0S2H0Y05130L\",\" río\":\"0O0G0S2N\",\" ríom\":\"0SA4\",\" ró\":\"0S0R130D140Q1A0T\",\" ról\":\"141B\",\" róla\":\"141B\",\" rö\":\"101D130C140C\",\" rök\":\"100J1306\",\" rör\":\"100I\",\" rös\":\"100F\",\" röst\":\"100F\",\" rø\":\"0Z0I120J\",\" rød\":\"0Z0T120K\",\" røy\":\"120J\",\" røyk\":\"120J\",\" rú\":\"0P030S0I130R1402\",\" rü\":\"0N051F0B\",\" rý\":\"0U030Y0S\",\" rýc\":\"0Y1A\",\" rých\":\"0Y1M\",\" ră\":\"153R\",\" răs\":\"151R\",\" răsp\":\"151Z\",\" rău \":\"151N\",\" rē\":\"0T04\",\" rī\":\"1D15\",\" rīt\":\"1D11\",\" rū\":\"1B0Q1D0K\",\" s'\":\"0L4G\",\" s'a\":\"0L1G\",\" s'e\":\"0L3B\",\" s'es\":\"0L44\",\" s'i\":\"0L20\",\" s'il\":\"0L30\",\" s-\":\"030315591O02\",\" s-a\":\"1584\",\" s-a \":\"158A\",\" s-au\":\"151M\",\" sa \":\"03020DI50L3Q0Q1B0S4U0V5F0YR7101L121I15151CHI\",\" saa\":\"011B0B1M0D0M0R0411631C7L1F1S\",\" saa \":\"113I1C4V\",\" saab\":\"1C2N\",\" saad\":\"111R1C3B\",\" saak\":\"010G110S1C1Z\",\" saam\":\"010V110I1C13\",\" saan\":\"0D15112I1C3S\",\" saat\":\"0B3611371C1E1F2F\",\" saba\":\"0B070D080Q081F161O05\",\" sabe\":\"0O440P4L\",\" sabi\":\"0D210O0C0P1E\",\" sabí\":\"0O11\",\" sac\":\"0L0N0M020N0G0O0O0P090Q0A0T1F\",\" sacc\":\"0Q070T0X\",\" sad \":\"0M060V0W0Z0G\",\" sada\":\"0V4B110B1C13\",\" sade\":\"100J110P1F44\",\" sae\":\"0T0Y\",\" saep\":\"0T0W\",\" sag \":\"0N0F0Z031N1I\",\" saga\":\"130K1N1U\",\" sagd\":\"0Z20\",\" sage\":\"0L0D0N2J0Z07\",\" sago\":\"0D071P3C\",\" sagt\":\"0N370Z0E100B120A131B\",\" sagð\":\"133V\",\" sagö\":\"1P1F\",\" sah\":\"0B030D030N0O11031F1F1Q0U\",\" sahi\":\"0D061F1O\",\" sai \":\"0P050Q0N111S1C1L\",\" said\":\"0M6T\",\" sair\":\"0P0T112M\",\" sais\":\"0L471116\",\" sait\":\"0L1G110S\",\" saj\":\"0B2014281C0H1Q09\",\" saja\":\"0B3W1C17\",\" sajn\":\"1414\",\" sajá\":\"1412\",\" saka\":\"0D071B0U1D2K1F06\",\" sake\":\"100O110212091B0A\",\" saki\":\"0B2G0D0F1B1O1F0B\",\" sakl\":\"1F0M1N12\",\" sakn\":\"100N130B\",\" sako\":\"1B1M1O08\",\" saks\":\"0D020Z0211221C29\",\" sakė\":\"1B1R\",\" sal \":\"019A0O090P040Z02\",\" salv\":\"0O0H0P0C0Q0F0T0V150E\",\" salī\":\"1D2T\",\" sam \":\"0VR41A17\",\" same\":\"0L070M0T0R0Y1104130G1A0M1O0G\",\" samm\":\"0N050Z1P100G110N121W130Q\",\" samo\":\"0U0L0V770Y0T11081A421O07\",\" samp\":\"0B340D071104\",\" sana\":\"0B250D0S0O030T0611341F471O06\",\" sane\":\"0T0411021P1L\",\" sann\":\"0Q08100F120U1329\",\" sano\":\"0O0311DU1O0B\",\" sans\":\"0D050L331O02\",\" sant\":\"0B0D0L0L0O080P050Q02100E120P1B0F1F02\",\" sany\":\"14031N19\",\" sanı\":\"1F2B\",\" sao\":\"0L020S2T0V08\",\" saoi\":\"0S65\",\" saor\":\"0S32\",\" sapa\":\"0D0H0P0E1N10\",\" sape\":\"0Q23\",\" sapi\":\"0B070L050T111P0T\",\" sapn\":\"1B0K1D3L\",\" sapr\":\"0Q031D43\",\" sapņ\":\"1D63\",\" sare\":\"0Q1G1507\",\" sari\":\"0D0R\",\" sarà\":\"0Q17\",\" sasa\":\"0D18\",\" sata\":\"0T030V0A112A1F051O02\",\" sati\":\"0L0F0M040O080P070T0X0V0W1D1W1O02\",\" satt\":\"0N040Z0D100N111W120G131C1F05\",\" satu\":\"0B460M030T09110S\",\" saty\":\"1N2C\",\" satı\":\"1F1L\",\" sau \":\"152H1B0T\",\" saul\":\"1B1J1D3U\",\" sav\":\"0L2B0M080V0K0Z0B1105120A14031BAB1D7G1F0N1O06\",\" sava\":\"0L1A14031B2N1D3Q1F0O1O02\",\" savi\":\"0L040M021B0R1D251O09\",\" savo\":\"0L1P1BGC1O02\",\" savu\":\"110A1D901F07\",\" savā\":\"1D43\",\" saw\":\"0M0T1Q0M\",\" saw \":\"0M131Q0C\",\" say\":\"0BGX0D040M2C1F0V1Q0S\",\" say \":\"0M1U\",\" saya\":\"0BQ80D05\",\" says\":\"0M15\",\" sañ\":\"1N1B\",\" saña\":\"1N1U\",\" sağ\":\"1F0X\",\" saň\":\"1N1V\",\" saňa\":\"1N2K\",\" sb\":\"03040Q0N0U04\",\" sba\":\"0Q0R\",\" sca\":\"0L020M0F0Q1L0S0Q0T0B150I\",\" sce\":\"0M030Q0W0T080Z0215031A031O02\",\" scha\":\"0N2N0R1B1007\",\" sche\":\"0M040N1P0Q080R12\",\" schi\":\"0N1L0Q0E0R16151T\",\" schl\":\"0N4Z\",\" schn\":\"0N27\",\" scho\":\"0M1G0N430R3G0T1C0U130Y0S1A0C\",\" schr\":\"0N2C0R1Z\",\" schu\":\"0N2M0R0V0Y0A1A02\",\" schw\":\"0N4V0Z0610021402\",\" schö\":\"0N23\",\" sci\":\"0L0B0M080Q0O0T4Y1O48\",\" scia\":\"0Q060T081O4H\",\" scii\":\"1O1W\",\" scio\":\"0Q070T181O0B\",\" scis\":\"0T12\",\" sco\":\"0L030M050Q2S0S130T081510\",\" scoi\":\"0Q020S4I\",\" scor\":\"0M030Q170T031509\",\" scr\":\"0M0A0Q1U0S2J0T3H1536\",\" scri\":\"0Q1T0T3F153Y\",\" scrí\":\"0S9P\",\" scu\":\"0Q2K0T03151P\",\" scuo\":\"0Q1Y\",\" sd\":\"030H0U02\",\" sea\":\"0M0I0O120S2H151A1C1V\",\" sea \":\"0M060O0Z\",\" seac\":\"0S41\",\" seal\":\"1C3L\",\" sean\":\"0O050S32\",\" seba\":\"0B2S0Y0U\",\" sebe\":\"0B4X0U100V100Y0K14081F0D\",\" sebu\":\"0B4U\",\" sebä\":\"1N1I\",\" sec\":\"0B0S0L0T0M0K0N090O0Q0P0B0Q0M0R050T1R150R\",\" seca\":\"0B1D0O050P040T05\",\" secu\":\"0M040O050P020T1I150A\",\" sed \":\"0O040T3H1O5A\",\" seda\":\"0B700O020U020V0K100N1CH7\",\" sede\":\"0P060Q090T0U0V0K0Y0P\",\" sedi\":\"0B1U0Q070T070V0T\",\" see\":\"010Z0B0M0M3B0N0B11021CFE\",\" see \":\"0M250N061CQZ\",\" seem\":\"0M1J\",\" seen\":\"0M0O\",\" seer\":\"010N\",\" seg \":\"03CA124S\",\" segi\":\"131Y\",\" segj\":\"133P\",\" segu\":\"0O2J0P270Q0I\",\" segí\":\"143D\",\" seh\":\"0B120N410U0311021408\",\" seha\":\"0B1Y\",\" sehe\":\"0N20\",\" sehr\":\"0N4N\",\" sei \":\"0N1H0P2Q0Q3Y\",\" sein\":\"0L050NC2110P132T\",\" seis\":\"0O0H0P0C11151C1O\",\" sej\":\"0B120P0X0U060Z051406\",\" seja\":\"0B1P0P16\",\" seka\":\"0B6Y110K1B101O04\",\" seke\":\"01180B0B\",\" seko\":\"0B2E110I\",\" seks\":\"030E0D020R040V0B0Z0M110L120H1A031F051O09\",\" sela\":\"0B7A11031F06\",\" selb\":\"03020N24\",\" self\":\"010Y0M06\",\" selg\":\"12091C1Z\",\" sell\":\"03070M0A0O040T0G11201CGM\",\" selv\":\"0P040Z2F112C1228\",\" sem \":\"0P1X0U0Y0Y0S13GG145C\",\" sema\":\"0B220L1D0O1D0P151O10\",\" semb\":\"0B0Q0L1T0O020Q2M1F02\",\" semm\":\"030Q1104144Q\",\" semp\":\"0B0H0P290Q2P0T1U1F03\",\" semu\":\"0B5W\",\" sen \":\"0U08100911C312061A051F3P1NG31O1K\",\" sena\":\"0B1T0D020T06100O1B0Y1O04\",\" sene\":\"0T0P0Z0C120G1B0X1F071O06\",\" seng\":\"0B0B0Z0X120H1Q17\",\" senh\":\"0P2Z1O06\",\" seni\":\"0B0T0T081B0W1F771NAC1O07\",\" senk\":\"0N021104142M1O0G\",\" sens\":\"0L1E0M0A0O060P080Q0E0T07150L1A0E1F071O0D\",\" senz\":\"0Q141O02\",\" seo\":\"0B2X0SBL\",\" seo \":\"0SS8\",\" seom\":\"0S2K\",\" seor\":\"0B5K\",\" sepa\":\"0B1X0M090O0H0P070Q030T031O06\",\" sepe\":\"0B6D0T0A1F02\",\" sept\":\"0L0E0O020R020T1B0Z0215081B0W1O02\",\" ser \":\"0O3B0P3V0Z1R101Q12241A03\",\" sera\":\"0B0Q0L360Q0Q\",\" sere\":\"0D020L080O060P0D0T0514021N2Q1O02\",\" será\":\"0O0Z0P1F\",\" ses \":\"010G0L4P0U130Z0510061F051O0A\",\" sese\":\"0B190O020T031B16\",\" sest\":\"0U1E0V110Y1D1C1H\",\" sesu\":\"0B2X1B0Q\",\" set \":\"0M0B0U030Z18\",\" sete\":\"0B270O020P0F0Q0311031509\",\" seti\":\"0B300V0F\",\" setn\":\"120O131F\",\" sett\":\"03080M040Q1C100Q121D130X\",\" seu\":\"01180B040L2G0P5S111B\",\" seu \":\"0P5G\",\" seul\":\"0L44\",\" seun\":\"011B\",\" seur\":\"1133\",\" seus\":\"0P20\",\" seve\":\"0M0H0O020Q020T060U040V0B0Y0A1F1P1O06\",\" sevi\":\"1D321F25\",\" sevm\":\"1F1A\",\" sevo\":\"1P27\",\" señ\":\"0O0M1N0L\",\" sf\":\"03030Q0C150W\",\" sg\":\"03030Q03\",\" she \":\"0M9D\",\" she'\":\"0M1P\",\" shou\":\"0M3U\",\" show\":\"0M0X0P03\",\" sia\":\"0B2Z0Q590S3611031A041B0A1O4P\",\" sia \":\"0Q2K1O3A\",\" siad\":\"0SBD1A02\",\" siaj\":\"1O2F\",\" siam\":\"0Q2E\",\" sian\":\"0B1C0Q0B11051O3U\",\" siap\":\"0B4F\",\" sibh\":\"0S5X\",\" sic\":\"0M0B0N7O0Q1L0T1N0U02\",\" sic \":\"0T0T\",\" sich\":\"0NCA0T03\",\" sicu\":\"0Q1K0T0O\",\" sidd\":\"0Z0N\",\" side\":\"0M0B0T060Z1Q121M\",\" sido\":\"0O0T0P0H10021102\",\" sids\":\"0Z1A\",\" sie \":\"0NMN1A02\",\" siek\":\"010L1B05\",\" siel\":\"11361B0C\",\" siem\":\"0O2W1107\",\" sien\":\"01240L060O1G11081B0P\",\" sier\":\"0O02121C1A03\",\" siet\":\"0O0D0Q2I110G140B\",\" siev\":\"11041D3U\",\" sig \":\"0Z47104H132I\",\" sige\":\"0D020Z2C\",\" sigu\":\"0D0I0O0Z0V35152I\",\" sii\":\"0Q03115S1C5H\",\" siia\":\"1C29\",\" siih\":\"112M\",\" siin\":\"112N1C7J\",\" siis\":\"110X1C34\",\" siit\":\"116P\",\" sik\":\"0D060Z141002110H120Z141A\",\" sike\":\"11021419\",\" sikk\":\"0Z18120Q\",\" sila\":\"0B0V0D2S1F0H\",\" sill\":\"0M020O09113I\",\" silm\":\"112S1C2X\",\" simf\":\"042S\",\" simi\":\"03020L030M030O040Q050T0X1O0N\",\" simm\":\"100F\",\" sin \":\"010L031E0O2N0SML0T040V0D0Z3Z1027122I1O27\",\" sina\":\"0D2E0P070Q0H0R0E0T070V0F10101C26\",\" sinc\":\"0L050M0L0O050P060Q04140M150I1F031O07\",\" sind\":\"04830N7T0Q020R0H0Z041C6B1O03\",\" sine\":\"0D040T1P0Z181103121915081F08\",\" sink\":\"043I0M0211051O02\",\" sinn\":\"0N0G1002111H1206134N1C1H\",\" sino\":\"0D1S0L050O0M0V0R1O02\",\" sins\":\"04EK\",\" sint\":\"041V0D030O070P0P0R020T0B120C1O03\",\" sinu\":\"0D0U0T050V0611OA15061C97\",\" sinz\":\"04CH\",\" sinä\":\"11GC\",\" sio\":\"0S0Q1A0M\",\" sisä\":\"112X\",\" sit \":\"01160M090T210Z1C1102\",\" sitt\":\"0M0A101W113C121G1318\",\" sitä\":\"119D\",\" sivy\":\"042S\",\" siy\":\"0D5L1F0B\",\" siya\":\"0D991F0F\",\" siz\":\"0M021F271N76\",\" siz \":\"1F0P1N52\",\" size\":\"0M031F0S1N1I\",\" sizi\":\"1F1C1N3G\",\" siú\":\"0S0T\",\" się\":\"1AJL\",\" się \":\"1AQ2\",\" sj\":\"0V040Z06102E120P1330\",\" sja\":\"0R020V02120H1308\",\" sje\":\"0Z02120N\",\" sjel\":\"120C\",\" sju\":\"101K1204\",\" sjuk\":\"100U\",\" sjun\":\"100I\",\" sjá\":\"132K\",\" sjál\":\"132S\",\" sjä\":\"101D\",\" själ\":\"101C\",\" sjæ\":\"0Z09\",\" sjó\":\"1314\",\" sjón\":\"131X\",\" sjø\":\"1209\",\" ska \":\"103R\",\" skaa\":\"010N\",\" skad\":\"0Z07100G120C\",\" skai\":\"1B3G1D5Y\",\" skal\":\"0Z3L10091249132D1A041B08\",\" skam\":\"0Z0510021206130F1B1N\",\" skap\":\"1003120E130V\",\" skat\":\"0M020Z0710031B031D3C1O0E\",\" ske\":\"010S03030M020Z12100M130X1B041O02\",\" sket\":\"0Z0O\",\" skil\":\"0M030Z09100D1209134N\",\" skip\":\"0M02120D132P1O02\",\" skj\":\"0Z0D100G122V1308\",\" skje\":\"1220\",\" skjø\":\"120L\",\" sko \":\"0Z0E1205\",\" skol\":\"0Z1C101512161B0G1D43\",\" skoo\":\"011E\",\" skor\":\"0U0Q0V1I0Y15100D130H1A0B\",\" skov\":\"0Z0M\",\" skoń\":\"1A1E\",\" skra\":\"0Z03100K1A051B0H\",\" skre\":\"0Z0V100F120W1B07\",\" skri\":\"010G0Z1I101E121L133E1B0D1O1T\",\" skry\":\"010P0Y0A1A021B0Q\",\" skul\":\"0Z18104H122J13151O02\",\" skut\":\"0U0R0Y0Y1A041B04\",\" skyl\":\"0Z0J100B120G130K1B04\",\" skä\":\"100Q\",\" skæ\":\"0Z0B\",\" skó\":\"131S1A04\",\" skól\":\"132L\",\" skö\":\"100G\",\" skø\":\"0Z0L\",\" skú\":\"0Y15\",\" slaa\":\"011O0R16\",\" slap\":\"0R0T0Z0510021B0D\",\" slec\":\"0R16\",\" slee\":\"0M0U\",\" sleg\":\"0118\",\" slet\":\"0Z0G1206\",\" slie\":\"0R051D1W\",\" slik\":\"0V120Z04120X1D2Y\",\" slip\":\"0M030Z07100512061P1Y\",\" slob\":\"0V0W0Y18\",\" slog\":\"0Z0B100F\",\" slov\":\"0Q090R020U1L0Y4V11021B031F05\",\" slu\":\"0R080U0S0V0S0Y0C0Z0L101R1214150A\",\" slut\":\"0Z09101O1210\",\" sly\":\"0U0X130F1B02\",\" slyš\":\"0U1A\",\" slä\":\"100K\",\" slå\":\"0Z0I100D120C\",\" slē\":\"1D0W\",\" slēp\":\"1D21\",\" smak\":\"0R021009120F1A0A\",\" smao\":\"0S2T\",\" sme\":\"03050M050Q0S0R070U020V0Z0Y6T0Z0A1002120C1B02\",\" sme \":\"0Y81\",\" smil\":\"0M0A0Z0E120F\",\" smo\":\"0M0A0V2L1A021B02\",\" smo \":\"0V6E\",\" smrt\":\"0U0T0V0O\",\" smu\":\"03020U0D0Y0K0Z1G10051A091B08\",\" smuk\":\"0Z1G\",\" små\":\"0Z0B1008120C\",\" sna\":\"030M0M040R060U190V0A0Y0S0Z0X1016124B1B02\",\" snab\":\"100K\",\" snak\":\"0M020Z0F123Q\",\" snar\":\"0Z0N100J120L\",\" snaž\":\"0U110V080Y0Y\",\" sne\":\"03030M020R1U0V0E0Y0Q0Z0P130N\",\" snee\":\"0R0T0Z08\",\" snel\":\"0R1O\",\" sni\":\"0R030U031002120L1B0M1D0U\",\" snie\":\"1B0O1D21\",\" snil\":\"0U03120J\",\" sná\":\"0S0X0U02\",\" snám\":\"0S3S\",\" snä\":\"100U\",\" snäl\":\"100T\",\" sní\":\"0U0V0Y0I\",\" snö\":\"100I\",\" snø\":\"120N\",\" sně\":\"0U0P\",\" so \":\"012A04150M240N4A0Q1P0V030Y1W1P0M\",\" sob\":\"0D0A0N040O230P2R0U0J0V0R1A21\",\" sobi\":\"0V0F1A2L\",\" sobr\":\"0D0I0O2M0P38\",\" sod \":\"1P19\",\" soe\":\"01170R05\",\" soek\":\"0110\",\" soh\":\"0N0C110714271F031Q70\",\" soh \":\"1Q56\",\" soha\":\"142C\",\" soi\":\"0L3I0O050P02111V1O02\",\" soir\":\"0L1Q\",\" soit\":\"0L221142\",\" sok\":\"0R050Z02110B14631A031F0A\",\" sok \":\"143B1A03\",\" soka\":\"141V1F0A\",\" sola\":\"0L040M020N070O0R0P050Q110T0F1F031O1D\",\" sole\":\"0L0S0O040P020Q0E0T0Q0Z0E100812071O09\",\" soll\":\"0L020N4F0Q040R020T07\",\" solo\":\"0O310P020Q2E\",\" solu\":\"0D040L0A0M030O0A0P070Q050T101102150A1F03\",\" som \":\"0P050YSG0Z66106Z12AE1P0G\",\" some\":\"0M580O020P061O0F\",\" somm\":\"0L3E0N0F0Q020R0G0Z0L1009120J\",\" somn\":\"0L020T1D1005150I\",\" son \":\"0L8Z0M0D0O570Q04100E1F1N1P0Z\",\" sond\":\"010Y0L020N11\",\" sono\":\"0P090QFP1O0C\",\" sonr\":\"0O0H1F2V\",\" sont\":\"0LA5\",\" sonu\":\"0T04130J1F1K\",\" soo\":\"011E0M0N0R0C1C1T\",\" soon\":\"0M0V\",\" soos\":\"0116\",\" soov\":\"1C2Q\",\" sora\":\"150M1F091N59\",\" sore\":\"0B0E0Q0T\",\" soro\":\"0D020T1H1409\",\" sort\":\"0L2G0M040P0E0T030Z0L100311041O07\",\" soru\":\"1F3K\",\" sot\":\"0L020P020Q0K0U05110O1B021C0Z\",\" sots\":\"1C2G\",\" sou\":\"012E0L4R0M0N0P2B0U1G1102\",\" sou \":\"01270P2N\",\" sous\":\"0L1B0U0L\",\" souv\":\"0L2C\",\" sov \":\"0Z0D100B12091Q29\",\" sove\":\"0Z14100C1106120X1O02\",\" sow\":\"0N081N1E\",\" soy\":\"0L0I0O1Z1F0A\",\" soy \":\"0O2L\",\" soz\":\"0N030P0W\",\" sozi\":\"0N050P15\",\" soň\":\"1N22\",\" spag\":\"0Q0U0R050Z021103\",\" span\":\"010K0B0C0M050N0C0R0A0U040Z0C10071209140A150A1A02\",\" spav\":\"0Q0C0V1X\",\" spať\":\"0Y14\",\" spea\":\"0M1M\",\" spee\":\"010N0M090R12\",\" spel\":\"010G0M020R190T04101F1P1T\",\" spen\":\"03020M0R0N020Q0710031206\",\" sper\":\"0Q120T0Y15201O0J1P0R\",\" spes\":\"0Q0X0T06120C\",\" spie\":\"0N260Q0L0R070Y1K1A08\",\" spik\":\"10031P3Q\",\" spil\":\"0Z1L121F131R\",\" spis\":\"0U050Z3E122O\",\" spol\":\"0T030U1W0Y26\",\" spos\":\"0Q0Y0V0F1A0S\",\" spot\":\"0M040R020U0310021A27\",\" spra\":\"0M020N1R0R0G0U070V080Y1G0Z0310091A1W1B03\",\" spre\":\"0M040N1O0Q050R3D0V2K0Z021204150P1B0N\",\" spro\":\"0R060U030Z1E1A031B08\",\" sprá\":\"0U0M0Y1X\",\" språ\":\"100W121F\",\" spu\":\"0N030Q030R050T040V040Z0E120G131I159V1A02\",\" spun\":\"155N\",\" spur\":\"0N030Z0H120G13361O03\",\" spus\":\"156K\",\" spá\":\"0U0S0Y0H\",\" spø\":\"0Z15121K\",\" spør\":\"0Z19121E\",\" spýt\":\"0Y12\",\" spē\":\"0T031D31\",\" spēj\":\"1D1R\",\" spēl\":\"1D4L\",\" sq\":\"03040M030Q070T02\",\" sr\":\"032I0O030P050U0B0V1Q0Y0V14021B06\",\" srdc\":\"0U0C0Y0Y\",\" sre\":\"0V1K\",\" sreć\":\"0V2S\",\" sri\":\"032M1B08\",\" srin\":\"034J\",\" ss\":\"034F1102\",\" ssa\":\"031O1A02\",\" sta \":\"0Q3H0R090U03120P150D\",\" staa\":\"010Y0N0F0R2C\",\" stai\":\"0M040Q0W0S3J150W1B0S\",\" stav\":\"0Q1S0U0C0V130Z021004\",\" stay\":\"0M1J\",\" stað\":\"132N\",\" ste \":\"0V2M0YCF\",\" sted\":\"0R050Z0Z120Q\",\" stee\":\"010K0M020R1N\",\" stej\":\"0U15\",\" stel\":\"010K0N190Q040R0V0T0G131J15071O0C\",\" stem\":\"0R0H0Z0N120H\",\" ster\":\"010L0N0Q0Q020R180T071102120F130P1O03\",\" stes\":\"0Q1A\",\" stia\":\"0Q0W\",\" stig\":\"0V1V0Z071009\",\" stil\":\"010K0M220N0D0Q030R0I0Z0Q1006120O15071B031O03\",\" stj\":\"0Z0P1006120F130R\",\" sto \":\"0Q1X0U030V0U12071A05\",\" stod\":\"0Z0J100B1208\",\" stoj\":\"0U0R0V0M0Y191A03\",\" stor\":\"0M0V0Q0N0R0B0Z2D101S12271B0H\",\" stro\":\"0B070M0D0N060Q020R0B0U120Y201A0Z1B08\",\" strá\":\"0U0R0Y0S131N\",\" strā\":\"1D3U\",\" stv\":\"0U020V1S0Y08\",\" stva\":\"0V4A\",\" sty\":\"0L070U080Z0L1007120G13061A06\",\" styk\":\"0Z0F\",\" stá\":\"0S0V0U2A0Y2E\",\" stál\":\"0U1Z0Y2J\",\" stát\":\"0U0V\",\" stä\":\"0N0E101U\",\" stäl\":\"100Q\",\" stän\":\"0N0A100N\",\" stå\":\"0Z10100Z120Z\",\" stå \":\"0Z0C1008120D\",\" står\":\"0Z0R100O120K\",\" stæ\":\"0Z0C130M\",\" stær\":\"0Z0E1318\",\" stó\":\"13281A07\",\" stór\":\"132O\",\" stôl\":\"0Y0Y\",\" stö\":\"0N05100Q130X\",\" stör\":\"0N07100J\",\" stø\":\"0Z0S120Z\",\" stør\":\"0Z0K120L\",\" stā\":\"1D11\",\" su \":\"0L040O8V0Q1A0V5L1B811C2U1F0H1P0U\",\" sua\":\"0B160O030P4V0Q3N0S0T0T2511041B05\",\" sua \":\"0P4Z0Q3O0T0R110A\",\" suam\":\"0B0F0T0V\",\" suas\":\"0P160S2K0T09\",\" sub \":\"0T0U151I1O0O1Q0D\",\" succ\":\"0L0F0M0D0Q1A0R0A0T080Z06150I\",\" such\":\"0M0L0N0V0U041A041Q0U\",\" suda\":\"0B9V0O030Q0G1B0N1F031O04\",\" sue\":\"0L020O1U0P020Q150T021504\",\" sue \":\"0Q15\",\" suel\":\"0O0W\",\" suf\":\"0L0E0M050O0S0P0F0Q050T08150V1A021O0W\",\" sufi\":\"0O0Q0P0I150F1A031O1A\",\" suh\":\"0B05110A1C0K1Q08\",\" sui\":\"0L7V0M080O060P030Q080R060T0Y11081B03\",\" suis\":\"0LBG0T0K\",\" suka\":\"0B780D0611081B0D\",\" sukc\":\"1A0F1O1O\",\" sul \":\"0P070Q1311031C6U\",\" sula\":\"0D0G110B1B0E1F04\",\" sull\":\"0Q15110J1C6X\",\" sult\":\"0Z0D1102120F1B06\",\" sum \":\"0T761Q0S\",\" suma\":\"0D0R0O03130K1A021B0I\",\" sumu\":\"0D0F0T1R110B1B05\",\" sung\":\"0B1C0M020Z02\",\" sunk\":\"1B2Q\",\" sunt\":\"0TBH15HR\",\" suo\":\"0D030Q670T18112M1B09\",\" suo \":\"0Q3Z0T0V1102\",\" suoi\":\"0Q1P\",\" suon\":\"0Q0S\",\" supp\":\"0L160M100N060Q050T050Z061105\",\" supr\":\"0O020P020T060V08150I1B301O0I\",\" sur \":\"0L890O050Z021O47\",\" sura\":\"0B1G1B0M1N17\",\" sure\":\"0L020M1D11031B061C17\",\" suri\":\"11021B051C1S1F03\",\" surm\":\"0L0311091C1E1O09\",\" surp\":\"0D020L0V0M0L0P0J150O1O0K\",\" sus \":\"0O3L150D1Q0K\",\" susi\":\"0D06110A1B58\",\" sust\":\"010S0O060P020T061B10\",\" sut\":\"0V0R11021402150C1B1Y1Q1I\",\" suti\":\"1B23\",\" sutr\":\"0V1W1B0D\",\" suu\":\"0T18114A1C4K\",\" suud\":\"110G1C2X\",\" suum\":\"0T17\",\" suun\":\"112S\",\" suur\":\"115H1C70\",\" suw\":\"0D021N1A1Q09\",\" suž\":\"1B0Q\",\" sva\":\"0Q080U080V1G0Z0P1017121G131C1B1H1D13\",\" svak\":\"0V2Y\",\" svar\":\"0Z0O1010121C131X1B1Z1D2A1O02\",\" sve \":\"0V6U\",\" svei\":\"11051205130F1B1P1D2O\",\" sven\":\"0Q020Z06100F12061O02\",\" svet\":\"0U040V2C0Y1W10051B0E\",\" svi\":\"0Q0A0V2W0Y0H0Z0D10051206130J1B051O021P17\",\" svi \":\"0V3F\",\" svim\":\"0V0O10021P1A\",\" sviđ\":\"0V20\",\" svo\":\"0Q020U2L0V3F0Y6H1002135K1B07\",\" svo \":\"137A\",\" svoj\":\"0U2I0V730Y7Y\",\" svon\":\"133V\",\" svå\":\"100W\",\" svår\":\"100W\",\" svæ\":\"0Z0K120I1306\",\" svær\":\"0Z0M120I\",\" své\":\"0U3N1404\",\" své \":\"0U2Q\",\" svéh\":\"0U1F\",\" svém\":\"0U0Z\",\" svø\":\"0Z0N120K\",\" svøm\":\"0Z0S120K\",\" svý\":\"0U16\",\" svým\":\"0U14\",\" svě\":\"0U1C\",\" svět\":\"0U1M\",\" svů\":\"0U11\",\" svůj\":\"0U1G\",\" swa\":\"010K030A0M03\",\" swe\":\"010J03030B030M0A0Z021A0C\",\" swem\":\"010G\",\" swi\":\"03030M0J\",\" swim\":\"0M0L\",\" swo\":\"0M031A38\",\" swoi\":\"1A1F\",\" swoj\":\"1A3R\",\" sy \":\"01AM\",\" syg\":\"0Z0R\",\" syg \":\"0Z0F\",\" syge\":\"0Z0D\",\" syk\":\"110612161B02\",\" sykk\":\"120C\",\" syna\":\"0U0C1A0A1N27\",\" syne\":\"0U020Z0S120X1A02\",\" syng\":\"0Z0G120D130K\",\" synt\":\"0Z05112C1205\",\" syst\":\"0L0B0M070N030R030T030U05100F131G1A06\",\" syv\":\"0Z0E110E1206\",\" syy\":\"1116\",\" syö\":\"113M\",\" syöd\":\"112D\",\" sz\":\"14HA1A53\",\" sza\":\"144Y1A0W\",\" szab\":\"1423\",\" szav\":\"1414\",\" szc\":\"1A1K\",\" szcz\":\"1A2H\",\" sze\":\"14GN1A0N\",\" szem\":\"143Q\",\" szer\":\"14CS1A06\",\" szi\":\"141L\",\" szk\":\"14021A1R\",\" szko\":\"1A2G\",\" szo\":\"144W1A02\",\" szob\":\"141N\",\" szok\":\"141G1A02\",\" szom\":\"1418\",\" szyb\":\"1A1L\",\" szá\":\"145Y\",\" szál\":\"1410\",\" szám\":\"1439\",\" szé\":\"143J\",\" szép\":\"1420\",\" szí\":\"142U\",\" szín\":\"140Z\",\" szív\":\"1420\",\" szó\":\"143O1A06\",\" szól\":\"141E\",\" szü\":\"144K\",\" szük\":\"142C\",\" szül\":\"1429\",\" sá\":\"0O060P070S0T0U0T0Y0Z131C140A\",\" sá \":\"131A\",\" sám\":\"0U180Y1O\",\" sám \":\"0U1P0Y22\",\" sás\":\"0S0M130A\",\" sã\":\"0P35\",\" são\":\"0P3T\",\" são \":\"0P4T\",\" sä\":\"0N06103Z111V1N0Y1P1A\",\" säg\":\"102A\",\" säga\":\"100Y\",\" säge\":\"100V\",\" säk\":\"100Y11031P1B\",\" säke\":\"100V\",\" säl\":\"100O\",\" säm\":\"10021N18\",\" sämi\":\"1N1O\",\" sän\":\"0N02100J110H\",\" sät\":\"0N07100Q1102\",\" sätt\":\"100Q\",\" sää\":\"111A\",\" så\":\"0Z2A1059122X\",\" så \":\"0Z59104O126M\",\" såd\":\"0Z0H100E\",\" såda\":\"0Z0K100D\",\" såg\":\"101H\",\" såg \":\"101H\",\" sån\":\"100B120C\",\" sår\":\"0Z0910051207\",\" sæ\":\"0T040Z0N1204130R\",\" sæl\":\"0Z0F130B\",\" sælg\":\"0Z0I\",\" sær\":\"0Z081209\",\" sæt\":\"0Z0Y130M\",\" sætn\":\"0Z0S\",\" sé\":\"0L0O0O180P0G0Q030S9O133C140C\",\" sé \":\"0O1V0Q050SBG131Y\",\" sér\":\"0L0D0P0C132P140B\",\" sér \":\"134G\",\" sê\":\"010T\",\" sê \":\"011V\",\" sì\":\"0Q07\",\" sí\":\"0O0P0P060S470U03132Q140D\",\" sí \":\"0O0X0S411306\",\" sín\":\"0O02132E\",\" sínu\":\"132Q\",\" síð\":\"1315\",\" só\":\"0O0N0P1I130I1406\",\" só \":\"0P1P1402\",\" sól\":\"0O0X130L1A02\",\" sólo\":\"0O17\",\" sõ\":\"1C4S\",\" sõb\":\"1C20\",\" sõbe\":\"1C2N\",\" sõbr\":\"1C29\",\" sõi\":\"1C18\",\" sõit\":\"1C1O\",\" sõn\":\"1C1D\",\" sõna\":\"1C2J\",\" sõp\":\"1C0Q\",\" sõpr\":\"1C1S\",\" sö\":\"100U110L1311140H1C1B1FAA1N3C1P0N\",\" sön\":\"100G130D1F03\",\" sönd\":\"100E1F04\",\" söy\":\"1FAI\",\" söyl\":\"1FDU\",\" söz\":\"1F191N31\",\" söz \":\"1F0O1N1I\",\" sözl\":\"1F0L1N22\",\" söö\":\"1C1N\",\" söý\":\"1N1F\",\" sø\":\"0Z0Y120T\",\" søg\":\"0Z08\",\" søn\":\"0Z0W120R\",\" søn \":\"0Z0M\",\" sønn\":\"0Z06120J\",\" sør\":\"0Z021209\",\" søs\":\"0Z0M120H\",\" søst\":\"0Z0K120F\",\" søv\":\"0Z0B1206\",\" søvn\":\"0Z0D1206\",\" sú\":\"0Y5L130G1404\",\" sú \":\"0Y861305\",\" sû\":\"0L0K\",\" sûr\":\"0L0Z\",\" sü\":\"0N06140F1C2T1F2Z1N191P14\",\" süd\":\"0N041C0K\",\" süda\":\"1C1E\",\" sük\":\"14031P0Y\",\" sün\":\"0N021C0V\",\" sür\":\"14051F2X1N0Z\",\" süre\":\"1F27\",\" süü\":\"1C1I\",\" süüa\":\"1C29\",\" sā\":\"1D2I\",\" sāk\":\"1D1U\",\" sāka\":\"1D1R\",\" să\":\"15PO\",\" să \":\"15SD\",\" să-\":\"155X\",\" să-l\":\"151V\",\" să-m\":\"1521\",\" săpt\":\"151S\",\" są\":\"1A2X1B0J\",\" są \":\"1A3H\",\" sē\":\"0T0H\",\" sē \":\"0T0V\",\" sė\":\"1B0P\",\" sī\":\"0T03\",\" sı\":\"1F3X\",\" sık\":\"1F1W\",\" sık \":\"1F1G\",\" sın\":\"1F0X\",\" sır\":\"1F11\",\" sľ\":\"0Y0I\",\" sł\":\"1A2N\",\" sło\":\"1A1S\",\" słow\":\"1A1M\",\" sō\":\"0T03\",\" sœ\":\"0L0D\",\" sū\":\"0T021B0J1D0H\",\" sɛ\":\"0320\",\" t'\":\"0L1X\",\" t'a\":\"0L1W\",\" t'ai\":\"0L1C\",\" t'e\":\"0L0Y\",\" t-\":\"032I0S2P0Z02\",\" t-a\":\"03020S1E\",\" taa\":\"010N0R141114\",\" taal\":\"010K0R171102\",\" tabh\":\"0S4Z\",\" tabi\":\"0D0H1F05\",\" tack\":\"1012\",\" tad\":\"031A0B0K0U2U0V061B0E1D171F061Q0E\",\" tad \":\"1D321Q0I\",\" tady\":\"03020U3X\",\" taf\":\"010K032A0R0J\",\" tafe\":\"010L030X0N020R0P\",\" tag \":\"0N1P0Z0N100B\",\" taga\":\"030G0D0S14051C7G1D3G1O02\",\" tage\":\"030U0N120Z3S10041O04\",\" tago\":\"1O29\",\" tah\":\"03060B7C0D040U0F111I1C901F0F1Q0K\",\" taha\":\"03040B0H0D03111J1CGT1F02\",\" taht\":\"11181C3V1F03\",\" tahu\":\"03080BD7\",\" tai \":\"11311BNA\",\" taip\":\"110A1B7Y\",\" tais\":\"0L030P03110S1B0T1D2A\",\" taj \":\"0V1S1Q0U\",\" tak \":\"0B1P0U530Y3M0Z0T1A4W\",\" take\":\"032I0M27100511031205\",\" taki\":\"03040M0C111T1A221F09\",\" takk\":\"0Z08110F120U131C\",\" tako\":\"0D0A0U1E0V5F\",\" také\":\"0U120Y0Z\",\" taký\":\"0Y0Z\",\" tal \":\"030C0O0P0P0E0Z0810071C48\",\" tala\":\"03090D1F1025135M1402\",\" talk\":\"0M24\",\" tall\":\"031A0M090O040Z071004110712061C4Z\",\" talo\":\"0D02114F1P1A\",\" talt\":\"0Z0K\",\" talá\":\"144T\",\" tam \":\"03030T1A0U3P0Y3I1A271B0U1D2O1F141QR9\",\" tam'\":\"1Q4M\",\" tama\":\"035C0B0O0D0M0L030O040P061F13\",\" tamb\":\"0B0A0O1G0P1K\",\" tame\":\"035J0T0F1B0B1O0L\",\" tamo\":\"0V33\",\" tamá\":\"143A\",\" tan \":\"0O3B\",\" tank\":\"030R0Z0810071104120C1403\",\" tanp\":\"0B1X\",\" tant\":\"03020L0Z0N040O1K0P160Q100R050T1C0Z071402\",\" tanu\":\"03020D03142Q\",\" tany\":\"0B0F1N17\",\" taná\":\"1418\",\" tanı\":\"1F2L\",\" tao\":\"0D1Q\",\" tao \":\"0D1O\",\" taon\":\"0D1G\",\" tapa\":\"030G0D080O03118V130I14091B041N14\",\" tapi\":\"030A0B1V0L040R021O03\",\" tar \":\"0S3S100Q120Y\",\" tara\":\"03060D021B021F1F1N1S\",\" tard\":\"030B0L140O1U0P0Y0Q0J0T09\",\" tark\":\"114A\",\" tarp\":\"111X1B1K\",\" tart\":\"0L050O060P03110J143N1B041F0P\",\" tarv\":\"116B\",\" tas \":\"0B0D0L030R071B541DMF\",\" tase\":\"033E\",\" tatl\":\"0D0S1F09\",\" tatt\":\"03040M02120L\",\" tată\":\"151W\",\" tau\":\"0B080D030L030M040N0A0T0611081B5F\",\" tau \":\"0B0F1BAE\",\" tava\":\"114B140I1D3C1F03\",\" tave\":\"1B58\",\" tavi\":\"1B1Y\",\" tavo\":\"0Q0D110Q1B90\",\" tavs\":\"0Z031D251F0N\",\" tavę\":\"1B3G\",\" taw\":\"03190B060D081Q0M\",\" tay\":\"030S0D1L1F031Q0D\",\" tayo\":\"0D2S\",\" taý\":\"1N1Q\",\" taýý\":\"1N1I\",\" te-a\":\"151N\",\" tea \":\"0M0814031C48\",\" teac\":\"0M110SBY\",\" tead\":\"1C76\",\" tean\":\"0S3J1C3B\",\" teas\":\"0M020S2K\",\" teb\":\"033M0U1S0V110Y2M1B051F02\",\" teba\":\"0Y1L\",\" tebe\":\"0U1G0V270Y0N1B07\",\" tebo\":\"0U120Y14\",\" tebɣ\":\"0365\",\" tecu\":\"0T0T\",\" teda\":\"1C371F061O07\",\" tedd\":\"0348140H\",\" tee\":\"011V0M050N090R020Z03112L1C3Z1O02\",\" tee \":\"010K0N0D11211C2G\",\" teeb\":\"1C1H\",\" teed\":\"1C22\",\" teen\":\"011G0M030R020Z04111814021C1O\",\" tef\":\"031Z\",\" teg\":\"03150R1X0T050Z0E1209142D1A3T1B061C3J1O03\",\" tege\":\"0R2L1C4I\",\" tegi\":\"1C3O\",\" tegn\":\"030K0Z0H1209141T\",\" tego\":\"1A60\",\" teha\":\"1C4Z\",\" tehd\":\"0U0611771F06\",\" tehe\":\"140Z\",\" tei\":\"0L020N0J0P020S0M1132130D1B1U1C5C1D4E\",\" teic\":\"0N021D7V\",\" teid\":\"112I\",\" teie\":\"1C3L\",\" teik\":\"1B071D3G\",\" teil\":\"0N0T111P1C2N\",\" tein\":\"0L03110X1C3E\",\" teis\":\"11091B3D1C3E\",\" tej\":\"03090O040Y15140N1A1F1Q09\",\" tej \":\"0Y0C14041A2A\",\" tejt\":\"0Y13\",\" tek \":\"0V0K1F1V\",\" teke\":\"0R0B115914031F03\",\" teki\":\"113B130C140C1F02\",\" tekr\":\"03081F1I\",\" tel \":\"0L0C0R021P1T\",\" tela\":\"0B5O0O020P020T041F06\",\" telj\":\"141T\",\" tell\":\"03BC0L170M2S0N040R030T061205\",\" tem \":\"0P6N\",\" tema\":\"0B2M0O0B0P031A0F1B061CA11F051O0C\",\" temo\":\"0O070P160Q041B021O0C\",\" ten \":\"010K0M0A0O060R0A0U4A0Y261A5J1B4D\",\" tene\":\"0L040O2E0Q0C0R020T15\",\" teng\":\"03020B0O0O4X0Q03130G140N\",\" tenh\":\"03070P4P0U0S\",\" tenk\":\"03080U08121L1B03\",\" tení\":\"0O1X\",\" tep\":\"0B0V0N020U0F0Y0M1F08\",\" tepa\":\"0B1C\",\" teq\":\"031R1Q09\",\" teqq\":\"032Y\",\" ter \":\"0P2O0R0B0T06\",\" tera\":\"0B1G0Y2Z1A271O031Q3W\",\" terb\":\"03060B431F02\",\" tere\":\"0P0B0R030T02140C1A021C2X1F051O04\",\" teri\":\"0B1E0P0D1B031O02\",\" terj\":\"0B3414051N10\",\" terk\":\"03020B251F0K1O02\",\" terl\":\"0B6K1F02\",\" ters\":\"03060B2N1F05\",\" tert\":\"0B2L0T0M1O04\",\" teru\":\"012W0B1B0R271O0H\",\" terv\":\"112H14131C1S\",\" tes \":\"0B070L1Z\",\" tesr\":\"034D\",\" tess\":\"037N0Q020T071409\",\" tesz\":\"1412\",\" tesɛ\":\"034N\",\" teta\":\"0B2Z0U030Y0A1B08\",\" tets\":\"0303141K\",\" tett\":\"03DG0Q031426\",\" teu\":\"0N0B0P0V0T06\",\" teu \":\"0P0U\",\" tev\":\"03020P0I0R0A100314051D9H\",\" tev \":\"1DF4\",\" tevi\":\"03041D8O\",\" tez\":\"031Z1F02\",\" teď\":\"0U1Z\",\" teď \":\"0U2Q\",\" tešk\":\"0V1Q\",\" teɣ\":\"032K\",\" teɣs\":\"033E\",\" teḥ\":\"031Q\",\" teḥw\":\"033D\",\" teẓr\":\"032W\",\" tg\":\"031N\",\" thai\":\"0B070Q020R020S2K0Z021102\",\" than\":\"0M2V\",\" thar\":\"03030S3A\",\" that\":\"0MP3\",\" the \":\"0MSG\",\" thea\":\"0M030N040R030S5P0T0A\",\" thei\":\"0M28\",\" them\":\"0M2N0N09\",\" then\":\"03060M0L\",\" ther\":\"0L020M530N020T06\",\" thes\":\"0M0Z0T04\",\" they\":\"0M8Q\",\" thi\":\"03020MCJ0S0X\",\" thin\":\"0M8D\",\" thir\":\"0M0L\",\" this\":\"0M93\",\" thoi\":\"0S49\",\" thos\":\"0M0Q\",\" thou\":\"0M3F\",\" thr\":\"0M1Y\",\" thre\":\"0M1Q\",\" thro\":\"0M0X\",\" thu\":\"03030M040R130S2P\",\" thug\":\"0S65\",\" thui\":\"0R1H0S4I\",\" thá\":\"0S11\",\" thái\":\"0S3J\",\" thú\":\"0S1E\",\" thú \":\"0S5G\",\" thō\":\"0T3G\",\" thōm\":\"0T3N\",\" ti \":\"03030O0W0P0A0Q3V0U3N0V4M0Y4A0Z0M120M140W\",\" tia\":\"0B070P041O1E\",\" tiba\":\"03040B1N\",\" tibi\":\"03040T5U\",\" tid\":\"03290BKP0P020Z2M102K122Q1P3A\",\" tid \":\"030N0Z1C10131216\",\" tida\":\"03090BS51P0J\",\" tide\":\"033J0Z0R100K120S1P24\",\" tidi\":\"030B100M\",\" tidl\":\"03030Z0V120N\",\" tidu\":\"0B3B\",\" tie \":\"0M030Y0H110B1B0G1D1R1O46\",\" tied\":\"119S14031P1L\",\" tiek\":\"1B251D21\",\" tiel\":\"110A1O2Y\",\" tiem\":\"0O3L1B03\",\" tien\":\"0L0V0O9H0Q050R0U112M1O12\",\" ties\":\"11191B551O07\",\" tiet\":\"0Y1I1182\",\" tieš\":\"1D37\",\" tiga\":\"03060B2V\",\" tih\":\"03030V0711041C0L1Q06\",\" tij\":\"03040O020R2S1Q07\",\" tijd\":\"0R3P\",\" tik\":\"031M0B090D0311041B9B1D791P4N\",\" tik \":\"1B6T1D6P\",\" tika\":\"030411021D83\",\" tiki\":\"11021B29\",\" tiko\":\"1P4V\",\" tikr\":\"1B81\",\" tiks\":\"1B1H\",\" til \":\"0ZGI12FE13K6\",\" tila\":\"030B112G\",\" tilb\":\"0Z1Q121J131C\",\" tilf\":\"0Z0H120F130C\",\" tilg\":\"0Z0N1208130B\",\" till\":\"03080M030Z0C10B6120A130B\",\" tils\":\"0Z0C120C\",\" timm\":\"030E0R02100H\",\" timp\":\"155X\",\" tina\":\"03050D18\",\" tine\":\"030G153O\",\" ting\":\"0B5E0D150Z0K1002120T1B0G1Q0I\",\" tinh\":\"0P21\",\" tini\":\"030J0D0I\",\" tinn\":\"03060S2T\",\" tio\":\"0B060P070S0O100I1O9G\",\" tio \":\"0P07100G1OA3\",\" tiom\":\"1O1L\",\" tion\":\"0B0C1O7K\",\" tire\":\"03070L0E0M0K0P06\",\" tis\":\"032T0L020N0B0U061003110514181Q0C\",\" tisz\":\"141B\",\" tit \":\"0Z0H\",\" titt\":\"100U\",\" tiu\":\"11041O7D\",\" tiu \":\"1O8Z\",\" tiuj\":\"1O26\",\" tiun\":\"1O3L\",\" tiv\":\"0P131Q0L\",\" tive\":\"0P1C\",\" tiy\":\"03050D081F02\",\" tj\":\"030E0Z06100S12081304\",\" tje\":\"03070Z0H1008120F\",\" tjen\":\"0Z0C120F\",\" tk\":\"031Q1A02\",\" tl\":\"032O0U080Y071Q7F\",\" tlh\":\"1QD7\",\" tlha\":\"1Q4J\",\" tlhi\":\"1Q5Y\",\" tlho\":\"1Q9N\",\" tm\":\"035I0U060Y07\",\" tma\":\"032C0U06\",\" tme\":\"0320\",\" tn\":\"031S\",\" to \":\"0MQR0UM60VAG0YO80Z27121N1AG51B3B1DBJ\",\" toa\":\"0O030P030U031006153W1A03\",\" toat\":\"154L\",\" toc\":\"0N090O0O0P0O0Q0B0R0V150H\",\" toch\":\"0N0F0R17\",\" tod\":\"0M180N0D0O8U0P58113Y1B0C1Q0C\",\" toda\":\"0M1O0O3V0P20\",\" tode\":\"0N06118S\",\" todo\":\"0O840P4R\",\" toe\":\"013Z0R3B\",\" toe \":\"013A0R12\",\" toen\":\"0R1P\",\" tog\":\"0M0J0Q050V120Z2B1019120L\",\" tog \":\"0V0H0Z291018\",\" toga\":\"0V29\",\" toge\":\"0M0Q0Z0I120H\",\" toh\":\"0U4A0Y1M11061C0L1Q0N\",\" tohl\":\"0U3E\",\" toho\":\"0U2P0Y1R\",\" toi\":\"0B040L2C0M020N020R020Z05115R1C0Y\",\" toi \":\"0L3F110F\",\" toim\":\"113M1C13\",\" tois\":\"115W\",\" toiv\":\"113D\",\" tok \":\"1215\",\" toks\":\"1B1W\",\" told\":\"0M3Y\",\" tolo\":\"0B3J0P03\",\" tom'\":\"0M1O11081A081FHD\",\" tomb\":\"0B0B0L1R14031O04\",\" tome\":\"0O060P070U3C0V2R1A12\",\" tomi\":\"100311SG147V1A061CEO\",\" tomm\":\"0Z07113H140D\",\" tomn\":\"141U\",\" toms\":\"0N1B0R170Z241015120R1DSG\",\" tomu\":\"0U1J0V330Y0Q1B6O1D4H1N8H\",\" tomy\":\"1N5Y\",\" tomá\":\"0O140P0B0SH20U070Y0I\",\" tomą\":\"1B3E\",\" tomů\":\"0U0S\",\" ton \":\"0L460N02\",\" too\":\"0M260R051C1D1P0R\",\" too \":\"0M1V\",\" took\":\"0M12\",\" toom\":\"1C2D\",\" topl\":\"0V0K1F1A\",\" torn\":\"0D030O050P0Z0Q151003110A1403\",\" tosi\":\"113D\",\" tot \":\"01210N090R230T07152S\",\" toto\":\"0D0H0T050U0W0Y50\",\" tott\":\"112L\",\" tou\":\"0LCB0M0C0N020R020U091103\",\" touj\":\"0L3R\",\" tour\":\"0L1C0M050N04\",\" tous\":\"0L4C\",\" tout\":\"0LC2\",\" tová\":\"0U051415\",\" tow\":\"0M0J1A06\",\" toț\":\"151R\",\" toți\":\"1529\",\" trab\":\"0D0U0O490P3F1O02\",\" trai\":\"0L340M0L0N030O080P050R031O04\",\" tras\":\"0M020O0M0Q0S100415091A021O02\",\" trat\":\"0N050O150P0F0Q0C150F\",\" trau\":\"0N0T1B1N\",\" trav\":\"0L5M0M0C0O080P040V080Z0815051O08\",\" tre \":\"0Q160Z231018121J1O4Y\",\" treb\":\"030C0V8U0Y0I15CX\",\" trec\":\"0O020Q020T03152K\",\" tred\":\"03030Q020T030Z0L10031206\",\" trei\":\"0L030N050O0A0P040R0R152Z\",\" tres\":\"0O1U0T150U090Y0B\",\" tri \":\"0V1V0Y2B1O1G\",\" trie\":\"0M0V0R020Y0J\",\" trin\":\"0N100P0A1O1E\",\" tris\":\"03020L0G0O0E0P0C0Q090T0B0Z05120B150C1B2M1O03\",\" tro \":\"0Z0D100B120E1O22\",\" troc\":\"0N050P080U1A0Y1O1A1F\",\" trod\":\"0Z03100S120O\",\" troe\":\"0R020Z0P\",\" troi\":\"0L240P030T051O04\",\" trop\":\"0L340N030O040P030Q1Y1O02\",\" tror\":\"0Z21101R122C\",\" trot\":\"010K0L030N0B0R0B10071O02\",\" trou\":\"0L4M0M0F0P090R0I0U03\",\" trov\":\"0P020Q2G1O2Z\",\" trup\":\"15051B1Q\",\" try\":\"0M110Z061006120H13061B0E\",\" try \":\"0M0T\",\" tryi\":\"0M0M\",\" trz\":\"1A2G\",\" trzy\":\"1A2G\",\" trá\":\"0O080P060U0E0Y10\",\" tráv\":\"0U0F0Y15\",\" trä\":\"0N0K101V\",\" träd\":\"100M\",\" träf\":\"1014\",\" træ\":\"0Z1R1206\",\" træ \":\"0Z0F\",\" træe\":\"0Z0J\",\" træt\":\"0Z0L\",\" trè\":\"0L3J\",\" très\":\"0L5X\",\" trê\":\"0P1A\",\" três\":\"0P1M\",\" trí\":\"0S1N\",\" trí \":\"0S3S\",\" trö\":\"100Q\",\" tröt\":\"100L\",\" trø\":\"0Z02120R\",\" trøt\":\"120D\",\" trú\":\"131D\",\" tră\":\"151J\",\" trăi\":\"151T\",\" trī\":\"0T021D0X\",\" trīs\":\"1D2A\",\" tsa\":\"030B0D0C\",\" tsaa\":\"0D0G\",\" tse\":\"03180S0O\",\" tsi\":\"03040D08\",\" tt\":\"037Y\",\" tta\":\"031R\",\" tu'\":\"1Q5W\",\" tu'l\":\"1Q8Q\",\" tua\":\"0B170P0N0Q1D0S0Q0T3C1B02\",\" tua \":\"0B1C0P0P0Q1D0T26\",\" tuam\":\"0T0Z\",\" tubi\":\"042M0D0O\",\" tud\":\"030L0P2314FT\",\" tud \":\"141P\",\" tudj\":\"142I\",\" tudn\":\"142M\",\" tudo\":\"0P2N147O\",\" tuds\":\"141A\",\" tudt\":\"142F\",\" tue\":\"0L0B0N040Q0P1102\",\" tug\":\"030R041G0B040N0210021C0R1Q1U\",\" tuge\":\"03020N041C1S\",\" tuh\":\"0B0M0U0E110S1F07\",\" tui\":\"010N0R0E0S1N0T141107\",\" tui \":\"0T0V\",\" tuir\":\"0S3A\",\" tuis\":\"010G0T0C\",\" tuj\":\"041G0B0F1O0K1Q1P\",\" tule\":\"03050T0411BI1C6R\",\" tull\":\"0306114J1209\",\" tuma\":\"03070D1G\",\" tumi\":\"0D0K\",\" tumu\":\"0D0I0T06\",\" tun \":\"0N2H\",\" tund\":\"1C3B\",\" tung\":\"0B0L0D0W0Z071005110212071328\",\" tunn\":\"0L020Z021003114I1C42\",\" tunt\":\"114D\",\" tuo\":\"0Q2B0T0Z11931B1U\",\" tuo \":\"0Q1I0T0O116S1B26\",\" tuoi\":\"0Q0U\",\" tuoj\":\"1B1E\",\" tuol\":\"112E\",\" tuom\":\"115P1B04\",\" tuon\":\"112V\",\" tuot\":\"113J\",\" tur \":\"0Z0F100712051D3G\",\" tura\":\"032504DR\",\" turn\":\"0M0V0O040Q0315081O0C\",\" turp\":\"0T0411071D2O\",\" turu\":\"0B1D0D031F02\",\" turė\":\"1B4L\",\" tus \":\"0O18\",\" tusa\":\"03070S32\",\" tusi\":\"03050Z0E1103\",\" tuss\":\"010P030E0R0O\",\" tuta\":\"0T021A1F1F0A1O1Q\",\" tute\":\"1A021O1W\",\" tutt\":\"030G0Q691108130Y1F0A\",\" tuu\":\"0T30110S\",\" tuum\":\"0T1S1103\",\" tuus\":\"0T1H\",\" tuv\":\"04150O151F031P0X\",\" tuw\":\"030C0D06\",\" tuz\":\"0307043K1F06\",\" tuzo\":\"0464\",\" tvi\":\"0Z0A100B120D1B08\",\" tvo\":\"0U1A0V2G0Y4C130E1B04\",\" tvoj\":\"0U1K0V5T0Y51\",\" tvä\":\"100G\",\" två\":\"101L\",\" två \":\"101I\",\" tvů\":\"0U10\",\" tvůj\":\"0U1D\",\" twa\":\"030R044T0R041A0E\",\" twe\":\"011P030A042O0M050R24\",\" twee\":\"011T0R2V\",\" two\":\"0M0S1A2D\",\" two \":\"0M12\",\" twoj\":\"1A2W\",\" ty \":\"0U270Y1W1A0X\",\" tyc\":\"103J1A0C\",\" tyck\":\"103K\",\" tyd\":\"011L0Z03100512061A08\",\" tyd \":\"011A\",\" tyk\":\"0Z06111R\",\" tykk\":\"0Z021145\",\" tyl\":\"110E1A2F1B0K\",\" tylk\":\"1A3A\",\" tym\":\"1A34\",\" tym \":\"1A4U\",\" tys\":\"0U020Z0Y100T120V1A09\",\" tysk\":\"0Z16100G120V\",\" tyt\":\"0U0D111W\",\" tytt\":\"113A\",\" tyv\":\"0Z0E1005\",\" tyve\":\"0Z0F\",\" työ\":\"112Z\",\" tz\":\"033C\",\" tze\":\"033G\",\" tzem\":\"0363\",\" tá\":\"0P060SP20U080Y1M1303141E\",\" tá \":\"0SQ20Y0R\",\" tái\":\"0S4H\",\" táim\":\"0SG7\",\" tát\":\"0U070Y21\",\" táto\":\"0Y2J\",\" tâ\":\"0L03150V\",\" tã\":\"0P1K\",\" tão\":\"0P1W\",\" tão \":\"0P2E\",\" tä\":\"0N04101B11DN1C4J1N1S\",\" täh\":\"111J1C12\",\" tähe\":\"1C1O\",\" täi\":\"1C1B\",\" täie\":\"1C1H\",\" täl\":\"10021112\",\" täll\":\"112I\",\" täm\":\"118H\",\" tämä\":\"11IE\",\" tän\":\"101F113M1C2Z\",\" täna\":\"1C6E\",\" tänk\":\"1015\",\" tänä\":\"116Y\",\" täs\":\"112X1N0G\",\" täss\":\"114J\",\" täst\":\"112A\",\" tät\":\"0N05111R\",\" tätä\":\"1144\",\" täy\":\"114M\",\" täyt\":\"117H\",\" täz\":\"1N21\",\" täze\":\"1N2T\",\" tää\":\"1130\",\" tääl\":\"116Q\",\" tå\":\"0Z06100O1207\",\" tåg\":\"0Z03100K\",\" tål\":\"0Z0410061209\",\" tæ\":\"0Z0J130B\",\" tæn\":\"0Z12\",\" tænk\":\"0Z0Z\",\" tè\":\"0Q06\",\" té\":\"0L0S0O0A0P030S0N0U12141U\",\" té \":\"0O0A0U0S\",\" tég\":\"141A\",\" tége\":\"1419\",\" tél\":\"0L17140F\",\" télé\":\"0L20\",\" tény\":\"1415\",\" této\":\"0U0T\",\" tê\":\"0L0F0P12\",\" têm\":\"0P10\",\" têm \":\"0P19\",\" têt\":\"0L0P\",\" tí\":\"0O0E0P070U0T0Y07132A140C\",\" tím\":\"0O030P040U1B132R\",\" tím \":\"0U1P\",\" tíma\":\"134U\",\" tó\":\"0O020P04131M1404\",\" tók\":\"131R\",\" tók \":\"1320\",\" tô\":\"0L0C\",\" tõ\":\"1C34\",\" tõe\":\"1C1K\",\" tões\":\"1C1V\",\" tõs\":\"1C0Q\",\" tõsi\":\"1C1O\",\" tõu\":\"1C0L\",\" tõus\":\"1C1H\",\" tö\":\"0N031004110W130X143P1C2Y1F021N0S\",\" töb\":\"143I\",\" több\":\"143Q\",\" töi\":\"111B\",\" töl\":\"1316140W1N0O\",\" tör\":\"1003110714471F02\",\" tört\":\"1432\",\" töö\":\"1C3N\",\" tööd\":\"1C1S\",\" tööt\":\"1C48\",\" tø\":\"0Z0C1206\",\" tøj\":\"0Z0A\",\" tør\":\"0Z0D120B\",\" tú\":\"0O130S9M0Y1D1412\",\" tú \":\"0O1M0SB60Y0V\",\" túl\":\"142N\",\" túl \":\"1422\",\" tút\":\"0Y1F\",\" túto\":\"0Y1S\",\" tü\":\"0N09140F1C2E1F1S1N0M\",\" tüd\":\"14021C16\",\" tüdr\":\"1C2X\",\" tüm\":\"1F0Y\",\" tüm \":\"1F18\",\" tür\":\"0N0K140C1C0L1F0U1N0S\",\" tý\":\"0U0R0Y1B1308\",\" týd\":\"0U0Y\",\" týde\":\"0U0W\",\" tým\":\"0U080Y0X\",\" tým \":\"0U050Y11\",\" týž\":\"0Y0X\",\" týžd\":\"0Y15\",\" tā\":\"1D5Z\",\" tā \":\"1D4A\",\" tād\":\"1D1E\",\" tās\":\"1D0Z\",\" tās \":\"1D2K\",\" tă\":\"151Q\",\" tău\":\"151T\",\" tău \":\"152B\",\" tą\":\"1A081B3I\",\" tą \":\"1A0B1B5M\",\" tē\":\"0T0F1D2E\",\" tē \":\"0T0R\",\" tēj\":\"1D11\",\" tēv\":\"1D1P\",\" tēvs\":\"1D2T\",\" tė\":\"1B1K\",\" tėv\":\"1B2C\",\" tėva\":\"1B3D\",\" tę\":\"1A0W1B08\",\" tě\":\"0U2R\",\" tě \":\"0U2N\",\" těž\":\"0U0Z\",\" těžk\":\"0U18\",\" tı\":\"1F0F\",\" tő\":\"140M\",\" től\":\"141J\",\" tőle\":\"141H\",\" tř\":\"0U1P\",\" tře\":\"0U0Q\",\" tři\":\"0U1O\",\" tři \":\"0U1R\",\" tū\":\"0T021B0B\",\" tű\":\"140U\",\" tűn\":\"141I\",\" tűni\":\"140X\",\" tḥ\":\"031H\",\" ua\":\"0B0N0S3N0Z021205\",\" uai\":\"0S43\",\" uaim\":\"0S72\",\" uain\":\"0S2K\",\" uair\":\"0S4I\",\" uan\":\"0B1A0Z02120A\",\" uang\":\"0B2J\",\" ubi\":\"0302043G0O020T620V0J1A06\",\" ubi \":\"0T69\",\" ubu\":\"030404B1\",\" ubu \":\"04B6\",\" ubw\":\"0475\",\" ubwa\":\"043C\",\" ubwi\":\"0459\",\" ubwo\":\"0435\",\" uc\":\"030D0Q0U0U0515081A1V1F06\",\" ucc\":\"03050Q0W\",\" ucci\":\"03040Q0R\",\" ucz\":\"1A27\",\" uczy\":\"1A1O\",\" ud \":\"0Z2L\",\" ude\":\"03090U020Z1O1A05\",\" uden\":\"0Z1O\",\" udl\":\"03040Z0A\",\" uds\":\"03030Z0J\",\" udě\":\"0U5M\",\" uděl\":\"0U7P\",\" ue\":\"1203\",\" ufi\":\"03060436\",\" ufis\":\"045L\",\" uge\":\"030E0Z0T\",\" uge \":\"0Z0K\",\" ugu\":\"030E041R0Q03\",\" ugy\":\"141S\",\" ugya\":\"1416\",\" uh\":\"030F040L0N090U050V090Z0211051202\",\" ui\":\"011I0R1V0S35110J151V\",\" uil\":\"0S2J\",\" uile\":\"0S9P\",\" uis\":\"0S0T\",\" uisc\":\"0S3A\",\" uit\":\"013H0R6X152S\",\" uit \":\"01160R60150F\",\" uita\":\"1524\",\" uitg\":\"01100R1A\",\" uits\":\"010K0R0I\",\" uj\":\"03090B060U040V0A0Y07110314031A031C0R\",\" uju\":\"0V061C0Y\",\" uke\":\"030B120V\",\" uke \":\"120I\",\" uko\":\"045O0U031A03\",\" uko \":\"047L\",\" uks\":\"03021C0V\",\" ukse\":\"1C1V\",\" uku\":\"042R0B050V0N\",\" ukus\":\"0V1L\",\" ula\":\"032Z0B0N0D070V041F0B1N2S\",\" ula \":\"032W\",\" ulac\":\"033F\",\" ulag\":\"1N1D\",\" ulan\":\"0B150D071N2A\",\" uli\":\"0D080T030U0E0V080Y0A12061A0D\",\" ulk\":\"1116\",\" ulko\":\"112W\",\" ulo\":\"0D050V030Z0311111O06\",\" ulos\":\"112E\",\" uly\":\"0Z0812091N18\",\" uly \":\"1N1L\",\" um \":\"0N380PFJ136T\",\" uma\":\"031Q0D0T0N020PBT0Q0715091A071F0F\",\" uma \":\"0PEE\",\" umag\":\"03020D0K\",\" umah\":\"032U\",\" umal\":\"0D0J1F02\",\" umi\":\"030I0D0I0Q030V051A10\",\" umie\":\"1A1G\",\" umii\":\"0D0H\",\" umo\":\"0Q020V091A021P1A\",\" umo \":\"1P1I\",\" umu\":\"030A04QN0B0N0D0F0Z0412091F11\",\" umub\":\"0435\",\" umud\":\"048K1F03\",\" umug\":\"047X\",\" umuh\":\"044X\",\" umuk\":\"044Q\",\" umun\":\"04IP\",\" umur\":\"030304470B0J1F0F\",\" umus\":\"03020441\",\" umut\":\"0302045Y1F09\",\" umw\":\"04CK0N03\",\" umwa\":\"030204GU\",\" umy\":\"0U070Y0B1A081N1D\",\" umyt\":\"1N1S\",\" umí\":\"0U11\",\" umí \":\"0U0S\",\" un \":\"0LGW0OHN0QGS15F11DBT\",\" un'\":\"0Q1Z\",\" un'a\":\"0Q11\",\" una \":\"0D040OGB0QB70T0N150Z\",\" unan\":\"0D0F0N04\",\" unav\":\"0U0T0Y1F\",\" und \":\"0NGJ\",\" unde\":\"0M1J0T0Q0Z1W101C121B154N\",\" undi\":\"0T06132N\",\" unds\":\"0Z0K\",\" une\":\"030E0LD50M040N080U02110J1515\",\" une \":\"0LK3\",\" ung \":\"0Z0D100B1209130K\",\" unit\":\"0M080Q0X150F\",\" unn\":\"03040N02120T1309\",\" unns\":\"120I\",\" uno\":\"0O1V0Q1D0T081118140F1504\",\" uno \":\"0O1R0Q1E0T09\",\" unoh\":\"1131\",\" uns\":\"0L020M030N4E0P08\",\" uns \":\"0L040N4I0P0A\",\" unse\":\"0N2M\",\" unt\":\"0B7D0M0H0N2711071403\",\" unte\":\"0N3M\",\" unti\":\"0M0M\",\" untu\":\"0BDL\",\" unu\":\"0T0V0V08151O1C0Z1F0Y1N0D1O2V\",\" unu \":\"15071O3G\",\" unua\":\"1O1B\",\" unus\":\"0M020T0E1C2G\",\" unut\":\"0V0I1F1B\",\" uo\":\"0Q0L0V0F1B08\",\" uom\":\"0Q0P\",\" up \":\"0M2L\",\" upp\":\"104J11031340\",\" upp \":\"102C133L\",\" uppt\":\"100N1317\",\" ur \":\"03KW0Z09100M\",\" urab\":\"0459\",\" urad\":\"0V6X\",\" urak\":\"045F\",\" uram\":\"042S1405\",\" uran\":\"030404351104\",\" uras\":\"049I\",\" uraz\":\"047L0U040Y0A\",\" urb\":\"0T251O0R\",\" urbe\":\"0T1H1O06\",\" urbo\":\"1O1A\",\" uri\":\"0303047Y0D03\",\" uri \":\"048E0D06\",\" urm\":\"0302151L\",\" uro\":\"04150Y6G11021A0O\",\" urob\":\"0Y7X\",\" urs\":\"03020N030P030T08100H15051O02\",\" ursä\":\"100E\",\" urug\":\"04530Q0G1F03\",\" urč\":\"0U0Q0Y0V\",\" urči\":\"0U0Y0Y0X\",\" us \":\"0M221P2B\",\" usc\":\"0Q0R\",\" use\":\"03250M1F0P03111P\",\" use \":\"0M0M0P02\",\" used\":\"0M14\",\" usei\":\"113M\",\" ush\":\"0450\",\" usha\":\"0474\",\" usi\":\"030E0B0B0L020M040Q021A0C1P0V\",\" usi \":\"0Q021P0Z\",\" usk\":\"03020V0D0Z06112P1C0I\",\" usko\":\"0V0W1169\",\" usp\":\"0U060V120Y081A04\",\" uspe\":\"0V2B\",\" usq\":\"0T0O\",\" ust\":\"030Y0O1Y0U030V0D0Y0D1A0C\",\" uste\":\"0O2K\",\" usu\":\"030E0M0C0O030T080V031A031C0U\",\" ut \":\"0T65102V123F1P0F\",\" uta\":\"04320B0C0D05100Z1207130C141I1F09\",\" utan\":\"0D06100Z130Q1F0D\",\" uten\":\"0T03121N\",\" utf\":\"10061209\",\" uti\":\"03020L0T0O080P0A0Q0M0T0Z0V080Y0E0Z02150D1O08\",\" util\":\"0L1E0O0A0P0D0Q0M0T0G0Z02150H1O0H\",\" utol\":\"140Z\",\" utom\":\"100F\",\" utr\":\"0T0V0U070Z07100512091A05\",\" uts\":\"1009120M\",\" utt\":\"100D120A\",\" utv\":\"1004120I\",\" utvi\":\"120F\",\" utá\":\"142D\",\" után\":\"141U\",\" uu\":\"0D020R0C111U1C1P\",\" uud\":\"0Z02111Q\",\" uude\":\"1146\",\" uue\":\"1C0Y\",\" uur\":\"0R1A\",\" uur \":\"0R1N\",\" uv\":\"040R0T020U0T0V1Q0Y0X1202\",\" uve\":\"0V1X0Y0G0Z03\",\" uvek\":\"0V4H\",\" uvi\":\"0U0I0Y10\",\" uvid\":\"0U0P0Y18\",\" uw\":\"0308041L0R0K1A1C\",\" uw \":\"0R26\",\" uwa\":\"04191A19\",\" uważ\":\"1A1H\",\" uwo\":\"041Z1A02\",\" uwo \":\"043C\",\" ux\":\"03110T0Y\",\" uxo\":\"0T1Q\",\" uxor\":\"0T1U\",\" uy\":\"030H043D1F2P\",\" uyu\":\"048R1F14\",\" uyu \":\"04EF\",\" uz \":\"0V091D7W\",\" uza\":\"030604190U030V031A021F0Z1N0K1O0E\",\" uzm\":\"0V081D1G1F04\",\" uzma\":\"1D2K1F06\",\" uzo\":\"042V1O02\",\" uzs\":\"1D0U\",\" uzt\":\"1D18\",\" uzu\":\"03021F1C1O03\",\" uzun\":\"1F1T\",\" uzv\":\"1D11\",\" uzva\":\"1D1W\",\" uç\":\"1F0L1N0D\",\" uč\":\"03090U1L0V1M0Y2C\",\" uči\":\"0U1R0V1D0Y1U\",\" učit\":\"0U220V1B0Y1M\",\" učí\":\"0U0N0Y1S\",\" učím\":\"0U0B0Y16\",\" uğ\":\"1F0I\",\" už\":\"0U370V0D0Y2O1B61\",\" už \":\"0U4X0Y4D1B39\",\" užd\":\"1B16\",\" užm\":\"1B16\",\" užmi\":\"1B1V\",\" užs\":\"1B1W\",\" užsi\":\"1B3M\",\" uș\":\"1511\",\" uɣ\":\"032N\",\" uɣe\":\"031Z\",\" v \":\"0U7J0YAC\",\" va \":\"0L250O1N0Q3Y1002156E1B081P0Y\",\" vaa\":\"0R0Z112R1C21\",\" vaak\":\"0R131103\",\" vaan\":\"112G\",\" vaat\":\"0R02111W1C3S\",\" vab\":\"1B041C2U1Q0J\",\" vaba\":\"1C6U\",\" vac\":\"0L0K0M050O0P0P050Q1H0T0O0Z04100X140O150I\",\" vaca\":\"0L0K0M050O0J0P040Q1F0T05150J\",\" vack\":\"100V\",\" vad \":\"106W\",\" vade\":\"0R1Q0T06\",\" vado\":\"0Q3K140A1B0E\",\" vagy\":\"14EF1B04\",\" vah\":\"110V1C1G1F02\",\" vahe\":\"1C3B\",\" vai\":\"0L1V0O040P3B0Q3K119B1B4T1C0U1DG0\",\" vai \":\"0P400Q3M112V1DQF\",\" vaik\":\"117W1B6N\",\" vain\":\"0L0C118A\",\" vair\":\"1B1D1D7V\",\" vais\":\"0L2U0O050P0411021B16\",\" vaj\":\"0U040Y0D1102140D1C2C1D4A1Q2T\",\" vaj \":\"1Q4T\",\" vaja\":\"14021C5F1DAK\",\" vak\":\"0R0D100A110S120P130J140B1B2U1D1R1F0E\",\" vaka\":\"0R0B1119130G1B5T1D4C\",\" vakk\":\"120F\",\" vala\":\"0L031108146Z1B2Q\",\" vald\":\"0T2S1006130H1B0C\",\" valg\":\"0Z0J120F1B4X1C1A\",\" valm\":\"113G1C29\",\" valo\":\"0O090P070Q03111M150B1B021D9L1O0M\",\" vals\":\"0R051B0P1D2Y\",\" való\":\"142A\",\" vamo\":\"0O0W0P1M\",\" vana\":\"010P0R0R10021C3O1O02\",\" vand\":\"011L0R2C0Z1S100213261B2R\",\" vane\":\"0Z041C2U1O03\",\" vanh\":\"116E\",\" vanl\":\"100A120O\",\" vann\":\"0Q3F0R051007110A1219130H1426\",\" vans\":\"0Z0A1002120W\",\" vant\":\"0L030P030Q030Z05120E130L1O02\",\" var \":\"0ZB610BJ12A613GU1D711F9E\",\" vara\":\"0P030V06103C112V150H1C1V1D2O1F05\",\" vard\":\"10041B231F2Q\",\" varf\":\"102I\",\" varj\":\"100V110B\",\" varm\":\"0Z0Q100E114F120O1F081O0X\",\" varu\":\"11081D2Y\",\" varē\":\"1D6G\",\" vas \":\"0L0O0O110T030V2E\",\" vask\":\"0Z0P1102120G\",\" vast\":\"0L030P020R0Q0T06116X14041C3Y1O07\",\" vatt\":\"100U\",\" vav\":\"1Q58\",\" vay\":\"0O0L1Q67\",\" vay'\":\"1QAB\",\" vaš\":\"0U150V0D0Y27\",\" vaše\":\"0U0Z0V090Y15\",\" važ\":\"0V0L1B0T\",\" važi\":\"1B1O\",\" ve \":\"0O0G0Q050U2V1F8F\",\" vec\":\"0O160Q0N0R050T060Y13100L15111D1P\",\" vece\":\"0O16\",\" veck\":\"100L\",\" vecā\":\"1D2A\",\" ved \":\"0Z61121B\",\" vede\":\"0Q200U080Y1Z110P151K\",\" vedi\":\"0Q0A0Y1X\",\" vee\":\"010S0P020R3S1C3F\",\" veel\":\"010N0R4X1C6E\",\" vegn\":\"132F\",\" vei \":\"1109120D151Q\",\" veid\":\"1B111D2F\",\" veie\":\"120O\",\" veit\":\"110F133H\",\" vej\":\"0P0J0U080Z1Q1B02\",\" vej \":\"0Z0M\",\" veje\":\"0Z0Q1F02\",\" vejr\":\"0Z0Q\",\" vek\":\"0V031103120M13071O09\",\" vekk\":\"120F\",\" vel \":\"0T0F0Z07120F1343\",\" vela\":\"0O040P040T0411021P2M\",\" veld\":\"0R03123H130F\",\" vele\":\"0Q020R0B1447\",\" velh\":\"0P0Z\",\" veli\":\"0T110U0P0V3N110A\",\" velk\":\"0U1Y0Z07110D1208130T\",\" velm\":\"0U3A\",\" vem\":\"0O030P0O0U02101X1P4B1Q0D\",\" vem \":\"0P0S0U03101Q\",\" vemo\":\"0O050P031P4Z\",\" ven \":\"0O0D0U0J0Z0T\",\" vend\":\"0L120O140P0U0Q0M0T0L0Z0B140G1C1S1O0X\",\" veni\":\"0L180O0Y0Q0Y0T4H0Z07153G1O1Q\",\" venl\":\"0Z0U\",\" venn\":\"0Q080Z1012241411\",\" veno\":\"0L021O19\",\" vent\":\"0L0P0O0V0P0D0Q0B0R030T150Z1812131O0I\",\" venu\":\"0L1A0Q0S0T0611021O0F\",\" veo\":\"0O0F0V1R\",\" veom\":\"0V4H\",\" ver \":\"0O1U0P1L0R0C0T041F0Q\",\" vera\":\"010T0N0L0O0M0Q160R1A0T0A137J1O0V\",\" verb\":\"011D0L040N1N0O030P040Q020R1N0T1V110415051O02\",\" vere\":\"010L0N0F0O020P030R0L0T0F110D14051F171O28\",\" verg\":\"012S0L020N270O050P040Q060R2E1B091F051Q0D\",\" verh\":\"0N0X0R141105\",\" verk\":\"011Y0N0Y0R221027110H1208131Q1B151O0P\",\" verl\":\"011U0N330O0C0R2K\",\" verm\":\"010I0N0T0O050P0H0R0Y1F2C\",\" vero\":\"0Q3Q0R0O0T0P0V12110E1O0W\",\" verv\":\"0R0U\",\" verw\":\"01130N100R1D\",\" very\":\"0M3R\",\" verð\":\"13B5\",\" vese\":\"0U0315071D5H\",\" vesz\":\"1429\",\" vet \":\"102S123F\",\" veta\":\"0V080Y0I100K1O02\",\" vett\":\"1002111F142S1C1A\",\" veu\":\"0L57\",\" veut\":\"0L1U\",\" veux\":\"0L5T\",\" vez\":\"0O2I0P2D0U0C0V0E0Y0M1419150E\",\" vez \":\"0O3B0P1X\",\" veze\":\"0P130V0A1419\",\" već\":\"0V1O\",\" već \":\"0V3C\",\" več\":\"0U190V0R0Y1W\",\" veče\":\"0U1K0V1H0Y1N\",\" veľ\":\"0YAA\",\" veľa\":\"0Y3P\",\" veľk\":\"0Y2M\",\" veľm\":\"0Y73\",\" vi \":\"0O0K0P0M0Q2H0T050V0B0Z7W109W12971OGM\",\" via \":\"0P020Q0I0R030T0T0Z021O4D\",\" viac\":\"0Y2I\",\" viag\":\"0P0H0Q10\",\" viaj\":\"0O100P0K1O1Y\",\" vian\":\"0L0E0Y0C1O30\",\" viaț\":\"1524\",\" vich\":\"1Q57\",\" vici\":\"0P020Q100T0L\",\" vid \":\"1013\",\" vida\":\"0O2E0P2310051O121Q1P\",\" vidi\":\"0Q050T260V340Y131O351Q0R\",\" vids\":\"0Z0W\",\" vidí\":\"0U0X0Y26\",\" vidě\":\"0U3B\",\" vie \":\"0L2T0Y1Z110A\",\" viej\":\"0O0T\",\" viel\":\"0N6C0R0I115Z\",\" viem\":\"0Y301103\",\" vien\":\"03020L2U0O1F0Q0S11061B8W1DI1\",\" vieš\":\"0Y1B1B0Q\",\" vif\":\"1P17\",\" vifi\":\"1P1F\",\" vig\":\"0L030O040P030Q030T0P0Z0G140P1C0H1O031QAX\",\" vigh\":\"1QHE\",\" vigt\":\"0Z0K\",\" vih\":\"112714091C211Q43\",\" viha\":\"113D14081C131Q3R\",\" vihk\":\"11041C26\",\" vihm\":\"1C1V\",\" vii\":\"1158151L1C2D\",\" viik\":\"1133\",\" viim\":\"114Q1C1A\",\" viis\":\"11221C22\",\" vij\":\"0R0Y1Q6E\",\" vija\":\"0R081Q61\",\" vijf\":\"0R0Z\",\" vikt\":\"100K120W1O04\",\" vil \":\"0Z75127G1325\",\" vile\":\"0T021Q4P\",\" vilj\":\"0Z081011110A1207131O\",\" vilk\":\"101S110A1B0O\",\" vilo\":\"1PCL1Q2R\",\" vilt\":\"132X1B0H\",\" vilá\":\"141X\",\" vim\":\"0O040P081Q3R\",\" vin \":\"0L0N0Z081009130N150Q1O53\",\" vind\":\"010P0P090R2U0T030Z181006120M130F150A\",\" vine\":\"0O030U0215151QEC\",\" vinn\":\"010I100A120C134Q1408\",\" vino\":\"0O0V0Q0J0T04150Y1O0F1Q1N\",\" vins\":\"0Q02134X\",\" vint\":\"0L050P0A0Q090Z0F1009120D1O0B\",\" vip\":\"1Q6U\",\" vipa\":\"1Q7F\",\" viq\":\"1Q7T\",\" viqu\":\"1Q5X\",\" vir \":\"01AX0P0N0T0X\",\" vira\":\"0P09110B1O021Q5S\",\" viri\":\"0P020T0Z11041O1B1Q1C\",\" virk\":\"0Z1I110E121O131L\",\" viro\":\"0P030T0C11041O1E\",\" virð\":\"131Z\",\" vis \":\"0L0C0R0C0T160Z061002120915071B29\",\" vise\":\"0L020Z09120D14151509\",\" visi\":\"0L180M0Q0O0Y0P0W0Q160T0C1B6F1D6C1Q0S\",\" visk\":\"11021B54\",\" visn\":\"0T0U\",\" viso\":\"0Q020V0I1B1B1QAM\",\" viss\":\"0Q050R0C1013120Y131Y142T1D2Y\",\" vist\":\"0O1M0P0O0Q250Z0D1209\",\" visu\":\"0T0E15051B2M1D631Q1O\",\" visą\":\"1B2L\",\" vite\":\"0L18120P15051Q0D\",\" vitu\":\"0T03110H1Q52\",\" viu\":\"0P0K1103\",\" viu \":\"0P0P\",\" viv\":\"0L190O2I0P1B0Q1Q0T1Q1O271Q13\",\" vive\":\"0L0J0O130P130Q130T0Q\",\" vivi\":\"0O1C0P050Q060T0I1O0S\",\" vivo\":\"0L050O0K0P0B0Q0F0T051O2E1Q0G\",\" viz\":\"0P080Q02141515131B021O0X\",\" vizi\":\"0P0A0Q0215191B031O1C\",\" við\":\"13FD\",\" við \":\"13P4\",\" viņ\":\"1DPW\",\" viņa\":\"1DR2\",\" viņi\":\"1DCZ\",\" viņu\":\"1D90\",\" viņš\":\"1DOD\",\" viš\":\"0V261B09\",\" više\":\"0V5A\",\" vl\":\"010P0R0J0U1I0V080Y24\",\" vla\":\"0R0A0U1Y0V0A0Y34\",\" vlak\":\"0R050U190Y1J\",\" vlas\":\"0U1F0V080Y26\",\" vle\":\"010K0R0E0U02\",\" vli\":\"010H0R0R0U02\",\" vlie\":\"010I0R0X\",\" vo \":\"0Y29\",\" vob\":\"0T0X1P36\",\" vobi\":\"0T0Z1P0W\",\" vobo\":\"1P1G\",\" voc\":\"0L020O030PJY0Q0C0R020T2P150A\",\" voca\":\"0L030O020P020Q020T1W\",\" você\":\"0PNB\",\" vod\":\"0U130V0Y0Y2A\",\" vody\":\"0U0D0Y12\",\" voe\":\"011I0R20\",\" voel\":\"01130R1C\",\" vog\":\"0N040Q440R0D0Z021Q06\",\" vogl\":\"0Q46\",\" voi\":\"0L4Z0M060Q3S11BN1558\",\" voi \":\"0Q3U119M155U\",\" voin\":\"115L1505\",\" voir\":\"0L2S\",\" vois\":\"0L1C115W\",\" voit\":\"0L2Z115W\",\" voj\":\"0U060V050Y0I1O0W\",\" vok\":\"0Z0C120G1B0O1O07\",\" voks\":\"0Z0F120F\",\" vol \":\"010G0L080R0H1P0J\",\" vola\":\"0L060O0C0Q070T0K0U0D0Y0O1O5Y1P0L\",\" vole\":\"0L0N0Q320T0F0U030V1Y\",\" volg\":\"01180R1O\",\" voli\":\"0U030V4T1O1E\",\" voln\":\"0U0G1436\",\" volo\":\"0L0C0Q060T1V1O0E\",\" volt\":\"0P1Y0Q1T0R0214E1\",\" volu\":\"0L020M040O080P040Q090T1915061O0J\",\" volv\":\"0O1M0T06\",\" volá\":\"0U060Y0Y\",\" vom\":\"0L020N0M0Q0215101P1P\",\" von\":\"0L0H0N540P0B0R0M0U020Y0M120C1312141G1B06\",\" von \":\"0N8C1402\",\" vona\":\"13121414\",\" vond\":\"0R0T120B130H\",\" voo\":\"012Q0P050RAT1C0I\",\" voor\":\"012W0RE2\",\" vor \":\"0N3M0Z04151K\",\" vorb\":\"0N0K1576\",\" vore\":\"0N020Z1X1009\",\" vorr\":\"0Q1X\",\" vort\":\"0N070Z051O1Z\",\" voru\":\"0N02132X\",\" vos\":\"0L120O0P0P0E0Q320R020T111B0D\",\" vos \":\"0L1T0O0E0P0A0R020T121B0R\",\" vost\":\"0Q331O02\",\" vot\":\"0L330M040O060P060Q0D0T0215091P0F\",\" votr\":\"0L50\",\" vou\":\"0LH60P2Q\",\" vou \":\"0P3G\",\" voul\":\"0L3Z\",\" vous\":\"0LMI\",\" voy\":\"0L110O1O\",\" voy \":\"0O27\",\" voya\":\"0L1C\",\" voz\":\"0O090P090U030V0W\",\" voë\":\"011A\",\" voël\":\"011D\",\" vr\":\"012T0L1I0R2B0U150V3W0Y1J0Z041002156G\",\" vra\":\"01120L2J0R1V0U0G0V1C0Y0O\",\" vraa\":\"0R1H\",\" vrag\":\"0R0Z\",\" vrai\":\"0L4A\",\" vrat\":\"0V2Z\",\" vre\":\"010N0R0X0V2E0Y080Z091002159I\",\" vrea\":\"1573\",\" vree\":\"010G0R0Q\",\" vrei\":\"1524\",\" vrem\":\"0V5J151F\",\" vreo\":\"151M\",\" vri\":\"011Y0R3A\",\" vrie\":\"01220R37\",\" vrij\":\"0R1A\",\" vro\":\"011D0R2X\",\" vroe\":\"010I0R24\",\" vrou\":\"010Y0R1R\",\" vry\":\"011I\",\" vryh\":\"010X\",\" vrá\":\"0U180Y1M\",\" vrát\":\"0U1O0Y1T\",\" vs\":\"0U0J0Y0Q\",\" vst\":\"0U0T0Y19\",\" vt\":\"0U050Y0P\",\" vu \":\"0L1B\",\" vue\":\"0L0J0O1D\",\" vuel\":\"0O1C\",\" vult\":\"0T1P\",\" vuo\":\"0Q3A1147\",\" vuoi\":\"0Q13\",\" vuol\":\"0Q26\",\" vuot\":\"0Q05112Y\",\" vy\":\"010804820U6B0Y7I1B1Z\",\" vy'\":\"042K\",\" vya\":\"045Y\",\" vyan\":\"043C\",\" vyar\":\"042S\",\" vyh\":\"0U190Y1V\",\" vyhr\":\"0U0V0Y1B\",\" vyi\":\"0475\",\" vyin\":\"045Y\",\" vyiz\":\"043C\",\" vyk\":\"0U0B0Y0A1B0W\",\" vyo\":\"0490\",\" vyo \":\"042Z\",\" vyos\":\"04AA\",\" vyp\":\"0U2C0Y13\",\" vypa\":\"0U1V\",\" vyr\":\"0U0H0Y0V1B1R\",\" vyra\":\"0U041B1T\",\" vys\":\"0U1M0Y2H1B02\",\" vyso\":\"0U0G0Y10\",\" vysv\":\"0U0U0Y0N\",\" vyz\":\"0U0B0Y25\",\" vyze\":\"0Y24\",\" vz\":\"0U1J0Y0W\",\" vá\":\"0O020P0R0U390Y481446\",\" vál\":\"0U0J144D\",\" vála\":\"142B\",\" vált\":\"141C\",\" vám\":\"0U1L0Y2W\",\" vám \":\"0U1W0Y3L\",\" vár\":\"0P0H144I\",\" váro\":\"141U\",\" vás\":\"0U1M0Y3C140W\",\" vás \":\"0U280Y45\",\" vásá\":\"140Y\",\" váž\":\"0U0R0Y0E\",\" vážn\":\"0U0T0Y0F\",\" vâ\":\"1516\",\" vã\":\"0P0H\",\" vão\":\"0P0L\",\" vão \":\"0P0Q\",\" vä\":\"0Y0L106C11421C8S\",\" väg\":\"101D1C4K\",\" väg \":\"100J\",\" väga\":\"10021CAL\",\" väge\":\"100G\",\" väh\":\"112P1C0N\",\" vähe\":\"110Z1C1H\",\" vähä\":\"1152\",\" väi\":\"110H1C11\",\" väik\":\"1C22\",\" väl\":\"102F11221C3F\",\" väl \":\"100I\",\" väld\":\"101F\",\" väli\":\"113W1C1O\",\" välj\":\"10061C6K\",\" vän\":\"102V\",\" vän \":\"100I\",\" vänn\":\"100L\",\" vänt\":\"1017\",\" vär\":\"101A110E1C0H\",\" värl\":\"100M\",\" väs\":\"100D110N1C0U\",\" väsi\":\"1C22\",\" vää\":\"110Y1C0N\",\" väär\":\"11291C1L\",\" vå\":\"0Z06101A120W\",\" vår\":\"101E121W\",\" vår \":\"100N120T\",\" våre\":\"1004120M\",\" vårt\":\"100A120G\",\" væ\":\"0Z2S122M1314\",\" væg\":\"0Z0H\",\" vægg\":\"0Z0E\",\" væk\":\"0Z0Q\",\" væk \":\"0Z0Q\",\" vær\":\"0Z5X126J131F\",\" vær \":\"0Z0P120T\",\" værd\":\"0Z0F\",\" være\":\"0Z5Q1241\",\" væri\":\"132W\",\" vært\":\"0Z02121V\",\" vé\":\"0L1013071429\",\" vég\":\"0L021437\",\" vége\":\"1413\",\" vél\":\"0L0D130A141B\",\" véle\":\"141B\",\" vér\":\"0L0Y140H\",\" véri\":\"0L1M\",\" vê\":\"0L080P0H\",\" ví\":\"0O050P080U390Y0I130I140H\",\" víc\":\"0O030U1K\",\" víc \":\"0U16\",\" více\":\"0U10\",\" vím\":\"0U1H\",\" vím \":\"0U1S\",\" víz\":\"1414\",\" vó\":\"0P07\",\" vô\":\"0Y0M\",\" vôbe\":\"0Y0Z\",\" võ\":\"1C7Q\",\" või\":\"1C6A\",\" või \":\"1C5I\",\" võib\":\"1C2D\",\" võim\":\"1C34\",\" võit\":\"1C1O\",\" võr\":\"1C0Q\",\" võrd\":\"1C1O\",\" võt\":\"1C2M\",\" võta\":\"1C2N\",\" võtt\":\"1C1O\",\" vö\":\"0N05130G14061P0W\",\" vöd\":\"14021P11\",\" vý\":\"0U0Z0Y1I\",\" vā\":\"1D22\",\" vār\":\"1D25\",\" vārd\":\"1D53\",\" vă\":\"153K\",\" vă \":\"152T\",\" văz\":\"1526\",\" văzu\":\"152Q\",\" vč\":\"0U100Y1L\",\" vče\":\"0U1G0Y2A\",\" včer\":\"0U1W0Y2L\",\" vē\":\"0T071D5Z\",\" vēl\":\"1D5R\",\" vēl \":\"1D3Q\",\" vēla\":\"1D4L\",\" vēr\":\"0T041D0S\",\" vė\":\"1B1H\",\" vėl\":\"1B1W\",\" vėl \":\"1B1S\",\" vě\":\"0U42\",\" věc\":\"0U16\",\" věci\":\"0U0U\",\" věd\":\"0U2C\",\" vědě\":\"0U2U\",\" vět\":\"0U1C\",\" větš\":\"0U0T\",\" věř\":\"0U13\",\" věří\":\"0U0T\",\" vī\":\"0T0O1D17\",\" vīr\":\"1D0W\",\" vō\":\"0T05\",\" vš\":\"0U3G0Y5C\",\" vša\":\"0U020Y16\",\" však\":\"0U030Y1B\",\" vše\":\"0U3U0Y7P\",\" všec\":\"0U41\",\" všet\":\"0Y99\",\" vši\":\"0U1N0Y08\",\" všic\":\"0U25\",\" vů\":\"0U0O\",\" vůb\":\"0U0X\",\" vůbe\":\"0U1A\",\" vž\":\"0U0V0Y11\",\" vžd\":\"0U1F0Y1R\",\" vždy\":\"0U1Z0Y27\",\" w \":\"1AD1\",\" w'\":\"041H\",\" w'i\":\"0439\",\" w'im\":\"043C\",\" wa \":\"030I043O\",\" wa'\":\"1QD3\",\" wa' \":\"1Q9B\",\" wa'h\":\"1Q4H\",\" wa'l\":\"1Q4I\",\" waa\":\"015S0R8G\",\" waar\":\"015W0RAZ\",\" wab\":\"041O1Q12\",\" wac\":\"030K041D0N0A0R19\",\" wach\":\"0N0F0R1P\",\" wag\":\"010Q03050N0C0R021A031N661Q0Y\",\" wag \":\"010S\",\" wagt\":\"1N89\",\" wah\":\"03030N1K1A02\",\" wahr\":\"03020N28\",\" wai\":\"0M0Y\",\" wait\":\"0M1A\",\" wak\":\"03140B260D020M040R0E1A07\",\" wakt\":\"0B46\",\" wala\":\"030V0B0D0D4T\",\" walk\":\"0M131A04\",\" wanj\":\"04AV\",\" wann\":\"011R03070N130R1Z1A02\",\" wans\":\"034D\",\" want\":\"0M7S0R0C\",\" war \":\"030P0M0A0N8A0R03\",\" ware\":\"0N1H0R24\",\" waru\":\"0N2W1A05\",\" was \":\"019A0MFC0N9G0RC81A0F\",\" wasn\":\"0M1Z\",\" wat\":\"01BA03050M180RA4\",\" wat \":\"019V0RBX\",\" watc\":\"0M0V\",\" wate\":\"011J0M0T0R1P\",\" watt\":\"010Q\",\" waw\":\"030F04290B05\",\" wawe\":\"0441\",\" way\":\"032H0M17\",\" way \":\"0M1K\",\" wc\":\"11021A1X\",\" wcz\":\"1A1Z\",\" wczo\":\"1A1W\",\" we \":\"0M5M0R9Q1A0B1N9C\",\" we'\":\"0M1L\",\" we'r\":\"0M16\",\" wea\":\"0M0X\",\" wear\":\"0M0Q\",\" wee\":\"019P0L060M0X0Q040R660Z0515051A06\",\" week\":\"010G0L0A0M170Q040R160Z0615061A09\",\" weer\":\"01160R1J\",\" wees\":\"01540R0P\",\" weet\":\"01450R51\",\" weg\":\"010W03020N1A0R1V1A02\",\" weg \":\"010N0N160R1Q\",\" wei\":\"0M090N520R0H\",\" weit\":\"0N1L\",\" weiß\":\"0N3U\",\" wej\":\"1A091Q5Z\",\" wej \":\"1Q6K\",\" wel\":\"010J03090M150N210R2Q1N0Q\",\" wel \":\"03040R1Z\",\" welk\":\"0R1H\",\" well\":\"03020M1G0N030R03\",\" welt\":\"030D0N1U\",\" wen\":\"010K030704190M170N4S0R0D\",\" wenn\":\"0N6H\",\" wens\":\"010G0R0A\",\" went\":\"03020M1N\",\" wer\":\"013V03160M3B0N5M0R5Z1A02\",\" wer \":\"0N2J\",\" werd\":\"0N660R31\",\" were\":\"0M4I0R18\",\" werk\":\"013W0N080R41\",\" wes\":\"030404420M050N0A0R041A08\",\" wese\":\"04740N061A02\",\" wet\":\"010F0M020N0C0R1J\",\" wete\":\"0R1T\",\" wew\":\"042D\",\" wewe\":\"0447\",\" wha\":\"0M680P02\",\" what\":\"0M8C0P03\",\" whe\":\"0M4E\",\" when\":\"0M3E\",\" wher\":\"0M24\",\" whet\":\"0M0K\",\" whic\":\"0M0W\",\" whil\":\"0M0P\",\" who\":\"0M2Z\",\" who \":\"0M35\",\" why\":\"0M2E\",\" why \":\"0M38\",\" wid\":\"030N0M030N091A2I1Q0E\",\" widz\":\"1A3C\",\" wie\":\"011X0N6Z0R2N1A86\",\" wie \":\"01210N8W0R3B1A10\",\" wied\":\"0N2G1A2D\",\" wiel\":\"1A3O\",\" wiem\":\"1A2G\",\" wif\":\"0M0C\",\" wij\":\"0R281Q14\",\" wij \":\"0R1Y\",\" wika\":\"0D0U\",\" wil \":\"01730R68\",\" wild\":\"0M040N050R1K\",\" will\":\"0L030M4W0N480R1X1F02\",\" wilt\":\"0R13\",\" win \":\"03720M0M\",\" wir\":\"0NB31Q07\",\" wir \":\"0NB0\",\" wird\":\"0N58\",\" wirk\":\"0N22\",\" wis\":\"030T0M0O0N160R1G1A021Q1K\",\" wish\":\"0M0S\",\" wiss\":\"031G0N1X0R04\",\" wist\":\"0R1J\",\" wit\":\"0M6Q0N060R0G1A051Q17\",\" with\":\"0M8Z\",\" wiw\":\"0429\",\" wiwe\":\"0441\",\" wię\":\"1A2C\",\" więc\":\"1A2P\",\" wo \":\"0N1I\",\" woh\":\"0N1M\",\" wol\":\"0M020N1Y0R071A1B\",\" woll\":\"0N30\",\" wom\":\"0M0J0N02\",\" won\":\"010M0M240R0T\",\" won'\":\"0M1Q\",\" wond\":\"010L0M110R08\",\" woo\":\"01170M070R2Q\",\" woon\":\"010Y0R21\",\" woor\":\"0R1P\",\" wor\":\"01390M3Y0N1B0R41\",\" word\":\"013C0M0P0N0I0R58\",\" work\":\"0M2U\",\" worl\":\"0M0V\",\" worr\":\"0M0J\",\" wou\":\"010P0M3M0R0K\",\" wou \":\"010K0R0Q\",\" woul\":\"0M4U\",\" wr\":\"0M0R1A19\",\" wri\":\"0M0M\",\" writ\":\"0M0U\",\" wro\":\"0M0P1A06\",\" wron\":\"0M0P\",\" ws\":\"1A4E\",\" wsz\":\"1A4B\",\" wszy\":\"1A64\",\" wu\":\"0326040C0N181A061Q0K\",\" wur\":\"030B0N21\",\" wurd\":\"0N3A\",\" wy\":\"010B1A8Z\",\" wyda\":\"1A1G\",\" wyg\":\"1A1W\",\" wygl\":\"1A21\",\" wyj\":\"1A1F\",\" wyn\":\"010K1A0K\",\" wyn \":\"010L\",\" wyp\":\"1A1E\",\" wys\":\"1A28\",\" wz\":\"1A0X\",\" wä\":\"0N0S\",\" wär\":\"0N15\",\" wäre\":\"0N1N\",\" wê\":\"010A\",\" wêr\":\"010N\",\" wêre\":\"010P\",\" wö\":\"0N04\",\" wü\":\"0N0X\",\" wür\":\"0N1L\",\" würd\":\"0N2L\",\" wł\":\"1A1L\",\" wła\":\"1A1I\",\" właś\":\"1A1L\",\" x \":\"0T02\",\" xa\":\"03080P07\",\" xe\":\"030O\",\" xi\":\"030L0P02\",\" xí\":\"0P04\",\" y \":\"0L2J0O8M0T02\",\" y'\":\"0434\",\" y'a\":\"041V\",\" y'i\":\"0454\",\" y'u\":\"042D\",\" ya \":\"030404420B0Z0O2X1F0N1P1J\",\" yab\":\"04261F0B1Q06\",\" yac\":\"0426\",\" yag\":\"0307042H\",\" yak\":\"030504260B0Q1F2E\",\" yaki\":\"0B1E\",\" yakı\":\"1F1N\",\" yal\":\"030V1F1P\",\" yaln\":\"1F18\",\" yang\":\"0BRJ1F08\",\" yanj\":\"047A\",\" yanı\":\"1F18\",\" yap\":\"1FFB1Q10\",\" yapa\":\"1F5X\",\" yapm\":\"1F9L\",\" yapt\":\"1F4U\",\" yapı\":\"1F2N\",\" yar\":\"0302046C0M021F63\",\" yara\":\"043V1F1E\",\" yard\":\"0M021F4L\",\" yari\":\"045F\",\" yarı\":\"1F2H\",\" yat\":\"041V0D051F10\",\" yaw\":\"0304042V\",\" yawe\":\"03060453\",\" yaz\":\"1F23\",\" yağ\":\"1F1B\",\" yağm\":\"1F14\",\" yaş\":\"1F44\",\" yaşa\":\"1F2K\",\" yaşı\":\"1F26\",\" yd\":\"0Z021102\",\" yea\":\"0M1E\",\" year\":\"0M1V\",\" yeb\":\"032D\",\" yebɣ\":\"033W\",\" yed\":\"031L1F0V\",\" yedd\":\"0333\",\" yedi\":\"1F16\",\" yel\":\"038P0D030M051F021P0X\",\" yell\":\"03FU0M06\",\" yem\":\"031V1F33\",\" yeme\":\"1F3Z\",\" yemm\":\"032W\",\" yeni\":\"15071F2K\",\" yeq\":\"031M\",\" yeqq\":\"032W\",\" yer\":\"032I1F2W1Q06\",\" yeri\":\"1F16\",\" yern\":\"032T\",\" yes\":\"039H0M0P\",\" yess\":\"03DE\",\" yest\":\"03080M0R\",\" yesɛ\":\"032W\",\" yet\":\"035C0M0M1F1J\",\" yet \":\"0M0U\",\" yete\":\"1F1G\",\" yett\":\"03BA\",\" yeu\":\"0L0N\",\" yez\":\"032J\",\" yezm\":\"033C\",\" yf\":\"1315\",\" yfi\":\"131W\",\" yfir\":\"1340\",\" yh\":\"1135\",\" yhd\":\"1120\",\" yhde\":\"113W\",\" yht\":\"1136\",\" yhte\":\"112W\",\" yhtä\":\"114M\",\" yi\":\"03GH042T1F1B1QC8\",\" yid\":\"033M1Q0E\",\" yid-\":\"034X\",\" yim\":\"033J1Q1C\",\" yima\":\"033D\",\" yin\":\"030E1F0C1Q4W\",\" yis\":\"031W1Q1K\",\" yit\":\"0305041O1Q32\",\" yiw\":\"034M042H1Q0C\",\" yiwe\":\"039U044E\",\" yiy\":\"03021F0Y1Q0F\",\" yk\":\"111R130R\",\" ykk\":\"1319\",\" yks\":\"1134\",\" yksi\":\"117C\",\" yl\":\"112F1N0N\",\" yli\":\"111N\",\" ym\":\"111I\",\" ymm\":\"111W\",\" ymmä\":\"114M\",\" yn\":\"0Z0610031202130A1N1Z\",\" yna\":\"1N2O\",\" ynam\":\"1N14\",\" ynan\":\"1N2M\",\" ynd\":\"0Z0A1306\",\" yo \":\"042K0O4L\",\" yok \":\"1F3K\",\" yokt\":\"1F1D\",\" yol\":\"1F1I\",\" yos\":\"0422\",\" yose\":\"043C\",\" you \":\"0MM4\",\" you'\":\"0M3H\",\" youn\":\"0M0P\",\" your\":\"0M5I\",\" yp\":\"1B0A\",\" yr\":\"1004111A12021BBM\",\" yra\":\"1BHF\",\" yra \":\"1BRA\",\" yri\":\"112A\",\" yrit\":\"115J\",\" ys\":\"11171N0G\",\" yst\":\"1122\",\" ystä\":\"1150\",\" yt\":\"10061202\",\" yuf\":\"032K1P58\",\" yufa\":\"035M\",\" yufi\":\"03021P1G\",\" yufo\":\"1P12\",\" yufö\":\"1P3I\",\" yun\":\"03020B040D041F051P0X\",\" yuni\":\"1P0Z\",\" yz\":\"1N1D\",\" yzy\":\"1N1N\",\" yzyn\":\"1N1G\",\" yö\":\"110N1F0G\",\" yü\":\"1F3E\",\" yür\":\"1F10\",\" yürü\":\"1F1B\",\" yüz\":\"1F29\",\" yı\":\"1F2G\",\" yıl\":\"1F2B\",\" yıl \":\"1F1E\",\" z \":\"0U2Q0Y331A7I\",\" z'\":\"040C\",\" za \":\"0U3R0V600Y3T1A48\",\" zab\":\"0U170V1D0Y2P14021A18\",\" zabo\":\"0V1Q\",\" zabu\":\"0Y1Y\",\" zac\":\"0R060U0F0Y0I14021A2A\",\" zacz\":\"1A2I\",\" zad\":\"0U080V0L0Y081A1G1N3Z\",\" zady\":\"1N4W\",\" zag\":\"0R0X0V061A0J\",\" zag \":\"0R13\",\" zah\":\"0N0E0U0Y0V0D0Y0K1507\",\" zahr\":\"0U100Y0F\",\" zai\":\"0V0Z1A08\",\" zais\":\"0V26\",\" zaj\":\"0U120V0J0Y2M14091A19\",\" zajt\":\"0Y341402\",\" zají\":\"0U19\",\" zak\":\"0R0J0U0D0V0K0Y0I14031A0T\",\" zal\":\"0R4G0U060V0D1A0E\",\" zal \":\"0R5W\",\" zama\":\"0V0A1A051F7V\",\" zan\":\"0O030P050R070U0B0V0D0Y191A0G\",\" zane\":\"0U0F0Y1L\",\" zap\":\"0O0D0U230V0M0Y1A1A31\",\" zapl\":\"0U0R0Y0S\",\" zapo\":\"0U1K0V0A1A1D\",\" zar\":\"0O020U050V1A0Y081A0U1F0E\",\" zar \":\"0V2G1F02\",\" zas\":\"0U1P0V0J0Y251A1I\",\" zast\":\"0U100V0E0Y0T1A0V\",\" zat\":\"0R0O0U0N0V0U0Y161A0P1F0Q1N5Z\",\" zat \":\"0R0M1N5N\",\" zatl\":\"1N2M\",\" zau\":\"0N040U020V0Q0Y131A0D1D0K\",\" zauj\":\"0U030Y1C\",\" zav\":\"0U1L0V0Z0Y1O140J\",\" zavo\":\"0U120Y1D\",\" zavr\":\"0U040V1N0Y0I\",\" zaw\":\"1A29\",\" zaws\":\"1A2E\",\" zač\":\"0U1Y0V020Y1Z\",\" zača\":\"0U1F0Y0W\",\" začí\":\"0U0U0Y0O\",\" zaš\":\"0V1Q0Y08\",\" zašt\":\"0V4C\",\" zb\":\"0U0L0V100Y0Q15091A14\",\" zbo\":\"0U050V120Y0K1508\",\" zbog\":\"0V2P\",\" zbyt\":\"0U061A1H\",\" zd\":\"0U1H0V0B0Y151A2I\",\" zda\":\"0U070Y081A1C\",\" zdr\":\"0U0O0V0D0Y0V1A0Q\",\" zdá\":\"0U0X0Y0I\",\" zdá \":\"0U0V0Y0L\",\" ze \":\"0RCC0U121A1J\",\" zee\":\"0R0Y\",\" zeer\":\"0R0S\",\" zeg\":\"03030R2R1A0I\",\" zeg \":\"0R0X\",\" zegg\":\"0R1M\",\" zegt\":\"0R16\",\" zei\":\"0N2K0R23\",\" zei \":\"0R2I\",\" zeit\":\"0N3C\",\" zek\":\"0R111F07\",\" zeke\":\"0R1E\",\" zele\":\"0U0G0V080Y15\",\" zelf\":\"0R1D\",\" zem\":\"031S0U1W0V0N0Y1R1A021D1R1F02\",\" zem \":\"0U030Y0X\",\" zeme\":\"0Y0E1D2K\",\" zemr\":\"033X\",\" zemř\":\"0U17\",\" zep\":\"0U0Q1A07\",\" zept\":\"0U11\",\" zet\":\"0R0L\",\" zg\":\"03040V05150A1A0Y\",\" zh\":\"03040U0A0Y0E\",\" zi \":\"151W\",\" zib\":\"041O\",\" zic\":\"0R2N150I\",\" zich\":\"0R3K\",\" zie\":\"0N0V0Q080R461A0R1D0U\",\" ziek\":\"0R1E\",\" zien\":\"0R2H\",\" ziet\":\"0R15\",\" zif\":\"1P1N\",\" zif \":\"1P1C\",\" zij\":\"0RII\",\" zij \":\"0R48\",\" zijn\":\"0RKJ\",\" zin\":\"04290R1S1D50\",\" zin \":\"0R15\",\" zinu\":\"1D43\",\" zinā\":\"1D5U\",\" zira\":\"043O\",\" zit\":\"041Z0N040Q020R1M\",\" zit \":\"0R1B\",\" zita\":\"042S\",\" zitt\":\"0N020Q020R0V\",\" ziy\":\"1F11\",\" ziya\":\"1F1F\",\" ziņ\":\"1D0W\",\" zj\":\"0U070Y0I1A0P\",\" zk\":\"0U0X\",\" zl\":\"0U0R0V080Y1A\",\" zlo\":\"0U0Q0V030Y0X\",\" zm\":\"030K0U0U0V040Y171A1F\",\" zme\":\"0U030Y13\",\" změ\":\"0U0R\",\" změn\":\"0U10\",\" zn\":\"0U1Y0V460Y1B1A3E\",\" zna\":\"0U0M0V500Y0O1A3W\",\" zna \":\"0V2J1A0J\",\" znal\":\"0U090V0L1A1I\",\" znam\":\"0U0E0V410Y0N1A0V\",\" znaš\":\"0V1T\",\" zno\":\"0U0J0Y0Y1A0F\",\" znov\":\"0U0R0Y17\",\" zná\":\"0U1I0Y0C\",\" znám\":\"0U130Y0B\",\" zo \":\"0R3H0Y0X\",\" zob\":\"0Y1A1A14\",\" zoba\":\"1A1R\",\" zoe\":\"0R0R\",\" zon\":\"0L020O030Q030R2314091508\",\" zond\":\"0R1T\",\" zor\":\"0O030R0R1A031F431O0F\",\" zorg\":\"0R101A021O0U\",\" zoru\":\"1F3S\",\" zos\":\"0Y281A36\",\" zost\":\"0Y2O1A51\",\" zou\":\"0R4W0U02\",\" zou \":\"0R5O\",\" zp\":\"0U1C\",\" zr\":\"0U0M0V020Y0V1A3F\",\" zro\":\"0U071A4B\",\" zrob\":\"1A64\",\" zs\":\"140E1A02\",\" zt\":\"0U0S\",\" ztr\":\"0U11\",\" ztra\":\"0U13\",\" zu \":\"0ND5\",\" zul\":\"0N030R1O\",\" zull\":\"0R1I\",\" zum\":\"0N1Y0O03\",\" zum \":\"0N35\",\" zur\":\"0N22\",\" zur \":\"0N1T\",\" zurü\":\"0N1K\",\" zus\":\"0N0W0R0O\",\" zv\":\"0U1J0V0I0Y2615031D0T\",\" zva\":\"0V081D0U\",\" zvai\":\"1D1R\",\" zvy\":\"0U0N0Y1C\",\" zvyk\":\"0U0W0Y0Q\",\" zw\":\"030J0N120R0K1A1A\",\" zwa\":\"0N0B0R0X1A04\",\" zwe\":\"0N1N0R10\",\" zwei\":\"0N2L\",\" zwem\":\"0R0Y\",\" zz\":\"031T\",\" zzay\":\"033F\",\" zá\":\"0U1N0Y2G140A\",\" záh\":\"0U040Y14\",\" záhr\":\"0Y1C\",\" zí\":\"0U0V0Y06\",\" zít\":\"0U17\",\" zítr\":\"0U1L\",\" zē\":\"1D0G\",\" zł\":\"1A16\",\" zů\":\"0U0W\",\" zůs\":\"0U1G\",\" zůst\":\"0U21\",\" à\":\"0L3C0P0Y\",\" à \":\"0LF00P37\",\" às\":\"0P0Y\",\" às \":\"0P16\",\" á\":\"0O080P0E0S1A0Y08139G142W\",\" á \":\"13DE\",\" áf\":\"0O020P03130K\",\" ág\":\"0P0V140B\",\" águ\":\"0P11\",\" água\":\"0P19\",\" áh\":\"130X\",\" ái\":\"0S1G\",\" áit\":\"0S16\",\" áit \":\"0S3S\",\" ák\":\"130Q\",\" ál\":\"0P030S0M142W\",\" ála\":\"0S0Q\",\" álai\":\"0S32\",\" áll\":\"145K\",\" áll \":\"1414\",\" álla\":\"141V\",\" án\":\"0O040Y0I130O\",\" áno\":\"0Y0W\",\" áno \":\"0Y14\",\" ár\":\"0O0G0P0M0S0I131Y140P\",\" ás\":\"0P02130N1403\",\" át\":\"0S0M131L1414\",\" áth\":\"0S0Q1402\",\" átha\":\"0S32\",\" átt\":\"132C1402\",\" átt \":\"1322\",\" áð\":\"130M\",\" áður\":\"1326\",\" â\":\"0L03\",\" âg\":\"0L0A\",\" ä\":\"0N0B10CO11131C1E1N0U1PDH\",\" äb\":\"1P3U\",\" äbi\":\"1P47\",\" äbin\":\"1P4V\",\" äd\":\"1P36\",\" äde\":\"1P27\",\" ädel\":\"1P1U\",\" ädu\":\"1P0X\",\" ädun\":\"1P12\",\" äf\":\"1P1B\",\" äg\":\"100F1P1B\",\" äh\":\"0N021N0S\",\" ähl\":\"1N0Z\",\" ähli\":\"1N1B\",\" äi\":\"110Y\",\" äit\":\"1117\",\" äiti\":\"112Y\",\" äk\":\"100211031P1X\",\" äka\":\"1P1B\",\" äkan\":\"1P1G\",\" äl\":\"0N03101K11291P3K\",\" älo\":\"1P1R\",\" älog\":\"1P22\",\" äls\":\"101V\",\" älsk\":\"101V\",\" älä\":\"1137\",\" älä \":\"117I\",\" älö\":\"1P0T\",\" äm\":\"10031P0H\",\" än\":\"0N04102H1P2D\",\" än \":\"102C\",\" änd\":\"0N08100G\",\" änn\":\"100D\",\" äno\":\"1P22\",\" änol\":\"1P2D\",\" äp\":\"100E1P15\",\" äpp\":\"100J\",\" äppl\":\"100H\",\" är\":\"0N0410OE11051C4H1P0F\",\" är \":\"10RS\",\" ära\":\"1C4N\",\" ära \":\"1CAO\",\" äs\":\"11031P3V\",\" äsa\":\"1P1V\",\" äsag\":\"1P24\",\" ät\":\"101T1P1G\",\" äta\":\"100Z\",\" äta \":\"100Z\",\" äte\":\"1011\",\" äter\":\"1011\",\" äti\":\"100A1P1H\",\" ätik\":\"1P1D\",\" äv\":\"10061P37\",\" ävi\":\"1P3A\",\" ävil\":\"1P3K\",\" äy\":\"1P0H\",\" ää\":\"110Q\",\" äý\":\"1N0C\",\" å\":\"0Z0W101M126J\",\" å \":\"10021294\",\" åb\":\"0Z0D\",\" åbn\":\"0Z0R\",\" åbne\":\"0Z0R\",\" åk\":\"1013\",\" åka\":\"100P\",\" åka \":\"100P\",\" åke\":\"100D\",\" åkt\":\"100F\",\" ål\":\"1004\",\" ån\":\"1004\",\" åp\":\"120B\",\" åpe\":\"120E\",\" åpen\":\"120E\",\" åpn\":\"120E\",\" åpne\":\"120E\",\" år\":\"0Z0X1017120U\",\" år \":\"0Z211016121J\",\" åre\":\"0Z08100C120B\",\" ås\":\"1007\",\" åt\":\"101X1204\",\" åt \":\"101T\",\" åte\":\"100E\",\" ått\":\"10081209\",\" æ\":\"0T060Z0W1204131G\",\" æb\":\"0Z0N\",\" æbl\":\"0Z1Q\",\" æble\":\"0Z23\",\" æd\":\"0T02\",\" æg\":\"0T020Z08\",\" æg \":\"0Z0B\",\" æl\":\"0Z06\",\" æld\":\"0Z0F\",\" æn\":\"0Z05\",\" ænd\":\"0Z0D\",\" ændr\":\"0Z0F\",\" æq\":\"0T05\",\" ær\":\"0Z041205\",\" ærl\":\"0Z05120B\",\" æs\":\"0Z02\",\" æt\":\"0T04132Q\",\" ætl\":\"131F\",\" ætla\":\"132N\",\" ætt\":\"1331\",\" ætti\":\"1357\",\" ç\":\"0L0O1F8P1N4N\",\" ça\":\"0L3E1F6D1N3S\",\" ça \":\"0L5N\",\" çag\":\"1N2S\",\" çaga\":\"1N3B\",\" çal\":\"1F5B1N1O\",\" çalı\":\"1F64\",\" çe\":\"1F1Z1N1P\",\" çek\":\"1F1C1N1A\",\" çen\":\"1F021N0U\",\" çenl\":\"1N12\",\" çi\":\"1F1J1N0F\",\" ço\":\"1FAT\",\" çoc\":\"1F2G\",\" çocu\":\"1F3C\",\" çok\":\"1F9Q\",\" çok \":\"1FCQ\",\" çy\":\"1N2O\",\" çyk\":\"1N2V\",\" çyka\":\"1N1I\",\" çö\":\"1F0N1N0T\",\" çı\":\"1F2N\",\" çık\":\"1F2P\",\" çıka\":\"1F1M\",\" è\":\"0Q5N\",\" è \":\"0QIM\",\" é\":\"0L270O210P4X0R050S5F0Z06120313AW149Z\",\" é \":\"0PI90SC0\",\" éa\":\"0S0N\",\" éc\":\"0L1U\",\" éco\":\"0L0X\",\" écr\":\"0L1B\",\" écri\":\"0L21\",\" éd\":\"0L02140B\",\" ég\":\"0L0C13L1140A\",\" ég \":\"13RF140A\",\" éi\":\"0S3P\",\" éig\":\"0S1J\",\" éigi\":\"0S5P\",\" éir\":\"0S16\",\" éire\":\"0S2K\",\" éis\":\"0S1G\",\" éist\":\"0S3A\",\" éj\":\"140J\",\" él\":\"0L0N0O5Y142E\",\" él \":\"0O8X140R\",\" éle\":\"0L0F1439\",\" élet\":\"142X\",\" ém\":\"0L05\",\" én\":\"0L060Z071205143D\",\" én \":\"0Z0J120C147R\",\" ép\":\"0L0K0O020P04140R\",\" épp\":\"1416\",\" éq\":\"0L06\",\" ér\":\"0L020P02143S\",\" érd\":\"141W\",\" érde\":\"1420\",\" ért\":\"1441\",\" érte\":\"142Y\",\" érz\":\"141K\",\" érze\":\"1410\",\" és\":\"0O0B0P08145O\",\" és \":\"0P0A14CW\",\" ét\":\"0L6P0Z031303140I\",\" éta\":\"0L5N\",\" étai\":\"0L80\",\" étu\":\"0L11\",\" étud\":\"0L1R\",\" été\":\"0L39\",\" été \":\"0L5G\",\" év\":\"0L0C141V\",\" éva \":\"1410\",\" éve\":\"0L03141W\",\" éx\":\"0O07\",\" éé\":\"0R07\",\" één\":\"0R0R\",\" één \":\"0R11\",\" ê\":\"0L0N\",\" êt\":\"0L39\",\" ête\":\"0L2I\",\" êtes\":\"0L48\",\" êtr\":\"0L32\",\" être\":\"0L55\",\" í\":\"0S1G0Y0R138A1414\",\" í \":\"0S4413G5\",\" íg\":\"140S\",\" így\":\"141L\",\" így \":\"141O\",\" ín\":\"0P04\",\" ír\":\"140Z\",\" ís\":\"0Y1X130K\",\" ísť\":\"0Y39\",\" ísť \":\"0Y42\",\" î\":\"15BJ\",\" îi\":\"151R\",\" îi \":\"152X\",\" îl\":\"0L021516\",\" îl \":\"151X\",\" îm\":\"154X\",\" îmi\":\"154U\",\" îmi \":\"1565\",\" împ\":\"152N\",\" în\":\"15QR\",\" în \":\"15MV\",\" îna\":\"1522\",\" înai\":\"151N\",\" înc\":\"15AK\",\" înce\":\"156V\",\" înch\":\"151X\",\" încă\":\"1533\",\" înd\":\"151U\",\" înt\":\"15CC\",\" înto\":\"153I\",\" într\":\"157R\",\" întâ\":\"1554\",\" înv\":\"1527\",\" învă\":\"151M\",\" înț\":\"1523\",\" înțe\":\"152O\",\" îș\":\"150N\",\" îț\":\"1516\",\" îți\":\"151Y\",\" îți \":\"152I\",\" ó\":\"0P050S181313140S\",\" ó \":\"0P020S1I1403\",\" óc\":\"0P051402\",\" ól\":\"0S1C1308\",\" ól \":\"0S0T\",\" óla\":\"0S0Q\",\" ór\":\"0O020P03140W\",\" órá\":\"141E\",\" ót\":\"0P0713051408\",\" ô\":\"0P030Y03\",\" ôn\":\"0P0F\",\" ôni\":\"0P0I\",\" õ\":\"1C2R\",\" õd\":\"1C0K\",\" õde\":\"1C0Q\",\" õde \":\"1C1O\",\" õh\":\"1C18\",\" õht\":\"1C1C\",\" õhtu\":\"1C3B\",\" õi\":\"1C2M\",\" õig\":\"1C36\",\" õigu\":\"1C6K\",\" õl\":\"1C0B\",\" õn\":\"1C13\",\" õnn\":\"1C1C\",\" õnne\":\"1C37\",\" õp\":\"1C3J\",\" õpe\":\"1C1C\",\" õpet\":\"1C3B\",\" õpi\":\"1C1C\",\" õpp\":\"1C1U\",\" õppi\":\"1C4I\",\" õu\":\"1C0J\",\" õun\":\"1C0L\",\" ö\":\"0N05101S130Z142K1C0F1F501NAV\",\" öd\":\"10031F1A\",\" öde\":\"10021F10\",\" öe\":\"1C0U\",\" öel\":\"1C11\",\" öeld\":\"1C1V\",\" öf\":\"0N0613041F06\",\" ög\":\"100P\",\" ögo\":\"100Q\",\" ögon\":\"100Q\",\" ök\":\"10031F02\",\" öl\":\"100C11031310140A1F261N19\",\" öld\":\"1F1A1N0N\",\" öldü\":\"1F1R1N0Q\",\" öll\":\"131J\",\" ön\":\"100H1305141G1F46\",\" ön \":\"1005141J1F04\",\" önc\":\"1F2L\",\" önce\":\"1F3I\",\" öne\":\"1F1F\",\" önem\":\"1F18\",\" öns\":\"100I\",\" önsk\":\"100I\",\" öp\":\"100M1F0F\",\" öpp\":\"100T\",\" öppn\":\"100M\",\" ör\":\"1006130F140Y1F0A1N2G\",\" örä\":\"1N34\",\" örän\":\"1N49\",\" ös\":\"100414161N0B\",\" öss\":\"142X\",\" össz\":\"1434\",\" öt\":\"140M1F041N0A\",\" öv\":\"102L14031F02\",\" öve\":\"103C1402\",\" över\":\"103C\",\" öw\":\"1N28\",\" öwr\":\"1N2X\",\" öwre\":\"1N3R\",\" öy\":\"1F0J\",\" öz\":\"1F121N9D\",\" öz \":\"1N5P\",\" özi\":\"1N1B\",\" özi \":\"1N1E\",\" özl\":\"1F091N1D\",\" özle\":\"1F081N1V\",\" özü\":\"1F0B1N5G\",\" özüm\":\"1N1J\",\" özün\":\"1N55\",\" öñ\":\"1N0Z\",\" öö\":\"1C0P\",\" öý\":\"1N4U\",\" öýd\":\"1N2L\",\" öýde\":\"1N2C\",\" öýe \":\"1N12\",\" öýü\":\"1N1K\",\" öýün\":\"1N1J\",\" öğ\":\"1F3O\",\" öğle\":\"1F15\",\" öğr\":\"1F3D\",\" öğre\":\"1F4L\",\" öň\":\"1N1D\",\" öň \":\"1N14\",\" ø\":\"0Z181218\",\" ød\":\"0Z031205\",\" øde\":\"0Z07120D\",\" ødel\":\"0Z08120D\",\" øj\":\"0Z0E\",\" øje\":\"0Z0J\",\" øjn\":\"0Z0K\",\" øjne\":\"0Z0P\",\" øk\":\"0Z041205\",\" øko\":\"0Z0A1208\",\" øl\":\"0Z071204\",\" øl \":\"0Z0I120A\",\" øn\":\"0Z0S120U\",\" øns\":\"0Z251224\",\" ønsk\":\"0Z2L1224\",\" ør\":\"0Z061203\",\" øre\":\"0Z0D\",\" øs\":\"0Z021202\",\" øv\":\"1202\",\" øy\":\"120K\",\" øye\":\"120N\",\" øyeb\":\"120C\",\" øyn\":\"120O\",\" øyne\":\"120O\",\" ú\":\"0O0C0P090S0M0U0R0Y10131X1428\",\" úg\":\"141O\",\" úgy\":\"144A\",\" úgy \":\"144B\",\" új\":\"141I\",\" új \":\"142F\",\" úl\":\"0O0L0P0I0Y0C\",\" últ\":\"0O0W0P0M\",\" últi\":\"0O160P0S\",\" ún\":\"0O0F0P0H\",\" úni\":\"0O0O0P0L\",\" únic\":\"0O0V0P0Q\",\" úp\":\"0U080Y0L\",\" úpln\":\"0U0H0Y0Z\",\" úr\":\"0U0213171407\",\" úr \":\"131O140D\",\" ús\":\"0S130U0B0Y0F140C\",\" úsá\":\"0S1C\",\" úsái\":\"0S5G\",\" út\":\"0O040P050U050Y041330140H\",\" út \":\"132L140D\",\" ü\":\"0N1714131C301F241N5I\",\" üb\":\"0N1X\",\" übe\":\"0N4H\",\" über\":\"0N760R02\",\" üg\":\"140F\",\" üh\":\"1C21\",\" ühe\":\"1C1F\",\" ühe \":\"1C1E\",\" ühi\":\"1C0Q\",\" ük\":\"1C1T\",\" üks\":\"1C29\",\" üks \":\"1C1V\",\" üksi\":\"1C1V\",\" ül\":\"140O1C3A1F0O\",\" üld\":\"14031C0U\",\" üle\":\"1C2J\",\" üle \":\"1C31\",\" üles\":\"1C2D\",\" ün\":\"14051F0J1N0R\",\" üns\":\"1N10\",\" ür\":\"14061C0F1F0A\",\" üs\":\"1F0J1N0W\",\" üst\":\"1F0L1N14\",\" üstü\":\"1F0I1N1I\",\" üt\":\"14051C2X\",\" ütl\":\"1C3M\",\" ütle\":\"1C8M\",\" üz\":\"140A1F1N\",\" üze\":\"140A1F12\",\" üzer\":\"1F1G\",\" üç\":\"1F1P1N88\",\" üç \":\"1F1P1N1W\",\" üçi\":\"1N9R\",\" üçin\":\"1NCW\",\" üý\":\"1N0Z\",\" üýt\":\"1N1E\",\" üýtg\":\"1N1X\",\" ý\":\"1NHC\",\" ýa\":\"1NGD\",\" ýad\":\"1N19\",\" ýag\":\"1N2I\",\" ýal\":\"1N7D\",\" ýaly\":\"1N6A\",\" ýalñ\":\"1N1G\",\" ýalň\":\"1N1B\",\" ýan\":\"1N10\",\" ýap\":\"1N19\",\" ýar\":\"1N1Z\",\" ýara\":\"1N1O\",\" ýat\":\"1N1T\",\" ýaz\":\"1N2L\",\" ýazd\":\"1N14\",\" ýaş\":\"1N4V\",\" ýaşa\":\"1N49\",\" ýaşy\":\"1N19\",\" ýe\":\"1N9X\",\" ýek\":\"1N1U\",\" ýeke\":\"1N29\",\" ýen\":\"1N1E\",\" ýene\":\"1N1X\",\" ýer\":\"1N7Z\",\" ýerd\":\"1N4R\",\" ýere\":\"1N1J\",\" ýeri\":\"1N38\",\" ýet\":\"1N2U\",\" ýete\":\"1N17\",\" ýeti\":\"1N1S\",\" ýi\":\"1N1C\",\" ýit\":\"1N17\",\" ýiti\":\"1N1I\",\" ýo\":\"1N46\",\" ýok\":\"1N4E\",\" ýok \":\"1N43\",\" ýol\":\"1N1D\",\" ýu\":\"1N15\",\" ýy\":\"1N2Y\",\" ýyg\":\"1N0X\",\" ýygn\":\"1N14\",\" ýyl\":\"1N3B\",\" ýyl \":\"1N1D\",\" ýyld\":\"1N1X\",\" ýö\":\"1N1P\",\" ýön\":\"1N1E\",\" ýöne\":\"1N1X\",\" ýör\":\"1N14\",\" ýü\":\"1N1J\",\" ýüz\":\"1N1B\",\" þ\":\"13LD\",\" þa\":\"13FS\",\" þar\":\"133Y\",\" þar \":\"132B\",\" þarf\":\"1350\",\" þau\":\"132U\",\" þau \":\"135W\",\" það\":\"13I7\",\" það \":\"13RW\",\" þe\":\"13CO\",\" þeg\":\"132P\",\" þega\":\"135E\",\" þei\":\"132X\",\" þeim\":\"1325\",\" þeir\":\"1344\",\" þek\":\"131A\",\" þekk\":\"132P\",\" þes\":\"137O\",\" þess\":\"13F1\",\" þet\":\"137M\",\" þett\":\"13EW\",\" þi\":\"134T\",\" þig\":\"133M\",\" þig \":\"137G\",\" þin\":\"131S\",\" þinn\":\"133P\",\" þit\":\"1315\",\" þitt\":\"132E\",\" þið\":\"131M\",\" þið \":\"133E\",\" þj\":\"130N\",\" þr\":\"1323\",\" þre\":\"1318\",\" þrey\":\"1321\",\" þu\":\"130R\",\" þur\":\"1314\",\" þurf\":\"1328\",\" þv\":\"132P\",\" því\":\"1340\",\" því \":\"1385\",\" þá\":\"130V\",\" þá \":\"1313\",\" þæ\":\"130M\",\" þé\":\"133P\",\" þér\":\"135X\",\" þér \":\"13BV\",\" þí\":\"131U\",\" þín\":\"1331\",\" þín \":\"132M\",\" þína\":\"131W\",\" þú\":\"139Y\",\" þú \":\"13F1\",\" þý\":\"130U\",\" ā\":\"0T021D0P\",\" ā \":\"0T02\",\" āb\":\"1D0M\",\" ābo\":\"1D0S\",\" ābol\":\"1D21\",\" ār\":\"1D15\",\" āt\":\"1D0V\",\" ātr\":\"1D15\",\" ă\":\"1505\",\" ć\":\"0V1T1A02\",\" će\":\"0V46\",\" će \":\"0V3G\",\" ćeš \":\"0V1Z\",\" ću\":\"0V0W\",\" ću \":\"0V0Z\",\" ĉ\":\"1O8X\",\" ĉa\":\"1O1F\",\" ĉam\":\"1O0O\",\" ĉamb\":\"1O19\",\" ĉar\":\"1O17\",\" ĉar \":\"1O21\",\" ĉe\":\"1O1O\",\" ĉe \":\"1O11\",\" ĉi\":\"1O7H\",\" ĉi \":\"1O43\",\" ĉia\":\"1O1G\",\" ĉiam\":\"1O2R\",\" ĉio\":\"1O1F\",\" ĉio \":\"1O1H\",\" ĉion\":\"1O1A\",\" ĉiu\":\"1O3M\",\" ĉiu \":\"1O1V\",\" ĉiuj\":\"1O3X\",\" ĉu\":\"1O5H\",\" ĉu \":\"1O8H\",\" č\":\"03060U3I0V250Y721B131D06\",\" ča\":\"0U260V0S0Y4A\",\" čaj\":\"0U0E0V070Y16\",\" čaj \":\"0U0F0V0B0Y17\",\" čak\":\"0V080Y28\",\" čaka\":\"0Y1U\",\" čaká\":\"0Y0Y\",\" čas\":\"0U350V060Y3U\",\" čas \":\"0U1V0Y20\",\" čast\":\"0U1C0Y1B\",\" času\":\"0U0R0Y0O\",\" če\":\"0U2C0V1T0Y0V1B031D0G\",\" ček\":\"0U1S0V0O1B03\",\" čeka\":\"0U1O0V1L\",\" čeká\":\"0U0S\",\" čer\":\"0U0O0Y0Y\",\" čest\":\"0U030V1S\",\" či\":\"0U0D0V1F0Y1Q1B2X\",\" či \":\"0U040Y16\",\" čia\":\"0Y081B4H\",\" čia \":\"1B8X\",\" čier\":\"0Y0Z\",\" čita\":\"0V1W\",\" čl\":\"0U0S0V080Y0W\",\" člo\":\"0U100Y16\",\" člov\":\"0U1F0Y1G\",\" čo\":\"0U040V0V0Y8X\",\" čo \":\"0YD7\",\" čov\":\"0V0X\",\" čove\":\"0V2D\",\" čt\":\"0U0N\",\" ču\":\"0V140Y0C\",\" čí\":\"0U0W0Y1O\",\" čít\":\"0Y1Z\",\" číta\":\"0Y2G\",\" ď\":\"0Y0I\",\" ďa\":\"0Y1A\",\" ďak\":\"0Y17\",\" ďaku\":\"0Y1F\",\" ďal\":\"0Y10\",\" ē\":\"0T081D0P\",\" ē \":\"0T02\",\" ēd\":\"0T041D1M\",\" ēdie\":\"1D1R\",\" ēm\":\"0T09\",\" ēs\":\"0T021D0K\",\" ēst \":\"1D1R\",\" ė\":\"1B06\",\" ėj\":\"1B09\",\" ĝ\":\"1O2S\",\" ĝa\":\"1O07\",\" ĝe\":\"1O0C\",\" ĝi\":\"1O3L\",\" ĝi \":\"1O2H\",\" ĝin\":\"1O26\",\" ĝin \":\"1O49\",\" ĝis\":\"1O0Y\",\" ĝis \":\"1O1O\",\" ĝo\":\"1O09\",\" ĝu\":\"1O0G\",\" ģ\":\"1D06\",\" ģi\":\"1D0H\",\" ī\":\"0T041D0D\",\" īn\":\"0T02\",\" īp\":\"1D0J\",\" īpaš\":\"1D1R\",\" īr\":\"0T02\",\" īs\":\"0T021D0V\",\" īst\":\"0T031D0Z\",\" īv\":\"0T02\",\" į\":\"1B3Z\",\" į \":\"1B67\",\" įd\":\"1B0K\",\" įdo\":\"1B0Q\",\" įdom\":\"1B1J\",\" įe\":\"1B06\",\" įg\":\"1B09\",\" įk\":\"1B09\",\" įp\":\"1B09\",\" įr\":\"1B07\",\" įs\":\"1B1E\",\" įsi\":\"1B1E\",\" įt\":\"1B0E\",\" įv\":\"1B0T\",\" įvy\":\"1B0X\",\" įvyk\":\"1B1X\",\" įž\":\"1B07\",\" ı\":\"1F0A\",\" ıs\":\"1F0G\",\" ĵ\":\"1O0B\",\" ĵa\":\"1O03\",\" ĵe\":\"1O04\",\" ĵu\":\"1O0C\",\" ķ\":\"1D0A\",\" ķī\":\"1D0H\",\" ļ\":\"1D18\",\" ļa\":\"1D11\",\" ļau\":\"1D1C\",\" ļo\":\"1D46\",\" ļot\":\"1D5C\",\" ļoti\":\"1DCW\",\" ľ\":\"0Y14\",\" ľa\":\"0Y0L\",\" ľu\":\"0Y1W\",\" ľud\":\"0Y2W\",\" ľudi\":\"0Y1U\",\" ľudí\":\"0Y10\",\" ľú\":\"0Y0F\",\" ł\":\"1A0R\",\" ła\":\"1A0Y\",\" ň\":\"0Y09\",\" ō\":\"0T02\",\" ōs\":\"0T04\",\" ő\":\"141Y\",\" ő \":\"141O\",\" ők\":\"140O\",\" őket\":\"1415\",\" őt\":\"140U\",\" őt \":\"1425\",\" œ\":\"0L02\",\" œu\":\"0L05\",\" ř\":\"0U36\",\" ře\":\"0U3Z\",\" řek\":\"0U5S\",\" řekl\":\"0U69\",\" řekn\":\"0U1H\",\" ří\":\"0U2E\",\" říc\":\"0U1A\",\" říct\":\"0U1D\",\" řík\":\"0U1T\",\" říka\":\"0U12\",\" říká\":\"0U1G\",\" ś\":\"1A20\",\" śm\":\"1A0R\",\" śmie\":\"1A1F\",\" św\":\"1A1H\",\" świ\":\"1A25\",\" świa\":\"1A1E\",\" świe\":\"1A1N\",\" ŝ\":\"1O5O\",\" ŝa\":\"1O2X\",\" ŝaj\":\"1O0Y\",\" ŝajn\":\"1O1V\",\" ŝan\":\"1O0Q\",\" ŝat\":\"1O2N\",\" ŝata\":\"1O3I\",\" ŝe\":\"1O05\",\" ŝi\":\"1O5M\",\" ŝi \":\"1O6L\",\" ŝia\":\"1O14\",\" ŝia \":\"1O1D\",\" ŝin\":\"1O10\",\" ŝin \":\"1O1Y\",\" ŝl\":\"1O05\",\" ŝo\":\"1O05\",\" ŝp\":\"1O03\",\" ŝt\":\"1O0K\",\" ŝu\":\"1O09\",\" ş\":\"150E1F611N5L\",\" şa\":\"15031F2X1N0Z\",\" şar\":\"1F1B\",\" şark\":\"1F1A\",\" şe\":\"1F8W1N2X\",\" şek\":\"1F13\",\" şey\":\"1F8F\",\" şey \":\"1F6Y\",\" şeyi\":\"1F34\",\" şeyl\":\"1F15\",\" şeý\":\"1N34\",\" şeýl\":\"1N46\",\" şi\":\"15171F32\",\" şi \":\"151O\",\" şim\":\"1F27\",\" şimd\":\"1F30\",\" şo\":\"1F061N3K\",\" şol\":\"1N1R\",\" şol \":\"1N2E\",\" şon\":\"1N37\",\" şony\":\"1N3D\",\" şu\":\"1F101N39\",\" şu \":\"1F101N3C\",\" şä\":\"1N0G\",\" şü\":\"1F0H1N0A\",\" š\":\"0U2I0V3O0Y2X1B5R1C041D3E\",\" ša\":\"0U0E0V0G0Y0I1B1Z1D1S\",\" šajā\":\"1D1R\",\" šal\":\"0V061B28\",\" šali\":\"1B1Y\",\" šalt\":\"1B1H\",\" šau\":\"1B0G1D18\",\" šaub\":\"1D1W\",\" še\":\"0U0Z0V0S0Y0B1B111D1V\",\" šei\":\"1B0S1D21\",\" šeim\":\"1B1L\",\" šeit\":\"1D58\",\" šel\":\"0U12\",\" šel \":\"0U1I\",\" šeš\":\"0V071B0T\",\" ši\":\"0U040V0A0Y171B8Q1D24\",\" šia\":\"0Y0G1B2L\",\" šian\":\"1B4K\",\" šie\":\"0Y1F1B0K1D0J\",\" šiel\":\"0Y11\",\" šio\":\"1B0Q\",\" šis\":\"1B0F1D1Y\",\" šis \":\"1B0U1D4Z\",\" šit\":\"1B7J\",\" šita\":\"1B74\",\" šito\":\"1B3M\",\" šitą\":\"1B46\",\" šk\":\"0U140V0Q0Y1C\",\" ško\":\"0U1S0V0V0Y21\",\" škol\":\"0U280V250Y2C\",\" šl\":\"0U0D0Y0C1B06\",\" šn\":\"1B08\",\" šo\":\"0U030V091B0P1D5F\",\" šo \":\"1D2Z\",\" šod\":\"1D2J\",\" šodi\":\"1D6G\",\" šok\":\"0U040V051B10\",\" šp\":\"0U0Y0V060Y0I\",\" špa\":\"0U180V040Y0H\",\" špat\":\"0U1C\",\" št\":\"0U0E0V7B0Y1G1B0J\",\" šta\":\"0V4Y1B0U\",\" šta \":\"0VBM\",\" štai\":\"1B1R\",\" što\":\"0V3X\",\" što \":\"0V9L\",\" šu\":\"0U020V071B15\",\" šun\":\"1B11\",\" šuo\":\"1B0Q\",\" šuo \":\"1B1J\",\" šv\":\"0U040V080Y0B1B0Y\",\" švi\":\"0Y0E1B0R\",\" šy\":\"1B07\",\" šī\":\"1D1W\",\" šī \":\"1D1S\",\" šį\":\"1B0L\",\" šį \":\"1B0Q\",\" šķ\":\"1D15\",\" šķi\":\"1D17\",\" šķie\":\"1D2O\",\" šť\":\"0U0G0Y1G\",\" šťa\":\"0U0Q0Y2I\",\" šťas\":\"0U100Y2U\",\" ţ\":\"1503\",\" ť\":\"0Y1B\",\" ťa\":\"0Y3E\",\" ťa \":\"0Y4F\",\" ťaž\":\"0Y1A\",\" ťažk\":\"0Y1H\",\" ū\":\"1B021D09\",\" ūd\":\"1D10\",\" ūde\":\"1D1A\",\" ūden\":\"1D37\",\" ź\":\"1A04\",\" ż\":\"1A5R\",\" ża\":\"1A0Q\",\" że\":\"1A8U\",\" że \":\"1AAM\",\" żeb\":\"1A1Z\",\" żeby\":\"1A35\",\" ży\":\"1A1R\",\" życ\":\"1A1I\",\" życi\":\"1A24\",\" ž\":\"0U7U0V2O0Y6X1B4E1D05\",\" ža\":\"0U030V0C0Y071B1R\",\" žai\":\"1B1T\",\" žaid\":\"1B26\",\" že\":\"0UC00V3T0YCZ1B0S\",\" že \":\"0UGP0YII\",\" žel\":\"0U070V3Q0Y0B\",\" žele\":\"0U050V2Y\",\" želi\":\"0V68\",\" žem\":\"1B0Z\",\" žen\":\"0U1R0V0T0Y261B0A\",\" žena\":\"0U150V1A0Y1G\",\" ži\":\"0U240V330Y3V1B52\",\" žia\":\"0Y1X1B04\",\" žiad\":\"0Y1D\",\" žij\":\"0U120Y1O\",\" žije\":\"0U0Y0Y1P\",\" žin\":\"1B60\",\" žina\":\"1B55\",\" žino\":\"1B6I\",\" živ\":\"0U1X0V3O0Y20\",\" živi\":\"0V33\",\" živo\":\"0U2G0V4K0Y27\",\" žiū\":\"1B16\",\" žiūr\":\"1B2F\",\" žm\":\"1B2M\",\" žmo\":\"1B48\",\" žmog\":\"1B36\",\" žmon\":\"1B5P\",\" žo\":\"1B10\",\" žod\":\"1B1H\",\" žodž\":\"1B1Y\",\" žu\":\"0V0D1B0J\",\" žv\":\"1B0K\",\" žy\":\"1B08\",\" žá\":\"0U19\",\" žád\":\"0U1R\",\" žádn\":\"0U24\",\" ží\":\"0U0D\",\" ǧ\":\"0304\",\" ș\":\"1549\",\" șa\":\"150T\",\" șc\":\"1514\",\" șco\":\"151T\",\" școa\":\"151Z\",\" și\":\"158Y\",\" și \":\"15BW\",\" și-\":\"152Q\",\" și-a\":\"153G\",\" șt\":\"1558\",\" ști\":\"158A\",\" știe\":\"152K\",\" știi\":\"151Z\",\" știu\":\"154H\",\" ț\":\"150N\",\" ți\":\"151T\",\" ɛ\":\"030W\",\" ɣ\":\"0364\",\" ɣe\":\"03FV\",\" ɣef\":\"038R\",\" ɣef \":\"03HP\",\" ɣer\":\"039E\",\" ɣer \":\"03G5\",\" ɣer-\":\"0340\",\" ɣs\":\"031O\",\" ɣse\":\"031S\",\" а\":\"0V2E0X1I163517C6183R193X1LL81MAQ\",\" а \":\"0V100X0P160U1748182Q1919\",\" аа\":\"1M15\",\" аав\":\"1M15\",\" аав \":\"1M1Q\",\" аб\":\"1608175Q1806190I1L0T\",\" аба\":\"171R1L0Q\",\" або\":\"171T1908\",\" або \":\"1720190B\",\" ав\":\"0V060X0I160Y170A181K191Y1L0N1M3P\",\" ава\":\"180819051M1B\",\" авах\":\"1M1A\",\" авс\":\"0X031604180R19191M0X\",\" авса\":\"1M1Q\",\" авст\":\"0X031608181F191T\",\" авт\":\"0X0D160Y1813190W1L0X\",\" авто\":\"0X0D161Z182119171L1C\",\" авч\":\"1M15\",\" авч \":\"1M1Q\",\" аг\":\"0X031715180319031L0D1M0Z\",\" ага\":\"170C1M0Z\",\" агаа\":\"1M1Y\",\" ад\":\"0V060X06160B17EM180E190C1L6R1M0T\",\" ад \":\"174P\",\" ада\":\"1LBW\",\" адам\":\"1LFC\",\" адз\":\"173F\",\" адзі\":\"174D\",\" ади\":\"1M0Z\",\" адил\":\"1M1Y\",\" адк\":\"173X\",\" адка\":\"173C\",\" адн\":\"175D\",\" адна\":\"173W\",\" адно\":\"172S\",\" адр\":\"0V030X041607171P18091906\",\" адра\":\"171K\",\" аж\":\"170F19031M2P\",\" ажи\":\"1M2C\",\" ажил\":\"1M4L\",\" ажл\":\"1M0V\",\" аз\":\"165B170D180219021L2R1M0O\",\" аз \":\"165Y\",\" аза\":\"1L3F\",\" азам\":\"1L3N\",\" ай\":\"1L8B1M0Z\",\" айн\":\"1L2J\",\" айна\":\"1L3H\",\" айт\":\"1L7W\",\" айта\":\"1L2U\",\" айты\":\"1L2K\",\" айы\":\"1L28\",\" ак\":\"0V1A0X1C162O171T180C190A\",\" ако\":\"0V1G0X1M162U\",\" ако \":\"0V3O0X1P165X\",\" ал\":\"0V1N0X0G160H1777180K191J1LF11M3S\",\" ал \":\"1L21\",\" ала\":\"0V030X041L4Z\",\" алг\":\"1M0R\",\" алга\":\"1M1I\",\" алд\":\"1L681M1B\",\" алда\":\"1M1Q\",\" алды\":\"1L87\",\" але\":\"0X03160317641802191G\",\" але \":\"178D191Y\",\" алж\":\"175618041903\",\" алжы\":\"177M\",\" али\":\"0V1O0X03160418071M0R\",\" али \":\"0V451809\",\" алм\":\"1L6V\",\" алма\":\"1L9K\",\" алт\":\"1L21\",\" алты\":\"1L2X\",\" алу\":\"1L2J\",\" алы\":\"1L32\",\" алып\":\"1L23\",\" аль\":\"180419031M11\",\" аль \":\"1M1Y\",\" алғ\":\"1L39\",\" алға\":\"1L3E\",\" ам\":\"0V0A0X0F160O171E180E190F1L0O1M63\",\" ама\":\"0X0B1605171A1L0Q1M0P\",\" амал\":\"171P\",\" амар\":\"1M16\",\" амь\":\"1M4G\",\" амьд\":\"1M77\",\" амьт\":\"1M1Q\",\" ан\":\"0V060X0E161C171S180W191C1L2C1M2C\",\" анг\":\"0X0E1614171Q180T19111M1X\",\" англ\":\"0X0D162A172A181D191G1M2Z\",\" анх\":\"1M0P\",\" анық\":\"1L2A\",\" ап\":\"0V0B0X0616061729180919081L14\",\" апо\":\"171P\",\" апош\":\"1728\",\" ар\":\"0V060X051609171U180K19091L651M17\",\" ара\":\"170B180419031L42\",\" арас\":\"1L2U\",\" арқ\":\"1L23\",\" арқы\":\"1L2K\",\" ас\":\"0V030X041608172I180519061L601M2K\",\" аст\":\"170S180319021L4U\",\" аста\":\"170O1L4K\",\" асты\":\"1L27\",\" асу\":\"1M2Y\",\" асуу\":\"1M5V\",\" асы\":\"1L2Z\",\" асыр\":\"1L3E\",\" ат\":\"0V020X021607171D180619051L5W\",\" ата\":\"180219021L4Q\",\" атр\":\"1722\",\" атры\":\"172Q\",\" аты\":\"1L3F\",\" атын\":\"1L23\",\" ау\":\"0V1G180219031L64\",\" ауд\":\"1L2T\",\" ауда\":\"1L3N\",\" аур\":\"1L2A\",\" ауру\":\"1L34\",\" аут\":\"0V181902\",\" ауто\":\"0V35\",\" ауы\":\"1L3T\",\" ауыл\":\"1L27\",\" ауыр\":\"1L2H\",\" ах\":\"170K18021M1H\",\" ах \":\"18021M19\",\" аш\":\"17061L29\",\" ашы\":\"1L23\",\" ая\":\"1L1H1M0Q\",\" ај\":\"0X10\",\" ајд\":\"0X1A\",\" ајде\":\"0X1C\",\" аў\":\"171P\",\" аўт\":\"171W\",\" ағ\":\"1L1K\",\" ақ\":\"1L47\",\" ақпа\":\"1L2A\",\" ақша\":\"1L23\",\" б\":\"0V840X74166217AY18FE19FW1LQU1MSG\",\" б \":\"173F191O\",\" бi\":\"1L2J\",\" бiр\":\"1L28\",\" ба\":\"0V1R0X2Y1622177I181919791LOG1MSG\",\" ба \":\"1L36\",\" баг\":\"0X02160417101803192Q1M1V\",\" бага\":\"0X02160917161805193X1M1E\",\" багш\":\"1M1Y\",\" бай\":\"190A1L531MSG\",\" байв\":\"1M2J\",\" байг\":\"1MA5\",\" байд\":\"190E1M6L\",\" байж\":\"1M1I\",\" байл\":\"1L3U1M16\",\" байн\":\"1MSG\",\" байс\":\"1MIQ\",\" байх\":\"1M8L\",\" байш\":\"1M1U\",\" байқ\":\"1L27\",\" бакн\":\"0X0D\",\" бал\":\"0V020X03170Z180519061L7A\",\" бала\":\"19061L8G\",\" бар\":\"0V060X1F1603171D180819041LHC1M2C\",\" бар \":\"1LD6\",\" бара\":\"0X19170T180619021L3A1M1A\",\" бари\":\"1M1E\",\" барл\":\"1L5F\",\" барь\":\"1M1I\",\" бас\":\"1607170D180619071LG21M1N\",\" бас \":\"16071L1Q1M3B\",\" баст\":\"1L9N\",\" басы\":\"1L3R\",\" басқ\":\"1L72\",\" бат\":\"0V040X031802191R1L1E\",\" бать\":\"192I\",\" бац\":\"0V09172M\",\" баць\":\"173V\",\" бач\":\"173T192P\",\" бачи\":\"193K\",\" бачы\":\"174O\",\" баш\":\"0V130X191802\",\" баш \":\"0V280X1B\",\" бащ\":\"160Y\",\" баща\":\"1621\",\" бая\":\"170N1L0O1M36\",\" баян\":\"1M27\",\" баяр\":\"1M46\",\" бағ\":\"1L2Z\",\" бе\":\"0V1Y0X8N166X173V1846191P1LCP\",\" бе \":\"0X0416071L2X\",\" беа\":\"0X0N\",\" беа \":\"0X0O\",\" бев\":\"0X1G\",\" бев \":\"0X15\",\" без\":\"0V120X1L161M17281829191F\",\" без \":\"0V200X0T161Z172M182S190W\",\" безб\":\"0V0K0X0G\",\" бей\":\"1607180419061L2A\",\" бел\":\"0V0A0X0G1608172O180M1L3R\",\" бела\":\"0X0217371805\",\" белг\":\"1L3X\",\" бер\":\"0X02170F180M19091LAS\",\" берд\":\"1L30\",\" бере\":\"180H19061L30\",\" беру\":\"180419021L3H\",\" бері\":\"1L3K\",\" бес\":\"0V0G0X0I170G18191L28\",\" бес \":\"1L2H\",\" бесп\":\"0V0A0X07170H181Q\",\" беш\":\"0X6N1656\",\" беше\":\"0X6Z16AH1802\",\" би\":\"0VAH0X8J165B180O192K1L1U1MRL\",\" би \":\"0V2A0X55161E192W1MQ4\",\" бид\":\"0X3R1M67\",\" бид \":\"1M8B\",\" бида\":\"0X0V\",\" биде\":\"0X2R\",\" биди\":\"0X0D\",\" бидн\":\"1M1E\",\" бидэ\":\"1M2Z\",\" бил\":\"0V3M0X2B1623180D1L14\",\" бил \":\"0X181621\",\" била\":\"0V3G0X07160H\",\" биле\":\"0V0D0X051613180I\",\" било\":\"0V4L0X0V160L\",\" био\":\"0V2D1802\",\" био \":\"0V5S\",\" бит\":\"0V170X05180419021M19\",\" битг\":\"1M2F\",\" бити\":\"0V2T1902\",\" бих\":\"0V2W161S\",\" бих \":\"0V761637\",\" бич\":\"1M1R\",\" бичи\":\"1M1E\",\" бичс\":\"1M16\",\" биш\":\"1M3F\",\" биш \":\"1M6T\",\" бл\":\"0V0H0X0Q161J171H180X190L\",\" бла\":\"0V050X0E160T170X180H1906\",\" благ\":\"0V090X0E161P170K180V1902\",\" бо\":\"0V3C0X3R162S175M187V194A1LJC1MK3\",\" бод\":\"0X021M2O\",\" бодо\":\"1M3F\",\" бой\":\"18041L6L\",\" бойы\":\"1L8S\",\" бол\":\"0V0W0X1516161751186F190F1LNX1MJV\",\" бол \":\"1MJJ\",\" бола\":\"1LB7\",\" болг\":\"1M1E\",\" болд\":\"1L8P\",\" боле\":\"0V150X0F160R172W181T\",\" болж\":\"1M1M\",\" болм\":\"1L5I\",\" болн\":\"0V0H0X0A16111M5K\",\" боло\":\"1MCE\",\" болс\":\"1L2R1M22\",\" болу\":\"1L3R\",\" болы\":\"1L6G\",\" боль\":\"174O189D\",\" болғ\":\"1L6M\",\" бор\":\"0V070X091605180C19091M15\",\" боро\":\"180A19061M27\",\" бос\":\"0V0Z0X2Q160P170M181X192C1L461M0T\",\" бост\":\"0V2F0X2U161E170W183H193B1L44\",\" бр\":\"0V2P0X1V161B171Y181Q191S1L0F\",\" бра\":\"0V0X0X111610172A181D1917\",\" брат\":\"0V0T0X0G161H1721181W1919\",\" брз\":\"0V0S0X0M\",\" брзо\":\"0V1G0X0F\",\" бро\":\"0V0K0X0G1609180P1902\",\" бу\":\"0V360X0Q160O175X185H19ES1L0J1M30\",\" був\":\"1946\",\" був \":\"195K\",\" буд\":\"0V3B0X0E16051785186I1970\",\" буде\":\"0V4D0X05187J193K\",\" будз\":\"176X\",\" буди\":\"0V340X021806191P\",\" буду\":\"0V0L174018371910\",\" будь\":\"18121945\",\" бул\":\"170P18021963\",\" була\":\"170E1932\",\" були\":\"191P\",\" було\":\"1802194E\",\" бур\":\"0V030X031605170H180419031M0X\",\" буру\":\"1M1E\",\" бус\":\"1M0M\",\" бут\":\"0X02160A170G18091921\",\" бути\":\"160C192R\",\" буц\":\"1M19\",\" буца\":\"1M2F\",\" бъ\":\"163W\",\" бъд\":\"163D\",\" бъда\":\"161S\",\" бъде\":\"164Z\",\" бър\":\"160V\",\" бърз\":\"161I\",\" бы\":\"17BX18FG\",\" бы \":\"171T186N\",\" был\":\"17AN18CH\",\" был \":\"1896\",\" была\":\"1765184H\",\" были\":\"1836\",\" было\":\"17851888\",\" былі\":\"172J\",\" быст\":\"181T\",\" быт\":\"182G\",\" быть\":\"184I\",\" быц\":\"173G\",\" быць\":\"173V\",\" быў\":\"1751\",\" быў \":\"177E\",\" бэ\":\"170C1M5Q\",\" бэ \":\"1M5A\",\" бэл\":\"1M15\",\" бэлэ\":\"1M22\",\" бя\":\"162U1719\",\" бях\":\"162S\",\" бях \":\"163R\",\" бяха\":\"161M\",\" бі\":\"1719193T1LHZ\",\" біз\":\"19021LB0\",\" біз \":\"1L87\",\" бізд\":\"1L61\",\" біл\":\"170R193A1L8V\",\" білд\":\"1L2H\",\" біле\":\"170W19021L3U\",\" білм\":\"1L2K\",\" біль\":\"193P\",\" білі\":\"19021L37\",\" бір\":\"1LG3\",\" бір \":\"1L8A\",\" біра\":\"1L2U\",\" бірд\":\"1L2A\",\" бірі\":\"1L56\",\" бү\":\"1L311M5P\",\" бүг\":\"1L3T1M1H\",\" бүгд\":\"1M2Z\",\" бүгі\":\"1L56\",\" бүр\":\"1M1B\",\" бүр \":\"1M27\",\" бүт\":\"1M0R\",\" бүтэ\":\"1M1E\",\" бүх\":\"1M1P\",\" бүх \":\"1M22\",\" бүү\":\"1M0R\",\" бүү \":\"1M1I\",\" бұ\":\"1LBL\",\" бұл\":\"1LFH\",\" бұл \":\"1LJZ\",\" бұр\":\"1L2J\",\" бұры\":\"1L30\",\" бә\":\"1L1O\",\" бәрі\":\"1L2K\",\" бө\":\"1L1W\",\" бөл\":\"1L36\",\" бөлі\":\"1L2A\",\" в\":\"0V8R0X8U16B717DF18QJ19Q81L0M1M2T\",\" в \":\"16BI18J7197H\",\" ва\":\"0V450X16162D179Y188Z198B\",\" вад\":\"171Q\",\" важ\":\"0V0E0X0F160F1717180N190Y\",\" важк\":\"190R\",\" вам\":\"0V190X05172J185C1939\",\" вам \":\"0V2O17371887193V\",\" вами\":\"181M190W\",\" вар\":\"0V070X031605171W1809190I\",\" вас\":\"0V1S0X04160N17341842192R\",\" вас \":\"0V4G0X05161D1744187C1940\",\" ваш\":\"0V120X05160O172G182C1928\",\" ваш \":\"0V0R17191810190S\",\" ваше\":\"0V0Z0X02160E181J190B\",\" вв\":\"18041917\",\" вваж\":\"1911\",\" вд\":\"1607180A1918\",\" вдом\":\"190Z\",\" ве\":\"0V6C0X5X163Q17DR186J193B1L0T\",\" вед\":\"0X0E160S17A9180Z1906\",\" веда\":\"17ED\",\" ведн\":\"0X0E161N\",\" вел\":\"0V0T0X0Z1605177E180Y191F\",\" вели\":\"0V210X0O1608180R191I\",\" вель\":\"179U1902\",\" вео\":\"0V1Q\",\" веом\":\"0V4C\",\" вер\":\"0V1K0X1O160I175518321908\",\" вера\":\"17301802\",\" верн\":\"170I182W\",\" веру\":\"0V280X1B17151802\",\" веры\":\"171V\",\" вес\":\"0V0A0X0D1608170D181C190T\",\" вет\":\"0V050X0H170B180E\",\" веч\":\"0V0U0X0W162E171E181E1913\",\" вече\":\"0V1W0X0V164V182A190M\",\" вечі\":\"190U\",\" већ\":\"0V1P\",\" већ \":\"0V3M\",\" веќ\":\"0X2B\",\" веќе\":\"0X2G\",\" вж\":\"192F\",\" вже\":\"192S\",\" вже \":\"1941\",\" вз\":\"161Y181D1912\",\" взе\":\"161Q\",\" взем\":\"162D\",\" ви\":\"0V6D0X4L16A0184319GS1L0E\",\" ви \":\"0V1L0X0C163M19AM\",\" виб\":\"190V\",\" вив\":\"190X\",\" вивч\":\"191B\",\" виг\":\"191R\",\" вигл\":\"191F\",\" вигр\":\"190Z\",\" вид\":\"0V360X33162G183X190E\",\" вида\":\"0X0K18041908\",\" виде\":\"0V470X13184X1902\",\" види\":\"0V3R0X0Y161Q180W1902\",\" видо\":\"0X0P1804\",\" видя\":\"162X1802\",\" вие\":\"0X0A1615\",\" вие \":\"0X0B162C\",\" виж\":\"162I180F1903\",\" вижд\":\"1651\",\" вик\":\"0V090X0S16061915\",\" вика\":\"0X0E160C\",\" викл\":\"190W\",\" вин\":\"0V0C0X0G161O180X1910\",\" вина\":\"0V0C0X04162V180F190D\",\" вино\":\"0V0H0X0D160P180Y190E\",\" вип\":\"1919\",\" вир\":\"18021917\",\" вирі\":\"191B\",\" вис\":\"0V0C0X12160I1803190Z\",\" вист\":\"0X0S190D\",\" виш\":\"0V1S1902\",\" више\":\"0V4B\",\" вк\":\"0X0C161B180H190A\",\" вкъ\":\"160Z\",\" вкъщ\":\"1622\",\" вл\":\"0V070X0X161H180L190G\",\" вла\":\"0V080X09160R180B190G\",\" влак\":\"161E\",\" вле\":\"0X0T160A1802\",\" влез\":\"0X0K160M1802\",\" вн\":\"0X0P160Y18101907\",\" внат\":\"0X0D\",\" вни\":\"0X0G160Z180O1902\",\" вним\":\"0X0H16221811\",\" во\":\"0V4S0XDB1611174U188O199Y\",\" во \":\"0XDI181C\",\" вод\":\"0V0S0X11160L170I181I1913\",\" вода\":\"0V0D0X0T160Z180G190B\",\" воз\":\"0V0S0X1W170K182J\",\" вози\":\"0V1C0X0C\",\" возм\":\"0X06181M\",\" вол\":\"0V3V0X0D1605171S180Y190O\",\" воле\":\"0V2K0X0418031902\",\" воли\":\"0V741802\",\" воло\":\"180O190S\",\" вон\":\"0X021805199H\",\" вона\":\"198E\",\" вони\":\"195D\",\" воо\":\"0X0V180P\",\" вооп\":\"0X0O\",\" воп\":\"181C\",\" вопр\":\"182H\",\" вос\":\"0X08172O181B1904\",\" вось\":\"172J18061905\",\" вот\":\"1815\",\" вот \":\"1821\",\" вп\":\"0X041605180O1912\",\" вр\":\"0V4C0X5H163X183J190V\",\" вра\":\"0V1S0X2R161B1810190I\",\" врат\":\"0V420X2I162G1805\",\" вре\":\"0V2L0X36162N183H1906\",\" вред\":\"0V0H0X0E1809\",\" врем\":\"0V5V0X2R165G1863\",\" врс\":\"0V050X0O\",\" врск\":\"0X0O\",\" вс\":\"0X0C165Z18B01954\",\" все\":\"0X031627187D1939\",\" все \":\"161M185N194G\",\" всег\":\"1850\",\" всек\":\"162W\",\" всем\":\"181I\",\" всех\":\"181M\",\" вси\":\"163U\",\" всич\":\"167W\",\" вст\":\"1824190M\",\" встр\":\"182T\",\" всуш\":\"0X0E\",\" всяк\":\"161G180I\",\" всё\":\"1859\",\" всё \":\"1893\",\" всі\":\"191X\",\" всі \":\"1928\",\" вт\":\"0X051607180C1913\",\" втом\":\"190V\",\" ву\":\"0V050X021727190E\",\" вуч\":\"1723\",\" вучы\":\"1720\",\" вч\":\"0X0J160Z1811191T\",\" вче\":\"0X0O1614181F\",\" вчер\":\"0X0P162D182N\",\" вчи\":\"190X\",\" вчит\":\"190Y\",\" вчо\":\"190X\",\" вчор\":\"191D\",\" въ\":\"165D\",\" във \":\"161C\",\" въз\":\"161G\",\" въп\":\"161J\",\" въпр\":\"1639\",\" вър\":\"161Z\",\" върв\":\"1613\",\" върн\":\"1627\",\" вы\":\"17FV18F9\",\" вы \":\"179C18D5\",\" выв\":\"17251806\",\" выву\":\"172Z\",\" выгл\":\"171X181E\",\" вык\":\"173A180D\",\" выка\":\"1728\",\" выкл\":\"1726180G\",\" вып\":\"1728180Z\",\" выпа\":\"171M1805\",\" выр\":\"1736180N\",\" выра\":\"174K180M\",\" выс\":\"171V1816\",\" выхо\":\"1710181M\",\" вэ\":\"1M6F\",\" вэ \":\"1M7H\",\" вя\":\"160Y173Z\",\" вядо\":\"171T\",\" вял\":\"172M\",\" вялі\":\"173N\",\" вяр\":\"160Z1714\",\" вярв\":\"161G\",\" ві\":\"172E19G6\",\" від\":\"171C197X\",\" від \":\"193A\",\" відв\":\"190Z\",\" відк\":\"190V\",\" відп\":\"192I\",\" відч\":\"1911\",\" він\":\"170W19A2\",\" він \":\"19DY\",\" вір\":\"190Z\",\" г\":\"0V3X0X8S165417CL187F196E1L161M8J\",\" га\":\"0V270X0N160P179G180P192S1L0K1M5Y\",\" га \":\"0V2E\",\" гав\":\"172618021903\",\" гава\":\"171T1802\",\" гад\":\"0X041605173G1802190X1M13\",\" гада\":\"191B1M1M\",\" гадз\":\"172V\",\" газ\":\"0X05170S180E19091L0X1M0T\",\" газа\":\"1M1A\",\" гай\":\"1M13\",\" гайх\":\"1M27\",\" гал\":\"0X031734180719051M11\",\" гала\":\"0X02171W18021904\",\" ган\":\"171519021M0X\",\" ганц\":\"1M1U\",\" гар\":\"0V030X03160F173Q1807191N1M2A\",\" гара\":\"0X03160Q17241807190O1M1A\",\" гарн\":\"191G\",\" гд\":\"0V161821\",\" где\":\"0V1E182R\",\" где \":\"0V3L184Q\",\" ги\":\"0V040X5Q1611180A1L0G\",\" ги \":\"0X7D160Z\",\" гл\":\"0V2D0X34162I172C181L190E\",\" гла\":\"0V1E0X1F160X181B1904\",\" глав\":\"0V1E0X0L160R180M\",\" глад\":\"0V0V0X0C160R18041906\",\" глаз\":\"181N\",\" глас\":\"0V1C0X0J160I1802\",\" гле\":\"0V120X23161F\",\" глед\":\"0V2Q0X25162Y\",\" глу\":\"0V0F0X0O160H170H180Q1905\",\" глуп\":\"0V0Q0X0H160X180R\",\" гля\":\"172N1803\",\" гляд\":\"173U1804\",\" го\":\"0V3F0XIF16DH174N189S19671M10\",\" го \":\"0XKF167I\",\" гов\":\"0V1B0X06164T185Z192K\",\" гово\":\"0V390X06169S18AN193P\",\" год\":\"0V1Q0X17161S173A181V191E\",\" год \":\"0V0U0X021720180M\",\" года\":\"1712181E\",\" годи\":\"0V3L0X17163O1803191Q\",\" гол\":\"0V090X161613170Z181V191J1M0Z\",\" голе\":\"0X0Z160F\",\" голо\":\"182X191T\",\" голя\":\"161M\",\" гор\":\"0V0C0X0L160P1732182J190E\",\" гора\":\"173A180K\",\" горо\":\"18251903\",\" гот\":\"0V070X0Q160I1815191D\",\" готв\":\"0X0E160D\",\" гото\":\"0V0I0X0E160N18241913\",\" гр\":\"0V1P0X2L162Q173D181Q193K1L0D\",\" гра\":\"0V110X16161D1720180Q191W\",\" град\":\"0V1X0X0Y16261805\",\" грам\":\"0X021608171M18071902\",\" грат\":\"190R\",\" гре\":\"0V0J0X0W1616180A1904\",\" греш\":\"0V190X0T162D\",\" гри\":\"0X0N160618051904\",\" гриж\":\"0X0H1608\",\" гро\":\"0V050X091728180C191Q\",\" грош\":\"173A192B\",\" гу\":\"0V0G0X0E160A172O180B190F1L0F1M10\",\" гул\":\"172M18061903\",\" гуля\":\"172G180B1904\",\" гэ\":\"17LW1MCH\",\" гэв\":\"1M0P\",\" гэд\":\"1M2U\",\" гэдг\":\"1M1Y\",\" гэдэ\":\"1M3U\",\" гэж\":\"1M67\",\" гэж \":\"1MBS\",\" гэр\":\"1M40\",\" гэр \":\"1M1M\",\" гэрл\":\"1M1Q\",\" гэрт\":\"1M33\",\" гэс\":\"1M11\",\" гэсэ\":\"1M22\",\" гэт\":\"17S5\",\" гэта\":\"17SG\",\" гэту\":\"173O\",\" гэты\":\"17DL\",\" гэх\":\"1M0R\",\" гіст\":\"171V\",\" д\":\"0VJR0XI216FX17CE18HK19IA1L9B1M7Y\",\" да\":\"0VS80XRT16SD17GP185R192Q1L761M6I\",\" да \":\"0VSG0XSG16SG177Z181A1L5E\",\" даа\":\"1M1B\",\" дабр\":\"171O\",\" дав\":\"0X0C160H172W182E19191M11\",\" дава\":\"0X0B1610171K1838190W\",\" дад\":\"0X1N1615170Y1803\",\" дада\":\"0X0E170O\",\" даде\":\"0X0Y161Y\",\" дадо\":\"0X0E160G170K\",\" даж\":\"1607170A1815\",\" даже\":\"160G1825\",\" дазв\":\"171K\",\" дай \":\"1613170Z180T190J\",\" дайы\":\"1L2U\",\" дал\":\"0V0I0X2O160W1721181C190I1L0X\",\" дали\":\"0X2E161B18081903\",\" дам\":\"0V060X03160C1710180719051L32\",\" дамы\":\"1L2D\",\" дан\":\"0V340X1M160B170R180919041M0P\",\" дан \":\"0V230X1N\",\" дана\":\"0V5L\",\" данд\":\"1M1A\",\" дап\":\"172W\",\" дапа\":\"173Z\",\" дар\":\"0V030X0216041730180419031M1T\",\" дара\":\"17131M2N\",\" даро\":\"0V07171M1802\",\" дах\":\"170S19021M1N\",\" дахи\":\"1M37\",\" дај\":\"0V0L0X14\",\" дај \":\"0V0H0X14\",\" даље\":\"0V1Q\",\" дв\":\"0V0Z0X1D161X171R182V191T\",\" два\":\"0V0L0X11160X1728181D190O\",\" два \":\"0V140X0C160V1723181O190N\",\" двај\":\"0X0J\",\" две\":\"0V0C0X0I160V181K190L\",\" две \":\"0V0V0X0D1611180T\",\" двер\":\"181U190V\",\" де\":\"0V410XDT164018B2194L1LAE\",\" де \":\"0X031603192G1L4S\",\" дев\":\"0V0L0X0X1605181D1907\",\" дево\":\"0V1A0X0T180N\",\" деге\":\"1L27\",\" дей\":\"160818151L2H\",\" дейс\":\"160F1824\",\" дейі\":\"1L2N\",\" дек\":\"0XC4160318021905\",\" дека\":\"0XCN1803\",\" дел\":\"0V0O0X111604185J\",\" дела\":\"0V0B0X021880\",\" делу\":\"0V0S0X0J1805\",\" ден\":\"0X2B161O183P190Y1L1Z\",\" ден \":\"0X0S162V1902\",\" дене\":\"0X1A181Q\",\" день\":\"1857191B\",\" деп\":\"0X05180219031L5R\",\" деп \":\"1L7N\",\" дер\":\"0V030X07181H190H\",\" дере\":\"0X04181L190L\",\" дес\":\"0V180X0C160J180Q190M\",\" десе\":\"0V0U0X08161318031902\",\" деси\":\"0V1X\",\" дет\":\"0V0E0X0K160J181T1903\",\" дете\":\"0V0P0X0F160V18141902\",\" дец\":\"0V0M0X0W160Y\",\" деца\":\"0V0P0X0X1620\",\" деч\":\"0V0J0X0I\",\" дечк\":\"0X0J\",\" дж\":\"161E170M180P1918\",\" джо\":\"160O170E180H190X\",\" джон\":\"160Z170L180T1919\",\" дз\":\"17AL1906\",\" дзве\":\"171R\",\" дзе\":\"179G1903\",\" дзе \":\"176O\",\" дзен\":\"173J\",\" дзя\":\"174S\",\" дзяк\":\"171M\",\" дзяў\":\"172B\",\" дзі\":\"172V\",\" дзіц\":\"171V\",\" ди\":\"0V0O0X0N160M180L19271L0U\",\" див\":\"0V070X0316031804191I\",\" диви\":\"1912\",\" дити\":\"190W\",\" дл\":\"0X061603172Q182E191W\",\" для\":\"174M182X1927\",\" для \":\"176U185E1937\",\" дн\":\"0V050X06161G170K180X190O\",\" дне\":\"0V040X06161C180F\",\" днес\":\"162M\",\" до\":\"0VA70XD616CJ176Y18CG19G01L2D1M1R\",\" до \":\"0V1D0X1J162T182C196A\",\" доа\":\"0X0G\",\" доаѓ\":\"0X0H\",\" доб\":\"0V3X0X461645175U1816193A\",\" доба\":\"0V1X0X0Q160C180G\",\" доби\":\"0V1Q0X0T1809\",\" добр\":\"0V6D0X2V166N178K181A194N\",\" добъ\":\"161S\",\" дов\":\"0V0K0X0Z160V181B191M\",\" дове\":\"0X071612181B1909\",\" дово\":\"0V1A0X0R160M1815190H\",\" дові\":\"190W\",\" дод\":\"0V0C0X0L18021915\",\" доде\":\"0X0J1804\",\" додо\":\"191D\",\" дожд\":\"0X06171I181L\",\" доз\":\"0V0J0X0X1802190Y\",\" дозв\":\"0V1B0X0N1802191D\",\" дозн\":\"0X0C\",\" дой\":\"16251802\",\" дойд\":\"164I1802\",\" док\":\"0V1B0X0F161H170J180M1909\",\" док \":\"0V20\",\" дока\":\"0V0D0X09161Q180G1903\",\" дол\":\"0V0R0X18160D170F184S190F1L0O1M15\",\" долг\":\"0X0P181G\",\" долж\":\"0X0A186P\",\" доло\":\"18021M1Y\",\" дом\":\"0V080X1Z160K1729183Z190K\",\" дом \":\"0X04171L181R\",\" дома\":\"0V0F0X1X1611171B182W190H\",\" домо\":\"0X0218211905\",\" дон\":\"0V080X0X160E1803190B\",\" доне\":\"0V0H0X0Y160Q1802\",\" доп\":\"0V0I0X1U160C180A193J\",\" допа\":\"0V120X1O\",\" допо\":\"1806194Y\",\" дор\":\"0V080X05160E1812190U\",\" доро\":\"181Z1913\",\" дос\":\"0V0K0X1E161T170N181A191N1L2H\",\" дост\":\"0V0U0X0X163B1824190L1L1Q\",\" доцн\":\"0X0G\",\" дођ\":\"0V13\",\" дође\":\"0V1N\",\" дој\":\"0X27\",\" дојд\":\"0X2A\",\" доўг\":\"171V\",\" др\":\"0V2O0X2O162M172L183D1925\",\" дра\":\"0V0J0X0L1604170J18081907\",\" драг\":\"0V170X0I1802\",\" држ\":\"0V0F0X0H\",\" дру\":\"0V1U0X1W1628171718441928\",\" друг\":\"0V3Z0X1U164N1715185P1915\",\" друж\":\"0V0B0X03180G190Z\",\" друз\":\"181M1914\",\" дрэ\":\"172A\",\" дрэв\":\"171S\",\" ду\":\"0V1J0X0P161G1742184T198O1M84\",\" дуг\":\"0V141M0X\",\" дуго\":\"0V20\",\" дуж\":\"0V09170G1957\",\" дуже\":\"0V09197F\",\" дум\":\"160Z174K185L194R\",\" дума\":\"161E175318A0195U\",\" думк\":\"171T1913\",\" дур\":\"0X09170M180D190D1M61\",\" дург\":\"1M2Z\",\" дурт\":\"1M8Z\",\" дуу\":\"1M2C\",\" дуус\":\"1M2J\",\" дъ\":\"162H\",\" дъл\":\"1612\",\" дълг\":\"161K\",\" дър\":\"160Y\",\" държ\":\"1619\",\" ды\":\"171Z18071L0E\",\" дэ\":\"170Z18031M3A\",\" дэл\":\"1M0T\",\" дэлх\":\"1M1E\",\" дээ\":\"1M2K\",\" дээр\":\"1M4I\",\" дяку\":\"190Y\",\" ді\":\"19361L0G\",\" дів\":\"190Y\",\" дівч\":\"191D\",\" дійс\":\"190R\",\" діт\":\"1912\",\" дү\":\"1L1T\",\" дүни\":\"1L2R\",\" дә\":\"1L2D\",\" дө\":\"1M0L\",\" е\":\"0V0K0X77167U170N18A9190N1LCD1M09\",\" е \":\"0XJF16LV\",\" ев\":\"0V0B0X0E160818091902\",\" еве \":\"0X0F\",\" ег\":\"1603185B190C1L1I\",\" его\":\"18751902\",\" его \":\"18CL\",\" ед\":\"0X2Q1653170B181C1L25\",\" еде\":\"0X0Y180A\",\" еден\":\"0X0Z\",\" еди\":\"0X0J162T180R\",\" един\":\"0X0K165S181A\",\" едн\":\"0X1X162W\",\" една\":\"0X19163M\",\" едно\":\"0X0S162I\",\" еді\":\"1L3M\",\" еді \":\"1L3A\",\" език\":\"1618\",\" ей\":\"1603181T\",\" ей \":\"1603182I\",\" ек\":\"0V060X071607190D1L5C\",\" еке\":\"1L42\",\" екен\":\"1L4W\",\" екі\":\"1L57\",\" екі \":\"1L5C\",\" ел\":\"0V040X05160G180819071L45\",\" елд\":\"1L2T\",\" елді\":\"1L27\",\" ем\":\"0X031705182L19031L4I\",\" еме\":\"1L78\",\" емес\":\"1LA4\",\" ему\":\"183E\",\" ему \":\"1868\",\" ен\":\"0V0J0X04160219031L1C\",\" ер\":\"1L501M0N\",\" ере\":\"1L21\",\" ерт\":\"1L2X\",\" ерте\":\"1L44\",\" ес\":\"0V0A0X031605170G185X19051L40\",\" есл\":\"183K\",\" если\":\"186J\",\" ест\":\"1603184Q1L1N\",\" есть\":\"1883\",\" есі\":\"1L2J\",\" ет\":\"0V020X04160F19021L3E\",\" еш\":\"18051L32\",\" ешк\":\"1L26\",\" ешкі\":\"1L2R\",\" ешқ\":\"1L2A\",\" ешқа\":\"1L3A\",\" ещ\":\"1832\",\" ещё\":\"183Y\",\" ещё \":\"1877\",\" её\":\"183E\",\" её \":\"184N\",\" ең\":\"1L2F\",\" ең \":\"1L2M\",\" еңбе\":\"1L2H\",\" ж\":\"0V2F0X11160X173G184E192U1LND1M1I\",\" ж \":\"171H18031915\",\" жа\":\"0V0D0X0L16081734180Y190T1LO21M12\",\" жада\":\"1724\",\" жаз\":\"1L4O\",\" жазы\":\"1L2A\",\" жал\":\"0V090X0P1605170J180R19071L42\",\" жал \":\"0X0E\",\" жалп\":\"1L23\",\" жалғ\":\"1L2D\",\" жан\":\"171T18041L2M\",\" жанч\":\"1726\",\" жар\":\"170J180C190D1L6G1M11\",\" жара\":\"18021L2A\",\" жарг\":\"1M22\",\" жары\":\"1L3U\",\" жас\":\"1LAW\",\" жаса\":\"1L99\",\" жаст\":\"1L2U\",\" жасы\":\"1L23\",\" жат\":\"1L55\",\" жаты\":\"1L3H\",\" жатқ\":\"1L2D\",\" жау\":\"1L3I\",\" жауа\":\"1L2N\",\" жағ\":\"1L55\",\" жағд\":\"1L4W\",\" жақ\":\"1L84\",\" жақс\":\"1L87\",\" жаң\":\"1L55\",\" жаңа\":\"1L61\",\" жд\":\"1812\",\" же\":\"0V3T0X13161C183Y19081LA6\",\" же \":\"182L1907\",\" жек\":\"1L2O\",\" жеке\":\"1L2D\",\" жел\":\"0V3M0X09160E180L1L1I\",\" желе\":\"0V260X031807\",\" жели\":\"0V70\",\" жен\":\"0V0V0X0X160V1823\",\" жена\":\"0V170X0K1612180Z\",\" женщ\":\"181K\",\" жер\":\"1603180419021L5Z\",\" жерг\":\"1L23\",\" жерд\":\"1L30\",\" жет\":\"1L4X\",\" жетк\":\"1L2R\",\" жи\":\"0V2C0X22162A183Q192N1L1P1M1J\",\" жив\":\"0V2S0X2K162H1828191N\",\" живе\":\"0V180X1D162K1806191A\",\" живи\":\"0V2Q0X021905\",\" живо\":\"0V2Z0X131624180W\",\" живё\":\"181P\",\" жиз\":\"181V\",\" жизн\":\"183G\",\" жил\":\"180G19041M1J\",\" жил \":\"180E1M1Q\",\" жина\":\"1L2U\",\" жит\":\"0X03180N191B\",\" житт\":\"191A\",\" жо\":\"0X02171Y190T1LA91M0S\",\" жол\":\"0X021L4S\",\" жолд\":\"1L23\",\" жонк\":\"171T\",\" жоўт\":\"1727\",\" жоғ\":\"1L48\",\" жоға\":\"1L61\",\" жоқ\":\"1L80\",\" жоқ \":\"1L9W\",\" жы\":\"175X1L6F\",\" жыв\":\"174I\",\" жыве\":\"172R\",\" жыву\":\"171W\",\" жыл\":\"170K1LAS\",\" жыл \":\"1L30\",\" жылд\":\"1L5S\",\" жылы\":\"1L4Z\",\" жыц\":\"174K\",\" жыцц\":\"175G\",\" жі\":\"190K1L1B\",\" жібе\":\"1L27\",\" жінк\":\"190S\",\" жү\":\"1L6H\",\" жүз\":\"1L3D\",\" жүзе\":\"1L2X\",\" жүр\":\"1L66\",\" жүрг\":\"1L34\",\" жүре\":\"1L2K\",\" жұ\":\"1L5W\",\" жұм\":\"1L94\",\" жұмы\":\"1LBK\",\" жә\":\"1L9G\",\" жән\":\"1LFU\",\" және\":\"1LKU\",\" з\":\"0V7Y0X8P167D17FV18CQ19MI1L2E1M6I\",\" з \":\"17CG198C\",\" за\":\"0VCT0XH316L917M118FA19JU1L4G1M5V\",\" за \":\"0V4L0XAT16B6179318551944\",\" заб\":\"0V150X2E1627175X182F191Y\",\" заба\":\"0V0W0X11161017151808190G\",\" забо\":\"0V1K0X0Y180N1908\",\" забр\":\"0V0F0X04162P180B1907\",\" забу\":\"1719180S191O\",\" забы\":\"172F1822\",\" забі\":\"1737\",\" зав\":\"0V180X131616171B182I193C1M13\",\" завг\":\"19031M1M\",\" завж\":\"1924\",\" зави\":\"0V0C0X061615180K\",\" завр\":\"0V2L0X0W\",\" завт\":\"1838191O\",\" заг\":\"0V070X0V160O171P180G190Y1M0P\",\" зага\":\"0X021608171L180719091M1E\",\" загр\":\"0V0B0X0I18051903\",\" загу\":\"0X061612190M\",\" зад\":\"0V0Q0X141618171Y1818190W\",\" зада\":\"0V0D0X06160X171X181G1908\",\" задо\":\"0V0P0X0L1802190X\",\" зае\":\"0X0M161H1803\",\" заед\":\"0X0K160S1803\",\" зает\":\"1620\",\" зай\":\"1717180C192A\",\" займ\":\"170R180A191H\",\" зайн\":\"191K\",\" зак\":\"0V0V0X0R161U173I182B191J\",\" зака\":\"0V0W0X0C160F172C180Q\",\" зако\":\"0V0F0X09160H171D181Y190Q\",\" закъ\":\"161U\",\" закі\":\"1913\",\" зал\":\"0V050X09160E170V1807191D1M25\",\" зали\":\"1802191L\",\" залу\":\"0X021M3B\",\" зам\":\"0V0R0X1Q160I172F181I19141L0V\",\" заме\":\"0V0B0X051606170Z181G\",\" зами\":\"0V0A0X0L160N\",\" замо\":\"0V0V0X0X170R180B190Q\",\" зан\":\"0V0C0X07160C172B181W190Z\",\" зана\":\"17191917\",\" зани\":\"0V0T0X05160L181D\",\" заня\":\"171Z18201905\",\" зап\":\"0V0X0X1A1636173S181X193R\",\" запа\":\"0V0H0X0A1614170W180J190C\",\" запи\":\"0V090X02160A180O1924\",\" запл\":\"0V090X02161P171M180U190Z\",\" запо\":\"0V090X0O163M170E180I1906\",\" запр\":\"0V0U0X06171D180N190X\",\" запі\":\"170S190R\",\" зар\":\"0V1H0X19160K173B180N192F1M0K\",\" зар \":\"0V3C\",\" зара\":\"0V0B0X0616111747180M192U\",\" заре\":\"0X1118031903\",\" зас\":\"0V0I0X10160W173C1818191G\",\" заст\":\"0V0D0X0E160E172E181A190G\",\" зат\":\"0V0R0X1D161A170J180F190U1L0X\",\" затв\":\"0V120X0P161Z\",\" зате\":\"1807190Z\",\" зато\":\"0V0H0X0O160J18051902\",\" зауы\":\"1L23\",\" заф\":\"0X0V\",\" зафа\":\"0X0U\",\" зах\":\"0V0E160C171Q180K190V1M0T\",\" захи\":\"190C1M1M\",\" заче\":\"181J190O\",\" заш\":\"0V1U0X081804\",\" зашт\":\"0V4M0X07\",\" защ\":\"162W180B\",\" защо\":\"165O\",\" заў\":\"174L\",\" заўс\":\"173E\",\" заўт\":\"172E\",\" заң\":\"1L4F\",\" заңд\":\"1L2N\",\" зб\":\"0V0T0X2T171E1915\",\" збо\":\"0V0U0X3H17091904\",\" због\":\"0V250X03\",\" збор\":\"0X3L1903\",\" збір\":\"171O\",\" зв\":\"0V0O0X0F160G172G180Z192D\",\" зву\":\"0V0D0X0K16071809190B\",\" звуч\":\"0V0K0X0I160918081905\",\" звы\":\"171O\",\" звыч\":\"1727\",\" зві\":\"1911\",\" зг\":\"0V040X0F171C190M\",\" зд\":\"0V0F0X0I160J174A182R192A\",\" зда\":\"17531808191X\",\" здае\":\"171Z\",\" здар\":\"173C\",\" здає\":\"191X\",\" зде\":\"1831\",\" здес\":\"185J\",\" здра\":\"0V1A0X0B161A170O1808\",\" зе\":\"0V0Q0X1B160H170B180Q190G1L0Z\",\" зем\":\"0V0K0X181608180L190A\",\" земј\":\"0X0N\",\" зл\":\"0V090X0A160G171S180B190Q\",\" зм\":\"0X02171Q1803191Z\",\" змо\":\"170N190U\",\" змож\":\"190V\",\" змі\":\"1914\",\" змін\":\"190X\",\" зн\":\"0V5S0X5N164A1759187V199P\",\" зна\":\"0V6V0X7E164T175S18AI19A2\",\" зна \":\"0V3Z\",\" знав\":\"191T\",\" знае\":\"0X4G164V186J\",\" знай\":\"172O192C\",\" знал\":\"0V0Y1848190Z\",\" знам\":\"0V6C0X2Q164518081906\",\" знао\":\"0V26\",\" знат\":\"0V1B181J190Z\",\" знах\":\"1726190L\",\" знач\":\"0V0S0X0K160Y17211815190B\",\" знаш\":\"0V1T\",\" знаю\":\"185Z1941\",\" знає\":\"194I\",\" зно\":\"171M190U\",\" знов\":\"1918\",\" зо\":\"0V0H0X2X170R180S190Q1L0I1M1R\",\" зог\":\"1M0R\",\" зогс\":\"1M1I\",\" зохи\":\"1M16\",\" зош\":\"0X3Q\",\" зошт\":\"0X3X\",\" зр\":\"0V03174K1809197R\",\" зра\":\"176F1907\",\" зраб\":\"177C\",\" зраз\":\"172A\",\" зро\":\"170U198M\",\" зроб\":\"171719B5\",\" зроз\":\"1914\",\" зу\":\"0V0517161809191Q1M1Y\",\" зупи\":\"1910\",\" зур\":\"1M19\",\" зура\":\"1M16\",\" зург\":\"1M16\",\" зус\":\"171P1915\",\" зуст\":\"191K\",\" зусі\":\"172J\",\" зэ\":\"1M0T\",\" зээл\":\"1M16\",\" зя\":\"171Z\",\" зял\":\"172E\",\" зялё\":\"173K\",\" зі\":\"170C191G\",\" зі \":\"1916\",\" зү\":\"1M44\",\" зүг\":\"1M0P\",\" зүгэ\":\"1M1A\",\" зүй\":\"1M3J\",\" зүйл\":\"1M6P\",\" зө\":\"1M2M\",\" зөв\":\"1M2S\",\" зөв \":\"1M1Q\",\" зөвх\":\"1M1Y\",\" и\":\"0V9G0X7R169F18CD1L1T1M68\",\" и \":\"0V5N0X6Z168V189T\",\" иг\":\"0V190X0R1618181I\",\" игр\":\"0V1E0X0Y161C181Z\",\" игра\":\"0V360X0X162S182P\",\" ид\":\"0V2Y0X0K161D18291M1E\",\" идва\":\"161D\",\" иде\":\"0V310X0J160N180R\",\" иде \":\"0V2N\",\" идем\":\"0V39\",\" идеј\":\"0V0T0X0D\",\" идти\":\"181M\",\" идэ\":\"1M0Z\",\" идэх\":\"1M16\",\" из\":\"0V6V0X6P16BD185K\",\" из \":\"0V191840\",\" иза\":\"0V12\",\" изб\":\"0V0I0X17160Y180E\",\" избе\":\"0V0K0X0G160G180A\",\" избо\":\"0V0D0X0E160I\",\" изв\":\"0V1D0X1Q161U1811\",\" изва\":\"0V0A0X0C160A\",\" изве\":\"0V0M0X0G160Y180V\",\" изви\":\"0V1D0X0K16271810\",\" изг\":\"0V270X38162C1802\",\" изгл\":\"0V3I0X2D1643\",\" изгу\":\"0V1L0X0M160G\",\" изк\":\"160Y\",\" изл\":\"0V0J0X0Z161D1802\",\" изле\":\"0X0T160V\",\" изли\":\"0X0216131802\",\" изм\":\"0V0F0X0I160K180P\",\" изн\":\"0V0U0X0O160J1802\",\" изне\":\"0V1Q0X0L1610\",\" изп\":\"162A\",\" изпо\":\"161D\",\" изпр\":\"161H\",\" ий\":\"1M0V\",\" ийм\":\"1M11\",\" ийм \":\"1M1Q\",\" ил\":\"0V0U0X0P161618191M1R\",\" или\":\"0V0Z0X0U161B181O\",\" или \":\"0V2I0X0W162R1833\",\" илү\":\"1M1R\",\" илүү\":\"1M3I\",\" им\":\"0V5M0X9D168I182U\",\" им \":\"0V0A0X2S160N181H\",\" има\":\"0V5V0X9B168F\",\" има \":\"0V5W0X4J167T\",\" имаа\":\"0X0I\",\" имам\":\"0V3V0X2M1658\",\" имао\":\"0V1S\",\" имат\":\"0V130X04161M\",\" имаш\":\"0V110X231635\",\" име\":\"0V0K0X0H160M181R\",\" ин\":\"0V0X0X0V161F182A1L1D1M0S\",\" инт\":\"0V0G0X0M160V181K\",\" инте\":\"0V130X0M161R182T\",\" ир\":\"0X02160218021M5E\",\" ирн\":\"1M0X\",\" ирнэ\":\"1M1U\",\" ирс\":\"1M1R\",\" ирсэ\":\"1M3I\",\" ирэ\":\"1M29\",\" ирэх\":\"1M3B\",\" ис\":\"0V360X3I167T182F1L0F\",\" иск\":\"0V0N0X14167R180R\",\" иска\":\"0X0716F2180K\",\" иско\":\"0V0B0X0C\",\" исп\":\"0V180X1M1606181F\",\" испи\":\"0V0I0X0H\",\" испо\":\"0V0F0X07181D\",\" испр\":\"0V1D0X0E180C\",\" ист\":\"0V1R0X1B1611180V\",\" исти\":\"0V250X0316151808\",\" исто\":\"0V1B0X0P16101819\",\" ит\":\"0V050X04160918091L0P1M22\",\" итг\":\"1M2C\",\" итгэ\":\"1M4P\",\" их\":\"0V0F181N1M3N\",\" их \":\"0V0I18281M3F\",\" й\":\"16021704193K\",\" й \":\"170C1918\",\" йо\":\"160518021950\",\" йог\":\"1949\",\" його\":\"1963\",\" йом\":\"191O\",\" йому\":\"192G\",\" йти \":\"190X\",\" к\":\"0V9T0X8616AM17CK18GJ19BF1LKF1M0Y\",\" к \":\"182X\",\" ка\":\"0V990XC316H017MP18CG194D1L1G\",\" каб\":\"1604176L18041905\",\" каб \":\"1794\",\" кав\":\"0X02171W190T\",\" кад\":\"0V2N0X2K\",\" када\":\"0V590X03\",\" каде\":\"0X2M\",\" каж\":\"0V1W0X4E1621172S1829191M\",\" кажа\":\"0X2Q161H171D1902\",\" кажд\":\"182O\",\" каже\":\"0V3M0X101629181J191F\",\" кажи\":\"0V0J0X0Q160O1907\",\" кажу\":\"0V0O0X0C17241802190M\",\" каз\":\"0V030X051648172C180B190L\",\" каза\":\"165F173B180G190S\",\" казв\":\"163L\",\" как\":\"0V2Z0X69169M18BV\",\" как \":\"165918EW\",\" какв\":\"0V0R0X0K16D7\",\" каки\":\"181K\",\" како\":\"0V6C0X63183V\",\" какъ\":\"1613\",\" кал\":\"0X06160317FF18051903\",\" калі\":\"17IX\",\" кам\":\"0V0B0X0P160B173F180B1905\",\" камо\":\"0X0C\",\" камп\":\"171S\",\" кан\":\"0V0E0X0D160D173I180J190G\",\" као\":\"0V1O\",\" као \":\"0V47\",\" кар\":\"0V0E0X0J161I174W1819190O\",\" кара\":\"0V070X07161N171A180F1903\",\" карт\":\"0V0N0X081619170K1819190R\",\" кары\":\"172W\",\" кат\":\"0V020X04162K170S180D1908\",\" като\":\"164Y1803\",\" каф\":\"0V0D0X0M160N1802\",\" кафе\":\"0V080X0M161918031902\",\" ках\":\"172Z\",\" каха\":\"174G\",\" кај\":\"0V040X0P\",\" кај \":\"0X0Q\",\" ке\":\"0V080X05160O170G180G190F1LME\",\" кез\":\"1L7M\",\" кезд\":\"1L5I\",\" кезе\":\"1L2H\",\" кей\":\"16061L32\",\" кейі\":\"1L2X\",\" кел\":\"0X021LFX\",\" келг\":\"1L3A\",\" келд\":\"1L3R\",\" келе\":\"1L8Y\",\" келм\":\"1L40\",\" келі\":\"1L3H\",\" кер\":\"19081L6X\",\" кере\":\"1L90\",\" кет\":\"1L75\",\" кетт\":\"1L5L\",\" кеш\":\"1L3V\",\" кеше\":\"1L20\",\" кең\":\"1L2M\",\" кеңе\":\"1L20\",\" ки\":\"0V0Z0X0J160V180V190Z1L141M0X\",\" кино\":\"160J180G1M1A\",\" кл\":\"0V0H0X0U160Z172018191913\",\" кла\":\"0V050X0D160C171Q180L190H\",\" клу\":\"0V030X0I170E18051902\",\" клуч\":\"0X0D\",\" кн\":\"0X0S161M1734181K191Q\",\" кни\":\"0X12161T1822191Z\",\" книг\":\"0X13163N183O190Q\",\" книж\":\"160718061924\",\" кні\":\"1752\",\" кніг\":\"1762\",\" ко\":\"0V9T0XAE16EH175C18CE199I1L431M14\",\" ко \":\"0V26180F\",\" ког\":\"0V0E0X36162V1852190L\",\" кога\":\"0V0P0X2Z1659\",\" когд\":\"187Y\",\" кого\":\"0X0E160S181E190U\",\" кое\":\"0X0A162N180H\",\" коет\":\"1655\",\" кож\":\"0X031605172Z1804190S\",\" кожн\":\"174G190X\",\" кои\":\"0X0C1615\",\" коит\":\"1629\",\" кой\":\"162Q\",\" кой \":\"1633\",\" койт\":\"162S\",\" кол\":\"0V2A0X41164E173M180Y194G\",\" кола\":\"0V0R0X1D162A\",\" коле\":\"0V090X08161J171Z180C1907\",\" коли\":\"0V4P0X04160A180A195J\",\" колк\":\"0X2K1654\",\" коль\":\"173C18071908\",\" ком\":\"0V0R0X0T160Q1833191J1L3B1M0M\",\" комн\":\"182B\",\" комп\":\"0V0R0X0E1613181G190W1L2D1M1A\",\" кон\":\"0V0S0X19160Q170P1828190S1L2M\",\" кон \":\"0X0F\",\" кор\":\"0V0T0X0T1608181M191D\",\" кори\":\"0V1G0X0P1806190K\",\" коро\":\"181N190S\",\" кос\":\"0V080X0G160T170A180G1906\",\" коса\":\"0V060X0C160X\",\" кот\":\"160G170W182T190Q\",\" кото\":\"184J1902\",\" кох\":\"190T\",\" коха\":\"1916\",\" коя\":\"161G\",\" коят\":\"1627\",\" кој\":\"0V3R0X2Q\",\" кој \":\"0X24\",\" која\":\"0V180X0L\",\" које\":\"0V26\",\" који\":\"0V4V\",\" кр\":\"0V2P0X2B162B174Y1836192M\",\" кра\":\"0V150X10161R173C181X191Z\",\" крас\":\"0X02161J170I182S1908\",\" кращ\":\"191H\",\" краі\":\"172W\",\" краї\":\"190R\",\" крај\":\"0V1G0X0G\",\" кре\":\"0V110X0R1608180F1906\",\" крев\":\"0V0W0X0E\",\" кри\":\"0V0K0X0P160A180F190F\",\" кры\":\"173D180A\",\" крых\":\"171T\",\" кт\":\"182N\",\" кто\":\"183M\",\" кто \":\"1856\",\" кто-\":\"181M\",\" ку\":\"0V470X3G16371743183N193A\",\" куда\":\"1820\",\" куды\":\"171T\",\" куп\":\"0V1X0X1Y161O172P182A192A\",\" купа\":\"0V0D0X0H18081905\",\" купи\":\"0V3S0X1D161Z183Q192P\",\" купя\":\"1614\",\" купі\":\"17361902\",\" куч\":\"0V040X0R160X1802\",\" куче\":\"0V0A0X0M161X\",\" кућ\":\"0V25\",\" кући\":\"0V2U\",\" куќ\":\"0X0S\",\" куќа\":\"0X0S\",\" къ\":\"164L\",\" къд\":\"162B\",\" къде\":\"164S\",\" към\":\"160W\",\" към \":\"161T\",\" къс\":\"160T\",\" къщ\":\"160Z\",\" къща\":\"161W\",\" кі\":\"172H19291L57\",\" кіль\":\"190Z\",\" кім \":\"170E1L23\",\" кімн\":\"1914\",\" кір\":\"170O1L2H\",\" кіт\":\"1716190D1L36\",\" кіта\":\"171P1L4K\",\" књ\":\"0V16\",\" књи\":\"0V1E\",\" књиг\":\"0V3E\",\" кү\":\"1L8R\",\" күн\":\"1L8L\",\" күн \":\"1L40\",\" күні\":\"1L5Y\",\" күт\":\"1L2D\",\" күш\":\"1L28\",\" кә\":\"1L1C\",\" кө\":\"1LGG\",\" көз\":\"1L3K\",\" көл\":\"1L23\",\" көм\":\"1L2Q\",\" көме\":\"1L3N\",\" көп\":\"1L5N\",\" көп \":\"1L4T\",\" көпт\":\"1L2A\",\" көр\":\"1LCC\",\" көре\":\"1L4Z\",\" көрс\":\"1L3R\",\" көрі\":\"1L2X\",\" көш\":\"1L2H\",\" л\":\"0V5K0X4C164R175I186A195O1L0U1M0X\",\" л \":\"1M1M\",\" ла\":\"0V140X1B160I1743180N192A1L19\",\" лаж\":\"0V090X0O\",\" лаже\":\"0V0D0X0D\",\" лас\":\"174A18021927\",\" ласк\":\"176418021936\",\" ле\":\"0V1W0X1W1622173K182Z1915\",\" лек\":\"0V0E0X0M160R1713180B\",\" лека\":\"0V0M0X0F1617170W180G\",\" леп\":\"0V0W0X021724\",\" лепш\":\"171P\",\" лес\":\"0X0J160E170U180F\",\" лесн\":\"0X0J160Q\",\" лет\":\"0V0E0X0G160F170L181X1902\",\" лет \":\"182C\",\" ли\":\"0VB40XA916E8182Z192I\",\" ли \":\"0VCH0XBF16EG181R\",\" лин\":\"0V040X0V160A1808\",\" линд\":\"0X0S1803\",\" липс\":\"161C\",\" лист\":\"0X04180B1910\",\" лице\":\"0V0C0X0C160J18071902\",\" лич\":\"0V090X0K16091809\",\" лиш\":\"1603180N191W\",\" лише\":\"16061802191R\",\" лиши\":\"1803190S\",\" ло\":\"0V0W0X0Y160Y170P180Z190F\",\" лош\":\"0V0N0X0Q160K1808\",\" лошо\":\"0X0E160Q\",\" лу\":\"0V0E0X1J160E170D181W1902\",\" лут\":\"0X0H\",\" луч\":\"182B\",\" лучш\":\"1848\",\" луѓ\":\"0X15\",\" луѓе\":\"0X18\",\" лю\":\"160Q176H184M1942\",\" люб\":\"160S176B184K192R\",\" люби\":\"160R184A1927\",\" любл\":\"17361821191O\",\" любо\":\"160O170O181D1903\",\" любі\":\"174M\",\" люд\":\"1742181S191Z\",\" людз\":\"175Q\",\" люди\":\"181L191Z\",\" ля\":\"160B171F18021909\",\" лі\":\"173Z1926\",\" лік\":\"170B190X\",\" ліка\":\"1912\",\" ліс\":\"171P1906\",\" ліст\":\"1723\",\" м\":\"0VD10XEM16DB17FS18M119MT1LJN1MAM\",\" ма\":\"0V3M0X4R165I17I4185O19AJ1LBS1M9I\",\" ма \":\"1L2Z\",\" мабу\":\"1910\",\" мав \":\"190W\",\" маг\":\"0V030X05160C175E180J19091L0O1M0M\",\" мага\":\"160M170F180V190B1M16\",\" магл\":\"0X02171S\",\" магу\":\"173U\",\" магч\":\"1723\",\" мае\":\"174Y\",\" мае \":\"1759\",\" маж\":\"0X0H\",\" май\":\"161A171F1803190Y\",\" майж\":\"190X\",\" майк\":\"162418041906\",\" мал\":\"0V1C0X2N162E174E181P191B1L17\",\" мала\":\"0V0A0X05173O1802190D\",\" малк\":\"0X25164P\",\" мало\":\"0V2I0X04170H180T190M\",\" ман\":\"0V030X061714180719041M1T\",\" мана\":\"170E1M3I\",\" мар\":\"0V0H0X0E160S174B1819190M1L121M3A\",\" марг\":\"1M33\",\" мари\":\"0V0P0X06160U181N1M22\",\" март\":\"18041M1E\",\" мары\":\"172M\",\" мас\":\"0V040X0I160G1710180D19061L0V\",\" мат\":\"0V090X09160C1715181619101L14\",\" мати\":\"190U\",\" мач\":\"0V0L0X0J1605\",\" мачк\":\"0V150X0E\",\" маш\":\"0V050X0816041726181Y191Q1M50\",\" маш \":\"1M7B\",\" маши\":\"0V070X031608183E192I1M2V\",\" машы\":\"172S\",\" маю\":\"172A191O\",\" маю \":\"172F191X\",\" мая\":\"172R1802\",\" мая \":\"17441802\",\" маё\":\"171W\",\" маё \":\"171L\",\" має\":\"193O\",\" має \":\"1931\",\" маєш\":\"1912\",\" мај\":\"0V0R0X0P\",\" мајк\":\"0V1A0X0M\",\" мағ\":\"1L5R\",\" маға\":\"1L7W\",\" мақ\":\"1L2M\",\" мақс\":\"1L2R\",\" маң\":\"1L2M\",\" маңы\":\"1L2D\",\" ме\":\"0V7A0XBC1699175D18AL19KP1LOZ\",\" ме \":\"0V3D0X4U163H1L1E\",\" мек\":\"0V03180219021L28\",\" мект\":\"1L2A\",\" мем\":\"1L6Z\",\" мемл\":\"1L9I\",\" мен\":\"0V1F0X2E1621171C18AA19G01LS9\",\" мен \":\"162V1LSG\",\" мене\":\"0V2J0X2B161E170F180719A8\",\" меня\":\"18GW\",\" мені\":\"19E41LCJ\",\" мер\":\"0V2A0X6P163P170Q180D19AE1L2V\",\" мери\":\"0V5O0X6X167J1802\",\" мері\":\"19E9\",\" мес\":\"0V190X1C160V174N181Z\",\" месе\":\"0V160X0E1614\",\" мест\":\"0V1Q0X0R160D182M\",\" месц\":\"1730\",\" меся\":\"173Z1813\",\" ми\":\"0VAH0XE716HZ1824197X1L191M5I\",\" ми \":\"0V720XCK16C1197Z\",\" мин\":\"0V0H0X0Q162D1810190N1L191M6A\",\" мина\":\"0X0C162L\",\" мини\":\"161D18091MB9\",\" мину\":\"0V120X0E160U181J190X1L0Z\",\" мир\":\"0V0H0X0F160C18141903\",\" мис\":\"0V4R0X5N167O18041904\",\" мисл\":\"0VBG0X5U16EY1902\",\" мл\":\"0V0L0X0G160Q18061L0D\",\" млад\":\"0V140X0E1614180F\",\" мн\":\"0V2M0X4T165Y178T18CI190R\",\" мне\":\"160A17CW18DC\",\" мне \":\"17I018LB\",\" мно\":\"0V350X6B166F171R1845190W\",\" мног\":\"0V6V0X6L16CP1712185C\",\" мной\":\"171A1826\",\" мною\":\"18021919\",\" мо\":\"0VCD0XEJ16E517BI18ET19CZ1L0P1M19\",\" мов\":\"174W1918\",\" мова\":\"172S190L\",\" мове\":\"171M\",\" мовы\":\"171R\",\" мог\":\"0V3Z1632171Z18581916\",\" мог \":\"0V0D171L182D\",\" мога\":\"0V2U165J\",\" могл\":\"0V1N160F181P1912\",\" могу\":\"0V5J171B185U\",\" мое\":\"0X0D160H181G\",\" мож\":\"0V3M0XBY1687177618721986\",\" можа\":\"0X2X160V177E\",\" можд\":\"0V21\",\" може\":\"0V760X9R16FB18A11965\",\" можл\":\"1917\",\" можн\":\"0X0J173J1831191U\",\" можу\":\"193C\",\" мои\":\"0X0D1609181E\",\" мои \":\"0X03181K\",\" мой\":\"1606173P1822\",\" мой \":\"160C175H183T\",\" мол\":\"0V1T0X1Z1621181H1915\",\" мола\":\"0X1J\",\" моли\":\"0V4J0X09160F18051903\",\" моло\":\"1821191J\",\" моля\":\"163O\",\" мом\":\"0V0E0X0O161L170U180A1903\",\" моми\":\"161G\",\" момч\":\"0X0E160Z\",\" монг\":\"1M16\",\" мор\":\"0V2S0X3P160A170J180P190G\",\" мора\":\"0V6N0X3M170E1802\",\" моя\":\"161B181E191F\",\" моя \":\"160V182L1923\",\" моят\":\"161X\",\" моє\":\"190Y\",\" мої\":\"1914\",\" мої \":\"190X\",\" мој\":\"0V370X19\",\" мој \":\"0V380X08\",\" моја\":\"0V1S0X0O\",\" моје\":\"0V1N\",\" мојо\":\"0V0E0X0H\",\" мр\":\"0V0Q0X15160J1907\",\" мра\":\"0V060X10160H\",\" мраз\":\"0X10160Z\",\" му\":\"0V1Z0X6Z163V1734181J19191M1R\",\" му \":\"0V120X8F1639\",\" муж\":\"0V07171U1811\",\" муз\":\"0V0E0X0E1610171E180L190I\",\" музе\":\"0V07161E170H18081904\",\" музи\":\"0V0T0X0D160S190M\",\" музы\":\"171M180V\",\" муси\":\"190R\",\" муу\":\"1M23\",\" муу \":\"1M1I\",\" муур\":\"1M2B\",\" мъ\":\"1614\",\" мы\":\"175V187F1L2P\",\" мы \":\"179D189E\",\" мэ\":\"171P185L1L0X1M7R\",\" мэд\":\"1M7O\",\" мэдд\":\"1M2B\",\" мэдн\":\"1M27\",\" мэдэ\":\"1M9D\",\" мэн\":\"1M0R\",\" мэнд\":\"1M1I\",\" мэр\":\"171Z187K1L1P\",\" мэри\":\"18D81L2A\",\" мэры\":\"172V\",\" мя\":\"160S177E180D\",\" мян\":\"17AD\",\" мяне\":\"17EE\",\" мяс\":\"160V170L1809\",\" мяст\":\"161U\",\" мі\":\"1736194L1L18\",\" міг\":\"190T\",\" міг \":\"1915\",\" мій\":\"1921\",\" мій \":\"192Y\",\" мін\":\"171U19051L28\",\" мінд\":\"1L2D\",\" міну\":\"171M\",\" міс\":\"191Y\",\" міст\":\"1916\",\" місц\":\"190Z\",\" мү\":\"1L3M\",\" мүм\":\"1L4B\",\" мүмк\":\"1L64\",\" мұ\":\"1L4J\",\" мұн\":\"1L5R\",\" мұнд\":\"1L4Q\",\" мұны\":\"1L2N\",\" мә\":\"1L3Y\",\" мәде\":\"1L27\",\" мәс\":\"1L2M\",\" мәсе\":\"1L2X\",\" мө\":\"1L0F1M28\",\" мөн\":\"1M25\",\" мөнг\":\"1M3M\",\" н\":\"0VGO0XJ216JA17KY18S419PW1L5K1MB9\",\" на\":\"0VFY0XNP16QU17RN18OV19LR1L3B1MC8\",\" на \":\"0V8C0XHN16K217NA18GM19CF\",\" нав\":\"0V0B0X2P160O175W1813192F\",\" нава\":\"0X041730\",\" наве\":\"0X06170Z181K\",\" нави\":\"0V0P0X291608\",\" наво\":\"17271803\",\" наву\":\"1726\",\" навч\":\"1914\",\" наві\":\"170L191P\",\" над\":\"0V0R0X1T16191732185919191M7L\",\" нада\":\"0V1A19071MCE\",\" надв\":\"0X0L170V190B\",\" наде\":\"0X0V1607182X\",\" надо\":\"0X04185V1902\",\" надт\":\"170O19031M1A\",\" надя\":\"161G\",\" наз\":\"0V0C0X04160H172B181E190L1L28\",\" наза\":\"0V0A0X03160I170T181119061L37\",\" наи\":\"0X03161K1808\",\" наис\":\"1632\",\" най\":\"161U17511815191A1M1T\",\" най-\":\"163U\",\" найз\":\"1M2R\",\" найл\":\"17481902\",\" нал\":\"0V0A0X0616191710180D190L\",\" нали\":\"161Z180A1903\",\" нам\":\"0V1N0X0V161O173V1843193H1M38\",\" нам \":\"0V2K173W185S192W\",\" нама\":\"0V0U0X021608170M191D1M63\",\" наме\":\"0V0Q0X0L162F170K180F\",\" нап\":\"0V2A0X5B166A173C1827191D\",\" напи\":\"0V180X0R161A181X1915\",\" напо\":\"0V1V0X08160P180N190B\",\" напр\":\"0V180X46169E170Z180Z1908\",\" напі\":\"172B1903\",\" нар\":\"0V0G0X0R161H1744180V19191M15\",\" нар \":\"1M1M\",\" нара\":\"0V060X06160V172V1907\",\" наре\":\"0V0B0X0G160K1803190A\",\" наро\":\"0V0B0X05160F171O180R1916\",\" нас\":\"0V290X2H161G177V184S194G1M17\",\" нас \":\"0V280X0Z161H174O185H192P1M16\",\" насм\":\"0V0R0X0C18031903\",\" насп\":\"0X02191Q\",\" наст\":\"0V250X0J160V17541822191K\",\" нат\":\"0V060X0O160D170V18051906\",\" нате\":\"0V0B0X0I\",\" нау\":\"0V0L0X0O160R180S19051L0V\",\" науч\":\"0V180X0L161K1817\",\" нахо\":\"181F\",\" нач\":\"0V0D0X0D160M1710181X1906\",\" нача\":\"160F171D18291906\",\" начи\":\"0V0W0X0C160V180Y\",\" наш\":\"0V1D0X0U160P1748182T1918\",\" наша\":\"0V0S0X0A160F1721180J190B\",\" наше\":\"0V100X04160C181E1903\",\" нашы\":\"171L\",\" нај\":\"0V1J0X3Z\",\" најв\":\"0V0U0X0E\",\" најд\":\"0X31\",\" не\":\"0VHZ0XR716Q617QI18SG19RE1L8F\",\" не \":\"0VBR0XOS16OD17SG18SG19R01L5G\",\" неа\":\"0X1F170O\",\" неа \":\"0X1I\",\" нев\":\"0V0B0X0O160K170W1810190J\",\" нег\":\"0V120X2J161U182419071L42\",\" него\":\"0V2E0X2M163S183S\",\" негі\":\"1L3K\",\" нед\":\"0V0Y0X13160L171E181R190N\",\" неда\":\"171T180E1904\",\" неде\":\"0V1I0X0S160Y181Q\",\" ней\":\"160H170T181C1903\",\" ней \":\"182H\",\" нек\":\"0V310X3V160C171V180N19021L0Q\",\" нека\":\"0V1I0X12160N172N\",\" неко\":\"0V4J0X30180Z1902\",\" нел\":\"0X0U170G180T1903\",\" нели\":\"0X0U\",\" нем\":\"0V290X701608170T181U19261L4D\",\" нема\":\"0V460X6Z17101803192Q\",\" неме\":\"180W1L5I\",\" немн\":\"181Z\",\" немо\":\"0V1G0X0E190F\",\" нен\":\"0X03170R180R1913\",\" нена\":\"0X021715181B191I\",\" неп\":\"0V0G0X0M160E171D18151913\",\" непр\":\"0V0M0X0C160N170V181F190Y\",\" нес\":\"0V0L0X0F1603170K181P190E\",\" неск\":\"181U1904\",\" нет\":\"0X03183M1905\",\" нет \":\"186E\",\" неш\":\"0V1V0X2K171G1L0T\",\" нешт\":\"0V4Q0X2P1724\",\" нещ\":\"16441907\",\" неща\":\"16281908\",\" нещо\":\"166J1902\",\" нея \":\"161J\",\" неё\":\"1819\",\" неё \":\"182C\",\" неї \":\"1912\",\" нећ\":\"0V1J\",\" неће\":\"0V2J\",\" ни\":\"0VC90X8Q168K18901918\",\" ни \":\"0V0Q0X3Q1626181S\",\" нив\":\"0X1R\",\" нив \":\"0X1L\",\" ние\":\"0X0I161K\",\" ние \":\"0X0E163C\",\" ник\":\"0V3B0X41163Z185I\",\" ника\":\"0V4Y0X0F161A1818\",\" нико\":\"0V3I0X3V166X186C\",\" никт\":\"182H\",\" ним\":\"181U190S\",\" ним \":\"182F190U\",\" нис\":\"0V5J\",\" ниса\":\"0V90\",\" ниси\":\"0V1W\",\" нисм\":\"0V1R\",\" них \":\"181N190M\",\" нич\":\"182R\",\" ниче\":\"184T\",\" ниш\":\"0V150X1Y\",\" ништ\":\"0V2X0X21\",\" нищ\":\"1621\",\" нищо\":\"1649\",\" ниј\":\"0V59\",\" није\":\"0VCK\",\" но\":\"0V300X34164Z1734185U192B1M4N\",\" но \":\"0X10161O1834\",\" нов\":\"0V240X10161E1733181W191J\",\" нова\":\"0V1N0X0C160Z171R180B1909\",\" нови\":\"0V180X0A161718021913\",\" ново\":\"0V0L0X06160D181G1909\",\" новы\":\"172I181B\",\" ном\":\"160B180D19091M36\",\" ном \":\"1M3M\",\" номы\":\"1M1M\",\" нос\":\"0V0R0X111619170I180O1909\",\" носи\":\"0V1K0X0I161K180N1907\",\" нох\":\"1M1L\",\" нохо\":\"1M37\",\" ночь\":\"181C\",\" нощ\":\"160U\",\" нощ \":\"161A\",\" нр\":\"181S\",\" нра\":\"182G\",\" нрав\":\"184K\",\" ну\":\"0X04160V170P183K190I1M0H\",\" нуж\":\"0X02160Y183W\",\" нужд\":\"161C180D\",\" нужн\":\"0X02160N1863\",\" нь\":\"180319131M5N\",\" нь \":\"1M6G\",\" ньо\":\"1917\",\" ньог\":\"191P\",\" нэ\":\"1M56\",\" нэг\":\"1M4E\",\" нэг \":\"1M5V\",\" нэгэ\":\"1M27\",\" нэр\":\"1M17\",\" нэри\":\"1M16\",\" ня\":\"168R175Q\",\" няк\":\"163O\",\" няка\":\"1616\",\" няко\":\"1660\",\" ням\":\"166M174E\",\" няма\":\"16D5175V\",\" нѐ\":\"0X0J\",\" нѐ \":\"0X0P\",\" ні\":\"177M1970\",\" ні \":\"1719190V\",\" ніж\":\"1717191B\",\" ніж \":\"171M191V\",\" нік\":\"1741192T\",\" ніко\":\"175U193Y\",\" ніх\":\"17201915\",\" ніхт\":\"1730191O\",\" ніч\":\"172W191M\",\" нічо\":\"1745191Y\",\" нү\":\"1M0L\",\" нә\":\"1L1M\",\" нәрс\":\"1L2K\",\" нө\":\"1M0S\",\" о\":\"0VCH0X8S168F170718LC195M1LGC1M58\",\" о \":\"0V1I0X0216041706182S190P\",\" об\":\"0V2N0X2V167J187D192V1L1K\",\" об \":\"181Z\",\" обе\":\"0V0G0X07160Q181F190B\",\" оби\":\"0V0H0X1H163F180B190A\",\" обид\":\"0X151608180C190D\",\" обич\":\"0V130X0E1664\",\" обл\":\"0V090X0N160K180E19081L2Q\",\" обле\":\"0X0H160T1804\",\" облы\":\"1L3X\",\" обож\":\"0V0A0X0C180F190L\",\" обр\":\"0V0F0X0G160M1817190D\",\" обра\":\"0V0K0X0A1611181Z190G\",\" объя\":\"181G\",\" обја\":\"0V0U0X0G\",\" ов\":\"0V7I0X6C18061904\",\" ова\":\"0V220X6V\",\" ова \":\"0V1R0X6J\",\" оваа\":\"0X0S\",\" овај\":\"0V2H\",\" овд\":\"0V2K0X06\",\" овде\":\"0V6F0X07\",\" ови\":\"0V0C0X0K\",\" овие\":\"0X0M\",\" ово\":\"0V3I0X0T18051903\",\" ово \":\"0V7F\",\" овој\":\"0V0A0X0Q\",\" ог\":\"0V090X0E160H180J19051M0H\",\" од\":\"0V7W0XCR1604184319351L0Z1M25\",\" од \":\"0V3J0X8I\",\" ода\":\"0V0H0X1T1L1S\",\" одам\":\"0X1R\",\" одб\":\"0V0C0X0I\",\" одг\":\"0V0Z0X11\",\" одго\":\"0V2H0X11\",\" оде\":\"0V150X0D180M\",\" оди\":\"0X37181U190T\",\" оди \":\"0X1Q\",\" одим\":\"0X0V\",\" один\":\"183E1916\",\" одиш\":\"0X0S\",\" одл\":\"0V140X0T\",\" одлу\":\"0V1Y0X0H\",\" одм\":\"0V110X0I\",\" одма\":\"0V1Y0X06\",\" одмо\":\"0V0O0X0C\",\" одн\":\"0V060X0S182V191V\",\" одна\":\"0X02181I190J\",\" одне\":\"0X0N190I\",\" одно\":\"0V0B0X04182S1913\",\" одо\":\"0V050X0A180E1M27\",\" одоо\":\"1M46\",\" одру\":\"190Y\",\" ой\":\"18021L3X1M1Q\",\" ойл\":\"1L281M17\",\" ойла\":\"1L37\",\" ойлг\":\"1M2F\",\" ойна\":\"1L2K\",\" ойы\":\"1L2O\",\" ойын\":\"1L2K\",\" ок\":\"0V130X0J160S181I190I\",\" око\":\"0V0M0X0J160G180G1903\",\" окол\":\"0X0F160Q180H\",\" ол\":\"0V060X08180419091LEJ1M20\",\" ол \":\"1LI6\",\" ола\":\"1L82\",\" олар\":\"1LB7\",\" оло\":\"0V031M1P\",\" олон\":\"1M2V\",\" ом\":\"0V050X0B160B\",\" он\":\"0V7Q0X0Y160W18IF19071L7O1M0Q\",\" он \":\"0V4I18E519051L12\",\" она\":\"0V2X0X0T160F188T\",\" она \":\"0V710X0O18F9\",\" они\":\"0V100X041850\",\" они \":\"0V2G1892\",\" оно \":\"0V1N180T\",\" оны\":\"1LBS\",\" оны \":\"1L67\",\" оның\":\"1LAL\",\" оп\":\"0V1L0X1316291823190G\",\" опас\":\"0V0P0X0C160O180S\",\" опи\":\"0V030X05161718051902\",\" опит\":\"162F\",\" ор\":\"0V060X0C160B180G19081L6T1M4D\",\" орга\":\"0V070X031608180A19051L23\",\" орж\":\"1M0T\",\" орж \":\"1M1M\",\" орн\":\"1L39\",\" орна\":\"1L2A\",\" орны\":\"1L2H\",\" оро\":\"1M30\",\" орой\":\"1M2R\",\" орт\":\"1L2O\",\" орта\":\"1L3U\",\" оры\":\"1L48\",\" орын\":\"1L56\",\" ос\":\"0V3P0X2W163G184A191R1L3I\",\" осећ\":\"0V1Q\",\" ост\":\"0V2J0X2D162E184C190L\",\" оста\":\"0V600X2A164Q186T190R\",\" осы\":\"1L6A\",\" осы \":\"1L5Y\",\" ось \":\"1911\",\" от\":\"0V2O0X3O16FR189T190T1L5G\",\" от \":\"169B183J1902\",\" ота\":\"0V0G0X021L23\",\" отв\":\"0V0S0X0P16111820\",\" отве\":\"1839\",\" отво\":\"0V1T0X0P161J1802\",\" отг\":\"160Y1802\",\" отго\":\"161W1803\",\" отец\":\"181G\",\" оти\":\"0V0W0X181634\",\" отив\":\"161E\",\" отид\":\"0X131655\",\" отиш\":\"0V1X0X08\",\" отк\":\"0V0N0X1D162L182D\",\" отка\":\"0V130X0Y162P180Z\",\" откр\":\"0V0A0X09161D182B\",\" отн\":\"160T180P\",\" отно\":\"161D1810\",\" отп\":\"0V0F0X0I160D1810\",\" отри\":\"1807190Z\",\" отс\":\"0X0L160D180R\",\" отсе\":\"0X0E\",\" оты\":\"1L6P\",\" отыр\":\"1L8M\",\" ох\":\"0X02180719041M0S\",\" охи\":\"1M0X\",\" охин\":\"1M1I\",\" оч\":\"0V1A0X1516131844190W1M0L\",\" оче\":\"0V110X0K1607185A1908\",\" очек\":\"0V2J0X0L\",\" очен\":\"188Y\",\" очи\":\"0V0H0X0U160N\",\" ошиб\":\"181W\",\" ощ\":\"162H1802\",\" още\":\"162T\",\" още \":\"165V\",\" ою\":\"1M0N\",\" оюу\":\"1M0R\",\" оюут\":\"1M1E\",\" оғ\":\"1L1R\",\" оға\":\"1L39\",\" оған\":\"1L4N\",\" оқ\":\"1L3L\",\" оқу\":\"1L26\",\" оқы\":\"1L2H\",\" п\":\"0VGZ0XEF16EB17LG18R919OQ1L431M0D\",\" п'\":\"170G1911\",\" п'я\":\"190T\",\" п'ят\":\"190W\",\" па\":\"0V410X55164F17SD182S193A1L3W\",\" па \":\"0V0H0X0M175D1L0T\",\" па-\":\"1735\",\" паб\":\"171Y\",\" пав\":\"176619031L10\",\" паве\":\"1724\",\" павя\":\"172A\",\" паві\":\"172S\",\" паг\":\"172S\",\" пагл\":\"1721\",\" пад\":\"0V0Q0X0F160C17BL18061904\",\" пад \":\"171Z\",\" пада\":\"0V1I160B177D18081905\",\" падн\":\"0V080X0F160F170O\",\" пае\":\"171R\",\" паех\":\"171M\",\" паз\":\"0V090X0E160C172C\",\" пазн\":\"171R\",\" пай\":\"17311L3K\",\" пайд\":\"170V1L4K\",\" пайш\":\"172N\",\" пак\":\"0V040X11160I177618031902\",\" пак \":\"0X0Y160X\",\" пака\":\"172V\",\" пако\":\"172N\",\" паку\":\"1723\",\" пакі\":\"171P\",\" пал\":\"0V060X07160V173T180M190N\",\" палт\":\"0X03161K\",\" палі\":\"172J1902\",\" пам\":\"0V0G0X0G1604175F1807190N\",\" пам'\":\"190V\",\" памы\":\"172I\",\" памі\":\"171W\",\" пап\":\"0V060X03172H180A1906\",\" пар\":\"0V140X251622175E181N191A1L19\",\" пара\":\"0V0I0X04173W180C190M\",\" пари\":\"0V0A0X1J162S180I1909\",\" парт\":\"0V070X03160O171O18091906\",\" пас\":\"0V0L0X0616071760180B190B\",\" пасл\":\"172V\",\" пасп\":\"1607172A18091907\",\" пат\":\"0V030X15174W18021902\",\" пат \":\"0X0I\",\" патр\":\"17571803\",\" патэ\":\"171K\",\" пац\":\"0X021604172E18041904\",\" паца\":\"172Q\",\" пач\":\"1759\",\" пача\":\"173S\",\" пачу\":\"1728\",\" паў\":\"171Q\",\" пе\":\"0V200X1R162D177J185M19601L2D\",\" пев\":\"0V0S16051804190X\",\" пева\":\"0V20\",\" пен\":\"0V030X09180619041L2A\",\" пен \":\"1L3A\",\" пер\":\"0V070X08160G17AB185X195M\",\" пера\":\"160717BJ\",\" перв\":\"1820\",\" пере\":\"188F1972\",\" перш\":\"173J190T\",\" песн\":\"0X091608171L180N\",\" пет\":\"0V0G0X0B160Y1809\",\" пи\":\"0V3W0X2G163G182I1923\",\" пие\":\"0X0I160H\",\" пис\":\"0V0R0X0F160X181C190E\",\" писм\":\"0V0V0X0E161E\",\" пись\":\"181H1906\",\" пит\":\"0V1Y0X03160M180G190S\",\" пита\":\"0V4S0X0216151807190T\",\" пиш\":\"0V0H0X0U160M180F190J\",\" пишу\":\"0X0L18081904\",\" пиј\":\"0V0P0X0Q\",\" пија\":\"0V0D0X0R\",\" пл\":\"0V2O0X2R162V17331833192S\",\" пла\":\"0V2E0X2Y162B173M182I192L\",\" плав\":\"0V0F1715180U190S\",\" план\":\"0V250X14161P172B181Y191W\",\" плат\":\"0V1D0X0N16171810190H\",\" плач\":\"0V0K0X0E160C170E180F190A\",\" плаш\":\"0V0T0X0K1606\",\" пли\":\"0V0H0X0H1903\",\" плив\":\"0V190X0G1902\",\" пло\":\"0X031609170E18131902\",\" плох\":\"181K\",\" по\":\"0VIC0XK416L6174818SD19O41L16\",\" по \":\"0V0O0X1Q163B1840190V\",\" по-\":\"163V18241903\",\" по-д\":\"162B1805\",\" поб\":\"0V140X1I160I181C191U\",\" поба\":\"0X0J1921\",\" побе\":\"0V2M0X0R160J181A\",\" пов\":\"0V160X33162E1822194W\",\" пове\":\"0V0N0X1M163H1827192N\",\" пови\":\"0V070X0816081805191N\",\" повр\":\"0V1I0X0S1805\",\" повт\":\"0X0G160D180F1906\",\" пові\":\"191P\",\" пог\":\"0V1G0X1K160T170O1826192I\",\" пога\":\"1803190X\",\" погл\":\"0V230X0R1611171018051908\",\" пого\":\"0V0L0X0E160B18351925\",\" погр\":\"0V0U0X0H160E1806190C\",\" под\":\"0V0W0X391633186W195G\",\" под \":\"0V0G0X0E160Q181E\",\" пода\":\"0X0P161H181R1911\",\" поди\":\"0V0A16081911\",\" подо\":\"0X1K1618182P194P\",\" пое\":\"0X071605182G1903\",\" поез\":\"181H\",\" поех\":\"181P\",\" пож\":\"0V0A0X051608182W1907\",\" пожа\":\"0V060X041609184R\",\" поз\":\"0V1Y0X141620170L18361911\",\" поза\":\"0V0L0X0E180K1904\",\" позв\":\"0V0T161P1831\",\" позн\":\"0V240X0L161J170S180S190L\",\" пой\":\"170P182E\",\" пойд\":\"1712181Z\",\" пойт\":\"181U\",\" пок\":\"0V1U0X1B1619183G1922\",\" пока\":\"0V160X0W1625183R1917\",\" покл\":\"0V0M1807190T\",\" покр\":\"0V0I0X0D160F180J1904\",\" поку\":\"0V21180X1904\",\" пол\":\"0V160X1T162I170V185O191N1L17\",\" поли\":\"0V1D0X0L1616181M19051L1J\",\" поло\":\"0V0D0X0E160R18261907\",\" полу\":\"0V0A0X05161E182R1904\",\" полі\":\"190Z\",\" пом\":\"0V2J0X69163F1709185E192N\",\" пома\":\"0V0I0X0U160H18041904\",\" поме\":\"0V0H0X06180T190Y\",\" поми\":\"0V0F0X0N16131807191X\",\" помн\":\"160I181F\",\" помо\":\"0V510X4Y1654187A1903\",\" пон\":\"0V1X0X0S160R183U190K\",\" поне\":\"0V230X0E160X180T190N\",\" пони\":\"0X03182H\",\" поно\":\"0V1W\",\" поня\":\"160G1829\",\" поп\":\"0V120X0Z160Y182T191K\",\" попр\":\"0V0M0X0H160S1838191D\",\" пор\":\"0V0X0X1U160V170D1826191J\",\" пора\":\"0V0E0X1L160H1819190U\",\" пос\":\"0V540X3K162I170Q186Q1926\",\" поса\":\"0V270X0918091904\",\" посе\":\"0V1J0X0Q1614180K\",\" посл\":\"0V540X16162A184K190H\",\" посм\":\"0V070X02181W190F\",\" пост\":\"0V3M0X16161D183S1910\",\" пот\":\"0V1X0X1W160C170O182P1947\",\" поте\":\"0X0D181O1903\",\" пото\":\"0V080X0718291904\",\" потп\":\"0V1P0X0B\",\" потр\":\"0V2F0X0L1608180R194U\",\" пох\":\"1604181B1906\",\" похо\":\"18241905\",\" поч\":\"0V1I0X21161L1856192K\",\" поча\":\"1608190Y\",\" поче\":\"0V1Z0X0J1606186Q190M\",\" почи\":\"0V0X0X0A161G180O190N\",\" почн\":\"0V100X171905\",\" почт\":\"1616181V\",\" почу\":\"0X04160C180B191G\",\" пої\":\"191Y\",\" поїх\":\"191M\",\" поўн\":\"171Z\",\" пр\":\"0VGQ0XJ816L917O218MB19HW1L2J\",\" пра\":\"0V1X0X7J165817OE183P1943\",\" пра \":\"179G\",\" праб\":\"1734\",\" прав\":\"0V3B0X4J1696177O1860192Z\",\" праг\":\"172E1902\",\" прад\":\"172U1802\",\" праз\":\"0V0M0X0A160P1738180F\",\" прап\":\"172B1903\",\" прац\":\"178J192R\",\" прач\":\"1727\",\" праш\":\"0X2Y\",\" праў\":\"1728\",\" прв\":\"0V0U0X0T\",\" пре\":\"0V7P0X9W169J185O190J1L39\",\" пре \":\"0V2E\",\" прев\":\"0V2L0X0J161M180F\",\" пред\":\"0V370X32169U185Z1908\",\" през\":\"0V0A0X0F1631180I19091L3E\",\" прек\":\"0V1P0X121621181F1906\",\" прем\":\"0V1K0X0X160M1804\",\" преп\":\"0V150X0O160Y180N\",\" прес\":\"0V4O0X1L161J180N\",\" прет\":\"0V180X1C16061802\",\" преч\":\"0X0E1609\",\" при\":\"0V5K0X55167G18CM197V\",\" при \":\"0X051617180X1904\",\" приб\":\"0V080X051616180U190S\",\" прив\":\"0V0E0X0A160D182A190V\",\" приг\":\"0X03160F181Q190P\",\" прид\":\"0V0G0X0A160I182M1908\",\" прие\":\"1610181N\",\" прий\":\"180Q193L\",\" прик\":\"0X0E1611180O190B\",\" прил\":\"0V150X0K160X180H1902\",\" прин\":\"0V080X05160S183K190V\",\" прип\":\"0V0T0X08180D1912\",\" прис\":\"0V0K0X0J161V181J190G\",\" прит\":\"0V0A0X03161J180A1903\",\" приф\":\"0X0D\",\" прих\":\"0V0K181J190N\",\" прич\":\"0V4L0X0D160T180Z190F\",\" приш\":\"1834\",\" прия\":\"1640180H1902\",\" приї\":\"190Y\",\" приј\":\"0V370X15\",\" про\":\"0V6P0X6M1673172Q18EF19B91L19\",\" про \":\"180J1955\",\" проб\":\"0V4C0X27163H182V1924\",\" пров\":\"0V1A0X0G1615182C1916\",\" прог\":\"0V0G0X05160B1811190Y\",\" прод\":\"0V1I0X0S1621182M1918\",\" прои\":\"0V070X06160R183F\",\" прос\":\"0V0O0X0Z162N172Y187B1932\",\" прот\":\"0V130X0I1613181K190Y\",\" проч\":\"0V1I0X0C16141818190M\",\" прош\":\"0V240X09182N1908\",\" пры\":\"17GV1804\",\" прыв\":\"172A\",\" прыг\":\"174U1807\",\" прые\":\"172B\",\" прый\":\"175E\",\" прын\":\"172N\",\" прыс\":\"171P\",\" пу\":\"0V2S0X0Z16111716181E190C\",\" пуно\":\"0V1L\",\" пуст\":\"0V110X02171K18191908\",\" пут\":\"0V1N0X02180Q\",\" пут \":\"0V1P\",\" пуш\":\"0V0E0X0V160A1802\",\" пушт\":\"0X0K\",\" пъ\":\"1630\",\" първ\":\"161I\",\" път\":\"1625\",\" път \":\"161V\",\" пъту\":\"1616\",\" пы\":\"171D180R\",\" пыт\":\"1724180X\",\" пыта\":\"1736181Q\",\" пят\":\"170J1815\",\" пі\":\"172D196E1L0S\",\" під\":\"1932\",\" під \":\"190R\",\" піс\":\"1716190W\",\" піт\":\"1913\",\" піти\":\"191J\",\" піш\":\"170R191F\",\" пішо\":\"1912\",\" р\":\"0V580X3L163X177E189R199J1L311M0L\",\" ра\":\"0V7S0X81169U17GV18CG19441L1C\",\" раб\":\"0X45163O174E18441902\",\" рабо\":\"0X4D167K1720187D\",\" рабі\":\"1745\",\" рад\":\"0V4I0X08160P1728181A1912\",\" ради\":\"0V920X04160G180M190M\",\" раз\":\"0V360X3A166517CM186Y191G\",\" раз \":\"172G1838190K\",\" раза\":\"171T180G\",\" разб\":\"0V0H0X12164Q171D1818\",\" разв\":\"0V0G0X081614171I181M\",\" разг\":\"0V130X0O1613170K1823\",\" разл\":\"0V1C0X0I160V170V180B\",\" разм\":\"0V180X0F160J176F180I\",\" разо\":\"0V0I0X07160G170H180Z190T\",\" разу\":\"0V2M0X061607173Y180I190C\",\" рак\":\"0X0P1605170D18051905\",\" рака\":\"0X0G1802\",\" ран\":\"0V0O0X0G160K172S181M1918\",\" ране\":\"0X04160C171V1809\",\" рань\":\"181O\",\" рані\":\"171H190W\",\" рас\":\"0V0P0X1P1606176B183Y\",\" раск\":\"0X0H172A180B\",\" расп\":\"0V0Z0X0K171X1812\",\" расс\":\"170E184O\",\" раст\":\"0V0O0X0E16081715180U\",\" расі\":\"1727\",\" раце\":\"0X0C\",\" раці\":\"190V\",\" ре\":\"0V4M0X3E162M183X191K1L5Y\",\" ред\":\"0V0F0X0L1607180B\",\" ред \":\"0X0L1608\",\" рек\":\"0V2E0X0S1609180I1903\",\" река\":\"0V4C0X06160H1806\",\" реко\":\"0X0L18081903\",\" рес\":\"0V070X08160A180D19081L73\",\" ресе\":\"1L2H\",\" респ\":\"18041L6G\",\" рет\":\"0V040X0719021L2M\",\" реч\":\"0V130X1N160C1809190M\",\" рече\":\"0V160X1F190J\",\" реш\":\"0V0B0X0N1613181Q1902\",\" реши\":\"0V0F0X0G161K181W\",\" ри\":\"0V0F0X0I1617180H190O\",\" риза\":\"1618\",\" ро\":\"0V100X0X161Y172X182W19C41L0D\",\" роб\":\"0V030X031604171F18031962\",\" роби\":\"195V\",\" робо\":\"0X021802192J\",\" робі\":\"171R1905\",\" род\":\"0V0J0X0R1613170T181S190H\",\" роди\":\"0V170X0D1619182I190O\",\" роз\":\"0X0317121808196B\",\" розм\":\"191S\",\" розп\":\"191Z\",\" розу\":\"1927\",\" рок\":\"160K191M\",\" рокл\":\"1618\",\" рокі\":\"1916\",\" роўн\":\"171K\",\" ру\":\"0V170X0F160B1735181U1915\",\" рук\":\"0V0I171A181D190Q\",\" рэ\":\"172T\",\" рі\":\"191M\",\" с\":\"0VO10XLQ16KA17HM18QB19I61LHM1M74\",\" с \":\"0V17167S189M\",\" са\":\"0VL20XBT166W17CA184119361LDN1M9G\",\" са \":\"0V3V164B171I\",\" саб\":\"0X07174M1L0T\",\" саба\":\"0X05173C1L0Z\",\" сабе\":\"172G\",\" сад\":\"0V1I0X081713180I1908\",\" сада\":\"0V301802\",\" сай\":\"170B180519031L3K1M6E\",\" сайн\":\"1M8I\",\" сайх\":\"1M46\",\" сайы\":\"1L2A\",\" сак\":\"0V0A0XAD1604170O\",\" сака\":\"0XAV\",\" сал\":\"0X04170V180519031L6Z\",\" сала\":\"0X03170E180519041L3K\",\" салы\":\"1L2R\",\" сам\":\"0VJ90X53163B177K184919331L0Q\",\" сам \":\"0VSG0X0X161K171B181A190Q\",\" сама\":\"0V0X0X04160Y172Z1812190F\",\" саме\":\"1912\",\" само\":\"0V5F0X451646171K183C190W\",\" самі\":\"174U191A\",\" сан\":\"0V040X021603170E180519041L231M3A\",\" сана\":\"1L1G1M5O\",\" сап\":\"0X02172W1L1I\",\" сапа\":\"1L23\",\" сапр\":\"1743\",\" сар\":\"0V03170T180219021L121M0V\",\" сат\":\"0V0S1L2V\",\" саты\":\"1L3E\",\" сая\":\"1L1P1M0V\",\" сая \":\"1M1I\",\" сағ\":\"1L3R\",\" саға\":\"1L4N\",\" сақт\":\"1L2K\",\" св\":\"0V8S0X2X163W17A8186X195F\",\" сва\":\"0V1J0X06160D17AZ180A1903\",\" сваб\":\"1728\",\" свае\":\"171V\",\" свай\":\"1726\",\" свак\":\"0V2U\",\" сваю\":\"173C\",\" сваё\":\"1748\",\" сваі\":\"173S\",\" све\":\"0V3P0X151611173918131904\",\" све \":\"0V5R\",\" свет\":\"0V210X0S161X172E18191905\",\" свец\":\"171Z\",\" сви\":\"0V2X0X0I160N180G1905\",\" сви \":\"0V38\",\" свир\":\"0V0K0X0C160O\",\" свиђ\":\"0V29\",\" сво\":\"0V330X1U1614171X187B1945\",\" своб\":\"161A180Z1906\",\" свог\":\"0V10190S\",\" свое\":\"0X091606183L\",\" свои\":\"0X0H160A183Z\",\" свой\":\"1606172K181X\",\" свою\":\"182A191N\",\" своё\":\"181F\",\" своє\":\"191D\",\" свої\":\"1928\",\" свој\":\"0V6E0X18\",\" свъ\":\"1619\",\" свър\":\"162O\",\" свят\":\"1607171W1804190B\",\" сві\":\"170F191T\",\" свій\":\"1917\",\" світ\":\"1913\",\" сд\":\"1605184N\",\" сде\":\"185W\",\" сдел\":\"18AD\",\" се\":\"0VID0XOJ16LA17191888192U1L7W\",\" се \":\"0VJC0XPF16KA\",\" себ\":\"0V0K0X0L160G1833190T1L0X\",\" себе\":\"0V0W0X0K160X182F19161L19\",\" себя\":\"183F\",\" сег\":\"0X2J161F182O\",\" сега\":\"0X2N1630\",\" сего\":\"184Y\",\" сед\":\"0V120X19161N1803\",\" седе\":\"0V0G0X0C160K\",\" седи\":\"0V160X0D1608\",\" седм\":\"0V0E161M\",\" сей\":\"1827\",\" сейч\":\"1840\",\" сек\":\"0V030X2N1608180G190C\",\" секо\":\"0X20\",\" семе\":\"0X0E160U1807\",\" семь\":\"181C\",\" сен\":\"0V050X07180419061L9W\",\" сен \":\"1L5L\",\" сені\":\"1L6D\",\" сер\":\"0X08160E170I181419121L1E\",\" сест\":\"0V0U0X0E161I181J190Y\",\" си\":\"0V5K0XDD16I6182G191X1L1G\",\" си \":\"0V4I0XCH16HO\",\" сиг\":\"0V0R0X1I16261805\",\" сигу\":\"0V1V0X1L164I\",\" сил\":\"0X0C160H1815190N\",\" силь\":\"181C190R\",\" син\":\"0V0O0X0L160K1809190O\",\" сит\":\"0V080X361608180A1907\",\" сите\":\"0X36\",\" ск\":\"0V1J0X1B161E176C1898198C\",\" ска\":\"0V050X0E1608177A188F196M\",\" скаж\":\"1721183J191G\",\" сказ\":\"177P18BO197R\",\" скл\":\"0V070X06160317161805190U\",\" скла\":\"171K1803190Y\",\" ско\":\"0V0L0X0F160K171J183C190M\",\" скол\":\"1847\",\" скон\":\"171T1804\",\" скор\":\"0V0W0X09160Z181T190U\",\" скр\":\"0V0C0X0N1606170L180H1906\",\" скрш\":\"0X0G\",\" скі\":\"191Q\",\" скіл\":\"1927\",\" сл\":\"0V3L0X4T165F173S187C192N\",\" сла\":\"0V140X0R160S1711180F1905\",\" сле\":\"0V0Q0X171626181Z\",\" след\":\"0V1H0X10164D1833\",\" сли\":\"0V0N0X0M1604181J\",\" слик\":\"0V1D0X0J\",\" слиш\":\"182R\",\" сло\":\"0V0Z0X0N160X1733182Q190W\",\" слоб\":\"0V100X0F\",\" слов\":\"173618391916\",\" слож\":\"0V0R0X05161P1811\",\" слу\":\"0V0Z0X3D1620171O182N190N\",\" слух\":\"17281809190R\",\" случ\":\"0V0T0X21162W1833\",\" слуш\":\"0V1A0X1G160V181D\",\" слы\":\"1817\",\" слыш\":\"1828\",\" слі\":\"191E\",\" слід\":\"191Q\",\" см\":\"0V3Y0X3S162K1728183E1917\",\" сме\":\"0V0Z0X4C1621171W181F190A\",\" сме \":\"0X22162F\",\" смее\":\"0X12160B1804\",\" смен\":\"0X0F16091807\",\" смет\":\"0V0B0X0L160N\",\" смо\":\"0V2Z182T\",\" смо \":\"0V7C\",\" смог\":\"181T\",\" смот\":\"182L\",\" сн\":\"0V0P0X0J160U1719181J190N\",\" со\":\"0V160XBG160L171E189K19311L7D1M3C\",\" со \":\"0X9T181U\",\" соб\":\"0V120X1L160B183R1923\",\" соба\":\"0V0A0X0Z1827191Z\",\" соби\":\"0V0H0X061825\",\" сов\":\"0X0O182B1902\",\" сове\":\"0X0E182F\",\" совс\":\"181C\",\" согл\":\"0X0F181J\",\" сол\":\"0X061603180Y19081L2A\",\" сон\":\"0X0M171H1806190F1L3I1M3D\",\" сонд\":\"1L30\",\" сони\":\"0X021M2F\",\" сонс\":\"1M3Y\",\" соро\":\"1809190S\",\" сос\":\"0X181818\",\" сосе\":\"0X0L180O\",\" сост\":\"0X0M181B\",\" соғ\":\"1L2H\",\" соғы\":\"1L2X\",\" соң\":\"1L2A\",\" сп\":\"0V2H0X2S163S178T184X196V1L11\",\" спа\":\"0V1C0X0F160J1771181Z190X\",\" спав\":\"0V2F1907\",\" спад\":\"1607173U\",\" спаз\":\"160B171L\",\" спас\":\"0V0K0X09160C181X1903\",\" спи\":\"0V030X101611180U190P\",\" спие\":\"0X0N\",\" спо\":\"0V0I0X0Q160X170H1817192O1L1I\",\" спод\":\"192C\",\" спор\":\"0V0T0X0B160L180T190C1L27\",\" спр\":\"0V0X0X1F1615173N18211924\",\" спра\":\"0V0B0X0B1611174X181C191M\",\" спре\":\"0V200X10160O\",\" спро\":\"0X061823191C\",\" спі\":\"170T191F\",\" спів\":\"191F\",\" ср\":\"0V1Q0X1Z1620170B18121902\",\" срам\":\"0V080X0D160A\",\" сре\":\"0V1H0X1V161T180I\",\" сред\":\"0V0W0X0D1610180W\",\" срещ\":\"162P\",\" срећ\":\"0V2D\",\" среќ\":\"0X1C\",\" ст\":\"0V8C0X5H16A8179O188K195K1L1E\",\" ста\":\"0V2I0X2Y163P17B2184B19341L10\",\" став\":\"0V0T0X0X161Q170L1809190P\",\" стал\":\"0V0G174C181Z190U\",\" стан\":\"0V230X18162L171O181F190Q1L0Z\",\" стар\":\"0V1V0X0L1617174T1833191J\",\" стая\":\"1622170W\",\" ств\":\"0V230X07170M1907\",\" ства\":\"0V550X07170W\",\" сте\":\"0V280X0Q1628180L1905\",\" сте \":\"0V570X0I1644\",\" сти\":\"0V150X0T1615180B1904\",\" стиг\":\"0V1U0X0P161X\",\" сто\":\"0V140X151618171T183P1918\",\" стои\":\"0X04160M1827\",\" стол\":\"0V100X07160O171R182M190U\",\" стор\":\"0X0E180Z1907\",\" стр\":\"0V1A0X1H162Z172K182Q190U\",\" стра\":\"0V1V0X14164S172K183P190O\",\" сту\":\"0V0I0X0A160Y170S180N190L1L0T\",\" студ\":\"0V150X0A1620170W180N190M1L15\",\" су\":\"0V6T0X5Z16151768181O191P1L321M2V\",\" су \":\"0V5M1L1B\",\" сум\":\"0V0A0X711604172H180I190U\",\" сум \":\"0X7E\",\" суп\":\"0V0K0X0916061726180B190B\",\" супр\":\"0V0V172018021903\",\" сур\":\"0X05170P18021M2E\",\" сура\":\"1M16\",\" сург\":\"1M2B\",\" сус\":\"0V06172Y190A\",\" суст\":\"1734\",\" сут\":\"0V0V160R170A18051902\",\" сутр\":\"0V28161N\",\" суу\":\"1M0V\",\" сф\":\"0X0G18021902\",\" сфа\":\"0X0K\",\" сх\":\"0V091604170W180C190Y\",\" схо\":\"170L180D190V\",\" схож\":\"1804190V\",\" сч\":\"160A181I\",\" счас\":\"181T\",\" счит\":\"1608181K\",\" съ\":\"16DF180I\",\" съб\":\"160U\",\" съв\":\"160S\",\" съжа\":\"1614\",\" съм\":\"169T\",\" съм \":\"16IA\",\" със\":\"161C\",\" със \":\"161Z\",\" същ\":\"1612\",\" също\":\"1616\",\" сы\":\"171D180R1L2J\",\" сь\":\"17051920\",\" сьо\":\"192B\",\" сьог\":\"1937\",\" сэ\":\"171018021M1J\",\" сэл\":\"1M0V\",\" сэтг\":\"1M16\",\" ся\":\"1605175Y18031903\",\" сяб\":\"174S\",\" сябе\":\"172A\",\" сябр\":\"174M\",\" сядз\":\"171O\",\" сяст\":\"171K\",\" сѐ\":\"0X28\",\" сѐ \":\"0X2X\",\" сё\":\"17251802\",\" сён\":\"1737\",\" сённ\":\"174R\",\" сі\":\"171U190Z1L7Q\",\" сіз\":\"1LCX\",\" сіз \":\"1L9T\",\" сізг\":\"1L2X\",\" сізд\":\"1L6Q\",\" сү\":\"1L1W1M0T\",\" сұ\":\"1L1O\",\" сұра\":\"1L2K\",\" сә\":\"1L2E\",\" сө\":\"1L4A\",\" сөз\":\"1L3R\",\" сөй\":\"1L3X\",\" сөйл\":\"1L5I\",\" т\":\"0VHL0XJF16I117F818PP19RX1LL71MKX\",\" тi\":\"1L1B\",\" тiл\":\"1L21\",\" та\":\"0V5F0X66166Z17G0188T199P1LGR1MCO\",\" та \":\"0V0J1806192U1M5J\",\" таа\":\"0X3J1M0Z\",\" таа \":\"0X3Q\",\" таб\":\"176S180419021L42\",\" табе\":\"178B\",\" табо\":\"171P\",\" табы\":\"1L34\",\" тав\":\"0X03170D1M15\",\" таг\":\"0X02171O\",\" таго\":\"172I\",\" тады\":\"171O\",\" таз\":\"163M1L14\",\" тази\":\"167I\",\" так\":\"0V280X1X162817CF1894196W\",\" так \":\"178O189P1954\",\" така\":\"0V0B0X1D1632171B180T190X\",\" такв\":\"0V0N0X0F\",\" таки\":\"160K181Y191X\",\" тако\":\"0V440X05160G172N1844190Z\",\" такс\":\"0V0H0X04160E1734180C190A\",\" такі\":\"174B190I\",\" тал\":\"0V05180519041L2V1M1V\",\" тала\":\"180819061L201M2V\",\" там\":\"0V1I0X1D161A174K181R19131L2H\",\" там \":\"162Q173K1837191L\",\" тама\":\"0X03170E1L37\",\" тамо\":\"0V3O\",\" таму\":\"0X1D172Z\",\" тан\":\"0X0816081710180C190G1L2M1M4J\",\" танд\":\"1M1E\",\" таны\":\"1L3A1M4A\",\" тап\":\"0V020X031L32\",\" тар\":\"1709180619031L78\",\" тара\":\"18031L2X\",\" тари\":\"1L4G\",\" тарт\":\"1L2U\",\" тас\":\"1L2V\",\" таст\":\"1L2H\",\" тат\":\"0V070X0R1608170W1808190C1L0T1M0Z\",\" татк\":\"0X0O1606\",\" тау\":\"1L2A\",\" тај\":\"0V190X09\",\" тај \":\"0V2Q\",\" тағ\":\"1L2V\",\" тағы\":\"1L2N\",\" таң\":\"1L36\",\" таңд\":\"1L2D\",\" тв\":\"0V1I0X1I1624173N182C1935\",\" тва\":\"174E190E\",\" твар\":\"171S190L\",\" твая\":\"171S\",\" тво\":\"0V1E0X1U161I171V1834192F\",\" твое\":\"0X0F160P1813\",\" твои\":\"0X0C160D1817\",\" твой\":\"1721181C\",\" твоя\":\"162018131914\",\" твоє\":\"190S\",\" твої\":\"190U\",\" твој\":\"0V2S0X17\",\" твъ\":\"160W\",\" твър\":\"161W\",\" тві\":\"190V\",\" твій\":\"1917\",\" те\":\"0V4R0X80169C18BU197X1L7N1M0X\",\" те \":\"0V2D0X4R165K1809191L\",\" теб\":\"0V0S0X2G161T18AT1942\",\" теб \":\"162O\",\" тебе\":\"0V1G0X2L161718B1195U\",\" тебя\":\"189I\",\" теж \":\"1910\",\" тез\":\"16191L17\",\" тези\":\"162O\",\" тек\":\"0V070X0E1603180619021L2F\",\" тек \":\"0V061L2D\",\" тел\":\"0V0X0X0V160X181I191G1L1P\",\" теле\":\"0V250X0S161Y182G19231L2H\",\" тем\":\"0V070X0F16081817190D1L17\",\" тен\":\"0V090X08160G180B190C1M0T\",\" тенн\":\"180G1M1M\",\" тепе\":\"181Q190Q\",\" тер\":\"0V050X0B1606180T190E1L2T\",\" теш\":\"0V0I0X0Q\",\" тешк\":\"0V190X0P\",\" тең\":\"1L2H\",\" ти\":\"0V410X88168K180C19GR1L231M1T\",\" ти \":\"0V3X0X9E168W19HX\",\" тие\":\"0X0T\",\" тие \":\"0X0U\",\" тий\":\"1M25\",\" тийм\":\"1M3B\",\" тиі\":\"1L2O\",\" тиіс\":\"1L2R\",\" то\":\"0VPD0XSG16RW17CK18PV19SF1LBE1M9I\",\" то \":\"0VBB0X02160A170X182L190G\",\" тоа\":\"0XC8160A\",\" тоа \":\"0XCT\",\" тоб\":\"0V0H18151953\",\" тобо\":\"0V171824191B\",\" тобі\":\"1964\",\" тов\":\"16A618041905\",\" това\":\"16J418081904\",\" тог\":\"0V0T0X081607181C190W1M2U\",\" тога\":\"0V1X0X09160F\",\" тогл\":\"1M42\",\" того\":\"181Q191B1M1M\",\" тое\":\"172G\",\" тое \":\"173N\",\" тоже\":\"1820\",\" тоз\":\"162T\",\" този\":\"165V\",\" той\":\"168O171S1806190G\",\" той \":\"16GQ172O180C190N\",\" тол\":\"0V0L0X26162K175A18381L39\",\" толк\":\"0X27165D1807\",\" толы\":\"1L2K\",\" толь\":\"177S185B\",\" том\":\"0VMB0XSD16KC17B818QN19SG1LBM1M6C\",\" том \":\"0VSD0XSG16SG17B718SG19SG1LC01M9U\",\" тома\":\"0V9E174Z18AR19BA\",\" томе\":\"0V280X02180D191M\",\" томн\":\"1L2D\",\" томо\":\"0V4Y1839193L\",\" тому\":\"0V7A17151877197O\",\" томы\":\"1M1E\",\" тох\":\"1M0R\",\" тохи\":\"1M1I\",\" точ\":\"0X0O160L180N1907\",\" точн\":\"0X0G1614180U1907\",\" тој\":\"0V050X3N\",\" тој \":\"0V0C0X3T\",\" тр\":\"0V6S0X7Y16AM175Q183R1957\",\" тра\":\"0V170X0C160E171Q180M1913\",\" траж\":\"0V1S\",\" трап\":\"170E1914\",\" тре\":\"0V4M0X7L160O180W191D\",\" треб\":\"0V9I0X7I180I191N\",\" три\":\"0V1K0X17161R181X1921\",\" три \":\"0V2R0X0V162G182G191H\",\" тро\":\"0V070X0C170W180F191K\",\" трох\":\"170Y191V\",\" тру\":\"0V0A0X0E160S170F18161903\",\" труд\":\"0V0L0X0C161N181Q1902\",\" тръ\":\"161A\",\" тръг\":\"162O\",\" тры\":\"172M\",\" тры \":\"171X\",\" трэ\":\"174J\",\" трэб\":\"1764\",\" тря\":\"167U1802\",\" тряб\":\"16FB\",\" ту\":\"0V110X331632173U1825193O1L501M3A\",\" туда\":\"181Y\",\" тук\":\"0X3Q1637\",\" тук \":\"166G\",\" тука\":\"0X3P1607\",\" тур\":\"0V040X051607170S1807190L1L5P1M0K\",\" тура\":\"1L6M\",\" тус\":\"1M25\",\" туса\":\"1M1I\",\" тусл\":\"1M2F\",\" тут\":\"17481810192Y\",\" тут \":\"1765181V1949\",\" тух\":\"1M0V\",\" туха\":\"1M1Q\",\" тъ\":\"161F\",\" тър\":\"160V\",\" търс\":\"1616\",\" ты\":\"17GI18EE1L30\",\" ты \":\"17M818IB\",\" тым\":\"171W1L0O\",\" тым \":\"172R\",\" тэ\":\"172S1MK2\",\" тэг\":\"1M13\",\" тэгэ\":\"1M1M\",\" тэд\":\"1M2Q\",\" тэд \":\"1M46\",\" тэл\":\"1722\",\" тэле\":\"1733\",\" тэн\":\"170F1M1H\",\" тэнд\":\"1M1I\",\" тэр\":\"170M1MJ8\",\" тэр \":\"1MRS\",\" тя\":\"164S180A1903\",\" тя \":\"164U\",\" ті\":\"190O1L5C\",\" тіл\":\"190F1L5K\",\" тілд\":\"1L20\",\" тілі\":\"1L4A\",\" тү\":\"1L6I1M96\",\" түр\":\"1L4B\",\" түрд\":\"1L2H\",\" түс\":\"1L5C\",\" түсі\":\"1L3H\",\" түү\":\"1MA0\",\" түүн\":\"1MHU\",\" тұ\":\"1L7N\",\" тұр\":\"1LAF\",\" тұр \":\"1L2R\",\" тұра\":\"1L5C\",\" тұрғ\":\"1L3U\",\" тә\":\"1L2C\",\" тө\":\"1L2O1M3H\",\" төг\":\"1M0R\",\" төл\":\"1L191M1L\",\" төлө\":\"1M2Z\",\" төр\":\"1L1W1M19\",\" төрт\":\"1L23\",\" у\":\"0V9I0X2T162O177T18CP198N1L1F1M87\",\" у \":\"0VA4160817GN189W19CU\",\" уа\":\"0X061L2A\",\" уақ\":\"1L44\",\" уақы\":\"1L5V\",\" уб\":\"0V0Q0X1R160O170E181C1905\",\" уба\":\"0X1A170J\",\" убав\":\"0X1D\",\" убед\":\"0V0B0X0G160K180L\",\" уби\":\"0V0H0X0M160G180W1904\",\" ув\":\"0V1B0X05160B17121829190P\",\" уве\":\"0V1H0X041604170L181B1904\",\" увек\":\"0V35\",\" увер\":\"0V080X031827\",\" уви\":\"181A\",\" увид\":\"1828\",\" уд\":\"0V0L0X0B160P170J181H19091M1T\",\" уда\":\"0V0K0X03160A170E180W19061M23\",\" удаа\":\"1M2N\",\" удах\":\"1M1I\",\" уж\":\"0V0I0X0H1609170Y183G1906\",\" уже\":\"183L1907\",\" уже \":\"186J190A\",\" ужив\":\"0V110X0E\",\" ужо \":\"172B\",\" уз\":\"0V12170S180Q1903\",\" узна\":\"181P\",\" ул\":\"0V0G0X09160D170H180X190F1M10\",\" ум\":\"0V1B0X1316161709181Z1908\",\" уме\":\"0V0G0X0C1606181O\",\" умр\":\"0V0H0X0O160G1805\",\" умре\":\"0V0C0X0K1607\",\" ун\":\"0V0J0X0A16091709180B19081L0Y1M2D\",\" унив\":\"0V090X03160F180B1L2K\",\" унт\":\"1M13\",\" унта\":\"1M1E\",\" унш\":\"1M1D\",\" унши\":\"1M22\",\" уп\":\"0V1F0X0H160F170J180Q1909\",\" ур\":\"0V3Z0X031603170Q180J190A1M12\",\" ура\":\"0V4P170L1802\",\" урад\":\"0VB6\",\" ус\":\"0V260X101622174L1829191P1M12\",\" усе\":\"1606172B1803190E\",\" усе \":\"1734190K\",\" усп\":\"0V140X0S1615180S1909\",\" успе\":\"0V230X0N16121817\",\" успя\":\"161A\",\" уст\":\"0V0I0X07160A170G1818\",\" уста\":\"0V160X06160E170I181I\",\" усё\":\"172Q\",\" усё \":\"173U\",\" усі\":\"1711190X\",\" усі \":\"190V\",\" ут\":\"0V070X0R1612181119051M14\",\" утга\":\"1M16\",\" утр\":\"0X0U1616180Z1902\",\" утре\":\"0X0O162D\",\" уу\":\"1MAZ\",\" уу \":\"1M8U\",\" уул\":\"1M29\",\" уулз\":\"1M3U\",\" ууч\":\"1M0X\",\" уучл\":\"1M1U\",\" ух\":\"0V0G1604180H1M0N\",\" уха\":\"0V071M0R\",\" ухаа\":\"1M1I\",\" уч\":\"0V1R0X15163L170U181O190Q1M0Q\",\" уча\":\"0X09160Z180B1903\",\" уча \":\"161J\",\" учи\":\"0V1L0X0T162K181F190B\",\" учил\":\"0X0A162D180D\",\" учит\":\"0V170X09161M1822190G\",\" учор\":\"171T190F\",\" учр\":\"1M0P\",\" учра\":\"1M1E\",\" уш\":\"0V0B0X2I1605180L\",\" ушт\":\"0X39\",\" уште\":\"0X3F\",\" ф\":\"0V0Y0X0Y161V171F181Q19291L0Y1M0J\",\" фа\":\"0V0D0X1G160D171W180J190K1L0E\",\" фадз\":\"171M\",\" фал\":\"0V040X0N\",\" фала\":\"0X0D\",\" фат\":\"0X0O170I\",\" фати\":\"0X0L\",\" фи\":\"0V0M0X0O160Q180T1L0I\",\" фото\":\"0V0B0X0316171816190V\",\" фр\":\"0V0V0X0W165Q1718181319281L0S1M17\",\" фра\":\"0V0X0X0V1609171T181A192G1L1G1M1F\",\" фран\":\"0V2C0X0W160G172K1828193H1L231M2V\",\" фре\":\"1666\",\" френ\":\"16CB\",\" х\":\"0V2F0X0C161V1751186H197W1L231MMA\",\" ха\":\"0V0I0X08162T176U1807190A1L4X1ME1\",\" хаа\":\"1M3A\",\" хаан\":\"1M4T\",\" хаба\":\"1L2K\",\" хай\":\"160Q19021M1N\",\" хайд\":\"161I\",\" хайр\":\"1M2N\",\" хал\":\"17101L5A1M0T\",\" халу\":\"1M1A\",\" халы\":\"1L64\",\" хам\":\"1M2G\",\" хама\":\"1M22\",\" хамг\":\"1M1E\",\" хамт\":\"1M1M\",\" хан\":\"1M1D\",\" ханг\":\"1M1U\",\" хар\":\"0X071628170H180419041M7F\",\" хара\":\"170E180719021M5R\",\" харе\":\"1640\",\" харж\":\"1M1Q\",\" хари\":\"1M3F\",\" харс\":\"1M2J\",\" хац\":\"174D\",\" хаце\":\"175Z\",\" хач\":\"1734\",\" хачу\":\"174M\",\" хв\":\"0V0H160F171V180O1916\",\" хват\":\"181H\",\" хвил\":\"1912\",\" хвор\":\"170M190U\",\" хвіл\":\"1721\",\" хи\":\"0V0A0X03160B180719021L0F1M70\",\" хий\":\"1M7L\",\" хийд\":\"1M16\",\" хийж\":\"1M46\",\" хийс\":\"1M2V\",\" хийх\":\"1M5K\",\" хичэ\":\"1M16\",\" хл\":\"0V0I1608171P180C190Y\",\" хло\":\"171Q1803190X\",\" хлоп\":\"172K1806191C\",\" хо\":\"0V3F0X091632173D18BV19A71M6F\",\" ход\":\"0V0B161Q170I18171910\",\" ходи\":\"162O181W190Y\",\" холо\":\"181D190Q\",\" хон\":\"1M1D\",\" хоно\":\"1M2B\",\" хоо\":\"1M1H\",\" хоол\":\"1M2N\",\" хор\":\"0X02161C1838190A\",\" хора\":\"162S\",\" хоро\":\"185W190D\",\" хот\":\"0V050X05160C185F193L1M17\",\" хот \":\"1M16\",\" хоте\":\"0V0D0X05160P1869\",\" хоти\":\"182I\",\" хоті\":\"1955\",\" хоч\":\"173I186P1973\",\" хоча\":\"174V1905\",\" хоче\":\"186K1963\",\" хочу\":\"18641948\",\" хоё\":\"1M1B\",\" хоёр\":\"1M22\",\" хоћ\":\"0V3J\",\" хоће\":\"0V5R\",\" хоћу\":\"0V3C\",\" хр\":\"0V0R0X0J160N170D180D1906\",\" хра\":\"0V0Q0X0O160K180A\",\" хран\":\"0V160X0K16141809\",\" хт\":\"0V0T172Z192S\",\" хте\":\"0V0Z\",\" хтео\":\"0V1Q\",\" хто\":\"17511939\",\" хто \":\"176P193Q\",\" хтос\":\"170O190Y\",\" ху\":\"160I171G180E19091M4O\",\" хуба\":\"1612\",\" хуг\":\"1M0R\",\" хуга\":\"1M1I\",\" худ\":\"180819051M1Z\",\" худа\":\"1M2J\",\" худл\":\"1M1I\",\" хур\":\"1M0Z\",\" хурд\":\"1M1E\",\" хут\":\"17271903\",\" хутк\":\"17261902\",\" хуу\":\"1M11\",\" хэ\":\"1MII\",\" хэд\":\"1M2U\",\" хэд \":\"1M1E\",\" хэди\":\"1M1M\",\" хэдэ\":\"1M2J\",\" хэз\":\"1M1Z\",\" хэзэ\":\"1M3Y\",\" хэл\":\"1M80\",\" хэл \":\"1M2J\",\" хэлж\":\"1M16\",\" хэлн\":\"1M1A\",\" хэлс\":\"1M55\",\" хэлэ\":\"1M5O\",\" хэн\":\"1M4G\",\" хэн \":\"1M77\",\" хэр\":\"1M6L\",\" хэрв\":\"1M1A\",\" хэрэ\":\"1M9Y\",\" хэц\":\"1M0P\",\" хэцү\":\"1M1E\",\" хя\":\"1M0S\",\" хята\":\"1M1A\",\" хі\":\"170Q191O\",\" хіб\":\"170Q191U\",\" хіба\":\"1712192O\",\" хү\":\"1MDA\",\" хүл\":\"1M1V\",\" хүлэ\":\"1M3Q\",\" хүм\":\"1M15\",\" хүмү\":\"1M2B\",\" хүн\":\"1M4L\",\" хүн \":\"1M6W\",\" хүр\":\"1M1P\",\" хүрг\":\"1M16\",\" хүрт\":\"1M1A\",\" хүс\":\"1M4R\",\" хүсс\":\"1M1I\",\" хүсч\":\"1M2V\",\" хүсэ\":\"1M46\",\" хүү\":\"1M2K\",\" хүү \":\"1M16\",\" хүүх\":\"1M3B\",\" хө\":\"1M2P\",\" хөг\":\"1M15\",\" хөгж\":\"1M1Q\",\" ц\":\"0V0U0X0N160K1755180X19CA1M36\",\" ца\":\"0X02171K18031M5Q\",\" цаг\":\"1M4I\",\" цаг \":\"1M46\",\" цага\":\"1M1Q\",\" цагт\":\"1M22\",\" цвет\":\"0V0F0X02160Y181K\",\" це\":\"0V0Y0X18160W170M181819GX\",\" це \":\"19HU\",\" цей\":\"191S\",\" цей \":\"192L\",\" цел\":\"0V0F0X15160J180Q\",\" цело\":\"0V0H0X0E180B\",\" ци\":\"0V0F0X0A160918051918\",\" цим\":\"0V020X021913\",\" цим \":\"191J\",\" цо\":\"1M0L\",\" цр\":\"0V0P0X0L\",\" цу\":\"170W190B1M0Q\",\" ць\":\"193D\",\" цьо\":\"193W\",\" цьог\":\"194R\",\" цьом\":\"190Y\",\" цэ\":\"170R1M0Q\",\" цю\":\"190Z\",\" цю \":\"1916\",\" ця\":\"160M176Z1912\",\" ця \":\"1919\",\" цяб\":\"1769\",\" цябе\":\"1795\",\" цяг\":\"171Y\",\" цягн\":\"172O\",\" цяжк\":\"1723\",\" цяп\":\"172C\",\" цяпе\":\"173C\",\" ці\":\"177C1932\",\" ці \":\"179G190U\",\" цік\":\"171S191E\",\" ціка\":\"172O1920\",\" ч\":\"0V2B0X23165U175118EK197L1L071MBV\",\" ч \":\"1M5Q\",\" ча\":\"0V140X1A162U17CF182L193G1MAI\",\" чаг\":\"171S\",\" чаго\":\"172O\",\" чад\":\"0X0516061M67\",\" чада\":\"1M7F\",\" чадд\":\"1M1Q\",\" чадн\":\"1M2N\",\" чак\":\"0V08160W172H\",\" чака\":\"161U173N\",\" чал\":\"1743\",\" чала\":\"1762\",\" чам\":\"0X02173R1M6G\",\" чама\":\"1M5C\",\" чамд\":\"1M5R\",\" чамт\":\"1M1Y\",\" чаму\":\"175K\",\" час\":\"0V0M0X0W161I177Y182R193C\",\" час \":\"0V090X0A160U174I180I1923\",\" часа\":\"0X071610171L180R\",\" часо\":\"0V0W0X0G160M1719180W1909\",\" част\":\"160O172G182H191E\",\" часу\":\"0V06172A18021914\",\" че\":\"0V240X2916F5185U192G1L0I\",\" че \":\"16EI\",\" чег\":\"0V04181D\",\" чего\":\"182J\",\" чек\":\"0V0X0X1J1603191A\",\" чека\":\"0V290X1I191R\",\" чел\":\"0X0316071823\",\" чело\":\"183T\",\" чем\":\"0V08182S19021L0T\",\" чем \":\"184C\",\" чер\":\"160Q18121918\",\" чере\":\"181I190U\",\" чес\":\"0V0Y0X0U1613180E1909\",\" чест\":\"0V2F0X0T162B180O1902\",\" чет\":\"0V0C0X091613180J1903\",\" чете\":\"1613\",\" чи\":\"0V1F0X17160U181919461MD2\",\" чи \":\"192Y1MBJ\",\" чин\":\"0V0A0X0E180219041M42\",\" чини\":\"0V0O0X0918021M6E\",\" чинь\":\"1M1A\",\" чит\":\"0V0V0X0K1810190Y\",\" чита\":\"0V260X0L181W191D\",\" чо\":\"0V0Q0X131625170N195L1M0S\",\" чов\":\"0V0S0X19161Z1902\",\" чове\":\"0V210X1C16461903\",\" чог\":\"190V\",\" чого\":\"1919\",\" чоло\":\"1912\",\" чом\":\"194I\",\" чому\":\"196H\",\" чон\":\"1M0X\",\" чоно\":\"1M1U\",\" чт\":\"18KA\",\" что\":\"18OQ\",\" что \":\"18SE\",\" что-\":\"183C\",\" чтоб\":\"189I\",\" чу\":\"0V190X24163A170Y1818191H1M0H\",\" чув\":\"0V080X1N161D180Z190H\",\" чува\":\"0V0I0X0G1619\",\" чувс\":\"0X12161O181T\",\" чуд\":\"0V0E0X0M160J1808190M\",\" чудо\":\"0X031805190V\",\" чух\":\"1612\",\" чух \":\"1626\",\" чы\":\"1740\",\" чым\":\"1726\",\" чым \":\"172Y\",\" чыт\":\"1721\",\" чыта\":\"1732\",\" чём \":\"181K\",\" ш\":\"0V3J0X3M160H177K181T192A1L6G1M3K\",\" ша\":\"0V0L0X0L160J1714180Q190O1L651M1C\",\" шанс\":\"0V0M0X0E160I180G190A\",\" шар\":\"0X03180519021L4D\",\" шарт\":\"1L23\",\" шви\":\"190U\",\" швид\":\"1918\",\" ше\":\"0V0N0X0O160L180K19041L3W\",\" шек\":\"1L2D\",\" шеш\":\"0V070X021L2O\",\" ши\":\"0V060X0A1605180719051L0D1M4Q\",\" шиг\":\"1M29\",\" шиг \":\"1M42\",\" ший\":\"1M0Z\",\" шийд\":\"1M1Y\",\" шин\":\"1M1B\",\" шинэ\":\"1M27\",\" шир\":\"0V030X03180419031M0T\",\" ширэ\":\"1M1M\",\" шк\":\"0V0R0X0B171R1810191N\",\" шко\":\"0V0W0X0D171T1819191O\",\" шкод\":\"170E190V\",\" школ\":\"0V280X0E172C182C191L\",\" шм\":\"17271903\",\" шма\":\"173P1903\",\" шмат\":\"175H1905\",\" шт\":\"0V750XAH17HK180A1909\",\" шта\":\"0V51170B18061906\",\" шта \":\"0VBQ\",\" што\":\"0V3O0XD517OW18031903\",\" што \":\"0V900XDE17SA\",\" штот\":\"0X0D\",\" шу\":\"0V0C0X0616051716180H190J1M17\",\" шуву\":\"1M1A\",\" шука\":\"1720190S\",\" шч\":\"171N\",\" шча\":\"1723\",\" шчас\":\"1733\",\" шы\":\"170D1L5S\",\" шын\":\"1L2F\",\" шығ\":\"1L4O\",\" шыға\":\"1L44\",\" шығы\":\"1L23\",\" шү\":\"1M14\",\" шүү\":\"1M0T\",\" шүү \":\"1M1I\",\" щ\":\"162L180319C9\",\" ща\":\"1617190R\",\" щас\":\"1619190W\",\" щасл\":\"1910\",\" щаст\":\"162P190B\",\" ще\":\"16991804192Z\",\" ще \":\"16A7193E\",\" що\":\"160819KJ\",\" що \":\"160319JG\",\" щоб\":\"193M\",\" щоб \":\"1956\",\" щойн\":\"190Y\",\" щос\":\"191J\",\" щось\":\"1929\",\" ы\":\"1L0Y\",\" э\":\"170Q18BK1L111MAE\",\" эд\":\"1M0L\",\" эдгэ\":\"1M16\",\" эк\":\"170X180K1L1I\",\" эм\":\"18041M2Z\",\" эмч\":\"1M0T\",\" эмч \":\"1M1E\",\" эмэ\":\"1M2A\",\" эмэг\":\"1M4E\",\" эн\":\"170818041L0E1MEV\",\" энд\":\"1M38\",\" энд \":\"1M5Z\",\" энэ\":\"1MEH\",\" энэ \":\"1MO5\",\" эр\":\"1M2X\",\" эрт\":\"1M0P\",\" эрт \":\"1M1A\",\" эрэ\":\"1M0X\",\" эрэг\":\"1M1M\",\" эс\":\"170J18071M0T\",\" эт\":\"18L4\",\" эта\":\"181K\",\" эта \":\"182L\",\" эти\":\"182D\",\" эти \":\"1821\",\" этим\":\"181X\",\" это\":\"18NI\",\" это \":\"18QU\",\" этог\":\"185A\",\" этой\":\"182A\",\" этом\":\"186A\",\" этот\":\"184K\",\" эту\":\"181I\",\" эту \":\"182S\",\" эх\":\"1M1J\",\" эхэ\":\"1M0P\",\" эхэл\":\"1M1A\",\" ээ\":\"1M1L\",\" ээ \":\"1M0T\",\" ээж\":\"1M0X\",\" ээж \":\"1M1E\",\" ю\":\"1603170518061M5I\",\" юм\":\"160318021M67\",\" юм \":\"1M71\",\" юу\":\"1M7N\",\" юу \":\"1M8E\",\" я\":\"161217HV18GE19KG1L081M6Y\",\" я \":\"161Q17PM18QH19RN\",\" яа\":\"1M2R\",\" яаг\":\"1M1J\",\" яага\":\"1M33\",\" яаж\":\"1M0Z\",\" яаж \":\"1M1Y\",\" яблы\":\"1720\",\" яв\":\"180G19021M5K\",\" ява\":\"1M3F\",\" явах\":\"1M5Z\",\" явж\":\"1M0R\",\" явж \":\"1M1I\",\" явс\":\"1M13\",\" явса\":\"1M22\",\" яг\":\"176V1M0X\",\" яг \":\"1M13\",\" яго\":\"17B8\",\" яго \":\"17FJ\",\" яд\":\"1618170918031L0F1M0S\",\" ядар\":\"1M16\",\" яде\":\"160T\",\" яе\":\"174R\",\" яе \":\"177W\",\" яз\":\"170618171902\",\" язы\":\"181N\",\" язык\":\"1831\",\" як\":\"160617CC199B\",\" як \":\"17B5195L\",\" яка\":\"171U190Q\",\" яка \":\"190Y\",\" якая\":\"172F\",\" якби\":\"190R\",\" яки\":\"1912\",\" який\":\"1916\",\" яко\":\"172Q190S\",\" якой\":\"171L\",\" якую\":\"171K\",\" якщ\":\"191F\",\" якщо\":\"1922\",\" які\":\"175H190U\",\" які \":\"173M190S\",\" якія\":\"172F\",\" ям\":\"1606171P1M28\",\" яма\":\"1M2K\",\" ямар\":\"1M55\",\" яму\":\"172W\",\" яму \":\"174C\",\" ян\":\"17BQ18021903\",\" яна\":\"17CW\",\" яна \":\"17HZ\",\" яны\":\"176C\",\" яны \":\"179A\",\" яп\":\"160J170X180H190J1M1C\",\" япо\":\"160L171L180N190N1M1L\",\" япон\":\"1619172E1817190X1M37\",\" яр\":\"170B18031M4D\",\" яри\":\"1M1L\",\" ярих\":\"1M1I\",\" ярь\":\"1M3J\",\" ярьд\":\"1M33\",\" ярьж\":\"1M2V\",\" яш\":\"172S\",\" яшч\":\"174Q\",\" яшчэ\":\"176X\",\" ё\":\"174C1M10\",\" ёй\":\"171H\",\" ёй \":\"172J\",\" ён\":\"17B6\",\" ён \":\"17HJ\",\" ёс\":\"173C1M2I\",\" ёст\":\"1M2I\",\" ёсто\":\"1M51\",\" ёсц\":\"175M\",\" ёсць\":\"1789\",\" ѓ\":\"0X02\",\" є\":\"191O\",\" є \":\"192X\",\" ѕ\":\"0X05\",\" і\":\"177U19491L31\",\" і \":\"17FM192V\",\" ід\":\"171Q190U\",\" із\":\"1706191M1L0W\",\" із \":\"191S\",\" ім\":\"172M190Q\",\" ім \":\"171Z\",\" ін\":\"172W191S\",\" інш\":\"172J190Y\",\" іншы\":\"1723\",\" іс\":\"171V19101L3U\",\" іст\":\"190E1L4B\",\" істе\":\"1L5S\",\" ісці\":\"171S\",\" іх\":\"172G\",\" іх \":\"173U\",\" іш\":\"170A1L23\",\" іші\":\"1L2H\",\" ішін\":\"1L23\",\" ї\":\"192Z\",\" їй \":\"190V\",\" їст\":\"190W\",\" їсти\":\"190V\",\" їх\":\"1911\",\" її\":\"1921\",\" її \":\"192E\",\" ј\":\"0VEQ0X3T\",\" ја\":\"0V6A0XCV\",\" ја \":\"0V5Q0XAO\",\" јав\":\"0V070X1N\",\" јава\":\"0X0J\",\" јави\":\"0V0D0X0Z\",\" јад\":\"0X1Q\",\" јада\":\"0X0G\",\" јаде\":\"0X1A\",\" јази\":\"0X0G\",\" јас\":\"0V060X2R\",\" јас \":\"0X2P\",\" је\":\"0VQ3\",\" је \":\"0VQF\",\" јед\":\"0V3O\",\" једа\":\"0V1T\",\" једе\":\"0V2B\",\" једн\":\"0V3U\",\" јез\":\"0V10\",\" јези\":\"0V2B\",\" јер \":\"0V1P\",\" јес\":\"0V14\",\" јо\":\"0V1R\",\" још\":\"0V1P\",\" још \":\"0V4B\",\" ју\":\"0V190X04\",\" јуче\":\"0V20\",\" љ\":\"0V0N0X08\",\" љу\":\"0V1T0X0U\",\" љуб\":\"0V0I0X14\",\" љубо\":\"0X0P\",\" људ\":\"0V1C\",\" људи\":\"0V2W\",\" њ\":\"0V0Z\",\" ње\":\"0V21\",\" њег\":\"0V1T\",\" њего\":\"0V3U\",\" ћ\":\"0V1W\",\" ће\":\"0V3Y\",\" ће \":\"0V3A\",\" ћеш \":\"0V1O\",\" ћу\":\"0V1B\",\" ћу \":\"0V1H\",\" ќ\":\"0X32\",\" ќе\":\"0XAM\",\" ќе \":\"0XDC\",\" ѝ\":\"0X0K1608\",\" ѝ \":\"0X211611\",\" ў\":\"178K\",\" ў \":\"17GA\",\" ўбач\":\"171L\",\" ўж\":\"171T\",\" ўжо\":\"172Z\",\" ўжо \":\"174G\",\" ўс\":\"175I\",\" ўсе\":\"171Y\",\" ўсе \":\"172O\",\" ўсё\":\"173U\",\" ўсё \":\"1758\",\" џ\":\"0V080X07\",\" џо\":\"0V090X0C\",\" џон \":\"0V0G0X0E\",\" ґ\":\"1902\",\" ғ\":\"1L1H\",\" ға\":\"1L2K\",\" ған\":\"1L2H\",\" ғана\":\"1L3K\",\" ғылы\":\"1L2X\",\" қ\":\"1LMM\",\" қа\":\"1LRR\",\" қаб\":\"1L4D\",\" қабы\":\"1L3R\",\" қаж\":\"1L2X\",\" қаже\":\"1L3X\",\" қаз\":\"1LG2\",\" қаза\":\"1LHZ\",\" қазі\":\"1L47\",\" қай\":\"1L8A\",\" қайд\":\"1L30\",\" қайт\":\"1L47\",\" қал\":\"1LD3\",\" қала\":\"1LAQ\",\" қалд\":\"1L3H\",\" қалы\":\"1L2N\",\" қам\":\"1L2Q\",\" қамт\":\"1L2H\",\" қан\":\"1L44\",\" қанд\":\"1L27\",\" қар\":\"1LDD\",\" қара\":\"1LAQ\",\" қары\":\"1L2D\",\" қат\":\"1L78\",\" қата\":\"1L27\",\" қатт\":\"1L2A\",\" қаты\":\"1L4T\",\" қау\":\"1L2A\",\" қауі\":\"1L27\",\" қо\":\"1LCT\",\" қозғ\":\"1L27\",\" қой\":\"1L3O\",\" қол\":\"1L64\",\" қол \":\"1L2R\",\" қолд\":\"1L3R\",\" қор\":\"1L5G\",\" қорғ\":\"1L3N\",\" қос\":\"1L3V\",\" қосы\":\"1L2K\",\" қоғ\":\"1L2J\",\" қоға\":\"1L3N\",\" қы\":\"1L8Q\",\" қыз\":\"1L8F\",\" қызм\":\"1L6G\",\" қызы\":\"1L2U\",\" қылм\":\"1L27\",\" қыр\":\"1L26\",\" құ\":\"1LBE\",\" құл\":\"1L21\",\" құр\":\"1L6R\",\" құра\":\"1L44\",\" құры\":\"1L2N\",\" құқ\":\"1L7C\",\" құқы\":\"1LAA\",\" ү\":\"1L4X1M7X\",\" үг\":\"1M1V\",\" үгү\":\"1M13\",\" үгүй\":\"1M27\",\" үд\":\"1M0T\",\" үдэ\":\"1M0T\",\" үе\":\"1M15\",\" үед\":\"1M11\",\" үед \":\"1M1Y\",\" үз\":\"1L0E1M27\",\" үзэ\":\"1M1L\",\" үзэх\":\"1M1E\",\" үй\":\"1L4Q\",\" үйд\":\"1L26\",\" үйре\":\"1L2A\",\" үл\":\"1L1P\",\" үлк\":\"1L2A\",\" үлке\":\"1L37\",\" үн\":\"1L0F1M3V\",\" үнэ\":\"1M4E\",\" үнэн\":\"1M2N\",\" үнэх\":\"1M55\",\" үр\":\"1M10\",\" үрг\":\"1M0T\",\" үргэ\":\"1M1M\",\" үх\":\"1M0N\",\" үш\":\"1L4U\",\" үш \":\"1L21\",\" үші\":\"1L68\",\" үшін\":\"1L8S\",\" үү\":\"1M8N\",\" үү \":\"1M50\",\" үүн\":\"1M5F\",\" үүни\":\"1M9D\",\" ұ\":\"1L4E\",\" ұй\":\"1L1T\",\" ұйы\":\"1L2X\",\" ұйым\":\"1L2X\",\" ұл\":\"1L2X\",\" ұлт\":\"1L3M\",\" ұлтт\":\"1L4D\",\" ұна\":\"1L21\",\" ұс\":\"1L1K\",\" ұст\":\"1L26\",\" ұста\":\"1L34\",\" ұш\":\"1L1O\",\" ә\":\"1L61\",\" әд\":\"1L1H\",\" әзір\":\"1L2D\",\" әй\":\"1L1R\",\" әйе\":\"1L2Q\",\" әйел\":\"1L3X\",\" әк\":\"1L1D\",\" әл\":\"1L3B\",\" әле\":\"1L3O\",\" әлем\":\"1L3R\",\" әр\":\"1L5R\",\" әр \":\"1L3D\",\" әрі\":\"1L21\",\" ө\":\"1L7T1M70\",\" өв\":\"1M0T\",\" өг\":\"1M3X\",\" өгл\":\"1M15\",\" өглө\":\"1M27\",\" өгн\":\"1M0V\",\" өгнө\":\"1M1Q\",\" өгс\":\"1M0Z\",\" өгсө\":\"1M1Y\",\" өгө\":\"1M0V\",\" өд\":\"1M1Q\",\" өдө\":\"1M1H\",\" өдөр\":\"1M2Z\",\" өз\":\"1L7I\",\" өз \":\"1L4H\",\" өзг\":\"1L26\",\" өзге\":\"1L30\",\" өзі\":\"1L4Q\",\" өзін\":\"1L47\",\" өл\":\"1L1D\",\" өм\":\"1L1J1M12\",\" өмн\":\"1M11\",\" өмнө\":\"1M22\",\" өмі\":\"1L2H\",\" өмір\":\"1L3K\",\" өн\":\"1L251M42\",\" өнг\":\"1M1N\",\" өнгө\":\"1M33\",\" өнд\":\"1L1G1M0M\",\" өнді\":\"1L23\",\" өндө\":\"1M1A\",\" өнім\":\"1L2H\",\" өнө\":\"1M2M\",\" өнөө\":\"1M51\",\" өр\":\"1L0I1M1J\",\" өрө\":\"1M11\",\" өрөө\":\"1M22\",\" өт\":\"1L6Z\",\" өте\":\"1L4F\",\" өте \":\"1L59\",\" өтк\":\"1L4B\",\" өтке\":\"1L2K\",\" өткі\":\"1L3H\",\" өтті\":\"1L2R\",\" өті\":\"1L2D\",\" өч\":\"1M1H\",\" өчи\":\"1M1R\",\" өчиг\":\"1M3I\",\" өө\":\"1M3U\",\" өөр\":\"1M4C\",\" өөр \":\"1M2Z\",\" өөри\":\"1M2F\",\" өөрч\":\"1M16\",\" өөрө\":\"1M1I\",\" א\":\"1HSG\",\" אַ\":\"1HOL\",\" אַ \":\"1HP9\",\" אַוו\":\"1H12\",\" אַז\":\"1H7Z\",\" אַז \":\"1H4Z\",\" אַזו\":\"1H3G\",\" אַל\":\"1H6D\",\" אַלט\":\"1H0X\",\" אַלע\":\"1H34\",\" אַלץ\":\"1H1I\",\" אַן\":\"1H4D\",\" אַן \":\"1H4P\",\" אַנ\":\"1H2L\",\" אַנד\":\"1H14\",\" אַנט\":\"1H16\",\" אַר\":\"1H59\",\" אַרא\":\"1H11\",\" אַרב\":\"1H15\",\" אַרו\":\"1H1E\",\" אַרײ\":\"1H1B\",\" אָ\":\"1H5H\",\" אָב\":\"1H17\",\" אָבע\":\"1H14\",\" אָט \":\"1H10\",\" אָן\":\"1H1L\",\" אָן \":\"1H1Q\",\" אָנ\":\"1H22\",\" אָנג\":\"1H0U\",\" אָפ\":\"1H2U\",\" אָפּ\":\"1H2J\",\" אָר\":\"1H1K\",\" או\":\"1HBL\",\" אוי\":\"1HBP\",\" אויך\":\"1H0W\",\" אויס\":\"1H4Z\",\" אויף\":\"1H4J\",\" אויפ\":\"1H1W\",\" אומ\":\"1H1P\",\" און\":\"1H5S\",\" און \":\"1H69\",\" אונ\":\"1H43\",\" אונד\":\"1H2P\",\" אי\":\"1HSG\",\" איב\":\"1H1T\",\" איבע\":\"1H1Y\",\" איז\":\"1HSA\",\" איז \":\"1HSG\",\" איי\":\"1H32\",\" איינ\":\"1H1C\",\" איך\":\"1HLG\",\" איך \":\"1HMN\",\" אים\":\"1H1S\",\" אים \":\"1H1X\",\" אין\":\"1HAG\",\" אין \":\"1HB8\",\" אינ\":\"1H1X\",\" אינט\":\"1H0V\",\" איצט\":\"1H0X\",\" איר\":\"1H8X\",\" איר \":\"1H8Y\",\" אמת\":\"1H18\",\" אמת \":\"1H15\",\" אײ\":\"1H27\",\" אײַ\":\"1H42\",\" אײַך\":\"1H1I\",\" אײַע\":\"1H20\",\" ב\":\"1H8U\",\" בא\":\"1H4V\",\" באַ\":\"1H74\",\" באַו\":\"1H0U\",\" באַל\":\"1H0U\",\" באַר\":\"1H0U\",\" באַש\":\"1H1C\",\" באָ\":\"1H1S\",\" באָס\":\"1H15\",\" בו\":\"1H0X\",\" בוך \":\"1H10\",\" בי\":\"1H70\",\" בין\":\"1H63\",\" בין \":\"1H6L\",\" ביס\":\"1H4T\",\" ביסט\":\"1H4N\",\" בל\":\"1H11\",\" בע\":\"1H1I\",\" בר\":\"1H1I\",\" ברו\":\"1H1K\",\" בײ\":\"1H1A\",\" בײַ\":\"1H2H\",\" בײַ \":\"1H1A\",\" ג\":\"1HD5\",\" גא\":\"1H2E\",\" גאַ\":\"1H1E\",\" גאַנ\":\"1H17\",\" גאָ\":\"1H30\",\" גאָט\":\"1H1C\",\" גאָר\":\"1H1G\",\" גו\":\"1H29\",\" גוט\":\"1H3V\",\" גוט \":\"1H2D\",\" גוטע\":\"1H15\",\" גי\":\"1H1W\",\" גיי\":\"1H24\",\" גל\":\"1H1C\",\" גלי\":\"1H1J\",\" גליי\":\"1H1E\",\" גנבֿ\":\"1H0U\",\" גע\":\"1HGW\",\" געב\":\"1H1U\",\" געג\":\"1H20\",\" געגע\":\"1H1E\",\" געה\":\"1H2I\",\" געהא\":\"1H24\",\" געו\":\"1HAM\",\" געוו\":\"1HBE\",\" געז\":\"1H3M\",\" געזא\":\"1H1X\",\" געזע\":\"1H1F\",\" געט\":\"1H23\",\" געטר\":\"1H17\",\" געל\":\"1H2K\",\" געלט\":\"1H16\",\" געמ\":\"1H1B\",\" געמא\":\"1H0X\",\" גענ\":\"1H1E\",\" גענו\":\"1H0W\",\" געפ\":\"1H2H\",\" געפֿ\":\"1H26\",\" געק\":\"1H1M\",\" געקו\":\"1H0Y\",\" גער\":\"1H1G\",\" גערע\":\"1H10\",\" געש\":\"1H2K\",\" גר\":\"1H1V\",\" גרוי\":\"1H13\",\" גרי\":\"1H18\",\" ד\":\"1HG3\",\" דא\":\"1H9Y\",\" דאַ\":\"1H2O\",\" דאַר\":\"1H1Y\",\" דאָ\":\"1HFC\",\" דאָ \":\"1H2D\",\" דאָס\":\"1HD5\",\" דאָר\":\"1H12\",\" דו\":\"1H42\",\" דו \":\"1H6S\",\" די\":\"1H97\",\" די \":\"1HDQ\",\" דיך \":\"1H10\",\" דיר\":\"1H1V\",\" דיר \":\"1H1V\",\" דע\":\"1HA0\",\" דעם\":\"1H5E\",\" דעם \":\"1H5T\",\" דער\":\"1HDI\",\" דער \":\"1HC7\",\" דר\":\"1H13\",\" דײ\":\"1H1Y\",\" דײַ\":\"1H3T\",\" דײַט\":\"1H0Y\",\" דײַן\":\"1H2O\",\" ה\":\"1HBV\",\" הא\":\"1HGT\",\" האַ\":\"1H29\",\" האַל\":\"1H15\",\" האָ\":\"1HOS\",\" האָב\":\"1HCI\",\" האָט\":\"1HHJ\",\" האָס\":\"1H2K\",\" האט \":\"1H0Z\",\" הו\":\"1H1J\",\" הוי\":\"1H19\",\" הונ\":\"1H1L\",\" הונט\":\"1H1C\",\" הי\":\"1H2O\",\" היי\":\"1H2I\",\" הייס\":\"1H13\",\" הינ\":\"1H1B\",\" הינט\":\"1H17\",\" הע\":\"1H1Y\",\" העבר\":\"1H0X\",\" הער\":\"1H1E\",\" הײַנ\":\"1H0U\",\" ו\":\"1H9E\",\" וו\":\"1HHC\",\" ווא\":\"1HB4\",\" וואַ\":\"1H2F\",\" וואָ\":\"1H8T\",\" ווו\":\"1H2U\",\" וווּ\":\"1H1P\",\" וווי\":\"1H1F\",\" ווי\":\"1HAZ\",\" ווי \":\"1H42\",\" וויי\":\"1H2J\",\" וויל\":\"1H3U\",\" ווע\":\"1HBU\",\" וועג\":\"1H1R\",\" וועט\":\"1H2H\",\" וועל\":\"1H3M\",\" ווען\":\"1H1N\",\" ווער\":\"1H3G\",\" ווײ\":\"1H1I\",\" ווײַ\":\"1H1M\",\" ז\":\"1HCX\",\" זא\":\"1H2S\",\" זאַ\":\"1H1N\",\" זאָ\":\"1H3K\",\" זאָג\":\"1H1M\",\" זאָל\":\"1H23\",\" זי\":\"1HC8\",\" זי \":\"1H5A\",\" זיי\":\"1H6Y\",\" זיי \":\"1H3Q\",\" זייע\":\"1H37\",\" זיך\":\"1HAO\",\" זיך \":\"1HBG\",\" זע\":\"1H7K\",\" זעט \":\"1H17\",\" זענ\":\"1HBG\",\" זענט\":\"1H2N\",\" זענע\":\"1HA7\",\" זײ\":\"1H4K\",\" זײַ\":\"1H7V\",\" זײַ \":\"1H0X\",\" זײַט\":\"1H1Q\",\" זײַן\":\"1H4D\",\" זײַנ\":\"1H1X\",\" ח\":\"1H18\",\" חבֿ\":\"1H1I\",\" חבֿר\":\"1H1L\",\" ט\":\"1H9K\",\" טא\":\"1HDU\",\" טאַ\":\"1H2K\",\" טאַט\":\"1H1U\",\" טאָ\":\"1HLB\",\" טאָם\":\"1HJA\",\" טאָמ\":\"1H3X\",\" טאָן\":\"1H10\",\" טאם \":\"1H0U\",\" טו\":\"1H1E\",\" טע\":\"1H18\",\" טר\":\"1H1T\",\" טרא\":\"1H24\",\" טראַ\":\"1H12\",\" טראָ\":\"1H17\",\" י\":\"1H2P\",\" יא\":\"1H1A\",\" יאָ\":\"1H1J\",\" יי\":\"1H1P\",\" ייִ\":\"1H39\",\" ייִד\":\"1H37\",\" יע\":\"1H1D\",\" יעדע\":\"1H13\",\" כ\":\"1H2J\",\" כּ\":\"1H15\",\" כ׳\":\"1H2R\",\" כ׳ב\":\"1H31\",\" כ׳בי\":\"1H3A\",\" כ׳ה\":\"1H1T\",\" כ׳הא\":\"1H1X\",\" ל\":\"1H55\",\" לא\":\"1H1V\",\" לאַ\":\"1H1J\",\" לאַנ\":\"1H14\",\" לאָ\":\"1H1V\",\" לאָמ\":\"1H18\",\" לי\":\"1H4I\",\" ליב\":\"1H57\",\" ליב \":\"1H54\",\" ליי\":\"1H1M\",\" לע\":\"1H2V\",\" לעב\":\"1H2B\",\" לעבן\":\"1H1Y\",\" לער\":\"1H28\",\" לערנ\":\"1H1L\",\" לײַ\":\"1H18\",\" מ\":\"1HDT\",\" מא\":\"1H4F\",\" מאַ\":\"1H5C\",\" מאַכ\":\"1H1U\",\" מאַר\":\"1H14\",\" מאָ\":\"1H2Y\",\" מאָל\":\"1H21\",\" מו\":\"1H1K\",\" מי\":\"1HBC\",\" מיד \":\"1H12\",\" מיט\":\"1H6E\",\" מיט \":\"1H5T\",\" מיי\":\"1H1J\",\" מיך\":\"1H2G\",\" מיך \":\"1H2O\",\" מיר\":\"1HAI\",\" מיר \":\"1HBA\",\" מע\":\"1H5T\",\" מען \":\"1H12\",\" מענ\":\"1H3V\",\" מענט\":\"1H3O\",\" מער\":\"1H3V\",\" מער \":\"1H0X\",\" מערי\":\"1H2T\",\" מש\":\"1H19\",\" משוג\":\"1H0U\",\" משפּ\":\"1H11\",\" מײ\":\"1H3Q\",\" מײַ\":\"1H73\",\" מײַן\":\"1H69\",\" מײַנ\":\"1H1C\",\" נ\":\"1H9S\",\" נא\":\"1H43\",\" נאַ\":\"1H2E\",\" נאַר\":\"1H1D\",\" נאָ\":\"1H5H\",\" נאָך\":\"1H2N\",\" נאָר\":\"1H20\",\" ני\":\"1HDI\",\" ניט\":\"1H1Y\",\" ניט \":\"1H20\",\" ניש\":\"1HKZ\",\" נישט\":\"1HM5\",\" נע\":\"1H0Y\",\" ס\":\"1H3M\",\" ס'אי\":\"1H0W\",\" סא\":\"1H1N\",\" סאַ\":\"1H2P\",\" סאַמ\":\"1H2F\",\" סך \":\"1H1N\",\" ס׳\":\"1H2H\",\" ס׳א\":\"1H3N\",\" ס׳אי\":\"1H3T\",\" ע\":\"1H5Z\",\" ענ\":\"1H0Z\",\" ענגל\":\"1H0Z\",\" עס\":\"1H3B\",\" עס \":\"1H4J\",\" עסן \":\"1H12\",\" עפ\":\"1H0W\",\" עפּ\":\"1H1C\",\" ער\":\"1H5A\",\" ער \":\"1H8T\",\" פ\":\"1HC8\",\" פּ\":\"1H5U\",\" פּא\":\"1H4G\",\" פּאַ\":\"1H2X\",\" פּאָ\":\"1H21\",\" פּר\":\"1H2G\",\" פּרא\":\"1H1G\",\" פֿ\":\"1HH9\",\" פֿא\":\"1HFU\",\" פֿאַ\":\"1HFC\",\" פֿאָ\":\"1H2C\",\" פֿו\":\"1H92\",\" פֿון\":\"1H7J\",\" פֿונ\":\"1H1D\",\" פֿי\":\"1H38\",\" פֿיל\":\"1H18\",\" פֿע\":\"1H1G\",\" פֿר\":\"1H58\",\" פֿרא\":\"1H23\",\" פֿרו\":\"1H16\",\" פֿרי\":\"1H15\",\" פֿײ\":\"1H1Y\",\" פֿײַ\":\"1H22\",\" צ\":\"1H5U\",\" צו\":\"1H5W\",\" צו \":\"1H7J\",\" צווי\":\"1H0Z\",\" צי\":\"1H4T\",\" צי \":\"1H7Y\",\" ק\":\"1H9B\",\" קא\":\"1H4F\",\" קאַ\":\"1H57\",\" קאַב\":\"1H0U\",\" קאַץ\":\"1H1U\",\" קאָ\":\"1H3G\",\" קאָמ\":\"1H0X\",\" קו\":\"1H27\",\" קומ\":\"1H1D\",\" קי\":\"1H6H\",\" קיי\":\"1HA8\",\" קיין\":\"1H9N\",\" קיינ\":\"1H1K\",\" קינ\":\"1H1L\",\" קינד\":\"1H1G\",\" קל\":\"1H1E\",\" קלי\":\"1H1B\",\" קליי\":\"1H0W\",\" קע\":\"1H43\",\" קען\":\"1H35\",\" קען \":\"1H3D\",\" קענ\":\"1H21\",\" קענס\":\"1H0X\",\" קעץ\":\"1H1B\",\" קעץ \":\"1H1F\",\" קר\":\"1H0Y\",\" ר\":\"1H3E\",\" רו\":\"1H1A\",\" רע\":\"1H3C\",\" רעד\":\"1H49\",\" רעדט\":\"1H1P\",\" רעדן\":\"1H1F\",\" ש\":\"1H68\",\" שו\":\"1H26\",\" שוו\":\"1H21\",\" שווע\":\"1H1B\",\" שוי\":\"1H1F\",\" שוין\":\"1H1J\",\" שט\":\"1H2V\",\" שטא\":\"1H26\",\" שטאַ\":\"1H1Q\",\" שטע\":\"1H1A\",\" שי\":\"1H1I\",\" שיי\":\"1H1C\",\" של\":\"1H15\",\" שפ\":\"1H2E\",\" שפּ\":\"1H4D\",\" שפּי\":\"1H1G\",\" שפּר\":\"1H2K\",\" שרײַ\":\"1H0U\",\" ת\":\"1H0G\",\" װ\":\"1H0W\",\" ״\":\"1H0E\",\" ḍ\":\"0305\",\" ḥ\":\"0314\",\" ḥw\":\"031X\",\" ḥwa\":\"0320\",\" ḥwaj\":\"034G\",\" ṛ\":\"030K\",\" ṣ\":\"0304\",\" ṭ\":\"0307\",\" ẓ\":\"030G\",\" ​\":\"0Z04\",\" ​​\":\"0R020Z061F02\",\" ‟\":\"1H03\",\" 一\":\"0625\",\" 一个\":\"062P\",\" 不\":\"0643\",\" 不好意\":\"06A1\",\" 不好意思\":\"06AO\",\" 不是\":\"066A\",\" 不是吗\":\"06B1\",\" 不是吗 \":\"06BQ\",\" 不是嗎\":\"06AP\",\" 不是嗎 \":\"06BD\",\" 不要\":\"069J\",\" 世界上\":\"067M\",\" 为什\":\"063Z\",\" 为什么\":\"06NR\",\" 为什么你\":\"0691\",\" 为什么我\":\"063P\",\" 人\":\"060Z\",\" 什么时候\":\"063H\",\" 今\":\"061L\",\" 今天\":\"069W\",\" 今天下午\":\"064J\",\" 今天天气\":\"063H\",\" 今天我\":\"06A7\",\" 今天早上\":\"066R\",\" 今天是\":\"06A1\",\" 今天晚上\":\"063A\",\" 他\":\"06I4\",\" 他一\":\"062X\",\" 他不\":\"066F\",\" 他不是\":\"069J\",\" 他不知道\":\"064Y\",\" 他们\":\"06F5\",\" 他们在\":\"068U\",\" 他們\":\"06BS\",\" 他們在\":\"068I\",\" 他喜欢\":\"067M\",\" 他喜歡\":\"068I\",\" 他在\":\"067D\",\" 他很\":\"063R\",\" 他很快就\":\"063P\",\" 他把\":\"0641\",\" 他把他的\":\"066C\",\" 他是\":\"0692\",\" 他是一\":\"069V\",\" 他是一個\":\"064Q\",\" 他是个\":\"06C6\",\" 他是我\":\"069D\",\" 他是我的\":\"063H\",\" 他有\":\"063Z\",\" 他没有\":\"067M\",\" 他的\":\"06BM\",\" 但\":\"062M\",\" 但我\":\"0631\",\" 但是\":\"068C\",\" 但是他\":\"068B\",\" 但是我\":\"06DQ\",\" 你\":\"06IJ\",\" 你不\":\"0685\",\" 你不應該\":\"064Q\",\" 你不能\":\"06B7\",\" 你为什\":\"06G1\",\" 你为什么\":\"06GX\",\" 你什么\":\"06BP\",\" 你什么时\":\"06AO\",\" 你什麼時\":\"066C\",\" 你今天\":\"06BV\",\" 你们\":\"066K\",\" 你們\":\"0646\",\" 你可\":\"065Y\",\" 你可以\":\"06R5\",\" 你可以把\":\"063H\",\" 你喜\":\"063K\",\" 你喜欢\":\"06DK\",\" 你喜歡\":\"06BV\",\" 你在\":\"066F\",\" 你好 \":\"0685\",\" 你应该\":\"06F2\",\" 你很快就\":\"063P\",\" 你必須\":\"0685\",\" 你必须\":\"06AD\",\" 你怎\":\"062X\",\" 你怎么\":\"06DV\",\" 你想\":\"065C\",\" 你應\":\"062M\",\" 你應該\":\"06HS\",\" 你明天\":\"0685\",\" 你昨天\":\"067Y\",\" 你是\":\"0674\",\" 你是不是\":\"063X\",\" 你最\":\"064C\",\" 你最喜\":\"06AP\",\" 你最喜欢\":\"066K\",\" 你最喜歡\":\"065C\",\" 你最好\":\"06EW\",\" 你最好不\":\"063H\",\" 你有\":\"0676\",\" 你有没有\":\"063X\",\" 你為什\":\"06DQ\",\" 你為什麼\":\"06EJ\",\" 你為甚麼\":\"063P\",\" 你的\":\"06A3\",\" 你看\":\"063J\",\" 你看起\":\"067Y\",\" 你看起來\":\"064B\",\" 你看起来\":\"064J\",\" 你真的\":\"068O\",\" 你知\":\"0648\",\" 你知道\":\"06O9\",\" 你知道我\":\"0644\",\" 你能\":\"065Y\",\" 你能幫我\":\"063H\",\" 你要\":\"064J\",\" 你觉得\":\"06AD\",\" 你认为\":\"067Y\",\" 你需要\":\"06AJ\",\" 俗話說\":\"06B7\",\" 俗話說:\":\"06BW\",\" 别\":\"060S\",\" 可\":\"060T\",\" 可以\":\"062M\",\" 因\":\"0613\",\" 因为\":\"065P\",\" 因为我\":\"067Y\",\" 因為\":\"062P\",\" 在\":\"0629\",\" 大\":\"060W\",\" 大家\":\"0635\",\" 大家都\":\"06CY\",\" 她\":\"069B\",\" 她不\":\"063D\",\" 她在\":\"0647\",\" 她是\":\"064B\",\" 她的\":\"065C\",\" 她給了我\":\"063P\",\" 如\":\"061Z\",\" 如果\":\"06E7\",\" 如果你\":\"06SA\",\" 如果你不\":\"067X\",\" 如果你想\":\"066C\",\" 如果你有\":\"0644\",\" 如果我\":\"06IJ\",\" 如果我是\":\"063P\",\" 如果沒有\":\"063A\",\" 对不起\":\"06A1\",\" 对不起 \":\"06AB\",\" 對不起 \":\"066R\",\" 就\":\"0615\",\" 您\":\"061O\",\" 我\":\"06SG\",\" 我一\":\"064N\",\" 我一直\":\"0685\",\" 我不\":\"06OU\",\" 我不会\":\"06BJ\",\" 我不喜\":\"06MI\",\" 我不喜欢\":\"06FM\",\" 我不喜歡\":\"06CL\",\" 我不得不\":\"063A\",\" 我不想\":\"06O0\",\" 我不想再\":\"064B\",\" 我不明白\":\"065C\",\" 我不是\":\"06GB\",\" 我不相信\":\"064J\",\" 我不知\":\"06SD\",\" 我不知道\":\"06SG\",\" 我不能\":\"06IJ\",\" 我不認為\":\"063H\",\" 我不认为\":\"0644\",\" 我也\":\"063V\",\" 我什么都\":\"064Q\",\" 我今\":\"064I\",\" 我今天\":\"06ME\",\" 我今天早\":\"064Q\",\" 我从来没\":\"064Y\",\" 我从没见\":\"063A\",\" 我以\":\"062N\",\" 我以为你\":\"063A\",\" 我以前\":\"068U\",\" 我们\":\"06QU\",\" 我们不\":\"06CH\",\" 我们不能\":\"0644\",\" 我们可以\":\"064Y\",\" 我们在\":\"06FW\",\" 我们已经\":\"063P\",\" 我们应\":\"067Y\",\" 我们应该\":\"0683\",\" 我们必\":\"067S\",\" 我们必须\":\"067X\",\" 我们有\":\"0697\",\" 我们没有\":\"063P\",\" 我们的\":\"06FM\",\" 我们要\":\"068B\",\" 我们都\":\"067M\",\" 我们需要\":\"065Y\",\" 我会\":\"065C\",\" 我住在\":\"06A7\",\" 我們\":\"06O2\",\" 我們不\":\"06A1\",\" 我們可以\":\"063P\",\" 我們在\":\"06D4\",\" 我們必須\":\"0655\",\" 我們應該\":\"064Y\",\" 我們明天\":\"063A\",\" 我們有\":\"068B\",\" 我們沒有\":\"063H\",\" 我們的\":\"06E6\",\" 我們要\":\"06A1\",\" 我們需要\":\"065R\",\" 我再也不\":\"063P\",\" 我去\":\"0639\",\" 我只\":\"0637\",\" 我只是\":\"0697\",\" 我可\":\"064Y\",\" 我可以\":\"06NL\",\" 我和\":\"062R\",\" 我喜\":\"066Z\",\" 我喜欢\":\"06P1\",\" 我喜欢你\":\"0644\",\" 我喜歡\":\"06IS\",\" 我在\":\"06CQ\",\" 我妹妹\":\"067Y\",\" 我完全\":\"0685\",\" 我完全不\":\"063P\",\" 我对\":\"062N\",\" 我就\":\"0645\",\" 我已\":\"064E\",\" 我已經\":\"06F2\",\" 我已经\":\"06FC\",\" 我希\":\"064J\",\" 我希望\":\"06PL\",\" 我希望你\":\"068U\",\" 我希望我\":\"0665\",\" 我很\":\"0681\",\" 我很喜欢\":\"064Q\",\" 我很喜歡\":\"063P\",\" 我很抱歉\":\"066Y\",\" 我很高\":\"0685\",\" 我很高兴\":\"065K\",\" 我很高興\":\"063H\",\" 我從來沒\":\"064Y\",\" 我必須\":\"067Y\",\" 我必须\":\"06A7\",\" 我想\":\"06I9\",\" 我想去\":\"069D\",\" 我想和你\":\"063X\",\" 我想知\":\"067S\",\" 我想知道\":\"068A\",\" 我想要\":\"06KJ\",\" 我想要一\":\"0675\",\" 我打算\":\"0690\",\" 我找不到\":\"064Q\",\" 我把\":\"0641\",\" 我把我的\":\"065K\",\" 我无法\":\"068I\",\" 我明\":\"062M\",\" 我明天\":\"06E1\",\" 我昨\":\"063Q\",\" 我昨天\":\"06H9\",\" 我昨晚\":\"069D\",\" 我是\":\"068I\",\" 我更喜欢\":\"065C\",\" 我會\":\"0649\",\" 我有\":\"067F\",\" 我有一\":\"06G1\",\" 我有一个\":\"063H\",\" 我有一個\":\"063X\",\" 我有很多\":\"064J\",\" 我正在\":\"06BD\",\" 我每\":\"062S\",\" 我每天\":\"06CC\",\" 我每天早\":\"063H\",\" 我每天都\":\"063P\",\" 我沒\":\"063A\",\" 我沒有\":\"06BD\",\" 我没\":\"0659\",\" 我没有\":\"06G6\",\" 我無法\":\"068B\",\" 我爱你 \":\"063H\",\" 我父\":\"063H\",\" 我父亲\":\"06AV\",\" 我父親\":\"06BJ\",\" 我爸爸\":\"06CN\",\" 我现在\":\"06D9\",\" 我現在\":\"06B7\",\" 我的\":\"06IV\",\" 我的名字\":\"0644\",\" 我的房\":\"067Y\",\" 我的房子\":\"063H\",\" 我的房間\":\"0644\",\" 我的手\":\"068U\",\" 我的朋友\":\"0655\",\" 我的祖父\":\"063P\",\" 我相信\":\"0697\",\" 我相信他\":\"063A\",\" 我看\":\"0643\",\" 我真的\":\"06BJ\",\" 我真的很\":\"064Y\",\" 我知\":\"065C\",\" 我知道\":\"06RE\",\" 我知道他\":\"064J\",\" 我知道你\":\"06BD\",\" 我知道我\":\"063X\",\" 我知道汤\":\"063H\",\" 我能\":\"0648\",\" 我要\":\"0681\",\" 我要去\":\"068O\",\" 我覺得\":\"06GG\",\" 我覺得我\":\"065C\",\" 我觉\":\"0644\",\" 我觉得\":\"06O9\",\" 我觉得你\":\"065C\",\" 我觉得我\":\"064Y\",\" 我觉得汤\":\"063H\",\" 我觉得这\":\"0644\",\" 我認為\":\"06BP\",\" 我認為我\":\"063A\",\" 我认\":\"062O\",\" 我认为\":\"06EB\",\" 我认为我\":\"063A\",\" 我還沒有\":\"063H\",\" 我需\":\"0639\",\" 我需要\":\"06KV\",\" 我需要一\":\"066C\",\" 我非常\":\"068U\",\" 我非常喜\":\"063P\",\" 所\":\"061B\",\" 所以\":\"067D\",\" 所以我\":\"06G1\",\" 所有\":\"063B\",\" 所有人都\":\"0655\",\" 所有的\":\"0697\",\" 把\":\"060W\",\" 日本\":\"062Q\",\" 明天\":\"065C\",\" 明天我\":\"0685\",\" 昨天\":\"064X\",\" 昨天我\":\"06AJ\",\" 昨天晚上\":\"063H\",\" 是\":\"061B\",\" 是的 \":\"0697\",\" 有\":\"0620\",\" 有些人\":\"068B\",\" 有人\":\"0637\",\" 每个人\":\"06A7\",\" 每个人都\":\"0698\",\" 每個人都\":\"066R\",\" 汤\":\"0661\",\" 汤姆\":\"06SG\",\" 汤姆 \":\"0685\",\" 汤姆不\":\"06OI\",\" 汤姆不喜\":\"063X\",\" 汤姆不想\":\"063H\",\" 汤姆不是\":\"063X\",\" 汤姆不知\":\"066C\",\" 汤姆可能\":\"063P\",\" 汤姆告诉\":\"066R\",\" 汤姆和\":\"06M4\",\" 汤姆和玛\":\"06JM\",\" 汤姆喜欢\":\"064Q\",\" 汤姆在\":\"06IA\",\" 汤姆已经\":\"064B\",\" 汤姆想\":\"068O\",\" 汤姆是\":\"06KR\",\" 汤姆是个\":\"066Y\",\" 汤姆没\":\"06BD\",\" 汤姆没有\":\"067C\",\" 汤姆现在\":\"063X\",\" 汤姆的\":\"06B7\",\" 汤姆知道\":\"063X\",\" 汤姆说\":\"06F2\",\" 汤姆说他\":\"069S\",\" 沒有\":\"063L\",\" 沒有人\":\"068I\",\" 没\":\"060Z\",\" 没有\":\"0654\",\" 没有人\":\"06A1\",\" 没有什么\":\"064Q\",\" 湯\":\"063C\",\" 湯姆\":\"06MC\",\" 湯姆不\":\"06EB\",\" 湯姆不知\":\"064B\",\" 湯姆告訴\":\"0644\",\" 湯姆和\":\"06A7\",\" 湯姆和瑪\":\"0675\",\" 湯姆在\":\"06CY\",\" 湯姆是\":\"06DV\",\" 湯姆沒有\":\"064B\",\" 湯姆現在\":\"063H\",\" 湯姆知道\":\"064B\",\" 湯姆說\":\"067S\",\" 湯姆說他\":\"064Q\",\" 為什麼\":\"0690\",\" 玛丽\":\"065H\",\" 玛丽说她\":\"063H\",\" 现在\":\"064T\",\" 現在\":\"062R\",\" 而\":\"060T\",\" 萨米\":\"062M\",\" 要\":\"060S\",\" 請\":\"0619\",\" 請告訴我\":\"0644\",\" 請給我一\":\"063A\",\" 讓我\":\"0630\",\" 讓我們\":\"06DV\",\" 让我\":\"062Z\",\" 让我们\":\"06C6\",\" 请\":\"061M\",\" 谢谢\":\"062M\",\" 谢谢 \":\"069V\",\" 这\":\"066O\",\" 这不是\":\"069P\",\" 这不是我\":\"064J\",\" 这个\":\"06B0\",\" 这个问题\":\"064B\",\" 这些\":\"063C\",\" 这就是\":\"069D\",\" 这就是我\":\"063H\",\" 这是\":\"06AA\",\" 这是一\":\"06CC\",\" 这是一个\":\"066C\",\" 这是你的\":\"063P\",\" 这是我\":\"06IF\",\" 这是我的\":\"068H\",\" 这本书\":\"06CC\",\" 這\":\"064W\",\" 這個\":\"0681\",\" 這個男孩\":\"063A\",\" 這是\":\"0672\",\" 這是一\":\"06B7\",\" 這是一個\":\"064J\",\" 這是你的\":\"064Y\",\" 這是我\":\"06AV\",\" 這是我的\":\"064Q\",\" 這本書\":\"06AP\",\" 那\":\"063U\",\" 那个\":\"0640\",\" 那是\":\"065E\",\" 那是一\":\"0685\",\" 那是我\":\"068I\",\" 那是我的\":\"063A\",\"''\":\"0R031B0B1D0A1Q21\",\"'' \":\"0R021B0G1D0O\",\"''a\":\"1B041Q4L\",\"''a'\":\"1Q8D\",\"''a' \":\"1QDJ\",\"''e\":\"1Q2V\",\"''e'\":\"1Q4M\",\"''e' \":\"1Q7T\",\"'a \":\"0L2W1A031F3O1Q0N\",\"'a'\":\"1QGB\",\"'a' \":\"1QOU\",\"'ab\":\"04180L0D0Q061Q04\",\"'aba\":\"04390L05\",\"'aban\":\"043C0L06\",\"'ac\":\"0L110Q0N1Q2Q\",\"'acc\":\"0L150Q0H\",\"'ach\":\"0L0D1Q53\",\"'ach \":\"1Q8K\",\"'acq\":\"0L030Q0K\",\"'ad\":\"0L0G\",\"'ae\":\"0Q06\",\"'af\":\"0L080Q02\",\"'ag\":\"0L0A0Q021Q04\",\"'ai\":\"0L9O0Q020S0I\",\"'ai \":\"0LB4\",\"'aid\":\"0L0Y\",\"'aide\":\"0L1L\",\"'aim\":\"0L31\",\"'aime\":\"0L4U\",\"'air\":\"0L11\",\"'air \":\"0L1Q\",\"'al\":\"0L0S0Q0T1Q04\",\"'all\":\"0L0V0Q02\",\"'alt\":\"0Q0V\",\"'altr\":\"0Q0U\",\"'am\":\"041U0L0P0Q0E1Q0W\",\"'ama\":\"044X\",\"'an\":\"0L0S0Q0N1Q0O\",\"'ann\":\"0L0H0Q0S\",\"'ao\":\"0S0P\",\"'aoi\":\"0S0M\",\"'aois\":\"0S2K\",\"'ap\":\"0L170Q051Q0O\",\"'app\":\"0L1R0Q06\",\"'appr\":\"0L1B\",\"'aq\":\"1Q03\",\"'ar\":\"0L210Q0G1B021Q1N\",\"'arg\":\"0L1C0Q03\",\"'arge\":\"0L270Q02\",\"'arr\":\"0L1C\",\"'arri\":\"0L1F\",\"'as\":\"0L130Q071Q0O\",\"'as \":\"0L0V\",\"'at\":\"0L0L0Q040S0P1Q04\",\"'ath\":\"0S0T\",\"'att\":\"0L0X0Q06\",\"'atte\":\"0L180Q02\",\"'au\":\"0L1P0Q0Q\",\"'aur\":\"0L0U\",\"'aura\":\"0L19\",\"'aut\":\"0L1I0Q0Y\",\"'auto\":\"0L0B0Q0W\",\"'autr\":\"0L23\",\"'av\":\"0L2D0Q091Q04\",\"'ava\":\"0L1J\",\"'avai\":\"0L2A\",\"'ave\":\"0L0X0Q09\",\"'avez\":\"0L17\",\"'avo\":\"0L17\",\"'avoi\":\"0L18\",\"'az\":\"0Q02\",\"'aé\":\"0L03\",\"'b\":\"1Q24\",\"'be\":\"1Q59\",\"'be'\":\"1Q7I\",\"'be' \":\"1Q9V\",\"'bo\":\"1Q2D\",\"'bog\":\"1Q4G\",\"'bogh\":\"1Q7J\",\"'c\":\"1Q1D\",\"'ch\":\"1Q4Z\",\"'choh\":\"1Q5K\",\"'chu\":\"1Q5O\",\"'chug\":\"1Q4O\",\"'cl\":\"0M02\",\"'d\":\"0M0L1F1N1Q2F\",\"'d \":\"0M17\",\"'da\":\"1F381Q4C\",\"'da \":\"1F2G\",\"'daj\":\"1Q45\",\"'daj \":\"1Q62\",\"'dan\":\"1F0Z\",\"'dan \":\"1F1B\",\"'daq\":\"1Q44\",\"'daq \":\"1Q6Z\",\"'de\":\"1F0Y1Q0M\",\"'di\":\"1F031Q3R\",\"'di' \":\"1Q4Q\",\"'diba\":\"1Q5K\",\"'e\":\"0L3D0Q0G0Z021F041QA3\",\"'e \":\"1F0A\",\"'e'\":\"1QM4\",\"'e' \":\"1QSG\",\"'ea\":\"0L0K\",\"'eau\":\"0L0Y\",\"'eau \":\"0L1L\",\"'eb\":\"1Q0A\",\"'ec\":\"0Q021Q06\",\"'ed\":\"0Q021Q04\",\"'ef\":\"0L04\",\"'eg\":\"1Q1Z\",\"'egh\":\"1Q3P\",\"'ej\":\"1Q4A\",\"'ej \":\"1Q7T\",\"'el\":\"0L150Q021Q1J\",\"'ell\":\"0L1Y\",\"'elle\":\"0L3A\",\"'em\":\"0L0G1Q0F\",\"'en\":\"0L2W0Q021Q0C\",\"'en \":\"0L29\",\"'ent\":\"0L140Q02\",\"'ep\":\"0Q021Q11\",\"'eq\":\"1Q0I\",\"'er\":\"0L020Q0H\",\"'era\":\"0Q0K\",\"'es\":\"0LAH0Q0R1Q0H\",\"'es \":\"0L0N\",\"'esp\":\"0L190Q0C1Q0V\",\"'est\":\"0LEN0Q0E\",\"'est \":\"0LK9\",\"'est-\":\"0L32\",\"'et\":\"0Q031Q08\",\"'eu\":\"0L060Q02\",\"'ev\":\"1Q04\",\"'ex\":\"0L0T\",\"'f\":\"0S0K\",\"'fh\":\"0S1Q\",\"'g\":\"1Q07\",\"'h\":\"0L0J0Q0H1Q0Y\",\"'ha\":\"0L0B0Q131Q0Y\",\"'ha \":\"0Q16\",\"'he\":\"0L0B\",\"'hi\":\"0L0B\",\"'ho\":\"0L0I0Q0R1Q15\",\"'ho \":\"0Q14\",\"'hu\":\"0L111Q1H\",\"'hu' \":\"1Q4N\",\"'hui\":\"0L1K\",\"'hui \":\"0L2I\",\"'hô\":\"0L07\",\"'i\":\"042V0L1D0Q0I0S0B1F081Q1X\",\"'ib\":\"0414\",\"'ibi\":\"0429\",\"'ic\":\"040G0L07\",\"'id\":\"040I0L050Q061Q06\",\"'ig\":\"04120L07\",\"'igi\":\"0429\",\"'ih\":\"1Q1Z\",\"'ij\":\"040J1Q0J\",\"'ik\":\"0412\",\"'iki\":\"041V\",\"'il\":\"0L421Q0A\",\"'il \":\"0L5V1Q0C\",\"'ils\":\"0L0X\",\"'ils \":\"0L1L\",\"'im\":\"041P0L0M0Q09\",\"'imi\":\"041V\",\"'imp\":\"0L0R0Q0A\",\"'in\":\"041Q0L1E0Q171F0D1Q0J\",\"'ind\":\"041O0L060Q06\",\"'int\":\"0L0X0Q0B1Q08\",\"'io\":\"0Q02\",\"'ip\":\"1Q03\",\"'ir\":\"0L050Q021Q0I\",\"'is\":\"041S0L020Q04\",\"'ish\":\"0439\",\"'ishu\":\"043V\",\"'it\":\"040V0L020Q041Q0I\",\"'ita\":\"041R0L030Q061Q0P\",\"'iv\":\"040I1Q1K\",\"'j\":\"1Q04\",\"'l\":\"0M0R1F0F1Q32\",\"'la\":\"1F111Q3H\",\"'la \":\"1F15\",\"'lah\":\"1Q48\",\"'li\":\"1Q2A\",\"'ll\":\"0M1J\",\"'ll \":\"0M2T\",\"'lu\":\"1Q3Z\",\"'lu'\":\"1Q79\",\"'lu' \":\"1Q7I\",\"'m\":\"0M141Q2P\",\"'m \":\"0M2A\",\"'ma\":\"1Q2B\",\"'mah \":\"1Q57\",\"'me\":\"1Q3V\",\"'mey\":\"1Q5H\",\"'mey \":\"1Q6Q\",\"'mo\":\"1Q3G\",\"'mo' \":\"1Q4S\",\"'moh\":\"1Q3S\",\"'n\":\"01620D060R031F1W1Q1B\",\"'n \":\"01A00R04\",\"'ng\":\"1Q0K\",\"'ni\":\"1F441Q2G\",\"'nin\":\"1F4O\",\"'nin \":\"1F6B\",\"'no\":\"1Q07\",\"'ny\":\"0D06\",\"'nyo\":\"0D0B\",\"'nyo \":\"0D0K\",\"'nı\":\"1F0S\",\"'nın\":\"1F0V\",\"'nın \":\"1F17\",\"'o\":\"0L0M0Q0B1Q3F\",\"'ob\":\"0L071Q04\",\"'oc\":\"0L090Q061Q04\",\"'od\":\"1Q06\",\"'of\":\"0L02\",\"'og\":\"1Q04\",\"'oh\":\"1Q80\",\"'oh \":\"1QB2\",\"'ol\":\"0Q021Q03\",\"'om\":\"0L020Q031Q06\",\"'on\":\"0L1B1Q0B\",\"'on \":\"0L1B1Q07\",\"'ont\":\"0L0W\",\"'ont \":\"0L1G\",\"'op\":\"0L040Q031Q1G\",\"'or\":\"0L0H0Q0I1Q03\",\"'os\":\"0L020Q041Q0B\",\"'ot\":\"1Q04\",\"'ou\":\"0L0F\",\"'où\":\"0L04\",\"'p\":\"1Q1Q\",\"'pu\":\"1Q5Z\",\"'pu'\":\"1QAS\",\"'pu' \":\"1QEI\",\"'q\":\"1Q19\",\"'qu\":\"1Q2S\",\"'qu'\":\"1Q4X\",\"'qu' \":\"1Q6V\",\"'r\":\"0M0S1Q1D\",\"'re\":\"0M1L1Q07\",\"'re \":\"0M2X\",\"'ri\":\"1Q3Y\",\"'riy\":\"1Q6F\",\"'riy \":\"1Q7F\",\"'s \":\"010E0M750N080R0I\",\"'t \":\"0D030MBS\",\"'t-\":\"0D02\",\"'ta\":\"1F071Q4J\",\"'ta'\":\"1Q44\",\"'ta' \":\"1Q66\",\"'tah\":\"1Q4H\",\"'tah \":\"1Q5T\",\"'u\":\"041S0L0P0Q0B1F3K1Q0U\",\"'u \":\"1F1X\",\"'ub\":\"040R\",\"'ubu\":\"0429\",\"'uc\":\"0Q021Q0E\",\"'uf\":\"0Q02\",\"'ug\":\"1Q04\",\"'uk\":\"040V\",\"'uku\":\"041R\",\"'ul\":\"0Q081Q0F\",\"'um\":\"044C0Q02\",\"'umu\":\"046P\",\"'umw\":\"046I\",\"'umwe\":\"048Q\",\"'un\":\"0L3C0Q0G1F7K1Q04\",\"'un \":\"0L3H1F8K\",\"'une\":\"0L1Y\",\"'une \":\"0L3A\",\"'uni\":\"0L0B0Q0M\",\"'uo\":\"0Q0B\",\"'ur\":\"040I0L02\",\"'us\":\"0L021Q09\",\"'ut\":\"0L041Q0B\",\"'v\":\"0M0Q1Q1O\",\"'va\":\"1Q3A\",\"'vam\":\"1Q4A\",\"'vam \":\"1Q5Y\",\"'ve\":\"0M1J1Q0Z\",\"'ve \":\"0M2S\",\"'vi\":\"1Q1P\",\"'w\":\"1Q1F\",\"'wi\":\"1Q52\",\"'wi'\":\"1Q64\",\"'wi' \":\"1Q82\",\"'wij \":\"1Q55\",\"'y\":\"0D0D0L091F1P\",\"'y \":\"0D0D0L1B\",\"'ya\":\"1F10\",\"'ya \":\"1F15\",\"'ye\":\"1F1R\",\"'ye \":\"1F21\",\"'yi\":\"1F16\",\"'yi \":\"1F1C\",\"'yu\":\"1F02\",\"'yı\":\"1F0J\",\"'à\":\"0L04\",\"'à \":\"0L0K\",\"'è\":\"0Q0K\",\"'è \":\"0Q28\",\"'é\":\"0L0X0S06\",\"'éc\":\"0L18\",\"'éco\":\"0L19\",\"'écol\":\"0L1I\",\"'ég\":\"0L05\",\"'éi\":\"0S0K\",\"'él\":\"0L07\",\"'én\":\"0L04\",\"'ép\":\"0L08\",\"'éq\":\"0L03\",\"'ét\":\"0L2H\",\"'éta\":\"0L36\",\"'étai\":\"0L4W\",\"'év\":\"0L05\",\"'ê\":\"0L06\",\"'êt\":\"0L0T\",\"'êtr\":\"0L0Y\",\"'être\":\"0L1N\",\"'ı\":\"1F07\",\"'ın\":\"1F0C\",\"'œi\":\"0L04\",\"'е\":\"170C\",\"'ю\":\"17061909\",\"'я\":\"170F191L\",\"'яз\":\"190X\",\"'ят\":\"17061919\",\"'ё\":\"1703\",\"'є\":\"1907\",\"'і\":\"1702\",\"'ї\":\"190A\",\"'א\":\"1H08\",\"'איז \":\"1H0Z\",\"'ב\":\"1H06\",\"'ה\":\"1H04\",\"(id\":\"0T02\",\"(o\":\"1N05\",\"(og\":\"1N0A\",\"-a \":\"03690P05159K1O02\",\"-aa\":\"0D0C\",\"-aar\":\"0D0D\",\"-aara\":\"0D0M\",\"-ag\":\"0305\",\"-ai\":\"1103151D\",\"-ai \":\"1529\",\"-ak\":\"030W0B03\",\"-al\":\"03040D0311031503\",\"-am \":\"030G157Z\",\"-an\":\"031B0B0E\",\"-ana\":\"0B0O\",\"-anak\":\"0B1C\",\"-ap\":\"0B0C\",\"-apa\":\"0B0O\",\"-apa \":\"0B19\",\"-ar\":\"0D0E11021515\",\"-ar \":\"151V\",\"-ara\":\"0D0L\",\"-aral\":\"0D0I\",\"-araw\":\"0D0L\",\"-as\":\"034S0D021102\",\"-as \":\"033H\",\"-asen\":\"032V\",\"-at\":\"1N0H\",\"-au\":\"1105151G\",\"-au \":\"152E\",\"-aw\":\"0312\",\"-ay\":\"0D02\",\"-aɣ\":\"0355\",\"-aɣe\":\"034A\",\"-aɣen\":\"036X\",\"-aɣeɣ\":\"032T\",\"-ba\":\"0B0C0D020L0814031F04\",\"-be\":\"03020B0K1403\",\"-ben\":\"0B0Z1405\",\"-bena\":\"0B1X\",\"-bi\":\"1N0I1P0P\",\"-bin\":\"1P0U\",\"-bino\":\"1P0Z\",\"-bu\":\"0B0B0D02\",\"-ce\":\"03020L2F\",\"-ce \":\"0L40\",\"-ch\":\"0L030P050S0I\",\"-ci\":\"0L0A\",\"-co\":\"0P02\",\"-d \":\"03DF\",\"-d-\":\"033U\",\"-da\":\"0D041N17\",\"-da \":\"1N1L\",\"-de\":\"0L0A0P0215021N1E\",\"-de \":\"1N20\",\"-di\":\"0L020P02\",\"-dé\":\"0L03\",\"-e \":\"140F150E\",\"-el\":\"0L0O\",\"-ell\":\"0L15\",\"-elle\":\"0L1Y\",\"-en\":\"0L07\",\"-fe\":\"03020P0C\",\"-gu\":\"0D02\",\"-ha\":\"0B0C0D02\",\"-hi\":\"0D03\",\"-i \":\"031M152T\",\"-ib\":\"03050D04\",\"-id\":\"032C\",\"-ii\":\"0D03\",\"-ik\":\"03261102\",\"-il\":\"03060L23\",\"-il \":\"0L2Y\",\"-im\":\"030J\",\"-in\":\"033V0D04\",\"-inu\":\"032R\",\"-inu \":\"0364\",\"-is\":\"034E0D06\",\"-is \":\"0339\",\"-isa\":\"0D08\",\"-iseɣ\":\"032Z\",\"-it\":\"0328\",\"-iw\":\"031C\",\"-iy\":\"033L\",\"-iyi\":\"033T\",\"-iyi \":\"035B\",\"-iyi-\":\"033E\",\"-j\":\"0B030L061O02\",\"-ja\":\"0B061O03\",\"-je\":\"0L0W\",\"-je \":\"0L1I\",\"-k \":\"031I\",\"-ka\":\"0B070D031P0T\",\"-kan\":\"1P11\",\"-kano\":\"1P17\",\"-ke\":\"03160B04\",\"-ku\":\"0B05\",\"-l \":\"151Q\",\"-la\":\"0B0K0L050P0O1P0H\",\"-la \":\"0L070P0O\",\"-lak\":\"0B0V0D02\",\"-laki\":\"0B1P\",\"-le\":\"0L0H1504\",\"-lh\":\"0P0L\",\"-lhe\":\"0P0Q\",\"-lhe \":\"0P0R\",\"-li\":\"0B030D020U031PAE\",\"-li \":\"0U051PCQ\",\"-lo\":\"0P1A1P0D\",\"-lo \":\"0P1A\",\"-lu\":\"0L051102\",\"-là\":\"0L09\",\"-lö\":\"1P0G\",\"-me\":\"0B020P1O\",\"-me \":\"0P20\",\"-mi\":\"0L06152V\",\"-mi \":\"154N\",\"-mo\":\"0L17\",\"-moi\":\"0L1Y\",\"-moi \":\"0L3B\",\"-mu\":\"0B03\",\"-mè\":\"0L04\",\"-mê\":\"0L0F\",\"-mêm\":\"0L0P\",\"-même\":\"0L17\",\"-mă\":\"150J\",\"-naɣ \":\"032W\",\"-nn\":\"03DV\",\"-nne\":\"038Q\",\"-nnek\":\"035G\",\"-nnem\":\"034D\",\"-nnes\":\"037R\",\"-nneɣ\":\"0334\",\"-nni\":\"0374\",\"-nni \":\"03EG\",\"-no\":\"0L0I0P0D15031P0F\",\"-nou\":\"0L0U\",\"-nous\":\"0L1G\",\"-ns\":\"033B\",\"-nse\":\"033J\",\"-nsen\":\"0359\",\"-nseɣ\":\"032R\",\"-nw\":\"0337\",\"-nwe\":\"033E\",\"-nwen\":\"037G\",\"-ny\":\"0B02\",\"-o \":\"0P0B153B\",\"-on\":\"0L07\",\"-or\":\"0B06\",\"-pa\":\"0D020L021102\",\"-pe\":\"0B03\",\"-pi\":\"0B02\",\"-pu\":\"0B03\",\"-pè\":\"0L03\",\"-q\":\"0303\",\"-ra\":\"0B02\",\"-re\":\"0305\",\"-ro\":\"1O02\",\"-s \":\"0338\",\"-se\":\"03170B030P2415051O021P0D\",\"-se \":\"0P2J1507\",\"-sh\":\"0Z02\",\"-si\":\"0B03\",\"-su\":\"0B02\",\"-sɣ\":\"0350\",\"-sɣe\":\"034T\",\"-sɣen\":\"037T\",\"-sɣeɣ\":\"0332\",\"-t \":\"031P1403\",\"-t-\":\"03120L16\",\"-t-i\":\"030G0L1H\",\"-t-il\":\"0L2I\",\"-ta\":\"036F0B040D03\",\"-taɣ\":\"032N\",\"-taɣ \":\"033L\",\"-te\":\"038F0B060L020P0B150Z\",\"-te \":\"0P0C151M\",\"-ten\":\"0327\",\"-tes\":\"033G0Z02\",\"-tesɣ\":\"0359\",\"-ti\":\"030K0B041P0J\",\"-to\":\"0L0D\",\"-ts\":\"0320\",\"-tse\":\"0324\",\"-tseɣ\":\"0344\",\"-tt\":\"032R\",\"-tu\":\"031Q0L3W\",\"-tu \":\"0L6G\",\"-ul\":\"1508\",\"-un\":\"0L07150J\",\"-us\":\"03020D07\",\"-usa\":\"0D0C\",\"-usap\":\"0D0N\",\"-uu\":\"0D02\",\"-v\":\"0L0T0P021102140215031O021P0B\",\"-ve\":\"1O03\",\"-vi\":\"0L040P051P0J\",\"-vo\":\"0L3Y0P03\",\"-vou\":\"0L6I\",\"-vous\":\"0LAO\",\"-vu\":\"1105\",\"-w\":\"030D\",\"-wa\":\"0305\",\"-y\":\"032E\",\"-ya\":\"031W\",\"-ye\":\"0353\",\"-ä\":\"1P0I\",\"-äl\":\"1P0D\",\"-ê\":\"0L02\",\"-êt\":\"0L0D\",\"-ș\":\"1506\",\"-și\":\"150M\",\"-ț\":\"150D\",\"-ți\":\"151I\",\"-ți \":\"152I\",\"-ɣ\":\"0303\",\"-а\":\"170518041L0N\",\"-б\":\"1602170218021L0D\",\"-в\":\"16031802\",\"-г\":\"1604\",\"-д\":\"160D170218021L0B\",\"-до\":\"161F\",\"-доб\":\"161J\",\"-добр\":\"162Y\",\"-ж\":\"1L06\",\"-з\":\"1702180719021L05\",\"-к\":\"16021704180519021L09\",\"-л\":\"1803\",\"-м\":\"160418061L06\",\"-н\":\"16031708180W190A\",\"-небу\":\"171R190O\",\"-ни\":\"181U\",\"-ниб\":\"182I\",\"-нибу\":\"184M\",\"-п\":\"17041804\",\"-р\":\"17031902\",\"-с\":\"1603170218021L06\",\"-т\":\"16021703181B19021L0J\",\"-то\":\"1603182P\",\"-то \":\"183P\",\"-ф\":\"17021807\",\"-ч\":\"1804\",\"-ш\":\"1L07\",\"-щ\":\"1603\",\"-я\":\"17021903\",\"-қ\":\"1L0F\",\"-ẓ\":\"0303\",\"a' \":\"1QSD\",\"a''\":\"1Q1L\",\"a'c\":\"1Q1P\",\"a'd\":\"1F131Q4D\",\"a'da\":\"1F181Q3F\",\"a'da \":\"1F17\",\"a'daq\":\"1Q4X\",\"a'di\":\"1Q4U\",\"a'dib\":\"1Q5K\",\"a'hu'\":\"1Q4O\",\"a'l\":\"1Q37\",\"a'm\":\"1Q44\",\"a'mah\":\"1Q5E\",\"a'n\":\"1F0Q1Q1K\",\"a'nın\":\"1F14\",\"a's\":\"0M0I0R051Q0A\",\"a's \":\"0M0X0R0J\",\"a't\":\"0D041Q0X\",\"a'v\":\"1Q20\",\"a'y\":\"0D061F1F\",\"a'y \":\"0D0A\",\"a'ya\":\"1F0Z\",\"a'ya \":\"1F1D\",\"a) \":\"0P02\",\"a- \":\"0D07\",\"a-a\":\"031A0B0C110G\",\"a-ap\":\"0B0N\",\"a-apa\":\"0B1B\",\"a-b\":\"0B05\",\"a-c\":\"0P06\",\"a-d\":\"03271N0R\",\"a-d \":\"032C\",\"a-da\":\"1N13\",\"a-da \":\"1N1I\",\"a-f\":\"0P0C\",\"a-g\":\"0B02\",\"a-i\":\"030R0D021506\",\"a-k\":\"030L0B05\",\"a-l\":\"0P031502\",\"a-m\":\"03060B020P0C\",\"a-n\":\"031E0B030P03\",\"a-o\":\"0P03\",\"a-p\":\"0B02\",\"a-s\":\"030Y0B050D020P0F\",\"a-se\":\"0P0I\",\"a-t\":\"032M0B050L0U0P04\",\"a-t-\":\"030N0L1F\",\"a-t-i\":\"03030L1W\",\"aa \":\"0D0311JO1C25\",aaa:\"0D0A\",aaar:\"0D0E\",aaari:\"0D0P\",aab:\"0D041C15\",\"aab \":\"1C0O\",aac:\"0P020T07\",aad:\"010E0R08110I14031C27\",\"aad \":\"010T0R0N1C0N\",aada:\"110Q1C15\",\"aada \":\"111K1C1V\",aaf:\"0B0G0R02\",\"aaf \":\"0B0O0R04\",aag:\"010T0D040R1I\",\"aag \":\"011M0R4L\",aaga:\"0D06\",aagd:\"0R0K\",aagt:\"0R0K\",aah:\"0D031108\",aai:\"010M0R08110P1B0B1C0N\",\"aai \":\"01180R0C\",aail:\"11191C0R\",aailm:\"11331C1V\",aaj:\"110C\",aak:\"013A0D020R1D11181A021C0O\",\"aak \":\"01710R29\",aaks:\"110U1C0S\",aakt:\"0R2Y\",\"aakt \":\"0R2Z\",aakte:\"0R11\",aal:\"011C0D0D0R1J111S1C3C1F07\",\"aal \":\"012Q0R4A1C1C\",aala:\"0D0G110W1F05\",aald:\"0R0W\",aali:\"0D0711131C0X\",aalia:\"11081C22\",aals:\"0R051C0L\",aam:\"010V0R0K112A1C3T\",\"aam \":\"011P0R1S\",aama:\"11181C3V\",aamat:\"110K1C81\",aame:\"11031C0L\",aami:\"1115\",aamu:\"1112\",\"aan \":\"01E70B4A0D260RE70T0811MY1C15\",aanb:\"010F0R0A\",aand:\"012A0R19\",\"aand \":\"011B0R0I\",aanda:\"010K0D020R0J\",aande:\"010I0R0I\",aang:\"011Y0D0E0R11\",\"aang \":\"0D0N\",aange:\"01220R1C\",aani:\"11151C1J\",aann:\"0B0I0R021106\",aano:\"0D0R1102\",\"aano \":\"0D1B\",aans:\"01170R12110N\",aanu:\"110F1C0S\",aanud:\"1C1O\",aanv:\"010M0R0C1102\",aanva:\"010I0R0C\",aap:\"010P0R08110V1C0S\",\"aap \":\"011D0R0G\",aapa:\"11061C0V\",aapan:\"1C1Z\",\"aar \":\"01FC0N0K0RMG\",aara:\"0D0N0R02110Q\",aaral:\"0D0W110Z\",aard:\"01200R2Z\",\"aard \":\"0R12\",aarde:\"0R17\",aardi:\"011I0R0Q\",aarh:\"0R0L\",aarhe:\"0R0T\",aari:\"0D0G0R04110E\",\"aari \":\"0D0K110B\",aarn:\"010F0R091102\",aaro:\"011D0R3J0T09\",aarom:\"010S0R4D\",aaroo:\"010I\",aars:\"010W0R13\",aarsc:\"0R0W\",aart:\"010S0R181102\",\"aart \":\"0R0U\",aarv:\"011D0R09\",aarva:\"011B0R07\",aas:\"01110D080R0F111K1C36\",\"aas \":\"011P0D080R0N110S\",aasa:\"0D040R0B1C11\",\"aasa \":\"1C29\",aasi:\"0D02110K1C14\",aasik:\"1C1Z\",aast:\"010J0R0J11101C1R\",aasta:\"110U1C48\",aaste:\"010K0R041108\",aat:\"01380B0W0N040R2K11381A021C291F1O\",\"aat \":\"016Y0B1O0N020R7I11181F16\",aata:\"110Q1A021C1J\",aati:\"11151F09\",aats:\"0N020R1T\",\"aats \":\"0R0V\",aatst:\"0R13\",aatt:\"0R05111V1F06\",aav:\"111B1C0G\",aava:\"111D1C0E\",aaw:\"0D02\",aay:\"0D04\",aayo:\"0D07\",abab:\"042D0D0B\",ababa:\"043I0D0I\",abad:\"0D030O050P02141N1C121F08\",abadu:\"14051C2G\",abae:\"0D0M\",\"abae \":\"0D0Y\",abag:\"030204390D0A\",abage:\"0441\",abah:\"04110D0X1F0U\",abaho:\"0D1J\",abai:\"0D030L030P040S111B71\",\"abai \":\"1BD7\",abair:\"0S49\",abaj:\"04290O3D\",abaja:\"0O1U\",abaje:\"043O\",abajo:\"0O2I\",abak:\"04221F03\",abal:\"03030D0F0O0G0P2Q1B071F0K\",abalh:\"0P3F\",abam:\"0P020T0S1F0V\",\"aban \":\"0B0H0D0D0O1J0T081F061O02\",abana:\"030804470D041B021F02\",aband:\"043C0D020L0J0M030O0H0P0A15061B0O1C2J\",abang:\"0D141B03\",abant:\"0304047L0D030T0J\",abany:\"042S\",\"abar \":\"0B0O0O050P050T031B5Q\",abara:\"044E0P02\",abari:\"042Z\",\"abas \":\"0D0W0O0H0T031B091D1I\",abasa:\"04220D0M\",abası:\"1F1C\",\"abat \":\"0B0D0D020T12\",abav:\"042H0V0J\",abavy:\"043I\",abaw:\"0D091A0A\",abay:\"042Z0D0D1F0G\",abaye:\"044X\",abaz:\"041R\",\"abb \":\"1003141V\",abba:\"03020Q140T021007130F141P\",abban:\"0Q081412\",abbi:\"0M020Q4B130M\",abbia:\"0Q4A\",abbr:\"0Q0T1402\",abbt:\"100E\",abeb:\"0T0P\",abem:\"0O060P0K0T0I\",aben:\"03050N5C0O0A0P050T0S\",\"aben \":\"03060N7G0O0D\",abent:\"0N020T0R\",abeo:\"0T1Q\",\"abeo \":\"0T1U\",aber:\"030K0N2O0O240P190T1L0V040Z0C1F0O\",\"aber \":\"03070N4E0O260P120T040Z0A1F0H\",abere:\"0T0S0V090Z03\",abes:\"03020L020O0S0P070T1M\",\"abes \":\"0L030O110P090T0M\",\"abet \":\"0L020R020T3I0Z0C1F02\",abez:\"0O0K\",abg:\"0N08\",abh:\"0N020S9P0T061Q03\",abha:\"0S95\",abhai:\"0SIC\",abhar:\"0SFC\",abhr:\"0S22\",abhra:\"0S72\",abia:\"0O030P130Q0E1103150C1A071B0X\",\"abia \":\"0O030P1A0Q0E150F1A05\",abiau:\"1B1T\",abic:\"0M020T0Q0U090Y0R\",abie:\"0O0C0T051A051B041C12\",abiel:\"1C2N\",abig:\"041D0D07\",abih:\"0D0N\",abihi:\"0D12\",abik:\"0426\",\"abil \":\"030A0U0A152N\",abile:\"0L030Q0N0T0I150B1F1O\",abir:\"030304490T06\",abira:\"03040435\",abiri:\"0303043V\",abish:\"042Z\",abita:\"0D020L070O150P040Q0J0T2Y\",abiz:\"042K1402\",abizi:\"044K\",abk:\"0B020Y04\",abla:\"03030O3I0Y0B140T1F021O0T\",\"abla \":\"0O0Z1O0J\",ablan:\"0O0S1O05\",ablar:\"0O28\",\"able \":\"0D020L4U0M2V0O1Y1O0G\",ablk:\"0U0F0Y0Z\",ablo:\"0O0D0U0315061F041O0R\",ably:\"0M0Q\",\"ably \":\"0M10\",\"abo \":\"045L0D040O0D0P050Q040T140Z041B021O0C\",abob:\"1P3N\",\"abob \":\"1P39\",abobs:\"1P12\",abof:\"1P1D\",\"abof \":\"1P1D\",abol:\"0D030O020Q020T03130614051P1A\",\"abol \":\"0D051P1D\",abom:\"1O031P2T\",\"abom \":\"1P2P\",abona:\"043I\",abony:\"043C\",aboro:\"0T051O1U\",abot:\"0D061404\",abou:\"0L030M390P0A\",about:\"0L020M4F\",abras:\"0O0V\",\"abs \":\"1D1J\",abt:\"030Z0N0A0Z051Q07\",\"abt \":\"030Q0N0N0Z08\",\"abu \":\"0304048O0B040Z021B0H1D11\",abud:\"0Y251B06\",abudn:\"0Y13\",abul:\"03040D030L020O020P040T1A0U021F0R1O03\",abula:\"0D020L020O020T11\",abur:\"0303041Z0B040O0A\",abut:\"030J0D0D0T02\",abuti:\"0D0J\",abw:\"040P0N021Q06\",\"aby \":\"010F0M060N030R060U2S0Y590Z031A0U1N0P\",abyc:\"0U1I\",abych:\"0U24\",abyl:\"0L0C0M0C0R020Z09\",abys:\"0U0Z\",\"abys \":\"0U0Z\",abá:\"0U060Y0B140H\",abä:\"1P0J\",abé:\"0O090P02\",abí:\"0O1R0U0F1304\",abía:\"0O2P\",\"abía \":\"0O31\",abó:\"0O051307\",abö:\"1P0D\",abā:\"1D2F\",\"abā \":\"1D0W\",abāk:\"1D1U\",\"abāk \":\"1D2O\",abă:\"150M\",abē:\"0T09\",abė:\"1B07\",abı:\"1F1I\",abō:\"0T03\",acab:\"0O130P0T0T021F02\",acaba:\"0O0W0P0G1F02\",acai:\"0S0M\",acak:\"1F4V\",\"acak \":\"1F51\",acam:\"03020B0G0O020P021A02\",acan:\"0B0A0L0C0O020P020Q1I150D\",acanz:\"0Q1F\",acar:\"0B0O0L020O0B0P041F03\",acas:\"0L020O0G0P0A0T0215231O05\",acasă:\"152N\",acağ:\"1F65\",acağı:\"1F89\",acca:\"03040L020Q0T0T09\",acce:\"0L0K0M0A0O040Q0X0R060T110Z041006150T\",acch:\"0Q230T0B\",acchi:\"0Q1K\",acci:\"0L0H0M0A0O0S0Q350T1A0Z041002150N\",accia:\"0Q1O\",accio:\"0O060Q1E\",acco:\"0L160M0B0Q1X0T08\",accu:\"0L0D0M040Q080T0Q\",acea:\"0T0A155T\",aceas:\"156O\",acel:\"0O020P020T060U02151T1F0A\",acen:\"03050O0E0P060Q0T0T130U071A02\",acend:\"0P040Q0Q\",acent:\"0L020O040P020Q020T15\",acer:\"03020L040O4O0P050Q1O0T2H150E1A08\",\"acer \":\"0L070O3Z0T031A06\",acere:\"0Q1I0T251507\",acerl:\"0O11\",aces:\"0L060M050O0B0P050Q030T041579\",acest:\"1595\",acet:\"0B080Q020T2I0U091A03\",\"acet \":\"0T230U091A03\",acev:\"0Q0L\",\"acha \":\"0L020O070P100S6U\",achai:\"03040L030SB5\",achas:\"0O030P030S3A\",\"ache \":\"0L0N0M030N2D\",achen:\"0L020N400R0G\",acher:\"0L090M0P0N05\",achet:\"0L2R150A\",acho:\"0O0F0P390T020U030Y081A0K1Q0A\",\"acho \":\"0O0E0P2W\",achor:\"0O020P121A02\",acht:\"0N5F0R7F0S9R1Q0J\",\"acht \":\"0N5F0R4X0SLC\",achta:\"0SBK1Q0Y\",achte:\"0N300R3G\",achti:\"0N020R11\",achtá:\"0S2K\",\"aci \":\"030N0Q070T090U0M0V060Y0E15261A071O02\",acia:\"0O1C0P060Q0D0T111A021O0C\",\"acia \":\"0O0V0P040T031A021O0B\",acias:\"0O0R0T06\",acie:\"0L040O0Y0P070Q0H0T1N0U041A0Y1O0C\",acien:\"0O160P080T0P0U051O0G\",acij:\"0V111B0P\",acil:\"0L0N0O050P070Q0J0T0V15041F041O19\",acio:\"0O1W0P0M0Q020T090V081O0X\",\"acio \":\"0O0D0Q020T090V061O1A\",acion:\"0O210P0Q0V0F1O0D\",acit:\"03040L050Q020T1A0V03\",\"acit \":\"03090T0Y\",aciy:\"0429\",aciye:\"0441\",ació:\"0O4N1A0M\",ación:\"0O5U\",acj:\"1A1Q\",acka:\"0M02100N\",acke:\"0M0A0N0A100Q\",acker:\"0N03100M\",acl:\"03020L040O02\",\"aco \":\"043D0O070P0F0Q0B0T041O0B\",acob:\"0T0V\",\"acob \":\"0T0S\",acol:\"0P020Q07151Q\",acolo:\"0Q04151Z\",acon:\"0L0C0O080P1N14021A021O07\",acont:\"0L0K0O020P1Y\",acor:\"0O060P0P150Z\",acord:\"0O070P0W1519\",acov:\"0U160Y1D\",acova:\"0U1B0Y1F\",acq:\"0L040Q0M0T02\",acqu:\"0L060M020Q0Z0T04\",acqua:\"0Q0R\",acr:\"03020L060M040O030P0Z0Q050T0H1507\",acre:\"0L020P12\",acred:\"0P19\",acs:\"140Y\",acsk:\"1416\",act:\"030B0L100M110O150P070R070T2G151H\",\"act \":\"03020L040M0F0R08150I\",acta:\"0O0B0T1G\",\"acta \":\"0O020T15\",acti:\"0L0H0M0J0O0F0R090T0L150R\",actu:\"03090L0C0M0A0O0F0T1Y150F\",actum:\"0T0V\",\"acu \":\"033A045R0S1C0T04\",acue:\"0O0L0T02\",acuj:\"0U100Y1K1A0Q\",acuje:\"0U0T0Y1P1A0N\",acul:\"030F0L020O020P040T11150S\",acum:\"0T091537\",\"acum \":\"0T081542\",acy:\"0M021A0R\",acz:\"1A4I\",acze:\"1A2L\",aczeg:\"1A2F\",aczy:\"1A1X\",acá:\"0O05\",acé:\"0L060O03\",ací:\"0O0D0U0C\",acó:\"0O040P03\",acă:\"154B\",\"acă \":\"156X\",acī:\"1D0E\",acı:\"1F2E\",\"acı \":\"1F0X\",acım:\"1F0Y\",\"ad'\":\"1Q04\",\"ad-\":\"030I\",adak:\"0B1311021F0H\",adaku:\"0B1K\",adala:\"0BCV0D0W0U030V0E110G1F021N0L\",adali:\"0D0O0U021A02\",\"adam \":\"0B070L020T070V1C1A091F151N2E\",adaml:\"1F081N2F\",adamu:\"0B1E\",\"adan \":\"0B0G0V0K1002110B1F2E1N2J1O02\",adap:\"0B0O0L020O020P021O02\",\"adar \":\"03060B080O0I0P0G1F7F\",adary:\"1B5E\",adarė:\"1B1X\",\"adas \":\"0O1I0P1T0T021B081O0C\",adaş:\"1F2G\",adaşl:\"1F1C\",adaşı:\"1F1L\",adde:\"03020M030Q040R0Q0T030Z041003123T1F0A\",\"adde \":\"0Q020R03123S1F02\",adden:\"03030R0T1F02\",adec:\"0O0C0P0715051F30\",adece:\"0O050P061F43\",adei:\"0P0U\",adeir:\"0P10\",adelo:\"0P021P2V\",\"aden \":\"031E0N0U0R0M0Z0R101412051A05\",\"ader \":\"010K030B0D050L050M040Q020R1X0Z1710091207\",\"ades \":\"0L090M030O0Y0P0W0T0510141C1E\",adess:\"0Q1I0T081103\",adev:\"0Z03152A1Q5W\",\"adev \":\"1Q9G\",adevă:\"152W\",adf:\"03040T02\",adg:\"03020Z02\",adh:\"03020S830T0D1405\",\"adh \":\"0S8P\",adhb:\"0S0X\",\"adhb \":\"0S2T\",adie:\"0L0D0N040O1Q0Z041B1F\",\"adie \":\"0L0B0O22\",adien:\"0L050O071B2O\",\"adig \":\"0Z121205\",adik:\"0B0H140D1O031P12\",adim:\"03040V1B1B03\",\"adim \":\"03040V2L\",adiu:\"0T14\",adiuv:\"0T0T\",adiš:\"0V0W\",\"adiš \":\"0V2A\",adj:\"140P\",adk:\"0U040Y0X1A0N\",adku:\"0Y0Z1A0C\",\"adku \":\"0Y181A0J\",adli:\"032R0U040Y091A02\",adlis:\"0365\",adn:\"0M040U0N0V0R0Y2D140V1A101C0E1Q03\",adni:\"0U030V090Y0K14191A0M1Q06\",\"adni \":\"141A\",\"adon \":\"110314081O1C\",adong:\"0D0T\",\"ador \":\"03040D070O1L0P1N1002\",ados:\"0D020O2U0P2S0U070V031B03\",\"ados \":\"0D030O3K0P3E1B061O02\",adp:\"1Q04\",\"adra \":\"0Q090S7A1406\",\"adre \":\"0L020O2Y0P030Q1M\",\"ads \":\"0M050Z0A\",adse:\"0Z081403\",adsi:\"0T031D0X\",adsim:\"1D2F\",adt:\"03070N0B0Z04141M1Q0Q\",\"adt \":\"03040N0O0R020Z0A141U\",adta:\"141P1Q1E\",adus:\"150E1C291D0J\",aduse:\"1C2J\",adust:\"1C1O\",adve:\"0L040M020O040P040T1I\",adven:\"0L020T14\",adw:\"0B021A021Q09\",ady:\"03030D030M0O0U1Y0Y0K1A0H1F051NAV1Q0B\",\"ady \":\"0M170U360Y0Y1A0J1N78\",adym:\"1N3N\",\"adym \":\"1N3L\",adyn:\"1N0X\",adyñ:\"1N15\",adyň:\"1N1A\",adz:\"1A2M1D2P\",adzi:\"1A27\",adzie:\"1A1L\",adzē:\"1D2S\",adzēj:\"1D25\",adzēt:\"1D4Q\",adá:\"0O030P070U0X0Y0V140K\",\"adá \":\"0O030P030U100Y0I\",adã:\"0P03\",adó:\"0O040S0I140A1A02\",adý:\"0U070Y071N0H\",adā:\"1D1J\",\"adā \":\"1D1N\",adă:\"150Y\",adė:\"1B2Q\",adėj:\"1B1N\",adėjo:\"1B2G\",adėt:\"1B1N\",adėti:\"1B30\",adě:\"0U0W\",aděj:\"0U0V\",aději:\"0U0Z\",adī:\"1D1F\",adı:\"1FB0\",\"adı \":\"1F4Q\",adım:\"1F22\",\"adım \":\"1F2O\",adın:\"1F1T\",adığ:\"1F33\",adığı:\"1F47\",adł:\"1A12\",adš:\"0U0B0Y0S\",aea:\"0T02\",aec:\"0T2E\",\"aec \":\"0T32\",aed:\"0T1T\",aeda:\"0T1Z\",\"aeda \":\"0T0V\",aedam:\"0T12\",aedi:\"0T1A\",aedif:\"0T10\",aef:\"0T02\",aeg:\"0T161C2M\",aega:\"1C1B\",\"aega \":\"1C31\",aegu:\"1C12\",\"aegu \":\"1C2J\",aegy:\"0T1E\",aegyp:\"0T1H\",aei:\"0S1C0T021B07\",aeil:\"0S1E\",aeilg:\"0S5P\",aem:\"0T0C\",aen:\"0D020O020T0F0Z02110812061C0H\",\"aen \":\"0O020Z06110D120B\",aeo:\"0T02\",aep:\"0T0H\",aepe:\"0T0S\",\"aepe \":\"0T0T\",aeq:\"0T0K\",aequ:\"0T12\",aera:\"0B070T041C0K\",aes:\"0O070Q0E0T1Q0V081104\",aeso:\"0T1A\",\"aeso \":\"0T1B\",aest:\"0O090Q020T0W0V0A\",aet:\"0T1811031205\",\"aet \":\"0Z03120E\",aeta:\"0T0U1103\",aete:\"0T0R\",aeter:\"0T0S\",aeu:\"0T02\",aev:\"0T021C0F\",\"afa \":\"03080P04132K1F05\",afb:\"0Z02\",afel:\"010M03030R0L1406\",\"afel \":\"010K0N020R0Q\",afer:\"03050Z0210021F021O11\",afero:\"1O21\",affa:\"0L0Q0M030Q141007\",affe:\"0L050M050N0V0Q080R050T0E0Z1F100Z120R1F0A\",\"affe \":\"0L020N070Z1A100P120H\",affè:\"0Q0N\",afg:\"01090R070Z03\",afge:\"010K0R0P\",afh:\"0R020Z03\",\"afi \":\"0302041G0Z02130P1A081F021O021P0U\",afij:\"0V021B021D15\",afis:\"04A11A031O08\",afise:\"04GL\",afk:\"0B04\",afl:\"03030Z03130B150J1F041O02\",afn:\"131G\",afra:\"03070M0H\",afrai:\"0M0N\",afs:\"010803040R040Z0A130L\",afst:\"0R050Z0B\",\"aft \":\"030J0M020N150R040Z0F100A\",afta:\"0B070Z031F1G\",\"afta \":\"1F1F\",afte:\"03020M150N0A0Z131002\",aften:\"0N090Z13\",after:\"0M1K0N021002\",aftu:\"1322\",aftur:\"134C\",afu:\"030S0O040P020V04\",afw:\"0R02\",afé:\"0L0D0O0F0P0K\",\"afé \":\"0L0L0O0M0P0O0R02\",afí:\"0O05\",afð:\"130P\",\"afði \":\"131V\",afü:\"0N05\",afı:\"1F13\",afın:\"1F11\",afınd:\"1F18\",\"ag-\":\"03060D1H\",\"ag-a\":\"0D16\",\"ag-aa\":\"0D12\",\"ag-ar\":\"0D0J\",\"ag-i\":\"0D0Q\",\"ag-u\":\"0D0L\",\"ag-us\":\"0D0M\",\"aga-\":\"0D060P02\",agad:\"03060D030O040P031005141Y1A021C0E1D1C1O03\",\"agad \":\"03060D05140X1D3G\",agag:\"0D0B0L020P020Q030R020Z021002\",agaga:\"0D0K\",agai:\"0B2C0M1B0S1A1B021D0J\",\"agai \":\"0B1E\",agaim:\"0B36\",again:\"0M1T0S2T\",\"agal \":\"03020B0D0D0K1B0Y\",agala:\"0D051N25\",agalb:\"1B1E\",agali:\"03020D0X1B0Z\",\"agam \":\"0P020SQU0T031417\",\"agan \":\"0D0L0O061O03\",agand:\"0D190O020P0210021102\",agang:\"03020D0Z\",\"agar \":\"03030B0Q0O0F0P0I100T130B\",agara:\"030F048E0P02\",agari:\"042Z0D020Q03\",agaru:\"042Z\",agasi:\"0D020L0H1C4L\",\"agat \":\"0D0C0SE91N14\",agaw:\"0D1A\",agawa:\"0D1Q1102\",agawi:\"0D0N\",agay:\"0D0S\",\"agay \":\"0D19\",agaz:\"04150L030M020Q1D150H1O02\",agazz:\"0Q1E\",agb:\"0D0P10021304\",agba:\"0D0O\",agbab:\"0D0I\",agbi:\"0D0E\",agde:\"0D040R050Z20\",\"agde \":\"0R050Z2E\",agel:\"03080N020R050Z0A100212091B0A\",agem:\"03020L020P1B\",\"agem \":\"0P1N\",\"agen \":\"030L0N580O040R3I0Z1F101I1214\",agend:\"042Z0N040P020T060Z08\",agenz:\"03030453\",\"ager \":\"03030L140M070N050R080T030Z2R121G\",agera:\"042Z0L020O020P020Q031005\",ages:\"03020L0S0M0C0N0A0T0B0Z04\",\"ages \":\"0L170M0H0N080Z03\",aget:\"0Z10100K120Q1O02\",\"aget \":\"0Z17100K120P\",agez:\"0302042V\",ageza:\"043V\",aggi:\"03020Q3L\",aggio:\"0Q26\",agh:\"0D0K0Q060S130Z021QB7\",\"agh \":\"1QAA\",agha:\"0D0J0Z021Q2U\",aghi:\"0D0E0Q021Q0D\",agia:\"0B120O020Q021B04\",agig:\"0D08\",aging:\"0B0E0D1H0M020R041B03\",aginn:\"131Y\",agio:\"0O020Q0Y\",agion:\"0Q0T\",agir:\"044M0L050P030Q02\",agira:\"044X\",agis:\"0D030L050T2E1B051O08\",\"agis \":\"0L020T0X1B0B1O0F\",agist:\"0T1M\",agit:\"03040D070L0C0P020Q030T0G10091503\",agiy:\"042O\",agiye:\"044Q\",agk:\"0D1G\",agka:\"0D2E\",agkai:\"0D0O\",agkak:\"0D1B\",agkat:\"0D0N\",agla:\"03020D0W0S0O0V0310021N2H\",aglal:\"0D0K\",aglar:\"0D0A10021N1B\",agli:\"0D050Q1R0Z041008\",aglia:\"0Q0Z\",aglu:\"0D0A\",agma:\"03020D0I1O07\",agmam:\"0D0I\",agmu:\"03030D08\",agna:\"0D050L030Q150T1F100713071402\",\"agna \":\"0Q0V0T0X1004\",\"agne \":\"0L1D0Q030R030Z02\",agno:\"0L090Q0N0T0I1O02\",agnu:\"0T12\",agob:\"1P12\",\"agob \":\"1P14\",agof:\"1P0V\",\"agof \":\"1P0Z\",agol:\"140B1P2J\",\"agol \":\"1P1A\",agolö:\"1P1N\",agom:\"100214021P3I\",\"agom \":\"10021P3B\",agong:\"0D0P\",agor:\"0P230T02\",agora:\"0P2M\",agp:\"0D0Z\",agpa:\"0D1G\",agpap:\"0D0W\",agpu:\"0D06\",agrad:\"03050O0S0P0P\",agree:\"0M0K\",ags:\"0D190N080R020Z06100I1208130K1403\",\"ags \":\"0M020N050R040Z0B100H120C\",agsa:\"0D16\",agsal:\"0D0M\",agsas:\"0D0P\",agsi:\"0D0O\",agsis:\"0D0J\",agsu:\"0D0G\",agt:\"010P03060D0W0N1F0R050Z0N100B120B130G1N5L\",\"agt \":\"03060N1V0R0K0Z0V100E120Q130R1N3W\",agta:\"0D0Z1403\",agtat:\"0D0V\",agte:\"01140N1Q0Z0K\",\"agte \":\"0N2F0Z0C\",agter:\"010V0Z06\",agti:\"010J0D080Z04\",agtl:\"1N17\",agtr:\"0D07\",agtu:\"0D07\",agty:\"1N2H\",\"agu \":\"0B0C1B021C191O03\",agua:\"03020O1I0P040Q0H1F02\",\"agua \":\"0O1E\",aguk:\"041O140F\",agul:\"0D081504\",agur:\"043R130K\",aguru:\"0441\",agus:\"0306042H0B0X0D040S8J0T041B04\",\"agus \":\"0B1N0SPR0T041B08\",agusa:\"042Z\",agw:\"03020D02\",agy:\"0D0314BH1B051N7A\",\"agy \":\"148V1N2T\",agya:\"0D04142A\",agyar:\"141Q\",agyn:\"140M1N3D\",agyna:\"14021N17\",agynd:\"1N14\",agyny:\"1N2F\",agyo:\"0D0214CV\",agyok:\"146P\",agyon:\"146J\",agyr:\"14041N1D\",agyt:\"141M\",agyu:\"141I\",agyun:\"141L\",agyň:\"1N0V\",agyş:\"1N1D\",agá:\"0O021413\",agát:\"141C\",\"agát \":\"141B\",agé:\"0L0A\",agð:\"132E\",agði:\"133N\",\"agði \":\"136G\",agó:\"0O03\",agö:\"1P18\",agön:\"1P1H\",\"agön \":\"1P1Q\",agā:\"1D1C\",agāt:\"1D0Z\",agş:\"1N13\",agşa:\"1N1D\",agşam:\"1N1V\",\"ah'\":\"1F031Q31\",\"ah'a\":\"1Q4Z\",\"ah'a'\":\"1Q8D\",\"ah-\":\"0B04\",ahaa:\"0B071118\",\"ahaa \":\"112Y\",ahab:\"0B050D081C1G\",\"ahab \":\"1C3L\",ahad:\"1C0Y1Q07\",\"ahad \":\"1C2D\",ahag:\"0B0M0D031408\",ahak:\"11031C0Y1F02\",ahaks:\"11051C26\",ahal:\"030W0B0H0D0S110E1F0E\",\"ahal \":\"030Q0B0X0D0Q\",ahala:\"0D0L\",ahamw:\"042Z\",ahan:\"04220B2A0D2D111I1C2V1F021N0F\",\"ahan \":\"0B3L0D2W111S1C6X\",ahana:\"0D0Z\",ahap:\"0D0A\",ahapo:\"0D0I\",aharl:\"1N1E\",ahas:\"0B4U0D02110C1F02\",ahasa:\"0B8Q\",ahat:\"030B0B0F0D1E110C1F0V1N1T\",\"ahat \":\"030P0B0M0D2D110Q1F0I1N1E\",ahay:\"0B0E0D17\",\"ahay \":\"0D22\",ahb:\"1Q74\",ahbe:\"1QBA\",\"ahbe'\":\"1QHJ\",ahd:\"111O1Q0E\",ahde:\"111A\",ahdo:\"111H\",\"ahe \":\"042D0D0A0N05\",ahel:\"0308140A1C16\",aher:\"046C0N03\",ahera:\"04A4\",ahet:\"1C0Q\",ahig:\"0D06\",ahil:\"03260D1911021F07\",\"ahil \":\"03360D1K1F04\",ahili:\"0D0L\",ahin:\"04150D0R0N04110H\",\"ahin \":\"0D0P0N041105\",ahir:\"043G0B0K0D0B1F02\",ahira:\"0D0L\",ahiri:\"0459\",ahit:\"03020D0K0T04\",\"ahit \":\"03050D110T03\",ahj:\"110C1Q22\",ahja:\"110H1Q3W\",ahjaj:\"1Q6M\",ahk:\"0B1N0Y0B11061C0U1F07\",ahka:\"0B1V11041F02\",ahkan:\"0B32\",ahku:\"0B1D1C0S1F02\",\"ahku \":\"0B2N\",ahl:\"030D0B040N0H0U0C0Y071F0A1Q0Z\",ahm:\"0B060N0811021F091Q1U\",ahn:\"0B0L0N0C0U020Y0M1F021Q0F\",ahny:\"0B14\",ahnya:\"0B28\",\"aho \":\"049M0D0S\",ahogy:\"1413\",ahon:\"0D0H\",\"ahon \":\"0D0N\",ahor:\"04110O2A0U02\",ahora:\"0O2Q\",ahr:\"0B040N240U0J0Y091F06\",\"ahr \":\"0N15\",ahra:\"0B080U0R0Y0B1F03\",ahrad:\"0U0S\",ahre:\"0N2H\",ahren:\"0N2G\",ahs:\"1F0I\",aht:\"0V05111Y1C1Z1F0H1Q23\",ahta:\"110M1F0G1Q3Y\",ahtah:\"1Q5Y\",ahti:\"110I1C0R\",ahtn:\"1C0Q\",ahtnu:\"1C1S\",ahtu:\"111T\",\"ahu \":\"0B510U09\",ahui:\"0B0M\",ahuk:\"0B0M\",ahul:\"03020B040D08\",ahun:\"0B310T02\",\"ahun \":\"0B56\",ahur:\"041O\",ahv:\"0O040V06110T1C191F0T1Q74\",ahva:\"0V0711081C0N1F091Q45\",ahvad:\"1Q61\",ahvi:\"11131Q92\",ahvis:\"110C1QEQ\",ahvu:\"1C0O\",ahvus:\"1C1O\",ahw:\"03030B0Z1Q0A\",ahwa:\"03030B1W\",\"ahwa \":\"03070B3P\",ahy:\"0U030Y061N0K\",ahç:\"1F0C\",ahí:\"0O0F\",\"ahí \":\"0O0N\",\"ai-\":\"0B020L060P02\",aia:\"0B090P0H0Q0A1403150K1C0E\",aian:\"0B0I0Q06\",aib:\"0D0C0L040P050S3I140215061B03\",aiba:\"0D070P0614031504\",aibh:\"0S47\",\"aibh \":\"0SEM\",aibi:\"0D0F\",aibig:\"0D0S\",aic:\"0O020P020S21152H1D0J\",\"aic \":\"0S11\",aici:\"0O030S161540\",\"aici \":\"0S4R1553\",\"aid \":\"0M5Q0R0214091C1K\",aida:\"0L02110F14071B0D1C0R\",aidat:\"110614071C1O\",aide:\"0L1W0R04110D15051B02\",\"aide \":\"0L180R051102\",aider:\"0L1R\",aidh:\"0S7V\",\"aidh \":\"0SNP\",aidi:\"0S0T1B0L\",aidr:\"1D0Z\",aidī:\"1D23\",aidīt:\"1D32\",aie:\"01270L2F0R021106150J1B02\",\"aie \":\"014W0L0Q150N\",aien:\"0L330R06\",aient:\"0L57\",aig:\"0D030L0F0M030O020S6F1B1F1C0U1D15\",aige:\"0S201C0L\",\"aige \":\"0S7R1C10\",aigh:\"0M040S5C\",\"aigh \":\"0SGW\",aih:\"110Y\",aii:\"0D091503\",aiin:\"0D0D\",\"aik \":\"0B3914021B05\",aika:\"0B12115R14031B2K1D27\",\"aika \":\"112S1B0A1D1R\",aikaa:\"114T\",aikai:\"112T1B23\",aikam:\"11051B0C1D3C\",aikan:\"0B1X111N\",aikas:\"110I1B2E\",aike:\"112D1B03\",aikea:\"112G\",aiki:\"0B0D110Q1B0Y\",aikk:\"115X\",aikka:\"113L\",aikki:\"119L\",aikn:\"0B0F\",aiko:\"110U1B1V\",\"aiko \":\"11031B34\",aiks:\"1D18\",\"aiks \":\"1D37\",aiku:\"0B04111H1B141D20\",\"aiku \":\"0B071B191D4U\",aikut:\"1134\",aiky:\"1B0V\",aikā:\"1D0X\",\"aikā \":\"1D2F\",\"aiką \":\"1B1E\",aikš:\"1B0R\",ailan:\"0D450O030Q031102\",aile:\"0L020M050O020S2L110K1B081F0R\",\"aile \":\"0O020S9P11051F06\",aill:\"0L2I0N020R030S1C110X\",\"aill \":\"0S3J\",aille:\"0L3B0N020R03110Q\",ailm:\"11191C0R\",ailma:\"11331C1E\",ailí:\"0S22\",ailín:\"0S7R\",\"aim \":\"0L0C0M020S5I0T03140J\",aima:\"0B1M0L0C110314091B021F02\",aiman:\"0B36\",aime:\"0L620M02110F1B0B\",\"aime \":\"0L3Z1B0K\",aimen:\"0L3L110I\",aimer:\"0L28\",aimi:\"110X1B1E\",aimin:\"11031B2P\",aimė:\"1B10\",aimī:\"1D0U\",aimīg:\"1D25\",aina:\"0B0C0D020Q0I113S14041B0J1C0G1D0J\",\"aina \":\"0Q0I11641B0F\",ainc:\"0L0A0S0Z\",ainci:\"0S32\",aind:\"0L040P2J\",ainda:\"0P32\",aine:\"0L2F0M0E0N020R030Z021159150C1C0V\",\"aine \":\"0L2U0M020N02110D15081C26\",ainen:\"11B0\",aing:\"0D07\",aini:\"0D090M080N0211091B0I1D0J\",ainm:\"0S1G\",\"ainm \":\"0S58\",ainn:\"0B060S4H1102\",\"ainn \":\"0SE2\",ainne:\"0S2T\",aino:\"0Q0211131B081D1J\",ainoj:\"1B021D25\",ains:\"0L1M0M0K1D0J\",\"ains \":\"0L210M0D1D1D\",\"aint \":\"0L0A0M050S7J\",ainte:\"0L2J0M060V0A151O1A0B\",ainu:\"11061B111C1F\",ainul:\"1C31\",ainuo:\"1B23\",ainy:\"0B0M\",aio:\"0P0X0Q080T0F110I\",aior:\"0P0U0T0R\",aip:\"110B1B691D0K\",\"aip \":\"1B9J\",\"air \":\"0B150L1A0M0S0P0R0R060SDJ1F0A\",aira:\"0L02111414021B03\",aird:\"0S1E\",airde:\"0S3J\",aire:\"0L9E0M030O0B0R050S4R1B021F07\",\"aire \":\"0LDN0O0D0R060SAY1B041F03\",airea:\"0S7Z\",aires:\"03030L1J1F03\",airg:\"0S1G\",airge:\"0S3A\",airgi:\"0S2T\",airi:\"0L030S0O1B06\",airs:\"0L020M081D17\",\"airs \":\"0L030M0A1D32\",airt:\"0S3P\",\"airt \":\"0SDI\",airí:\"0S0Q\",\"airí \":\"0S2T\",airā:\"1D23\",airāk:\"1D58\",\"ais \":\"0D060LJN0O0B0PAO0S2R1B4O1D3C\",\"ais-\":\"0L1I\",\"ais-t\":\"0L1V\",aisa:\"0L0S0O0211031B04\",aise:\"0L1A0M060N0211551B021C0Y\",\"aise \":\"0L1H0M04110B1B04\",aisen:\"0L02112Y\",aiset:\"112M\",aisi:\"0L0L117K1B0O\",\"aisi \":\"0L02112Z1B0J\",aisia:\"11391B0B\",aisin:\"0L031183\",aism:\"1D0S\",aisn:\"1D0Z\",aisnī:\"1D21\",aiso:\"0L3D1B02\",aison:\"0L5O\",aiss:\"0L3F110A\",aissa:\"0L1B110H\",aisse:\"0L3K\",aist:\"0S0Q0V0U113Y1B1L1C111D2C\",aista:\"0V2611661B0L1D2Y\",aisu:\"111C1B04\",aisuu:\"112O\",aisv:\"1B0R\",\"ait \":\"03020D050LJB0M0H0R050T0Z1108140M1F06\",aita:\"0D020L02111Q1B0B1C15\",\"aita \":\"112V\",aite:\"0L1M0M05110C1B09\",aith:\"0M020SDW\",\"aith \":\"0M020SR8\",aithe:\"0S9H\",aithf:\"0S58\",aithn:\"0S4I\",aiti:\"03020M0C11021B07\",aitn:\"0S0M\",aits:\"0L08110L1C12\",aitse:\"11111C29\",aitt:\"11151F02\",aity:\"1B15\",aityt:\"1B1J\",aitė:\"1B0Z\",\"aitė \":\"1B1G\",aiu:\"0P0G0Q210T021503\",\"aiu \":\"0P0J\",aiut:\"0Q38\",aiuta:\"0Q27\",aiv:\"0P05111J14031B0D\",aiva:\"0P05112614051B05\",aivan:\"112K\",aix:\"0L040P16\",aixa:\"0P0L\",aixo:\"0P0P\",aiz:\"1B0H1D5U\",aizd:\"1B0Q\",aizm:\"1D1C\",aizmi:\"1D3C\",aizs:\"1D0U\",aizv:\"1D11\",aizņ:\"1D17\",aizņe:\"1D2Y\",aič:\"1B0E\",aiš:\"1B1M\",aišk:\"1B1Z\",aiški:\"1B1U\",ajab:\"0O031C0Q\",\"ajab \":\"1C1S\",ajad:\"0O0C14051C0I1D3A\",ajadz:\"1D88\",ajag:\"1D271N0F\",\"ajag \":\"1D5L\",ajal:\"0U030V07110C1C0X\",ajan:\"041D0O0C0P020V05111I\",\"ajan \":\"0O040V08112H\",ajar:\"0B360O0Y0P091002\",\"ajar \":\"0B4A0O110P0A\",ajari:\"0B19\",ajat:\"0V031121140415071Q1M\",ajatt:\"112H\",ajb:\"0V0J0Y0714021A081O041Q22\",\"ajbe'\":\"1Q5E\",ajd:\"0U090V0N14121A0B1F021O021Q0S\",\"ajd \":\"141U\",\"ajde \":\"0U050V1O\",\"aje \":\"047C0O180U0M0V0Q15051A13\",ajen:\"031N0O020V021102\",ajiem:\"1D1W\",ajin:\"0B050U040Y1J\",ajk:\"0V0L0Y0P14021A05\",ajl:\"0V040Y0M14061A0D1F021O031Q0H\",ajle:\"0Y121A0I\",ajlep:\"0Y1B1A0S\",ajm:\"03020V0H0Y0D1A0L1Q0N\",ajn:\"0U030V0S0Y0M140I1A071O5I1Q0B\",\"ajn \":\"1O68\",ajna:\"0V0514051O0O\",ajno:\"0V0D140G1A021O0R\",\"ajo \":\"0O2N1O03\",ajr:\"1O08\",ajt:\"0V0G0Y32141A1O0I1Q08\",ajta:\"14171O0I1Q0G\",ajte:\"0V0J0Y2R\",\"ajte \":\"0V180Y3E\",ajtr:\"0Y2J\",ajtra:\"0Y34\",ajtó:\"1418\",\"aju \":\"03080B070U020V3511021A0C\",ajud:\"0P2A\",ajuda:\"0P26\",ajun:\"03041105151P\",ajut:\"15351B03\",ajy:\"03031N0Q\",ajá:\"140W\",aját:\"1419\",\"aját \":\"1418\",ají:\"0U330Y05\",\"ají \":\"0U34\",ajím:\"0U16\",ajíma:\"0U10\",\"ajít \":\"0U0S\",ajó:\"0O0514061A03\",ajú:\"0Y3F\",\"ajú \":\"0Y4W1402\",ajúc:\"0Y0Z\",ajā:\"1D24\",\"ajā \":\"1D21\",ają:\"1A2O\",\"ają \":\"1A2G\",ajč:\"0Y0F\",aję:\"1A0Q\",ajš:\"0Y0D\",\"ak-\":\"03110B0I\",\"ak-a\":\"0B0O\",\"ak-an\":\"0B1C\",akaa:\"0B0I0D07112A\",\"akaa \":\"1138\",akab:\"0D0E1B021F03\",akad:\"0D0G1007140P\",\"akad \":\"0D0M1404\",akah:\"0B680D0E\",\"akah \":\"0BBO\",akai:\"0B0V0D16111514031B0A\",akain:\"0D1G\",akais:\"112S\",akak:\"0B0E0D1E0V031102\",akaka:\"0D21\",akal:\"03190B0C0D100U070Y1211031B0C1F0X\",akala:\"0D0W0U030Y0C11031F0P\",akali:\"0D0P1B02\",akam:\"030J04190D0I110214021A021F041N0I\",akama:\"0D0V1F03\",\"akan \":\"03090BQM0D0I100211071F03\",akana:\"03020B1M0D02110S\",akank:\"0B0C1B1F\",akany:\"044X\",akap:\"0D0Q11031402\",akapa:\"0D0X\",\"akar \":\"0B0S100B14171B2W1D371F05\",akara:\"03020B0A0D0H110214061B041F02\",akaro:\"0D05143C1B09\",akars:\"1419\",akart:\"141T1B07\",\"akas \":\"0D0X110N1B061C131O04\",akasa:\"0D0R\",akast:\"1156\",akat:\"03080B0B0D140U0410021106140Q1F0I\",akata:\"03080D0Z1104\",akati:\"03030D0M\",akau:\"0D0A11071B08\",akaw:\"0D08\",akay:\"03050D0D\",akaz:\"042Z1A02\",akazi:\"044X\",akaļ:\"1D0S\",\"akaļ \":\"1D1W\",\"akať \":\"0Y11\",akb:\"03060D0614041A06\",akbo:\"0D08\",akc:\"0U020V0314031A091B021O0H\",akd:\"1F041N20\",akda:\"0D031N1F\",\"akda \":\"1N19\",akdy:\"1N1J\",akdyg:\"1N1D\",akee:\"1C0N\",akeel:\"1C1H\",akei:\"11031B11\",akel:\"010H030H0R0811021B08\",\"akel \":\"010G03090R020Z02\",aken:\"030H04320M080R27100E110W120O1B03\",\"aken \":\"030D0M0B0N020R2X100E120M\",akene:\"04411104\",\"aker \":\"03040M050R05100M120L\",\"akes \":\"0M0V1B04\",akf:\"03060M03\",akh:\"0B0U0U091402\",akhi:\"0B1L\",akhir:\"0B35\",\"aki-\":\"0B0V\",\"aki-l\":\"0B1P\",akia:\"0D03110Q1B0W\",akiau:\"1B1S\",akie:\"11031A1U\",akik:\"0B070D0N14171F0N\",\"akik \":\"1415\",akiki:\"0D15\",akil:\"03030D091B04\",akila:\"0D0G\",akin:\"03020B1A0D2O0M0T111X140H1B191F0G\",\"akin \":\"03020B250D2J114N1F06\",aking:\"0D210M131B09\",akip:\"0D091B021F08\",akir:\"0302042H0D03110F14041F051O09\",akit:\"03030B1H0D2L140H1F08\",\"akit \":\"03060B2K0D2I140H1F09\",akita:\"0D291O02\",akj:\"1402\",\"akk \":\"03391218130T\",akka:\"03150B0G111J131914071C0X1F0D\",akke:\"010T036D0R1M0Z121102124O1408\",\"akke \":\"0Z0H121I\",akkel:\"0R0W0Z04\",akken:\"03CQ0R0J0Z06120C1408\",akker:\"010L0R0Q0Z081225\",akket:\"0Z05120R\",akko:\"0R04110Q142E\",akkor:\"142G\",akku:\"0B0C110D120G\",akkur:\"120G\",akkı:\"1F2T\",akkın:\"1F3K\",akla:\"03040B060D0O14021B131F2I1N2I\",aklar:\"1B0D1F1C1N20\",aklat:\"0D0R1402\",aklau:\"1B1O\",akli:\"011203061B041F02\",aklik:\"0113\",aklı:\"1F0V\",akm:\"03030B030U030V020Y0A14021B051D0G1F0W1N09\",akma:\"14021F0W\",akn:\"03090B0C0V03100M13081407\",akna:\"0306100T130D140A\",akny:\"0B0O\",aknya:\"0B1B\",akom:\"04220V040Y0C1007140C1A041B061O04\",akome:\"043I\",akon:\"0D260U0A0V071105140B1B021O0P\",akong:\"0D3Y\",akor:\"043K0U0310051103140L1O03\",akora:\"0447\",akot:\"0D0D1108140H1B05\",\"akot \":\"0D0O1103140D\",akov:\"0U1A0Y0U\",akové:\"0U0R\",akoz:\"044C140U\",akoze:\"046S\",akp:\"0D02\",akra:\"03080U0214161B021F071O02\",akran:\"14131B03\",akre:\"03020U02120B\",\"aks \":\"0M070R020Z071002110212061C5H\",aksa:\"0B0G0D02111Q1A021C181F051N0F1O02\",akse:\"0Z02111G1C1B\",\"akse \":\"11081C37\",aksi:\"03050B0D0D080V07114E1B071C2Q1F091O06\",\"aksi \":\"03060B0K0D060V0A118P1B0D1F06\",aksid:\"0D061C29\",aksin:\"11091C3B\",akst:\"1D2P\",akstī:\"1D32\",aksā:\"1D13\",\"akt \":\"03040N030R2D0U030Z02100H120C13061A041B05\",akta:\"03020B040D030Z02100C14091B0C1F211O06\",aktan:\"0D051F1F\",\"akte \":\"0R110Z04120D1O0I\",aktis:\"0N040R030Z07100G120B1B0A1O04\",aktu:\"0B280N020U050Z021004130C14031A041B081O05\",\"aktu \":\"0B3Q130P1A021O02\",aktı:\"1F1Q\",\"aktı \":\"1F16\",\"aku \":\"03020BMG0U050V081A041D0Q\",akub:\"03030426\",akuj:\"0U020Y171A0A\",akuje:\"0Y1H1A0E\",akuk:\"0B4V0D02\",akuka:\"0B9A\",akun:\"0302049V0B06110B1404\",akund:\"04CS\",akung:\"043C\",akur:\"030704490D021A021O02\",akuru:\"043C\",akut:\"0B0U100211021B02\",akv:\"0V0P1B0D1O0I\",akvo:\"0V0A1B021O0P\",akw:\"041B\",akwi:\"042H\",aky:\"0D0A0U090Y0911021B2X1F021N3Y\",\"aky \":\"0U0E0Y0G1N15\",akya:\"0D0I1F02\",akyan:\"0D0S\",akyk:\"1B131N2X\",\"akyk \":\"1B1S\",akyka:\"1N2W\",akyn:\"1N12\",akys:\"1B0S\",akyt:\"1B25\",akyti:\"1B46\",aká:\"0U0B0Y19140O\",\"aká \":\"0U0B0Y18\",akç:\"1F021N0A\",aké:\"0U180Y1N1403\",\"aké \":\"0U1T0Y2E\",akó:\"14031A03\",akú:\"0Y0I\",aký:\"0U0K0Y19\",\"aký \":\"0U0S0Y1Q\",akė:\"1B1U\",\"akė \":\"1B2P\",akı:\"1F2X\",akın:\"1F1C\",akş:\"1F0T\",akşa:\"1F0X\",akşam:\"1F19\",alaa:\"0D09111D\",alab:\"03020D0D0L020O1614071F0T\",alaba:\"0D0I0O031F08\",alabr:\"03030O1G\",alac:\"0O020Q02140E1F10\",alaca:\"1F1E\",alada:\"0O060P061N19\",alag:\"0D1R14051O02\",alaga:\"0D29\",alagi:\"0D0P\",alah:\"0BAL0D08140U\",\"alah \":\"0BH9\",alaha:\"0B1H0D09140D\",alais:\"0L05114W1B07\",alak:\"0B0E0D221106142M1B021F041O03\",alaka:\"0B0E0D0S14021F02\",alaki:\"0D2I141N\",alal:\"0D0M110615071F031O04\",alala:\"0D101F02\",\"alam \":\"03060BB40D3D0P081N0N\",alama:\"03030B0Z0D1H110B1F0S1N1Z1O0B\",aland:\"0D030P0K130U14041B2X1F0L1N0Z\",alang:\"0B0D0D391B03\",alap:\"0D0F0Q02110414141N0D1O06\",alapi:\"0D0N\",\"alar \":\"0O040P2I1014131A1F121N1N\",alary:\"0M021N3D\",aları:\"1F2K\",alati:\"0Q021C26\",alatt:\"0Q041106141A\",alau:\"0B28110K1B13\",\"alau \":\"0B421B0F\",alav:\"0P1411031B051O02\",alavr:\"0P1A\",alaw:\"0D0U\",alawa:\"03020D1D\",alay:\"03050B060D0B1F0A\",alaý:\"1N1I\",alaýa:\"1N1Z\",\"alba \":\"0T061B57\",albo:\"0D031A091B1N1O0U\",albon:\"1O1N\",albos:\"1B34\",albą:\"1B0W\",\"albą \":\"1B1W\",albė:\"1B3C\",albėj:\"1B1Z\",albėt:\"1B3S\",alch:\"0Q101Q0L\",alche:\"0Q10\",alco:\"0L060M030O060P020Q3A0R040T02150A\",alcos:\"0Q35\",alcu:\"0L040O030P020Q2B150H\",alcun:\"0Q2C\",alda:\"0D020O0B0P020Q0713191B061C0N1F061N0K1O0F1Q15\",\"alde \":\"0D020O030R0E0T2S0Z0610051F04\",alder:\"0D040Z0L1208\",aldi:\"0O030P020Q02130L1B021D151O04\",aldie:\"1D2K\",aldr:\"0O040Z1R101Y122I131R\",aldre:\"0Z021331\",aldri:\"0Z23101Y122I130K\",aldt:\"0Z0M120D\",\"aldt \":\"0Z0N120D\",aldy:\"1B081N3J\",\"aldy \":\"1N24\",aldı:\"1F45\",\"aldı \":\"1F2I\",aleb:\"0Y1X\",alebo:\"0Y2E\",alei:\"0L020P0B110613071B0T\",aleme:\"0L1D\",\"alen \":\"032G0N0B0O030R2C0Z08100D120C\",alene:\"0Z0O120X\",\"aler \":\"0L040N040R020Z2E120H\",\"ales \":\"03070L0Q0M030N020O2J0P020T0K0Z04150I\",\"alet \":\"03020T090Z0E10081F07\",aleta:\"0D030O051A021C1L\",alfac:\"1O1E\",alfe:\"1O0N\",alger:\"0D020M200N030Q060R0B0T040Z0W1007110F120D150A\",algo:\"0O2E0P151B0Q\",\"algo \":\"0O340P1F1B12\",algt:\"0Z091206\",algu:\"0O2U0P3S\",algui:\"0O1D\",algum:\"0P2P\",algun:\"0O2E0P0V\",algué:\"0P1C\",algy:\"1B1B\",algyt:\"1B1R\",alha:\"0P1S110414041O02\",alhar:\"0P0U\",alho:\"0P1L0U031403\",\"alho \":\"0P1T\",alian:\"03050B2B0D090M040O080P0A0Q0K0Y0V110815051O0X\",alida:\"0D070O160P0M0T041O04\",alii:\"0D0A0T0E1106150A1A08\",aliit:\"0D0I\",alij:\"0R020V0B1B0T1Q08\",\"alik \":\"0B0C0D0V1B0E1C1A1P2O\",alika:\"0B0H0D0F1B0C\",aliko:\"11031B0P1P2U\",aliku:\"1C1S\",alima:\"0B1B0D041B2M1F031O02\",alimu:\"0D0J\",\"alin \":\"031C0D0H0L03110E1B02\",aling:\"03020B270D2B0M040R0A0Z031B101O02\",alip:\"0D07\",aliq:\"0T27\",aliqu:\"0T2C\",alir:\"0B030O0L0Q021O03\",\"alis \":\"0D0Z0T1G1B141O0G\",alise:\"0L0J0R060Z02110812051C1L\",\"alit \":\"03110D0N0T020U021105\",alita:\"0D1R0T03110F150Y1O02\",alità:\"0Q4S\",aliu:\"0T0R1B391O04\",\"aliu \":\"1B5Z\",aliw:\"0D08\",alië:\"0R16\",\"alië \":\"0R1L\",aliý:\"1N2Z\",aliýa:\"1N40\",aliśm:\"1A1M\",aljo:\"113V\",aljon:\"118Q\",alju:\"0B0C0V0B11021C3F1O0H\",\"alju \":\"0B0L11031C7G\",\"alk \":\"010N0M161F02\",alka:\"0B131003111U140V1B0J1F071O04\",alkan:\"0B24110U14021B12\",alke:\"0M0I0Z061104\",alked:\"0M0N0Z02\",alki:\"0M0M11051A021B02\",alkin:\"0M0U1107\",alkoi:\"112T\",\"all'\":\"0Q1Y\",\"alla \":\"03040L040O0F0Q440T03102S11B9131X1A031C1A\",\"alle \":\"010X0L0N0N2W0O0L0Q1H0R1D0Z3Q115H123E1C4L1F02\",alled:\"03060M0Q1F04\",allee:\"010S0R2H110Q\",alleg:\"0Q021326\",allem:\"030A0L0Y0N0A0R131102\",allen:\"03100M060N1N0O030Q060R1G0Z021002110B1205\",allg:\"0N031416\",allga:\"1418\",allic:\"0T1L\",allir:\"132B\",allis:\"1165\",\"allo \":\"0N050O0D0Q130R07110C1204\",allon:\"0L190Q030R021002110G1O0D\",allot:\"1102141B\",allow:\"0M0L0Q0311041A02\",alls:\"0M050N09100F1206130H\",allt:\"0N04103M121N13321402\",\"allt \":\"0N02101T133X\",allta:\"0N02132K\",allti:\"101Q121N\",ally:\"0M3I1N12\",\"ally \":\"0M4R\",allym:\"1N19\",allé:\"0L14\",allí:\"0O0R\",\"allí \":\"0O0Z\",almag:\"1N12\",almak:\"14031F1C1N1B\",almal:\"01101F0A1N0L\",almas:\"14161F0D\",almen:\"0O260P2J0Q0Y110513101O0C\",almi:\"030A0Z04111E14051C0X\",almis:\"112G1C29\",almo:\"0M0F0O080P0G0Q0214021O04\",almos:\"0M0K\",alnı:\"1F0X\",alnız:\"1F19\",alod:\"14031D3Y\",aloda:\"1D2T\",alodu:\"1D43\",alodā:\"1D3G\",aloi:\"1114\",alom:\"0O02110214181B06\",alone:\"0M0N0O040V07\",alop:\"1P12\",alor:\"0L0Q0O0J0P0D0Q050T0A15081O0C\",alors:\"0L18\",\"alp \":\"0Z0812051F02\",alq:\"03020O0G0P0I1Q0H\",alqu:\"0O0P0P0M1Q0I\",alque:\"0P0S\",alqui:\"0O0X\",alr:\"0M0F0O0614061O0A\",alre:\"0M0Q0O0A\",alrea:\"0M10\",\"als \":\"0M0F0N560R690Z031005\",alsa:\"0D020O040P020Q020T031B061F021O14\",alse:\"03060Z02100212051C0K1O04\",alsj:\"0R0Z\",alsje:\"0R1B\",alst:\"0R0X1B0B1D1E1O02\",alstu:\"0R17\",\"alte \":\"0N0X0R040Z19120S150D1O04\",alten:\"0N2A1O02\",alth:\"0M0E\",altid:\"0Z1L\",altij:\"0R2J\",altr:\"0Q2D1O0D\",altro:\"0Q14\",alty:\"011B1N0J\",altyd:\"011D\",altı:\"1F18\",alua:\"117G\",\"alua \":\"113A\",aluaa:\"112C\",aluai:\"113H\",aluan:\"1153\",aluat:\"1144\",alud:\"0O0H0U02141C\",\"alum \":\"0T0S\",alun:\"0D060P0C0Q0E110K140515041C2N\",\"alun \":\"030311041C6B\",alus:\"0D040T06111B14021B0F1C1I\",alusi:\"112M1402\",alust:\"110B1C1O\",alut:\"0D030L040Q0N0T0J1108140215081B021C0K1O08\",\"alv \":\"0Z091005\",alven:\"11061O1H\",alvo:\"0O040P040Z06110812071B3M1O08\",alvoj:\"11021B5M\",alvt:\"0Z081002\",alw:\"03060M0L1Q0M\",alwa:\"0M13\",alway:\"0M1I\",\"aly \":\"0M020U0G0Y0B14071N8F\",alya:\"03150D061F0T1Q1Y\",alyd:\"1B041N18\",alydy:\"1N1O\",alyp:\"1N1Q\",\"alyp \":\"1N22\",alz:\"03020N020O030Q0D1F02\",alá:\"0O060P060U070Y0A143W\",alál:\"1458\",alálk:\"141L\",alált:\"141O\",alán:\"141S\",\"alán \":\"141N\",alä:\"1P0N\",alç:\"0P051F02\",alé:\"0L030O020P070U0C0Y071404\",alí:\"0O050U061307\",alñ:\"1N0Q\",alñy:\"1N10\",alñyş:\"1N19\",aló:\"0O05141E\",alö:\"1P0C\",alý:\"0U090Y081N0S\",alýa:\"1N15\",alýar:\"1N14\",alā:\"1D0N\",ală:\"152N\",\"ală \":\"1542\",alą:\"1B0A\",alė:\"1B28\",alėj:\"1B1G\",alėjo:\"1B1L\",alėt:\"1B0X\",alĝ:\"1O08\",alī:\"1D3G\",alīd:\"1D3Y\",alīdz:\"1D9T\",alį:\"1B08\",alı:\"1FAI\",\"alı \":\"1F20\",alım:\"1F0W\",\"alım \":\"1F15\",alıy:\"1F1T\",alış:\"1F4W\",alışm:\"1F1V\",alışt:\"1F1J\",alışı:\"1F24\",alň:\"1N0O\",alňy:\"1N0Z\",alňyş:\"1N12\",alŝ:\"1O09\",alš:\"0U0F0Y0C\",alų:\"1B0E\",alž:\"1B021D0V\",alžī:\"1D15\",alžīr:\"1D2Y\",\"am'\":\"1F031Q30\",\"am'e\":\"1Q5J\",\"am'e'\":\"1Q97\",\"am-\":\"031R0B030P0F\",amaa:\"0B030D0311321C0G\",amaan:\"0B070D051167\",amab:\"041K0O0E0T0F1507\",amac:\"03080O020S1R1A021F05\",amach:\"0S721A02\",amady:\"1N14\",amadı:\"1F1Z\",amag:\"0307044G0D080M031N19\",amaga:\"044X0D061N0U\",amah:\"030W045L0D0B1102\",amaha:\"0D0I1105\",amahe:\"0489\",amai:\"0B0A0L2R0P0A0Q0211041B0X\",\"amai \":\"0B0B1B1U\",amais:\"0L4M0P0C1105\",amak:\"0303043Y0B0B1F1G1N1Q\",\"amak \":\"1F1O1N20\",amaku:\"04590B0J\",amaly:\"1N14\",amam:\"0B090D090O030P070Q020T041F1R1N0E\",amama:\"0D0H1F06\",\"aman \":\"032Z0B2G0D2B0L0B0O06111A133C1F5J1N0H1O0B\",amang:\"03040D1G\",amanh:\"0P1P\",amanı:\"1F1Q\",\"amas \":\"030D0O0D0P070T061B4Z1O1H\",\"amat \":\"03050B1Y0D0E0T0U0U021109140G1C1S\",amata:\"0B0G0D0U0Q091O04\",amatu:\"0T090U0V11021C73\",amay:\"030J0D0G1F1T\",\"amay \":\"0D0H\",amaya:\"0D0A1F1P\",amazi:\"032704410L040M04\",amaý:\"1N1K\",amaýa:\"1N24\",\"amba \":\"04410D020P020Q0414031B091F02\",ambar:\"03020B0P1B30\",ambat:\"0B1L0D02\",ambia:\"0O0W0Q0V\",ambil:\"0B1W\",ambin:\"0D050Q121B2T\",ambié:\"0O1H\",\"ambo \":\"04410T04\",ambr:\"0L0T0O0D0T021O0U\",ambre:\"0D020L1A0O0D\",ambro:\"1O1M\",ambé:\"0P18\",ambém:\"0P1K\",amd:\"030D0D040T061B031F0F1N0D1Q0V\",amda:\"03080D081F0A1Q1D\",amee:\"0R0211021C0Q\",ameer:\"1C1O\",amek:\"032F1A02\",\"amek \":\"034Z1A03\",ameni:\"0V08153T1O02\",ameny:\"03060441\",\"amer \":\"010V03050L030N050R1R\",amf:\"0Z02100612041306\",amg:\"030410031Q03\",amh:\"03020S8W0U02100613031Q07\",\"amh \":\"0S80\",amha:\"0S0O1Q0D\",amhr:\"0S0Q\",amhá:\"0S0Q\",amhái:\"0S32\",amic:\"0L020Q3T0T351504\",amica:\"0L030Q0R0T0L\",amici:\"0Q1L0T12\",amico:\"0Q100T0J\",amicu:\"0T15\",amie:\"0L0I0O0L11051A0V1B0E1D13\",amies:\"0L0811051A071D25\",amig:\"0D080O1X0P1T0Q0J\",amigo:\"0O250P1V\",amik:\"0302142M1O1Q1P16\",\"amik \":\"1P12\",amiko:\"142L1O2G\",amilj:\"100G\",amily:\"0D0F0M0L140G\",amine:\"0L060M020R020T02111R14031C1V\",aming:\"0D3C0M05131B\",aminh:\"0P0V\",amirš:\"1B1H\",\"amis \":\"0D050L1C0T020Z04100314031O0A\",amise:\"0O020P02112S1C37\",\"amit \":\"030J0D130N10145F\",amk:\"03060B040N020U050Y0713091A0D\",amla:\"100O13061F0J1N271Q0H\",\"amla \":\"100K1F06\",amlar:\"10021F0C1N2K\",\"amle \":\"0Z0M1002120I\",amleg:\"134P\",\"amma \":\"03020Q0E0R040T0710151206130Q\",ammal:\"0Q06100S11041406\",amman:\"100I1104\",\"amme \":\"0L0A0N020Z0Q1002115G120V\",ammel:\"0N080Z141103120Y\",ammen:\"030C0L0N0N180R030Z19100211021217\",ammer:\"010S0M020N060R050Z0D1209\",ammi:\"0Q0W110E\",\"amn \":\"100T\",amoc:\"0Q051A1N\",amoch:\"1A2M\",amok:\"140B1B0C1N0U\",\"amok \":\"14051N12\",amor:\"0O0X0P150Q0X0T1115031A021O03\",\"amor \":\"0O0R0P0S0T0J\",amos:\"0O5I0P5P0Q080T0414061B08\",\"amos \":\"0O6U0P6V0T0314031B0H1O02\",amou:\"0L0W0M070P080V04\",amour:\"0L1J\",ampai:\"0B301108\",ampe:\"0L040N040O040P040Q020R050Z08120B\",ampir:\"0B1D\",ampu:\"0B120D070T02110D\",amq:\"0T0F\",amqu:\"0T0S\",\"ams \":\"0M061B0X1D29\",\"amt \":\"03310N030Z04100D1308\",\"amu \":\"0BEP0U060V0411071B02\",amuk:\"042K0D021105\",amuo:\"1B17\",amuos:\"1B1Z\",\"amus \":\"0B0D0T2N1B0O1Q0E\",amut:\"04221402\",amv:\"100312031Q0Q\",amw:\"042J1A021Q05\",amwe:\"044T\",\"amwe \":\"047X\",amwo:\"0429\",\"amwo \":\"0441\",\"amy \":\"0U021A1T1N0Q\",amye:\"0422\",\"amye \":\"043O\",amá:\"0O0G0P050S0T0U03130L141E\",amár:\"0S0V1403\",amára:\"0S3J\",amás:\"0O0B1434\",\"amás \":\"0O0F142O\",amã:\"0P03\",amä:\"0Y0J\",amé:\"0L0G0O060P050U040Y06\",amí:\"0P0H0U021408\",amíl:\"0P0J\",amò:\"0Q02\",amó:\"0O061A05\",amü:\"1P0H\",amā:\"0T031D0Q\",amă:\"150S\",amą:\"1A021B0K\",\"amą \":\"1A021B0V\",amē:\"1D0H\",amě:\"0U0D\",amī:\"0T041D0H\",amı:\"1F4C\",\"amı \":\"1F18\",amıy:\"1F1K\",amıyo:\"1F23\",amız:\"1F10\",amō:\"0T02\",amų:\"1B0E\",amž:\"0U041B0B\",\"an'\":\"0M111F0D1Q0F\",\"an't\":\"0M1T\",\"an't \":\"0M2H\",\"an-\":\"03500B0H0D020S1Z1402\",\"an-n\":\"032G\",\"an-nn\":\"0331\",anaa:\"010F0R030T08110P\",anaan:\"010G0R020T09110P\",anac:\"0N050S0X0V061A041F0H\",anach:\"0N080S3S1A06\",anag:\"03040D090M08\",anah:\"0B0A0D0B0O021F0C\",anaho:\"0D0I0O02\",anai:\"0S0V0T0311021B0J1D0K\",\"anak \":\"03020B4M0D100V0R1414\",\"anak-\":\"0B1E\",\"anam \":\"0B0B0T0D1N2J\",anamh:\"0SCK\",\"anan \":\"03080B2W0D100Z021004110M1F081N0H1O0J1Q0Y\",anann:\"0B080S3S1102\",anap:\"0B060D0P0L03140B1A06\",\"anap \":\"0D14\",anau:\"0B070T041B1K\",\"anau \":\"0B0E1B32\",anay:\"03040D0D1F02\",\"anay \":\"03060D0N\",\"anc \":\"0L0B0T0T\",anca:\"0B0J0L020O0C0P0E0Q1415051F0J1O0R\",\"ance \":\"0L4L0M1F0N070O040P0D0Q020R020U090Z091O0A\",ances:\"0L100M060O070P0A0Q1P\",ancez:\"152B\",anch:\"0L0W0M030N0J0O0B0P040Q2R0T041Q07\",anche:\"0L1A0N0F0P020Q2H\",ancia:\"0M020O1B0P020Q0R140N\",anciá:\"1412\",ancor:\"0Q32\",ancou:\"0P020U24\",ancov:\"0U040Y11\",ancus:\"0V1I1A1N\",ancé:\"0L060O12\",ancés:\"0O1D\",ancê:\"0P1G\",ancês:\"0P1U\",ancú:\"0Y32\",ancúz:\"0Y3T\",ancū:\"1B1Q\",ancūz:\"1B3L\",andaa:\"0D0B0R2E1106\",andag:\"011W0R0D0Z0B12041B0C\",andat:\"030504350L020Q5G0T021508\",anden:\"0L020N1C0R1P0Z2T100J120E1B2C1O03\",andet:\"0N020Z1A100H120S\",andh:\"0Z0K\",andhe:\"0Z0N\",\"andi \":\"030304BB0B0F0L050Q090T0C13721O07\",andia:\"0B0D0O030Q471A02\",andie:\"0Q021B4K\",andik:\"042Z\",andis:\"0L0D1B031C1V1O0L\",andl:\"0M060N050Z0R100K120U13091A02\",andle:\"0M070N020Z0L120I\",andli:\"0Z0A1005120C\",\"ando \":\"0OBE0PBZ0Q870T1Y1B0H1O1X\",andrī:\"1D2K\",ands:\"0L0C0M0J0N080R0O0Y080Z14100N120F130T\",\"ands \":\"0L0H0M0M0N030R0C0Z0A100B12041310\",andt:\"0N080R040Z1J\",\"andt \":\"0N030R030Z1T\",andus:\"0T061C2G\",andy:\"0M020N021A041B0M1N8U\",\"andy \":\"0M030N031A021N1L\",andyg:\"1N6I\",andyr:\"1N34\",andé:\"0L0Q0O04\",\"andé \":\"0L16\",\"andą \":\"1B1F\",andı:\"1F36\",\"andı \":\"1F1T\",andır:\"1F17\",andō:\"0T0V\",\"andō \":\"0T0X\",aneh:\"03030B0C0D061Q3D\",anei:\"0P0L0T0211041B02\",aneir:\"0P0P\",\"anel \":\"0P031P1A\",\"anem \":\"03030T1B0U030V0M0Y0H140P1A091C1A\",anema:\"1C1L\",\"anen \":\"03280N040R0H0Z0B100A110C120D\",anep:\"0U070Y181F03\",anepr:\"0U090Y1J\",aner:\"03030N090O0H0Q080T0Y0Z0S100E120I\",\"aner \":\"0N0B0Z0M1008120B\",anere:\"0Q080T100Z08\",anez:\"030A042R1402\",aneze:\"044Q\",anfa:\"0B040N0B0S1L10021O02\",anfai:\"0S49\",\"ang-\":\"0B140D0I\",\"ang-a\":\"0D0F\",angal:\"0D0S1O02\",angan:\"04530BBC0D4R13111O03\",angar:\"0D06132J\",angat:\"0B810D021104\",\"ange \":\"0L1Z0M0V0N1Q0R0E0Z5212311O04\",angen:\"0L0A0N2P0Q030R1B0Z091004120D\",anger:\"0L430M0I0N0E0Q0D0R0X0T070Z0B1213\",anges:\"010S0L0E0M040N0H0R031B03\",angg:\"0B2R0D1K1Q0G\",angga:\"0B2I0D23\",anggi:\"0B0W0D0J\",anggu:\"0B1S\",angh:\"0D0C\",angha:\"0D0I\",\"angi \":\"041V0B0L0D030Q04130F1B0R1F2F\",angia:\"0Q2C1B08\",angie:\"1A1X\",angin:\"0B0F0D0L0M05130F1B0A\",angit:\"0B0V0D0H0T021108\",angk:\"0B310D0N\",angka:\"0B4W0D0R\",angla:\"03020B0F0L1K0Q0B1O161Q0I\",angli:\"032P0T180U1N0Y2014041A091B1F1D1R1O03\",angn:\"0B0S0Z021Q09\",angny:\"0B1K\",angol:\"0Q04141B\",angr:\"0M0A0N020O0A0P020R0L0Z0710021209\",angri:\"0N020R0S0Z03\",angt:\"03020N050R060Z0E120S130S1Q09\",\"angt \":\"03040N050R090Z0F120R131N\",angua:\"0M0U\",angue:\"03040L270P0C0Q050T03\",angun:\"0B1T0D0B\",angur:\"044X1314\",angy:\"0D0G1407\",angya:\"0D0T1404\",angé:\"0L0W\",\"angé \":\"0L1D\",angļ:\"1D0U\",angļu:\"1D25\",anha:\"0N020P1D111A1Q06\",\"anha \":\"0P0U111Y\",anhe:\"0P0C1114\",anhem:\"112M\",anho:\"0P130R030Z02110A\",anhã:\"0P1X\",\"anhã \":\"0P2D\",anije:\"0V1P\",anila:\"0D0U110U\",anima:\"0L0Q0M0A0O0R0P0R0Q0Q0T1O0V0O150L1F031O03\",animi:\"0D040T091B1O\",anini:\"0D0T1A05\",anir:\"044Q0V0A130G\",anira:\"044E0D020V0O\",\"anis \":\"0B0D0T1S1C171O07\",aniw:\"03020D07\",anja:\"0B160O090P070V18110C1509\",\"anja \":\"0B0F0O080P050V2S11041505\",anjan:\"0B1P1105\",anje:\"04JO0O0H0R080V2Z150I\",\"anje \":\"04RD0R0A0V6H\",anji:\"0B170V06\",anjin:\"0B1M\",anjo:\"0P031O2G\",\"anjo \":\"0P021O46\",anju:\"0B0G0V0L\",ankaŭ:\"1O21\",\"anke \":\"04890N0M0Z0511031B031O09\",anki:\"0112110T13061A051B0J1F071O05\",ankie:\"0115110B1A02\",anko:\"0N030R070U020Z0A1004110T120B14061B0N1O24\",ankor:\"11031O2R\",ankr:\"0N050R090Z0C100512081B02\",ankri:\"0R0C0Z0D10041208\",anks:\"0M060R051B1D\",ankst:\"1B1E\",anksč:\"1B1G\",anku:\"030B04150B230N020V0411071A051B021O02\",\"anku \":\"0B420U020V0A1A08\",anla:\"0B0K0D030N040Z0211081F5Z1N1Z\",anlam:\"1F1O\",anlar:\"1F451N29\",anle:\"10091209130J\",anli:\"0Z07100D1103120R\",anlig:\"0Z09100D120R\",anlı:\"1F23\",anma:\"03050D030Z08100311031F261N21\",anmu:\"0B2M1104\",\"anmu \":\"0B53\",anmı:\"1F1D\",anmıy:\"1F1G\",annac:\"0R050S5P\",annai:\"0S5G\",annak:\"142V\",annan:\"100H110O130Z\",annar:\"0Q02100D131X\",annað:\"131W\",annee:\"011Z0R1Z110G\",annen:\"0N060R0S100G110812181F07\",annet:\"110U120S\",annh:\"120G\",annhe:\"120G\",annin:\"0M0L0R06100B11121204\",anno:\"0L060M0E0QA60T2N1007110I\",\"anno \":\"0QA20T10\",annos:\"0T1M1103\",anns:\"0N14100A120D130Z\",annst:\"0N1O130J\",annt:\"0N0V1308\",annu:\"0L050Q080T0C1118\",annut:\"112D\",anny:\"0B6C141U1A05\",annya:\"0BBU\",annyi:\"141X\",anné:\"0L0Y\",année:\"0L1M\",anob:\"1P4F1Q0F\",\"anob \":\"1P3R\",anobs:\"1P17\",anof:\"0Q041P0T\",anoi:\"0Q020S24112P\",\"anoi \":\"113L\",anois:\"0S8E110J\",anoj:\"11091B071O1V\",\"anoj \":\"1O2Q\",anok:\"0D03110214091B021N1I\",\"anok \":\"0D0614081N1O\",anol:\"14061P2B\",\"anol \":\"1P2A\",anom:\"0V04110I140E1B0E1P3C\",\"anom \":\"0V09140F1P33\",\"anon \":\"0L07110C1O1E1P0L\",anong:\"0D1Q\",anoo:\"0D0E110J\",anoon:\"0D0I\",\"anos \":\"0O1T0P2W0T071B051D1R1O02\",anot:\"03030M0G0O020P020Q09110X1B05\",anoth:\"0M0M\",anp:\"0B0J1003110B1Q0M\",anpa:\"0B0Z0R0210031106\",\"anpa \":\"0B1Q1109\",anq:\"0L0M0O080P060Q030T021Q07\",anqu:\"0L110O0D0P080Q050T041Q0A\",anr:\"0N0311021F08\",\"ansa \":\"030J045R0D0E1007118215061A021F07\",ansan:\"0D0H0O02110B\",anseo:\"0S92\",anses:\"0D0U\",anset:\"0Z03120C\",\"ansi \":\"034D0B070T021103\",ansie:\"010G\",ansin:\"0D0F0S4I1102\",ansk:\"0V0P0Y0X0Z2S102Q1147123W130H\",\"ansk \":\"0Z241008121E\",anska:\"101X119U130H\",anske:\"0Z14100I121Y\",anskj:\"120I\",anss:\"114D\",anssa:\"118Z\",ansu:\"0T071N2M\",ansuz:\"1N3L\",answ:\"0M0F\",answe:\"0M0L\",ansä:\"1P0Y\",ansän:\"1P14\",ansı:\"1F25\",ansız:\"1F2F\",antai:\"0B1G0L06111N1B0C\",antaŭ:\"1O4N\",anted:\"0M230Z02\",antee:\"113Q\",antes:\"0L0U0N030O3H0P2M0T0M\",\"anti \":\"03030B1B0Q2E0T0H110C1B0N1O08\",antik:\"0B1B0D040N0314041F041O0A\",antoj:\"1O1Q\",ants:\"0L2L0M130R030Z021C1V\",\"ants \":\"0L4D0M1I0R02\",antsu:\"1C4C\",\"antu \":\"049O0B1T0U031B151O02\",antum:\"0B0F0T1C1104\",antur:\"0T1C\",antw:\"010N0N0R0R11\",antwo:\"010P0N1A0R1D\",\"anu \":\"0304042V0T0I0U0G0V0N0Y0A1A0D1B021D1U\",anud:\"1C36\",\"anud \":\"1C7M\",anul:\"0T09143A151P1O05\",anuln:\"140Y\",anum:\"0D040T0X131N1507\",\"anum \":\"0T0Z133G\",anun:\"03020D060O030P020T03140615051F02\",\"anus \":\"0T1F1B0M\",anut:\"030E1131\",\"anut \":\"030R1177\",anva:\"010H0R0911041Q0D\",anvä:\"100T\",använ:\"100T\",anw:\"030T040C0N040R031Q0B\",\"any \":\"0M2R0U0514061A241N48\",anya:\"030704C60BB30D2214151F0E1Q0U\",\"anya \":\"030604IH0BDX0D1C140A1F07\",anyak:\"0B6O\",anyan:\"03040D2E1407\",anye:\"048O1408\",\"anye \":\"04CX\",anyi:\"042O0B0J1404\",\"anyi \":\"043C0B0V1403\",anym:\"0M0J1A071B021N1P\",anymo:\"0M0Q\",anyn:\"1N2A\",anyny:\"1N1G\",anyo:\"042K0B060D060M0I140H1F0C\",anyon:\"0M0P\",anyp:\"1N1A\",\"anyp \":\"1N1N\",anyt:\"0M1414031B02\",anyth:\"0M1H\",anyu:\"044X140G\",\"anyu \":\"046A1407\",anyñ:\"1N18\",\"anyñ \":\"1N1B\",anyň:\"1N26\",\"anyň \":\"1N2A\",anyş:\"1N20\",anz:\"0306042G0N1J0O0U0Q391F031O02\",\"anz \":\"0N0X\",anza:\"030404290O170Q3M1F03\",\"anza \":\"043O0O0L0Q32\",anze:\"042Z0N160Q0B0R03\",\"anze \":\"04590N0R0Q0B\",anzo:\"0N020Q0V1O03\",aná:\"0O020P020U0E0Y0T140V\",anæ:\"0T02\",anç:\"0L0V0P2B1F091N0R\",ança:\"0L1F0P2K1N0G\",\"ança \":\"0L020P1O\",ançai:\"0L2D\",anças:\"0P10\",ané:\"0L030O020U080Y0O1404\",\"ané \":\"0U0C0Y0X\",aní:\"0O030U0A0Y0O140C\",anó:\"0O0413061A05\",aný:\"0U0G0Y0T1N1P\",\"aný \":\"0U0O0Y1B\",anýa:\"1N2D\",anýar:\"1N2A\",anā:\"1D2B\",anās:\"1D13\",\"anās \":\"1D2T\",ană:\"1512\",\"ană \":\"151R\",aną:\"1A071B0C\",anĉ:\"1O0E\",anč:\"0U070Y0B1B0M1D0H\",anči:\"0U051B10\",anē:\"0T031D0O\",anę:\"1A061B18\",anęs:\"1B1Z\",\"anęs \":\"1B43\",aně:\"0U0H\",anĝ:\"1O2C\",anĝa:\"1O0Y\",anĝi:\"1O1E\",\"anĝi \":\"1O1A\",anĝo:\"1O0S\",anī:\"1D11\",anı:\"1FAY\",\"anı \":\"1F1Y\",anım:\"1F1C\",anın:\"1F3C\",\"anın \":\"1F2M\",anır:\"1F25\",anırı:\"1F27\",anıy:\"1F21\",anıyo:\"1F2L\",anž:\"0U0B0Y0C\",anț:\"151E\",aob:\"0V05\",aoi:\"0S7J\",\"aoi \":\"0S2A\",aoin:\"0S3G\",\"aoin \":\"0S5X\",aoine:\"0S6E\",aoir:\"0S1R\",aoirs:\"0S65\",aois:\"0S11\",\"aois \":\"0S3S\",aoks:\"1C0K\",\"aoks \":\"1C1E\",aol:\"0S0N1102\",\"aol \":\"0S0O\",aon:\"0D0M0P050S5D0T0B1O02\",\"aon \":\"0D0J0S491O02\",aong:\"0D0M\",\"aong \":\"0D14\",aonn:\"0S0M\",aonna:\"0S2K\",aont:\"0S16\",aonta:\"0S4I\",aor:\"0P020S1514021502\",\"aor \":\"0S0X\",\"aos \":\"0O040P0T\",aot:\"1C0R\",aota:\"1C0S\",aoz:\"0Y0Z\",aoza:\"0Y1P\",aozaj:\"0Y24\",\"apa-\":\"0B0Q\",\"apa-a\":\"0B1B\",apaa:\"0D03111F\",apab:\"0D020L0C0M0215091F141O0R\",apabi:\"150B1F1J\",apabl:\"0L0L0M021O1H\",apac:\"03080L040O090P050Q071A021F1K\",apaca:\"1F25\",apag:\"0D0Y0O090P061503\",\"apag \":\"0D0O\",apah:\"0D04111R\",apaht:\"1147\",apai:\"0B090D020P0D0S0Q110C1B03\",apak:\"0B580D0R\",apaka:\"0B9S0D16\",apal:\"0B080D0A0P020U02110G1A061F09\",apang:\"0D0I\",apani:\"0D030N0E113C1C1V1O0B\",apans:\"0D070R0I0V0I0Z0F100D1102120E1318\",apap:\"0B0P0D06\",apapu:\"0B1E\",apas:\"0D0B0O050P02110L140A1B0L1O03\",\"apat \":\"0B5H0D2914041F02\",apata:\"0D0H11031F02\",apati:\"0D0T\",apatk:\"0B1I1102\",apay:\"0D091F03\",apb:\"14041Q0S\",apc:\"0U030Y0A140F1Q04\",apcso:\"1414\",apd:\"1B021N0X\",apdy:\"1N14\",\"ape \":\"0D090L050M060T0312081511\",\"apen \":\"0R140U041006\",apena:\"0O0C0P170Q021O0C\",apet:\"0O040P050Q0E0T020V031103120H1B021O02\",\"apet \":\"120F\",apev:\"0Q11\",apf:\"040N0N03\",apfu:\"041O\",apg:\"1B0E\",aph:\"0L050M030T0J14041N091Q07\",aphi:\"0L050T0X\",aphic:\"0T0W\",\"api \":\"0B2E11021309140C1O02\",apid:\"0L0I0P070Q090T0H150B1O0Z\",apide:\"0L0T0T0C1O1B\",apie:\"0L090N060R080T0R0Y0A1A0D1B3Z\",\"apie \":\"1A061B7Y\",apin:\"0D090L090Q02110A14021B02\",apir:\"0Q0G0V060Z0D1205\",apisa:\"0V1V1A0Z\",\"apit \":\"0D0Q0T0A\",apj:\"140N\",\"apja \":\"140Y\",apk:\"0B0914031A041B0A1F08\",apka:\"0B0G0R031B081F09\",aplar:\"1F0N1N1D\",apm:\"1B051D0X1F6B1N0E1Q04\",apma:\"1B021F6Y1N0J\",apmak:\"1F30\",apmam:\"1F1E\",apmas:\"1F18\",apmay:\"1F25\",apn:\"0U0314061B071D17\",apni:\"14091D1E\",apnis:\"1D2Y\",apom:\"0U1C14091A0S\",apomn:\"0U121A12\",\"apon \":\"0D180L0O140C1F0A1O0D\",apons:\"0M020U0J0Y12\",aport:\"0O050P040Q0T110D150D1A051F041O09\",\"apos \":\"0D141407\",apot:\"0R080U041002141D\",appa:\"0L0Y0M020N020Q0V0R070T0D0Z071016110R120B140E\",\"appa \":\"0L030Q02100K1207\",appar:\"0L1G0M030N030Q0L0R090T0D0Z091005\",appe:\"011A0L230M1O0N060Q180R1O0T0M0Z0J100A110D120L\",\"appe \":\"010K0L060N030R020Z02\",appel:\"010G0L340Q090R1H0T0L0Z09110O1206\",appen:\"0M1R0N030Q0S0R0H0Z04100211041206\",appo:\"0L0P0M070Q1K0R0210071109\",appon:\"0Q13\",appor:\"0L160Q070R020Z0210071104\",appr:\"0L2E0M0A0Q0J0T081002\",appre:\"0L1V0M050Q0D0T031002\",appy:\"0M0P\",\"appy \":\"0M0Y\",apra:\"0Q020U030V0W140D1A1H1B1K1D0K1F03\",apras:\"1A031B28\",aprav:\"0U030V29\",apraw:\"1A28\",apre:\"0O1H0P1V0Q040V0B1509\",apren:\"0O1N0P1S\",aprot:\"0U021D3G\",aprè:\"0L1H\",après:\"0L2I\",aprā:\"1D0X\",aprāt:\"1D2F\",apsa:\"0T060U0Q1B061F03\",apse:\"11151C151F02\",apsed:\"1C2D\",apsi:\"11121B16\",apst:\"1B041D0U\",apte:\"0L020R081003110312091521\",aptı:\"1F3M\",\"aptı \":\"1F1C\",aptığ:\"1F20\",apud:\"0T111O0F\",\"apud \":\"0T131O0R\",apun:\"030C0B0X0D0J0O050V0411031405\",\"apun \":\"030A0B1R\",apunt:\"0D0P0O06\",apy:\"03031A0B1B051N26\",apyn:\"1N1L\",apyny:\"1N17\",apà:\"0Q03\",apá:\"0O060S0K0U021416\",apám:\"141C\",\"apám \":\"1415\",apã:\"0P09\",apä:\"110C1C0H1P0K\",apé:\"0L060P061403\",apí:\"0U090Y181409\",apís:\"0Y1I\",apísa:\"0Y1W\",apó:\"0O0E0P081403\",apü:\"1P61\",apük:\"1P7J\",\"apük \":\"1P1I\",apüki:\"1P6W\",apā:\"1D0Q\",apă:\"1510\",apı:\"1F2M\",apıy:\"1F1H\",apıyo:\"1F1F\",apņ:\"1D1X\",apņi:\"1D0X\",\"apņi \":\"1D2F\",apņo:\"1D18\",apņoj:\"1D21\",\"aq \":\"030U1QJ0\",aql:\"031T1Q0H\",\"aql-\":\"031V\",\"aql-i\":\"032S\",aqm:\"1Q1N\",aqu:\"03090L100O2R0P5A0T261Q0N\",aqua:\"0L030T2H\",\"aqua \":\"0T13\",aquam:\"0T0T\",aque:\"0L1G0O1A0P270T13\",\"aque \":\"0L1M0O050P060T14\",aquel:\"0L0G0O160P2B\",aqui:\"0L030O030P4C0T0E\",\"aqui \":\"0P4I\",aquil:\"0L030O020P0X0T0C\",aquí:\"0O2V\",\"aquí \":\"0O3Q\",\"ar'\":\"1Q2H\",\"ar'a\":\"1Q4J\",\"ar'a'\":\"1Q7P\",\"ar-\":\"030V0B0J0P0L\",\"ar-b\":\"0B0Z\",\"ar-be\":\"0B1X\",araa:\"0B0A0D070R04110F\",araba:\"045L0O021F2X1O03\",arada:\"0D020O080P051B0B1F061N4P\",araf:\"03021F10\",arafı:\"1F15\",arah:\"041K0B1H0D021102\",\"arah \":\"0B2J\",\"arak \":\"14061F36\",\"aral \":\"0D0X\",\"aram \":\"030A0B090P370T060V0H1A031D211F08\",arami:\"0D2L\",aramu:\"044K0B07\",\"aran \":\"0B2S0D0G0N0O0O080V0B100211091F041O09\",arand:\"0O050P060Q080T02101N1B03\",arang:\"042Z0B5C0D1I1402\",arans:\"045R1104\",arao:\"0T0R0V051O02\",\"arap \":\"0B1E0D0R1F0B1N0H\",arapa:\"0B0S0D0H\",arapy:\"1N19\",arar:\"043V0D030O0I0P0K0Q190T05100F130D1F1T1N0X1O04\",\"arar \":\"0O0E0P0M100E130O1F1E\",arare:\"0Q160T041002\",\"aras \":\"0O0D0P050T0311191B0U1O2A\",arash:\"0474\",arası:\"1F1E\",arati:\"0D0I0L080M070Q030T08\",araw:\"03020D1H\",\"araw \":\"03020D1Y\",arawa:\"0D0H\",aray:\"03030D021F0Y\",araş:\"1F061N2I\",araš:\"0V061B0X\",arbei:\"0N3R0R04121N\",arbej:\"0Z2S\",arbet:\"101Q\",arbh:\"0S0V\",arbor:\"0T111O05\",\"arbu \":\"1B0Z1D25\",arbą:\"1B0U\",\"arbą \":\"1B1S\",arci:\"0O040P020Q0O0T060V0315051A06\",arcu:\"0T0P1505\",\"arda \":\"030A0L090O040P040Q0E1F151N161O04\",ardan:\"0L030Q090T041F181N101O05\",\"arde \":\"0L1B0O1O0P100R0O15051O07\",arder:\"0L1A0M040R080Z021002\",ardeş:\"1F1W\",ardie:\"01100L04\",ardig:\"010I0R0P\",ardin:\"0D0H0L0P0M020O030P020Q091B03\",ardl:\"010K0M04\",ardlo:\"010L0R02\",ardt:\"120B\",ardu:\"0T0715031B0Z1O08\",arduo:\"1B1N\",ardy:\"1N4M\",\"ardy \":\"1A021N3R\",ardz:\"1A42\",ardzo:\"1A5C\",ardı:\"1F6R\",\"ardı \":\"1F2Y\",ardım:\"1F4U\",ardır:\"1F19\",area:\"0M070O0C0T04153J\",\"area \":\"0M070O0B154G\",areb:\"0Q0Y0T021O02\",arebb:\"0Q0Y\",arec:\"0O2I0P2C0Q04150A\",arece:\"0O2D0P2A1508\",ared:\"03090M0N0O070P060Z0B1O02\",\"ared \":\"030F0M0V0O07\",arede:\"0O020P080Z0E\",areh:\"0D0A\",areho:\"0D0G\",arei:\"0L0C0P1D0Q0F11061B0T1D0S\",\"arei \":\"0P1J0Q0F1B0T\",areiz:\"1D21\",\"arem \":\"030J0P0D0T080U020V061A041C3O\",\"aren'\":\"0M0X\",arena:\"0B3U0O050T04\",arent:\"030B0L1E0M0R0O0A0P0B0Q080R020T18\",arer:\"0D020L0D0N020O020Q060R030T060Z0U1006120V\",\"arer \":\"0L0M0N030Z0N1002120J\",\"ares \":\"0L060M040N030O0Y0P120R070T08\",\"aret \":\"03020R020T0K0U020Z0A1008110212091F1J\",\"arf \":\"0N0K131K\",arfa:\"0L0B0Q020S131007\",arfai:\"0L0J0S2K\",arfö:\"102I\",arför:\"102I\",\"arg \":\"0S0T100D\",\"arga \":\"03040B1P0O0D0P03130S\",argen:\"0L2O0O050P040Q0J0T0K1102\",argh:\"1Q3M\",argo:\"0L020O0M0P040Q060T031B04\",arha:\"110W14051Q5R\",\"arha'\":\"1Q9O\",arhe:\"0R0L\",ariae:\"0T1F\",ariam:\"0O040P0A0Q030T271B06\",ariau:\"1B1K\",arih:\"041Z0D020V031F09\",arij:\"0R090V1T1B591D50\",arija:\"0V2V1B7X1DAW\",arijo:\"0V071B1O\",\"arik \":\"0B1I\",ariko:\"046A1102\",aril:\"0D0O0M020O07110Z1503\",arili:\"0D0S\",\"arin \":\"030C0B2K0D070L030N0C0R05113N130B\",aring:\"0B0A0D0E0M0Q0R0C0Z061005120D\",arini:\"0D0F1B03\",arinn:\"132D\",arip:\"0B120O021F09\",aripa:\"0B23\",arir:\"043R0D030Q021402\",arira:\"043V\",\"arit \":\"030X0T05100S1108140D\",ariu:\"0T1B150B1A021B08\",ariy:\"042O1F021Q07\",ariya:\"042Z\",arj:\"0O03100M110W140E1C0N1F03\",arje:\"0O04100U\",\"arje \":\"100V\",arjo:\"1117\",arju:\"14031C0L\",arkad:\"10031F3E\",arkan:\"0B3G1F02\",\"arke \":\"0D0I0N041B0D\",arken:\"0N070R070Z08100L1209130B1F0F\",arkoi:\"112C\",arkı:\"1F18\",\"arla \":\"0L020O0I0Q1O0S6E1F14\",arlar:\"0Q1Y1F0S1N3T\",\"arle \":\"0L1O0O0S0Q0J\",arleg:\"1326\",arler:\"0L2W0Q04\",arlig:\"0Z0J100G120H\",\"arlo \":\"0O140Q2N\",arly:\"0M0L1N0U\",\"arly \":\"0M0T\",\"arm \":\"010H0M0B0N0B0R0J0Z0810081208\",armas:\"0O040P04110Y1C6H1O05\",\"arme \":\"0L0C0N070O240R090Z061204150F1O09\",\"armi \":\"030Q0L080Q1J1104\",armt:\"0R020Z091008120B\",army:\"0M021N2C\",\"army \":\"0M031N2R\",\"arn \":\"0M0I0N050Z0Q101B12161309\",\"arna \":\"0B1G0R080V06101V120J131D1405150R1A04\",\"arno \":\"0V20\",arny:\"0B101A081B03\",arnya:\"0B20\",arod:\"0U0J0V050Y1A140R1A0B1B0P\",aroj:\"1B021O1M\",\"aroj \":\"1O1Y\",arojn:\"1O1B\",arok:\"1102141T\",\"arok \":\"141R\",arola:\"0Q0G1O2B\",aroli:\"1O2I\",\"arom \":\"010S0R4D141A\",\"aron \":\"0O3M0T0A110214031O1M\",aroo:\"010H0D08\",aroor:\"010I\",arot:\"0L020P0K0Q020T031B03\",arou:\"0M0M0P090U02\",aroun:\"0M0V\",arq:\"0L0A0O0A0P0D1Q04\",\"arr \":\"0S3R1005\",\"arra \":\"030B0O0D0P040Q050T051413\",arrab:\"0Q0Q\",arrai:\"0SBR\",arrie:\"0M0P0N020O040Q0J0Z021402\",arriv:\"0L4B0M0H0Q1J0R02\",arro:\"0L080M040O0V0P1W0Q071402\",\"arro \":\"0O0C0P1V\",arrê:\"0L1H\",arrêt:\"0L2J\",arsc:\"0N040R0O\",arsch:\"0N060R0W\",arse:\"0O1J0Q060R040Z031B02\",\"arse \":\"0O200R03\",arsi:\"03030Q0Z110C1B0M\",\"arsi \":\"03030Q0Z11031B0N\",arst:\"0N0A0R04130J1A091B0A1C11\",arsy:\"1N1L\",arsyň:\"1N1D\",arsz:\"14181A0J\",\"arsz \":\"141A\",artea:\"0L021525\",arted:\"0M0Y0Q050Z02\",arten:\"0L060N1N0Q050R0A0Z021002110R12061O0E\",artha:\"0S3J0T041404\",arthá:\"0S3J\",\"arti \":\"0B0F0L0N0Q111B0N1F09\",artie:\"0L1J0M020N020Q060R020Z02150K\",artir:\"0L1B0O0B0P0F0Q0C\",\"arto \":\"0D0K0O0N0P0Z0Q031A071B0C1O0P\",arty:\"010M0M0I0N050U031A0I\",\"arty \":\"0M0P0N080U041A0F\",artyt:\"010G\",artą:\"1A021B14\",\"artą \":\"1A031B2B\",artı:\"1F1Z\",artık:\"1F1N\",aruh:\"041O0B0A\",aruk:\"04421104\",aruka:\"04531103\",arum:\"03030B030N1W0T25\",\"arum \":\"03030N350T27\",arun:\"03050B090D0C0T031406150C1A03\",aruno:\"0D0J\",arus:\"030N04150B4L0T0D11041A041B091F021O05\",\"arus \":\"0B7H0T0E1B0I1F021O09\",arusn:\"0B1B\",arvad:\"1C1H\",arvan:\"011B0R0611041C3E\",arve:\"0L060M020Q020Z0K1106120613051B03\",arvi:\"0L050Q0I0T05112W\",arvit:\"115U\",arvo:\"0R040T03111A\",arwa:\"0305042D\",arway:\"0435\",\"ary'\":\"0M0H0R041F71\",\"ary'n\":\"1F5B\",\"ary's\":\"0M0O0R06\",\"ary'y\":\"1F41\",arya:\"04220D021108\",aryam:\"042S\",aryk:\"1B0U1N0D\",aryl:\"110B1C0K\",arym:\"1B021N2H\",\"arym \":\"1A021N17\",arymy:\"1N1I\",aryn:\"110N14071NBB\",\"aryn \":\"111M1N6R\",aryna:\"1A021N19\",aryny:\"1N7Q\",aryo:\"0D08\",aryp:\"1N0V\",arys:\"0N020Z0N100B11021A041B181N14\",\"arys \":\"0N030Z0S100B1B191N1I\",aryt:\"140A1B4B\",aryti:\"1B7F\",aryñ:\"1N1O\",\"aryñ \":\"1N2A\",aryň:\"1N2L\",\"aryň \":\"1N2O\",arà:\"0Q10\",\"arà \":\"0Q1M\",ará:\"0O1M0P150S0T0U0G0Y0K141S\",\"ará \":\"0O1L0P170U070Y08\",arán:\"0O0E0S0M1403\",\"arán \":\"0O0H0S2K\",arát:\"0U020Y0E1431\",aráto:\"141B\",arã:\"0P09\",aræ:\"0T02\",arç:\"0L0D0P041F0B\",aré:\"0L0B0O120U061402\",\"aré \":\"0L0B0O1L0U07\",arê:\"0P03\",arí:\"0O2D0P030S0I0Y0I130I1405\",aría:\"0O3E0P02\",\"aría \":\"0O40\",arís:\"0O070S0M1307\",\"arís \":\"0O090S2K\",arð:\"1326\",arðu:\"131B\",\"arðu \":\"132F\",arò:\"0Q0O\",\"arò \":\"0Q12\",aró:\"0O0614041A0D\",arü:\"0N06\",arý:\"0U0B0Y0A1N13\",arýa:\"1N1J\",arýar:\"1N1I\",arā:\"1D1Q\",ară:\"152W\",\"ară \":\"153X\",arą:\"1A021B0K\",\"arą \":\"1A021B0V\",arē:\"1D2Z\",arēj:\"1D13\",arēt:\"1D2I\",arētu:\"1D5L\",arė:\"1B1E\",\"arė \":\"1B1S\",arĝ:\"1O06\",arī:\"0T0D1D8A\",\"arī \":\"1D2I\",arīg:\"1D1A\",arīj:\"1D1R\",arīja:\"1D1W\",arīji:\"1D1M\",arīt:\"1D4H\",\"arīt \":\"1D9H\",arį:\"1B0C\",arı:\"1FFI\",\"arı \":\"1F64\",arım:\"1F2T\",\"arım \":\"1F21\",arımı:\"1F1F\",arın:\"1F7O\",\"arın \":\"1F4Y\",arını:\"1F3X\",arıy:\"1F0X\",arŝ:\"1O03\",arş:\"1F1B1N0C\",arşı:\"1F1G\",arš:\"0U0B0Y0D1B0J1D1A\",aršo:\"1D0U\",\"aršo \":\"1D21\",arž:\"1B08\",\"as'\":\"1F021Q06\",\"as-\":\"033X0B030L1B0P031502\",\"as-d\":\"031W\",\"as-d-\":\"0339\",\"as-t\":\"030X0L25\",\"as-tu\":\"0L3M\",asaa:\"0B0C0D0B\",asaan:\"0B0O0D0J\",asab:\"03040D0I0O03140C1F09\",asabi:\"0D0W\",asado:\"0D020O1I0P0H1O02\",asag:\"0D06\",asah:\"04190B040D09\",asako:\"1B1O\",asaky:\"0D0S1B51\",asakė:\"1B2U\",asal:\"0B1N0D0T0P03110314031F06\",\"asal \":\"0B0P0D0H0P031F04\",asala:\"0B2F0D0G11021F03\",asali:\"0D0G\",asam:\"0D0N0O050P0814021A061B031F031Q07\",asama:\"03020D14\",\"asan \":\"0B1S0D0V0O040V0E110414071F03\",asara:\"0B0F0D0J0O020P0211031B08\",asau:\"1B171D1L\",asaul:\"1B2F1D3U\",asaw:\"030P0D0B\",asawa:\"031A0D0J\",asay:\"03020D0E1F0A1Q09\",asaya:\"0D0N1F04\",asb:\"03021P0D1Q0O\",\"asc \":\"0S0Z\",asca:\"0O060P030Q050S0O0T05\",asce:\"0L030O050P0F0Q0B0T0R\",asch:\"0N170Q0410021Q08\",asci:\"0L030M020O040P0A0Q2D0R020T0I0V020Z0210021O02\",ascia:\"0Q1Q\",asco:\"0O070P030Q1L\",ascol:\"0Q0S\",ască:\"152O\",\"ască \":\"153F\",asd:\"030214071B0H1Q0N\",ased:\"03060M0A1C0Y\",\"ased \":\"03070M0E1C2D\",aseg:\"03AH0O07\",asegz:\"03JT\",asel:\"0312110315061C0N\",\"asen \":\"03470N060Z0210021109\",ases:\"03020L0E0M040O0R0P0A\",asf:\"030B0Q06\",asg:\"0307\",asha:\"04HB0M0214021Q0C\",\"asha \":\"04AL\",ashak:\"04FU\",ashe:\"041Z0M07\",\"ashe \":\"043I\",ashik:\"042Z\",ashit:\"043I\",asho:\"04E1\",ashob:\"04LK\",ashu:\"042D\",asia:\"0B0B0M020O1D0P040Q040T080Z02112F\",asiad:\"0O1P0P04\",asid:\"03051B0T1C1R\",\"asid \":\"1C4C\",\"asie \":\"011J0L020N030R020Y0F1A0T\",asih:\"03040B32\",\"asih \":\"0B5L\",asik:\"0B080D0311021B101C0S1F021O02\",asika:\"0B0B0D031B151C1S1O02\",\"asil \":\"0B1A0D030O080P0H0U07\",asili:\"03030N050Q040T0I0Z041002110B1B1P\",\"asin \":\"030F0D090L0E112S1C6K\",asio:\"010J0B070L080M020O060Q060T03110S\",asion:\"010K0B0D0L0E0M020O050Q05\",asir:\"03030D031B1K1Q0H\",asiti:\"1B1G\",asiu:\"0B0K1B06\",asj:\"0B03120Y1C0S1Q08\",asja:\"1C0R1Q0E\",asje:\"0R02120A\",asjo:\"1226\",asjon:\"1226\",\"ask \":\"0M0P0Z04100212041B03\",askam:\"1B1K\",\"aske \":\"0N020Z0I110512091C22\",asked:\"0M1H0Z04\",asker:\"03030R020Z0E120D1F09\",asket:\"0D020L020M050N020Q040R020Z0B110G120C1F05\",aski:\"03030M040Z091005110C120L1A021B031O0I\",askin:\"0M060Z0B10051106120L1A02\",asku:\"03030B05110J1A021B0X\",asla:\"03040V0414071B0F1F1Q1N1B1Q09\",\"asla \":\"1F26\",aslah:\"1N1D1Q0A\",\"asn'\":\"0M1S\",\"asn't\":\"0M2G\",asni:\"03060U020V12140I\",asno:\"0U040V0Z1A04\",\"asno \":\"0V1Y1A03\",\"aso \":\"041O0D0L0O110P0F0Q0L0U0B1O13\",asok:\"0D0E140B\",\"asok \":\"0D0Q140A\",asom:\"041O0O031403\",ason:\"0D040M0F140K1O0D\",aspe:\"030C0L020O040P020Q1V0T0F15041O0N\",aspet:\"0Q1W\",aspic:\"0T0X\",asq:\"0L030P020T051Q0E\",\"ass \":\"031K0M0O0N7Y100A120L140A1C18\",\"assa \":\"03030L050P0B0Q090R020T02100711GI130B1407\",assad:\"0L020P0Z0R040Z021005\",assap:\"0P040Q0T\",assar:\"0P0Q0Q0B1007\",\"asse \":\"0L2K0N0Z0P0V0Q0I0T090Z0M120G1C2G\",asseb:\"012K\",assen:\"030V0L070M020N340P030Q050R0T0T060Z0A1003120O\",asser:\"0L1R0N1B0Q050R030T030Z0K1003120F\",assez:\"0L1N\",assim:\"0P1H0Q03\",assu:\"03030L0D0M050N030P0K0Q0A0T0E11041404\",assz:\"1417\",assé:\"0L1M\",\"assé \":\"0L25\",astaa:\"114T\",astab:\"1B031C1L\",astah:\"11031Q7M\",astai:\"11081B1P\",astas:\"110Z1B0G1C1H1F021O02\",astat:\"0Z03111C1B151C2N1O06\",astaí:\"0S4I\",\"asti \":\"0B1B0Q040T080U030V0O0Y0A11AU130E1B1V1C2J1D1I1O02\",astil:\"0D0O0O071505\",astn:\"0U1Q0Y2T1003\",astní:\"0U0X0Y0J\",astný:\"0U0M0Y1B\",\"asto \":\"0D020O030P020Q080U190Y0Y110B1A0L1B031O05\",astră:\"1538\",\"astu \":\"11051A021C1Z\",astus:\"110Z1C1S\",astā:\"1D1G\",astāv:\"1D2K\",astă:\"155I\",\"astă \":\"1559\",astăz:\"151V\",asuk:\"03020B160D0511081B03\",\"asuk \":\"0B1Q\",asut:\"11061C18\",asuta:\"1C31\",asv:\"0V05110S1B041C0D1Q08\",\"asy \":\"0M0C0U0G0Y0U1A081N2C\",asya:\"03020B050D0P1F021Q0I\",asyad:\"0D0V\",asyn:\"1N36\",asynd:\"1N14\",asyny:\"1N2K\",asyo:\"0D0U1F0K\",asyon:\"0D1E1F0S\",asz:\"143L1A4M\",\"asz \":\"140Y1A3S\",aszn:\"141T1A0B\",aszná:\"141L\",aszo:\"141A1A02\",aszt:\"143X\",aszta:\"141R\",asá:\"0U02140K\",asé:\"0L020O04\",así:\"0O0X0U0E0Y0B13031404\",\"así \":\"0O1E0U0E\",asó:\"0O0F1A02\",\"asó \":\"0O0N\",asö:\"1005\",asă:\"154B\",\"asă \":\"156H\",asė:\"1B08\",asī:\"1D17\",ası:\"1FAT\",\"ası \":\"1F3X\",asıl:\"1F2X\",\"asıl \":\"1F3O\",asın:\"1F5T\",asına:\"1F1T\",asınd:\"1F20\",asını:\"1F3P\",\"at'\":\"0M10\",\"at's\":\"0M1Q\",\"at's \":\"0M2C\",\"at-\":\"030E0B05150P\",ataa:\"0B0E0D061111\",atad:\"0O090P05100E\",atag:\"0D0H14031Q08\",atah:\"0B0H0D02\",atai:\"0L06140D1B0X\",atak:\"0B220D0K0V0C110314041A051B021C0O1F0B1O06\",ataka:\"0B3R0D0A11031O02\",ataks:\"11041C1O\",atand:\"0D0K0O050P021F06\",atang:\"0B5B0D19\",atao:\"0D07\",atap:\"0B040D0K\",atapo:\"0D0S\",\"atar \":\"03020O0C0P0B101A11071F03\",\"atas \":\"03040B3B0D0J0O0D0P090T051B0S1C1Z1O40\",atata:\"03020D0Z0O030P031O0A\",atatu:\"043V\",atau:\"0B1B0D0211041B0R\",\"atau \":\"0B2H1B1I\",atav:\"0T0411061B031D1S\",atavo:\"1B041D3U\",ataw:\"0D0F\",atawa:\"0D0P\",atay:\"03080D131F05\",\"atay \":\"030C0D1K\",atb:\"0U03140A1D14\",atbi:\"1D0W\",atbil:\"1D2A\",atc:\"0L030M0J0U0310051A021D0U\",atce:\"0U051A031D11\",atcer:\"1D2O\",atch:\"0L050M0Z1007\",\"atch \":\"0L080M0R\",atd:\"1N2O\",atda:\"1N30\",atdan:\"1N36\",atdy:\"1N0X\",atea:\"0L080O020P030T02151Y\",\"atea \":\"152F\",ated:\"0M18\",\"ated \":\"0M1O\",atee:\"110P1C0K\",atege:\"048W\",atei:\"0N030P020Z0211051B2R1D2J\",ateic:\"1D4L\",ateik:\"1B0T1D21\",ateis:\"0Z0211091B1N\",ateit:\"1B1N\",atek:\"04260U06110214051A061B06\",ateka:\"043C\",\"atel \":\"0U091P1T\",atelj:\"0V3E\",atell:\"0Q0V0T05110L\",\"atem \":\"03020N020T161A0H\",\"aten \":\"030K0M080N1G0R5T0Z04100C1104120M1F10\",atend:\"0O020P061O1W\",\"ater \":\"011W0L060M190N1K0P040R230T4T0Z0F10051213\",\"ates \":\"0L0A0M0O0N020O060P050T0H1B091F05\",\"atet \":\"0N0G0T030Z041004120E\",ateu:\"0L0W0P040T02\",ateur:\"0L1J\",ateľ:\"0Y2R\",ateľo:\"0Y15\",atg:\"1B051D0V\",atgr:\"1D0S\",atgri:\"1D21\",\"ath \":\"0M0I0S1N\",atha:\"0S3P0T0311051406\",athai:\"0SBK\",athe:\"0M1D0N060R030T0E\",ather:\"0M1O\",athr:\"0M030S0Q\",atia:\"0B080L020P030T0X0Y0F11041O02\",atic:\"0L020M060O020P080Q0X0R020T0G0U04150V\",atid:\"0D0G0O020P031B18\",\"atid \":\"0D0T\",atida:\"1B1P\",atie:\"0L0I0M060N060O040R1B0T030Z04100211041B051D3Q\",\"atie \":\"0L050N040R17\",aties:\"0R071B051D7E\",\"atik \":\"0N060Z0310031F0B1P15\",atika:\"0B1B0D050U04110314021B0B1O03\",atiko:\"0D02110M1B0T1O091P0Z\",\"atil \":\"0U100Y0U1F05\",\"atin \":\"030Z0D280L1B0M020Z0210021108120F14021F02\",ating:\"0D280M110P060R0215091B0I1O0V\",atink:\"1B5B\",\"atio \":\"0O030T0X0V1B11041O04\",atir:\"04110B0G0D090O020P051B04\",atira:\"0D0H0P03\",ative:\"0L0E0M0K0N050Q020Z021O0A\",atj:\"140D\",atk:\"0B0Z0U0K0V0A0Y191130140D1A0S1B061D1I1F03\",atka:\"0B1G0U0I0V030Y0M112B1A0F1B031D13\",atkan:\"0B2L110C\",atklā:\"1D1W\",atko:\"0U020V050Y0I1122140P1A03\",\"atko \":\"0V0A0Y0B114E\",atku:\"0B0H0U050Y0G110Z1A02\",atlan:\"0N020Z021107141E1F071N0Q\",atlar:\"1F0H1N3N\",atlh:\"1QNN\",\"atlh \":\"1QNO\",atlo:\"0D0G\",atlon:\"0D0O\",atma:\"03021F101N0Y\",atmu:\"0B0I\",atni:\"03060V05130C14151A0V\",\"atni \":\"030D0V06130B14161A0B\",atny:\"0B1714021A02\",atnya:\"0B2E\",atnā:\"1D0S\",atoj:\"11021B021O0T\",atok:\"0Y0C1431\",\"atok \":\"0D020Y0F142G\",\"atom \":\"0V0714111F03\",aton:\"0D040L020O03110M140L1O0N\",\"aton \":\"0L021114140A1O19\",atos:\"0D040O0V0P0Q0T06110714171B0V1O031P21\",\"atos \":\"0D070O140P0X0T06140O1B0Z1O051P17\",atosi:\"110B1B041P17\",atot:\"0D05142B1B04\",\"atot \":\"141K\",atp:\"1B031D0T\",atpak:\"1D1R\",atq:\"0T0Q\",atqu:\"0T1E\",atque:\"0T1G\",atrad:\"1B041D25\",atras:\"0O020P0H1D21\",atre:\"0L0G0O050P020T2G0U020Z0412071O02\",atrem:\"0T1H0U02\",atrin:\"1O1D\",atris:\"03090T17\",\"atro \":\"0D030O0P0P0K0Q020T031O1K\",atrod:\"1B4I1D1W\",atru:\"0T0P150P1A061D0Q\",\"atru \":\"150M1A031D1W\",\"ats \":\"0L0P0M0E0R0N0Z02100S1B0U1D111P0P\",atsa:\"0N040P02100211091B23\",atsak:\"11021B3E\",atse:\"041V0R08100I110E1C0N\",\"atse \":\"043C\",atsi:\"041K0D0211051B4D1C1B1F03\",atsio:\"1C1S\",atsis:\"1B28\",atsit:\"1B2R\",atso:\"1123\",atst:\"0R0T1B031D0K\",atste:\"0R0V\",\"att \":\"03020N0C10LI124013181426\",atta:\"030H0L0G0M070Q2I0T03101F112L1306141Z1F0J\",\"atta \":\"03070Q0Q100E112K140U1F0I\",\"atte \":\"0L060N340Q0G0R070Z1A100I1111120M1F03\",attel:\"0R04112L\",atten:\"0L3T0M0F0N0S0Q0O0R0N0T040Z1C101H12151F02\",atter:\"010S0L070M0M0N030Q0D0R040Z10100D110C1211\",attig:\"0R050Z0G10071208\",attin:\"0Q0T0R020T0311031402\",atto:\"0M020Q4R0T03110U1404\",\"atto \":\"0Q401107\",attr:\"0L0O0M040Q0P0Z031002\",attu:\"0L060Q0K0T0S1002111G1405\",attı:\"1F1C\",\"attı \":\"1F17\",atud:\"1C28\",\"atud \":\"1C5F\",atuh:\"0B0U\",atuk:\"110C14021C16\",atuke:\"1C29\",atul:\"0D0H0Q020T031403151P1A021O02\",\"atul \":\"151X\",atulo:\"0D0L1O02\",atum:\"0R020T1V1102\",\"atum \":\"0N020R020T1W\",atun:\"041O0B0E0D070Q031107140I150K1A03\",\"atur \":\"0B0F0N0I0T2Z0Z0710021204130C\",atus:\"03020B080T4J110C1B0B1C1F1O0H\",\"atus \":\"0B0E0T4P110M1B0K1C131O0Y\",atuse:\"03021C1H\",atut:\"03030D0I11061C14\",\"atut \":\"030711031C26\",atutu:\"0D0R\",atv:\"0V0F0Y0D130514041B1J1D22\",atva:\"14071B0A1D0X\",atvai:\"1D1W\",atvi:\"13071B0B1D0W\",atvy:\"1B14\",atvyk:\"1B2A\",atvēr:\"1D1R\",atw:\"0302040I1A0G\",aty:\"0U050Y07110214031A141B1L1N50\",\"aty \":\"0U070Y0B1A0O1N3V\",atyn:\"1N2F\",\"atyn \":\"1N2C\",atyt:\"1B1B\",atyti:\"1B21\",atz:\"0N0M\",atá:\"0P020S3Z0U040Y0N1411\",\"atá \":\"0S4R0U040Y10\",atás:\"1415\",atâ:\"151B\",atât:\"1522\",\"atât \":\"152H\",atæ:\"0T02\",atç:\"1F051N0J\",até:\"0L060O030P1D0U041406\",\"até \":\"0L050O030P1J0U04\",atí:\"0O030U0F0Y0D13041403\",ató:\"0O0B0P08140S1A03\",\"ató \":\"0O0A1415\",atü:\"0N031P0G\",atý:\"0U0B0Y0C1N0E\",atā:\"0T031D15\",atās:\"1D11\",\"atās \":\"1D2O\",ată:\"157T\",\"ată \":\"15B5\",atą:\"1B0D\",atė:\"1B1W\",\"atė \":\"1B1E\",atėj:\"1B0Z\",atėjo:\"1B1G\",atę:\"1A061B0B\",atī:\"1D4B\",atīk:\"1D3H\",\"atīk \":\"1D88\",atīt:\"1D0X\",atį:\"1B09\",atı:\"1F4F\",atıl:\"1F0X\",atın:\"1F1H\",\"atın \":\"1F1G\",atır:\"1F14\",atırl:\"1F15\",atř:\"0U0C\",atū:\"1B061D0E\",atų:\"1B07\",\"au-\":\"0L05\",aua:\"0B02110H15081C17\",\"aua \":\"150D1C0Y\",aub:\"0D020L020N131B051D0O\",aube:\"0L030N1M\",auc:\"0L2F0N1M0T0F1A0X1D1X\",\"auc \":\"1D0S\",auch:\"0L0D0N3Y\",\"auch \":\"0N3S\",auco:\"0L2H0T02\",aucou:\"0L46\",aucu:\"0L16\",aucun:\"0L20\",aucz:\"1A1B\",auczy:\"1A1W\",auda:\"0B0E0O020P090T0K11051B0H1D0W\",aude:\"0L050T0Y110K\",audin:\"11031B1Q\",audo:\"1B1H\",audz:\"1D5M\",\"audz \":\"1D8W\",audē:\"1D0U\",aue:\"0N0R1102\",auen:\"0N0X\",auf:\"0L080N4R0T040Z0210021A04\",\"auf \":\"0L050N79\",aufe:\"0N150T05\",aufen:\"0N1N\",aufg:\"0N13\",\"aug \":\"13061B46\",auga:\"130F1B1F\",augh:\"0M0U\",aught:\"0M0T\",augi:\"1B2Z1D0S\",augia:\"1B4B\",augs:\"1B061D29\",\"augs \":\"1D1R\",augst:\"1D3Z\",auh:\"0B0E0D02110Q\",\"auh \":\"0B0N\",auj:\"0L0V0Y0P1B2G1D0V\",auja:\"0U021B1H\",\"auja \":\"1B1K\",aujo:\"0L1H1B0R\",aujou:\"0L2I\",aují:\"0Y16\",aujím:\"0Y1H\",auk:\"0B050V04111P13091A0A1B591D2V\",auki:\"110F1A031B2T\",aukia:\"1B22\",aukin:\"1B1M\",auks:\"11141B0J1D0O\",aukt:\"10021B0Z1D0S\",aukti:\"1B1T\",auku:\"11051B061D0W\",aukš:\"1B1K\",aukšt:\"1B2D\",aula:\"0B060O030P0I0Q020T041113\",aule:\"0L050N021B021D1S\",aules:\"0L031D32\",auli:\"0D020T0311021B0R\",aulė:\"1B0Q\",\"aum \":\"0N0X0T041305\",auna:\"0D041104151D1B0Q1D0Z\",\"auna \":\"1103151R1B0Q\",auni:\"11191B081D0M\",auns:\"1D0Z\",\"auns \":\"1D2K\",aunt:\"0D090M030N02\",aunti:\"0D0G\",aup:\"0B070D020L070N0A0T0E1110130Z1B08\",\"aupa \":\"131Z\",aupu:\"0B0D1117\",aupun:\"0B0P112X\",\"aura \":\"0L0G0Q0S1104\",aurai:\"0L1Z\",\"aus \":\"0B060N520P050R070T03110Q130J1B1X\",ausa:\"03030D080N070O0D0P0H0Q0C0T0X13061B0A\",ause:\"0L0J0M0X0N1F0O050P020Q030Z02111512071B021C0I\",\"ause \":\"0L0S0M130N1Q0Z02110Q\",ausg:\"0N0X\",ausi:\"0T0711091B64\",\"ausi \":\"110D1B2G\",ausia:\"11051B6G\",ausim:\"1B2G\",auss:\"0L290N0L\",aussi:\"0L320N06\",ausī:\"1D0S\",\"aut \":\"0B0B0L2A0N0N0T0W0U02130915061D2Q\",aute:\"0L0S0N0D0R030T230U071109\",autem:\"0T260U09\",auti:\"0L020M0F0O020Q020T03110F1B1Q\",\"auti \":\"11091B31\",autif:\"0M0J\",\"auto \":\"0N170O0L0Q0M0R1Y0U1U0V100Y0Q111F1A041C26\",autob:\"0L020N020O0G0Q0F0U130V110Y0O150X1A0V1B1C\",autr:\"0L2Q\",autre:\"0L4G\",autt:\"112J\",autta:\"1154\",autó:\"142D\",autā:\"1D1N\",autāj:\"1D3G\",auu:\"0D02\",auv:\"0L0X0V031109\",auva:\"0L0V110F\",auvai:\"0L1B\",auw:\"0R081A05\",aux:\"0L2C0T07\",\"aux \":\"0L3V\",auz:\"0V0H151K\",auß:\"0N09\",auð:\"131L\",auč:\"0U0J0V0O0Y0R1B0J\",auči:\"0U0R0V0O0Y131B0V\",aučiť:\"0Y10\",auš:\"1B0A\",auž:\"1B0C\",avaa:\"111B1F05\",\"avaa \":\"112P\",avad:\"0O030P0314031B041C3E1F03\",\"avad \":\"1C7S\",avai:\"0L6Q0M02110Q14061B1F\",avail:\"0L4S0M03\",avais:\"0L2K110B\",avait:\"0L4111031B1Y\",avali:\"0L020P0211051B031C1E\",avall:\"0Q09112F\",avalt:\"110J1C22\",avam:\"0P1A0Q0M0V0H11031402\",\"avam \":\"0P1K0V0Y\",\"avan \":\"0V0F112L1O071Q0A\",avant:\"0L370Q0D1F031O09\",avar:\"0L040O070P080Q070T0B110L140S1B161O03\",avarg:\"1B1Q\",avas:\"0P03111A140P1B081D171F021O4X\",\"avas \":\"0P041B031D2T1O9G\",avast:\"112C\",\"avat \":\"0T040U0L115214021F04\",avau:\"11021B10\",\"avau \":\"1B23\",avb:\"1004\",avd:\"0U1X0V050Y1M0Z1210041F021Q0M\",avde:\"0V050Y0N0Z2W1004\",\"avde \":\"0V0E0Z3I\",avdu:\"0U220Y1F\",\"avdu \":\"0U2V0Y1R\",avea:\"1526\",\"avea \":\"1525\",avec:\"0L5P1O02\",\"avec \":\"0L9E0U02\",aved:\"0M040U050Y0D0Z091O02\",avem:\"0T0B151I\",\"avem \":\"0T0C151X\",\"aven \":\"0M020R0G0U0J0Z0K1209\",\"aven'\":\"0M0N\",avený:\"0U0I0Y17\",\"aver \":\"0L090P040Q0J0Z131206\",avere:\"0Q0Z0Z04110E\",averu:\"0T0S\",avet:\"0Q390T030V090Z0X10051102120B1F0C\",\"avet \":\"0V0F0Z12100512091F0E\",avete:\"0Q3A0T03\",avev:\"0Q28\",aveva:\"0Q1L\",avez:\"0L3L0V06\",\"avez \":\"0L3A\",\"avez-\":\"0L2W\",avf:\"1003\",avg:\"100612041F05\",avh:\"10021204\",avhe:\"120A\",avia:\"0P0P0Q040T0B0Y08110C1B0B1O07\",\"avia \":\"0P0T0Q030T07110R\",avil:\"0O070P050U0W0V0W0Y1L1102\",\"avil \":\"0U0T0Y17\",avim:\"0Q020T0E0V0J1B1R\",avimi:\"1B2B\",aving:\"0M0V0R021B04\",\"avio \":\"0M050P070V281B03\",\"avis \":\"0L0H0T0S0Z061O25\",avit:\"0Q020T580U0W0V0J14021O02\",\"avit \":\"0T520U17\",aviť:\"0Y10\",\"aviť \":\"0Y18\",avl:\"0V100Z04100912021F071Q0D\",avlj:\"0V16\",avlja:\"0V1V\",avn:\"0U0G0V1B0Y0N0Z0M1002120E1Q0B\",\"avn \":\"0Z0Y1208\",avne:\"0Z0O120R\",avnet:\"0Z06120E\",\"avné \":\"0Y0Y\",\"avo \":\"0O050P070Q290T050V0W0Y081BEF1O08\",avoi:\"0L2W0M04110J\",avoir:\"0L4V\",avol:\"0Q0L0U0T0V030Y15\",avola:\"0Q030U0L0Y11\",avon:\"0L2H0N0J0R1514051O02\",avond:\"0R1I\",avons:\"0L44\",\"avor \":\"0M030N040O2N0P24\",avora:\"0L020Q1Y1O06\",avore:\"0Q1D1O02\",avoro:\"0Q2L1O02\",avr:\"0L020P0U0Q130U060V0N0Y0E10031F0X\",avra:\"0P100Q050U021F0Q\",avras:\"0P0P\",avre:\"0Q1D0Y0A\",avs:\"0Z02100S12061D0X1F0E\",\"avs \":\"1D15\",avt:\"100312031Q03\",\"avu \":\"0U0E0V0R0Y191D3Q1O04\",avug:\"0449\",avuga:\"0474\",avut:\"0Q0M110D151V1F03\",\"avut \":\"1103152D1F02\",avuz:\"041Z1F04\",avv:\"0Q1I12021Q04\",avve:\"0Q1S\",avver:\"0Q1O\",avy:\"0302043E0M020U060Y0A1B0M\",avye:\"0465\",\"avye \":\"0474\",avyey:\"043I\",avyi:\"041K\",avé:\"0L040O040P040U080Y0E1306\",aví:\"0O0S0P020U0P0Y0O1408\",\"aví \":\"0U0Q0Y0I\",avía:\"0O16\",\"avía \":\"0O1J\",avó:\"0P06\",avô:\"0P06\",avý:\"0U0B0Y0F\",avā:\"1D1I\",\"avā \":\"1D1A\",avą:\"1B08\",avē:\"1D0K\",avė:\"1B0S\",avę:\"1B14\",avęs:\"1B1T\",\"avęs \":\"1B3Q\",avř:\"0U0D\",avš:\"0U0G0Y0J\",avšt:\"0U0Q0Y0X\",avští:\"0U0T0Y12\",\"aw \":\"031G0D1W0M0K1A0A1N0C1Q1G\",\"aw'\":\"1QA0\",\"aw' \":\"1QD5\",\"aw-\":\"030I0D04\",\"aw-a\":\"0D06\",awab:\"0B0T\",awag:\"03030D0I\",\"awag \":\"03050D0K\",awah:\"0B0K\",awak:\"0B0A0D0C0M03\",awal:\"03CQ0B0K0D0J1A03\",\"awal \":\"03M60B0U0D05\",awala:\"0D0S\",awan:\"030R0B0U0D141A06\",\"awan \":\"03180B0U0D0S\",awang:\"0D17\",awat:\"03040B1C0D070N021A03\",\"awat \":\"03040B1N0D0D1A04\",away:\"03080D050M0R\",\"away \":\"03050D060M11\",awb:\"1Q08\",awd:\"03051A2E1N091Q0H\",\"awda \":\"1A1F\",awdę:\"1A1D\",\"awdę \":\"1A27\",awe:\"0109034Y045M1A0K\",\"awe \":\"04FF1A05\",awen:\"033N\",\"awen \":\"033H\",awi:\"031W0B020D0U1A431Q05\",awia:\"1A2C\",awie:\"1A17\",awin:\"030P0D1A\",\"awin \":\"030X0D2C\",awk:\"1A05\",awl:\"03161Q0B\",awn:\"030C0M021A0L\",awr:\"03030D02\",aws:\"030S1A131N2A\",awst:\"1N30\",awstr:\"0D021N43\",awsz:\"1A1K\",awsze:\"1A2D\",awt:\"030O0D021N0M1Q09\",awto:\"0D041N0V\",awy:\"03060M021A0I\",axa:\"03040P030T031502\",axe:\"030M100315041P0G\",axim:\"0T0X14021504\",axo:\"0T07\",\"ay'\":\"0M021F021Q7Q\",\"ay' \":\"1QB4\",\"ay-\":\"030H0D08\",\"aya \":\"034I041O0BHS0D1D0L030M040O0W1F65\",ayaa:\"0B070D06\",ayac:\"1F2V\",ayaca:\"1F3W\",ayag:\"0D08\",ayah:\"0B1K0D05\",\"ayah \":\"0B1D\",ayal:\"03041F0W\",ayam:\"0B070D070O041F0J\",ayan:\"03030B130D1D0L050O031F0X\",\"ayan \":\"03030B0F0D1C0O041F0U\",ayang:\"0B1H0D13\",ayar:\"0B0G0D0A1F0K\",ayat:\"0D031F1A\",ayaw:\"03020D0P\",\"ayaw \":\"0D18\",ayb:\"0D020M061F101Q04\",aybe:\"0M0A1F0V1Q07\",ayd:\"030W1F1T1Q05\",aydı:\"1F1N\",\"aydı \":\"1F18\",aye:\"037904400L0N0M0C0O0S1F0T1Q04\",\"aye \":\"04B70L051F05\",ayed:\"03040M0G\",\"ayed \":\"03070M0M\",ayen:\"033V1F03\",\"ayen \":\"037G\",ayer:\"032B0L0O0M070O15\",\"ayer \":\"03560L120M070O1H\",ayg:\"1F0D\",ayin:\"030E0D070M0O1Q07\",aying:\"0M0X\",ayn:\"030O1F18\",aynı:\"1F11\",\"aynı \":\"1F1B\",ayo:\"041O0B080D310L060O0Q\",\"ayo \":\"044J0B0C0D2X0O05\",ayon:\"0D2B0L0A\",\"ayon \":\"0D1Z0L06\",ayong:\"0D2B\",ayor:\"0O0X\",ayos:\"0D0B0O02\",\"ayos \":\"0D0L0O02\",ayp:\"1Q04\",ayr:\"030K0D081F19\",ayro:\"0D0F\",ayroo:\"0D0S\",ayrı:\"1F14\",ayrıl:\"1F16\",ays:\"030I0B030D0C0L0N0M1G1105\",\"ays \":\"0L0Z0M2N\",aysa:\"030J0D0K0L03\",\"aysa \":\"03170D0V\",ayt:\"031O1Q16\",ayud:\"0O1Y\",ayuda:\"0O26\",ayv:\"1F0D\",ayw:\"1Q08\",ayé:\"0L0E\",ayó:\"0O06\",ayú:\"0O02\",ayı:\"1F7M\",\"ayı \":\"1F4R\",ayım:\"1F12\",\"ayım \":\"1F1E\",ayın:\"1F0Z\",\"aza \":\"04DY0O0E140Z150F1F09\",azal:\"031O0U021F05\",\"azal \":\"032Q0U02\",azan:\"04260O020V071A051F1A1N0X\",azar:\"03050O0714041F131N0D1O08\",azd:\"03020V070Y0C140F1A0H1B021F0Q1N11\",azdy:\"1A071N12\",\"aze \":\"04540U040V040Y0U15031F031O06\",azen:\"030G0P0V0R050U051F0D1O03\",azend:\"0P12\",azer:\"03030P5K0Q040Y0K1F03\",\"azer \":\"0P6V\",azg:\"03050V0K14021F0B\",azgov:\"0V1P\",\"azi \":\"04JB0V0V140G150V1O03\",azie:\"0N060Q1215041A09\",azio:\"0P030Q7N0V041O03\",azion:\"0Q7L\",aziɣ:\"031U\",aziɣt:\"033N\",azl:\"03020O020V0Q1D0G1F1V1N0G\",azla:\"03021F22\",\"azla \":\"1F2E\",azm:\"030A0V0J1F0D1N0C\",\"azo \":\"042H0O0G1O0E\",azon:\"0O0614191A021O0B\",azs:\"140A1F0F\",azt:\"0304143D\",\"azt \":\"0304147H\",azum:\"0V13\",azume:\"0V2A\",azy:\"0M040U0T0Y1B1A0Q1N11\",azyk:\"0U150Y24\",azza:\"030D0Q17140G\",\"azza \":\"0Q0U\",azzo:\"0Q0R\",azá:\"140N\",azã:\"0P08\",azé:\"0U02140D\",azért:\"1410\",azê:\"0P05\",azí:\"0U050Y0R1402\",azó:\"0O0N14031A02\",azón:\"0O0X\",\"azón \":\"0O17\",azú:\"0O04\",azā:\"1D0H\",ază:\"152X\",\"ază \":\"154E\",azī:\"1D17\",azīst:\"1D1R\",azı:\"1F2Q\",\"azı \":\"1F0X\",azır:\"1F10\",aß:\"0N0B\",\"aß \":\"0N08\",aße:\"0N09\",aç:\"0L020P1F1F2A1N2Q\",\"aç \":\"1F291N0M\",aça:\"0L020P181F0B1N2O\",\"aça \":\"0P0U1F02\",açan:\"0L021N2Y\",\"açan \":\"1N3E\",açd:\"1N0M\",açl:\"1F0F1N0E\",açm:\"1F0E1N0B\",aço:\"0L080P0U\",\"aço \":\"0P0Q\",açt:\"1F0N\",açy:\"1N0X\",açã:\"0P3F\",ação:\"0P3W\",\"ação \":\"0P4W\",açõ:\"0P0Q\",açõe:\"0P0W\",ações:\"0P14\",açú:\"0P04\",açı:\"1F28\",açık:\"1F1B\",aé:\"1402\",aér:\"0L041403\",aí:\"0O0A0P0C0S371303\",\"aí \":\"0P0D0S53\",aíd:\"0O050P05\",aím:\"0S13\",\"aím \":\"0S18\",aío:\"0S38\",aíoc:\"0S13\",aíoch:\"0S4I\",aíon:\"0S2H\",aíonn:\"0S9A\",aír:\"0P03\",aís:\"0O0O0P0S\",\"aís \":\"0O0S0P0O\",aî:\"0L0B\",aîn:\"0L08\",aît:\"0L1C\",\"aît \":\"0L1J\",aîtr:\"0L0P\",að:\"13M2\",\"að \":\"13SG\",aða:\"131T\",\"aða \":\"131A\",aði:\"134H\",\"aði \":\"135I\",aðu:\"133H\",\"aðu \":\"131Q\",aður:\"1342\",\"aður \":\"1373\",añ:\"0O1M1N2C\",\"añ \":\"1N18\",aña:\"0O2A1N2K\",\"aña \":\"0O0U1N3K\",añan:\"0O20\",añana:\"0O2K\",añe:\"0O05\",año:\"0O2O\",\"año \":\"0O1M\",años:\"0O23\",\"años \":\"0O2Q\",añí:\"0O05\",añó:\"0O02\",\"aó \":\"0P03\",aú:\"0O050P02\",aúd:\"0P07\",aún:\"0O0H\",\"aún \":\"0O0R\",aý:\"1NDQ\",\"aý \":\"1N1L\",aýa:\"1N8C\",aýal:\"1N1R\",aýaly:\"1N17\",aýan:\"1N2I\",aýand:\"1N1X\",aýar:\"1N68\",\"aýar \":\"1N3B\",aýarl:\"1N17\",aýary:\"1N2Z\",aýd:\"1N4M\",aýda:\"1N24\",aýdan:\"1N16\",aýdy:\"1N3I\",aýdym:\"1N1E\",aýdyp:\"1N22\",aýdý:\"1N19\",aýdýa:\"1N1Q\",aýl:\"1N1M\",aýla:\"1N1Z\",aýr:\"1N0M\",aýs:\"1N0N\",aýt:\"1N8N\",\"aýt \":\"1N0Y\",aýtd:\"1N7U\",aýtdy:\"1NAI\",aýtm:\"1N35\",aýtma:\"1N4B\",aýy:\"1N35\",aýyn:\"1N18\",aýyş:\"1N1P\",\"aýyş \":\"1N1Q\",aýý:\"1N0T\",aýýa:\"1N15\",aýýar:\"1N1L\",ać:\"0V0O1A4M\",\"ać \":\"1A99\",aĉ:\"1O0S\",aĉa:\"1O0A\",aĉe:\"1O0P\",aĉet:\"1O13\",aĉeti:\"1O1K\",aĉi:\"1O04\",aĉo:\"1O05\",ač:\"030B0U160V1O0Y1T1B0P1D03\",\"ač \":\"0U0A0V0E0Y0J1B06\",ača:\"0U0N0V0B0Y0J\",ačal:\"0U110Y0F\",\"ačal \":\"0U0W0Y0B\",ači:\"03060U040V1F0Y0B1B1U\",ačia:\"0Y0B1B1L\",ačiau:\"1B2P\",ačk:\"0U0B0V130Y1Q\",ačka:\"0U050V0F0Y1A\",\"ačka \":\"0U060V100Y1K\",\"ačky \":\"0U050Y13\",ačn:\"0U070V0K0Y0E\",ačí:\"0U0I0Y0I\",aď:\"0U050Y03\",ađ:\"0V0O\",ađe:\"0V10\",aė:\"1B07\",aėj:\"1B0G\",aĝ:\"1O19\",aĝa:\"1O0K\",aĝe:\"1O05\",aĝi:\"1O0D\",aĝo:\"1O11\",\"aĝo \":\"1O0X\",aĝu:\"1O03\",ağ:\"1F4L\",ağa:\"1F1B\",ağl:\"1F1P\",ağla:\"1F10\",ağlı:\"1F0Y\",ağm:\"1F0X\",ağr:\"1F0D\",ağı:\"1F7N\",ağım:\"1F33\",\"ağım \":\"1F2W\",ağın:\"1F3D\",ağını:\"1F3H\",aı:\"1L05\",aĵ:\"1O1B\",aĵo:\"1O27\",\"aĵo \":\"1O1C\",aĵoj:\"1O1C\",\"aĵoj \":\"1O1F\",aĵon:\"1O0W\",\"aĵon \":\"1O1S\",aķ:\"1D06\",aķi:\"1D0M\",aļ:\"1D0S\",\"aļ \":\"1D0N\",aļa:\"1D14\",aļu:\"1D0E\",aļā:\"1D0O\",aľ:\"0Y0G\",\"aľ \":\"0Y0L\",ał:\"1ABO\",\"ał \":\"1A8S\",ała:\"1A4V\",\"ała \":\"1A4R\",ałam:\"1A17\",\"ałam \":\"1A1V\",ałb:\"1A1A\",ałby:\"1A1U\",ałbym:\"1A2B\",ałe:\"1A6L\",ałem:\"1A6U\",\"ałem \":\"1AAL\",ałeś:\"1A1U\",\"ałeś \":\"1A2X\",ało:\"1A26\",\"ało \":\"1A2F\",ały:\"1A1I\",\"ały \":\"1A1S\",ań:\"1A0R\",aņ:\"1D04\",aň:\"0U070Y0H1N3C\",\"aň \":\"0U0B0Y0C1N19\",aňa:\"0Y0D1N4B\",\"aňa \":\"1N60\",aňy:\"1N0J\",ař:\"0U0L\",aři:\"0U0D\",aří:\"0U0E\",aś:\"1A0X\",aśn:\"1A0V\",aśni:\"1A17\",aśnie:\"1A1G\",aŝ:\"1O0B\",aŝa:\"1O03\",aŝi:\"1O0A\",aŝo:\"1O03\",aş:\"15081F621N7B\",\"aş \":\"15081F0Z1N0Z\",aşa:\"15061F2Y1N4Y\",aşam:\"1F0Y1N0S\",aşar:\"1F101N29\",aşary:\"1N1J\",aşaý:\"1N1L\",aşaýa:\"1N20\",aşd:\"1N1B\",aşdy:\"1N17\",aşg:\"1N1P\",aşga:\"1N2G\",\"aşga \":\"1N1Q\",aşgal:\"1N17\",aşk:\"1F22\",aşka:\"1F1U\",\"aşka \":\"1F1X\",aşl:\"1F391N27\",aşla:\"1F2Z1N2L\",aşlad:\"1F191N12\",aşlar:\"1F1R\",aşm:\"1F0M1N0S\",aşma:\"1F0N1N13\",aşt:\"15061F12\",aştı:\"1F0Z\",aşy:\"1N2O\",aşyn:\"1N1U\",aşý:\"1N0J\",aşı:\"1F5T\",aşım:\"1F10\",aşın:\"1F23\",aşır:\"1F0X\",aşıy:\"1F18\",aşıyo:\"1F1H\",aš:\"0U1C0V3H0Y211BCN1D0T\",\"aš \":\"0V520Y0V1BO6\",aša:\"0V0T0Y0J1B1Q1D0K\",\"aša \":\"0V0E0Y0X\",ašau:\"1B2B\",\"ašau \":\"1B4D\",aše:\"0U1A0V0M0Y171B03\",\"aše \":\"0U140V0G0Y181B02\",\"ašel \":\"0U0U\",aši:\"0U0E0V0S0Y0X1B121D0M\",ašiel:\"0Y13\",ašin:\"0V061B10\",ašl:\"0U0A0V070Y0H1B03\",ašo:\"0V030Y081B0H\",ašt:\"0U0A0V1O0Y041B0V\",ašto:\"0V1O1B08\",\"ašto \":\"0V461B0E\",ašu:\"0V090Y0D1B08\",ašy:\"1B0Z\",ašyt:\"1B11\",ašyti:\"1B1L\",ašė:\"1B0H\",\"ašė \":\"1B0Q\",ašī:\"1D1E\",ašīn:\"1D1R\",ašīna:\"1D1W\",ašīnu:\"1D21\",aţ:\"1509\",aţi:\"150N\",ať:\"0U080Y4Z\",\"ať \":\"0U0F0YBV\",aŭ:\"1O6H\",\"aŭ \":\"1O6N\",aŭa:\"1O0C\",aŭd:\"1O0S\",aŭdi:\"1O0T\",aŭe:\"1O0D\",aŭg:\"1O07\",aŭi:\"1O04\",aŭl:\"1O05\",aŭr:\"1O0P\",aŭs:\"1O0H\",aŭt:\"1O11\",aŭto:\"1O18\",aŭv:\"1O04\",aŭz:\"1O0A\",aź:\"1A05\",aż:\"1A1X\",aża:\"1A0S\",ażd:\"1A0W\",ażn:\"1A0S\",až:\"0U1O0V1N0Y1K1B2U1D0D1N04\",\"až \":\"0U0T0V030Y0A1B03\",aža:\"0V0D1B10\",ažd:\"0U1G0Y1S1B02\",aždý:\"0U1B0Y28\",\"aždý \":\"0U1R0Y2R\",aže:\"0U050V1Z0Y051B06\",ažem:\"0V0Y\",\"ažem \":\"0V21\",aži:\"0U0B0V140Y0B1B2X\",ažia:\"1B0Y\",ažin:\"1B10\",ažiu:\"1B18\",ažiuo:\"1B2D\",ažiū:\"1B0Q\",ažiūr:\"1B1I\",ažk:\"0Y0S1B1B\",ažka:\"1B0S\",ažn:\"0V0Q1B0S\",ažna:\"0V041B0Y\",ažnai:\"1B1Y\",ažo:\"0U030Y051B08\",ažu:\"0U040V0A0Y071B0E\",aží:\"0U0D0Y08\",ažā:\"1D0H\",ažį:\"1B0L\",ažįs:\"1B0X\",ažįst:\"1B1Y\",aǧ:\"0305\",aș:\"1523\",\"aș \":\"151U\",așa:\"152C\",\"așa \":\"153L\",ași:\"1521\",așin:\"152A\",așt:\"151Q\",aște:\"152S\",aștep:\"1524\",aț:\"1520\",ața:\"1517\",\"ața \":\"151Z\",ați:\"155O\",\"ați \":\"1548\",\"ația \":\"151S\",ație:\"151O\",\"ație \":\"151Z\",ață:\"1511\",\"ață \":\"151P\",aɛ:\"030F\",aɣ:\"036L\",\"aɣ \":\"036K\",\"aɣ-\":\"0323\",\"aɣ-d \":\"032X\",aɣe:\"03B7\",aɣef:\"034W\",\"aɣef \":\"03AK\",aɣen:\"0344\",\"aɣen \":\"0348\",aɣent:\"0347\",aɣeɣ:\"031M\",\"aɣeɣ \":\"032X\",aε:\"030A\",aḍ:\"031F\",aḥ:\"030F\",aṛ:\"030P\",aṣ:\"0306\",aṭ:\"0319\",aṭa:\"0339\",aṭas:\"032T\",\"aṭas \":\"0368\",aẓ:\"030B\",\"b'\":\"1Q08\",\"b-\":\"030D1P0C\",\"b-a\":\"0308\",\"b-l\":\"1P0O\",\"b-li\":\"1P0T\",\"ba'\":\"0D021F031Q1H\",\"ba-\":\"030O0B040D02\",baa:\"010M0R0E1105\",baar:\"010P0R0V1103\",\"baar \":\"010L0R0Z\",baas:\"010N0R0C\",\"baas \":\"010P0R0A\",baba:\"030W046P0D1L0O0214051F1M\",babae:\"0D15\",babaj:\"043I\",babar:\"043O\",babi:\"041R0Q0J0U06150Z1O03\",babl:\"0L0B0M0O0O0A1O04\",bably:\"0M0X\",baby:\"0M080N040R080Z081002\",baca:\"0B1H0P041F08\",\"baca \":\"0B2N\",back:\"0M1Q0N041003\",\"back \":\"0M26\",bacz:\"1A19\",baczy:\"1A1L\",\"bad \":\"0D050M0I0N030R090Z0O100F140S\",badi:\"0B0714031P0U\",badik:\"1P0Z\",badu:\"14051B021C11\",badus:\"1C2J\",bae:\"0D0C0T04\",\"bae \":\"0D0I0T07\",baf:\"040F\",\"bag \":\"0D030M050Z0B\",bagai:\"0B4K\",bagay:\"0D0R\",bage:\"042D0M020Z15\",\"bage \":\"0M020Z14\",bagen:\"0441\",bagi:\"042Z0B16\",bagir:\"043C\",bagl:\"0Q0L1N0Q\",bago:\"0D0T\",\"bago \":\"0D0U\",bagon:\"0D0O\",bagu:\"03020B0U0D020L030P02\",bagus:\"03050B1O\",bagy:\"0D021N1A\",bagyş:\"1N14\",bagā:\"1D0X\",bagāt:\"1D25\",\"bah \":\"0B0X1F0N1Q1T\",baha:\"0B5N0D1E14081F091N0O\",bahas:\"0B8S\",bahay:\"0B0K0D22\",bahi:\"043G0D02\",bahir:\"045L\",bahk:\"0B0I\",baho:\"0D0U\",\"baho \":\"0D1G\",bahw:\"0B1W1Q06\",bahwa:\"0B3P\",\"bai \":\"14021B6X1D0M\",baie:\"014T150A\",\"baie \":\"0154150C\",baig:\"0L031B18\",baik:\"0B401B08\",\"baik \":\"0B5L1B0A\",bail:\"0O0D0S0T1B03\",bain:\"0L080S0X\",bair:\"0P030S3T\",\"bair \":\"0SBK\",bairt:\"0S32\",baix:\"0P0O\",baj:\"041A0B060O2V0V040Y0E140E15021A051O02\",baja:\"0O1R0Y0H1405\",bajar:\"0O0V\",baje:\"04290O02\",\"baje \":\"0441\",bajo:\"0O2H1406\",\"bajo \":\"0O35\",baka:\"04150B0Q0D0I0V021013130D14021F0F\",\"baka \":\"0D0Q1011130L\",bake:\"0M031216\",\"bake \":\"1213\",baki:\"041R0D0X13061O02\",bakit:\"0D1P\",bako:\"041R1007\",balh:\"0P2P\",balha:\"0P1N\",balho:\"0P1R\",\"bali \":\"0B2F0D020V0B\",balik:\"0B0Q0D0K\",\"balo \":\"0V1X1B031O02\",\"bam \":\"0P020T310V0414031F0I1Q06\",bamb:\"0Q13\",bambi:\"0Q12\",\"bana \":\"044X0O021F76\",banc:\"0L030O0A0P080Q0R0U02150B1F0B\",bandi:\"043O0B0K0Q02\",bandu:\"0N021C1V\",\"bang \":\"010P0B1X0D3I0R121Q0I\",banga:\"04350B0F0D05\",bange:\"0B090Z18\",bangu:\"0B1T\",bani:\"03080Q0F151W1O02\",\"bani \":\"151M\",banj:\"041V\",banje:\"043C\",\"bank \":\"010G0B0C0M060N090R0C100214031A03\",bans:\"0D0B\",bansa:\"0D0K\",\"bant \":\"0L020T1I14021B05\",bantu:\"049C0B300T0F\",bany:\"04320B3C0D021F05\",banya:\"03030B6H\",banz:\"0426\",banza:\"043C\",bao:\"0V0I\",bap:\"0B03\",barab:\"0441\",barad:\"1N4D\",baran:\"0B19\",bard:\"0L020O041A3Z1F0B1N1V\",bardy:\"1N2E\",bardz:\"1A6A\",\"bare \":\"0N050Q020R0C0Z131002122H150W\",\"bari \":\"042Z\",barir:\"0435\",barm:\"1N1V\",barmy:\"1N1Z\",barn:\"0N040Z111025122413141406\",\"barn \":\"0N070Z0V101A1216130J\",barna:\"120J130E1405\",barne:\"0Z0B100M120A\",baru:\"0B1U0P070T02\",\"baru \":\"0B2Z\",bary:\"1B0R1N0F\",bará:\"0O021431\",barát:\"1437\",barý:\"1N17\",barýa:\"1N1N\",basa:\"041G0B0G0D0O0O021B021F02\",\"basa \":\"0D0T\",bash:\"042O\",basha:\"0435\",basta:\"0D030O0T0P0N0Q0Z11031Q14\",bası:\"1F14\",\"bata \":\"0D170O050Q021A031B07\",bater:\"0O030P080U0515081A031B041D1R1O02\",batt:\"03030L0M0M030N020Q0Q0R030Z0310041F04\",batu:\"0B090T0S150C1B07\",bau:\"0B040L020N0D13051B09\",bavu:\"041R0U020V031F03\",bavy:\"042D0U03\",bavye:\"043O\",baw:\"0303040D0B0O0D0B1A0N\",bawa:\"0B1C0D0E\",\"bay \":\"0D091F0A\",baya:\"0B0K0D0K0M051F0B\",bayan:\"0B090D0I1F08\",baye:\"030I0454\",\"baye \":\"048Q\",baza:\"04900V0215061O04\",\"baza \":\"04F315071O02\",bazo:\"042K1O03\",\"bazo \":\"043O1O02\",bazı:\"1F0X\",bað:\"130H\",bañ:\"0O0A\",baý:\"1N0J\",bağ:\"1F13\",baş:\"1F5F1N45\",başa:\"1F0X1N1I\",başar:\"1F161N1L\",başg:\"1N1K\",başga:\"1N25\",başk:\"1F1Z\",başka:\"1F2H\",başl:\"1F1Y1N29\",başla:\"1F2E1N2M\",başı:\"1F17\",başın:\"1F13\",baš:\"0V0W\",\"baš \":\"0V0W\",baŭ:\"1O08\",\"bb \":\"100H1207144H\",bba:\"030F0Q0Q100K1309141I\",bban:\"03020Q09142V\",\"bban \":\"0303142U\",bbar:\"100E\",bbas:\"0Q0P\",bbe:\"030C0M040Q2Q0R1K0Z04100J120T14161Q0R\",\"bbe \":\"0Q3R1002120I1407\",bben:\"03020R5P0Z021003120H141S\",\"bben \":\"03040R7L0Z021003120H141T\",bber:\"03030M020Q0J0R02120P\",\"bber \":\"0304120P\",bbet:\"0Z02100F1209140V\",\"bbet \":\"0Z03100F1209140X\",bbi:\"03120M020Q3C1002130E140F\",bbia:\"0Q4Z\",\"bbia \":\"0Q0X\",bbiam:\"0Q3E\",bbl:\"03020Q0C1002\",bbo:\"0Q031Q0D\",bbr:\"03040Q0K1406\",bbri:\"0Q0K\",bbt:\"100A\",\"bbt \":\"100E\",bbu:\"030T\",bby:\"10021A02\",bdi:\"03050T020U02\",bdo:\"0T0A1Q0C\",bdu:\"030G0T021Q08\",\"be'\":\"1QNR\",\"be' \":\"1QRD\",\"be'ch\":\"1Q56\",\"be'n\":\"1Q3M\",bean:\"0N060R070S0M\",\"bean \":\"0S2K\",beau:\"0L3D0M0G150B\",beauc:\"0L46\",beaut:\"0L080M0M\",beba:\"0B0K0O020P020T0Q\",bebe:\"0B160D030N020O0I0P0M15041F0D\",beber:\"0B290O0D0P0E\",\"bec \":\"0U0Z0Y0U1A03\",beca:\"0M0Z\",becau:\"0M0Y\",beco:\"0M0E\",becom:\"0M0J\",\"bed \":\"03040M0L0R0J0Z05\",beda:\"0B0L0N060R0I1B031O0G\",bede:\"0N0H0O040P040R090Y0B0Z0B1F081N0E\",bedr:\"0M030N020R0G0Z0V121A\",bedre:\"03030R030Z0Y1216\",beds:\"0Z16\",bedst:\"0Z1F\",been:\"0M2G0N030R06\",\"been \":\"0M3C0R07\",beer:\"010Y0M050N040R15\",\"beer \":\"01100M070R0N\",beet:\"0R0R\",beetj:\"0R0Y\",bef:\"0M0J0N090Z0510061204140C\",befo:\"0M0Z0N020Z0310041408\",befor:\"0M1C\",begg:\"0M020Z0F120F\",begge:\"0Z0J120F\",begi:\"01150B0W0M070N090R0V0Z0210021P0J\",begin:\"01180M090N0E0R161P0M\",begit:\"0B1O\",bego:\"0N020R0P\",begon:\"0N030R0X\",begr:\"0N0A0R170Z091009120C\",begri:\"0N050R12\",begy:\"0Z15121F1402\",begyn:\"0Z1E121F\",beh:\"010I0M080N090Q020R070Y0F0Z0B102D120914031Q0D\",beha:\"0M050N0F0R0D0Z0A1007120F1402\",beho:\"010S0R090Z06100212061402\",behoo:\"010Q0R07\",behö:\"102V\",behöv:\"102V\",behø:\"0Z0E\",behøv:\"0Z0G\",\"bei \":\"0N290P060Q020R0A15061B02\",beid:\"0N0K0R0C0S1R121M1D17\",\"beid \":\"120E\",beide:\"0N0Y0R0E120U\",beidh:\"0S6U\",beids:\"120F\",beidz:\"1D32\",bein:\"0M0P0N0A1206130C\",being:\"0M0Y\",beir:\"0P050S0O\",beirt:\"0S2K\",beit:\"0N2A\",\"beit \":\"03030N1L\",beite:\"0N1U\",\"bej \":\"1Q6N\",bejd:\"0Z2A\",bejde:\"0Z2K\",beke:\"0B160R0J0Z021403\",beker:\"0B2B0R02\",bekl:\"0N030R030Z03100212091F2A\",bekle:\"0N021F2B\",beko:\"010S0N0L\",bekom:\"010Q0N0Z\",beky:\"0Z071002120C\",bekym:\"0Z091002120C\",belaj:\"0B3L1O0I\",belan:\"010V0B0Q0R0X1O0G\",bele:\"0N060P080R0E0Z02141H15091F031O0B\",\"beli \":\"0B2W1403\",belie:\"0M140N08\",belk:\"1F0M1N0U\",belki:\"1F0U1N12\",belle:\"0L200N020O060Q080R0G\",belo:\"010N0M060N020P0L0R0F0V031O05\",belu:\"0B2J0V021505\",belum:\"0B4X\",\"bem \":\"03030P2V0T0N0U021A02\",bena:\"0B3E0N03\",benar:\"0B6H\",\"bene \":\"0N030Q1X0T1M\",beni:\"0Q030R020T070V021F6U\",\"beni \":\"1F3T\",benim:\"0N021F5S\",benn:\"0302141Y\",benne:\"141M\",beno:\"010Q1B031O02\",benod:\"010Q\",\"bent \":\"030D0L020R3K0T0T0Z0514091B0H\",bente:\"0N020T0Z\",beo:\"0T11\",\"beo \":\"0T1Y\",bep:\"01070B030R0214021B071F041Q09\",\"bera \":\"04IX0Q050T05130H1O09\",berad:\"0B1S\",beran:\"0B241O03\",berap:\"0B6H\",berba:\"0B2B1F06\",berbi:\"0B3C0Z06\",berd:\"03040B0W0D070P051F021N26\",berdi:\"0B0J1N2Z\",\"bere \":\"04AA0Q0F0T1M0U050Z04150C1F021O02\",berek:\"141W\",beren:\"0B1F0R0K0Z0214021N14\",bergi:\"132J\",berh:\"0B2F0N0D\",berha:\"0B2R0N0L0R02\",berhe:\"0B1X\",\"beri \":\"0B270D030Q080T0G14081F0U\",berik:\"0B2J\",berit:\"0B2P\",berj:\"0B1B13061N0J\",berja:\"0B1Y130E\",berk:\"030E0B20\",berka:\"030W0B2B\",berla:\"0B1K0N04\",berm:\"0B1K0N030O031N2C\",berma:\"0B2N\",berme:\"0O031N2W\",berna:\"0B070N030O040T11\",berni:\"0B0A1B1E\",bero:\"0B050O020Q180R0D0T0P10041O03\",\"bero \":\"0Q181O02\",berp:\"0B120N02\",bersa:\"0B2S0T02\",bersi:\"0B1D0D04\",berta:\"0B1S0O0A0P0E0T0A1506\",berte:\"0B3H0O040U020Y0A1O03\",beru:\"0B1I0N070T020U020Z0410031405\",berä:\"1015\",berät:\"1014\",berí:\"0O1T\",bería:\"0O2E\",berø:\"0Z0B1205\",berý:\"1N13\",berýä:\"1N1G\",\"bes \":\"030A0D030L0B0N020O1D0P080T121B021P1I\",besa:\"0B1M0D020N020O050V05\",besar:\"0B360O04\",besc:\"0N100R0W0T03151Z\",\"besc \":\"152J\",besch:\"0N1P0R18\",bese:\"010F0D0A0N030R030Z02\",beses:\"0D0I\",besi:\"011L0M020N0B1B041F03\",besig:\"011B\",besk:\"010Z0V030Z0M1007120O\",besky:\"0Z0C120F\",besl:\"010N0R0U0Z0I100B12051F06\",beslu:\"010L0R030Z0M100A1204\",beso:\"010J0B140L1U0N0D0O03\",besoi:\"0L34\",besok:\"0B27\",bess:\"03040N130P031403\",besse:\"0N1T0P04\",\"best \":\"03030M0Q0R0G0T0E120C130O1F04\",beste:\"010L0N1R0R190Z08121L\",bestu:\"010K0R08\",bestä:\"0N05100O\",besz:\"1466\",beszé:\"1468\",besö:\"100G\",besök:\"100G\",besø:\"0Z0L120Q\",besøg:\"0Z0Q\",besøk:\"120Q\",betaa:\"010T0R0J\",betal:\"0R0G0Z0T100L120O\",betar:\"100G1402\",\"bete \":\"100F\",beteg:\"1416\",beter:\"01100R1U1002\",betj:\"0Z0C\",betje:\"0Z0E\",bette:\"0M1B0N031F04\",bety:\"0Z0D100E120I\",betyd:\"0Z0G100D1206\",beu:\"010A0L030N030P080R0D0T021002\",beur:\"010N0L050R1D\",\"beur \":\"010G\",beurd:\"0R0V\",beve:\"0Q0B0R0714081B0Q1F0B\",bevei:\"1B1G\",bevi:\"0Q030R0B0Z0E1008120I1402\",bevis:\"0Z0D1007120H\",bew:\"01090N0E0R0A\",bey:\"030I0M0213031F0M1Q08\",\"bez \":\"0U160V0W0Y1D1A0Z1D18\",beza:\"0N0B0O0J\",bezo:\"0R0T1O1D\",bezon:\"1O2P\",bezp:\"0U0Q0Y0V1A0P\",bezpe:\"0U0Y0Y0Z\",beç:\"0P0E\",beý:\"1N0X\",beğ:\"1F0F\",beō:\"0T02\",beş:\"15061F0I\",bež:\"0Y0H1B02\",beș:\"151A\",beșt:\"1525\",bește:\"151N\",bg:\"03030N05\",bge:\"0N07\",bh:\"0N020SDY0T031Q07\",\"bh \":\"0S7D\",bha:\"0SA41Q0N\",bhai:\"0S6Y\",bhail:\"0S8E\",bhain:\"0S41\",bhair:\"0SE9\",bhar:\"0S4J\",\"bhar \":\"0SCR\",bharf:\"0S2K\",bhe:\"0S4B\",bhea:\"0S2F\",bhean:\"0S65\",bhei:\"0S2Y\",bheid:\"0S3A\",bheit:\"0S7Z\",bhf:\"0SC3\",bhfa:\"0S1P\",bhfac:\"0S49\",bhfu:\"0SBV\",bhfui:\"0SSF\",bhi:\"0T05\",bhl:\"0S0P\",bhr:\"0S31\",bhra:\"0S20\",bhraí:\"0S5G\",bhri:\"0S0M\",bhu:\"0S1L\",bhua:\"0S0O\",bhur:\"0S0Q\",\"bhur \":\"0S32\",bhá:\"0S0Y\",bhái:\"0S0X\",bhí:\"0S5T\",\"bhí \":\"0S6B\",biam:\"0P020Q3F1A08\",biamo:\"0Q3E\",biar:\"0B0M0O0E0Q0E\",bias:\"0B120M040O02\",biasa:\"0B23\",biat:\"0Q0Z\",biau:\"1B15\",\"biau \":\"1B1K\",biba:\"041R0T031Q09\",bibe:\"03020D020T0U0Z021002\",bibi:\"041G0B040D0B0T14\",bibo:\"04260T0C1Q09\",bibon:\"043V\",bica:\"0B2C0O020Q040T0O0V031403\",bicar:\"0B4K\",bicu:\"0T0Z0Y0D\",bicul:\"0T0Y\",bido:\"0O0L0P071Q0Q\",\"bie \":\"0R021A3U\",biel:\"0Q0I0R050Y101C12\",biell:\"1C1H\",bien:\"0L5A0N030O320P030Q020Z021A0C1O02\",\"bien \":\"0L7V0O3E\",bier:\"0N0D0O190Q040R0D0T030Y081A0S1O06\",biet:\"010Z0N070Q051A0Q\",bietj:\"0112\",biez:\"1D13\",biež:\"1D1E\",bieži:\"1D3C\",bif:\"040T\",\"big \":\"0D0M0M0F\",biga:\"0D0T\",bigan:\"0D0S\",bigay:\"0D0H\",bige:\"041O0N02\",bigi:\"042R\",bigir:\"044K\",bih:\"040V0B2B0D0E0V1K1Q1M\",\"bih \":\"0B4D0V1W1Q1N\",bihi:\"0D0N\",bihin:\"0D12\",bii:\"0T0815051F02\",bij:\"040D0B020R170U040V0P1A061B0O1D961Q17\",\"bij \":\"0R2Y1Q07\",bija:\"0V071A041B0E1D931Q1F\",\"bija \":\"0V081A021DK6\",biji:\"1D0X\",bijn:\"0R0P\",bijna:\"0R0Y\",biju:\"1D1N\",\"biju \":\"1D2K\",\"bik \":\"14031P8W\",bike:\"041O0M03\",biko:\"046F\",bikor:\"04AA\",biku:\"042Z0B06\",\"bila \":\"03160B0E0D030U0J0V4Y0Y191O02\",bilan:\"0B250D0N\",bild:\"0N0N100L120R1D0S1F171N0O1O08\",bilde:\"0N0G100A120R\",bildi:\"1F1N1N0V\",\"bile \":\"0L060M020Q270T0I0V0D150N1F191N0N\",bilec:\"1F2F\",bilem:\"0T051F031N2M\",bilen:\"0Z0M100N120Y1F091NI9\",biler:\"0Z071F031N5Y\",bilgi:\"1F14\",\"bili \":\"0D0A0Q0E0T020U070V260Y0T15051A081P0I\",bilir:\"1F8E\",bilis:\"0D0J0L040T0B0Z021B0R\",biliy:\"1F5B\",bilj:\"0V0D10071N1J\",bilje:\"10071N24\",bille:\"0L0F0O070Z0U12071402\",bilm:\"0Q0H1F3D1N7G\",bilme:\"0Q0I1F1V1N9Z\",bilmi:\"1F2S\",bilo:\"0D030U080V2914021O061Q06\",\"bilo \":\"0D020U0A0V5L1O04\",bilt:\"0Z0A10021402\",bilý:\"1N6Q\",bilýä:\"1N8S\",bime:\"043K0T041Q0I\",bimen:\"044Q\",bindi:\"042Z130E1F07\",\"bine \":\"0Q020T0315571F03\",bing:\"0B0A0D0F0M031B0B1Q0N\",\"bing \":\"0D0G0M03\",bini:\"0D0H0Q0K1B091F06\",binn:\"010J0R0U\",binne:\"010K0R15\",bino:\"0Q0D1B0F1O0H1PSG\",binob:\"1P92\",binof:\"1P5H\",binol:\"1P6C\",binom:\"1PLB\",binon:\"1O041PA0\",binos:\"1P4I\",bint:\"042V0B0F0D0C1B0J\",binta:\"0B0T0D0H1B05\",bintu:\"044K\",binö:\"1P1L\",binön:\"1P1U\",\"bio \":\"0O0C0P040Q060T030V4Q10041O02\",bip:\"1Q0J\",biq:\"0T031Q3T\",\"bir \":\"03030B060O0M0P031FP91N8K1Q0U\",bira:\"030204F91F2E1N1G1Q0G\",\"bira \":\"04641F09\",birab:\"044Q\",birah:\"042S\",birak:\"043C\",biraz:\"1F2X1N1Z\",bire:\"045V0T0615071F031N0D\",\"bire \":\"043C0T0615051F02\",biren:\"0302044Q\",biri:\"049J1F3A1N2X\",\"biri \":\"030304D21F1J1N1U\",birin:\"1F1M1N1E\",birk:\"14041F11\",birka:\"1F1E\",birl:\"0O021F1R\",birli:\"1F1T\",birn:\"1N0X\",birnä:\"1N17\",birr:\"0Q0X\",birço:\"1F14\",bisa:\"04220B8D0D021Q0I\",\"bisa \":\"04220BDQ0D02\",bisak:\"0B1S\",bish:\"044J0N02\",bisho:\"043I\",bisi:\"041D0B040D091F0F\",bisk:\"0B0C0Z0B10051205\",biso:\"0Q271Q0I\",bisog:\"0Q28\",bist:\"0N1P0O030Q020T040V0A1A031F02\",\"bist \":\"0N2U\",\"bit \":\"03070B040D040M0E0T290U0F10031402151A\",bita:\"044G0D070L050O0X0P060Q0L0T30100315041O051Q0A\",bitab:\"043I0T09\",bitac:\"0O10\",bitat:\"0Q030T1B\",bite:\"044X0L0I0M030T0A10021F021O06\",biteg:\"0441\",bith:\"0S28\",\"bith \":\"0S8M\",biti:\"0D020L030M020Q040R020T0H0V1I1F0S\",\"biti \":\"0Q030V3T\",bito:\"04150O040P040Q0I0T100U021507\",\"bito \":\"0O030P030Q0I0T0Y\",bitt:\"0M020N1P0R020Z02100312051F08\",bitte:\"0M020N2U0R030Z02\",bitu:\"0D030L0O0O030Q0C0T0U15041Q07\",biu:\"0P020T041A0A1B05\",biv:\"04150V031Q0K\",bivu:\"04321Q0E\",bivug:\"0447\",biw:\"040D1Q03\",biy:\"040I0D041F0D1Q0E\",\"biz \":\"03021F2M1N5K\",bize:\"1F161N1F\",\"bize \":\"1F1M1N1X\",bizi:\"043O0Q031F1X1N39\",\"bizi \":\"044X1F0V1N14\",bizim:\"1F1S\",biziň:\"1N2C\",bizo:\"041Z140V\",bizt:\"1429\",bizto:\"142D\",biè:\"0L06\",bié:\"0O0Q\",bién:\"0O13\",\"bién \":\"0O1G\",bió:\"0O0F\",\"bió \":\"0O0M\",bić:\"0V0B1A1S\",\"bić \":\"1A2L\",bię:\"1A12\",\"bię \":\"1A1J\",bił:\"1A1Q\",biş:\"15021N0I\",biť:\"0Y27\",\"biť \":\"0Y3S\",bjer:\"0Z0A\",bju:\"100C\",bjud:\"100H\",bjó:\"130M\",bjö:\"1006\",bjø:\"0Z031202\",bk:\"0B020U020Y031A0C1D04\",bka:\"0B031A02\",\"bla \":\"03050O0T14021O0Y\",blaho:\"0Y10\",bland:\"0O0J0Z0B100J\",blar:\"0O1Q\",\"blar \":\"0O20\",blas:\"0N030O080U030V051O11\",\"blas \":\"0O091O22\",\"ble \":\"0D040L5G0M340O2T0Z0J123F1O1D\",blee:\"010J0R161C0S\",bleem:\"010I0R0Z1C1V\",blei:\"0N0Z\",\"blem \":\"03020M0O0N0Q0V1K0Z0F100G120I1A0U1F03\",blema:\"0D0I0O1R0P170Q0V0T050V0Q150Y1A021B0U\",bleme:\"0L0Y0N0E0O0G0R0L0V0D0Z0O100B120X150Y1A05\",blemo:\"0O021B071O1F\",bler:\"0L040O020Z0T1002\",\"bler \":\"0L050Z0U1002\",bles:\"0L1C0M060O0M0U02130A\",\"bles \":\"03020L1H0M060O0T\",blev:\"0R070Z41101Q\",\"blev \":\"0Z3V101Q\",bleve:\"0R0A0Z14\",\"bli \":\"0L0210181225\",blia:\"0O020P020S110T02\",blic:\"0L080M060N0P0O0E0P0D0Q0F0R020T0Y1008150I1A07\",blie:\"012E0L0L0N0B0R20\",blief:\"012I0R2I\",blij:\"0R261B031Q0M\",blijf:\"0R11\",blijv:\"0R13\",blik:\"0N030R080U020V050Z0H120K13061A021O09\",blikk:\"0Z07120J\",blir:\"100W1229\",\"blir \":\"0L02100W1229\",blit:\"0N020T0H1210\",blitt:\"120Z\",bliv:\"0T090Z2O100F\",blive:\"0Z33\",blivi:\"0T09100E\",blk:\"0U090Y0K\",\"blo \":\"0O0R1O0H\",blod:\"0Z0B100812091P2J\",\"blod \":\"0Z0510051P19\",blodi:\"1P14\",bloe:\"0R11\",bloem:\"0R0S\",bloga:\"1B1G\",blom:\"010H0Z0N100I120D\",blomm:\"0Z02100H\",bloms:\"0Z0Q120D\",bly:\"01190M0G0Z03100512021B02\",\"bly \":\"012K0M0U\",blä:\"0N0210021P0D\",blå:\"0Z06100B1208\",\"blå \":\"0Z0D10061209\",blæ:\"0Z03\",blè:\"0L0O\",blèm:\"0L14\",blème:\"0L1W\",blé:\"0L040O020U0U0Y0D140G\",blém:\"0U1A0Y0N1414\",\"blém \":\"0U130Y0J\",blí:\"0U0O0Y0C\",bló:\"0O03130F\",blö:\"0N0210041P0F\",blø:\"0Z02\",blē:\"1D0Q\",blēm:\"1D0U\",\"bn \":\"0Z02\",bne:\"0V020Y0D0Z091A071Q04\",bned:\"0Z09\",boa:\"0M050P0R15071O02\",\"boa \":\"0P0P\",bobs:\"1P12\",\"bobs \":\"1P19\",boc:\"0O080P070Q05140C1A021Q05\",bodd:\"1008120F\",body:\"0M180Y08\",\"body \":\"0M1L0Y0A\",boe:\"01160R0T0Z081203\",boed:\"0Z09\",boek:\"012A0R2M\",\"boek \":\"011R0R2H\",boeke:\"010K0R0Z\",bof:\"1P1E\",\"bof \":\"1P1A\",\"bog \":\"0D030V130Z1A\",boge:\"0N020Z0G\",bogen:\"0N040Z0J\",bogh:\"0Z021QEH\",\"bogh \":\"1QJJ\",\"boh \":\"0Y15\",boho:\"0B0I\",boi:\"0L0Q0P04150A1A05\",boj:\"0U0V0V0J0Y0T1A091B041D0N1O0H1Q08\",bojí:\"0U100Y0R\",\"bok \":\"0D05100V120L14021A06\",boka:\"04151002120A1402\",boke:\"100S1211\",boken:\"100S1211\",\"bola \":\"0B0J0D030O020P070Q020Y43\",bolan:\"1N3O\",bolar:\"1N3I\",bold:\"0Z0E141F1F061N2U\",boldo:\"141F\",boldy:\"1N38\",boleh:\"0B39\",\"boli \":\"0V0D0Y2T1A0C\",bolj:\"0V1O1N0V\",bolja:\"1N17\",bolje:\"0V2L\",boll:\"0O020Q05100F1305\",bolm:\"1F021N59\",bolma:\"1F021N75\",bolo:\"0O020P0E0Q020Y2J140B1B05\",\"bolo \":\"0O020P0F0Q020Y351B0A1O02\",bols:\"0O0C0P091N3A\",bolsa:\"0O070P071N3W\",bolu:\"0T021D0K1F031N3K\",bolup:\"1N3O\",bolý:\"1N2P\",bolýa:\"1N3Q\",\"bom \":\"0P1F0R020V0K1P341Q0Y\",\"bon \":\"0D070L1N14041O0J1P0I\",bona:\"049D0Q020T0X1O2F\",\"bona \":\"04E00T0N1O2O\",bone:\"04150B040M020P040R021O1T1Q0F\",\"bone \":\"1O36\",bong:\"0D0E1O051Q0I\",\"bong \":\"0D0Q1Q0U\",boni:\"0O0E0P0L0T0F1O07\",bonit:\"0O0I0P0R\",bonn:\"0L1F\",bonne:\"0L2E0R020Z02\",bonu:\"0T1C1O02\",bonum:\"0T0U\",bonv:\"1O11\",bonvo:\"1O1X\",bony:\"043R1406\",bonye:\"046M\",\"bor \":\"0M020O040P020T0M0U030V030Z1D1013121H1407\",\"bora \":\"04S60P0O0V08\",borav:\"0T060V1O\",borde:\"0L050M030O030R020Z0T101S120Q\",bore:\"010J0M040N090R0E0T0W1O05\",\"bore \":\"010I0T0B\",boro:\"0T05140A1O0X\",bort:\"0Z0A1011120W140B1Q06\",\"bort \":\"0Z05100K120B140B\",borte:\"120G\",borð:\"1326\",borða:\"132V\",\"bos \":\"0D030O0B0P0C0R050T081B1U1P0R\",bosa:\"0B0I\",bose:\"043V\",\"bose \":\"046S\",\"bot \":\"03020D090N050R020U021407\",both:\"0M0S\",\"both \":\"0M0X\",bott:\"010S0L020M050Q0D100411021403\",botte:\"010T0L021002\",\"bou \":\"010H0P0E0U1D0Y1I\",boug:\"0L090M0I\",bough:\"0M0P\",bout:\"0L0Q0M39\",\"bout \":\"0L0K0M4F\",bouw:\"0R0L\",bovü:\"1P1B\",bovül:\"1P1J\",bow:\"0M021A0T\",box:\"0M04\",boy:\"040H0D020M0A1F0W\",boz:\"0Y0B14061F0B\",boî:\"0L06\",boý:\"1N0S\",boş:\"1F0N1N0B\",bož:\"0U060V070Y0K\",bp:\"0S091Q0A\",bq:\"1Q04\",brag:\"0Z081309\",\"bras \":\"0L0H0O120P060T031O02\",bratr:\"0U18\",brau:\"0N1J130K1B031D15\",brauc:\"0N2E1D21\",brav:\"0L020M020P070Q1A1O02\",brava:\"0P030Q0Q1O02\",brea:\"0M0O\",break:\"0M0J\",bred:\"0Z0B10081204140A\",bree:\"010S0R0A\",breek:\"010P0R09\",breng:\"0D030R16\",bres:\"0L0M0O0T0P040T021406\",\"bres \":\"0L100O100P040T02\",brev:\"0O090P0D0Q050T0H0Z0S100G120M\",\"brev \":\"0Z0O100A120A\",\"bri \":\"0L020P030Q0T0T0K0V031505\",bric:\"0L020N020O070P040Q0L0T06150B\",brie:\"010V0L020M040N0J0O060R0T150G\",brief:\"010P0M020N0W0R0Q\",brig:\"0M030N050O060P0T0Q050V031306\",briga:\"0P0Y0Q040V061O02\",bril:\"0D030L060N060O090P090Q030R080Z0E12061O07\",brill:\"0L0A0N0A0O090Q030Z0H1206\",bring:\"0M0C0N1M0Z0910061205140C\",\"bro \":\"0D0E0O1P0P0N0Q1O0T080U030V1L0Z0310021O15\",broe:\"01140R160Z03\",broer:\"01100R1B\",brok:\"0M0D0R0A0V02\",brol:\"1B1E\",broli:\"1B2G\",\"bron \":\"0R0310041O1R\",bror:\"0T030Z0U100S120R\",\"bror \":\"0Z0X100P1209\",brore:\"120H\",bros:\"0L030O0U0P050T0O0V0413091O02\",\"bros \":\"0O0Z0P050T0P\",brot:\"0M0E0N0A1008130B\",broth:\"0M0J\",brud:\"0N0F0Z081A07\",brug:\"0R050Z2O\",\"brug \":\"0R060Z1S\",bruge:\"0Z17\",brui:\"01110L0A0R1I\",bruik:\"01100R1S\",bruk:\"100I121K\",bruka:\"100H\",bruke:\"1212\",brum:\"0T21\",\"brum \":\"0T25\",bry:\"0Z0A100F12091A0P\",bryd:\"0Z0I\",bryde:\"0Z0M\",bryt:\"100712091A03\",brz:\"0U0N0V0K1A1E\",brze:\"1A1K\",\"brze \":\"1A2E\",brzy:\"0U0U1A06\",\"brzy \":\"0U16\",brá:\"0O070U0L0Y0Y130C1402\",brä:\"1006\",brå:\"1005\",bræ:\"0T030Z091303\",bræn:\"0Z0E\",brænd:\"0Z0H\",bré:\"0L040U0B0Y0H130I\",brí:\"0O0A\",bró:\"0O02130H\",brö:\"100M\",bröd:\"100G\",brø:\"0Z0A1209\",brød:\"0Z0Q120I\",\"brød \":\"0Z0N120A\",brû:\"0L04\",brý:\"0U0O0Y0R1303\",\"brý \":\"0U0P0Y15\",brā:\"1D0T\",brī:\"1D2B\",brīv:\"1D11\",brō:\"0T02\",\"bs \":\"03020M040T091D1L1P8O\",bsc:\"0L020N060T06\",bse:\"030A0L070M030O050P070T07150A1A031O04\",bsi:\"03080N030T021B021P0U\",bsik:\"1P12\",\"bsik \":\"1P17\",bsq:\"0T02\",\"bst \":\"0N1F\",bsu:\"0O020T021503\",bsö:\"1P0Q\",bsöd:\"1P0R\",\"bt \":\"030U0M040N1O0R0L0Z0H100A\",bta:\"14031Q0K\",bte:\"0L050N090O030P030T030Y050Z0G1O04\",\"bte \":\"0N0D0Z16\",bti:\"0L021B0F\",btu:\"0T03\",\"bu-\":\"0303\",bua:\"0B320S13\",buac:\"0S0T\",buach:\"0S3A\",buah:\"0B2U\",\"buah \":\"0B5B\",buan:\"0B0G\",buat:\"0B2S\",\"buat \":\"0B3K\",bub:\"0309040I0D05\",bubu:\"0D070T02\",buch:\"0N191A06\",\"buch \":\"0N1R\",bude:\"0U4Y0V1X0Y6I\",\"bude \":\"0U4J0V2B0Y3G\",budem:\"0U0T0V1S0Y2V\",budet:\"0U0E0Y0Y\",budeš:\"0U1B0V0S0Y15\",budo:\"0U0V0Y191A0A1B03\",budou:\"0U0W\",budu:\"0U1N0V0F1F04\",\"budu \":\"0U2B0V0E\",budú:\"0Y13\",bue:\"0L020O250T02\",buen:\"0O2S\",\"buen \":\"0O13\",buena:\"0O1D\",bueno:\"03030O19\",bugü:\"1F1S\",bugün:\"1F2F\",buh:\"040L0B080D0K\",buha:\"0D0T\",buhay:\"0D1A\",buho:\"04110D08\",bui:\"010E0M080P020Q050R0C0T0E156L\",\"bui \":\"0T07152V1B02\",buie:\"156U\",\"buie \":\"158N\",buil:\"0M0E\",buit:\"010M0R130T0F1511\",buite:\"010N0R1G\",buj:\"040G0B030O050U1V0Y1Z1A12\",buje:\"0U1L0Y391A0Q\",\"buje \":\"0U0Z0Y0K1A0K\",bujem:\"0U0J0Y2G1A0B\",buji:\"0U0Z\",\"buji \":\"0U1C\",\"buk \":\"0B0Y1F061P1D\",buka:\"042H0B3E0D0R0V05\",\"buka \":\"04410B1K0V0B\",bukan:\"0B520D0J\",bukas:\"0D0U\",buke:\"041R0V04\",buki:\"0B050D031P39\",\"buki \":\"1P31\",buku:\"0B2Q0V04\",\"buku \":\"0B4M0V0A\",bulu:\"0T061F18\",\"bum \":\"03030T1S\",buma:\"0D0F\",bumi:\"0B0C0D0E\",bumil:\"0D0K\",\"bun \":\"03050B081521\",bung:\"041G0B1A0D030N09\",bunga:\"0B1I0D04\",bunu:\"0B0I1F7R\",\"bunu \":\"1F8E\",bunun:\"1F2C\",buny:\"0B0M1N0N\",bună:\"1526\",\"bună \":\"152E\",buo:\"0D070Q101B0H\",buon:\"0D0C0Q1M\",buong:\"0D0M\",bura:\"043D0B070P0315061F46\",\"bura \":\"044K\",burad:\"1F4D\",burd:\"0Z0K120S\",burde:\"0Z0O120S\",buri:\"0302041V1506\",buru:\"0302041O0B1F\",bury:\"0422\",buryo:\"043I\",busc:\"0O0U0P07\",busca:\"0O0Z0P08\",buss:\"0Z0K100I110L120K14061C0S\",busse:\"0Z0M1009120C\",bussi:\"111H1C1E\",busy:\"0M0F\",\"busy \":\"0M0L1A02\",\"but \":\"030K0B170L0D0M2B\",buta:\"0B0A0D060L0214081B02\",\"buti \":\"03030D0F\",butik:\"0Z0I1005120B1O0E\",butu:\"04110B15\",butuh:\"0B29\",buu:\"0R04\",buv:\"0L031B6J\",buva:\"0L021B1L\",buvau:\"1B2J\",buvo:\"1B8T\",\"buvo \":\"1BG0\",buw:\"0D06\",buwa:\"0D0A\",buwan:\"0D0J\",buy:\"040M0M0H1F031Q03\",\"buy \":\"0M0T\",buz:\"0303040W0U020V02150N1F07\",buč:\"0V021B0B\",buď:\"0U0D0Y0U\",buŝ:\"1O04\",buž:\"1B08\",bv:\"0T020U070Y021Q03\",bve:\"0T021Q03\",bvi:\"0M020O020P030T020U040Y04\",bw:\"042T0N031Q04\",bwa:\"043K\",\"bwa \":\"047V\",bwe:\"0410\",\"bwe \":\"041Z\",bwi:\"045G1Q0E\",bwir:\"04CY\",bwira:\"043C\",bwiri:\"04HB\",bwo:\"041A0N02\",\"bwo \":\"0426\",bya:\"03041F02\",byc:\"0U3L1A03\",bych:\"0U5S\",\"bych \":\"0U6U\",bycho:\"0U19\",byd:\"0U0J0Z02\",bydl:\"0U0W\",bydlí:\"0U0W\",bye:\"0D020Z0A120G\",byen:\"0Z0L1213\",\"byen \":\"0Z0N120X\",byg:\"0Z07100D1209130D\",bygg:\"0Z0C100H120E130M\",bygge:\"0Z0F120E\",byl:\"0L070M060U7D0Z041A0G\",\"byl \":\"0U6I\",byla:\"0U2E\",\"byla \":\"0U3C\",byli:\"0L030M060U0X0Z051A0M\",\"byli \":\"0U1A1A0M\",bylo:\"0U28\",\"bylo \":\"0U33\",bym:\"1A22\",\"bym \":\"1A2Z\",byn:\"1003\",byr:\"1202130U1N09\",byrj:\"1315\",byrja:\"1321\",bys:\"0U1Y1305\",\"bys \":\"0U2A\",byst:\"0U0W\",byste:\"0U18\",byt:\"01080U0G0Y0C100B1A0Q\",\"byt \":\"010J0U060Y081A0Y\",byx:\"1003\",być:\"1A1G\",\"być \":\"1A23\",był:\"1A5X\",\"był \":\"1A35\",była:\"1A1R\",\"była \":\"1A2F\",byłe:\"1A1E\",byłem:\"1A1S\",było:\"1A24\",\"było \":\"1A36\",byś:\"1A16\",\"byś \":\"1A1E\",byť:\"0Y1T\",\"byť \":\"0Y33\",bz:\"0N020V02\",bá:\"0S0I0U0F0Y0M1304142B\",bál:\"0U080Y051415\",bán:\"0S0K140H\",\"bán \":\"0S0M1407\",bár:\"0Y05140R\",bás:\"0O020S0M0U030Y0E1403\",\"bás \":\"0S0Q1404\",bát:\"0U070Y0A1305140U\",bât:\"0L05\",bä:\"0N050Y03100J1N1I1P0O\",bäb:\"1N0G\",bäl:\"1P0Y\",bän:\"1003\",bäp:\"1N0F\",bär:\"0N02100A1N1T\",bärd:\"1N15\",bärde:\"1N1L\",bäri:\"1N1G\",\"bäri \":\"1N1E\",bäs:\"100F\",bäst:\"100K\",bät:\"0Y06100J\",bätt:\"100P\",bättr:\"100P\",bäu:\"0N04\",bå:\"0Z0510081204\",båd:\"0Z05100D1204\",både:\"0Z0A1005120A\",båg:\"1003\",bån:\"0Z02\",båt:\"10061202\",bæ:\"0Z051203130L\",bæk:\"130L\",bækur:\"1322\",bær:\"0Z0612051309\",bé:\"0L070O070P090S0J140Q\",\"bé \":\"0L0C0O071409\",béa:\"0S1J\",béar:\"0S18\",béarl:\"0S4Z\",béb:\"0L05\",bée:\"0L04\",béi:\"0L030O0A\",bél:\"140C\",bém:\"0P10\",\"bém \":\"0P18\",bés:\"0L020O03\",bê:\"0P02\",\"bê \":\"0P05\",bêb:\"0P04\",bêt:\"0L05\",bí:\"0O0M0S0B0U120Y0M130W140I\",\"bí \":\"0O060U160Y0M\",bía:\"0O1U\",\"bía \":\"0O2F\",bíl:\"0U08131G\",bím:\"0U020Y0H\",bío:\"0S0I\",bír:\"0U05140H\",bíz:\"140E\",bó:\"0O03130U140V1A08\",\"bó \":\"0O08\",bók:\"131R\",\"bók \":\"1318\",bókin:\"1326\",ból:\"141K1A05\",\"ból \":\"143W1A05\",bón:\"0O02\",bö:\"0N02100M130C14081F0F1N091P1C\",böc:\"100H1F02\",böck:\"100N\",böcke:\"100N\",böd:\"1P0M\",böj:\"1003\",böl:\"14031F0C1N0D\",bön:\"1P1E\",\"bön \":\"1P1R\",bör:\"1017130M1404\",börj:\"101D\",börja:\"101D\",böy:\"1F0R\",böyle:\"1F16\",bø:\"0Z0Q120K\",bød:\"0Z02\",bøg:\"0Z0A\",bøge:\"0Z0S\",bøger:\"0Z0Y\",bøk:\"120B\",bøke:\"120T\",bøker:\"120K\",bøl:\"0Z02\",bøn:\"0Z02\",bør:\"0Z0N120G\",\"bør \":\"0Z0B1211\",børn:\"0Z1C\",\"børn \":\"0Z18\",børne:\"0Z0E\",bøy:\"1202\",bú:\"0O030Y0513131405\",búa:\"130J\",búi:\"131B\",búin:\"131N\",búinn:\"1328\",bús:\"0O08\",bü:\"0N0914061F1I1N0F1P0J\",büc:\"0N07\",bür:\"0N051F031P0G\",büs:\"14051F0G\",büt:\"1F1C1N0M\",büti:\"1N0U\",bütin:\"1N16\",bütü:\"1F1I\",bütün:\"1F21\",büy:\"1F23\",büyü:\"1F2E\",büyük:\"1F2S\",bý:\"0U150Y0E130A\",být:\"0U1N\",\"být \":\"0U2N\",býv:\"0U0O0Y0Y\",býva:\"0U0W0Y1M\",býval:\"0U13\",bā:\"1D10\",\"bā \":\"1D1X\",bāk:\"1D1F\",\"bāk \":\"1D11\",bă:\"150Y\",\"bă \":\"151B\",băi:\"150K\",băr:\"150V\",băt:\"150P\",bą:\"1A0J1B0G\",\"bą \":\"1A0U1B18\",bč:\"0U030Y03\",bē:\"0T051D0R\",bēb:\"0T02\",bēj:\"1D0Y\",\"bēju \":\"1D1W\",bēr:\"1D1E\",bērn:\"1D1S\",bērni:\"1D2F\",bēs:\"0T07\",bēt:\"1D0N\",bė:\"1B1Q\",\"bė \":\"1B0G\",bėg:\"1B0L\",bėj:\"1B17\",bėjo:\"1B13\",\"bėjo \":\"1B1T\",bėk:\"1B0G\",bės:\"1B0I\",bėt:\"1B1F\",bėti:\"1B26\",\"bėti \":\"1B46\",bę:\"1A1D1B05\",\"bę \":\"1A081B0C\",będ:\"1A2M\",będz:\"1A2O\",będzi:\"1A49\",bě:\"0U14\",\"bě \":\"0U0Y\",běh:\"0U0H\",bī:\"0T021D08\",bīs:\"0T04\",bı:\"1F17\",\"bı \":\"1F0O\",bın:\"1F0D\",bır:\"1F1M\",bıra:\"1F1L\",bırak:\"1F26\",bĺ:\"0Y02\",bľ:\"0Y06\",bł:\"1A0G\",bō:\"0T02\",\"bō \":\"0T02\",bōr:\"0T04\",bő:\"140N\",ből:\"140Y\",\"ből \":\"142H\",bř:\"0U0I\",bře:\"0U0Z\",\"bře \":\"0U1I\",bš:\"1B02\",bū:\"1B1J1D1L\",būd:\"1B0A\",būk:\"1B0J\",būn:\"1B0A\",būs:\"1B0H1D1I\",\"būs \":\"1B021D1P\",būt:\"1B2F1D4V\",\"būt \":\"1B0S1D3H\",būti:\"1B2D\",\"būti \":\"1B3S\",būtu:\"1B051D21\",\"būtu \":\"1D58\",būč:\"1B0A\",bů:\"0U02\",bű:\"1405\",bų:\"1B05\",\"bų \":\"1B0E\",bț:\"1503\",bɣ:\"032H\",bɣa:\"034K\",\"bɣa \":\"032P\",bɣi:\"033L\",bɣiɣ:\"031O\",\"bɣiɣ \":\"033P\",bḥ:\"0307\",bṛ:\"0303\",\"c'\":\"040B0L150Q0F\",\"c'e\":\"0L530Q0B\",\"c'es\":\"0L8C\",\"c'est\":\"0LDF\",\"c'i\":\"040N\",\"c'u\":\"040D\",\"c'è\":\"0Q1D\",\"c'è \":\"0Q26\",\"c'é\":\"0L0L\",\"c'ét\":\"0L10\",\"c'éta\":\"0L1Q\",\"c-\":\"0305\",\"ca'\":\"1F02\",caa:\"0R02\",caba:\"0O1A0P0E0T051F02\",cabe:\"0O0S0P14\",cac:\"03080L0D0O0O0P0T0Q090T031A04\",cach:\"0L0H0O040P0W1A06\",cacho:\"0O030P13\",caci:\"03020O0U\",\"cad \":\"0S3E\",cada:\"0O1I0P160Q020T041F04\",\"cada \":\"0O1T0P191F05\",cado:\"0O1G0P16150C1O02\",\"cado \":\"0O1L0P151O03\",cae:\"0O060T1R\",\"cae \":\"0O030T12\",cael:\"0T14\",caf:\"03030L0E0O0G0P0L0Q0F0T02150M\",caff:\"0Q0P\",café:\"0L0M0O0N0P0O0R02\",\"café \":\"0L100N020O0U0P0U0R02\",cah:\"03040B06\",cai:\"0L0A0P0U0Q030S6X0T021505\",cail:\"0L020S2F\",\"cail \":\"0S2K\",cailí:\"0S65\",cain:\"0L0A0S130T04\",caint:\"0S3S\",cair:\"0L020M020P050Q020S24\",\"cair \":\"0P050S32\",caire:\"0L030S49\",cait:\"0S2L\",caith:\"0S8M\",caj:\"0O0B0V061A041O06\",cak:\"0B050M031F51\",\"cak \":\"0B041F4E\",\"cal \":\"0L050M0M0O050P070S0Z1509\",cala:\"0L020O070P070Q050T0Q1F0C\",call:\"0M1C0O0P0Q020T03\",\"call \":\"0M0R\",calle:\"0M0O0O0O\",\"cam \":\"0B0B0P080T3Q150H1A031F06\",cama:\"0B070L020O0M0P0G0V071F07\",camb:\"0L020O140Q13\",cambi:\"0O1F0Q12\",came:\"0L070M160O0F0P0B0Q0T0R050T0G151R\",\"came \":\"0M1G\",camer:\"0M050Q0N0R06151U\",cami:\"0L040O1D0P0Z0Q080T041A07\",camin:\"0O1B0P0V0T03\",camp:\"03030B040L090M060O0K0P0H0Q0D0T051505\",\"can \":\"0M3Q0O0815071F0D1O0G\",\"can'\":\"0M1T\",\"can't\":\"0M2H\",canad:\"0D050L0A0M080O0A0P0D0Q0Q0R0C0T050Z0E1509\",canc:\"0L0E0M040O0J0P050Q0610021505\",cand:\"0B0A0L050M040O0L0P0M0Q110T0C1505\",cando:\"0O0O0P0O0Q0T\",cane:\"04B70P070Q100T1Z\",\"cane \":\"04I90Q0Y0T04\",cang:\"0B0F\",cani:\"0L030O020Q0D0T221506\",canis:\"0T1F\",cank:\"044Q\",canke:\"0489\",cans:\"0M030O0S0P0P0T02\",cansa:\"0O0U0P0T\",cant:\"0B0I0L020M020O1M0P0W0Q130T18150A1O02\",canta:\"0O1K0P0N0Q0N0T0G\",canz:\"0O090Q1V\",canza:\"0O090Q1C\",cao:\"0S0I0V02\",capa:\"0B070L0G0M020O0R0P0K0Q07150C\",capi:\"0L080M040O0A0P0A0Q1S0T0T150D\",capit:\"0L0E0M050O0C0P0C0Q0S0T0C150E\",\"car \":\"03020B0H0L0H0M120O1C0P2Q0Q020T0315151F03\",\"cara \":\"0B700O0M0P0N0Q020T04\",care:\"03040L020M130O030P080Q2A0T0Q15A91F02\",\"care \":\"0M0O0Q2A0T0H15CA\",cari:\"0B0T0O080P080Q0I0T0T\",\"cari \":\"0B1E0T06\",carr:\"0L050M090O0K0P1V0Q0K0S1C\",\"carr \":\"0S58\",carro:\"0O0A0P1Y\",cart:\"03020L0H0O0X0P0Y0Q0G0T051526\",carta:\"0O0Z0P0S0Q08\",carte:\"0L0L0O080P090Q05152C\",\"cas \":\"0L0B0O1G0P0Z0T0S1D0M1O0O\",casa:\"0O3W0P4F0Q3B1515\",\"casa \":\"0O440P4C0Q3C151F\",case:\"0L020M090O040P020Q0L0T07150H\",casi:\"0L080M020O0X0P030Q080T03\",\"casi \":\"0O0Z\",caso:\"0O0O0P0I0Q0D\",\"caso \":\"0O0S0P0F0Q0D\",casă:\"1532\",\"casă \":\"153W\",\"cat \":\"0B0C0L060M090S130T121402155G1F02\",cath:\"0L030S110T03\",catha:\"0S3A\",cati:\"0L0K0M0D0O020P040Q090R040T0H\",cato:\"0O020Q2A0T0A\",\"cato \":\"0Q1X0T03\",catt:\"0Q0L0T03\",catu:\"0T0Y1505\",cau:\"0L0E0M0M0O0B0P0I0Q070T0S1515\",caus:\"0L0J0M0W0O0E0P0I0Q090T0Z\",causa:\"0O0F0P0K0Q090T0V\",cause:\"0L0R0M17\",cav:\"0L020O020P0J0Q0F0T0Z\",cava:\"0O020P0K0Q0I0T03\",cavi:\"0Q020T19\",cavit:\"0T13\",caw:\"0304040G\",cay:\"0302040D0B0J0O081F0A\",caya:\"0B121F05\",\"caya \":\"0B191F05\",caz:\"0O040P020Q09150C1F02\",caç:\"0P0G\",caí:\"0O040P03\",cağ:\"1F5F\",cağı:\"1F66\",cağım:\"1F3T\",cağın:\"1F3S\",cał:\"1A1F\",caț:\"150L\",cb:\"0302\",cca:\"030I0L060Q1B0T0H\",\"cca \":\"03030Q0S0T04\",cce:\"030N0L0C0M0C0O030Q1K0R030T160Z0310051408150Q\",\"cce \":\"0Q030T14\",ccep:\"0L0G0M060R040T0P0Z021004150M\",cces:\"0L020M080O030Q0Z0R070T050Z051407150G\",ccess:\"0L030M0B0Q0V0T05\",cch:\"0Q330T06\",cche:\"0Q0X\",cchi:\"0Q41\",\"cchi \":\"0Q0U\",cchia:\"0Q0W\",cchin:\"0Q1A\",ccia:\"0Q1Z\",\"ccia \":\"0Q10\",ccid:\"0L0H0M090O0J0Q0F0T15150N\",ccio:\"0O0S0Q1J\",\"ccio \":\"0Q0R\",ccion:\"0O110Q0Q\",cció:\"0O13\",cción:\"0O1F\",ccl:\"0T07\",cco:\"0L0P0M070Q2F0T05\",\"cco \":\"0M020Q1L0T04\",ccol:\"0Q0T\",ccor:\"0L0N0M030Q0O\",ccr:\"03020L06\",ccu:\"03050L0T0M050Q190T0P\",ccup:\"0L0Z0M020Q1R0T06\",ccupa:\"0L060Q1O0T06\",ccè:\"0L06\",ccū:\"0T03\",\"cd \":\"0609\",cea:\"0L040M020O020P040S5T0T0E15631A02\",\"cea \":\"0T03152O\",cean:\"0M030P040Q020S1N0T0A15081A021O02\",ceann:\"0S5G\",ceap:\"0S0Z1506\",ceapa:\"0S3J\",cear:\"0S3L150E\",ceart:\"0SC51505\",ceas:\"155X\",ceast:\"156O\",cebe:\"0P0I\",cec:\"0L0G0Q040T091A03\",ceci:\"0L0R0T0H1A03\",\"ceci \":\"0L1B\",\"ced \":\"03030M0T1402\",cedo:\"0O020P0L0Q050T02\",cee:\"0M020R02151R\",ceea:\"152W\",\"ceea \":\"153A\",cef:\"0307\",ceg:\"03020P060Q0414021A07\",cei:\"0L030M050O020P0U0S0P0T051517\",\"cei \":\"0P050T07151L\",ceis:\"0P030S0T0T02\",ceist:\"0S3A\",ceit:\"0O040P0I\",cej:\"0U020Y0D1A0V1O06\",\"cej \":\"0U020Y0N1A19\",cek:\"030A0B021F45\",\"cek \":\"03051F3G\",\"cel \":\"0O040U030Y23140315311A03\",cela:\"0B0H0L2K0O050P040T040U0C0V070Y0M150U1O04\",\"cela \":\"0L490U0H0Y0S150I\",celer:\"0O020P020T0W1F09\",cell:\"0L0Q0M060Q0N0T0F\",celu:\"0L0Q0O030P080V0215081A04\",celui:\"0L191506\",\"cem \":\"03090P0K0T270U0C0V040Y4M150Y1A0D1P0R\",\"cen \":\"030D0O120U030Z051402\",cena:\"0O0O0P020Q0K0T0R0U060V051A041F02\",cend:\"041K0L0F0O0D0P0K0Q1F0T1S15061O02\",cendo:\"0P0H0Q120T03\",cens:\"0L080M030O050Q040T11\",\"cent \":\"03040L0V0M0C0R0C0T0Z0U030Z071003150B1A041O0J\",cenz:\"0Q0L1505\",ceo:\"0S0T0T070V09\",cepa:\"0B11\",cepat:\"0B22\",cepi:\"0O030T121504\",\"cer \":\"03020L0S0M070O3R0P1I0T050Z041002150O1A04\",cerc:\"0L030O130P090Q2I1525\",cerca:\"0O1C0P0B0Q28151J\",\"cere \":\"0Q1P0T4F151R1F021O03\",ceri:\"0B0L0L050P040Q020T0W150K1F03\",cerl:\"0O0W0Q04\",cerlo:\"0O100Q02\",cerr:\"03030O0I0P02\",certa:\"0L1L0M0D0O020P0G0Q040T0C15071B041O0W\",certe:\"0L030O080P110Q040T060Z0314021O0Q\",certo:\"0P0T0Q0E1O06\",\"ceru \":\"0U091D1M\",\"ces \":\"0L370M0Q0O2W0P090R070T130Z05140615081A05\",cesa:\"0O0I0P060Q02150H1F061O0O\",cese:\"0P020Q1O1F031O05\",\"cese \":\"0Q1P1O06\",cesi:\"0O280Q030T0515061F071O0H\",cesit:\"0O2P1505\",cess:\"0L0V0M0H0P110Q1D0T1B0Z02\",cesso:\"0P0G0Q0S\",cest:\"0O030P030Q020U170Y1L1579\",\"cest \":\"155E\",cesta:\"0U081520\",ceste:\"0Y0A151V\",cestu:\"0U0K0Y0X150D\",\"cesz \":\"1A1S\",\"cet \":\"0L170T3S0U0J140B150I1A02\",cete:\"0Q080T0A0U0H0Y1C15071O04\",\"cete \":\"0Q080U0N0Y1N\",cetn:\"0T0S\",cetne:\"0T0U\",cett:\"0L4P0Q0M\",cette:\"0L7T0Q02\",ceu:\"0L0D0P1G0T021504\",\"ceu \":\"0P1Q1504\",cev:\"0L040Q0S151Z1F0Q1O0C\",ceva:\"0Q0M153A1F0S1O03\",\"ceva \":\"0Q0I1546\",cew:\"03040B05\",cey:\"03021F0A\",cez:\"0L020Q020V020Y0D15141F0B\",ceá:\"0S121402\",ceái:\"0S0V\",ceáil:\"0S3J\",ceğ:\"1F54\",ceği:\"1F5T\",ceğim:\"1F3T\",ceğin:\"1F3C\",ceļ:\"1D13\",ceš:\"0U0V0Y1B\",\"ceš \":\"0U1F0Y28\",cf:\"0304\",\"ch'\":\"0Q021Q0U\",\"cha \":\"0L060O1L0P0Z0S2N0U0A0Y0D1A0L\",\"cha'\":\"1Q5W\",\"cha' \":\"1Q6B\",chaa:\"0R0M\",chaf:\"0N1O\",chaft:\"0N1V\",chah:\"0N021Q67\",\"chah \":\"0N031Q7U\",chai:\"03020L150M060S5G\",chaid:\"0S49\",chail:\"0S5P\",chair:\"0L020M070S3J\",chait:\"03040L0C0S32\",chal:\"0L060M030N080U100Y0E1A071Q15\",\"chal \":\"0U0Y0Y0A1Q14\",cham:\"0L140M020N020O050P1D0R040T0210021A0I\",chama:\"0P13\",chamb:\"0L1A\",chang:\"0L1P0M0Z\",chant:\"0L1R\",chao:\"0S0O\",chap:\"0L0G0O020P070R0V\",chaq:\"0L0R0O031Q2M\",\"chaq \":\"1Q4H\",chaqu:\"0L1B0O03\",chara:\"0M040N050O030P020S3S1A041B07\",charr:\"0S2K\",chas:\"0L070M030O140P050S181A05\",\"chas \":\"0O1E0P060S4R\",\"chat \":\"03020L100R070U0T\",chath:\"0S3S\",chau:\"0L110N0S0R040Z061002\",chav:\"0O020P0I1Q08\",chaw:\"1Q4A\",\"chaw'\":\"1Q78\",chb:\"0N061Q0O\",chc:\"0U4L0Y7P1A4Y1Q0E\",chce:\"0U440YC91A2F\",\"chce \":\"0U2T0Y2E1A1R\",chcel:\"0Y3U\",chcem:\"0U0F0Y681A0A\",chces:\"1A1S\",chcet:\"0U0N0Y1N\",chceš:\"0U200Y2O\",chci:\"0U3H1A2X\",\"chci \":\"0U4T\",chcia:\"1A4F\",chcę:\"1A1V\",\"chcę \":\"1A2Y\",chd:\"0N041Q18\",chea:\"0M060Q080S50150C\",chean:\"0SB5\",chear:\"0S5X\",ched:\"0M0K\",\"ched \":\"0M0P\",cheg:\"0P1U0Q061Q3I\",chega:\"0P1K\",chegh:\"1Q5Z\",chei:\"0N1U0P0P0R0E150O\",chein:\"0N1T\",chem:\"0L0V0M020N080R030T030U0515091A071B02\",chemi:\"0L160M020N030R020U031A031B03\",cher:\"0L310M0M0N2Z0O030P020Q0R0R0H0T0S1Q0H\",\"cher \":\"0L2Z0M0N0N3K0P020T091Q0B\",cherc:\"0L1Z\",ches:\"0L0Z0M0F0N0U0O0D15061Q06\",\"ches \":\"0L1G0M0D0N1C0O0H\",chet:\"0L1R0Q06150D\",chete:\"0L1E\",cheté:\"0L17\",chev:\"0L0V0Q02\",chez:\"0L1G0Q03\",\"chez \":\"0L2C\",chg:\"0N04\",chh:\"0N051Q0L\",\"chi \":\"0L030Q410T03150N\",chia:\"0Q4O0T04152D\",chiam:\"0Q2C\",chiar:\"0Q0H152V\",chie:\"0L1C0M040N140Q330R181508\",chied:\"0N110Q1A0R08\",chien:\"0L200N0E0Q030R12\",chies:\"0Q1B\",chij:\"0R0R1Q0R\",chijn:\"0R10\",child:\"0M1D0N050R0I\",china:\"0M060N070O0D0P070Q170R070T0615071A03\",ching:\"0M0K\",chio:\"0L020Q0W\",\"chio \":\"0Q0T\",chiu:\"0Q0T0T02150D\",chk:\"0N09\",chla:\"0N1U0U0W0Y1V1Q1K\",chlad:\"0U0A0Y17\",chlap:\"0U0S0Y13\",chle:\"0N0Y0U130Y0E1A071Q0C\",\"chle \":\"0U0X\",chli:\"0N160U020Y0V1Q0H\",chlie:\"0N0U0Y0Z\",chlo:\"0N0M0S1G0U020Y101Q0O\",\"chlo \":\"0Y18\",chlog:\"0S4Z1Q16\",chm:\"0N0N1A0B1B031Q1Q\",chn:\"0L030M020N0W0U2R1A0K1Q04\",chne:\"0N1L0U02\",chni:\"0L030N090U1K14021A0G\",\"chni \":\"0U251A09\",chno:\"0L020M020R020U1P14021A02\",\"chno \":\"0U26\",chny:\"0U11\",\"chny \":\"0U1F\",\"cho \":\"0O5F0P2C0T040U050Y0H1A05\",chod:\"0U2G0Y2V1A3J\",chodi:\"0U0W0Y0S\",chodz:\"1A3S\",chodí:\"0U160Y14\",choh:\"1QBG\",\"choh \":\"1Q9Z\",choi:\"0L0N0M050S1C\",choin:\"0S2K\",chol:\"0M020N020R040T190U031A031B021Q0E\",chola:\"0T1C\",chom:\"0S2D0U0W1A021Q08\",\"chom \":\"0U19\",chomh:\"0S92\",chon:\"0L070N280R030S0X1Q0N\",\"chon \":\"0L050N3P\",chona:\"0S3J\",choo:\"0M150R1U\",chool:\"0M1G0R1R\",chor:\"0O030P1B0R020T0A0Y0Y1A0R1Q12\",chorr:\"0O030P12\",chos:\"0L3B0M030N040O1I0P021Q0M\",\"chos \":\"0O1V1Q0K\",chose:\"0L5K0M04\",chov:\"0P0H0U120Y0U1Q0A\",chra:\"0N070T1B0U060Y0D\",\"chra \":\"0T10\",chre:\"0N180R0Q\",chrei:\"0N1Q\",chrij:\"0R1G\",chs:\"0N17\",chst:\"0N1P\",\"cht \":\"0NLX0R9D0S86\",chta:\"0S491Q1E\",\"chta \":\"0S8M\",chtai:\"0S3S\",chte:\"0N700R4X0U05\",\"chte \":\"0N6G0R150U07\",chten:\"0N2C0R33\",chter:\"0N1G0R2J\",chti:\"0N1P0R1C\",chtig:\"0N2T0R1H\",chts:\"0N2D0R0O\",\"chts \":\"0N3B0R0J\",chtá:\"0S0M\",chtú:\"0S0V\",chtúi:\"0S2T\",chtě:\"0U32\",chtěl:\"0U3S\",\"chu \":\"0U1A0Y1G1A0C\",\"chu'\":\"1QB2\",\"chu' \":\"1QC8\",chua:\"03020S16\",chuai:\"0S3S\",chug:\"1Q70\",chugh:\"1QBL\",chui:\"0R030S3A\",chuid:\"0S2T\",chuir:\"0S7J\",chul:\"0N1N0R0T\",chuld:\"0N1A0R13\",chun:\"0N0D0S471A041Q0S\",\"chun \":\"0SFI1Q0X\",chur:\"0M040S0M\",\"chur \":\"0S2K\",chv:\"0U0E0Y0H1Q30\",chva:\"0U031Q47\",chvam:\"1Q6R\",chwe:\"0N1R0Z041002\",chwi:\"0N121A0M1Q19\",chy:\"0U1O0Y1L1A0N\",chyb:\"0U1H0Y131A0L\",chz:\"0N040R03\",chá:\"0P080S0P0U1M0Y1L\",chád:\"0Y1S\",chádz:\"0Y28\",cház:\"0U19\",chází:\"0U11\",châ:\"0L04\",chã:\"0P06\",chä:\"0N0E\",chè:\"0L0E\",ché:\"0L120O030Q3K0S1G0U040Y07\",\"ché \":\"0L170O040Q5N0U060Y0B\",chéa:\"0S0M\",chéi:\"0S16\",chéil:\"0S4I\",chí:\"0O03\",chó:\"0O070S1N1A0S\",\"chód \":\"1A1M\",chón:\"0S1A\",chóna:\"0S58\",chö:\"0N0K\",chön:\"0N1A\",chü:\"0N09\",chý:\"0U040Y0L\",chę:\"1A0S\",chł:\"1A0S\",\"cial \":\"0L070M0F0O0O0P0Q0Z02150E\",ciam:\"0P040Q0V0T0W1A02\",\"ciam \":\"0P040T0S\",ciamo:\"0Q0S\",ciar:\"0O0A0P070Q150T021A02\",cias:\"0O180P0G0Q020T0A1A0C1O2H\",\"cias \":\"0O1L0P0K0T0B1O4V\",ciat:\"0L030M050Q1V0T0B\",ciato:\"0Q15\",ciał:\"1A30\",ciałb:\"1A2B\",cib:\"0O0E0Q0C0T0Q\",cibu:\"0T12\",cic:\"030W0L030O0D0P0C0Q070T030Y061402150H1A06\",cida:\"0L020O0U0P1T0Q040T071O03\",cidad:\"0O0P0P1Z\",cide:\"0L0U0M0U0O0N0P0F0Q0T0T0L15111O0C\",cided:\"0M0J\",ciden:\"0L0Y0M0F0O0T0P0I0Q0D0T05150Y1O0O\",cidi:\"0O0I0P0F0Q050T141F031O0C\",cidit:\"0T0Z\",cido:\"0O0U0P0P0Q021O0B\",\"cido \":\"0O0X0P0Q1O06\",\"cie \":\"0L0E0O050P060Q030T050U0B0Y0R15051A6B1O02\",cieb:\"0T111A14\",cieba:\"0T14\",ciebi:\"1A1S\",\"ciec \":\"1A1F\",ciel:\"0L0H0O0C0Q0M0Z0310061A1M\",ciend:\"0O160T0T\",cient:\"0L0I0M090O1U0P140Q070T0J0U05150K1O04\",cier:\"0L0I0O1G1A0D\",ciert:\"0O0W\",ciet:\"0M020Q040T0C15081D0S\",cif:\"03020L020O020P020Q030T0215031P0M\",cih:\"1F0E\",cii:\"0T060U040Y05150I1O0V\",ciis:\"0T051O0Q\",\"ciis \":\"0T051O1F\",cij:\"0R020V1Q1B0X1D2L\",cija:\"0V0V1B0S1D2C\",\"cija \":\"0V1N1B1A1D2K\",cijas:\"1B031D2T\",ciju:\"0V0H1D0S\",\"ciju \":\"0V191D21\",cik:\"030M0V0A140D1B021D2M1F031O08\",\"cik \":\"1D36\",\"cil \":\"0B0X0M020O1A0P1615071F071P15\",cile:\"0L1H0O050Q1C0T0Z150D1F0G1O0L\",\"cile \":\"0L1Z0Q1C0T0V150G1O15\",cili:\"0L020O050P030Q070R020T0X1A061F031O021P12\",cilis:\"0T0E1P0Z\",cils:\"1P0V\",\"cils \":\"0L021P11\",cilv:\"1D66\",cilvē:\"1DEN\",\"cina \":\"0B0D0O150P070Q140T07150F1O02\",cinc:\"0O0Q0P0G150Q\",cinco:\"0O0T0P0L\",\"cine \":\"0L090M050O090Q0A153K\",cinev:\"152M\",cing:\"0B160M080T041B02\",\"cing \":\"0B250M0B\",cint:\"030B0B190O040P030Q030T02\",cinta:\"0B2I0O02\",cinā:\"1D1W\",cināt:\"1D2K\",cio:\"0M050O3Y0P2Q0Q1T0T1O0V0B152E1A0E1B021O19\",\"cio \":\"0O1K0P0T0Q1P0T2U0V02150P1O16\",ciod:\"1529\",cioda:\"152V\",cion:\"0O3Q0P1W0Q0R0T030V0914021B031O0H\",ciona:\"0O280P1P0V0E1B03\",cione:\"0O2K0P040Q02\",cios:\"0O0V0P0J0T0415061O03\",cipi:\"0L040O0B0P020Q040T1A1503\",cipu:\"0T14\",cipul:\"0T15\",\"cir \":\"0O1K\",circ:\"0L070M030O060P050Q0C0T121506\",circu:\"0L080M030O060P050T0T1508\",cire:\"03030Q0G0T0O150A\",cirk:\"0Z0B100214021O04\",cisa:\"0O020P250Q050T02\",\"cisa \":\"0P1A0Q03\",cisam:\"0O020P0T0Q03\",cisn:\"0T0Q1A03\",cisne:\"0T0S\",ciso:\"0P1P0Q0L\",\"ciso \":\"0P240Q0L1O02\",cist:\"0L040M030O0C0Q040T190U050Z031O0K\",cisti:\"0T0S1O02\",\"cit \":\"03080L020T5M0U071403151B\",cita:\"0L040O0C0P050Q0F0R020T0U15091O04\",citi:\"0M050Q030T0R15141D0M1O03\",citt:\"0Q0W1F02\",città:\"0Q0S\",citu:\"0T1F1D11\",\"citu \":\"0T031D21\",citur:\"0T10\",city:\"0M0E0U02\",ciud:\"0O12150P\",ciuda:\"0O1E150W\",cium:\"0B090T0Q\",ciut:\"0Q14\",civ:\"0L020O020P030Q090T0D15021F031O07\",ciy:\"040V1F07\",ciye:\"042D\",\"ciye \":\"04471F02\",ciz:\"040G0Q0F0U091402150B1F021O05\",cizi:\"0Q0N0U06150G\",ciá:\"0U020Y05140H\",cié:\"0L090O04\",ciê:\"0P0B\",ciò:\"0Q0T\",\"ciò \":\"0Q1B\",ció:\"0O59140D1A0G\",\"ció \":\"0O0X140B\",ción:\"0O75\",\"ción \":\"0O98\",cią:\"1A1P\",ciąg:\"1A1C\",ciē:\"0T02\",cię:\"1A1Q\",\"cię \":\"1A1R\",ciĝ:\"1O06\",cił:\"1A19\",ciō:\"0T08\",cj:\"1A1M\",cja:\"1A10\",cji:\"1A13\",\"cji \":\"1A1K\",cję:\"1A0R\",cka:\"03030U020Y07103C1A04\",\"cka \":\"03030U040Y0C10211A06\",ckad:\"100N\",ckade:\"100L\",ckan:\"101D\",\"ckan \":\"101A\",cked:\"0M0P\",\"cked \":\"0M0Y\",cken:\"0M030N1C100I\",\"cken \":\"0M030N1X0R02100H\",cker:\"0M040N0E104W\",\"cker \":\"0M030N0F104J\",cket:\"0L030M0D0R03103V\",\"cket \":\"0L040M0D0R03103V\",ckh:\"1004\",ckl:\"0M060N0D100Z\",ckli:\"0N0R1013\",cklig:\"100Y\",ckn:\"1007\",cko:\"0U050Y09100B14031A0C\",ckor:\"100E1404\",ckr:\"1009\",ckså:\"100S\",\"ckså \":\"100S\",ckt:\"0N0P100R\",\"ckt \":\"0N151007\",ckte:\"0N0J100T\",\"ckte \":\"0N0P100S\",ckv:\"1006\",cky:\"0M050U0Y0Y0V\",\"cky \":\"0M070U1K0Y1H\",clar:\"0L070M020O0M0P0K0T0K150H\",clas:\"0L0E0M0H0O0U0P060Q0A0T07150N\",clase:\"0O12\",class:\"0L0O0M0M0P070Q0A0T07\",\"cle \":\"0L0M0M0E\",clea:\"0M0L0O02\",clo:\"0L050M0K0O020P020T031502\",clos:\"0M0K\",close:\"0M0Q\",clu:\"0L060M060O0E0P0D0Q050S0M0T041507\",clé:\"0L09\",clā:\"0T02\",cm:\"03030T021502\",cml:\"0T02\",cni:\"0O030P020Q020U090Y0H15061A05\",cno:\"0O020P020U050Y051A05\",\"co-\":\"0P02\",coa:\"0M050P020T02151C\",coal:\"151P\",coală:\"151O\",cob:\"0B0P0O050P0N0T0G1504\",\"cob \":\"0T0R\",coba:\"0B1C0O04\",\"coba \":\"0B29\",cobr:\"0O030P0K\",coch:\"0L030O16\",coche:\"0O1J\",coci:\"0O0N\",cod:\"0L020O020Q040T0215031A0A\",coe:\"0P030T0E\",cof:\"0M060T03\",cog:\"0M030O0G0Q050T0Y\",cogn:\"0L020M050Q030T0U\",coh:\"0O04\",coi:\"0L070O020P230Q040S28\",coil:\"0S1A\",\"coil \":\"0S49\",coin:\"0L0A0M020O030Q040S0Q\",coinn:\"0S2K\",cois:\"0P2F\",coisa:\"0P32\",coj:\"0O031O0E\",cok:\"0B080U0314031A04\",\"cola \":\"0D020O050P180Q090R020T04\",cold:\"0M0E\",cole:\"0L140O0M0P0B0Q080T02150F\",\"cole \":\"0L1T0Q03\",colh:\"0P0N\",coll:\"0L0K0M0D0Q0J0R030T12\",\"colo \":\"0Q0Q1523\",colp:\"0Q0T\",colt:\"0L020Q1A1406\",comb:\"0L1I0M020O060P090Q071402\",combi:\"0L250O020P040Q02\",come:\"0M230O2S0P3V0Q4D0T0M150A\",\"come \":\"0M2H0O0C0P0A0Q4F\",comen:\"0O110P0J1507\",comer:\"0O1N0P1B1505\",começ:\"0P1Q\",comh:\"0S1A\",comi:\"0L020M0I0O1N0P1L0Q0V0T0M1508\",comid:\"0O160P0N\",comig:\"0P14\",comin:\"0M0N0Q0U\",comm:\"0L7L0M0N0Q0N0R080T1A\",comme:\"0LB50M080Q0K0R020T09\",como:\"0O4F0P4V0Q031504\",\"como \":\"0O5P0P5X\",comp:\"0L4C0M1F0N060O4T0P4K0Q580R0L0T1F0Z0K152W\",compa:\"0L120M0K0O160P0T0Q0K0T0A151R\",compl:\"0L1C0M0S0O0Y0P0N0Q0Q0R070T08150V\",compr:\"0L2R0M020O3A0P390Q2L0T04\",compt:\"0L1F\",compu:\"0M0C0N0B0O0G0P0K0Q0N0R0H0T0M0Z0O150B\",\"con \":\"0B040L040O9T0Q8L0T0214051O1H\",cona:\"0S180T0B\",conas:\"0S4I\",conc:\"0L0S0M0F0O0S0P0W0Q0K0R0C0T0T1510\",cond:\"0L190M0E0O1A0P0S0Q1B0R060T0N151E\",condu:\"0L1D0M020O0U0P060Q030T041518\",conf:\"0L150M0F0O150P1A0Q0Q0R030T0Y150U\",confi:\"0L120M070O0M0P0V0Q060T0D1505\",conh:\"0P26\",conhe:\"0P2R\",conm:\"0O0O\",conmi:\"0O0S\",conn:\"0L2M0M030Q03\",conna:\"0L3G\",cono:\"0L0A0M080O2B0P0D0Q3H0R04150E\",conoc:\"0O2C\",conos:\"0P0B0Q2O\",cons:\"0L2D0M0Q0O2P0P410Q1C0R050T3M151Q\",conse:\"0L120M040O190P2M0Q0B0R020T0F1508\",consi:\"0L0Q0M0F0O100P1B0Q0U0T0T150W\",const:\"0L140M070O0R0P0R0R030T11150S\",cont:\"0L460M0T0O580P790Q490R0K0T1M152N\",conta:\"0L0C0M090O0Y0P1O0Q0U0R0B150D\",conte:\"0L1K0M050O0U0P2K0Q0F0T0E150L\",conti:\"0L140M0B0O190P100Q0U0R020T0F151H\",contr:\"0L420M0F0O3T0P3U0Q210R0D0T0S150U\",conv:\"0L0P0M0H0O0X0P1G0Q0K0T1A150N\",conve:\"0L0E0M0A0O0V0P190Q060T0S150D\",cop:\"0L0B0M040O070P0B0Q0N0T080U03152B\",copi:\"0L0B0O070Q0A0T05152E\",copii:\"151U\",coq:\"0L020T0A\",\"cor \":\"0P090T0R\",cora:\"0L020M020O0K0P0Q0Q3J0T0L15041A07\",\"cora \":\"0Q320T04\",cord:\"0L0T0M070O0H0P190Q1O0T0V1515\",corda:\"0O0E0P0S0Q0Q0T0E1507\",core:\"0L250M020O030P060Q04150X\",\"core \":\"0L3M0M02\",corp:\"0L0A0M020O020P0C0Q060T0O1506\",corr:\"0L0I0M080O1N0P1L0Q120R060T0D\",corre:\"0L0J0M080O1E0P1K0Q0V0R030T03\",cors:\"0Q1G\",corso:\"0Q0T\",cort:\"0O0R0P0E0Q0B0T03\",\"cos \":\"0O1Q0P180T0W1403150I1B021O02\",\"cos'\":\"0Q0T\",cosa:\"0O1M0Q7D\",\"cosa \":\"0O0R0Q7G\",cosas:\"0O1D\",cose:\"041D0O040Q13\",\"cose \":\"042F0Q14\",cost:\"0L030M080O0W0P0Y0QCH0T02150N\",costr:\"0QBX\",costu:\"0L040O0I0P0X0Q021509\",così:\"0Q35\",\"così \":\"0Q36\",cosú:\"0S0M\",cot:\"0L040O050P040Q060T0A14031507\",\"cou \":\"0L040P1H0Y0B\",coul:\"0L0I0M2S1503\",could:\"0M3T\",coun:\"0M0U0R02\",count:\"0M150Q020R03\",coup:\"0L3N0M06\",\"coup \":\"0L4Y\",cour:\"0L2O0M0D\",cours:\"0L1K0M07\",cout:\"0L0Z\",coute:\"0L17\",couv:\"0L0N\",couz:\"0U1J\",couzs:\"0U1A\",couzš:\"0U0S\",cova:\"0P040U120Y1U\",covat:\"0U0V\",covať:\"0Y1C\",cove:\"0M0C\",cow:\"0M021A0O\",cox:\"0T02\",coz:\"0P0D0Q0B\",coû:\"0L09\",coś:\"1A13\",\"coś \":\"1A1L\",cq:\"0Q060T02\",cqu:\"0L040Q0M0T05\",cqua:\"0Q0Q0T04\",cras:\"0L040M020S0T0T12\",\"cras \":\"0S3A0T0Y\",crea:\"0M0J0O0C0Q090R020T0H1514\",cred:\"0M040P100Q1I0T1H156H\",\"cred \":\"155G\",crede:\"0Q0Q0T0F152Q\",credi:\"0L020M050P190Q0B0T0I150D\",cree:\"03020M040O191505\",crei:\"0P040S0M150A\",creid:\"0S2K\",creo:\"0O1N\",\"creo \":\"0O25\",crev:\"0L020P1G0T05\",creve:\"0L020P1H\",crez:\"152E\",cri:\"03030L1M0M0C0O1S0P2E0Q1O0R020T2H152R\",cria:\"0L030O040P1J\",crian:\"0P1F\",crib:\"0M030O1C0T1S\",cribe:\"0M040O0B0T0V\",cribi:\"0O170T0L\",crip:\"0L020M020O030T1V\",crips:\"0T14\",cript:\"0L040M030O020T0V\",cris:\"0L0B0M020O0B0P080Q0A0R020T06151X\",crit:\"0L0Y0M030O0N0P0P0Q0V1505\",criv:\"0L0A0P030Q18\",crive:\"0L070Q0W\",cro:\"0L1L0M0B0O040P070Q0A0T071506\",croi:\"0L1O\",crois:\"0L1J\",cru:\"0L070M030O0B0P080Q030T0J151S\",\"cru \":\"0L04151M\",cry:\"0M06\",crè:\"0L03\",cré:\"0L0F0O020P02\",crí:\"0O040P060S2K\",crío:\"0S2Y\",críob:\"0S8U\",críoc:\"0S2K\",crē:\"0T08\",crī:\"0T05\",cs:\"0L020M02149B\",\"cs \":\"0L0C0M05142A\",csa:\"144X\",csak:\"148Q\",\"csak \":\"1492\",csal:\"141M\",csalá:\"1414\",cse:\"141A\",csen:\"141A\",csi:\"143U\",csin:\"1456\",csiná:\"1457\",csit:\"141P\",\"csit \":\"141R\",csk:\"140O\",cso:\"1427\",csol:\"141E\",csu:\"140B\",csá:\"140J\",csé:\"140M\",csó:\"140D\",csö:\"140K\",\"ct \":\"030Z0L090M0X0R080U18151C\",cta:\"03020L050M030O0R0P040T2N150J\",\"cta \":\"0O0D0T2H1505\",cte:\"0L0Z0M0G0O050P030R050T0W150S\",\"cte \":\"0L0C0R020T15150J\",cted:\"0M0Q\",\"cted \":\"0M10\",\"cti \":\"0T0W0U02\",ctio:\"0L200M0T0R020T0S\",ction:\"0L3E0M130R020T0O\",ctis:\"0T0X150F\",\"ctis \":\"0T0W\",ctl:\"0M07\",ctly:\"0M0D\",cto:\"0L050M0F0O1N0P050T1G150V\",\"cto \":\"0O1A0P040T12\",ctor:\"0L020M0L0O0V0R020T19151A\",\"ctor \":\"0M0J0O0Q0R020T0I150P\",ctr:\"0L060M030O080T071505\",cts:\"0M06\",\"cts \":\"0L020M0C\",ctu:\"03090L0G0M0F0O0H0T39150O\",ctum:\"0T1R\",\"ctum \":\"0T1S\",ctur:\"0L0A0M0G0O090T111509\",cture:\"0L0E0M0M\",ctus:\"0T2P\",\"ctus \":\"0T2T\",ctv:\"0U040Y0E\",ctæ:\"0T02\",cté:\"0L05\",ctā:\"0T04\",ctū:\"0T05\",cua:\"0B0A0O3S0T021502\",cual:\"0B080O0R\",cuan:\"0O3S\",cuand:\"0O4C\",cub:\"0O0F0P020Q020T0P\",cubi:\"0O070Q020T17\",cubic:\"0T0Z\",cuc:\"03080B080O0T0Q0F0T05\",cuch:\"0O15\",cucha:\"0O0X\",cuci:\"0B0D0Q0M\",cud:\"0O020P020Y071A051F04\",cue:\"0L060O2Z0T02\",cuel:\"0O0Z\",cuela:\"0O14\",cuen:\"0O1S\",cuent:\"0O21\",cuer:\"0O1F0T04\",cuerd:\"0O1G\",cuf:\"0302\",cug:\"0Q0C\",cui:\"0L0I0O0I0P0S0Q0M0S190T1B151H\",\"cui \":\"0Q100T0M1508\",cuid:\"0O0S0P0Y\",cuida:\"0O0Y0P14\",cuir:\"0L030S0X\",\"cuir \":\"0L020S3A\",cuit:\"0L050T10150D\",\"cuit \":\"0L030T0Y150A\",cuj:\"0P040U0N0Y121A0K\",cuje:\"0U0M0Y1L1A0F\",cuk:\"03050B0J0U040Y0714061A051B051D0G1F1U\",cukl:\"1F19\",cukla:\"1F1M\",cuku:\"0B0V1D0K\",cukup:\"0B1K\",\"cul \":\"0B050L040T0A152J\",cula:\"0L070M060O0Y0P0E0T22150O1F04\",culi:\"0L080O030P020T1H1505\",culo:\"0L020M020O0K0P0N0Q020T1Y150N1O02\",\"culo \":\"0O0H0P0F0Q020T0Z1O02\",culos:\"0O090P0F0T12150D\",culp:\"0L020O0Q0P0S0T0F\",cult:\"030C0L0H0M0I0O0N0P0D0Q050R040T10151B\",culu:\"0T2O150D1F06\",culum:\"0T2C\",\"cum \":\"0TB3156Z\",cumi:\"043V\",\"cumi \":\"046S\",cump:\"0O0J0P06152W\",cumpă:\"152W\",cumq:\"0T0S\",cumqu:\"0T0T\",\"cun \":\"0L0V0Q08\",cunc:\"0T0Q\",cunct:\"0T0S\",cund:\"0O030P020T14150F\",cuni:\"0Q080T21\",cunia:\"0T22\",cuno:\"0Q1H152R\",\"cuno \":\"0Q1I\",cunos:\"1523\",cunt:\"0T0P\",cuo:\"0Q1G\",cuol:\"0Q1X\",cuola:\"0Q1G\",cup:\"0L0M0M040O0X0P130Q150T0G150Z\",cupa:\"0L030O120P130Q1N0T061518\",cupad:\"0O0V0P0Z\",cupat:\"0L050Q180T05151A\",\"cur \":\"03020T37150D\",cura:\"0O090P0P0Q0Z0T0O150P\",curo:\"0O040P070Q0T1508\",\"curo \":\"0O040P060Q0U\",curr:\"0L020M050O0L0Q020T1G\",\"cus \":\"0M020R040T3W\",cusa:\"0L020O070P080Q0K0T0D\",cut:\"0L0B0M080O070P0K0Q040T18155V1F04\",\"cut \":\"0M080T0L15751F03\",cutu:\"0T101504\",cutus:\"0T0Z\",cuu:\"0T02\",cuv:\"150L\",cuy:\"0O031F02\",cuz:\"150L1F05\",cuá:\"0O20\",cuál:\"0O0Y\",\"cuál \":\"0O14\",cuán:\"0O26\",cuánd:\"0O12\",cuánt:\"0O1S\",cué:\"0O02\",cuğ:\"1F0C\",cuī:\"0T02\",cv:\"0U020V030Y04\",cw:\"030E\",cyc:\"0L030M051A07\",cyk:\"0Y040Z0F100A1A02\",cyke:\"0Z0R1009\",cykel:\"0Z0W1009\",cykl:\"0Z0F10051A02\",cykle:\"0Z0G\",cym:\"0T031A05\",cz:\"1AFV\",\"cz \":\"1A15\",cza:\"1A3Q\",czas:\"1A33\",\"czas \":\"1A1Y\",czasu:\"1A1H\",cze:\"1A7H\",\"cze \":\"1A24\",czeg:\"1A2S\",czego:\"1A46\",czek:\"1A1R\",czeka:\"1A21\",czen:\"1A1B\",czeni:\"1A22\",czn:\"1A30\",czni:\"1A1P\",cznie:\"1A1P\",czo:\"1A2B\",czon:\"1A1B\",czor:\"1A1Q\",czora:\"1A20\",czu:\"1A17\",czy:\"1ACZ\",\"czy \":\"1A92\",czyn:\"1A1S\",czyt:\"1A1M\",czyta:\"1A2E\",czyć:\"1A22\",\"czyć \":\"1A3A\",czył:\"1A25\",\"czył \":\"1A1F\",czą:\"1A0W\",czę:\"1A2A\",częst:\"1A1E\",częś:\"1A1B\",czł:\"1A0Q\",człow:\"1A1I\",cá:\"0O080P020S151409\",\"cá \":\"0O050P030S2F\",cái:\"0S0K\",cál:\"0O04\",cám:\"0O06\",cán:\"0O061404\",cár:\"0O031402\",câ:\"0P02152M\",câi:\"150V\",câm:\"0P06\",cân:\"0P041548\",când:\"1556\",\"când \":\"156G\",cânt:\"151T\",cât:\"154F\",\"cât \":\"155I\",câte:\"151T\",câș:\"150N\",cã:\"0P02\",cãe:\"0P03\",cão:\"0P08\",cæ:\"0T06\",\"cæ \":\"0T03\",cæc:\"0T02\",cæl:\"0T06\",cè:\"0L02\",cès:\"0L07\",cé:\"0L090O0B0P040S2D0Y06140B\",\"cé \":\"0L0I0O030S26\",céa:\"0L020O020S1Z\",céal:\"0S0V\",\"céal \":\"0S3A\",céar:\"0S0M\",céard:\"0S2K\",céd:\"0L06\",cée:\"0L07\",cél:\"0L080O020P021408\",cén:\"0O020S2W\",\"cén \":\"0S3I\",cér:\"0L020P020Y0H1402\",cés:\"0L030O0R\",\"cés \":\"0L040O13\",céu:\"0P09\",cê:\"0P4R\",\"cê \":\"0PFB\",\"cê-\":\"0P04\",cên:\"0P05\",cês:\"0P3W\",\"cês \":\"0P4P\",\"cì \":\"0Q02\",cí:\"0O0F0P030U100Y0E1403\",\"cí \":\"0O060U140Y05\",cía:\"0O11\",\"cía \":\"0O1D\",cíc:\"0P030U05\",cío:\"0O02\",cíp:\"0P03\",cír:\"0O02\",cít:\"0U0J0Y0S\",cíti:\"0U0D0Y1D\",cò:\"0Q02\",\"cò \":\"0Q06\",có:\"0O0N0P030S0Y14021A0B\",\"có \":\"0O0H0P03\",cóc:\"0S0T\",cóca:\"0S0Z\",cócai:\"0S3S\",cóm:\"0O1I\",cómo:\"0O28\",\"cómo \":\"0O2Q\",cón:\"0O020S1B\",cóna:\"0S1L\",cónaí:\"0S5P\",cóp:\"0P03\",cô:\"0L03\",côt:\"0L0D\",cú:\"0S0G0Y0R\",cúr:\"0S0M\",cúz:\"0Y1S\",cúzs:\"0Y29\",cúzsk:\"0Y2T\",cúzšt:\"0Y0Z\",cü:\"1F0G\",\"cü \":\"1F0B\",cüm:\"1F0F\",cā:\"0T041D0F\",cāk:\"1D0M\",cās:\"0T021D0N\",cāt:\"0T03\",cāv:\"0T02\",că:\"157G\",\"că \":\"15JZ\",căl:\"150Y\",căm:\"150P\",căr:\"151O\",căs:\"150N\",căt:\"1512\",cą:\"1A0B\",cē:\"0T051D0E\",\"cē \":\"0T03\",cēj:\"1D0E\",cēp:\"0T03\",cēt:\"1D0Q\",cę:\"1A11\",\"cę \":\"1A24\",cī:\"0T051D11\",\"cī \":\"0T02\",cīb:\"1D0H\",cīg:\"1D1T\",cīgs:\"1D15\",\"cīgs \":\"1D2Y\",cīm:\"0T05\",cīs:\"0T02\",cīt:\"1D0Y\",cīti:\"1D0W\",cītie:\"1D25\",cı:\"1F1L\",\"cı \":\"1F1Y\",cım:\"1F0V\",cın:\"1F0I\",cıy:\"1F0B\",cō:\"0T05\",\"cō \":\"0T03\",cōn:\"0T06\",cōs:\"0T02\",cœ:\"0L020T03\",cœl:\"0T04\",cœp:\"0T03\",cœu:\"0L0C\",cť:\"0Y0E\",\"cť \":\"0Y11\",cū:\"0T091B0E\",cūn:\"0T03\",cūr:\"0T0D\",cūs:\"0T03\",cūt:\"0T03\",cūz:\"1B12\",cūzi:\"1B12\",cūziš:\"1B1O\",ců:\"0U02\",cț:\"150D\",cți:\"151H\",cɣ:\"0303\",cḥ:\"030A\",\"d'a\":\"0L3F0Q0J0S191Q05\",\"d'ac\":\"0L0N0Q0J\",\"d'ao\":\"0S0V\",\"d'aoi\":\"0S2K\",\"d'ar\":\"0L110Q03\",\"d'au\":\"0L0Z\",\"d'aut\":\"0L1D\",\"d'av\":\"0L0O\",\"d'e\":\"0L1C0Q031Q0E\",\"d'en\":\"0L0S\",\"d'f\":\"0S1C\",\"d'fh\":\"0S1N\",\"d'h\":\"0L18\",\"d'hu\":\"0L1K\",\"d'hui\":\"0L2K\",\"d'i\":\"0L0O0Q030S0R\",\"d'o\":\"0L0J0Q04\",\"d's\":\"0M05\",\"d'u\":\"0L1V\",\"d'un\":\"0L31\",\"d'un \":\"0L2U\",\"d'une\":\"0L2C\",\"d'v\":\"0M0B\",\"d've\":\"0M0L\",\"d've \":\"0M0S\",\"d'y\":\"0L04\",\"d'è\":\"0Q02\",\"d'é\":\"0L0L0S0I\",\"d'éi\":\"0S0M\",\"d'ê\":\"0L0I\",\"d'êt\":\"0L0U\",\"d'êtr\":\"0L1G\",\"d-a\":\"034M\",\"d-aɣ\":\"034A\",\"d-aɣe\":\"039B\",\"d-i\":\"0336\",\"d-ise\":\"0331\",\"d-l\":\"0303\",\"d-m\":\"030E0L04\",\"d-n\":\"033S\",\"d-naɣ\":\"032W\",\"d-nse\":\"032W\",\"d-p\":\"0L03\",\"d-s\":\"0364\",\"d-sɣ\":\"035B\",\"d-sɣe\":\"03AE\",\"d-t\":\"03BM\",\"d-ta\":\"0338\",\"d-taɣ\":\"035T\",\"d-te\":\"035B\",\"d-tes\":\"036I\",\"d-ts\":\"031V\",\"d-tse\":\"0346\",\"d-y\":\"0352\",\"d-ya\":\"031P\",\"d-ye\":\"0331\",\"da'\":\"1F091Q0O\",\"da-\":\"030B0P0C\",daa:\"013G0B080D080R1J11071402\",daag:\"0R1M\",\"daag \":\"0R25\",daan:\"0B0G0D0G0R1G1108\",\"daan \":\"0B0Q0D0K0R1X110I\",daar:\"016M0R2O\",\"daar \":\"013L0R2E\",daard:\"01120R03\",daaro:\"010K0R0D\",daarv:\"01120R06\",\"dab \":\"03021C0V1Q1Y\",daba:\"04390O090T041B2V1Q07\",dabar:\"1B5U\",dabi:\"04540Q020T091P0Q\",dach:\"0M020N0T0R1H1A061Q2F\",dacht:\"0N140R1Z1Q0F\",dacă:\"1549\",\"dacă \":\"155E\",\"dad \":\"03020D0O0M040O6Q10081C0E\",dada:\"0D060O090P061C0R1F0B1Q0D\",\"dada \":\"0O060P051C1V1F09\",dade:\"0O0Z0P630R03100S1C0H\",\"dade \":\"0P6L100N\",dades:\"0O0T0P0U1005\",dado:\"0O1I0P1H1O05\",\"dado \":\"0O1K0P1C1O08\",dady:\"1N0V\",dae:\"01080B040T0I\",\"dae \":\"010J0T0N\",daf:\"0302040S0B040N050Q09\",dafi:\"04221402\",dafis:\"043O\",\"dag \":\"013H0D040R2Y0Z3Y103M123R1323140E\",daga:\"0D090Q02100N130Q1406\",dagar:\"100M\",dage:\"0N040R0S0Z1P100V121S\",\"dage \":\"0L020Z0O\",dagen:\"0R0X0Z16100V120X\",dager:\"120O\",dagh:\"1Q3L\",dagi:\"0302041R0B07130X1B021C3Z\",\"dagi \":\"030404221C9G\",dagin:\"0B0E0R02131Y\",dags:\"0R060Z08100H1209130A1402\",dagu:\"044X130J1B03\",dagus:\"04351B04\",dah:\"040G0B3M0D0O0N030V031F5L1Q5C\",\"dah \":\"0B6G1Q56\",daha:\"0D0A1F6A1Q0R\",\"daha \":\"1F8C\",dahan:\"0D0I\",dahi:\"0D0X0N041F04\",dahil:\"0D1O1F04\",dahj:\"1Q3S\",dahja:\"1Q6G\",\"dai \":\"0B0I0L020Q0I1404150F1B0Y\",dain:\"0L061B1D\",daj:\"0U090V1D0Y191A1F1O0L1QA6\",\"daj \":\"0V0P0Y101A0O1O0O1QD5\",\"dak \":\"03020BJV0R030V031F06\",daka:\"0B0F\",dake:\"030C041O\",daki:\"0B0514031F22\",\"daki \":\"0B091F1Y\",dakk:\"03250B04\",dakke:\"034S\",daku:\"046F0B0W\",\"daku \":\"0B1R\",dakun:\"047L\",daky:\"1N13\",\"daky \":\"1N1G\",\"dala \":\"0D0B0U0T0V1F0Y2V14021A02\",dalah:\"0BCV\",dalam:\"0B8B0D06\",dalas:\"0D0K1C10\",dalaw:\"0D14\",\"dali \":\"03020D0F0Q0I0U0P0V0B0Y131A08\",dalk:\"010N0B05\",\"dalk \":\"010P\",dall:\"0Q1S11061402\",dalla:\"0Q12110B\",daly:\"1B0V1F07\",další:\"0U0V\",damas:\"030A0O020P020T021B2B1Q16\",damen:\"03040L030N020O0Z0P0P0Q0D0T020Z0414051O03\",dami:\"0D090M040N0M1A051B081C0L\",daml:\"1F071N1R\",damla:\"1F0A1N2F\",damu:\"042O0B0Q0T071Q0N\",\"damu \":\"0B1G\",damy:\"1A021N0V\",\"dana \":\"0V2H10041A021F04\",danam:\"1N2F\",danas:\"0V381B07\",dand:\"0O0C0P0J0Q0Q0T03100814021F021N0D\",dando:\"0O0G0P0P0Q0R\",dane:\"0309041D0D020Q041A041Q3K\",daneh:\"1Q5Q\",dang:\"0B4S0D0N0L0F0M091B0R1Q0D\",\"dang \":\"0B880D13\",\"dani \":\"03030U07141M\",danie:\"03020D050M051A1R\",dank:\"01140N0W0R0Y1O0I\",danki:\"010X1O05\",dann:\"0N0Z0Q090Z04110212091306140B\",\"dann \":\"0N1M\",dans:\"010P0L9Q0R0C0V060Z0O100D120H130C150A1F0D\",\"dans \":\"010P0LF20Z031F0E\",danse:\"0L0I0R0B0Z0J120A1506\",\"dant \":\"031B0L1Z0T081005\",danu:\"0T0313071C0Q\",danud:\"1C1S\",dany:\"04110B0Q1A031N0G\",danya:\"0B1F\",dao:\"0S1J0V0V\",\"dao \":\"0V12\",daoi:\"0S1G\",daoin:\"0S58\",\"dap \":\"0B0J\",dapa:\"0B3E0D0W1Q17\",dapat:\"0B6H0D1N\",daq:\"0P0K0T021QFR\",\"daq \":\"1QMU\",daqu:\"0P0O0T051Q0U\",\"dara \":\"0B1D0O051D4L\",darb:\"1B2I1D2P\",darbu:\"1B0I1D2K\",darbą:\"1B1Q\",\"dare \":\"0M020Q500T0G100G150J1F02\",\"dari \":\"0BBD\",darip:\"0B231F02\",daro:\"0O090Q030U021B171O02\",\"daro \":\"1B1R1O03\",dary:\"1B5X\",daryk:\"1B1N\",darys:\"1B1W\",daryt:\"1B8J\",darė:\"1B1I\",\"darė \":\"1B2N\",darī:\"1D6L\",darīj:\"1D4H\",darīt:\"1DAS\",dash:\"0497\",dasha:\"0489\",dasho:\"046Y\",dass:\"0N7C0P020Q0211051402\",\"dass \":\"0NBQ\",dası:\"1F0W\",datan:\"0B4U\",\"date \":\"0L060M080O080Q400R020T020Z0415081B04\",dato:\"0B040O050P020Q2D0Z02100C1413150N1O07\",\"dato \":\"0O020P020Q2D1O05\",datt:\"0Q040Z0H1107120D1402\",datte:\"0Z0L120B\",datu:\"041Z0R020T0F1Q0X\",\"datu \":\"0435\",dată:\"154L\",\"dată \":\"155U\",dau:\"0B020M050N06130F150E1B4Z1D3R\",\"dau \":\"150L1B0Z\",daud:\"1D4Q\",daudz:\"1DBJ\",daug:\"0M091B6L\",\"daug \":\"1B8F\",daugi:\"1B49\",davv:\"0Q1F\",davve:\"0Q1F\",daví:\"0O16\",davía:\"0O1J\",daw:\"030O0D041A0N1N0D1Q0B\",\"daw \":\"03070D081N0D\",dax:\"03060T02\",day:\"030M0B050D020M2C1F271Q0A\",\"day \":\"03060M3N1F02\",days:\"0M0J\",\"days \":\"0M0Q\",dayı:\"1F19\",daz:\"04330N060O02\",dazi:\"048E\",\"dazi \":\"04DV\",daç:\"0P08\",daí:\"0S0P\",\"daí \":\"0S0T\",dañ:\"0O05\",daý:\"1N10\",dać:\"0V031A0Z\",\"dać \":\"1A1F\",dağ:\"1F0F\",daĵ:\"1O05\",daļ:\"1D0X\",dał:\"1A1H\",daş:\"1F291N1O\",daşa:\"1N0Y\",daşar:\"1N1B\",daşl:\"1F10\",daşla:\"1F1B\",daşı:\"1F18\",dať:\"0Y1K\",\"dať \":\"0Y2O\",daŭ:\"1O0W\",daŭr:\"1O10\",daž:\"0Y051B0W1D1B\",dažn:\"1B13\",dažna:\"1B1Y\",dbe:\"03020N020R03140G1Q0I\",\"dben \":\"140Y\",dbi:\"0V081A03\",dbo:\"0U020Y070Z0810051203\",dbog:\"0Z09\",dbol:\"0Z0B\",dbold:\"0Z0D\",dbr:\"0Z03\",dby:\"0U021A02\",dce:\"03060U0N0Y0C\",dch:\"0N080U070Y061A031Q0E\",dci:\"0T020U02\",dco:\"0Y05\",dcé:\"0Y0H\",\"dd \":\"03060M02100S120N130E141D\",\"dda \":\"03240Q02100I\",ddag:\"010F0R0E0Z0F100I120N\",\"ddag \":\"0R0E0Z0B100D120I\",\"dde \":\"0Q020R0K0T040Z0B101L125O1F02\",ddel:\"010J03090R0O0Z091006120A140A\",dden:\"03100M070R0Z0Z03100214021F02\",\"dden \":\"03260M040R1910021402\",dder:\"030A0R070T020Z1G1002120B\",\"dder \":\"030J0M020R050Z1D1206\",\"ddig \":\"1414\",ddl:\"03070M03\",ddo:\"0Q0F\",ddr:\"030A0M021002\",ddu:\"03510T051002130P\",ddy:\"1A02\",\"de'\":\"1Q1M\",\"de-\":\"0L050P07150H\",\"dea \":\"0M0G0O0N0Q0M0T0611061512\",deac:\"0S22\",deach:\"0S6M\",dean:\"0O020S0Q1102\",deann:\"0S2T\",dear:\"0M020S24\",dearg:\"0S2T\",deas:\"0M030O060S0T0T0311021506\",deaun:\"151R\",deba:\"0O080P060T15\",debe:\"0O3H0T0Y0V031B051N0K\",\"debe \":\"0O0U1N0S\",deber:\"0O2P\",debi:\"0O0C0Q030T0F1F0Y1N0J\",debil:\"0O021F19\",dece:\"0M030O0D0P0D0Q030R020T0U0V050Z0215091F4F\",\"dece \":\"0V0B1F43\",deceğ:\"1F1A\",deci:\"0L0G0M0N0O2I0P0R0Q0W0T110V0415141O0L\",decid:\"0M0O0O0U0P0N0Q0615061O15\",decim:\"0O020T0Y\",decir:\"0O21\",decis:\"0M080O0B0P090Q0Q150L\",decâ:\"152M\",decât:\"153D\",\"ded \":\"030I0M251403\",dede:\"0D020R050T070Z0T1F0J1N0G\",\"dede \":\"0D020Z0Y1F031N0N\",dedi:\"0O050P040Q030R030T1F0Y0E15031B031F0X1N0Q1O03\",dedit:\"0T12\",dedo:\"0O0J0P06\",dee:\"010Y0M040N040Q030R0R0T020Z021202150L\",deed:\"0R0X\",\"deed \":\"0M020R19\",deel:\"010W0R0S\",\"deel \":\"010Q0R0N\",deer:\"010W0R0K0Z031205\",\"deer \":\"010Y0R070Z041204\",\"deg \":\"03E6127U140L\",degl:\"0Q0V\",degli:\"0Q0V\",deh:\"030M0L060Z031F021Q06\",\"dei \":\"0P0H0Q2P0T0M140215081B08\",deia:\"0P11\",\"deia \":\"0P13\",deic:\"0S0O\",deich:\"0S2T\",dein:\"0N350T06\",deine:\"0N3U\",deir:\"0P0Z0S11\",deira:\"0P0W\",deire:\"0S2T\",deix:\"0P26\",deixa:\"0P1D\",deixe:\"0P0V\",\"dej \":\"0U0S1A04\",deja:\"0O1P0V0615141B04\",dejar:\"0O11\",\"dek \":\"0B050R020U08140D1A0J1F041O10\",deka:\"0B0U0Z031O04\",dekat:\"0B1G\",deke:\"1418\",deki:\"1F0V\",\"deki \":\"1F15\",dekk:\"0R031209\",\"dela \":\"0B0D0P1A0V130Y1Y10031O03\",\"dele \":\"0P1Z0Q050Z0715081F04\",delen:\"0R0T0T020Z0610041205\",\"deli \":\"0V0H0Y1G1B031F09\",delig:\"0M020Z1A12131N0H\",delij:\"0R24\",delik:\"011B0D021A031F041O05\",delj:\"0V0V1402\",dell:\"0L020N020Q6D0R09100211591403\",\"dell'\":\"0Q18\",della:\"0Q321189\",delle:\"0L030Q291124\",delo:\"0O030P040R020V080Y0N150H1O071P59\",\"delo \":\"0O030P030V091O031P64\",dels:\"0N020R020Z0R100G120B1B041P0E\",delse:\"0Z0V100F1208\",delt:\"03020N0A0R030Z081006110C120B140C\",dema:\"0L320M030O1E0P0T0Z021O17\",demai:\"0L1Y0P0X\",deman:\"0L3B0M030O041O29\",demas:\"0O1P0P04\",\"deme \":\"0O030U1E0Y1B1F08\",\"demo \":\"0V1N\",demos:\"0O100P0Z\",dend:\"0N020P0C0Q0P0R080T0M0Z0E12051N1E\",dende:\"0N030R020Z0F1205\",dendi:\"0T041F021N1X\",dene:\"0N0G0O020R050Z0A1212140B1A071F0V\",\"dene \":\"0N060Z0A12101F02\",denf:\"0Z0D1404\",denfo:\"0Z0G\",deng:\"0BB30D0J0Z031B041F02\",\"deng \":\"0D0Y\",denga:\"0BJD0Z04\",denk:\"0N1G0R350U021106142G\",\"denk \":\"0N020R2R\",denke:\"0N1N0R0V\",denki:\"1105142H\",denn:\"0N0X0U080Y0P0Z38100W110D1245140B\",denna:\"100V1405\",denne:\"0Z3X110612451405\",deno:\"0P020T021N0I1O0Q\",\"dens \":\"0P020R0J0T0I0Z0K1008120E1B1E1D1M\",dento:\"11081O1I\",depa:\"0B160M020O030P02150W\",depan:\"0B28\",depo:\"0O080P100T050Y0M\",depoi:\"0P18\",depu:\"0L130T041506\",depui:\"0L1V\",\"dera \":\"045F0B0F0L070O0K0P040Q020T05100C1B04\",derd:\"0R120Z041F0G1N0F\",\"dere \":\"0N130Q3Z0R1W0T360Z0O122R151I\",deree:\"0R1R\",deren:\"0N1F0R3H0T040Z0K1208\",derer:\"0N0C0Z09120C\",deres:\"0N0E0O020P020Z1A120G\",derh:\"0N050R060Z0A1F06\",deria:\"0P19\",derk:\"0N020Z091F06\",derl:\"0N070O040Q0Q0R0J0Z0A100712081B021F061O021Q06\",\"dern \":\"0M030N24100514051F03\",derna:\"0O030P020R03100J1O07\",derne:\"0L050N040R050Z0V1204\",derni:\"0L261107\",\"ders \":\"01260M090N0P0R2A0Z021F09\",derst:\"0M100N050R070Z041A02\",dert:\"030F0N0W0Q080R0T0Z05120B1F02\",deru:\"0N070T0Q\",derv:\"0Q050R030Z0B1005120C\",derw:\"010T0N020R0C\",derwy:\"010N\",desa:\"0B0A0O120P0M0Y0R140I\",desať:\"0Y0X\",desc:\"0L0B0M040O190P1R0Q0I0T0E152B\",desco:\"0O0D0P0V0Q08150B\",desd:\"0O140P0I\",desde:\"0O1G0P0M\",\"dese \":\"0Q0S0R02\",deset:\"0U0O0V1W\",desm:\"0O040P031D18\",desmi:\"1D37\",desp:\"0M060O2B0P0H0T041004152U\",despe:\"0M030O0T0P0F1004\",despr:\"0O060P03153F\",despu:\"0O1G\",desse:\"0L040N0I0P0R0Q030T090Z02\",desso:\"0L040Q1I\",dessv:\"120D\",dessä:\"113A\",\"dest \":\"0M040N0Q0T071C1H\",desta:\"0O030P0G11331O02\",destu:\"151M\",\"det \":\"031M0N1D0T1M0ZMC10OH110M12PF141Q1F02\",\"dete \":\"0N0E0Q0G0T030U0Q0V190Y1O1402\",deti:\"0T070V0D0Y1G14061O03\",\"deti \":\"0V0P0Y1T1403\",dett:\"0L040Q4G0Z2X101K110O125Q141H1F09\",\"dett \":\"141G\",detta:\"0Q07101K110E\",dette:\"0L070Q030Z3K125Q1402\",detto:\"0Q48\",detu:\"0O030T0W\",detur:\"0T0X\",deu:\"010Y0L1N0N0J0O020P250R080T1H1P13\",\"deu \":\"0P1O\",deur:\"01270L0A0R0S\",\"deur \":\"01290L0F0R0Y\",deus:\"0P0X0T25\",\"deus \":\"0P100T29\",deut:\"0N1A1P1D\",deux:\"0L2H\",\"deux \":\"0L3Z\",\"dev \":\"1Q5P\",deva:\"0L0O0P060Q0C0U020Z03150A1D0U1F0O1O1P\",\"deva \":\"0Q08150C1D25\",devas:\"1O3C\",deve:\"0L150M050P350Q1A0T0A0V07150Q1F021O03\",\"deve \":\"0P180Q1B\",deven:\"0L1B150X1O07\",dever:\"0P240T0A\",devi:\"0L0J0M020P0C0Q0R0T06150F1B031F0A1O0Q\",\"devi \":\"0Q0R\",devo:\"0L0X0M020O060P0J0Q1M0R020T070V0O1O09\",\"devo \":\"0P0G0Q1D1O04\",devoj:\"0V1Q1O02\",devr:\"0L1T150V1F04\",devra:\"0L261F02\",devā:\"1D0W\",devās:\"1D1R\",devă:\"152A\",devăr:\"152W\",dew:\"03020B03\",dex:\"03030T07\",dey:\"030313081F1E\",\"dez \":\"0L0G0O050P0I1402\",deze:\"0P040R4O140B1O02\",\"deze \":\"0R5W\",dezi:\"14031O0Y\",dezir:\"1O1W\",deç:\"0P03\",değ:\"1F8T\",deği:\"1F9M\",değil:\"1FBJ\",değiş:\"1F1I\",deň:\"0Y1D1N0E\",\"deň \":\"0Y2C\",deş:\"15031F18\",deşi:\"1F0W\",deš:\"0U1N0V160Y151B16\",\"deš \":\"0U1H0V150Y1Y\",dešel:\"0U0T\",deši:\"1B1V\",dešim:\"1B3G\",deș:\"150J\",df:\"03040S070Z041002\",dfa:\"0M020S0I\",dfö:\"1003\",dfø:\"0Z02\",dga:\"03040Z03\",dge:\"03030M080R02\",dgo:\"0V0V\",dgov:\"0V11\",dgovo:\"0V29\",dgå:\"0Z021008\",\"dh \":\"0SH8\",dhb:\"0S0R\",\"dhb \":\"0S0O\",dhe:\"0N040R040S1W0U020Y0F0Z081406\",dhea:\"0S1A\",dhear:\"0S3J\",dhed:\"0Z0L\",dhede:\"0Z0L\",dhei:\"0N090R0F0S0M\",dhern:\"0U040Y0X\",dhi:\"0303\",dho:\"0Z021Q10\",dhu:\"03030S1U0T0B\",dhui:\"0S26\",dhuin:\"0S8E\",dhá:\"0S0R\",\"dhá \":\"0S0X\",dhé:\"0S2I\",dhéa:\"0S32\",dhéan:\"0SBR\",\"di'\":\"0Q031Q58\",\"di' \":\"0Q051Q90\",\"di-\":\"030M\",diam:\"0B0F0O020P040Q480R020T0B\",diamo:\"0Q48\",diant:\"0L0U0O0S0P0D\",diar:\"0O0Q0P040Q160T03\",diare:\"0Q14\",dias:\"0O050P0W0T03\",\"dias \":\"0L020O060P140T03\",diat:\"0B050L090M060O090P080Q0M0T041514\",diaŭ:\"1O16\",\"diaŭ \":\"1O23\",\"dib \":\"1C2K\",diba:\"042D0B0S1Q39\",dibah:\"1Q5K\",dibaz:\"0447\",dica:\"0L0C0M060O0I0P0E0Q0R0R020T1C0V051518\",dice:\"0O1B0Q1E0T25\",\"dice \":\"0L020O130Q130T040U02\",dicen:\"0O0F0Q080T0V\",dicer:\"0T0S\",dich:\"0N340O0M0Q050R0P1Q1S\",\"dich \":\"0N4T1Q2N\",dicho:\"0O0S\",dicht:\"0N0E0R0Y\",dicit:\"0T1N\",dico:\"0O0N0P0J0Q0N0T0B1505\",dict:\"0L0E0M080O040T0T\",dicu:\"0B050L030T110V04\",\"did \":\"03070M3E1C0K\",dida:\"0B050L030O0K0P0G0Q030T071B021O02\",dide:\"0B040T061B1N1F03\",didel:\"1B2Y\",didi:\"0B0B0T1R1B04\",didic:\"0T0Y\",didn:\"0M4Z\",\"didn'\":\"0M6Q\",dido:\"0D020O1B0P0Q0T03\",\"dido \":\"0D040O1M0P0R0T03\",didy:\"0T4I\",didym:\"0T4R\",didži:\"1B1E\",\"die \":\"01SG0L0I0M070NHZ0O1L0Q020R5A0T331505\",died:\"0M0F0Q0B\",\"died \":\"0M0K\",diem:\"0T0R1D0O\",\"dien \":\"0L070N050R070Z0410021B531D7A\",diena:\"1B1Z1D76\",dieni:\"0R021B1H\",dienu:\"1D3L\",dienā:\"1D2Y\",dieną:\"1B2S\",dienį:\"1B1G\",dier:\"0L0D0M030N0E0O0Q0Q040R0L0T0D0Z051002\",dies:\"010J0L030M050N6A0O020T1C1B071D1G\",\"dies \":\"0L050M060N0Q0R020T1E1B0F1D3L\",diese:\"0N9I\",dieu:\"0L0Q\",diev:\"0Y1I1B0I1D0U\",dievč:\"0Y1O\",diez:\"0L040O0M150O1D0X\",\"diez \":\"0L050O0S150I\",diezg:\"1D2F\",dieť:\"0Y2K\",\"dieť \":\"0Y29\",dieťa:\"0Y0Z\",dife:\"0O0M0P0M0Q07150V1O0D\",difer:\"0O0T0P0S15141O0G\",diff:\"0L1K0M0T0Q130T181102\",diffe:\"0M0N0Q0A0T031103\",diffi:\"0L1H0M0I0Q0R0T16\",difi:\"0L020O0F0P080Q0O0T12150P1O03\",dific:\"0O0J0P0A0Q0O0T14150W\",difí:\"0O0S0P0U\",difíc:\"0O110P13\",\"dig \":\"013R0D040N0M0R3X0Z7K107P1266145A\",diga:\"0O0F0P0N100J1O04\",digd:\"0R0M\",\"dige \":\"010Q0N090R0Q0Z08120C\",digh:\"010S0R070Z0B1005120C1Q0M\",dighe:\"010T0R090Z0D1005120C\",digi:\"0O020P040R060T0E14021NBK1O09\",digim:\"1N29\",digin:\"0R081NBW\",digiň:\"1N1D\",digt:\"0N0A0R030Z0H102B\",\"digt \":\"0N0C0R040Z0H102B\",dih:\"03020B0C0D071505\",diha:\"0B060D0C\",dihan:\"0D0M\",dii:\"0B020T0C15041A02\",dij:\"0B070O1M0V0C1B0J1Q07\",dije:\"0O0M0V05\",dijo:\"0O1P1B08\",\"dijo \":\"0O281B05\",\"dik \":\"0B080R06142Q1F111N1N1P8C\",dika:\"041D0B0L0N040Z031B021O0D\",diki:\"0B0R1B091F031N0O1O03\",dikit:\"0B1D0D02\",dikk:\"0B070R041F0V\",dikka:\"1F16\",dikl:\"1F0C1N1L\",dikle:\"1F0G1N25\",diko:\"04291O031P38\",\"diko \":\"04411P3I\",diku:\"0B051P1Y\",dikum:\"1P28\",\"dila \":\"0D030U0H0V1N0Y0K\",dile:\"03030O060T0513091F1J1N21\",diler:\"1F1B1N2J\",dilin:\"1F081N2C\",\"dim \":\"030C0P0A0V201F5M1N89\",dime:\"03020O070P040Q0W0T031F04\",dimen:\"03020L020O020P050Q0V0T031O02\",\"dimo \":\"0V1L1B0C\",\"dina \":\"0Q020U0D0V270Y0P100S131015091B0M\",\"dine \":\"0Q090T0G0V1V0Y0A0Z1D1211150A1F0D\",diner:\"0O270R040Z02\",dinge:\"0N0N0R0T0Z061204\",dingi:\"0B1C1B05\",dinh:\"0P1C\",dinhe:\"0P1M\",dink:\"012A0U080Y0B110A1B0A\",\"dink \":\"012D1B0F\",dinl:\"1F0Y\",dinle:\"1F17\",dinn:\"0M0A0R0213181402\",dint:\"030L152C1B0J1O05\",dintr:\"1528\",\"diny \":\"0U0W0Y12\",dinā:\"1D0U\",diom:\"0O0P0P0H\",dioma:\"0O0W0P0M\",dios:\"0O100P050Q050T0C\",\"dios \":\"0O150P040T02\",\"dip \":\"1F061N65\",dipe:\"0B0W0Q07\",dipf:\"0429\",dipfu:\"0441\",diq:\"0L050T021Q04\",dira:\"04290B030L0E0P050Q020V0C1O0X\",\"dira \":\"04410L020V08\",diras:\"1O1M\",dirb:\"13061B25\",dirba:\"1B1O\",\"dire \":\"0L3O0Q1A0T0M15091O08\",direi:\"0P0Q0Q03\",\"diri \":\"030C0B4S1O1P\",diris:\"046A1O3R\",disc:\"0L0O0M0E0N080O0W0P0N0Q0R0R0A0T3Q0Z02150Y\",disce:\"0Q030T1E\",disci:\"0L020T1W\",discu:\"0L0O0M070O0Y0P0L0Q0A0R050T04150Y\",dise:\"0B0F0L0D0M030O030Q0515061C0H\",disi:\"0B0F0Q020T03120C1F0H1O03\",disp:\"0L0Y0M030O0I0P0F0Q110T0A150Y1O0B\",diss:\"0L090P410Q1Q0T160Z0S1107120V\",disse:\"0L040P490Q1J0R020T0R0Z0Y120V\",disso:\"0P0V\",disti:\"0L070M020O0B0P040Q030T1511051O07\",dito:\"0D0N0M040O060P0L0Q0F0T071102\",\"dito \":\"0D160M030O060P0O0Q0C0T03\",ditt:\"101911021214\",\"ditt \":\"10191212\",ditu:\"0B0A0T0S\",diu:\"0B030P0K0T1S0U02150C1A04\",\"diu \":\"0P0N0T0L0U02150A\",dium:\"0N030T1B0U02\",\"dium \":\"0N040R020T1E0U031A02\",diuv:\"0T0R\",diva:\"0Q040U040V0414051C0R\",divad:\"0U051C1S\",dive:\"0L050M020O0E0P0H0Q2A0T0I0Z0D15031F061O07\",\"dive \":\"0Z0F\",diven:\"0Q0Z1F091O04\",diver:\"0L070M020O0I0P0M0Q1C0R020T0715051O0B\",\"divi'\":\"1Q5Q\",diw:\"030A\",dix:\"0L0D0T2M\",dixe:\"0T0P\",dixi:\"0T48\",dixit:\"0T3J\",diy:\"03060D0A1F4J\",diya:\"0D0A1F04\",diye:\"03041F1B\",\"diye \":\"1F19\",diyo:\"0D091F3R\",diyor:\"1F53\",diz:\"0O030P2D0Q0B0V021F06\",\"diz \":\"0P0P\",dize:\"0P21\",dizer:\"0P1U\",diá:\"0P031407\",diç:\"0P09\",dié:\"0L030O02\",dið:\"130K\",diñ:\"1N1Q\",\"diñ \":\"1N0X\",diñl:\"1N0U\",dió:\"0O141406\",\"dió \":\"0O1M1402\",diý:\"1N62\",diýd:\"1N19\",diýdi:\"1N1Q\",diýe:\"1N1A\",diýen:\"1N1N\",diýi:\"1N4N\",diýip:\"1N67\",diýý:\"1N0X\",diýýä:\"1N17\",diĉ:\"1O04\",dič:\"0U0P0V020Y0E\",\"diče \":\"0U0U\",diē:\"0T06\",diĝ:\"1O0C\",diğ:\"1F6Q\",diği:\"1F79\",\"diği \":\"1F1L\",diğim:\"1F2K\",diğin:\"1F63\",diň:\"1N4K\",\"diň \":\"1N1N\",diňe:\"1N1L\",\"diňe \":\"1N1O\",diňi:\"1N0Y\",diňiz:\"1N19\",diňl:\"1N22\",diňle:\"1N2K\",diş:\"1F0W1N0P\",diš:\"0V1E0Y0J1B03\",\"diš \":\"0V1D\",diť:\"0Y0F\",\"dj \":\"140R\",dja:\"141E\",\"dja \":\"142Q\",dji:\"0109\",djie:\"010M\",\"djie \":\"010L\",dju:\"100H140A\",djur:\"100F\",djá:\"140M\",dkl:\"0Z02\",dko:\"0R020U020Y0B0Z0310021A0B\",dku:\"0U0E0Y0O1A0I\",\"dku \":\"0U0H0Y161A0P\",dkø:\"0Z02\",\"dl \":\"0U17\",\"dla \":\"0U130Y1F10021A2B\",dlac:\"1A1I\",dlacz:\"1A2F\",\"dle \":\"0M0A0U0S0Y0E0Z051205\",dled:\"0Z041P17\",dledo:\"1P1D\",dlem:\"03030U060Z0510031209\",dler:\"0N020Z0C1209\",dlh:\"0Y1G\",dlho:\"0Y1J\",\"dlho \":\"0Y1V\",dlic:\"0N0X\",dlig:\"0Z0S100D120Q\",\"dlig \":\"0Z081003120G\",dlige:\"0Z0D10021209\",dligt:\"0Z0D1005\",dlin:\"0Z0I1005120C1P1J\",dling:\"0Z0L1005120C\",dlino:\"1P15\",dlis:\"0339\",\"dlis \":\"035P\",dlo:\"01090O020U1N0V050Y0Z\",\"dlo \":\"0O020U120Y19\",dloo:\"010K\",dloop:\"010L\",dlou:\"0U1H\",dlouh:\"0U21\",dlu:\"0N020U080V0J1C0B1Q05\",dly:\"0M080U02\",\"dly \":\"0M0F0U04\",dlä:\"1003\",dlæ:\"0Z02\",dlí:\"0S0T0U0G\",dma:\"030A0V0D0Z02130A1D0J\",dmo:\"0T030V091Q08\",dmu:\"0M02\",dmí:\"0U0E\",\"dn'\":\"0M3U\",\"dn't\":\"0M6Y\",\"dn't \":\"0M9B\",dnak:\"0V0314161A07\",\"dnak \":\"14181A0A\",\"dne \":\"0U0T0V0H0Y1M0Z061A0M\",dnen:\"0Y18\",dnený:\"0Y10\",dnes:\"0M030U2I0V030Y2V\",\"dnes \":\"0U2W0Y39\",\"dni \":\"0U060V0A0Y0T143X1A0L\",dnie:\"14021A1F1D0K\",\"dnie \":\"14021A1G\",dnin:\"0U020Z0B100T120E\",dning:\"0Z0E100T120E\",dno:\"0U1S0V2R0Y1C14071A0P\",\"dno \":\"0U0P0V1P0Y0X1A0H\",dnou:\"0U1B\",\"dnou \":\"0U1C\",dnu:\"0N020U0I0V0I0Y0T0Z0914021C0P\",\"dnu \":\"0U0H0V0L0Y0Q0Z0Q\",dnud:\"1C0V\",\"dnud \":\"1C26\",dny:\"0B020U090Y071A0U\",dná:\"0U0I0Y0I140G\",dné:\"0U0V0Y0V1405\",\"dné \":\"0U1A0Y10\",dní:\"0U130Y0E\",\"dní \":\"0U1E0Y0I\",dný:\"0U0N0Y0X\",\"dný \":\"0U100Y1C\",dně:\"0U1R\",\"dně \":\"0U2J\",\"do-\":\"0P09\",doa:\"0P06151T\",doar:\"0P03152U\",\"doar \":\"0P03152T\",\"dob \":\"1P4F\",dobb:\"0Q0P0Z051204\",dobbi:\"0Q0Q\",dobn:\"0U0E0Y1914031A0N\",dobr:\"0P040U1W0V2N0Y5K1A3B\",dobre:\"0V0I0Y2R1A0T\",dobro:\"0P020U0H0V4M0Y0D1A03\",dobrz:\"1A2F\",dobrá:\"0U0B0Y0X\",dobré:\"0U0P0Y10\",dobrý:\"0U160Y1M\",dobs:\"1P1U\",\"dobs \":\"1P21\",dobř:\"0U1K\",dobře:\"0U23\",doce:\"0O060P060R020T0S0U091A03\",doch:\"0N1G0R0D0S0V0U021A031Q5Q\",\"doch \":\"0N2F1Q10\",docht:\"0R0I0S2K\",dochv:\"1Q6H\",docu:\"0L040M030O050P050Q050R030T0R1507\",dod:\"0R020U080V0A140Y1A071D1X\",\"dod \":\"142B1D18\",doe:\"012M0M1V0P0I0R1W\",\"doe \":\"0R16\",doen:\"015L0P0I0R4E\",\"doen \":\"015W0R5S\",does:\"0M3G\",\"does \":\"0M1P\",doesn:\"0M33\",doet:\"0R13\",\"doet \":\"0R1H\",dof:\"1P1A\",\"dof \":\"1P1E\",\"dog \":\"010P0M0N0Q020Z05100H140M1P0Z\",dogi:\"1P1H\",\"dogi \":\"1P19\",dogr:\"1N25\",dogry:\"1N20\",dogt:\"010J1402\",dogte:\"010K\",doh:\"0B070U0614061Q03\",doi:\"0L1N0M110P0Y11061510\",doin:\"0M1W1108\",doing:\"0M2L\",dois:\"0L1G0P14\",\"dois \":\"0L250P1E\",doit:\"0L0X\",\"doit \":\"0L1H\",doj:\"0U050Y0H1A061B0E1O161Q09\",\"doj \":\"1O161Q06\",dojn:\"1O0P\",\"dojn \":\"1O1F\",\"dok \":\"0D040V0Q0Y0B142P1A041B02\",dokon:\"0U0R0Y0W1A04\",dokte:\"0B1E0R0K\",doká:\"0U100Y0I\",dokáž:\"0U0W0Y0F\",\"dol \":\"0D020R030Y2O14051P2F\",dolg:\"1449\",dolgo:\"1447\",dolla:\"0L0D0M080N0A0Q080R0C0T060Z0H1006110Z1209130T1N0L\",dolli:\"112A\",dolo:\"0O0I0P020Q080T0C141S1O0E\",dolö:\"1P17\",dolöd:\"1P17\",\"doma \":\"0U190Y1P\",doman:\"0Q27\",domh:\"0S0Q\",domha:\"0S2K\",\"domi \":\"0T0Y1B0E1P11\",domin:\"0L040M020O0L0P0F0Q020T3Z1B0I\",domm:\"0L050R050Z051209\",domo:\"0T0K0U090Y281A0U1O181P23\",\"domo \":\"0T0G1A041O1L1P1R\",domov:\"0U0B0Y2H\",doms:\"0Z02100212041P11\",\"doms \":\"1P17\",domu:\"0T3L0U0E0Y0B1A211B0I1F03\",\"domu \":\"0U0H0Y0C1A381B0T\",domum:\"0T29\",domus:\"0T1J1B09\",domā:\"1D45\",\"domā \":\"1D25\",domāj:\"1D71\",domů:\"0U10\",\"domů \":\"0U1E\",\"don'\":\"0M5U\",\"don't\":\"0M7W\",dond:\"0O0S0P020R031F05\",donde:\"0O100R04\",\"done \":\"0M1H0O020Q051B06\",dong:\"0B040D0J\",\"dong \":\"0D0Z\",donn:\"0L2U0N020Q0P0T021104\",donne:\"0L2W0N040Q091104\",donné:\"0L1J\",dons:\"0L0914021P0X\",\"dons \":\"0L0F1P11\",doo:\"010F0D060M0D0R130U031A02\",dood:\"010T0R0Z\",\"dood \":\"010T0R12\",doon:\"0D0B\",\"doon \":\"0D0K\",door:\"0M0O0R2V\",\"door \":\"0M0S0R31\",dopi:\"0U0T1A08\",dopis:\"0U14\",dopo:\"0Q0T0U081A0B\",\"dopo \":\"0Q0S\",doras:\"0O040P020S2K1A021B031O06\",dore:\"0L0G0O0L0P0O0Q090T03151B\",dores:\"0O0R0P0T150I\",dorm:\"0L0X0O0X0P100Q130T1N15151O0Y\",dormi:\"0L1B0O130P120Q0O0T1O15111O0U\",doss:\"0L020Q0L1103\",dost:\"0U2W0V0V0Y1J110D1A0Y1F071N27\",\"dost \":\"0U1D\",dosta:\"0U2G0V1P0Y1O110K1A1B\",dostl:\"1F031N19\",\"dosť \":\"0Y0Z\",\"dot \":\"110414081D0U1Q0J\",doti:\"0T0211091B091D1A\",dotie:\"1D32\",dott:\"0Q0W100B111N142Y\",\"dott \":\"142W\",dotta:\"0Q05112W1406\",dou:\"0L0T0M060O030P0V0U1I0Y08151G\",\"dou \":\"0P0V0U180Y0D150B\",douf:\"0U0X\",doufá:\"0U11\",două:\"151Y\",\"două \":\"1525\",\"dov'\":\"0Q0L\",dova:\"0U0R0V060Y1615051B0Q\",dove:\"0Q4V0U050V070Y0A0Z051509\",\"dove \":\"0Q3Y0V0B\",dovo:\"0U0T0V0Y0Y0R\",dovol:\"0U110V2D0Y0S\",dovr:\"0Q2J\",dovre:\"0Q2E\",dovu:\"0Q0U0U02\",dovut:\"0Q0U\",down:\"0M110R030Z021A03\",\"down \":\"0M19\",doy:\"0O021Q1H\",doz:\"0P020U060V0H0Y071408\",dođ:\"0V0X\",doğ:\"1F21\",doğr:\"1F1D\",doğru:\"1F1U\",doš:\"0U060V0N1D0H\",dp:\"0R020U0S0Y0T0Z031A0J1O021Q07\",dpa:\"0U0310021A02\",dpi:\"1A031O02\",dpo:\"0U190Y1N1A0W\",dpov:\"0U180Y24\",dpove:\"0Y2J\",dpově:\"0U1G\",dpowi:\"1A1R\",dpr:\"1A02\",dq:\"0T041Q06\",dqu:\"0O020P020T091Q0A\",draa:\"0R0W\",drage:\"0R0J0T020Z0F\",drai:\"0L130Q0J1B02\",drak:\"0U020Z0B12061B03\",\"drak \":\"0Z0E\",drar:\"03051017120F130A\",\"drar \":\"03081016120F130K\",drau:\"0N0A130F1B2V1D2A\",draug:\"130B1B5A1D48\",drav:\"0U0P0V0H0Y0T\",\"dre \":\"0L5E0O290P040Q1L0Z2T100E124F140Q\",dred:\"03020L030M050Z0U1O02\",drede:\"0Z0W\",drei:\"0N190R051206131H1D0M\",\"drei \":\"0N1H1331\",drekk:\"131W\",dren:\"03060M0O0Z0Y120I130C1403\",\"dren \":\"030A0M0W\",drene:\"0Z03120I\",dreng:\"0Z0Z130P1403\",drep:\"120I130F151B\",drept:\"120A151O\",drer:\"0Z0A120B\",\"dres \":\"0D020L0F0O100P070R070Z031A08\",dress:\"0L0L0M0L0N060Z0A100A1209\",dret:\"0Q0H0Z081006120J\",\"dret \":\"03020Z091006120F\",\"dri \":\"0Q06122H130T\",dric:\"100W\",drick:\"100W\",drie:\"010T0L060R1N\",\"drie \":\"010T0R1U\",drig:\"0N020Z1P101Y\",\"drig \":\"0Z23101Y\",drik:\"0Z191214\",drikk:\"0Z1D1213\",dring:\"0N050R060T020Z061003120C\",drink:\"011M0M0U0R1G0Z041002110312041A031O0D\",drino:\"1P1T\",driv:\"0M0N0Z0610061207\",drive:\"0M0O0Z0410031205\",droi:\"0L16\",droit:\"0L1Z\",dron:\"010H0L060O020Q020R0K0Z051O03\",dronk:\"010I0R0Q\",droo:\"010M0M030R0G\",droom:\"010L0M040R0E\",droš:\"1D15\",drug:\"0M030O020R020V1W1A0G1B06\",drugi:\"0V201A0L\",druh:\"0U0O0Y16\",druk:\"010N0R0Y0Z0E120413051C18\",\"druk \":\"0R0U1C1S\",dry:\"0M02100213031A03\",drz:\"1A0W\",drà:\"0Q0A\",drá:\"0O0H0U050Y08140D\",drã:\"0P03\",drä:\"1004\",dræ:\"0Z081303\",dræb:\"0Z0K\",dræbt:\"0Z0J\",dré:\"0O060U020Y05\",drí:\"0O0W\",dría:\"0O1D\",\"dría \":\"0O16\",drò:\"0Q0C\",\"drò \":\"0Q0K\",dró:\"0O0414031A0F\",drô:\"0L04\",drö:\"100D\",dröm:\"100F\",drø:\"0Z091207\",drøm:\"0Z0L120H\",drømm:\"0Z0D1208\",drü:\"0N05\",dră:\"150I\",drą:\"1B09\",drī:\"1D1H\",drīz:\"1D1E\",\"drīz \":\"1D3G\",drž:\"0U0L0V100Y0I\",\"ds-\":\"0L06\",dsa:\"03030Y0G0Z051003\",dsb:\"0Z04\",dsby:\"0Z09\",dsc:\"0N050R05\",dse:\"03040R030V060Z0G100712031C0Y\",dsel:\"0R060Z0I12061C0G\",dsels:\"0Z0E\",dser:\"0Z081403\",dsf:\"0Z021002\",dsh:\"0M02\",dsi:\"0Z031A021C151D0Q\",dsim:\"1D0X\",dsimt:\"1D2F\",dsin:\"1C0R\",\"dsin \":\"1C1V\",dsk:\"01070U080V0E0Y0K0Z0H100D1205\",dsky:\"0Y090Z0G\",dskyl:\"0Z0H\",dsl:\"0Z0310041202\",dsm:\"1D0E\",dso:\"0Z02\",dsp:\"0Z051203\",dss:\"0Z0310031202\",dst:\"0N020R090U0J0V070Y0I0Z1L100B12041A09\",\"dst \":\"0Z0O\",dsta:\"0R0I0U0H0V040Y0K0Z0A100812051A0C\",dste:\"0R050Z2S\",\"dste \":\"0R060Z2S\",dstef:\"0Z0D\",dsu:\"0T040U050V021002\",dsv:\"0Z02\",dsy:\"0Z02\",dsz:\"140Y1A08\",\"dsz \":\"141U\",\"dt \":\"03060N0B0R140Z3X121X1411\",dta:\"0Z0610031202142Y1Q16\",\"dta \":\"142T\",dtam:\"143C\",\"dtam \":\"143J\",dte:\"0N020Z0X1208140N\",\"dte \":\"0N030Z28120H140E\",dti:\"0Y080Z03\",dtil:\"0Z09\",dto:\"1402\",dtr:\"0Z04\",dtu:\"1406\",dtá:\"140F\",dtí:\"0S130U06\",\"dtí \":\"0S18\",\"du'\":\"1Q2K\",\"du-\":\"0303150I\",dua:\"0B130M030O030P0P0T0F1F031O07\",\"dua \":\"0B200T021F031O08\",duas:\"0P0R0T0J\",\"duas \":\"0P0Y0T0K\",dubi:\"0Q030T0R\",duce:\"0M070O080Q050R030T0L0Z041002151N\",duci:\"0O0P0Q050T0F150H\",dud:\"030F0B0F0D020O090T021F021O05\",dudu:\"0B0U0T03\",duduk:\"0B1O\",due:\"0L080M020O0C0Q100Z081207\",\"due \":\"0L0A0M030Q1L0Z03\",duet:\"0Z0C120D\",\"duet \":\"0Z0E120D\",duf:\"040O\",dufi:\"041V\",dufis:\"043C\",duga:\"047S0B060V07\",\"duga \":\"04D70B0B\",duh:\"040C0B040V061Q0F\",duin:\"0S3X1105\",duine:\"0SEM\",duir:\"0L0P\",duit:\"0L0S0R0Q0S2L0T031505\",\"duit \":\"0L0W0S9P1102\",duits:\"0L060R0Z\",duj:\"0O040U0D0V060Y0H1A0B1B031O021Q3A\",\"duk \":\"0B0W10021F0E\",duka:\"030D042R0B060D0210031A021B031O09\",dukç:\"1F12\",dukça:\"1F1G\",\"dul \":\"0S3A140B150V\",dulu:\"0B0R0T021402\",duma:\"0D0E1F02\",dumat:\"0D0G\",dumne:\"151R\",dung:\"0B0P0N0S1O071Q0D\",duni:\"030H0B14\",dunia:\"0B28\",duno:\"1P4O\",dunob:\"1P1L\",dunol:\"1P1R\",dunom:\"1P1W\",dunt:\"03070T11\",\"dunt \":\"030F0T0Z\",dunö:\"1P5L\",dunön:\"1P6H\",duo:\"0P020T0Y1B2H1O0B\",\"duo \":\"0T0Q1B0A\",duok:\"1B0W\",duot:\"1B1B\",duoti:\"1B1L\",\"dup \":\"0B19\",după:\"1524\",\"după \":\"152C\",\"dur \":\"03090B1T0L0A133M1F1A1N0K\",dura:\"0L090O1B0P0Z0Q0M0T07150K1F0C1N0E\",duran:\"0L0C0O150P0T0Q0A1F02\",durc:\"0N1G\",durch:\"0N2F\",durm:\"0O080P021F0K1N19\",durmu:\"1N16\",duru:\"0T061F111N0F\",durv:\"14021D11\",duse:\"120415061C1N\",\"duse \":\"15051C1Z\",dush:\"044J\",dusho:\"044Q\",\"dust \":\"1C3O\",duu:\"01080R05\",duur:\"010J0R0K\",\"duur \":\"010G0R0C\",duv:\"0P040V071F06\",dux:\"0T0E\",duy:\"1F1X1Q08\",duydu:\"1F14\",duz:\"03020O020P0N0Q040V03\",duzi:\"0N020P0L0Q07\",duç:\"0P07\",duý:\"1N16\",duğ:\"1F76\",duğu:\"1F85\",\"duğu \":\"1F1A\",duğum:\"1F1N\",duğun:\"1F8G\",duş:\"1F031N14\",duż:\"1A1C\",dużo:\"1A19\",\"dużo \":\"1A21\",\"dve \":\"0V0G0Y10140H\",dven:\"0T120Z06120E140F\",dvend:\"0Z07120E\",dveni:\"0T0W\",dver:\"0L030O040P030R030T0F0Y1J\",dvere:\"0Y1R\",dveř:\"0U0X\",dveře:\"0U13\",dvo:\"0P050R020T020U0A0V0E0Y0J0Z0210021B071O02\",dvä:\"1005\",dvě:\"0U0H\",dwa:\"03040B020N020R021A0Q\",dwe:\"0N020R02\",\"dwi \":\"0422\",dwo:\"0N021A0G\",dya:\"030R0D071Q0B\",dyan:\"03020D06\",dyb:\"0U0W0Z041A0I1B02\",dyby:\"0U1H1A0R\",\"dyby \":\"0U0U1A0J\",dybyc:\"0U0U\",dyc:\"0U0H0Y0B1A08\",dyck:\"0U0R0Y08\",dycky:\"0U120Y0A\",dye:\"0305\",dyg:\"1N5Y\",dygy:\"1N8D\",dygym:\"1N16\",dygyn:\"1N8S\",dygyň:\"1N17\",dyi:\"0M051102\",dyk:\"0U0211021A091B0H1N1X\",\"dyk \":\"1B0G1N1A\",dykl:\"1N15\",dykla:\"1N1L\",dyl:\"11021N2X\",dyla:\"1N3X\",dylar:\"1N5A\",dym:\"0T2E1A061B061N65\",\"dym \":\"1A081N70\",dymu:\"0T3W\",dymus:\"0T3U\",dymy:\"1N1E\",\"dymy \":\"1N1E\",dyn:\"11031A0K1B091N1F\",dyo:\"0D051F04\",\"dyo \":\"0D091F02\",dyp:\"12041N15\",\"dyp \":\"12051N1G\",dyr:\"0Z0H1008120D13121N4Z\",\"dyr \":\"0Z0T1003120E1N3W\",dyre:\"0Z09120D1A02\",dyrn:\"1314\",dyrna:\"132D\",dyry:\"1N10\",dys:\"0U0911081A081B0D\",dyt:\"11061A031B1H\",dyti:\"1B1C\",\"dyti \":\"1B2M\",dyto:\"1A031B0S\",dytoj:\"1B1M\",dyu:\"0305\",dyz:\"1N0I\",dyñ:\"1N1J\",\"dyñ \":\"1N1B\",dyň:\"1N1W\",\"dyň \":\"1N1L\",dyž:\"0U1Y\",\"dyž \":\"0U36\",dz:\"03040R020U020Y1D14041AEG1D751O0H\",\"dz \":\"0Y0S1A0E1D5D\",dza:\"030C0R020Y171A0X1D1I\",\"dza \":\"0Y161A0D1D0W\",dze:\"0Y071A1O1D2P\",dzen:\"0Y081A1F\",dzeni:\"1A29\",dzer:\"1D1Y\",dzi:\"0U030Y0L1AKJ1D5G1O0N\",\"dzi \":\"0Y0J1A2S1D0S\",dzia:\"1A5X\",dział:\"1A8B\",dzie:\"1AFS1D29\",\"dzie \":\"1A9F\",dziec:\"1A35\",dzied:\"1A041D2T\",dziej:\"1A2J\",dziel:\"1A1S\",dzies:\"1A2R1D1W\",dziew:\"1A20\",dzieć:\"1A2U\",dzień:\"1A1I\",dzim:\"0U051A081D0X\",dzin:\"0Y091A1U1D1N1O0M\",dzinā:\"1D25\",dzir:\"1D13\",dzird:\"1D2K\",dzis:\"1A1F\",dzisi:\"1A1K\",dzić:\"1A1D\",\"dzić \":\"1A26\",dził:\"1A1V\",\"dziś \":\"1A1U\",dzo:\"03021A2K1D0G1O06\",\"dzo \":\"1A3D1O06\",dzt:\"0Y0L\",dzte:\"0Y10\",\"dzte \":\"0Y18\",dzu:\"0Y041D2S\",\"dzu \":\"1D3D\",dzy:\"1A0Y\",\"dzy \":\"1A18\",dzē:\"1D66\",dzēj:\"1D2E\",dzēja:\"1D2O\",dzēji:\"1D1R\",dzēt:\"1D49\",\"dzēt \":\"1D53\",dzētu:\"1D58\",dzę:\"1A0T\",dzī:\"1D7A\",dzīb:\"1D15\",dzīg:\"1D18\",dzīv:\"1D6V\",dzīve:\"1D2O\",dzīvi:\"1D1R\",dzīvn:\"1D1W\",dzīvo:\"1DA1\",\"dà \":\"0Q03\",dá:\"0O020P090S0O0U2B0Y1D13031416\",\"dá \":\"0O030P0E0U1O0Y14\",\"dá-\":\"0P0C\",dái:\"0S0T1303\",dáir:\"0S0Q\",dáirí:\"0S32\",dál:\"0U0M1409\",dám:\"0U0J0Y0N1403\",\"dám \":\"0U0O0Y0Z1404\",dán:\"0S0N0U071404\",\"dán \":\"0S0Q0U031405\",dás:\"140X\",dát:\"0U0D0Y051407\",dáv:\"0P080U0X0Y0Z\",dáva:\"0U0I0Y1I\",dâ:\"1502\",dã:\"0P03\",dão:\"0P0D\",dä:\"0N02100X112I1N4N1P0M\",\"dä \":\"114C\",däl:\"11071N8G\",\"däl \":\"1N60\",däld:\"1N2R\",däldi:\"1N3O\",dälm:\"1N3J\",dälmi:\"1N4U\",däm:\"1109\",dän:\"113C1P0S\",\"dän \":\"115W1P0J\",där:\"102L\",\"där \":\"1037\",dät:\"111G\",\"dät \":\"1119\",dätkö:\"112A\",dää:\"110A\",då:\"0Z06100D1207\",\"då \":\"100K\",dål:\"100G\",dåli:\"100M\",dålig:\"100M\",dår:\"0Z08120C\",dårl:\"0Z0L120U\",dårli:\"0Z0P120U\",dæ:\"0T020Z031306\",\"dæ \":\"0T03\",dæk:\"0Z04\",dè:\"0L02\",dèr:\"0L03\",dès:\"0L06\",\"dé \":\"0L140O0B0U100Y050Z0210081202\",déa:\"0L020S4G\",déan:\"0S49\",\"déan \":\"0S2K\",déana:\"0S8M\",déanf:\"0S49\",déb:\"0L0F0O02\",déc:\"0L1B0O020P02\",déci:\"0L0U\",dée:\"0L0N\",\"dée \":\"0L0V\",déf:\"0L0E\",dég:\"0L061406\",déi:\"0O040P02\",déj:\"0L170O07\",déjà:\"0L1I\",\"déjà \":\"0L2J\",dék:\"140K\",dél:\"0L080U04140E\",dém:\"0L0G0U04\",déo:\"0L03\",dép:\"0L0R\",dér:\"0L0F0Z021403\",dés:\"0L100O051411\",déso:\"0L0T\",dét:\"0L0P1402\",déte:\"0L0R\",dév:\"0L06\",déç:\"0L03\",dê:\"0P05\",\"dê \":\"0P08\",\"dê-\":\"0P05\",dên:\"0P07\",dês:\"0P04\",dì:\"0Q06\",\"dì \":\"0Q0M\",dí:\"0O100P020S0P0U2P0Y1R140F\",\"dí \":\"0O0F0U200Y1G\",día:\"0O2I0P02\",\"día \":\"0O2O\",días:\"0O14\",\"días \":\"0O1H\",díg:\"0O03\",dím:\"0U100Y1M\",\"dím \":\"0U1D0Y26\",dín:\"0O070Y09\",dío:\"0S0T\",díol:\"0S0M\",dít:\"0U0L0Y08140K\",dítě:\"0U0R\",\"dítě \":\"0U0X\",dív:\"0P020U1E\",díva:\"0U0T\",díš:\"0U0B0Y0E\",dî:\"0L02\",dîn:\"0L08\",dò:\"0Q03\",\"dò \":\"0Q0B\",dó:\"0O0N0P030S0S0Y021308140F1A07\",\"dó \":\"0O0M0S121304140B\",dói:\"0P020S10\",dól:\"0O060P08\",dón:\"0O1C0Y05\",dónd:\"0O1V\",dónde:\"0O2G\",dô:\"0Y0M\",dôl:\"0Y0I\",dôlež:\"0Y12\",dôv:\"0Y0S\",dö:\"100Q1305140R1F0S1N0L1P4M\",\"dö \":\"10081P3N\",död:\"100R\",döda:\"100L\",döm:\"10031402\",dön:\"140M1F1G1P4J\",\"dön \":\"140C1F021P5L\",dönt:\"1417\",dör:\"100R14021F0C1N0G\",dörr:\"100W\",dörre:\"100R\",döt:\"1003140A\",döw:\"1N0N\",dø:\"0Z0P120O\",\"dø \":\"0Z031204\",død:\"0Z0H120G\",\"død \":\"0Z0E1207\",døde:\"0Z0T120S\",\"døde \":\"0Z0S120P\",døm:\"1203\",dør:\"0Z0E120B\",\"dør \":\"0Z09\",døre:\"0Z0P120H\",døren:\"0Z0R120G\",døv:\"0Z021203\",dú:\"0S0Q0Y0L1302\",\"dú \":\"0Y0I\",dúc:\"0Y0E\",dúf:\"0Y0L\",dúfa:\"0Y10\",dúfam:\"0Y12\",dúi:\"0S1E\",dúir:\"0S1A\",dúirt:\"0S58\",dúv:\"0P05\",dû:\"0L03\",\"dû \":\"0L0F\",dü:\"0N03140F1F5O1N4B1P09\",\"dü \":\"1F26\",dük:\"1F0E1N0D\",dül:\"140L1F08\",\"dül \":\"14191F02\",düm:\"1F181N1O\",\"düm \":\"1F1E1N29\",dün:\"14021F2O1N0R\",\"dün \":\"1F1O\",düny:\"1F0Z\",dünya:\"1F1C\",düný:\"1N13\",dünýä:\"1N1I\",dür:\"0N041F1K1N0O\",düz:\"1F0K1N0A\",düý:\"1N1E\",düýn:\"1N1Q\",\"düýn \":\"1N29\",düğ:\"1F1N\",düğü:\"1F1U\",düğün:\"1F1H\",düş:\"1F5G1N3A\",düşü:\"1F5L1N3N\",düşün:\"1F761N4O\",dý:\"0U0N0Y0W13091N31\",\"dý \":\"0U110Y1X\",dýa:\"1N1E\",dýar:\"1N1P\",\"dýar \":\"1N1Q\",dýr:\"130K\",dýä:\"1N4Q\",dýän:\"1N15\",dýär:\"1N5B\",\"dýär \":\"1N2C\",dýäri:\"1N39\",dā:\"1D1Z\",\"dā \":\"1D3F\",dāj:\"1D0R\",dām:\"1D0J\",dār:\"1D0Y\",dārz:\"1D0U\",dās:\"1D13\",\"dās \":\"0T021D1C\",dāt:\"1D14\",\"dāt \":\"1D13\",dāv:\"1D0H\",dă:\"150P\",\"dă \":\"1523\",dą:\"1A0C1B0H\",\"dą \":\"1A0J1B1B\",dč:\"0U050Y05\",dē:\"0T091D1D\",\"dē \":\"0T03\",dēb:\"0T05\",dēj:\"1D23\",dēl:\"0T031D0N\",dēr:\"0T05\",dēs:\"0T03\",dēt:\"1D1B\",\"dēt \":\"1D0X\",dēļ:\"1D1E\",\"dēļ \":\"1D13\",dė:\"1B48\",\"dė \":\"1B1R\",dėd:\"1B07\",dėj:\"1B2H\",dėja:\"1B1G\",dėjau:\"1B1J\",dėjo:\"1B29\",\"dėjo \":\"1B3Y\",dėk:\"1B0T\",dėl:\"1B3S\",\"dėl \":\"1B5W\",dėm:\"1B0H\",dės:\"1B0U\",dėt:\"1B1I\",dėti:\"1B23\",\"dėti \":\"1B3Q\",dėž:\"1B09\",dę:\"1A171B05\",\"dę \":\"1A2H1B05\",dęs:\"1B08\",dě:\"0U7G\",\"dě \":\"0U13\",děj:\"0U14\",\"děje \":\"0U0S\",ději:\"0U14\",\"ději \":\"0U1I\",děl:\"0U9X\",\"děl \":\"0U40\",děla:\"0U8A\",\"děla \":\"0U0V\",dělal:\"0U5E\",dělat:\"0U5E\",děli:\"0U0Z\",\"děli \":\"0U17\",dělá:\"0U2U\",\"dělá \":\"0U1V\",dělám:\"0U12\",dět:\"0U2B\",\"dět \":\"0U1Y\",děti:\"0U1B\",\"děti \":\"0U1T\",dī:\"0T0E1D1J\",\"dī \":\"0T03\",dīc:\"0T0C\",dīg:\"1D0R\",dīj:\"1D1W\",dīju:\"1D0U\",dījā:\"1D0S\",dījās:\"1D1W\",dīm:\"0T04\",dīs:\"1D0O\",dīt:\"1D20\",\"dīt \":\"1D1H\",dīv:\"0T061D0G\",dīx:\"0T07\",dį:\"1B08\",\"dį \":\"1B0M\",dı:\"1FBL\",\"dı \":\"1FBL\",dık:\"1F16\",\"dık \":\"1F11\",dıl:\"1F0V\",dım:\"1F6L\",\"dım \":\"1F6M\",dın:\"1F2L\",\"dın \":\"1F1O\",dır:\"1F52\",\"dır \":\"1F4J\",dığ:\"1F46\",dığı:\"1F4R\",dığım:\"1F1D\",dığın:\"1F4H\",dış:\"1F1C\",dışa:\"1F0X\",dışar:\"1F19\",dľ:\"0Y07\",dľa:\"0Y0G\",dł:\"1A1V\",\"dł \":\"1A1E\",dłu:\"1A15\",dług:\"1A1C\",dň:\"0Y05\",dō:\"0T0B\",\"dō \":\"0T0P\",dő:\"141M\",\"dő \":\"140M\",dőb:\"140C\",dőr:\"140F\",dős:\"140D\",dř:\"0U0C\",dří:\"0U0I\",dřív:\"0U0P\",dš:\"0U060Y0B\",dše:\"0Y0G\",dū:\"1B02\",dūc:\"0T02\",dů:\"0U0V\",důl:\"0U0C\",důlež:\"0U0S\",dům:\"0U0P\",\"dům \":\"0U15\",dův:\"0U0F\",dų:\"1B08\",\"dų \":\"1B0N\",dź:\"1A0S\",\"dź \":\"1A15\",dż:\"1A07\",dž:\"0U020V0B0Y031B1M1D0A\",dži:\"0V051B46\",džia:\"1B38\",džiau:\"1B2V\",džio:\"1B19\",\"džio \":\"1B1E\",džiu:\"1B1K\",\"džių \":\"1B1E\",dɣ:\"0308\",\"e' \":\"1QSG\",\"e'c\":\"1Q1N\",\"e'd\":\"0M0F1F071Q0F\",\"e'd \":\"0M0S\",\"e'l\":\"0M0D1Q10\",\"e'll\":\"0M0O\",\"e'll \":\"0M0Y\",\"e'n\":\"1F031Q29\",\"e'r\":\"0M0G1Q3M\",\"e're\":\"0M0U\",\"e're \":\"0M16\",\"e'ri\":\"1Q6F\",\"e'riy\":\"1QAH\",\"e's\":\"0M1Y1Q06\",\"e's \":\"0M3K\",\"e'v\":\"0M061Q16\",\"e'y\":\"1F05\",\"e-a\":\"0P03152F1N0G\",\"e-am\":\"0P02151H\",\"e-am \":\"151W\",\"e-c\":\"0L06\",\"e-d\":\"0L021N0N\",\"e-de\":\"1N0Y\",\"e-de \":\"1N1B\",\"e-l\":\"0L0B0P021505\",\"e-me\":\"0P0I\",\"e-mo\":\"0L0V\",\"e-moi\":\"0L1F\",\"e-o\":\"0P031505\",\"e-p\":\"0L021F03\",\"e-s\":\"0P0E\",\"e-t\":\"0L0N150C\",eaa:\"110L1C0D\",eab:\"0O040S3N150J1B031C18\",\"eab \":\"1C1J\",eabh:\"0S4D\",eabha:\"0SFC\",eac:\"0M0Y0O030SC5150D\",each:\"0M1K0N030R020SDP\",\"each \":\"0M160SL3\",eacha:\"0S7J\",eache:\"0M0W\",eacht:\"0N050R020SMC\",\"ead \":\"0M1H0S111C2C\",eada:\"0B090M020O040P031C0U\",\"eada \":\"0O040P031C22\",eadh:\"0S32\",\"eadh \":\"0SBR\",eadu:\"1C0N\",eadus:\"1C1L\",eady:\"0M15\",\"eady \":\"0M1K\",eae:\"0T0G\",\"eae \":\"0T0T\",\"eag \":\"0S0X\",eaga:\"0S0M1508\",eagl:\"0S0O\",eagla:\"0S2T\",eagr:\"0S0T\",eagra:\"0S32\",eai:\"0L060P03150B\",eak:\"0M0Z0V0311031C1O\",\"eak \":\"0M12\",eaks:\"0M0611021C22\",\"eaks \":\"0M091C2Q\",eaksi:\"11041C2D\",\"eal \":\"0M0J0O070P060S0M1C1K\",eale:\"0M020O030Q030R0215041C16\",\"eale \":\"0Q031C2N\",eall:\"0M220S0M1108\",eally:\"0M2U\",ealm:\"0O0L0P0T\",ealme:\"0O0S0P11\",ealt:\"0M0C0Q0A1104\",\"eam \":\"0M0I0R050T4A151I\",eamh:\"0S36\",\"eamh \":\"0S9H\",eana:\"0S1C\",eang:\"0S1C\",eanga:\"0S5G\",eann:\"0L060Q080S8Q\",\"eann \":\"0SIH\",eanna:\"0SC5\",eap:\"0M040S1J0T03150K1B09\",eapa:\"0S0X\",eapá:\"0S0O\",\"ear \":\"0M1V0O0H0P070S3Z\",eard:\"0M0O\",\"eard \":\"0M0X\",earg:\"0S0X150R\",\"earg \":\"0S3A\",eari:\"0M0E0T02\",earin:\"0M0J\",earl:\"0M0N\",early:\"0M0Q\",earm:\"0S0O\",earn:\"0M0V0S0M\",\"earn \":\"0M0M\",earna:\"0S2K\",earr:\"0R030S28\",\"earr \":\"0S7R\",ears:\"0M13\",\"ears \":\"0M1H\",eart:\"0M0K0S5X1503\",\"eart \":\"0M0B0SDP\",earta:\"0S5X\",earth:\"0M0D0S41\",eas:\"0M1L0O0H0P030S3P0T0Q111215581O02\",\"eas \":\"0M050O0Q0P030S1R0T1B15071O03\",easc:\"152B\",ească:\"152Y\",ease:\"0M191102\",\"ease \":\"0M1G\",easo:\"0M0F\",eason:\"0M0L\",east:\"0M0C0S1L111C155R\",easta:\"0S5X110H1523\",easti:\"112T\",eastă:\"154T\",\"eat \":\"0M1T0S490T0Q1109150N\",eate:\"0M0N0N030R020Z03100212051B06\",eath:\"0M0N0S1G\",eatha:\"0S3A\",eati:\"0M0F0O020Q030R020T0A1B05\",eau:\"0L580M090R07153K\",\"eau \":\"0L550R0G0Z021549\",eauc:\"0L2H\",eauco:\"0L46\",eauna:\"151R\",eaut:\"0L050M0G0R05\",eauti:\"0M0J\",eaux:\"0L16\",\"eaux \":\"0L1Z\",eav:\"0M0O0T04150K1C0I\",eava:\"14021C0N\",eave:\"0M0Y\",\"eave \":\"0M14\",eaz:\"152M\",ează:\"1545\",\"ează \":\"154U\",eaç:\"0P05\",eañ:\"0O06\",eaț:\"150M\",ebag:\"0B0R\",ebai:\"0B0H0P051B03\",ebalo:\"0V1W\",ebam:\"0T1S\",\"ebam \":\"0T1O\",eban:\"0B0B0P020T160V0711021B04\",ebant:\"0T18\",ebas:\"0B0K0O030T061104\",ebat:\"0B090O030P020T2W150M\",\"ebat \":\"0B0C0T2K150L\",ebb:\"032L0Q2S0R1I1002141V\",\"ebb \":\"1428\",ebbe:\"03090Q480R5Q141Z\",\"ebbe \":\"0Q3S1407\",ebben:\"0R7K141O\",ebd:\"03160T0A\",\"ebe \":\"04150D030N120O0T0P060U1M0V1A0Y111B021N0K\",ebel:\"0B1D0N040R081505\",ebelu:\"0B201505\",eben:\"0B100D040N530O070P030T0414021B02\",\"eben \":\"0N6Y0O0A\",ebera:\"0B3K0P02\",eberí:\"0O2D\",ebeu:\"010F0P0A0R18\",ebeur:\"010G0R1O\",ebie:\"0N030O030R061A21\",\"ebie \":\"1A2V\",ebih:\"0B4H\",\"ebih \":\"0B8D\",ebij:\"1B091D1H\",ebija:\"1B061D3C\",ebil:\"0N0212051F3M\",ebili:\"0O021F3Q\",ebit:\"0Q030T0T1504\",ebk:\"1A021D0H\",ebla:\"03090O021O1K\",\"ebla \":\"030B0O031O1A\",eble:\"03070O030R041O14\",\"eble \":\"1O25\",ebli:\"012D0N0D0R0Z0Z0A120D1B021O06\",eblie:\"012I0N060R1C\",eblik:\"0Z0C120C\",ebn:\"03090N020U060V0M0Y0D1A05\",\"ebo \":\"0O0F0P040T0F0U1A0V050Y2J1A041O03\",ebol:\"0O020P0F0Q050Y2B1003\",\"ebol \":\"0P0H0Y1F\",ebor:\"010J0N090R0E0T0C0Z0512061402\",ebore:\"010K0N0F0R0J\",ebou:\"0L050R0C0U150Y1C\",\"ebou \":\"0U1L0Y1O\",ebru:\"010W0R1B0T040Z031002140215061O02\",ebrui:\"010Y0R1P\",ebs:\"030I0N05\",ebt:\"03050N0K0R0L\",\"ebt \":\"03030N100R29\",ebua:\"0B2D\",ebuah:\"0B4L\",ebud:\"0U1V0Y18\",ebude:\"0U1N0Y1E\",ebudu:\"0U0U\",ebui:\"0T0515AA\",\"ebui \":\"153M\",ebuie:\"158K\",ebuj:\"0U2R0Y2R1A14\",ebuje:\"0U220Y3B1A0X\",ebuji:\"0U15\",ebut:\"0B0Z\",\"ebut \":\"0B1M\",ebuv:\"1B14\",ebuvo:\"1B1W\",eby:\"03020U180Y0E1A1G\",\"eby \":\"0U030Y0M1A1G\",ebyl:\"0U1U\",\"ebyl \":\"0U1E\",ebä:\"0N021N0R\",ebæ:\"0Z02\",ebé:\"0O08140B\",ebê:\"0P06\",ebí:\"0O050U03\",ebö:\"1P0H\",ebø:\"0Z02\",ebė:\"1B0K\",ebū:\"1B0H1D0J\",ebɣ:\"034W\",ebɣa:\"033F\",\"ebɣa \":\"035Y\",ebɣi:\"031N\",\"eca \":\"0O0E0P0F0Q0O0T0G0V0N150K1O06\",ecar:\"0B0L0O020P020Q030T05151M\",ecare:\"0T041520\",ecat:\"0B070Q020T04151H\",\"ecat \":\"0B0D151O\",ecau:\"0M0P\",ecaus:\"0M0Y\",ecc:\"030W0O0I0Q1B0T111402\",ecce:\"03070Q080T14\",\"ecce \":\"0T16\",ecch:\"0Q12\",ecchi:\"0Q12\",ecci:\"03040O0R0Q02\",\"ece \":\"0M050O1X0P200Q0K0T030U060V05152D1A081F4O1O02\",ecek:\"1F4E\",\"ecek \":\"1F4N\",ecem:\"0O020P0J0T0L0Z02\",ecen:\"0M060O0D0P0I0Q0B0R020T07140215081A021F02\",ecer:\"0O0M0P1H0Q020T0R150R1F03\",\"ecer \":\"0O0J0P1E\",eces:\"0M070O3M0P0N0Q090T0O150N1F031O0P\",\"eces \":\"0M020O1L0P03\",ecesi:\"0O2U15051F041O05\",ecess:\"0M080P0P0Q090T0P\",eceu:\"0P1C\",\"eceu \":\"0P1N\",eceğ:\"1F5T\",eceği:\"1F7T\",\"ech \":\"0M050N020R020T060U1A0Y0L1A0V1Q1D\",echa:\"0O160P0E0U0Y0Y0V1A1I\",echal:\"0U0U1A08\",echc:\"0U2D0Y351A031Q07\",echce:\"0U1N0Y3U1A02\",echci:\"0U1P\",echen:\"0N26\",echn:\"0L050M030N0D0R030U2T14031A091B02\",echno:\"0L030M020R020U2A14021A031B03\",echny:\"0U1E\",echo:\"0O230P030U0C0Y0B1A07\",\"echo \":\"0O29\",echt:\"0N250R440U121Q07\",\"echt \":\"0N1X0R39\",echte:\"0N130R1F0U07\",echtě:\"0U19\",echá:\"0U0Q0Y0R\",\"eci \":\"0L0R0P0F0Q0L0T0I0U020V0Q0Y0P151L1A171F04\",ecia:\"0M090O0I0P0U0Q0L0R050T070Z02150G1A091B051O05\",ecib:\"0O0J\",ecid:\"0M0H0O0V0P150Q060T0F15051O0L\",ecide:\"0M0N0Q050T031505\",\"ecie \":\"0O040Q021A1J\",ecil:\"0B110O021F02\",\"ecil \":\"0B1T\",ecim:\"0O050P0A0T0Y\",ecin:\"0L0G0O0B0T04150H1D15\",ecinā:\"1D2A\",ecir:\"0O1K\",\"ecir \":\"0O1G\",ecis:\"0M070O0F0P410Q0T0T0O100I150H\",\"ecis \":\"100I150L\",ecisa:\"0O030P2Q0Q04\",eciso:\"0O020P250Q0D\",ecit:\"0O020Q020T1B0V04\",\"ecit \":\"0T18\",ecka:\"03040U03100G1A04\",ecl:\"03050M020O060P0B0T04150A\",ecn:\"03040O020P020Q030U020Y051A09\",eco:\"0L0N0M0P0O0Y0P0X0Q0O0R030T0G150Q1A031O1K\",\"eco \":\"0O050P040Q061A031O1M\",ecom:\"0L070M0H0O060P061508\",econ:\"0L0P0M0G0O0H0P0H0Q0O0R09150I1O0P\",\"econ \":\"1O1F\",ecor:\"0M050O0C0P070Q040T0Q1506\",ecr:\"03060L090M050O090P050T0515091F02\",ecs:\"0L06140J\",\"ect \":\"030I0L090M130R0J151H\",ecta:\"0L060M020O0P0P030T2F150N\",ecte:\"0L0S0M0I0R0C0T0L150L\",ected:\"0M0P\",ecti:\"0L0V0M0L0O070R070T11150C\",ecto:\"0L020M030O1B0P030T141506\",\"ecto \":\"0O170P020T0O\",ectu:\"0L0A0M020O050T21150G\",ectus:\"0T12\",ecue:\"0O0T\",ecum:\"0T1Y150B\",\"ecum \":\"0T21150E\",ecun:\"0O030P020T2S150V\",ecund:\"0O030P020T0W1507\",ecuni:\"0T23\",ecut:\"0M020O020P020T0A1521\",\"ecut \":\"151Q\",ecz:\"1A3C\",eczn:\"1A1B\",eczy:\"1A1E\",ecâ:\"151M\",ecât:\"152M\",\"ecât \":\"153D\",ecé:\"0O02\",ecê:\"0P03\",ecí:\"0O0G0P020U030Y05\",ecía:\"0O0J\",ecā:\"1D10\",ecāk:\"1D0S\",ecă:\"150J\",ecī:\"1D0R\",ecū:\"0T04\",edaa:\"0B050R1B\",edaan:\"0B0B0R1Q\",edad:\"0D040O140P091002\",\"edad \":\"0D070O15\",edag:\"0R020Z09100C12071C0O\",edagi:\"1C1O\",\"edal \":\"0U0D0Y66\",edala:\"0U020V0H0Y24\",edam:\"0O020T170V0O1B03\",\"edam \":\"0T160V1I\",\"edan \":\"0O080V3H101T\",edang:\"0B72\",edar:\"0N020O0S10031B0N1D0S\",edas:\"0O090P030T061B081C0H1O13\",\"edas \":\"0O0B0P030T071B0E1O25\",edať:\"0Y1Q\",\"edať \":\"0Y25\",edb:\"100214061Q06\",\"edd \":\"0305100612101417\",edda:\"03390Q030T03\",\"edda \":\"034F0Q02\",edde:\"03230R0B0T090Z11100A121214071F0D\",\"edde \":\"0R060T030Z061004120S\",edder:\"030L0Z0T1206\",eddi:\"031Q0M040T09140T\",eddu:\"0340\",\"eddu \":\"032S\",edec:\"0N030O040P030T061F0X\",edece:\"0O030P041F19\",eded:\"0M0K0O0A\",\"eded \":\"0M0R\",\"edel \":\"0Y240Z031003\",edeli:\"010G0R090V070Y0F0Z0812051F05\",edelj:\"0V24\",edend:\"0Q070R040T061N1N\",edeng:\"0D0S\",edeni:\"0R080Y0A1F0N1N1G\",\"eder \":\"0N3D0O040R1S0Z1N1004120H1F0O1N0S\",edere:\"0N020Q1Q0R2A0T0Z0Z02151J1F02\",\"edes \":\"0N0D0O2U0P050T0M0Z0B111F\",\"edet \":\"0N090T0A0Z11120G140U\",edett:\"0Q03110B1410\",edey:\"1F0Y\",edf:\"0303\",edg:\"03030M031002\",\"edi \":\"0L080P060Q0R0T0L0V0N14051B021F7R1N4X1O081P1E\",edie:\"0M020N040O040Q030R060T0B0Y190Z0315051B02\",edieť:\"0Y19\",edif:\"0O090P030Q0M0T0Y\",edifi:\"0O0C0Q0N0T10\",edig:\"0N090R0L0Z0310071206140H1N10\",edigi:\"0R021N1E\",edik:\"0B0R0N030Z03140L1F0S1N0U1O051P1I\",\"edik \":\"140K1F0L1N0S1P1A\",ediki:\"0B1D\",edil:\"0T0D0V051F1M1N21\",\"edil \":\"1N19\",edim:\"0O020P030T0B0V0A1F2Z1N1Y\",\"edim \":\"0V0H1F411N2K\",\"edin \":\"1F1G\",eding:\"010T0M030N0B0R0B\",edink:\"010G\",edio:\"0O0N0Q030T0D0V071O03\",edip:\"1F021N3X\",\"edip \":\"1F031N55\",edir:\"0O0E0P0I0Q020T071B061F1M1O04\",\"edir \":\"0O080P0H1F25\",\"edit \":\"0M020T2I0U021505\",edita:\"0O030P0T0T051O03\",ediv:\"0U020V040Z0D\",edive:\"0Z0G\",ediy:\"1F39\",ediyo:\"1F3S\",ediğ:\"1F4P\",ediği:\"1F6C\",edj:\"0R020Z02100312021408\",edk:\"0R020U060Y0F\",edle:\"03040U080Z071005120B\",edn:\"03050U300V3R0Y2D1008140E1A1D\",edno:\"0U200V250Y1L1A0G\",\"edno \":\"0U0P0V240Y0Q1A0B\",ednou:\"0U11\",ední:\"0U0W\",\"ední \":\"0U10\",\"edo \":\"0O3C0P1F0Q130T0V10081B071O0A\",edob:\"14031P2V\",\"edob \":\"1P2B\",edobs:\"1P12\",edod:\"0U021D0X\",\"edod \":\"1D1W\",edoe:\"01170R09\",edoen:\"0118\",edol:\"0Y0X1P1J\",\"edol \":\"0Y151P1G\",edom:\"0M020V040Y131B031D151P38\",\"edom \":\"0M030V071P38\",edomā:\"1D25\",edon:\"0O020P020Q0A0T0511031F031O0A1P0R\",edor:\"0O0K0P0D\",edp:\"0U040Y041O021Q03\",edre:\"03050O080Q030R030Z0T12181409\",\"edre \":\"0Z0Y12131409\",\"eds \":\"010N0L080M0U0R0Y0Z09\",edst:\"0R060U0J0V050Y0J0Z1G12051A07\",edste:\"0Z18\",edt:\"0R020U060Y0A0Z081205140K1Q07\",\"edt \":\"0R060Z0C120B140B\",edua:\"0B0F\",edun:\"0B080T0I1P13\",eduno:\"1P19\",edv:\"0U050V0D0Y0L10071414\",edve:\"0V030Y0Q1005142M\",edw:\"03041A05\",\"edy \":\"0M020U0D0Y511A2O\",edz:\"0Y1T14031A671D521O0T\",\"edz \":\"0Y1C1A0J1D0J\",edze:\"14021A0V1D11\",edzen:\"1A1D\",edzer:\"1D1R\",edzi:\"0Y0O1A6X1D0O1O10\",edzia:\"1A63\",edzie:\"1A43\",edzt:\"0Y10\",edzte:\"0Y18\",edzē:\"1D2P\",edzēj:\"1D3C\",edzēt:\"1D2T\",edá:\"0U0L0Y0R\",edä:\"11291P0O\",\"edä \":\"111R\",edän:\"11151P0Q\",\"edän \":\"112S1P0I\",edät:\"1116\",edé:\"0O03140K\",edì:\"0Q0I\",\"edì \":\"0Q0S\",edí:\"0O050U0B0Y0A\",edó:\"0O090Y05\",edö:\"1P0Z\",edön:\"1P15\",\"edön \":\"1P1C\",edü:\"140K\",edül:\"141D\",\"edül \":\"141B\",edý:\"1N3A\",edýä:\"1N4L\",edýär:\"1N52\",edā:\"1D0N\",edē:\"1D0V\",edēļ:\"1D0W\",edė:\"1B07\",edě:\"0U0T\",eděl:\"0U15\",edł:\"1A1F\",\"edł \":\"1A1B\",edž:\"1B0F\",eea:\"1520\",\"eea \":\"152V\",eeb:\"1C0O1O02\",\"eeb \":\"1C0L\",eec:\"0M03\",eed:\"010I0M230R0Q1C221O05\",\"eed \":\"0M2E0R1G1C21\",eede:\"0M0K0R090Z02\",eeded:\"0M0R\",eeds:\"010P0M0T0R0Z\",\"eeds \":\"010P0M130R1A\",eef:\"010C0R3M\",\"eef \":\"010N0R1P\",eeft:\"0RB7\",\"eeft \":\"0REE\",eeg:\"010F0R0A1C1Z\",\"eeg \":\"010T0D020R0K\",eegi:\"1C25\",\"eegi \":\"1C52\",eei:\"0M020N04\",\"eek \":\"012B0M0N0R2G\",eeko:\"0B0L1107\",eeks:\"0M060R02111Y\",eeksi:\"114K\",eekt:\"0R12\",\"eekt \":\"0R1E\",\"eel \":\"013R0M0M0R841C4J\",eeld:\"010H0R0V1C55\",eeldi:\"0R041CBI\",eele:\"0N061C1Q\",eeles:\"1C1V\",eeli:\"0M0B0R031C0R\",eell:\"111I\",eelt:\"010N0R0H110F1C4J\",\"eelt \":\"0R0K1CAO\",eelte:\"010P0R021O02\",eem:\"01180M0N0O020P030R0K11071C11\",\"eem \":\"012J0M0F0P030R1I1C0H\",eeme:\"0M0D\",eems:\"0M0E\",\"eems \":\"0M0J\",eeni:\"11131C0H\",eens:\"010P0P030R1O111L\",\"eens \":\"0R21\",eep:\"0M0W0R03\",\"eep \":\"0M160R08\",\"eer \":\"01A40M0A0N0A0O0V0R8W0Z051206\",eerd:\"010V0R3Z\",\"eerd \":\"010K0R2X\",eerde:\"0R2J\",eeri:\"11051C1M\",eerik:\"1C1O\",eerl:\"0O030R0P\",eerli:\"0R0W\",eers:\"010S0R1H\",eerst:\"010L0R1P\",eert:\"0R14\",\"eert \":\"0R1C\",\"ees \":\"016L0M0B0O0H0R1L1C1G\",eesm:\"1D1H\",eesmu:\"1D3U\",eess:\"1118\",eessa:\"112G\",eest:\"0R2H0T04110Z1C201O09\",\"eest \":\"0R270T041C2X\",eesti:\"110B1C1L1O07\",eetj:\"0R0P\",eetje:\"0R0Y\",eeu:\"01080R0A\",eeuw:\"0R13\",eez:\"0M02\",eeë:\"0R02\",efar:\"0Z0B1O03\",efd:\"03040R0B\",efde:\"03040R0R\",\"efde \":\"0R0V\",eferi:\"0O0A0P070Q11150C1O05\",efh:\"0307\",efik:\"1O061P0U\",efk:\"034U\",\"efk \":\"033R\",efl:\"030D0N020O020P041P0B\",efn:\"1312\",\"efon \":\"0N0C0U0E0V0F0Z0N10081406150L1A0H1F0I\",efone:\"042F0P0H0R020Z0D1005120A1O02\",efore:\"0M1E\",efr:\"031C0N060O030P030Z021F0J\",efs:\"030A0R021308\",eft:\"030L0M0I0R3O0V030Z0Z101H1204132715041F03\",\"eft \":\"030A0M0X0RCT1207\",efte:\"0R030Z2N10211F02\",efter:\"0Z3810211F03\",efti:\"030B0R070V04133L1507\",eftir:\"137D\",eful:\"0M0F0Z0310021509\",efur:\"134D1O04\",\"efur \":\"137G\",efä:\"0N0B1005\",efð:\"1310\",efö:\"1P0B\",efü:\"0N07\",\"eg-\":\"031F\",egaa:\"011G0R0R1106\",egaan:\"011J0R0W110E\",egali:\"0Q051B6Y1O02\",egalė:\"1B24\",egar:\"0B100L240M020O140P190Q0A132Y1A0I\",\"egar \":\"0O0V0P1713641A04\",egara:\"0B1W0O020P06\",egard:\"0L3L0M03\",\"egas \":\"0B070O060P050T021B0B1O1B\",egast:\"0O030P04134K\",egb:\"0303140L\",egc:\"140E\",egd:\"03060R0B0V051403\",\"egd \":\"0R0Y\",egee:\"010Q0R04\",\"egee \":\"010L\",egek:\"042Z140B\",egeko:\"043I\",egel:\"0N0H0R0T0Z061007120814081504\",egem:\"0T0E140F1C1F\",egema:\"1C2Q\",\"egen \":\"0N3K0R460Z0F100A120M140E\",\"eger \":\"0N040O020P040R0N0T050Z071N1U\",egera:\"04830B0Z1B05\",egere:\"047X0R030T0T1404150H\",eges:\"0N0C0Q040R030T0K1414\",\"eget \":\"0T090Z5B10061208140R\",egev:\"0R0M\",egf:\"140M\",\"egg \":\"120E1307\",egga:\"031T0Q020R041403\",egge:\"030F0N040Q1K0R1N0Z0F121I141N\",\"egge \":\"0Q090Z0J120O\",eggel:\"0R02141O\",eggen:\"03040Q070R1Z120A\",egger:\"03030Q11120E\",eggi:\"03080Q19130E\",eggja:\"1320\",egh:\"0Q05140R1QC8\",\"egh \":\"1Q9O\",egha:\"1416\",eghp:\"1Q42\",eghpu:\"1Q6O\",\"egi \":\"0T0H130W1402150A1B031C4G1N3G1O0D1P0E\",egim:\"0T031N1R\",egimi:\"1N1N\",egin:\"01170M070N080Q020R0X0T0A130E14141B081N2P1P0J\",\"egin \":\"01120M030R0B\",egini:\"1N2H\",egint:\"0R0E14111B04\",egit:\"0B0V0P040Q0G0T1310021403\",\"egit \":\"0T0Y\",egitu:\"0B1O0T03\",egiň:\"1N1D\",egiňi:\"1N16\",egj:\"12021314140O\",egja:\"131S1405\",\"egja \":\"133Q\",egjob:\"1415\",egk:\"140U\",egle:\"03040N040Z091009120D140S\",egli:\"03020N020Q3C1504\",\"egli \":\"0Q1O\",eglio:\"0Q17\",egm:\"030C140L1O02\",\"egn \":\"0Z0A10031207130A\",egna:\"030F0M020Q3I0T09100F131A14201A04\",\"egna \":\"0Q070T031007132P\",egnan:\"0M030Q18\",egnap:\"141T\",egnar:\"0Q171004\",egnat:\"03050Q0W\",egne:\"03020N0H0Q060V080Z1I100312151408\",\"egne \":\"0V090Z0J120G\",egner:\"0N030Q050Z0H1208\",egnet:\"0N0H0Z081003120E\",egno:\"0Q0N0T03\",egon:\"0N020R0P1O04\",egot:\"0T0P1B0H\",egou:\"0P0R\",\"egou \":\"0P0Y\",egov:\"0V1D\",egoz:\"0Q0S\",egozi:\"0Q0S\",egri:\"03070N040P040R0S0T0B13081D1G\",egrib:\"1D3G\",egrij:\"0R10\",egs:\"010A0M020N03140S\",\"egs \":\"010J0M030N03\",egsz:\"141B\",egt:\"01150N0G0R0D131D141B1B03\",\"egt \":\"0N0W0R151328\",egta:\"1415\",egte:\"011L0N091414\",\"egte \":\"011D0N0D\",egti:\"011114031B03\",egtig:\"0113\",\"egu \":\"130A1A041B0X1C141O03\",egue:\"0O0A0P100Q06\",\"egue \":\"0O070P0S\",egui:\"0O0V0P1M0Q0E\",egun:\"0N040O1Z0P0Q0T061402\",egund:\"0O0H0P0X\",egunt:\"0O260T06\",egur:\"0O180P0J130Y\",eguro:\"0O0Z0P09\",egv:\"140V\",egy:\"0M020T0Q0Z0G1002120K14FW1B06\",\"egy \":\"14LW\",egye:\"148I\",egyed:\"141P\",egyek:\"1420\",egyen:\"141T\",egyet:\"142C\",egyi:\"141I\",egyik:\"141F\",egym:\"1418\",egymá:\"1417\",egyn:\"0Z15121F1402\",egynd:\"0Z1E\",egynn:\"120Q\",egynt:\"120P\",egyp:\"0M030R030T1E0Z0210021102\",egypt:\"0M050R040T1H0Z0210021105\",egys:\"1425\",egysz:\"1427\",egyé:\"1418\",együ:\"141R\",együt:\"1412\",egz:\"039Z14031A081B0B1F03\",egza:\"03AB1A0B1B09\",egzaw:\"03K4\",egå:\"0Z0410031204\",egår:\"0Z081205\",egé:\"1420\",egér:\"141C\",egés:\"142Q\",egész:\"142U\",egí:\"0P03141F\",egít:\"143B\",egíte:\"141P\",egíts:\"141B\",egò:\"0Q02\",egó:\"0O0D0P041A05\",\"egó \":\"0O0L\",egú:\"0O07\",egā:\"1D0K\",egă:\"150K\",egō:\"0T02\",\"eha \":\"0V041C20\",ehad:\"010W0R0G\",\"ehad \":\"010Y0R0M\",ehag:\"0Z0310021208\",ehan:\"0D020N060R090Z0810051104120A\",ehar:\"0B0U\",ehat:\"0B0I\",ehb:\"030I1F021Q25\",ehbe:\"030I1F021Q3N\",\"ehbe'\":\"1Q5Y\",ehd:\"030E0U03112E1F041Q07\",ehdä:\"112X\",\"ehdä \":\"116K\",\"ehe \":\"04570N15\",ehen:\"0N5P0T07110Q1404\",\"ehen \":\"0N8X111A\",ehet:\"1109145V\",\"ehet \":\"110L1430\",ehete:\"1414\",ehi:\"0B0F0D030M060N020Q020T05110A1F0L\",ehil:\"0B0F1105\",ehk:\"0B0C0U04110E\",ehka:\"0B0O\",ehl:\"03020N0F0U080V031F0F1Q09\",ehm:\"030C0N0I11061Q0B\",ehme:\"030A0N1411041Q07\",ehn:\"03040N0C0U060Y06110J15031Q07\",\"eho \":\"0D0E0U310Y4N\",ehol:\"0N050R070Z0C12091403\",ehold:\"0M020Z0E1209\",ehoo:\"011A0R0L\",ehoor:\"011A0R0S\",ehov:\"0Y1710021404\",ehovo:\"0Y1H\",ehr:\"03030N2R0U040Y061F0A\",\"ehr \":\"0N53\",ehre:\"0N0Z1F02\",ehs:\"0N08\",eht:\"0N18111J1C0E1Q07\",\"eht \":\"0N2W\",ehu:\"0N030V030Y050Z0311051204\",ehus:\"0Z081209\",ehv:\"1Q03\",ehä:\"1106\",ehå:\"1006\",ehé:\"140Q\",ehéz:\"1415\",\"ehéz \":\"1411\",ehí:\"0O02\",ehö:\"0N0C1024\",ehöv:\"102V\",ehöve:\"102F\",ehø:\"0Z05\",ehøv:\"0Z0D\",ehøve:\"0Z0G\",\"ei-\":\"0P08\",eia:\"0P1P150F\",\"eia \":\"0P1L150K\",eib:\"0N0V\",eibe:\"0N191403\",eiben:\"0N1O1402\",eic:\"0N1R0S2D1D4E\",eica:\"1D3V\",\"eica \":\"1D99\",eice:\"0S13\",eiceá:\"0S32\",eich:\"0N490S0O\",\"eich \":\"0N1S0S2T\",eiche:\"0N20\",eicht:\"0N2D\",eici:\"0S0M\",eicī:\"1D0Z\",eicīg:\"1D2K\",\"eid \":\"012T0N0W0R2Y120F140B1C30\",eida:\"1B0R\",eide:\"010F0N1S0R15110M121714071B02\",\"eide \":\"0N0N0R0D120I\",eiden:\"0N1G0R0Z111G\",eider:\"0N0H0R07120D\",eidh:\"0S2N\",\"eidh \":\"0S9P\",eido:\"1B0S1D0J1P11\",eids:\"0R07120F\",eidz:\"1D1L\",eidä:\"113Z\",eidän:\"1186\",eie:\"01180N0D0R070T06120M150F1B021C2F1D0Q\",\"eie \":\"011U0N021206150G1C2S\",eien:\"0N0C0R0H120R\",\"eien \":\"0N0K0R0G120O\",eier:\"010S0N0G0R0B120M1507\",\"eier \":\"010I0N0G120L\",eif:\"0N0C1307\",eig:\"0L0P0M0D0N0Y0P020R0B131P14041B1B1D0V\",eige:\"0L0E0N1O0R12\",eigen:\"0N260R15\",eigh:\"0M0J\",eign:\"0L0R0M060N051307\",eigu:\"0N02130W1B1M\",\"eigu \":\"1B3C\",eih:\"0N0B1106\",eij:\"0P0G1107\",\"eik \":\"130C14031B1M\",eika:\"1109131A1B1R\",eikal:\"1B2H\",eiki:\"1104130H1B4X\",eikia:\"1B7Y\",eikk:\"111D\",eiks:\"11061B0L1D17\",\"eiks \":\"11031B0B1D21\",eikt:\"0R0413071B0D1D25\",\"eikt \":\"0R031D2O\",eiku:\"130P1D0Z\",eikum:\"1D2A\",eikö:\"1111\",\"eikö \":\"112E\",eikė:\"1B14\",\"eil \":\"0L170N1612141C29\",eile:\"0N0O0S1P111M120C150I1B021C2Q\",\"eile \":\"0N0H0S5X110G150N1B031C6K\",eilen:\"0N0M113A1205\",eilg:\"0S1J1B02\",eilge:\"0S5P\",eili:\"010N0N0A0R18110K120I1B0B\",eilig:\"0N0G0R0J120F\",eilij:\"0R15110G1B03\",eilik:\"010G\",eill:\"0L32113J\",eille:\"0L3Z113C\",eillä:\"114F\",\"eim \":\"0N0O0R061325140N\",eina:\"0N0J0O050P041104131B1B1F\",\"eina \":\"0O051105131V1B1Z\",eind:\"010Q0L090N0G0R0Z0T05\",einde:\"010K0N070R0X0T06\",\"eine \":\"0L150NKE0R0H1C22\",einem:\"0N5V\",einen:\"0NC50R0311221205\",einer:\"0N6G0R04\",eines:\"0L040N2A\",einf:\"0N0Z130C\",eing:\"0B050M0T0N0P\",\"eing \":\"0M13\",einh:\"0N051314\",einhv:\"132C\",einm:\"0N11130D\",einma:\"0N1P130H\",einn:\"1322\",\"einn \":\"1338\",eino:\"0O020P0311061P0Y\",einos:\"1P11\",eins:\"0L050N100R05133F\",\"eins \":\"0L070N0C136D\",eint:\"0L0Q0N0W0O0H1102130M\",einu:\"0N0E131J1B0J1C0H\",eio:\"0P1H1504\",\"eio \":\"0P1M\",eip:\"110D1B07\",\"eir \":\"0M1M131D\",eira:\"0N0J0P3O130W1B03\",\"eira \":\"0P3X131V\",eire:\"0S0T1402\",eirea:\"0S3A\",eiro:\"0P421D0O\",\"eiro \":\"0P4G\",eirt:\"0S0Q\",\"eis \":\"010Z0N0H0O0K0P1E0R0D0S380T171B0X1O05\",eise:\"0N1K0P030R02110U120S1B021C0G\",\"eise \":\"0N1K120A\",eisi:\"010Y110N1B1X1C12\",eisie:\"010Y\",eisin:\"11071B1E\",eisj:\"0R0R\",eisje:\"0R10\",eisk:\"100211071B0Z\",\"eist \":\"0N0J0R050S3S0Z02130F1C31\",eisti:\"0N0611041B1O\",eistä:\"112P\",\"eit \":\"0N6X0R0Q110B120D131S140O1B0A1D21\",eita:\"0N050O020P151123130X1B191D0J\",\"eita \":\"0P0L114N13141B05\",eitai:\"1B28\",eite:\"0N3U0O030P0F0R0C110514021B021D0J\",eiten:\"0N2M0R061D1D\",eiter:\"0N1K\",eith:\"0M0B0S36\",\"eith \":\"0S92\",eiti:\"0N091107130X1B33\",\"eiti \":\"1106130B1B5P\",eito:\"0P2E11071B021P0K\",\"eito \":\"0P2G\",eitt:\"11161332\",\"eitt \":\"1344\",eitth:\"132C\",eitä:\"112K\",\"eitä \":\"115Z\",eiu:\"0T211504\",eius:\"0T3S\",\"eius \":\"0T3V\",eiv:\"0M04111514021B06\",eivä:\"111Z\",eivät:\"114G\",eix:\"0P25\",eixa:\"0P16\",eixar:\"0P0T\",eixe:\"0P10\",eiz:\"0L020N050R030V02100215071D3Y\",\"eiz \":\"0N020Z021D1R\",eizi:\"1D0U\",\"eizi \":\"1D25\",eizē:\"1D0W\",eizēm:\"1D1W\",eiß:\"0N1E\",\"eiß \":\"0N1Y\",eiç:\"0P07\",eið:\"132I\",\"eið \":\"1315\",eiði:\"1317\",eič:\"1B0G\",eiči:\"1B0Q\",eičia:\"1B1G\",eiš:\"1B0Q\",\"ej \":\"03020U210V050Y870Z0I100N14031A9Z1O1A1QAW\",\"eja \":\"0B0P0O0X0P1T0V09111115151A021B061O04\",ejak:\"0B0J0Y0O\",ejar:\"0B0D0O0Z0P04\",ejd:\"03080U0I0Y0A0Z0V1A061Q08\",ejde:\"03040U0E0Y0G0Z25\",\"ejde \":\"0U0C0Z13\",ejder:\"0Z0W\",ejdet:\"0Z0F\",ejed:\"0U080Y0E0Z0A1406\",ejek:\"1N0Y\",ejen:\"0N020O020U020Z0K10021O02\",\"ejen \":\"0O020U030Z0M10021O03\",ejer:\"0O070Z0N10051N0D\",\"ejer \":\"0Z0M1004\",eji:\"0O040U0J1B04\",ejich:\"0U0R\",ejl:\"03030U0B0V030Z0H100214041O021Q0N\",\"ejl \":\"0Z0N\",ejli:\"0Z0D1Q09\",ejlig:\"0Z0G\",ejm:\"03070U0D0Y0A1A0A1O0Q1Q0N\",ejme:\"03020U080Y0D1O0Q\",ejn:\"0U0O0Y051A051O031Q0C\",ejo:\"041Y0L030O2A0P0M10021A021B0J1O1N\",\"ejo \":\"045V0O0V0P0M1B061O1Z\",ejor:\"0O26\",\"ejor \":\"0O2E\",ejos:\"0O0J0P02\",ejr:\"03030U020Z0B1A09\",\"ejr \":\"0Z0A\",ejre:\"0Z0J\",ejret:\"0Z0I\",ejs:\"0U1E0V030Z0B1A1J\",ejse:\"0U0Z0Z0M\",\"ejse \":\"0Z0F\",ejsem:\"0U1C\",ejt:\"0U0P0Y0J1002140W1Q0R\",ejte:\"0U14141C\",\"ejte \":\"0U1J\",\"ejto \":\"0Y13\",ejw:\"040M1Q06\",ejwe:\"041V\",\"ejwe \":\"043C\",ejä:\"110D\",ejé:\"0O06140C\",ejí:\"0U17\",\"ejí \":\"0U17\",ejó:\"0O0C\",\"ejó \":\"0O0J\",ejš:\"0U070Y0V\",ejši:\"0Y0Z\",ejų:\"1B09\",\"ek'\":\"0107\",\"ek's\":\"010F\",\"ek's \":\"010G\",\"ek-\":\"03030L031O03\",\"eka \":\"049A0B4U0U040V0U0Y1110081A0R1B0H1O06\",ekad:\"0V0M10021B2H1D27\",\"ekad \":\"0V0Y1D5L\",ekada:\"0D020V0O1B52\",ekal:\"0B1W0U0R0V0211041A031B0W1F02\",\"ekal \":\"0U0S\",ekalb:\"1B1E\",ekali:\"0B3L0U051A04\",ekan:\"041Z0B0F0N0B0Z02100411031A021B0H1F021O03\",ekao:\"0V19\",\"ekao \":\"0V38\",ekar:\"0B1T0V050Z0210021102130E14021A0T1F03\",ekara:\"0B3J0V08\",ekas:\"0B050V030Z0211051B1I1D1E1O02\",\"ekas \":\"0B0911071B2X1D3L1O04\",ekat:\"0B0S0U0L0V090Z02\",\"ekat \":\"0B1E0U0U0V0D\",ekd:\"03030Y051N3O1O0A\",ekde:\"0Y081N2L1O0C\",ekdeb:\"03021N19\",ekdi:\"1N2U\",ekdig:\"1N2W\",\"eke \":\"011104150R090V0G0Y08120714081N13\",eked:\"0Y1J144E\",\"eked \":\"143Z\",ekedy:\"0Y1X\",ekek:\"0R041418\",ekel:\"0R06110314191B03\",ekem:\"1113145X\",\"ekem \":\"1468\",\"eken \":\"010I0R4F1004140B1F0J\",ekend:\"010K0M090Q040R130Z0815051A09\",eker:\"011P0B2F0R1E1003120714061F0C\",\"eker \":\"011G0R1H100312071F08\",ekerj:\"0B4O\",eket:\"0Z0510051206144U1B041F0L1N0E\",\"eket \":\"0Z0610051206144G1F0F\",ekey:\"041V\",ekeye:\"043C\",ekh:\"14021O02\",\"eki \":\"0V0C110S142Q1A0A1B021D0Q1F1B1N0D1O021P0I\",ekil:\"1F0Y\",ekiy:\"1F19\",ekiyo:\"1F1O\",ekj:\"0R02120213051O02\",\"ekk \":\"031N120O130B\",ekka:\"031V110B130M\",ekke:\"010Y030P0R140Z051218131V140W\",\"ekke \":\"0R020Z02120C\",ekken:\"030D0R0V\",ekker:\"010V030F0R0I120G133X\",ekki:\"03080R0313KL\",\"ekki \":\"0303110213SG\",\"ekl \":\"0U42\",\"ekla \":\"030G0U160V110Y0A\",ekle:\"03030N030R041F3G1N0O1O02\",ekler:\"1F1X1N0L\",ekli:\"030E0R020U0F0V070Z0214061B031F1U1N0Y\",eklē:\"1D0X\",ekm:\"03071B091F0P1N0R\",\"ekni \":\"03050U0S\",\"eko \":\"04390U0C0V170Y16111R1A0E1B2T1D1G1O07\",ekoc:\"0R0S\",ekoch:\"0N020R12\",ekol:\"0B180V0N0Y0E1A06\",ekola:\"0B2E1A05\",ekoli:\"0V1L\",ekom:\"013O0N170R130V060Y0B0Z0210041B031O06\",\"ekom \":\"01370V0A0Y0B\",ekome:\"0R161B051O08\",ekomm:\"010P0N200Z021004\",ekoo:\"010N0R02\",ekoop:\"010N\",ekor:\"0B0T0D020R020Z081004120414031F02\",\"ekor \":\"0B1K\",ekp:\"1O03\",ekra:\"03050R040V030Z021A021F14\",ekrar:\"1F1I\",\"eks \":\"0M060R070Z0F1102120G1B0B1C4Q1D1L\",eksa:\"03040D020Z041003110I12071C0S1O06\",ekse:\"0N020R030Z08110F120K1F041O05\",eksi:\"0B0B0D030V050Z07114K12041B041C1J1F0V1O07\",\"eksi \":\"0B0E118U1F02\",eksin:\"11091C1S1F0L\",eksp:\"0B040D030V060Z0612081A071B051O09\",ekst:\"0D020R040V090Z0D1106120O1A041B041O14\",\"ekt \":\"0N0C0R1K0U020Z0B100K120M14031A04\",ekta:\"03070D030V0310031B061O11\",ekte:\"010H0N060R0C0Z09100B121B140P1F3U1O09\",\"ekte \":\"010G0N040R0D0Z03100212081F091O0B\",ekten:\"0N040R0212041F4R\",ekter:\"0Z071007120G\",ekti:\"030D0N070U030V050Z0B1009110B120C1B0B1F1V1O15\",ektiğ:\"1F1E\",ekto:\"0D050N020U020V020Y1C11031A041B031O0V\",\"ekto \":\"0D070Y171B031O0Q\",\"eku \":\"0U030V0A0Y0D1A0A1B031D0Z\",ekv:\"0U0B0Y0W100314031B131O0G\",ekva:\"0U0J0Y1I1O09\",ekvap:\"0U0Q0Y1U\",ekvi:\"1B1Q1O08\",ekvie:\"1B3K\",ekw:\"0303\",eky:\"030J0U030Y080Z03110612051B04\",ekym:\"0Z0710021108120C\",ekymr:\"0Z09120C\",ekz:\"1O0S\",ekzi:\"1O0N\",ekzis:\"1O1A\",eká:\"0U0L0Y16\",ekár:\"0U020Y1W\",ekä:\"110C\",ekç:\"1F031N0E\",ekö:\"110E14031P0Z\",eköm:\"1P0Y\",ekömo:\"1P12\",ekü:\"0N02140Q\",ekünk:\"1416\",ekā:\"1D1J\",\"ekā \":\"1D1L\",ekė:\"1B0O\",ekļ:\"1D0H\",ekš:\"1D1L\",\"el'\":\"1F02\",elab:\"0T031B0B1C0R\",\"elab \":\"1C1V\",elad:\"0N060O0D0P0B100B14131C0R1F021Q07\",elah:\"0B4J0D03\",\"elah \":\"0B88\",elaj:\"0B2P0O0414021O0B\",elaja:\"0B580O04\",elak:\"0B3X100314031A021F02\",elaka:\"0B1A1402\",elaku:\"0B5Y\",elal:\"0B1P0R020Y08140B\",elalu:\"0B38140A\",elam:\"0B2D1A021C0K1F04\",elama:\"0B45\",\"elan \":\"0B070O021C1H1O0J\",eland:\"010K0B0D0O020Q0F0R0E0Z031005\",elang:\"010V0B0J0D020N0B0R1C\",elap:\"0B0T0T02\",elar:\"0B080O050P030V05100S150D1F02\",\"elar \":\"0O040P03100N\",\"elas \":\"0B2C0D020O0D0P2N1B0G1O0G\",elati:\"0B090L0B0M0B0N020O020P020Q020R041O0A1P2I\",elbs:\"0N14\",elbst:\"0N1V\",elc:\"0L020M020N0E14021A021Q04\",elch:\"0N0Y1Q07\",elche:\"0N1K\",\"eld \":\"012G0M0A0N180R4V0Z051004120O130Q1409\",elda:\"130L1C0Z\",\"elda \":\"0302130H1C29\",elde:\"03030M020N080R2C0Z031003120L1F0B\",\"elde \":\"0R290Z021F0D\",elden:\"0N040R0Q1003120F1F02\",eldi:\"03050R0G0Z07123X130K1C4Z1F251N2B1Q0L\",\"eldi \":\"0307130R1C2G1F1E1N29\",eldib:\"1C68\",eldig:\"0R0H0Z07123U\",eldiv:\"1C221F03\",eldr:\"0R02120V131A\",eldre:\"120V\",eldu:\"0305131T\",eldur:\"133F\",elec:\"0M080O0F0P040T0P150A1F141O03\",elece:\"0P021F1I\",eled:\"0M030R0N141Q1F06\",\"eled \":\"0M05141D\",elee:\"011B0R0M111J1404\",\"elee \":\"112X\",eleer:\"010S0R0G\",elej:\"1102141F\",elejt:\"141D\",\"elem \":\"0T0F0U0J142A1A0R\",elema:\"0R11111B\",elent:\"0O070P061102141M\",\"eleo \":\"0V20\",elep:\"0B0S0D070M040T110V0414061506\",eleph:\"0M050T13\",elepo:\"0B1D0D06\",\"eler \":\"0L0P0N0B0R050T030Z0512061F121N1G\",eleri:\"0N030T0H1F291N1D\",elesa:\"0B20\",elesé:\"141C\",\"elet \":\"1002110U140X\",\"elf \":\"011E0M210R1C\",elfd:\"0R0L\",elfde:\"0R0S\",elfo:\"1415\",elfog:\"1414\",elge:\"03030R031003120L1B051C0O1F04\",elh:\"03160N020P3C0U021202140Z\",elha:\"03110N020P0V0U04140X\",elho:\"0P351403\",\"elho \":\"0P1A\",elhor:\"0P2G\",elice:\"0O070Q100T060U0H\",elid:\"0P020T0214021F071N1W1P0E\",elidi:\"1F0A1N2J\",elie:\"010F0L020M0V0N0B0R091B09\",eliev:\"0M140R06\",\"elig \":\"0N030R070Z2V124U\",eligh:\"0M020Z0G120F\",eligt:\"0Z10\",elih:\"0B330D071102\",eliha:\"0B5Y\",elij:\"0R5S110V1P16\",elija:\"11181P15\",elijk:\"0R7N\",\"elik \":\"011O14071C1Z1F08\",elike:\"010I0V0B1102\",eliku:\"0D070V0F110A1C29\",elim:\"0B050O020P020Q020T0M0V1I110P1F1E1N0G\",\"elim \":\"0T0M0V371F10\",\"elin \":\"112M1F051N0H\",eline:\"0T04110I1C1H1F03\",eling:\"010K0B0A0M0I0N030Q020R1C0Z02\",elio:\"0T0G11041B12\",elip:\"110B1F031N0Z\",\"elip \":\"1F041N1B\",\"elis \":\"0T0I1B321O0H1P0O\",elise:\"110D1C1E\",elisk:\"1D2A\",elist:\"110F1C3Y1O08\",eliy:\"1F2J\",eliyd:\"1F1H\",eliz:\"0O0Q0P190Q031408\",\"eliz \":\"0O0X0P17\",eliĉ:\"1O0V\",\"eliš \":\"0V1R\",elj:\"0V2R110Y1307141D1C0F1N0S\",elje:\"0V0K110Y14251N14\",eljek:\"110314021N19\",eljes:\"1108141U\",\"elk \":\"01140R0V120B1B06\",elka:\"0R130U07110914091A051O0S\",elkaa:\"0R1B110K\",elkaj:\"1O1G\",elke:\"012103020N070R1L0U020Z02110O1429\",\"elke \":\"010X0N0A0R23\",elkee:\"0118\",elko:\"010F0R050U0A0Y080Z05110P1207130E1A02\",elkä:\"1111\",\"ell'\":\"0Q21\",\"ell'a\":\"0Q0W\",\"ell-\":\"03310M02\",\"ell-a\":\"035Y\",ellas:\"0O0X0T0811041O02\",ellee:\"112C\",elleg:\"0T0V14031C1L\",ellel:\"030214021C2J\",ellem:\"03060L1O0T020Z0R1102140O1F02\",elles:\"03050L750N020T02110G120X14021C5S\",ellet:\"0Q050R030T030Z041004110R120B142V\",\"elli \":\"037Z0Q1A0T0611081F0C\",ellig:\"0L0J0M040N0A0Q0B0R090T0L0Z0H1004120I1406\",ellin:\"03060M0D0Q030R0C112T\",ellis:\"030B0Q040T09114W1C1S\",\"ello \":\"0M030O0S0Q4Q0T0E111U\",ellom:\"120W\",ellos:\"0N030O2O1106\",ellu:\"030D0L020N070Q050T0Z110M1C0V\",ellä:\"115I\",\"ellä \":\"11BL\",elma:\"03180R04112614091F0B\",elme:\"030H0P0G1102143Z1F1A1N1P1Q0C\",elmen:\"030C0P0L141F1A021F04\",elmi:\"03240U2D110W14091C0G1F08\",\"elmi \":\"034L0U3A11021406\",elmon:\"1411\",\"eln \":\"0N17100M\",elni:\"1003141E1A061B0B1Q07\",\"elni \":\"141E\",elob:\"1P15\",\"elob \":\"1P15\",eloku:\"112B\",\"elon \":\"0D020L0E1O1A\",eloo:\"010Q0R1A\",eloof:\"010G0R1G\",\"elp \":\"011R0M1W0R0C120R\",elpe:\"0M080R1A12141O04\",\"elpe \":\"120R\",elpen:\"0R1Q1O04\",elpi:\"0M041O0P\",elq:\"03060L271Q08\",elqu:\"0L3O\",\"elqu'\":\"0L1P\",elque:\"0L4L\",elr:\"0U0214081O02\",\"els \":\"011O0L0L0M0B0N070R2B0Z041D0J1P1Q\",elsd:\"0Z0A\",else:\"010K03040M0G0N020R070Z3G1015123M1F03\",\"else \":\"0M0L0R060Z2K100L121Z\",elsen:\"0N020Z0F1005120R\",elser:\"0Z0K1005120N\",elset:\"0Z0L\",elsk:\"0U040Y0F0Z37100W123B131H1A17\",\"elsk \":\"0Z0Y120Z\",elska:\"0Z02100T1206132R\",elske:\"0Z2U1226\",elst:\"0N050R060U060Z0B100C120E1O02\",\"elst \":\"0N040Z0B100B120C\",elsz:\"1414\",első:\"141D\",\"első \":\"1415\",\"elta \":\"0O0C0Q06112R1205\",eltem:\"010P140J\",eltä:\"112W\",\"eltä \":\"115E\",\"elu \":\"0U050V0D110H1A0V1C0X\",elua:\"0B1K110B\",eluar:\"0B2Y\",elui:\"0L0Q0R071106150I\",eluk:\"011A0B0A0R1G1103\",\"eluk \":\"010I0B070R0P\",elukk:\"010V0R16\",elum:\"0B2J0T0L1102\",\"elum \":\"0B4F0T0L\",elur:\"0B0H1309\",elus:\"0Q070T09110A1A061C0N\",\"elv \":\"0Z1L121Q140G\",elve:\"0M0I0O090R020T040Z0510031107120D142I\",elves:\"0M0N140V\",elvf:\"0Z04120A\",elw:\"0308\",ely:\"010F03020M110U040Y08110C142J1B0J\",\"ely \":\"0M1W0U070Y0E1104140S\",elye:\"142M\",elyet:\"140Z\",elyi:\"141N\",elyik:\"141J\",elyk:\"010V\",elyke:\"010I\",elz:\"03020N020U021402\",elá:\"0U070Y0E1409\",elä:\"100411381N0D\",\"elä \":\"1125\",eläm:\"111J\",elämä:\"113H\",elæ:\"0Z02\",elé:\"0L090O0F0P040U0I0Y0E1425\",\"elé \":\"0L0B0U0P0Y0O140V\",elég:\"1428\",\"elég \":\"141N\",elí:\"0O0D0P020U0D1403\",elíc:\"0O0K\",eló:\"0O020P071402\",elö:\"1003110314041P0J\",elø:\"0Z03\",elü:\"140L\",elý:\"0U0C0Y0H1N1K\",elýä:\"1N26\",elýär:\"1N1V\",elā:\"1D10\",elė:\"1B0V\",\"elė \":\"1B0S\",elę:\"1A061B0B\",elī:\"0T021D14\",elīb:\"1D0Z\",elį:\"1B0E\",elő:\"142U\",előt:\"142O\",előtt:\"142R\",\"em-\":\"032J0P0D\",emaa:\"01170B060R2G111R\",emaak:\"011A0R17\",emaal:\"0R25\",emaan:\"113V\",emad:\"0O040Z031C12\",\"emad \":\"0Z021C2G\",emag:\"0L061C0N\",emaga:\"1C1L\",emah:\"0B0V\",emai:\"0B0B0L1X0M070P0R11021B02\",emain:\"0B0L0L390M07\",emais:\"0P0X1103\",emaj:\"0B050U060V040Y091O0R\",emak:\"0B190R0F11021C0Y\",emaka:\"0B1M\",\"emal \":\"010Q0N020Y0S1A03\",\"eman \":\"0B1P0D050M040R030V1A111C1F021O02\",emana:\"0B0H0O1F0P151B0N\",emang:\"0B1P0D06\",emar:\"0B1N0L0E0M020O020R020Z021402150A\",emari:\"0B2U\",emas:\"0B0W0O1Y0P0J0Z05110Z1B031C0R1F031O0E\",\"emas \":\"0B0J0O0V0P0K1B071F021O0T\",emasi:\"0O1P0P04\",emba:\"03020B5E0L080M040O0D0P090R041O03\",embac:\"0B29\",embal:\"0B2U0L03\",emban:\"0B2P\",embel:\"0B2Q1F05\",emben:\"0B0B1413\",ember:\"041V0B550M0U0N050R050Z061002145O\",embi:\"0B0V\",embl:\"0L220M020O03\",emble:\"0L2Q0M02\",embo:\"03020B0G0L040O030P0J\",embr:\"0D030L0L0O0E0P120Q2Q0T07150K1O06\",embra:\"0L0J0O040P0L0Q2D\",embu:\"0B3Y0Y08\",embua:\"0B41\",embun:\"0B1B\",emd:\"03120N050R0C12031A021F071O051Q0F\",\"emd \":\"0N040R0S\",emed:\"0M0C0O0414051F2E1N0L\",emedi:\"0O051F341N0L\",emee:\"010F0R0F\",emeen:\"010G0R0H\",emek:\"14091F321N0Q\",\"emek \":\"14051F3E1N0O\",emele:\"1407150L1F1G\",emem:\"03020M0G14091A041F1B1O02\",ememb:\"0M0M1403\",\"emen \":\"0B0A0N040O020R2E0T0914071F10\",emena:\"0B0B0V24\",\"emer \":\"0O020P020Z0B120H\",emera:\"043C\",emere:\"0T0W\",\"emet \":\"0Z0F100B120J141H\",emey:\"1F1W\",emeye:\"1F1Q\",emez:\"14031F0Z\",emeý:\"1N1G\",emeýä:\"1N1O\",emeğ:\"1F14\",emeği:\"1F1H\",emf:\"0302\",emie:\"0L0N0M020N030R020Z0211031A0E1B07\",emili:\"0B4T0T0D\",\"emin \":\"0L0S1F1N\",emina:\"0T1F\",emint:\"0B19\",emise:\"0L0C111A1C2N\",emit:\"0O020P060T0Z\",emiy:\"1F2L\",emiyo:\"1F3E\",emiz:\"1F151O05\",emiş:\"1F0K1N19\",emişe:\"1N1Q\",emluv:\"0U0S\",emlé:\"141A\",emlék:\"141B\",\"emma \":\"0320100Q1109130X1N1L\",\"emme \":\"0L1Z0Z1E11A6121B1N3O\",emmel:\"032P0Z0F120E140E1F0E\",emmen:\"0L0Q0Q0B0R0T1102\",emmer:\"031B0L020R040Z0E120F\",emmes:\"03090L0N0Z041N19\",emmi:\"031K0Q030R061122144I1C0G\",\"emmi \":\"030C141Z\",emmin:\"0Q020R0911441403\",emmit:\"141Z\",emml:\"031U\",emmle:\"0344\",emmo:\"0Q0U11031Q0M\",\"emmo \":\"0Q0V\",emmä:\"111K1N0P\",emmän:\"1132\",\"emo \":\"0O050P030Q1T0T1L0V3R1B021O0R1P49\",emob:\"1P1J\",\"emob \":\"1P1I\",emocn:\"0U1A0Y0S\",emoh:\"0U1T0Y13\",emohl:\"0U1A0Y0J\",emohu:\"0U15\",emoj:\"0V121O0C\",\"emoj \":\"0V231O0B\",\"emok \":\"1N4T\",emol:\"1P0V\",emos:\"0O4F0P4614021B06\",\"emos \":\"0O5N0P591B0E\",emot:\"0B070M030O050P030Q030R020T03100H\",\"emot \":\"100H\",empa:\"0B1T0L020O050P02110T1F021O04\",empat:\"0B350P021F03\",empez:\"0O0Z\",\"empi \":\"0Q051144\",empli:\"0L0E0Q0Z0T02\",empo:\"0L0A0O2W0P2V0Q1W0T1014021O1L\",\"empo \":\"0O3I0P3E0Q1V1O21\",empor:\"0L0G0O050P030Q020T13\",empr:\"0B040L090O2T0P2O0Q27\",empre:\"0D020L030O360P3D0Q28\",emps:\"0L3U\",\"emps \":\"0L6E\",empu:\"0B1K0O020P020T0Y1Q09\",empua:\"0B1O\",empus:\"0T0Z\",emq:\"0T0A\",emr:\"034E14091F02\",emre:\"034G140H1F02\",emrem:\"032S\",\"ems \":\"0M0N0N020T030Z0210071B1D\",emt:\"037T0R040Z0J1007120O14051B021D1C\",\"emt \":\"03730R0E0Z0O1002120J\",emte:\"03060Z0K120V1405\",\"emte \":\"0Z0J120T\",emti:\"030E0Z081004120B\",\"emts \":\"1D1W\",\"emu \":\"0B180U0G0V0M0Y0F1A1R\",emua:\"0B35\",\"emua \":\"0B4Z\",emud:\"0B0M\",emuk:\"0B181104\",emuka:\"0B22\",emur:\"0T0A1104131P150E1F02\",\"emur \":\"0T0B133C\",emus:\"0T1U0U0W0Y0P1106\",\"emus \":\"0T1W1107\",emusí:\"0U0X0Y0U\",emw:\"040D\",emy:\"03040U0A0Y0L1A1V1B06\",\"emy \":\"0M021A2K\",emys:\"0U0G0Y0Z\",emysl:\"0U0M0Y18\",emá:\"0O0L0P060U240Y24\",\"emá \":\"0U1A0Y10\",emám:\"0U1T0Y1U\",\"emám \":\"0U260Y1W\",emã:\"0P0A\",emä:\"11171N0C\",emään:\"112G\",emå:\"1002\",emæ:\"0Z02\",emé:\"0P04141P\",emél:\"141V\",emély:\"1410\",emén:\"1421\",emény:\"1424\",emó:\"0P041A05\",emô:\"0Y1M\",emôž:\"0Y2S\",emôže:\"0Y3D\",emö:\"1P10\",emön:\"1P0Z\",\"emön \":\"1P15\",emā:\"1D0T\",emă:\"150K\",emą:\"1B0C\",emė:\"1B0X\",emėg:\"1B0W\",emėgs:\"1B1K\",emě:\"0U1E\",eměl:\"0U1R\",\"eměl \":\"0U1K\",emř:\"0U0K\",emře:\"0U0S\",emřel:\"0U0Z\",emů:\"0U17\",emůž:\"0U1Z\",emůže:\"0U1P\",emůžu:\"0U12\",emų:\"1B06\",\"en'\":\"0M0T1F02\",\"en't\":\"0M1G\",\"en't \":\"0M1Z\",\"en-\":\"038C0L02\",\"en-d\":\"031M\",\"en-d \":\"032T\",\"en-i\":\"0326\",\"en-n\":\"032H\",\"en-nn\":\"032T\",enaa:\"010T0R0H110A\",enaar:\"010Q0R0F\",enai:\"0B0A0L0J11051B0B1D0X\",enak:\"0B12\",\"enal \":\"0B1P\",\"enam \":\"0B0U0T0L1B0D1C2J\",enang:\"0B6D0D02\",enant:\"0L2I15051O08\",enap:\"0B180U051103\",enapa:\"0B2E0U04\",enar:\"0B3Y0L020N030O0E0Q0O0R030T07100O1F05\",\"enar \":\"0B3M0O0D100B\",\"enar-\":\"0B1X\",\"enas \":\"0O0X0P1J0T071B641D2Y1O39\",enb:\"03030N080R090Z021004120214031N0N1O02\",enbe:\"03030N030R0414071N0V\",\"enbe \":\"14021N12\",enbo:\"0N020R0K0Z02\",enca:\"0B1N0O0U0P0A1O0O\",encan:\"0B1I0O0T0P051O04\",ench:\"0L050M1A0O020P071Q0D\",\"ench \":\"0M1P\",encia:\"0O3D0P0B1402\",enco:\"0B0Y0L340M030O1Q0P260Q031O0X\",encob:\"0B1U\",encon:\"0L1L0O270P2L1O0J\",encor:\"0L3M0P02\",encu:\"0B0K0O0H1O03\",endan:\"0L210M020O020V0D130F1O0B\",endap:\"0B2L\",endas:\"0O070P030T0610061O1B\",endel:\"0B0I0R0C0Z0B120H140P\",endes:\"0L020N0H0O060P050Z1N140G\",\"endi \":\"03080P0C0Q090T0R1F271O0V\",endig:\"0N0B0R030Z09120O1N2Y1O06\",endim:\"0O030P021B0M1F1B\",endin:\"0M090R0O130X15071B071F1P\",endir:\"0B3F0O02130F1F0O1N0L\",endit:\"03060L090Q040T0S1O08\",endn:\"0Z0Q\",endnu:\"0Z0V\",\"endo \":\"04290O540P4T0Q3N0T0E1B031O07\",endr:\"0L5F0O0W120F1B0H1O02\",endra:\"0L1N1B0K\",endre:\"0L6Q0O04120A1O04\",ends:\"0L1N0M0V0N060R070Z03140D\",\"ends \":\"0L2G0M150N070R04\",endt:\"0Z15120I\",\"endt \":\"0Z0N1208\",endte:\"0Z0Q1209\",\"endu \":\"0L261O0E\",endum:\"0T2G1C101O02\",endur:\"030N0L020P04132R\",endő:\"141A\",\"ene-\":\"1N10\",\"ened \":\"0M1C1406\",enedi:\"0M050T0L1F081P11\",enee:\"010K0R0C111A\",eneem:\"010I\",enek:\"0B0814211A021F0C\",\"enek \":\"0B08141N1A031F04\",enel:\"0B0G110H15041B0G1F0R\",enemm:\"1138\",enemo:\"0O180V08\",enemu:\"0B1Y\",\"enen \":\"03020N1S0O1J0R2W0Z0H1007113V120C1F04\",\"ener \":\"0L0E0N0I0O1G0R020Z0Q1210\",enere:\"0Q0N0T050Z0B120G\",\"enes \":\"0N0C0O310P030T080Z031103120514061D2O\",enest:\"0T0M0Z0V1114120Q1O0P\",enew:\"043G\",enewa:\"042Z\",enewe:\"043C\",eney:\"043Y1F0C\",eneye:\"046S1F05\",enez:\"0L0P0R0214021O0A\",enfa:\"03060L230N030O0A\",enfan:\"0L3J\",enfe:\"03070L040O0S0P051402\",enfer:\"0L080O110P05\",enfo:\"0L030Z0E1207\",enfor:\"0L020Z0G1207\",\"eng \":\"0B090D1C0N030R0D0Z0S120B1Q2Y\",\"enga \":\"0304043I0O0L0Q09130X\",engam:\"03030B1G0O02\",engan:\"0304042F0BIA0O060P0B0Z0Q12081311\",engap:\"0B20\",engar:\"0B3U1018\",engat:\"03040B1V\",\"enge \":\"043I0M030N0E0Z1Z12141405\",enged:\"141H\",engel:\"010V0B0T0N0B0R1P0Z1A100W121B1F0A\",engem:\"0B0S142B\",engen:\"0B1W0N050P040R0Q0Z0Z1106120I\",enger:\"0302041V0B1X0M031248140O\",engg:\"0B1Q0D04\",enggu:\"0B1D0D07\",engh:\"0B1Y1Q0J\",engha:\"0B21\",engin:\"0B150M0413441F0L\",engk:\"0B0K0D03\",engl:\"0M0H0N0R0V0Q0Z061003111L12051307151D1Q0A\",engla:\"0M020N040Z051003113W1205\",engle:\"0V1W151R\",engli:\"0M0M0N12\",engo:\"0B0B0O3J0P030Q0H\",\"engo \":\"0O4J0Q08\",engs:\"120M1B03\",engt:\"0M030R06120I1B09\",engte:\"120D\",engu:\"03030B1N0O0T13211B04\",engua:\"0B070O12\",engun:\"0B1K0N021B03\",engur:\"0B08132H\",engv:\"1B0X1Q0N\",engva:\"1B1L1Q0Z\",enha:\"0N0B0P190R020Z02110214031O06\",\"enha \":\"0P15\",enhet:\"100I1207\",enhle:\"0U0S\",enho:\"0P5J0R0414061O02\",\"enho \":\"0P44\",enhor:\"0P2X\",enhu:\"0P0V0R0D1102\",enhum:\"0P14\",enhv:\"0Z0C120K\",enhve:\"0Z0F120K\",\"enia \":\"0O020Q020T050Y14110615051A491O03\",eniam:\"0Q020T0F1A061O2U\",eniaz:\"0Y17\",enid:\"0O0S0P021F08\",enido:\"0O0W\",\"enie \":\"011G0N030R020Y2P140315081A431O03\",enig:\"012M0N0X0R120T050Z08120E1O0E\",\"enig \":\"0N0K0R040Z05120C\",enige:\"011A0N0U0R0Q0Z04\",enigi:\"01101O0E\",enii:\"151S\",\"enii \":\"1529\",enik:\"0B0P0V0A11031P0Y\",\"enim \":\"0T160V0R1F4Y\",\"enin \":\"03020B0H11181F58\",ening:\"010I0B290M0O0R0W0Z0N100O120S132R\",eninl:\"1F14\",enio:\"0O050Q020T0H0V081A041B0D1O16\",enion:\"0L021A021O1B\",enir:\"0L220O0I0Q0P0T0V0V0215061F0C1O0J\",\"enir \":\"0L3F0O0O1F0A\",enire:\"0Q0P0T0V1O02\",\"enit \":\"0B110T251107152Z\",eniu:\"0T0915091A0M1B061O18\",\"eniu \":\"15051A0W1B071O1U\",eniy:\"1F11\",eniyo:\"1F14\",eniz:\"1F0Q1N0Z\",eniñ:\"1N5S\",\"eniñ \":\"1N7C\",eniň:\"1NBC\",\"eniň \":\"1NE8\",enja:\"030A0B370R020V0Q\",\"enja \":\"03030V1Q\",enjad:\"0B45\",enje:\"0B0D0V1J140J\",\"enje \":\"0V38\",enjo:\"0M0G1102\",enjoy:\"0D020M0M\",\"enk \":\"0N070R251B051F03\",enke:\"03050N180R1B0Z081009110B121O14061B021O02\",\"enke \":\"0N0X120E\",enkel:\"0N040R0W0Z0410091109120I\",enken:\"0N0Z0R0W0Z041107\",enker:\"03080N02120M1B03\",enki:\"111Z144Q1A061B1I1O06\",\"enki \":\"1106143E1A081B0A1O04\",enko:\"0N020R0D0U05110914041O0W\",enkon:\"1O1E\",enkt:\"0N0D0R0H120L1B0D\",enkā:\"1D17\",enkār:\"1D32\",enle:\"0L040N040R0214081F16\",enler:\"0N041F16\",enli:\"0N020R0C0Z0U100412081F0H1N0T1O07\",\"enli \":\"1F0C1N14\",enlig:\"0Z1110041208\",enma:\"0N020R050Z081O07\",enme:\"0N020O030R021F1V1N121O02\",enmē:\"1D1J\",enmēr:\"1D3Z\",\"enn \":\"0N4P123P131W140B\",\"enna \":\"03100Q07101311341318\",ennar:\"0302134Z\",\"enne \":\"0L1L0N0L0Q0E0Z4010271117126H142U1A041C1E\",ennek:\"0303141N\",ennem:\"030Q0L0I0Z0M110B14131F02\",ennen:\"0L0T0N180R0U113O120X\",enner:\"03020Z11121F\",ennes:\"0L0E0Z2C1014110T122H\",\"enni \":\"031N1337145B\",ennl:\"120C\",ennli:\"120C\",enno:\"0N0310031107120U\",ennom:\"120U\",ennyi:\"1430\",ennyt:\"112R\",ennä:\"112S\",\"ennä \":\"114Z\",ennå:\"120K\",\"ennå \":\"120K\",enné:\"141G\",enod:\"010P0R051B03\",enodi:\"010Q0R06\",enoe:\"010Z0R15\",enoeg:\"010Q0R15\",enok:\"1N2S\",\"enok \":\"1N2V\",enol:\"0B0I1P0J\",\"enom \":\"0U0K0V0P0Z02100J1P11\",enon:\"0B0J0L0911041O0Y\",\"enon \":\"11031O1B\",enor:\"0O0D0P0D0Q040R050Z02100515071B291O02\",enori:\"1B3J\",\"enos \":\"03030O1V0P0Y0T0415051B1V1O1N\",enou:\"0L060M0M0P030U0L\",enoug:\"0M0T\",enp:\"0N02110C1O08\",enq:\"03060L020P0H\",enqu:\"0L040P0K\",enqua:\"0P0Q\",\"ensa \":\"030G0O0L0P0H0Q0S0T0M114U1O05\",ensam:\"0O080P0C0T0N100O\",ensas:\"0O0B0P031O1U\",ensav:\"0P070Q0V\",ensc:\"0N2U0R0F\",ensch:\"0N4P0R0L\",\"ense \":\"011J0L3N0M0F0O0F0P0C0Q080R020T0K1F031O05\",ensen:\"0L070R2J1O05\",enser:\"0L0O0Q020Z02120D\",ensh:\"043D0R02\",enshi:\"045Y\",ensin:\"0P0Q0Z0L1002110P12051B031F06\",ensis:\"030O0T0X11051O0R\",ensiy:\"0D0M\",ensk:\"010H0U070Y0L0Z0K100T120O1318\",enska:\"010G0Z09100L120A130P\",\"enso \":\"0N040O0K0P0E0Q3L1O09\",enste:\"010I0N0R0R0C\",ensä:\"1125\",\"ensä \":\"1155\",ensé:\"0L0P0O0I140R\",\"ent-\":\"034C0L0J\",\"ent-d\":\"032T\",entap:\"1P24\",entas:\"0O0D0P051B101O1I\",entat:\"0L0F0M020N020P020Q100T06150I\",entem:\"0L0C0O0J0P0P0Q0B0T1V0U04140N1A0C1O05\",entes:\"0L0J0O210P1L0Q0D0T280Z021406\",entet:\"0Z0A1004120K140D1O03\",entia:\"0M050P040Q020T2L1104\",entic:\"0Q0T\",entio:\"0L1J0M0G0T0N\",entir:\"0L0J0M060O0R0P0O0Q0N0T07\",entit:\"0L070M020Q120R020T060Z0211031O04\",entl:\"0M0F0N0S0Z0D100D120H\",entli:\"0N120Z0F100C120H\",entoj:\"11021B0A1O1M\",entos:\"0O1E0P180Q020T041B031O06\",entou:\"0L080P0R110A\",entre:\"0L3U0M020O1U0P1J0Q0C0R040Z0410031B071O0B\",entro:\"0L020O0Y0P0X0Q0J1O08\",entru:\"0N030R050Z0215CH1A05\",ents:\"0L2R0M150N1414041D13\",\"ents \":\"0L4N0M1J1D2T\",entul:\"1105151V1O02\",entum:\"0N020T1O1403\",entur:\"0L050M060O030P030Q020T151O03\",entã:\"0P0O\",então:\"0P0V\",entä:\"1002111O1N0E\",enud:\"0O0H1C0O\",\"enud \":\"1C1O\",enuh:\"0B0L\",enul:\"0B0U0V04151F\",enuli:\"0B1M\",enun:\"0B1G0N020O050P020Q030T02150N\",enung:\"0B27\",enur:\"0B0P1505\",enuru:\"0B1D\",enus:\"0L090T0O1B0D1O03\",enut:\"0B080N0B0Q180U020V0D110L1B03\",enuto:\"0Q0Q\",envi:\"0L0T0M030O0C0P0B1O03\",enw:\"030O0N030R031Q06\",enx:\"0P03\",\"eny \":\"0U0Q0Y0O140B1A07\",enya:\"0307046C0B201403\",\"enya \":\"04AA0B0D\",enye:\"045Y0B2F140R\",enyel:\"0B1G1402\",enyen:\"04530B0V1402\",enyi:\"03020B0H\",enyu:\"030F0B1A1402\",enyuk:\"0B1L\",enza:\"03070O0H0Q2J0R04\",\"enza \":\"03050O0A0Q2I\",enze:\"0306044X0N060Q0G0R030U021F09\",\"enze \":\"048K0N020Q0G0U03\",\"enzi \":\"0305047X\",enzio:\"0Q12\",ená:\"0U100Y2E1402\",\"ená \":\"0U100Y36\",enä:\"1003111N1C0J1P0C\",enää:\"111R\",\"enää \":\"113X\",enæ:\"0T02130H\",enç:\"03020L040P111F0O1N0R\",ença:\"03020L060P0N\",ené:\"0L040O0A0U0P0Y1E140J\",\"ené \":\"0L040U0Z0Y2C\",enê:\"0L0B\",ení:\"0O130U580Y1F\",\"ení \":\"0U780Y1Z\",enía:\"0O1K\",\"enía \":\"0O1P\",eníz:\"0U10\",eníze:\"0U1E\",enó:\"0O041A03\",enö:\"0N0214021P18\",enön:\"1P13\",\"enön \":\"1P1A\",enü:\"0N04140E1F0P1P0Q\",ený:\"0U110Y2M1N0P\",\"ený \":\"0U1F0Y46\",enýä:\"1N10\",enā:\"1D1T\",\"enā \":\"1D0X\",\"enās \":\"1D1R\",eną:\"1B25\",\"eną \":\"1B3G\",enč:\"0U020V041B0G\",enė:\"1B0C\",eně:\"0U0P\",\"eněz \":\"0U0R\",enī:\"0T021D1A\",enį:\"1B0Q\",\"enį \":\"1B17\",enų:\"1B0D\",enț:\"1521\",enți:\"151T\",eoc:\"0O0E0P0J0Q0L0S0P1503\",eocc:\"0Q0Y\",eoccu:\"0Q0Y\",eoch:\"0S0V\",eocu:\"0O0L0P0N\",eocup:\"0O0S0P0T\",eod:\"0T030U090Y09150Q\",eog:\"0Q020T020Z02\",eoi:\"0L030S331103\",eoil:\"0S0O\",eoir:\"0L050S2J\",\"eoir \":\"0L080S7Z\",eoj:\"0O021O05\",eola:\"0S18\",eoma:\"0V1R\",\"eoma \":\"0V4G\",eomr:\"0S0O\",eomra:\"0S2T\",eone:\"0M0I0O020Q020T05\",\"eone \":\"0M0N0Q02\",eopl:\"0M1L\",eople:\"0M27\",\"eor \":\"0O080S1C0T0A\",eora:\"0B3E0O02\",eoran:\"0B6L\",eoru:\"0T0U\",eorum:\"0T0V\",\"eos \":\"0M020O0D0P040T25\",eot:\"0U02\",eou:\"0M020P02\",epad:\"0B1O1A021B0H\",epada:\"0B391A031B0H\",epan:\"0B2L0D031B041C0H\",\"epan \":\"0B24\",epang:\"0B27\",epara:\"0M0A0N020O0W0P0K0Q0N0T04150K1B031O05\",epas:\"0B0I0L090O040R041B1C\",epasi:\"1B1K\",epat:\"0B260U031B0Y1D1L1O0H\",\"epat \":\"0B2W\",epati:\"1B1I\",epatī:\"1D32\",epc:\"0O050P03\",epd:\"1N1H1Q08\",epde:\"1N20\",\"epde \":\"1N1O\",\"epe \":\"0T0R0V0212071402150N\",eped:\"0B0K1403150U1F03\",eper:\"0B2V0M020R060T0Y14041B05\",epert:\"0B540T03\",eph:\"0M030T10\",epho:\"0M020T0Q\",epie:\"0O021A0V1D18\",epild:\"1D1R\",epis:\"0T171A03\",epist:\"0T171103\",epit:\"0O030T10\",\"epit \":\"0T0X\",epod:\"0U080V030Y0W\",epoi:\"0P0Z\",epois:\"0P18\",epon:\"0B0Q0D030T05\",epove:\"0Y0Z\",epoz:\"0U070V070Y1D\",epozn:\"0U050V0H0Y1C\",epra:\"010K0R020U070Y0D1A0L1B0I\",epraa:\"010L0R03\",eprá:\"0U070Y19\",epráz:\"0U090Y1J\",\"ept \":\"0L080M0K0R041205150Y\",epta:\"0L020O0B0T0A0U0Q15241O041Q0A\",eptal:\"0U0R\",eptat:\"0U09151M\",epui:\"0L13\",epuis:\"0L1V\",epul:\"0B0K0T0G\",epy:\"0M021B02\",epá:\"0Y0N\",epáč:\"0Y11\",epä:\"11101C0K\",epär:\"11061C0K\",epü:\"140E1P0J\",epă:\"150H\",epř:\"0U0Y\",epři:\"0U0S\",epš:\"0U0R0V030Y1C1B06\",epši:\"0U040Y1M1B05\",epšie:\"0Y1R\",epší:\"0U130Y0N\",\"epší \":\"0U1A0Y0F\",eq:\"032G0M040O0E0P0C0T161Q0Z\",\"eq \":\"030I1Q1S\",eqq:\"034Q\",eqqim:\"032U\",equ:\"0L060M080O1A0P1H0Q050T2S\",equa:\"0M030P040T0P\",eque:\"0L060M050N030O0X0P160Q040T26\",\"eque \":\"0O020P020T1U\",equen:\"0M040P150Q030T08\",equeñ:\"0O13\",equi:\"0L030M060O110P0C0Q030T1E\",equu:\"0T0T\",\"er'\":\"0M071F041Q04\",\"er's\":\"0M0D\",\"er-\":\"032N0M020P081N0F\",eraa:\"010M0R101109\",erad:\"0B0X0N0Y0O0H0P0F0R030U0C101R1B04\",\"erad \":\"0U0C100N\",erada:\"0B1S0O060P061B04\",erade:\"0N1L0R041014\",erag:\"04390B030M02\",erage:\"045R0M03\",erah:\"0B16\",\"erah \":\"0B1Z\",erai:\"0B070L4I0P020Q0I110E15061B20\",\"erai \":\"0B080L2S0Q0I15071B43\",erais:\"0L350P031103\",erait:\"0L1O1108\",erak:\"0B1214031F0T\",\"eram \":\"0P2H0T1J15151A05\",erame:\"0O0A0P020Q13\",\"eran \":\"0B0D0N020O0W0V070Z02100311041O0C\",erang:\"0B2Q0D05\",erano:\"0O0J0Q3K1O02\",erap:\"0B3G\",erapa:\"0B6G\",erar:\"0B050N050O0T0P0Q0Q090R070T0L1019150E1O0M\",\"erar \":\"0O0O0P0S1016\",erasa:\"0B3B\",\"erat \":\"0B0O0T530Z02100F150Q\",erav:\"0P080Q0S0R070T0M0V06\",eraz:\"0Q050Y2G1A1D\",\"eraz \":\"0Y321A26\",eraŭ:\"1O0O\",\"eraŭ \":\"1O1A\",erbah:\"0B1I\",erbai:\"0B19\",erbaz:\"03310R021O02\",erbet:\"0R091N14\",erbic:\"0B34\",erbo:\"0B0F0N050O020P030Q020R0D0T041O08\",erbu:\"03070B130N070T0K1O02\",erca:\"03040B1E0O1C0P0J0Q2F0T0815171A041O04\",\"erca \":\"0O140P0B0Q080T02150F1A06\",ercar:\"0Q14\",ercay:\"0B24\",erch:\"0L160N020Q5N\",erche:\"0L1K0N030Q03\",erché:\"0L070Q5J\",ercu:\"0L030T0X1504\",\"erd \":\"011G0L020M020N060R4Z120914031506\",erdad:\"0O2L0P1V\",erday:\"03080M0R\",erden:\"0D050N410P020Q030R0W0Z1G12151F0X1N0S\",erder:\"0N020O0I0P0G0Q0C0R131506\",\"erdi \":\"0P091F2K1N2J1O05\",erdie:\"01870N0F0O040R0L\",erdig:\"1212\",erdim:\"0O021F0U1N19\",erdo:\"0N020O160P0B0Q0A0R070T061O04\",\"erdo \":\"0O120P021O03\",\"ere'\":\"0M0U1F03\",\"ere's\":\"0M15\",erea:\"0T0C1531\",\"erea \":\"0T0A1531\",ereb:\"0O050Q0Q0T0A1F091O02\",erebb:\"0Q0Q\",erec:\"0N080O0R0P0D0R070U030Y0P15061A021F0V1O06\",erece:\"0O080P0E1F16\",\"ered \":\"0M1K0R05140F\",erede:\"0N030R030Z291212140B1F391N0L\",eree:\"0R1H1104\",ereen:\"0R1V1108\",erei:\"010N0N1I0P0K0Q0A0R0M110E14061B0Z\",ereik:\"0R0C1B1O\",\"erek \":\"142B1F1D1N4G\",ereka:\"0B8Z\",ereke:\"04410R02142L1F0R1N0N\",ereki:\"1F27\",ereko:\"1C1H\",erekt:\"1F1F\",erel:\"0L020R111103141415091F211O03\",ereld:\"0R19\",ereli:\"1F2K1O02\",\"erem \":\"0N0C0P0Z0T100U020V09140U1A0E\",eremo:\"0O0J0P0Q0Q0M11031A021B031O03\",eremp:\"0B1P\",\"eren \":\"0N4X0O0M0RAJ0Z1X110F122214031F051N0S1O06\",erend:\"0N060P030Q020R090T060Z0D120C1402\",\"erer \":\"0N100O040P070T050Z1M121C\",\"eres \":\"0N0V0O490P130R030T0Q0Z20120L140I1A021D1I\",eresa:\"0D060O0V0V0F15121A021O0N\",eress:\"0L020N0Y0P0X0Q0W0R110Z0P110E120P1409\",\"eret \":\"0T1G0Z1W1002120C14121N0H\",ereta:\"0B1K0D02\",erete:\"0Q0D142V1509\",ereti:\"1412\",eretn:\"143H\",erew:\"044Q\",erewe:\"0489\",erey:\"04291F0T\",ereye:\"04411F0Q\",erez:\"046P0L0G0O05140F1507\",ereza:\"04530O02\",erezw:\"0464\",erfa:\"030D0N0J0Z0510061209\",erfo:\"0M030N0J0Z0E120B1F021O04\",erfor:\"0L020M040N060Z0G120B1F021O07\",ergai:\"1B1K\",ergee:\"01260R0M\",ergen:\"03020M020N050O030Q020R0T\",\"ergi \":\"0BAL0Z0310021204130Z150Y1B031F05\",ergo:\"0O040P060Q0B0T0V\",\"ergo \":\"0Q050T0W\",ergu:\"0B0B0P1R0T031B03\",ergun:\"0B0H0P21\",erha:\"0B290M030N0Z0R0U1F15\",erhan:\"0B070N030R061F15\",erhen:\"0B1V0Z0B\",eriau:\"1B3R\",erica:\"0M0F0O090P0F0Q0G0T0S150M\",erici:\"0V0B152I1F06\",\"erie \":\"0L0M0N040O030Q0M0R030U030Z08120I150B1A02\",eriet:\"0N020Z0W10091205\",erig:\"010P0N0H0O040P0D0Q0A0R0F0T030Z05100E1O0C\",\"erig \":\"010P0N0D0R0F\",erij:\"0R0O0V081B051D0O\",\"erim \":\"0T0D1F2M\",erima:\"0B2H1B0A\",erimi:\"11041B051F161N0X\",\"erin \":\"0N0X0R0811171F221N38\",erind:\"0B090D040Z0D1F1U1N141O06\",erine:\"11031F1I1N2J\",erini:\"11071F3H1N7Q\",erint:\"0B0K0T0C1108142B1B021O02\",\"eris \":\"0T381B1N1N141O0X\",\"erit \":\"0T3W110A150Q\",erita:\"0B410Q0F0T0O15061O09\",eriy:\"1F0W\",erið:\"131S\",\"erið \":\"133L\",eriň:\"1N18\",\"eriň \":\"1N12\",erja:\"0B5E0R0C1106130I\",\"erja \":\"0B30130I\",erjaa:\"0B2A0R0E\",erjad:\"0B2C\",erjal:\"0B1T\",erje:\"0B0K0N03140B1N0I\",erju:\"0B0B0O02133D\",\"erju \":\"135A\",erjum:\"03020B08131V\",\"erk \":\"014203020N040R1Y1002120D130F1B071F0F\",erka:\"030N0B1L0N0G0R050V050Z02100W130A1A021B031O04\",erkar:\"100N\",erkat:\"0B271O03\",erkee:\"010N0R0N\",erkek:\"1F1F\",erken:\"0B190N0L0R1I0Z0B12091F1I\",erkes:\"030414021F21\",erki:\"010K030Q0R09110L130K1A021B0E1O08\",erkl:\"010T0N0H0R0C0Z04101C12091B02\",erkli:\"101B\",erko:\"010K0B060N040R0S0Z08110212071O08\",erkt:\"0N080R16100212051B0A\",\"erkt \":\"0N070R18\",erlaa:\"010G0R04\",erlal:\"0B2N\",erlan:\"0B0B0L020M020N0C0R0S0Z021O0H1Q0A\",erler:\"0N031F131N17\",erlie:\"0N110R0W\",erlih:\"0B2C\",erlij:\"0R0X\",erlik:\"010G1F031N14\",erlo:\"010P0N0J0O1C0Q0Q0R0N0Z02\",\"erlo \":\"0O1N0Q0Q\",erloo:\"010L0R08\",erlu:\"0B1R0N021Q0C\",\"erlu \":\"0B2D\",ermai:\"0B2U0L02\",\"erme \":\"0L0G0O0S1F08\",\"erna \":\"03170O0G0P0E0Q030R020T0G0Y0A10251O09\",ernah:\"0B5Q0N02\",ernej:\"1O1K\",ernig:\"1348\",erniè:\"0L1A\",erno:\"0D040M090O0V0P0N0Q0F0T050U020V051O07\",\"erno \":\"0D050O0V0P0Q0Q0F0T030V0B1O05\",erns:\"0N0K0R050Z0B\",ernsy:\"0Z0D\",erny:\"0B0M0Y08140D1A02\",ernya:\"0B19\",eroj:\"11021B021O10\",erok:\"0B0M0Y0E11021A031B02\",\"eron \":\"0D050O3B110A1O30\",eros:\"0O130P0C0Q060T0Y11081A031B041O03\",\"eros \":\"0O160P060T0V1B081O06\",erova:\"0U020V1N0Y0I\",eroz:\"0U0K0Y1B\",erozu:\"0U0L0Y19\",erpi:\"0B0P0O0415041A061O03\",erq:\"03080T061Q04\",\"erra \":\"03190L030O1K0P1B0Q0Z0T1S1112131C\",errad:\"030A0O0F0P0R0R03\",erram:\"030A0O060P050T1F\",erras:\"03030L030N0H0O030P030R0C0T070Z0C1008110C120F\",errim:\"03020T0Y\",\"erro \":\"0O1C0P0H0Q020T06111D\",error:\"0L040M040N020O0W0P040Q0O0R020T090Z0211031402\",ersam:\"0B1Z0N040P020T04\",ersc:\"0N1Y0R15\",ersch:\"0N390R1J\",erseb:\"0B19\",ersel:\"03030B0A0L020M0M0N03\",erset:\"0N0X0Z03120M1403\",ersiň:\"1N2F\",ersk:\"01180Z0I100B120B13091A021B0O\",erska:\"010G0Z0310091B14\",\"erso \":\"0O070P060Q180T041O05\",ersoa:\"151O\",ersoo:\"010N0R0O1105\",ersta:\"010T0M0W0N0Z0R0S0Z02130B1B04\",erste:\"01130N320R1Q12061F02\",erstm:\"0R18\",\"ersu \":\"1333\",ersuc:\"0N1L\",ersä:\"100D\",ersæ:\"0T040Z0J\",ersæt:\"0Z0M\",\"erta \":\"0B0A0O1N0P0O0Q0G0T0E110Z15091A021B0P1O0L\",ertai:\"0L1L0M0E1112\",ertan:\"03020B2K\",ertel:\"010S0N050R2J0Z02110314031A031F05\",ertem:\"0B2O140E1A021O05\",ertez:\"0P10\",\"erti \":\"0B560L020Q0K0T051B131O03\",ertin:\"0B1P0L020P030T061B0Q\",ertir:\"0L020O090P030Q051N22\",ertr:\"010N0N0T0R190Z03120514021B051O03\",ertro:\"010L0R0Z\",\"ertu \":\"0L0313711B02\",erub:\"0B0F\",erug:\"012Q0R1N\",\"erug \":\"01210R1J\",erugk:\"010N0R0A\",erum:\"0B090N080T2K0Z02131D\",\"erum \":\"0N080T2H132X\",erun:\"0B0B0N0X0Q040T4Z11091A041D0Q1F02\",erunt:\"0B0G0N050T5A\",erunā:\"1D1W\",erus:\"0B1K0R040T0T0Z041003110H1O03\",\"erus \":\"0B130T0V1O05\",erusa:\"0B1F1003\",erw:\"010Z0313040Y0B080M030N0U0R0J1A1M\",erwa:\"010S030G042O0B0E0N0P0R0N1A09\",\"erwa \":\"03060441\",erwi:\"030B0N0C0R0Q1A04\",erwij:\"0R0T\",erwy:\"010Z1A02\",erwys:\"010P\",\"ery \":\"010F0M3S0U041A0F1N60\",eryo:\"0D020M0N\",eryon:\"0M0V\",eryt:\"0M0V1A04\",eryth:\"0M17\",erze:\"03020N0W0R0814051A0L\",erà:\"0Q1I\",\"erà \":\"0Q2E\",erá:\"0O0X0P1N0U0B0Y181407\",\"erá \":\"0O0Y0P1T0U0E0Y17\",erã:\"0P0H\",erão:\"0P0K\",\"erão \":\"0P0Q\",erä:\"0N06100V111C1N0A\",erät:\"0N031014110I\",erätt:\"1014110M\",erå:\"0Z02\",erç:\"0L030P031F3F\",erçe:\"1F3W\",erçek:\"1F4S\",eré:\"0O0J0U0T140M\",\"eré \":\"0O0F0U11\",erê:\"0P03\",erí:\"0O2R0P0F0Y0L130A1408\",ería:\"0O450P0C\",\"ería \":\"0O3P\",erías:\"0O15\",erð:\"1369\",\"erð \":\"131P\",erða:\"131W\",\"erða \":\"131Z\",erði:\"1325\",\"erði \":\"1320\",erðu:\"134S\",\"erðu \":\"131Z\",erðum:\"132B\",erður:\"135X\",erò:\"0Q1K\",\"erò \":\"0Q2I\",eró:\"0O040P031A04\",erö:\"1004\",erø:\"0Z061203\",erøm:\"0Z091205\",erü:\"0N051414\",erül:\"142N\",erült:\"141A\",erý:\"0U0M1N0W\",\"erý \":\"0U0T\",erýä:\"1N13\",erýär:\"1N17\",erā:\"0T08\",eră:\"1519\",\"eră \":\"151N\",erą:\"1B0A\",erĉ:\"1O0B\",erč:\"1B07\",erė:\"1B0K\",erī:\"0T081D0O\",erį:\"1B0F\",erō:\"0T04\",erő:\"140P\",erős:\"1415\",erŝ:\"1O0A\",erū:\"1B06\",erű:\"140K\",\"es'\":\"1Q07\",\"es-\":\"030J0L25\",\"es-t\":\"0L21\",\"es-tu\":\"0L3G\",\"es-v\":\"0L16\",\"es-vo\":\"0L20\",esag:\"0N100O020P020Q041P3F\",esago:\"1P3O\",esagt:\"0N1O\",esai:\"0B12\",esal:\"0B0P0O02\",esam:\"0N040Q0F0V070Z0310021A021B0Q1D1Y\",\"esam \":\"0V0G1D4H\",esame:\"0Q0C1B1H\",esap:\"0O070P0814061D0S1F03\",esapr:\"1D1W\",\"esar \":\"0B2Z0O0L0P080T07150H\",esas:\"0O0L0P091B051O0W\",\"esas \":\"0O0O0P091B0A1O1S\",esat:\"0B050Q0B0Z02150B1B0J1D151O02\",\"esat \":\"0B090Z02150B1D2Y\",esaw:\"0B0P\",esawa:\"0B1E\",\"esc \":\"157V\",esca:\"0L080M050O1I0P0X0Q0F0T0A\",esce:\"0L0C0O080P0K0Q0Z0T0Z1O03\",\"esce \":\"0P020Q0V\",esch:\"0N420Q040R221513\",esci:\"0O030P040Q0J0T2P\",escio:\"0T151O02\",esco:\"0O0Z0P2R0Q1C0T03150A\",\"esco \":\"0O050P040Q16\",escol:\"0O030P1U0Q02\",escon:\"0O0P0P0Q0Q04\",escr:\"0L030M030O1X0P270Q050T061509\",escre:\"0P1T\",escri:\"0L030M050O2H0P0V0Q050T07150B\",escu:\"0M020O290P170T06150T\",escuc:\"0O17\",escue:\"0M020O16\",esd:\"030A0O0Q0P0F14041Q04\",esde:\"03040O130P0I1O02\",\"esde \":\"0O1F0P0M0R02\",esed:\"0U0214061C0U1F02\",\"esed \":\"14021C22\",esej:\"0P0I0Z021O02\",\"esel \":\"0N0314041C2U1F03\",eselī:\"1D3C\",\"esen \":\"0N320O020V081105143L1F04\",esent:\"0M0D0N020O0R0P110Q0F0T0510081207\",eseo:\"0B0L0O081506\",\"eser \":\"0N2B1002120H1A02\",eses:\"0D0A0N1I0O0M0P0K0T06\",\"eses \":\"0D0I0N2H0O0Q0P0M0T07\",eset:\"0N0D0U0I0V0R142A\",\"eset \":\"0U0J0V1U140K\",esf:\"03090O0A0P0E1503\",esg:\"030E0O070P04\",esh:\"0302042F0M030N020O030Q071402\",esha:\"04360N050O02\",\"esha \":\"044K\",eshe:\"041R1404\",esiac:\"0Y15\",\"esid \":\"1C1E\",esie:\"011U0N030O040Q020T03120915031A0D1B02\",esien:\"011T1A06\",esig:\"011E0M050N030Q0315061B061O04\",\"esig \":\"011B\",esim:\"0Q030T13110F1B081C0Q1F0D1N15\",\"esim \":\"1F081N1I\",esime:\"110P1C1S\",\"esin \":\"0B0H110O1C1L1F0R\",esine:\"0T0411071F1D1N0L\",esini:\"1F2N1N1V\",esio:\"0O0C0V04150B1A021B101O02\",esiog:\"1B1N\",\"esis \":\"0O031B031O1X\",\"esit \":\"010T1104\",esita:\"0M030O1N0Q021O07\",esito:\"0O0Y\",esj:\"1A02\",eska:\"03020U0G0Y0D0Z0E120F1B091O0U\",eskab:\"0Z0E\",eske:\"011103090Z231002110W121S140E\",\"eske \":\"0Z0H1206\",esker:\"030E0Z1G1210\",esko:\"0U050V090Y0W0Z0211021A021B031O02\",eskor:\"0Y0X\",eskr:\"010K0Z0510051205\",eskry:\"010G\",esky:\"0U050Z0A1102120G\",eskyt:\"0Z09120E\",eslo:\"0P030R0L0U04\",eslu:\"010S03060R020Z0I100B1204\",eslui:\"010T0R03\",eslut:\"0Z0M100B1204\",esma:\"03040N020O020P0O\",esmi:\"0V040Y0I14051D1C1F0A\",esmit:\"14021D37\",esmo:\"0P1Y0V04\",\"esmo \":\"0P2A0V0A\",esmu:\"03040V071D7W\",\"esmu \":\"0V0H1DI1\",\"esn'\":\"0M29\",\"esn't\":\"0M33\",esne:\"03080R030T2K0U030Y0I140K1A041F02\",\"esne \":\"0T2Q0Y0L14021A03\",esni:\"03020U080V06140D1B1R1Q07\",esnis:\"1B2P1Q0D\",\"eso \":\"0D080N040O460P0D0Q1D0T190V050Y091B031O0D\",esoe:\"010K\",esoi:\"0L1U\",esoin:\"0L34\",esok:\"0B16\",\"esok \":\"0B29\",eson:\"010J0N091O0C\",esond:\"010I0N0F\",esor:\"0D020N050O0Y0Q020U020V03150Y1A031B021O02\",españ:\"0O11\",espec:\"0L0I0M0A0O0W0P0E0R09150P\",espek:\"0N060U040Z061006120D1O0D\",espon:\"0D030L0L0M0A0O0X0P110Q060T1I150G1O1L\",espos:\"0O0M0P0Y\",espre:\"0N040O060P040Q030R0B153F\",espu:\"0O1H15051Q06\",espué:\"0O1G\",espè:\"0L0O\",espē:\"1D2I\",espēj:\"1D5Q\",esq:\"03080L0E0O060P180T071Q03\",esqu:\"0L0O0O090P1I0T0E\",esque:\"0L120O020P1H0T0F\",esr:\"032V0V09\",esri:\"032V\",\"esri \":\"034B\",\"essa \":\"0L030P2V0Q120T0C100B118M132H\",essan:\"0L0M0N0D0P0G0Q0E0R0G0Z0A1009110V120C\",essar:\"030O0M070P0H0Q090T051328\",essaw:\"0330\",essay:\"0L1S\",\"esse \":\"0L2F0N0L0P480Q1E0R050T7W0Z0B120714041C1L\",essed:\"030B0M0K\",essef:\"0385\",essen:\"031X0L0N0M020N3P0P060Q030R0B0T060Z071004120C1409\",esser:\"030Q0L0I0M020N210Q4J0R030T0B0Z0G1009120D\",esset:\"03030T0X1402\",\"essi \":\"03030Q0O0T0D11031352\",esso:\"0L070M050N030P450Q5D0R040T050Z0410021103\",\"esso \":\"0P0N0Q4R\",essoa:\"0P37\",essor:\"0L020M030N040P1B0Q0Q0R050T030Z0310021107\",essu:\"031C0L0K0M020Q1O0T1A131S\",\"essu \":\"03021328\",essun:\"03040Q1M\",essus:\"030F0L0R0T13\",essv:\"120D\",essve:\"120D\",essä:\"113C\",\"essä \":\"116K\",essé:\"0L0P141D\",esség:\"1413\",\"est-\":\"03030L4U\",\"est-c\":\"0L6L\",estaa:\"010L0R0U111X\",estab:\"0M020O510P040T07\",estad:\"0D050O220P131O09\",estal:\"0N040O030R0A0U0W0V080Y0N\",estam:\"0O150P1A0Q021104\",estar:\"0O2U0P2G0Q0G0T021108130B1A021O02\",estas:\"0D020O100P0I0T0A110B1B0Q1OSF\",estav:\"0P5X1B02\",ested:\"0M0R0Z04\",estel:\"010N0N0S0R10110H1B03\",estem:\"0P040R0A0T030Z07120V14091A5V\",esteś:\"1A5K\",estil:\"0O040P040Z0E120D\",estio:\"0L1S0M0R0O020P020Q070T08\",estis:\"0D020L020T1E11041B041OC4\",estit:\"0Q0V0T05110415061O08\",estiv:\"0L020M020O030P0Z0Q040T0311051F02\",estl:\"0M020N020U1O0Z02\",estli:\"0U2C\",estn:\"0T1Z0U050Y101A03\",estne:\"0T24\",estos:\"0O130P031O2G\",estou:\"0P5J0U04\",estoy:\"0O4K\",estro:\"0M050O250P020Q060T060U051O17\",\"estu \":\"0U0F0V0A0Y0D130J1A061O1N\",estud:\"0D0A0O2A0P2E0R080T041O02\",estul:\"151W\",estus:\"0T0B1O1B\",estuu:\"010Q0R0A\",estuv:\"0O141B09\",está:\"0OB80PAN0U0B\",\"está \":\"0OAC0PCI\",están:\"0O2H0U06\",estás:\"0O240P0D\",estã:\"0P2K\",estão:\"0P38\",estä:\"0N04100S114P\",\"estä \":\"1170\",estäl:\"100F\",estå:\"0Z071004120A\",esté:\"0L0D0O0I140G\",\"esu \":\"0T030U080V0B1A051B361O0F\",esua:\"0B1F\",esuat:\"0B2E\",esult:\"0D030M070O0P0P0A0R080Z051005120C\",esup:\"0T0215091B0R\",esupr:\"1B1J\",esy:\"0D051A031B031F03\",esyo:\"0D061F03\",esz:\"147M1A7R\",\"esz \":\"143W1A5M\",eszc:\"1A2C\",eszcz:\"1A3J\",esze:\"143H1A07\",eszek:\"1415\",eszk:\"140C1A1R\",eszka:\"1A2P\",eszt:\"142R1A08\",eszte:\"141M\",eszé:\"146M\",eszél:\"146K\",esä:\"1002110F1P0D\",esé:\"1413\",eség:\"141N\",esége:\"1416\",esê:\"010K\",\"esê \":\"011A\",esí:\"0O02140A\",esó:\"0O05\",esö:\"100C1F02\",esök:\"100G\",esø:\"0Z0A120C\",esøg:\"0Z0L\",esøge:\"0Z0E\",esøk:\"120Q\",esøke:\"120C\",esā:\"1D0G\",esą:\"1B0O\",\"esą \":\"1B0X\",esė:\"1B07\",esī:\"1D13\",esīb:\"1D0W\",esį:\"1B0A\",eső:\"140B\",esť:\"0Y12\",\"esť \":\"0Y1I\",esų:\"1B08\",esɛ:\"033L\",esɛa:\"032K\",\"esɛa \":\"034I\",esɣ:\"033E\",esɣa:\"031T\",\"et'\":\"0M0D\",\"et's\":\"0M0O\",\"et's \":\"0M0X\",\"et-\":\"030M\",etaa:\"010T0R0G110X\",etaal:\"010V0R0K\",etad:\"0O030P060U0B10061C0L1O02\",etah:\"0B0S\",etahu:\"0B1J\",etai:\"0L020M040N020P020R030U031B1D\",etais:\"0P021B1K\",etaj:\"0Y0815071C161O06\",etaja:\"1C2X\",etak:\"0B0L0V051402\",etala:\"100I1O03\",etale:\"0O020R0H0Z0H120D1O03\",etam:\"0O090P0D0Q0A0T0C1C0L\",etap:\"0B1L\",etapi:\"0B1V\",\"etar \":\"0O040P030V0D0Z02100K\",etas:\"0O0I0P0C0T0I1B0H1C0R1D0M1O0V\",\"etas \":\"0O0N0P0F0T081B0Z1C101D1M1O1P\",etb:\"0R030U02140H1F03\",etbe:\"1415\",etben:\"140Y\",etc:\"0M020Y18\",etci:\"0Y23\",\"etci \":\"0Y2I\",etd:\"1N4C1Q04\",etde:\"1N0U\",etdi:\"1N50\",\"etdi \":\"1N34\",etdim:\"1N1U\",eteg:\"141E\",etek:\"0R0E0U03143V1A021B081O02\",\"etek \":\"0U03143E\",etela:\"0B1U0Q04\",etem:\"0P030Q020T0314341A02\",\"etem \":\"0T03142K1A03\",\"eten \":\"0N1F0R9D0Z02100R121J140F150I1F03\",etero:\"0Z0211021O1C\",etet:\"0N030P020V030Z03100E110A1206144L\",\"etet \":\"0N040Z04100D1205141X\",etett:\"110F1426\",etf:\"0Z02\",etg:\"1B04\",ethe:\"0M0Z0T030Z02140A\",ether:\"0M1B\",ethi:\"0M1A\",ethin:\"0M1Q\",etia:\"0B1F0T1Z\",etiam:\"0T1U\",etiap:\"0B2O\",etie:\"0L030O0211021B041D1L\",etiek:\"1D25\",eties:\"1B081D1R\",etik:\"0B1A1102140G1B0U1F041O021P31\",\"etik \":\"0B08140E1F031P2S\",etika:\"0B2B1O02\",etir:\"0L070M040O070P070V091F0U1N1Z\",\"etis \":\"0T0Y1B0V1O2N\",\"etit \":\"03060L1I0N020T061109\",etj:\"010H0R0A0Z05130814041N10\",etje:\"0R130Z0C1N1E\",\"etje \":\"0R18\",etjek:\"1N1J\",etjen:\"0Z0F\",etji:\"0112\",etjie:\"0115\",etkez:\"140Z\",etko:\"0V030Y3A112S\",\"etko \":\"0V070Y3V116P\",etky:\"0Y1B\",\"etky \":\"0Y1M\",etký:\"0Y13\",etle:\"14321F0Y\",etlen:\"142P1F02\",etlh:\"1Q9I\",\"etlh \":\"1QC8\",etm:\"03030U021F5T1N8D\",etme:\"1F641N9L\",etmed:\"1F171N1I\",etmeg:\"1N2T\",etmek:\"1F231N41\",etmel:\"1F0H1N38\",etmen:\"1F1K\",etmey:\"1F1P\",etmä:\"1N2H\",etmäg:\"1N29\",etne:\"0T110Y08141E\",\"etne \":\"0T13140K\",etni:\"03030V090Z091210130S141F1A0K\",\"etni \":\"141F1A03\",etnin:\"0Z091210131M\",etné:\"1439\",etnék:\"141H\",etob:\"1P1M\",\"etob \":\"1P1Q\",etol:\"0Y0H1B091P0Y\",etom:\"0V031P1U\",\"etom \":\"0V081P1J\",\"eton \":\"11081O19\",etos:\"0O070P0A0U031B0C1O061PDP\",\"etos \":\"0O090P0C0U041B0N1O0A1P3B\",etosi:\"11021PD6\",etp:\"0V04\",etrec:\"151T\",etræ:\"0Z0L\",etræk:\"0Z0E\",\"ets \":\"012Q0L0Y0M0M0N040R4J0Z0L100B120N\",etsz:\"142I\",\"etsz \":\"1411\",etszi:\"140Y\",\"ett \":\"030D0N0L108E124514BZ1C0N\",etta:\"034O0L040Q3R101N114D137P14021F031Q0B\",\"etta \":\"03270Q1J101K113D13F2\",ettaj:\"0304112F\",etted:\"031Z0Z021410\",ettei:\"112P1402\",ettek:\"030E111I140Z\",ettem:\"030J1447\",etten:\"030D0L060N0D0Q030R0R0Z0A1006110V120F140L1F09\",etter:\"03090L050M1Q0N0R0Q1W0R0A0Z0B1007123R\",ettes:\"030D0L180N021407\",ettet:\"030R0N050Q080Z0H110P1208140E\",ettf:\"03051208\",\"etti \":\"03060Q0Y0R050Z0211251207130P14021F47\",ettii:\"112S\",ettim:\"03040Q1411041F16\",ettin:\"030C0M0P0Q020R0511071F0K\",ettiğ:\"1F16\",etto:\"0L090Q7F1002110J1208\",\"etto \":\"0Q6V\",ettr:\"030J0L1J0Q04\",ettre:\"03070L2F\",ettu:\"03130Q06111J130A\",\"ettu \":\"030S112F130G\",ettw:\"031P\",ettwa:\"033L\",että:\"11DJ\",\"että \":\"11OP\",etté:\"1420\",ettél:\"1414\",etud:\"0T071C0K\",\"etud \":\"1C1E\",etuj:\"0B0G\",etur:\"0M090T270Z04133E15071B351O0L\",\"etur \":\"0T280Z031356\",eturi:\"1B541O0P\",etus:\"0T0T11041B0V1C0S\",\"etus \":\"0T0T11031B1S1O03\",etuv:\"0O031B041P0Z\",etuvo:\"0O031P15\",etw:\"0M060N0Y0R04\",etwa:\"0N2C0R0A\",etwas:\"0N3M\",\"ety \":\"0M050U0C0Y101A0M\",etyd:\"0Z0D100D1207\",etyr:\"120A\",etz:\"0N1P0R03\",etzt:\"0N33\",\"etzt \":\"0N39\",etzte:\"0N1Y\",età:\"0Q0C\",etá:\"0P051402\",etä:\"112O\",etää:\"1133\",\"etää \":\"1145\",etään:\"1135\",etæ:\"0Z02\",eté:\"0L0M141D\",\"eté \":\"0L0Y\",etés:\"141U\",etí:\"0O030U070Y0B\",etó:\"0O02\",etø:\"0Z03\",etü:\"140E\",etā:\"1D0M\",etă:\"150L\",etą:\"1A041B0M\",\"etą \":\"1A071B10\",etė:\"1B0L\",\"etė \":\"1B0S\",ető:\"1410\",etų:\"1B0X\",\"etų \":\"1B1I\",\"eu \":\"0L2Z0N020POV0T04156F\",\"eu-\":\"0P05\",eub:\"0L030U02\",euc:\"0N0H0T03\",euch:\"0N17\",\"euch \":\"0N1Q\",eud:\"0N040O020U0F1108\",eudě:\"0U0P\",euděl:\"0U0Z\",eue:\"0L050N0U\",euf:\"0L040N02\",eug:\"0L030N0B0R061402\",eui:\"0L0I\",euil:\"0L0V\",euill:\"0L18\",euk:\"0R0E110B\",\"euk \":\"0R10\",eul:\"0L1P0N0211021505\",\"eul \":\"0L111508\",eule:\"0L1P0N02\",\"eule \":\"0L1A\",\"eum \":\"0B050M020N020R040T7L0U0214021A05\",\"eun \":\"010Z0N030R021508\",eund:\"0N1S0T0A0Z031003\",eune:\"0L1G0R02\",eup:\"0L06\",\"eur \":\"01380L8C0N030R1G\",eura:\"0L031117\",eurd:\"0R0Q\",eure:\"0L460N0E0R0K\",\"eure \":\"0L2H0N0E\",eures:\"0L1X\",eureu:\"0L2A\",eurs:\"0L3C0R04\",\"eurs \":\"0L5M0R04\",\"eus \":\"0L040P3T0R0L0T5L110C\",euse:\"0L2C0P03\",\"euse \":\"0L29\",\"eut \":\"0L3D0N08\",\"eut-\":\"0L0U\",eute:\"0N2Q0R0D1105\",\"eute \":\"0N3V\",euv:\"0L0N0U05110C\",euve:\"0L0T0R03\",euw:\"0R0T\",\"euw \":\"0R0V\",euwe:\"0R1B\",\"euwe \":\"0R1H\",eux:\"0L8N\",\"eux \":\"0LCV\",\"eux-\":\"0L15\",\"eux-t\":\"0L1N\",euz:\"0R020V041D0E\",euž:\"0U021B0G\",\"ev'\":\"0Q02\",evaa:\"0R0J1105\",evad:\"0O050P070U060Y081C1M\",\"evad \":\"1C3Y\",evaj:\"0V030Y0B1D15\",evaja:\"1D2Y\",evam:\"0O030P020Q0S0V030Y0A1F0O\",\"evan \":\"0O05113C\",evano:\"0Q0R\",evant:\"0L0S0O0V0P0J1002\",\"evar \":\"0O0E0P0C1D48\",evaru:\"1D3U\",evarē:\"1D1R\",evas:\"0O0A0P0311031B061C0N1O1T\",\"evas \":\"0O0B1B0C1C101O3K\",evd:\"100412031F1H1Q03\",evde:\"100512061F0X\",eved:\"0M050Q020V040Y140Z03140715071B02\",evede:\"0V090Y180Z0414021509\",evee:\"010N0R1L\",eveel:\"010P0R1R\",evei:\"0P021B0V\",eveik:\"1B1S\",evel:\"0M080O030P040R0C0Z03120E141B\",evele:\"0R021413\",evem:\"0P0I1408\",\"even \":\"0M170R6G0Z0310031F02\",\"ever \":\"0L0I0M4F0P0V0R0Q0Z0L100F120S1F0Q\",everi:\"0P1L0T030V0C0Y0M1F0K\",every:\"0M3L\",eves:\"0M030O040P040R02120514161F02\",evet:\"0Q050V0I0Z1J1005120L141J1F09\",\"evet \":\"0V0W0Z1U1005120L14081F0C\",\"evi \":\"0P040Q1L0T050V05110415041D3Y1F0C1O05\",evid:\"0M020O040P070Q030U0Z0Y1N0Z0415091O0K1P0F\",evide:\"0M030O040P020Q030Y1A150C1O0D\",evidě:\"0U0X\",evie:\"03020L0M0N020R030Y3Z1D2Y\",\"evie \":\"0Y13\",eviem:\"0Y3D\",evien:\"0L1111031D4L\",eviet:\"03041D2T\",evind:\"010I0R081F0H\",\"evis \":\"0T070Z06100412081D3Q1O1E\",evisi:\"010G0B0J0M040O0I0Q070R0A0T0A1111\",eviy:\"1F16\",eviyo:\"1F1J\",evl:\"0U03100A1F1B1Q07\",evle:\"1F11\",evli:\"100E1F0F\",evm:\"1F0T1Q08\",evn:\"0U060V0712061Q04\",evne:\"0Z02120A\",\"evo \":\"0O1B0P0G0Q3D0U030V061B021O05\",evob:\"1P17\",\"evob \":\"1P12\",evoe:\"010N0R0K\",evoel:\"010I0R0H\",evoi:\"0L0R1538\",evoie:\"153Z\",evoir:\"0L1A\",evon:\"0L0J0Q090R0L11051O02\",evond:\"0R0T\",evr:\"010C0L140R070U0B0V070Y0B1305150J1F0F\",evra:\"010J0L1A0R090U051F03\",\"evra \":\"010K0L02\",evrai:\"0L24\",evu:\"0O020Q0B1B021C0F1D0H1F041O0F\",evv:\"1Q06\",evy:\"0U0H0Y0L11041B06\",evá:\"0U030Y0H1406\",evä:\"0Y071003110Z\",evæ:\"0Z06\",evær:\"0Z0B\",evé:\"0L090O02140L\",eví:\"0U1E0Y041402\",evím:\"0U1B\",\"evím \":\"0U1Q\",evó:\"0O05\",evā:\"1D0Q\",\"evās \":\"1D1R\",evă:\"151H\",evăr:\"152A\",evăra:\"151Q\",evč:\"0Y0S\",evča:\"0Y14\",evē:\"1D1P\",evēl:\"1D1E\",evě:\"0U10\",evěd:\"0U0V\",evědě:\"0U13\",evř:\"0U0K\",ewa:\"0302040J0B0R0M020N090R041A16\",ewe:\"011K043V0M030N0F0R0L1A04\",\"ewe \":\"011L04B4\",ewee:\"010S0R10\",ewees:\"0R13\",ewel:\"0R0J\",ewer:\"010K0N040R0A\",ewh:\"03040M03\",ewi:\"010C0N0C0R051A181N0E\",ewn:\"1A12\",ewo:\"010N0M040N0A0R0L1A0A\",ewon:\"0N040R0M\",ewoo:\"010M0R17\",ewoon:\"010N0R1M\",ewor:\"010J0M070N0C0R0E\",eword:\"010I0N0H0R0I\",ews:\"0M07\",ewt:\"0306\",ewu:\"0N05\",eww:\"032Q\",ewö:\"0N05\",\"ex-\":\"0P02\",exc:\"0L0J0M0A0O0E0P0D0R020T0G150C\",exe:\"0L0B0M020P0E0T0M1005150A\",exh:\"0M02\",exis:\"0L0E0M050N040O0J0P0O0T080U0F1002151U\",exist:\"0L0O0M070N070O0O0P0U0T050U0L1002152D\",exit:\"0T0Q\",exo:\"0O020P040T05\",expe:\"0L020M0Z0N030O0F0P0E0R030T0X1002150K\",expec:\"0M0P0T0G\",expl:\"0L0N0M0E0N020O0O0P0K0R020T0B1510\",exs:\"03080T0Q\",exsp:\"0T11\",exspe:\"0T12\",\"ext \":\"03020M0W0N030U03\",extr:\"0L0B0M080N020O170P0B0R040T0M1004150G\",extra:\"0L080M040O1E0P060R030T0F1507\",exu:\"0L020O020P020T0810021504\",\"ey'\":\"0M0L1Q0M\",\"ey'r\":\"0M0L\",\"ey're\":\"0M0T\",eya:\"0D021F0P\",eyd:\"0304110513031F1C1Q0Q\",eydi:\"03041F17\",eye:\"045I0M0A0O091F7O\",\"eye \":\"04EZ0M051F4O\",eyec:\"1F2R\",eyece:\"1F3H\",eyes:\"0M0C0O04\",eyf:\"130J1F02\",eyi:\"040V1F6I\",\"eyi \":\"042O1F4X\",eyin:\"1F17\",\"eyin \":\"1F1I\",eyk:\"0D04130S1F04\",\"eyk \":\"0D06\",eyl:\"1F291Q0O\",eyla:\"1F1F\",eyle:\"1F16\",eyler:\"1F15\",eym:\"130P1Q07\",eyn:\"130V1F0E\",eyp:\"130S\",eyr:\"131H1F041Q07\",eys:\"0M021103130G1F0S\",eyse:\"1F0W\",\"eyse \":\"1F17\",eyt:\"0304110913151F02\",eytt:\"110B1319\",eyð:\"130L\",eyó:\"0O03\",\"ez-\":\"03020L3Y\",\"ez-m\":\"0L0P\",\"ez-mo\":\"0L17\",\"ez-v\":\"0L5G\",\"ez-vo\":\"0L90\",\"eza \":\"04HN0O1L0P1F0V06151C1A021D0O1O07\",ezc:\"0O08\",ezd:\"030L0U0G0V040Y0E14181A021F0F1N0M\",ezde:\"030G14151F04\",\"eze \":\"04720P030R4F0U050V051402151K1O08\",ezeg:\"0R0Q1F03\",ezegd:\"0R0Z\",ezek:\"141Y1N1Q\",\"ezek \":\"141A1N29\",ezel:\"0R0V140T\",ezelf:\"0R0W\",ezen:\"0P030R1M0U071410150K1A0A1O09\",\"ezen \":\"0R240U031410\",ezere:\"047F\",ezes:\"0P0X14061505\",\"ezes \":\"0P14\",ezet:\"0R091435\",ezett:\"1418\",ezg:\"030N0V041D0U1F02\",ezga:\"030D1D11\",ezgan:\"03031D2F\",\"ezi \":\"042Z0U0C0V071407152O1F03\",ezie:\"0N060R1C1A05\",ezien:\"0R1L1A02\",ezik:\"0V13140S\",ezin:\"0R0A0U0315081D2J1F06\",ezinu:\"1D3G\",ezio:\"0Q0R1A091O03\",ezion:\"0Q0Q1A04\",ezir:\"1O0Y\",ezira:\"1O1B\",ezk:\"0U0D\",ezl:\"03060U080Y0E1F051N0C\",ezm:\"03390U0C0Y0J14021A021F02\",ezme:\"032K0U030Y0D1F02\",ezmer:\"035F\",ezn:\"030J0U0N0V060Y08140O1A04\",ezni:\"1415\",\"ezni \":\"1415\",ezon:\"0R0K15081B021F021O1K\",ezona:\"15071B031O26\",ezp:\"0U0H0Y0I1A0H\",ezpeč:\"0U0Y0Y0Z\",ezs:\"14021F0D\",ezt:\"03030U03144L\",\"ezt \":\"0302148A\",ezte:\"142Q\",eztem:\"140Z\",ezw:\"030Q041D1A07\",ezwa:\"030K043K1A04\",\"ezwa \":\"046A\",ezz:\"031T0Q17140M1F04\",ezza:\"030W0Q0Y\",\"ezza \":\"03020Q0R\",ezzo:\"0Q0N\",ezé:\"140R\",ezó:\"0O07\",eză:\"151I\",\"eză \":\"152F\",ező:\"140J\",eß:\"0N0A\",\"eß \":\"0N06\",eße:\"0N07\",eá:\"0S1A1408\",\"eá \":\"0S0T\",eái:\"0S1P\",eáil:\"0S1L\",\"eáil \":\"0S5X\",eán:\"0S101403\",\"eán \":\"0S111402\",eão:\"0P05\",eä:\"110N\",\"eä \":\"111E\",eän:\"1109\",eäs:\"1107\",eää:\"110J\",eæ:\"0T02\",\"eæ \":\"0T04\",eç:\"0L020P0P1F1Q1N1E\",\"eç \":\"1F0W\",eça:\"0P1K\",\"eça \":\"0P11\",eçd:\"1N0A\",eçe:\"1F191N0Y\",eçen:\"1F101N17\",\"eçen \":\"1F121N1J\",eçi:\"1F1I1N10\",eçir:\"1F0Z1N12\",eçm:\"1F0L1N0D\",eço:\"0L040P19\",\"eço \":\"0P0X\",eçou:\"0P0I\",eçt:\"1F0H\",eçu:\"0L07\",eçã:\"0P0A\",eé:\"1402\",eë:\"010I0R03\",eël:\"010D\",eëls:\"010M\",\"eëls \":\"010N\",eën:\"0R03\",eí:\"0O081402\",\"eí \":\"0O04\",eía:\"0O08\",eíb:\"0O03\",eíd:\"0O05\",eír:\"0O041403\",eî:\"1502\",eï:\"0R02\",eïn:\"0R03\",eð:\"133E\",\"eð \":\"134K\",eða:\"1320\",\"eða \":\"132F\",eñ:\"0O0L1N1G\",\"eñ \":\"1N1N\",eña:\"0O0S\",\"eña \":\"0O0I\",eño:\"0O12\",\"eño \":\"0O0W\",eñz:\"1N0G\",eñó:\"0O02\",eó:\"0O03\",\"eó \":\"0O06\",eón:\"0O03\",eü:\"14031P06\",eüt:\"1P0C\",eý:\"1N8J\",\"eý \":\"1N0F\",eýa:\"1N0D\",eýe:\"1N0N\",eýi:\"1N13\",eýl:\"1N3S\",eýla:\"1N1I\",eýle:\"1N3T\",\"eýle \":\"1N49\",eýä:\"1N9S\",eýän:\"1N40\",\"eýän \":\"1N1V\",eýänd:\"1N3B\",eýär:\"1NA4\",\"eýär \":\"1N4X\",eýärd:\"1N1E\",eýäri:\"1N5Y\",eýärs:\"1N1D\",eýý:\"1N0R\",eýýä:\"1N13\",eýýäm:\"1N1B\",eā:\"0T06\",\"eā \":\"0T02\",eās:\"0T0B\",eć:\"0V2H1A14\",\"eć \":\"0V131A29\",eća:\"0V1S\",eće:\"0V1X\",\"eće \":\"0V18\",eći:\"0V14\",\"eći \":\"0V10\",eću:\"0V0V\",\"eću \":\"0V11\",eĉ:\"1O0E\",\"eĉ \":\"1O0K\",eč:\"030R0U1T0V100Y3K1B0E\",\"eč \":\"0U040V090Y0D\",eče:\"0U1F0V180Y14\",ečer:\"0U0S0V0J0Y1E\",\"ečer \":\"0U0Z0Y0S\",eči:\"0U020V0F0Y0O1B14\",ečia:\"1B13\",ečn:\"0U1J0V0H0Y0P\",ečně:\"0U0R\",\"ečně \":\"0U10\",ečo:\"0Y5D\",\"ečo \":\"0Y8S\",ečí:\"0U0B0Y0L\",ečíta:\"0Y12\",ečč:\"032I\",eď:\"0U0N0Y14\",\"eď \":\"0U1A0Y2J\",eđ:\"0V0G\",eē:\"1D04\",eēd:\"1D0E\",eĝ:\"1O0G\",eĝa:\"1O03\",eĝe:\"1O03\",eĝi:\"1O03\",eĝo:\"1O0G\",eğ:\"1F6O\",eğe:\"1F1D\",eğer:\"1F11\",eği:\"1FEV\",\"eği \":\"1F1U\",eğil:\"1F8S\",\"eğil \":\"1F7E\",eğild:\"1F2L\",eğili:\"1F1U\",eğim:\"1F35\",\"eğim \":\"1F2V\",eğimi:\"1F1B\",eğin:\"1F3E\",eğini:\"1F36\",eğiş:\"1F14\",eğl:\"1F0I\",eī:\"0T02\",\"eī \":\"0T03\",eīs:\"0T02\",eį:\"1B07\",eı:\"1L05\",eļ:\"1D0I\",eļo:\"1D0N\",eļu:\"1D0E\",eľ:\"0Y3T\",\"eľ \":\"0Y11\",eľa:\"0Y29\",\"eľa \":\"0Y3Q\",eľk:\"0Y1S\",eľm:\"0Y3F\",eľmi:\"0Y5T\",\"eľmi \":\"0Y76\",eľo:\"0Y0V\",eł:\"1A0L\",ełn:\"1A0U\",eń:\"1A0P\",\"eń \":\"1A11\",eņ:\"1D0B\",eň:\"0U0A0Y151N16\",\"eň \":\"0U0H0Y2C1N0S\",eňa:\"0Y0K\",eňi:\"1N0F\",eňz:\"1N0K\",eō:\"0T08\",\"eō \":\"0T07\",eōs:\"0T0C\",eř:\"0U10\",eře:\"0U11\",\"eře \":\"0U0V\",eří:\"0U0O\",eś:\"1A48\",\"eś \":\"1A4Z\",eśc:\"1A0U\",eści:\"1A18\",eśl:\"1A13\",eśli:\"1A1F\",\"eśli \":\"1A26\",eść:\"1A0V\",\"eść \":\"1A18\",eŝ:\"1O04\",eş:\"150A1F271N2C\",\"eş \":\"1F0T\",eşd:\"1N0L\",eşe:\"15061F0U1N0C\",eşg:\"1F0K1N09\",eşi:\"15041F1P1N20\",eşit:\"1F071N0Y\",eşk:\"1F0I\",eşl:\"1F0J\",eşm:\"1F091N0Z\",eşme:\"1F091N13\",eşt:\"150T1F0H\",eš:\"0U3O0V480Y3P1B1X1D13\",\"eš \":\"0U3V0V5Z0Y5P1B0T\",eša:\"0V0R1B081D0R\",eše:\"0U0P0V0C0Y061B02\",ešel:\"0U0T\",\"ešel \":\"0U14\",eši:\"0U050V0T0Y0E1B211D0Y\",\"eši \":\"0V041B031D0X\",ešim:\"0V051B1W\",ešimt:\"1B3F\",ešk:\"0U050V1H0Y0M1B0Z\",eško:\"0V0T1B0S\",ešt:\"0U2B0V1Y0Y1X1B0M\",ešte:\"0Y32\",\"ešte \":\"0Y3T\",ešto:\"0V20\",\"ešto \":\"0V52\",eště:\"0U3C\",\"eště \":\"0U4I\",ešu:\"1B021D1C\",\"ešu \":\"1D1N\",ešā:\"1D17\",ešām:\"1D1G\",\"ešām \":\"1D3Q\",ešė:\"1B06\",eţ:\"1504\",eť:\"0Y0V\",\"eť \":\"0Y1N\",eťa:\"0Y0H\",eŭ:\"1O05\",eŭr:\"1O07\",eź:\"1A0D\",eż:\"1A12\",\"eż \":\"1A0R\",ež:\"0U1H0V0F0Y1C1B121D0P\",\"ež \":\"0U1Q0Y1A\",eža:\"0V0B0Y0C1B0C\",eži:\"0U0O0V0E0Y121B271D15\",\"eži \":\"0V081D1E\",ežin:\"1B32\",ežina:\"1B2V\",ežino:\"1B3D\",ežit:\"0U0T0Y15\",ežs:\"1D0E\",ežu:\"1B031D0E\",eží:\"0U0B0Y0M\",ežā:\"1D0N\",eǧ:\"030D\",eș:\"152L\",eșe:\"150Y\",eși:\"150V\",eșt:\"1580\",ește:\"155Z\",\"ește \":\"156F\",ești:\"157J\",\"ești \":\"1598\",eț:\"1513\",eți:\"1538\",\"eți \":\"1544\",eɛ:\"030X\",eɣ:\"039K\",\"eɣ \":\"03KY\",\"eɣ-\":\"0326\",eɣr:\"031H\",eɣs:\"032H\",eε:\"0306\",eн:\"1L06\",eḍ:\"033K\",\"eḍ \":\"0381\",eḥ:\"031K\",eḥw:\"032D\",eḥwa:\"032F\",eḥwaj:\"0355\",eṛ:\"0315\",eṛṛ:\"031V\",eṛṛus:\"032X\",eṣ:\"0307\",eṭ:\"030R\",eṭṭ:\"032F\",eẓ:\"0313\",eẓr:\"031Z\",\"f-\":\"030A1P0E\",\"f-l\":\"1P0Q\",\"f-li\":\"1P0X\",\"f-li \":\"1P12\",faa:\"0B021102\",\"fac \":\"0T06152W\",faca:\"0P050S0Z\",\"faca \":\"0P060S41\",facc:\"0Q1B\",facci:\"0O020Q1B\",\"face \":\"0L0I0M0I0P02154Z\",facen:\"0Q0Q\",facer:\"0T1V150G\",fach:\"0N0Y\",faci:\"0L0N0M020O040P070Q0J0T52151S1O18\",\"faci \":\"1528\",facia:\"0T0Y\",facie:\"0T1K\",facil:\"0L130O050P080Q0J0T0V1O2F\",facit:\"0T15\",fact:\"0L050M090O050T2C1507\",factu:\"0L040O020T1D1505\",facă:\"151Y\",\"facă \":\"152I\",fade:\"0Z02100J1F08\",\"fade \":\"100F1F09\",fadh:\"0S0Z\",fae:\"1203\",fag:\"030Q1406\",fah:\"0N0S\",fahr:\"0N1W\",fahre:\"0N1W\",fai:\"0L8Y0M0A0Q090S3615041F02\",faid:\"0S2R\",faidh:\"0S9H\",fair:\"0L6E0M09\",faire:\"0LAH\",fais:\"0L27\",\"fais \":\"0L1X\",fait:\"0L6J0M02\",\"fait \":\"0L8X\",faite:\"0L1N\",faj:\"0Y0C14041A041O08\",fakt:\"0B030N020U040Z07100J1102120I1A061B051F041O0G\",fakti:\"0Z06100F12091B02\",fala:\"0P3R14071F031O03\",\"fala \":\"0P0X\",falar:\"0P2M1F03\",fald:\"0O030Z0U130B\",faldt:\"0Z0J\",fale:\"03020P0J0R020U030Z04\",fall:\"0L080M090N1E0O060Q0B0T04100M120E1319\",falle:\"0M020N150O04100712061322\",falo:\"0P0K14021O02\",falt:\"0N020O0N0P0G12071305\",falta:\"0O0S0P0J\",famí:\"0P0J\",\"fan \":\"032U0M050Q021007130I1F02\",fana:\"0S0M1O04\",fand:\"0N0A0T030Z0P130B\",fandt:\"0Z0S\",fang:\"0N0O0Q020Z0B1206130P\",fange:\"0N0S0Z0D1206130B\",fann:\"0Q0D100F130J\",fano:\"1O17\",fanoj:\"1O1L\",\"fant \":\"03080L120R020Z04120L\",fants:\"0L2D\",fao:\"0S2B\",faoi:\"0S2T\",\"faoi \":\"0S5X\",faoin:\"0S5P\",\"far \":\"03040M0B0Q060S1C0Z1H1010120F130F\",\"fara \":\"1004138J\",faran:\"046A0Q0310161O05\",faras:\"1O1J\",fare:\"03050P080Q610Z0B1005120Y1F031O06\",\"fare \":\"0Q5J0Z0712071F021O03\",faren:\"03080Z041005120R1O08\",farg:\"120B\",\"fari \":\"0Q0M1O3F\",faris:\"03041O27\",fark:\"1103140B1F1C\",farl:\"0Q1M0Z0D1008120C\",farli:\"0Z0F1008120C\",farlo:\"0Q1E\",faru:\"1O0N\",farv:\"0Z0I\",farve:\"0Z0L\",fash:\"044M0M02\",fasha:\"045L\",\"fat \":\"03090M030Z0210051F021P1V\",fata:\"030204540T06150D\",\"fata \":\"048E0T06150G\",fath:\"0M0Q\",fathe:\"0M0Z\",fatt:\"0Q470Z0K100R120J\",fatta:\"0Q0C100G\",fatte:\"0Q030Z08120C\",fatti:\"0Q090Z0G10071208\",fatto:\"0Q3M\",fau:\"0L1I0M020N02\",faut:\"0L25\",\"faut \":\"0L2W\",faz:\"03020P6B1F1Q\",\"faz \":\"0P17\",faze:\"0P6B\",fazen:\"03020P12\",fazer:\"0P6M\",fazl:\"1F1Y\",fazla:\"1F2N\",faç:\"0L080P0T\",faça:\"0P0O\",fað:\"130X\",faț:\"150I\",fbr:\"0Z02\",fd:\"01070R0L\",\"fd \":\"0R0A\",fde:\"010B03050R0F\",\"fde \":\"010Q0R1G\",fds:\"0R05\",fea:\"0M050S3K0T03150L\",fear:\"0M050S3I\",\"fear \":\"0M050S7Z\",fearr:\"0S5G\",fece:\"0Q0H0T0O\",fech:\"0O070P0I\",feci:\"0Q040T20\",fecit:\"0T12\",fect:\"0L0E0M0E0O0M0R0A0T1D150W\",fed:\"030G0M020P020Q030Z0214051F08\",fee:\"0M0S0N060R06\",feel:\"0M0X\",\"feel \":\"0M0S\",fees:\"0R0L\",feest:\"0R0T\",feg:\"030213051405\",feh:\"03080N0D1409\",fehl:\"0N0X\",feic:\"0S0X\",feil:\"1102121I\",\"feil \":\"1213\",feir:\"0P0G0S0O\",feit:\"0O020P1B0R05\",feito:\"0P18\",fej:\"0Z0B14111O02\",feje:\"0Z02141L\",fejez:\"1412\",fejl:\"0Z0Q1409\",\"fejl \":\"0Z0Q\",fekt:\"0N060U030V030Z07100C120E14051A021O0I\",fele:\"0T1D14421503\",felej:\"141B\",feles:\"0T11141E\",felic:\"0O0H0P070Q1D0R030T0B1505\",feliz:\"0O0Y0P1L\",feliĉ:\"1O1R\",fell:\"033N0M0A0N02121513071404\",\"fell-\":\"036P\",felle:\"030212151402\",felt:\"0M0H0N030Z031205140V\",\"felt \":\"0M0O0N03\",felé:\"1414\",\"fem \":\"03080U020Z0O100H120G1A03\",femi:\"0T190Z02\",femin:\"0P020T1B0Z031103\",femm:\"0L1I0Q02\",femme:\"0L2K\",\"fen \":\"030S0N4J0R0D0Z0C100512091F1S1P0J\",feng:\"120A130Z\",fera:\"0L0V0O030P030Q020T0B1002150M1F031O0F\",ferd:\"0N09121C\",ferdi:\"120X\",feric:\"152E\",ferie:\"0L060N050Z0C120D\",ferit:\"0Q0Z150T\",ferm:\"0L0V0O0S0P040Q0X0T0215091O0V\",fero:\"0L030O030P020Q030T071O17\",ferr:\"03050M020O020P070Q050T0U\",ferð:\"1326\",feso:\"0O0R0Q020U0215131A021B021O03\",fesor:\"0O100U0315161A041B051O04\",fess:\"03080L0M0M060N040P130Q0V0R040T160Z03100211031403\",fesso:\"0M020N040P1C0Q0Q0R040T020Z021107\",festa:\"0L020O030P0Q0Q0O1O04\",\"fet \":\"03020L040Z05100612091F02\",fett:\"0N020Q0N1F03\",feu:\"0L0G0N05\",fev:\"0P02\",few:\"0M09\",\"few \":\"0M0G\",fez:\"0P14\",\"fez \":\"0P1D\",feɣ:\"031F\",\"ff \":\"0M0N0N0610021205\",ffa:\"030E0L0I0M020Q0R10161103\",\"ffa \":\"100J\",ffad:\"100J\",ffade:\"100I\",ffai:\"0L0N0M03\",ffar:\"0Q0N1005\",\"ffe \":\"0L040N0I0Z15100P120L\",ffek:\"0Z031004120B\",ffen:\"0L030M030N1J0Q020R0B0Z0B10041209\",\"ffen \":\"0N1V0R0D0Z0710021205\",ffere:\"0M0S0Q0A0T031103\",ffic:\"0L130M0W0Q1E0R040T1Q0Z031002\",ffici:\"0L1E0M060Q180R050T1L0Z031002\",ffie:\"010Y0R0Q\",\"ffie \":\"01100R0X\",ffl:\"0L050T03\",ffn:\"0N08\",ffo:\"0L070M030Q04\",ffr:\"030B0L0K0Q0B0T03\",fft:\"0N06\",ffu:\"030N0L020T051F02\",ffä:\"1008\",ffè:\"0Q0E\",\"ffè \":\"0Q0N\",ffé:\"0L0F\",ffø:\"0Z02\",fg:\"01050N0A0R050Z02\",fga:\"0N05\",fge:\"01090N0A0R07\",fh:\"010403030N030S2W0Z02\",fha:\"03030S13\",fhe:\"03030S1P\",fhea:\"0S0M\",fhei:\"0S1A\",fheic:\"0S4R\",fhi:\"03040S2F\",fhio:\"0S2P\",fhios:\"0SAC\",fho:\"0S1I\",fhu:\"0S0I\",fhá:\"0S0Y\",fhái:\"0S0T\",fháil:\"0S32\",fhæ:\"0Z02\",fhé:\"0S0M\",fiata:\"1415\",fica:\"0L080M030O0Z0P3M0Q0U0T14150N\",\"fica \":\"0O0H0P190Q0D0T02\",ficar:\"0O060P280Q030T02\",fice:\"0L040M0E0T0J0Z0215061O07\",ficie:\"0L0A0M020O0U0P0K0Q070T0C0Z031002150L\",ficil:\"0L1A0Q0O0T0Z150K\",fick:\"101R1404\",\"fick \":\"101N\",fico:\"0O0D0P120Q09\",ficou:\"0P0Z\",ficu:\"0L050M0D0O040P060T0A1508\",fida:\"0Q0T1O05\",fidh:\"0S1Y\",\"fidh \":\"0S7R\",fido:\"0Q021O041P3O\",fidob:\"1P0Z\",fidom:\"1P1Q\",fidö:\"1P11\",fidön:\"1P15\",\"fie \":\"010Y0L0A0Q030R0Q0U02152J1A02\",fiec:\"151I\",fieca:\"151V\",fien:\"10061209\",fier:\"0L0I0O0I0Q0B0T0E1002150C1O06\",fies:\"0O0M\",fiest:\"0O0T\",fiet:\"0R0J0T02\",fif:\"03040M021F05\",figl:\"0Q19\",figli:\"0Q19\",figy:\"141I\",figye:\"141L\",fii:\"151C\",fij:\"0O030R020V031B021D11\",fiju:\"1D0U\",\"fiju \":\"1D25\",\"fik \":\"0B040Z0P1F061P2M\",fikk:\"1214\",\"fikk \":\"120Y\",fiko:\"0U0210031A021O041P1F\",\"fiko \":\"1O041P1J\",fiku:\"1P1Q\",fikul:\"1P1T\",filh:\"0P1P\",filho:\"0P1M\",filia:\"0T1F\",filii:\"0T10\",filio:\"0T10\",filiu:\"0T1G\",fill:\"0L170M05\",fille:\"0L210M04\",fim:\"0P0F130K15051F02\",\"fim \":\"0P0I1508\",\"fin \":\"030D0L0U0O0H0Q020V0310041209130E1F02\",final:\"0L0F0M0C0O0T0P0N0Q0A1509\",find:\"0M0W0N1D0Z15\",\"find \":\"0M140Z02\",finde:\"0N250Z1C\",fine:\"0L020M080O030Q100T0812061O0G\",finis:\"0L070M0N0Q050T051O09\",finn:\"0L020N021027121U132814051O02\",finne:\"0Z021002121S\",finns:\"10201321\",fino:\"0Q0L14091O0B\",fint:\"0Q061004120E\",\"fint \":\"03020Z021004120E\",fio:\"0P060Q091O02\",fiq:\"0L080P0L\",fiqu:\"0L0D0P0Q\",fique:\"0L0M0P0X\",\"fir \":\"030I131S\",fire:\"03070L020M0G0Z0J120D\",\"fire \":\"0M0C0Z0J120D\",firs:\"0M0W0Z03\",first:\"0M18\",fise:\"04LR\",\"fise \":\"04SB1F02\",fish:\"0M0C\",fisk:\"0Z0M100K120H130E\",\"fisk \":\"0Z0H10081209130E\",fiu:\"0Q0C1511\",fiv:\"0M051404\",fix:\"0L020M040P020T021003\",fiy:\"03021F0A\",fiz:\"0P0U0V04140M15051A021B021F03\",fize:\"0P0L141H\",fizet:\"141H\",fié:\"0L05\",fið:\"131C\",\"fið \":\"131S\",fiú:\"0S0M140F\",fiĉ:\"1O0F\",fiŝ:\"1O08\",fj:\"0Z0910041209130N\",fja:\"130L\",fje:\"0Z0C1209\",fjel:\"120D\",fjell:\"120D\",fjer:\"0Z0Q120A\",fjern:\"0Z0O1209\",fjo:\"0Z0210021204\",fjor:\"0Z04120B\",fjä:\"1009\",fjö:\"130I\",fk:\"031N0B021F03\",\"fk \":\"033J\",fka:\"030U0B04\",flas:\"0M020N050Z0A1006120A\",flen:\"0T031P6A\",\"flen \":\"03021P2I\",fleni:\"1P15\",flens:\"1P17\",flent:\"1P25\",fler:\"0L020T060Z0U100H120Z1F03\",flere:\"0T060Z0R120R\",fles:\"03020Q020R080Z081004120G130A\",flest:\"03040Z0A1004120F130L\",flic:\"0L020M020N0C0O020T03100P\",flick:\"100P\",flin:\"1002120C\",flink:\"120C\",flod:\"0Z0D1006\",flore:\"0O0I0P0L0T0V\",flum:\"0T0Y\",fly:\"0M030Z0I100X120L1305\",flye:\"0Z03120B\",flyg:\"0Z04100N\",flyt:\"0Z0C100F120L1308\",flytt:\"0Z0E100A120C\",flyv:\"0Z0E\",flyve:\"0Z0H\",flé:\"0L08\",flö:\"100513081F02\",flø:\"0Z031202\",flý:\"130K\",flō:\"0T02\",fm:\"0N021304\",fn:\"0N06131C\",\"fn \":\"130I\",fna:\"130T\",fne:\"0N06\",fni:\"130U\",\"fo \":\"0O050P040Q051O0A\",foa:\"153X\",foar:\"155X\",foart:\"157F\",fob:\"1P2W\",\"fob \":\"1P33\",foc:\"0P020S1014021507\",foca:\"0P020S0X\",focal:\"0S3J\",fod:\"0T030Z0C\",fodb:\"0Z0B\",fodbo:\"0Z0D\",foe:\"0T0D\",fof:\"1P0X\",\"fof \":\"1P15\",fog:\"0P0B0Q050S1E1446\",\"fog \":\"1423\",foga:\"141N\",fogad:\"1414\",fogh:\"0S1P1402\",foghl:\"0S6U\",fogl:\"0Q07141B\",fogla:\"141C\",fogo:\"0P0A1426\",fogok:\"140Z\",foi:\"0L1A0P44\",\"foi \":\"0L020P4Y\",fois:\"0L20\",\"fois \":\"0L3D\",foj:\"1O0V\",foje:\"1O0T\",\"foje \":\"1O1M\",fok:\"0V021404\",\"fol \":\"1P1N\",folg:\"0N0W0P02\",folk:\"0Z0M100K121I\",\"folk \":\"0Z0E100B1214\",folos:\"151P\",foly:\"1426\",fom:\"0P0D1P3A\",\"fom \":\"1P3A\",\"fon \":\"0N080U0B0V070Z0K10091407150H1A0B1F0E1O0B\",fond:\"0L0T0O050Q0H15061F031O02\",fone:\"041D0P0G0Q020R020Z0D1007120B\",fono:\"0O0I0Q0H0U02140B1B071O0C\",font:\"0L0G0P040Q020T0514191O04\",fonto:\"14141O06\",foo:\"010A0L040M0G0R06\",food:\"0M0G\",\"food \":\"0M0L\",foon:\"010N0R0L\",\"foon \":\"010P0R0J\",fop:\"1P0B\",\"for \":\"0M7K0P070ZD5100212E21O07\",fora:\"0P1D0T070Z0H120F1O02\",\"fora \":\"0P0T\",foram:\"0P0X\",foran:\"0Z0K120F\",forb:\"0Z0Z1215\",forbe:\"0Z05120D\",forbi:\"0Z0D120A\",fordi:\"0Z0Q120V\",fordí:\"1411\",fore:\"0M1D0Q030T0P0Z171222130R1O06\",\"fore \":\"0M1E0T0K1O02\",forel:\"0Z0E1215131L\",foret:\"0Z0H1209\",forf:\"0T020Z0D120N\",forg:\"0M0O0Z081209140A1O0L\",forh:\"0Z0G120L\",fori:\"0T0G14031O0T\",fork:\"0Z0S120U1O04\",forke:\"0Z0D\",forkl:\"0Z0D120O\",forl:\"0Z0K120H1O0C\",forla:\"0Z0E120A1O0O\",forr:\"0Z09120E140I\",fors:\"0N040Q0L0T040Z331006123Y1305\",forsi:\"0T030Z0B120F\",forsk:\"0Z0Q1004120Y\",forst:\"0Z1L121T\",forsv:\"0Z0D120C\",forsø:\"0Z0M1208\",\"fort \":\"0L120M040N0M100B120M1506\",forta:\"0L040M050O030P020R020T080Z0Y120W1O0S\",forte:\"0L0C0P0J0Q0J0T0F12131A061O0C\",fortf:\"1015\",forts:\"0L0A0M020N060Z07100C1219\",fortæ:\"0Z0W\",forv:\"0Z0E120H13071O04\",forå:\"0Z09\",foræ:\"0Z0P\",foræl:\"0Z0T\",forç:\"0P0I\",\"fos \":\"0O020P021B071O021P0R\",foss:\"0P0K0Q12\",fosse:\"0P0P0Q0U\",fost:\"0P030Q02100215B1\",\"fost \":\"15DN\",fotb:\"0U0610061209150A\",fou:\"0L0M0M0L0R070U03\",foun:\"0M0R\",found:\"0M10\",fout:\"0L040R0P\",\"fra \":\"03070Q0G0Z34123O\",frag:\"03030L020N1M0O020Q020T0A15041O02\",frage:\"0N1S\",frai:\"0L090M0H0S0V\",fraid:\"0M0N\",frain:\"0S3A\",fram:\"1017120C132G\",\"fram \":\"100J1206132I\",frans:\"03090R1T0Z1V1016120S1F2E1N3Q1P14\",franç:\"0L2B0P0A\",fras:\"0O0L0P0J0Q0R\",frat:\"03020Q0V0T2K150Q1O0X\",frate:\"0Q0U0T12150X\",fratr:\"0T1O\",frau:\"0N1A0T02\",\"frau \":\"0N1O\",frea:\"0M020S0X\",freag:\"0S3A\",free:\"0M0D\",frem:\"03050N080Z1112191O07\",fremm:\"0Z0C120C\",fren:\"03070M180O0G0P0G0Q031F021O0A\",frenc:\"0M1O\",freu:\"0L020N2C0P02\",freun:\"0N2Z\",\"fri \":\"0Z0910051208\",frie:\"0M1H0N0H0R040Z03\",frien:\"0M20\",frig:\"0L040M030O030P020Q050T0R150H\",frih:\"0Z051005120A\",fris:\"0N0A0R040Z081008120B140A\",frit:\"0L020O020P020Q030Z08100512091O02\",from:\"0L040M2W1O03\",\"from \":\"0M3Z\",\"fru \":\"0309100F\",fruk:\"100K12091O08\",frum:\"0T05130A151V\",frumo:\"1525\",frut:\"03060O0J0P0A0Q09\",fry:\"0Z04100412041A04\",fryg:\"0Z08\",frá:\"131L\",\"frá \":\"1328\",frä:\"1007\",frå:\"1032\",fråg:\"101F\",fråga:\"1014\",från:\"102T\",\"från \":\"102P\",fræ:\"1315\",fræði:\"1327\",frè:\"0L0G\",frèr:\"0L0R\",frère:\"0L1A\",fré:\"0L04130C\",frí:\"0O0E0Y05130F\",frö:\"10041308\",frø:\"0Z02\",frü:\"0N0F\",früh:\"0N10\",frā:\"0T03\",\"fs \":\"01080L0C0N020R041P0S\",fsk:\"0Z02\",fsl:\"0Z03\",fsp:\"0R02\",fst:\"01080N060R040Z04130E\",fsta:\"010H0R060Z02\",fste:\"0N040R020Z08\",\"fta \":\"101113071F15\",fte:\"03020M0Z0N0G0R030Z221021120U1F051O0J\",\"fte \":\"0N0M0R060Z0T100A12161O0U\",fted:\"0M020Z09\",ften:\"0M0L0N0B0R040Z101009120C\",\"ften \":\"0M0S0N0J0R060Z0V1009120B\",fter:\"0M150N040Z30102712081F02\",\"fter \":\"0M170N050Z2Q101O1206\",ftes:\"0Z0B\",ftet:\"0N030Z0A120D\",\"ftet \":\"0N040Z0C120D\",fth:\"0Z02\",fti:\"030C0N080R040V030Z0410041202132P15061F02\",ftig:\"0N0J0R080Z0A10061206\",ftir:\"133M\",\"ftir \":\"136Q\",fts:\"0N03\",ftu:\"131H1504\",ftur:\"1324\",\"ftur \":\"134F\",\"fu \":\"030J0Q0C0V051309\",fua:\"0S1N\",fuai:\"0S16\",fuair:\"0S4I\",fuc:\"0M02\",fue:\"0O3X0T0E\",\"fue \":\"0O3E\",fuer:\"0O2D0T0R\",fuera:\"0O1B0T04\",fug:\"03040L020O030P070Q040T0I0Z0912041309150E\",fugl:\"0Z0P120B130A\",fugle:\"0Z0L1206\",fui:\"0L060O0I0P0L0S9P0T1E\",\"fui \":\"0L020O0H0P0P0T08\",fuil:\"0SBI\",\"fuil \":\"0SSC\",fuis:\"0O050T10\",fuit:\"0L030T1G\",\"fuit \":\"0L030T1I\",\"ful \":\"0M151003150E\",fuld:\"0Z12\",\"fuld \":\"0Z0S\",full:\"0M0G100Z1216130W1404\",\"full \":\"0M0A100I120K130B\",fum:\"03030L0C0O0B0P0D0Q0B0T08130Q150H1O07\",\"fum \":\"03021317\",funde:\"0N0O0P020T040Z0K10041O07\",fung:\"042D0B040N090T0E0U0C0Z04100C\",fungu:\"04410U0B\",funn:\"0M04120L1306\",funne:\"120H\",fuo:\"0Q0L\",fuor:\"0Q0S\",fuori:\"0Q0R\",\"fur \":\"03020T041348\",\"fut \":\"03040L0T1404\",fuy:\"0303040H\",fuz:\"041N150A1F021O07\",fuza:\"044M15091O03\",\"fuza \":\"0483\",fuß:\"0N06\",fuĝ:\"1O03\",fw:\"0R02\",fy:\"03020Z08100712081330\",\"fy \":\"0M02\",fyi:\"0303\",fyl:\"0Z0410081205130K\",fyld:\"0Z0C\",fyll:\"100B12091307\",fyr:\"0Z07100C12041363\",fyri:\"1381\",fyrir:\"13FN\",fyrs:\"1316\",fyrst:\"132I\",fys:\"1203\",fz:\"0N04\",fzu:\"0N04\",fá:\"0O060P050S0S0U08130J140P\",\"fá \":\"0O020P03130N\",fáb:\"0O020P02\",fác:\"0O0G0P0F\",fáci:\"0O0P0P0H\",fácil:\"0O0W0P0M\",fái:\"0S0I1304\",fáil:\"0S0M\",fáj:\"140D\",fám:\"0U0G\",fár:\"140E\",fát:\"0S1213071404\",fáth:\"0S1A\",\"fáth \":\"0S58\",fâ:\"1504\",fân:\"0P03\",fä:\"0N0I100J1P07\",fäh:\"0N0B\",fäl:\"0N0C1008\",fän:\"0N041006\",fär:\"1014\",färd:\"100L\",färdi:\"100I\",få:\"0Z0L1012120R\",\"få \":\"0Z0G1010120N\",fåe:\"0Z06\",fået:\"0Z0G\",\"fået \":\"0Z0K\",fåg:\"100B\",fån:\"1009\",får:\"0Z0A1019120G\",\"får \":\"0Z0R101P1212\",fåt:\"100B1205\",fått:\"100E120D\",\"fått \":\"100E120D\",fæ:\"0Z0D1202130O\",fæd:\"1309\",fæl:\"0Z05\",fæn:\"0Z04\",fæng:\"0Z0A\",fær:\"0Z091202130S\",færd:\"0Z0L\",færdi:\"0Z0H\",fæt:\"0Z02130C\",fè:\"0L020Q04\",\"fè \":\"0Q0E\",fèr:\"0L09\",fé:\"0L090O050P070S1Y130I141H\",\"fé \":\"0L0E0O0F0P0L1303\",féa:\"0S10\",féac:\"0S0Q\",féach:\"0S32\",féi:\"0S51\",féid:\"0S3Z\",féidi:\"0SEM\",féin:\"0S24\",\"féin \":\"0S87\",fél:\"0L02130L1419\",fén:\"140C\",fér:\"0L0S0P07140Z\",fére:\"0L0W\",féren:\"0L19\",férf:\"141A\",férfi:\"141C\",fê:\"0L02\",fêt:\"0L0C\",fí:\"0O0A0P070S0B0Y031303\",fía:\"0O07\",fíc:\"0O0I0P0T\",fíci:\"0O0S0P0X\",fícil:\"0O110P0V\",fío:\"0O020S0M\",fís:\"0O030P04\",fð:\"1310\",fði:\"131E\",\"fði \":\"131I\",fðu:\"130S\",\"fðu \":\"1313\",fó:\"0S0B0Y021315\",fól:\"1310\",fólk:\"131M\",\"fólk \":\"1328\",fón:\"0O020Y05\",fór:\"0P02131A\",\"fór \":\"131N\",fós:\"0S0I\",\"fós \":\"0S0M\",fö:\"106R130K140K1P26\",föd:\"100G\",fög:\"1P0Z\",föge:\"1P16\",föget:\"1P1D\",föl:\"100S1305140Z\",föld:\"141S\",följ:\"100R\",fön:\"10081P2W\",\"fön \":\"1P3N\",för:\"10G8130C1F02\",\"för \":\"10CB\",förb:\"100M\",före:\"1013\",förk:\"100M\",förkl:\"100F\",förl:\"100Z\",förlo:\"100I\",förr:\"100R\",förs:\"104Q\",först:\"102D\",försö:\"101G\",fört:\"100E\",förv:\"100K\",förä:\"100U\",föräl:\"100M\",föt:\"1003130A\",fø:\"0Z16121K\",fød:\"0Z0E1207\",føds:\"0Z0B1204\",fødse:\"0Z0D1204\",født:\"0Z0K120C\",\"født \":\"0Z0K120B\",føj:\"0Z02\",føl:\"0Z0G120W\",føle:\"0Z0G1215\",følel:\"0Z04120C\",føler:\"0Z0C120M\",følg:\"0Z0L120W\",følge:\"0Z0N120R\",følt:\"0Z04120A\",før:\"0Z0Z121F\",\"før \":\"0Z11121J\",føre:\"0Z0B120G\",førs:\"0Z13121A\",først:\"0Z1A1217\",ført:\"0Z07120B\",fú:\"0O021403\",fút:\"0O06\",fü:\"0N1X140E1P0C\",füh:\"0N0M\",fün:\"0N07\",für:\"0N201407\",\"für \":\"0N4K\",fă:\"1519\",făc:\"1532\",făcu:\"154Q\",făcut:\"155X\",făr:\"1519\",fără:\"1522\",\"fără \":\"152M\",fē:\"0T05\",fēc:\"0T08\",fēl:\"0T02\",fēm:\"0T02\",fīl:\"0T02\",fı:\"1F0P\",fın:\"1F10\",fınd:\"1F0Y\",fında:\"1F1A\",fır:\"1F0J\",fľ:\"0Y02\",fő:\"140J\",főn:\"140B\",főz:\"140B\",fœd:\"0T03\",fű:\"1403\",fɣ:\"0308\",fṛ:\"030D\",\"g'\":\"1Q05\",\"g's\":\"0M02\",\"g-a\":\"030A0D0T\",\"g-aa\":\"0D0M\",\"g-aar\":\"0D0P\",\"g-ar\":\"0D0F\",\"g-ara\":\"0D0R\",\"g-b\":\"0B07\",\"g-d\":\"03020D02\",\"g-e\":\"0D02\",\"g-h\":\"0D03\",\"g-i\":\"03070D0F\",\"g-ii\":\"0D07\",\"g-in\":\"0D07\",\"g-is\":\"0D08\",\"g-k\":\"03030B04\",\"g-m\":\"0302\",\"g-o\":\"0B07\",\"g-s\":\"030K0B02\",\"g-u\":\"0D0B\",\"g-us\":\"0D0C\",\"g-usa\":\"0D0M\",\"g-w\":\"0305\",\"ga'\":\"1Q03\",\"ga-\":\"030A0B030D040P07\",gaa:\"01470B020D080R1S1104\",gaan:\"01960B050D0F0R4E1106\",\"gaan \":\"019N0B090D090R5R\",gaano:\"0D0I\",gaat:\"0R29\",\"gaat \":\"0R31\",gaba:\"041D0D040O040T021B051N0Z\",gabi:\"0D0G0T021402\",\"gabi \":\"0D0R\",gach:\"0S4F1A02\",\"gach \":\"0SG11A04\",\"gad \":\"030H0D030Z041006140W1C0G1D1H1P0E\",gade:\"030C0R0A0Z0B100V\",\"gade \":\"0Z02100U\",gadh:\"0S131404\",\"gadh \":\"0S4I\",gado:\"0D030O130P1E140C1O08\",\"gado \":\"0D050O110P1A1O0B\",gads:\"1D0Z\",gadsi:\"1D2F\",gadu:\"1D0X\",gadā:\"1D1L\",\"gadā \":\"1D43\",gae:\"0S10\",gaei:\"0S18\",gaeil:\"0S4Z\",gaf:\"03050O030R07130J\",\"gaf \":\"0R0R130M\",gaga:\"03020B0A0D0U\",gagaw:\"0D10\",gagn:\"0L0N130G\",gah:\"044E0B080D031N0M\",gaha:\"04A10D041N0S\",\"gaha \":\"04G3\",gahe:\"042D\",\"gahe \":\"043C\",\"gai \":\"0B1614031B2G\",gaid:\"14031B021D20\",gaidī:\"1D3Q\",gail:\"1B0V\",gaim:\"0B1M1402\",gaima:\"0B36\",gain:\"0M1E0S0V\",\"gain \":\"0M1H\",gainn:\"0S3J\",gair:\"0S0Q\",gais:\"0L0311061B0H1D1N\",gaism:\"1D1W\",gait:\"14021B0Q\",gaj:\"0B0F0V02150A1A041F021O0J1Q07\",gaja:\"0B0N15071O03\",gak:\"0B0K0D031402\",\"gak \":\"0B0N\",galan:\"0B0T0D0U1N0N1O02\",galar:\"0O021F021N2H\",galb:\"15061B0Y\",gald:\"1D0W1N18\",galdy:\"1N1O\",\"gali \":\"03030Q0411021B7V\",galim:\"1B4B\",galin:\"0D1I0P041B09\",galit:\"03140D0G0L031B15\",galiu:\"1B61\",galk:\"0B0O\",galka:\"0B1B\",gall:\"03020O090Q100T2G1F021N0X\",galli:\"0O040Q020T2D\",gally:\"1N19\",galm:\"140N1N14\",galma:\"140M1N1G\",galv:\"1B3W1D17\",galvo:\"1B6V\",galė:\"1B2R\",galėj:\"1B2G\",galėt:\"1B1S\",\"gam \":\"03050B040D020P080S9K0T0J14161A031B02\",gamb:\"041K0B0Y0Q081402\",gami:\"0D0L0L021A041B0N\",gamit:\"0D13\",gaml:\"0Z0H100J120I1309\",gamla:\"100I130E\",gamle:\"0Z0L1002120I\",gamm:\"0Z0X100T120Y1403\",gamma:\"100S1403\",gamme:\"0Z14120Y\",gana:\"046I0D0C0O110P06130B1B0I1F02\",\"gana \":\"04B60D060O06130O1B0Z1F02\",gandr:\"1D2K\",gane:\"0302041V0O02\",\"gane \":\"043C0O02\",\"gang \":\"010G0B0O0D2N0N0F0R0H0Z28121U130E\",gange:\"0N190R020Z0S1213\",ganh:\"0P0O\",ganir:\"0459\",ganm:\"0B0Q\",ganmu:\"0B1G\",gann:\"0B0U0N060Q05130F\",ganny:\"0B1N\",gano:\"0D0A0O030P030Q051O02\",ganoo:\"0D0I\",gans:\"0T020Z04100G120P\",gansk:\"0Z04100F120P\",gany:\"043O0B0H0D071N0P\",ganya:\"04410B0X0D0C\",ganz:\"0N1O\",gao:\"0V1O\",\"gao \":\"0V20\",\"gap \":\"0B060D071N17\",gapa:\"0B140D03\",\"gapa \":\"0B1X\",gapy:\"1N1I\",\"gara \":\"030N049C0B1O0O030Q0415071F0F1O02\",garaş:\"1N3E\",gard:\"0L2S0M09100315041A041B031O1C\",garde:\"0L2Z0M0A1O03\",\"gare \":\"0L0K0Q0J0T06100P\",\"gari \":\"043C0Q03130C\",gark:\"0B0J1A06\",garn:\"100L130F1A05\",garna:\"100L130L\",garo:\"0O080P0N0Q021B03\",garot:\"0P0P\",garu:\"030D043R0B07\",garuk:\"044X\",garš:\"1D1H\",garšo:\"1D25\",gasi:\"0D020L0A0V021A021C1V\",\"gasi \":\"1C42\",gast:\"0D030N030O0C0P0B0R051006132N1O06\",\"gast \":\"0N020R02134R\",gatak:\"0B1G\",gatan:\"042S0D041006\",gatav:\"1D4L\",gato:\"042R0O0U0P0M0Q0M1002140Q\",\"gato \":\"04470O0R0P0K0Q0K\",gatt:\"0Q0P1102140M\",gaty:\"14021A071N3A\",\"gaty \":\"1A0A1N48\",gau:\"0B020L060T0D13031B1A\",gaud:\"0T0O1B06\",\"gav \":\"0Z12100V120A\",gave:\"0M0M0R050T030Z0M120L130H\",\"gave \":\"0M0V0R020Z0G1209\",gavi:\"0T10\",gavit:\"0T0S\",\"gaw \":\"0D06\",gawa:\"0B040D151102\",\"gawa \":\"0D1U1102\",gawi:\"0D18\",gawin:\"0D2A\",gay:\"0305040L0B020D1D1F04\",\"gay \":\"0D130R02\",gaya:\"0B030D07\",gaye:\"0303041O\",\"gaye \":\"042Z\",gayo:\"0D18\",gayon:\"0D29\",gaza:\"0O0214111N10\",gazda:\"1410\",gazz:\"0Q1D\",gaç:\"0P061F031N13\",gað:\"1315\",\"gað \":\"131D\",gañ:\"0O06\",gaý:\"1N1C\",gaŭ:\"1O0F\",\"gaŭ \":\"1O0N\",gba:\"03030D0D140J\",gbab:\"0D0A\",gbaba:\"0D0I\",gban:\"1414\",\"gban \":\"1416\",gbe:\"0D02140D1Q0G\",gbi:\"0D08\",gbo:\"030210031405\",gbu:\"0D03\",gc:\"0S1K14091Q06\",gca:\"0S0N\",gce:\"0S0W\",gcea:\"0S0V\",gco:\"0S0Y\",gcr:\"0S0P\",gcs:\"140G\",gcó:\"0S0W\",gcón:\"0S0Z\",gcóna:\"0S41\",\"gd \":\"0R0M10061403\",gdag:\"0D08\",gde:\"03020D020R0B0V1I0Z0T100K1205\",\"gde \":\"0R120V1U0Z21100N1209\",gdi:\"03050D04130A1Q04\",gdo:\"0Z0310021202\",gdom:\"0Z0810031205\",gdu:\"03030D021307\",gdy:\"1A29\",\"gdy \":\"1A2I\",gdz:\"1A1E\",gdzi:\"1A20\",gdzie:\"1A38\",gea:\"0L0D0N020R030S2D150M1O02\",gead:\"0R020S0T\",\"gead \":\"0S32\",gean:\"0L050R020S161505\",geann:\"0S3A\",gear:\"0N040R030S0M\",gebe:\"010J0N1L0R1I\",geben:\"0N24\",gebeu:\"010G0R1O\",gebo:\"010V0N0E0R0X1P0G\",gebor:\"010K0N0G0R0J\",gebr:\"011G0N0P0Q020R1X\",gebru:\"010Y0R1P\",gec:\"0B051F1K\",gece:\"0B041F1Q\",\"gece \":\"1F1X\",\"ged \":\"030G0M0T141V1Q09\",geda:\"0N0H0R1O1C0E\",gedaa:\"0R1R\",gede:\"0N030R060Z14140P1F02\",\"gede \":\"0Z191F03\",gedi:\"010F0N030R061404\",gedo:\"011A0R071B04\",gedoe:\"0118\",gedr:\"01110N030R0J1402\",gedra:\"010I0R0D\",gedu:\"010F0B070N060R0A\",gee:\"012S0R251O05\",\"gee \":\"012P\",geef:\"0R1H\",\"geef \":\"0R1F\",geen:\"01140R5U\",\"geen \":\"01160R7R\",geet:\"01210R0C\",\"geet \":\"01260R0G\",gef:\"0N181004130Y1O02\",gefa:\"0N0Z0R02130G\",geg:\"01100N120R0H130E1402\",gega:\"011G0N0J0R0L\",gegaa:\"011J0R0S\",gege:\"010M0N1U0R10\",gegee:\"010N\",gegen:\"0N20\",geh:\"01170N2C0R0I0Z021Q08\",geha:\"01140N0B0R0N\",gehad:\"010Y0R0M\",gehe:\"010J0N2T0R0E\",gehen:\"0N3E\",geho:\"01120N080R0U\",gehoo:\"010N0R0M\",geht:\"0N18\",\"geht \":\"0N1Z\",gei:\"0N070P09130714051B0B\",gej:\"03020B04\",gek:\"011704120N0M0R0T1304140D\",geko:\"011X041Z0N0Q0R1U\",\"geko \":\"043I\",gekoc:\"0N020R12\",gekom:\"011D0N120R14\",gekoo:\"010P0R03\",geld:\"011A03060N190R1U1F1T1N29\",\"geld \":\"011B0N1W0R2B\",geldi:\"0R021F2H1N33\",gelec:\"1F1I\",gelee:\"01180R0L\",gelen:\"0N020R04120514021F0P1N1N\",gelig:\"0Z0F120N\",gelij:\"0R23\",gelip:\"1F041N1D\",gelj:\"1N14\",gelje:\"1N1J\",gelm:\"03060N020R040Z02111M1F1G1N1T\",gelma:\"0R051132\",gelme:\"03021F1P1N2C\",gelo:\"010S0N040P040Q0B0R1S1506\",geloo:\"010K0R13\",gels:\"010P0N030R1J0Z1C1015121E13051F02\",\"gels \":\"010K0R1U\",gelse:\"0R060Z0G1007120A1F02\",gelsk:\"0Z16100V1214\",gelu:\"011E0B090N020R1N0T05\",geluk:\"011D0R1Z\",gely:\"010W\",gelyk:\"010X\",gelý:\"1N27\",gelýä:\"1N2Y\",\"gem \":\"030J0N030P1H0T0C143I150Z1N0J1Q07\",gema:\"011A0N0U0R1D1C1J1O02\",\"gema \":\"1C341O02\",gemaa:\"011A0R17\",geme:\"010S0L0B0M020N0G0O030Q030R0I10031407\",gemee:\"010G0R0H\",gemi:\"0R070T0A0Z021C0Q1F08\",gemis:\"0R071C1L\",gena:\"0B0R0N0N0O020P020R0F0T050Z021005\",\"gend \":\"010P0N0P0R0F\",gende:\"010S043O0L020M020N0T0R100Z0K120C\",\"gene \":\"046A0N0B0R0C0Z0P120W\",genee:\"010I0R06\",genm:\"0Z09\",genn:\"03080Z0I1405\",genne:\"0Z0M\",geno:\"01110L030N0F0O040Q020R250Z02100P1O02\",genoe:\"01100R1J\",genom:\"0N0N0R0K100P\",gens:\"03080L180N0I0P0B0R1B0T0K0Z0X1009120K1405\",\"gens \":\"03020L220N0B0P0E0R1L0T0L0Z0F1006120D1404\",gensi:\"03020Z0M\",\"gent \":\"030A0L3F0M050N030R0J0T030Z041002120514041509\",gente:\"0L070N060O270P1C0Q0W0R030T0Z0Z021O08\",genz:\"046I0N030Q05\",genze:\"042S\",genzi:\"0303047X\",gep:\"010F0N040R070Z021N141O0A1P0G\",gepl:\"0N020R050Z051N1G\",geple:\"0Z061N1N\",gepr:\"010Q0R0A\",gepra:\"010L0R03\",\"gera \":\"04BH0B0Y0D040L061004136E1B11\",gerad:\"0N1K0O020P020R021003\",gerag:\"045R\",gerai:\"0L091B43\",geras:\"0L02130B1B1O\",\"gere \":\"04290N050Q180R060T1P0Z1Q120P150I\",gerek:\"14021F5M1N4O\",gerez:\"048K0L021505\",\"geri \":\"0B0X0Q02130N14021B0E1F1W\",geria:\"0D020M200Q0L110F150A1B4C\",gerie:\"0L030N050Z0T1006120C\",gern:\"0N1I0Z1L1002\",gerne:\"0N1F0Z1K\",gert:\"03060B0O0N08130W14021B0F\",\"gert \":\"03040N08131W1402\",gerti:\"03080B1B1B0V\",gerç:\"1F3W\",gerçe:\"1F59\",gerð:\"132C\",gerði:\"132Q\",gesa:\"0B050N151O021P0J\",gesag:\"0N1N1P0M\",gesc:\"0N310R14\",gesch:\"0N510R1I\",gese:\"0N1F0Q03140B\",gesi:\"012J0N0B0T0D1B051F061O0C\",gesie:\"011M\",gesit:\"010N\",gesk:\"011M0Z021403\",geske:\"010P1402\",geskr:\"010I\",gesl:\"010N0R0N\",geso:\"010J0Z041O02\",gesp:\"010K0N0M0R0O\",geste:\"010V0L030M040N1U0R0M0Z02\",gesto:\"0N0K0O020R0V1O03\",gesê:\"011A\",\"gesê \":\"011D\",gete:\"0N020Q050R14140Q\",geten:\"0R1E1402\",geth:\"0M0J\",gethe:\"0M0R\",geti:\"0T021002130914031F0R1N0Y\",getir:\"1F111N1B\",geto:\"1O031P1H\",getr:\"010F0N0N0R0H\",gett:\"0M0G0Q0H1003140V\",getti:\"0M0M0Q031102\",getu:\"0R0313381504\",getur:\"135U\",geu:\"0L04\",gev:\"011E0Q020R1B0Z021C0U1F021Q0K\",geva:\"01120Q020R1G1C0H\",geval:\"0R0U\",geve:\"0R220Z02\",geven:\"0R25\",gevi:\"010F0R06\",gevo:\"010V0R17\",gevoe:\"010N0R0N\",gevr:\"010J0R09\",gevra:\"010K0R0C\",gew:\"011E0N140R13\",gewe:\"01120N0I0R1N\",gewee:\"010K0R15\",gewi:\"010H0N0N0R09\",gewo:\"011E0N0M0R20\",gewoo:\"010N0R1L\",gewor:\"010I0N0K0R0J\",gey:\"13031F03\",gez:\"030C041G0L050N070R0V14091F0D1N1E\",geza:\"042H0R03\",\"geza \":\"044E\",geze:\"041O0N050R111F041N1Y\",\"geze \":\"042Z\",gezeg:\"0R0Z1F04\",gezek:\"1N2E\",gezi:\"0R1M1F07\",gezie:\"0R1K\",gezo:\"0N070R0N\",geç:\"1F3R1N2Q\",\"geç \":\"1F0W\",geçe:\"1F141N1D\",geçen:\"1F131N1N\",geçi:\"1F1E1N1E\",geçir:\"1F1D1N1G\",geï:\"0R03\",geý:\"1N0M\",gf:\"0Z021302140D\",gfi:\"1403\",\"gg \":\"100M120B13071402\",gga:\"03270B330D0R0Q02100N130D1407\",\"gga \":\"0B140D020Q02100I\",ggal:\"0B3L0D0A140A\",\"ggal \":\"0B580D09140A\",ggalk:\"0B1B\",ggan:\"03050B0K0D0M1003130F\",ggang:\"0B0E0D0T\",ggap:\"0B080D09\",ggd:\"1004\",\"gge \":\"0Q0B0Z0S10031211\",gged:\"0M050Z0A\",ggel:\"0B060R020Z031207141U\",\"ggel \":\"1416\",ggen:\"010H03030Q080R1R0Z0J1008120K\",\"ggen \":\"03070R2C0Z0E1008120B\",ggend:\"010I0Q080Z041206\",gger:\"03020M040Q190R020Z1810151216\",\"gger \":\"03030M040Z1E10151211\",ggere:\"0Q0R0R020Z03\",gget:\"0Q080Z07120B1403\",ggh:\"1Q09\",ggi:\"030C0B0S0D080M020Q4J130M\",\"ggi \":\"03030B0V0D050Q2A1308\",ggia:\"0Q1I\",ggil:\"03030B0H\",ggio:\"0Q2U\",\"ggio \":\"0Q29\",ggit:\"03020D060Q02\",ggj:\"130Z\",ggja:\"1316\",\"ggja \":\"132C\",ggl:\"0M02\",ggn:\"1006\",ggo:\"0B060D090Q031402\",\"ggo \":\"0D090Q03\",ggr:\"03080B0S0Q021005\",ggri:\"03030B1K\",ggris:\"0B32\",ggs:\"0M02\",ggu:\"030D0B280D031002130G\",\"ggu \":\"0B2A\",ggun:\"03040B12\",gguna:\"0B1A\",ggy:\"140D\",ghah:\"0D071QKI\",\"ghah \":\"1QO7\",ghai:\"0S0T\",ghaj:\"14041QBF\",\"ghaj \":\"1QBQ\",ghal:\"0D060Z03140W1Q0S\",ghb:\"0M041Q1C\",\"ghe \":\"0Q0L\",ghea:\"0S0T1507\",ghed:\"0M040R040Z1V\",\"ghed \":\"0M050Z1B\",ghede:\"0R060Z0U\",ghei:\"010S0R0F\",gheid:\"010T0R0K\",ghet:\"0Q040R040Z021013122M1Q0W\",\"ghet \":\"100I121I1Q11\",ghete:\"100J1212\",ghi:\"0B080D080M020Q0M150E1Q3Q\",ghih:\"0D061Q0B\",ghin:\"0B050D060M03\",ghit:\"1Q3L\",ghitl:\"1Q61\",ghl:\"0S331Q1X\",ghla:\"0S3I1Q1W\",ghlac:\"0S3J\",ghlai:\"0S8U\",ghm:\"1Q2L\",ghn:\"0S0I1Q0M\",gho:\"0B030M0214041QD3\",ghoj:\"1Q72\",ghojm:\"1Q5Z\",ghom:\"1Q4H\",ghos:\"0M0214021Q4O\",ghp:\"1Q3R\",ghpu:\"1Q6Q\",\"ghpu'\":\"1QB0\",ghr:\"0S0N1Q2N\",ghro:\"1Q4L\",\"ghro'\":\"1Q7S\",\"ght \":\"0L020M71\",ghte:\"0M0H\",ghu:\"0B040D031Q2L\",ghv:\"1Q1L\",\"gi-\":\"0303\",gian:\"0B0O0M020Q0F11041B02\",\"gian \":\"0B1A11061O02\",giap:\"0Q12\",giapp:\"0Q13\",giar:\"0Q1O\",giare:\"0Q1A\",giat:\"0B070Q16\",giato:\"0Q0T\",giau:\"1B31\",\"giau \":\"1B5I\",gib:\"0N0T0T031C0V1F2J\",\"gib \":\"0N091C12\",gibi:\"1F2X\",\"gibi \":\"1F3Q\",gibt:\"0N1P\",\"gibt \":\"0N2S\",gick:\"0U05101Q\",\"gick \":\"101Q\",\"gid \":\"03050D030S0M0Z091C22\",gide:\"15031F211N1L\",gidi:\"0T021F151N19\",gidip:\"1F061N14\",gidiy:\"1F18\",gidý:\"1N1K\",gidýä:\"1N24\",giel:\"1A17\",giels:\"1A1X\",giem:\"0T021A081D0S\",\"giem \":\"0T021A0C1D21\",giet:\"010N0R02\",giets:\"010P\",gif:\"041P0M030Z0E100O120B130D\",gifa:\"042R\",gifar:\"044X\",gifi:\"042D\",gifis:\"0441\",gift:\"0M050N030R040Z11100W120R130K\",\"gift \":\"0M050N020Z0N1009120C130F\",gifte:\"0Z0J100C120F\",gigi:\"0B0E0D08\",gih:\"044A0V07\",gihe:\"048R\",\"gihe \":\"04EK\",gihu:\"043R\",gihug:\"045L\",gii:\"0T020U0215031A04\",gij:\"0R020V0914021B0C1N17\",gije:\"0V0414051N13\",\"gije \":\"0V0A1N17\",gik:\"041W0B090Z0K120I14021P1M\",\"gik \":\"0Z1I1P1R\",giki:\"041R\",gikk:\"121A\",\"gikk \":\"1219\",giko:\"0422\",giku:\"0B0G1403\",\"gil \":\"03050B090D090T03\",gila:\"0B0I0D040O020T08\",gili:\"0D020T021B051F1I\",giliz:\"1F17\",gill:\"102F\",gilla:\"102F\",gime:\"03030L030P02150C1C0L\",\"gime \":\"0L05150A1C1H\",gimi:\"1B0C1N2O\",\"gimi \":\"1N2A\",gimiz:\"1N17\",ginag:\"0D0S\",ginaw:\"0D0S\",\"gine \":\"0L090M050Q0E0T0415051N2R\",\"ging \":\"010S0B0H0D1Z0M0L0N150R2M\",gingo:\"0459\",\"gini \":\"0Q0D1B021ND2\",ginn:\"0M030N080R0C132Z\",\"ginn \":\"0N021364\",gint:\"03030D030R0A0T1H140Z15031B0F1O03\",\"gint \":\"03060R0E1411\",ginta:\"0T131B031O02\",\"gio \":\"0O0D0P0D0Q340T081B061O09\",gioc:\"0Q1O\",gioca:\"0Q16\",gione:\"0N020Q0Z0T0A0Z02\",gior:\"0Q2Y\",giorn:\"0Q2L\",giov:\"0Q0S\",gip:\"0O031B021O021Q0A\",giq:\"0L061Q06\",\"gir \":\"0L050O050P0G120N131V\",gira:\"04EE0B090M020O040P050Q060Z021003\",\"gira \":\"04K30B0F0O02\",giran:\"0447\",gird:\"1B1K1F0E\",girdė:\"1B1V\",gire:\"042H0Q031F08\",\"gire \":\"044E0Q03\",giri:\"041V0B0A1F081N0D\",girl:\"0M0O\",\"gis \":\"0B0K0D050L020T1C130C140L1B0K1C0L1O351P13\",gisa:\"041Z1F0F\",gish:\"044T\",gisha:\"044X\",gisk:\"0Z0C1004120B\",giste:\"011I0L020R1T0T0V\",gistr:\"0L060O040P020Q030T0R15051O04\",\"git \":\"030A0B0G0D0K0L090T1T100B11021402150L1F07\",gitab:\"04910T09\",gitd:\"1N1J\",gitdi:\"1N24\",gitj:\"1N18\",gitje:\"1N1O\",gitm:\"1F3I1N33\",gitme:\"1F471N3B\",gito:\"041O0P050Q020T071O02\",gitt:\"0Q0G0T031103120F14031F1X\",\"gitt \":\"120F\",gitti:\"1F2M\",gitu:\"04570B0V0T13\",\"gitu \":\"0B1P\",gitum:\"045Y\",gitur:\"04220T12\",giu:\"0P080Q100T0F15041B0D\",giun:\"0Q0K\",gius:\"0Q0P0T051B03\",giv:\"0M0O0Z0Q10051P2M\",\"giv \":\"0Z0F\",give:\"0M150Z1J1005\",\"give \":\"0M180Z0J\",giver:\"0Z0J\",givet:\"0Z0P1002\",givo:\"1P2Q\",givol:\"1P14\",giy:\"041E1F10\",giye:\"04421F06\",\"giye \":\"04741F03\",giz:\"0302040P0B020M020Q021F0B1N0D\",gize:\"041O0M041F02\",\"gize \":\"042Z0M03\",già:\"0Q0W\",\"già \":\"0Q1G\",giã:\"0P07\",gið:\"131E\",\"gið \":\"1327\",giñ:\"1N0Q\",giò:\"0Q03\",gió:\"0O0A\",giù:\"0Q04\",giň:\"1N1P\",giňi:\"1N1R\",\"giňi \":\"1N1G\",giş:\"1N0B\",gj:\"0Z0C100M122Y131V140R\",gja:\"132U140G\",\"gja \":\"133Y140V\",gje:\"121M1405\",gjem:\"1208\",gjen:\"122T\",\"gjen \":\"121I\",gjenn:\"120U\",gjer:\"120O\",gjern:\"120G\",gjo:\"0Z0I101Q120W140F\",gjobb:\"1415\",gjor:\"0Z1D102C122B\",gjord:\"0Z0Y101P121E\",gjort:\"0Z0Q100P120X\",gju:\"130T1403\",gjö:\"130L1402\",gjø:\"122B\",gjør:\"125Q\",\"gjør \":\"1229\",gjøre:\"123K\",gk:\"01060B1J0D1X0N080R02140J\",gka:\"0B1V0D1J1404\",gkai:\"0D0D\",gkain:\"0D0J\",gkak:\"0D0P\",gkaka:\"0D1A\",gkan:\"0B160D07\",\"gkan \":\"0B27\",gkar:\"0B060D06\",gkas:\"0B030D08\",gkat:\"0B160D0F\",\"gkat \":\"0B1U0D03\",gkata:\"0B0D0D0M\",gke:\"0D020N0C1405\",gkei:\"0N0V\",gkh:\"0B04\",gki:\"0B120D04\",gkin:\"0B1W\",\"gkin \":\"0B34\",gko:\"01080B060D0F0R021402\",gkol:\"0D0G\",\"gkol \":\"0D0U\",gkom:\"010J0R06\",\"gkom \":\"010K\",gkot:\"0D06\",gku:\"0B0B0D04\",gké:\"140C\",\"gl \":\"0Z031202\",\"glad \":\"0M0D0R020Z0E100F120O\",glai:\"0L0W\",glais:\"0L1J\",glak:\"0D081405\",glal:\"0D0B1416\",glala:\"0D0K\",\"glan \":\"03021N3B1O0L\",glant:\"112A\",glar:\"0D050O04100A1N0Y\",glary:\"1N14\",glau:\"0N1W1B02\",glaub:\"0N36\",gled:\"0M020V390Z051209\",gleda:\"0V6W\",glei:\"0N15\",gleic:\"0N1Q\",glem:\"0L020Z0Y120R\",glemt:\"0Z0L120D\",glen:\"03020Z0E120E1402\",gler:\"0L030Z0L1008120E130D\",\"gler \":\"0L040Z0H1003120E\",gles:\"0D0E0L0A0O0A0P030Q0Y0V0Q\",\"gles \":\"0D0P0L0H\",glese:\"0Q0X\",glesk:\"0V1V\",glet:\"0L040Z0314021P13\",gleti:\"1P1A\",\"gli \":\"0Q6O0V0E1A04\",glia:\"0Q3J\",\"glia \":\"0Q1T\",gliat:\"0Q0V\",glic:\"0N140T140U0L0Y11\",glich:\"0N1W\",glick:\"0U0U0Y1A\",glie:\"0N040Q1P\",\"glie \":\"0Q0R0U02\",glig:\"0L030Z05100E\",glio:\"0Q71\",\"glio \":\"0Q591O02\",glior:\"0Q14\",glis:\"0L0A0M0G0N0N1C1K1D0M\",glise:\"0L0A1C3L\",glish:\"0M0M\",\"glo \":\"011D0O050V0B1O02\",glul:\"0D06\",gly:\"0M031N0F\",glá:\"140B\",glä:\"0N0210041P0Q\",glän:\"0N021P0V\",gläna:\"1P0Z\",glæ:\"0Z051305\",glæd:\"0Z0C\",glæde:\"0Z0E\",glé:\"0L020O0O\",glés:\"0O10\",\"glés \":\"0O1C\",glê:\"0P0S\",glês:\"0P0Y\",\"glês \":\"0P17\",glö:\"100Q1304\",glöm:\"100Y\",glü:\"0N0H\",glüc:\"0N15\",glück:\"0N1X\",glā:\"1D0J\",glą:\"1A1C\",gląd:\"1A1Y\",gląda:\"1A2U\",glų:\"1B0D\",gma:\"030G0D0A14051O05\",gmam:\"0D0A\",gmama:\"0D0J\",gmi:\"030C0T021C0K\",gmu:\"03040B040D041404\",\"gn \":\"0M050Z0710081205130D\",\"gna \":\"03040L020Q1J0T18100J131I\",gnad:\"100D\",gnan:\"0D0D0L0A0M020Q190T06\",\"gnan \":\"0D0I\",gnant:\"0L0G0M030Q160T05\",gnap:\"141Q\",\"gnap \":\"141P\",gnar:\"0Q1C0T061008\",gnare:\"0Q161002\",gnat:\"03020Q150T0B\",\"gne \":\"0L1I0Q040R030T020V0E0Z0N120K\",gned:\"0M030Z0C\",gnede:\"0Z0F\",gner:\"0L0N0M020N050Q080Z0S1002120J\",\"gner \":\"0L0X0N050Z0X120H\",gnet:\"0N0E0Q020Z0A1004120K\",\"gnet \":\"0N0G0Z0C1004120I\",\"gni \":\"03020Q1M0T0J130I140I1O02\",gnin:\"0Z0J1007120D130I\",gning:\"0Z0N1007120D130B\",\"gno \":\"0O020P020Q2Y0T0K1O05\",gns:\"1304\",gnum:\"0T11130K\",\"gnum \":\"0T121317\",gnus:\"0T0P\",gny:\"0B0P1405\",gnya:\"0B1D\",\"gnya \":\"0B2P\",gné:\"0L0F1407\",gnò:\"0Q02\",gnā:\"0T02\",\"go'\":\"1F021Q0G\",goa:\"0M030P021504\",gob:\"0O081P34\",\"gob \":\"1P3H\",goc:\"0L020O060V031O02\",\"god \":\"0D060M090R0C0V0B0Z1C100I121L140O1P0I\",gode:\"0Z0E120L\",\"gode \":\"0Z0H120K\",godi:\"0V2F1004\",godin:\"0V43\",godt:\"0Z2D121G140E\",\"godt \":\"0Z2U121D1405\",godz:\"1A19\",godzi:\"1A1Z\",goe:\"011C0M040R17\",goed:\"011U0R4G\",\"goed \":\"011O0R4A\",goede:\"0R1I\",goei:\"0118\",goeie:\"011B0R02\",gof:\"1P0T\",\"gof \":\"1P0Z\",goi:\"0M1Q0Q0211051502\",goin:\"0M35\",going:\"0M4A\",goj:\"0V041B0C1O0L\",\"goj \":\"1O0M\",gok:\"14151B03\",\"gok \":\"141V1B02\",\"gol \":\"0D04140C15071P2A\",golo:\"0Q0414031P2W\",golob:\"1P1C\",golol:\"1P17\",golö:\"1P41\",golöd:\"1P1U\",golön:\"1P2V\",\"gom \":\"0V081002141A1P3M\",gond:\"1002144M\",gondo:\"144M\",gone:\"0M0C0T02100E\",gong:\"0B050D0J\",\"gong \":\"0D0W\",gons:\"100O\",gonsi:\"100I\",gont:\"100Z\",gonti:\"100Z\",good:\"0M23\",\"good \":\"0M2O\",gop:\"1A031Q06\",\"gor \":\"0T06100F\",gora:\"042R0P230T0214021N0E\",\"gora \":\"0P2M\",goran:\"0435\",gore:\"041K0V0B\",gork:\"1N1T\",goro:\"04221405\",\"gos \":\"0O1H0P1E0T02140O1B131O0M\",gost:\"0O030P500V031102150M\",gosta:\"0P3Z1104\",gosto:\"0D020O020P29\",\"got \":\"03040D070M21101O1428\",goti:\"0T0P1B0K\",gott:\"0M060N0F100K130P140R\",\"gott \":\"0N0L100K131G140R\",gou:\"01070L0C0P100R02\",\"gou \":\"010F0P17\",gov:\"0M040P080Q030U040V460Y06\",gova:\"0U050V15\",govar:\"0V23\",govo:\"0V35\",govor:\"0V6X\",gow:\"1A061N5O\",gowy:\"1A031N7B\",\"gowy \":\"1A021N98\",goy:\"040D0D051Q05\",\"goy \":\"0D09\",goz:\"0Q0H1413\",gozi:\"0Q0S140N\",goû:\"0L07\",goý:\"1N1U\",goş:\"1N0N\",gpa:\"0D0S\",gpak:\"0D07\",gpal:\"0D06\",gpap:\"0D0H\",gpapa:\"0D0V\",gpas:\"0D07\",gpi:\"0D03\",gpl:\"1007\",gpo:\"0D02\",gpr:\"1408\",gpu:\"0B020D031Q09\",gq:\"1Q04\",\"gra \":\"03020O070P050Q020T070V0A1013130D140D1A0G1O05\",graa:\"010N0R1S1102\",graag:\"010N0R2A\",grac:\"0O0T0U021A02\",graci:\"0O12\",grae:\"0T0R\",graec:\"0T0S\",\"gran \":\"03050O160Q061O04\",grand:\"03040L4C0M0D0O1B0P1R0Q160T070Z021B031O42\",grap:\"0D020L080M050R0D0T0Y\",graph:\"0L0C0M050N020T10\",grati:\"0B070L030O040Q030R080T100Z081005\",grava:\"0P060T021O1D\",graz:\"0Q0Q\",grazi:\"0Q0R\",graž:\"1B1X\",graži:\"1B2I\",\"gre \":\"0L040O0B0P040Q020Z07100X1209140W\",grea:\"0M0K150A\",great:\"0M0R\",grec:\"0L040O030Q0L15051A05\",gree:\"0M0Q0R06\",grei:\"0N0A120I130Y1B22\",greit:\"12081B3G\",grens:\"0R05120F\",grep:\"0R0610041209\",gress:\"0L090M060N030P0C0Q070R030T0W0Z021003110512051402\",gret:\"0L080M040Q0D100315061B071P1B\",greti:\"0Q031B031P1J\",greš:\"0V15\",greș:\"151I\",grib:\"0Z041D58\",gribu:\"1D4L\",gribē:\"1D5C\",grie:\"0N040O040R091B081D1J\",griez:\"1D2Y\",grij:\"0R1J151L\",grijk:\"0R0S\",grijp:\"0R12\",grin:\"0L030T0A0Z0B1B0E\",\"gris \":\"03020B2W0L030O020T050Z02\",\"gro \":\"0O0L0P040Q040T081O02\",groe:\"01180R14\",groen:\"010T0R0N\",groo:\"01120R1B\",groot:\"01150R1R\",gros:\"0L0P0O0F0P040Q040T041404\",grot:\"0R130T0G100214071B03\",grote:\"0R1F\",grou:\"0L090M0C\",groß:\"0N1S\",große:\"0N1T\",grun:\"0N0K0Z0P100F1218130F1O03\",grund:\"0N0Y0Z0U100F130E1O06\",grunn:\"1216\",gry:\"0M0910031A0C1B041N14\",\"gry \":\"0M0G1A041N1A\",grá:\"0O020P050S1B130B1403\",\"grá \":\"0S1G\",grä:\"100H\",grå:\"100D120F\",gråd:\"120L\",grådi:\"120L\",gråt:\"100F120F\",græ:\"0Z0E130C\",græd:\"0Z0E\",græn:\"0Z0A130H\",græs:\"0Z0B\",grè:\"0L04\",gré:\"0L0A0P020Y06\",grí:\"0O031308\",gró:\"0O0214021A03\",grö:\"0N081008\",grø:\"0Z081207\",grøn:\"0Z0K120F\",grønn:\"0Z07120C\",grü:\"0N071P0C\",grā:\"1D24\",grām:\"1D21\",grāma:\"1D58\",gră:\"150K\",grį:\"1B13\",grįž:\"1B19\",grū:\"1D0N\",grūt:\"1D0S\",grūti:\"1D1R\",gsa:\"0B070D0N0N051007130U1N0Z\",gsak:\"0D07\",gsal:\"0D0C\",gsali:\"0D0M\",gsas:\"0D0D\",gsasa:\"0D0P\",gsat:\"1N19\",\"gsat \":\"1N1N\",gsb:\"1003\",gse:\"0Z03100312051404\",gsel:\"0Z08120B\",gsf:\"0Z031202\",gsg:\"1303\",gsi:\"0B030D0E13041B07\",gsim:\"0D081B02\",gsis:\"0D0A\",gsisi:\"0D0J\",gsk:\"0Z02100212021303\",gsl:\"0N020Z02100412031306\",gsm:\"0Z0B10031B03\",gsmå:\"0Z0Q\",gsmål:\"0Z0V\",gso:\"0D030Z02\",gsp:\"0Z0210031202\",gsr:\"1003\",gss:\"0N020Z02100212031303\",\"gst \":\"0N110R080Z0D1002120B\",gsta:\"0Z0810061B1T\",\"gsta \":\"10041B2O\",gste:\"01150N0G0R0G0Z0B120G\",\"gste \":\"010G0N0B0R0G0Z0C120C\",gstpr:\"1D1W\",gstu:\"1B1B\",\"gstu \":\"1B2P\",gsu:\"0B050D09\",gsus:\"0D08\",gsv:\"1002\",gsz:\"140W\",gså:\"0Z0C120F\",\"gså \":\"0Z0W1213\",\"gt \":\"030I0L050N260R0U0Z2L105S120S13351D0U1N2P\",gta:\"0D0M1004140Y1B061Q0M\",gtan:\"0D07140G\",gtat:\"0D0H1406\",gtata:\"0D0L\",gtd:\"1N0A\",gte:\"011J0L0E0N120R020Z14120F140J\",\"gte \":\"011P0N230R070Z1P1213\",gted:\"0Z08\",gtem:\"0L0N\",gter:\"011J0Z0I1404\",\"gter \":\"011D0Z0J\",gth:\"0M02\",gti:\"01100D040Z0K1B0V\",\"gti \":\"1B14\",gtig:\"011V0Z1G\",\"gtig \":\"011R0Z0M\",gtige:\"0Z0F\",gtigt:\"0Z0K\",gtin:\"010F1B07\",gting:\"010G\",gtl:\"1N0T\",gtr:\"0D04\",gtra:\"0D07\",gts:\"0L03\",gtu:\"0D040R0214051B04\",gtv:\"1005\",gty:\"0Z021N1Q\",gtö:\"140C\",\"gua \":\"0O1N0P1U0Q0O0T17\",guag:\"0M0M0P030Q03\",guage:\"0M0U0P04\",guam:\"0T1W\",\"guam \":\"0T20\",guar:\"03030M040O0G0P0I0Q28\",guard:\"0M040O0G0P0L0Q27\",guay:\"0O020Q0R1F04\",\"guay \":\"0Q0R1F04\",guba:\"0B070D06\",guc:\"03030B02\",gud:\"0Z06100912031B041P4Z\",\"gud \":\"0Z0C10081206\",gudi:\"1P67\",gudik:\"1P77\",\"gue \":\"0B050L1O0M050O0L0P130Q0H\",guei:\"0P0I\",guer:\"0L0M0O0J0P0F0Q0D0T02\",gues:\"0L0O0M0A0O080P050T02\",guf:\"041E\",gufa:\"042K\",gug:\"03040B030D031Q0B\",gugu:\"0B060D06\",guh:\"041Y0B080D02\",guha:\"042H\",guid:\"0L030M020O0B0P060Q0L\",guie:\"0O1C\",guien:\"0O1O\",guir:\"0O0M0P0I0Q06\",guj:\"03030O030U060V031A031B03\",guk:\"04390B021407\",guko:\"044M\",gukor:\"047A\",guku:\"042V\",gukun:\"042Z\",gulan:\"0D0I1F02\",guld:\"0Z0810051F041N0G\",gull:\"03030O0912091306\",\"gum \":\"0P0L0T0E132K\",guma:\"041Z0D0N0P1L1B08\",\"guma \":\"042Z0P181B0B\",gumag:\"0D0J\",gumas:\"0P0S1B05\",\"gun \":\"03020B0M0M05131D1F0I1N0D\",guna:\"0B1I0D020O1M130H\",\"guna \":\"0B0F0O1J1310\",gunak:\"0B22\",gund:\"0B080O0D0P0Q1B021F03\",gung:\"0B0N0D040N0O\",guni:\"03040D081306\",gunj:\"0B0F\",guno:\"0O0S\",guns:\"0P0P0R021F02\",\"guns \":\"0P0V\",gunt:\"0M030O1N0P1M0T0F\",gunta:\"0O1D0P16\",gunu:\"0B0J130F1F03\",guo:\"0O031B03\",gup:\"0B03\",\"gur \":\"03090B0E0S1J134Y152D\",\"gura \":\"030304890O090P05150N\",guri:\"0302042V0O050Q03130S150F1D0K\",gurl:\"1N0V\",guro:\"0D090O0S0P070Q02\",\"guro \":\"0D0H0O0X0P070Q02\",guru:\"045Y0B0P140215081F08\",\"guru \":\"04350B11\",guruk:\"0435\",gurur:\"042S1F0A\",\"gus \":\"0B0V0S8J0T0F14021B2O1C251O04\",gusa:\"04570D08\",\"gusa \":\"045R\",gusav:\"042S\",guse:\"1C0S\",gush:\"0454\",gushi:\"047X\",guso:\"041Z\",gusom:\"042S\",gusta:\"0O550T081O0D\",guste:\"0O041C261O02\",gusto:\"0D4N0O090Q031O07\",gusu:\"044G\",gusub:\"042S\",gusum:\"0453\",\"gut \":\"03030N1U\",guta:\"042V0D021N0T\",gutar:\"1N14\",gute:\"045Y0N1C\",\"gute \":\"046G0N0X\",gutt:\"0T02120R\",gutte:\"120H\",gutu:\"041K\",gutw:\"0422\",guw:\"0D03\",guwa:\"0D06\",guy:\"040M0M07\",guz:\"040D\",gué:\"0L0F0O090P1Z\",guém:\"0P2F\",\"guém \":\"0P32\",guê:\"0P09\",guí:\"0O050P02\",gva:\"1303140C1B0H1O041Q0B\",gve:\"13041409\",gvi:\"0Z06120D14021B021O03\",gvis:\"0Z0E120W\",\"gvis \":\"0Z0H120W\",gvo:\"1O0R\",gvá:\"140B\",gvæ:\"0Z02\",gw:\"0302040G0D020N021A051Q0C\",gwa:\"0304041C0D021A02\",\"gwa \":\"042Z\",gwe:\"0N031Q03\",\"gy \":\"0M050U0214MK1N3E\",gya:\"0D0E1432\",gyak:\"141K\",gyakr:\"1415\",gyan:\"0D0B142W\",\"gyan \":\"0D0J141O\",gyar:\"0D09141Q\",gyari:\"0D0H\",gyay:\"0D07\",gyb:\"140C1B05\",gyd:\"14071B0I\",gydy:\"1B0R\",gydyt:\"1B1K\",gye:\"146I\",gyed:\"141M\",gyedü:\"141F\",gyek:\"1423\",\"gyek \":\"141V\",gyel:\"1422\",gyen:\"142C\",\"gyen \":\"141F\",gyer:\"144H\",gyere:\"143T\",gyet:\"142F\",\"gyet \":\"1417\",gyi:\"140X\",gyik:\"141E\",\"gyik \":\"1414\",gyl:\"12021404\",gym:\"1002140O1N1L\",gymy:\"1N1E\",\"gymy \":\"1N19\",gymá:\"1417\",gymás:\"1417\",gyn:\"0Z0F120K140C1B021N82\",gyna:\"14021N2F\",\"gyna \":\"1N2H\",gynd:\"0Z151N0Y\",gynda:\"1N19\",gynde:\"0Z0M\",gyndt:\"0Z0S\",gynn:\"120Q\",gynne:\"120P\",gynt:\"120P\",gynte:\"120J\",gyny:\"1N89\",\"gyny \":\"1NAF\",gyo:\"1462\",gyok:\"146D\",\"gyok \":\"146P\",gyon:\"1467\",\"gyon \":\"146E\",gyor:\"141G\",gyors:\"141G\",gyp:\"0M020T0Q10021402\",gypt:\"0L020M030N020R030T1E0Z0410021102\",gypti:\"0T0X1105\",gyr:\"140A1N1E\",gys:\"110414161B0A1N0S\",gysz:\"142U\",gysze:\"142S\",gyt:\"140P1B0K\",gyti:\"1B0W\",\"gyti \":\"1B1U\",gyu:\"140Q\",gyun:\"141K\",gyunk:\"141N\",gyv:\"140C1B3U\",gyve:\"140J1B4Z\",gyven:\"14071B9X\",gyz:\"14041N4C\",\"gyz \":\"1N2A\",gyzy:\"1N30\",gyzyk:\"1N1U\",gyá:\"140R\",gyé:\"140K\",gyñ:\"1N0D\",gyó:\"140D\",gyü:\"140V\",gyütt:\"1412\",gyň:\"1N1G\",gyňy:\"1N1A\",győ:\"140B\",gyş:\"1N13\",gyű:\"140D\",gza:\"039R0R031A081B06\",gzaw:\"03A8\",gzawa:\"03JV\",gzn:\"1D0E\",gá:\"0S0E0Y051304141M\",gái:\"0S0N\",gál:\"0Y06140O\",gán:\"140F\",gás:\"0P02140B\",gát:\"1304140Q\",\"gát \":\"141O\",gâ:\"0L02150E\",gân:\"151F\",gând:\"152D\",gât:\"0L071503\",gão:\"0P03\",gä:\"0N03100811021N09\",gäl:\"1005\",gär:\"100B\",gäs:\"1004\",gät:\"1105\",gå:\"0Z1A1023121M\",\"gå \":\"0Z0L101Y120Y\",gåe:\"0Z081202\",gået:\"0Z0H\",\"gået \":\"0Z0L\",gån:\"101E\",gång:\"101W\",\"gång \":\"100X\",gånge:\"100U\",går:\"0Z15102E121D\",\"går \":\"0Z2S102U123A\",gård:\"0Z07100E1204\",gås:\"1003\",gåt:\"1009120A\",gått:\"100B120L\",\"gått \":\"100B120L\",gæ:\"0Z041315\",gær:\"131E\",\"gær \":\"131R\",gæs:\"0Z02\",gæt:\"1311\",gæti:\"131H\",gè:\"0L02\",gèr:\"0L09\",gé:\"0L0G0S061427\",\"gé \":\"0L101404\",géa:\"0S0I\",gée:\"0L09\",gén:\"0L0E0O02140M\",gép:\"140N\",gér:\"0L0D140Y\",gés:\"0L041417\",gész:\"142Q\",\"gész \":\"141W\",gê:\"0P03\",gên:\"0L020P0D\",gí:\"0O031303140U\",gía:\"0O08\",gít:\"1306141E\",gíte:\"141M\",gíten:\"1413\",gíts:\"1419\",gð:\"131N\",gði:\"132I\",\"gði \":\"1339\",gðu:\"130S\",\"gò \":\"0Q03\",gó:\"0O07130T140C1A0E\",\"gó \":\"0O0K1404\",góc:\"0P04\",góð:\"131P\",gö:\"101G130F140C1F471N5J1P17\",gök:\"1F061N0A\",göm:\"1007130A1F08\",gön:\"130C14021F0L1P21\",\"gön \":\"1P2K\",gör:\"103Y14051F7E1N88\",\"gör \":\"1025\",göra:\"1039\",\"göra \":\"1037\",görd:\"1F1L1N3B\",gördü:\"1F261N3V\",göre:\"14021F1B1N15\",görm:\"1F1V1N1W\",görme:\"1F2D1N1O\",görü:\"1F431N2N\",görün:\"1F451N2R\",görý:\"1N27\",görýä:\"1N31\",gös:\"1F0U\",göst:\"1F0Y\",göste:\"1F1B\",göt:\"130A14061F0I\",göw:\"1N0C\",göz:\"14021F1E1N1R\",gözl:\"1F0Q1N1G\",gözle:\"1F0P1N1S\",göç:\"1F021N0D\",gø:\"0Z0T\",gør:\"0Z16\",\"gør \":\"0Z1A\",gøre:\"0Z1X\",\"gøre \":\"0Z25\",gú:\"0O091403\",gún:\"0O0S\",\"gún \":\"0O15\",gü:\"0N020O03140A1F3I1N4W\",güe:\"0O07\",güj:\"1N0B\",gül:\"14071F0Q1N15\",gün:\"14071F5E1N5C\",\"gün \":\"1F3C1N3W\",güni:\"1N0Y\",\"güni \":\"1N16\",günü:\"1F1D1N0K\",gür:\"1F0E1N2T\",gürl:\"1F031N3A\",gürle:\"1N3O\",güv:\"1F11\",güve:\"1F17\",güven:\"1F1K\",güz:\"1F1A\",güze:\"1F1H\",güzel:\"1F21\",güç:\"1F0F\",güý:\"1N0H\",gā:\"0T021D18\",\"gā \":\"1D0V\",gāj:\"1D1M\",gāja:\"1D0Z\",\"gāja \":\"1D2K\",gāju:\"1D0S\",gāk:\"1D0K\",gāt:\"1D17\",gāv:\"0T03\",gă:\"1510\",\"gă \":\"151P\",găs:\"1513\",găt:\"150U\",gą:\"1A061B0N\",\"gą \":\"1A0C1B1P\",gė:\"1B0T\",\"gė \":\"1B0Y\",gėl:\"1B0E\",gėr:\"1B0B\",gės:\"1B0B\",gę:\"1A101B07\",\"gę \":\"1A221B06\",gęs:\"1B0E\",gį:\"1B02\",\"gį \":\"1B06\",gı:\"1F0H\",gın:\"1F0O\",gļ:\"1D09\",gļu:\"1D0Q\",\"gļu \":\"1D0X\",gł:\"1A1R\",gło:\"1A16\",gő:\"1408\",gş:\"1N0M\",gşa:\"1N11\",gşam:\"1N1E\",\"gşam \":\"1N16\",gš:\"1D04\",gū:\"1B021D05\",gų:\"1B0M\",\"gų \":\"1B1P\",gž:\"1B03\",gžd:\"1B07\",\"h'\":\"1F021Q2B\",\"h'a\":\"1Q5Q\",\"h'a'\":\"1QAD\",\"h'a' \":\"1QGJ\",\"h'e\":\"1Q2Q\",\"h'e'\":\"1Q3Y\",\"h'e' \":\"1Q6Q\",\"h'i\":\"0Q02\",\"h-\":\"0B03\",\"ha'\":\"1QF1\",\"ha' \":\"1QFS\",\"ha'd\":\"1Q3M\",\"ha'di\":\"1Q5Z\",\"ha-\":\"031I0P02\",haa:\"012O0B040N050R22111Y1C0D\",\"haa \":\"111Y\",haal:\"010H0R0W1103\",\"haal \":\"010I0R0R\",haar:\"014S0N0D0R5O1103\",\"haar \":\"014S0N070R7G\",haat:\"010W0R0L1103\",\"haat \":\"010Y0R0L1107\",\"hab \":\"0N031C1G1Q1A\",haba:\"0B050D0H0O031F041N0J\",haban:\"0D0M\",habe:\"0N9I0O1D0T8R1F0K\",\"habe \":\"0N97\",haben:\"0N700T0S\",habeo:\"0T1T\",haber:\"0N020O1S0T0R1F0R\",habes:\"0T19\",habet:\"0L020N020T3V\",habh:\"0S0X\",habha:\"0S2K\",habi:\"0B0M0L1K0M030O130P080T3K\",habit:\"0L270M040O180P060T3R\",habl:\"0O451Q1E\",habla:\"0O4J\",habr:\"0O0J\",habí:\"0O1X\",había:\"0O2J\",\"hac \":\"0T0V\",hace:\"0O6B\",\"hace \":\"0O2S\",hacer:\"0O52\",hach:\"0N070O0A0S0Z1Q1J\",haci:\"0O10\",\"had \":\"010W0M3C0R3X1C0Z1Q0N\",hada:\"0B0N0O050P0E\",hadap:\"0B1B\",hadd:\"0R0J123R140G\",hadde:\"0R0P123R\",hade:\"0N060R030Z0M102W\",\"hade \":\"0N040R02102W\",hader:\"0Z0M\",hadh:\"0S0O\",hadi:\"0B0J0R021F04\",hado:\"0O070P0L0U02\",hadr:\"0S0Q\",hadra:\"0S32\",haec:\"0T32\",\"haec \":\"0T38\",haf:\"040H0N0V0Z041005132Y1F1I\",hafa:\"132E\",\"hafa \":\"1350\",haft:\"0N1G0Z0C10071F1B\",\"haft \":\"0N1H0Z0E1007\",hafta:\"1F1S\",hafð:\"1314\",hafði:\"131X\",haga:\"04390O0N1307\",hage:\"0Z03120H\",hagi:\"0B0M0D030T02\",hagy:\"143F\",hagyt:\"1412\",hah:\"040D0D070N0211021QEX\",\"hah \":\"0N021QJE\",haha:\"0D0D\",hahta:\"1Q4H\",hahva:\"1Q50\",haid:\"0S1P1503\",haidh:\"0S6E\",haig:\"0S0Q1C0Z\",haige:\"1C1H\",haigh:\"0S32\",hail:\"0Q020S3N1108\",haile:\"0S7Z1108\",haill:\"0S411106\",hain:\"0L0N0S24110G150G\",\"hain \":\"0D020L0F0S2T1103\",haint:\"0S49\",hair:\"0M0G0SB6\",\"hair \":\"0L020M0I0SK4\",haire:\"0S8M\",hairt:\"0S9P\",hais:\"0L0B0S0X110H\",\"hais \":\"0L070S32\",hait:\"03030L0N0S521108\",haith:\"0SG7\",haj:\"040O0P020U050V0L0Y0H10021105140Y1A081Q7P\",\"haj \":\"0Y0E14021A071Q8S\",hajde:\"0V1U\",haje:\"041V\",\"haje \":\"043C\",\"hak \":\"0B0U1F07\",haka:\"04LA11021F02\",\"haka \":\"04RZ\",hakk:\"11061C0X1F2T\",hakka:\"030311061C29\",hakkı:\"1F3T\",haks:\"11051C0V1F02\",haksi:\"11081C1O\",haky:\"1N35\",hakyk:\"1N3L\",halag:\"0D0G\",halam:\"0B0A0D081N27\",halaý:\"1N1X\",halb:\"0N0K1C0K\",hald:\"131M1F021Q0B\",hali:\"0D0B0U091A071F07\",hallg:\"1418\",halo:\"0B030D09140C\",halt:\"0N1U0R03100311081308140T1O0A\",halte:\"0N2G0R041O03\",halu:\"0D021195\",halua:\"11GJ\",halus:\"112M\",halv:\"0R070Z0T100B1108120C1402\",hambr:\"0L1A0O0G\",hampi:\"0B190L06\",hamw:\"043G\",hamwe:\"0464\",\"hana \":\"110C133D1A021N0L\",hanap:\"0D15\",hanc:\"0B060L0K0M0D0N050P060T0T0Z07\",\"hanc \":\"0T0V\",\"hand \":\"0L020M0G0N0M0R0N100K\",handa:\"0D0J1313\",hande:\"010I0L020M040N0P0R0Z0Z021008\",handl:\"0M050N070Z0U100G120T1A03\",hando:\"0O080P0P\",\"hang \":\"0D160M040N030R021403\",hanga:\"042Z0B0F0D0A\",hange:\"0L1A0M0Y0R06\",hangg:\"0D0U\",hangi:\"0D0B0M051F2X\",hank:\"0B030M0D0R05110I\",\"hann \":\"100413R9\",hanno:\"0Q3I\",hany:\"04260B1I14091A03\",hanya:\"0B2Z1404\",hanz:\"041O\",hanze:\"042Z\",hao:\"0S1W0V02\",haoi:\"0S0Q\",haon:\"0S0T\",hapo:\"0D0R\",hapon:\"0D1E\",happ:\"0L070M210R0B1104\",happe:\"0L070M1Q0R0D1102\",happy:\"0M0Y\",haq:\"0L0G0O021Q2G\",haqu:\"0L0R0O03\",haque:\"0L1B0O03\",\"hara \":\"0B090L020M020O020S3A0T06\",harao:\"0T0T\",harap:\"0B1U0D0D1407\",\"hard \":\"0M0T0R0K\",hardi:\"0D0G\",hardl:\"010L0M050R02\",harf:\"0N030S0M1F02\",harfa:\"0S2K\",harg:\"0B0R0L0A0M051Q0A\",harga:\"0B1I\",\"hari \":\"04F30B7M0D03\",harla:\"0O050S2T1N0X1Q0H\",harr:\"0N020S0M110C\",\"harr \":\"0S2K\",haru:\"0B4J0T05\",harus:\"0B8N\",\"has \":\"0D020M4B0O2K0P1R0S220T081N14\",hasa:\"0B4L0L0514041F031N0F\",\"hasa \":\"0B8O\",hash:\"043Y\",hasha:\"0464\",hasi:\"0B110U021105\",hasil:\"0B1I\",hasn:\"0M0C0U03\",hast:\"0N2R0O1H0Z031002110G1F121O021Q1O\",\"hast \":\"0N4K\",hasta:\"0O1W110I1F1G1Q2W\",hasz:\"141U1A05\",haszn:\"141V\",\"hat'\":\"0M1T\",\"hat's\":\"0M2C\",hata:\"0B0N100W130G140Y1F10\",hatan:\"0B191F02\",hatar:\"100Q\",hate:\"0M0J0P030R030T02120R1A02\",hater:\"120M1A04\",hath:\"0S13\",hatha:\"0S49\",hati:\"0B1D0D0A1102\",hato:\"0L020P02141H\",hats:\"04290L080P02140F1F0C\",\"hatt \":\"1007120K\",hatte:\"0L030N3N0R020Z0310031206\",hatı:\"1F0V\",hatır:\"1F16\",haus:\"03030L0E0M020N2K0T03110O\",\"haus \":\"0N1Y\",hause:\"0N1Q\",hava:\"0P0D110914081C0I1F131O4J\",havas:\"1F021O8K\",havd:\"0Z2W\",havde:\"0Z3I\",have:\"0M7P0P0K0R050Z351006120714031O07\",\"have \":\"0M9Q0P0A0Z31\",haven:\"0M0N0R060Z0F1O0A\",havi:\"0M0I0P0O14021O1D\",havia:\"0P0U\",havin:\"0M0L\",havis:\"1O1V\",havn:\"0Z091206\",\"haw'\":\"1Q4P\",hay:\"03020B080D150O2S1F2L1Q2A\",\"hay \":\"0D1S0O3T1Q08\",haya:\"0B0E0D080O0I1F1X\",hayat:\"1F1R\",haz:\"0O0A14131F101O03\",haza:\"0O03141I1O04\",hazu:\"1415\",hazı:\"1F11\",hazır:\"1F1D\",haç:\"1N20\",haça:\"1N2V\",haçan:\"1N3Y\",haý:\"1N25\",haýy:\"1N1O\",haýyş:\"1N27\",hał:\"1A0W\",hb:\"03050M020N040S091F021Q42\",\"hb \":\"0S0K\",hba:\"0N041Q04\",hbe:\"030H1F041QC2\",\"hbe'\":\"1QJ6\",\"hbe' \":\"1QOC\",hbo:\"0M041Q23\",hbog:\"1Q3U\",hbogh:\"1Q6J\",hc:\"0S0G0U290Y321A2E1Q0U\",hce:\"0U2J0Y7H1A1O\",\"hce \":\"0U210Y1X1A13\",hcel:\"0Y34\",\"hcel \":\"0Y2L\",hcem:\"0U0B0Y521A06\",\"hcem \":\"0Y5P\",hcesz:\"1A1S\",hcet:\"0U0H0Y1C\",hcete:\"0U0N0Y1N\",hceš:\"0U1G0Y25\",\"hceš \":\"0U1Z0Y2O\",hch:\"0S1C1Q33\",hcha:\"0S0V1Q06\",hchu:\"1Q46\",hci:\"0U251A21\",\"hci \":\"0U3H\",hcia:\"1A2S\",hciał:\"1A4F\",hcę:\"1A1A\",\"hcę \":\"1A1V\",hda:\"0M04110I1Q3V\",hdaq:\"1Q4S\",\"hdaq \":\"1Q83\",hde:\"03060N04112E\",hden:\"03030N03111F\",\"hden \":\"03071134\",hdes:\"1111\",hdi:\"0305110T1F041Q1L\",\"hdi' \":\"1Q4L\",hdo:\"1119\",hdoll:\"112C\",hdu:\"030311081Q06\",hdy:\"0U03110C\",hdä:\"1120\",\"hdä \":\"113A\",\"he'\":\"0M1U1Q0M\",\"he'd\":\"0M0O\",\"he'd \":\"0M0Y\",\"he's\":\"0M2F1Q0B\",\"he's \":\"0M3B\",\"hea \":\"0Q08110415041C2C\",heac:\"0S0V\",heach:\"0S3J\",head:\"0M0L1C0U\",\"head \":\"0M0J1C22\",heag:\"0S0Q\",heal:\"0M0A0S0T\",heam:\"0S0O0T031507\",hean:\"0S5X1103\",\"hean \":\"0S5X1107\",heann:\"0SDP\",hear:\"0M1E0S3A\",\"hear \":\"0M0J\",heard:\"0M0V\",heart:\"0M0E0S87\",heas:\"0S16\",heast:\"0S2T1103\",\"heb \":\"0RB71C0Y1Q08\",hebb:\"0R5P\",hebbe:\"0R7M\",hebt:\"0R28\",\"hebt \":\"0N020R31\",hece:\"0P13\",hech:\"0O1C0R021Q1P\",hecho:\"0O1L\",heci:\"0P0O\",\"hed \":\"03030M1I0Z1T1C0E1Q0E\",hedd:\"03040Z0G\",hedde:\"03050Z0K\",hede:\"010Q0R0C0Z1L110A1F04\",\"hede \":\"010S\",heden:\"0R0G0Z1A\",heder:\"0Z0O\",heds:\"0Z0A\",hee:\"010U03020M070Q0B0R3Z110O\",heef:\"0RAM\",heeft:\"0RDU\",heel:\"01150M020R221104\",\"heel \":\"0R2N\",heelt:\"010P\",heen:\"03020R0P110P\",\"heen \":\"0R0V110R\",heer:\"010F0M020R0I\",hef:\"0L040N040P060Z021004134S1502\",\"hef \":\"0L060N050Z031003132D1503\",hefu:\"1344\",hefur:\"138G\",hefð:\"1318\",hefði:\"1327\",heg:\"03030P1I0Q031303140A1Q58\",hega:\"0P18\",hegar:\"0P0X\",hegh:\"1Q9J\",\"hegh \":\"1Q6E\",heh:\"041Q0N031Q07\",hehe:\"04570N06\",\"hehe \":\"0491\",\"hei \":\"0P0F110K1209\",heic:\"0S16\",heice:\"0S3A\",heid:\"012P0N0M0R2W0S0V110X\",\"heid \":\"012O0N060R3C\",heidh:\"0S3J\",heim:\"0N0L0R0A133Z\",\"heim \":\"0N060R08132A\",heima:\"0N05131X\",heimi:\"1322\",hein:\"0L020N131107\",heir:\"0M1N0N0J0P1U0S0O\",\"heir \":\"0M28\",heiro:\"0P26\",heit:\"0N2H0P020S201111130T\",\"heit \":\"0N3E\",heith:\"0S7Z\",hej:\"040Z0U080V020Y060Z0210051A021O0R1Q1E\",hejm:\"1O15\",hejme:\"1O1G\",hek:\"0N020R0211041C0O1F041N0A\",heks:\"0Z0211041C0O\",heksa:\"11031C1H\",hela:\"0O080R04100Z150B1O03\",\"hela \":\"100Y1O03\",held:\"0M040N030R070Z0B12081324\",heldu:\"1335\",\"hele \":\"0R180U030Z1I121G1C13\",helem:\"0R11\",heli:\"0O020R040T02110Z14021C1Y1F071O02\",helis:\"1C3O\",helle:\"0L040N030Z0G10091108120H\",help:\"011R0M2A0R1L11141O1I\",\"help \":\"011U0M2L0R09\",helpe:\"0M0B0R1P1O02\",helpi:\"0M051O1E\",helst:\"0Z0B100B120C\",helt:\"03020N050Z0P100N11051212150C\",\"helt \":\"03030N030Z0U100N1211\",hely:\"143Y\",helye:\"1427\",hemiş:\"1N1Q\",hemm:\"0Z06100R1111120A1N4F\",hemma:\"100R110J\",hemme:\"0Z08120A1N55\",hende:\"0N0D0T020Z41120J\",heng:\"0D03110B120I\",heni:\"0T0B11041N0Z\",heniz:\"1N1D\",henk:\"0N0G0R051111\",henn:\"03050Z02103911031236132O1404\",henna:\"0304132X\",henne:\"0Z031039110412361F02\",henni:\"0306132T1403\",hent:\"0B150L060N030O020P030Z0711041403\",henti:\"0B29\",heo:\"0N020S1N0T02\",heoi:\"0S0T\",heol:\"0S0O\",hepd:\"1N1G\",hepde:\"1N1Z\",hera:\"046F0L020N0H0P020Q040T021403\",\"hera \":\"04AF0L02\",herb:\"0L040N050T0A13161A0C1O04\",herbe:\"0L070N03132H1O02\",herc:\"0L160T051404\",herch:\"0L1Z\",\"here \":\"0M9B0N040T03\",\"here'\":\"0M15\",herha:\"0R051F15\",heri:\"0M030N020O0A0Q030R0H0T12\",\"heri \":\"0T13\",herk:\"0N020R0611091F1H\",herke:\"0R081F21\",herm:\"0N020O1Y0R0C0T02110A\",herma:\"0O21\",hers:\"0D020L020M0W0N040R090Z03\",\"hers \":\"0L040M0L\",herse:\"0M0M0R05\",\"hes \":\"0L0W0M0M0N0U0O0D0P0I1108140F1Q09\",hese:\"0M0P0Q061402\",\"hese \":\"0M0Z0Q06\",hest:\"0M030N020Z0S1107120F130B1506\",heste:\"0N020Z0M120C\",\"het \":\"01QY0L020RQG101B1109122H143C1Q0L\",heten:\"100M121Q1403\",heter:\"0L1B0R020Z0210111102120X\",hetet:\"11041416\",heth:\"0M0F0T03\",hethe:\"0M0K\",heto:\"1P2E\",hetob:\"1P17\",hetom:\"1P1C\",heté:\"0L0P\",hető:\"141C\",heu:\"0L270N0T0P030R030T041107\",heur:\"0L3O0R02\",heure:\"0L5H\",heut:\"0N1S110C\",heute:\"0N2R\",hev:\"0L0I0U02110914021Q0J\",hew:\"03030B050M031Q0A\",hey:\"03040M3M13121F0D\",\"hey \":\"0M5L1F05\",\"hey'\":\"0M12\",\"hey'r\":\"0M0T\",heyr:\"131Q\",hez:\"04100L0V0Q020U0B140Y15071O02\",\"hez \":\"0L1D141W\",heze:\"042D140G\",\"heze \":\"0447\",heç:\"0P0D\",hf:\"0S4J\",hfa:\"0S1I\",hfac:\"0S11\",hfaca:\"0S41\",hfe:\"0S0I\",hfi:\"0S15\",hfid:\"0S11\",hfidh:\"0S49\",hfu:\"0S9Y\",hfui:\"0SBG\",hfuil:\"0SSF\",hg:\"0N031Q03\",hge:\"0N04\",hh:\"03040N0314071Q0F\",\"hia \":\"0P040Q0Q0T0311021506\",hiam:\"0Q2C\",hiama:\"0Q1P\",hiar:\"0Q0H152A\",\"hiar \":\"152V\",hiav:\"0Q0M\",hib:\"0O040T05140I1F0A\",hibá:\"1414\",\"hic \":\"0T42\",hich:\"0M0N0N0I1Q1L\",\"hich \":\"0M0W1Q28\",hici:\"0O0M\",hidu:\"0B1Y\",hidup:\"0B3Q\",hied:\"0N0M0Q1A0R06\",hiede:\"0N0J0Q0T0R08\",hiel:\"0M020N0C0O050R0L1P27\",\"hiel \":\"1P25\",hien:\"0L160N080Q030R0S110D\",\"hien \":\"0L1K0N0B0R121104\",hier:\"01A70L180N2G0O060Q0C0R3L11031O0O\",\"hier \":\"012N0L220N3O0R4G\",hiera:\"0Q031O1D\",hierd:\"0181\",hies:\"0Q1B\",hiest:\"0Q0T\",hif:\"0L020N030Q02\",hig:\"0D070M0A0N0814021Q09\",high:\"0M0I1Q0H\",higi:\"0D06\",hih:\"0D07110214021Q0O\",hihi:\"0D0C\",hii:\"1108150D1C0M\",hiin:\"1C0K\",hij:\"040L0B020O0Y0R4Q1Q1W\",\"hij \":\"0RFK1Q0W\",hijn:\"0R0Q1Q06\",hijo:\"0O13\",\"hijo \":\"0O0T\",hika:\"04650D031F0E\",\"hika \":\"0464\",hikan:\"042S0D02\",\"hil \":\"031F0D0U0R080T2O1F031Q09\",hila:\"0B0S0D060O02\",hilan:\"0B1K0D06\",hild:\"0M100N030R0D1F02\",hildr:\"0M0X\",hile:\"0M0J0O021F03\",\"hile \":\"0M0Q1F03\",\"hili \":\"1N4D\",hilig:\"03030D0P\",hilj:\"0V04110O1C0L\",\"him \":\"03020D020M3K0T021Q0N\",himb:\"042D1519\",himba:\"0447150Y\",himi:\"04490D040L020Q0311031308\",himis:\"045R\",himm:\"0N0B0Z031103120B1Q07\",hims:\"0M0T\",himse:\"0M14\",\"hin \":\"03050D1F0M050N0T0S0V112C1A021Q06\",\"hina \":\"0D050M060N060O0C0P070Q160R070T031507\",hinan:\"0D030Z0P\",hindi:\"0DD01F04\",hindu:\"043O0D020N021O02\",\"hing \":\"0D070M6P0R02\",hinga:\"043C0D08130X1Q10\",hings:\"0M14\",hini:\"0D0A\",hink:\"0M4Y0N021002110A\",\"hink \":\"0M61\",hint:\"03020D0I0N0K110G1402\",hinta:\"0D0P110P\",\"hio \":\"0Q0T0T03\",hion:\"0M020S0Z\",hios:\"0S2N\",\"hios \":\"0SAC\",\"hip \":\"0M0C0R061F0L1Q06\",hiq:\"0L031Q1O\",\"hir \":\"0B1D0L061F0B\",hira:\"04850D0I\",\"hira \":\"04BB\",hirah:\"0435\",hirap:\"0D0Q\",hiri:\"043K0O0215031Q0C\",hiriz:\"045L\",hirn:\"0B0G0N03\",hirt:\"0M0G0R050Z06140C\",\"his \":\"0L030MCM0T0F150Q1F021Q0L\",hiss:\"0L040Q03100411041F1B\",hisse:\"0L0410031F1R\",histó:\"0O020P0T\",hisz:\"14281A07\",hisze:\"141U\",\"hit \":\"03090D0M0L020M090T03100F120C\",hitl:\"1Q3P\",hitlh:\"1Q6B\",hits:\"041Z1102\",hitse:\"042Z1103\",hitt:\"0R0310161109131G140S\",hitta:\"0303101411021318\",hiu:\"0Q0I0T03110D1509\",hiv:\"0L050O0214041Q0X\",hiw:\"0D031Q03\",hiwa:\"0D06\",hiy:\"040F0D09\",hiya:\"0D0A\",hiyo:\"0D06\",hiz:\"0O0Q15051F05\",hizo:\"0O14\",\"hizo \":\"0O1H\",hiá:\"140D\",hiç:\"1F4B1N55\",\"hiç \":\"1F3C1N6Y\",hiçb:\"1F1P\",hiçbi:\"1F2B\",hiú:\"0S0I\",hj:\"0Z12100S1109121513121C071Q0N\",hja:\"0Z03110F120213051Q2E\",hjaj:\"1Q4F\",\"hjaj \":\"1Q7G\",hje:\"0Z0Y1108121Q\",hjel:\"0Z0D1105121W\",hjelp:\"121T\",hjem:\"0Z1T1221\",\"hjem \":\"0Z0Z1210\",hjemm:\"0Z14120W\",hjer:\"0Z0G120I\",hjert:\"0Z0F120F\",hjo:\"1106\",hju:\"0Z0310021C0I\",hjá:\"131O\",hjál:\"131V\",hjálp:\"133X\",hjä:\"10271107\",hjäl:\"102M\",hjälp:\"102F\",hjär:\"100E\",hjæ:\"0Z0J\",hjæl:\"0Z1F\",hjælp:\"0Z1Q\",hjó:\"130J\",hk:\"0B150N060U020Y07110E1C0Y1F02\",hka:\"0B1W110B1C0R1F02\",hkah:\"0B0U\",\"hkah \":\"0B1N\",hkan:\"0B2W1C0G\",\"hkan \":\"0B5811021C13\",hke:\"0N08110A1C191F02\",hkem:\"1C111F02\",\"hkem \":\"1C2J\",hki:\"1106\",hku:\"0B0Q0Y0511041C0Z1F02\",\"hku \":\"0B1F\",hkä:\"110E\",hkö:\"1108\",\"hl \":\"0N0L0U1P\",hla:\"0B030N0R0S3K0U2H0V0C0Y42110A130L1F071Q4O\",\"hla \":\"0U0M0Y0Z\",hlac:\"0N020S11\",hlach:\"0N030S2T\",hlad:\"0U110V0E0Y2S\",hladn:\"0U060V0Q0Y2O\",hlah:\"0B041Q6D\",hlai:\"0S2F\",hlaim:\"0S8M\",hlap:\"0U0K0Y0V\",hlas:\"0U100Y1E1102\",hlav:\"0U0V0Y16\",\"hle \":\"0N0I0U5K\",hled:\"03020U17\",hlen:\"03030N12\",\"hlen \":\"03040N1N\",\"hli \":\"0B030U0I0Y0Z1N0Q\",hlieb:\"0Y0Z\",hlj:\"130L\",hlo:\"0N090S190U0H0Y0P1Q0I\",\"hlo \":\"0U0A0Y15\",hlog:\"0S181Q0Y\",\"hlog \":\"0S4Z\",hlt:\"0N0F\",hlu:\"0N070U0B0Y0B13121Q1U\",hlut:\"1313\",hly:\"0M020U02\",hlä:\"0N05\",hlü:\"0N04\",\"hm \":\"0N0U\",hme:\"030C0N0S11091F021Q5D\",\"hmeh \":\"1Q5Z\",hmen:\"03030M020N11\",\"hmen \":\"03040N1N\",hmey:\"1Q6Q\",\"hmey \":\"1Q8S\",hmi:\"0N04111Q1A071F07\",hmis:\"112H\",hmise:\"112P\",hmo:\"11021Q2Z\",\"hmo' \":\"1Q4Q\",hmu:\"0B060N031A03\",hmä:\"110F\",\"hn'\":\"1F0B\",hna:\"0N060S0N0U090Y041A021Q0A\",hne:\"0N1T0S170U0H0Y191106130615031F021Q0F\",\"hne \":\"0N1B0S1A0U04\",\"hned \":\"0U0T\",hnen:\"0N1J\",\"hnen \":\"0N2I\",hnev:\"0Y12\",\"hneď \":\"0Y0X\",hnh:\"0N04\",hni:\"0L020N040U100Y0A15031A0B1Q1J\",\"hni \":\"0U1M1A06\",hnl:\"0N05\",hno:\"0U181A02\",\"hno \":\"0U1K\",hnt:\"0N0B\",hnu:\"0N080U070Y07\",hny:\"0B0S0U0M110U\",\"hny \":\"0U11\",hnya:\"0B1J\",\"hnya \":\"0B30\",hnyt:\"111H\",\"hnyt \":\"113N\",\"ho'\":\"0M051Q1V\",hoa:\"1106\",hobo:\"04MQ\",hobor:\"04S8\",hobu:\"1C0R\",\"hoc \":\"0T5V\",hoch:\"0N0E0U021QBA\",\"hoch \":\"0N0A1QFC\",hode:\"0L030N020R020U050Y0G120I1A07\",hodet:\"120C\",hodi:\"0T1V0U2L0Y281O13\",hodia:\"1O26\",hodie:\"0T1U\",hodil:\"0U0W0Y0K\",hodin:\"0U230Y1H\",hodl:\"0U0Q0Y0B\",hodn:\"0U2W0V090Y0V1A03\",hodně:\"0U2W\",hodz:\"1A2D\",hodzi:\"1A2Y\",hodí:\"0U0Z0Y1G\",hoe:\"012J0M050R1S\",\"hoe \":\"01330R3J\",hoef:\"0R0L\",hoek:\"011S0R05\",hoeko:\"011T\",hoev:\"010J0R1D\",hoeve:\"010K0M020R1U\",hof:\"0N0D0P02\",hog:\"0O050R020S0P14BW1Q1Z\",hogh:\"0S0Q1Q3P\",\"hogh \":\"1Q4N\",hogy:\"14OC\",\"hogy \":\"14OI\",hogya:\"141H\",hoh:\"0N021Q7H\",\"hoh \":\"1Q6L\",hoi:\"0L0E0M030S31110P1C0P\",hoil:\"0S1C110B\",\"hoil \":\"0S4R\",hoin:\"0S0O1103\",hoj:\"0O050P1Q0U020Y0711071Q46\",hoje:\"0P241103\",\"hoje \":\"0P2O\",\"hok \":\"0D09\",hola:\"0O070P050T190V031102\",hold:\"0M090Z35122K140A\",\"hold \":\"0M080Z0W120I1405\",holde:\"0Z27121E\",holdt:\"0Z0N120K\",hole:\"0M0D0N090R020T020U021A03\",holn:\"141S\",holna:\"141V\",\"hom \":\"013R0M020U0W0V020Y0B1Q52\",\"homa \":\"0T121O0A\",homae:\"0T27\",homan:\"0T2E1O02\",homb:\"0O1X\",hombr:\"0O2I\",home:\"04190M1M0P1J0T05\",\"home \":\"04290M1U\",homem:\"0P1G\",homh:\"0S2A\",\"homh \":\"0S3S\",homha:\"0S2T\",homi:\"0T2O\",homin:\"0T2T\",homm:\"0L2111061C211Q0Q\",homme:\"0L3F0R021C3B1Q0R\",hommi:\"11021C1S\",\"homo \":\"0R020T1411051O16\",homoj:\"1O2O\",homá:\"0S131402\",homái:\"0S2T\",hona:\"03020S18\",honai:\"0S3J\",hond:\"011E0R1K\",\"hond \":\"01120R1D\",hono:\"0L020M020O030T08103414031A021O041Q0B\",honom:\"1034\",honu:\"0T0L133O\",honum:\"0T0N137K\",hoo:\"01170M0S0R1F11021C0J\",hoof:\"010F0R14\",hoofd:\"0R1I\",hool:\"0M120R1B1C0H\",\"hool \":\"0M1D0R1K\",hoop:\"0R0S\",\"hoop \":\"0R0X\",hoor:\"011V0R1B\",\"hoor \":\"011A0R0D\",hoord:\"0R0W\",hoort:\"010Q0R06\",hope:\"0M0W0R050U091105\",\"hope \":\"0M0X\",hopp:\"0M050P020Z04101211021209\",hoppa:\"100W1104\",\"hor \":\"0P2L0T031Q06\",hora:\"0L020O3L0P300T1M1A04\",\"hora \":\"0O3Y0P1Q0T0U1A07\",horas:\"0O0R0P1J0T0G\",hore:\"0M020P0I0R0I0U020Y0I1A02\",horl:\"010H0L020R071O07\",horlo:\"010I0L040R0A1O0E\",horo:\"041Z0P040T0F1A091O0T\",\"horo \":\"043I1O0X\",horr:\"0L070M030O0C0P0Y0T0B\",horro:\"0O050P12\",hort:\"0M090T15\",\"hos \":\"0O1F0P220T050Z0B100C120A1Q4J\",hosa:\"03020P040S0M\",hose:\"0L3B0M0P0N041102\",\"hose \":\"0L430M0X0N04\",hoses:\"0L1M\",hosp:\"010H0M080O0A0P0B0T060U020Z081O031Q09\",hospi:\"010I0L020M0B0O0D0P0C0T050Z091O06\",hossz:\"1411\",\"hot \":\"03020M0D0Q02100211021Q14\",\"hou \":\"01450M020P0S0R1W0U0L\",houd:\"0R34\",houde:\"0R21\",houdt:\"0R1S\",houg:\"0M2E\",hough:\"0M39\",houl:\"0M2R\",hould:\"0M3S\",hour:\"0M0H\",hous:\"0L020M1D0R020U021106\",house:\"0M1O\",hout:\"0M0P0R060U02\",\"hout \":\"0M0X0R05\",hova:\"0P020U0S0Y0O140P\",hoved:\"0Z171209\",hovo:\"0U090V030Y95\",hovor:\"0U050YB4\",how:\"0M250P021A0J1N1I\",\"how \":\"0M3H0P02\",howa:\"1A0J1N18\",\"howa \":\"1N1J\",hoy:\"0D020O161Q1N\",\"hoy \":\"0D030O1S1Q2S\",hoz:\"142P\",\"hoz \":\"1433\",hozz:\"142J\",hozzá:\"142D\",hoć:\"0V0U1A04\",hoď:\"0U030Y0I\",hoş:\"1F1I1N0C\",hoşl:\"1F10\",hoşla:\"1F1E\",hp:\"1Q26\",hpu:\"1Q7A\",\"hpu'\":\"1QCW\",\"hpu' \":\"1QHC\",hq:\"1Q19\",hqu:\"1Q2L\",\"hqu'\":\"1Q4U\",\"hqu' \":\"1Q5W\",\"hr \":\"0N4G0Z031305\",\"hra \":\"0T0Z0U04\",hrac:\"0S0M\",hrad:\"0U0O0Y1I\",hraj:\"0U0T1Q06\",hraje:\"0U0S\",hral:\"0Y16\",hras:\"0L0U\",hrase:\"0L1F\",hraí:\"0S1E\",hraím:\"0S32\",hrd:\"0U060Y0U\",hre:\"0M0P0N3I0R070S170Y051106130D1F04\",\"hre \":\"0N2F1F02\",hrea:\"0M050S0M\",hree:\"0M120R0C\",\"hree \":\"0M1E\",hrei:\"0N111102130A\",hren:\"0N35\",\"hren \":\"0N4F\",hrer:\"0N1G\",\"hrer \":\"0N1T\",hrh:\"0N09\",hrij:\"0R12\",hrijv:\"0R0U\",hrin:\"131B1F05\",hring:\"132R\",hrl:\"0N06\",\"hro'\":\"1Q4L\",hrou:\"0M0I\",hroug:\"0M0P\",hrs:\"0N06\",hrt:\"0N0H\",hru:\"0N050T050U060Y0M1Q06\",hry:\"0T020Y04\",hrá:\"0S0P0U140Y12\",hræ:\"130L\",hrí:\"0S0M\",hs:\"0M030N0Y0S071F07\",\"hs \":\"0L020M070N05\",hse:\"0N081F0G\",hst:\"0N0Z\",\"hst \":\"0N1B\",hta:\"0S3N111F1C0K1F0F1Q80\",\"hta \":\"0S26110A1C0L\",\"hta'\":\"1Q3Y\",\"hta' \":\"1Q5S\",htah:\"1QB2\",\"htah \":\"1QDG\",htai:\"0S0X1107\",htain:\"0S2K1104\",htb:\"0N02\",\"hte \":\"0N410R0V0U051F02\",htem:\"11071F10\",hteme:\"1F1D\",hten:\"0M030N1F0R2A1105\",\"hten \":\"0N2A0R2K\",hter:\"0M0B0N0V0R1V\",\"hter \":\"0M0C0N140R1J\",htg:\"0R02\",hti:\"0M020N0P0R0C111Q1C161F1O\",\"hti \":\"111D1C0X\",htig:\"0N1O0R13\",\"htig \":\"0N1D0R11\",htiy:\"1F1S\",htiya:\"1F2G\",htl:\"0N041C0E\",htn:\"1C11\",htne:\"1C0L\",\"htne \":\"1C1H\",htnu:\"1C0Q\",htnud:\"1C1S\",hto:\"0U040Y09110U\",hts:\"0M050N0Y0R061C13\",\"hts \":\"0M090N1Z0R0E\",htsa:\"0N031C0S\",htsal:\"1C1H\",htt:\"0R03\",htu:\"0N0511181C32\",htul:\"1C0N\",\"htul \":\"1C1H\",htum:\"0N0211081C0N\",htus:\"1C14\",hty:\"110I\",htá:\"0S0I\",htä:\"111F\",htú:\"0S0P\",htúi:\"0S0O\",htě:\"0U1V\",htěl:\"0U2Q\",\"htěl \":\"0U2V\",\"hu'\":\"1Q88\",\"hu' \":\"1QAA\",\"hua \":\"111O\",huai:\"0S1L\",huaig:\"0S4I\",hub:\"0B080D030O0H0U051Q09\",hubu:\"0B0F\",huc:\"0P060T0K1Q28\",\"huc \":\"0T13\",huch:\"1Q45\",\"huch \":\"1Q5J\",hue:\"0O0H1102\",\"hug \":\"0M020S1C\",huga:\"0D020S0O1315\",hugh:\"1Q76\",\"hugh \":\"1QBQ\",hugs:\"131F\",hugsa:\"132V\",hugu:\"043O\",\"hugu \":\"046A\",huh:\"0N0511051Q0I\",hui:\"011C0B0B0L120O020R1A0S5V0T0I110M\",\"hui \":\"0B0J0L1H110A\",huid:\"0R050S0Q\",\"huid \":\"0R030S2T\",huig:\"0S16\",huil:\"010J0L030R0K1102\",\"huil \":\"010K0R02\",huin:\"0S2R1104\",huine:\"0S8E\",huir:\"0O020S1Y\",\"huir \":\"0O020S58\",huis:\"012J0R3Z1104\",\"huis \":\"01270R4G\",huiu:\"0T0R\",huius:\"0T0T\",huj:\"0B0K0U080Y0D11041Q0D\",huja:\"0B131106\",hujan:\"0B241102\",huk:\"04110B0I0D02110C1F02\",huko:\"041R0Z03\",\"huko \":\"0435\",huku:\"0B0L11021F02\",\"hul \":\"010J0Z05\",huld:\"0N0R0R0U\",huli:\"0D0C\",hull:\"016303020Z02110H1205140C1C0K\",hulle:\"016G0Z02\",hulp:\"010N0R0N\",\"hulp \":\"010L0R0R\",\"hum \":\"0P0J0T07\",huma:\"0D050L0G0M0A0O0K0P0U0T0C110I1Q1A\",humi:\"0D0B0L030O020P020T0411061O02\",\"hun \":\"0B2O0R1D0S470Z8J110M12A31Q0O\",hund:\"0M060N140O030Z3A101Q121N131S1O0R\",\"hund \":\"0N0Z0Z1T100R120I130B\",hunde:\"0N0W0Z1I100G120T\",hundo:\"1O1E\",hundr:\"0M070Z0R1008120C1317\",hung:\"042Z0M0B0N0W100C1O031Q1B\",hungu:\"044Q\",huo:\"113Q\",huol:\"111C\",huom:\"112T\",huome:\"113L\",huon:\"112O\",huone:\"114G\",hup:\"11041Q0E\",huq:\"1Q1N\",\"hur \":\"0S1C104V1Q0I\",hure:\"043Y0R02\",\"hure \":\"046Y\",huri:\"043D11021F02\",\"huri \":\"043V1102\",hurt:\"0M0D0Z0N10021Q09\",hurti:\"0Z0R\",\"hus \":\"0T0D0Z1B100Z120H1Q06\",huse:\"0Z0N100W1219\",huset:\"0Z0O100V1215\",hush:\"042H1002\",husk:\"030A0Z0J120L\",huske:\"0Z0K120I\",hutl:\"1Q4U\",hutlh:\"1Q7Z\",huu:\"0R02110T\",huv:\"0P0D100L110C1C0Z1Q07\",huvi:\"110C1C16\",huvit:\"110O1C2Q\",huvu:\"100S\",huvud:\"100S\",huw:\"0D0M0R04\",huwa:\"0D12\",huwag:\"0D1X\",huy:\"0O021F021Q0A\",hva:\"0U020V180Z271108122Q135P1C0K1F081Q8M\",\"hva \":\"1106126R\",hvad:\"0Z5Q1Q9A\",\"hvad \":\"0Z6W1QF2\",hvam:\"1Q6T\",\"hvam \":\"1Q97\",hvar:\"131P\",\"hvar \":\"133G\",hvað:\"137L\",\"hvað \":\"13CW\",hvaða:\"132N\",hve:\"0Z1C1102121R137T1F0L1Q13\",hvem:\"0Z1R11031221\",\"hvem \":\"0Z241221\",hver:\"0Z1U122E13BF1F02\",\"hver \":\"0Z1N121K135D\",hvera:\"120H\",hverj:\"137C\",hvern:\"135I\",hvers:\"1357\",hvi:\"0U040Y090Z1A110M121D1C0M1Q57\",hvid:\"0Z0O\",hvil:\"0U060Z1311031214\",hvilk:\"0U070Z17120Y\",hvis:\"0Z1R1105121Y1Q92\",\"hvis \":\"0Z24121W1QEQ\",hvit:\"120G\",hvo:\"0Z3C123D13141Q0H\",hvor:\"0Z8O1289131R\",\"hvor \":\"0Z5V1245130F\",hvord:\"0Z1I1220\",hvorf:\"0Z2M122K\",hvorn:\"0Z12\",hvort:\"132N\",hvu:\"1C0J\",hvus:\"1C0O\",hvé:\"0O04\",hví:\"0U050Y0B130M\",hwa:\"030B040L0B0Z0N091A04\",\"hwa \":\"0306041K0B1W\",hwe:\"0N0Q0Z021002\",hwi:\"0N0F1A0F1Q4Z\",\"hwi'\":\"1Q6B\",\"hwi' \":\"1Q7J\",\"hwij \":\"1Q4I\",hyb:\"0U0Y0Y0P1A0E\",hyd:\"0T03\",hye:\"1104\",hyg:\"1203130A\",hyl:\"100311061A02\",hym:\"1107\",hyp:\"0L021107\",hyr:\"10031N0E\",hys:\"0L030M020U060Y0C1002\",hyt:\"0U0B0Y0911051N09\",hyv:\"114K\",hyvi:\"113A\",hyvin:\"1170\",hyvä:\"1152\",\"hyvä \":\"115R\",hyvää:\"112W\",hyö:\"110C\",hz:\"0N030R02\",hze:\"0N030R03\",há:\"0O020P0M0S2J0U190Y10130S142Z\",\"há \":\"0P2J0S0W0U0G0Y0B\",háb:\"0O030P03140C\",hád:\"0U090Y181307\",hádz:\"0Y1U\",hádza:\"0Y25\",hái:\"0S4H1402\",háil:\"0S1C\",\"háil \":\"0S58\",háin:\"0S22\",\"háin \":\"0S4R\",háini:\"0S3J\",háir:\"0S1C\",\"háir \":\"0S32\",hán:\"0U071414\",hány:\"142T\",\"hány \":\"141X\",hár:\"0Y0F13091412\",háro:\"1426\",három:\"142A\",hát:\"0S0P0U04130F140S\",háth:\"0S0T\",hátha:\"0S3A\",ház:\"0U0T141U\",háza:\"1420\",házas:\"1411\",hází:\"0U0Q\",\"hází \":\"0U0S\",hâ:\"1F0J\",hâl:\"1F1E\",hâlâ:\"1F1J\",\"hâlâ \":\"1F23\",hât:\"0L06\",hã:\"0P0F\",\"hã \":\"0P1J\",hão:\"0P0A\",hä:\"0N10103N115S1C0P1N0X\",\"hä \":\"110I\",häf:\"0N081002\",häi:\"110B1C0B\",häk:\"1104\",häl:\"0N08100F11021N0E\",häls:\"100D\",häm:\"100I1109\",hämt:\"0N02100N\",hämta:\"100N\",hän:\"0N0A101E11HN\",\"hän \":\"11KG\",händ:\"0N0B101A\",hände:\"0N0F1010\",häne:\"11A2\",hänel:\"116Z\",hänen:\"11CN\",hänet:\"113J\",hänt:\"10081124\",häntä:\"1154\",här:\"107R1102\",\"här \":\"109X\",häs:\"1008110H1C10\",häst:\"100A110E1C19\",hästi:\"1C34\",hät:\"0N0N1107\",hätt:\"0N1F1102\",hätte:\"0N2D\",häv:\"1002110B\",häz:\"1N1B\",häzi:\"1N1W\",häzir:\"1N2M\",hää:\"110A1C0E\",hå:\"0Z0L100X120F\",håb:\"0Z08\",håbe:\"0Z0J\",håber:\"0Z0J\",håg:\"100A\",\"håg \":\"100D\",hål:\"101Q\",håll:\"1026\",\"håll \":\"100J\",hålla:\"100L\",hålle:\"100X\",hån:\"0Z0C1209\",hånd:\"0Z0W120N\",\"hånd \":\"0Z0E1209\",håp:\"120B\",håpe:\"120M\",håper:\"120D\",hår:\"0Z0C100P1205\",\"hår \":\"0Z0H100G1205\",hård:\"0Z0B1004\",hæ:\"0T070Z0A130W\",\"hæ \":\"0T02\",hæc:\"0T0B\",hæn:\"0Z0A\",hænd:\"0Z0F\",hænde:\"0Z0G\",hæng:\"0Z0E\",hær:\"1305\",hæs:\"1303\",hæt:\"130Z\",hætt:\"131M\",hæv:\"0Z02\",hç:\"1F05\",hçe:\"1F0C\",hè:\"0L04\",hèq:\"0L05\",hèr:\"0L05\",hèt:\"0L08\",hé:\"0L0E0O020Q0X0S220U090Y0A130S140W\",\"hé \":\"0L0X0O030Q3K0U0E0Y0P\",héa:\"0S44\",héad:\"0S11\",\"héad \":\"0S3A\",héan:\"0S38\",héana:\"0S9X\",hée:\"0L07\",héi:\"0S1Z\",héil:\"0S13\",héile:\"0S4I\",hém:\"0L040U02\",héo:\"0L03\",hér:\"0L080O02131D1409\",\"hér \":\"131D140G\",hés:\"0L07\",hét:\"0L02140T\",héz:\"140G\",hê:\"010C\",\"hê \":\"010K\",hí:\"0O060S2I140T\",\"hí \":\"0O0F0S5J\",híc:\"0O02\",hío:\"0S10\",hír:\"0S0N140D\",hís:\"0O03\",hív:\"140Y\",hó:\"0O020S151305140B1A0D\",\"hó \":\"0O061405\",hói:\"0S0R\",hón:\"0S151409\",hóna:\"0S1A140O\",hónaí:\"0S58\",hór:\"0S0I\",hô:\"0L02\",hôp:\"0L05\",hôt:\"0L06\",hõ:\"1C03\",hõe:\"0P06\",hö:\"0N14101J1103130M14091N0E\",höf:\"0N021310\",höfu:\"131A\",hög:\"100O1402\",höj:\"1004\",hök:\"1N0J\",höl:\"100B11041409\",höll:\"0N02100F\",hön:\"0N0J1103130A\",hör:\"0N0Z1016\",\"hör \":\"0N06100D\",höra:\"100D\",hörd:\"100F\",hörde:\"100E\",höre:\"0N0V\",hört:\"0N141009\",hös:\"10031403\",höv:\"1025\",höve:\"102F\",höver:\"102F\",hø:\"0Z0U120X\",høf:\"0Z02\",høj:\"0Z0F\",\"høj \":\"0Z09\",høje:\"0Z0G\",høn:\"0Z03\",hør:\"0Z0K120T\",høre:\"0Z0Q121A\",\"høre \":\"0Z0D120H\",hører:\"0Z0H120K\",hørt:\"0Z0R120Q\",\"hørt \":\"0Z0I120C\",hørte:\"0Z0F120F\",høs:\"1204\",høst:\"0Z03120A\",høv:\"0Z05\",høve:\"0Z0D\",høver:\"0Z0E\",høy:\"120G\",\"høy \":\"120A\",høye:\"120G\",hú:\"0S0X133S140G\",\"hú \":\"0S1N\",húi:\"0S0V\",hún:\"0P021373\",\"hún \":\"13B6\",hús:\"131C140C\",húsi:\"131J\",húsið:\"1320\",húz:\"140B\",hü:\"0N0914071C051F04\",hül:\"0N04140D\",hüt:\"0N05\",hý:\"0U070Y0G\",hýb:\"0U030Y0O\",hă:\"1502\",hę:\"1A0D\",hī:\"0T02\",\"hī \":\"0T02\",hīc:\"0T03\",hı:\"1F0G\",hır:\"1F0A\",hız:\"1F0O\",hľ:\"0Y0L\",hľa:\"0Y1I\",hľad:\"0Y1Z\",hľadá:\"0Y10\",hł:\"1A0D\",hō:\"0T0T\",hōm:\"0T1T\",hōma:\"0T0Z\",hōmā:\"0T2I\",hōmās:\"0T2I\",hōr:\"0T02\",hő:\"1404\",hř:\"0U04\",hş:\"1F02\",hš:\"0Y03\",hūc:\"0T02\",hů:\"0U07\",hű:\"1404\",hṛ:\"0303\",\"i'\":\"0M271F0D1QA2\",\"i' \":\"0Q031QLD\",\"i'd\":\"0M0H1F031Q0W\",\"i'd \":\"0M0W\",\"i'l\":\"0M0Q1Q0X\",\"i'll\":\"0M1D\",\"i'll \":\"0M1V\",\"i'm\":\"0M2A1Q0X\",\"i'm \":\"0M45\",\"i'n\":\"1F0P1Q0D\",\"i'p\":\"1Q1R\",\"i'pu'\":\"1Q5K\",\"i's\":\"0M0D\",\"i's \":\"0M0O0R06\",\"i'v\":\"0M0R1Q18\",\"i've\":\"0M1E1Q0G\",\"i've \":\"0M1W\",\"i'w\":\"1Q1M\",\"i'y\":\"1F08\",\"i-a\":\"030H156P\",\"i-a \":\"0305156N\",\"i-am\":\"152F\",\"i-am \":\"1532\",\"i-b\":\"1P0Q\",\"i-bi\":\"1P0V\",\"i-bin\":\"1P0Z\",\"i-d\":\"0331\",\"i-d \":\"0325\",\"i-h\":\"0B06\",\"i-i\":\"030O1104\",\"i-j\":\"0L06\",\"i-k\":\"030B1P0V\",\"i-ka\":\"1P11\",\"i-kan\":\"1P17\",\"i-l\":\"0B0G0L020P0715051P1A\",\"i-la\":\"0B0V0P021P0J\",\"i-lak\":\"0B1P\",\"i-m\":\"03030L0A0P0615071O04\",\"i-n\":\"031B15031P0M\",\"i-o\":\"0P0215031P0E\",\"i-s\":\"030R0B021P0E\",\"i-t\":\"031C1P0J\",\"i-v\":\"15091O031P0M\",\"i-ä\":\"1P0Y\",\"ia'\":\"0M031F03\",\"ia-\":\"0B020P051505\",iaa:\"0B030R04111C1C0V\",iaal:\"0R0511071C0Y\",iaan:\"0B070R0B1119\",\"iaan \":\"0B0C112G\",iac:\"0O030Q4I0S0N0T0N0Y2B14021A0B\",\"iac \":\"0Y2A\",iacc:\"0Q16\",iacci:\"0Q11\",iace:\"0Q510T060Y0T\",\"iace \":\"0Q34\",iacer:\"0Q1N0T03\",iaco:\"0Q060T0V1402\",iacob:\"0T0W\",\"iad \":\"0S4514031A0D\",iadk:\"0Y0Y1A05\",iadku:\"0Y16\",iadn:\"0Y0Z\",iado:\"0O1W0P0O1A0O1O02\",\"iado \":\"0O290P0M1O03\",iae:\"0T2N\",\"iae \":\"0T4O\",iagg:\"0Q15\",iaggi:\"0Q15\",iah:\"0B080Y08\",iai:\"0L070P090Q070S19110E140415051B5U\",\"iai \":\"0Q07140815091B84\",iain:\"0S0Z1105\",\"iain \":\"0S41\",iais:\"0L030P0B110G1B16\",\"iais \":\"0L030P0E1B2G\",iaj:\"0O0I0P0D1A0V1O3O\",\"iaj \":\"1A0Y1O3K\",iajn:\"1O2B\",\"iajn \":\"1O4K\",iak:\"0B080V050Y0K110714091A06\",iama:\"0P020Q1Q0R0214021B0H1O07\",iame:\"0O070P080Q0M1B0T\",\"iame \":\"1B1N\",iamo:\"0O030P020QCY1B02\",\"iamo \":\"0QCW\",\"iana \":\"0O090P070Q130T0C15051A05\",iand:\"0L080O0A0P040Q0T1B271O05\",iandi:\"1B4K\",iando:\"0O0D0P040Q0T1O09\",iang:\"03020B0Q0Q0G\",\"iang \":\"0B1B\",iante:\"0L070O0V0P0E0Q051O03\",ianu:\"0T0U1503\",ianç:\"0P18\",iança:\"0P1K\",iao:\"0Q0214021O02\",iap:\"0B200Q0P0T0G\",\"iap \":\"0B1R\",iapa:\"0B23\",\"iapa \":\"0B3J\",iapo:\"0T0T\",iapon:\"0T0S\",iapp:\"0Q130Z02\",iappo:\"0Q13\",iaq:\"0T03\",\"iar \":\"0B040M030O1E0P0Q0T05152U1A05\",iare:\"0O020P020Q3W0T050Y0I1505\",\"iare \":\"0Q3X0T040Y0H\",iark:\"0B0K1A03\",iarr:\"0S3E\",iarra:\"0SCX\",iasa:\"0B131402\",iasi:\"0Q09110B1B14\",\"iasi \":\"0Q09110J1B2C\",iast:\"0O020Q02110L1A1C\",\"iat \":\"03030B0C0T0T0Y0E110E152N1A0B\",iata:\"0B070O060P070Q180T0414141A07\",\"iata \":\"0Q110T041A0A\",iatal:\"1415\",iate:\"0L090M0C0Q1H0Y3415051A021B08\",\"iate \":\"0M060Q1B15071B0H\",iateľ:\"0Y2S\",iato:\"0O040Q3X0T050Y0C11021A031B02\",\"iato \":\"0O040Q3U\",iatt:\"0Q0B141B\",\"iatt \":\"1415\",iau:\"0L021102150E1BDO\",\"iau \":\"150M1BF8\",iaus:\"1B4I\",iausi:\"1B7T\",iav:\"0P030Q0P0T041B0U\",iavo:\"0Q071B0T\",iay:\"0B03\",iaz:\"0Q020Y0L150B1A06\",\"iaze \":\"0Y12\",iaç:\"0P04\",iaĵ:\"1O03\",iaľ:\"0Y0Q\",\"iaľ \":\"0Y11\",iał:\"1A8P\",\"iał \":\"1A4K\",iała:\"1A2I\",\"iała \":\"1A2D\",iałb:\"1A1L\",iałby:\"1A2J\",iałe:\"1A3R\",iałem:\"1A48\",iaŭ:\"1O0R\",\"iaŭ \":\"1O12\",iaț:\"1517\",ibag:\"041Z\",ibagi:\"043I\",ibang:\"0B090D12\",ibaz:\"0472\",ibaza:\"048Q\",ibazo:\"043V\",ibb:\"0Q02\",ibd:\"1Q07\",iben:\"03030N100O020T1B140I\",\"iben \":\"03060N1N0O03140J\",ibent:\"0T0Z\",\"iber \":\"0N020T1A0Z02150O\",ibere:\"0T0X1O0E\",ibet:\"0T070Z0B\",ibh:\"0S5I\",\"ibh \":\"0S5V\",ibig:\"0D0W\",\"ibig \":\"0D0H\",ibiga:\"0D12\",ibik:\"04391P0F\",ibile:\"0Q130T051507\",ibin:\"044T0D091B021F03\",ibint:\"044Q1B03\",ibir:\"047I0O0O1B031F02\",ibira:\"043C\",ibiri:\"048Q\",ibis:\"041Z0D020T0L1O09\",ibit:\"042R0Q020T1F1O031Q0A\",\"ibit \":\"0T17\",ibita:\"042Z1O06\",ible:\"0D030L1P0M0Q0O1D\",\"ible \":\"0D040L2B0M0Z0O1J\",iblo:\"1P0X\",iblod:\"1P12\",\"ibo \":\"0D050O030Q0I0T0U1P0F\",ibon:\"04320D0B1O06\",ibona:\"0435\",ibos:\"1P0U\",ibri:\"0N020Q0M0T0J\",ibro:\"0D0K0O220Q1K0T0U1O1E\",\"ibro \":\"0D0Q0O1X0Q1K0T051O0U\",ibros:\"0O0T0T0O\",ibru:\"0T1R\",ibrum:\"0T1U\",ibt:\"03030N0V\",\"ibt \":\"03020N22\",\"ibu \":\"0B0W1D1S1O03\",ibuk:\"041K0B0W\",ibum:\"0B040T0S\",\"ibum \":\"0T0U\",ibus:\"0P0J0T7Q1Q08\",\"ibus \":\"0P0O0T80\",ibw:\"040G\",ibá:\"140G\",ibí:\"0O04\",ibē:\"1D1M\",ibēj:\"1D18\",ibēju:\"1D1W\",ibēt:\"1D0S\",icad:\"0O0N0P0M\",icae:\"0T0U\",\"icae \":\"0T0W\",ical:\"0L070M0P0O060P030Q03150C\",\"ical \":\"0L050M0R0O040P04\",\"icam \":\"0P060T3A\",\"icar \":\"0O0I0P21\",icara:\"0B4K0P08\",\"icas \":\"0O140P0P0T0H\",icat:\"0L0J0M0C0O030P040Q130R030T11151S1F02\",icc:\"0O0A0Q110T021409\",icco:\"0Q0R\",icen:\"0309041K0L020M030O0E0P040Q0J0T0Y0Z021504\",icer:\"0M020O020Q050T1G0Z051005\",icere:\"0R020T170Z05\",icet:\"0Q020T1M0U0B\",\"icet \":\"0T190U0E\",iceá:\"0S18\",iceái:\"0S3J\",iche:\"0L0Q0M030N4F0O020Q1N0T031Q2M\",\"iche \":\"0L0S0N200Q1I\",ichen:\"0N2M1Q0G\",icher:\"0N2E0Q03\",ichn:\"0N0B0U1J\",ichni:\"0U25\",\"icho \":\"0O0S0T030U040Y0B1A06\",icht:\"0NLF0R2V1Q06\",\"icht \":\"0NPQ0R28\",ichte:\"0N2L0R0M\",ichti:\"0N270R0K\",ichts:\"0N3C0R05\",icia:\"0M080O0W0P0H0Q0B0T0K150E1A051B021O05\",icien:\"0L0D0M020O100P0K0Q070T0B150S\",icil:\"0L0T0Q0P0T11150P1F03\",icile:\"0L1D0Q0L0T0G150D1F03\",icim:\"0O030S0M0T040V04\",icinā:\"1D1R\",icio:\"0M050O1B0P0M0Q0J0T0I153I1O05\",\"icio \":\"0O0S0Q0I0T0F150W1O06\",iciod:\"152V\",icis:\"0O080Q040T1R0U041D0X1O04\",\"icis \":\"0T0T1D1M\",icit:\"0L090M020O050P020Q070R050T2W0Z03151X\",\"icit \":\"0T1N151D\",iciu:\"0T0P1515\",iciz:\"0Q0L\",ició:\"0O0J\",icka:\"101D\",\"icka \":\"100Q\",icke:\"0L030M0H0N0G0R03100P\",icker:\"0M020N02100I\",\"icky \":\"0U0U0Y11\",icl:\"0L030M020O0A0P0B0Q060T03150K\",\"ico \":\"04EZ0O3I0P2R0Q3M0R040T0S0Z021O0B\",icol:\"0L030O020Q0X0T09150J\",icon:\"04190L060Q0N0T021O04\",icor:\"0O020Q0U0T0B\",icord:\"0Q0T0T05\",icos:\"0O130P0P0T0M15061B02\",\"icos \":\"0O1G0P0V0T0N15081B04\",icou:\"0P0W1505\",\"icou \":\"0P15\",icq:\"0T02\",icr:\"0O020P020Q021502\",ics:\"0M051413\",icsi:\"141R\",icsit:\"141C\",ictu:\"0M0C0T111504\",\"icu \":\"0V0Z0Y1M\",icul:\"0L0L0M0I0O0A0P0E0T2R151M\",iculo:\"0M020T12150G\",icult:\"0L0B0M0J0O070P040T06150A\",iculu:\"0T0U1507\",icum:\"04320T1Y\",\"icum \":\"0T1X\",icumi:\"044K\",icur:\"0B050Q1Q\",icuro:\"0Q0S\",icus:\"0R030T21\",\"icus \":\"0R040T26\",icy:\"0M041A0I\",icz:\"1A1N\",icí:\"0O0C0P030U03\",icò:\"0Q02\",icó:\"0O070P0214031A05\",icā:\"0T03\",ică:\"152S\",\"ică \":\"1546\",icē:\"0T031D0M\",icī:\"1D1E\",icīg:\"1D1J\",icīgs:\"1D21\",\"id-\":\"033X\",idad:\"0D0D0O4K0P4X1C0I1O02\",\"idad \":\"0D0O0O4O\",idade:\"0O0I0P54\",idado:\"0O0U0P111O02\",idag:\"100R1C3D\",\"idag \":\"100R\",idagi:\"1C81\",idak:\"03030BJU1102\",\"idak \":\"03050BS3\",idar:\"0O0E0P0A0Q0M0T0710051B131F03\",idas:\"0O0N0P0P11051B0B1C221O0W\",\"idas \":\"0O0T0P0V11051B0N1C521O1S\",idata:\"1C1O1O02\",idc:\"0T02\",idda:\"010F0R0E0Z0E100I120N1402\",iddag:\"010G0R0J0Z0H100H120N\",idde:\"010J03020M020R0Y0Z0O120A14031F07\",iddel:\"010K0R0V0Z0512081403\",idder:\"0R040Z0G\",\"idea \":\"0M0N0O0S0Q0M110E\",ideac:\"0S4Z\",idean:\"0S2T1105\",ideb:\"0T0P14041F081O06\",ided:\"0M0H1B09\",\"ided \":\"03020M0O\",idee:\"0N0B0Q050R0M0Z051206150Z\",ideg:\"0305141I1B021O02\",idei:\"0P0T140A15091B02\",ideia:\"0P0Z\",\"idel \":\"0U020Y3D1P1N1Q0A\",idela:\"0V0T0Y171O03\",ideli:\"0R0J0T040V0A0Y110Z021B1E1F09\",\"idem \":\"0T1H0U0A0V180Y0Y\",\"ider \":\"03020L1S0M070N0H0R060Z0N1007120I15071F0D\",idere:\"0M040Q0L0T190Z0812091F02\",\"ides \":\"0L0G0M050N020O0A0P020T0V1C13\",idet:\"031K0N070T1H0V0C110G120F14081O07\",\"idet \":\"033F0N0B0T0N120F1409\",idetu:\"0T0S\",idg:\"0M03\",idh:\"0SBJ\",\"idh \":\"0SD6\",idic:\"0L030Q030T10150Q\",idici:\"0T0W\",idie:\"0L040O060T0I0Y0Z\",idieť:\"0Y10\",idig:\"0N050R020Z04100P12071N1K1O03\",idigi:\"1N251O03\",idigt:\"0N03100F\",\"idim \":\"0V1O\",idiom:\"0O0X0P0M\",idip:\"1F041N12\",\"idip \":\"1F061N1E\",idir:\"030U042H0O040P050Q020S521F2G1N0P1O03\",\"idir \":\"031O0L020O030P040R020SH81F3B1N0N\",idiri:\"044E\",\"idis \":\"03050T081B021O39\",idit:\"03060L020Q060T1Y0U040V0411041O02\",\"idit \":\"030B0T1X0U041107\",idiy:\"03021F0W\",idiyo:\"1F18\",idió:\"0O0J1404\",idli:\"03090U040Z0P120O\",idlig:\"0Z0V120O\",\"idn'\":\"0M4Z\",\"idn't\":\"0M6Q\",idob:\"14041P1P\",\"idob \":\"1P1L\",idol:\"0Q021P1L\",idom:\"1B071O041P26\",\"idom \":\"1P27\",idon:\"0L020Q020T0511021O0A1P0T\",idos:\"0D020O150P1311031B061O07\",\"idos \":\"0D030O1F0P181B0A1O0D\",idq:\"0T091Q05\",idst:\"0U020Z1W\",\"idst \":\"0Z0G\",idste:\"0Z1T\",idt:\"03020Z0K12041Q04\",\"idt \":\"03020R050Z1E1207\",idup:\"0B1W\",\"idup \":\"0B2G\",idur:\"0B1V0O021B0C\",\"idur \":\"0B3G\",idus:\"041K0T0L1B051C16\",\"idus \":\"0L020T0L1B0A1C1V1O02\",idy:\"030K0T2E1B04\",idym:\"0T4I\",idymu:\"0T45\",idz:\"1A221D1B\",idzi:\"1A2C1D0J\",idzia:\"1A1V\",idã:\"0P06\",idä:\"113Z\",\"idä \":\"111C\",idän:\"114I\",\"idän \":\"11AK\",idät:\"111G\",idæ:\"0T02\",idè:\"0L04\",idé:\"0L150O040P020S0W0U0P0Z02100B12031407\",\"idé \":\"0L0J0O040U150Z04100A1205\",idéa:\"0L020S0T\",idée:\"0L0W1002\",\"idée \":\"0L17\",idê:\"0P03\",idí:\"0O040U1G0Y1X\",\"idí \":\"0O020U140Y08\",idím:\"0U0X0Y2B\",\"idím \":\"0U110Y25\",idó:\"0O05\",idö:\"1P1E\",idön:\"1P1I\",\"idön \":\"1P1R\",idý:\"1N14\",idýä:\"1N1L\",idýär:\"1N1Q\",idā:\"1D0H\",idą:\"1A021B0A\",idē:\"0T05\",idė:\"1B13\",idėj:\"1B10\",idě:\"0U20\",iděl:\"0U2K\",\"iděl \":\"0U2K\",idět:\"0U0P\",\"idět \":\"0U10\",idī:\"1D1P\",idīt:\"1D17\",\"idīt \":\"1D2F\",idő:\"141S\",idž:\"1B14\",idži:\"1B1T\",idžia:\"1B2C\",ieb:\"0N1M0O040T0Z0Y0N1A1N1B031D0N\",\"ieb \":\"0N0G0Y0X\",ieba:\"0T1I1A02\",iebam:\"0T0U\",iebe:\"0N2D1A0B\",ieben:\"0N1R\",iebi:\"1A1Y\",iebie:\"1A33\",\"iec \":\"0Y0B1A1H\",iecar:\"151V\",ieci:\"0O040Q0D0T081A1W1D23\",\"ieci \":\"0Q0C1A1R\",iecie:\"1A0W1D1W\",iecin:\"1D2Y\",iecz:\"1A1Y\",iecī:\"1D0U\",\"ied \":\"0L0B0M2D0N0G0R0B1403\",ieda:\"0O090P080Q031A051B061P1D\",\"ieda \":\"0Q031B021P1J\",iede:\"0N2F0Q160R26110A1A041D0W1O02\",ieder:\"0N2X0Q0K0R2J\",iedi:\"0Q0M15071O03\",iedo:\"0O0L0Q0C0Y0811081A041B021D1P1O05\",\"iedo \":\"0O0R0Q0B1O02\",iedod:\"1D2F\",iedy:\"1A38\",\"iedy \":\"1A3U\",iedz:\"1A7I1D1L\",iedzi:\"1AA5\",iedä:\"113Z\",\"iedä \":\"1145\",iedän:\"112S\",iedät:\"112T\",iedā:\"1D0S\",iee:\"0R02\",ief:\"01210M030N0J0R111504\",\"ief \":\"01450M050N0S0R15\",iefd:\"0R0R\",ieft:\"0N020R1U1507\",\"ieft \":\"0R2H\",\"ieg \":\"01150N0D0R031A09\",iege:\"0N0Z0R0L\",iego:\"0M030O080Q081A2R1B12\",\"iego \":\"0M040O080Q081A491B0C\",ieh:\"0N0Q0Y08110R\",iei:\"0L0B0P030Q0K0T03151B1A02\",\"iei \":\"0P030Q0W0T0515261A02\",iej:\"0O0E1A5C1B0H\",\"iej \":\"1A4I\",iejs:\"1A1Z\",iejsc:\"1A1G\",iejsz:\"1A1O\",iek:\"010U0R0Q0Y4D110914051A2G1B851D8N\",\"iek \":\"011A0R1O0Y0R14081A191B3N1D23\",ieka:\"0Y0S11031A0R1B4J1D1A\",iekad:\"1B54\",iekas:\"11021B2V1D1D\",ieke:\"0R0R0Y1R1402\",ieked:\"0Y1X\",ieki:\"1A0B1B0E1D0X\",\"ieki \":\"1A021B031D1W\",ieko:\"0Y261A071B2I1D0J\",\"ieko \":\"0Y0N1B56\",ieks:\"0R051B021D20\",\"ieks \":\"0R041D43\",iekt:\"0R080Y1C1A0C1B06\",iekto:\"0Y1N\",ieku:\"1A0C1B0O1D13\",\"ieku \":\"1A0F1B041D2K\",iekv:\"1B1Q\",iekvi:\"1B3K\",iekš:\"1B021D20\",iela:\"0Y081A0G1B0A1D171O02\",iele:\"0N2I0Q020R060Y0K112P1A1Q\",\"iele \":\"0N2K0Q020R030Y0I1A211O02\",ieles:\"0N03112R\",ieli:\"0Q0H112615061A181B021D1C1P0E\",ielis:\"11131A021D2A\",iell:\"0L070N0M0Z031008111K12061C0L\",iellu:\"1C1H\",iellä:\"112Z\",ielo:\"0O0H0Q0U1A0E1B041O0A\",iels:\"0L020N030Y0E0Z0211021A18\",ielsk:\"0Y0H1A1X\",ielt:\"0N0T0R020Z03111O1209\",ieltä:\"113V\",ielu:\"110H1A0M1C0K\",ielä:\"112J\",\"ielä \":\"1151\",ielā:\"1D11\",ielāk:\"1D1W\",\"iem \":\"0T160Y6B15061A5X1B041DDA\",iema:\"01280N130R2L110F1A041B03\",ieman:\"012D0N1F0R3G110Z\",ieme:\"0L020Q0K0R020T050Y0K11031B03\",iemp:\"0O4V0Q03\",iempo:\"0O3N\",iempr:\"0O2V\",iems:\"0T031B1C\",\"iems \":\"0T031B2S\",\"iemy \":\"1A1F\",iemā:\"1D0S\",iemāc:\"1D1R\",iena:\"0Q080T0411041A0G1B481D4S\",\"iena \":\"0Q070T021B331D5Y\",ienai:\"1B081D21\",ienas:\"1B531D2Y\",ienc:\"0L0N0M0F0O0P1A031O0I\",ience:\"0L130M0K1A041O03\",ienci:\"0O0X1O05\",iend:\"01280L0P0M1G0O4B0Q050R2Q0T180Z021006120B\",\"iend \":\"010X0M0X0R1A\",iende:\"01100O0I0R1M0Z0210061209\",iendo:\"0O4I\",iends:\"0M0Y0R05\",iendu:\"0T0X\",\"iene \":\"0N030O6T0Q0W1205\",ienen:\"0N0B0O1I0R08110D\",ienes:\"0O2F0P0211071D21\",ieni:\"0N020Q0D0R02110X150C1A4A1B1R1D0Q\",ienia:\"1A1R1B0M\",ienk:\"0Y0S1A081D18\",ienkā:\"1D32\",ienm:\"1D1J\",ienmē:\"1D3Z\",ienn:\"0L190T02110Q1A0Q\",ienne:\"0L2511051A04\",ieno:\"0Q060T03110D1B1W1D0S1O04\",\"ieno \":\"0Q07110C1B1N1O05\",ienos:\"11031B1P\",\"iens \":\"0L3B0N030R080T0U0Z0410021D7I\",\"ient \":\"0L8A0M0C0N0C0R090T09150F\",iente:\"0L060N060O3L0P190Q1W0T0L0Z0510021506\",ienti:\"0L080M050P060Q0E0T12\",iento:\"0O3E1A031O0B\",ientr:\"0O0T0Q02\",ienu:\"0T021B081D31\",\"ienu \":\"1B091D7N\",ienā:\"1D1Y\",\"ienā \":\"1D2A\",ieną:\"1B39\",\"ieną \":\"1B6M\",ienī:\"1D1C\",ienį:\"1B0U\",\"ienį \":\"1B1Q\",iep:\"0R0815031A0M1B061D1J\",\"iep \":\"0R0L\",iepi:\"0R031D0W\",iepil:\"1D1R\",\"iera \":\"0L030O2S0Q0Z0Y0B15051A0K1B021O03\",ieraŭ:\"1O1C\",ierd:\"017L0O0F0R05151P1A0C\",ierdi:\"017Y\",\"iere \":\"0N0S0O1Y0Q0P0T030Z05150I1O0E\",ieren:\"0N2Q0O0J0R1E\",ieres:\"0O1L0T07110A1D1D\",ieri:\"0N0H0Q1G0R070T0O1103151X1B0C1D0M\",\"ieri \":\"0Q1G0T0B11041528\",iern:\"0N020O0X0R020T020Y0V0Z04100215031A09\",iero:\"0O4T0Q0B0R020T020Y0L11031A0J1O0M\",\"iero \":\"0O430Q0B11021A0A1O0P\",ieron:\"0L020O2B11031O0D\",ierr:\"0L0A0O0T1102\",ierra:\"0O0W\",iers:\"010H0L110M0B0N040R071A07\",\"iers \":\"0L1R0M0E0R07\",iert:\"0L020N2H0O1I0R05110415091A02\",\"iert \":\"0N32\",ierto:\"0O171103\",ierz:\"0N031A271B02\",iesa:\"0Q061A021B0Q1D0J\",\"iesa \":\"0Q061B1G\",iesc:\"0Q1P0T08151E\",\"iesc \":\"151T\",iesco:\"0Q0Y\",iese:\"010S0N610O070Q090Y08140215061B04\",\"iese \":\"0N370O070Q0915081B07\",ieser:\"0N2A\",ieses:\"0N2H\",iesi:\"0N040Q03110K1A1B1B1J1D0J\",iesio:\"1A031B1M\",iesp:\"1A041D23\",iespē:\"1D3Z\",iesta:\"0O0V0Q031B0P\",iesz:\"1A4R\",\"iesz \":\"1A3L\",ieszk:\"1A2F\",iesą:\"1B0T\",\"iesą \":\"1B1O\",iesī:\"1D0W\",iesīb:\"1D2A\",ietas:\"0T031B061D1M\",\"iete \":\"0N040O0F0Q2J0R0D0T020Y1G1D211O02\",ieten:\"0N060R0E11071532\",ieti:\"0R060T030Y08110E1B0W1D251O021P0J\",ietie:\"1D3Q\",ietj:\"010Z0R02\",ietji:\"0112\",ieto:\"0O040P030Q020Y1H110W1A021B0R1D0Q1O03\",\"ieto \":\"0O040P020Y1I11031B031O03\",iets:\"012K0R4J0Z0214021B06\",\"iets \":\"012Q0R5W0Z03\",ietu:\"0T070U021B0K1D0U\",ietä:\"112J\",ietää:\"114A\",ieu:\"0L2Y0R0M1A04\",\"ieu \":\"0L13\",ieur:\"0L130R02\",ieuw:\"0R23\",ieuwe:\"0R1H\",ieux:\"0L2D\",\"ieux \":\"0L40\",ieva:\"0O020Y281B071D0Q\",ieve:\"0M0V0O0A0R141B04\",\"ieve \":\"0M0W0O0D0R0E1B07\",ievi:\"1B031D23\",ievie:\"0N031D3Z\",ievč:\"0Y1C\",ievča:\"0Y1E\",iew:\"01070M031A22\",iewa:\"1A1B\",iewe:\"010F\",iez:\"0L1O0O0N0R040Y0J150N1A0I1D2M\",\"iez \":\"0L230O0L150M\",\"iez-\":\"0L0R\",\"iez-v\":\"0L19\",iezg:\"1D0X\",iezga:\"1D2F\",ieß:\"0N0G\",ieć:\"1A1U\",\"ieć \":\"1A2K\",ieč:\"0Y1Z1B0J\",ieči:\"1B0U\",iečo:\"0Y2W\",\"iečo \":\"0Y3D\",ień:\"1A0Y\",\"ień \":\"1A19\",ieņ:\"1D0R\",ieś:\"1A1F\",ieści:\"1A1D\",ieš:\"0Y1H1B2A1D3N\",\"ieš \":\"0Y1V1B1A\",ieša:\"1B091D0U\",ieši:\"1B0B1D0W\",\"ieši \":\"1D21\",iešk:\"1B10\",ieško:\"1B1J\",iešu:\"1B031D1J\",\"iešu \":\"1D3Q\",iešā:\"1D1H\",iešām:\"1D3Q\",ieť:\"0Y24\",\"ieť \":\"0Y2U\",iež:\"0Y0O1B0H1D1H\",\"iež \":\"0Y10\",ieži:\"1B071D1G\",\"ieži \":\"1D3G\",ieș:\"1512\",\"if \":\"031G0B080L0G0M1L13071F0H1P32\",ifar:\"042R0Q031306\",ifara:\"044X\",ifat:\"03020429\",ifata:\"042S\",\"ife \":\"0M1D0N021F02\",ifer:\"030I0N040O0M0P0M0Q060T06150Y1O09\",ifere:\"0O0T0P0S150N1O0H\",iffer:\"0M0N0Q0A0T031103\",iffi:\"0L0V0M0D0Q0R0T13\",iffic:\"0L1H0M0I0Q0R0T15\",iffé:\"0L0N\",\"ifi \":\"1F021P0T\",ific:\"0L090M080O1A0P120Q1I0R020T1Z151R\",ifica:\"0L080M050O110P0Y0Q0O0T16150S\",ifik:\"0B060U031O021P1Q\",ifiko:\"0U031O021P1F\",ifis:\"0445\",ifise:\"047A\",ifl:\"0Q021F031P0B\",ifos:\"1P0T\",ifr:\"0305100J1F02\",ifrå:\"100O\",ifrån:\"100O\",ifs:\"03020L061306\",\"ift \":\"03080M070N0A0R080Z0Q100B120G130914021F05\",ifte:\"0M030N040R040Z0R100D120L1F02\",iful:\"0M0E1205\",\"iful \":\"0M0J\",ify:\"03020M02\",ifí:\"0O0I0P0Q\",ifíc:\"0O0S0P0W\",ifíci:\"0O110P12\",ifö:\"1P0C\",ifø:\"0Z02\",\"ig-\":\"0302\",igad:\"0O060P0P10021O03\",igado:\"0O060P0P1O04\",igal:\"1B031C1K\",\"igal \":\"1C3O\",\"igan \":\"03090D0Z0O041O04\",igard:\"1O27\",igare:\"0L060M020N040Q050R040U040Z07100H14071B061O04\",igari:\"042S0D08\",igas:\"0D030O0E0P09100614021B021O1L\",\"igas \":\"0D030O0I0P0B1B051O36\",igay:\"0D0F\",\"igay \":\"0D0M\",igaz:\"1448\",\"igaz \":\"140Y\",igaza:\"1413\",igazá:\"1410\",igd:\"0D020R0C1A1B\",\"igd \":\"0R0Q\",igde:\"0R0K\",igdy:\"1A1T\",\"igdy \":\"1A2W\",igea:\"0L040S16\",igean:\"0L030S49\",\"igen \":\"030H0N3E0O040R1K0Z1H103E1205140X\",\"iger \":\"03060L080N1I0Q0D0R0C0T080Z1S1003\",igere:\"0N030R030T060Z0Q120F\",iges:\"0L030N0D0Z0D1002\",igg:\"03070M030Q070R020Z0J100U120C13071402\",igge:\"03030M040R090Z1C1010120R\",igger:\"0M040Z141010120M\",\"igh \":\"0M0D0S7T1Q18\",igha:\"1Q4M\",ighaj:\"1Q7B\",ighe:\"01140M030R0J0Z1U1012122J1Q0Y\",ighed:\"0R060Z29\",ighei:\"010T0R0K\",ighet:\"1012122K1Q0K\",igho:\"1Q4T\",ighr:\"1Q4L\",ighro:\"1Q7S\",ight:\"0L020M4O0Z02\",\"ight \":\"0L030M5G\",igie:\"010W0L030N020O020Q020R030T04\",igiet:\"010P\",igif:\"042Z\",igifa:\"044Q\",igih:\"048E\",igihe:\"04AQ\",igihu:\"0441\",igik:\"042H\",igil:\"0D0B0O030Q020T0H1C0G1O03\",igim:\"03030S0M1B021N1Y\",igimi:\"1N22\",\"igin \":\"03090N030S5X130G\",igine:\"0L060R020T031N1Z\",iging:\"0D0F0R0G1B03\",igini:\"0D020Q021NB5\",igint:\"0T0U1O02\",igir:\"043V0P091B02\",igira:\"045F\",igis:\"043D1O25\",\"igis \":\"1O46\",igish:\"0441\",igita:\"04590P040T071O1E\",igitu:\"044E0T0Q\",igiň:\"1N15\",igiňi:\"1N1B\",igj:\"120M\",igje:\"121K\",igjen:\"121K\",igk:\"0N0C\",igke:\"0N0V\",igli:\"0N030Q4G0V06\",iglia:\"0Q1H\",iglio:\"0Q21\",igm:\"03071B02\",igne:\"0L190M050N040T0M0V0B0Z0H1002120E\",igner:\"0L0F0M020Z0D1207\",igni:\"0L0D0M030N020O0F0P0D0Q0A0T0T0Z02130D1O0H\",\"igo \":\"0D040O2R0P320Q040T071B091O0C\",igos:\"0O0Y0P151B051O0E\",\"igos \":\"0O190P171B091O0R\",igs:\"0N060Z0812081B05\",igst:\"0N0D0R040Z0J120J\",\"igst \":\"0N030Z0E1209\",igt:\"010H03060D030L040N0K0R070Z2A10531B0D1D0J\",\"igt \":\"03060L030N0Y0R0R0Z4Q106P\",igte:\"0N0F0R020Z09\",igti:\"010Q0Z171B0F\",igtig:\"010G0Z1G\",\"igu \":\"0V0H1B1N1O0N\",igua:\"0O0N0P070Q0H\",igue:\"0L080O0J0P07\",\"igur \":\"0N02151N\",igura:\"0D0D0O030P030Q020V1T150Z\",igurn:\"0V1V\",igus:\"0T031B0L1C3A1O02\",\"igus \":\"0T041B171C4L1O04\",igust:\"1C2D\",igv:\"0Z07120D\",igvi:\"0Z0E120W\",igvis:\"0Z0H120W\",igy:\"0D0414121B03\",igya:\"0D08\",igye:\"141S\",igyel:\"141N\",igz:\"03021D0E\",igå:\"100D\",igår:\"100F\",\"igår \":\"100F\",igé:\"0L091404\",igê:\"0P04\",igė:\"1B0A\",igų:\"1B0S\",\"igų \":\"1B1A\",\"ih \":\"03040B4J0U050V4Q1F0E1Q62\",\"iha \":\"0U0K0Y1911061C0G\",ihan:\"04150B0J0D0U111U1F03\",\"ihan \":\"0B0S0D1G1134\",ihat:\"0B4X11041402\",\"ihat \":\"0B7M\",ihd:\"110B1Q09\",ihe:\"0306044X0D020N060Z021004110Z1204140C1Q0X\",\"ihe \":\"04CV0N031103\",ihen:\"03020D030N061112140B\",\"ihen \":\"03020N0A112L\",ihet:\"1005120A1408\",ihi:\"030G040O0B020D0U0T5T111E1F07\",\"ihi \":\"030B0T881F03\",ihil:\"0D020T2R\",\"ihil \":\"0T2U\",ihin:\"030504110D11112D1F03\",\"ihin \":\"030B0D181152\",ihiy:\"0D07\",ihj:\"0Z041003\",ihje:\"0Z0A\",ihk:\"0B0611051C0P\",ihka:\"0B0D1C0V\",ihm:\"0N0O111U1C0N1Q0B\",\"ihm \":\"0N1O\",ihma:\"1C0R\",ihmi:\"112Z\",ihmis:\"115Z\",ihn:\"0N1C0U060Y0B15051Q03\",\"ihn \":\"0N23\",ihne:\"0N130U080Y091505\",ihnen:\"0N1U\",iho:\"040M0U070V08100A110A14021Q0U\",\"iho \":\"041R\",ihop:\"100D\",ihr:\"0N2W1105\",\"ihr \":\"0N40\",ihre:\"0N36110A\",\"ihre \":\"0N2L\",iht:\"110L1C1F1F1M1Q0X\",ihti:\"11021C0H1F1U\",ihtiy:\"1F2C\",ihtn:\"1C0L\",ihtne:\"1C1H\",ihts:\"1C0N\",ihtsa:\"1C1L\",ihu:\"0303041U0U0N0Y1B11041Q0J\",\"ihu \":\"0U110Y28\",ihug:\"043O\",ihugu:\"046G\",ihv:\"0V051Q25\",ihva:\"0V061Q3W\",ihvad:\"1Q6J\",ihy:\"0U080Y0N\",\"ihy \":\"0U0D0Y14\",ihå:\"100A\",ihåg:\"100D\",iia:\"110V1C14\",\"iia \":\"1C12\",iian:\"111I\",\"iian \":\"113O\",iid:\"110E1C0G\",iie:\"1C0E\",iig:\"1C1X1O06\",iiga:\"1C1B\",\"iiga \":\"1C37\",iigi:\"1C0O1O05\",iih:\"110R\",iihe:\"1112\",iihen:\"112L\",iii:\"0T02150I\",iik:\"112A1C0W\",iikk:\"1118\",iiko:\"1115\",iil:\"110K151A1C0D\",iile:\"1108151N\",\"iile \":\"1524\",iim:\"11161B0F1C0V\",iima:\"11021B031C0V\",iime:\"111Y\",\"iime \":\"112U\",iin:\"0D0E0Y0A119U150K1C3E1O02\",\"iin \":\"0D040Y0811C91C39\",iina:\"110Q1C0N\",iini:\"0D021113\",iinn:\"111V\",iinno:\"112L\",iino:\"0D07\",iint:\"0D08110E\",iinä:\"1112\",\"iinä \":\"112J\",iip:\"110C\",iir:\"11141C211F04\",iire:\"11121C18\",iires:\"1C1L\",iis:\"0D070T111004111S14021C2R1O0O\",\"iis \":\"0D020T1S11081C1T1O0Y\",iisa:\"0D030N021006110G1C0X\",iisi:\"0D09111Q\",iit:\"0D080T0O113O150Q1C0S1O02\",\"iit \":\"0D0D0T191104\",iito:\"111F1517\",iitos:\"112U\",iitt:\"111A\",iitä:\"1139\",\"iitä \":\"117L\",iiv:\"110M1C0I\",iiĝ:\"1O04\",\"ij \":\"03050R810U031A0L1QCA\",\"ija \":\"0O0F0P020V2Z110T14071A041B571DEG\",ijai:\"110C1B0Y1D1N\",\"ijai \":\"1B1Z1D48\",ijap:\"1P0Z\",ijapü:\"1P15\",ijas:\"0O0311051B091D40\",\"ijas \":\"0O041B0F1D9X\",ijat:\"0U030V1I110B1Q4O\",ijate:\"0U020V3C\",ijatl:\"1Q7U\",ijb:\"0R021Q0C\",ijd:\"03020R1Q0U0J1Q0X\",\"ijd \":\"0R4E\",ijde:\"0R1F0U0P\",\"ijde \":\"0R050U0R\",ijden:\"0R1I\",\"ije \":\"045E0O0E0R0G0U100V880Y1D14041A091N0V\",ijem:\"0U050V0H0Y181Q08\",\"ijem \":\"0V120Y131Q0D\",ijf:\"0R0O\",\"ijf \":\"0R1G\",ijft:\"0R0N\",ijg:\"0R0B\",ijge:\"0R0T\",ijgen:\"0R0S\",ijh:\"1Q0B\",\"iji \":\"0U070V1J150E\",ijk:\"0R3I\",\"ijk \":\"0R8I\",ijke:\"0R2K\",\"ijke \":\"0R1V\",ijken:\"0R16\",ijks:\"0R0K\",ijkt:\"0R16\",\"ijkt \":\"0R1K\",ijl:\"0R0615061Q0J\",ijm:\"0U031A021Q0K\",ijn:\"0R871Q06\",\"ijn \":\"0RN9\",ijna:\"0R0P\",\"ijna \":\"0R0X\",ijne:\"0R0K\",ijnl:\"0R0J\",ijo:\"040L0O1U0P0A0V08110F150C1B3G1Q0E\",\"ijo \":\"0O2C0P081B0T\",ijoj:\"1B1P\",ijoje:\"1B37\",ijor:\"041O150L\",ijoro:\"042Z\",ijos:\"0O0I1B2Q\",\"ijos \":\"0O0O1B5D\",ijp:\"0R081Q0B\",ijs:\"0R0G0V091A021D0H\",\"ijs \":\"0R131D0M\",ijt:\"0R0C1Q08\",\"ijt \":\"0R13\",\"iju \":\"0U080V1W1D3Y\",ijv:\"0R0F1Q08\",ijve:\"0R1J\",ijven:\"0R1U\",ijw:\"040P1Q09\",ijwe:\"041R\",\"ijwe \":\"0435\",ijz:\"0R08\",ijze:\"0R0L\",ijä:\"110D1N0L\",ijí:\"0U0H\",ijā:\"1D27\",\"ijā \":\"1D29\",iją:\"1A021B1J\",\"iją \":\"1A021B2I\",ijų:\"1B09\",\"ik-\":\"03020B06\",\"ika-\":\"0D0D\",\"ika- \":\"0D0N\",ikaa:\"0R081132\",\"ikaa \":\"114Z\",ikaan:\"0R0A112E\",ikad:\"0D030V2D10031F041O02\",\"ikad \":\"0V2U\",ikada:\"0V3910021F04\",ikah:\"0B0Q1102\",ikai:\"111E140O1B1D1D27\",\"ikai \":\"140L1B291D5L\",ikais:\"112Y1B0J\",ikal:\"0D030N020V03110P1B1Z1F09\",ikam:\"0N030U040Z0311051A021B091D1E1F021O04\",\"ikam \":\"0U051D3C\",\"ikan \":\"03020B8D0D08111B1F081O0B\",ikang:\"0D0I\",ikas:\"0B070D04111112051B1N1C141D0S1F031O06\",\"ikas \":\"110W1B3C1C2D1D1W1O0D\",ikaw:\"041D0D0A\",\"ikaw \":\"0D0I\",ikb:\"1402\",ikd:\"0U2S0Y261B021N0S\",ikde:\"0U031N0Z\",ikdo:\"0U1V\",\"ikdo \":\"0U2M\",ikdy:\"0U2O0Y3M\",\"ikdy \":\"0U3P0Y4H\",ikea:\"112H\",ikeas:\"112H\",ikel:\"03080B080M0H0N040R060Z03100311031B081F09\",ikely:\"0M0O\",\"iken \":\"030O0N040R0T100F111R1F03\",ikene:\"042Z\",iker:\"03090N0B0R080Z0D100B1104123F1419\",\"iker \":\"0N0F0R090Z09100912391404\",ikes:\"0M0F11061C0O\",\"ikes \":\"0M0L\",ikia:\"11021B46\",\"ikia \":\"11041B7O\",ikib:\"0426\",ikim:\"0V0311021B161F04\",ikint:\"04531B0K\",ikinä:\"112W\",ikir:\"044X0B2A11051F0I1N60\",\"ikir \":\"0B321F0B1N4T\",ikira:\"045F0B0M\",ikiri:\"1N33\",ikit:\"030B0B0P0D0G11031B0F1O02\",\"ikit \":\"030O0B1C0D05\",ikita:\"0D0O1O04\",ikiu:\"1B12\",ikiy:\"04261F03\",ikið:\"131R\",\"ikið \":\"133O\",\"ikk \":\"123E\",ikka:\"03090B03113F14021C121F0V\",\"ikka \":\"113I1C22\",ikkat:\"1F16\",ikke:\"010J03170R0R0ZL5110Y12NR1406\",\"ikke \":\"0R040ZMS12MK\",ikkel:\"010G031K0R0I0Z04110F120A1403\",ikken:\"0R080Z0F1104120J\",ikker:\"0R070Z1V121K\",ikket:\"0Z06120D1402\",ikki:\"115E\",\"ikki \":\"1196\",ikko:\"111D\",ikku:\"0B0C111F1C0R\",ikle:\"03020D030Z0512081F2D1N2J\",\"ikle \":\"1F1P\",ikler:\"0Z021F0Y1N3G\",ikli:\"03070D020Z021209140P1B0J1F0B1N0G1O02\",ikm:\"0B0713051F02\",ikn:\"0B0C0U030V021005130914031A061F0G\",ikny:\"0B0N\",iknya:\"0B1B\",ikob:\"1P3S\",\"ikob \":\"1P4D\",ikod:\"0D031P5W\",\"ikod \":\"0D061P67\",ikoi:\"1114\",ikoj:\"11031B061O0T\",ikol:\"1002110M14031F051O071P3I\",\"ikol \":\"1P1U\",\"ikol-\":\"1P12\",ikols:\"1P12\",ikom:\"04190U0B0V0E0Y0E11021A051B061P13\",\"ikom \":\"0V0R0Y0A1P11\",ikor:\"047F0D081102144M\",\"ikor \":\"144S\",ikora:\"047L\",ikore:\"042Z\",ikos:\"0U02110F1B0U1P2F\",\"ikos \":\"11051B1L1P0O\",ikosi:\"1B061P27\",ikra:\"14031B2U1F02\",ikrai:\"1B3B\",ikras:\"1B1K\",ikri:\"0Z031B0S1F0L\",ikrų:\"1B0V\",ikrųj:\"1B1S\",\"iks \":\"011D0R080Z0211041B0O1C4M1D2Y1P0Y\",iksi:\"0D06114M1B0I1C0O1D0M1F041O04\",\"iksi \":\"11AH1B09\",iksl:\"1B11\",\"ikt \":\"03050R0R100G120L1A0V1D23\",ikta:\"0303100314021B0Q1F041O02\",ikte:\"0R08100H120R1F1J\",\"ikte \":\"0R0A1006120E1F1O\",ikti:\"0302101C121G1B1K1D151F0C1O03\",\"ikti \":\"1B2W1D251F05\",iktig:\"101C121F\",ikto:\"0Y1O1B021O02\",\"ikto \":\"0Y201B031O02\",ikul:\"03060D04110314031C1C1O021P1M\",ikuli:\"1P1W\",ikult:\"1C1Z\",ikum:\"0N020Z0213061D151O021P2V\",\"ikum \":\"0N03130C1P1Y\",ikumo:\"1P1D\",ikumu:\"1D1M\",ikun:\"041R1107\",ikus:\"0B051102141A1B0N1C1D\",ikut:\"0B0Q111D\",ikutt:\"112C\",ikv:\"10041B031O03\",ikw:\"0302040H0R02\",iky:\"0U05110B1B0K\",iká:\"0U040Y04140F\",ikä:\"112L1N0A1P0J\",\"ikä \":\"112U\",ikö:\"110U14041P14\",\"ikö \":\"111B\",ikön:\"1P15\",\"ikön \":\"1P1C\",ikü:\"14021P1A\",ikün:\"14031P1L\",\"ikün \":\"1P1R\",ikā:\"1D1M\",\"ikā \":\"1D18\",iką:\"1B0R\",\"iką \":\"1B18\",ikė:\"1B22\",ikėj:\"1B0Z\",ikėt:\"1B11\",ikš:\"1B0Q1D0M\",ikų:\"1B0B\",ilag:\"0D080O020P0213061409\",ilah:\"0B0S11041F0C\",ilai:\"0B080L03111F1B07\",ilak:\"0B0X\",ilal:\"0D0Q11041507\",ilala:\"0D12\",\"ilan \":\"030C0B110D0Y11061F031O091Q0I\",ilang:\"0B370D6H\",ilaw:\"03030D09\",ilba:\"0Z0Y1214\",ilbag:\"0Z15\",ilbak:\"1213\",ilbr:\"0Z0912061306\",ilc:\"0N041A031D0H\",\"ild \":\"0M0E0N0B0R050Z0B1008\",ilde:\"0N0D0R1L0Z0E100C120X1F0V\",\"ilde \":\"0N020R1L0Z06120A1F15\",ildi:\"0M0813141F451N17\",\"ildi \":\"131X1F2K1N0U\",ildir:\"1F1F\",ildr:\"0M0O\",ildre:\"0M0X0Z02\",ilea:\"0S0M\",ilec:\"0T031F1X1O02\",ilece:\"1F2N\",ileg:\"0O030P02132614061Q3K\",ilega:\"0O030P02132K\",ilegh:\"1Q62\",ilem:\"030Q0L080T0D110A1F0J1N1W\",ilemo:\"1N2J\",\"ilen \":\"030L0N0L0R0H0Z0M100O113U12141F0H1NHC\",ileno:\"1N1I\",\"iler \":\"0L030O020Z0C12091F2D1N44\",ilerd:\"1F061N1B\",ileri:\"1F1L1N1I\",ilers:\"1N1I\",ilf:\"0N0A0Z0612061304\",ilfe:\"0N0F120D\",ilfel:\"120D\",ilga:\"0Z0713051B0V\",ilge:\"0S1E1B02\",\"ilge \":\"0S5G\",ilgi:\"0Z0B12051B0D1D171F2C\",\"ilgi \":\"1B031D321F0B\",ilgil:\"1F1J\",ilgiv:\"0Z0E\",ilha:\"0P151Q08\",\"ilha \":\"0P0S\",ilho:\"0P1H\",\"ilho \":\"0P0X\",ilhos:\"0P0X\",\"ilia \":\"03030O0S0Q020T291106150Z1O0I\",ilid:\"03030D0A0O0J0P0F1F03\",\"ilie \":\"0N0L0R0N0Z0G1207150O\",\"ilig \":\"0D0Q0N080R0A\",iligh:\"0R04120C1Q0E\",ilih:\"0B0S0D02\",ilii:\"0D040T121102\",\"ilii \":\"0T0U\",ilij:\"0R0U110L1B0F1Q1A\",ilijk:\"0R15\",ilik:\"010F0B2P0D020V081B0R1F0F1N0O1P0G\",iliki:\"0B421B04\",ilim:\"03070D051B071F1L1N0S\",\"ilim \":\"03080D081F1P1N0Q\",\"ilin \":\"030O0D02110D1F041O1R\",iling:\"0B0G0D0J0M070O030R02\",ilini:\"0D031B091F0A1N1G\",ilio:\"0O020Q040T1M0V03150C1A041B0E1O0K\",ilipi:\"0D0F1O03\",ilir:\"1F6H\",\"ilir \":\"1F5E\",iliri:\"1F1V\",ilirs:\"1F1A\",\"ilis \":\"0D0F0T1C14021B141O0C1P12\",ilise:\"0L0Z11091C1E1F07\",iliu:\"0T281B0H\",ilium:\"0T1H\",ilius:\"0T0W1B07\",iliy:\"1F46\",iliyo:\"1F5K\",iliz:\"0M020O0B0P0D0Q0J140215081F12\",ilj:\"0R020V0X0Z04101G110O1205130X1C0V1N13\",ilja:\"0R020V0B1015110T13151C0L\",\"ilja \":\"10121102131Z\",ilje:\"0V0C0Z08100D110612091N1L\",iljek:\"1N1O\",ilke:\"0Z11101H1103120Y\",ilken:\"0Z0Q1010120K\",ilket:\"0Z0B100H1209\",illal:\"111U1C29\",illar:\"0L070O051025\",illb:\"1018\",illba:\"1012\",illea:\"0S2T\",illed:\"0M0I0Z0W\",illen:\"0L090N090R2G0Z021003110K12061403\",iller:\"0L1O0M020O030Z1J110312141F0I\",illes:\"0L280T0F0Z05110B14021C10\",illet:\"0L0E0O080Z0L120G14091F07\",illeu:\"0L1X\",\"illi \":\"0L080Q020T0T1102130Z1F03\",illig:\"0N0B0R040Z0F100B120A\",illin:\"0M0C0N030R020Z0E1003110K1209130H\",illis:\"0L030T0D11191C1H\",illo:\"0L0B0O1G0Q050T0V111K14021Q21\",\"illo \":\"0O140Q030T0G\",illoi:\"113N\",ills:\"0M040N0P100O\",illsa:\"100E\",illu:\"0L040Q030T271104130B\",illud:\"0T1B\",illä:\"1003114A\",\"illä \":\"119G\",illé:\"0L11\",ilma:\"030211351B061C2Q\",\"ilma \":\"110L1C3O\",ilman:\"1143\",ilmas:\"11191B091C1H\",ilmed:\"1F0K1N2Q\",ilmer:\"10041N20\",ilmez:\"1F081N16\",ilmeý:\"1N40\",ilmi:\"110J1C0E1F2I\",ilmiy:\"1F2U\",ilny:\"0B0F1A05\",ilob:\"1P7A\",\"ilob \":\"1P7X\",ilof:\"0R021P0Z\",\"ilof \":\"1P15\",\"ilog \":\"0D0K\",iloj:\"1O0Q\",ilol:\"1P39\",\"ilol \":\"1P3B\",\"ilom \":\"0V071P52\",ilon:\"0D0311021O111Q07\",\"ilon \":\"11031O21\",ilor:\"152R\",\"ilor \":\"153J\",ilov:\"0U0P0Y13\",ilova:\"0U0R0Y18\",ilp:\"11061B051Q0C\",\"ils \":\"0L760M060N020R020Z0213051P0Y\",ilst:\"0Z091206\",ilsē:\"1D1E\",ilsēt:\"1D3L\",\"ilt \":\"030E0M040N0A0R0Y0Z08100D1207130O14021C0E\",ilta:\"112E14041B0A\",\"ilta \":\"112W1B0A\",ilte:\"0N060Q0H0R030S0Q0Z0H1002120O14021F04\",\"ilte \":\"0N050R030S2K0Z08120L\",iltä:\"1119\",\"iltä \":\"112T\",iluj:\"0U100Y1V1Q06\",iluje:\"0U0O0Y21\",ilus:\"0O040P030T05110A1B051C1P\",\"ilus \":\"0T041B081C3E\",ilve:\"0D080R0310021104\",ilvē:\"1D66\",ilvēk:\"1DE6\",ilya:\"030T0D0G1F08\",\"ilya \":\"031U0D0P1F05\",ilye:\"145J\",ilyen:\"145C\",ilyo:\"0D0N1F06\",\"ilyo \":\"0D0Z\",ilà:\"0L05\",ilá:\"0U04140V\",ilág:\"141Y\",ilä:\"11061P1N\",iläd:\"1P1Y\",ilädo:\"1P12\",ilädö:\"1P15\",ilç:\"1F0A\",ilê:\"0P05\",ilí:\"0P020S1Q0U04\",ilín:\"0S20\",\"ilín \":\"0S7J\",iló:\"0O040P021404\",ilö:\"110F1P0E\",ilý:\"0U091N4S\",ilýä:\"1N6L\",ilýän:\"1N24\",ilýär:\"1N5Z\",ilă:\"150W\",ilė:\"1B0J\",ilį:\"1B0E\",imam:\"0O050P030Q040T0H0V1O1B02\",\"imam \":\"03030Q020T0I0V2Y\",\"iman-\":\"0363\",imana:\"045L0B3V0Q0V\",\"imao \":\"0V1T\",\"imas \":\"0O0E0P0D0T091B6S1O0Y1Q13\",imate:\"0M070V0R1P19\",\"imaš \":\"0V28\",imba:\"044J0B0I0D060Q0814021524\",\"imba \":\"042F151M\",imbe:\"042Z0D030M02\",imber:\"044K\",imbo:\"041R0Q041O02\",imbw:\"0432\",imbwa:\"0447\",imd:\"03071B021F321N18\",imde:\"1F131N10\",imdi:\"1F2G1N0S\",\"imdi \":\"1F2J\",imea:\"0S0X1508\",imei:\"0P18110P1B02\",imeir:\"0P1J\",imene:\"1C2N\",imeni:\"1113152E1B0A\",imeny:\"045Y\",\"imer \":\"03050L0I0N020O0H0V0C0Z0F120D\",imera:\"0L1T0O0R1002\",\"imes \":\"03050L0K0M0T0P040T02\",imese:\"1C5I\",imest:\"11081B031C2G\",imez:\"0307041K0L09\",imf:\"0410\",imfi:\"041O\",imfis:\"042S\",imh:\"0S1P\",\"imh \":\"0S0T\",imic:\"0Q040T0D1525\",\"imic \":\"152O\",imid:\"03090L040O030P040Q060S2A0T0A1505\",\"imid \":\"0S8U1505\",imie:\"0O0U110D1A06\",imien:\"0O1311021A08\",iming:\"1B2H\",imir:\"031A041V0P021B05\",\"imir-\":\"032S\",\"imis \":\"0T1D150D1B0O1O0D\",imish:\"046M\",imiz:\"1F2Y1N2B\",\"imiz \":\"1F291N1D\",imizi:\"1F131N14\",imk:\"0B031B081F09\",imle:\"0Z0810061F1Q\",\"imle \":\"1F1Q\",imma:\"03040Q0E100S110E1402\",\"imme \":\"0N0D1009118A\",immel:\"0N0J0Z051002120C1405\",immer:\"0M020N5E0R05\",immä:\"1112\",immäi:\"112D\",imn:\"0N030U020Y0614031A0C\",\"imo \":\"0O0Y0P130Q1N0T1X0U040V2311081A091B2I1O0E\",imod:\"0Z0C1Q0A\",\"imod \":\"0Z0F\",imor:\"0P020T06100E\",imos:\"0O1N0P0Q0Q060T071103140215041B05\",\"imos \":\"0O240P0W0T0715051B09\",\"imp \":\"1533\",impar:\"0L020P050Q1M1505\",impl:\"0D040L0W0M070O0F0P0H0T0J150Y1O0O\",imple:\"0D050L190M050O0F0P0H0T0D1O0U\",impr:\"0L0G0M0B0O0D0P0F0Q0K0T0D0V04150F1A0A1O06\",impu:\"04110L020O050P020T04151R\",impul:\"0T031524\",ims:\"031W0M0J0V03130J1B081F1N\",imse:\"030A0M0T1F1T\",\"imse \":\"1F1F\",imsel:\"0M141F02\",imt:\"031M150K1B2A1D10\",\"imt \":\"031I150R1B1A\",imta:\"1B0Y\",\"imu \":\"0B150U050V031B0E1O02\",imula:\"0B0K0D0S0P020T08\",imum:\"0L020T211O07\",\"imum \":\"0L040T24\",imus:\"04190T6111061B0H1C0X1Q2B\",\"imus \":\"0T6B11061B101Q1O\",imut:\"0B040D0A1105\",imuta:\"0D0J\",imv:\"04121Q04\",imw:\"043Y\",imwe:\"048U0N02\",\"imwe \":\"04EF\",imy:\"042X11021A0X1B0K1F02\",\"imy \":\"1A1C\",imya:\"047P1F02\",imyak:\"04CS\",imá:\"0O020P021409\",imä:\"1002110C\",imç:\"1N0Y\",imçe:\"1N1D\",\"imçe \":\"1N1V\",imé:\"0L0B1402\",imí:\"0S0R\",imó:\"0O03\",imõ:\"1C0B\",imö:\"1P0O\",imön:\"1P0T\",imā:\"0T02\",imă:\"150I\",imą:\"1B1R\",\"imą \":\"1A021B2S\",imė:\"1B0V\",imī:\"1D0T\",imīg:\"1D0U\",imō:\"0T03\",imų:\"1B0D\",imț:\"150H\",\"in'\":\"0T031F061Q08\",\"in-\":\"031X\",inaa:\"0D090R0B110T\",inab:\"0D120O040T051Q08\",inaba:\"0D0M0O04\",inabi:\"0D140T02\",inad:\"0D060O0L0P0G15031F021Q07\",inag:\"0D1E0L020Q0H\",inaga:\"0D0Y\",inah:\"0D0B0N02\",inaha:\"0D0G\",inai:\"0D0A0L0B0P030Q03110B1B2L\",\"inai \":\"1B58\",inak:\"0D120U05110A141K\",\"inak \":\"0U06141N\",inaka:\"0D1L1104\",\"inam \":\"0P040T1C1A03\",\"inan \":\"0B1O0D050O05110L1O09\",inand:\"0N0R0O060P040Q050Z0P1F05\",inang:\"0D13\",inap:\"0B050D0H1403\",inapa:\"0D0P\",\"inar \":\"0B070O110P0R130N1505\",\"inas \":\"03030D080O0O0P0F0T0F11031B231O06\",inasa:\"0D0R\",inata:\"0B0A0D0R0Q06110V\",inau:\"0D030N061B3K\",\"inau \":\"1B6Y\",inaw:\"03020D0L\",inawa:\"0D0Y1102\",inay:\"0D091F061Q0B\",inb:\"0N02100513041Q04\",\"ince \":\"0L080M0Q0O040U061F0Z\",incip:\"0L0E0M030O0K0P090Q080T0U0Z02150H1O04\",incis:\"0S32\",\"inco \":\"0O0T0P0M1O03\",incon:\"0L0F0O040P040Q0V1507\",incs:\"145V\",\"incs \":\"145A\",incse:\"140Y\",\"ind \":\"011P0M240N5H0R1W0Z1O10061209140Q150S1C66\",indab:\"043C\",indah:\"0B1R0D09\",\"inde \":\"046Y0L040N0O0R0C0T0E0Z2Z150N1F4H1N2F1O0J\",indel:\"0N020R0M0Z0F100212041C1L\",inden:\"0N180R180Z0T1006149G1F321N1X\",inder:\"01240D030M020N210R2N0Z1G1002\",indes:\"0N0H0Z0G\",\"indi \":\"0305047L0DCY0Q0C13101B041F0E1N22\",indig:\"0D020L030N040O030R090T0514421O04\",indih:\"0D0N\",indir:\"046S0Q061F0E\",indk:\"0Z08140I\",indl:\"0N030Z02100313081C0N\",\"indo \":\"0O040P2J1B05\",indr:\"0L0O0N080R070Z0J100C120I\",indre:\"0L120Z0H1007120H\",inds:\"0M080R0E0Z0L\",indst:\"0Z0G\",indt:\"0R0L0Z0C\",\"indt \":\"0R0T\",indue:\"0Z0M120F\",inea:\"0Q030S110T091102151F\",ined:\"0M0L0Z02\",\"ined \":\"03020M0S\",ineh:\"03021Q8Z\",\"ineh \":\"1QAL\",inek:\"03070U020Z0214231F03\",\"inek \":\"030E0U0214261F02\",\"inem \":\"030D0N5V0T1E0V0A15051A08\",inema:\"0P080Q060T0915061C2U1F06\",\"inen \":\"03090NC60R060U030Z07100911QJ120R1F02\",\"iner \":\"0L0X0M020N6E0R080Z0G1006120H\",inero:\"0D020O2A\",\"ines \":\"030Z0L1K0M080N290O0A0R030T1P0U031B0J\",inev:\"14031523\",ineva:\"152M\",infa:\"0N0V0O060P020Q0B0T0I13091O1E\",infan:\"0O060P020Q030T0J1O2P\",\"ing-\":\"0B060D0C\",\"inga \":\"044E0B090D0A100Z131L1B3Z\",ingai:\"1B1N\",ingan:\"043I0B0O0D060N030P020Q050R02130H1Q10\",ingar:\"101513471O06\",ingas:\"110F130K1B601O05\",ingat:\"0B1V0D0911081403\",inged:\"0Z0D\",inger:\"0M090N0F0Q040R0A0T050Z1X100F121N1402\",inget:\"0N020Z03100V1403\",ingg:\"0B720D0I\",ingga:\"0B7E0D0A\",inggi:\"0B200D08\",inggo:\"0D0F\",inggr:\"0B32\",inggu:\"0B1Y\",\"ingi \":\"0B0B0D0G130P1B1I1O0E\",ingj:\"1316\",ingk:\"0B0V0D03\",ingka:\"0B1D\",ingle:\"0D0Q0M070O040P030Q10\",ingli:\"1C3S\",inglä:\"1P11\",inglé:\"0O1C\",inglê:\"0P17\",ingn:\"0B080D0A\",ingna:\"0D0I\",\"ingo \":\"04910O0A0P091B0S1O04\",\"ings \":\"010L0M1Q0N04130B\",ingte:\"120D\",\"ingu \":\"133E1B07\",ingua:\"0D020P050Q0Q0T3M1002\",ingur:\"13261532\",ingué:\"0P1S\",ingv:\"0U02110215041O1D\",ingvo:\"1O2C\",inh:\"0N030P931107130P\",inha:\"0L020N040P7L\",\"inha \":\"0P7X\",inhas:\"0P11\",inhe:\"0N020P1F\",inhei:\"0N030P1Q\",inho:\"0P2F0R031108\",\"inho \":\"0P2I\",inhv:\"1314\",inhve:\"132C\",iniai:\"1B1U\",inien:\"0L0A0N020O0211021A26\",inig:\"03030D0R0N0R0R0C0S0X1B281O02\",\"inig \":\"03020D0S0R0D0S3J\",inigų:\"1B2M\",inih:\"0D061Q07\",inii:\"0D0A0T051102150L1A021O03\",inil:\"0B040D0H0U040V031102150L\",inili:\"0D0K\",inime:\"0T0A11051C9A\",\"inin \":\"030E0D0A110C1F2V\",inini:\"042Z1B0D\",inink:\"1B36\",inio:\"0L080M050O040Q0A0T050V0511021B0T1O0G\",inip:\"0D06\",\"inis \":\"03070D0C0L020S3J0T191B281O0C\",inish:\"0M0N\",\"init \":\"030T0D0G0L040T040U0311081509\",iniu:\"0T0E1B11\",inius:\"0T051B1J\",iniw:\"0D0D\",iniwa:\"0D0P\",iniz:\"0Q101F3G\",\"iniz \":\"1F3L\",inizi:\"0Q111F0R\",iniñ:\"1N1E\",\"iniñ \":\"1N1X\",iniň:\"1N2R\",\"iniň \":\"1N3R\",inių:\"1B0W\",\"inių \":\"1B1V\",inja:\"0B0M0V0A11091Q07\",inji:\"04221N13\",\"inji \":\"1N1I\",injir:\"043C\",inka:\"0B0Y0N050U021005113I14031A031B451F021O0E\",\"inka \":\"1002116B1A031B5V\",inkan:\"0B1T1O02\",inkas:\"1B1K1O0G\",inke:\"010J0N0L0R180Z061004110E1209140W1B041O03\",inkel:\"010K0N020R0P1B05\",inken:\"0N0O0R0T1002\",inki:\"0M0D0R0311101B181F051O0J\",inko:\"04150N030R040U021002111S130C1B0C1O04\",\"inko \":\"113F1B0G1O03\",inks:\"0M0G0N040R031B0F\",\"inks \":\"0M0M0N040R031103\",inkt:\"0N080R0K1B08\",inku:\"042V0U0211041B0H1O03\",inkä:\"1115\",inle:\"130D1F291N0E\",\"inle \":\"1F1L\",\"inm \":\"0S1A\",inma:\"0N11130A\",inmal:\"0N1P\",\"inn \":\"0N0C0S6Y1003121B13K114051C0O\",innan:\"0303100N110D130J\",\"inne \":\"010K0N060SBD100E112A12251A0B\",innea:\"0S3A\",innen:\"0N0U0R2O120J140I\",inner:\"0M0H0N120R0P0Z03100I120X\",innes:\"120L\",\"inni \":\"111R13AF140Q1A0B1C1O\",innig:\"010K0N040R03\",inniu:\"0S32\",innos:\"0U070Y0D112V\",inns:\"102B120K1316\",\"inns \":\"102B\",innst:\"132D\",innu:\"0302110M132A\",inné:\"0S131407\",\"inné \":\"0S3A\",inob:\"1P961Q1T\",\"inob \":\"1P8G1Q24\",inobs:\"1P2A\",inof:\"1P4Z\",\"inof \":\"1P4O\",inoj:\"1B1S1D0U1O0X1Q08\",\"inoj \":\"1O1F\",inoja:\"11031B25\",inol:\"1P66\",\"inol \":\"1P5E\",inom:\"0D0E0V081006110614091B0X1PJL\",\"inom \":\"0D0R0V0K100414071PJ1\",\"inom-\":\"1P1Q\",inoms:\"1P3H\",inon:\"0D0E0L0511031O0Z1P8T\",\"inon \":\"0L0511021O1W1P7T\",inong:\"0D0P\",inons:\"1P1Z\",\"inos \":\"0O0J0P090T09140415071B1E1O031P4V\",inot:\"11031B1E1D11\",inoti:\"1B1M\",inp:\"110A1Q07\",inq:\"03020L0M0O020P070Q0B0T0Z1Q08\",inqu:\"0L0K0O030P090Q0I0T1U1Q0F\",insam:\"0N0E1002134B\",insan:\"0D0E0M020T091F2K\",inseg:\"0Q2Q\",insh:\"04DF\",insha:\"047L\",inshi:\"04AA\",insho:\"047X\",insin:\"0S3211041F02\",\"inta \":\"0B390D070O0I0P0G0Q090T1511191B0N1O1H\",intay:\"0D0R\",\"inte \":\"0L0H0N080O090P0F0S3S10KM140H152T1O0M\",intem:\"0L0914131O07\",inteo:\"0S58\",intet:\"0Z0V1206140C\",\"inti \":\"0D050Q030T0F110S140215051B5G\",intin:\"0D0M0M0611051B0J\",\"into \":\"0D0E0M1Q0O060P0Q0Q0J0T0311041O0B\",intr:\"0L060M050N040O050P040Q070T0Q100O15381O07\",intre:\"0L020N02100K15211O04\",\"intu \":\"049Z0B0V110H\",inté:\"0L130O02140L\",intér:\"0L1R\",inua:\"0L020O060P0C0Q0I1164150I\",\"inua \":\"0L020P040Q0411DW1506\",inud:\"03021C3T1Q0B\",\"inud \":\"1C911Q0A\",inug:\"1C1I\",inuga:\"1C3O\",inuk:\"03020D071B05\",inul:\"0D070T030U0N0V050Y0X11BJ150Q1C1T\",inull:\"11MN\",inult:\"111H1C3L\",inum:\"0B170D060T1O132B\",\"inum \":\"0B1V0T1R134U\",inun:\"0D0A0N0G0O020P020Q0211AY130A150O\",\"inun \":\"11MC\",inuo:\"0P040Q030V081B17\",\"inus \":\"0T340Z02110D1B0C\",inust:\"0D02114H1C2D\",\"inut \":\"03030U0C0V0F0Z031004117315121A0H1N0J\",inutt:\"0Z0I1103120F\",inve:\"0L080M060N040O0G0P0K0Q0K0R020T1J150D1O05\",inven:\"0L090M020O080P070Q050T1L15061O06\",invi:\"0L0J0M080O0P0Q0Q0T0Y0Z0B120A150G1O07\",inw:\"030A0N031Q0D\",inx:\"0T04\",\"iny \":\"0M020U250Y311A0Y\",inya:\"030304450B4Q0D02\",\"inya \":\"0B8O0D03\",inyam:\"0435\",inyo:\"042D0D2W\",\"inyo \":\"0D47\",inyon:\"043C0D16\",inys:\"1B0T\",\"inys \":\"1B1O\",inyu:\"043D\",inzi:\"048B0N0K1504\",\"inzi \":\"04AL1505\",inzir:\"043V\",inzo:\"042D\",inzu:\"042V0N0B\",\"inzu \":\"044X0N02\",iná:\"0P060U0G0Y0S1420\",inál:\"1450\",ináln:\"141Q\",inált:\"141A\",inä:\"11BK1P0N\",\"inä \":\"11I2\",inæ:\"0T02\",inç:\"1F0E1N0D\",iné:\"0L0O0O030U0E0Y0D1405\",inê:\"0P04\",iní:\"0P040S120U04\",inío:\"0S0X\",iníon:\"0S3S\",inò:\"0Q03\",inó:\"0O08\",inö:\"11021P29\",inön:\"1P2F\",\"inön \":\"1P2U\",inú:\"0O040P030Y0C\",iný:\"0U0E0Y0H\",inā:\"1D8N\",ināj:\"1D43\",ināja:\"1D5H\",ināju:\"1D3L\",inās:\"1D17\",\"inās \":\"1D2F\",ināt:\"1D49\",\"ināt \":\"1D5Q\",ināts:\"1D2F\",ināš:\"1D15\",ināša:\"1D2A\",ină:\"1528\",\"ină \":\"153G\",iną:\"1A071B0U\",\"iną \":\"1A041B1D\",inč:\"1B08\",inē:\"0T03\",inė:\"1B22\",\"inė \":\"1B12\",inėj:\"1B12\",inę:\"1A0I1B0V\",\"inę \":\"1A0I1B12\",ině:\"0U0H\",inī:\"1D0M\",inį:\"1B0U\",\"inį \":\"1B1C\",inū:\"1D0E\",inų:\"1B06\",inț:\"151V\",\"io-\":\"0P03\",ioa:\"0T0H1510\",ioan:\"0T0W150B\",ioann:\"0T0Y\",ioc:\"0Q180T041506\",ioca:\"0Q160T05\",ioda:\"1529\",iodat:\"152V\",ioe:\"1202\",iog:\"0Q050Z021B0I\",\"iog \":\"1B0R\",ioh:\"0T02\",ioi:\"0Q02110X\",ioj:\"1B1C1O0P\",\"ioj \":\"1O0R\",\"ioje \":\"1B1H\",\"iom \":\"0S8D1A081O2Q\",ioma:\"0O0P0P0H1O05\",ioms:\"0S0Q1B02\",iomsa:\"0S32\",iomá:\"0S0M\",iomái:\"0S2K\",ionar:\"0M050O0X0P0E0Q0D0T03150Q\",\"ione \":\"0O020P030Q7D0T131A0J1B04\",ionem:\"0T2C\",ionen:\"0N0N0Z0S100Q1206\",ioner:\"0O040Q020Z0J100D1205\",iones:\"0O340T0Y\",\"ioni \":\"0Q1S0T051103\",ionis:\"0M020O020P020Q030T0T0Z021103\",ionn:\"0L1J\",ionne:\"0L1B1102\",iono:\"0P060Q171A061O0G\",\"iono \":\"0Q181A091O0F\",ions:\"0L3Y0M1C0N040Z0510041102\",\"ions \":\"0L6G0M1N\",iont:\"0S1A\",ionta:\"0S58\",ioo:\"11081C11\",ioon:\"11091C12\",iooni:\"1C26\",iop:\"0Q0B0T0511091B02\",\"ior \":\"0M050O080P0Y0Q070T2W1507\",iore:\"0L040O020P050Q130T10\",\"iore \":\"0L020Q130T07\",iorn:\"0Q2K\",iorna:\"0Q0Q\",iorno:\"0Q1F\",\"ios \":\"0O2K0P1P0S2P0T1415111B2D1O04\",ioso:\"0O0L0P0F0Q0O1102\",iotec:\"0O0B0P090Q0X150D1A04\",iou:\"0M0K0P0B0Y081503\",ious:\"0M10\",\"ious \":\"0M12\",iov:\"0Q0P0T031B07\",iova:\"0Q0M\",ioz:\"0V031O07\",ipada:\"0B230V08\",ipag:\"0D0I\",ipar:\"0D020O030P030Q0G14041F041O081Q3Z\",iparh:\"1Q4V\",ipc:\"0O021Q04\",ipd:\"1N0F\",ipet:\"0Q0512091O04\",ipf:\"041U\",ipfu:\"045A\",ipfuz:\"048E\",ipin:\"0D0X0Q05\",ipina:\"0D1A\",ipir:\"1B12\",ipirk:\"1B25\",ipis:\"0D060T041102\",ipn:\"1D0M\",\"ipo \":\"0O0R0P0F0Q0G1B071O07\",ipom:\"0U040Y0811021P0T\",ippe:\"0M060N040R080T020Z0C1003120C1403\",ipra:\"0U0R0Y131B0T\",iprav:\"0U120Y1C\",ipse:\"0T0S150B\",ipsi:\"0T1E150D1F02\",ipy:\"11091B02\",ipä:\"110E\",ipö:\"1P0M\",\"iq \":\"03061Q51\",iqa:\"03071Q2O\",iqo:\"1Q2K\",iqu:\"0L3J0M020O0F0P0W0T261Q31\",iqua:\"0L030T0S\",iqub:\"1Q3Q\",\"iqub \":\"1Q4V\",ique:\"0L590M030O090P100T16\",\"ique \":\"0L5X0M030O030P0J0T0X\",iques:\"0L1Q\",iqui:\"0L040O0D0T1U\",iquid:\"0L040T0Y\",\"ir-\":\"031D0B040P041N0E\",irab:\"04420O030T051402\",iraba:\"043O0O04\",irag:\"042D\",irah:\"043R0B060D041103\",iraha:\"04350B0C0D07\",irai:\"0L0V0Q0411021B03\",irak:\"04360Z02110514041B021O02\",\"iram \":\"0D040P0V0T050V0P\",irang:\"045Y0D05\",irap:\"0D0E\",\"irap \":\"0D0I\",irar:\"041O0O0E0P0F0Q050T031002\",\"iras \":\"0L060O050P0M0T02110H1B061O4Q1Q57\",irash:\"0435\",iraz:\"1F281N1F\",\"iraz \":\"1F2X1N1S\",irb:\"0N0213051B1C1F0J\",irba:\"1B0T\",irc:\"0L050M020N020O040P040Q090S0N0T0K15041F02\",ircu:\"0L040M030O050P040T0S1506\",\"ird \":\"0M080N35\",irde:\"03060S0V14021F0G1N1L\",\"irde \":\"0S3A1F0C\",irden:\"03091F061N20\",irdi:\"1B0N1F2Q1N2I\",\"irdi \":\"1B0D1F211N1N\",irdē:\"1D0U\",irdė:\"1B0X\",irdėj:\"1B1I\",irea:\"0S4D1511\",ireac:\"0S9A\",iread:\"0S3J\",irean:\"0S58\",ired:\"03080M0R1N2P\",\"ired \":\"030H0M11\",irede:\"1N3N\",irei:\"0P0Z0Q08110H1B05\",irenz:\"044K\",ires:\"03060L170M040O030Q030T041C0N1F03\",\"ires \":\"030A0L200M050O040P020T04\",irest:\"03030Q031C1H\",irf:\"03040S0W1304\",irfi:\"0S0O\",irge:\"0N0N0S0T130C\",irgea:\"0S3A\",irgi:\"03020S0O0T031B0G\",irgid:\"0S2K\",irh:\"110E\",iria:\"0B0D0P0J0Q0I11031B0C\",irig:\"0L050O050P0E0S0Q14051O05\",irigh:\"0S32\",irih:\"041V\",irik:\"042R0B0A1B021F03\",irim:\"042Z0B0L0S0Q1F1I1N1O\",\"irim \":\"0B091F1N\",irimç:\"1N1V\",irini:\"0D041F131N1Q\",irink:\"1B1E\",irino:\"1O19\",irir:\"0304042K1F0C\",irira:\"043V\",iris:\"043Y0T060V0311081F0C1O3K\",\"iris \":\"0T060V061O6U\",irish:\"046M\",irith:\"0S3J\",iriwe:\"042S\",iriy:\"042O1F0M\",iriye:\"044K\",iriz:\"04F90Q061F0H\",iriza:\"048W\",irizw:\"04HK\",irj:\"113T1C22\",irja:\"113I1C11\",\"irja \":\"111V1C1L\",irjo:\"112O\",irjoi:\"115F\",irju:\"1C1J\",irjut:\"1C3S\",irka:\"030E0B0Q0Z081104130A1B0P1F111O0L\",irkan:\"0B1G\",irkaç:\"1F1E\",irke:\"03020N020Z1H121Y14031F0F\",irkel:\"0Z151216\",irker:\"0Z0A120D\",irkl:\"0N131B02\",irkli:\"0N1U\",irkt:\"0N031B0T1D0U\",irkti:\"1B1K\",\"irl \":\"0M0D\",irla:\"03020O040Q10\",irlan:\"03040L020P020Q0X11031O02\",irle:\"0O0B0Q0313081F1A1N0P\",irler:\"1F151N0Q\",irli:\"1F1N1N0L\",irlik:\"1F1M\",irme:\"0L030O0J0P021B031F1V1N1J1O02\",irmek:\"1F0T1N14\",irmã:\"0P1G\",irmão:\"0P13\",irny:\"0B0M\",irnä:\"1N0V\",irnäç:\"1N17\",iron:\"04490L0J0M040Q061O0A\",irong:\"046Y\",\"iros \":\"0O020P0P0T06140E1O1G\",irp:\"0M031B06\",\"irs \":\"0L0K0M080Z031B031D1G\",irse:\"0O0G0S1N0Z051F0A\",\"irse \":\"0O0L0S581F07\",irsi:\"0Q06110C1B051F11\",irsin:\"1F1C\",irst:\"0M0Z0N0I1B081D0M\",\"irst \":\"0M180N0U\",\"irt \":\"030W0M060R050S5V0Z05\",irti:\"0O060Q05110B13091B161F03\",\"iru \":\"0B090V041O15\",iruo:\"11031B19\",irv:\"0O060Q02110A1B021Q04\",irw:\"040I\",iry:\"041V1A031B02\",irya:\"042R\",iryo:\"0429\",\"iryo \":\"043C\",irà:\"0Q09\",irá:\"0O0G0P0I140S\",\"irá \":\"0O0E0P0K\",irã:\"0P05\",irä:\"1N0G\",irç:\"1F0Q\",irçok:\"1F13\",iré:\"0L0C0O0B\",irí:\"0O0A0S2A\",\"irí \":\"0S1R\",irír:\"0S0Q\",iríre:\"0S32\",irð:\"1324\",irðu:\"132J\",\"irðu \":\"1359\",irò:\"0Q09\",iró:\"0O071403\",irý:\"1N0O\",irýä:\"1N0Y\",irā:\"1D1T\",irāk:\"1D21\",\"irāk \":\"1D4L\",irė:\"1B0H\",irī:\"1D0H\",irš:\"1B1Q\",iršt:\"1B0R\",\"is-\":\"030O0L1U\",\"is-j\":\"0L18\",\"is-je\":\"0L23\",\"is-t\":\"0L1E\",\"is-tu\":\"0L2B\",isad:\"0O020P04100911021B1Y\",isada:\"11021B41\",isag:\"041V0L0B0Q02\",isaga:\"042Z\",isah:\"044M0B061Q12\",isaha:\"047F\",isai:\"0L0W11031B14\",\"isai \":\"1B26\",isak:\"0B0X0V03110214021B0H1C0E\",isaka:\"03020B1T1B04\",isam:\"0D030L060O020P0N0Q050T030V3P1B051Q0T\",\"isam \":\"0P090T030V911B031Q0H\",isang:\"0B070D40\",\"isao \":\"0V1X\",isas:\"0D030O030P131002110514021B0E\",\"isas \":\"0O030P1D11051B0T1O03\",isce:\"0Q0K0S1J0T28\",\"isce \":\"0Q0J0S5P0T06\",isch:\"0N6G0Q090R2G0Z021Q0M\",\"isch \":\"0N4Z0R200Z02\",ische:\"0N5F0R1C\",isci:\"0L040O050P040Q0E0T2H1507\",iscip:\"0L020T16\",isco:\"0L070M070O050P0C0Q100T0D\",iscu:\"0L0H0M050O0Q0P0G0Q0A0R040T0N150W\",isd:\"0D050R04100214021B081O02\",isda:\"0D0A0R0310031B02\",\"isda \":\"0D0G\",isea:\"0L0E0M020S111507\",ised:\"03040M0R1C0X1F05\",\"ised \":\"03020M111C26\",isee:\"0R08111N\",iseen:\"113C\",iseg:\"030R0Q051C0U\",isegi:\"1C1L\",isek:\"03090Z0211151B0F1C19\",iseks:\"112T1B071C31\",isel:\"030L0B040L02111T141F1C431F08\",\"isel \":\"030314041C3B1F05\",isele:\"14031C311F05\",isell:\"03060L03112R\",iselt:\"111H14081C3S\",isem:\"030O0L021117\",\"isen \":\"030V0N0N0R030Z0F100H119G120L\",\"iser \":\"03030L1A0N050P0E0T040Z1M121H\",ises:\"0L0U0M040P030Z02114J1B021C121F02\",\"ises \":\"0L1F0M051B04\",isest:\"118Z1C1E\",iset:\"03060O021005112W\",\"iset \":\"03051005116W\",\"iseɣ \":\"0333\",isg:\"03020Q02\",\"ish \":\"0M1O\",isha:\"04BV1F05\",\"isha \":\"04E5\",ishe:\"0M0Q0N05\",ished:\"0M0T\",ishi:\"04680M05\",ishir:\"044K\",isho:\"044M\",ishob:\"045L\",ishu:\"043Y\",ishur:\"046A\",isia:\"0Q030T0B112R1A0T1B07\",\"isia \":\"0Q030T03115Y\",isid:\"03021B021C141F0A\",\"isid \":\"1C26\",isie:\"011J0L070N070O0D0R091A071B0H1D0J\",\"isie \":\"011B0L030R0A\",isii:\"111E1O02\",isiin:\"1139\",isim:\"0D050T03110J1B111F07\",isime:\"1B1J\",\"isin \":\"030F0D070L0911C41C2X1F44\",ising:\"0D0F0M061B18\",isini:\"0B0B0D030L051B031F1R1N0J\",isio:\"0L0O0M0A0O050P020Q0F0T03110E1O02\",isip:\"0D0N110515051B06\",\"isip \":\"0D0Z\",\"isit \":\"030L0L050M0E0T0X112Q1509\",isita:\"0D0G0O0Q0P0O0Q110T091B03\",isitk:\"114A\",isiu:\"0T04150C1B0Q\",isiä:\"111I\",\"isiä \":\"113M\",isió:\"0O0R\",isión:\"0O10\",isiú:\"0S1P\",isiún:\"0S5X\",isiš:\"1B0Q\",isišk:\"1B1I\",isj:\"0R07110212031A02\",isje:\"0R0S\",\"isje \":\"0R0S\",\"isk \":\"0M030Z2M1018122T13071A031B0M1F02\",iska:\"03030B0E101N110F130514021A081B141D131O02\",\"iska \":\"1018110B1A0B1D1I\",iskas:\"11061B221O02\",\"iske \":\"0Z1J121B1F02\",iskel:\"1154\",iski:\"0B060D020V05110C1A061B0I1D2A1F021O02\",\"iski \":\"0D020V0A110A1A041D531F02\",iskol:\"1106141R1B0B\",iskor:\"0V0D100N\",iskt:\"100U\",\"iskt \":\"100T\",iską:\"1B1B\",\"iską \":\"1B2P\",isle:\"03030V0A13061F051N7R\",isled:\"1N17\",islem:\"03051N2H\",isleý:\"1N64\",isli:\"03020V3T1F03\",islim:\"0V3Z\",islio:\"0V1Y\",isliš:\"0V1T\",islä:\"1N1W\",ismaa:\"11021C1S\",ismer:\"143M\",ismo:\"0D0A0O1Q0P0C0Q0C0V0U1A021B031O0C1Q0O\",\"ismo \":\"0D0G0O220P0E0Q0C0V251A031B061O0J\",\"isn'\":\"0M2J\",\"isn't\":\"0M3H\",\"isne \":\"0T3J\",isnī:\"1D0S\",isnīb:\"1D21\",\"iso \":\"0D020O0H0P1U0Q130T04110G1B0E1O03\",isog:\"0Q27\",isogn:\"0Q28\",\"ison \":\"0L580M0811091O07\",isop:\"1Q3V\",isov:\"0U0411091Q5M\",\"isov \":\"1Q5D\",ispo:\"0L0J0O060P0A0Q1D0V0A15091O07\",ispos:\"0L0R0O020P070Q0U\",isq:\"0L080T0L1Q0F\",isqu:\"0L0D0P020T131Q0I\",isque:\"0L0J0P020T12\",israe:\"0M050O040P050Q020T0S0Z0211031O02\",\"iss \":\"0M0B0N0A1002130F14061C0E1D18\",\"issa \":\"0D030L060M030P020T05100B11EO130S1402\",issan:\"0L1J0Q02111N\",issc:\"0N0A0R0T\",issch:\"0N0H0R13\",\"isse \":\"0L1S0N0K0P3S0Q1D0R020T2M0Z10120W1C3Y\",issen:\"031I0L0Q0N2H0R0S0T091003\",isset:\"0T0W1F10\",issi:\"030E0L0L0M0A0N020P030Q0U0R0B0T2Z1107130K\",issim:\"0L030Q0E0T2U\",isso:\"0L0P0P990T041106\",\"isso \":\"0PBF\",isst:\"0N0I101B120Y130E\",isste:\"100Q120R\",issz:\"142U\",issza:\"142X\",issä:\"113X\",\"issä \":\"118G\",istaa:\"113G\",istab:\"1C1A1D2K\",istad:\"0O070P021C1O\",istas:\"0D040O0L0P0K110H1B1F1C1H1F0D1O19\",istea:\"0S87\",isted:\"0M040Z0A1F45\",istem:\"0B090D030O0A0P0J0Q060V0F150P1B041F471O0B\",istet:\"0N030Z0E110Z120J\",\"isti \":\"0P020Q0H0T3W0U050V18112G1B2O1O04\",istis:\"0N080R090T270Z061004110D12071B031F021O05\",istiy:\"0D021F63\",\"isto \":\"0O1C0P2X0Q1N0T050V0Z110H1B0J1O3W\",istoj:\"11051B051O1I\",istri:\"0B1C0L050O020P020T0B1O07\",ists:\"0M0D\",istui:\"112D\",istul:\"0T0Z1507\",istus:\"0T03110V1B081C2U1O02\",istä:\"1004116G\",\"istä \":\"11CP\",istí:\"0S1C0U070Y0B\",\"istí \":\"0S4R0U060Y0B\",istó:\"0O040P0O1A02\",istór:\"0O020P0T\",istý:\"0U0B0Y19\",\"istý \":\"0U0F0Y1K\",istă:\"151R\",\"istă \":\"1528\",istē:\"1D0X\",istēm:\"1D2A\",istī:\"0T26\",\"istī \":\"0T28\",\"isu \":\"0T030U020V0E11051B041D21\",isus:\"0T0C1B17\",\"isus \":\"0T0D1B2I\",isuu:\"1125\",isv:\"110213081B0L1O031Q06\",isw:\"03030B0A0R02\",iswa:\"0B0K\",isy:\"0D0D0U03110E1A021B0F1F06\",isyo:\"0D0G1F04\",isyon:\"0D0K1F05\",isz:\"142R1A2Y\",\"isz \":\"140B1A3G\",isze:\"14281A08\",iszem:\"141A\",iszt:\"1420\",isã:\"0P0I\",isão:\"0P0M\",\"isão \":\"0P0S\",isä:\"112G\",isän:\"1117\",isää:\"111G\",isç:\"1N0J\",isé:\"0L0Q0O040P031406\",\"isé \":\"0L0O\",isą:\"1B0Y\",\"isą \":\"1B1I\",isė:\"1B0F\",isų:\"1B08\",\"it'\":\"0M1H1Q06\",\"it's\":\"0M2I\",\"it's \":\"0M3F\",\"it-\":\"03450L0L1508\",\"it-t\":\"032X\",\"it-ta\":\"0361\",itaa:\"010N0D020R06110Y1C0I1F02\",itab:\"047Y0L070M020O080T0L1C0G1F0P1N0Y\",itabu:\"04BR0T08\",itaby:\"1N19\",itac:\"0O0W\",itaci:\"0O16\",itad:\"0O0K0P0F10041O02\",itah:\"0B170D040U031Q08\",itahu:\"0B2B0U03\",itai:\"0L0D0P0211041B1W\",\"itai \":\"1B2U\",itaj:\"0V060Y0911041A021O1B\",\"itaj \":\"0V071A021O2B\",itak:\"0B090D02110A14031C0N\",itaks:\"11021C1L\",\"itan \":\"0B0L0D0V0O090T0211191C171O0P\",itand:\"044E0O040P060Q020T04\",itang:\"04220B090D0S\",itanj:\"0V20\",itanu:\"042Z\",itap:\"1F131N24\",\"itap \":\"1F0Y1N1G\",\"itar \":\"0B0U0M050O0T0P1A0Z08100912061F06\",\"itas \":\"0B0S0O0U0P1J0T0Z1B4P1C1V1O0M\",\"itat \":\"0T1K110K1524\",itate:\"0M040Q040T17153G\",itati:\"0L0E0M040Q040R020T0V0Z02\",itato:\"0Q170T031O0E\",itatu:\"045L0T0D1C13\",itav:\"0P050Q040T0P11051C0Y\",\"itav \":\"1C1S\",itb:\"03020D031Q06\",itc:\"0M081Q04\",itch:\"0M0C1Q07\",itd:\"1N1N1Q04\",itdi:\"1N2C\",\"itdi \":\"1N1S\",itea:\"0S0X150E\",ited:\"03060M0O1F05\",\"ited \":\"0M0Y\",iteg:\"043G0Q02\",itege:\"045Y\",itei:\"010N0N040P050R0T11071B0A\",iteit:\"010I0R0S1106\",itel:\"0M040N040Q040R020U1C0V0V111H140715061F03\",itelj:\"0V27\",\"iten \":\"030O0N2M0O030R1A100E116Y120O\",itere:\"0N090R020Z0F12061507\",\"ites \":\"0L1Y0M050N020O070P070T0K0Z021B0C\",\"itet \":\"0N0Z0T0E0Z0C100D120K\",iteľ:\"0Y1P\",\"iteľ \":\"0Y0Y\",itg:\"010G0N040R091B04\",itge:\"010S0N060R0U\",ithe:\"0M0C0S6J\",\"ithe \":\"0SFV\",ithea:\"0S7A\",itheo:\"0S2K\",ithf:\"0S1A\",ithfi:\"0S4I\",ithi:\"0M030S1G\",ithin:\"0M040S2T\",ithn:\"0S16\",ithne:\"0S4I\",itho:\"0M0M\",ithou:\"0M0U\",itia:\"0L020Q020T13\",itie:\"0L030M080O020R0X0Z0C110E120D1B0N1D0K\",itiet:\"0Z0F110H120D\",itiki:\"1B1W1O07\",itiko:\"11041B1K1O0B\",\"itin \":\"03020D0H111O130C1B0L\",iting:\"0D070M0U0R02130C\",itio:\"0L0Z0M0H0N050O0A0R020T0K0Z0410051103\",ition:\"0L1N0M0M0N090R020T070Z0510051102\",itir:\"0D020O070P070Q020S0Q130B1F0Y1N14\",\"itir \":\"0O060P060S32130L\",\"itis \":\"0D020R020T1M1B0D1C1E1O0T\",itj:\"13031N0U\",itje:\"0R021N18\",itjek:\"1N1L\",itko:\"0Z0310021130140B1B02\",\"itko \":\"11771B04\",itkä:\"111S\",itlh:\"1Q8I\",itme:\"1F3C1N2N1Q06\",itmek:\"1F1P1N17\",iton:\"042H0D0U0L03110A1B031O08\",itond:\"043C\",itong:\"0D1K\",\"itor \":\"0M020O050P060T08151P\",itos:\"0O0H0P1E0T030U090Y0D111E1B0P1O031P0G\",\"itos \":\"0O0L0P1R0T03112S1B1D1O06\",itq:\"0T101Q04\",itqu:\"0T1W\",itque:\"0T21\",\"its \":\"0L180M0S0N0C0R0C10021209\",itse:\"04390M020R0A116G12061C221F03\",\"itse \":\"045L0R07113V\",itsem:\"112N\",itsen:\"1134\",itsi:\"11131C0I\",\"itt \":\"030J0N0D104Q126N135G145U\",itta:\"03050L020N0E0Q0C0T0I1025115B130K140C1Q0J\",\"itta \":\"0L020Q06100Y110513131402\",ittaa:\"116C\",ittad:\"0Q04100R\",\"itte \":\"0L040N2Q0Q020R0D0T0C0Z02111V120714091C42\",ittel:\"0N0O112Z\",itten:\"0M090N0O0R0Z0Z03113H12061402\",itth:\"1314140C\",itthv:\"132C\",itti:\"0M0A0Q080T0D0Z061004112U1209130O1F2D\",\"itti \":\"0Q05114U13151F1M\",ittl:\"0M0T0N0310021Q06\",ittle:\"0M140N02\",itto:\"0Q1F0T021003110W\",\"itto \":\"0Q190T02110H\",ittà:\"0Q0S\",\"ittà \":\"0Q0S\",ittä:\"113H\",ittää:\"1133\",\"itu \":\"0BEW0O030T0C0U040V0311041B071C0S1D0Z1O03\",ituas:\"0B09120E1O09\",itum:\"043Y0T1L1B04\",\"itum \":\"0T1N1B05\",ituma:\"0464\",\"itur \":\"0T4V130H1A021B021Q0A\",iture:\"0L3D0M02\",itus:\"0T23110U1B06\",\"itus \":\"0T26110T1B0B\",itv:\"14051B031F021Q04\",itw:\"0303041J\",itwa:\"0303044C0D02\",itwar:\"043C\",\"ity \":\"0M1I0U0511021A06\",ityt:\"1B0Q\",ityti:\"1B1G\",itz:\"0N0I0R03\",ità:\"0Q4G\",\"ità \":\"0Q70\",itá:\"0O040P0B0U080Y07140C\",itä:\"0N0711DT1C0G\",\"itä \":\"11GE\",itäi:\"1121\",itäis:\"114Z\",itän:\"1115\",itää:\"114X\",\"itää \":\"115C\",itään:\"116I\",itæ:\"0T03\",ité:\"0L2L0O030U0B0Y0C1402\",\"ité \":\"0L3N0O050U0F0Y0J\",itò:\"0Q02\",itó:\"0O080P0A1402\",itö:\"110214021P0O\",itön:\"1P0R\",itā:\"0T051D1V\",itāt:\"1D0U\",ită:\"1533\",\"ită \":\"153Y\",itą:\"1B1S\",\"itą \":\"1B2V\",itė:\"1B0X\",\"itė \":\"1B0W\",itę:\"1B0E\",itě:\"0U0L\",\"itě \":\"0U0V\",itų:\"1B09\",\"iu \":\"0P360S0M0T0B0U020Y1C153Z1A1U1BBM1O6L\",\"iu-\":\"0P04\",iua:\"150K\",iub:\"0T0215141B05\",iuc:\"0T04\",iud:\"0O0P0Q0B0T0L150F1B04\",iuda:\"0O130T0E150P\",iudad:\"0O1E\",iug:\"0Q040T031B02\",iui:\"1B0G\",\"iui \":\"1B0Q\",iuj:\"1A031B071O2X\",\"iuj \":\"1O3I\",iujn:\"1O14\",\"iujn \":\"1O28\",iuk:\"110H14021B10\",iuka:\"11081B0T\",iul:\"0T0K151R1B081O06\",\"iul \":\"1403152A\",iuli:\"0T1115081B06\",iun:\"0B0C0O020Q0K0T1L15251B081O2A\",\"iun \":\"0B0K150L1O3M\",iund:\"0T0T\",iunt:\"0Q060T1R1B07\",\"iunt \":\"0T1O\",iuo:\"1B2O\",iuoj:\"1B0S\",iuos:\"1B23\",iuosi:\"1B3I\",iuot:\"1B0S\",iuoti:\"1B1G\",iup:\"0T021B03\",iur:\"0Q030T0J15051A0C1B081O02\",iusc:\"0Q0Z0T02\",iusci:\"0Q0Y\",iust:\"0Q0P0T0H1102\",iut:\"0Q370T0311021403150C1B0F1O08\",iuta:\"0Q2M1O0B\",iutar:\"0Q1K\",iuto:\"0Q191B02\",\"iuto \":\"0Q191B03\",iutt:\"0Q0K\",iuv:\"0T0Q1B06\",iux:\"0T07\",\"iva \":\"0L020O0J0P0N0Q190T050U040V0K100R110G150U1O06\",ivad:\"0O040P040U041C1G\",\"ivad \":\"1C3L\",ivan:\"0L0D0P020Q0H0V0L11191O051Q0X\",\"ivan \":\"0V0M112U1O03\",\"ivat \":\"0T0411AM\",ivb:\"10041Q0B\",ived:\"0M0O0Q050U03\",\"ived \":\"0M0X\",ivel:\"0M030O040P030Q050R020V090Z021102141M150G1O04\",\"ivel \":\"0O050R02141Q1507\",ivent:\"0L120Q0Y0T03\",\"iver \":\"0L100M0E0N020P0V0R020Z2P100E120H\",ivere:\"0P020Q100T0I0Z021O04\",ivert:\"0L020O0D0P0G0Q0S1B0A\",ives:\"0L080M0M0O020P0J0T0D0Z04\",\"ives \":\"0L0E0M0T0O030T0E0Z04\",ivet:\"0Q040V030Z10100J110412161404\",\"ivet \":\"0Z15100I11031212\",\"ivi \":\"0L040Q0H0T0V0V0T110615091O0B\",\"ivi' \":\"1Q5O\",ivin:\"0L020M0O0O040P050T04110B15091B02\",iving:\"0M0W\",ivir:\"0O0P0V0315091B03\",\"ivir \":\"0O0S\",\"ivit \":\"0L030T1J100J1104150F1Q0I\",ivl:\"0V070Z0210041Q07\",ivn:\"0U0D0V0O1002\",\"ivo \":\"0O170P110Q1F0T030U0F0V0K0Y0V11021O0W\",ivol:\"0Q061O071P0Z\",ivot:\"0U1P0V1S0Y1O110G1406\",\"ivot \":\"0U1E0V2A0Y0Y1103\",ivr:\"0L1P0P1V\",ivre:\"0L2O0P09\",\"ivre \":\"0L3J0P09\",ivro:\"0P1X\",\"ivro \":\"0P1R\",ivros:\"0P0P\",ivs:\"100612021Q0B\",ivt:\"100412041Q08\",\"ivt \":\"0Z031005120B\",ivug:\"0436\",ivuga:\"044X\",ivy:\"045H0M0211021B031F02\",ivya:\"04391F02\",ivyo:\"04AJ\",\"ivyo \":\"04H7\",ivä:\"1005114K\",\"ivä \":\"1118\",ivän:\"111K\",ivät:\"113N\",\"ivät \":\"118G\",ivé:\"0L0N0U060Y091407\",\"ivé \":\"0L0O0U090Y0F\",iví:\"0O050U030Y06\",ivò:\"0Q02\",ivö:\"1P0F\",ivý:\"0U0C0Y0L\",ivā:\"1D0T\",ivē:\"1D0Q\",\"iw \":\"031D0D021A031Q0R\",iwal:\"030A0D0O\",iwala:\"030E0D17\",iwan:\"030E0D0G1A05\",iwana:\"03030D0G\",iwe:\"035U044Y1A0M1N0E\",\"iwe \":\"04DF1A0L\",iwen:\"033R\",\"iwen \":\"037X\",iwet:\"031R\",\"iwet \":\"033U\",iwi:\"031G040D1A0I1Q07\",ixa:\"0L030P1G0T021003\",\"ixa \":\"0P0M1002\",ixar:\"0P0P\",ixe:\"030O0M020P0V0T0E\",\"ixe \":\"0P0I\",ixer:\"03020T0Q\",ixi:\"0T2E\",ixit:\"0T3J\",\"ixit \":\"0T32\",ixo:\"0P12\",\"ixo \":\"0P0K\",ixt:\"1002\",\"iy \":\"03021Q3B\",\"iya \":\"0302042K0D8C1F02\",iyac:\"1F1M\",iyacı:\"1F28\",iyah:\"0D071F07\",iyak:\"0D0A\",\"iyak \":\"0D0G\",iyan:\"0D491F0B\",\"iyan \":\"0D40\",iyang:\"0D3S\",iyar:\"1F11\",iyare:\"1F1D\",iyd:\"1F1X\",iydi:\"1F28\",\"iydi \":\"1F29\",iye:\"031504730D0C1F4L1Q0B\",\"iye \":\"04IF1F2I\",iyen:\"03130D061F05\",iyer:\"0D081F05\",iyet:\"03021F12\",iyi:\"036D041V1F7D1Q0K\",\"iyi \":\"032E044C1F59\",\"iyi-\":\"033T\",\"iyi-d\":\"035N\",iyim:\"1F1L\",\"iyim \":\"1F22\",iyl:\"1F0S\",iyle:\"1F0W\",\"iyle \":\"1F18\",iyo:\"042Q0D231FIL1Q06\",\"iyo \":\"04750D11\",iyon:\"0D2L1F081Q06\",\"iyon \":\"0D3Y1F03\",iyong:\"0D0R\",iyor:\"1FKC\",\"iyor \":\"1FBU\",iyord:\"1F42\",iyors:\"1F37\",iyoru:\"1FCS\",iyos:\"0D07\",iyu:\"041Q0D051Q05\",iyud:\"0D081Q06\",iyum:\"0454\",iyumv:\"048Q\",iyä:\"1P0C\",izad:\"03020O0C0P0K\",izb:\"0V0I0Y0W15051D0K\",izc:\"1F0T\",izce:\"1F0X\",izd:\"03030V081B0H1D311F0V1N0U\",izda:\"0V051B051D2U\",izdar:\"1D76\",izde:\"03021F0Q1N10\",\"ize \":\"043R0L030M0F0P020U041F2D1N2S1O07\",ized:\"03030M0F1403\",\"ized \":\"0M0K\",izem:\"03060P0F1F021N0X\",\"izem \":\"03030P0E1N19\",izen:\"03080M020N030P090R0O140J\",izer:\"03080P1R0U0215031O03\",\"izer \":\"0P1V\",izet:\"141X\",izg:\"03020V1W14041D131F03\",izgl:\"0V1D\",izgle:\"0V3F\",izgub:\"0V1R\",izia:\"0P030Q1J1507\",\"izia \":\"0P030Q0T1509\",izie:\"0N080Q0P1506\",izim:\"03021F1E\",\"izim \":\"1F1A\",izin:\"0302042K0B080M020N030P080U060V041F2D\",\"izin \":\"0N041F2V\",izina:\"044E\",izio:\"0Q1G\",izion:\"0Q0S\",izit:\"031C150X1O0S\",iziñ:\"1N13\",\"iziñ \":\"1N1G\",iziň:\"1N3P\",\"iziň \":\"1N51\",izk:\"1A021D0E\",izl:\"03020V0E1D0R1F1T1N0I\",izle:\"0V031F1I1N0D\",izm:\"03020P040V0L0Y0514071A021B031D241F091N15\",izma:\"1B021D13\",izman:\"1D2F\",izmi:\"1D1G1N1O\",\"izmi \":\"1N27\",izmir:\"1D2T\",izn:\"0U050V0U0Y0614041A041D0M1F02\",\"izo \":\"041G0O191O0E\",izp:\"1D0N\",izq:\"0O04\",izr:\"03030V081D0U\",izs:\"140F1D3B\",izsa:\"1D13\",izsk:\"1D1S\",izska:\"1D4L\",izsl:\"1D0S\",izt:\"0304140Y1D0J\",izto:\"1428\",iztos:\"141Z\",izv:\"0V121D1M\",izw:\"0309043Z\",izwa:\"030904B7\",\"izwa \":\"030204I9\",izy:\"1A051F0A\",izá:\"0O051406\",izó:\"0O03\",izē:\"1D11\",\"izēm \":\"1D1W\",izņ:\"1D14\",izņe:\"1D1C\",izņem:\"1D3G\",iß:\"0N0W\",\"iß \":\"0N0S\",iße:\"0N07\",ißt:\"0N0B\",ià:\"0Q08\",\"ià \":\"0Q0W\",iá:\"0P020U030Y041416\",iáb:\"140G\",ián:\"0U03140G\",iár:\"0P041404\",iã:\"0P08\",ião:\"0P0Z\",\"ião \":\"0P16\",iä:\"11141P0F\",\"iä \":\"113S\",iäl:\"1P0K\",iän:\"1107\",iää:\"1105\",iæ:\"0T04\",\"iæ \":\"0T09\",iç:\"0P0B1F6B1N3W\",\"iç \":\"1F351N57\",iça:\"0P06\",içb:\"1F1H\",içbi:\"1F1P\",içbir:\"1F2B\",içe:\"1F111N0K\",içi:\"1FAF1N19\",için:\"1FBE1N0G\",\"için \":\"1FDZ\",içind:\"1F16\",içm:\"1F0I1N0C\",iço:\"0P08\",içt:\"1F0A\",içã:\"0P0O\",ição:\"0P0T\",\"ição \":\"0P11\",içõ:\"0P0A\",iè:\"0L0N\",ièc:\"0L0E\",ièm:\"0L08\",ièr:\"0L2F\",ière:\"0L420R02\",\"ière \":\"0L5N0R02\",ièt:\"0L04\",ié:\"0L0C0O0P1416\",\"ié \":\"0L0Y0O031402\",iée:\"0L08\",ién:\"0O22\",\"ién \":\"0O2V\",iér:\"0O04141Z\",iért:\"144Z\",\"iért \":\"1458\",iés:\"0L05\",iét:\"0L0C\",iê:\"0P04\",iên:\"0P0H\",iênc:\"0P0K\",iênci:\"0P0P\",ië:\"01050R0F\",\"ië \":\"01070R0H\",iën:\"0R03\",iër:\"0R02\",ií:\"0U02\",ið:\"13CM\",\"ið \":\"13KS\",iða:\"130W\",iði:\"131L\",iðin:\"1315\",iðs:\"130I\",iðu:\"1317\",iður:\"131P\",\"iður \":\"132T\",iñ:\"0O0G1N5S\",\"iñ \":\"1N8R\",iña:\"0O0A\",iñe:\"1N0E\",iñi:\"1N13\",iñiz:\"1N0V\",iñl:\"1N0S\",iño:\"0O15\",\"iño \":\"0O0U\",iños:\"0O0X\",\"iños \":\"0O17\",iò:\"0Q0A\",\"iò \":\"0Q15\",ió:\"0O3D140K1A0H\",\"ió \":\"0O4E140A\",iód:\"0O051A05\",ión:\"0O6G0U02\",\"ión \":\"0O9N\",iót:\"140C\",iõe:\"0P05\",iö:\"11041P1B\",\"iö \":\"1104\",iöp:\"1P2G\",\"iöp \":\"1P2K\",iös:\"10031104\",iø:\"1202\",iøs:\"1202\",iù:\"0Q0W\",\"iù \":\"0Q3G\",iú:\"0S1R1409\",\"iú \":\"0S0V1407\",iúi:\"0S19\",iúil:\"0S0Z\",\"iúil \":\"0S41\",iúl:\"0S0T\",iún:\"0S1G\",iúnt:\"0S16\",iúnta:\"0S4R\",iúr:\"0S0T\",\"iúr \":\"0S0X\",iü:\"14021P0B\",iüp:\"1P0K\",iý:\"1N5X\",iýa:\"1N42\",\"iýa \":\"1N2J\",iýad:\"1N26\",iýada:\"1N2Z\",iýd:\"1N12\",iýdi:\"1N1I\",iýe:\"1N1J\",iýen:\"1N19\",\"iýen \":\"1N1B\",iýi:\"1N3F\",iýip:\"1N4S\",\"iýip \":\"1N6A\",iým:\"1N0Y\",iýme:\"1N0Z\",iýý:\"1N0U\",iýýä:\"1N14\",iā:\"0T041D06\",\"iā \":\"0T06\",iāl:\"1D0J\",iās:\"0T02\",ią:\"1A371B0M\",\"ią \":\"1A1N1B1O\",iąg:\"1A12\",iąż:\"1A1Q\",iążk:\"1A1M\",ić:\"0V0K1A2X\",\"ić \":\"0V051A5Y\",iĉ:\"1O0V\",iĉa:\"1O0O\",iĉe:\"1O0F\",iĉi:\"1O05\",iĉo:\"1O08\",iĉu:\"1O03\",ič:\"03020U170V1X0Y231B0D\",\"ič \":\"03030U040Y1W\",iča:\"0U030V210Y0N\",iče:\"0U0T0V0H\",iči:\"03030U070V0K0Y0O1B10\",ičia:\"0Y0L1B13\",ičiau:\"1B1Q\",ičk:\"0U0E0V0T0Y1B\",ičn:\"0U030V1I0Y05\",ično:\"0V17\",\"ično \":\"0V2L\",ičt:\"0U0B0Y0D\",iđ:\"0V0A\",iē:\"0T08\",\"iē \":\"0T05\",iēb:\"0T02\",iēn:\"0T09\",iēs:\"0T03\",iė:\"1B06\",iėm:\"1B0G\",ię:\"1ABV\",\"ię \":\"1AH5\",ięc:\"1A1T\",ięcej:\"1A1V\",ięd:\"1A0V\",iędz:\"1A19\",iędzy:\"1A1X\",ięk:\"1A1R\",ięt:\"1A0Y\",iĝ:\"1O38\",iĝa:\"1O1F\",iĝas:\"1O23\",\"iĝas \":\"1O45\",iĝi:\"1O2W\",\"iĝi \":\"1O15\",iĝis:\"1O37\",\"iĝis \":\"1O69\",iĝo:\"1O0X\",iĝos:\"1O0N\",\"iĝos \":\"1O1B\",iĝu:\"1O0C\",iğ:\"1F3S\",iğe:\"1F0M\",iği:\"1F94\",\"iği \":\"1F1Y\",iğim:\"1F2C\",\"iğim \":\"1F1G\",iğimi:\"1F1E\",iğin:\"1F6M\",\"iğin \":\"1F17\",iğini:\"1F6D\",iī:\"0T02\",\"iī \":\"0T02\",iīs:\"0T02\",iķ:\"1D08\",iķi:\"1D0T\",iļ:\"1D06\",ił:\"1A4K\",\"ił \":\"1A3Z\",iła:\"1A1S\",\"iła \":\"1A1X\",iłe:\"1A2H\",iłem:\"1A2L\",\"iłem \":\"1A44\",\"iłeś \":\"1A1F\",iń:\"1A041L04\",iņ:\"1D7A\",iņa:\"1DCE\",\"iņa \":\"1D9S\",iņai:\"1D1U\",\"iņai \":\"1D4L\",iņam:\"1D3F\",\"iņam \":\"1D8K\",iņas:\"1D20\",\"iņas \":\"1D4Z\",iņi:\"1D4M\",\"iņi \":\"1D4H\",iņie:\"1D1J\",iņiem:\"1D3U\",iņu:\"1D3I\",\"iņu \":\"1D42\",iņā:\"1D0M\",iņš:\"1D9N\",\"iņš \":\"1DC2\",iň:\"0U041NCU\",\"iň \":\"0U031NGS\",iňd:\"1N0B\",iňe:\"1N1F\",\"iňe \":\"1N1N\",iňi:\"1N4C\",\"iňi \":\"1N1K\",iňiz:\"1N4Q\",\"iňiz \":\"1N3N\",iňizi:\"1N14\",iňizm:\"1N1N\",iňl:\"1N25\",iňle:\"1N1V\",iňleý:\"1N1U\",iňli:\"1N12\",iňlis:\"1N1G\",iňm:\"1N15\",iňmi:\"1N1O\",\"iňmi \":\"1N2A\",iō:\"0T08\",\"iō \":\"0T0C\",iōn:\"0T02\",iōs:\"0T03\",iś:\"1A24\",\"iś \":\"1A0X\",iśm:\"1A26\",iśmy:\"1A34\",\"iśmy \":\"1A4X\",iść:\"1A0S\",iŝ:\"1O06\",iŝo:\"1O05\",iş:\"15021F3V1N4F\",\"iş \":\"1F251N12\",işd:\"1N0E\",işe:\"1F1H1N18\",\"işe \":\"1F0U1N1F\",işi:\"1F3H1N3R\",\"işi \":\"1F1K1N2A\",işk:\"1F0B\",işl:\"1F0L1N2G\",işle:\"1F0N1N2X\",işler:\"1F0L1N1B\",işleý:\"1N1D\",işm:\"1F0H\",işt:\"15031F1Q\",işti:\"1F1O\",iştir:\"1F1B\",iš:\"0U0X0V4C0Y1K1B671D06\",\"iš \":\"0U0O0V4T0Y1B1B49\",iša:\"0V0Z1B0B\",išb:\"1B08\",išd:\"1B0B\",iše:\"0U0K0V3E1B0T\",\"iše \":\"0V3B\",išei:\"1B16\",išel:\"0U0V\",\"išel \":\"0U17\",išg:\"1B0R\",iši:\"0V080Y1I1B04\",išie:\"0Y2K\",išiel:\"0Y36\",išk:\"0U021B50\",iška:\"0U021B4I\",iškai:\"1B6F\",iškas:\"1B1T\",iški:\"1B1I\",iškin:\"1B1J\",\"išką \":\"1B1G\",išl:\"0U090V0W0Y121B0H\",išla:\"0U060V060Y111B09\",\"išla \":\"0U090V0F0Y1A\",\"išli \":\"0U060V0D0Y0X\",išm:\"1B0Q\",išp:\"1B09\",išr:\"1B09\",išs:\"1B18\",išsi:\"1B18\",išt:\"0U0B0V1S1B0Z\",išta:\"0V1N1B09\",\"išta \":\"0V401B03\",išv:\"1B17\",išė:\"1B0K\",išėj:\"1B0U\",išķ:\"1D0E\",iţ:\"1504\",iť:\"0Y3H\",\"iť \":\"0Y8L\",iū:\"1B0X\",\"iū \":\"1B0B\",iūd:\"1B08\",iūl:\"1B0E\",iūr:\"1B1F\",iūrė:\"1B1P\",ių:\"1B24\",\"ių \":\"1B5O\",iż:\"1A0P\",\"iż \":\"1A10\",iž:\"0U090V060Y0A1B08\",iža:\"0V031B08\",ižn:\"0U020Y0D\",iǧ:\"0303\",iș:\"150L\",ișt:\"1517\",iț:\"150V\",iți:\"1532\",\"iți \":\"152M\",iɛ:\"030C\",iɣ:\"034E\",\"iɣ \":\"0399\",iɣe:\"031F\",iɣt:\"031K\",i̇:\"1F20\",i̇k:\"1F0I\",i̇l:\"1F0D\",i̇n:\"1F1L\",i̇ng:\"1F0Y\",i̇ngi:\"1F1B\",i̇s:\"1F13\",i̇y:\"1F0E\",i̇ş:\"1F0R\",iε:\"0303\",iг:\"1L08\",iз:\"1L0P\",iк:\"1L18\",\"iк \":\"1L2A\",iл:\"1L1Q\",iлi:\"1L1C\",iле:\"1L1B\",iм:\"1L0Y\",iн:\"1L2D\",\"iн \":\"19021L2V\",\"iнiң \":\"1L2U\",iнд:\"1L19\",iнде:\"1L26\",iп:\"1L0D\",iр:\"1L0V\",iс:\"1L0D\",iш:\"1L05\",iң:\"1L11\",\"iң \":\"1L2P\",iḍ:\"032D\",\"iḍ \":\"034H\",iḍe:\"031X\",iḥ:\"030P\",iṛ:\"030A\",iṣ:\"0303\",iṭ:\"030K\",iẓ:\"030E\",\"j'\":\"0L1U1Q0R\",\"j'a\":\"0L741Q1I\",\"j'a' \":\"1Q4R\",\"j'ai\":\"0L9W\",\"j'ai \":\"0LDF\",\"j'aim\":\"0L2Z\",\"j'e\":\"0L0U1Q1C\",\"j'en\":\"0L0N\",\"j'es\":\"0L0P\",\"j'i\":\"0L09\",\"j'y\":\"0L04\",\"j'é\":\"0L0R\",\"j'ét\":\"0L14\",\"j'éta\":\"0L1R\",\"ja'\":\"1Q2X\",\"ja-\":\"03021104\",jaa:\"010H0B0N0R0M111P1C15\",\"jaa \":\"1126\",jaan:\"0B19110M\",\"jaan \":\"0B1R1115\",jaap:\"1C0S\",jaapa:\"1C1Z\",jaar:\"010Y0R2A\",\"jaar \":\"010S0R2N\",\"jab \":\"03021C0Q\",jabl:\"0U0J0Y11\",jablk:\"0U0K0Y18\",jaci:\"1A19\",\"jad \":\"14071C0R\",jade:\"100L\",\"jade \":\"100L\",jadi:\"0B3Y\",\"jadi \":\"0B76\",jado:\"0O0P0P04\",jadz:\"1D3A\",jadzē:\"1D71\",jaf:\"130U\",jafn:\"1316\",jag:\"0B070V030Z0310QD1D1P1N0L1Q0F\",\"jag \":\"10SG1D27\",jah:\"0B0C0N0R11041C0N1Q2J\",\"jah \":\"0B081C0L1Q2B\",jahr:\"0N1W\",jahre:\"0N20\",jai:\"0M02110L14091B2S1D1X\",\"jai \":\"14051B451D2C\",jaj:\"0B020V0G110214031A081O021Q5N\",\"jaj \":\"0V0414071O021Q8Z\",\"jak \":\"0B0X0U4W0V0C140R1A5M1N2B\",jakd:\"1N19\",jakdy:\"1N1Q\",jaki:\"1A1X\",jakie:\"1A1K\",jako:\"0U350V0I11031A0J1O04\",\"jako \":\"0U3P0V1B1A0M1O02\",jaks:\"110K1C0K\",\"jaks \":\"1C1E\",jaké:\"0U190Y0I\",\"jaké \":\"0U1G0Y0I\",jaký:\"0U0X\",\"jaký \":\"0U13\",\"jal \":\"0U060Y0C0Z07100214041C0L\",jala:\"0B2Q0U020V0B110D14021C0I\",jalan:\"0B521109\",jalg:\"1C0Y\",\"jam \":\"0B240P090T0L0V0F140M1B2N1D181O1G\",jamai:\"0L4M0P0D\",jamb:\"042D0L08\",jambo:\"0441\",jamm:\"010Q0R031103\",jamme:\"010S0N020R041108\",jams:\"1B021D0W\",\"jams \":\"1B041D2A\",jana:\"043Y11061409\",\"jana \":\"046M110C\",jang:\"0B3L1Q0U\",\"jang \":\"0B1M1Q0O\",janga:\"0B57\",jao:\"0V0I1C0H\",jaok:\"1C0K\",jaoks:\"1C1E\",japa:\"010V0M0D0N0J0R0W0V0I0Z0N100O111D120X13171O0K\",japan:\"010X0M0I0N0X0R170V1A0Z0T100O113C120X132K1O15\",japo:\"0L0R0O0G0P0C0U0G0Y11150Y1A171B0Y1F0Q\",japon:\"0L1B0O0M0P0F0U0N0Y1A15181A101B1Z1F10\",japán:\"140Y\",japü:\"1P0Z\",japük:\"1P15\",japā:\"1D0W\",\"jar \":\"0B2A0O1E0P0E100G130H1Q16\",jara:\"0B110O041O09\",jari:\"0B0Q0R04\",jaro:\"0O0F0U041O18\",jaroj:\"1O1N\",\"jas \":\"0O0X0P070R07100214061B2E1C0V1D691O061Q06\",\"jat \":\"0B051004110W140C15081D15\",jate:\"0O020U020V1C11081B0B\",jatel:\"0U020V3C110K\",jatl:\"1QDJ\",jatlh:\"1QKU\",jatt:\"1114\",jatte:\"112F\",jatu:\"0B0O110K\",jatuh:\"0B1D\",jau:\"0B0G0L0311061B7S1D6K\",\"jau \":\"0B041B901D29\",jauh:\"0B0R1103\",\"jauh \":\"0B19\",jauk:\"1B031D0W\",jaun:\"0L041B141D3F\",jauna:\"1B0Y1D1W\",jauns:\"1D25\",jaut:\"11041B0G1D20\",jautā:\"1D48\",jauč:\"1B0U\",jauči:\"1B1Q\",jaw:\"0B0G1A09\",jawa:\"0B0V\",jawab:\"0B1L\",jay:\"0306040C1Q0O\",jazy:\"0U180Y24\",jazyk:\"0U1L0Y2M\",jaý:\"1N0K\",jaĝ:\"1O0C\",jaň:\"1N0E\",jbe:\"03091Q2I\",\"jbe'\":\"1Q4B\",\"jbe' \":\"1Q5X\",jc:\"0U020V031A0N1Q08\",jci:\"0V041A0S\",jd:\"03030R140U160V090Y0L0Z0K1006140O1A0L1Q0N\",\"jd \":\"0R151006140Q\",jda:\"0V02100214041F021Q23\",\"jdaq \":\"1Q5X\",jde:\"03040R0D0U1G0V0M0Y1C0Z0T1009\",\"jde \":\"0R040U1D0V0N0Y0T0Z0X1009\",jdem:\"0U0E0V020Y0W\",jden:\"0R14\",\"jden \":\"0R0Z\",jder:\"0R040Z0R\",\"jder \":\"0Z0T\",jdet:\"0U070Y090Z0C\",\"jdet \":\"0Z0F\",jdi:\"03040U061Q0C\",jds:\"0R020Z03\",jdt:\"0R02\",jdu:\"03020U0K1A04\",\"jdu \":\"0U0X\",jdzie:\"1A1H\",\"je'\":\"1Q3C\",jeb:\"030K0B020R090Z041D0M\",jebl:\"0R0Z0Z0A\",jebli:\"0R1C0Z0C\",jec:\"0L050M070O020R020T021A0Z\",jech:\"1A1C\",jecha:\"1A25\",ject:\"0L090M0D0R070T03\",jeda:\"0V1B\",jedan:\"0V39\",jedd:\"0307120R\",jedde:\"120J\",jede:\"0N1S0U190V0V0Y130Z0C120A14021A0F\",\"jede \":\"0N0D0U0G0V0L0Z0D\",jeden:\"0N0Z0U100Y1C1A0P\",jedi:\"0U0L0V0L0Y1E\",jedin:\"0U0T0V1G0Y0X\",jedl:\"0U0G0Y131A03\",jedn:\"0U2Y0V2Y0Y2Q1A1E\",jedno:\"0U2H0V460Y1K1A0Q\",jedz:\"0Y0D1A1C\",jee:\"110D\",jef:\"0O050V041204\",jeg:\"0V1I0ZEG12HR140D1A2S1N121Q07\",\"jeg \":\"0V040ZRJ12SG\",jegi:\"1N1G\",jego:\"0V1B1A40\",\"jego \":\"1A6B\",jegov:\"0V3D\",jeh:\"03050U1K0Y1V\",jeho:\"0U2J0Y37\",\"jeho \":\"0U3H0Y3Y\",jei:\"0P0E11031B1H\",\"jei \":\"0P021B0T\",jeig:\"1B1M\",jeigu:\"1B3C\",jej:\"0302040D0U130Y3710061A2C1Q06\",\"jej \":\"0U020Y5G10021A3D\",jejic:\"0U0R\",její:\"0U16\",\"její \":\"0U1D\",\"jek \":\"140J1A041N3X\",jekd:\"1N2M\",jekdi:\"1N3D\",jekt:\"0N060U040V040Z0610041109120C14031A061B071O0B\",\"jel \":\"03020U0R0Z0A1204140M\",jela:\"0B0M0U050V03\",jeld:\"120E\",jelde:\"120D\",jele:\"0B0511031204142C1506\",jelen:\"11021427\",jell:\"0302110B120Z1405\",jelle:\"1104120C1405\",jelp:\"121T\",\"jelp \":\"120R\",jelpe:\"1213\",\"jem \":\"03080U0D0V2L0Y7N0Z0T1211140L1A0G1N0F1Q09\",jema:\"0B0F0N0U\",jeme:\"0U0W0Y1G1402\",\"jeme \":\"0U180Y1T\",jemm:\"0Z0X1102120Z\",jemme:\"0Z14120Z\",jemp:\"0O061102120C\",jempe:\"120C\",jend:\"0B0A0Z08\",jene:\"0N070V060Z0C120P1408\",jener:\"0N040Z0A120C\",jenn:\"1103121J\",jenne:\"120O\",jenno:\"120U\",jent:\"030V0V050Z0C1106121N1A03\",\"jent \":\"031V0Z07120F1A02\",jente:\"0Z09120W\",jep:\"0B0K1Q04\",jepa:\"0B13\",jepan:\"0B26\",\"jer \":\"0O0V0V0M0Z1K100Q120L\",jere:\"0O0E0Z0Q\",jeres:\"0O0I0Z0M\",jerg:\"0Z0A\",jern:\"0Z1210021218\",jerne:\"0Z0P120W\",jerns:\"0Z0D\",jero:\"0O0S\",jert:\"0Z0C120H\",jerte:\"0Z0F120F\",\"jes \":\"0O0F0R1D140B1O0A1Q0H\",jese:\"0V031418\",jesen:\"0V08141A\",\"jesi \":\"0V251108\",\"jest \":\"1AOV\",jeste:\"0V0L0Z05110S1AAS\",jestl:\"0U2C\",jesz:\"14081A2O\",\"jesz \":\"1A1P\",jeszc:\"1A2N\",\"jesť \":\"0Y0Z\",\"jet \":\"03020L0S0U0J0Z091102140C\",jete:\"0L040U0N0V080Y19140A\",\"jete \":\"0U0T0V0K0Y1K\",jetz:\"0N1H\",jetzt:\"0N2G\",jeu:\"0L17\",jeun:\"0L1J\",jeune:\"0L2H\",jev:\"0U070V0912031P0E\",jew:\"0302040M0M02\",jewe:\"041V\",\"jewe \":\"043C\",jez:\"0R030U0H0V13140E15041A06\",jezi:\"0V171A06\",jezik:\"0V2R\",jeś:\"1A1C\",jeśl:\"1A1C\",jeśli:\"1A26\",ješ:\"0U2T0V0X0Y14\",\"ješ \":\"0U1F0V0X0Y1X\",ješt:\"0U39\",ještě:\"0U4H\",jf:\"0R0G14021O02\",\"jf \":\"0R0D\",jfe:\"0R03\",jft:\"0R06\",jg:\"0R071A02\",\"jg \":\"0R02\",jge:\"0R07\",jgen:\"0R0L\",jgt:\"0R02\",jh:\"0U020Y0D1Q08\",jhe:\"0302\",jho:\"0U030Y0X1Q03\",\"jho \":\"0Y1F\",jia:\"0B061104\",jib:\"03040B021P0S1Q1G\",jibl:\"1P0X1Q07\",jiblo:\"1P12\",jic:\"0U0E0V0E0Y0J1Q0H\",jich:\"0U0M0Y0X1Q0W\",\"jich \":\"0U0V0Y15\",jid:\"03020B031Q0P\",jie:\"011B11021B4J1D371P0B\",\"jie \":\"012D1B65\",jiem:\"1B0S1D13\",\"jiem \":\"1D2T\",jiems:\"1B1M\",jies:\"1D1E\",\"jies \":\"1D3L\",jiet:\"1D17\",\"jiet \":\"1D2Y\",jif:\"1P0C\",jig:\"03020V111O031Q0N\",jih:\"0V0S1Q7C\",\"jih \":\"0V0T1Q64\",jihv:\"1Q3M\",jihva:\"1Q61\",jij:\"040H0R0J1Q24\",\"jij \":\"0R24\",jik:\"0B0S1F02\",jika:\"0B1I\",\"jika \":\"0B2T\",jil:\"03020O030U030V020Y0811041Q0Y\",jima:\"0V0I1B0K1P161Q06\",jimat:\"1P1D\",jing:\"0B0V1B0C1Q06\",\"jing \":\"0B1E\",jip:\"1P0D1Q0T\",jiq:\"1Q35\",jir:\"0304040S1Q0M\",jira:\"041O1Q0K\",jis:\"0O050U0Q11031BBS1D3A1F021P0U1Q14\",\"jis \":\"1BHO1D451O02\",jiso:\"1P0Z1Q0Z\",jison:\"1P15\",jist:\"0O080U171104\",jiv:\"0V0Z1Q16\",jiw:\"0B021Q08\",jj:\"030O140C\",jje:\"0307140B\",jji:\"031J\",jk:\"0R2B0U020V0F0Y0A100514021A05\",\"jk \":\"0R2B\",jka:\"0V0O10031A04\",jke:\"0R0O0V061009\",\"jke \":\"0R1E0V081003\",jken:\"0R0V1009\",\"jken \":\"0R151009\",jkh:\"0R04\",jki:\"1A02\",jks:\"0R05\",jkt:\"0R0B\",\"jkt \":\"0R15\",jkv:\"1003\",\"jl \":\"0R040Z09\",jle:\"0U0A0Y0M0Z0314021A0C\",jlep:\"0U0G0Y121A0I\",jlepš:\"0U0N0Y1B\",jli:\"0Z05100D1Q0K\",jlig:\"0Z0D100I\",jlo:\"15061O031Q05\",jls:\"0R02\",jm:\"03050U0N0V070Y0D1A0I1O0F1Q1E\",jme:\"03090U0K0Y0L1O0G1Q1C\",\"jme \":\"0U090Y0X1O0D\",jmo:\"0U030V031A031O041Q27\",jmé:\"0U0H\",jmén:\"0U0Q\",jméno:\"0U0R\",jn:\"0R5I0U0H0V0P0Y0J0Z05140B1A0I1O7P1Q0A\",\"jn \":\"0R7O1OBC\",jna:\"0R060U020V0714031A051O0G\",\"jna \":\"0R0P0U040V0914021A081O02\",jne:\"0R050V060Y0J0Z081A061O0D1Q04\",\"jne \":\"0R080V060Y0V0Z0F1A051O0K\",jni:\"0V0C10021A081O0C1Q0Z\",jnl:\"0R05\",jnli:\"0R0J\",jno:\"0U050V140Y0614061A031O0I\",\"jno \":\"0V161O0F\",jns:\"0R02\",joa:\"1107150A\",job:\"0M0E0Z031013120T141E1502\",\"job \":\"0M0N0N030Z06\",jobb:\"101H1223143L\",\"jobb \":\"100J120G1422\",jobba:\"100H141J\",jobbe:\"100F121O\",joc:\"1004150E\",joga:\"0P0Y14061N1Z\",jogap:\"1N1U\",jogo:\"0P0O140A\",joi:\"0L090M03112Q\",joit:\"113A\",joita:\"112C\",joitt:\"113O\",joj:\"0V11110C1B1F1O0A\",\"joj \":\"0V191O0A\",joje:\"11021B1M\",\"joje \":\"1B3B\",jok:\"0M03112J120314021B0H1P0C\",joka:\"113B\",\"joka \":\"116I\",jol:\"0L050Z041003110C1203\",jole:\"0Z081207\",jom:\"0V0L0Y0M14031A051B0R\",jome:\"1B13\",\"jome \":\"1B29\",\"jon \":\"1002113I1215141I1O1C1Q0D\",jona:\"0M031109120A1A041B06\",jonen:\"120Z\",joner:\"1002120H\",jong:\"0R1J1404\",jonge:\"0R1K\",jonk:\"111D\",joo:\"11091C21\",jook:\"1C0R\",jooks:\"1C1S\",joon:\"11081C0Q\",jop:\"11061D0Q1Q03\",jopr:\"1D0X\",jopro:\"1D2F\",\"jor \":\"0M020O1T1209\",jord:\"0Z1H1023121T\",jorde:\"0Z1D101R121N\",joro:\"041R1O09\",\"joro \":\"04351O0F\",jort:\"0Z0V100W1214\",\"jort \":\"0Z0Q100O120X\",\"jos \":\"0O1S0P05113T1403150R1B5S1D1L\",jot:\"03020V02112O1B0J1D0T1Q08\",\"jot \":\"03021D0U\",jota:\"112M\",jotai:\"113W\",jotk:\"1111\",jou:\"01530L560M020P060R0N1110\",\"jou \":\"01AK0P070R150U02\",joue:\"0L1B\",jour:\"0L6N0M030R030Z02\",\"jour \":\"0L2E\",jourd:\"0L2I\",journ:\"0L1O0M040N020R040Z02\",jours:\"0L57\",jouw:\"0R18\",\"jouw \":\"0R1M\",jov:\"0O0C0P0G0U040Z02\",jove:\"0O0J0P0J\",joy:\"0L020M0A1Q03\",joã:\"0P09\",još:\"0V1I\",\"još \":\"0V1T\",jp:\"0R051A031Q0D\",\"jp \":\"0R04\",jpe:\"0R03\",jq:\"1Q0K\",jr:\"0Z0914061A0A1O05\",\"jr \":\"0Z04\",jre:\"0Z09\",jret:\"0Z0F\",\"jret \":\"0Z0I\",jro:\"1O06\",js:\"0R0B0UCB0V0A0Y0A0Z08140A1A0Y1D0C\",\"js \":\"0R0A10021D1F\",jse:\"0UE30Z08\",\"jse \":\"0Z0C\",jsem:\"0UKP\",\"jsem \":\"0UPC\",jsi:\"0U4N\",\"jsi \":\"0U7F\",jsm:\"0U2T\",jsme:\"0U4K\",\"jsme \":\"0U6A\",jso:\"0U2V\",jsou:\"0U4N\",\"jsou \":\"0U6E\",jst:\"0R030U1U0V0A0Y040Z021A03\",jste:\"0U2X0Z04\",\"jste \":\"0U420Z04\",jsz:\"140C1A0Y\",jsť:\"0Y0E\",jt:\"0R080U0H0V090Y1J0Z03141E1O0B1Q0H\",\"jt \":\"0R0A0Z0210021409\",jta:\"140K1O0C1Q1R\",jte:\"0U0Y0V0P0Y220Z02140K\",\"jte \":\"0U1K0V0S0Y3H\",jti:\"1O02\",jto:\"0Y0I14081O05\",jtr:\"0Y1H\",jtra:\"0Y2J\",\"jtra \":\"0Y2X\",jtó:\"140I\",jub:\"0T020V0X1C111Q06\",juba:\"0V0L1C0Y\",\"juba \":\"1C2D\",juc:\"150I\",juda:\"0P1Q10081B021N0E\",\"juda \":\"0P0Q10021B031N0J\",judar:\"0P19\",judi:\"0O020P030T030V191002140A1B02\",\"judi \":\"0V2W\",jue:\"0O0L1203\",jueg:\"0O0R\",jug:\"0B0M0L050N020O0T0T02100C1303\",juga:\"0B170O101003\",\"juga \":\"0B2E1003\",juh:\"0B04110H1C151Q39\",juht:\"1C19\",juhtu:\"1C2G\",jui:\"0L030O020R041103\",juj:\"03030B040U020V081B04\",\"juk \":\"0B07100G14281B0G\",\"jul \":\"0Z0H1005150J1P0N1Q0W\",jule:\"0Z0O100312061308\",jull:\"01210R4Z\",julle:\"0126\",julli:\"0R6O\",\"jum \":\"0302131S\",jumi:\"11031B081D0S\",jums:\"1B1O1D47\",\"jums \":\"1B3H1DAD\",jumu:\"1D1L\",\"jumu \":\"1D3G\",juna:\"110V13061O0P\",junt:\"0O0P0P0P\",juo:\"111F1B2E\",\"juo \":\"110C1B0X\",juok:\"110S1B19\",juos:\"11061B10\",\"juos \":\"1B1O\",jup:\"0L0210051O021Q1Q\",\"jus \":\"0B030L030T0910021B171C0G\",jusi:\"11041B0N1D0S\",jusq:\"0L0W\",jusqu:\"0L1J\",\"just \":\"0M2W100K11051C26\",juste:\"0L1Y1O04\",\"jut \":\"0B0F0V0810021405150F\",juta:\"0B060V041005140215121B021C1P\",jutro:\"0V0K1A1N\",juu:\"11191C1F\",juur:\"111X1C0N\",juuri:\"114L\",juv:\"0O020P020T0510051105\",jux:\"0T02\",juz:\"0O02\",juč:\"0V17\",juče:\"0V0X\",\"juče \":\"0V1V\",juĝ:\"1O04\",juš:\"1D18\",juši:\"1D0Z\",\"juši \":\"1D2A\",już:\"1A1X\",\"już \":\"1A2R\",jv:\"0R0A0U030V050Y031Q0H\",jve:\"0R0E0V061Q0A\",jven:\"0R1D\",\"jven \":\"0R1U\",jvo:\"1Q0A\",jw:\"040D1A051Q0H\",jwe:\"041A\",\"jwe \":\"043V\",jwi:\"1A051Q1M\",jy:\"015S11031N0U\",\"jy \":\"019J1N0G\",jyk:\"11021N0I\",jz:\"0R050V021402\",jze:\"0R05\",jzo:\"1403\",jà:\"0L06\",\"jà \":\"0L0W\",já:\"0P0L0U0Q1328143H\",\"já \":\"0P2K0U1C131E\",jáb:\"140G\",ják:\"0U02140Y\",\"ják \":\"0U02142G\",jál:\"132L1405\",jálf:\"131S\",jálp:\"131V\",jálpa:\"132Y\",ján:\"130A140Q\",jár:\"130B141Q\",ját:\"13071427\",\"ját \":\"1437\",játs:\"1417\",játsz:\"1415\",jä:\"101L111I1C1A1N0A\",\"jä \":\"11181N0H\",jäi:\"11081C0F\",jäl:\"102Y110W\",jälk:\"1116\",jälke:\"112L\",jälp:\"102F\",\"jälp \":\"100Q\",jälpa:\"1014\",jälv:\"101A\",\"jälv \":\"100V\",jäm:\"1006\",jän:\"100D110G\",jär:\"100P110S1C1E\",järg:\"1C18\",järgm:\"1C1S\",järn:\"100E\",jäs:\"1109\",jät:\"100A110X1C0N\",jätt:\"100D110S\",jäv:\"1003\",jää:\"11141C1T\",jå:\"0Z021202\",jåf:\"1202\",jål:\"0Z031202\",jåle:\"0Z091205\",jæ:\"0Z0H1208\",\"jæ \":\"0T02\",jæl:\"0Z0N\",jælp:\"0Z1F\",\"jælp \":\"0Z0N\",jælpe:\"0Z14\",jær:\"120D\",jære:\"120G\",jærl:\"120E\",jærli:\"120E\",jæv:\"0Z02\",jé:\"0O02140K\",\"jé \":\"0O05\",jér:\"0O021403\",jét:\"140D\",jí:\"0U530Y0V\",\"jí \":\"0U5L0Y0O\",jíc:\"0U0D\",jíd:\"0U0J\",jídl:\"0U0S\",jím:\"0U1D0Y1A\",\"jím \":\"0U0T0Y0Z\",jíma:\"0U0R0Y19\",jís:\"0U0D\",\"jíst \":\"0U0V\",jít:\"0U23\",\"jít \":\"0U3A\",jó:\"0O070Y02132V141X1A02\",\"jó \":\"0O0I1307141T\",jól:\"13111417\",\"jól \":\"130C142Y\",jón:\"131A1402\",jór:\"130Z\",jós:\"130P1402\",jót:\"0Y06130T1405\",jóv:\"0O041402\",jóð:\"130Z\",jõ:\"1C0F\",jõe:\"1C0B\",jõu:\"1C0Q\",jõud:\"1C0L\",jö:\"100C131R141L1P11\",jöd:\"1003\",jög:\"1004131V\",\"jög \":\"1005132X\",jöl:\"100C130H\",jölk:\"100F\",jön:\"100814141P1S\",\"jön \":\"1006141M\",jöni:\"1P29\",jönik:\"1P2M\",jönn:\"1418\",jör:\"1003130Y\",jöt:\"10021306140X\",jött:\"142E\",\"jött \":\"141F\",jöv:\"140K\",jø:\"0Z04122I\",jøe:\"1203\",jøk:\"1202\",jøl:\"1204\",jøle:\"1209\",jøn:\"1206\",jønn:\"120C\",jøp:\"120Q\",jøpe:\"120U\",\"jøpe \":\"120N\",jøpt:\"120W\",jøpte:\"120O\",jør:\"0Z04122P\",\"jør \":\"122B\",jøre:\"123Y\",\"jøre \":\"123H\",jørn:\"0Z0A1206\",jørt:\"120C\",jøt:\"1206\",jøtt:\"120C\",jú:\"0Y1W130J1403\",\"jú \":\"0Y3V13071402\",júc:\"0Y0Y\",júk:\"130M\",jü:\"140E1N0B\",jük:\"140G\",jün:\"0N02140B\",jā:\"1D3F\",\"jā \":\"1D4N\",jāa:\"1D0E\",jāb:\"1D0H\",jād:\"1D0U\",jāda:\"1D0W\",jādar:\"1D2A\",jāi:\"1D0K\",jām:\"1D2Q\",\"jām \":\"1D38\",jāp:\"1D0O\",jās:\"1D38\",\"jās \":\"1D3T\",jă:\"1505\",\"jă \":\"150H\",ją:\"1A2U1B17\",\"ją \":\"1A431B3D\",jąc:\"1A19\",jč:\"0U060Y07\",jď:\"0U05\",jē:\"1D04\",jė:\"1B03\",ję:\"1A2I1B04\",\"ję \":\"1A3A1B03\",jęs:\"1B09\",język:\"1A1M\",jį:\"1B0Q\",\"jį \":\"1B22\",jı:\"1F03\",jś:\"1A0H\",jść:\"1A0Q\",jš:\"0U0D0Y0H\",jši:\"0Y0Q\",jšie:\"0Y0W\",\"jšie \":\"0Y12\",jší:\"0U0P0Y0G\",\"jší \":\"0U100Y0N\",jū:\"1B271D1X\",jūr:\"1B0B\",jūs:\"1B5P1D6G\",\"jūs \":\"1B7A1D6D\",jūsu:\"1D21\",\"jūsu \":\"1D53\",jūsų:\"1B20\",\"jūsų \":\"1B45\",jūt:\"1D17\",jų:\"1B0S\",\"jų \":\"1B26\",\"k'\":\"0104040B1F03\",\"k's\":\"0107\",\"k's \":\"010F0M02\",\"k'u\":\"040U\",\"k'um\":\"0422\",\"k-a\":\"03050B0C\",\"k-an\":\"0B0O\",\"k-ana\":\"0B1C\",\"k-b\":\"0B06\",\"k-h\":\"0B04\",\"ka'\":\"1F0B\",\"ka-\":\"030L0D081103\",\"ka- \":\"0D0D\",kaa:\"010T0B0F0D080R0J11B71C1Q\",\"kaa \":\"119I\",kaan:\"0B0U0R091197\",\"kaan \":\"0B190R0311IE\",kaar:\"01110D020R1J1103\",\"kaar \":\"0R1A\",kaart:\"010I0R0O1103\",kaas:\"0R06110C1C12\",kaasa:\"1C2J\",\"kab \":\"0Z0D1C0X\",kaba:\"0B0B0D0G1F07\",kabe:\"0R020U020Z0I1F02\",kabi:\"0D0D1B091F07\",kabu:\"0B050D071F0U\",kaby:\"0L0C0M0B0Z09\",kac:\"03050B060U030V0314041A0K1F0B\",\"kad \":\"0D0H0V1W100E14041BF81C0Q1D57\",kada:\"0B0H0D060V4B100G1B5F1F7Y1O02\",\"kada \":\"0D030VAG10041BA61F05\",kadar:\"1F7K\",kadaş:\"1F3C\",kade:\"0D020Z0910251102120C1F04\",\"kade \":\"0Z03101W\",kadı:\"1F0V\",kae:\"11021C0B\",kaff:\"0N0F0Z19100Z120N130H\",kaffe:\"0N0P0Z1J100U120N\",kafi:\"1D151P0X\",kafij:\"1D2Y\",kag:\"0D080Z05\",kaga:\"0D0C\",kage:\"0Z0E\",kah:\"0B4G0D0T111L14041C181F0Y\",\"kah \":\"0B88\",kaha:\"0B050D0L11081F02\",kahap:\"0D0I\",kahd:\"1119\",kahde:\"112X\",kahe:\"14081C0U\",kahi:\"0B050D0P11021F02\",kahit:\"0D0Z\",kahvi:\"112B\",\"kai \":\"0B1G1107140O1B7F1D2C\",kaib:\"0D0L\",kaibi:\"0D0S\",kaidr:\"1D2K\",kaik:\"115Y\",kaike:\"112B\",kaikk:\"11AG\",kail:\"0D24110C14021B02\",kaila:\"0D3W1402\",kain:\"0B0A0D17110S1B0T\",\"kain \":\"0D1P1107\",kaip:\"110A1B5S\",\"kaip \":\"1BBE\",kais:\"11471B0I1D38\",\"kais \":\"1B0P1D3C\",kaise:\"0N02113I\",kaisi:\"114X1B0C\",kaist:\"11191D4H\",kait:\"110914021B291C0O1D0K\",kaits:\"1C1O\",kaity:\"1B2E\",kaj:\"0U090V080Y0W14031A0G1D0N1O6Z\",\"kaj \":\"0V030Y0O1A0A1OA8\",kaka:\"0B0G0D2B0V091008110814041N19\",kakai:\"0D0T\",kakap:\"0D0G\",kakat:\"0D0Q\",kake:\"010F0B07120D\",kakel:\"010G\",kaki:\"0B0J0D091102\",kako:\"0V2Z10051103\",\"kako \":\"0V7D\",kaks:\"112K1C1R\",\"kaks \":\"11031B031C42\",kaksi:\"115R\",\"kala \":\"0B070D0J0U0D0V060Y0O1002110K1F03\",kalau:\"0B41110H1B08\",kalb:\"0D031B8Z1F07\",kalba:\"1B65\",kalbo:\"0D051B2G\",kalbą:\"1B1N\",kalbė:\"1B6S\",kald:\"0D030Z0P120K13061F1A\",kalde:\"0D050Z0G\",kaldt:\"0Z09120D\",kaldı:\"1F1R\",\"kali \":\"0B5A0U0H0V060Y0C1A06\",kalia:\"0B25\",kalim:\"0B1A0D0K\",kall:\"1013111V120I130L1C0K\",kalla:\"100G11221315\",kalle:\"1113120F\",kalli:\"1002111H1C1E\",kalm:\"0R04140H1F18\",kalma:\"140H1F1H\",kaln:\"0V021A031B0I1D0Z\",kalt:\"03030N0B110B120613091B0X\",kalu:\"0D0611071B05\",kamal:\"0D0I1106\",kamar:\"0B1J0U0H0Y0A1O02\",kamay:\"0D0F1F02\",kamb:\"03030D031B31\",kamba:\"1B38\",kambi:\"0D041B2T\",\"kami \":\"0BAV0D2B0U060Y0J1A0S\",kamin:\"042F0D0T\",kamu:\"0BDK0D031B081F02\",\"kamu \":\"0BMJ\",\"kana \":\"044X0D02112S130C1B091F02\",kanan:\"0B1Z0D04110J\",kandi:\"048E0D030N030R020U030Z02100211031B061O04\",kane:\"030204150N040R020Z08100311031F03\",kang:\"0B0E0D0Z\",\"kang \":\"0B0J0D1R\",kanil:\"0D0U\",kanin:\"03020D0I0N020Z0510031A05\",kanit:\"03051P1T\",kanj:\"041R0V03\",kanje:\"0435\",kank:\"0B0Z0R0411091B0T\",kanka:\"0B0K11051B1F\",kanku:\"0B191107\",kanl:\"0B0H0D031F09\",kanm:\"0B0L\",kann:\"03020B2O0N5H110W131K14021F04\",\"kann \":\"0N6S132B\",kanns:\"0N1O130C\",kanny:\"0B57\",kano:\"0D0A11051O031PA8\",\"kano \":\"0D0H1O02\",kanob:\"1P4Z\",kanol:\"1P2G\",kanom:\"1P3O\",kansa:\"112S\",kansk:\"0Z0A100L120S\",kanss:\"118Y\",kany:\"046M0B080D1O14041N0K\",kanya:\"04470B0G0D331403\",kanye:\"046G\",kao:\"0V2Z1C0Q\",\"kao \":\"0V3K\",kaot:\"1C0U\",kaota:\"1C1Z\",\"kap \":\"011A0B0E0D03100C120R14031N0L\",kapa:\"0B1E0D1H1003110E130814031F0U1O0S\",kapab:\"1O1H\",kapag:\"0D14\",kapan:\"0B2B0D0B1F04\",kapat:\"0D0T1F0M\",kapcs:\"1414\",kape:\"0D0A0U0410051104120R1A06\",\"kape \":\"0D0G\",kapet:\"120G\",kapt:\"100311031208140Z1F031O0G\",kapı:\"1F0Z\",karan:\"0B3Y0D0811041A021F0A\",karar:\"1F1O1N0O\",kard:\"14051B031C191F1S1N0E\",karda:\"1C2G1F02\",karde:\"1F1W\",\"kare \":\"100I1B0Q\",karen:\"03020B3W1006\",karo:\"0D071103143B1B0A1O03\",karok:\"141N\",karom:\"1418\",kars:\"14171A071F02\",karsz:\"1419\",karta:\"1003110914131B13\",kartu:\"0B0D0V0C14021B1S\",kartą:\"1B2A\",karu:\"041O0D02110314051B031C0S\",karı:\"1F1B\",karş:\"1F1F\",karşı:\"1F1Y\",kasa:\"0B050D170Z03110413081F0B\",kasal:\"0D0O\",kasam:\"0D0Q\",kasi:\"03020B170D0E110Y1B07\",kasih:\"0B1W\",kasin:\"0D0F110D\",kass:\"0N020Z0A1003110U14031C1V\",\"kass \":\"1C2Q\",kassi:\"11031C1L\",kast:\"0D0D0N020R0D0Z0E100D1135120G130I14051F031O06\",kasta:\"1009115G130G\",kaste:\"0N030R070Z0D1003110H120C1F031O0B\",kasti:\"0D0O110Q\",kasu:\"0B040D061C1B\",kasut:\"1C2J\",kasv:\"111D1C0G\",kasy:\"0D051N14\",\"kata \":\"0B39110M1B061F031O05\",katak:\"0B270D091102\",katap:\"0D0N\",katd:\"1N1Q\",katda:\"1N2C\",katie:\"1D2F\",katir:\"0D0G\",katr:\"1D1E\",katru:\"1D1W\",kats:\"1002112H1F031P0E\",katso:\"1153\",katt:\"0R0B0Z1B101C110C121314021F05\",\"katt \":\"100F1208\",katte:\"0R0E0Z1L100P120V\",katu:\"0D0E11081B02\",katul:\"0D0G\",katā:\"1D13\",katās:\"1D2K\",katė:\"1B0X\",katī:\"1D1J\",katīt:\"1D2A\",kau:\"0B2M0D0B0N0Q113Q130T1B221C1I1D2K\",\"kau \":\"0B4W1B1X\",kaua:\"110R1C0S\",\"kaua \":\"1C1S\",kauf:\"0N1G\",kaun:\"0D0A111I\",kauni:\"1130\",kaunt:\"0D0G\",kaup:\"0D03111U13141B02\",kaupu:\"112X\",kaus:\"0D06110N1B0J\",kaut:\"110M13061B021D2L\",\"kaut \":\"1D67\",kava:\"111014021B071C0K\",kaw:\"0302040O0B030D0C1A0W\",\"kaw \":\"0D0G\",kawa:\"0B050D071A0A\",kay:\"0310040D0B090D2G11051F2G\",\"kay \":\"03030D160Z02\",kaya:\"03060B0D0D181F0B\",\"kaya \":\"0B0L0D1B1F06\",kayan:\"0D0P\",kayb:\"1F15\",kaybe:\"1F17\",kayo:\"0D1R\",\"kayo \":\"0D2D\",kayon:\"0D0V\",kays:\"030J0D0H1108\",kaysa:\"03170D0V\",kazan:\"1A081F1O\",kazi:\"044Q0U031O0M\",\"kazi \":\"047L1O05\",kaç:\"1F2D\",\"kaç \":\"1F1P\",kað:\"1317\",kaý:\"1N13\",kaýa:\"1N18\",kać:\"1A0Q\",kaĵ:\"1O06\",kaķ:\"1D0M\",kaķi:\"1D0S\",kaļ:\"1D11\",\"kaļ \":\"1D0S\",kał:\"1A11\",kaŝ:\"1O08\",kať:\"0Y0X\",\"kať \":\"0Y1L\",kaŭ:\"1O1I\",\"kaŭ \":\"1O1R\",każ:\"1A12\",każd:\"1A1A\",kaž:\"0U1G0V1P0Y1N1B1C\",každ:\"0U240Y2U\",každé:\"0U0U0Y0E\",každý:\"0U1U0Y2S\",kaže:\"0V1J\",kažem:\"0V1N\",kažk:\"1B24\",kažka:\"1B1N\",kba:\"03070N020R04140T1F05\",kban:\"141I\",\"kban \":\"141L\",kbe:\"0302140E\",kbo:\"0D05\",\"kbo \":\"0D09\",kc:\"03030U020V0314021A0F1B021D041O0T\",kce:\"03080U021A0A1O0X\",kces:\"1A0A1O0Y\",kci:\"0U020V0814031A051B041O0I\",kda:\"1B031N1I\",\"kda \":\"1N1G\",kde:\"0U1Z0Y3K1N2S1O09\",\"kde \":\"0U350Y611N1G1O0C\",kdeb:\"1N0X\",kdi:\"1F041N25\",kdig:\"1N25\",kdigi:\"1N2Y\",kdo:\"0U3L100412041B031O02\",\"kdo \":\"0U5P1B02\",kdom:\"10051209\",kdy:\"0U5Z0Y241B051N2Y\",\"kdy \":\"0U4Z0Y3M1N26\",kdyb:\"0U1H\",kdyby:\"0U22\",kdyg:\"1N15\",kdygy:\"1N1L\",když:\"0U36\",\"když \":\"0U4E\",kea:\"0B070V03112I\",\"kea \":\"1120\",keas:\"1112\",keba:\"0B0K\",kebe:\"0B0Y\",kec:\"030D0B1014021F031O03\",kece:\"0B0K1F04\",keci:\"0B11\",kecil:\"0B20\",\"ked \":\"030K0M3K0Z0A1002143T\",keda:\"0B0C10021C0V\",kedag:\"1C1O\",kede:\"0Z2B1207140F1F08\",\"kede \":\"0Z2C1F07\",kedu:\"0B0I\",kedv:\"142H\",kedve:\"142F\",kedy:\"0Y48\",\"kedy \":\"0Y53\",kee:\"011C0M0C0R0L111V1C81\",\"kee \":\"0R03111B\",keeg:\"1C22\",keegi:\"1C52\",keel:\"0R0211061C7T\",\"keel \":\"0R021C48\",keele:\"1C37\",keelt:\"1CAL\",keen:\"0115111F\",\"keen \":\"01180Z021136\",keep:\"0M0M\",\"keep \":\"0M0O\",keer:\"011P0R1R\",\"keer \":\"01180R1D\",keerd:\"010I0R0R\",keg:\"0B031402\",keh:\"0B0I0N060Z02110C1204\",kehi:\"0B0Q1108\",kein:\"0B050N4I111P1403\",\"kein \":\"0N2C113H\",keine:\"0N5A1103\",keis:\"110B1B0X\",keist:\"11071B1M\",keit:\"0N1L110Z14041B0A\",\"keit \":\"0N1Z1404\",kej:\"0B0C0U0E0Y0S100511061N091O02\",\"kej \":\"0U0H0Y1B1006\",kek:\"0B0B110E140L1F111P0C\",\"kek \":\"0B04140T1F0Y\",kela:\"0B14\",kele:\"0B060R0L110X120L140B1B0N1F09\",kelen:\"0R08110H120L1F02\",keli:\"0B0G0R1I0Z1V110Y122Z1B2Q1F0Q1P29\",\"keli \":\"110N1B061F0C1P2D\",kelia:\"11031B2J\",kelig:\"0Z29122Z\",kelij:\"0R1X1112\",kelio:\"1B1H\",kelk:\"1B051O0Y\",kelka:\"1O1J\",kell:\"03090N030Z0B112C14B91C2G1N0O\",\"kell \":\"148E1C31\",kelle:\"03050N030Z05110D143Z1C2N\",kello:\"112U\",kels:\"03030R040Z091003120D1402\",kelse:\"0Z061002120D\",kelu:\"0B1E1108\",kelua:\"0B2N1103\",kely:\"0M0H\",\"kely \":\"0M0O\",\"kem \":\"030X0U1A1309145X1C161F02\",kema:\"0B290Z03110G1F021O02\",kemar:\"0B2V\",kemb:\"0B1I1402\",kemba:\"0B2Y\",kemu:\"0B0J1108131D\",kemur:\"132W\",kena:\"0B271B051F04\",kenal:\"0B1N\",kenap:\"0B29\",\"kend \":\"010Q0M080N030Q040R0X0U060Z041A07\",kende:\"0N050R0Q0Z1W120A1F03\",kendi:\"0D021F47\",kendt:\"0Z0P\",kene:\"045V0N020R070Z0E11171212\",\"kene \":\"0Z061107120U\",kenew:\"042S\",keney:\"046S\",kenna:\"1102132T\",\"kent \":\"032V0R1114021F02\",kep:\"0B1E0M06100B1102120313041B0A\",kepa:\"0B271B02\",kepad:\"0B39\",kepp:\"100D1306\",kera:\"04220B0X10081107\",\"kera \":\"043O100311071A02\",keras:\"0B1G1106\",kere:\"0B0T0N020R0H0Z0P120W142Z1F06\",\"kere \":\"0R060Z0H120K1F06\",keres:\"142Q\",keret:\"0B1I0Z0712061403\",kerj:\"0B2T1102\",kerja:\"0B5G\",kerm:\"010F1102\",kern:\"0N040R020Z0A1009\",kerr:\"030811281402\",kerra:\"0304112D\",kerro:\"1136\",kers:\"030I0M060R220Z02\",kerst:\"0R2D\",kert:\"03030B090N020R020Z0J100E113I120E131W140Y1B02\",\"kert \":\"03060Z0I100E120D133X1407\",kerta:\"0B0H113E1B03\",kerto:\"1158\",kerü:\"1421\",kerül:\"1425\",\"kes \":\"030B0M140N020Z07120F140K1B041C3M1F10\",kesa:\"0B0U0Z02\",kese:\"0B0X140C1C0K1F08\",kesi:\"11061F1B\",kesin:\"1F1C\",kesk:\"111P1F02\",kesu:\"0B0F\",keta:\"0B0F1103\",kete:\"041G0B080Z0C1002140N1F04\",\"kete \":\"042M0Z0E140L1F05\",keti:\"0B1T11051B0O1F0H\",ketik:\"0B2B\",kett:\"0N030R031002110O130B14151F05\",keu:\"0B020R07110W\",kev:\"0U02110L1204140I\",keve:\"120A140Q\",kew:\"0B03\",keye:\"04261F02\",\"keye \":\"043V1F03\",keyk:\"0D06\",keypt:\"1322\",kez:\"142W1F0U1N0C\",kezd:\"142R\",kezde:\"1417\",keze:\"141S\",keä:\"110O\",keď:\"0Y1D\",\"keď \":\"0Y2A\",keş:\"1F0M\",keṛ:\"031L\",keṛṛu:\"032X\",kf:\"03030M0213021O04\",kfa:\"03030M03\",kfo:\"1O03\",kg:\"0N021N07\",kge:\"0N02\",\"kha \":\"0D0B\",khan:\"0D0E\",khang:\"0D0Q\",khe:\"0N020R041403\",khi:\"0B0U\",khir:\"0B1L\",\"khir \":\"0B1W\",kho:\"10041404\",khu:\"1005\",\"ki-\":\"03050B0G\",\"ki-l\":\"0B0V\",\"ki-la\":\"0B1P\",kia:\"030Q0B020D020Y07111814071B5V1O33\",\"kia \":\"030S111R1B5X1O0H\",kiai:\"11031B0R\",\"kiai \":\"1B1I\",kial:\"0D03110614041O1M\",\"kial \":\"1O2W\",kiam:\"1B0B1O2N\",\"kiam \":\"1O54\",kiau:\"1B26\",\"kiau \":\"1B34\",kib:\"041K0B040Z0314061B031F09\",kiba:\"042Z0B0714021F06\",kic:\"0M020V02100A140R1A0M1F05\",kick:\"0M03100E\",kics:\"141Y\",kicsi:\"141U\",kida:\"0V021C1D\",\"kida \":\"1C3E\",kied:\"1A38\",kiedy:\"1A54\",kieg:\"14021A1U\",kiego:\"1A2X\",kiek:\"11021B3V\",\"kiek \":\"1B4I\",kiekv:\"1B3K\",kiel:\"113514021O3M\",\"kiel \":\"1O70\",kiele:\"112B\",kieli:\"112Y1A02\",kiem:\"1A2E1B031D21\",\"kiem \":\"1A3S1D58\",kies:\"010V0M020R05110314021A051B021O07\",\"kies \":\"010S0M030R041O0E\",kif:\"03050Z041305140D\",kift:\"0Z0B\",kig:\"010C040P0R080Z06100914051O04\",\"kig \":\"010Q0R0S0Z0510061408\",kigg:\"0Z0C\",kigge:\"0Z0E\",kih:\"040G0V0E1104140A\",kii:\"0T03113D14021C1D\",kiin:\"0M02112X\",kiinn:\"114K\",kiir:\"11111C1G\",kiire:\"112E1C2Q\",kiit:\"111L\",kiito:\"113A\",kij:\"040C0R0E0V07110914061B0C1D0G\",kijk:\"0R1G\",\"kijk \":\"0R0T\",\"kik \":\"141S1P2A\",kiki:\"0D0N1P0J\",kikit:\"0D0N\",kikod:\"1P6S\",\"kil \":\"130G1P1Q\",kila:\"0D0J110D130D\",kilal:\"0D0T\",kill:\"0M0J0Z06100G110T1207130C\",kime:\"0303140I1B1P1F041N0F\",\"kime \":\"1B3I1F051N0L\",kimi:\"11051A041B0B1F0T1N17\",kims:\"1F1P\",kimse:\"1F2A\",kimw:\"042V\",kimwe:\"0453\",kinai:\"0D0H1B09\",kinak:\"0D0J\",kind:\"011X04190M0K0N1L0R200Z0510021C161F081O02\",\"kind \":\"0M0N0N0T0R0T\",kinde:\"011R0N1R0R1W0Z0510021C1H1F08\",kindl:\"1C1H\",kine:\"0V070Z0F100C1105120M141I1F091O03\",kinek:\"141I\",kinen:\"0Z021003110B120E\",kini:\"03020D090V0311031A031B201F0B\",kinji:\"1N14\",kinn:\"0Z0410021106131H14031C0X\",\"kinn \":\"132K1403\",kinni:\"130N1C26\",kint:\"0304043D1107140Q1B151O02\",kinti:\"1B1F\",kintu:\"045Y\",kinu:\"0D060V07130F1B061C0I\",kinä:\"111A\",\"kinä \":\"112Z\",kio:\"0O070R02110E14021A0A1B181O3Q\",\"kio \":\"0N020O080R0711031A0A1B0S1O1R\",kiom:\"1B021O18\",\"kiom \":\"1O26\",kion:\"11041O2Z\",\"kion \":\"11081O5U\",kipa:\"0D0D1102\",kipag:\"0D0N\",kipe:\"110F1209\",kipt:\"131E\",kipti:\"131Z\",\"kir \":\"0B1R13101F0P1N3K\",\"kira \":\"04A40B0O\",kire:\"04221408\",kiri:\"04450B0A11031B071C0Q1N291O09\",\"kiri \":\"043O0B0B1O08\",kirim:\"1N1X\",kirj:\"116Q1C2K\",kirja:\"118A1C2J\",kirjo:\"116G\",kirju:\"1C3S\",kirk:\"0B0E0Z08110F12051306\",\"kis \":\"0302141K1B1L1O1A1P2S\",kisi:\"0303110L1C0G1F0N1O051P5Q\",\"kisi \":\"110O1B031F0N1O031P6O\",kiss:\"0M0B111U1405\",kissa:\"1141\",\"kit \":\"030S0B240D1G1007110814171B021F07\",kita:\"0B5W0D2C110E140C1B0S1F1R1N301O0C\",\"kita \":\"0BAJ0D3R11081B091O0I\",kitab:\"1F0Y1N1B\",kitan:\"0D0J\",kitap:\"1F1H1N2W\",kite:\"1003110214051B4I1O02\",\"kite \":\"1B91\",kiu:\"0D020T030Y0411051B1C1O3O\",\"kiu \":\"0U020Y081B171O3H\",kiuj:\"1O1C\",\"kiuj \":\"1O1X\",kiun:\"1O13\",\"kiun \":\"1O26\",kiv:\"0V06110S140J1B05\",kiw:\"0304040D1A07\",kiy:\"0304041B1F1C\",kiye:\"042K1F07\",\"kiye \":\"044K1F05\",kiyo:\"1F18\",kiyor:\"1F1P\",kiz:\"041014021F0B\",kiä:\"110G\",kiç:\"1N0O\",kiçi:\"1N0X\",kië:\"0R02\",kið:\"131Z\",\"kið \":\"1336\",kiö:\"1P2G\",kiöp:\"1P33\",\"kiöp \":\"1P30\",kiü:\"1P0K\",kią:\"1B07\",kiĝ:\"1O0H\",kiş:\"1F1L1N0F\",kişi:\"1F1S1N0K\",\"kişi \":\"1F1G1N0L\",kiš:\"0V0I1B0F\",kių:\"1B0H\",\"kių \":\"1B0S\",kj:\"0R040Y030Z051005122N131714031N04\",kja:\"131H14031O02\",\"kja \":\"131K1404\",kje:\"0R05122A\",\"kje \":\"0R0D1210\",kjed:\"1217\",kjedd:\"120R\",kjel:\"120O\",kjell:\"120L\",kjem:\"120H\",kjemp:\"120C\",kjen:\"121H\",kjenn:\"120Q\",kjent:\"120Q\",kjer:\"120P\",\"kjer \":\"120F\",kjo:\"0Z0510061205\",kjol:\"0Z0810031207\",kju:\"0Z031008130G\",kjæ:\"120C\",kjær:\"120U\",kjære:\"120F\",kjærl:\"120D\",kjø:\"121J\",kjøl:\"120B\",kjøn:\"120F\",kjønn:\"120C\",kjøp:\"121T\",kjøpe:\"120U\",kjøpt:\"120W\",kjør:\"120V\",kjøre:\"120F\",kjøt:\"120G\",kjøtt:\"120C\",\"kk \":\"034M122913181C0G\",\"kka \":\"0325112H120B131L1C0U\",kkaa:\"112H\",\"kkaa \":\"112H\",kkal:\"0309110D141P\",\"kkal \":\"030J141S\",kkan:\"03050B12110H131H14041F05\",\"kkan \":\"03070B1X132V\",kkar:\"0302110C1334\",\"kkar \":\"136B\",kkat:\"030I1F0V\",\"kke \":\"010H0R060ZKW110212NM\",kked:\"030E0Z0R\",kkede:\"0Z0X\",kkel:\"010H030Q0R140Z0L1109121A1418\",\"kkel \":\"030212071419\",kkele:\"1102120H\",kkeli:\"0R190Z0K110E120J\",kken:\"03660R1Y0Z1R1102121Z140F1F07\",\"kken \":\"03CR0R2G0Z1P121M1F09\",kker:\"011G03070R120Z32124K131V\",\"kker \":\"0112030E0R170Z33123Y\",kkert:\"0Z0A120C133X\",kkes:\"030D0Z0B120B\",kket:\"0Z1412271402\",\"kket \":\"0Z1C12261402\",kki:\"010O030L0R0A114H13E61A02\",\"kki \":\"0304114R13KG\",kkia:\"1112\",kkie:\"010N110B\",kkig:\"010S0R0V\",\"kkig \":\"010S0R12\",kkj:\"12021309\",kko:\"111T14161O03\",\"kko \":\"111C1A02\",kkor:\"142U\",\"kkor \":\"1426\",kkt:\"0303130K\",\"kku \":\"03040B0W0N021004110K1C0Q\",kkur:\"03020Z021103120H1340\",\"kkur \":\"136Z\",kkura:\"1102120G\",kkus:\"11071C0U\",kkä:\"111J\",kkää:\"111Z\",kkü:\"1F0I\",kkı:\"1F2G\",kkın:\"1F2M\",kkınd:\"1F3G\",\"kl \":\"0U2P0V070Z02\",\"kla \":\"03080U0Z0V0I0Y0I10031B071F0P\",klaa:\"010F0R0X1107\",klaar:\"010G0R13\",klad:\"0U0Q0V040Y1R10091F0B\",klag:\"0N050R030Z0A100A120N\",klage:\"0N040R050Z0C120L\",klai:\"1B11\",klaid:\"1B1Y\",klak:\"0D08\",klama:\"0U090Y121F0I1N0N\",kland:\"0Z0H1009120K130H1B031F09\",klar:\"0N0A0R050Z0T101N122O1B081F3C1N411O0N\",\"klar \":\"0N0B0Z0D100F120W1F161N0Z\",klara:\"100Q1B0F1F061O09\",klare:\"0N030R020Z0G12111O08\",klart:\"0Z041009120N\",klary:\"1N48\",kları:\"1F2Z\",klase:\"0D0H\",klass:\"0N0H0R040Z0G10091106120I14031C10\",klat:\"0D0F0Z03120714021A02\",\"klat \":\"0D0O\",klau:\"0N0214021B3F1D1N\",klaus:\"0N0214021B6X1D3C\",\"kle \":\"0M020U0G0V060Z0412081A0F1F1K\",klei:\"010T0N1F0R111B06\",klein:\"010S0N1M0R1E\",kler:\"0R080Z0B120B1F2C1N371O03\",kleri:\"1F1V1N3V\",klic:\"0N1W1002\",klich:\"0N35\",klig:\"102J\",\"klig \":\"100J\",klige:\"1017\",kligt:\"100J\",klik:\"011R0R020Z0214021F051N0D\",\"klik \":\"011814021F04\",klike:\"010L\",ključ:\"0V1R\",kloc:\"100P\",klock:\"100P\",klok:\"0R060Z0Q1002120Z\",klokk:\"0Z0W120W\",kluk:\"0U08131P1F02\",klukk:\"133L\",klus:\"1B0B1D0U\",kly:\"0M041B0E1N1H\",\"kly \":\"0M081N15\",klá:\"0U0E130E1403\",klä:\"0N06100P\",kläd:\"100F\",klæ:\"0Z0912081307\",klæd:\"0Z0G\",klær:\"0Z09120K\",klí:\"0U0F\",klö:\"1P0J\",klā:\"1D1B\",klāj:\"1D0X\",klą:\"1B0K\",\"klą \":\"1B0X\",klē:\"1D0T\",klī:\"1D0J\",klı:\"1F1Y\",\"klı \":\"1F12\",kma:\"03070B0510021B081F1L1N1S\",kman:\"0D021F041N1Q\",\"kman \":\"0D031N1E\",kme:\"03030Y091B071D0H1F0M1N0Q\",kmi:\"03050U030V020Y0B1B021F061N0H\",kmu:\"0B091F05\",\"kmu \":\"0B0H\",kmy:\"13031N0K\",knab:\"1O10\",knad:\"100D\",knak:\"141D\",\"knak \":\"141F\",knar:\"0304100M13051B02\",\"knar \":\"100L\",knek:\"141A\",\"knek \":\"141D\",knew:\"0M17\",\"knew \":\"0M1O\",knih:\"0U2F0Y4J\",kniha:\"0U0S0Y1M\",knihu:\"0U1E0Y2R\",knihy:\"0U0I0Y1C\",knin:\"0Z09100L120F130G\",kning:\"0Z0B100L120F130Q\",kniv:\"0Z071008120A\",knj:\"0V17\",knji:\"0V1D\",knjig:\"0V36\",kno:\"0M3L0N020R020U0D0Y091A071F02\",know:\"0M6E\",\"know \":\"0M73\",knows:\"0M18\",knu:\"0U070V030Y081308\",kny:\"0B0V14021A071B1S\",knya:\"0B1P\",\"knya \":\"0B3C\",knyg:\"1B2W\",knyga:\"1B20\",knygą:\"1B2G\",knä:\"1005\",knæ:\"0Z02\",kní:\"0U060Y0I\",\"ko'\":\"0D03\",koa:\"110N\",\"kob \":\"0D021P4Z\",kober:\"0U030Y0Y\",kobw:\"041Z\",kobwa:\"043I\",koc:\"0N040R0C0Y06140O1A161F08\",koch:\"0N0B0R190Y081A18\",kocha:\"1A1Y\",kocht:\"0N060R1P\",kocs:\"141G\",kocsi:\"141F\",\"kod \":\"0D060V0J14041P5E\",kodu:\"1C1G1F04\",kodus:\"1C2J\",kodė:\"1B3W\",kodėl:\"1B7V\",koe:\"010O0R060Z03110C12031C2X\",koek:\"010H0R06\",koer:\"010H1C3M\",\"koer \":\"1C5P\",koera:\"1C34\",kof:\"010F0N020R080V0312021N0D1P0U\",\"kof \":\"1P0Y\",koff:\"010Y0N040R0V1205\",koffi:\"01100R10\",kog:\"0V1C0Z02100612041A0I1C0V\",\"kog \":\"0V16\",kogu:\"1C0Z\",\"kogu \":\"1C1V\",kohe:\"1C0N\",\"kohe \":\"1C1E\",koho:\"0N040U1D0V030Y1I0Z041004110A140A1A051B031O03\",\"koho \":\"0U1L0Y1O\",koht:\"111A1C1Y\",kohta:\"111S1C1L\",kohtu:\"11081C26\",kohv:\"1C0Q\",kohvi:\"1C1L\",koi:\"113S1A02\",koin:\"1114\",koir:\"111V\",koira:\"1145\",koit:\"111E\",koj:\"0U0T0V4B0Y0K1002110C1A0R1B151C101D0E1O13\",\"koj \":\"0U0D0V0T1O13\",\"koja \":\"0V2011101B08\",koje:\"0U0H0V1011051B0I\",\"koje \":\"0U080V2F1B13\",koji:\"0U0F0V251B07\",\"koji \":\"0U0H0V4Z\",kojn:\"0Y0L1A051O0N\",\"kojn \":\"1O1A\",koju:\"0V0H1A0T1B061C19\",\"koju \":\"0V171A1A1B0E1C34\",\"kok \":\"0B0Z0R020Z02140C1B08\",koki:\"11021B201O04\",kokia:\"1B1O\",koko:\"11251O04\",\"koko \":\"113E1O02\",koks:\"11051B15\",\"koks \":\"1B2D\",\"kol \":\"0D0G0U050Y0U14051B0X1F031P2I\",\"kol-\":\"1P0Y\",\"kol-l\":\"1P14\",kolah:\"0B2E\",kolan:\"100W1A02\",kold:\"0Z0L1403\",kole:\"0U0U0V0B0Y0M0Z14121A1A0Z1B041F031O0M\",\"kole \":\"0U0O0V0E0Y0L0Z0Q12061A0K\",kolen:\"0U020Z0E12111A02\",koli:\"0U2T0V2L110414021A081B0I1O02\",kolik:\"0U320V5V1108\",kolm:\"112R1C1T\",\"kolm \":\"1C2N\",kolme:\"115U\",kols:\"14021P16\",\"kols-\":\"1P12\",kolu:\"0U060V0G11041A021D0W1F05\",\"kolu \":\"0U070V0Y1D21\",koly:\"0U0X0Y121002\",\"koly \":\"0U1B0Y1B\",kolá:\"0U0C0Y0U141J\",koláb:\"140Y\",kolö:\"1P15\",kolöd:\"1P14\",koma:\"0V050Z021003110Q131L14021A031B0F\",\"koma \":\"132R1B05\",kome:\"04420B060D020R2U0U020V0H11071A041B0I1O13\",komen:\"0B0B0D030R3T0V0811021A041B0C1O1Y\",komey:\"045F\",komi:\"0N031107132I1A091B061F081O04\",komin:\"1106132S1A02\",komm:\"010S0N4H0R030Z3X106V110912561407\",komma:\"0N030Z02101D\",komme:\"010T0N4Q0R030Z4K105B110B124V\",kommt:\"0N1W\",kompr:\"1O2E\",komt:\"03020R1J\",\"komt \":\"03040R23\",kona:\"0U090V090Y0I110L1206130Y14031A0M1B021O0T\",kond:\"0R080Z0214031C0O1O0P\",kone:\"0U0Q0Y0C0Z0S1116120D1B061O02\",\"kone \":\"0Z0U110W120A1B0D\",\"kong \":\"0D7P\",konge:\"0Z0E120C\",konn:\"0N0U11071C12\",konna:\"11041C2N\",kons:\"0B0B0D020N050Z05100M110D120F14021A041B041F091O2J\",konsi:\"1O1Q\",konst:\"0N030Z03100G11021A021B031O1G\",konti:\"0D030N020Z021O1F\",konto:\"0N020Z0E1008110512091A021B041O0L\",konu:\"110613111A021F5J\",konuş:\"1F5Z\",konč:\"0U0U0Y0V\",konči:\"0U0S0Y0O\",koo:\"011P0R0B110O1C2O\",kool:\"010P0R031C1B\",\"kool \":\"010N0R02\",kooli:\"1C2N\",koon:\"010S110J\",\"koon \":\"010L1116\",koop:\"01200R0K1102\",\"koop \":\"01240R0H\",koos:\"0R0211051C1I\",\"koos \":\"0R031C2X\",\"kop \":\"0B080D020R060V030Z0I\",kope:\"0R1611021A02\",kopen:\"0R1F\",kopi:\"0B0P0N020R020U020V030Z0211041A031B031O03\",\"kopi \":\"0B19\",kopp:\"0R040Z0A100D120E\",\"kopā \":\"1D1W\",\"kor \":\"0B0S101E147N\",kora:\"04DN0B060R040V070Z02140M1O1N\",\"kora \":\"04KT140K1O02\",koraŭ:\"1O2Q\",kord:\"100214021C1V1O04\",\"kord \":\"0D021C2N\",korda:\"1C1S1O02\",korer:\"0435\",kores:\"0441\",kori:\"0V0Z1108140D\",koris:\"0V25110A\",kork:\"110O14021F1F\",korku:\"1F14\",korn:\"0D080Z03100C12051O02\",koro:\"0U0K0V0U0Y1X1106140N1A051O0B\",\"koro \":\"0U0Q0V250Y2D1A041O0D\",korr:\"010F0N050Z071008140A1C1M\",korra:\"14041C31\",\"kort \":\"010G0R0G0Z0R100I120D\",korw:\"0429\",korwa:\"0441\",korá:\"0U031417\",\"kos \":\"010T1103140W1B1K1O091P0M\",kosi:\"0Y08110H1B0G1P1V\",\"kosi \":\"110E1B0R1P27\",kosk:\"114P1403\",koska:\"11A4\",koste:\"0N0J0R080U0A0Z0R10021106120D14021O02\",\"kot \":\"0D0L1108141F1A0C\",kota:\"0B1S11031A06\",\"kota \":\"0B2U11031A09\",koti:\"111W1B0A\",kotii:\"1133\",kots:\"0D0G\",kotse:\"0D0U\",kou:\"010D0R070U3L0Y0S111B\",\"kou \":\"0R030U1T0Y1C\",koud:\"0R0O\",koul:\"0U02111W\",koulu:\"114M\",koup:\"0U28\",koupi:\"0U2I\",kouř:\"0U0S\",\"kov \":\"0U020Y250Z03\",kova:\"0U0N0V0D0Y0T11161F04\",kove:\"0V050Z0B1105\",kow:\"1A1J\",koy:\"1F0U\",koz:\"041J0R020U020Y0B141Z\",koze:\"043V0R06\",\"koze \":\"046S\",kozt:\"1418\",kozta:\"140Z\",koč:\"0U0T0V040Y05\",kočk:\"0U11\",koľ:\"0Y2M\",koľk:\"0Y3U\",koľko:\"0Y4E\",koł:\"1A0V\",koń:\"1A1A\",końc:\"1A1S\",kończ:\"1A20\",koş:\"1F0H\",koš:\"0U060V090Y061D0G\",kp:\"0D0214041O02\",kpa:\"0D02\",\"kra \":\"032O0U02100B1307140Z1B0C\",krabi:\"0U0E0Y0Y\",krai:\"0L020N020Z0211031A021B1V1C0H1O02\",\"krai \":\"1B3C\",kraj:\"0U070V0C0Y1Z14021A0O1O04\",kraji:\"0U080Y1Y\",\"kran \":\"1413\",krar:\"0306100313061F15\",\"krar \":\"0307130C1F1F\",kras:\"030210041B0R1O04\",\"kras \":\"1B1K\",kratt:\"100I\",krav:\"0U040V040Y100Z02110312041F041O03\",\"kre \":\"0Z03120B14101A02\",kred:\"0N020U020V030Z0710021A031B031F041O1O\",kreda:\"1O1R\",kren:\"03080V111B07\",krev:\"0U050V0D0Z0R100B120W\",\"krev \":\"0U050Z0F100B120E\",kreve:\"0V0Y0Z0I120I\",krib:\"1O15\",kribi:\"1O19\",krie:\"0N0G1D0W\",krif:\"0Z0410031204131P\",krifa:\"132I\",krig:\"0Z0V100A120C1O02\",\"krig \":\"0Z0Q10031206\",krij:\"0R140V08\",krijg:\"0R13\",krik:\"010K1008120C1B02\",\"krik \":\"010G\",krike:\"1005120C\",krin:\"0Z0G10061205130A1B071F08\",kring:\"0Z0J10051205130F\",kriv:\"0V0J0Z18101E121H\",kriva:\"0V06100L\",krive:\"0V0D0Z1C100C1215\",kry:\"01160U050Y0B0Z03100412031A0K1B0B\",\"kry \":\"011E\",kryf:\"0111\",\"kryf \":\"0113\",krá:\"0U1P0Y1Z13061403\",krás:\"0U0X0Y1J\",krásn:\"0U130Y1V\",krát:\"0U160Y12\",\"krát \":\"0U1B0Y0V\",krä:\"0N03100J\",kræ:\"0Z08\",krā:\"1D0V\",krē:\"1D0H\",krī:\"1D0M\",krų:\"1B0J\",krųj:\"1B0V\",krųjų:\"1B1S\",\"ksa \":\"0B0B11071C0R1F0H1O03\",ksam:\"0D030N050Z031008110312051A021C0K\",ksan:\"0B090D06110P1F051O02\",ksc:\"1A021O06\",\"kse \":\"0N020R040Z03110812051C1V\",ksee:\"111U\",kseen:\"1148\",ksem:\"03030Z06110B12091O02\",ksen:\"03050Z05113U120J1F02\",\"ksen \":\"03070Z05115I12091F02\",kser:\"0Z0C1208\",kses:\"0B06111X1207\",kset:\"111A\",\"kset \":\"0Z02112O\",\"ksi \":\"03020B0O0D040V0411DQ1B0H1C0I1D0O1F05\",ksia:\"111C\",\"ksia \":\"112V\",ksid:\"0D031C201O03\",\"ksid \":\"1C4V\",ksim:\"11041B0A1C0L1O0Q\",ksime:\"1B0K1C1H1O0H\",ksin:\"111K130G1B031C321F0I\",\"ksin \":\"11271C6X1F0J\",ksiy:\"0D091F06\",ksią:\"1A20\",książ:\"1A36\",ksj:\"1204\",ksjo:\"120B\",ksk:\"10031C0K1O02\",ksl:\"12021B0U1D0G\",ksm:\"1B0B1D0M\",ksn:\"1B031D0J\",ksom:\"0Z041209\",\"kst \":\"0N0A0R040V030Z03120C130H\",ksta:\"10041B1E1D0J1O02\",\"ksta \":\"1B1T\",kste:\"0N020R090Z06120B1D0W1O0M\",ksten:\"0Z0512051D25\",kstī:\"1D18\",kstīt:\"1D2A\",ksu:\"030K0B060V030Z02110H1A021C0O1F041O02\",ksy:\"110M1A03\",ksz:\"140O1A0J\",ksä:\"110B\",kså:\"100L\",\"kså \":\"100S\",ksé:\"140W\",kség:\"142B\",ksége:\"141Q\",ksā:\"1D0V\",ksč:\"1B0F\",ksčia:\"1B1H\",ksı:\"1F0R\",\"kta \":\"0D020V02100L14071B041F141O09\",ktan:\"0D0310041F1K1O05\",\"ktan \":\"0D051F231O05\",ktas:\"1B0K1F021O0Q\",\"ktas \":\"1B161O1H\",\"kte \":\"010P0N0T0R1P0V040Z0C102G121T1F1G1O0O\",kten:\"0N090R080Z02100D120G1F3S\",\"kten \":\"0N0E0R0B0Z02100B120C1F53\",\"kter \":\"0B1C0N050R0K0Z06100A120U\",které:\"0U1T\",který:\"0U1C\",ktes:\"1002120C\",ktet:\"0Z021008120P1405\",\"ktet \":\"0Z021008120P\",kteří:\"0U0U\",\"kti \":\"03050B041104130E1B4T1D1J1F0F1O0F\",ktig:\"101K121R\",\"ktig \":\"100I1219\",ktigt:\"100S\",ktis:\"0N030R020Z07100G120D1B0D1O0H\",ktisk:\"0Z08100G120C\",ktiv:\"0N070U070V0C0Z0C1008120G1O0B\",ktiğ:\"1F10\",ktiği:\"1F1E\",ktl:\"1003\",\"kto \":\"0D050U020Y6H1A1F1B051O11\",ktob:\"0B050N030R030Z0F10021O02\",ktobe:\"0B0A0N040R050Z0I1002\",kton:\"0D021O0M\",ktoré:\"0Y21\",ktorý:\"0Y1R\",kts:\"10021D0O\",\"kts \":\"1D0U\",\"ktu \":\"0B1W0U03130R1A051D111F0W1O05\",któ:\"14061A29\",któr:\"1A37\",które:\"1A1U\",który:\"1A1U\",ktø:\"0Z02\",ktą:\"1B0A\",ktī:\"1D0H\",ktį:\"1B0D\",ktı:\"1F2K\",\"ktı \":\"1F1J\",ktų:\"1B0A\",\"ku-\":\"0B03\",kua:\"0B0E110H\",kuat:\"0B0G\",kub:\"030504BH0B061A021B0D\",kuba:\"030404881B03\",\"kuba \":\"0306046G1B04\",kube:\"04BA0B05\",kuber:\"04I90B07\",kubi:\"04AY1B03\",kubig:\"043C\",kubik:\"046M\",kubo:\"043K\",kubon:\"045R\",kuc:\"0B0I0N030U070V050Y0B1A08\",kuci:\"0B0Y\",kucin:\"0B1V\",\"kud \":\"030W0U0Y0Z021C0Q\",kue:\"0B050Z0211051203\",kuf:\"03040U030Z031203\",kuff:\"03030Z091207\",kug:\"045G0Z021002\",kuga:\"0426\",kuge:\"04450N02\",kugen:\"046G\",kugi:\"045H\",kugir:\"048W\",kugu:\"043Y\",kugur:\"042Z\",kuh:\"0D040V0211031C0M\",kuha:\"0D08\",kuhu:\"1C0Q\",\"kuhu \":\"1C1L\",kui:\"01070B04115J1B0C1C891O0A\",\"kui \":\"0B05110E1B0K1C7L\",kuid:\"1C2H\",kuida:\"1C55\",kuin:\"118I\",\"kuin \":\"11DU\",kuink:\"116F\",kuj:\"04110U0C0V0D0Y0T11081A0Q\",kuja:\"04321108\",\"kuja \":\"0435110H\",kuje:\"0U050V0C0Y1C11061A0G\",kujem:\"0V0F0Y1M1A03\",kuka:\"0B4W112Y1402\",\"kuka \":\"113K\",kukaa:\"112Z\",kukan:\"0B9A1103\",kuku:\"04360B060D05\",kukub:\"043O\",\"kul \":\"0B0U0V0310091C0K1F0A\",kula:\"03060B0B0D0O0U0211091A061F0S1O03\",kulay:\"0D0U\",kuli:\"03020B0F0D020Y0E1B021O051P1P\",kulik:\"1P1T\",kull:\"03080Z0X104F110B122H1F1D\",kulla:\"110B1F1V\",kulle:\"030I0Z14104C1105122G\",kulo:\"0D031O0O\",\"kult \":\"030N14031C2G\",\"kum \":\"0B0B0N020Z02131K1F031P1N\",kuma:\"0D13110M1B031C0E1F0P\",kumai:\"0D0Z\",kumak:\"0D0S1F09\",kumb:\"041K0D03\",kume:\"043D0N020U030V020Z031003110214021A031B051O03\",kumen:\"045R0D020N040U040V060Z041003110514021A051B0A1O06\",kumo:\"0D0211031B021P16\",\"kumo \":\"1B031P19\",kumu:\"041Z0D091B021D131F02\",\"kumu \":\"1D25\",\"kun \":\"03020B030R0N0Z1R115D1208130C1O3M\",kuna:\"110O130I1C221F02\",kunag:\"1C48\",kund:\"04ER0D020N070R0F0V040Z07101M12051A021B0B1F021O03\",kunda:\"04LU1B02\",kunde:\"0N090R0G0Z06101J\",kung:\"042D0B040D2E0N071005\",\"kung \":\"0D4D0N071002\",kungu:\"0302043I\",kuni:\"0B050D03110O1C0K1O05\",kunn:\"0R2F0Z231015111C122H130U\",kunna:\"1014110S130K\",kunne:\"0R390Z2J110I1227\",kuns:\"0N080R0A0Z0B10041104120A1O03\",kunst:\"0N0D0R0D0Z0D120A\",kunt:\"0R16110I\",\"kunt \":\"03020R1L\",kuny:\"042Z0B08\",kunyw:\"043C\",kunz:\"041O\",kuo:\"111J1B13\",\"kuo \":\"1B0U\",kuol:\"1125\",\"kup \":\"0B0S0U051A02\",kupi:\"0B030U060V1411081A1F1O08\",\"kur \":\"0B06136T1B461D2U1F03\",kuran:\"0B1L0D0611021F021O03\",kurat:\"120G1A021O05\",kure:\"041Z1O05\",kuri:\"030204AG1108130G1B3J1D0Q1O0C\",\"kuri \":\"049111091B0O1O06\",kurik:\"0447\",kuris:\"11031B1V1O0D\",kurl:\"1D1C\",kurls:\"1D2A\",kuro:\"04221O03\",kuron:\"042Z\",kuru:\"048X1D181F0D\",\"kuru \":\"04B11D2Y1F041O02\",kury:\"042D0D02\",kurya:\"0447\",kurš:\"1D1G\",\"kurš \":\"1D3Q\",kuse:\"110212041C0O\",kusi:\"0B050D060U0F0V040Z04100411081B08\",kust:\"0R070U020V07100211161C14\",\"kust \":\"0R061C2J\",\"kut \":\"0B0V110F\",kuteč:\"0U0S\",kuti:\"0B0E0N020V0511051B0N1O0R\",kutoč:\"0Y11\",kuts:\"0D05110U1C0K1F02\",kutt:\"11161206\",kuty:\"141V\",kutyá:\"141C\",kuu:\"114M1C3T\",kuul:\"11391C3A\",kuula:\"11071C2X\",kuulu:\"112D1C1H\",kuun:\"111B\",kuus:\"11111C0I\",kuv:\"042K0V061002111O1F02\",kuva:\"04220V071123\",\"kuva \":\"042Z1112\",kuvu:\"0442\",kuvug:\"046Y\",kuvy:\"041R\",kuw:\"0D0E1N0Y\",kuwa:\"0D0D\",kuwar:\"0D0K\",kuwe:\"0D0D\",kuy:\"040C0D021F0W\",kuz:\"041J1A021F0C1O05\",kuza:\"042K\",\"kuza \":\"043O\",kuð:\"130I\",kuć:\"0V1Q\",kući:\"0V14\",\"kući \":\"0V2T\",kuŝ:\"1O06\",kuş:\"1F0D\",kva:\"0U0E0V0B0Y0X0Z05100H1204130D14021B0S1O0Z\",kvai:\"1B0X\",kvail:\"1B1Q\",kvap:\"0U0J0Y1H1B06\",kvape:\"0U0D0Y16\",kvar:\"0Z06100H130A1B031O0I\",kve:\"0V080Y0Z120D13111B051O05\",kvel:\"0Y0D120U1308\",kveld:\"120U130F\",kvet:\"0Y1C\",kvi:\"0V050Y080Z0J100M120C13061B1H1O0W\",kvie:\"1B2D1O05\",kvien:\"1B3K\",kvin:\"0Z1C100Q120R1O0K\",kvind:\"0Z1M1O06\",kvinn:\"100Q120R\",kvo:\"0V081B031O0J\",kvä:\"100X\",kväl:\"100R\",kväll:\"100R\",kvæ:\"130G\",kvö:\"130V\",kvöl:\"131A\",kvöld:\"132O\",kvě:\"0U0G\",kw:\"01080302042I0D030N020R0H1A0B\",\"kw'\":\"0418\",\"kw'i\":\"043K\",\"kw'is\":\"043C\",kwa:\"01090306041N0R0I1A04\",\"kwa \":\"0426\",kwaa:\"010F0R0B\",kwaad:\"010G0R0B\",kwam:\"0R1F\",\"kwam \":\"0R1M\",kwe:\"0302040Z0D020R031A03\",kwez:\"041V\",kwezi:\"043C\",kwi:\"044T0R041A0F\",kwig:\"0426\",kwiga:\"0435\",kwir:\"041O\",kwiy:\"043G\",kwiye:\"043C\",kwo:\"040O\",kwu:\"040Y\",kya:\"0D0A1F04\",kyan:\"0D0F1F03\",\"kyan \":\"0D0P\",kyd:\"0Z0210061B03\",kye:\"0Z021202\",kyi:\"1104\",kyk:\"010G11061B1Q1N21\",\"kyk \":\"010Z1B11\",kyka:\"1N25\",kykat:\"1N2R\",kykl:\"1B1G\",kyklą:\"1B1F\",kyl:\"0Z0G100K111O120F130F1B041N0J\",kyld:\"0Z11100E120Y130O\",\"kyld \":\"0Z0L1003120G\",kyll:\"0Z041003111C\",kyllä:\"1134\",kym:\"0Z031002111412051B0J\",kymm:\"111T\",kymme:\"114G\",kymr:\"0Z07120C\",kymre:\"0Z08120C\",kyn:\"0U090Z021006110H1204130Q1N1O\",\"kyn \":\"11031N0X\",kynd:\"0Z061008120A13051N0S\",kyp:\"11031N0A\",kyr:\"100713061B0C\",kys:\"0U020Z081009111B12051B0U\",kyss:\"0Z0E100C1209\",kysse:\"0Z0H1206\",kysy:\"1124\",kyt:\"0U060Y0D0Z03110712081B2X\",kyti:\"0Y0G1B3N\",\"kyti \":\"1B5Y\",kytis:\"1B1M\",kyto:\"1B0V\",kytoj:\"1B1U\",kytt:\"0Z081106120E\",kytte:\"0Z0A120E\",kyu:\"030I\",kyy:\"110E\",kyä:\"1107\",kz:\"0N021O0G\",kza:\"1O07\",kze:\"0N021O06\",kzi:\"1O0F\",kzis:\"1O0N\",kzist:\"1O1A\",ká:\"0U270Y2A1308142N\",\"ká \":\"0U1S0Y25\",káb:\"140O\",kám:\"0U0G0Y0C140B\",kán:\"0U05140F\",kár:\"0U030Y171303140N\",kás:\"140G\",kát:\"0U04140P\",\"kát \":\"141N\",káv:\"0U0M0Y12140I\",kávu:\"0U0C0Y0Y\",\"kávu \":\"0U0H0Y17\",káz:\"0U0M0Y0F1405\",káza:\"0U0V0Y0Q1404\",kázal:\"0U0Z0Y0D\",káž:\"0U0H0Y0D\",kâ:\"1F04\",kä:\"0N06101511431C0X1N1B1P0L\",\"kä \":\"113A1N0A\",käd:\"11081P0C\",käe:\"1C0W\",käes:\"1C0K\",käi:\"110I1C1K\",käl:\"0N021007110A\",käm:\"0N03100E1102\",kän:\"1025110H1N101P0M\",\"kän \":\"11071N1B\",känd:\"100S\",kände:\"100O\",känn:\"101T110B\",känne:\"101F\",kär:\"100H110T1N0D\",käs:\"1119\",käsi:\"111H\",kät:\"110I1C0D\",käv:\"111B\",käve:\"111B\",kävel:\"1138\",käw:\"1N0D\",käy:\"1130\",käyn:\"1114\",käyt:\"1131\",käytt:\"1148\",kää:\"114O\",\"kää \":\"112T\",kään:\"114M\",\"kään \":\"1186\",kå:\"10041203\",kåd:\"1003\",kål:\"1002\",kåp:\"1004\",kåt:\"1202\",kæ:\"0Z0I1308\",kæl:\"0Z04\",kæm:\"0Z04\",kæmp:\"0Z0A\",kær:\"0Z0E130F\",kære:\"0Z0O\",kæres:\"0Z0P\",kærl:\"0Z0B\",kærli:\"0Z0E\",kç:\"1F0K1N0F\",kça:\"1F15\",\"kça \":\"1F19\",kçi:\"1F041N0F\",kçy:\"1N0E\",ké:\"0U1L0Y1G1452\",\"ké \":\"0U2K0Y381404\",kéh:\"0U080Y0E\",kén:\"140X\",ként:\"141A\",\"ként \":\"141B\",kép:\"141K\",képe:\"141Z\",képes:\"1410\",kér:\"142Y\",kérd:\"142S\",kérde:\"141J\",kérdé:\"141C\",kére:\"141H\",kérem:\"1411\",kérl:\"1417\",kérle:\"1419\",kés:\"141S\",kész:\"142N\",két:\"141K\",\"két \":\"1432\",kéž:\"0U0C\",kí:\"0Y02130D140O\",kív:\"140L\",kó:\"0Y02130O140D1A0O1L07\",\"kó \":\"1403\",kól:\"130Z\",kóla:\"131E\",ków:\"1A0U\",kô:\"0Y0C\",kôr:\"0Y0M\",\"kôr \":\"0Y10\",kõ:\"1C20\",kõi:\"1C56\",kõig:\"1C1M\",kõige:\"1C29\",kõigi:\"1C1S\",kõik:\"1C4X\",\"kõik \":\"1CA6\",kõn:\"1C0H\",kõr:\"1C10\",kõrv:\"1C0L\",kõrva:\"1C1E\",kö:\"0N0V100Z1117130E14441F0Y1N3B1P3V\",\"kö \":\"113G\",köd:\"140G\",köh:\"1107\",köi:\"110C\",kök:\"1004110213061F02\",köl:\"10031303140N1F021P0B\",köm:\"14021N2D1P32\",köme:\"1N3D\",kömek:\"1N3V\",kömo:\"1P2T\",kömom:\"1P1T\",kömö:\"1P13\",kömön:\"1P17\",kön:\"0N1810051102141O1N0A1P3F\",\"kön \":\"100214031P47\",könn:\"0N2R141A\",könne:\"0N2R\",könnt:\"0N1Y\",könny:\"141D\",köny:\"142Y\",könyv:\"1430\",köp:\"101F110314021F101N38\",\"köp \":\"10031N3B\",köpa:\"100M\",\"köpa \":\"100M\",köpe:\"10061F11\",köpt:\"1013\",köpte:\"100W\",kör:\"0N03100P1303140R1F05\",kös:\"1102140K\",kösz:\"141A\",köszö:\"141A\",köt:\"100E1102130E140G1F14\",kötü:\"1F1A\",\"kötü \":\"1F1E\",köv:\"140U\",köve:\"1421\",követ:\"141X\",köw:\"1N0B\",köy:\"11091F05\",köz:\"142A\",köze:\"141M\",közel:\"141E\",közö:\"141F\",kø:\"0Z1G1202\",køb:\"0Z10\",købe:\"0Z10\",\"købe \":\"0Z0V\",købt:\"0Z1K\",\"købt \":\"0Z0X\",købte:\"0Z10\",kød:\"0Z08\",\"kød \":\"0Z0I\",køe:\"0Z02\",køk:\"0Z03\",køkk:\"0Z09\",køl:\"0Z05\",køle:\"0Z0C\",køn:\"0Z04\",kør:\"0Z0N\",køre:\"0Z12\",\"køre \":\"0Z0H\",kører:\"0Z0J\",kørt:\"0Z0F\",kú:\"0Y1E13051402\",\"kú \":\"0Y0R\",kúp:\"0Y1V\",kúpi:\"0Y2S\",kúpil:\"0Y2N\",kús:\"0Y0L\",kúš:\"0Y0E\",kü:\"0N0B141G1C161F131N0D1P0R\",\"kü \":\"1F0C\",kül:\"141R1C1G1F07\",\"kül \":\"1417\",küla:\"1C0S\",külö:\"141E\",külön:\"141F\",küm:\"0N031C111F07\",kümm:\"0N071C0N\",kümme:\"0N0C1C1L\",kümn:\"1C0O\",kümne:\"1C1O\",kün:\"0N04140H1F0D1P19\",\"kün \":\"1F0B1P1I\",künk:\"1417\",\"künk \":\"1418\",kür:\"0N021F0O\",küs:\"0N0414021C1G1F02\",küsi:\"1C1T\",küsim:\"1C1V\",küç:\"1F0T\",küçü:\"1F0Y\",küçük:\"1F16\",küý:\"1N0B\",ký:\"0U130Y1N130B1N0B\",\"ký \":\"0U1L0Y24\",kýa:\"1N0L\",kýc:\"0U070Y0Q\",kých:\"0U0B0Y19\",\"kých \":\"0U0E0Y1J\",kým:\"0U0G0Y1E\",\"kým \":\"0U0O0Y1Z\",kā:\"1D4Q\",\"kā \":\"1D8I\",kād:\"1D4G\",kāda:\"1D17\",\"kāda \":\"1D1W\",kāds:\"1D1P\",\"kāds \":\"1D4C\",kādu:\"1D15\",\"kādu \":\"1D2Y\",kāj:\"1D0T\",kām:\"1D0G\",kāp:\"1D2H\",kāpē:\"1D2C\",kāpēc:\"1D5Q\",kār:\"1D22\",kārt:\"1D0Z\",kārš:\"1D18\",kārši:\"1D2O\",kās:\"1D0Q\",\"kās \":\"1D0W\",ką:\"1A0X1B2U\",\"ką \":\"1A1D1B7L\",kč:\"1B03\",kči:\"1B07\",kė:\"1B2I\",\"kė \":\"1B39\",kėd:\"1B09\",kėj:\"1B12\",kėjo:\"1B0Z\",\"kėjo \":\"1B1W\",kėl:\"1B0E\",kėm:\"1B06\",kės:\"1B0K\",kėt:\"1B16\",kėti:\"1B17\",\"kėti \":\"1B1Y\",kę:\"1A1B1B09\",\"kę \":\"1A2R1B08\",kęs:\"1B0H\",kį:\"1B05\",\"kį \":\"1B0F\",kı:\"1F4K\",\"kı \":\"1F0W\",kıc:\"1F0C\",kıl:\"1F0X\",kım:\"1F0N\",kın:\"1F41\",kınd:\"1F39\",kında:\"1F4A\",kır:\"1F18\",kıs:\"1F0T\",kıy:\"1F0U\",kız:\"1F2B\",\"kız \":\"1F19\",kış:\"1F0K\",kļ:\"1D0S\",kļi:\"1D0E\",kļu:\"1D0Y\",kļuv:\"1D13\",kļuva:\"1D25\",kļū:\"1D1L\",kļūd:\"1D0S\",kľ:\"0Y07\",kľú:\"0Y0F\",kł:\"1A0X\",kła:\"1A1A\",kő:\"1404\",kŕ:\"0Y03\",kř:\"0U07\",kş:\"1F0B\",kşa:\"1F0T\",kşam:\"1F0X\",\"kşam \":\"1F14\",kš:\"0V021B0X1D0N\",\"kš \":\"1D0H\",kša:\"1D0H\",kšm:\"1B0A\",kšt:\"1B1H\",kšu:\"1D0E\",kšč:\"1B0O\",kšči:\"1B13\",kū:\"1B071D05\",kūd:\"1B07\",kūn:\"1B07\",ků:\"0U0A\",\"ků \":\"0U0E\",kų:\"1B0C\",\"kų \":\"1B0X\",kž:\"0U020Y03\",kʷ:\"0303\",kṛ:\"0306\",\"l'\":\"0L2V0Q2G1F041O021Q08\",\"l' \":\"1O03\",\"l'a\":\"0L6D0Q3D1Q05\",\"l'a \":\"0L0X\",\"l'ai\":\"0L2J0Q03\",\"l'ai \":\"0L1E\",\"l'air\":\"0L1O\",\"l'al\":\"0L0I0Q0R\",\"l'an\":\"0L100Q0P\",\"l'ar\":\"0L1E0Q0K\",\"l'au\":\"0L0W0Q0U\",\"l'av\":\"0L0Y0Q0D\",\"l'e\":\"0L240Q151Q0C\",\"l'en\":\"0L100Q02\",\"l'es\":\"0L0V0Q10\",\"l'ex\":\"0L0O\",\"l'h\":\"0L1C0Q1N\",\"l'ha\":\"0L060Q1I\",\"l'ha \":\"0Q10\",\"l'ho\":\"0L0P0Q15\",\"l'ho \":\"0Q14\",\"l'i\":\"0L1A0Q1L1F02\",\"l'in\":\"0L1B0Q1M\",\"l'o\":\"0L140Q0S1Q0C\",\"l's\":\"0M02\",\"l'u\":\"0L0L0Q16\",\"l'un\":\"0L0T0Q0P\",\"l'â\":\"0L04\",\"l'é\":\"0L1P\",\"l'éc\":\"0L19\",\"l'éco\":\"0L1Q\",\"l'ét\":\"0L0Q\",\"l-a\":\"033J151S\",\"l-am\":\"0309151H\",\"l-am \":\"030L151W\",\"l-h\":\"0B02\",\"l-i\":\"0338\",\"l-l\":\"1P2G\",\"l-li\":\"1P33\",\"l-li \":\"1P3L\",\"l-n\":\"031Z\",\"la'\":\"0M051F0N1Q0L\",\"la-\":\"030H1102\",laa:\"012S0D060R1O11321C13\",\"laa \":\"111R\",laan:\"0D090R08111W1C0I\",\"laan \":\"0D0G0R091146\",laap:\"011I0R0N\",\"laap \":\"011E0R0H\",laar:\"010K0D020R10\",\"laar \":\"010K0R10\",laas:\"011E0R061103\",\"laas \":\"010X0R06\",laat:\"012J0R401111\",\"laat \":\"012N0R3A110I\",laats:\"0R27\",\"lab \":\"150C1C14\",laba:\"0D0Q0O0C0T0I1B6W1D0Q1F06\",labai:\"1BD6\",laban:\"0D0G0O030T0A1B02\",labas:\"0D0P1B0A\",labh:\"0S3C\",labha:\"0S7Z\",labhr:\"0S5P\",labi:\"0D070O030T0915071B0V1D2S1F24\",\"labi \":\"0D020T031D6P\",labia:\"1B1R\",labil:\"030315051F2W\",labob:\"1P46\",labof:\"1P1L\",labol:\"1P1I\",labom:\"1P3B\",labor:\"0L050M030O070P040Q040T1N11031O4H\",labr:\"0O14\",labra:\"03030O1G\",labs:\"1D1L\",\"labs \":\"1D3Z\",labā:\"1D2P\",labāk:\"1D4Q\",\"lac \":\"031N0L060T0G0V03150Z\",laca:\"0O020P020Q031F481O08\",lacak:\"1F2U\",lacağ:\"1F31\",lace:\"0L0W0M0P0O070T3S0U06154E1O02\",\"lace \":\"0L150M0S0U02155J\",lacen:\"0T130U05\",lacet:\"0L020T2G\",lach:\"0N0H0R110S1L1A02\",\"lach \":\"0R080S491A02\",laci:\"0O0M0P030T0B0V031O0B\",lacz:\"1A1J\",lacze:\"1A2F\",\"lade \":\"0L0X0N080R0A0V080Z0V101U1208\",ladh:\"0S1G\",\"ladh \":\"0S5X\",ladn:\"0U0A0V0D0Y2G1406\",\"lado \":\"0D020O1O0P101B041O0C\",lads:\"0Z0E\",ladt:\"0Z0B140G1Q0N\",lady:\"0M030U051A021N2P1Q06\",\"lady \":\"0M030U071A041N2J\",ladı:\"1F3C\",\"ladı \":\"1F2Q\",lae:\"0T1M1C0E\",\"lae \":\"0T1S\",laet:\"0T12\",laf:\"030U0N0B0R021F06\",\"lag \":\"010M0D040M020N0B0R0L0Z0A100B120C1309140L\",\"laga \":\"0D161009130K\",lagan:\"03030D0R\",lagay:\"0D0L\",lagd:\"0Z0C\",lagde:\"0Z0E\",lage:\"0L0N0M040N0S0R0O0Z0I100E121V1O02\",\"lage \":\"0L0X0M050N0K0R020Z03120G\",lager:\"0N040R040Z09120R\",laget:\"0Z061006120L1O03\",\"lagi \":\"0B500D0G131F\",lags:\"0Z091005120C130G\",lagt:\"0N030Z0D1003120F1305\",\"lagt \":\"0N030Z0C1002120D130B\",lagð:\"131W\",lagði:\"133T\",\"lah \":\"0BGE1F0D1Q85\",\"lah'a\":\"1F021Q5N\",laha:\"0B0W0D1H140C1N0X\",lahan:\"0B1S0D081102\",lahat:\"0D2I1N19\",lahb:\"1Q8U\",lahbe:\"1QDX\",lahi:\"0B0L0D06\",lahk:\"0B0E1C0Y\",lahku:\"0B071C1Z\",\"lai \":\"0B1P0L030Q0214031B131D5F\",laid:\"0L030M0211031B1C1D0J\",laik:\"0B031B561D6H\",laika:\"1B1W1D5L\",laiko:\"1B3C\",laiks:\"1D37\",laiku:\"1B1C1D4Z\",laikā:\"1D2F\",laim:\"0M050S2P1B291D1C\",\"laim \":\"0M020S9H\",laimi:\"1B2P\",laimė:\"1B1X\",laimī:\"1D25\",lain:\"0B1M0L0B0M0F0S1P112W\",\"lain \":\"0B2Q0L020M0A1107\",laine:\"0L040M05114C\",lainn:\"0B0B0S65\",laipn:\"1D1W\",lair:\"0L120R06\",laire:\"0L1C\",lais:\"0L41114S1B0Z1D0S\",\"lais \":\"0L2T1B09\",laise:\"0L08113Z\",laisi:\"0L0J1137\",laiss:\"0L36\",laist:\"11311B07\",laisv:\"1B1K\",lait:\"0D020L1U111T1B02\",\"lait \":\"0D030L301102\",laiš:\"1B0T\",laišk:\"1B1O\",\"laj \":\"0Y0814031O0V1Q09\",laja:\"0B2P0O03110914021F02\",lajar:\"0B560O02\",\"lak \":\"0B0F0D0I0R040U0K0V030Y0W141R1F0F\",laka:\"0B180D0U0U0B0V050Y0L110814081F05\",lakad:\"0D0O\",lakan:\"0B1O1103\",lakas:\"0D0O1402\",laki:\"0B1U0D1H110K1424\",\"laki \":\"0B1G0D1P11051415\",\"laki-\":\"0B1P\",lakin:\"0D0Z110V1405\",lakl:\"0D071F03\",lako:\"0U020V0M0Y0B11051417\",laku:\"0B590U050V0211021408\",lakuk:\"0B9A\",\"lal \":\"030I0R020U3H0Y0T14071C141F02\",\"lala \":\"0D160U0O0V060Y0F\",lalak:\"0D1F\",lali:\"03050D070U0O0Y0C\",\"lali \":\"0U0X0Y0F\",lalu:\"0B451409\",\"lalu \":\"0B7B\",\"lama \":\"03040B440O0H0P0211041F0P\",laman:\"030L0B100D200O060P020U020Y0F1F061O04\",lamat:\"0B260D0F0T030U02\",lamaý:\"1N1Q\",lamb:\"0B0T0D0414041F02\",lamba:\"0B1L0D031F03\",\"lami \":\"0B0H14261A04\",lamit:\"03060R020T02141S\",lamı:\"1F14\",lando:\"0O0V0P0O0Q0I14031B0G1O1Q\",lands:\"0M040N070R0J0Y0A0Z0Q100D120D131G\",landy:\"1N4X\",landı:\"1F1Y\",\"lane \":\"0M071C2Q\",\"lang \":\"010L0B5I0D960N120R1V0Z0I1002120I\",langa:\"0B150D3O0L051103133J1B05\",lange:\"0L070N240R0W0Z0B120E\",langr:\"0R0S\",langs:\"010I0B0K0N0G0R0K0Z071206\",langt:\"0N070Z0H120R130U\",langu:\"0D030L270M0U0T021B06\",lanj:\"0B0P0V021O03\",\"lank \":\"010X0R04\",lanl:\"0Z0312061F161N0X\",lanla:\"0D020Z021F161N16\",lanm:\"0D031F1I1N1G\",lanma:\"0D051F1J1N20\",lann:\"0B050M0I0R050S1T1117130M1403\",\"lann \":\"0S6U131A\",lanni:\"0M0K111Z\",lano:\"0D090O030P0E0Q0B0V0514061A031B021N0O1O0B\",\"lant \":\"03360L0O0M030N020R060T0912081403\",lany:\"0B0H14071A041N3I\",laný:\"0U021N13\",lanýa:\"1N1I\",lanēt:\"1D1W\",lanı:\"1F24\",lao:\"03020S0T0V03\",\"lap \":\"0B0B0D040R020U020Z0514041N22\",lapa:\"0B0T0D0311041B03\",lape:\"0Q020R0Q0U090Y0D1O06\",lapen:\"0Q020R0V\",lapi:\"0D0F0L070T0I1B07\",lapit:\"0D0N\",laps:\"0M020T06112A1C1D\",lapse:\"0M02112U1C2U\",lapsi:\"112M\",laq:\"030P0L08\",larak:\"1F2J\",lard:\"0L051F1X1N1J\",larda:\"1F1W1N1B\",\"lare \":\"0Q2Q0T0N0Z0A1008120N150F1O07\",larer:\"0Z04120E\",larg:\"0L050M0B0O0N0P040Q0315041Q07\",laro:\"0D0C0O0F0P0A0Q021O0A\",\"laro \":\"0D0L0O0B0P0B1O06\",lart:\"0O020Z031008120N\",\"lart \":\"0Z041009120C\",lary:\"0M021A041NEY\",\"lary \":\"0M031A071N7U\",larym:\"1N2C\",laryn:\"1N7E\",laryñ:\"1N27\",laryň:\"1N3B\",ları:\"1FBV\",\"ları \":\"1F6R\",larım:\"1F24\",ların:\"1F83\",lasc:\"0N050Q27\",lasci:\"0Q21\",\"lase \":\"0D0C0O0T\",lased:\"1C1S\",\"lass \":\"0M0K0N0X1006120C\",lasse:\"0L0M0M0A0N2V0P070Q090R020T060Z0F1003120W\",\"last \":\"0M1L0N030R070U030V090Z02130K1C1A\",laste:\"0N040O03110P12061C1S1O02\",lastn:\"0U0Z0Y0Y1O02\",lasz:\"142W\",laszo:\"1411\",laszt:\"141I\",lasī:\"1D15\",\"late \":\"0D070L020M100O0A0P060Q0A0T03120B1O0A\",laten:\"0D030R3D12051O02\",\"lati \":\"0Q050T030V0A14031C221P0T\",latie:\"0R061D21\",latik:\"1P1R\",latlh:\"1Q56\",\"lato \":\"0D030O060Q1J0T040U060V081A051O06\",lats:\"0L02100S1404\",\"lats \":\"0L04100F\",latt:\"0L020N060Q0G0R030Z041003110C120C141C1F0D\",\"latt \":\"0N0412061416\",latu:\"0T0Y0V03110414031C0K\",latv:\"1D0U\",latvi:\"1D25\",\"lau \":\"0B2D0N041B0A\",laua:\"11041C0Q\",laub:\"0N28\",laube:\"0N26\",lauk:\"110O1B3X1D0K\",lauki:\"1B35\",laukt:\"1B1J\",laul:\"111J1C1C\",lause:\"112U1B041C1A\",lausi:\"0T021B2Z\",lausī:\"1D21\",\"lave \":\"0L080O0E0T030U040V080Z0M\",laver:\"0L0A0R020T040Z0T\",lavet:\"0Z0N\",lavo:\"0O050P030Q4O0T040U020V060Y0A1B0I1O05\",lavor:\"0Q4N\",lavr:\"0P10\",lavra:\"0P19\",law:\"030I0B030D0O0M060R021Q72\",\"law \":\"0D0B0M05\",\"law'\":\"1QCK\",\"law' \":\"1QHU\",lawa:\"03080B060D0V0R05\",\"lawa \":\"0D0K\",lawan:\"03070B0B0D0R\",lax:\"03030M020P0210021504\",\"lay \":\"030C0D0I0M0L1F0N\",\"lay-\":\"03020D08\",laya:\"03020B0K0D060O091F1K\",laye:\"030C0M0C\",lazi:\"03020Q0J0V14\",laç:\"0P0D1F05\",laí:\"0S13\",laío:\"0S0V\",laî:\"0L0N\",laît:\"0L14\",\"laît \":\"0L1V\",lað:\"131J\",lañ:\"1N0J\",laý:\"1N32\",laýa:\"1N2Y\",laýar:\"1N31\",laýl:\"1N0U\",laýla:\"1N16\",laĉ:\"1O0D\",lač:\"0U040V0G0Y0E1B03\",laĝ:\"1O05\",laĵ:\"1O06\",lał:\"1A0U\",laň:\"1N0A\",laş:\"1F221N1D\",laşı:\"1F0V\",laŭ:\"1O0Y\",\"laŭ \":\"1O0T\",laž:\"0V0W1B02\",\"lb \":\"0N0615041C0B\",\"lba \":\"0T060U0214061B2J\",lbag:\"0Z0Y\",lbage:\"0Z15\",lbak:\"10121213\",lbaka:\"1010\",lbake:\"1213\",lbon:\"1O0U\",lbos:\"1B1I\",\"lbos \":\"1B34\",lbr:\"0Z07100512031304\",lbs:\"0N0G\",lbst:\"0N14\",lbą:\"1B0K\",\"lbą \":\"1B0W\",lbė:\"1B2E\",lbėj:\"1B14\",lbėt:\"1B23\",lbėti:\"1B44\",lbū:\"1B06\",lca:\"0O090P060T02150A1F0A\",lce:\"0O070Q030T0C0U0515041A03\",lch:\"0N0M0Q0M0T1G1Q0O\",lche:\"0N180Q100T0S\",\"lche \":\"0N0Y0Q10\",lcher:\"0N0A0T0T\",lchr:\"0T1Z\",lchra:\"0T1E\",lco:\"0L060M030O040P040Q221506\",lcos:\"0Q33\",lcosa:\"0Q33\",lcr:\"0T02\",lcs:\"140U\",lcu:\"0L020O020P020Q1G150A1F08\",lcun:\"0Q2B\",lcuno:\"0Q1H\",\"ld'\":\"0M0C\",\"ld'v\":\"0M0L\",\"ld've\":\"0M0S\",lden:\"0N090R0S0Z0K100P120P14051F04\",\"lden \":\"0N0C0R120Z0F100M120G1F06\",\"lder \":\"0M0C0N090R090Z2110081212\",ldet:\"0N070Z0C120B1406\",\"ldet \":\"03030N070Z0F120A1406\",\"ldi \":\"03040Q1P131R14071C151F2U1N2T\",ldib:\"1C2K\",\"ldib \":\"1C68\",ldie:\"0M031D11\",ldies:\"1D2K\",ldig:\"010H0N0I0R0Z0Z0H101Q123Z1N0V\",\"ldig \":\"0N090R0U0Z0D1009123T\",ldigi:\"0R021N17\",ldigt:\"0N040Z03101F\",ldir:\"130A1F161N1E\",\"ldir \":\"130H1F1B1N19\",ldis:\"1C0O\",ldiv:\"1C0U1F03\",ldiva:\"1C1V\",ldiğ:\"1F1A\",ldiği:\"1F1R\",ldn:\"0M130Z021202\",\"ldn'\":\"0M20\",\"ldn't\":\"0M2Q\",ldog:\"141D\",ldp:\"1002\",ldr:\"0M0D0O020Z10101X121B131U1406\",ldra:\"100I130L\",ldrar:\"100G130L\",ldre:\"0M0O0Z121006120W131F140C\",\"ldre \":\"0Z121006120G1409\",ldrei:\"1331\",ldren:\"0M0X0Z04120F1403\",ldri:\"0Z1Q101Y122I130T\",\"ldri \":\"122H131O\",ldrig:\"0Z23101Y\",lds:\"0M020Z0610061203130M14031C0I\",ldse:\"1C0L\",ldst:\"0Z091002\",ldt:\"0Z0Q120F1403\",\"ldt \":\"0R020Z1L120X\",ldte:\"0Z0C1406\",\"ldte \":\"0Z0E1402\",\"ldu \":\"130L1F23\",lduk:\"1F1D\",ldukç:\"1F1G\",ldur:\"132115081F07\",\"ldur \":\"133K1F02\",lduğ:\"1F7J\",lduğu:\"1FA3\",ldy:\"1B0A1N5A\",\"ldy \":\"1N4L\",ldym:\"1N0Y\",\"ldym \":\"1N19\",ldö:\"140C\",ldü:\"1F1M1N0E\",ldē:\"1D0Q\",ldī:\"1D0X\",ldīj:\"1D0U\",ldı:\"1F5A\",\"ldı \":\"1F2S\",ldım:\"1F0W\",\"ldım \":\"1F18\",\"le'\":\"1Q08\",\"le-\":\"0L0E150D\",leab:\"0S41\",leabh:\"0SET\",lead:\"0M070O070Q020S131402\",leadh:\"0S2K\",lean:\"0M0C0O020Q080S0X0T041103\",lear:\"0M130O050P021505\",learn:\"0M13\",leas:\"0M1D0O020T03\",lease:\"0M1G\",leat:\"0S4W\",\"leat \":\"0SFP1102\",leav:\"0M11\",leave:\"0M18\",\"leb \":\"03030V031A041C18\",lebe:\"0N2G0R090T031404\",leben:\"0N3T\",lebi:\"0B4H0D030T041F0F\",lebih:\"0B8L\",lebo:\"0R020Y2G1402\",\"lebo \":\"0Y31\",leca:\"151O1A031O02\",lece:\"0O030P04150F1F37\",lecek:\"1F1N\",leceğ:\"1F2P\",lech:\"0N0O0O0H0R0W0T050U0B\",lecht:\"0N140R17\",lect:\"0L0M0M0G0O0F0R030T1P150C\",\"led \":\"03130M200U070V0B0Z041002141Y1C4Q\",leda:\"0B040U0E0V2T0Z0210031B03\",\"leda \":\"0V26\",lede:\"010P0R0X0U050V0E0Z1V1002120K14041F0K\",\"lede \":\"010Q0Z1M12061F03\",leden:\"0R181F0L\",leder:\"0N020Z0F10021208\",\"ledi \":\"1F5H1N1O\",ledim:\"1F141N0L\",lediğ:\"1F1S\",ledn:\"0U1C0V0O0Y0L0Z02100A\",lední:\"0U0W\",ledo:\"0T040U0A0V020Y0E1B021P1H\",\"lee \":\"0O04113E\",leef:\"010J0R10\",leeg:\"010M0D020R0C1402\",\"leeg \":\"010L0D030R09\",leem:\"010H0R0Q1C0R\",\"leem \":\"010I0R0Y1C17\",leen:\"010V0R1Z10021130\",\"leen \":\"010Q0R2H115L\",leep:\"0M0S\",\"leep \":\"0M0P\",leer:\"01170N060O0O0R1I\",\"leer \":\"01160N050O0S0R0J1F02\",leerd:\"0R0S\",lees:\"01120R0S11021409\",\"lees \":\"01150R0R\",left:\"0M0X\",\"left \":\"0M19\",\"leg \":\"010F03020M030R070Z03131C142F150Q\",\"lega \":\"0O090P030R02139H1A061C1V1O06\",legar:\"0O14130R\",legas:\"0O050P03134K1O0F\",legen:\"0N130R0F0T0A120C14051O02\",leger:\"0R040T0U0Z06150M\",legg:\"03030Q1L0R09121013131405\",legge:\"0Q180R0C120T\",legh:\"14041Q76\",\"legh \":\"1Q4V\",legjo:\"1415\",legs:\"010J0M03140A\",\"legs \":\"010K0M03\",legt:\"0N0G1328140D\",\"legt \":\"0N0G134P\",legu:\"0O0C0P020T041319140315071O03\",legy:\"141S\",legye:\"141F\",leh:\"03070B1G0N0D0T080U0A1110141V1C0H\",\"leh \":\"0B27\",lehe:\"0T03144I\",lehet:\"144O\",lehk:\"0B0M0U05\",lehka:\"0B19\",leht:\"1111\",\"lei \":\"0N040P0F0Q850R02110312091409150B1B05\",leib:\"0N0Y\",leic:\"0N23\",leich:\"0N3I\",leid:\"0N180R0I1209130814071B1K1C0X\",leie:\"1209\",leik:\"1116132E\",leika:\"110B132L\",leil:\"0L0H0P021104120D1B02\",leili:\"120D\",lein:\"010S0L0L0N1O0R1311041404\",\"lein \":\"010L0L0K0N160R0O1104\",leis:\"0N0L0P020R020S38110L1B1Q\",\"leis \":\"0P030SC51B08\",leisk:\"11031B1X\",leit:\"0N0C0P0G0S0X1107131A14041B02\",leith:\"0S3J\",leið:\"131V\",leiði:\"131V\",lej:\"03030O0F0U0P0Y0M0Z0B10021104140N1A0M1O1H\",\"lej \":\"0U0J0Y0L1A0G1O20\",leje:\"0Z0K1A02\",lejt:\"0U06141B\",\"lek \":\"010M03030B070R080U0B0V04100D143P1A031F05\",leke:\"0R031006120D140N1F03\",lekk:\"010W0R0D120413051A03\",lekke:\"010X0R0I\",leks:\"0B030D020V0410031103120F14021C2G1F021O05\",\"leks \":\"1C45\",leksi:\"0D030V0711051C1V1F021O02\",leká:\"0Y1T\",lekár:\"0Y29\",\"lel \":\"030C0U160Y1614071C0I\",lela:\"0B0O0U070V0B0Y0E\",lele:\"1407150V1C0L1F07\",lell:\"030M1116\",lels:\"0Z06120I\",lelse:\"0Z08120I\",\"lema \":\"0D0E0O140P0T0Q0V0T040V0Q1107150Y1B0Q1C371O05\",lemaa:\"0R23112U\",lemb:\"0B070P0R140D\",lembr:\"0P0Y\",\"leme \":\"0N0C0V0E150P1C2D1F0L\",lemed:\"1F141N0L\",lemek:\"14031F1J1N0X\",lemer:\"0Z0B120F1402\",lemet:\"0Z0D100A120F1407\",lemey:\"1F19\",lemeý:\"1N1X\",lemm:\"030V0Z0A1002112P120C14031C0H\",lemme:\"03140L020Z0C114Y120A1403\",lemo:\"0O0314061B031N1W1O0R1P1U\",lemok:\"1N2J\",lemt:\"03180Z0I120E\",lende:\"0L040N080R0H0T030Z0A120C\",lendi:\"0L020Q020Z0213121F1N1N0X1O04\",\"lene \":\"0Z0X121W141O1F041O06\",lenge:\"0M03121M1405\",lengu:\"0O11131I\",lengv:\"1B1Y\",lenm:\"1F17\",lenme:\"1F1B\",lenn:\"110D143S1C0E\",lenne:\"11081421\",lenni:\"141F\",leno:\"0O0B0Q030T030U0A0V040Y091N1N1O02\",lenok:\"1N29\",\"lens \":\"0R040T050Z0510021P17\",\"lent \":\"031W0L210M0B0N030R020T0A0U020Z02130B140M150D1A02\",lenta:\"0O0A0P060Q070T03110215051O081P22\",leor:\"0S1C\",\"leor \":\"0S5G\",lepa:\"0B0H0D030U030V081105\",leph:\"0M040T11\",lepie:\"1A1E\",lepo:\"0B0P0D030V0P\",lepon:\"0B1D0D06\",lepš:\"0U180V040Y2B\",lepši:\"0U060Y20\",lepší:\"0U1I0Y0S\",leq:\"030Z0L041Q04\",\"lera \":\"0L040O070P020Q030T05100E1O06\",lerd:\"1F191N1O\",lerde:\"1F1C1N0Z\",lerdi:\"1F0D1N1D\",\"lere \":\"0Q030T0G0Z17120Z1F0Y1N0H\",lered:\"0Z11120Y\",leren:\"0R1P0Z02\",\"leri \":\"0Z021F521N4D1O03\",lerim:\"1F1U1N0Z\",lerin:\"0N060Z0311021F5W1N72\",leriň:\"1N16\",lern:\"0N1H0Z0H10061O1X\",lerne:\"0N1E0Z0K1O1L\",lers:\"0M020N020R030Z07100212051F041N15\",lersi:\"1F021N1L\",lesa:\"0B110D050O020P020U030Z031002130X\",\"lesa \":\"0D060O020P020U04131X\",lesai:\"0B20\",lese:\"0N0S0Q140U061213140P1F061N0K\",\"lese \":\"0N040Q140U07120J\",leser:\"0N02120K\",lesk:\"0U030V0Q0Z0A11061209\",less:\"0L0L0M0P0Q0A0R05110P130A1404\",\"less \":\"0M0R\",\"lest \":\"03040M020U06120F130E1C4Z\",leste:\"0O030P030Z0B120O\",lesz:\"144Q\",\"lesz \":\"1436\",lesze:\"1410\",lesé:\"141A\",leség:\"141C\",\"let'\":\"0M0O\",\"let's\":\"0M0X\",\"lete \":\"0M040O050P030Q0S0U03140C1C1Z1F041O04\",letet:\"11031414\",letik:\"1P1A\",letk:\"112M1404\",letko:\"1168\",\"lett \":\"0N031004120V1442\",lette:\"0L0J0M0F0N0A0Q0W0R0E0Z0J10051135120F140V1F05\",letto:\"0Q1K\",letz:\"0N16\",letzt:\"0N1V\",leuk:\"0R13\",\"leuk \":\"0R1C\",leur:\"0L5F0R0K\",\"leur \":\"0L520R0C\",leurs:\"0L2X\",\"lev \":\"0Z38101U\",\"leva \":\"0L040O0L0P060Q120U02100A110G\",levan:\"0O100P0L0Q090T0210051141\",\"leve \":\"0O030P050R020Z0L120O\",level:\"0M040Z0212051416\",leven:\"0R2Y0Z08120D1403\",lever:\"0L0H0M020R070T030Z0Q100K120R\",levet:\"0Z161409\",levis:\"010G0B0I0M030O0K0P0C0Q070R0A0T0411121O04\",lew:\"010M03030B060M021A0L1N0E\",lewe:\"011D1A02\",\"lewe \":\"0112\",leye:\"0O0B14021F1U\",leyl:\"1F1G\",leyla:\"1F1X\",\"lez \":\"0L1I\",\"lez-\":\"0L0T\",\"lez-v\":\"0L19\",leze:\"0R110U0414051507\",lezen:\"0R1D0U03\",leã:\"0P03\",leí:\"0O071403\",leñ:\"0O02\",leó:\"0O02\",leý:\"1N71\",leýl:\"1N1J\",leýla:\"1N22\",leýä:\"1N84\",leýän:\"1N2Q\",leýär:\"1N88\",leč:\"0U0J0Y0A\",leĝ:\"1O06\",leş:\"1F0X1N28\",leşm:\"1F091N15\",leşme:\"1F0B1N16\",leż:\"1A0U\",lež:\"0U0V0V080Y141B03\",leži:\"0U0T0V060Y171B04\",ležit:\"0U140Y1F\",leɣ:\"0333\",\"leɣ \":\"032R\",\"lf-\":\"0M02\",lfac:\"1O0P\",lfaci:\"1O1E\",lfd:\"0R05\",lfde:\"0R0L\",\"lfde \":\"0R0S\",lfe:\"03080N0J0P021205140D1O0F\",lfel:\"0305120D140Q1O05\",lfo:\"0O02140H1O04\",lfr:\"0M030Z02100213041O0D\",lfs:\"0R041305\",lft:\"0N03130C\",lfä:\"1004\",lfæ:\"0Z02\",lfö:\"10031407\",\"lg \":\"0N030Z0410021207\",lgat:\"1414\",lgd:\"1303\",\"lge \":\"0N050S1C0Z0I120O1C0X1F02\",lgend:\"010S0N040R0U0Z02\",\"lger \":\"0Z0H120B\",lgeri:\"0D020M200N030Q060R0B0T030Z0W1006110F120C1509\",\"lgi \":\"12051D171F08\",lgil:\"1F15\",lgiv:\"0Z0B\",lgive:\"0Z0D\",lgo:\"0O1K0P0Y0Q02141L1B0H\",\"lgo \":\"0O2D0P140Q021B0K\",lgoz:\"142O\",lgr:\"0L0310021O0C\",lgt:\"0N020Z0812081B03\",\"lgt \":\"0N040R030Z0C1209\",lgte:\"0N020Z09120B\",lgu:\"0O1V0P350T021C0N1F03\",lgui:\"0O11\",lguie:\"0O1D\",lgum:\"0P25\",\"lgum \":\"0P0Q\",lguma:\"0P20\",lgun:\"0O1U0P0P1F03\",lguna:\"0O1L\",lguno:\"0O0U\",lguns:\"0P0V\",lgué:\"0P11\",lguém:\"0P1C\",lgy:\"140B1B0T1N0C\",lgyt:\"1B0U\",lgyti:\"1B1P\",lgá:\"140C\",lgé:\"0L07\",lgú:\"0O0A\",lgė:\"1B0E\",\"lh \":\"1QF3\",\"lha \":\"030C0P1V0U02\",lhan:\"030O0D030P0K1402\",lhar:\"0P130Y0I\",\"lhar \":\"0P15\",lhas:\"0P0N1405\",\"lhas \":\"0P0T\",lhat:\"141H\",\"lhe \":\"0P20\",lher:\"0P19\",\"lher \":\"03020P14\",lhi:\"03040D030P0414051Q24\",lhl:\"1Q1O\",lho:\"0P5X0U030Y0X14031Q4E\",\"lho \":\"0P3I0Y1I\",lhor:\"0P1X\",\"lhor \":\"0P1Z\",lhos:\"0P1O1Q1L\",\"lhos \":\"0P1T1Q2Q\",\"lhoy \":\"1Q4P\",lhu:\"03071Q22\",lhutl:\"1Q51\",lhõ:\"0P06\",lhö:\"1003\",lhø:\"0Z021202\",\"li'\":\"1F0D1Q4T\",\"li' \":\"1Q72\",\"li-\":\"030X1P6O\",\"li-b\":\"1P0X\",\"li-bi\":\"1P11\",\"li-k\":\"03051P13\",\"li-ka\":\"1P17\",\"li-l\":\"1P1L\",\"li-ä\":\"1P17\",liai:\"0Q020S0Z11061B1N\",\"liai \":\"1B37\",liain:\"0S41\",liaj:\"1O1A\",\"liaj \":\"1O1V\",liam:\"0L020M050Q0K0T1E1B06\",\"liam \":\"0L030M060T1H\",\"lian \":\"0B2B0D0A0M04110A1O23\",lias:\"0M040O020P020T0F110P1B0G1C0L\",liat:\"0Q0W1B02\",liau:\"1B2M\",\"liau \":\"1B36\",liban:\"0D0F0Q0I1404\",liben:\"0T0Z\",libo:\"0D061O051P0J\",libr:\"0D0O0L0G0M040O2K0P020Q270T3715071O1F\",libro:\"0D110O2P0Q1K0T0W1O2R\",libru:\"0T1U\",libu:\"0B0C0T0Y0U03\",lica:\"0L090M050O0Y0P0U0Q0F0R020T230V0715151A031O04\",licam:\"0T13\",licet:\"0T1H\",lich:\"03020N9B0R0Z\",\"lich \":\"0N9Z\",liche:\"0N40\",licht:\"0N0Z0R12\",lick:\"0M020N0H0U0N0Y11100Y\",licka:\"100G\",licky:\"0U0P0Y0Z\",licu:\"0T110V04\",\"lid \":\"03190D050M040R040U020Z0214021C1G1P0N\",lidad:\"0D0F0O1R0P15\",\"lide \":\"0L030Z31\",lidig:\"1N20\",lido:\"0O0D0P060Q021D0S1P0V\",lidt:\"0Z0R\",\"lidt \":\"0Z0W\",lidé:\"0U15\",\"lidé \":\"0U1L\",lidí:\"0U0Q\",\"lidí \":\"0U10\",lieb:\"0N2W0Y0T\",\"lieb \":\"0N0B0Y10\",liebe:\"0N2R\",liec:\"1D1L\",lieci:\"1D32\",lief:\"013W0M020N0C0R2U\",\"lief \":\"013Q0M020N0C0R06\",liefd:\"0R10\",lieft:\"0R2H\",lieg:\"01170N0U0R0Z1P0K\",\"lieg \":\"01160R04\",liek:\"0R060Y1D110214021B0D1D1H\",liel:\"0Q0B0T041D3X\",liela:\"1D25\",lieli:\"1D2Y\",lielā:\"1D2O\",\"lien \":\"0L0A0M020N0P0Z14100D11081207\",lier:\"0L0V0M040N0G0O030Q0B0R040T0S0Z02\",lies:\"0L020M070N070R081B0J1D0U\",\"lies \":\"0L040M090N030R081B0G1D25\",liet:\"0Q0D0R0K0Y0R1B131D29\",lieta:\"0Y0S1B0B1D1R\",liev:\"0M0T0Q020R0T0Y0F1102\",lieve:\"0M130R14\",life:\"0M11\",\"life \":\"0M1B\",\"lig \":\"011403040D0E0N0L0R0K0Z4E102M129J140Q\",\"liga \":\"0P05100Z1B03\",\"lige \":\"0L020N060O020R080T040Z3L1223\",liger:\"0N050O040R030T050Z0I120D\",ligg:\"0R080Z111013120T1308\",ligge:\"0R0B0Z16100Z120R\",ligh:\"0M0N0R040Z16100L121L1Q0I\",lighe:\"0R050Z1E100K121L\",light:\"0M0V\",ligin:\"1N16\",lign:\"0L0A0T0P0Z0H120C1O05\",ligne:\"0L0E0T090Z0J120A\",ligs:\"0Z0E120C\",ligst:\"0Z0H120C\",ligt:\"010H0D050N020R0M0Z2Z103D\",\"ligt \":\"03020N020R0T0Z3K1037\",ligv:\"0Z0C120Q\",ligvi:\"0Z0E120Q\",lih:\"0B2Y0D060V031003110K1C1G1Q04\",\"lih \":\"0B0L0V03\",liha:\"0B540D02110U1C0K\",lihat:\"0B96\",lihi:\"0D09\",liht:\"1C18\",lihtn:\"1C1H\",lihts:\"1C1L\",\"lii \":\"0T180U0C0Y0R1102150J1A0D\",liia:\"111J\",liian:\"113O\",liig:\"1C1J\",liiga:\"1C34\",liik:\"111C\",liit:\"0D0C110X\",\"liit \":\"0D0L\",\"lij \":\"0R0I1A021Q8Z\",lija:\"0O020V07110Z1B0B1D0J1P0Z\",lijap:\"1P15\",lijf:\"0R0T\",lijk:\"0R9Y\",\"lijk \":\"0R9C\",lijke:\"0R29\",lijkt:\"0R17\",lijo:\"11081B13\",lijv:\"0R0T\",lijve:\"0R14\",\"lijā \":\"1D1W\",\"lika \":\"0D020U040V1F100S1A021B0K1D1W1O05\",likd:\"1N10\",likde:\"1N1B\",like:\"01270M540V0B0Z02110212481C0E1F0F1O02\",\"like \":\"01270M5K0V0Q0Z0212101F021O02\",likel:\"0M0O1F0C\",liker:\"1231\",likes:\"0M0K\",liki:\"0B230D020V0I11031A031B0C1O05\",\"liki \":\"0B410V101A03\",likk:\"0B050R020Z081104120N1C0H\",likl:\"1F1G1N0K\",likle:\"1F1X1N0J\",liko:\"0D070U050V3A110M14021A041B0U1O061P3A\",\"liko \":\"0D050V7C11111B1D1O071P12\",likos:\"0U0311021B081P2S\",likt:\"1005120S1B0Y1D201F1B1O03\",likte:\"120I1F1Q\",likti:\"1B1H1F021O02\",liku:\"0D060N020V0L11061A021B041C2K\",likul:\"0D071C2J\",\"lil \":\"03050U0W0Y0P\",lill:\"0O020Z0Z1006110L120F1C0U\",lille:\"0Z16110C120E\",lilo:\"0U0215041O041P0T\",lilä:\"1P1X\",liläd:\"1P28\",limat:\"0B190L060M030U03110I1A061B041F021O05\",limb:\"0M04152G\",limba:\"0D02151S\",limu:\"0D0A0T080V031B021O03\",limut:\"0D0J\",linde:\"0N040R070Z021F0L1N19\",linen:\"117R\",linge:\"0L060N0D0R0L0Z0J1005120M\",lingg:\"0D0G\",lingl:\"1P11\",lings:\"0M060N0E0R0C0Z0E10021206\",lingu:\"0D020L060M030P070Q130T3X1002130Q\",lingv:\"0U0315051O2P\",\"lini \":\"0Q020T0311041F0E1N1L\",linn:\"0S1C110S131P1C1I\",\"linn \":\"0S4Z13341C1O\",linna:\"110L1C1H\",lino:\"0D040O030P030Q0B1B051O0R1P1F\",\"lint \":\"033H\",\"lio \":\"0O060P030Q5A0T0X0V111B1P1O0O\",liom:\"0S9014021B02\",\"liom \":\"0SPI\",lioms:\"0S32\",lior:\"0L070Q140T0V\",liore:\"0L070Q0S0T03\",liote:\"0O0A0P090Q0X0V080Z0910051206150D1A0D1B0L1O09\",\"lip \":\"0Z021F091N1K\",lipa:\"0B030D0A110D1B02\",lipi:\"0D09110A1O02\",lipin:\"0D0G1O03\",lipo:\"1B061O031P1M\",lipp:\"03020M030N030R030Z0810081109120A\",liq:\"03040L0L0P030T1I\",liqu:\"0L0Z0O020P030T2U\",liqui:\"0L050T1R\",\"lir \":\"0B040L080O0N100W122A131E1F49\",lire:\"0L0N0Q0714051O02\",liri:\"0D021F1F1O0A\",lirim:\"1F1C\",lirs:\"1F11\",lirsi:\"1F1A\",\"lise \":\"0L0Q1C521F09\",lisel:\"110Y1C34\",lisen:\"030Q0L051009112H\",lises:\"0L07112S\",lish:\"0M0N\",\"lish \":\"0M0R\",\"lisi \":\"0B0V116T1F06\",lisk:\"03030V05100311041A071D1H\",liski:\"0V081A031D2A\",lisma:\"1C1V1O02\",\"list \":\"030E0M090N020R090Y1I0Z041002130L15051A0R1C1O\",lisä:\"1114\",\"lita \":\"0D1C0O020Q040T06100B110D1O09\",litan:\"0B0C0D0F0T071O03\",liten:\"100D120N\",litie:\"0M030R0T0Z0F1102120D\",litik:\"0B070D020N0E0U060Z0B100411051205140Y1B0E1F071O0I\",litir:\"0S32\",lits:\"0L02110G1C0N\",\"litt \":\"0N02122F\",litte:\"0N030T170Z041002110H\",littl:\"0M13\",litu:\"0Q0I0T0S0U07110A1305\",lity:\"0M0E11051A0A\",\"lity \":\"0M0K\",lità:\"0Q51\",\"lità \":\"0Q53\",lité:\"0L0Y\",\"lité \":\"0L1D\",\"liu \":\"15061B40\",lium:\"0T22\",\"lium \":\"0T26\",lius:\"0T2P14021B0T\",\"lius \":\"0T2V1B1M\",\"liv \":\"0U0I0Z0R100O120O\",liva:\"0V0C1003111F\",livat:\"113B\",\"live \":\"0L020M150Z1I\",liver:\"0M030Z1Q1O04\",livet:\"0Z0I100F1215\",livi:\"0M0D0O030Q040T0E100E\",livit:\"0T03100E\",livr:\"0L1U0P29\",livre:\"0L310P0C\",livro:\"0P2G\",liw:\"03060D051A1E\",liwa:\"0D081A06\",lix:\"03020M020P040T091002\",liy:\"03081F741Q04\",liyd:\"1F1A\",liydi:\"1F1Q\",liyi:\"03041F0V\",liyo:\"1F5M\",liyor:\"1F7K\",\"liz \":\"0O0Q0P0Y1F0C\",lize:\"0M0D0N080P0814021507\",lizit:\"032S\",lizz:\"0Q0U\",liä:\"110A\",liæ:\"0T03\",liç:\"0P041F02\",liè:\"0L06\",lié:\"0L0D\",lië:\"0R0C\",\"lië \":\"0R1C\",lið:\"131Y\",\"lið \":\"1329\",liò:\"0Q02\",lió:\"0O091403\",liö:\"1105\",liý:\"1N26\",liýa:\"1N33\",\"liýa \":\"1N1I\",liýad:\"1N2K\",liā:\"0T02\",lią:\"1B07\",liĉ:\"1O0K\",lič:\"0U0I0V160Y0V\",lično:\"0V1L\",liĝ:\"1O0A\",liğ:\"1F0W\",liği:\"1F0X\",liň:\"1N0H\",liś:\"1A2B\",liśm:\"1A2U\",liśmy:\"1A4J\",liş:\"1F0H\",liš:\"0U0R0V1J0Y111B0G\",\"liš \":\"0U100V1S0Y1N\",lišk:\"0U031B0Q\",liū:\"1B0D\",lių:\"1B0U\",\"lių \":\"1B1D\",liț:\"150I\",liɣ:\"0330\",\"liɣ \":\"0333\",\"lj \":\"0V0P100E1411\",\"lja \":\"0V19101L11021317141F1C2W\",ljak:\"0V05110214091C0H1N14\",ljas:\"11051C0O\",ljd:\"0V021006\",lje:\"03020V3R0Z04100O1110120814121C0G1N1X\",\"lje \":\"0V2G0Z071105120B1404\",ljek:\"110214061N26\",\"ljek \":\"14071N1I\",ljekd:\"1N17\",ljen:\"0V1T1003110O140E\",ljer:\"0Z02100K1205\",\"ljer \":\"100J\",ljes:\"1105141R\",ljese:\"141A\",lji:\"03020V2J11031305\",\"lji \":\"0V1D\",ljiv:\"0V12\",ljn:\"0V0Y\",ljno:\"0V0Y\",\"ljno \":\"0V2E\",ljo:\"0R020V05100211291406\",ljon:\"1003113P140G\",\"ljon \":\"1187140H\",lju:\"0B060V3W100M1305140A1C2V1O0B\",\"lju \":\"0B0B0V0T1C33\",ljub:\"0V13\",ljud:\"0V1L1007\",ljudi:\"0V37\",ljá:\"140H\",ljä:\"110F\",ljó:\"131N\",ljö:\"1006140A\",lkaa:\"0R0Z111H\",\"lkaa \":\"1135\",lkaar:\"0R1B\",lkaj:\"1O0Q\",\"lkan \":\"0B2V130I\",\"lke \":\"01170N070R1N0Z07120714021F05\",lked:\"0M0H0Z02140V1F07\",\"lked \":\"0M0O\",lkee:\"01151114\",lkeen:\"0118112G\",lken:\"03020N040R050Z0Q1013120P1F07\",\"lken \":\"03020N050R040Z0T1013120M\",lket:\"0Z0D100I120C\",\"lket \":\"0Z0F100I120B\",lkf:\"1O03\",lkin:\"0M0M0R0411041B021N0K\",lking:\"0M0U0R05\",lkk:\"110L\",lkl:\"1003\",\"lko \":\"0U090Y0O110I1A221B021O02\",lkoi:\"111C\",lkoz:\"142K\",lks:\"0M0213041D0O\",lkst:\"1D0U\",lkste:\"1D25\",lkt:\"1F05\",lky:\"0U0E0Y06\",lkä:\"1117\",lkää:\"111D\",lké:\"0U09140D\",lkü:\"140N\",lkül:\"141M\",\"lkül \":\"1417\",lký:\"0U0C\",\"ll'\":\"0Q2L\",\"ll'a\":\"0Q1N\",\"ll'e\":\"0Q0S\",\"ll'i\":\"0Q0S\",\"ll-\":\"032V0M02\",\"ll-a\":\"032O\",\"ll-as\":\"032Z\",llaa:\"1118\",llaan:\"112W\",llad:\"0O0B0Z06100I140A1F03\",llade:\"0Z04100F\",llae:\"0T0V\",\"llae \":\"0T0V\",llai:\"0L0N111M\",llais:\"0L0A112V\",llal:\"030T110S140M1C0Z\",\"llal \":\"030H14061C29\",llam:\"030W0O1Y0T1C1103140Q\",\"llam \":\"03110T1E1405\",llama:\"0O1W1402\",\"llan \":\"03530O02100L110M13141F02\",\"llar \":\"0M030N0A0O070R0B0Z0B102I120913151F0A1N0N\",\"llas \":\"03090O1Q0T0H10051103\",llat:\"0O020Q0D0T0F10021103120514151C0E\",llb:\"100X\",llba:\"1012\",llbak:\"1012\",lld:\"100M\",llde:\"100O\",llea:\"0S0O\",lled:\"03040M150R060Z0S1F05\",\"lled \":\"03080M1K\",llede:\"0Z0Y1F04\",llee:\"010Q0R1V112M\",lleen:\"010S0R2G1156\",llega:\"0M030O1Y0Q050R050T030Z02130P1C1L\",llei:\"0N151109\",llel:\"14041C16\",llele:\"1C1H\",llem:\"03090L1L0N070R0T0T070Z0N1104140N1F02\",\"llem \":\"03090N0B0T060Z0O1402\",llema:\"0L0Y0R13\",lleme:\"0L1S140G1F02\",llene:\"1205141V\",llere:\"0N020T040Z1D1214\",llest:\"0M020Z021C3Y\",\"llet \":\"0L090M040T030Z0R100L110C120R14021F02\",llett:\"0L020Q070Z03110Q1206142U1F04\",lleu:\"0L15\",lleur:\"0L1O\",llev:\"0O1Y0Q0L0Z03\",lleva:\"0O1Z0Q0K\",llez:\"0L120O050Q05\",\"llez \":\"0L1F\",llf:\"10071202\",llg:\"0N021003140G\",llga:\"1416\",llgat:\"1411\",llh:\"10031403\",llic:\"0R040T2H\",llie:\"0L070N030R511102\",\"llie \":\"0R6O\",llig:\"0L0C0M030N0O0Q0D0R0D0T0Q0Z0T100I120W1406\",llige:\"0L0J0M040N0G0Q0B0R0A0T0I0Z0N1004120M1406\",\"llin \":\"033D110F\",lline:\"0L04116V1C10\",lling:\"0M0Y0N030R0F0Z0N1003120F130B\",llir:\"0L030Q021315\",\"llir \":\"0L06132F\",llis:\"03060L030Q040T0Q117F1C1N\",llise:\"116R1C2D\",llisi:\"112R\",llist:\"030B115E\",lliu:\"0T0R\",lliɣ:\"0320\",\"lliɣ \":\"034I\",llk:\"0N0310051306\",llm:\"1004\",lln:\"100F1409\",\"llo \":\"0M020N030O1X0Q5Y0R050T12110X1204\",lloi:\"0L02111S\",lloin:\"113Y\",llom:\"120W140P\",\"llom \":\"120U1407\",llon:\"0L0Z0O070Q041002110K1O07\",llor:\"0O0J0Q0D0T021002\",llos:\"0N020O2Q0T0K1106\",\"llos \":\"0N020O350T0L\",llot:\"1103141B\",llott:\"141D\",llow:\"0M0U0Q0311021A02\",llp:\"1002\",llr:\"100H1304\",lls:\"03020M090N0J10151206130D1402\",\"lls \":\"0M0F0N06100K130D\",llsa:\"100G\",llst:\"0N0X10091207\",llt:\"0N1L1030120Q1327140K\",\"llt \":\"0N1710271207132A140Z\",llta:\"10021317140C\",lltaf:\"132K\",llte:\"0N2N\",\"llte \":\"0N2V\",llti:\"101Q121N\",lltid:\"101J121N\",llud:\"0T18\",\"llud \":\"0T1A\",llum:\"03030L090T1S130P1O04\",\"llum \":\"0T1V131G\",llut:\"1154\",\"llut \":\"11BN\",llv:\"100B1402\",llym:\"1N0X\",llá:\"0O08140P\",llä:\"10031191\",\"llä \":\"11DN\",llå:\"1005\",llæ:\"0T02\",llè:\"0L05\",llé:\"0L1A0O021409\",\"llé \":\"0L171405\",llée:\"0L0N\",llí:\"0O0I140D\",\"llí \":\"0O0R\",lló:\"0O0613031408\",llö:\"1104\",llı:\"1F0E\",\"lma \":\"03060O090P090Q021117140C15051C1N1F0I\",lmad:\"031014031C0E1F2F1N10\",lmady:\"1N1B\",lmadı:\"1F2Q\",lmag:\"14071N1R\",lmagy:\"14071N1U\",lmak:\"110314031F2S1N1Y\",\"lmak \":\"1F3A1N22\",lmal:\"010Y030211031F1B1N1E\",\"lmal \":\"0110\",lmaly:\"1N1S\",lmalı:\"1F1N\",lmam:\"14061F11\",lman:\"030W0L030O020P020Q03112D15031F0U1N0Z\",\"lman \":\"030O11461F0B\",lmas:\"110Z14141B051C0S1F1J\",\"lmas \":\"1106140V1B0B1C1S\",lması:\"1F1U\",lmay:\"1F2A\",lmaya:\"1F27\",lmaz:\"140J1F0O1N10\",\"lme \":\"0L060N030P0G111F140D15051F05\",lmed:\"030914021F0S1N2B\",lmedi:\"1F0Y1N36\",lmek:\"110914051F0Y1N0U\",\"lmek \":\"1F131N0U\",lmeli:\"1F0A1N14\",lment:\"0O2B0P390Q1C1106140X\",lmer:\"10031N1I\",lmeri:\"1N1B\",lmez:\"140B1F0A1N0X\",lmeý:\"1N39\",lmeýä:\"1N3Y\",\"lmi \":\"032B0U2D1102140C1F051N3G\",lmis:\"111B14031C1D\",\"lmis \":\"110U1C1O\",lmiy:\"1F27\",lmiyo:\"1F2Z\",lmond:\"1411\",lmos:\"0M0E140A\",lmost:\"0M0K\",lms:\"0L021C0E\",lmy:\"0U031A021N0G\",lmá:\"140C\",lmä:\"0N0210031113\",lmé:\"140B\",lmı:\"1F0P\",\"lna \":\"0U030V05100214331A091B041D0M1P0G\",\"lnak \":\"1415\",lnap:\"141S\",\"lnap \":\"141J\",\"lne \":\"0V070Y1414051A0J\",\"lnek \":\"1415\",\"lni \":\"0V08148Y15061A05\",lnin:\"100L1306\",lning:\"100L130C\",lnk:\"0Y0E\",lno:\"0U0A0V0O0Y0B140B1A0H1B061O07\",lnu:\"130A14051B031C2J\",lnud:\"1C34\",\"lnud \":\"1C7G\",lny:\"0B0I0Y0514031A0O\",lnya:\"0B10\",\"lnya \":\"0B1Y\",lní:\"0U0L\",lný:\"0U0C0Y0A\",lně:\"0U0P\",\"lně \":\"0U0Y\",lnī:\"1D0Q\",lnı:\"1F0T\",lnız:\"1F0X\",\"lo'\":\"1Q3E\",loa:\"0M03110J150R\",\"lob \":\"1PDE\",lobo:\"0O050P030U060V0E0Y0Y1B02\",lobod:\"0V0Z0Y17\",lobs:\"1P1P\",\"lobs \":\"1P1R\",\"loc \":\"151T\",loca:\"0L050M060O090P0I0Q040T081509\",lock:\"0M0G0N05100Y\",locka:\"100S\",locu:\"0L030O030T1R152J\",locui:\"1521\",locut:\"0L040T1A\",\"lod \":\"0Z0M10061204140Z1P121Q2S\",loda:\"14031D13\",lode:\"0R030Z0A1007\",lodu:\"1D1L\",\"lodu \":\"1D43\",lodā:\"1D1C\",\"lodā \":\"1D3G\",loe:\"010B0R0H1C0G\",loed:\"0R0J\",loem:\"0R0L\",lof:\"0R020Z02130N1O041P1F\",\"lof \":\"1P1N\",loga:\"0V0614051B0R1O04\",logh:\"1Q5B\",\"logh \":\"1Q70\",logob:\"1P3C\",logol:\"14031P1R\",logö:\"1P13\",logön:\"1P1A\",loh:\"0D030N020U040Y0M1107\",loi:\"0L0V0S0I112E1506\",loin:\"0L0H1124\",\"loin \":\"0L0R113S\",\"loj \":\"0O0C1O2H\",lojn:\"1O1C\",\"lojn \":\"1O2O\",\"lok \":\"0B060D050R060Y0O1002141X\",lokk:\"0R030Z0R110312121306\",lokke:\"0R030Z0X1103120R\",loku:\"1117130B\",lokuv:\"112U\",lol:\"0D04110414071F021P68\",\"lol \":\"1P5W\",lolö:\"1P12\",lolöd:\"1P12\",\"lom \":\"0V0F0Y0P120U14391P77\",lomm:\"0Z09100H12091407\",loms:\"0Z0M120D1P1I\",\"loms \":\"1P1Q\",lomst:\"0Z0Q120D\",lone:\"0M0L0O0A0Q030V031A06\",\"lone \":\"0M0O0Q030V081A07\",long:\"0B230D160L1M0M1N0O020P0Q0R020T181O1B\",\"long \":\"0B3R0D240L0J0M1O\",longe:\"0L090M0G0P0F0T071O1D\",lons:\"0L1211091P0E\",\"lons \":\"0L1N1P0G\",loo:\"01150D0A0M1J0R0R11071C27\",loob:\"0D0J\",\"loob \":\"0D0Y\",lood:\"0M060R071C0K\",loof:\"010F0R15\",look:\"0M2F0R02\",\"look \":\"0M150R02\",looke:\"0M0T\",looki:\"0M0S\",looks:\"0M0N\",loom:\"1C1D\",looma:\"1C1Z\",loop:\"01180R0H\",\"loop \":\"011A0R09\",loor:\"010H0M060R04\",\"loor \":\"010I0M070R05\",lopen:\"0R150U031103\",lopet:\"112X\",lopp:\"0L060R0210031117\",loppu:\"112X\",loq:\"0L020O020P070T2D1Q13\",loqu:\"0L040O030P080Q020T4H\",loque:\"0L030O040P0A0T1D\",loqui:\"0T2E\",\"lor \":\"0M040N030O180P0E0T0B1008155F1A03\",lora:\"0L020O0K0P030Q0F0T0M100H15041O0N\",loro:\"0O040P030Q5V1A021O0S\",\"loro \":\"0O020Q5W1O0I\",lors:\"0L1R1404\",\"lors \":\"0L1H0M02\",lorsq:\"0L1J\",lose:\"0L020M0Q0N060Q02150H\",\"lose \":\"0M0J0N040Q021B03\",losi:\"010H0L020M040N020O030Q050T051105150T1O09\",losie:\"010I0R02\",lossa:\"0T0C112A\",\"lost \":\"0M0N0R060U0C0V0Q\",lott:\"0L040Q070Z051006110F120E1420\",lotta:\"0L020Q041002110L1414\",\"lou \":\"010H0L020P0G0U0R1504\",louc:\"0P080U0R\",louch:\"0L020U10\",louh:\"0U1G\",louho:\"0U1L\",\"love \":\"0M19\",lovek:\"0Y1G\",lovn:\"0U0E0Y0Z0Z02\",\"lovo \":\"0U0N0Y10\",lově:\"0U10\",lověk:\"0U1F\",\"low \":\"0M0K\",loy:\"0D030L060M031F021Q06\",\"loy \":\"0D06\",loz:\"0U030V05140315031O02\",loč:\"0U030V020Y0J\",loĝ:\"1O0S\",loĝa:\"1O0O\",lož:\"0U0Q0V0H0Y0Z\",loži:\"0U0S0V0F0Y13\",\"lp \":\"01100M110R080Z0A100K120C13091F02\",\"lpa \":\"0O0A0P080Q090T0A10131102130T1B021O03\",\"lpe \":\"0O050P070Z0P120R\",lpen:\"0B040R1J10021O02\",\"lpen \":\"0D020N020R230Z021002\",lper:\"0Z081009120B1O05\",lph:\"0L020T03\",lpl:\"10021N0D1O0D\",lpo:\"0B020Q03110C1O0I\",lpp:\"110D\",lpr:\"1O0A\",lpt:\"0R021009\",lpu:\"13081O061Q0N\",lq:\"03080L0F0O050P041Q09\",lqu:\"0L270O0G0P0I1Q0H\",\"lqu'\":\"0L101Q0W\",\"lqu'u\":\"0L1P\",lque:\"0L2Q0P0M\",\"lque \":\"0L38\",lquer:\"0P0S\",lques:\"0L1F\",lqui:\"0O0P\",lra:\"1002130614091O04\",lre:\"0M0E0O06100314091D0G1O02\",lrea:\"0M0Q\",lread:\"0M10\",lri:\"10031O05\",lrä:\"1008\",\"ls-\":\"1P0Z\",\"ls-l\":\"1P19\",\"ls-li\":\"1P1G\",\"lsa \":\"03060D020O080P060Q020T0910061F081N1A\",lsan:\"03040Q0210021F021O0M\",lsc:\"0N0A\",lsd:\"0Z04\",lsda:\"0Z0A\",\"lse \":\"0M0H0Q040R070Z24100O121Z1F02\",lsel:\"010F0R02\",lsen:\"03030Z0F1007120V1F02\",\"lsen \":\"03030N020Z0I1007120T1F02\",lser:\"0Z0H1005120O\",\"lser \":\"0Z0K1004120O\",lset:\"0Z0H\",\"lset \":\"0Z0L\",lsj:\"0R09\",lsje:\"0R0Z\",lsjeb:\"0R1B\",\"lsk \":\"0Z0Z1213\",lska:\"0U020Z03102U1206131B1A02\",\"lska \":\"0U03100W1102131F1A03\",lskar:\"101H130U\",lske:\"0Z2G122A\",\"lske \":\"0Z0E120D\",lsked:\"0Z0E\",lsker:\"0Z1X1218\",lsket:\"0Z0B120N\",\"lsky \":\"0U090Y13\",lsm:\"0Z021003\",lsp:\"100312021O03\",\"lst \":\"0N0Y0Z09100B120C1307\",lste:\"0N030R030Z04120B\",lstu:\"0R0X\",lstub:\"0R17\",lsu:\"03030B020T05130B1B041F091N0B1O06\",lsz:\"141J1A02\",\"lsz \":\"142H\",lsä:\"1105\",lsö:\"1P0E\",lsē:\"1D13\",lsēt:\"1D1E\",lsēta:\"1D21\",lső:\"140K\",\"lső \":\"1414\",ltaf:\"03021317\",\"ltaf \":\"0304132K\",ltaj:\"1O1F\",\"ltaj \":\"1O1Z\",ltak:\"1109141Z\",\"ltak \":\"141Y\",ltal:\"0Z021102141H\",ltalá:\"141B\",ltam:\"0P030T051105144E\",\"ltam \":\"0P020T04144N\",ltar:\"0O0C0P0T0Q0C0T0B100214051503\",\"ltar \":\"0O090P0Q\",\"ltas \":\"0O050P030T0E1B1E1O0I\",ltel:\"0Q080Z091002110214071504\",ltem:\"010N0T03141F\",\"ltem \":\"0T03141G\",ltema:\"010P\",\"lten \":\"0N3T0R030Z0A10021109120H1403\",ltet:\"0N080V030Z0510021209140L\",lth:\"0M081202\",\"lti \":\"0Q0Y0T0R1107130C14041B0F1O08\",ltid:\"0P020Z1E101M121R\",\"ltid \":\"0Z1M101K121P\",ltij:\"0R1X\",ltijd:\"0R2L\",ltim:\"0O0W0P0P0Q0J0T0715131B05\",ltis:\"0T0U11031B0D1O0B\",ltj:\"0R021402\",ltn:\"1402\",\"lto \":\"0D030O0R0P0K0Q650T0M11021B081O09\",ltoz:\"1416\",ltra:\"0O020P030Q0L0T071O0D\",ltro:\"0Q140T081O04\",\"ltro \":\"0Q130T09\",lts:\"0M030N04100214081D0G\",ltt:\"110S1F03\",\"ltu \":\"0T03110513161B031O06\",ltum:\"0T0X\",\"ltum \":\"0T0Z\",lty:\"010K0M0311031B021N0D\",ltyd:\"011A\",\"ltyd \":\"011D\",ltà:\"0Q09\",ltá:\"140Y\",ltál:\"141I\",\"ltál \":\"141L\",ltä:\"1135\",\"ltä \":\"114P\",lté:\"0L05140O\",ltó:\"0O061404\",ltö:\"140Q\",ltă:\"150U\",ltı:\"1F13\",\"lu'\":\"1Q9B\",\"lu' \":\"1Q8U\",\"lu-\":\"03030B02\",lua:\"0B1F0P060S150T02114M15161O09\",\"lua \":\"0P061122150F1O04\",luai:\"0S0O111F\",luais:\"113H\",luan:\"0B0611231O02\",\"luan \":\"11521O03\",luar:\"0B2F1506\",\"luar \":\"0B36\",luat:\"111O1519\",lubi:\"0D021A3G\",\"lubi \":\"1A1N\",lubię:\"1A1V\",luch:\"0L020N030O070R0N0U051A021Q0O\",lucht:\"0N030R0V\",lucr:\"0O020T0B1543\",lucru:\"0T02153D\",\"lud \":\"0O0A0T170V06\",ludi:\"0M020T180V031O0H\",ludz:\"1A1J\",ludzi:\"1A27\",luf:\"030A0N030Z0710061202\",luft:\"0N080Z0K10061206\",luga:\"03030D0A0O0U0P0Y1O04\",lugar:\"0D0E0O130P17\",luge:\"0N030Z031C0X\",luh:\"0B0L0D020U031Q0D\",\"luh \":\"0B14\",\"lui \":\"0B090L4P0P020Q6W0R030T05110415D91B03\",luist:\"010K0R0Z0T031107\",luit:\"01180R0D0T0N1105\",\"luit \":\"01160R070T0N\",luj:\"0U0T0V070Y15110715061A031O021Q0T\",luje:\"0U0O0V060Y1O11031A021Q08\",lujem:\"0U020Y1G1103\",\"luk \":\"010H0B060R0I0U090Z0614031F0G\",luke:\"111E\",lukk:\"010T0R0Y0Z0S1103120M131Q\",lukka:\"132X\",lukke:\"0R050Z0Y120I\",lukki:\"010T0R16\",lukm:\"1N14\",lukma:\"1N1J\",lukt:\"0R08100812091F031O03\",\"lul \":\"0305140O152K1P0Q\",lulu:\"0B080D0E0T0515081F09\",\"lum \":\"0B290T77131P1F061N0E\",lume:\"0L0E0N0A0O020P020T0L110815211Q06\",\"lun \":\"0304110W13071C2N1F09\",lung:\"0D0N0N0T0Q0M0Z0215151Q08\",lunga:\"0D0P0Q07\",luo:\"0Q04111P1B0P1O03\",\"lup \":\"0Z021F0D1N2H1Q06\",lupa:\"0B0U0D050L08110L1Q0E\",\"lur \":\"0B09131C1F0Z\",lure:\"0L030M020T08120F\",lurer:\"120D\",luse:\"0Z021C0V\",\"luta \":\"0P050Q02100M1109130H\",lutn:\"0V020Z0A10031A02\",\"luto \":\"0D0J0O050P020Q08\",lutt:\"0L030Z0J110J121D\",\"lutt \":\"120N\",lutte:\"0L030Z0N120P\",luu:\"1127\",luul:\"112A\",luule:\"1139\",luv:\"03060O070T0C0U2Q11081O0E1Q05\",luvi:\"03040O0B0T0N0U2B1O04\",luvil:\"0U1C\",luvit:\"0U1W\",luví:\"0U1R\",\"luví \":\"0U18\",luw:\"0D02\",lux:\"03020P020T050Y04\",luy:\"03030O031F111Q04\",luz:\"03030O0A0P0C0Q0415031A021O06\",luç:\"0P06\",luí:\"0P03\",luñ:\"1N0G\",luğ:\"1F0F\",luň:\"1N0P\",\"luň \":\"1N0V\",luş:\"1F0H\",luž:\"0U070V0A0Y0F\",\"lv \":\"0Z0S100U120T1406\",lvas:\"0O030T0214221D0K\",lven:\"0O020R030T030Z0311071209140D1O0R\",\"lver \":\"0O0S0P090R031002\",lves:\"0D080M0I140U1B02\",\"lves \":\"0M0P1B05\",lvet:\"0T070Z0610091109120B140R\",lvf:\"0Z031204\",lvfø:\"0Z031209\",lvid:\"0O0Z0P03\",lvm:\"1003\",lvo:\"0O060P040Z04110712031B291O0A\",lvoj:\"1B2Q\",lvoja:\"1B2B\",lvoju:\"1B20\",lvs:\"10021202\",lvt:\"0Z03100212021403\",lvu:\"0T02130A\",lvá:\"140F\",lvä:\"110D\",lvæ:\"1309\",lví:\"0O03\",lvą:\"1B08\",lvē:\"1D4U\",lvēk:\"1D5Y\",lvēka:\"1D1R\",lvēki:\"1D88\",lvēks:\"1D32\",lvēku:\"1D2O\",lw:\"0105030C0M0B0R021A091Q08\",lwa:\"03050M0M\",lway:\"03030M14\",lways:\"0M1I\",lwe:\"0307\",lx:\"0303\",lya:\"031X0D0D0Z03120214291F0X1Q11\",\"lya \":\"031R0D0H14071F08\",lyan:\"03090D040Z071205144O1F05\",\"lyan \":\"0303144R1F04\",lyc:\"0L020T041012\",lyck:\"101F\",lycka:\"100T\",lyckl:\"100K\",lyd:\"0T020Z06100312041B091N1K\",lyde:\"0Z0E1204\",lydy:\"1N21\",lye:\"03020D030Z0210031206143X1F07\",lyen:\"1205145D\",\"lyen \":\"12041459\",lyes:\"141H\",lyet:\"0Z03120B141B\",\"lyet \":\"0Z04120B140Y\",lyf:\"10031306\",lyg:\"0Z02100J1202130414071B0W1N20\",lygy:\"1N2L\",\"lygy \":\"1N1L\",lyh:\"1108\",lyi:\"0M041103140S\",lyik:\"141N\",\"lyik \":\"141H\",lyj:\"1B0P\",lyje:\"1B0Y\",\"lyje \":\"1B1Z\",lyk:\"010P0Z0D10031109120I130A14021B0G1N38\",\"lyk \":\"010Z1N36\",lyke:\"010J1102\",\"lyke \":\"010K\",lykk:\"0Z1011081212\",lykke:\"0Z181212\",lyl:\"11061N0B\",lym:\"100211021B071N17\",lymy:\"1N0U\",lyo:\"0D0E140G1F06\",\"lyo \":\"0D0M\",lyp:\"0T021N1C\",\"lyp \":\"1N1L\",lyr:\"12021404\",lys:\"0L020Z0D100I1104120I130E14021B0O1N0A\",lyse:\"0L020Z0C1003120F\",lyss:\"100I\",lyssn:\"100I\",lyst:\"0Z0D10021105120L1B0D\",\"lyst \":\"0Z0D120J\",lyt:\"0Z09100C110A120A1305140K1B08\",lyte:\"12091405\",lytt:\"0Z0L100A1109120H\",lytte:\"0Z0Q120F\",lyu:\"03021404\",lyv:\"0Z0912021B09\",lyve:\"0Z0M1205\",lyver:\"0Z0D\",lyz:\"140B\",lyó:\"140B\",lyö:\"1103\",lyş:\"1N0Q\",lyš:\"0U0T0Y041B02\",lyše:\"0U10\",lyšel:\"0U15\",\"lz \":\"0N05\",lza:\"03020O020Q09\",lze:\"0N030U031F02\",lzi:\"03021502\",là:\"0L0A0Q02\",\"là \":\"0L190Q08\",\"là-\":\"0L09\",lá:\"0O0A0P0E0S1E0U2N0Y1X130S146D\",\"lá \":\"0O0C0P140S0W0U1C0Y0Y13051405\",láb:\"0P021413\",lába:\"141Q\",lád:\"0U0U0Y0G140J\",lág:\"0O030P03140S\",lái:\"0S15\",lál:\"142B\",lálk:\"141J\",lálko:\"141M\",lált:\"141N\",lálta:\"1411\",lám:\"0O040U0M0Y0K140A\",\"lám \":\"0U0T0Y0V1405\",lán:\"0O020S150U0N0Y09130A141Y\",\"lán \":\"0S160U07141Q\",lány:\"0U04142K\",lányo:\"1414\",láp:\"0O030P04\",lár:\"0P050U020Y07130E140B\",lás:\"0O050P040U0C0Y0S1303141A\",lásk:\"0U0E0Y10\",lát:\"0O020S0I0U060Y07130Q1439\",láth:\"0S0M140F\",láto:\"1428\",látt:\"130C142J\",látta:\"1426\",láv:\"0U060Y0P1402\",láva:\"0U030Y101404\",láš:\"0U0I0Y08\",lâ:\"0P0215091F0I\",\"lâ \":\"1F1C\",lâc:\"0L05\",lâm:\"0P03\",lân:\"0P05150Z\",lã:\"0P02\",lão:\"0P06\",lä:\"0N0Q102S114R1C1F1N1V1P2I\",\"lä \":\"100211AF\",läb:\"1C0O\",läbi:\"1C0U\",\"läbi \":\"1C1V\",läc:\"0N051005\",läd:\"100E1P22\",lädo:\"1P0X\",lädö:\"1P0Z\",lädön:\"1P12\",läg:\"0N02100U1P0D\",läge:\"0N04100G\",lägg:\"100L\",läh:\"112L1C2L\",lähe:\"111S1C2V\",läheb:\"1C2D\",lähed:\"1C1E\",lähen:\"11031C1S\",läht:\"111Z\",lähte:\"112Y\",läi:\"110O\",läk:\"100F110N1C1H1N09\",läka:\"100D\",läks:\"110F1C1U\",\"läks \":\"1C29\",läksi:\"11041C2D\",läm:\"100P11151N0H\",lämn:\"100S\",lämna:\"100S\",lämä:\"111F\",län:\"0N0A101Y110E1N161P1G\",läna:\"1P0Z\",länap:\"1P12\",länd:\"0N0B100I1N0E\",läng:\"0N0B101U\",länge:\"0N0D100S\",längr:\"100Q\",läp:\"1009110D1N0Y\",\"läp \":\"1N1A\",lär:\"0N08101E1N0H\",\"lär \":\"100D\",lära:\"1017\",\"lära \":\"100M\",lärar:\"100L\",läs:\"0N081016110F\",läsa:\"100H\",\"läsa \":\"100G\",läse:\"100D\",läst:\"0N02100I110B\",lät:\"0N02100T110I\",lätt:\"0N03100T110H\",\"lätt \":\"100F\",läu:\"0N04\",läv:\"1105\",läx:\"1006\",lää:\"111C\",lääk:\"1118\",lå:\"0Z0G101F120G\",\"lå \":\"0Z0A100D1209\",låd:\"100A\",låe:\"0Z03\",låg:\"100B\",lån:\"0Z05101C1206\",låne:\"0Z091209\",lång:\"101C\",\"lång \":\"100I\",lår:\"0Z0210031202\",lås:\"0Z03100B1206\",låse:\"0Z0410021209\",låt:\"101F1203\",\"låt \":\"0Z02100W\",låte:\"100I\",læ:\"0T040Z1V120T131B\",\"læ \":\"0T03\",læd:\"0Z0B\",læde:\"0Z0M\",læg:\"0Z0G130C\",læge:\"0Z0S\",\"læge \":\"0Z0M\",lægg:\"0Z09\",læk:\"0Z02130P\",lækni:\"131Y\",læn:\"0Z0L\",læng:\"0Z1A\",længe:\"0Z1G\",lær:\"0Z0X121B1310\",\"lær \":\"0Z03120F\",læra:\"1317\",\"læra \":\"132J\",lære:\"0Z1Y1228\",\"lære \":\"0Z0W120X\",lærer:\"0Z1F1217\",læri:\"0Z02120A\",lært:\"0Z0E120C\",læs:\"0Z0K1309\",læse:\"0Z0W\",\"læse \":\"0Z0J\",læser:\"0Z0I\",læst:\"0Z0L1308\",læt:\"0T031305\",lç:\"1F07\",lça:\"0P04\",lçe:\"1F0A\",lè:\"0L0D\",lèb:\"0L04\",lèm:\"0L0O\",lème:\"0L14\",\"lème \":\"0L1E\",lèr:\"0L0B\",lèt:\"0L08\",lèv:\"0L0F\",lé:\"0L0X0O0E0P030S130U1U0Y0H130A142X\",\"lé \":\"0L230O040U0X0Y0S140F\",léa:\"0L020S19\",léam:\"0S13\",léamh:\"0S4I\",léc:\"0L080O03\",lée:\"0L0R\",\"lée \":\"0L10\",léf:\"0O0B\",lég:\"0L0B0P021418\",\"lég \":\"141J\",léi:\"0S24\",\"léi \":\"0S0T\",léin:\"0S0O\",léinn:\"0S2T\",lék:\"0U0R1304140P\",lém:\"0L040P060U0V0Y0D140I\",\"lém \":\"0P080U0X0Y0F1406\",lép:\"0L0G0U0A140J\",léph:\"0L0R\",lés:\"0L0C0O0O1304140P\",\"lés \":\"0L0J0O11140I\",lét:\"0P030U09130B140H\",lév:\"0L060U051405\",lê:\"0P09\",\"lê \":\"0P03\",lên:\"0P09\",lês:\"0P0S\",\"lês \":\"0P0Y\",lì:\"0Q06\",\"lì \":\"0Q0N\",lí:\"0O0K0P0E0S180U3E0Y201324140F\",\"lí \":\"0O0K0S130U1I0Y0S\",lía:\"0O09\",líb:\"0U1O\",líbi:\"0U14\",líbil:\"0U18\",líbí:\"0U1A\",\"líbí \":\"0U1O\",líc:\"0O0E0P0A0U020Y04\",lícu:\"0O0K\",líf:\"1315\",líg:\"0O02\",lík:\"0U08131W\",líka:\"131V\",líkar:\"131W\",lím:\"0O020P020U1J0Y2D\",\"lím \":\"0U2F0Y3X\",lín:\"0O070P0Y0S230U040Y051303\",\"lín \":\"0O040S20\",líng:\"0P13\",língu:\"0P1E\",lít:\"0O080P080U080Y0D1315140P\",líč:\"0U0E\",líš:\"0U0K0Y0R\",\"líš \":\"0U0W0Y0X\",líž:\"0U0D0Y06\",lñ:\"1N0D\",lñy:\"1N0P\",lñyş:\"1N0X\",\"lò \":\"0Q05\",ló:\"0O090P040S0I130H141Q\",\"ló \":\"0O0F1306140X\",lóg:\"0O050P0D1406\",lói:\"0S13\",lóid:\"0S0O\",lóm:\"0O02130E1403\",lón:\"0O081404\",lós:\"1305140G\",lôm:\"0P03\",lõ:\"1C0T\",lõi:\"1C0F\",lõp:\"1C1E\",lõpe:\"1C0Q\",lõpet:\"1C1O\",lõpu:\"1C0O\",lõu:\"1C0H\",lõun:\"1C0L\",lõuna:\"1C1H\",lö:\"0N09100X110I130U140P1PAX\",\"lö \":\"1107\",löd:\"0N0210041P8S\",\"löd \":\"0N021P7P\",lödo:\"1P30\",lödom:\"1P1N\",löf:\"10021P6H\",löfi:\"1P0Z\",löfo:\"1P6L\",löfob:\"1P34\",löfol:\"1P1A\",löfom:\"1P2M\",lög:\"1007130T\",löi:\"1108\",löj:\"1005\",löl:\"110214061P0E\",löm:\"100P14021P0V\",lömi:\"1P0Z\",lömib:\"1P11\",lön:\"10081103130D140J1P3T\",\"lön \":\"1003110414041P4S\",lör:\"10041F03\",lös:\"0N07100S110813081P0N\",löt:\"0N0310071405\",löv:\"100314021P0O\",löy:\"110Z\",lø:\"0Z0U120X\",løb:\"0Z0E\",\"løb \":\"0Z0E\",løbe:\"0Z0N\",lød:\"0Z041202\",løf:\"0Z021203\",løg:\"0Z041203\",løj:\"0Z04\",løn:\"0Z021204\",lønn:\"0Z02120A\",løp:\"120E\",\"løp \":\"1209\",løpe:\"120O\",lør:\"0Z031202\",løs:\"0Z0C120K\",\"løs \":\"0Z091209\",løse:\"0Z0A120I\",løsn:\"0Z04120C\",løst:\"0Z071209\",løv:\"0Z021202\",løy:\"1204\",lú:\"0S0B0Y0G13031402\",\"lú \":\"0Y0D\",lü:\"0N0K140H1C051F251N0F1P0O\",\"lü \":\"1F0W1P0M\",lüc:\"0N0I\",lück:\"0N16\",lüg:\"0N06\",lük:\"14061F0H\",lüm:\"1F0U1N0B\",lün:\"140G1F07\",lünk:\"1415\",\"lünk \":\"1417\",lüs:\"0N05\",lüt:\"1F1J\",lütf:\"1F1Q\",lütfe:\"1F2D\",lüy:\"1F16\",lüyo:\"1F19\",lüyor:\"1F1P\",lüğ:\"1F0B\",lý:\"0U0S0Y0H130N1N4O\",\"lý \":\"0U1H0Y12\",lýa:\"13031N3C\",lýan:\"13061N1F\",lýar:\"1N2Z\",\"lýar \":\"1N2M\",lýt:\"130S\",lýä:\"1N65\",lýän:\"1N2C\",\"lýän \":\"1N16\",lýänd:\"1N1G\",lýär:\"1N5S\",\"lýär \":\"1N2T\",lýäri:\"1N2H\",lþ:\"1302\",lā:\"0T061D1F\",\"lā \":\"1D1C\",lāj:\"1D0U\",lāk:\"1D17\",lān:\"1D0Q\",lās:\"0T02\",lāt:\"0T041D0K\",lāv:\"0T04\",lă:\"1526\",\"lă \":\"154G\",lăc:\"1514\",lăs:\"150T\",lăt:\"1518\",lą:\"1A0S1B0H\",\"lą \":\"1A061B1C\",ląd:\"1A1E\",ląda:\"1A1S\",lĉ:\"1O03\",lĉa:\"1O03\",lč:\"0U020Y041B02\",lē:\"0T051D1S\",\"lē \":\"1D17\",lēb:\"0T02\",lēd:\"1D0G\",lēg:\"0T021D0Q\",lēj:\"1D11\",lēm:\"1D0Y\",lēn:\"1D0G\",lēp:\"1D0Y\",lēs:\"0T04\",lēt:\"0T021D1L\",\"lēt \":\"1D1A\",lė:\"1B2H\",\"lė \":\"1B1W\",lėd:\"1B08\",lėj:\"1B1I\",lėjo:\"1B17\",\"lėjo \":\"1B28\",lėk:\"1B0G\",lėp:\"1B0B\",lės:\"1B12\",\"lės \":\"1B19\",lėt:\"1B0Z\",lėč:\"1B07\",lę:\"1A0Q1B0B\",\"lę \":\"1A1C1B0S\",lĝ:\"1O04\",lĝe:\"1O03\",lī:\"0T051D24\",\"lī \":\"0T04\",līb:\"0T021D0V\",līd:\"1D53\",līdz:\"1D6D\",\"līdz \":\"1D4Z\",līdzi:\"1D4C\",līdzē:\"1D4Q\",līdzī:\"1D2O\",līg:\"1D0Y\",līq:\"0T02\",līt:\"0T021D0R\",lį:\"1B0N\",\"lį \":\"1B1S\",lı:\"1F7Q\",\"lı \":\"1F50\",lıd:\"1F0S\",lıdı:\"1F0V\",lıdır:\"1F17\",lık:\"1F2M\",\"lık \":\"1F1R\",lıl:\"1F0B\",lım:\"1F0Z\",\"lım \":\"1F0W\",lın:\"1F16\",lır:\"1F0R\",lıs:\"1F0V\",lısı:\"1F10\",lısın:\"1F18\",lıy:\"1F3E\",lıyo:\"1F28\",lıyor:\"1F31\",lıyı:\"1F0Z\",lığ:\"1F1B\",lığı:\"1F1C\",lış:\"1F4U\",lışm:\"1F1D\",lışma:\"1F1N\",lışt:\"1F15\",lıştı:\"1F1K\",lışı:\"1F1K\",lışıy:\"1F1J\",lň:\"0Y031N0C\",lňy:\"1N0O\",lō:\"0T05\",\"lō \":\"0T06\",lōr:\"0T03\",lōs:\"0T03\",lő:\"1423\",\"lő \":\"140J\",lől:\"140C\",lős:\"140F\",lőt:\"1417\",lőtt:\"142R\",\"lőtt \":\"142D\",lŝ:\"1O06\",lŝa:\"1O06\",lş:\"1N05\",lš:\"0U090Y05\",lší:\"0U0F\",lţ:\"1502\",lū:\"0T051B041D0X\",lūd:\"0T061B041D2S\",lūdz:\"1D3J\",lūdzu:\"1D6T\",lūn:\"0T02\",lů:\"0U04\",lų:\"1B0C\",\"lų \":\"1B0Y\",lž:\"0U050Y041B021D08\",lžī:\"1D0V\",lžīr:\"1D15\",lžīri:\"1D25\",lț:\"150K\",lți:\"151E\",\"lți \":\"151O\",lțu:\"150T\",lɛ:\"0303\",lɣ:\"0304\",lḥ:\"030C\",\"m'\":\"0L0N0M0C0Q020S0E1A021F4R1Q0Y\",\"m'a\":\"0L230S0I1A021F2D1Q08\",\"m'a \":\"0L1R1A031F2Q\",\"m'd\":\"1F0N\",\"m'e\":\"0L0M1Q38\",\"m'e'\":\"1Q5Y\",\"m'e' \":\"1Q9Y\",\"m'en\":\"0L0O\",\"m'i\":\"0L061102\",\"m'l\":\"1F0Y\",\"m'la\":\"1F12\",\"m'la \":\"1F1G\",\"m'o\":\"0L07\",\"m's\":\"0M0O\",\"m's \":\"0M19\",\"m'u\":\"1F8S\",\"m'u \":\"1F1Y\",\"m'un\":\"1F8B\",\"m'un \":\"1FB1\",\"m'è\":\"0Q05\",\"m'é\":\"0L05\",\"m-a\":\"030G1525\",\"m-am\":\"1522\",\"m-am \":\"152N\",\"m-l\":\"1P2P\",\"m-li\":\"1P3D\",\"m-li \":\"1P3X\",\"m-m\":\"0P05\",\"m-n\":\"03140P05\",\"m-s\":\"03030P0D\",\"m-v\":\"0P04\",\"ma'\":\"0M041F041Q13\",\"ma-\":\"030W0B050P021102\",maa:\"01420B0I0D0M0R2V11781C3W1F06\",\"maa \":\"11201C0N\",maaa:\"0D0F\",maaar:\"0D0P\",maaf:\"0B0W\",\"maaf \":\"0B1C\",maai:\"11191C0S\",maail:\"11331C1V\",maak:\"015K0R30\",\"maak \":\"015U0R0Y\",maakt:\"0R34\",maal:\"0D020R2311101C1P1F03\",\"maal \":\"0R2M1C31\",maan:\"010Y0B030D070R13117M1C0G\",\"maan \":\"0B070D080R0A11ES\",maand:\"010T0R15\",maar:\"012D0D030R4M1102\",\"maar \":\"012I0R64\",maas:\"0D02110F1C0R\",maasi:\"0D0211041C1S\",maba:\"0D0I0O080T07\",mabi:\"0D090T041507\",mabu:\"0B0B0D0C\",\"mac \":\"0L030S0X\",macc:\"0Q16\",macch:\"0Q16\",\"mach \":\"0M020N0G0S7A1A041Q12\",mache:\"0N341Q0C\",macht:\"0N3M0R07\",macsk:\"1414\",\"mad \":\"030E0D030M060Z0N14031C21\",madal:\"0D191F02\",madan:\"1F16\",made:\"030A0L020M130O050P060T0G0Z09100A1F03\",\"made \":\"0M1H0T0E100A1102\",madie:\"1B1F\",mado:\"0O0M0P0O0T021O06\",madra:\"0S5G\",madre:\"0O1E0Q0R0Z02\",mady:\"1N3S1Q0E\",\"mady \":\"0U021N2J\",madym:\"1N16\",madı:\"1F5G\",\"madı \":\"1F2J\",madım:\"1F1K\",madığ:\"1F2U\",mae:\"0O060T1Q1204\",\"mae \":\"0T32\",maet:\"0Z031208\",maf:\"0302\",\"mag \":\"011G0D020N0V0R110Z031402\",\"mag-\":\"0D0Z\",\"mag-a\":\"0D0V\",\"mag-i\":\"0D0L\",\"maga \":\"0D0L140U1A0B1C221N2C\",magad:\"141L\",magal:\"0D0P\",magam:\"0D02141X1C17\",magan:\"0D141A02\",magar:\"030504410Q03\",magas:\"0D030L0H140Y1C101O03\",magb:\"0D0E\",magba:\"0D0G\",magd:\"0D060Y08\",mage:\"0L0H0M040N030O030P050R020Z0C1006\",magh:\"0D0C1Q1H\",magin:\"0D0N0L0K0M060O0C0P0C0Q0D0T0G150I\",magis:\"0R020T2B1O04\",magk:\"0D0R\",magka:\"0D1A\",magl:\"03020D0B0Q04\",magla:\"03040D0G\",magm:\"0D07\",magna:\"0D040T1H\",magnu:\"0T10\",magp:\"0D0K\",magpa:\"0D0W\",mags:\"0D0T0N05\",magsa:\"0D0Y\",magt:\"0D0G0Z051402\",magta:\"0D0G\",magu:\"04290D08140Q1B02\",magur:\"043I\",magy:\"141N1N3W\",\"magy \":\"1N2M\",magya:\"141Q\",magyn:\"1N1O\",magá:\"142K\",magát:\"141F\",\"mah \":\"0B2M0V0C1Q66\",maha:\"030X0B110D1011091C0I1F04\",mahal:\"03220B0U0D1411021F05\",mahd:\"11161Q06\",mahdo:\"112T\",mahe:\"0308045O\",maher:\"049T\",mahi:\"03240D0S\",mahil:\"034Q0D0L\",mahk:\"0B131F06\",mahku:\"0B1M1F03\",\"mai \":\"0B060L020Q40140E15EE1B26\",maid:\"0S0V11051402\",maidi:\"0S2K\",main:\"0B200D0Q0L4J0M0A110M1B021D0K\",\"main \":\"0B2W0D0Z0L350M071102\",maine:\"0L1N0M02110V\",maint:\"0D020L2B0M02\",maio:\"0P0X0T0S\",maior:\"0P120T0T\",mais:\"0D020L820P8I111H1B0Q\",\"mais \":\"0D030LA50PAK1B0A\",maiso:\"0L3M\",mait:\"0L0A0S5T110G1B041C0E\",maith:\"03030SJZ\",maja:\"03040B0511021C1U1N0O1Q11\",\"maja \":\"1C3S\",majd:\"142E\",\"majd \":\"141Y\",majn:\"1O0R\",mají:\"0U14\",\"mají \":\"0U1J\",majú:\"0Y1Z\",\"majú \":\"0Y2E\",\"mak \":\"0R020V04120414021A031F8H1N5Z\",makai:\"0B0N0D0O\",makak:\"0D0S\",makan:\"0B8X0D03\",make:\"0M1I0R1O0Z031003110912091C0K1F03\",\"make \":\"0M1M1103\",maken:\"0R24\",maki:\"0B0F0D0T0M091F08\",makit:\"0D0H\",makk:\"0R0O1105\",makke:\"0R0W1102\",makl:\"010T0V031F091N0K\",makli:\"010V\",maks:\"0B0E111R1C1K1D181N0E\",maksā:\"1D2T\",makt:\"1002120A1F1E\",makta:\"1F1Q\",maku:\"04390B0A0D0311081A041F021O02\",makun:\"043C\",\"mala \":\"0O0D0P030T0Q0V0X0Y1E110M1O03\",malad:\"0L19\",malak:\"0D1H1O05\",malam:\"0B3C0D0K1O0U\",malap:\"0D0M0Q021O0C\",malb:\"1O0X\",malbo:\"1O1O\",\"male \":\"0L030M040N050Q140R020T0E0V070Z03150C1C1A1O05\",malf:\"1O1Z\",malfa:\"1O1G\",malfe:\"1O19\",malg:\"03020L041O0M\",\"mali \":\"0D0N0Q080T060V0X0Y1O1A031F03\",malii:\"0D0H\",malis:\"0D0J0T07\",\"malo \":\"0O0C0T0D0U0H0V440Y0F1O02\",malp:\"1O15\",mals:\"0M050N0J1B031O1K\",malsa:\"1O25\",\"malt \":\"03020N020Z0810051C1E\",malu:\"0B0C0D080P020T0T0U090V041A021B031C0H1O02\",malv:\"0O021O0M\",maly:\"0Y091N4F\",\"maly \":\"0Y0B1N43\",malyd:\"1N1I\",malı:\"1F2T\",\"malı \":\"1F15\",malıy:\"1F1G\",\"mam \":\"03060P080Q020T1N0V1N14051A3B1D451F1Q\",mamm:\"03020Q090T06100J110312071309\",mamma:\"03030Q080T06100J1206130J\",mamp:\"0B0I\",mamı:\"1F1L\",\"man-\":\"032U0B08\",\"man-n\":\"0342\",manau:\"1B32\",manc:\"03020B070L0C0M020N0J0O040P070Q0P14021F06\",\"mand \":\"012A0L0H0M020N1U0R3F0Z1L\",mande:\"0L2C0M020N0U0P030Q0C0Z0I1007\",mandy:\"1N14\",mandé:\"0L17\",\"mane \":\"0L020N020Q0D0T0T15081A021B7Y1O04\",\"mang \":\"0B0H0D25\",mange:\"0L3P0N050Q040Z31122T\",mangi:\"0D030Q2P\",manh:\"0D020P28\",manhã:\"0P2F\",\"mani \":\"030E0Q1X0T0B110Q1DAO\",mania:\"0O080Q110T0D1103150C1A031B0N\",manim:\"1B1S\",manj:\"0V0I1O26\",manjo:\"1O4A\",\"mann \":\"0N1U1218131D\",manne:\"0M020N040R0G100F110E120N1314\",mano:\"0D060L040O280P0F0Q0S0T081B9G1O0Q\",\"mano \":\"0D020O1Y0P090Q0S0T021BH61O0F\",manos:\"0O100P090T02\",manq:\"0L0N\",\"mans \":\"0L070M040R03100G1D67\",manto:\"1D2F1O08\",\"manu \":\"0T0J1D1W\",manus:\"0B140T0S1B04\",many:\"03030B0J0D020M1A14021B041F081N15\",\"many \":\"0M1R1A021N0V\",manę:\"1B1Z\",manęs:\"1B43\",manĝ:\"1O2G\",manĝa:\"1O1L\",manĝi:\"1O1V\",manī:\"1D0Z\",manı:\"1F2I\",\"manı \":\"1F19\",manın:\"1F1A\",mao:\"0S0N0V0L1O02\",maoi:\"0S0T\",maoin:\"0S3A\",map:\"0D0B0O030P030U0211031A031Q07\",mapa:\"0D0F0O040P0311031Q0B\",marad:\"0L0414321O02\",marah:\"0B1E0D02\",maram:\"0D2C0P04\",march:\"0L1V0M020O0A1A03\",\"mare \":\"0Q110T0X1007153A\",marg:\"0O030P04131U\",marga:\"0O020P021327\",marij:\"0V3F1BA31DBR\",marr:\"0L0A0M0L0O040P040Q051102\",marri:\"0M0O\",maru:\"03020D0B0T02\",marun:\"0D0J\",\"mary'\":\"0M0O0R061F9F\",maryn:\"111M14081A021N2T\",marys:\"0N030Z0S100B1105\",marí:\"0O1C1305\",maría:\"0O1R\",marī:\"0T0P\",\"masa \":\"0B0J0D030O030U02150A1F081P1U\",masal:\"0B2E1F02\",masay:\"03020D0H1F0A\",mase:\"03030Q0311041P2A\",\"mase \":\"0Q021P2O\",mash:\"0429\",masi:\"03050B2E0D030O1B0P03110K1B0B1P1Q1Q0H\",\"masi \":\"0B0F11101B021P21\",masia:\"0O1P0P04\",masih:\"0B3W\",maski:\"0Z0B10051105120L\",masl:\"030211021N0Z\",masla:\"03051N1D\",maso:\"041R0D080U0B1O0V1Q0E\",\"maso \":\"042F0U0F1O1I\",massa:\"03030L040P040Q030R0310051165\",masse:\"0L060N040Z0J1204\",\"mast \":\"030H130J1C26\",masta:\"03060Q03112C1C52\",masu:\"0B160D021F04\",masuk:\"0B2B\",masy:\"0B060D0J1N0V\",masya:\"0B0B0D0W\",masz:\"140A1A1P\",\"masz \":\"1A2H\",ması:\"1F42\",\"ması \":\"1F2B\",masın:\"1F36\",matan:\"0B0R0D0H0O021B03\",matay:\"0D0T\",mateg:\"042Z\",matel:\"1P2J\",maten:\"03080N030R050U031009120A1O1D\",\"mati \":\"03020B270Q060V0D\",matin:\"03090D0J0L1E130U\",matk:\"0B050U0P0Y12111Y1A0M\",matka:\"0B090U0O0Y0P11391A0K\",\"mato \":\"0Q0V11031B0H1O05\",matta:\"03020Q0I1005112P\",matti:\"0Q0S110I\",\"matu \":\"0U031A031C2X1D3C\",matuj:\"0U0V\",matut:\"0D0B1C2Q\",maty:\"1A0D1B1E\",matyt:\"1B1Z\",matė:\"1B0S\",mau:\"0B1C0D020L0O0N030P070Q0B11051B0C\",\"mau \":\"0B260P06\",mauv:\"0L0S\",mauva:\"0L1B\",maw:\"030T0B030D0A1A0Y1Q0I\",mawa:\"03070B050D0F\",\"mawa \":\"0D0H\",mawi:\"03020D031A1D\",mawia:\"1A26\",max:\"0T0N1502\",maxi:\"0T0X14021504\",maxim:\"0L020T0Z14021505\",\"may \":\"03020D4J0M0O\",maya:\"03050B060D0E0L021F5W\",\"maya \":\"0D061F4S\",mayac:\"1F2U\",mayo:\"0D040O0Z\",mayor:\"0O18\",mayr:\"0D0F\",mayro:\"0D0S\",mayı:\"1F3D\",\"mayı \":\"1F3T\",\"maz \":\"14031D0O1F1Q1N12\",maze:\"042H\",\"maze \":\"0447\",mazi:\"031U042O0L030M030Q0B1405\",\"mazi \":\"043V\",maziɣ:\"0344\",maç:\"0P0L1F0A\",maçã:\"0P0K\",maî:\"0L05\",mað:\"131Q\",maðu:\"132S\",maður:\"135U\",mañ:\"0O1C1N1P\",maña:\"0O1Z1N2A\",\"maña \":\"1N34\",mañan:\"0O2K\",maý:\"1N21\",maýa:\"1N2O\",maýan:\"1N1G\",maýar:\"1N27\",mač:\"030S0V0V0Y1B1B0O\",mači:\"1B14\",mačia:\"1B27\",mačk:\"0V0X0Y23\",mačka:\"0V0Q0Y1B\",maĝ:\"1O05\",mağ:\"1F0C\",mał:\"1A17\",maň:\"1N36\",maňa:\"1N4A\",\"maňa \":\"1N5V\",maŝ:\"1O03\",maş:\"15081F071N1D\",maşy:\"1N12\",maşyn:\"1N1G\",maš:\"0V171B0K1D1C\",\"maš \":\"0V11\",maši:\"0V071B0X\",mašin:\"0V0G1B1W\",mašī:\"1D1R\",mašīn:\"1D4H\",mať:\"0Y0Q\",\"mať \":\"0Y19\",maž:\"0U020V081B18\",maža:\"1B0X\",maș:\"151I\",mași:\"152A\",mașin:\"152W\",maɣ:\"034R\",maɣe:\"034X\",maɣef:\"03AK\",\"mb \":\"0M021504\",mbab:\"030204260D03\",mbaba:\"043V0D05\",mbac:\"0B15\",mbaca:\"0B29\",mbah:\"0B0I0D02\",mbal:\"0B1G0L02\",mbali:\"0B2Q\",mban:\"0B1X0D0310021306140Y\",\"mban \":\"1410\",mbang:\"0B1P0D05\",mbant:\"0B22\",mbary:\"1B1J\",mbat:\"0B120L050O030P020Q061407150F\",\"mbat \":\"0B1I0L041402150G\",mbaw:\"0B0G\",mbay:\"041K0B0E\",mbaye:\"042S\",\"mbe \":\"041Z0L0B0Q09140M1F02\",mbei:\"0P020S0X\",mbeid:\"0S32\",mbel:\"0B1E0T0615081F03\",mbeli:\"0B2L\",mben:\"0B051415\",\"mben \":\"1416\",\"mber \":\"0B0F0L0G0M120N040R060T030Z0610021204142I\",mbere:\"04AV0M02141Z\",mberi:\"0B4C140D\",\"mbi \":\"04260Q0A150L\",mbia:\"0B090O0Q0P020Q10\",mbie:\"0L190O050P030Q050R02\",mbien:\"0L240O040P030Q02\",mbil:\"0B171506\",\"mbil \":\"0B1I\",mbié:\"0O14\",mbién:\"0O1G\",mbl:\"0L190M030O0315021B03\",mble:\"0L1O0M04\",\"mble \":\"0L230M02\",\"mbo \":\"043K0P030Q020T081O03\",mbon:\"04221O02\",mbor:\"0P0J0U060Z0210031402\",mbra:\"0L0C0O0I0P0L0Q2E0T081O03\",\"mbra \":\"0O080P0A0Q1H0T06\",mbre:\"0D080L230M040O3D0P030Q0C0T04150I1O05\",\"mbre \":\"0D070L260O3F0Q031505\",mbres:\"0L0F0O0S\",mbro:\"0O0B0P0J0Q061O14\",\"mbro \":\"0O070P0H0Q041O1B\",mbua:\"0B22\",mbuat:\"0B3P\",mbula:\"0L020O020T0U0Z02100211051F02\",mbun:\"03040B0Q1506\",mbut:\"0B11\",mbw:\"043K\",mbwa:\"043O\",\"mbwa \":\"046G\",mbwi:\"046I\",mbwir:\"04AL\",mbé:\"0L0C0P100S0K\",mbéa:\"0S0M\",mbém:\"0P18\",\"mbém \":\"0P1K\",mbă:\"150N\",mci:\"030F0T021F02\",mcm:\"0T03\",mcı:\"1F0G\",\"md \":\"0N020R091004\",mda:\"030M0D040R061F1J1N111O031Q1F\",\"mda \":\"10021F131N0J\",mdam:\"0D08\",mdan:\"030K1F0J1N0X\",\"mdan \":\"030R1F0R1N191O03\",mdat:\"0R0P\",\"mdat \":\"0R0Y\",mde:\"030U0N020R060T020U02100M12031F1C1N14\",\"mde \":\"0R0I100Q14031F0U1N0V\",mdi:\"030G0T05130A1D0G1F271N0L1Q06\",\"mdi \":\"130D1F1W\",\"me'\":\"1Q3K\",\"me'r\":\"1Q6A\",\"me'ri\":\"1QAH\",mea:\"0L020M0G0O030P070S1G0T2W1107154C\",\"mea \":\"0T3F11081563\",meam:\"0T1C\",\"meam \":\"0T1E\",mean:\"0M0J0O02\",meas:\"0M020S0M0T07\",meb:\"03050M030T041A021Q0H\",mecu:\"0T0V\",mecum:\"0T0X\",medd:\"032E0Z021006140F\",mede:\"0R060T0A0Z0H100714051F0Q\",\"mede \":\"0Z0J1F06\",\"medi \":\"0L060T021F321N4M\",media:\"0M0A0O100P0C0Q0A0T0D1104150Y\",medic:\"0M090O0C0P050Q0C0R0A0T110V080Z081007150Y1B041O04\",medim:\"1F1Z1N1Q\",medio:\"0O0U0Q030T0A1O04\",mediğ:\"1F1Z\",medl:\"03030Z051005120B\",medo:\"0O020P0O1O04\",\"medo \":\"0P0T1O03\",medy:\"03070D081A021B021F02\",mee:\"011G0M0C0N050R1M110K1C66\",\"mee \":\"0R191102\",meel:\"0R0411031C5S\",meeld:\"1CBO\",meen:\"010H0R0H110O\",meer:\"01240N0A0R3A1C0Q\",\"meer \":\"01270N0B0R43\",meeri:\"1C1S\",mees:\"0R0S11051C15\",\"mees \":\"1C26\",meest:\"0R111103\",meet:\"0M0N1103\",megb:\"141A\",megcs:\"1412\",mege:\"0Z49120514191B03\",meget:\"0Z541205140B\",megf:\"141B\",megh:\"141T1Q10\",megha:\"1417\",megi:\"141K1N5O\",\"megi \":\"1N3E\",megim:\"1N1I\",megin:\"14131N1O\",megk:\"141Q\",megl:\"0Q14141L\",megli:\"0Q14\",megm:\"141E\",megs:\"141E\",megsz:\"1411\",megt:\"142W\",megta:\"1417\",megte:\"1413\",megv:\"1425\",megy:\"142S\",\"megy \":\"1417\",megye:\"141C\",megé:\"141F\",megér:\"141A\",meh:\"03070N110V07110514071Q6D\",\"meh \":\"0V021QBF\",mehr:\"0N2J\",\"mehr \":\"0N3T\",\"mei \":\"0P050R020T19140415121B04\",meid:\"0N030R02112814021C0Q\",\"meid \":\"1C1S\",meidä:\"115C\",meie:\"150D1C1M\",\"meie \":\"150G1C3L\",meil:\"0L0Z111P15071B0L1C1R\",\"meil \":\"0L0C1C34\",meill:\"0L1D113Y\",mein:\"0N7D0R03110D130J\",\"mein \":\"0N3R1104\",meine:\"0N7I0R02110L\",meir:\"0P1A131A\",meira:\"0P0T131Q\",meiro:\"0P0U\",meis:\"010W0N0K0R0R0T08110R1B02\",meisi:\"010Y1107\",meisj:\"0R10\",meit:\"110Q14021D0Z\",meja:\"0B0Q0O040V07\",meje:\"0V051N15\",mejo:\"0O26\",mejor:\"0O2V\",\"mek \":\"03290U03140C1A0B1F8F1N9D\",mekd:\"1N2D\",mekde:\"1N33\",mekl:\"030E1D0X1F0D1N0O\",meklē:\"1D2F\",mekt:\"030B1F1L\",mekte:\"1F1B\",melak:\"0B5Y\",\"mele \":\"0Q06153J\",melen:\"0R050Z0212091F1B\",melh:\"0P2F\",melho:\"0P2P\",\"meli \":\"0T0211021F0J1N4R\",melid:\"1F041N2M\",melig:\"0Z0F120E\",melih:\"0B5H\",meliy:\"1F1H\",melk:\"01120R0H1116120D1405\",\"melk \":\"01130R0J120B\",melle:\"0L040T020Z0S1104140Z\",mello:\"120W\",melm:\"0321\",melmi:\"034L\",melt:\"03030M020N040R040Z08110A12081407\",melu:\"0B0G0T0311051B0H\",mely:\"03020M04142F\",melyi:\"141J\",\"mem \":\"030N0P1B0T040U200V0H0Y0814081A0Q1F1E1O0O\",mema:\"0B341O03\",memak:\"0B1P\",meman:\"0B1O\",memb:\"0BAE0L060M0K0P050Q040T031403150A1O03\",memba:\"0B6F\",membe:\"0B7M0M0S1403\",membu:\"0B68\",meme:\"03050B1B0L050O020T0814031F15\",memi:\"0B3O0T0F1F18\",memil:\"0B4N\",memin:\"0B270T0G1F03\",memor:\"0D020M050O0A0P050Q060T0C15071O1B\",memp:\"0B261102\",mempe:\"0B37\",memu:\"0B0L0T031A041F02\",\"mena \":\"0Q030U020V2H110G1B0G\",menan:\"0B2U110B\",menc:\"0B2X0L130O050P021A041O0W\",menca:\"0B1O1O09\",mence:\"0B090L181O05\",menco:\"0B1U1O0A\",menda:\"03040B2Q0O050P050T0F1O03\",\"mene \":\"0Q030T020U030V3B111L120D1C2N1F08\",menem:\"0B2A1113\",menen:\"0B0D1131\",mener:\"0B1K0L0E0Z0C1004120J\",meng:\"03030BCT0N0A0R031205\",menga:\"03060B8I\",menge:\"0B6I0N0H0R02\",mengg:\"0B2M\",mengh:\"0B3G\",mengi:\"0B2W\",mengu:\"0B30\",\"meni \":\"0V1F1145154F1B0C1F0O1N3J1O06\",menik:\"0B1C\",menin:\"0B250O020P110R0B0Z0I100N110V120O15071B0B1F0H1O02\",meniñ:\"1N4G\",meniň:\"1N9Z\",menj:\"0B3C0V09141M\",menja:\"0B5H0V0B\",menne:\"03020Z2C111B121Q140S\",menni:\"0303131E141O\",menny:\"110Y142I\",mennä:\"115N\",\"meno \":\"0P020Q110U030V0D0Y1Y1B031O0D\",menos:\"0O1E0P0T110Z\",\"mens \":\"011L0L050N030P0H0R0L0T070Z0F120I1B061P1L\",mensa:\"0D020O0B0P0B0T18100211061O02\",mensc:\"0N3R\",mense:\"011O0L030R2L0T0N\",menti:\"03030L0J0M040N020O0K0P0N0Q280T0Y11071O04\",ments:\"0L1W0M0C0N0214031D1I\",mentu:\"0T0X140315121A031B0C\",menul:\"0B1I1508\",menun:\"0B2U\",menur:\"0B1D\",meny:\"030804970B4Y0U0214041B09\",menya:\"030D04AF0B2O1402\",menye:\"044K0B4G\",menyu:\"0B20\",\"mená \":\"0U0D0Y11\",meo:\"0M0A0P020T0Q0V051O02\",\"meo \":\"0T120V061O03\",meon:\"0M0H\",meone:\"0M0O\",merai:\"0L1T\",merak:\"1F13\",meras:\"0B2A0O030P02\",merc:\"0L0Y0M030O0D0P0C0Q0H0T0K15031O04\",merci:\"0L1E0O040P030Q031O02\",merd:\"010H0B040L050Q021F04\",\"merd \":\"010I\",\"mere \":\"0N020Q050T130Z1S1208150B1O05\",merek:\"0B901409\",merg:\"03020M020O030P040Q020T02153X1B14\",merga:\"03041B1J\",merge:\"0M030O020Q02152S\",\"meri \":\"0T050V381107140D1N7X\",meric:\"0M0E0O080P0F0Q0F0T0S0U070V0D150O\",merin:\"0B0M0D040V0C11021N4Z\",merk:\"03020N0K0R0E0V031111120V130H14051B091F061O03\",merke:\"0N070R041103120O14051F08\",\"mero \":\"0D030O110P0H0Q0B0T0311091O09\",\"mert \":\"030R0N05142F\",meru:\"0B0F0Q040T0J0U020V041F02\",mery:\"1A0L1F021N79\",\"mery \":\"1N83\",meryñ:\"1N16\",mesa:\"0B060D070O0L0P0J15091F0C1O0C\",mese:\"0O0B0P080Q0F0V0I140B15041C291F091N17\",mesed:\"1C1O\",mesel:\"1C341F061N0X\",\"mesi \":\"0Q06110T1F1B1N0J1O04\",mesia:\"0Y14\",mesin:\"0B0K1B041F281N17\",mesm:\"03020P2G\",mesma:\"03040P0Q\",mesmo:\"0P2F\",mess:\"03050L0D0M090N080P050Q230T03110I1206140G\",messo:\"0Q11\",\"mest \":\"03050Z0D1006120E\",meste:\"03020Y0H0Z0A1007120D140B15061C1O\",mesto:\"0V140Y12\",metai:\"1B1X\",meter:\"0B0A0M060N0B0O0A0P070R0B0Z0G10071209\",meth:\"0M1B0N030R03\",methi:\"0M1Q\",mett:\"030A0L1C0N020Q240R02110B12041403\",mette:\"0L0M0N030Q1C0R021106\",mettr:\"0L1H\",metu:\"0T0D1B101O06\",metų:\"1B15\",\"metų \":\"1B2E\",meu:\"0L0G0P590T2N152U\",\"meu \":\"0P57154N\",meum:\"0T27\",\"meum \":\"0T2B\",meus:\"0P190T2W\",\"meus \":\"0P1L0T32\",mev:\"0V031F061Q18\",mew:\"0B030M06\",mex:\"0P04\",mey:\"04171F621QBX\",\"mey \":\"1QFT\",meye:\"043O1F4F\",\"meye \":\"046G1F3H\",meyec:\"1F29\",meyi:\"1F2F\",\"meyi \":\"1F2P\",\"mez \":\"0L0715051F1H1N0X\",meza:\"042K1F021O02\",\"meza \":\"044K1O02\",meze:\"04260R050U0314031O08\",\"meze \":\"043V1O0E\",meä:\"110E\",meæ:\"0T02\",meç:\"0P14\",meça:\"0P0T\",meço:\"0P0L\",með:\"1354\",\"með \":\"137C\",meñ:\"1N1C\",\"meñ \":\"1N19\",meý:\"1N4O\",meýä:\"1N5F\",meýän:\"1N2O\",meýär:\"1N4U\",meč:\"0U020V031B07\",\"među \":\"0V1O\",meğ:\"1F11\",meği:\"1F15\",meň:\"0U060Y0E1N0J\",meş:\"1F0M1N0D\",meš:\"0U030V0M0Y0K1B06\",mež:\"1D1C\",meɣ:\"0323\",mfa:\"040J\",mfi:\"042Q\",mfis:\"047V\",mfise:\"04DC\",mfo:\"0M0312021O02\",mfu:\"0Z021203\",mfö:\"1009\",mga:\"03080D4Q\",\"mga \":\"0D8K\",mge:\"03080N040R021F02\",mgå:\"1004\",\"mh \":\"0S8X\",mha:\"03050S981Q09\",mhad:\"0S0X\",mhadr:\"0S32\",mhai:\"0S7C\",mhair:\"0SC5\",mhait:\"0SE9\",mhan:\"0S0M\",mhar:\"0S1J\",\"mhar \":\"0S2K\",mhc:\"0S0Y\",mhch:\"0S16\",mhcha:\"0S2K\",mhe:\"03020N020S0P0Z0210051204\",mhet:\"1006120B\",mhi:\"0S0Y\",mhn:\"0S0M\",mho:\"1404\",mhr:\"0S0R\",mhu:\"10031F02\",mhá:\"0S1J\",mhái:\"0S11\",mháin:\"0S32\",mhát:\"0S0T\",mháth:\"0S3A\",mhä:\"1003\",mhó:\"0S0I\",\"mi'\":\"0M061F0F1Q0X\",\"mi-\":\"030M0L03152Y\",\"mi-a\":\"1549\",\"mi-a \":\"1530\",\"mia \":\"0O020P090Q3R0T06112T140215041A061O4C\",miaj:\"1O17\",\"miaj \":\"1O1I\",mian:\"0M040S1E11031A0B1O1L\",\"mian \":\"0S5P11031A031O33\",miast:\"11081A1O\",miat:\"141B\",miatt:\"141E\",miau:\"1B11\",miał:\"1A2O\",\"miał \":\"1A1W\",mib:\"14081P0P\",mibo:\"1P0U\",\"mic \":\"0M07152M\",mica:\"0L020O070P060Q0X0T0Q\",\"mica \":\"0O070P070Q0X0T0D\",\"mich \":\"0N7W\",mici:\"0L020O020Q1Q0T161509\",\"mici \":\"0Q100T0M150A\",mico:\"0O050P070Q170T0K\",\"mico \":\"0O040P070Q170T06\",micu:\"0T19150F\",micus:\"0T0V\",\"mid \":\"03030S2A0Z0214021503\",mida:\"0L020O0U0P0M0Q020T051C7U\",\"mida \":\"0O0Z0P0N0Q020T041CBD1O02\",midag:\"1C7V\",midd:\"010Y0M050R160Z0I100H120V\",midda:\"010G0R0J0Z0H100H120N\",midde:\"010K0R120Z041208\",mido:\"0O0I0P090Q041B03\",\"mie \":\"0L0P0N030Q0J0R040Y0R150E1A141B09\",mied:\"0O0M\",miedo:\"0O0S\",mieg:\"1B1P\",miego:\"1B20\",miei:\"0Q0W\",\"miei \":\"0Q0X\",miejs:\"1A1I\",miel:\"0L020O030Q02113W140I1A0B1B0C1O02\",miele:\"0Q02114A\",mieli:\"112D1A0H1B04\",\"miem \":\"0Y0Y1A0Y1D1W\",mien:\"0L080O2L0T060Y0C0Z0211081A181O02\",mieni:\"1A1V\",mient:\"0O2Q\",mier:\"0L0N0N060O050Q030Y0L0Z02150A1A1A1D18\",mies:\"0L060M020Y1D11201A2I1B181D1P\",\"mies \":\"0L0A0M0211411D48\",miest:\"0Y1N110R1B2G\",miesz:\"1A38\",mieu:\"0L13\",mieux:\"0L1V\",\"mig \":\"0D070Z91109T135C1402\",miga:\"0D030O0D0P0D1B031C0R1O05\",\"miga \":\"0O0B0P0A1C1V1O02\",migh:\"0M0W1Q0S\",might:\"0M19\",migi:\"0D061O07\",migl:\"0Q1U\",migli:\"0Q1V\",migo:\"0O2F0P2H1B04\",\"migo \":\"0O200P251B08\",migos:\"0O170P11\",mih:\"03030D040T4H110K1404\",mihi:\"03030D040T89110Z\",\"mihi \":\"03050T8P\",mihin:\"0D03112E\",mii:\"0D05110T150F\",mij:\"0R3R0V0A15061A031B04\",\"mij \":\"0R3Q1A02\",mijn:\"0RA7\",\"mijn \":\"0RD2\",\"mik \":\"03040D0414061F081P2Z\",miki:\"03030B090D021102132S1O0B\",mikil:\"1322\",mikið:\"133K\",miko:\"1103144L1O19\",mikor:\"144V\",miks:\"113A1A021C3P1O04\",\"miks \":\"11041C8P\",miksi:\"0302116R1O03\",miku:\"0B04110414021C0O\",mikä:\"112Q\",\"mikä \":\"115F\",\"mile \":\"0M060Q040T040U0615071A031C451F02\",\"mili \":\"0D0R0Q02\",milia:\"0L020M040O0X0P030Q040T1G0U02150Q1O07\",milie:\"010G0L0C0M020N0Q0R0U0Z0M120K150I\",milik:\"0B59\",milj:\"0R070V070Z02100N110B\",milla:\"0O07116L1C29\",millo:\"0O09112S1Q3J\",milo:\"0D020U0P0Y191O08\",milov:\"0U0V0Y18\",milt:\"03030Z02110L1209\",milu:\"0U0Y0Y1V\",miluj:\"0U1C0Y2B\",milya:\"0D0G1F02\",milye:\"143B\",\"mim \":\"03070P1P0V04140215051F02\",minak:\"140Z\",minar:\"0O0V0P0H0Q090T04\",minc:\"0L020Q0U0U03140G150C\",minci:\"0Q0T150F\",\"mind \":\"0M0M140S1C8G\",minde:\"0M020N0A0R0H0Z0A1003149W1F07\",mindi:\"14431F02\",mindr:\"0Z0B1007120C\",minds:\"0M020Z0E\",minem:\"0T0L1C2X\",minen:\"0L021165\",mines:\"0L020Q020T1B\",\"ming \":\"010N0D3C0M180R0H\",minga:\"1B26\",mingg:\"0B1W\",minh:\"0P52\",minha:\"0P5T\",\"mini \":\"0Q0B0T1L1C101F0E\",\"minn \":\"137P\",minna:\"030310031104130T1C48\",minni:\"132C\",\"mint \":\"0305146L\",minta:\"0B2B0D0411091B07\",minti:\"0O06150A1B1K\",\"minu \":\"130B1A051B031CCF\",minua:\"118V\",minug:\"1C1V\",minul:\"0U0U0Y1611HQ\",minum:\"0B2E0T0R130N\",minun:\"11ED150R\",minus:\"0T2L0Z02113D1B041C1V\",minä:\"11B9\",\"minä \":\"11MG\",\"mio \":\"0O040P030Q440T0A0V0B11041B021O0E\",mip:\"0D0211021Q0U\",miq:\"0L041Q03\",\"mir \":\"030K0L0F0N5M0O0J0P0H130F1F091Q0K\",mire:\"03110L040M020O030Q0E0T080V061417\",\"mire \":\"0L030Q0D0T081417\",miro:\"043Y0L030O020T051508\",miron:\"046Y\",mirs:\"1B041D1C\",mirš:\"1B1Q\",\"mise \":\"0L0L0M080Q0A0S3S1C3O\",misek:\"110D1C29\",misel:\"110N1C4P\",misen:\"0303112D\",miser:\"0L020M020O030Q030T11\",mises:\"0L04112X\",mish:\"043R\",misha:\"044E\",misin:\"0D041F3P\",misl:\"0R030V441206\",misli:\"0V9D\",mism:\"0D020O1S0T021O02\",mismo:\"0D040O1S\",missc:\"0R12\",misst:\"0N07100H130O\",missä:\"115B\",\"mist \":\"03050N030R0E0Z0215051C3S\",mista:\"0D020M0H0O0A0P040Q040U02115S1403\",mistä:\"1153\",miten:\"0O02116F\",mitt:\"0M0C0N110T181025110J121L131H1C1P\",\"mitt \":\"1021121J1334\",mitte:\"0M0G0N0Y0T0M0Z0211041C45\",mitu:\"0T0811081C0L\",mitä:\"119U\",\"mitä \":\"11GH\",mitää:\"1169\",miu:\"0P040T0A140315021B03\",miv:\"0T051102140E1Q0D\",miw:\"03021Q0M\",miy:\"0D041F6I1Q0U\",miyi:\"1F0Z\",miyo:\"1F68\",miyor:\"1F8E\",miz:\"03020P050U051F3J1N2A1O06\",\"miz \":\"1F241N1L\",mizi:\"1F0Y1N0Y\",\"mizi \":\"1F101N17\",miä:\"110C\",miè:\"0L0I\",mièr:\"0L0V\",mière:\"0L1G\",mié:\"141Y\",miér:\"144U\",miért:\"1454\",mið:\"131F\",\"mið \":\"1317\",miñ:\"1N0I\",mió:\"0O091405\",mię:\"1A1E\",miĝ:\"1O0K\",miň:\"0U051N0N\",\"miň \":\"0U041N0X\",miş:\"1F1S1N0Y\",\"miş \":\"1F14\",mişe:\"1N19\",\"mişe \":\"1N1E\",miš:\"0V0N1B0D\",mišlj:\"0V1S\",mj:\"1005130Y14021D041Q02\",mja:\"1403\",mjö:\"100C131W\",mjög:\"132X\",\"mjög \":\"1364\",mjöl:\"100G\",mjölk:\"100F\",\"mk \":\"1B06\",mka:\"030F0B081A021F05\",mkan:\"03070B0G1F05\",mki:\"1B021F051N0N\",mkin:\"1F031N0X\",mko:\"0U0213041402\",mkr:\"0Z051003\",mkri:\"0Z0D1004\",mkrin:\"0Z0F1004\",mkü:\"1F0A\",\"mla \":\"100K1F0B\",mlad:\"0U0Y0V0D0Y1G10041F03\",mlar:\"10021F0J1N1Z\",\"mlar \":\"10021F081N16\",mlary:\"1N17\",\"mle \":\"0Z0I1002120J1F1I\",mleg:\"132H1402\",mlega:\"134P\",mli:\"03190N070Y0M0Z02100F120314021F0Y1Q07\",mlie:\"0Y10\",mliek:\"0Y19\",mlig:\"100G\",mlj:\"0V10\",mlu:\"0U2Q1F0A1Q07\",mluv:\"0U4F\",mluvi:\"0U37\",mluví:\"0U2G\",mlx:\"0T02\",mly:\"1N0K\",mlé:\"0U0A140I\",mlék:\"0U0F1418\",mmal:\"03020Q06100S110G1417\",\"mmal \":\"0302100P1419\",mman:\"03040L0D0M02100T110H\",mmans:\"100F\",mmar:\"030B100Y\",\"mmar \":\"0309100L\",mmed:\"03040M070Q080Z0F1208\",mmel:\"03170N0I0R050Z1K10051102121U140P1F0A\",\"mmel \":\"032F0N0G0R030Z101002120X140Q1F0C\",mmeli:\"0Z0E120B\",mmen:\"03070L4I0M050N410Q0L0R0V0T080Z1I100H11241221\",\"mmen \":\"030A0N610R130Z1D100B1104121H\",mmenc:\"0L1U\",mmene:\"0L040N02112L1206\",mment:\"0L5B0M030N040Q090R020T050Z031003112E\",\"mmer \":\"0116031A0L030M0F0N5T0R0M0Z3U105K1246\",mmerd:\"010I0L02\",mmere:\"0N020Z0E120G\",mmes:\"03080L2U0N020Q080Z0611021N0X\",\"mmes \":\"03020L4O0N030Z02\",mmesi:\"0Z031N19\",mmet:\"03040L060Q090Z0U100O121N\",\"mmet \":\"03090L060Z0V100O121L\",\"mmi \":\"030A0Q0F0T0310021111141V\",mmik:\"110614021C15\",mmiku:\"11041C1O\",mmin:\"0M070Q0G0R06112N1403\",\"mmin \":\"115Z\",mmit:\"0M040T03100B1107141V\",\"mmit \":\"0M02100A141X\",mml:\"031Q\",mmle:\"031U\",mmo:\"0L030M040Q0T0T0N100A11061Q0N\",\"mmo \":\"0Q160T061102\",mms:\"0N061002\",mmt:\"03060N0T130P\",\"mmt \":\"0N1U1309\",mmun:\"0L0D0M060N060R040T090Z0410031104120B1406\",mmä:\"112K1N0H\",mmän:\"1119\",\"mmän \":\"1133\",mmär:\"111X\",mmärr:\"112K\",mmé:\"0L08\",\"mn \":\"100N150D\",\"mna \":\"0T030V05100L15061A06\",mnad:\"100E\",mnak:\"142H\",\"mnak \":\"142N\",\"mne \":\"0L040T0Y0U0O0Y0W0Z02100315041A041C0I\",mnes:\"0T2J\",\"mnes \":\"0T2O\",mnia:\"0T2A1A0I\",\"mnia \":\"0T28\",mnib:\"0T0Y\",mnibu:\"0T10\",mnie:\"1A5S\",\"mnie \":\"1A7V\",mno:\"0O050T090U1D0V2U0Y1415021A0F\",mnog:\"0V2U\",mnogo:\"0V63\",mnoh:\"0U160Y0N\",mnoho:\"0U100Y0L\",mnou:\"0U0T0Y0W\",\"mnou \":\"0U130Y14\",mnu:\"0T06150B1F0F\",mny:\"0B0F1A07\",mnya:\"0B0T\",\"mnya \":\"0B1M\",mnē:\"0T03\",mně:\"0U0W\",mněl:\"0U0T\",\"mněl \":\"0U0Y\",\"mo'\":\"1Q4X\",\"mo' \":\"1Q8X\",\"mo-\":\"0P04\",moa:\"11031511\",\"mob \":\"1P261Q0B\",\"moc \":\"0U2Q0Y111A0D\",moch:\"0N030O020R041A1N\",mochó:\"1A1I\",\"moci \":\"0Q050U0X\",mocn:\"0U100Y0T1A09\",\"moct \":\"0U0T\",\"mod \":\"0Z0X10031403150M1Q07\",modo:\"0O0B0P080Q0O0T1U1406\",\"modo \":\"0O0C0P090Q0M0T1X\",moe:\"01420P040R2V0T02\",moed:\"0P040R1P\",moede:\"0R1W\",moei:\"010P0R14\",moeil:\"010G0R15\",moen:\"011I0T02\",moeni:\"011G\",moes:\"010S0R0R\",\"moes \":\"010T\",moest:\"0R10\",moet:\"01620R6Z\",\"moet \":\"016D0R5Y\",moete:\"0R3K\",mof:\"1P0E\",moga:\"0B060V1E14081B08\",mogao:\"0V3F\",moge:\"0R0Y0T07\",mogel:\"0R0W\",mogu:\"0V3D1B18\",\"mogu \":\"0V6W\",mogus:\"1B2D\",moguć:\"0V1O\",mogę:\"1A2C\",\"mogę \":\"1A3Q\",moh:\"0B030O020U320Y271Q9W\",\"moh \":\"1Q86\",mohl:\"0U3B0Y1T1Q27\",\"mohl \":\"0U37\",mohli:\"0U0J0Y111Q0G\",moho:\"0B070U0A0Y21\",mohol:\"0Y2J\",mohu:\"0U1I\",\"mohu \":\"0U23\",mohwi:\"1Q5M\",moi:\"0L460O030P03110H1A0W1P0H\",\"moi \":\"0L4Y11051A061P0M\",moin:\"0L131108\",moins:\"0L1G\",moj:\"0O020U1Q0V4L0Y3N11031A2L1B0F1O1T1Q0P\",\"moj \":\"0V2N1O1Y1Q0S\",moja:\"0O030V0Z0Y2I11051A141B02\",\"moja \":\"0V2H0Y34110B1A1S\",moje:\"0U250V0V0Y261A281B0B\",\"moje \":\"0U300V280Y271A1P1B0O\",mojn:\"1O0W\",\"mojn \":\"1O1T\",\"mok \":\"140E1N4M\",moka:\"110214051B1H\",\"moka \":\"1B1I\",moky:\"1B38\",mokyk:\"1B33\",mokyt:\"1B3D\",mokė:\"1B0V\",\"mol \":\"0Y091P0V1Q08\",moli:\"0O020T030V19\",molim:\"0V2Q\",molt:\"0Q6R1405\",molti:\"0Q0S\",molto:\"0Q5E\",\"mom \":\"0M050V0S0Y1H14051P23\",mond:\"0L240M0F0N060Q0O0R0A14AY15071O0W\",monda:\"0M0J143P1O06\",mondd:\"1410\",monde:\"0L3E1O03\",mondj:\"141O\",mondo:\"0Q0M141Q1O1F\",mondt:\"143J\",money:\"0M1G\",\"mong \":\"0B0B0D1R0M051Q0I\",\"moni \":\"0Q02110P1P1R\",monių:\"1B1P\",monta:\"0L0L0N0B0O0K0P0C0Q08112M1O05\",month:\"0M0L\",montr:\"0L1F1O10\",monė:\"1B1M\",monės:\"1B2C\",moo:\"010O0M040R0F11081C0F\",mooi:\"010S0R15\",\"mooi \":\"010S0R0T\",moon:\"010H0M04\",moont:\"010I\",mop:\"0V03\",moq:\"03020L031Q04\",\"mora \":\"0P0N0T020V1O1O02\",moram:\"0P080V2Z\",moraš:\"0V1L\",\"more \":\"0M370Q0U0T0F0V0B\",moren:\"0D020Q030Z02120F\",morg:\"0N180R1Q0Z23101I121I131P1O0O\",morga:\"1O1C\",morge:\"0N210R2C0Z2J121H\",morgo:\"101I\",morgu:\"1333\",morn:\"0M0I0V051004\",morni:\"0M0O\",morr:\"0M0S0P10\",morre:\"0P15\",morro:\"0M12\",mors:\"0Q040R020T090Z051007120D1A02\",mort:\"0L150O030P0W0Q0W0T2L1O1J\",\"mort \":\"0L1C\",morti:\"0Q030T051O1X\",mortu:\"0T1N1O02\",\"mos \":\"0OB30PAV0T0I140H150Q1B0Q1O05\",mosc:\"0O030P030Q0R0T031503\",mosch:\"0Q0Q\",mosh:\"041R\",moshi:\"0435\",\"most \":\"0M1D0U07145I1A05\",mostr:\"0O0H0P0Q0Q0L\",\"mot \":\"0D060L0J101B121E141P15031P0Y\",mote:\"0L030M021B0X\",moter:\"1B1W\",moth:\"0M0M\",mothe:\"0M0U\",motin:\"1B1U\",mots:\"0L0H10071209\",\"mou \":\"0P0I0U08\",mour:\"0L1C\",mov:\"0M0I0O080P0A0T090U3E0V0Q0Y3M1O06\",\"mov \":\"0U020V080Y2C\",move:\"0M0J0O050P050T0F0V030Y0B\",movi:\"0M0F0O070P060Q020T020U400V060Y2L1O04\",\"movi \":\"0U5J0Y371O02\",mow:\"1A1F\",\"mowi \":\"1A1E\",mox:\"0T08\",moy:\"0D020L080T0G\",moys:\"0T0V\",moyse:\"0T0T\",moç:\"0P0F\",moć:\"0V0U\",moż:\"1A3L\",może:\"1A42\",\"może \":\"1A3H\",możes:\"1A23\",mož:\"0U0W0V3Z0Y12\",možda:\"0V1T\",može:\"0V44\",\"može \":\"0V41\",možeš:\"0V4D\",možn:\"0U1E0Y1Q\",možno:\"0U0D0Y1I\",možná:\"0U10\",mpaa:\"1112\",mpai:\"0B1J0P0211041B04\",\"mpai \":\"0B2P1B08\",mpani:\"0M030T020V0A110B151M1B051O08\",mpara:\"0D050L020O080P040Q1G0T0515061F021O05\",mpas:\"0D060L020O0311051B031O031Q0B\",\"mpat \":\"0B2U\",mpañ:\"0O0L\",mpeg:\"0Q0P\",mpel:\"0B0C0N040R060T020Z0910081102120C\",mpen:\"0L030O030P050R040Z0512091O02\",\"mper \":\"0L080M020O030R020T1S0V090Z061205\",mpez:\"0O0R\",mpf:\"0N0A\",mph:\"0T02\",\"mpi \":\"0B070Q06112A1B021O03\",mpir:\"0B0P0L030O020V03\",\"mpir \":\"0B1D\",\"mpo \":\"0D030O2W0P2X0Q1Y1O16\",mpp:\"110C\",mpra:\"0O1V0P1A0Q1Y\",mprar:\"0O140P150Q0V\",mprat:\"0Q0X\",mpre:\"0L1K0M070O2Z0P3L0Q2U0T050V04150Z1A0A1O1C\",\"mpre \":\"0D020L030O2W0P2C0Q28\",mpren:\"0L200O0E0Q071O2D\",mpres:\"0L0K0M080O0M0P100Q0A0V0B150E1O0B\",mpro:\"0L030M050O080P0L0Q0A0T08\",mps:\"0L2C0T07\",\"mps \":\"0L3W0M02\",mpt:\"0L0K0M050T0A1B02\",mpte:\"0L0R0M02\",\"mpu \":\"0B0F0L03\",mpua:\"0B10\",mpuan:\"0B20\",mpul:\"0B0B0O020T04151O\",\"mpul \":\"0B081520\",mpun:\"0B0T0D071103\",mpus:\"0T0Y1504\",\"mpus \":\"0T10\",mpute:\"0B0K0M0C0N0B0Q0M0R0I0Z0O1A0Q\",mpy:\"0D021103\",mpá:\"0O020P021404\",mpä:\"110R\",mpé:\"0L0A\",mpê:\"0L07\",mpý:\"1N0B\",mpă:\"151L\",mpăr:\"152D\",mpăra:\"151V\",mq:\"0T0X1Q07\",mqu:\"0T261Q0C\",mqua:\"0T13\",mquam:\"0T16\",mque:\"0T2Z\",\"mque \":\"0T35\",\"mr \":\"0M03\",mra:\"03130S0K0U050V071004140F\",\"mra \":\"03090S0O1413\",mre:\"034F0V070Y090Z041003120514091F02\",mri:\"030F0Y081F02\",mrt:\"0U0M0V0D\",mrå:\"0Z0210041203\",mråd:\"0Z0610051209\",msa:\"030Z0S0T1F02\",\"msa \":\"03030S0Z\",mse:\"030S0M0L0Z021C0F1F1V\",\"mse \":\"0Z021F11\",msel:\"0M141F02\",mself:\"0M14\",msi:\"030K13031B061F0C\",msk:\"0V081006130B\",mso:\"14031B02\",\"mst \":\"0N0C0R0C0Z0610021318\",mste:\"0N050R060Z0G1002120E\",mster:\"0R030Z0J1206\",msu:\"031Y10021B031F02\",msujj:\"0338\",msy:\"1N0F\",msz:\"140D\",\"mt \":\"03AZ0N0W0R0J0Z0L1013120N130I150G1B0S\",\"mt-\":\"031M\",\"mta \":\"0302100E14021B08\",mte:\"030A0N070R020Z0B1004120F140215031A061O03\",\"mte \":\"0N090R060Z0P12101505\",mti:\"030K0V040Z0310091206130A1B0H1D0G\",mtid:\"0Z081008120D\",mto:\"0U0B0Y0H1B06\",mtr:\"1202\",mts:\"1D0R\",\"mts \":\"1D0Z\",\"mu'\":\"1Q2B\",mua:\"0B1P11051F03\",\"mua \":\"0B2K1107\",muan:\"0B0L\",mub:\"04271Q07\",muba:\"042H\",muc:\"0307040D0M0U0O3C0Q021A021Q0O\",much:\"0M1J0O541A031Q19\",\"much \":\"0M231Q11\",mucha:\"0O201A02\",mucho:\"0O4O\",muda:\"03020B150O030P0M\",mudi:\"0B0J\",mudu:\"047S1F041Q07\",mudug:\"04CH\",mue:\"0L020O100T02\",muer:\"0O170T02\",muert:\"0O13\",muf:\"040D\",muga:\"043Y1N0Y\",mugab:\"043C\",mugal:\"1N1B\",muge:\"03020439\",mugen:\"0459\",mugo:\"0432\",mugor:\"0447\",muh:\"0306043L0D041F121Q07\",muhi:\"045Y\",muhir:\"048K\",muht:\"1F13\",muhte:\"1F1G\",muhu:\"0426\",muhun:\"043O\",\"mui \":\"0B040T021B2S\",muid:\"0S161105\",\"muid \":\"0S49\",muis:\"0R04111J\",muist:\"113J\",muit:\"0P8E0T021109\",muita:\"0P1O110L\",muito:\"0P91\",muj:\"0O0S0U021A0C1Q0S\",muje:\"0O180U021A0A\",mujer:\"0O1M\",muk:\"0302042X0B0R0D0F0V030Z0G111F\",\"muk \":\"0B050Z0M\",muka:\"04190B19111Z\",mukaa:\"112B\",mukan:\"03020B23110T\",mukh:\"0D0O\",mukha:\"0D18\",mukk:\"0Z0H\",mukke:\"0Z0K\",muko:\"042O0D02\",muku:\"042O\",\"mul \":\"0T091102130F152I1C5W\",\"mula \":\"0D1X\",mulai:\"0B2U0L03\",mule:\"0L040Z0912041Q08\",mulh:\"0P11\",mulhe:\"0P1B\",muli:\"03020D050T0T0Z0M120Z\",mulie:\"0N020R020T0T\",mulig:\"0Z0R120Z\",mull:\"0307110I1C5E\",mulle:\"110A1CCF\",\"mult \":\"1402155P\",multa:\"0O020P020T1L14021O2Y\",multe:\"152W1O2V\",multi:\"0L050M030O070P060T1C1O02\",multo:\"0T1115061O0N\",mulț:\"152U\",mulți:\"151Y\",mulțu:\"151R\",\"mum \":\"03020B0B0L020M020P070T4V130D1F02\",mums:\"1B281D49\",\"mums \":\"1B4L1DAH\",mumu:\"0D061Q0D\",\"mun \":\"03020B0B0L0310031111132F1F07\",muna:\"041O0D060L02110I13071O04\",munan:\"042S0D0211041O03\",munc:\"0B05151S\",munda:\"0T041F031L151N16\",mundi:\"0O070P070T09132E\",mundo:\"0D0K0M050O1W0P1S0T06\",mung:\"04110B1X0D020N051Q0G\",mungk:\"0B3P\",munk:\"1102142Y\",munka:\"1414\",munká:\"141X\",muns:\"049P\",munsi:\"04G3\",munt:\"030204AM0D0M0R040T040Z021002130F1509\",munta:\"0D12\",muntu:\"04HG\",muny:\"042Z1N51\",\"muny \":\"1N6U\",muo:\"0Q06110B1B0W\",muos:\"1B10\",muose:\"1B22\",mup:\"0D0411031Q07\",\"mur \":\"030E0B0F0L070T120Z04132E15041A021F0K\",\"mura \":\"03090D070S32\",murak:\"0435\",muras:\"030A0441\",mure:\"041K0R020T040Z081104\",\"muri \":\"04DH150F\",mury:\"0429\",murya:\"043O\",musa:\"042D0D040L050T06\",musaz:\"0435\",musel:\"0U1H0Y0M\",mush:\"045V1Q2Y\",musha:\"04591Q52\",mushi:\"0447\",musik:\"0B0Y0D080N0M0Z0G100F120I\",musim:\"0B1H1A11\",musis:\"1A1G\",muss:\"03040N2M\",\"muss \":\"0N30\",must:\"03030D040M0S111214021C1J\",\"must \":\"03070M0Y1C17\",musu:\"0B030D020L030O020Q021F2P\",musun:\"1F3O\",musz:\"140F1A1D\",muszę:\"1A1T\",musí:\"0U4N0Y5E\",\"musí \":\"0U1L0Y0Z\",musím:\"0U2X0Y38\",musít:\"0U0I0Y18\",musíš:\"0U1O0Y1K\",mutan:\"0D0J0T06\",mutat:\"0T0811021414150H\",muti:\"042D0N03\",mutim:\"043C\",mutl:\"0N021F1A1Q0T\",mutlu:\"1F1N\",muto:\"041O0U021P4Y\",mutob:\"1P2V\",mutol:\"1P1D\",mutom:\"1P15\",muts:\"041R10041F07\",mutt:\"0N0Y113V\",mutta:\"118O\",mutte:\"0N1K110B\",muu:\"0D020R02112E1C15\",muus:\"11091C0O\",muut:\"1131\",muuta:\"113I\",muutt:\"112C\",muv:\"040O1Q0D\",muw:\"0D02\",muy:\"0303040C0O2U1F171Q04\",\"muy \":\"0O4C\",muyo:\"1F0Z\",muyor:\"1F1C\",muz:\"0302041O0R060U040V0F150N1A0G1B0G1F0Q1O0H\",muzi:\"04320R0N0U020V0F150U1B0Q1O0H\",\"muzi \":\"042S\",muzie:\"0R0T1B09\",muñ:\"0O031N0J\",muň:\"1N3Q\",\"muň \":\"1N57\",muş:\"1F0S1N0M\",muš:\"0V0B1B07\",muž:\"0U0L0V050Y0S\",mva:\"041A1Q18\",\"mva \":\"043R\",mve:\"10021Q0C\",mvi:\"042Q1202\",mvir:\"046P\",mvira:\"0453\",mviri:\"044X\",mvo:\"040D\",mvu:\"040Z\",mvug:\"0422\",mvuga:\"042Z\",mvy:\"040T\",mvye:\"041K\",\"mvye \":\"042S\",mw:\"044W1Q07\",\"mw'\":\"041Q\",\"mw'i\":\"0457\",\"mw'is\":\"0435\",mwa:\"0303045W1A02\",mwak:\"0422\",mwaka:\"043O\",mwan:\"030204BD\",mwana:\"0491\",mwany:\"049Z\",mwe:\"047W0N02\",\"mwe \":\"04IF\",mwen:\"0426\",mwene:\"042Z\",mwi:\"042A1Q0P\",mwig:\"041R\",mwiz:\"042O\",mwiza:\"044E\",mwo:\"041L\",\"mwo \":\"0449\",mwu:\"040L\",mya:\"030K042V1F02\",myak:\"047M\",myaka:\"04CX\",myb:\"1B0C\",myc:\"102R1A03\",myck:\"103Q\",mycke:\"103Q\",myd:\"0Y061N0G\",mye:\"0302041R1216\",\"mye \":\"0450122Y\",myg:\"10021B02\",myi:\"040G1107\",myk:\"110C12021A031N0D\",myl:\"0U050Y041A071B16\",myli:\"1A081B1C\",mym:\"1A051N0A\",myn:\"1003131L1B0C1N0J\",mynd:\"1002132K\",myndi:\"1329\",myr:\"11071309\",mys:\"0L020M080U380Y4J100211091A0F\",myse:\"0M0D0Y0E\",mysl:\"0U570Y7A\",mysle:\"0U1Q0Y28\",myslí:\"0U4P0Y6M\",myt:\"1N0W\",\"myt \":\"1N19\",myy:\"110G\",myz:\"1N1H\",myñ:\"1N1E\",\"myñ \":\"1N1Y\",myö:\"111M\",myöh:\"111H\",myöhä:\"112R\",myös:\"1112\",\"myös \":\"112A\",myň:\"1N1P\",\"myň \":\"1N29\",myś:\"1A28\",myśl:\"1A37\",myśli:\"1A1F\",myślę:\"1A1N\",mz:\"030614031F021N06\",má:\"0O230P090S2P0U5H0Y6M131Z145K\",\"má \":\"0O070P030U3Z0Y4J130W\",mác:\"0U060Y0D1403\",mái:\"0S2I1402\",máin:\"0S0V\",máint:\"0S2K\",máir:\"0S1J\",máire:\"0S65\",máis:\"0S0O\",\"máis \":\"0S2T\",mál:\"0U0L0Y09132M1406\",\"mál \":\"0U04131D\",máli:\"0U02131H1407\",mám:\"0U4B0Y4T1403\",\"mám \":\"0U5J0Y6O1406\",máme:\"0U180Y1N\",\"máme \":\"0U1Q0Y21\",mán:\"0O090U060Y07130G140N\",mány:\"0U021415\",máq:\"0O040P05\",már:\"0P030S0P0Y49144Q\",\"már \":\"1498\",mára:\"0S0V140J\",márac:\"0S3J\",mári:\"0P030Y70141W\",mária:\"0Y5T141H\",márii:\"0Y1U\",más:\"0O5T0P0A0S4E0U02143O\",\"más \":\"0O8Q0P0A0S5C1440\",másik:\"1410\",máso:\"1419\",mást:\"1417\",\"mást \":\"1416\",mát:\"0O0B0P0B0U0O0Y17130E140E\",máte:\"0U0Y0Y21\",\"máte \":\"0U1C0Y2J\",máx:\"0P03\",máš:\"0U1F0Y1Z\",\"máš \":\"0U2B0Y3A\",mâ:\"151C\",mâi:\"151E\",mâin:\"1524\",mâine:\"1525\",mân:\"0P021540\",mânc:\"151X\",mânca:\"1526\",mã:\"0P0P\",\"mã \":\"0P0G\",mãe:\"0P0Y\",\"mãe \":\"0P14\",mão:\"0P1L\",\"mão \":\"0P1E\",mãos:\"0P0J\",mãs:\"0P03\",mä:\"0N0D0Y0K100Q113S1C0V1N2N\",\"mä \":\"115D\",mäd:\"0N080Y09\",mäe:\"1C0B\",mäg:\"1N2N\",mäge:\"1N3M\",\"mäge \":\"1N4X\",mäi:\"110L\",mäk:\"1108\",mäl:\"1005110J1C0I\",mäle:\"1C0L\",mälet:\"1C1H\",män:\"0N051018112S1C1F1N1R\",\"män \":\"100B1142\",mänd:\"1N0V\",mändi:\"1N17\",mäne:\"1N0V\",\"mäne \":\"1N17\",mäng:\"10021C1R\",mängi:\"1C3B\",männ:\"0N0B10131104\",männi:\"1010\",mäp:\"1108\",mär:\"100I11161C0M\",märk:\"100K11031C0H\",märr:\"1111\",märrä:\"112A\",mäs:\"0Y0C1003110Y\",mät:\"0Y0N1004110T\",mää:\"112F\",mään:\"112Z\",\"mään \":\"116X\",må:\"0Z16101W121W\",\"må \":\"0Z0O1008121N\",måd:\"0Z07\",måde:\"0Z0I\",\"måde \":\"0Z0I\",mål:\"0Z0G100J120L\",\"mål \":\"0Z0U100C120S\",måle:\"0Z0A1002120N\",målet:\"0Z091002120J\",mån:\"0Z0A101W1208\",måna:\"100H\",månad:\"100G\",måne:\"0Z0Q1004120L\",måned:\"0Z0N120I\",mång:\"101R\",många:\"101Q\",mår:\"1008\",mås:\"0Z05102G\",måsk:\"0Z0C\",måske:\"0Z0F\",måst:\"103A\",måste:\"1039\",måt:\"0Z031003120L\",måte:\"120T\",\"måte \":\"120F\",mått:\"0Z091002120O\",måtte:\"0Z0B120O\",mæ:\"0T020Z0F130B\",\"mæ \":\"0T03\",mæl:\"0Z07130B\",mælk:\"0Z0J\",\"mælk \":\"0Z0K\",mæn:\"0Z07\",mænd:\"0Z0G\",\"mænd \":\"0Z0H\",mær:\"0Z07\",mærk:\"0Z0I\",mærke:\"0Z0J\",mç:\"1N0K\",mçe:\"1N0Y\",\"mçe \":\"1N1E\",mè:\"0L08\",mèn:\"0L07\",mèr:\"0L0Q\",mère:\"0L17\",\"mère \":\"0L1Z\",mèt:\"0L05\",mé:\"0L0M0O080P080S5Y0U0S0Y0513251444\",\"mé \":\"0L0L0O050SG80U0K\",méc:\"0L04\",méd:\"0L0O0O0B0P0N1402\",médi:\"0L0N0O0G0P0S1404\",mée:\"0L0C\",még:\"143P\",\"még \":\"148H\",mél:\"0L071411\",mély:\"141D\",mém:\"0L050U07\",mén:\"0L060U0K1418\",\"méno \":\"0U0R\",mény:\"1430\",ménye:\"141N\",mér:\"0L0K0O050P06134S140J\",\"mér \":\"137O\",méri:\"0L0P0O070P06\",més:\"0L04140G\",mész:\"1414\",mét:\"0L090O030P03140H\",mê:\"0L0B0P03\",mêm:\"0L1I\",même:\"0L2K\",\"même \":\"0L40\",mês:\"0P0A\",mí:\"0O0H0P050S0I0U270Y05131C140H\",\"mí \":\"0O0Z0U0X\",mía:\"0O0A\",míg:\"140D\",míl:\"0P0G\",míli:\"0P0K\",mília:\"0P0P\",mím:\"0U0J\",\"mím \":\"0U0S\",mín:\"0O020P040U0J0Y07132U\",\"mín \":\"131J\",mínu:\"13191402\",mío:\"0O08\",mír:\"0U0C\",mís:\"0U0R\",míst:\"0U17\",mít:\"0O020U10140H\",\"mít \":\"0U0Y1409\",\"mò \":\"0Q04\",mó:\"0O070P020S0R130G140A1A2T\",\"mó \":\"0O0G0S0K1402\",móg:\"1A0Z\",mógł:\"1A1F\",mój:\"1A1H\",\"mój \":\"1A24\",món:\"0O03\",mór:\"0P030S1L1A03\",\"mór \":\"0S1C\",mót:\"130J\",móv:\"0O040P04\",mów:\"1A2Y\",mówi:\"1A3R\",\"mówi \":\"1A1X\",móð:\"130H\",mô:\"01040Y36\",môc:\"0Y0Y\",môcť:\"0Y1M\",\"môcť \":\"0Y20\",môj:\"0Y24\",\"môj \":\"0Y38\",môr:\"0107\",môre:\"010F\",\"môre \":\"010G\",môž:\"0Y56\",môže:\"0Y86\",\"môže \":\"0Y2F\",môžem:\"0Y54\",môžet:\"0Y1A\",môžeš:\"0Y1X\",mõ:\"1C0Y\",mõi:\"1C0W\",mõis:\"1C0V\",mõist:\"1C26\",mõl:\"1C0B\",mõn:\"1C0R\",mõne:\"1C0L\",mõt:\"1C10\",mõtl:\"1C0Q\",mõtle:\"1C1S\",mö:\"0N0O100H1102130F14081C031N041P34\",möc:\"0N0M\",möch:\"0N1I\",möcht:\"0N2I\",möd:\"1P2Y\",mödi:\"1P33\",mödik:\"1P3L\",mög:\"0N0F1002130B1406\",möj:\"100D\",möjl:\"100H\",möjli:\"100H\",mön:\"13051P2J\",\"mön \":\"1P36\",mör:\"100I130G\",möt:\"100C\",möö:\"1C0B\",mø:\"0Z0G120J\",mød:\"0Z0C\",møde:\"0Z0H\",mødt:\"0Z0F\",møn:\"0Z03\",mør:\"0Z07120B\",mørk:\"0Z0D120I\",møt:\"120H\",møte:\"120S\",\"møte \":\"120C\",møtt:\"120G\",mú:\"0O060P050S0D0Y031303140D\",múi:\"0S10\",múin:\"0S18\",múint:\"0S3S\",múl:\"140J\",mún:\"0O05\",mús:\"0O0E0P0K\",músi:\"0O0L0P0O\",músic:\"0O0S0P0U\",mü:\"0N0K14051C081F1N1N0P1P0J\",\"mü \":\"1F0R\",müd:\"0N041F04\",mül:\"0N021F041P0P\",müm:\"1F0B1N0O\",mümk:\"1F0B1N0Z\",mümki:\"1N1B\",mün:\"14021F081N0D\",müs:\"0N0I1F08\",müss:\"0N14\",müsse:\"0N1L\",müy:\"1F0V\",müyo:\"1F0Y\",müyor:\"1F1B\",müz:\"1F0X\",müü:\"1C0B\",müş:\"1F0F\",mý:\"0U0F0Y0E\",mýl:\"0U050Y0I\",mþ:\"1302\",mā:\"0T0S1D2W\",\"mā \":\"0T031D2O\",māc:\"1D1W\",mācī:\"1D1H\",mācīt:\"1D2F\",māj:\"1D4W\",māja:\"1D21\",\"māja \":\"1D32\",māju:\"1D2Q\",\"māju \":\"1D6P\",mājā:\"1D1G\",mājās:\"1D2T\",māk:\"1D11\",māl:\"0T05\",mān:\"0T06\",mār:\"0T02\",mās:\"0T1A1D0K\",\"mās \":\"0T2E\",māt:\"0T031D10\",mă:\"152Y\",\"mă \":\"157E\",măc:\"150O\",măn:\"151C\",mănâ:\"151M\",mănân:\"1522\",măr:\"150X\",măt:\"150N\",mą:\"1A081B1P\",\"mą \":\"1A051B4H\",mē:\"0T081D2Q\",\"mē \":\"0T0G1D0N\",mēn:\"0T02\",mēr:\"1D2T\",\"mēr \":\"1D25\",mēs:\"1D63\",\"mēs \":\"1D7P\",mēģ:\"1D0X\",mēģi:\"1D17\",mēģin:\"1D32\",mė:\"1B28\",\"mė \":\"1B0V\",mėg:\"1B2M\",mėgs:\"1B3A\",mėgst:\"1B6O\",mėj:\"1B0A\",mėl:\"1B0E\",mėn:\"1B0J\",mės:\"1B17\",\"mės \":\"1B1H\",mėt:\"1B0F\",mę:\"1A0I1B06\",\"mę \":\"1A071B09\",męs:\"1B07\",mě:\"0U5K\",\"mě \":\"0U4M\",měl:\"0U47\",\"měl \":\"0U4E\",měla:\"0U0S\",\"měla \":\"0U12\",měli:\"0U1A\",\"měli \":\"0U1S\",měn:\"0U0T\",měs:\"0U1A\",měst:\"0U1J\",město:\"0U0T\",měsíc:\"0U0S\",mī:\"0T061D13\",\"mī \":\"0T02\",mīc:\"0T04\",mīg:\"1D1M\",mīgs:\"1D11\",\"mīgs \":\"1D2O\",mīl:\"1D1V\",mīlu:\"1D1C\",\"mīlu \":\"1D3G\",mīn:\"1D0E\",mīs:\"0T03\",mı:\"1F5R\",\"mı \":\"1F5N\",mın:\"1F16\",mıs:\"1F0U\",mısı:\"1F0Y\",mıy:\"1F3B\",mıyo:\"1F3F\",mıyor:\"1F4N\",mız:\"1F2T\",\"mız \":\"1F1O\",mızı:\"1F12\",mış:\"1F23\",\"mış \":\"1F1H\",mł:\"1A0A\",mň:\"0Y0E\",mňa:\"0Y10\",\"mňa \":\"0Y1O\",mō:\"0T05\",\"mō \":\"0T08\",mōs:\"0T02\",mœn:\"0T03\",mŕ:\"0Y02\",mř:\"0U0C\",mře:\"0U0K\",mřel:\"0U0U\",\"mřel \":\"0U0W\",mś:\"1A02\",mş:\"1F08\",mşu:\"1F0J\",mš:\"1D05\",mša:\"1D0G\",mū:\"1B0L1D0W\",mūs:\"1B1L1D2A\",mūsu:\"1D21\",\"mūsu \":\"1D58\",mūsų:\"1B2J\",\"mūsų \":\"1B56\",mūz:\"1D10\",mūzi:\"1D18\",mūzik:\"1D32\",mūž:\"1D0G\",mů:\"0U2Y\",\"mů \":\"0U0P\",můj:\"0U1O\",\"můj \":\"0U2R\",mův:\"0U0C\",můž:\"0U3D\",může:\"0U44\",\"může \":\"0U2G\",můžem:\"0U0Y\",můžet:\"0U0V\",můžeš:\"0U1O\",můžu:\"0U1E\",\"můžu \":\"0U1Y\",mű:\"140I\",műv:\"140B\",mų:\"1B0F\",\"mų \":\"1B16\",mž:\"0U020Y021B04\",mži:\"0U040Y051B0B\",mț:\"1505\",mɛ:\"0303\",mɣ:\"0306\",mḍ:\"0306\",mẓ:\"0308\",\"n' \":\"0T03\",\"n'a\":\"04280L4W0Q0N1F0Z1Q0E\",\"n'a \":\"0L201F14\",\"n'ab\":\"04290L04\",\"n'aba\":\"043C0L04\",\"n'ai\":\"0L31\",\"n'ai \":\"0L3Q\",\"n'aim\":\"0L17\",\"n'am\":\"04360Q04\",\"n'ama\":\"045F\",\"n'av\":\"0L1C\",\"n'd\":\"1F19\",\"n'da\":\"1F1B\",\"n'da \":\"1F1E\",\"n'e\":\"0L370Q041F021Q0H\",\"n'es\":\"0L4L0Q02\",\"n'est\":\"0L6Z\",\"n'i\":\"04410L080Q081F041Q08\",\"n'ib\":\"041O\",\"n'ibi\":\"042Z\",\"n'in\":\"042H0Q071F03\",\"n'it\":\"041O\",\"n'o\":\"0L0G0Q09\",\"n's\":\"0M07\",\"n's \":\"0M0C0N02\",\"n't\":\"0MBS\",\"n't \":\"0MJF\",\"n'u\":\"04401F0D\",\"n'um\":\"048O\",\"n'umu\":\"0464\",\"n'umw\":\"049O\",\"n'y\":\"0L0U\",\"n'y \":\"0L1F\",\"n'è\":\"0Q03\",\"n'é\":\"0L0K\",\"n'ét\":\"0L0T\",\"n'éta\":\"0L19\",\"n'ê\":\"0L09\",\"n-a\":\"031C0S0N1518\",\"n-d\":\"032G\",\"n-d \":\"0327\",\"n-i\":\"033S\",\"n-j\":\"0B03\",\"n-k\":\"03090B03\",\"n-l\":\"1P10\",\"n-li\":\"1P1A\",\"n-li \":\"1P1I\",\"n-n\":\"035Q\",\"n-nn\":\"033F\",\"n-nne\":\"035I\",\"n-nwe\":\"032S\",\"n-p\":\"0B04\",\"n-s\":\"0309\",\"n-t\":\"031H0B06\",\"na'\":\"1F031Q15\",\"na-\":\"031D0B02\",naa:\"010Y0D0A0R2M0T04111V1C0G\",\"naa \":\"1114\",naam:\"010P0R121109\",\"naam \":\"010P0R1A\",naan:\"010K0D030R040T081111\",naand:\"010I\",naar:\"010Q0R7U1104\",\"naar \":\"010N0RA0\",naas:\"0D030R0K1102\",naba:\"0D0K0O060T070V04\",nabb:\"100L1403\",\"nabi \":\"041V0D0Z\",nabo:\"04110D020Z0B120A13051O0I\",naby:\"010F\",\"naby \":\"010G\",nach:\"0N560R0Y0S6F0T030U080Y0L1A0A1Q06\",\"nach \":\"0N560SK41A0G\",nacht:\"0N1K0R1A\",naci:\"0O0Y0P0A1A041B021O0F\",\"nade \":\"0L060R020V071020\",naden:\"0P090R040T02100K\",nadev:\"1Q9U\",nadh:\"0S0X\",\"nadh \":\"0S3S\",nadie:\"0L050N040O280Z051B0B\",nado:\"0D020O1K0P0Z1B031F081O0A\",\"nado \":\"0D030O1G0P0Y1O0G\",nae:\"0T0V0V081C0Y\",\"nae \":\"0T1M\",naer:\"1C11\",\"nag \":\"03060D06\",\"nag-\":\"0D0Y\",\"nag-a\":\"0D0T\",\"nag-u\":\"0D0G\",nagaw:\"0D0T\",nagb:\"0D0O\",nagba:\"0D0J\",nagd:\"0D0B\",nage:\"0L0S0M0A0N030P040R060T030Z031002\",nagh:\"0D0I1Q0Z\",nagha:\"0D0G\",nagi:\"041D0D0E0T021B031C1R\",\"nagi \":\"1B061C4C\",nagin:\"0D0J0T02\",nagk:\"0D0L\",nagka:\"0D0V\",nagl:\"0D0N0V0310021A08\",nagla:\"0D0S1002\",nagm:\"0D0D\",nagp:\"0D0P\",nagpa:\"0D13\",nags:\"0D0Y\",nagsa:\"0D0S\",nagsi:\"0D0P\",nagt:\"0D0V\",nagta:\"0D10\",nagu:\"0D071C19\",\"nagu \":\"1C2X\",nagy:\"14AD\",\"nagy \":\"142J\",nagyo:\"1474\",\"nah \":\"0B2Z1Q1W\",naha:\"0B050D0E1N1A\",nahan:\"0B0B0D0H\",nahar:\"1N1S\",nahi:\"0D0A\",naho:\"0D0A0O020U04\",nahon:\"0D0J\",nahu:\"03020D06\",\"nai \":\"0B070Q020T0314071B4V1D17\",naic:\"0S0V\",\"naic \":\"0S3A\",naig:\"0S20\",naigh:\"0S7A\",naii:\"0D0C\",naiin:\"0D0K\",naik:\"0B0M11061B05\",naim:\"0S0M110W\",nain:\"0D071111151C1C0V\",naine:\"112A1C26\",naint:\"0D03151P\",nais:\"0D040L260P09111F1B051C1K\",\"nais \":\"0D060L1O0P0C1B0B\",naise:\"0L09111T1C22\",naiss:\"0L1N\",naist:\"110Q1C1E\",\"naj \":\"0V031A031O0X\",najl:\"0V020Y121A0I\",najle:\"0Y1B1A0S\",nají:\"0U0R\",najít:\"0U0R\",\"nak \":\"03030B2V0D0K0U050V0E0Y090Z0214GB1A081F04\",\"nak-\":\"0B0P\",\"nak-a\":\"0B1C\",nakai:\"0D0I\",nakak:\"0D1J\",nakal:\"03060D0N\",nakam:\"0D0K\",nakan:\"0B390D04\",nakap:\"0D0H\",nakat:\"0D0Z\",naki:\"0D1A110J1F02\",nakik:\"0D0Q\",nakit:\"0D1B1F02\",nakk:\"0B060Z0B1104123R1402\",nakke:\"0Z0D123L\",nakt:\"03041B101D0U\",naku:\"0B050D070U06\",\"nale \":\"010I0L0B0N040Q0Q0R080Z031206150A1A02\",nalit:\"0D020L050M020Q4M0R0210021508\",nalo:\"0D090U0714021O07\",\"nama \":\"0B220V1Q1B05\",naman:\"0B0N0D0Y\",namas:\"1B1L\",\"name \":\"0M0Q0N0B0R031B1G1N0J\",namh:\"0S3N\",\"namh \":\"0SDI\",namin:\"0D2Q\",namn:\"100W\",\"namn \":\"100S\",namo:\"0O0F0P0J0Q0C0V0A1B13\",\"namo \":\"0V0Q1B27\",namu:\"04150B0C0D040U051B16\",namuo:\"1B1Z\",nanay:\"0D0G\",nande:\"0N0R0Z0P1005\",nang:\"0B3D0D4D0N02\",\"nang \":\"0B3W0D60\",nanga:\"0B090D0R\",nangg:\"0D0J\",nangy:\"0D0G\",nanin:\"0D0M\",nanj:\"042K0V08\",nanje:\"044K0V0B\",nann:\"0B050N060S1J1102130B\",\"nann \":\"0S4R\",\"nant \":\"030I0L300M040T0715081B05\",nante:\"0L0A0O0A0P060Q0S0T031O05\",nany:\"0B0B1A081N1Z\",nanyş:\"1N1B\",naný:\"0U021N0V\",nanýa:\"1N16\",naoz:\"0Y1P\",naoza:\"0Y24\",\"nap \":\"0B050D0M0R060Z05145C1N0Q1Q08\",napa:\"0B1A0D1C0U080V051105\",\"napa \":\"0B291103\",napak:\"0D13\",napi:\"0D050U040V0Z1102140M1A0U\",napis:\"0V1S1A10\",napp:\"0M020N030R050Z02100D11071206140B\",napr:\"0U0A0V110Y0D140F1A1G\",napra:\"0U030V1V140D1A28\",naps:\"0U0R1408\",napsa:\"0U0Y\",napí:\"0U040Y1Z\",napís:\"0Y1R\",napü:\"1P3H\",napük:\"1P42\",naq:\"03030P0B1Q0N\",\"nar-\":\"0B0Z0P02\",\"nar-b\":\"0B1X\",\"nare \":\"0Q2M0T0E100G150F1O02\",\"nari \":\"044X0B0B0Q030T0513151505\",narn:\"0B0F1003\",naro:\"0O060Q0M0U0S0V070Y191A0B1O02\",narod:\"0U0L0V0D0Y1K1A0H\",nart:\"03030Q020T030Z0I100G120I1A03\",\"nart \":\"03070Z0L100G120I\",nasa:\"0B080D1Q0V021102\",\"nasa \":\"0D1R\",nasaa:\"0D0I\",nasab:\"0D0F\",nasc:\"0P0M0Q0L0T09\",nasio:\"010I0B0B0O02\",nasj:\"120G\",nasjo:\"120G\",nask:\"1O0S\",\"nast \":\"030D1008131P1C2N\",nasz:\"140D1A1Z\",nası:\"1F2V\",nasıl:\"1F3R\",\"nata \":\"0D030O020Q1A0T0W0V0I11151O0G\",natat:\"0D0J0T09\",natin:\"03050D2H0M02\",natio:\"0L0Z0M0O0N0C0R0A0T0J0Z0D100A\",\"nato \":\"0O050P050Q2G0T040V091O0A\",\"natt \":\"0303100A120I\",natte:\"0L030Z0H100B120F\",natuk:\"1C29\",natus:\"0T1M\",natut:\"0D0H\",\"nau \":\"0B070N0B1B4X\",nauc:\"1A1C\",naucz:\"1A22\",naud:\"1B131D15\",nauda:\"1D21\",naudo:\"1B1N\",nauj:\"1B2B\",nauč:\"0U0U0V0T0Y19\",nauči:\"0U100V1Q0Y1C\",\"nav \":\"150B1D7O1F021Q0S\",nava:\"03020P040Q07110815061B051C0K1F02\",nave:\"0O040P040Q050T0C0U0K0Y11\",naven:\"0U0R0Y19\",navn:\"0Z13120J\",\"navn \":\"0Z131206\",navne:\"0Z08120C\",navš:\"0U0Q0Y0X\",navšt:\"0U100Y16\",nawa:\"0B050D0V\",\"nawa \":\"0D0R\",nawe:\"0303042O1A0J\",\"nawe \":\"044Q\",nay:\"03110D0I1F0J1Q0K\",\"nay \":\"03050D0H1Q08\",naya:\"03020D0C1F09\",nazi:\"0Q4U0V020Z021F06\",nazio:\"0Q4V1O02\",naç:\"0P0A\",naí:\"0S33\",\"naí \":\"0S32\",naî:\"0L0D\",nað:\"131Y\",\"nað \":\"131H\",naði:\"1314\",\"naði \":\"1320\",naý:\"1N0Y\",naýa:\"1N19\",nač:\"0U030V190Y0E\",nači:\"0V10\",način:\"0V1N\",nađ:\"0V0U\",naĝ:\"1O0C\",naĵ:\"1O03\",naš:\"0U1L0V220Y1Z1B0I\",\"naš \":\"0V10\",naše:\"0U1C0V0C0Y0Y\",\"naše \":\"0U0R0V0K0Y0O\",našel:\"0U0S\",naši:\"0U0B0V080Y121B06\",našie:\"0Y11\",naŭ:\"1O0E\",naž:\"0U0K0V080Y0I\",naț:\"150J\",naɣ:\"0326\",\"naɣ \":\"0327\",nba:\"0N030R0210061203140N1F02\",\"nban \":\"1414\",nbl:\"0N030R021004\",nbo:\"0R0610041Q05\",nbr:\"0N021002\",nbu:\"1F02\",\"nc \":\"0L0J0T2H140D150G\",ncan:\"0B0X0O0N0P0A0Q061F061O0G\",ncant:\"0O0U0P051O04\",ncar:\"0B100L020O070P0A0Q03150S\",nced:\"0M0C0O020P030T0315061F05\",ncep:\"0L020O020T0B152K\",ncerc:\"152J\",nces:\"0L0Z0M0D0O0S0P0B0Q1P0T0315051B021F03\",\"nces \":\"0L1H0M0F0O0Q0P04\",ncese:\"0P020Q1N\",ncez:\"0L02151T\",\"nch \":\"0M1L0R04100A1A02\",nche:\"0L0T0M040N0H0O020P060Q2G0R03150A\",\"nche \":\"0L0W0N0A0P020Q2D\",nchi:\"0L030Q0B0T04151L\",ncia:\"0M020O3R0P2Q0Q1M0T05140O\",\"ncia \":\"0O3O0P2Q0Q0T140H\",ncin:\"0B0R0M040Q0315041F031O02\",ncio:\"0O0V0P0U0Q041O04\",ncion:\"0O0S0P0M\",ncip:\"0L080M020O0H0P0A0Q080T0U0Z02150D1O02\",\"ncis \":\"0B260S2K1O0R\",nciá:\"1414\",nció:\"0O0W\",nción:\"0O12\",ncl:\"0L080M050O0D0P0B0Q030T051505\",\"nco \":\"0O150P0X0Q0S1O0Q\",ncob:\"0B0X0Q02\",ncoba:\"0B1U\",ncon:\"0L160M030O1R0P240Q0V150A1O0G\",ncont:\"0L1N0O270P2L0Q0T1505\",ncor:\"0L260O040P0F0Q350T04\",ncora:\"0P020Q34\",ncore:\"0L3L\",ncou:\"0L050M030P020U1J\",ncouz:\"0U24\",ncov:\"0U030Y13\",ncr:\"0L070M030O050P060Q050T02150L\",ncs:\"0L021431\",\"ncs \":\"0L031452\",ncse:\"1414\",nct:\"0L0C0M030T0V150C\",ncue:\"0O0M\",ncuen:\"0O0S\",ncusk:\"0V1I1A1M\",ncé:\"0L0G0O0P1404\",ncés:\"0L020O11\",\"ncés \":\"0L030O1D\",ncê:\"0P1B\",ncês:\"0P1G\",\"ncês \":\"0P1U\",ncí:\"0P03\",ncó:\"0O03\",ncú:\"0Y1S\",ncúz:\"0Y32\",ncúzs:\"0Y2T\",ncúzš:\"0Y0Z\",ncă:\"152I\",\"ncă \":\"153G\",ncı:\"1F0F\",ncū:\"1B12\",ncūz:\"1B1Q\",ncūzi:\"1B27\",\"nd'\":\"0Q03\",\"nd-\":\"0L0A\",ndaa:\"0D060R1S1103\",ndaag:\"0R25\",ndab:\"048E0O02\",ndaba:\"045L0O02\",ndabi:\"048W\",ndaf:\"0429\",ndafi:\"043I\",ndag:\"0120046I0Q020R0K0Z0H100I120D1B06\",\"ndag \":\"01210R0N0Z0D100C1209\",ndagu:\"048K1B07\",ndah:\"0B100D06\",\"ndah \":\"0B1N\",ndak:\"049Y0B0H1F0K1N0L\",ndake:\"042S\",ndaku:\"04B1\",\"ndam \":\"0P030T0S\",ndamu:\"044Q\",\"ndan \":\"0D080O050V0910061104130T1F5U1N5W1O14\",ndang:\"0B190D0W\",ndani:\"141H\",ndant:\"0L1Z0O030P020T0410021O06\",ndap:\"0B1B\",ndapa:\"0B2L\",ndare:\"0Q3X1004\",\"ndas \":\"0O0E0P0B0T0A10041B0R1D1D1O24\",ndash:\"04EK\",ndate:\"0Q3Q\",ndato:\"0Q14140R\",ndatu:\"043C\",nday:\"0M0H1F1B\",\"nday \":\"0M0L\",ndayı:\"1F17\",ndaz:\"04901402\",ndazi:\"04E5\",ndb:\"0Z041002140A\",ndc:\"1503\",ndd:\"0R021002140E\",ndea:\"0S0V150D\",nded:\"0M0P0O030Z071F04\",\"nded \":\"0M0Z\",ndee:\"010F0R03\",ndeh:\"0Z08\",\"ndel \":\"0N040R050Z0210021C1L\",ndeli:\"0R150Z0J120F1N0H\",ndels:\"0N020Z0F10041207\",\"nden \":\"0N5R0O0B0R620Z4I101A1218144B1F4X1N441O04\",ndene:\"0N020Z06120I1407\",ndeng:\"0B2H\",ndenk:\"142L\",ndent:\"0L0H0M030O040P080Q050T091102141X150A\",ndera:\"045R0B0E0D020L030O050P070Q020R03100A\",nderd:\"0R111F0B\",ndere:\"0M070N2Z0P080Q1H0R3N0T0O0Z0715051F03\",ndern:\"0N1W0R030Z0B100B\",nderv:\"0R030Z0D1005120C\",nderw:\"010V0R0G\",\"ndes \":\"0D030L0N0N0L0O0L0P0D0T040Z2510041406\",ndet:\"0N0Z0Q0A0R050T080Z1T100K120W1407\",\"ndet \":\"0N180T080Z23100I120S1406\",ndeu:\"0L040P0P\",\"ndeu \":\"0P0U\",ndf:\"0M020Z02\",ndg:\"0Z03\",ndh:\"010703020N040R030Z091406\",ndhe:\"0N090R0B0Z0M\",ndhed:\"0Z0P\",\"ndia \":\"0B0J0M020O060P0C0Q0V0R040T0612041A02\",ndiam:\"0Q3T\",ndib:\"042V\",ndiba:\"0447\",ndie:\"0L070N030O0I0Q090R030Z0310021B28\",ndien:\"0L030N030O0H0R040Z0310021B4K\",\"ndig \":\"010K0D020N0M0R0C0Z081002120L1442\",ndigi:\"1N8Y1O07\",ndih:\"0D0C\",ndiha:\"0D0M\",ndik:\"043R1F051N1V1O04\",ndikl:\"1N17\",ndiko:\"0441\",ndim:\"04110O030P020Q020T0515041B0B1F141N0I\",nding:\"0B170D090M0P0R070Z091204130V\",ndinn:\"0N020R03132A\",ndip:\"04290Q02\",ndipf:\"0441\",ndir:\"04450B1S0L030O040Q06132F1F0S1N1V\",\"ndir \":\"0L020O02133P1F0C1N10\",ndira:\"0441\",ndiri:\"042M0B3H0Q061F0A\",\"ndis \":\"0L0B0T0A130B1B061C2N1O23\",\"ndit \":\"03120L0G0T18150H\",ndió:\"0O0K\",ndj:\"0R02140U\",ndk:\"0Z05140A\",ndl:\"0M060N0E0Z0G100J120C130C1A021C0P\",ndla:\"0Z03100F13091C0G\",ndle:\"0M060N030Z0I120I\",ndli:\"0N0Q0Z0I1007120C1306\",ndlin:\"0Z0L1005120C\",ndm:\"0M02\",ndn:\"0N020Z0A1003\",ndnu:\"0Z0Q\",\"ndnu \":\"0Z0V\",ndoj:\"1B021O0R\",ndol:\"0D020O080Q031440\",ndolo:\"0O051410\",ndolt:\"1411\",\"ndon \":\"03080B0G0M040N050Z061003120814041O1T\",ndrar:\"100F\",\"ndre \":\"0L7T0Z171007122V\",ndred:\"0L060M070Z0V1O04\",ndrī:\"1D0Z\",ndrīz:\"1D2K\",\"nds \":\"0L1T0M1N0N060R0R0Z09100E1204130H\",ndsb:\"0Z0A\",ndsk:\"0Y0B0Z0T10091206\",ndsky:\"0Z0I\",ndst:\"0N030R040Z0H1004\",ndt:\"0N030R070Z1R120K141B\",\"ndt \":\"0N020R0O0Z2W1214\",ndta:\"0Z05142X\",\"ndta \":\"141N\",ndtam:\"1413\",ndte:\"0N040Z1C120B\",\"ndte \":\"0N030Z1I120A\",ndti:\"0Z09\",\"ndu \":\"03020B060L1G0U060Y09130Y1B021F0C1O0B\",nduc:\"0L020O0J0Q020T07150Q\",ndue:\"0L090Z0I120F\",nduet:\"0Z0E120D\",ndui:\"0L0R0R02\",nduk:\"04290B0A1O0A\",nduka:\"043O0B081O07\",ndum:\"0T4613181C0E1F031O03\",\"ndum \":\"0T4E132L1F03\",ndun:\"03020B0F0N0A0T071307\",\"ndur \":\"0304132T1F08\",\"ndus \":\"0L060T1615051B071C171O02\",ndust:\"0L040M030N020O030R020T040Z021C221O03\",ndv:\"0Z0210051306140315041F04\",ndw:\"0304040S0M020N070Q02\",ndwi:\"030404220L030M030N040O020Q040Z02\",\"ndwi \":\"043O\",ndyg:\"1N4X\",ndygy:\"1N6M\",ndyr:\"1N2H\",\"ndyr \":\"1N16\",ndá:\"0P030S0P1404\",ndái:\"0S0O\",ndáir:\"0S2T\",ndå:\"1004\",ndé:\"0L0N0O04140J\",\"ndé \":\"0L0R0O02\",ndê:\"0P08\",ndí:\"0O0A0P021403\",ndò:\"0Q08\",ndó:\"0O031409\",ndü:\"1F2A\",ndüğ:\"1F0W\",ndüğü:\"1F18\",ndą:\"1B0F\",ndė:\"1B0J\",ndı:\"1F39\",\"ndı \":\"1F1L\",ndır:\"1F10\",ndō:\"0T0H\",\"ndō \":\"0T0W\",ndő:\"140I\",ndų:\"1B07\",ndž:\"0V041B0H\",ndži:\"1B0Q\",\"ne'\":\"0M031F021Q03\",\"ne-\":\"0L08151L1F041N0U\",\"nea \":\"0O080Q040T0B1106151X\",neac:\"0S0X\",neach:\"0S3S\",neam:\"0S200T05\",neamh:\"0S7R\",neat:\"0T031B1A1D171O02\",nebe:\"0N0C0U0K0Y0Q1B0S\",nebi:\"0T090U021B081D1H1F0C\",nebij:\"1B0H1D3U\",nebo:\"0T040U1O0V050Y2U0Z05\",\"nebo \":\"0T040U1S0V0C\",nebol:\"0Y2V\",nebu:\"0T020U200Y1L150N1B1A1O02\",nebud:\"0U2L0Y1I\",nebuv:\"1B2A\",neby:\"0U1W\",nebyl:\"0U2L\",\"nec \":\"0T1M0U0N0Y0F\",nece:\"0M050O2Q0P0N0Q080T0J150M1F0P1O0P\",neces:\"0M070O380P0M0Q080T0J150R1O1D\",nech:\"0U5P0Y57\",necha:\"0U1A0Y12\",nechc:\"0U3A0Y3W\",necht:\"0U1G\",nechá:\"0U0Y0Y0I\",\"ned \":\"030G0M2W0U0K0Z0Y100G121314191C0I\",neda:\"0O040U071B0U1D0X\",nedar:\"1B161D1R\",nede:\"0R0O0V0U0Y0J0Z1H1003120H1B061F441O03\",\"nede \":\"0Z1C12041F0D\",nedel:\"0V241B09\",neden:\"0R0A0Z0412061F58\",neder:\"0R0N0Z0D100312071B031O04\",nedi:\"0M030T0L1B091F0Z1P16\",\"nedi \":\"1F031P14\",nedo:\"0O020U1E0V0B0Y0S1B041D0W1O041P50\",nedob:\"1P2F\",nedok:\"0U0T\",nedol:\"1P17\",nedom:\"1B061D211P24\",nedz:\"1D11\",nedē:\"1D0W\",nedēļ:\"1D2A\",nedě:\"0U0U\",neděl:\"0U15\",\"nee \":\"010J0N050R0G110Y\",need:\"0M370R020Z021C15\",\"need \":\"0M2P0R031C2U\",neede:\"0M0P0Z02\",needs:\"0M11\",neem:\"01240R0V1102\",\"neem \":\"01270R0W\",neen:\"0R040Z031120\",\"neen \":\"0R030Z031134\",neer:\"011X0M020R23\",\"neer \":\"011Z0R2H\",nees:\"0R0C111A1D2A\",neesm:\"0R021D3U\",neet:\"0R060Z021129\",\"neet \":\"0R080Z021154\",neeu:\"0R0K\",negal:\"1B8S\",negar:\"0B1V0O020P021B03\",nege:\"0B0I0R0B1B0C1O02\",negl:\"0Q0K0T030Z031504\",nego:\"0O090P040Q0S0T0Q0V181A211O03\",\"nego \":\"0V301A38\",negoz:\"0Q0S\",negr:\"0O0E0P0415061B091D1E\",negri:\"1D3L\",negu:\"1B0Q\",\"negu \":\"1B1I\",\"neh \":\"0B0B0Y081QD7\",nehb:\"1Q3M\",nehbe:\"1Q5J\",nehm:\"0N19\",nehme:\"0N1W\",neho:\"0D080U0H0Y2912061408\",\"neho \":\"0D0F0Y13\",nehov:\"0Y1F\",nehé:\"1415\",nehéz:\"1417\",\"nei \":\"0P070Q0G0T03120H130G150P1B14\",neid:\"0N0711041C0L\",\"neid \":\"1C1H\",neie:\"1B021D0X\",neil:\"11061B031C0V\",neir:\"0P0P\",neiz:\"0V021D13\",neiš:\"1B0S\",\"nej \":\"0U030Y1W0Z0H100E1A141Q0B\",neje:\"0U0D0Y0W14021O02\",nejo:\"0O040U021O0T\",\"nejo \":\"0O031O1A\",nejs:\"0U28\",nejse:\"0U1D\",\"nek \":\"032N0B040U0A14D81A0L1F081O0D1P1B\",neka:\"0B070V0V100311051B131D3A\",nekad:\"0V1L1D5L\",nekal:\"11041B1Q\",nekas:\"11071D2A\",neke:\"0V0D1103149R1B0R\",neked:\"143Y\",nekem:\"1465\",neki:\"0V0I1103143D\",\"neki \":\"0V0W142V\",nekk:\"03231102\",\"nekk \":\"033H\",neko:\"0U0D0V1K1B031D1C1O05\",\"neko \":\"0V1F1D3G\",nekol:\"0V1L\",nekü:\"141A\",nekün:\"1415\",nekā:\"1D1P\",\"nekā \":\"1D3Q\",\"nel \":\"0L0A0M020O020P030Q240R100Z0214091F051P17\",nela:\"0P0K1B0X\",\"nele \":\"0P060R02152E1B04\",neli:\"0R020U02110E12071B0O1C111F051P1A\",nelij:\"0R031P1D\",nelik:\"11021B031C1O\",nella:\"03120Q1S1003110J\",nelle:\"0L0O0N0D0Q090R090Z03113U\",nellä:\"1145\",nels:\"0L030Z05120G\",nelse:\"0Z06120G\",\"nema \":\"0P080Q060V20131215051C2Q1O02\",nemal:\"0Y1C1B061O02\",neme:\"0L0X0R0Y0U080Y11130G14081B061F0I\",nemen:\"0L1K0R17130Y\",nemlu:\"0U0R\",nemm:\"030I0Q0B0Z03111H130F\",nemmä:\"112Q\",nemo:\"0O0Z0T1I0U2Z0V1N0Y261B0I1N0I\",\"nemo \":\"0T1K0V1A\",nemoc:\"0U1I0Y0T\",nemoh:\"0U2H0Y1D\",nemoj:\"0V2P\",nemos:\"0O1A\",nemu:\"0B0Z0T030U0W0Y0U1A02\",nemuk:\"0B1M\",nemus:\"0T020U190Y0V\",nemy:\"0M020U0G0Y0Y1B05\",nemys:\"0U0M0Y17\",nemá:\"0U3G0Y3L\",\"nemá \":\"0U1S0Y19\",nemám:\"0U2I0Y2A\",nemô:\"0Y2S\",nemôž:\"0Y3G\",nemė:\"1B0W\",nemėg:\"1B1U\",nemě:\"0U1S\",neměl:\"0U2F\",nemů:\"0U1Z\",nemůž:\"0U2Q\",nend:\"0N0B0Q080R030T050Z0312081C0Y\",nende:\"0N0B0R020Z0312061C29\",nene:\"0B060U0B0Y080Z0J121G1B031F02\",\"nene \":\"0Z0M121F1F02\",nenh:\"0P0V\",nenhu:\"0P14\",neni:\"0Y0B1F061O3Y\",nenia:\"1O2Z\",nenio:\"1O2A\",neniu:\"1O2E\",neno:\"0O020P020U021B251D111O02\",nenor:\"1B4F\",nens:\"0N050Q030R020T0V0Z021003110212061402\",\"nent \":\"030H0L1E0M030T070Z02\",nená:\"0U0G0Y12\",není:\"0U4E0Y08\",\"není \":\"0U620Y0A\",nený:\"0Y13\",\"nený \":\"0Y1C\",nepa:\"0U0A0Y0B1B571D33\",nepas:\"1B2P\",nepat:\"0U031B1Y1D43\",nepi:\"0U090Y091B031D1A\",nepie:\"1D37\",nepo:\"0T060U230V040Y4J150E1O02\",nepov:\"0U020Y13\",nepoz:\"0U0A0Y1P\",nepoč:\"0U030Y12\",nepr:\"0U0K0V0C0Y3E1B171O07\",nepri:\"0V0K0Y141B1O\",neprá:\"0U090Y1K\",nepř:\"0U1I\",nepři:\"0U13\",neq:\"030G0T0L1Q08\",nequ:\"0T15\",neque:\"0T10\",\"nere \":\"0N090Q0X0T200Z0M1002120O1507\",nered:\"0Z021F34\",nerei:\"1B1N\",nerel:\"1F2I\",neri:\"0B0H0L030N030Q030R020T0Q150O1B0D1F0D\",nern:\"03030N0A0Z0B1007\",nerne:\"0Z0D\",nero:\"0D030L020O1Z0P030Q090T080U0L0Y1O11041B021O04\",\"nero \":\"0D060O2G0Q070T0411051O04\",neroz:\"0U0S0Y1M\",nerun:\"0N050T0F1D1W\",nesa:\"0O050P050U021B0S1D1J\",nesak:\"1B1E\",nesap:\"1D21\",nesc:\"0T2F150H1O02\",nesci:\"0T2I1O03\",\"nese \":\"0M0F0Q110R030U020V06\",nesk:\"0U0J0V030Y1L0Z20121P130X1B0E\",neske:\"0Z2C121O\",nesko:\"0U030Y10\",nesl:\"030B0U0Q\",nesp:\"0O020U0D0Y0X1B031D0Z1O02\",nespē:\"1D2K\",ness:\"030Z0L040M0P0P0G0Q1P110N\",\"ness \":\"0M0V\",nessu:\"03060Q1M\",nestä:\"112C\",nesu:\"0U031B28\",nesup:\"1B1J\",netik:\"1B1M\",nett:\"032U0L0I0N080Q060Z081121120L1F06\",netta:\"034J0Q02111E1F04\",netu:\"0T0A0U080Y0B110215081B2L\",netur:\"0T031B5B\",neud:\"0U0P\",neudě:\"0U0Z\",neue:\"0N13\",neuž:\"0U041B0Q\",\"neva \":\"0Q02152M\",nevaj:\"1D2Y\",nevar:\"0O020P021B051DAO\",neve:\"0M230P070Q060R020U020V090Y1L142B1B0K\",neved:\"0Y1E14071B04\",never:\"0M2V0V0N0Y0E1B0O\",nevid:\"0U1B0Y21\",nevie:\"0Y4X1D3L\",nevis:\"1D1R\",nevo:\"0Q030U030V031538\",nevoi:\"1544\",nevy:\"0U0R0Y0X1B03\",neví:\"0U25\",\"neví \":\"0U0R\",nevím:\"0U1U\",nevē:\"1D1E\",nevēl:\"1D3G\",nevě:\"0U1I\",nevěd:\"0U16\",nevěř:\"0U0T\",newa:\"041O\",newe:\"041V\",\"newe \":\"043C\",nex:\"03050M0H0P020T071503\",next:\"0M0U\",\"next \":\"0M15\",\"ney \":\"0M151F03\",neye:\"043V1F0J\",\"neye \":\"046S1F0L\",\"nez \":\"0L0Y150C\",neza:\"04AV0U1C0V060Y161O05\",\"neza \":\"04HS1O06\",neze:\"044J0R020U03150O\",nezer:\"047R\",nezi:\"15091D2J1O03\",nezin:\"1D6G\",neć:\"0V1D\",neće:\"0V12\",neč:\"030A0U0M0V030Y0J\",neď:\"0Y0K\",neē:\"1D0G\",neĝ:\"1O07\",neğ:\"1F0A\",neį:\"1B0L\",neř:\"0U0N\",neřek:\"0U0V\",neş:\"15021F0E\",neš:\"0U0K0V230Y0K1B16\",neši:\"1B0R\",nešt:\"0U020V201B06\",nešto:\"0V52\",než:\"0U1V0V020Y0Z1B22\",\"než \":\"0U2P0Y15\",neži:\"0U040Y0B1B35\",nežin:\"1B63\",neɣ:\"034Y\",\"neɣ \":\"0344\",\"nf \":\"0N04\",nfai:\"0S13\",nfaid:\"0S49\",nfan:\"0L230N0A0O040P020Q030T0I1O1D\",nfano:\"1O2D\",nfant:\"0L3E0O030P020T09\",nferm:\"0L040O110P040Q05\",\"nfor \":\"0Z0G1207\",nft:\"0N07\",nfu:\"030I0L040M030O050P060Q040T0215061O03\",nfâ:\"0P03\",nfí:\"0O04\",nfö:\"100A\",nför:\"100D\",\"ng'\":\"1Q0I\",\"ng-\":\"0B0Q0D0J\",\"ng-a\":\"0D0C\",ngah:\"04B70B0E\",ngaha:\"04G3\",ngahe:\"043C\",ngai:\"0B0F11061B0U\",\"ngai \":\"0B0S1B1Q\",ngaj:\"0B0K15091O061Q0D\",ngal:\"030E0B0I0D0L0T02\",ngala:\"03050B0S0D0R\",ngam:\"0B0Q0O020T05\",\"ngan \":\"03040BN20D450O0510021102131M1O0A1Q3V\",ngana:\"04740D090P06130E\",ngane:\"042Z\",ngang:\"0B0T0D140N030R020Z0Q1209\",nganm:\"0B1G\",ngann:\"0B1M0Q05\",ngany:\"044X\",ngapa:\"0B23\",\"ngar \":\"0B251025135A\",ngarn:\"100F130R\",ngas:\"0O0A0P0310021109130D1B311O051Q13\",\"ngas \":\"0O0D0P03110I1B671O0A1Q0U\",ngat:\"03020B5X0D0611051404\",\"ngat \":\"0B900D091102\",ngata:\"0B1Q1105\",ngay:\"0D1B\",ngayo:\"0D28\",ngað:\"1313\",\"ngað \":\"1320\",ngb:\"1Q0J\",ngd:\"0Z03100M1204130H1Q1P\",ngde:\"0Z06100L1206\",\"ngde \":\"0Z03100J\",nged:\"0M0A0N020R060Z0F141F1Q0J\",ngede:\"0Z0I1409\",ngelm:\"113Y\",ngels:\"010Q0R1F0Z1810131215130B\",ngelu:\"010N0B0J0R0J0T05\",\"ngem \":\"03020N03142B15051Q0D\",\"ngen \":\"0N6F0R5P0Z5110581104125C\",ngena:\"0B1H0R06\",ngene:\"045Y0N0F0R030Z0G120R\",ngent:\"0L0B0T0M0Z05100Q1219\",ngera:\"043C0L0D0R03100C\",ngere:\"043O0L0H0N070Q0J0R0B0T0F0Z13120614031507\",ngert:\"0B1B0N02\",ngesi:\"010K0N021F02\",nget:\"0B0O0N030Q020R060Z0B100X120D140F\",\"nget \":\"0B090Z0D100W120A1403\",ngev:\"0Q020R0K1Q11\",ngf:\"1003\",ngg:\"0B6V0D181Q09\",ngga:\"0B5X0D1B\",\"ngga \":\"0B270D03\",nggal:\"0B6X0D0H\",nggan:\"0B130D14\",nggap:\"0B0G0D0H\",nggi:\"0B1J0D0E\",\"nggi \":\"0B1P0D09\",nggo:\"0B0D0D0G\",\"nggo \":\"0D0I\",nggr:\"0B1K\",nggri:\"0B32\",nggu:\"0B4B0D05\",\"nggu \":\"0B4H\",nggun:\"0B23\",nghi:\"0B0G0D020Q0L150A\",ngia:\"0Q2C1B0N\",ngiar:\"0Q11\",ngie:\"1A171B02\",ngiel:\"1A1X\",ngil:\"1F0Z\",ngili:\"1F17\",\"ngin \":\"0BAN0D1L0R05110L132H1F0F\",nging:\"04590B0U0D060M0E\",nginn:\"133O\",ngir:\"044T0B0I0P03130E\",ngira:\"04590B0F\",ngis:\"0B0K0D040T04110F130D1F0D1O08\",ngit:\"0B0G0D0C0T0G11091O03\",\"ngit \":\"0B0P0D0G0T071102\",\"ngið \":\"1321\",ngj:\"13101404\",ngk:\"0B3H0D0R\",ngka:\"0B3M0D0G\",ngkan:\"0B2B0D02\",ngkat:\"0B2B0D04\",ngki:\"0B230D02\",ngkin:\"0B3Q0D02\",ngko:\"0B0D0D0R\",ngkol:\"0D0U\",ngku:\"0B0M0D03\",nglai:\"0L1I\",nglan:\"0M020N040Z051002113W12051O0K\",ngles:\"0D0Q0L040O040P030Q0Y0V1V\",nglez:\"151T\",nglic:\"0N050T160U0U0Y1A\",nglis:\"0M0M0N121C3S1D1D\",nglä:\"1P0V\",nglän:\"0N021P11\",nglé:\"0O10\",nglés:\"0O1C\",nglê:\"0P0Y\",nglês:\"0P17\",ngm:\"0B041Q0X\",ngn:\"0B0P0D050N02100413031Q0A\",ngna:\"0D091002\",ngnan:\"0D0I\",ngny:\"0B1C\",ngnya:\"0B2N\",ngol:\"0P020Q071419\",ngor:\"042R0O020T05140A\",ngora:\"043O1402\",ngoy:\"0D071Q09\",ngp:\"0B021Q0B\",\"ngre \":\"0O0A0Z08100U1209\",ngri:\"0N050R0L0Z03100C130I150P1B03\",ngrij:\"0R0T150W\",ngry:\"0M0G\",\"ngry \":\"0M0N\",\"ngs \":\"010Y0L040M1E0N050R0B0Z021004120813091B02\",ngse:\"0Z07120C\",ngst:\"010F0N0S0R0D0Z0810041208\",ngste:\"010G0N070R070Z061205\",\"ngt \":\"03040L060N0X0R0H0Z0F100K120Z130W\",ngte:\"0L0N0N030Z03120R\",\"ngte \":\"0N040Z03120Q\",\"ngu \":\"0304045L132J1B07\",ngua:\"0B040M0N0O0T0P160Q0Q0T3E1002\",\"ngua \":\"0O0O0P120Q0N0T19\",nguag:\"0M0U0P040Q03\",nguam:\"0T1Z\",ngue:\"03020L1S0M020P0C0Q0I0T08\",\"ngue \":\"0L220M020P0B0Q0G\",ngui:\"0L040M020O050P030Q060T10\",ngum:\"0B060D030T08131Y1B05\",\"ngum \":\"0T08132A\",ngun:\"0B1X0D0A0N030O0K0T05130X\",\"ngur \":\"1357151G\",ngura:\"046Y150E\",ngué:\"0P1E\",nguém:\"0P1S\",ngv:\"1002130315021B0L1O0V1Q0G\",ngva:\"1B0R1O051Q0M\",ngvo:\"1O16\",ngw:\"04140N021Q19\",ngwa:\"042K\",\"ngwa \":\"042Z\",ngy:\"0D081106140A\",ngya:\"0D0G1404\",ngyar:\"0D0H\",ngz:\"0R021404\",ngä:\"1106\",ngå:\"10031203\",ngè:\"0L03\",ngé:\"0L0Q1404\",\"ngé \":\"0L0Z\",ngú:\"0O0C\",ngü:\"0O03\",ngă:\"150U\",ngą:\"1B0J\",\"ngą \":\"1B0V\",ngė:\"1B0A\",ngļ:\"1D0T\",ngļu:\"1D0W\",\"ngļu \":\"1D2A\",ngų:\"1B07\",\"nha \":\"0P7W110S\",nham:\"0P0K\",nhar:\"0P0O\",\"nhar \":\"0P0P\",nhas:\"0P12\",\"nhas \":\"0P1A\",nhec:\"0P1S\",nhece:\"0P1D\",nheci:\"0P0U\",nhei:\"0N0U0P1P0R0A\",nheir:\"0P21\",nhem:\"1112\",nhet:\"100K120Q1409\",nhete:\"1007120G1404\",nhi:\"0D020P041104\",nhl:\"0U0C\",\"nhle \":\"0U0S\",\"nho \":\"0P5Y\",nhor:\"0P2B\",\"nhor \":\"0P1C\",nhora:\"0P17\",nhos:\"0P0O\",\"nhos \":\"0P0T\",nhu:\"0P0Q0R031105\",nhum:\"0P0V\",nhv:\"0Z051208130O\",nhve:\"0Z0C120K1314\",nhver:\"0Z0F120K132C\",nhã:\"0P1N\",\"nhã \":\"0P1V\",\"ni'\":\"0M031Q3G\",\"ni-\":\"030E1103\",niae:\"0T1D\",\"niae \":\"0T1G\",niai:\"1B1M\",\"niai \":\"1B2S\",niam:\"0Q060T2L1A091B051O1F\",\"niam \":\"0T2M1A051B021O2U\",niau:\"1B0W\",niaz:\"0Y0Y\",niaze:\"0Y12\",niba:\"041Z0T03\",nibu:\"0P0I0T23\",nibus:\"0P0N0T28\",\"nica \":\"0O0J0P0K0Q0N0T0I0V1F0Y0Z150J1A0B\",\"nice \":\"0M0H0T0H0U1B0V1G0Y1B150A1A06\",nich:\"0L020NHR0Q020R020U080Y0F1A0C\",nicht:\"0NP20R03\",\"nici \":\"0Q020T020U110V1J0Y0W153T\",nicio:\"153P\",nico:\"041K0O0R0P0M0Q0F0T03\",\"nico \":\"042S0O0T0P0N0Q0E\",nicu:\"0T0S0V0E0Y0L150C\",nida:\"03020O0R0P0I\",nidad:\"0D020O0T0P0K\",nido:\"0D060O180P0D0T02\",\"nido \":\"0O130P04\",nieg:\"0O021A181B0B1D0S\",niej:\"1A35\",\"niej \":\"1A3A\",niejs:\"1A1D\",niek:\"0R040Y4D1A0D1B751D33\",nieka:\"1B8D\",nieke:\"0Y1X\",nieki:\"1B061D2F\",nieko:\"0Y1K1A021B56\",nieks:\"1D3C\",niekt:\"0Y1N1A0I\",niem:\"011J0N130R1E0T021A1V1D1A\",\"niem \":\"1A1N1D3C\",niema:\"011M0N1T0R1V1A06\",nien:\"0L0D0M020N060O080P020Q1I0T0C0Z0A100311061A29\",niene:\"1A1K\",nient:\"0L050O040P020Q1I0T07\",nier:\"0L0U0N0H0O070Q0E0R0I0T020Y0L15071A091B051O0J\",niet:\"010F0O030RLN0T0D1A021B04\",\"niet \":\"0ROQ0T0B\",niets:\"0R2I\",nieu:\"0L020R241A06\",nieuw:\"0R2T\",nieč:\"0Y2Z1B03\",niečo:\"0Y3K\",nifo:\"0L020O021O051P0Y\",\"nig \":\"010K03090D0G0N0M0R0G0S0V0Z051005120C132F\",niga:\"0D061B0B1O07\",nigd:\"0R0C1A1V\",nigdy:\"1A2W\",nige:\"011803030N130Q0T0R0M0T050Z04\",\"nige \":\"011A0N100R0R0Z04\",niger:\"03030N0G0Q0U0T04\",nigh:\"0M15\",night:\"0M1K\",nigi:\"010Y0D020N021B061O0H\",nigie:\"010Y\",nigų:\"1B19\",\"nigų \":\"1B2M\",nih:\"0D030T1G0U1H0V0O0Y2N13031F041Q0R\",niha:\"0D020U0K0Y1A1F04\",\"niha \":\"0U0S0Y1J\",nihi:\"0D040T2R\",nihil:\"0T2X\",nihu:\"0U100Y28\",\"nihu \":\"0U1E0Y2R\",nihy:\"0U0D0Y13\",\"nihy \":\"0U0I0Y1C\",nii:\"0D050T051145152R1A0H1C2M1O03\",\"nii \":\"0T080U021103154D1A0P1C2U\",niin:\"0D02115Y\",\"niin \":\"11D6\",niis:\"0D0611091O04\",nija:\"0U020V0B1B0A1D0S\",nije:\"0V6M1F02\",\"nije \":\"0VF9\",nikad:\"0V4X1O02\",nikah:\"0B1G\",nikd:\"0U4I0Y3P\",nikdo:\"0U2M\",nikdy:\"0U3P0Y4H\",\"niko \":\"0D040V1X1O05\",niks:\"011A0R09110G\",\"niks \":\"011D0R0B\",nikt:\"0Y1M1A0U\",nikto:\"0Y20\",\"nil \":\"0T040U140Y15\",nila:\"0B0C0D250U090V050Y08110D\",\"nila \":\"0D2F0U0D0V0D0Y0A\",nilan:\"0D0V\",nili:\"03020D0D0U060V030Y0B1A061F04\",nill:\"0O07110H120J\",\"nill \":\"120I\",nimal:\"0L0A0M090O0N0P080Q0A0T110V0B150K\",nimas:\"1B1I\",\"nime \":\"0T0A1B0E1C1H\",nimen:\"111M152N1C1V\",nimes:\"110U1C7P\",\"nimi \":\"0T060U0D0Y0I11111A081B1R1C1O1F02\",nimic:\"0T0C152P\",nimis:\"0D030T12110A\",nimu:\"045A0T0U11061B081O02\",ninc:\"1455\",nincs:\"145F\",nind:\"043D0Z061F02\",ninde:\"045Y0Z081F02\",\"ning \":\"01150B0D0D070M3C0R1E0Z2Q102U1220131W1C1V\",ninga:\"100R110N13371B0R1C10\",ninge:\"0R090Z1W101K1220150F\",ningg:\"0B20\",nings:\"0R030Z0E100L120K130Q\",ningu:\"0O0Q0P1S0T02133R\",nini:\"0302043K0D0G1A041B0G1F081N0X\",\"nini \":\"030404641F071N17\",niniw:\"0D0J\",nink:\"0R0211091B1J1F03\",ninka:\"110B1B1Z\",ninle:\"1F14\",ninn:\"030F11021316\",nino:\"0D060P0I0Q020T071O05\",niny:\"0D2G0U0B0Y0H\",ninyo:\"0D4H\",nion:\"0L0N0M080N020O030Q0J0T020Z02100211021A0I1O0V\",\"nion \":\"0L0W0M090N031O1P\",\"nip \":\"0D041N0Y\",niq:\"03020L0D0T041Q0I\",\"nir \":\"03020L290O0J0P02133X1F0D\",nira:\"042K0D040L020V0I1O03\",\"nira \":\"04470D020L020V08\",nire:\"0D020Q0Y0T0W150D1N2M\",\"nire \":\"0Q0X0T0T150A\",nired:\"1N3J\",nisam:\"0V91\",nish:\"0M0Q\",nisi:\"03030D070N020Q050T0L0V0R110B1A021F02\",\"nisi \":\"03020T0L0V1Y1109\",nisk:\"0V030Z051013110212061A0B\",nisko:\"100N1A08\",niss:\"0L050N0B0P090Q050R050T0C111I1C0O\",nissa:\"0L021136\",nisse:\"0L050N0H0Q020R050T0B1C1O\",\"nist \":\"0M030N020R060Z051205130I15061C1S1F02\",\"nit \":\"032L0B0J0D0E0L060T2Q0U111003110A1403153L\",\"nite \":\"0Q080T090V100Y11150D\",nito:\"0D0P0O0A0P0A0Q1N0T080V021P0N\",\"nito \":\"0D0S0O0A0P0B0Q0Z0T04\",niton:\"0D0J\",nitu:\"0T0V1A02\",\"niu \":\"0S0Q0Y0A15061A1Y1B0J1O0X\",niuk:\"14041B0R\",nium:\"0T1A\",\"nium \":\"0T1D\",nius:\"0T0F14021A021B0W\",\"nius \":\"0T0D0U021B1V\",niw:\"030F040I0D0B1A06\",niwa:\"0D0K\",niwal:\"0D0T\",nix:\"0T06\",niy:\"0309040T0D2S1F1I1Q06\",niya:\"0D4P\",\"niya \":\"0D71\",niyan:\"0D1I\",niyo:\"0D0D1F0X\",\"niyo \":\"0D0H\",niyor:\"1F1A\",\"niz \":\"0V021F2Z1N0E\",nizi:\"0Q111F0P\",niã:\"0P0H\",nião:\"0P0L\",\"nião \":\"0P0Q\",niä:\"110C1P0I\",niç:\"1F0B\",niè:\"0L0S\",nièr:\"0L1B\",nière:\"0L29\",nië:\"0R02\",nið:\"131N\",\"nið \":\"131N\",niður:\"1321\",niñ:\"0O1D1N5O\",\"niñ \":\"1N7K\",niño:\"0O1O\",\"niño \":\"0O11\",niños:\"0O17\",nió:\"0O0F1A08\",nión:\"0O0M\",\"nión \":\"0O0T\",niý:\"1N0L\",nią:\"1A0Z1B02\",nić:\"1A0S\",nič:\"0U0L0V0N0Y2K\",\"nič \":\"0Y37\",nię:\"1A19\",niĝ:\"1O0M\",nił:\"1A13\",niň:\"1NAT\",\"niň \":\"1NEA\",niš:\"0V1K1B0H\",ništ:\"0V1O\",ništa:\"0V3T\",niť:\"0Y0I\",nių:\"1B1B\",\"nių \":\"1B25\",niż:\"1A14\",\"niż \":\"1A1F\",niž:\"0U040Y0F\",niș:\"150Y\",nișt:\"151J\",niște:\"151M\",\"nj \":\"0V03140C\",njad:\"0B24\",njadi:\"0B45\",njam:\"0B0L0V07\",njan:\"0B0V1102\",njang:\"0B1P\",\"nje \":\"04K70R070V4Z0Z02\",njeg:\"0V1Q\",njego:\"0V3D\",\"njem \":\"0V1N\",njen:\"0V1A140C1504\",njig:\"0V19\",njin:\"0B0U\",njing:\"0B1M\",njir:\"041V\",njira:\"042Z\",njo:\"0L050M090P030V0B11031O1U\",\"njo \":\"0P021O26\",njoy:\"0M0G\",\"nju \":\"0V1G\",njuk:\"0B0I\",njun:\"0B0K0O020P02\",njut:\"0B0G1004\",njy:\"1N0A\",njä:\"1105\",njó:\"130G\",\"nk'\":\"040U\",\"nk'u\":\"041R\",nkaa:\"111K\",nkaan:\"113E\",nkam:\"0N031B0X1O07\",nkama:\"1B1J\",nkan:\"03020B1Q1002110214021O04\",\"nkan \":\"0B2Z11021O05\",nkas:\"11021B0Z1O0J\",\"nkas \":\"1B211O12\",nkaŭ:\"1O11\",\"nkaŭ \":\"1O21\",nkb:\"0R021408\",nkc:\"0V021A021O07\",\"nke \":\"044T0N120V040Z0H120K1B031O05\",nkel:\"010N0N0F0R1E0Z0B100B1105120P1B03\",nken:\"030O04150N1U0R1T0Z0A100B1103120C1O02\",\"nken \":\"030M0N2I0R2D0Z07100B12081O02\",nker:\"03040N030R0I0Z0K100P110F120T1B02\",\"nker \":\"03050N040R0H0Z0M100P120S\",nket:\"0Z04120A141G1O02\",\"nket \":\"0Z041209141H\",nkie:\"0114110N1A06\",\"nkie \":\"0113\",nkil:\"1112\",nkin:\"0M0E0R03111V1306140Q1B0Q1F05\",\"nkin \":\"114F\",nking:\"0M0J0R02\",nkk:\"110H1402\",nkl:\"01070N020Z03100512061B0C1F031O08\",nkli:\"010F1B021F021O04\",nklik:\"010G\",nkn:\"100312021404\",\"nko \":\"0U020Y0H116B1B0D1O0G\",nkom:\"041D0N070R0C0Z0A1005120B1B05\",nkon:\"130C14021O12\",nkor:\"042H0R04110314061O1F\",nkora:\"04351O2S\",nkr:\"0N030R030U040Z051005120414091B021O04\",nkri:\"0R0A0Z0B10051208\",nkrig:\"0Z0D\",nks:\"0M0C0N050R0211031B14\",\"nks \":\"0M0M0N020R061105\",nksči:\"1B1H\",nkt:\"0N0H0R0D0Z09100G1104120D1A051B0E1F021O07\",\"nkt \":\"0N0P0R1E0Z0E1008120F\",nkte:\"0N070Z07100B120H\",\"nku \":\"0B290U0Q0V050Y131A0G1B101O03\",nkun:\"04320N031108\",nkund:\"044K\",nkur:\"04220Z021A021B031O05\",nkuru:\"043I\",nkv:\"1B021O0A\",nky:\"0U0E0Y0Q110A13031B0B\",\"nky \":\"0U0N0Y19\",nká:\"1412\",nkáb:\"1414\",nkä:\"1115\",nké:\"140E\",nkö:\"110B\",nkü:\"1F0B\",nkā:\"1D0Y\",nkār:\"1D17\",nkārš:\"1D32\",nką:\"1A031B08\",nkė:\"1B0D\",\"nla \":\"030B1F1J\",nlah:\"0B0L11021Q0J\",nlam:\"1F18\",nlar:\"1F9D1N22\",\"nlar \":\"1F5S1N0Z\",nlara:\"1F1D\",nlary:\"1N1Q\",nları:\"1F4T\",\"nle \":\"1F1C\",nleg:\"120G1315140B\",nler:\"0N021F1W1N13\",nleri:\"1F1I1N0X\",nlig:\"0Z1F100Y121W\",\"nlig \":\"0Z0M1009120L\",nligv:\"0Z07120M\",nlij:\"0R171Q0C\",nlijk:\"0R1L\",nlik:\"010Z0M031F0R\",\"nlik \":\"010S1F07\",nlo:\"0N020O02110514021502\",nlu:\"11031F091O021Q09\",nly:\"0M0X1N0L\",\"nly \":\"0M1O1N0E\",nlä:\"1006\",nlü:\"1F0D\",nlı:\"1F1Y\",\"nm \":\"0S12\",nmad:\"0Z081F0J\",nmal:\"0N111F05\",\"nmal \":\"0N1Q\",nmar:\"03020Z0810031102\",nmek:\"1F0W1N0P\",nmi:\"0O0F0R0411021F0G1N0M\",nmig:\"0O0N\",nmigo:\"0O0S\",nmo:\"0O020R031O021Q15\",nmu:\"0B1F1106\",\"nmu \":\"0B2S\",nmä:\"1004\",nmü:\"1F0R\",nmē:\"1D17\",nmēr:\"1D1J\",\"nmēr \":\"1D3Z\",nmı:\"1F18\",nmıy:\"1F12\",nmıyo:\"1F1G\",nnac:\"0R040S1T\",nnach:\"0R050S72\",nnai:\"0L200S1E1103\",nnaig:\"0S5P\",nnais:\"0L2H1105\",nnak:\"1104142U\",\"nnak \":\"142Z\",nnan:\"030I0L051019110N131F140L\",\"nnan \":\"030F1013111G132B140M\",nnar:\"0Q02100F134C\",\"nnar \":\"1009135X\",nnas:\"03061006110D13061C19\",\"nnas \":\"030E100611031C1E\",nnast:\"110C130B1C1O\",nnat:\"0Q09100G110J\",\"nnat \":\"100G110D\",nnb:\"1203\",nnea:\"0L020S0T1106\",nnee:\"011X0R1K110J\",nneer:\"011R0R1Z\",nnek:\"032J110J142C\",\"nnek \":\"035I142F\",nnel:\"0L0G0M020Q020R030Z031003111D120I14091C0N1F03\",nneli:\"0R03110212051C1L\",nnell:\"0L0D112Y\",nnem:\"032A0L0H0R030T040Z0J110714121F0J\",\"nnem \":\"034F0T040Z0E14151F0H\",nnen:\"0L0L0N390R5X0Z04100P11221233140H1F05\",\"nnen \":\"0N4O0R7D0Z03100O114Q1228140I1F03\",nnene:\"120L\",nner:\"03020L160M0F0N0Z0Q030R0N0Z16102L1102123B\",\"nner \":\"0L1G0M0I0N0G0R0C0Z1D102I1234\",\"nnes \":\"037T0L1V0N0X0T0N0Z031014110N121G\",nnesk:\"0Z2C121O1314\",\"nnet \":\"03030L020Z0510021109121E\",nnett:\"0L03112Q1F05\",\"nneɣ \":\"0337\",nnf:\"12021308\",nng:\"120413031Q05\",nnh:\"1208\",nnhe:\"120J\",nnhet:\"120J\",nnig:\"010J030A0N040R031002130F\",\"nnig \":\"010I030I0N040R031002130X\",nnin:\"0M0P0R080Z08100P110X120E131F\",nning:\"0M0Z0R0B0Z0A100P120C1325\",nnisk:\"1010\",nnist:\"11361C1E\",nnit:\"0303100311161C0E\",nniu:\"0S0Q\",\"nniu \":\"0S32\",nnl:\"120C130C\",nnle:\"1209130E\",nnli:\"120D\",nnlig:\"120D\",\"nno \":\"0QA80T0Y1A05\",nnom:\"120V\",\"nnom \":\"120P\",nnor:\"0T05100J\",nnos:\"0T1J0U060Y0B111M\",\"nnos \":\"0T1M\",nnost:\"0U091134\",nnr:\"12031304\",nns:\"0N0J101Z120T131F\",\"nns \":\"102N1306\",nnsa:\"1209\",nnsk:\"120T130A\",nnska:\"120D\",nnsky:\"120F\",nnst:\"0N16131D\",\"nnst \":\"0N1Y132E\",nnsy:\"120B\",nnt:\"0N1J0S0N1202130I\",\"nnt \":\"0N191309\",nnte:\"0N29\",\"nnte \":\"0N2K\",\"nnu \":\"03050L0A100D1104130J\",nnut:\"111X\",\"nnut \":\"114K\",nnv:\"1202\",nnya:\"0B6Y1405\",\"nnya \":\"0BCY\",nnyi:\"1105144K\",\"nnyi \":\"141L\",nnyir:\"141H\",nnyt:\"111E\",\"nnyt \":\"1136\",nnä:\"1120\",\"nnä \":\"112M\",nnå:\"1208\",\"nnå \":\"120K\",nné:\"0L1E0S0W0U020Y05140O\",\"nné \":\"0L130S0T0U030Y081404\",nnée:\"0L18\",\"nnée \":\"0L1A\",nnê:\"0L04\",nnö:\"110A1402\",nnō:\"0T04\",\"no'\":\"1Q07\",\"no-\":\"1P18\",\"no-l\":\"1P1J\",\"no-li\":\"1P1T\",noa:\"11101529\",\"noa \":\"111I\",noas:\"1107151R\",noast:\"110I1523\",\"nob \":\"1PBF1Q27\",nobi:\"0T1Z\",nobis:\"0T20\",nobs:\"1P35\",\"nobs \":\"1P3E\",noce:\"0L050M030O110P030Q060T0G0U040Y0B\",noch:\"0N3P0O1U0R0B\",\"noch \":\"0N5Z0R08\",noche:\"0N020O2F\",noci:\"0O0O0U0G0Y0E\",noct:\"0O020T14\",nocte:\"0T0Y\",\"nod \":\"0D09141A\",nodi:\"01270R2K\",nodig:\"012C0R3G\",noe:\"010H0R0E0T05122Z1F08\",\"noe \":\"0T061249\",noeg:\"010P0R0U\",\"noeg \":\"010Q0R13\",noem:\"0R0K0T04\",noen:\"1102123C\",\"noen \":\"11051238\",nof:\"0Q031P4U\",\"nof \":\"1P4Y\",\"nog \":\"011S0D070R440V11100F\",noge:\"0V060Z3Z\",nogen:\"0Z1Y\",noget:\"0Z2Z\",nogl:\"0Z12\",nogle:\"0Z1A\",nogo:\"0V2G\",\"nogo \":\"0V61\",nogur:\"1D1W\",noh:\"0U110Y0P110P1Q0E\",noho:\"0U0Y0Y0K\",\"noho \":\"0U170Y0M\",noi:\"0L0J0M030P1B0Q2M0S1S112V1524\",\"noi \":\"0Q3T111J153B\",noin:\"111R\",\"noin \":\"1140\",nois:\"0L0C0M050S26110K\",\"nois \":\"0L0F0S8M\",noit:\"0P1J110U\",noite:\"0P1X\",noj:\"0O050V0H110B1B1C1D111O2K1Q09\",\"noj \":\"0V0K1O2Y1Q06\",noja:\"0O06110G1B141D0J\",nojau:\"1B1W\",nojn:\"1O15\",\"nojn \":\"1O29\",\"nok \":\"0D040Y0F0Z0Y121D140N1B021N3N\",nokd:\"1N0X\",nokdy:\"1N19\",nokk:\"11051325\",nokku:\"1331\",nokt:\"1F051O0Q\",\"nol \":\"0L051P7S\",\"nol-\":\"1P0T\",noli:\"0T1V\",\"noli \":\"0T1G\",nolob:\"1P7A\",nolol:\"1P2Y\",nolom:\"1P30\",nols:\"1P0R\",nolö:\"1P2V\",nolöd:\"1P14\",nolön:\"1P1Q\",\"nom-\":\"1P1P\",\"nom-l\":\"1P1Z\",noma:\"110N14031B0Q1O08\",nomb:\"0L0U0O0V1O07\",nombr:\"0L1G0O151O0F\",\"nome \":\"0P160Q0P0V061B121O03\",nomen:\"0N020R0L0T1Y12051O02\",nomin:\"0Q020T0T1103\",noms:\"0L0310021B021P3W\",\"noms \":\"0L051B051P4G\",\"non-\":\"0L020M021P0U\",\"non-l\":\"1P0Z\",nong:\"0D1P0T08\",\"nong \":\"0D32\",nonn:\"0L020Q0P0T1M\",nonne:\"0L030Q080T1J\",nons:\"0L0E11021P1Z\",\"nons \":\"0L0M1P24\",nont:\"0B0L11021O0B\",noo:\"010U0D0M0M060R0R110B1C13\",nooi:\"01180R28\",nooit:\"011A0R30\",noon:\"0D0Z0M0A\",\"noon \":\"0D0M0M0D1103\",noong:\"0D17\",noor:\"0R091C15\",nope:\"1117\",nopea:\"112E\",nopi:\"0T031D1G\",nopir:\"1D3C\",\"nor \":\"0M080O080P060Q070T0D100J1505\",nord:\"0L050N040Q0G0Z071008120I15081O05\",norg:\"0Z041003120F1Q0E\",norge:\"0Z041003120F\",nori:\"0M020N020Q020T0415071B7X1O06\",\"nori \":\"15051B7J1O02\",noriu:\"1B78\",nors:\"0Z0410021102120O1B2F\",\"nors \":\"1B4Y\",norsk:\"0Z041002120O\",norve:\"0Q0H0V1P1B041F031O02\",norė:\"1B2U\",norėj:\"1B36\",norėč:\"1B1T\",nosc:\"0P090Q2N0T0T151M\",nosce:\"0Q1G0T0K\",nosci:\"0Q0R0T06\",nosi:\"0U050V0R1A0F1B0C1P11\",\"nosi \":\"0V0P1A0C1B0C1P17\",noso:\"0O160P030Q020T0A1102\",nosot:\"0O1I\",noss:\"0N020P1Y110S1403\",nossa:\"0P17111Z\",nosso:\"0P1B\",\"nost \":\"0U1R0V2V\",nosta:\"0Q050V12112F\",nostr:\"0Q2H0T280V0A150X\",nosť:\"0Y1T\",\"nosť \":\"0Y22\",\"not \":\"03030M5E0N02110915061D0U1F041Q3J\",notei:\"1D1W\",noth:\"0M12\",nothe:\"0M0M\",nothi:\"0M0V\",\"noti \":\"1B1R\",notie:\"1D2F\",notik:\"1D32\",notr:\"0L1N\",notre:\"0L2S\",nott:\"0Q0X110H\",notte:\"0Q0V1103\",nou:\"010Z0L990M0F0P0S0R020U390Y13110N151O\",\"nou \":\"01250P0S0R090U3S0Y1W151B\",noug:\"0M0L\",nough:\"0M0T\",nous:\"0LCN110U\",\"nous \":\"0LJE0M02\",nout:\"0U1H1105\",\"nout \":\"0U22\",nouv:\"0L1Y\",nouve:\"0L3B\",\"nova \":\"0P0R0T0A0U060V0J0Y121O13\",\"novi \":\"0T0N0U070V1M\",novo:\"0P1F0T050U090V0M\",\"novo \":\"03030P1N0T040V17\",nové:\"0U0R0Y0O\",\"nové \":\"0U0T0Y0Q\",now:\"0M4J1A2D\",\"now \":\"0M6W\",nows:\"0M0W\",\"nows \":\"0M18\",nox:\"0T05\",noy:\"0L020M021F021Q07\",noz:\"0O0A0U0214021A021B021D0X1F02\",nozī:\"1D0U\",nozīm:\"1D25\",noë:\"0L0C\",noś:\"1A1A\",ności:\"1A1U\",noš:\"0V031D0G\",npa:\"0B0I1002110O1O041Q04\",\"npa \":\"0B0V110W\",npe:\"11061O03\",npi:\"1104\",npo:\"11041O03\",npr:\"1O04\",npu:\"11031Q15\",npä:\"110C\",nq:\"03030L0A0O060P070Q060T0R1Q07\",\"nq \":\"0L0A\",nqu:\"0L160O0L0P0X0Q0P0T1T1Q0L\",nqua:\"0L060P0K0Q020T1Y\",nquam:\"0T1M\",nquan:\"0L070P0P0Q02\",nque:\"0L0Z0O0I0P0B0Q0U0T0S\",\"nque \":\"0L160O0K0P020Q0T0T0M\",nra:\"03040P04110314021F1U\",\"nra \":\"03020P0314051F1U\",nre:\"0L090N030O0214041502\",nrø:\"1202\",\"ns-\":\"0L0K\",nsad:\"0O0L0P0J10031O02\",nsai:\"0L0P110B\",nsam:\"0N090O060P0A0T0M100R1325\",\"nsam \":\"0N080P040T0N100I\",nsaml:\"134C\",nsan:\"0D0H0O0B0P080Q0A0T0911051F2I1O02\",nsanl:\"1F22\",nsar:\"0O0I0P0I0Q0C1005\",nsas:\"0O090P020T0211021O0X\",\"nsas \":\"0O0B0P021O1V\",nsav:\"0P060Q0U\",nsb:\"1002\",nsc:\"0L080M020N1L0O040P070R060T0815031O07\",nsch:\"0N3W0R0M\",nsche:\"0N2W\",nsd:\"1O02\",nseg:\"0O0G0P1F0Q2T\",nsegn:\"0Q2S\",nsegu:\"0O0L0P1T0Q02\",nsei:\"0L110N040P0G\",\"nsen \":\"033F0N030R2T0Z071006120A\",nseo:\"0S2H0T02\",\"nseo \":\"0S920T03\",\"nser \":\"0D030L0V0N0P0Z0A1004120G1F04\",nsere:\"0N1X12041F02\",\"nses \":\"0D0U0L0I0M020O060P040R030T0A\",nset:\"0P030Q020Z03120J\",nseñ:\"0O0K\",\"nseɣ \":\"032S\",nsf:\"0L020O020P040T0210021503\",nsh:\"04850M04\",nsha:\"049A\",nshak:\"04ET\",nshi:\"049Y0M06\",\"nshi \":\"04EF\",nsho:\"045Y\",nshob:\"04A4\",\"nsi \":\"032A04AY0B060L0G0Q0N0T0511151B051O07\",nsid:\"0L0C0M0G0O0G0P0D0Q0B0T09150L1O0H\",nside:\"0M0N0O0K0P0G0Q0B0T05150R1O0T\",nsie:\"010N0L080Q0F1A02\",\"nsie \":\"010I1A03\",nsig:\"0O090P0N0Q0I0T030Z091O02\",nsigo:\"0O030P0R\",\"nsin \":\"0D090S4I100J110X1F07\",nsind:\"0Z0L\",nsint:\"0S32\",\"nsis \":\"0T0Y1O0R\",nsiy:\"0D0G1F02\",nsiya:\"0D0P\",nsj:\"12061A02\",\"nsk \":\"0Z20100D121O1308\",nska:\"010J0U040V050Y0D0Z08103C1146120P130L\",\"nska \":\"0U060V0D0Y0G102G110H130Z\",nskaa:\"115R\",nskap:\"010G100C120N\",nskar:\"100G\",nske:\"0V040Y080Z34100J1248\",\"nske \":\"0V0B0Z15100I1229\",nsked:\"0Z0M\",nskel:\"0Z0A120V\",nsker:\"0Z1T120W\",nskj:\"120J\",nskje:\"120J\",nsku:\"0U070V040Y0E131S\",\"nsku \":\"0U090V0B0Y0H1335\",nsky:\"0U070Y1U120F\",\"nsky \":\"0U0A0Y2A\",nskyl:\"120F\",nsm:\"0L020P020Z021502\",\"nso \":\"0N020O0J0P0C0Q3J1B021O05\",nsom:\"0L040Z031209\",nsq:\"0T02\",nss:\"112L\",nssa:\"113Y\",\"nssa \":\"116G\",\"nst \":\"0M0A0N210R0I0Z03100A120A1316\",nsul:\"0D030L070M030O070P060Q060T0O150O1O0A\",nsuz:\"1F061N2N\",\"nsuz \":\"1F031N17\",nsuzç:\"1N2F\",nsv:\"0Z0210081203\",nsw:\"0M080N02\",nswe:\"0M0F0N04\",nswer:\"0M0L0N05\",nsy:\"0D020Z05100212071A03\",nsyn:\"0Z0E1002120I\",nsá:\"0O020P05140B\",nsã:\"0P04\",nsä:\"112C1P0V\",\"nsä \":\"1144\",nsän:\"1P0Y\",nså:\"10021202\",nsæ:\"1307\",nsé:\"0L0I0O0C140C\",nsó:\"0O031303\",nsı:\"1F1X\",nsız:\"1F1S\",nsızc:\"1F21\",\"nt'\":\"0Q06\",\"nt-\":\"03580L0P\",\"nt-d\":\"031O\",\"nt-d \":\"0331\",\"nt-i\":\"03140L0O\",ntaa:\"0B050R04111I\",\"ntaa \":\"112S\",ntac:\"042D0L050M040O0A0R070S1T0T0B1509\",ntach:\"0S72\",ntaco:\"0441\",ntad:\"0O100P150Q02100814021O03\",ntado:\"0O110P0S1O04\",ntag:\"0L0Q0M030N0D0O020P040Q0A0Z041006\",ntah:\"0B0H0D0411021Q17\",ntai:\"0B170L0R0M0A0P030R020S0T11181B0E\",\"ntai \":\"0B20110F1B0O\",ntaj:\"0O0511061F031O0U\",\"ntaj \":\"1O1F\",ntand:\"0O0H0P0S0Q08\",ntang:\"042M0B3V0D0I\",ntap:\"11031P2E\",ntapü:\"1P2S\",\"ntar \":\"0B1M0O1C0P2P100J1204130K1505\",ntare:\"0N020P050Q0V0T0510021507\",\"ntas \":\"0B0U0D020O1J0P170T061B2C1O26\",ntato:\"0P040Q0S\",ntay:\"0D0I\",\"ntay \":\"0D0R\",ntaŭ:\"1O2D\",\"ntaŭ \":\"1O2W\",ntb:\"01070R041402\",ntd:\"0N02\",ntec:\"0O020P1I1004150F1O0C\",ntece:\"0P1Q\",nted:\"0M200P020Z0A140D1O02\",\"nted \":\"0M2Q140E\",ntee:\"0M030R07111W\",nteek:\"112Z\",ntege:\"043V1403\",ntei:\"0N030P0Z110I\",ntell:\"0L0M0M050N090Q0D0R070T1O0Z06100412081406\",\"ntem \":\"0P1I0T2U0U06141Q151R1A0E\",\"nten \":\"0N1W0O040R1D0Z0H10071109120N1405\",ntena:\"0L2A0O020P0311021O03\",ntend:\"0L2K0M070O0Z0P1D0Q0D0T03\",ntent:\"0D050L1J0M060O1K0P060Q090T1A1O0M\",nteo:\"0S1A\",nteoi:\"0S58\",\"ntes \":\"0L1K0N040O5H0P470R020T2Q0Z0712061404\",ntet:\"0N020Z0Z1005120T14101O05\",\"ntet \":\"0N030Z151005120R1402\",ntf:\"0N03\",nth:\"0L020M0A0N030R020T04140B\",ntia:\"0B040M040P040Q030T34111A\",\"ntia \":\"0P040T1U112Q\",ntib:\"04650T0S\",ntiba:\"0441\",ntibi:\"0474\",ntibu:\"0T0U\",ntic:\"0M040O090P050Q120T0E150A\",ntid:\"041V0O0J0P0E1F04\",ntidu:\"043C\",ntie:\"0L0L0N050O0U0Q060R0N0T0311051B04\",ntien:\"0L070O110Q030R021105\",ntig:\"0D020O0U0P0J0R091O07\",ntik:\"0B0V0D040N02110414051F041O06\",\"ntil \":\"0L080M0M0O030P060V06\",ntimu:\"0459\",ntind:\"0D0M0P0B1505\",nting:\"0B180D0B0M0C0T030Z05101Q12191B0L\",ntinu:\"0L0V0M0A0O0A0P0N0Q0Q0T03151F\",ntio:\"0L0X0M0C0T0U1102\",ntion:\"0L1K0M0G1102\",ntir:\"0L0C0M040O0L0P0K0Q0N0T07\",\"ntis \":\"0L030T0Y11021B221O20\",ntito:\"0Q0U\",ntitu:\"043I0T04\",ntiu:\"0P060T0R\",ntiw:\"0426\",ntiy:\"041Z\",ntj:\"0R0414041O02\",ntk:\"1403\",ntl:\"010D0M0B0N0C0Z05100D12071F02\",ntli:\"010Q0N0N0Z0D100G120I\",ntlig:\"0Z0F100G120H\",ntlik:\"010S\",ntly:\"0M0H\",\"ntly \":\"0M0N\",ntm:\"01080R06\",ntmo:\"010J0R0O1402\",ntmoe:\"010K0R0W\",ntn:\"0N020T0D0U040V0A1A04\",ntne:\"0T0O\",ntoe:\"010H\",\"ntoe \":\"010I\",ntoi:\"1115\",ntoj:\"11041B081O1X\",\"ntoj \":\"1O2O\",\"nton \":\"0B190L02110314021O27\",ntos:\"0O240P220Q030T051103141M1B061O07\",\"ntos \":\"0O2P0P2J0T04140S1B0D1O0D\",ntou:\"0L060P1D1105\",\"ntou \":\"0P1M\",ntq:\"0T08\",\"ntr-\":\"152T\",\"ntr-o\":\"152B\",\"ntra \":\"0L070O110P0Q0Q040T0N0U0215061O04\",ntrar:\"0L050O1N0P1G0Q0O0T061508\",ntras:\"0O110P021B041O09\",ntraŭ:\"1O1S\",\"ntre \":\"0L3Q0O1B0P150Q0C0Z02152Q1B071F021O04\",ntreb:\"1530\",ntrer:\"0L1Q0Q030R0210021506\",ntres:\"0L050O02100K\",\"ntro \":\"0O0X0P0V0Q0Y0T051B031O0C\",ntru:\"0N020R050Z0215AC1A031B031O03\",\"ntru \":\"15CQ1O06\",ntry:\"0M0F1B04\",\"ntry \":\"0M0J\",ntré:\"0L110O0D\",\"nts \":\"0L5C0M2B0N020R0214021D18\",ntsu:\"1C1R\",ntsus:\"1C48\",ntt:\"0N02110O1F02\",ntuk:\"0B7R\",\"ntuk \":\"0BDJ\",ntul:\"0D020T05110415291O02\",\"ntul \":\"152G\",\"ntum \":\"0N020T311B04\",ntun:\"042R0B10110F13071509\",\"ntur \":\"0T31130F\",ntus:\"042K0O020P020Q020T0U14031B041O0H\",\"ntus \":\"0T0V1B081O0Y\",ntv:\"0R03\",ntw:\"010E040C0N0F0R0C\",ntwo:\"010N0N0R0R11\",ntwoo:\"010P0R1D\",nty:\"0M030U031002110X1A0C1B08\",ntá:\"0O040P080U031407\",ntâ:\"152H\",ntâln:\"151R\",ntâm:\"151S\",ntâmp:\"152B\",ntã:\"0P0K\",ntão:\"0P0O\",\"ntão \":\"0P0V\",ntä:\"1002112T1N0A\",\"ntä \":\"1137\",nté:\"0L1G0O0A0P04140N\",\"nté \":\"0L140O0A\",ntér:\"0L11\",ntì:\"0Q02\",ntí:\"0O0D0P041308\",ntò:\"0Q05\",ntó:\"0O0U130314071A07\",\"ntó \":\"0O1413051406\",ntô:\"0L0A\",ntö:\"11071409\",ntā:\"0T02\",ntă:\"151I\",\"ntă \":\"1525\",ntą:\"1B0D\",ntē:\"0T02\",ntė:\"1B0A\",ntī:\"0T04\",ntį:\"1B0D\",ntı:\"1F0X\",ntū:\"0T02\",ntų:\"1B0A\",\"nu-\":\"03021536\",\"nu-i\":\"152I\",\"nu-i \":\"1537\",\"nu-mi\":\"151V\",\"nua \":\"0P040Q050S160T08116415051O0G\",nuac:\"0S0M\",nuach:\"0S2K\",nuai:\"0S18\",nuair:\"0S4Z\",nub:\"03090D030O040T0A1B061O031Q04\",\"nud \":\"03021CDN1Q08\",nudo:\"0O0J\",nue:\"0L0Q0M040O2O0P030T051B051O05\",\"nue \":\"0L0P0M030P021O07\",nues:\"0L060O23\",nuest:\"0O2R\",nuev:\"0O21\",nueva:\"0O0Y\",nuevo:\"0O1J\",nuf:\"0304100312021O02\",nug:\"03030N0613041B0E1C191Q0F\",nuga:\"1B0K1C1K\",\"nuga \":\"1C3V\",nuh:\"0B0K0D021Q08\",\"nuh \":\"0B0R\",nuit:\"0L110R050T0C150I\",\"nuit \":\"0L1N0R050T0C150I\",nuj:\"03150B060U0G1A0F1O081Q08\",nukk:\"111E\",nukku:\"1138\",\"nul \":\"0L040R030U0Q0Y0A0Z03140Q155O\",nula:\"0D060T040U040V0915051F02\",nuli:\"0B0U0U021B0C1O061P0U\",nulik:\"1P0Z\",nulis:\"0B1N1B09\",null:\"0L050N020Q1D0T1D11B41403\",nulla:\"0Q1C0T0L11D91402\",nulle:\"0L0811DP\",nult:\"110L140Q1C1G\",\"nult \":\"14091C3L\",\"num \":\"03050B0Y0P0J0T8A13DP1F0B\",numm:\"03040N050R0A0T0A0Z0A10041209\",numq:\"0T0T\",numqu:\"0T0V\",\"nun \":\"03070N0A11AZ1F891O1H\",nunc:\"0O2D0P2O0Q0A0T2N1504\",\"nunc \":\"0T2P\",nunca:\"0O2Q0P35\",nung:\"0B1N0D0A0N1C130F\",\"nung \":\"0B0Z0N1X\",nungg:\"0B27\",\"nunk \":\"1412\",nunl:\"1F17\",nunla:\"11021F1N\",nunq:\"0T13\",nunqu:\"0T15\",nunt:\"0N030T0T110F1O05\",nuo:\"0P040Q1T0T020V0G110S1A021B451O03\",\"nuo \":\"0O020P020Q040T040V0J11071B2B1O02\",nuoj:\"1B0S\",nuom:\"1B0Q\",nuomo:\"1B1I\",nuor:\"1114\",nuos:\"1B0X\",nuot:\"0Q0M1B0W\",nuov:\"0Q271B02\",nuova:\"0Q0W\",nuovo:\"0Q0Z1B04\",nup:\"0T041B0H\",nuq:\"1Q57\",\"nuq \":\"1Q55\",nuqd:\"1Q3R\",nuqda:\"1Q6F\",\"nur \":\"0N2P13231F021O26\",nuru:\"0B0P0T04\",nusi:\"0B0K1B2Z\",nusip:\"1B2H\",nust:\"0T0311291B0X1C29\",\"nust \":\"1C2G\",nusta:\"0T0211531B051C31\",nute:\"03050L0H0M0C0N0B0Q030R0B100C150K1B04\",nuto:\"0D040O0J0P0G0Q0V0U021O0A\",\"nuto \":\"0D040O060P050Q0W1O02\",nutt:\"0R040Z0F1105120F1F0C\",nutte:\"0R020Z0J120D\",nuu:\"0107110K\",nuv:\"0P030Q021B0E1Q1S\",nuw:\"010H03020R02\",nuwe:\"0114\",\"nuwe \":\"0115\",nuy:\"0L041F0F\",nuz:\"0305040G1F1F\",\"nuz \":\"1F1F\",nuð:\"130N\",nuñ:\"1N1P\",\"nuñ \":\"1N2G\",nuė:\"1B08\",nuň:\"1N30\",\"nuň \":\"1N4A\",nuş:\"1F3V\",nuşa:\"1F0X\",nuşm:\"1F21\",nuşma:\"1F2N\",nuşu:\"1F0X\",nven:\"0L0C0M040O0N0P0G0Q0C0T1Y0Z0315071O0H\",nveni:\"0M020O090P020T1O1O06\",nvers:\"0L0L0M040N090O0A0P0T0Q040T04150A1O09\",nvit:\"0L0I0M070O0F0P020Q0J0T0B0Z0B120B150D1O07\",nvo:\"0L0E0M020O030P080Q030R030T0211021O0N\",nvol:\"0L020M040O040P080Q050R020T020Z021O0Z\",nvolu:\"0O031O1G\",nvä:\"100O1102\",nvän:\"100U\",nvänd:\"100T\",nví:\"0O02\",nvă:\"150R\",nvē:\"0T06\",nvī:\"0T02\",nw:\"031I04050N080R051Q0E\",nwa:\"031E040G0N041Q03\",nwe:\"03380N040R04\",nwen:\"033F\",\"nwen \":\"0346\",nwent:\"033M\",nwi:\"030L0N021Q1C\",nwo:\"0R02\",nx:\"0T02\",nxi:\"0T04\",\"nya \":\"030704GG0BPJ0D0T100P140R1F0P\",nyaa:\"0B0K\",nyab:\"04291403\",nyabu:\"0435\",nyai:\"0B0H1406\",nyak:\"0B3V140I\",\"nyak \":\"0B6I\",nyal:\"0B0J140A1F02\",nyam:\"0302042K0B0C\",nyama:\"0304043O0B0E\",nyan:\"030204190B0Q0D1B140F1F07\",nyang:\"0B0B0D28\",nyat:\"0B0J1404\",nyb:\"0M051002140A1B07\",nyc:\"0Y0510091A18\",nych:\"0Y081A1S\",\"nych \":\"0Y0A1A2V\",nyd:\"0Z02\",nye:\"047N0B1C0Z09120B143A\",\"nye \":\"04C60Z0O120R140C\",nyel:\"0B0Q142T\",nyelv:\"142H\",nyen:\"045Y0B0J140Q\",nyene:\"049I\",nyer:\"04150B0B141D\",nyes:\"042H0B04140D\",nyesh:\"0447\",nyf:\"1003\",nyg:\"10021B1S\",nyga:\"1B0Y\",\"nyga \":\"1B1E\",nygą:\"1B16\",\"nygą \":\"1B2G\",nyh:\"0Z02100512021408\",nyi:\"030304210B0P1103142M\",\"nyi \":\"041Z0B0L141T\",nyin:\"041O1104\",nyir:\"141H\",nyit:\"141X\",\"nyit \":\"140Z\",nyj:\"14061B08\",nyk:\"110E140A1B03\",nyl:\"10021202140D\",nym:\"0M0B0Y051A1Q1N1C\",\"nym \":\"0Y081A251N0Q\",nymo:\"0M0J\",nymor:\"0M0Q\",nyn:\"0U03110314041B031N1U\",nyny:\"1N1B\",\"nyny \":\"1N1Q\",nyo:\"042T0B070D1U0M0A141U1F0A\",\"nyo \":\"042H0D2Q1F03\",nyok:\"041O140K\",nyom:\"141Q\",nyon:\"042K0D0O0M0I1402\",nyone:\"0M0O\",nyong:\"0D15\",nyp:\"1N0W\",\"nyp \":\"1N17\",nys:\"0Z02100514091B0Q\",\"nys \":\"1B12\",nyt:\"0M0M0Z071008115X120A140T1B02\",\"nyt \":\"0Z0911A6141M\",nyth:\"0M13\",nythi:\"0M1H\",nytt:\"0Z08100A1105120L\",nyu:\"030H043T0B0P140S\",\"nyu \":\"044C1406\",nyug:\"141B\",nyuk:\"0B0T1409\",nyuka:\"0B1M\",nyum:\"043V0B09\",nyuma:\"045R\",nyv:\"1415\",nyve:\"141U\",nyvet:\"1413\",nyw:\"041H0M031A02\",nywa:\"043R0M021A02\",\"nywa \":\"046A\",nyz:\"140C\",nyá:\"140Y\",nyé:\"140N\",nyí:\"140D\",nyñ:\"1N1X\",\"nyñ \":\"1N2I\",nyň:\"1N4F\",\"nyň \":\"1N5R\",nyş:\"1N1E\",nyű:\"140B\",\"nz \":\"03030N0G14091504\",\"nza \":\"0303042Z0O0P0Q5D1504\",\"nze \":\"049D0L050N0J0P050Q0Q0R1B0U021407\",\"nzi \":\"030404CQ0Q04150D\",nzia:\"0Q0Q\",nzio:\"0Q1J\",nzion:\"0Q1D\",nzir:\"043O\",nzira:\"046A\",nzo:\"043Y0M020O030Q0K1O03\",nzob:\"0422\",nzog:\"0432\",nzok:\"042H\",nzt:\"0N03140G\",nzu:\"030B042C0N0C1507\",\"nzu \":\"0307046F\",nzw:\"040I\",nzó:\"0O06\",nzö:\"0N0C\",ná:\"0P050S230U5B0Y50130P143E\",\"ná \":\"0S2U0U3M0Y4X13091407\",nác:\"0U0D1408\",nád:\"0U0A0Y0J140A\",nádhe:\"0U050Y0X\",náh:\"0U070Y0G\",nái:\"0S1N\",náis:\"0S1J\",náisi:\"0S65\",náj:\"0Y0P\",nál:\"0U060Y0413071449\",\"nál \":\"0U02142O\",nála:\"0U051417\",náln:\"0U02141Z\",nálni:\"141J\",nált:\"141M\",nálta:\"140Y\",nám:\"0S0V0U2B0Y1O13071408\",\"nám \":\"0U2K0Y28140L\",námh:\"0S11\",\"námh \":\"0S32\",nár:\"0P0F0S0M0U070Y0Q140C\",\"nár \":\"0S0Q140E\",nári:\"0P0I\",náro:\"0U090Y0X1404\",nás:\"0U1B0Y1K1404\",\"nás \":\"0U1P0Y1F1403\",náv:\"0U0M0Y0L\",náš:\"0U0Y0Y0V\",\"náš \":\"0U0W0Y10\",nâ:\"1509\",nân:\"1510\",nânc:\"151M\",nã:\"0P64\",não:\"0PLP\",\"não \":\"0POH\",nä:\"0N0B101N11611C1K1N5P1P0R\",\"nä \":\"11DF\",näc:\"0N09\",näd:\"1C0P1N13\",näda:\"1C0V\",nädal:\"1C26\",nädi:\"1N1F\",nädip:\"1N1X\",näe:\"110F1C15\",näg:\"1C1G\",nägi:\"1C15\",näh:\"0N0611161C0H1N1E\",nähi:\"1N21\",nähil:\"1N2R\",näi:\"11161C10\",näin:\"11181C0K\",\"näin \":\"112O\",näj:\"1104\",näk:\"111A\",näl:\"100M110G1C0D\",näll:\"100U1104\",\"näll \":\"100K\",näm:\"1003110I1N6J\",näme:\"1N8X\",\"näme \":\"1NBK\",nän:\"11081P0N\",näo:\"1C0G\",när:\"102Q\",\"när \":\"102T\",näs:\"10121103\",näst:\"10191102\",nästa:\"1016\",nät:\"10041107\",näy:\"111P\",näyt:\"1133\",näytt:\"115E\",nää:\"112G\",\"nää \":\"111T\",nään:\"112L\",\"nään \":\"115X\",näç:\"1N1W\",näçe:\"1N2O\",\"näçe \":\"1N3E\",nå:\"0Z0L101P121N\",\"nå \":\"0Z0210021217\",nåd:\"10031202\",nåe:\"0Z02\",någ:\"104E\",någo:\"1052\",någon:\"103I\",något:\"101O\",någr:\"100Y\",några:\"100Y\",nål:\"1003\",når:\"0Z0S1003121E\",\"når \":\"0Z23123J\",nåt:\"1003\",næ:\"0T030Z0M1209130X\",\"næ \":\"0T06\",næg:\"0Z03130C\",nær:\"0Z0B120E130V\",\"nær \":\"0Z091209130Y\",nærh:\"0Z041208\",nærm:\"0Z09120C\",næs:\"0Z0G130P\",næst:\"0Z131315\",næste:\"0Z19\",nç:\"0L070P0S1F0N1N1T\",\"nç \":\"1F1D1N1L\",nça:\"03020L0Z0P2N1N0L\",\"nça \":\"0L060P1W1N0J\",nçai:\"0L1G\",nçais:\"0L2B\",nças:\"0P0X\",\"nças \":\"0P15\",nçi:\"1N0E\",nço:\"0L020P06\",nçy:\"1N0G\",nçã:\"0P0K\",nção:\"0P0O\",\"nção \":\"0P0V\",nçõ:\"0P03\",né:\"0L0U0O070P020S0F0U2E0Y2V1303143W\",\"né \":\"0L1N0O050P030Q040S0P0U3W0Y6713031405\",néc:\"0L07\",née:\"0L1J\",\"née \":\"0L1W\",nées:\"0L0O\",nég:\"0L041409\",néh:\"0U0P0Y0P140N\",ného:\"0U160Y18\",\"ného \":\"0U1M0Y1J\",néhán:\"1415\",néi:\"0O04\",nék:\"1414\",\"nék \":\"142T\",nél:\"141G\",\"nél \":\"1424\",nélk:\"141I\",nélkü:\"141M\",ném:\"0L040U090Y08140V\",\"ném \":\"0U0A1418\",nén:\"140B\",nér:\"0L0A13031405\",nés:\"0L060O0C0U031407\",néz:\"141N\",nê:\"0L030P03\",nês:\"0P0B\",nêt:\"0L0F\",ní:\"0O0E0P030S730U790Y2C13071408\",\"ní \":\"0SA00UAL0Y2M\",nía:\"0O15\",\"nía \":\"0O1H\",níc:\"0P040U0D0Y0A\",níh:\"0U0D0Y0I\",ník:\"0U120Y1F\",\"ník \":\"0U150Y1R\",níl:\"0S87\",\"níl \":\"0S99\",níli:\"0S0M\",nílim:\"0S2K\",ním:\"0U190Y10\",\"ním \":\"0U1S0Y1D\",nío:\"0S3S\",níon:\"0S1C\",\"níon \":\"0S3J\",níor:\"0S16\",\"níor \":\"0S49\",níos:\"0S1N\",\"níos \":\"0S6M\",nít:\"0U02140E\",nív:\"0P050Y05\",níz:\"0U0N\",níze:\"0U10\",\"níze \":\"0U1E\",nò:\"0Q02\",\"nò \":\"0Q08\",nó:\"0O080P0Q0S0W130F14041A0B\",\"nó \":\"0O0L0S1B1402\",nóm:\"0O04\",nós:\"0P321A04\",\"nós \":\"0P3Q\",nô:\"0Y03\",nõ:\"1C0D\",nõu:\"1C14\",nõus:\"1C0R\",nö:\"0N03100A1104140R1P4Q\",\"nö \":\"1004\",nöa:\"1004\",nöd:\"10051402\",nöf:\"1P0B\",nöj:\"1007\",nök:\"1102140L\",nön:\"10021P7L\",\"nön \":\"100311021P9F\",nös:\"11041407\",nø:\"0Z0D120I\",\"nø \":\"1203\",nød:\"0Z0B1209\",nødt:\"0Z0J\",\"nødt \":\"0Z0M\",nødv:\"0Z05120C\",nødve:\"0Z07120C\",nøe:\"1202\",nøg:\"0Z06\",nøgl:\"0Z0F\",nøgle:\"0Z0I\",nøj:\"0Z02\",nøk:\"1204\",nøt:\"1202\",nøy:\"1206\",nú:\"0O050P040S090Y11130U1403\",\"nú \":\"0Y15130L\",núm:\"0O0B0P0D1309\",nún:\"0P02130I\",nút:\"0O020P020Y0I130D\",núť:\"0Y0V\",\"núť \":\"0Y1I\",nü:\"0N06140H1C0D1F321N0L1P0N\",\"nü \":\"1F1O\",nüd:\"1P0I\",nül:\"140B1F05\",nüm:\"1F0P1N0E\",nün:\"140I1F0S1P0D\",nünk:\"141A\",\"nünk \":\"1414\",nüy:\"1F3P\",nüyo:\"1F46\",nüyor:\"1F5O\",nüz:\"1F0V\",\"nüz \":\"1F0X\",nüü:\"1C19\",nüüd:\"1C1J\",\"nüüd \":\"1C3O\",ný:\"0U2M0Y3B130N1N2D\",\"ný \":\"0U4L0Y711304\",nýa:\"1N1U\",nýar:\"1N1R\",\"nýar \":\"1N14\",nýc:\"0U0C0Y0L\",ných:\"0U0J0Y11\",\"ných \":\"0U0R0Y1A\",nýj:\"130Q\",ným:\"0U0E0Y0U\",\"ným \":\"0U0H0Y10\",nýä:\"1N2X\",nýär:\"1N2J\",\"nýär \":\"1N1L\",nþ:\"1306\",nā:\"0T071D4X\",\"nā \":\"0T021D3J\",nāc:\"1D11\",nāj:\"1D4G\",nāja:\"1D2Y\",\"nāja \":\"1D5Y\",nāju:\"1D1P\",\"nāju \":\"1D2A\",nāk:\"1D2H\",nāka:\"1D0S\",nāks:\"1D0W\",nāl:\"1D0E\",nām:\"1D0R\",nān:\"1D0H\",nār:\"0T04\",nās:\"1D2F\",\"nās \":\"0T021D2S\",nāt:\"0T081D4I\",\"nāt \":\"1D3F\",nāts:\"1D0X\",\"nāts \":\"1D2F\",nāš:\"1D0X\",nāša:\"1D0X\",nāšan:\"1D2F\",nă:\"152E\",\"nă \":\"157B\",năt:\"150R\",ną:\"1A1P1B1L\",\"ną \":\"1A271B4D\",nął:\"1A0S\",nĉ:\"1O09\",nĉe:\"1O03\",nĉi:\"1O06\",nĉo:\"1O04\",nč:\"0U0E0V030Y0F1B0H1D05\",nči:\"0U0H0Y0H1B19\",nčia:\"1B0W\",nču:\"1D0G\",nē:\"0T071D0O\",\"nē \":\"0T031D0Y\",nēj:\"1D0G\",nēm:\"0T04\",nēs:\"0T08\",nēt:\"1D0X\",nė:\"1B2A\",\"nė \":\"1B1W\",nėj:\"1B0T\",nėm:\"1B07\",nėr:\"1B1K\",nėra:\"1B2H\",\"nėra \":\"1B54\",nės:\"1B1N\",\"nės \":\"1B2I\",nėt:\"1B08\",nę:\"1A0U1B0W\",\"nę \":\"1A141B13\",nęs:\"1B1G\",\"nęs \":\"1B2D\",ně:\"0U73\",\"ně \":\"0U6X\",něc:\"0U1D\",něco:\"0U28\",\"něco \":\"0U34\",něj:\"0U1M\",něja:\"0U19\",nějak:\"0U1Q\",nějš:\"0U0Q\",nější:\"0U10\",něk:\"0U26\",někd:\"0U1W\",někdo:\"0U1H\",někdy:\"0U12\",něko:\"0U0Y\",někol:\"0U0R\",někte:\"0U0R\",něl:\"0U0Q\",\"něl \":\"0U0R\",něm:\"0U0I\",něn:\"0U0J\",něz:\"0U0E\",nĝ:\"1O1G\",nĝa:\"1O0N\",nĝe:\"1O0C\",nĝi:\"1O0X\",\"nĝi \":\"1O0N\",nĝo:\"1O0K\",nĝu:\"1O04\",nī:\"0T031D1A\",\"nī \":\"0T04\",nīb:\"1D1L\",nība:\"1D0Z\",\"nība \":\"1D21\",nīc:\"1D0Q\",nīg:\"1D1C\",nīj:\"1D0Q\",nīs:\"1D0G\",nį:\"1B0P\",\"nį \":\"1B1X\",nı:\"1F9X\",\"nı \":\"1FBV\",nıd:\"1F0D\",nıf:\"1F0F\",nıl:\"1F0H\",nım:\"1F1A\",nın:\"1F5F\",\"nın \":\"1F4P\",nında:\"1F14\",nır:\"1F21\",nırı:\"1F1N\",nırım:\"1F26\",nıt:\"1F0E\",nıy:\"1F1V\",nıyo:\"1F1Z\",nıyor:\"1F2P\",nız:\"1F32\",\"nız \":\"1F2F\",nış:\"1F0Q\",nō:\"0T0L\",\"nō \":\"0T04\",nōb:\"0T04\",nōl:\"0T03\",nōn:\"0T0S\",\"nōn \":\"0T14\",nōs:\"0T07\",nő:\"1410\",\"nő \":\"140H\",nőv:\"140B\",nŝ:\"1O03\",nŝa:\"1O04\",nş:\"1F031N04\",nš:\"0U030Y03\",nţ:\"1509\",nū:\"1B021D04\",nů:\"0U07\",nű:\"1405\",nų:\"1B0H\",\"nų \":\"1B1A\",nž:\"0U060Y05\",nže:\"0U0C0Y0A\",nș:\"1504\",nț:\"151S\",nța:\"151K\",\"nța \":\"1524\",nțe:\"151Y\",nțel:\"152F\",nțele:\"1531\",nți:\"1526\",nță:\"151I\",\"nță \":\"152F\",nɣ:\"0308\",nṛ:\"0303\",nẓ:\"0304\",\"o'\":\"0D070M040Q0A0R051F051Q63\",\"o' \":\"0Q151QED\",\"o'c\":\"0M021Q04\",\"o'n\":\"0R031F031Q0C\",\"o's\":\"0M060R05\",\"o's \":\"0M0C0R0I\",\"o't\":\"1Q09\",\"o'y\":\"0D071F05\",\"o'y \":\"0D0C\",\"o-l\":\"0P041P1J\",\"o-li\":\"1P1Y\",\"o-li \":\"1P2A\",\"o-m\":\"0P07\",\"o-o\":\"0P031104\",\"o-s\":\"0P04\",\"oa \":\"0P1C1003113Y\",oaa:\"1109\",oac:\"0M030T02150D\",oad:\"0M080P0410021508\",oak:\"1103\",\"oală \":\"151V\",oam:\"0P0211041526\",oame:\"153A\",oamen:\"153N\",oann:\"0T0X\",oap:\"15191B03\",oar:\"0M040P071004159D\",\"oar \":\"0P0610031527\",oare:\"155E\",\"oare \":\"154S\",oart:\"156Q\",oarte:\"157Y\",oas:\"0M020P1I110B153I1C0B\",\"oas \":\"0P1S\",oast:\"0M03110B1535\",oastr:\"153I\",oasă:\"151V\",\"oasă \":\"152E\",oat:\"0M070P020Q021102154R1O02\",oate:\"1560\",\"oate \":\"157I\",oată:\"151U\",\"oată \":\"152D\",oav:\"10021104\",oaz:\"1505\",\"ob-\":\"1P0O\",\"ob-l\":\"1P0U\",obab:\"0L0C0M0P0O0A0Q0J150Z1O04\",obabl:\"0L0J0M0Y0O0C1O07\",obacz:\"1A1R\",obai:\"0S2W\",obair:\"0SAC\",\"obb \":\"100K120I142K\",obba:\"100I141O\",obban:\"141K\",obbe:\"0M020Q040Z07100G121T1Q0B\",\"obbe \":\"120F\",obben:\"120E\",obber:\"0M02120O\",obbet:\"0Z02100F1208\",obbi:\"0Q0R10021404\",obbia:\"0Q0Q\",obee:\"010W0R10\",obeer:\"010Y0R1D\",\"ober \":\"0B0A0M090N050R060Z0H1002\",obes:\"1P1I\",\"obes \":\"0L021P1R\",obh:\"0S2H1Q06\",\"obh \":\"0S28\",\"obi \":\"0B050T020V071A0O1P3I\",obie:\"0N040O0A0Q050R0515081A3E\",\"obie \":\"1A34\",obik:\"0B051P8K\",\"obik \":\"1P9S\",\"obil \":\"0B2P0U0C0V0T0Y3I0Z0410021507\",obila:\"0U030V0D0Y11\",obili:\"0L030Q050T040Y0M1A0C1B1S\",obino:\"1P2F\",obis:\"0T2R1A0D1B021P11\",\"obis \":\"0T2G1B051P17\",obić:\"1A2E\",\"obić \":\"1A3T\",obił:\"1A1R\",obiť:\"0Y3R\",\"obiť \":\"0Y4N\",oblee:\"010I0R0Z1C1V\",oblè:\"0L14\",oblèm:\"0L1W\",oblé:\"0U1D0Y0N1414\",oblém:\"0U1S0Y0S1416\",oblē:\"1D0U\",oblēm:\"1D25\",obn:\"0U0G0V090Y121A0K1Q0C\",obod:\"0M0B0U0D0V0D0Y0Y1B09\",obor:\"04LG0O020T021508\",obora:\"04S6\",obra:\"0D0B0O0D0P0C0U0B0V0Z0Y0U15051A0Z\",obre:\"0D020L030O270P2R0Q030T020V070Y281A0I\",\"obre \":\"0D030L040O2C0P2Z0Q030V0G0Y2R1A0J\",obri:\"0O030P150T0H0V0A\",obrig:\"0P0T1O02\",obro:\"0P020U0F0V1X0Y0E1A041O02\",\"obro \":\"0U020V401O04\",obrz:\"1A1K\",obrze:\"1A2F\",obrá:\"0U0G0Y18\",\"obrá \":\"0U0B0Y0X\",\"obré \":\"0U0L0Y10\",obrý:\"0U0U0Y1A\",\"obrý \":\"0U0Z0Y1F\",\"obs \":\"0M031PAQ\",obsi:\"1P12\",obsik:\"1P19\",obsö:\"1P0X\",obt:\"0L060O040P030T060U060Y0514031Q0C\",obv:\"0M020O020T020U0E0Y05\",obw:\"040V0N021A02\",obwa:\"0429\",\"obwa \":\"0441\",oby:\"0D020U0B0Y0E1A0L\",obá:\"0U070Y06140M\",obé:\"0L04\",obí:\"0U0B0Y1F\",\"obí \":\"0U0A0Y10\",obó:\"0O041A02\",obö:\"1P12\",obön:\"1P0R\",obú:\"0O07\",obü:\"1F0F\",obą:\"1A0S\",obě:\"0U17\",\"obě \":\"0U19\",obľ:\"0Y0E\",obř:\"0U0Z\",obře:\"0U1J\",\"obře \":\"0U23\",\"oc \":\"0L020T350U1X0Y12151L1A0I\",\"oca \":\"0O0Q0P0L0Q0C0T040V071F02\",ocal:\"0L030M030O040P060Q040S0Z150E1F08\",\"ocal \":\"0L020M040O020P050S41\",ocar:\"0O0F0P0L0Q0H0T08\",ocat:\"0L080M040Q0L0T0S150D\",occ:\"0L0R0M050O020Q2U0T0R\",occa:\"0L080M020Q0R0T05\",occh:\"0Q15\",occhi:\"0Q13\",occi:\"0L030O020Q0B0T0S\",occo:\"0M020Q0O\",occu:\"0L0Z0M040Q1R0T0H\",occup:\"0L1N0M020Q1S0T07\",ocer:\"0O0B0T0W\",\"och \":\"0N590R110S1E0U020Y1I108N1A031QBL\",ocha:\"0L0P0O020P020S181A19\",oche:\"0L0W0N1H0O310P020Q040R02150E\",\"oche \":\"0L0U0N0R0O3H0Q02\",ochen:\"0N1P0O02\",ocho:\"0L030O0A0U0O0Y0L1A1A\",ochod:\"1A1O\",ocht:\"0N0G0R2O0S3X\",\"ocht \":\"0N060R2E0S7R\",ochta:\"0S58\",ochte:\"0N0M0R17\",ochtú:\"0S32\",ochu:\"0U0Y0Y10\",\"ochu \":\"0U1A0Y13\",ochv:\"1Q46\",ochva:\"1Q5N\",ochód:\"1A1I\",\"ochę \":\"1A1F\",\"oci \":\"0Q080T060U140Y0L1505\",ocin:\"0O0L0T0D\",\"ock \":\"0L020M0E0N050O020Q02100A\",ocka:\"100X\",ockan:\"100M\",ocke:\"0M0E0N09100A\",ocks:\"0M04100S\",också:\"100S\",ocn:\"0U0M0Y0I1A09\",\"oco \":\"0O1Y0P050Q0U0T0F\",ocr:\"0L040M020O030P030Q040S0P0T061506\",ocra:\"0L040M020O030P030Q040R020S0T0T041507\",ocras:\"0S3A\",ocs:\"1411\",ocsi:\"141E\",oct:\"0L060M0A0O0A0T160U0E150I\",octe:\"0L060T0W\",octo:\"0L030M0H0O0A0T0M150V\",ocu:\"0L060M030O1E0P1P0Q040T2J0V02152R1F25\",ocui:\"0T0M151L\",ocuk:\"1F23\",ocukl:\"1F1Q\",ocul:\"0O070P020T201516\",ocup:\"0O190P18151C\",ocupa:\"0O1E0P1D151K\",ocur:\"0L020O0K0P0N150D\",ocut:\"0L030T17\",ocutu:\"0T0U\",ocz:\"1A2B\",océ:\"0L030O03\",ocê:\"0PH6\",\"ocê \":\"0PHX\",ocês:\"0P3C\",\"ocês \":\"0P48\",ocí:\"0O060U03\",ocó:\"0O03\",ocā:\"0T02\",ocū:\"0T02\",odas:\"0O110P0T110314021B071D1J1F0F1O02\",\"odas \":\"0O1C0P111B0E1D3Z1O03\",odat:\"0R040U060V081102140M153O1A05\",odată:\"154L\",odav:\"0O160V0E14021B02\",odaví:\"0O1J\",oday:\"0M171F09\",\"oday \":\"0M1L\",odb:\"0U030V090Y090Z0414021A06\",odbo:\"0U030Y0C0Z0B\",odbol:\"0Z0D\",odd:\"0M020Q060U02100R120G14021A0G1Q0D\",\"odd \":\"1208\",odde:\"0R041010120X1A02\",\"odde \":\"1010120V\",odell:\"0N020Q0211831402\",odelo:\"0O030P031O031P1G\",odem:\"0O0K0P140T050U040V0F1A0A\",\"odem \":\"0P0P0T050U040V0P1A0G\",odemo:\"0O0Q0P0Q0V0D\",\"oden \":\"0N0E0R0K0Z0F10061119\",\"oder \":\"0N2N0O0K0P0G0Z061002\",oderi:\"0P180T02\",odet:\"0Z0310031102120D\",\"odet \":\"0Z031003120C\",odeš:\"0U0U0V07\",odeše:\"0U0T\",odg:\"0V0V1A02\",odgo:\"0V11\",odgov:\"0V2M\",odh:\"0S0K0U031Q0Z\",\"odh \":\"0S0M\",\"odi \":\"0Q060T0A0V0G1B041C0I1P1V\",odia:\"0O0A0P0D0Q0K0T040Y081O13\",odiaŭ:\"1O25\",odie:\"0L020N020R020T1U1D35\",\"odie \":\"0T1R\",odien:\"1D6K\",odig:\"01280R2L0V030Z081006120B\",\"odig \":\"01270R340Z0410041206\",\"odil \":\"0U110Y0U\",odin:\"0U270V1P0Y2611021B0B\",odina:\"0U0D0V210Y0K1B03\",odine:\"0V1T\",odiny:\"0U0U0Y0Z\",odio:\"0O0B0Q0K0T050V04\",odis:\"0O030T0A1005110H1B0G1O021P12\",\"odis \":\"0T0410031B0V1O041P19\",odič:\"0U0W0V030Y0O\",odiče:\"0U0T\",odj:\"0U0B0V0414071A07\",odk:\"0U070Y0G1A0K\",odl:\"0S0M0U0V0V0X0Y0U10021A071Q05\",odla:\"0S0O0U060V070Y0A1002\",odli:\"0U080V060Y0X10021A03\",odm:\"0U0G0V0L0Y0E1A041Q09\",odn:\"0U280V130Y1D0Z021002140B1A1J1Q1G\",odni:\"0U050V08140I1A1H1Q26\",odně:\"0U25\",\"odně \":\"0U2Y\",\"odo \":\"0O3Z0P1R0Q0S0T1T0Y081A021B1R1O051P0M\",odob:\"0U0I0V020Y191A1C\",odobn:\"0U0K0Y141A12\",odos:\"0O2Y0P2F11051B04\",\"odos \":\"0O3V0P331B07\",odot:\"0Q041122140N\",odott:\"0Q04112W140P\",odp:\"0U1H0Y201A141Q0F\",odpo:\"0U1X0Y2N1A1B\",odpov:\"0U1L0Y2L\",odpow:\"1A1R\",odrí:\"0O15\",odría:\"0O1I\",ods:\"01070M040R030U0C0V080Y090Z05100214021A0E1P0N\",\"ods \":\"0M070Z071P0T\",odt:\"0U020Y080Z0Z120M140C1Q04\",\"odt \":\"0Z2C121D1405\",\"odu \":\"0U0X0V0C0Y181A131B071D1U1F03\",odun:\"14021F021P0X\",oduno:\"1P12\",odus:\"0T050V05150C1A021B031C16\",\"odus \":\"0T0515081B071C29\",odv:\"0U0E0V080Y0H1Q0I\",ody:\"0M0O0U0E0Y0U1A0W1B0Q\",\"ody \":\"0M170U0M0Y1F1A12\",odz:\"0U030Y051A58\",odzi:\"0U051A67\",\"odzi \":\"1A1S\",odzie:\"1A2A\",odzin:\"1A2U\",odá:\"0U0A0Y04140L\",odé:\"0O06\",odí:\"0O0F0U150Y1C\",odía:\"0O0N\",odív:\"0U0U\",odā:\"1D17\",\"odā \":\"1D1E\",odė:\"1B34\",\"odė \":\"1B0T\",odėl:\"1B47\",\"odėl \":\"1B8F\",odě:\"0U0G\",odį:\"1B09\",odľ:\"0Y0D\",odō:\"0T04\",odž:\"1B0Q\",odži:\"1B16\",oed:\"011E0P040R1Y0T0B0Z0B\",\"oed \":\"01210R3S\",oede:\"0R2S0T0B0Z0T\",\"oede \":\"0R1H0Z10\",oeder:\"0R1W0T0C\",oedi:\"010M0R0B\",oedin:\"010I0R05\",oef:\"010C0R09\",oeg:\"010R0R0X1C0F\",\"oeg \":\"011I0R2G\",oege:\"0R0V\",oei:\"01110P030R0I\",oeie:\"011E0R0F\",\"oeie \":\"011E\",oeil:\"010F0R0V\",oeili:\"010G0R15\",oek:\"012S0R1A\",\"oek \":\"013V0R2U\",oeke:\"010P0R1E\",\"oeke \":\"010N\",oeken:\"0R1S\",oeko:\"011R0R08\",oekom:\"011U0R0B\",\"oel \":\"011U0R121F07\",oem:\"01070O030P050R0E0T041O02\",oemd:\"0R0L\",oeme:\"0R0L\",\"oen \":\"01660R610Z0H1107123L\",oene:\"0R0P0Z031209\",oenen:\"0R0S\",oeni:\"011D0T02\",oenie:\"011G\",oent:\"010H0P0B0R06\",oente:\"010I0P0E0R08\",oep:\"010B0R070T0B\",\"oep \":\"010H0R0H\",oer:\"010Y0R0J0Z0312031C2X\",\"oer \":\"011A0R100Z0612071C2C\",oera:\"1C19\",\"oera \":\"1C1V\",oes:\"010I0M250O040P040Q040R0D1102\",\"oes \":\"010T0M1Q0R02\",oesn:\"0M29\",\"oesn'\":\"0M33\",oest:\"0O030P020R1A\",\"oest \":\"0R0Y\",\"oet \":\"016A0R5P0Z09\",oete:\"0R2W\",oeten:\"0R3S\",oev:\"010B0R0G\",oeve:\"010M0M020R1G\",oevee:\"010K0R1Q\",oez:\"1503\",\"of-\":\"1P0Q\",\"of-l\":\"1P0X\",\"of-li\":\"1P12\",ofd:\"0R0E\",\"ofe \":\"1N0E1P1E\",ofec:\"0T0P\",ofeso:\"0O100U03151E1A041B051O04\",ofess:\"0L0X0M050N050P190Q0S0R050Z04100211071402\",\"off \":\"0M100N03\",offe:\"0L070M0K0N150Q0D0R0D0T090Z0D1003120D\",offi:\"010Y0L030M0F0Q020R0T0T0F0Z021002\",offic:\"0L050M0L0R030T0G0Z031002\",offie:\"01100R10\",\"ofi \":\"15081P1I\",ofik:\"1P0Z\",\"ofik \":\"1P12\",ofl:\"0Z02\",ofr:\"0O050P08\",ofs:\"1P0T\",\"ofs \":\"1P0X\",ofta:\"100S1O02\",\"ofta \":\"100P1O02\",ofte:\"0M0L0R040Z0O12121O0U\",\"ofte \":\"0R040Z0K120Y1O1O\",often:\"0M0T\",ofu:\"0O060P060T03130815031O04\",ofá:\"0O020P031402\",ofö:\"10031F02\",ogao:\"0V1C\",\"ogao \":\"0V3F\",ogap:\"1N1B\",\"ogap \":\"1N1I\",ogat:\"0Q020T0A0V0H141K150F1A0B\",ogd:\"1402\",ogel:\"0N050R15\",ogeli:\"0R0W\",\"ogen \":\"0N0X0R1J0Z1W100A1207\",ogens:\"0Z0M\",oget:\"0M0J0Q080Z2W120G\",\"oget \":\"0Z3I120G\",ogeth:\"0M0R\",ogg:\"01070Q1G10061402\",ogge:\"010H0Q050R02\",oggen:\"010I\",oggi:\"0Q26\",\"oggi \":\"0Q1X\",ogh:\"0Q0F0S2A0Z021QD8\",\"ogh \":\"1QI6\",oghe:\"0Q0N\",oghl:\"0S261Q0B\",oghla:\"0S8M\",ogis:\"0M020N030R050Z06110212061O041P0R\",ogj:\"140E\",ogla:\"0V0L141A1N3H\",oglal:\"1418\",oglan:\"1N4R\",ogled:\"0V230Z03\",ogli:\"0Q5F0V071A08\",oglia:\"0Q0V\",oglio:\"0Q3Y\",ogna:\"0Q0P0T03140I\",ogni:\"0M050Q1F0T05140A1A04\",\"ogni \":\"0Q1F140A\",ogno:\"0Q200T0L\",\"ogno \":\"0Q1Y\",ogob:\"1P2V\",\"ogob \":\"1P2X\",ogodi:\"0V1O\",\"ogok \":\"1415\",ogol:\"14041P29\",\"ogol \":\"1P1D\",ograp:\"0D030L0A0M040N020T0Z\",ogry:\"1N1L\",\"ogry \":\"1N1S\",ogs:\"0M030R020Z0G1003120G140C1P0D\",også:\"0Z0W1213\",\"også \":\"0Z131213\",ogt:\"01090R020Z041408\",ogte:\"010J0R050Z02\",ogter:\"010K\",\"ogu \":\"0V2X1A031B031C0R\",ogus:\"1B16\",\"ogus \":\"1B2F\",ogy:\"0M0314C3\",\"ogy \":\"0M050U0214NQ\",ogya:\"141O\",ogyan:\"141H\",ogí:\"0O05\",ogö:\"1P0V\",ogön:\"1P13\",\"ogön \":\"1P1A\",ogā:\"0T03\",ogė:\"1B08\",ogę:\"1A1S\",\"ogę \":\"1A2L\",\"oha \":\"0U090Y0F1420\",ohb:\"1F021Q1U\",ohd:\"110Q1Q07\",ohe:\"040D0N050U0A0Y0611021C0S\",\"ohe \":\"0N021C0K\",ohi:\"0D030N030O030T02110C1C0F\",ohj:\"110E1Q03\",ohk:\"11061C0V\",ohke:\"11081C11\",ohkem:\"1C2J\",ohl:\"0N0G0U3U0Y151Q1Y\",\"ohl \":\"0N0R0U2B\",ohle:\"0N080U2R\",\"ohle \":\"0U3G\",\"ohli \":\"0U0J0Y12\",ohne:\"0N1D1Q07\",\"ohne \":\"0N1T\",\"oho \":\"0U3K0Y3J1102\",\"ohol \":\"0M020N040O050R040U050Y2O0Z03100214021A02\",ohon:\"0B17110G\",ohp:\"1Q21\",ohpu:\"1Q3N\",\"ohpu'\":\"1Q68\",oht:\"0Y04111G1C1U1Q2J\",ohta:\"111G1C0N1Q4R\",\"ohta \":\"110F1C1E\",ohtah:\"1Q5E\",ohtu:\"11091C14\",ohu:\"0U140Y0G11031C0G\",\"ohu \":\"0U1O0Y0N\",ohv:\"11041C0N1Q19\",ohvi:\"1C0N\",ohw:\"1Q1U\",\"ohwi'\":\"1Q5T\",\"oi-\":\"0L06\",oia:\"0P060Q070T03150E1C0D\",oib:\"0P040S19\",oibr:\"0S0V\",oic:\"0L050M060Q021A0J\",oide:\"0L030R030S0V110I\",oidea:\"0S3J\",oie:\"0L0J0R07152J\",\"oie \":\"0L0I0R0F153A\",oif:\"0L041O02\",oig:\"0L0D0O020S0K\",oigh:\"0S0O\",oih:\"110D\",oik:\"112X\",oika:\"111L\",oike:\"112X\",oikea:\"113N\",oil:\"0B020L0F0M050S3W0Z0211151503\",\"oil \":\"0M050S36\",oile:\"0B040L0E0M030N020R030S0O0Z06110B1504\",oill:\"111B\",oim:\"0S0Y111R1A181C0D\",\"oim \":\"1A1K\",oimh:\"0S0Q\",oimi:\"111Q1A07\",\"oin \":\"0L2L0M040S1G115E\",oine:\"0L030M020S1N111U\",\"oine \":\"0L040S4Z\",oinen:\"1148\",oing:\"0L020M4X\",\"oing \":\"0L020M6O\",oink:\"1114\",oinn:\"0S1A1107\",oinne:\"0S3A\",oins:\"0L0Y\",\"oins \":\"0L1M\",oint:\"0L0X0M0G110L\",\"oint \":\"0L170M0A\",oio:\"0P030Q05\",oir:\"0L5X0S4J1112\",\"oir \":\"0L750S22\",oira:\"0L02111P\",oire:\"0L2B0S0M1102\",\"oire \":\"03020L3I\",oirs:\"0L0F0S1J\",oirse:\"0S49\",\"ois \":\"0L730O050P2G0S3C1113\",oisa:\"0P2F1105\",\"oisa \":\"0P1V1103\",oisas:\"0P19\",oise:\"0L0L0M05111S\",oisi:\"0L0U1141\",oisin:\"0L0J112I\",oisit:\"113L\",oiss:\"0L0L111K1C0I\",oissa:\"0L05113T\",oist:\"0Q020R03113G\",oista:\"0Q02116Z\",\"oit \":\"011D03020L3J0R33111F\",oita:\"113G\",\"oita \":\"115A\",oite:\"0L090P1K110P\",\"oite \":\"0L0D0P1T1107\",oitt:\"115P\",oitta:\"118E\",oitte:\"112E\",oitti:\"112J\",oitu:\"0L1J111B\",oitur:\"0L2M\",oiv:\"0L070P02111G\",oiva:\"0P021116\",oivat:\"112I\",oivo:\"111C\",oix:\"0L0E\",\"oj \":\"0O080U0H0V670Y1K1B141OCV1Q2L\",ojas:\"0O0711061B1F1O06\",\"ojas \":\"0O0A0P021B2M1O0C\",ojau:\"1B2Q\",\"ojau \":\"1B59\",ojb:\"1Q07\",ojc:\"1A0Z1Q07\",\"oje \":\"0P240U3V0V3K0Y3Y1A2P1B5N1F021O0W\",ojeg:\"1A1D\",ojego:\"1A27\",ojej:\"0Y1K1A18\",\"ojej \":\"0Y1Y1A1Y\",ojh:\"0Y0M\",ojho:\"0Y13\",\"ojho \":\"0Y1C\",oji:\"0U1B0V3T0Y1G1B1D1D151F051O04\",\"oji \":\"0U1V0V360Y0K1B1E1F02\",ojic:\"0V060Y0X\",ojich:\"0Y15\",ojie:\"1D0X\",ojim:\"0V0X0Y0D1B0F\",\"ojim \":\"0V1Y\",ojk:\"0V0G100F\",ojm:\"0V041Q33\",ojmoh:\"1Q4D\",ojn:\"0U020V080Y0M1A0E1O7D1Q0A\",\"ojn \":\"1OB8\",ojo:\"0O0Q0U030V0O0Y0I1A021B231D0K1O0N\",\"ojo \":\"0O0G1B2U1O0H\",\"ojoj \":\"0V1L1O04\",ojos:\"0O0N1B06\",\"ojos \":\"0O0U1B08\",oju:\"0V1D0Y1B1A0N1B1N1C161D2M\",\"oju \":\"0V1N0Y221A0W1B2B1C191D1N\",ojum:\"1D1J\",ojæ:\"0T02\",ojí:\"0U1J0Y1E\",\"ojí \":\"0U1N0Y14\",ojím:\"0U0F0Y0Z\",\"ojím \":\"0U0K0Y18\",ojā:\"1D1C\",ojām:\"1D13\",\"ojām \":\"1D2T\",oją:\"1A0Y1B07\",\"oją \":\"1A1C1B0B\",okam:\"0U070Y0B1B051N15\",okama:\"1B071N1L\",okat:\"0Z0410041102144Q1A031B0B1O04\",\"okat \":\"0Z041003144U\",okaz:\"0U020V0E0Y081A0R1O1G\",okaý:\"1N0Z\",okb:\"140D\",okd:\"0U021N1F\",okdy:\"0U031N1P\",\"okdy \":\"0U041N1D\",\"oke \":\"0B040M0N1O03\",oked:\"0M0P0Y09\",\"oked \":\"0M0Z\",oken:\"0M090R1C100S11081212\",\"oken \":\"0M0C0R1T100S1211\",okia:\"1B1P\",\"okia \":\"11041B2I\",okik:\"1P1R\",\"okik \":\"1P22\",oking:\"0M131B0F\",okio:\"0N020O080R06110C1A0A1B191O04\",okite:\"1B1E\",okkal:\"1414\",okkar:\"1356\",okke:\"0R0K0Z0X1103120X\",okken:\"0R0P0Z0X120P\",okku:\"1102133J\",okkur:\"1369\",okm:\"1F031N0G\",okn:\"0U0C0Y0F140F1A0A\",okoj:\"0U1A0Y0X1A121O06\",okok:\"0B0Q1402\",\"okok \":\"0B1D\",okor:\"041O11071402\",okos:\"0Y0A0Z0811031206140L1B0C1O04\",okov:\"0U050Y19\",\"okov \":\"0Y1K\",\"oks \":\"0M0T1B241C0K\",okse:\"0Z0E1119120C\",oksi:\"1118130D1B031O0Q\",oksim:\"1O1D\",okst:\"10041209\",okte:\"0B0P0R0I1O09\",okter:\"0B1E0R0K\",okti:\"1B0S\",oktob:\"0B0A0N040R050Z0I10021O04\",oktu:\"0D0314021F11\",okud:\"0U0Q1F0C\",\"okud \":\"0U10\",okul:\"0Y0E1A061F1C1O0M\",okuv:\"1116\",okuw:\"1N1D\",okuša:\"0V25\",okw:\"0302040F\",okyk:\"1B1H\",okykl:\"1B2Z\",okyt:\"1B1M\",okyti:\"1B1L\",okyto:\"1B1S\",oká:\"0U0R0Y0F140K\",oké:\"0U040Y061403\",okö:\"1P0P\",oköm:\"1P0T\",okā:\"1D0J\",okė:\"1B0Q\",okį:\"1B07\",okš:\"1B08\",\"ol-\":\"1P2G\",\"ol-l\":\"1P33\",\"ol-li\":\"1P3L\",olab:\"0O030P020T071F1C\",olabi:\"0T041F1N\",olac:\"0O040P020Q051A091F2P\",olaca:\"1F3O\",olah:\"0B1M\",\"olah \":\"0B2I\",olam:\"0B040O040Q0H0T0X1F0D\",\"olam \":\"0B090T0Y\",\"olan \":\"100V110C1F1C1N141O04\",olany:\"1N14\",\"olar \":\"0B0G0M030O0B0P0915051F0D1N8F\",olara:\"0V0F1F2L1N17\",olary:\"1N2V\",\"olas \":\"0O080P070S2T0T031B081O7Z\",olay:\"1F18\",olb:\"0U030Z0210021403\",olc:\"0N040O020Q04140C1F0B\",\"old \":\"0M490N030Z18120J140J\",olde:\"0M0A0N020R020Z23121H\",\"olde \":\"0Z0X120M\",older:\"0M090R020Z15120G\",oldi:\"0M050Q1O\",\"oldi \":\"0Q1P\",oldo:\"0R02141H\",oldog:\"141F\",oldt:\"0Z0U120L\",\"oldt \":\"0Z0Y120J\",oldu:\"14021FAA1N0N\",\"oldu \":\"1F24\",olduk:\"1F1S\",olduğ:\"1F9X\",oldy:\"1N2D\",\"oldy \":\"1N36\",oled:\"0Q050U0E0Z021C41\",\"oled \":\"1C9J\",oleh:\"0B2T0U051107\",\"oleh \":\"0B4A\",olek:\"0U0211091A021B021C291O06\",oleks:\"1C521F02\",olem:\"0T0B0U0A113O1A021C1Y1O03\",olema:\"113J1C291O03\",oleme:\"1C2D\",olemm:\"1154\",\"olen \":\"0M040N0D0R0H0U020Z0Z100F11HU121J1CDW\",\"olet \":\"0L030T0L119A1A02\",olete:\"0Q0S11031C1V\",oletk:\"115G\",olett:\"112P\",olev:\"0Q20111T1C0O\",oleva:\"0Q1E11491C1O\",olge:\"01120N0D0Q030R14\",olgen:\"01130N0C0R1H\",olgo:\"0Q02143Z\",olgoz:\"142T\",olgt:\"0N060R030Z081207\",olh:\"0P2214041Q03\",olha:\"0P13140A1Q06\",olhe:\"0P0K\",olho:\"0P0U\",olia:\"0T060Y0811081B0Q\",olice:\"0L0M0M0K\",olid:\"0L020M040O020P031A021C0U\",\"olid \":\"1C22\",olie:\"010F0L0B0R060Y0G0Z051B03\",olig:\"0Z0B100P120D1O02\",oligt:\"0Z05100G\",\"olik \":\"0U3D1A021F021P57\",oliko:\"0D030V7611121B06\",olim:\"0T060V24110G1B03\",\"olim \":\"0T060V52\",\"olin \":\"0D02113W1C1A\",olisi:\"0B0U118C1F051N0J\",oliva:\"112G\",olj:\"0V2Y10031202140L1N0M\",olja:\"0V0E1002140J1N0V\",olje:\"0V1A1205\",\"olje \":\"0V2X\",oljno:\"0V1N\",\"olk \":\"0N030R060Z0D100C1215\",olke:\"0N050R040Z081002120D\",\"oll \":\"0M020N14100H1402\",\"olla \":\"0O040Q04100511BY1C42\",ollen:\"0N1Z0R030T030Z021005110Y\",olli:\"0L050M020N020Q090R020T0S111Z13061Q09\",ollis:\"0T03113R\",ollt:\"0N2F\",ollte:\"0N3U\",ollu:\"0L020T04113Q1306\",ollut:\"118S\",\"olm \":\"10041C12\",olma:\"11091F6T1N59\",olmad:\"1F2G1N0Q\",olmag:\"1N1D\",olmak:\"1F1T1N19\",olmal:\"1F171N1B\",olmas:\"110A1F16\",olmay:\"1F1M\",olmaz:\"1F0G1N12\",olme:\"112F1Q0S\",\"olme \":\"113G\",olna:\"144T150I1A02\",\"olna \":\"14351A02\",olnap:\"141V\",olni:\"0V04141L1A0E\",\"olni \":\"141M\",olnu:\"14021C29\",olnud:\"1C5I\",olob:\"1P7A\",\"olob \":\"1P7E\",olobs:\"1P17\",olol:\"1P3J\",\"olol \":\"1P33\",\"olom \":\"140L1P2J\",olong:\"0B410L02\",olor:\"0L020M050O0X0P030Q0M0T0P14021A0A1O0O\",\"olor \":\"0M040O0V0T081A06\",olp:\"0O050P020Q0J0R02\",\"ols \":\"0L020M030R021P1N\",\"ols-\":\"1P19\",\"ols-l\":\"1P1G\",olsa:\"0O050P051F0K1N2U\",\"olsa \":\"0O060P061F0A1N1S\",olsad:\"1N12\",\"olt \":\"0N030Z061006120A14BO1C0G\",olta:\"0O020P170Q2K110Q130G144Y1507\",\"olta \":\"0P0J0Q1M111B130H140V\",oltak:\"1415\",oltam:\"142S\",oltar:\"0P0T0Q081505\",olte:\"0L030N030O030P090Q1J0U03\",\"olte \":\"0L030N030P050Q1A0U040Z02\",olti:\"0Q0X1102\",\"olti \":\"0Q0U\",olto:\"0P0A0Q5P11031409\",\"olto \":\"0P030Q5R\",oltá:\"141D\",oltál:\"1411\",\"olu \":\"0L030U0V0V0P0Y0R1A041D181F0J1O0Y\",olup:\"0T050U040Y081F0C1N2O\",\"olup \":\"1F0G1N39\",olur:\"1F1K\",\"olur \":\"1F18\",oluň:\"1N0U\",\"oluň \":\"1N16\",olva:\"142F150C\",olvas:\"1426\",olve:\"0M090O100P0E0Q070R030T0B100611031504\",olver:\"0O1A0P0B0Q070T07\",olvi:\"0O1G0P070T0D110315051O08\",olvid:\"0O1A0P04\",olw:\"1A0H1Q04\",\"oly \":\"0U100Y17140D1N0N\",olya:\"0D021458\",olyan:\"144Y\",olyc:\"100F\",olyck:\"100F\",olz:\"0N05\",olá:\"0P030U0G0Y1A140Q\",olã:\"0P03\",olè:\"0L09\",olé:\"0L0M0P020U06\",olí:\"0O0K0P0I0U0M0Y0O1308\",oló:\"0O060P05140D\",olö:\"1PA9\",olöd:\"1P7Q\",\"olöd \":\"1P8W\",olön:\"1P3V\",\"olön \":\"1P4I\",olý:\"1N1X\",olýa:\"1N2R\",olýan:\"1N1B\",olýar:\"1N2E\",olĉ:\"1O03\",olē:\"0T02\",olė:\"1B07\",olį:\"1B0A\",olō:\"0T03\",\"om'\":\"0M0O0Q0711021A041FBW1Q0B\",\"om'a\":\"1A031F2P1Q06\",\"om'a \":\"1A051F3O\",\"om'l\":\"1F12\",\"om'la\":\"1F1G\",\"om's\":\"0M18\",\"om's \":\"0M1O\",\"om'u\":\"1F9Y\",\"om'u \":\"1F2O\",\"om'un\":\"1FB2\",\"om-\":\"1P2P\",\"om-l\":\"1P3E\",\"om-li\":\"1P3X\",omaa:\"0R06111T1C0G\",omaan:\"0R02112L\",omad:\"0O060P030T0J0U030V041A021C0K\",\"omad \":\"1C1E\",omae:\"0T2H\",\"omae \":\"0T2M\",omam:\"0O020P020T0N1D3R\",\"omam \":\"0T0O1D9D\",omand:\"0O050P050Q0W150I1B0J1O02\",omani:\"0Q1U0T0C11041O02\",omasa:\"1P1U\",omase:\"1P2O\",omasi:\"110Q1B031P21\",omaso:\"1O1F\",\"omat \":\"0Z02110G1411\",ombi:\"0L1B0M020O040P040Q070R0414031F031O03\",ombie:\"0L250R03\",ombr:\"0D030L150O360P080Q0B15051O0E\",ombre:\"03030D060L1T0O3P0Q0A1O09\",omd:\"0R08130B1N0A1Q0D\",omda:\"0R0P1N0D1Q0O\",omdat:\"0R0Y\",omem:\"0O020P1D0U1X1A0L\",\"omem \":\"0P1L0U2O1A0X\",\"omen \":\"0M0A0N020O070R4R0T1Y1002110G\",omenc:\"1A041O1N\",omenn:\"1130\",omeo:\"0M0I\",omeon:\"0M0O\",\"omer \":\"0M020O1D0P140R0E0Z03\",omes:\"0L070M0B0O090P080Q0C0T0411061O0A1P12\",\"omes \":\"0L020M0D0O050P051P19\",\"omet \":\"1B1N\",ometh:\"0M1Q\",omey:\"0432\",omeye:\"045F\",omeç:\"0P1D\",omeça:\"0P10\",omeço:\"0P0Q\",omf:\"0M030Z02100212041O02\",omg:\"0R021002\",omh:\"0S6R0U020Z02100212041402\",\"omh \":\"0S1C\",omha:\"0S4H\",omhai:\"0SCC\",omhc:\"0S0V\",omhch:\"0S3J\",omhe:\"0R030Z04120B\",omia:\"0P050Q03111Z1B021O03\",\"omia \":\"0P050Q03114H1O03\",omid:\"0O0W0P0I1B03\",omida:\"0O0X0P0L\",omig:\"0P0W0Q061C0Q\",omiga:\"1C1S\",omigo:\"0P14\",omik:\"11031A021B021F081P1H\",\"omik \":\"1F0A1P1O\",omil:\"0U0A0V090Y08113R1C34\",\"omil \":\"0U081C3L\",omile:\"1C42\",omill:\"1185\",\"omin \":\"0D0211A61313\",omina:\"0L030M020O070P060Q030T0M1106140Z1A0J1B0E\",ominc:\"0Q0U\",omine:\"0T2E110C\",oming:\"0M0O0O0F0P0B0R02\",omini:\"0O020Q090T1C1106\",ominu:\"0T2S\",\"omis \":\"0L0A15091B2F1O051P2G\",omise:\"0L030M0K0Q02110O\",omist:\"0O02112B\",omk:\"0Z071004120214021A03\",omkr:\"0Z0D1004\",omkri:\"0Z0F1004\",oml:\"0U0K100814061Q08\",omlu:\"0U0P\",omluv:\"0U0Z\",omma:\"0L0K0M030N020Q03101T1108140S1Q09\",\"omma \":\"101E1105\",\"omme \":\"0L800N0K0R060Z1N110R12161C3B\",ommen:\"0L690M070N4V0Q090R070T070Z0H100B1108120M\",ommer:\"010X0L0A0N0G0Q030R040Z36104Z123P\",ommes:\"0L440Q050Z02\",ommet:\"0L0B0Q040Z0N121B\",ommi:\"0L060M040Q020R0D0T04100B111L1C0S\",\"ommi \":\"112F\",ommik:\"1C1S\",ommo:\"0L020M050T0O100C\",ommt:\"0N15\",\"ommt \":\"0N1W\",ommu:\"0L0D0M060N030R040T090Z0310031104120A1406\",omna:\"1008141X\",omnak:\"1421\",omne:\"0L030T3B\",omnes:\"0T2O\",omni:\"0T5B1A0T\",omnia:\"0T2E1A0O\",omnib:\"0T10\",omně:\"0U0U\",omněl:\"0U14\",omob:\"0Q0J0U020V0G0Z021B1F1O04\",omobi:\"0L020Q0J0U030V151B2Z1F021O08\",omoc:\"0U1R0Y0Z1A0Q\",\"omoc \":\"0U0Y0Y131A0J\",omoct:\"0U0R\",omod:\"0O020P050Q050T12\",omodo:\"0Q030T0X\",omoh:\"0U0S0Y0Q\",omohl:\"0U110Y0G\",omoj:\"1B071O1R\",\"omoj \":\"1O2Q\",omom:\"0V0I0Y18\",\"omom \":\"0V1A0Y1J\",omon:\"0B08110914051B0N1O1H\",\"omon \":\"110J14051O2X\",omorr:\"0M12\",\"omos \":\"0O0O0P0X0T0514051B04\",\"omot \":\"0303141C1505\",omov:\"0P030U590V0S0Y5P\",\"omov \":\"0U030V0L0Y2P\",omovi:\"0P020U5J0V0A0Y34\",omow:\"1A17\",omowi:\"1A1E\",ompr:\"0L1O0M020O2I0P2L0Q2K0T031O17\",ompra:\"0O1V0P1M0Q1Z\",ompre:\"0L240O0G0P0T0Q0D0T031O2D\",ompro:\"0L020O080P0P0Q021O02\",ompt:\"0L0W\",ompte:\"0L19\",omput:\"0B0K0M0C0N0B0O0C0P0J0Q0M0R0H0T0L0Z0O15051A0Q1O0J\",omr:\"0S0K0Y0C0Z0210041204140D\",omra:\"0S0O140R\",\"omra \":\"0S2T140S\",områ:\"0Z0610051209\",\"oms \":\"0L030M050N0S0R180Z1R1015120Q1B091DHJ1PAK\",omsa:\"0S0V1002\",\"omsa \":\"0S3J\",omst:\"010F0R0H0Z0R1005120I130D\",omste:\"0R020Z0I120D\",\"omt \":\"03020R1L0Z081003120F\",\"omu \":\"0U1Y0V190Y1I13071A281B1C1D23\",omui:\"1B2D\",\"omui \":\"1B4V\",omum:\"0P070T271308\",\"omum \":\"0P080T2C\",omus:\"0T1G11021B051N0E1Q06\",\"omus \":\"0T1J11021B0A\",omuň:\"1N5B\",\"omuň \":\"1N72\",omv:\"10021Q0T\",omw:\"040I1Q0E\",omy:\"040D0M030U080Y081A0O1N33\",\"omy \":\"0M050U070Y0A1A041N1Y\",omyñ:\"1N1D\",\"omyñ \":\"1N1U\",omyň:\"1N18\",\"omyň \":\"1N1O\",omá:\"0O0N0P090S5A0U0L0Y0X140J\",omái:\"0S1C\",omáin:\"0S2T\",omáis:\"0S2T\",omás:\"0O0U0P090S52140S\",\"omás \":\"0O140P0B0SI11405\",omè:\"0L04\",omé:\"0O040P041404\",omí:\"0O060P020U0H0Y08\",omó:\"0O0814031A0P\",omô:\"0Y1B\",omôc:\"0Y1K\",omôcť:\"0Y1Y\",omö:\"10051P0T\",omú:\"0O05\",omā:\"1D3Q\",\"omā \":\"1D0Z\",omāj:\"1D2S\",omāju:\"1D5L\",omą:\"1B12\",\"omą \":\"1B1P\",omė:\"1B07\",omě:\"0U0H\",omş:\"1F0J\",omů:\"0U16\",\"omů \":\"0U11\",\"omův \":\"0U0S\",\"on'\":\"0M3X1F231Q04\",\"on'a\":\"1F0Z\",\"on'a \":\"1F1C\",\"on'd\":\"1F17\",\"on'da\":\"1F1M\",\"on't\":\"0M6Y\",\"on't \":\"0M9C\",\"on-\":\"0L021P0X\",\"on-l\":\"1P16\",\"on-li\":\"1P1D\",onad:\"0O0L0P0J1A0A1O02\",onai:\"0L0F0P040S0V110814031B0D\",onaic:\"0S3J\",onale:\"010G0L080N060O060Q0B0R080Z0312051507\",\"onan \":\"0O041107130S1O1A\",\"onas \":\"0M050O1G0P020S4R1B2A1O4G\",onb:\"0R031005140J1F021Q07\",onba:\"141A1F02\",\"ond \":\"011Y0L0F0M0C0N040R470Z02140O1C0E\",\"onda \":\"0O040P040Q090V10100214031F0E1N1L1O07\",ondan:\"0L050Q040R0514251F0V1N121O02\",ondat:\"0L020Q03141H1505\",onday:\"0M0J\",\"ondd \":\"1410\",\"onde \":\"010I0L3U0O120P3M0Q040R0L0T030Z0310031O03\",ondel:\"0Y10\",onden:\"0L030O060P070Q050R270T05\",onder:\"014204590L020M110N1G0O0C0P0F0Q0F0R560T0E\",ondit:\"0L0E0M050T0U\",ondj:\"0R02141P\",ondja:\"1412\",\"ondo \":\"042S0D020O060P020Q141O1F\",ondol:\"1448\",ondt:\"0Z0A120A143C\",ondta:\"1433\",ondu:\"0L0Z0O0N0P050Q030T0J140315111F071O0L\",ondui:\"0L19\",onee:\"0R09111X\",onees:\"112P\",onem:\"0T2N0U061A02\",\"onem \":\"0T2S0U031A03\",\"onen \":\"0N0V0O040R150Z16101G110S121G\",\"oner \":\"0L030M050O0D0Z0S100G120Z\",oney:\"0M13\",\"oney \":\"0M1H\",onfi:\"0L0M0M050O0H0P0O0Q070T0C15031O05\",\"onge \":\"0L0B0P0F0R070T070Z061O1B\",ongel:\"010Q0O030P020R0R113Y\",ongen:\"0R170T090Z0610021207\",onger:\"010G04640L040M0H0R0Y\",\"ongo \":\"049C0O0A0P080Q020T04\",ongt:\"03020L0N1Q0Q\",onh:\"0L050P2H1102\",onhe:\"0L080P270R04\",onhec:\"0P27\",\"onia \":\"0O050P030Q0X0T0K111C150X1A0E1B091O02\",oniae:\"0T0Y\",oniam:\"0T13\",\"onie \":\"0L070N030R0315051A1G\",\"onis \":\"0T1H1B0H1C1H1O281P0O\",onit:\"03030O0E0P0M0T0G11021O04\",oniu:\"0T0Q\",onių:\"1B0Y\",\"onių \":\"1B1Z\",onj:\"0L050O030P030T030V0A14021503\",\"onk \":\"010P0R0A\",onka:\"042D1002110W1A02\",\"onka \":\"0447111X1A03\",onke:\"0M020N040R0P0Z061206\",onko:\"114F1A021O02\",\"onko \":\"11A3\",onla:\"0R0411021F5P1Q06\",onlar:\"1F7M\",only:\"0M1G\",\"only \":\"0M1Z\",onm:\"0B020O0G0R0511021Q08\",onmi:\"0O0L0R09\",onmig:\"0O0S\",\"onn \":\"0S4Y\",\"onna \":\"0L0C0M040Q0O0T0211201C1S\",onnai:\"0L3E0N02\",\"onne \":\"0L6D0N0I0Q0H0T1J110M\",onner:\"0L1Y0N04\",onnes:\"0L1I0Q020R02\",onnt:\"0N10\",onné:\"0L1F\",\"onné \":\"0L1U\",onoc:\"0O1S\",onoce:\"0O16\",onoci:\"0O0U\",onoj:\"11021O0Q\",\"onom \":\"0V0A10351405\",onon:\"0L05110414051O1J\",\"onon \":\"110714061O2Y\",onosc:\"0P0B0Q2O\",onp:\"110B1O031Q09\",onq:\"0L060P031Q04\",onr:\"0O090P0414021F1U\",onra:\"0P041F24\",\"onra \":\"0P031F2I\",\"ons-\":\"0L0Q\",\"onsa \":\"112H\",onseg:\"0O0G0P1S0Q05\",onsi:\"0D020L0M0M0F0O0R0P110Q0T0T0T100I150P1O0V\",onsig:\"0O0B0P0T0Q0I\",onsin:\"100I\",onsu:\"0L030M020O090P060Q040T0R15071F051O05\",\"onta \":\"0L020O020P0P0Q0C1139140D1O0H\",ontac:\"0L090M050O070R090S41150B\",ontai:\"0L070M040S32\",ontar:\"0O0J0P0Q0Q091O04\",ontb:\"010F0R0G1404\",ontec:\"0O020P1U1O0A\",ontem:\"0L030O030P1H0Q020T0J\",onth:\"0M0F0R04\",\"onti \":\"0Q0Q1O0F\",ontl:\"010J\",ontli:\"010I\",ontm:\"010J0R0O\",ontmo:\"010K0R0W\",\"onto \":\"0M020N020O150P0V0Q0O0Z0411061A021O0Q\",ontos:\"0P07141P1O05\",ontre:\"0L360P0H0Q02\",onts:\"0R0Q\",onum:\"0T1V133T1B061F08\",\"onum \":\"0T1V137S1F04\",onun:\"0O030P030Q030T05130E1F7R\",\"onun \":\"1F80\",onunl:\"1F1G\",onus:\"0T0P1B081F0C1O02\",\"onut \":\"112C\",onuñ:\"1N26\",\"onuñ \":\"1N2Z\",onuň:\"1N3T\",\"onuň \":\"1N55\",onuş:\"1F4E\",onuşa:\"1F1A\",onuşm:\"1F2S\",onuşu:\"1F19\",onver:\"0L090M070O0G0P0W0Q040R0A0T090Z02150A1O06\",onvo:\"0P020Q020R031O0Z\",onvol:\"1O1X\",onw:\"1Q0J\",onye:\"044C\",\"onye \":\"047A\",onz:\"0L020N030O030P030Q020R0D1404\",onze:\"0L030N070P030R1C1403\",\"onze \":\"0L030P030R1R\",oná:\"0P0B0U040Y0D140A\",oné:\"0L020O08\",onê:\"0P07\",oní:\"0O030P020U05\",onò:\"0Q02\",onó:\"0O0A1A02\",onö:\"1P0B\",onā:\"1D0V\",oną:\"1A0A1B0Q\",\"oną \":\"1A0A1B16\",onč:\"0U0I0Y0K\",onė:\"1B1E\",onės:\"1B1F\",\"onės \":\"1B2Y\",onę:\"1A071B08\",onĝ:\"1O05\",onŝ:\"1O04\",onų:\"1B08\",oob:\"0D0A0Y061C0F\",\"oob \":\"0D0I\",ooda:\"1C0V\",oodi:\"1C0Y\",oof:\"010F0M020R0M\",\"oof \":\"010H0M030R0N\",oofd:\"0R1I\",\"oog \":\"0R0R\",ooi:\"011A0R17\",\"ooi \":\"011J0R0R\",ooie:\"0R0L\",ooit:\"011D0R33\",\"ooit \":\"011G0R45\",ooj:\"1C0B\",ooke:\"0M0O\",ooked:\"0M0X\",ooki:\"0M0Q0Z051106\",ookin:\"0M0W1102\",ooks:\"0M0T11021C0Q\",\"ooks \":\"0M13\",\"ool \":\"010N0L050M190P020R1F0Z0215031C0O\",oola:\"1C0O\",oole:\"1C0L\",ooli:\"0M0211041C1N\",\"ooli \":\"1C1L\",\"oom \":\"011A0M130R0Y\",ooma:\"11071C1V\",oomas:\"11071C2G\",oon:\"011W0D170M0M0R1A111F1C1S\",\"oon \":\"012S0D1H0M0Z0R2O11241C0Q\",oong:\"0D0R0R02\",\"oong \":\"0D1E\",ooni:\"11041C14\",oont:\"010S0R0Y\",\"oont \":\"0R13\",oontl:\"010I\",\"oop \":\"013Z0R1G\",oopt:\"0R0J\",\"oor \":\"017H0M0V0RB71C0G\",oorb:\"0R0P\",oord:\"011X0R4J\",\"oord \":\"010N0R2K\",oorde:\"010Y0R2Q\",oorl:\"0R0M\",oors:\"010W0M030R0M\",oort:\"011D0R12\",\"oort \":\"010Y0R0T\",oorz:\"0R0N\",oos:\"010Q0M030R0D11081C1Q\",\"oos \":\"011D0R101C1B\",oot:\"010N0L040M090R0J110I1C1U\",\"oot \":\"011A0L020M060N030R1C1109\",oota:\"1C1K\",oov:\"1C1K\",oovi:\"1C1V\",ooz:\"0T02\",opb:\"1Q0V\",opc:\"0O020U021A091Q09\",opd:\"0R020Z041Q0U\",\"ope \":\"0L090M0V0P020Q030T0O\",opea:\"0M020O030Q021113\",open:\"0M0M0R310U0C\",\"open \":\"0M0I0R3D0U0D1103\",opet:\"0R020V0I112W\",opett:\"1155\",opf:\"0N0B0Z07\",opg:\"010I0R0A0Z03\",opge:\"01140R12\",oph:\"0L080M030N030R020T0C0V060Z02\",\"opi \":\"0B0Q0Q020V0311021P0I\",opil:\"0U0R150W1O02\",opini:\"0L0E0M070O0G0P0E0Q090T03150A1A081O20\",opir:\"1D1A1O03\",opirk:\"1D32\",opis:\"0D030U0Z0V05112E1A0D\",\"opis \":\"0U111A06\",opisk:\"114Z\",ople:\"0M1L0R030Z031O031Q0B\",\"ople \":\"0M24\",opm:\"1Q0F\",opn:\"0R030U040Y07130P1A081Q08\",\"opo \":\"0P090Q0W1O06\",\"opp \":\"100E122W\",oppa:\"0Q03101E110B130A1Q06\",oppas:\"100L\",oppd:\"120C\",oppe:\"0L050M0C0N040Q020R0K0T030Z0Y100B11021216\",\"oppe \":\"0L030Q020Z0B120D\",oppen:\"0R0L0Z061007120C\",opper:\"0L020R040T030Z0D11041209\",oppf:\"120K\",oppg:\"120D\",oppi:\"0M050P020Q0C0R030T0Q111E\",oppl:\"1003120I\",oppm:\"1208\",oppo:\"0L060M070Q260T021102\",\"oppo \":\"0Q1Y\",oppt:\"120C\",oppu:\"0T0311171Q0U\",opra:\"0Q0F0U200V0C0Y0L1A0D1F031O0E\",oprav:\"0Q050U2R0V0I0Y0R\",opri:\"0L050P050Q140T080V060Z02151H\",oproj:\"1D2F\",\"opt \":\"0R0Y1509\",opus:\"0T1V0U0I0V080Y0E110515041A03\",\"opus \":\"0T1Z\",opv:\"01070Z021Q03\",opvo:\"010F0R02\",opvoe:\"010G\",opw:\"1Q0B\",opy:\"0D020U021A031F051Q0B\",opz:\"0R02\",opæ:\"0Z02\",opé:\"0L06\",opó:\"0O030P041A04\",opā:\"1D0T\",\"opā \":\"1D11\",oq:\"0L030O030P030T1G1Q2C\",\"oq \":\"1Q4V\",oqu:\"03020L0G0O0A0P0C0T3F\",oque:\"0L0I0O090P0D0T2Y\",\"oque \":\"0L0H0O040P090T1N\",oquer:\"0L050T0Y\",oqui:\"0O030T2I\",\"oqui \":\"0T1A\",oquit:\"0O020T10\",\"or'\":\"1F03\",orad:\"0O0H0P0M0U0610081A0A1F151N101O04\",orada:\"0O070P0E1F1K\",orady:\"1N1E\",orag:\"0L020P040Q0D1N1J\",oraj:\"0O020P030V051A171O06\",\"oraj \":\"1A1U1O08\",oram:\"0O020P100T0U0V161A021N0P1O07\",\"oram \":\"0P150T0T0V1L\",\"oran \":\"0B0M0L020N050O020R050V0Y0Z0H12091F041O07\",orane:\"042S0Q020Z021B07\",orang:\"0BFQ0L090M030N050P020Z02\",orant:\"0L030O020Q0V0T0B1O08\",orar:\"0O0J0P0R0Q1E0T0E0Z0215051F02\",\"orar \":\"0O0H0P0U\",orare:\"0Q180T0E1505\",\"oras \":\"0D0Z0O0Z0P1N0S3J0T0F1B1E1O29\",oravi:\"0T0B0V1S1105\",oraç:\"0P0K\",\"oraš \":\"0V1L\",oraŭ:\"1O1D\",\"oraŭ \":\"1O2P\",orbeș:\"151Y\",orbr:\"0R040Z0810041208\",ordb:\"0Z0F1008120B\",\"orde \":\"0L090O020P030R0N0T060Z0Z102U121E1O02\",ordel:\"010G0L020R0F0Z021206\",orden:\"0N150O0M0P060R4W0Z0S100D120I\",ordet:\"0N020T020Z0X100O1210\",\"ordi \":\"0Q060Z0Q120V\",\"ordo \":\"0O080P0I0Q0R0T081O0X\",ordr:\"0L090Z091002120D\",ords:\"0L020M0A0Z091003\",ordt:\"0R1P\",\"ordt \":\"0R2A\",ordu:\"0L05140L1F6P1Q0S\",\"ordu \":\"0L051F63\",ordum:\"1F2B\",ordít:\"1413\",oreld:\"120O131L\",orell:\"0Q0U1108\",orels:\"0Z0D120D\",orem:\"0P020T2L0U0411081A0O1O03\",\"orem \":\"0T2Q0U061A12\",\"oren \":\"0N140R290V080Z09110E1211\",orer:\"043O0L090Q030Z0410061205\",orera:\"043O0L021003\",\"ores \":\"0L040M030O2Q0P2S0T2V0Z1T\",oresh:\"0441\",oret:\"0T040Z0H10021104120E\",oretr:\"0Z0E1206\",orfa:\"0N020Z071006120A130F\",orfo:\"0Z24122J\",orfor:\"0Z2L122K\",orgaŭ:\"1O1C\",orgen:\"0N2L0R330Z2D1003121E\",orgh:\"1Q4E\",\"orgh \":\"1Q5O\",orgo:\"0M0A0Q0B101I14051O05\",orgon:\"101I\",orgu:\"0O080P08131I1F0H1O03\",orgun:\"13331F0K\",orh:\"0N040Z061208\",orho:\"0M020Z07120B\",oriad:\"0Y1G\",\"oril \":\"0Y1S\",orir:\"0O0B0Q0D1O0M\",\"oris \":\"0T1M1O0V\",orist:\"0L030M020O020P070R020V1X110J14021O08\",oriu:\"0T1E15061B3X\",\"oriu \":\"1B78\",oriun:\"0T0X\",oriť:\"0Y1E\",\"oriť \":\"0Y1Q\",orj:\"110K1402\",orke:\"0M0B0R030Z0E110N12051B031F02\",orker:\"0M050Z0E\",orki:\"030R0M0E1105\",orkin:\"0M0K1102\",orkl:\"0Z0B120O\",orkla:\"0Z0D120N\",orla:\"0Z0C120A14071F1U1O0C\",orlar:\"1F25\",orld:\"0M0N\",\"orld \":\"0M0S\",orlo:\"010N0L020R0P0Z0712051O09\",orlog:\"0L040R0S\",orlos:\"010I\",\"orm \":\"0M090N050R0B0S4D0Z0610071206150D\",\"orn \":\"0M0D0N030R020Z02100C1306\",\"orna \":\"0P030Q050V09100Y\",ornat:\"0Q0V\",ornin:\"0M0O1104\",\"orno \":\"0O070P060Q1V0V0F1O03\",ornå:\"0Z0V\",ornår:\"0Z12\",oroj:\"1B021O0R\",\"oron \":\"110214021O1Y\",oror:\"04110T1G\",orpr:\"0D020O0H0Q0K1O02\",orq:\"0O0Y0P0W0T02\",orqu:\"0O1H0P130T04\",orque:\"0O1W0P190T04\",orra:\"0N030O0G0P050R021004140G1C1I\",\"orra \":\"0O030P03100214081C1E\",orrei:\"0P040Q11\",orrer:\"0O080P0S0Q0A\",orreu:\"0L050P0P\",orri:\"0L090M0A0N020O0J0P0K0Q0I0R020T091207\",orro:\"0L020M0Y0O090P0X0Q040T021406\",\"orro \":\"0O060P0Z\",orrow:\"0M1A\",orry:\"0M0I0R06\",\"orry \":\"0M0N0R08\",orsa:\"0Q0M0Z021009110214151F0J\",orsan:\"140Y1F0H\",orse:\"0M0A0Q0U1005\",\"orse \":\"0M0B0Q0R1004\",orsi:\"0D020N070Q060T040Z0A120F\",orsik:\"0Z03120C\",orsk:\"0U020V040Z0P1006121N1A03\",\"orsk \":\"0Z03120J\",orske:\"0Z0O120E\",orskj:\"120L\",orso:\"0Q0Y120914031O04\",\"orso \":\"0Q0Y1O04\",orsq:\"0L0W\",orsqu:\"0L1J\",orst:\"0M020N080R0S0Z1C10061102121T1A02\",orstå:\"0Z15121G\",orsu:\"0T0811021A021F4I\",orsun:\"1F64\",orsv:\"0Z0B120C\",orsz:\"142F1A07\",orszá:\"142G\",orsø:\"0Z0I1208\",orsøg:\"0Z0M\",\"orta \":\"0D020L020O0T0P1B0Q1A0T05100J1102140315051F041O0L\",ortal:\"0O060P040Q030T0C0Z0X120T1F04\",ortan:\"0D080L170M0G0O100P0U0Q0O0T061002151G1O08\",ortel:\"0L040R0612101B06\",ortf:\"10151A04\",ortfa:\"1015\",orth:\"0L020M0C0N050S0T\",\"orto \":\"0O080P0N0Q1W0T0F1B0C1O1H\",orts:\"0L0D0M070N050R050Z0D100F121C\",ortsa:\"0Z0410041210\",ortuu:\"0T0Y\",ortæ:\"0Z0Q\",ortæl:\"0Z0W\",orul:\"1407153H1F0B\",\"orul \":\"1402153Y\",orum:\"0N020T4N130E15051B021FE3\",\"orum \":\"0N030T4V130T1FHO\",orun:\"14021F4D\",orund:\"1F3T\",oruz:\"1F21\",\"oruz \":\"1F2S\",orvos:\"1413\",orw:\"040Y0M030N020R021A021Q0K\",orwa:\"042V0M050R021Q0S\",\"orwa \":\"0453\",ory:\"0D030M0C0T040U090Y0C1A0I\",\"ory \":\"0M0N0U0E0Y0E1A0F\",orz:\"0N020O060Q090R0614051A1F\",orá:\"0P050U050Y0I140T\",orå:\"0Z03\",orår:\"0Z09\",oræ:\"0Z09\",oræl:\"0Z0O\",oræld:\"0Z0T\",orç:\"0P0G1F071N09\",oré:\"0L070P040Y0Z\",\"oré \":\"0L060Y1D\",orê:\"0L04\",orì:\"0Q03\",orí:\"0O0C0Y3X1406\",\"orí \":\"0Y34\",orím:\"0Y1O\",\"orím \":\"0Y1S\",orít:\"0Y0Z140F\",oríte:\"0Y18\",oríš:\"0Y16\",\"oríš \":\"0Y1H\",orð:\"132I\",orða:\"131P\",\"orða \":\"131X\",orði:\"131A\",orò:\"0Q02\",oró:\"0O041A06\",orú:\"0Y0N140E\",orý:\"0Y13\",\"orý \":\"0Y1L\",orā:\"0T021D0G\",oră:\"150H\",orė:\"1B1V\",orėj:\"1B1M\",orėja:\"1B1M\",orėjo:\"1B1O\",orėč:\"1B0V\",orėči:\"1B1T\",orō:\"0T02\",orț:\"150K\",\"os'\":\"0Q0I1Q07\",\"os-\":\"0P021P0N\",\"os-l\":\"1P0T\",osaa:\"112B\",\"osaa \":\"113L\",osai:\"0L030S0Q1103\",osan:\"0B0J0L020V05110C1428\",\"osan \":\"0B0I0V0E1108142D\",\"osao \":\"0V1Z\",osas:\"0D040O1G0P0B0T051107\",\"osas \":\"0D070O1X0P0E0T051B031O03\",osca:\"0O030P020Q050S0M\",osce:\"0Q1F0T0K\",osch:\"0N040Q0R0Y091Q0G\",osche:\"0N020Q0Q\",osci:\"0Q0V0T09\",oscu:\"0O0B0T0S150P\",oscul:\"0T0S\",osed:\"0M0O0U030V031O08\",\"osed \":\"0M0X\",oses:\"0D030L150M040O0311031507\",\"oses \":\"0D020L1W0M050O02\",oseć:\"0V0Y\",oseća:\"0V2B\",osf:\"0P021503\",\"oshi \":\"043I\",osia:\"0B070Y0B110M120B1A06\",osib:\"0D040O0R1511\",osibl:\"0D060O0U\",osie:\"010K11031A081O02\",osj:\"12051A02\",osje:\"120B\",oska:\"114G14051A051C16\",\"oska \":\"11351405\",oskaa:\"117K\",osle:\"0U130V150Y10\",osled:\"0U180V1F0Y12\",oslo:\"0O040U0U0V0E1208\",oslou:\"0U0Z\",\"oso \":\"0D050O1Z0P1I0Q1R1O02\",osos:\"0O0I0P0D\",osot:\"0O1J1402\",osotr:\"0O21\",ospe:\"0O070P020Q0Y0T081O02\",osped:\"0P020Q0Q\",ospi:\"010H0D020M080O0A0P090Q050T060Z081A041O03\",ospit:\"010I0D040L020M0B0O0D0P0C0Q040T050Z091O06\",osq:\"0M020O070P030T061Q09\",\"oss \":\"0M0E0N0B102A123N\",ossa:\"0P1D0Q0U0T0F100411531404\",\"ossa \":\"0P1B0Q0H0T04100211B41402\",osse:\"0L0H0M040N0J0P0P0Q170R080T0Y0Z04\",\"osse \":\"0L0I0P0O0Q0T0T0L\",ossi:\"0L0Y0M0H0P060Q2R0R060T0R\",ossia:\"0Q0S\",ossib:\"0L1B0M0K0P050Q0N0T05\",ossim:\"0Q0Y0T06\",osso:\"0P370Q32\",\"osso \":\"0P3M0Q2Q\",ossu:\"0P080T2J1103\",ossum:\"0T28\",ossz:\"1437\",\"ossz \":\"1413\",ossí:\"0P0L\",ossív:\"0P0R\",ostaa:\"1137\",ostar:\"0O070P1U0Q020U070V09100A130B1A08\",ostat:\"0Q030U150V0K0Y0O11061A1F\",ostav:\"0P080U0I0V350Y0V110S\",ostał:\"1A2Z\",ostať:\"0Y1A\",ostel:\"0U0V0Y0S11081402\",\"osti \":\"0Q060T030U2T0V3F0Y3R112L130K\",ostl:\"0U080Y0D1F031N0X1O02\",ostla:\"0Y0D1N171O04\",\"osto \":\"0D020O030P2I0Q1L0U070V0I11051A051B071O05\",ostoj:\"0V211O06\",ostra:\"0O0E0P0G0Q2A0T100U020V0A10021A0J\",ostre:\"0O020P050Q1B0Y0A1O02\",ostri:\"0Q1J0T0G\",ostro:\"0O040P050Q1O0T0B0U041A0C\",ostru:\"0QBV0T0I1511\",ostum:\"0L040O0H0P0V0Q02110315051F021O04\",osw:\"1Q10\",osy:\"0D021A0C1F05\",osz:\"140Z1A3C\",oszt:\"14181A0E\",oszę:\"1A24\",\"oszę \":\"1A3E\",osé:\"0L0D0P04\",osì:\"0Q1Z\",\"osì \":\"0Q35\",osí:\"0U1A0Y2A1407\",osím:\"0U1T0Y3M\",\"osím \":\"0U2H0Y4G\",osú:\"0S0M\",osť:\"0Y2F\",\"osť \":\"0Y3X\",otag:\"1N15\",otai:\"111M1B07\",otain:\"113V\",otar:\"0O070P060Q0X0T0410021A07\",otare:\"0Q0X0T04\",otas:\"0O0A0P080T0311021B0L1C0Q\",otb:\"0L030M020U04100512041506\",otba:\"0L050M030Q020U0612091403150A\",otc:\"0U0B0V020Y0D1Q03\",otd:\"150T\",otdea:\"151P\",otec:\"0L020M050O0B0P080Q0X0U110Y1B150E1A03\",\"otec \":\"0U1F0Y1M\",oteik:\"1D1R\",otek:\"0D020V030Z08100712061A071B0A1O0A\",\"oten \":\"0N0H0R160U031004111Q\",otet:\"0Q0M110I1207\",otev:\"0Q0H0U0Y\",otevř:\"0U19\",otg:\"1P0H\",oth:\"0L060M2B0N030R030S0R0T07\",\"oth \":\"0M0R\",otha:\"0S0M\",othe:\"0M2V0N060R0A0T09\",other:\"0M3M\",othi:\"0M0O\",othin:\"0M0W\",\"oti \":\"0B080Q060T020U0J0Y0J11041B5W1D5M\",otie:\"0R020T0511021B031D2Z\",otiek:\"1D1R\",oties:\"0T031B051D5L\",otii:\"0T05111A\",otiin:\"1131\",otik:\"11021D1E1P0Q\",otika:\"11021D25\",otin:\"0M020P020T030V0A110J1B1F\",otina:\"1B1K\",otio:\"0L040M040T1P\",otion:\"0L070M060N020T110Z02\",otivē:\"1D2F\",otk:\"0U0G0V0E0Y07110Z1A12\",otka:\"0U0G0V07110Y1A1C\",otl:\"0R021F041N0J1Q2O\",otlh:\"1Q4P\",\"otlh \":\"1Q54\",otm:\"1Q04\",otn:\"0U0C0V050Y0F13031A0G\",\"otom \":\"0U080V090Y0X\",oton:\"0B0F0L020O020Q0211121O06\",otoo:\"0D09\",\"otor \":\"010N0B0F0N020O030P020R030U031402\",otož:\"0U0W\",otože:\"0U17\",otp:\"0V0T1Q07\",otpun:\"0V1O\",otra:\"0O1D0U050V031A0O1B0E\",\"otra \":\"0O19\",otre:\"0L4I0Q1G0U060V0Y0Y3K\",\"otre \":\"0L7I\",otreb:\"0Q0N0V270Y4D\",otro:\"0O2M0T040U030V051004\",\"otro \":\"0O15\",otros:\"0O2C\",otrz:\"1A22\",otrze:\"1A2Q\",\"ots \":\"010K0L0O0M080R0C10081D0Z\",otsa:\"100211041C0I\",otse:\"0D0H0R05\",\"otse \":\"0D0S\",otsi:\"11091C1U\",otsia:\"11061C2J\",otsu:\"1C0V\",otsus:\"1C26\",\"ott \":\"0N0D100U1208130S14CP\",otta:\"0L020Q0J1008115W14471Q0G\",\"otta \":\"0Q0A1002114V141T\",ottaa:\"1148\",ottam:\"111H141K\",\"otte \":\"0L080Q0X0R040Z0C1109\",ottel:\"010I1114\",otth:\"1419\",ottho:\"141A\",otti:\"0Q0S111F\",\"otti \":\"0Q07112O\",otto:\"0M020Q201002110Q\",\"otto \":\"0Q17\",\"otu \":\"0U080V0A0Y0F11021A051B021D0Z1F02\",\"otul \":\"151M\",otur:\"10021F101N1V\",otv:\"0U060V0K0Y0X\",otvo:\"0V0K0Y1C\",otvor:\"0V1F0Y1O\",oty:\"0U0A0Y0914021A0U1B051N11\",otyr:\"1N1I\",otz:\"0N03\",otá:\"0P020U0J0Y0X1403\",otáz:\"0U0R0Y1J\",otázk:\"0U0X0Y1B\",oté:\"0L070U03\",otí:\"0P080U04\",otó:\"0O0514031A05\",otā:\"1D0O\",otāj:\"1D0S\",otř:\"0U27\",otře:\"0U3L\",otřeb:\"0U4W\",\"ou'\":\"0M1D\",\"ou'l\":\"0M0E\",\"ou'll\":\"0M0J\",\"ou'r\":\"0M1I\",\"ou're\":\"0M22\",\"ou'v\":\"0M0D\",\"ou-\":\"0P0M\",oua:\"0L06150K\",oub:\"0L0S0M0B0P0G0U060V02\",oubl:\"0L180M0B\",oubli:\"0L1R\",ouc:\"0L150M050P1J0U0S\",ouch:\"0L1D0M090R050U0T\",ouche:\"0L1M0M030R040U06\",ouco:\"0P1N\",\"ouco \":\"0P1X\",oud:\"010Q0L0S0M060R1U0U0A110C\",\"oud \":\"01110M080R1K\",oude:\"0L020R3R1104\",\"oude \":\"0L020R0W\",ouden:\"0R2P\",ouder:\"0R1L\",oudr:\"0L0Z0U03\",oudt:\"0R1D\",\"oudt \":\"0R1V\",oue:\"010N0L14\",ouer:\"01110L0Q\",ouers:\"010S\",ouf:\"0L0D0U0M\",oufá:\"0U0R\",oufám:\"0U0Z\",oug:\"0L0G0M2F\",ough:\"0M4F\",\"ough \":\"0M1W\",ought:\"0M45\",ouh:\"0L090U1A\",ouhla:\"0U0S\",ouho:\"0U15\",\"ouho \":\"0U1I\",oui:\"0L0Z\",ouil:\"0L0T\",ouill:\"0L1E\",ouj:\"0L1B\",oujo:\"0L28\",oujou:\"0L3R\",ouk:\"0U0F110W\",oula:\"0L18\",oulai:\"0L1T\",ould:\"0M8L\",\"ould \":\"0M8H\",\"ould'\":\"0M0S\",ouldn:\"0M2Q\",oule:\"0L240U02\",oulez:\"0L1C\",oulu:\"0L07112C\",ound:\"0M24\",\"ound \":\"0M2E\",oung:\"0M0I\",ount:\"0M130Q020R02\",ountr:\"0M0Q0R02\",oup:\"0L2O0M070P0C0U21\",\"oup \":\"0L300M07\",oupe:\"0L0T0U08\",oupi:\"0L030U28\",oupil:\"0U25\",oupit:\"0U0Z\",\"our \":\"0LCD0M5E\",oura:\"0L0R0M060P060U03\",ourd:\"0L1V\",\"ourd'\":\"0L2I\",ouri:\"0L100M050N02\",ourn:\"0L1T0M040R030Z02\",ourq:\"0L2S\",ourqu:\"0L4P\",ourr:\"0L2A\",ourra:\"0L1X\",ourri:\"0L1P\",ours:\"0L4C0M13\",\"ours \":\"0L6K0M0N\",ourse:\"0L0G0M0V\",\"ous \":\"0LQP0M1L1107\",ouse:\"0L0C0M1A0U0G110A\",\"ouse \":\"0L0D0M1L1106\",\"out \":\"010T0L610M6G0R0P0U1N\",oute:\"0L410M030R0D\",\"oute \":\"0L3B0R02\",outes:\"0L20\",outr:\"0L030P22\",outra:\"0P13\",outro:\"0P1J\",ouv:\"0L670P1A0U071103\",ouva:\"0L0V0U031106\",ouvai:\"0L18\",ouve:\"0L6O0P0A\",\"ouve \":\"0L180P09\",ouvea:\"0L1J\",ouvel:\"0L1U\",ouven:\"0L1Z\",ouver:\"0L3D0P02\",ouvez:\"0L1S\",ouvi:\"0L0E0P19\",ouvo:\"0L0Z\",ouvr:\"0L0Y\",ouvé:\"0L0U\",\"ouvé \":\"0L17\",ouw:\"0R18\",\"ouw \":\"0R2Q\",ouwd:\"0R0P\",ouwe:\"0R15\",ouwen:\"0R1D\",oux:\"0L080P06\",ouz:\"0L030U190V04\",ouzs:\"0U0X\",ouzsk:\"0U1A\",ouzšt:\"0U0S\",ouç:\"0P04\",oué:\"0L09\",ouă:\"1528\",\"ouă \":\"153A\",ouř:\"0U0J\",ouš:\"0U0K\",ouž:\"0U0L0Y0D\",ouží:\"0U0P0Y0E\",\"ov'\":\"0Q0D1Q0K\",ovaj:\"0V171O0A\",\"ovaj \":\"0V311O0A\",oval:\"0Q030U4E0V0A0Y4611031F02\",\"oval \":\"0U440Y2R\",ovala:\"0U0X0V0B0Y181F02\",ovali:\"0U0Z0V080Y18\",ovan:\"0Q0U0U0H0V0Y0Y1W100511071B0N1O0H\",ovani:\"0Q060V060Y0X\",ovar:\"0P060Q180V0T100511031403\",ovara:\"0V231103\",ovare:\"0Q0T\",ovas:\"0P07110K1B041O4X\",\"ovas \":\"0P091B081O9G\",\"ovat \":\"0U5E11D21402150G\",ovato:\"0Q10\",ovať:\"0Y49\",\"ovať \":\"0Y59\",ovb:\"1Q1S\",\"ovbe'\":\"1Q4G\",ovd:\"0U020V1X\",ovde:\"0V2B\",\"ovde \":\"0V5T\",\"ove \":\"0M1I0P080Q4H0T040V1L0Y0B0Z0E120A1B021O0E\",oved:\"0M0I0Q040U090V040YA90Z1312091507\",\"oved \":\"0M0P0Z05\",oveda:\"0Y9X\",ovede:\"0U040Z0J\",ovedz:\"0Y2J\",ovek:\"0V0W0Y18\",\"ovek \":\"0V1M0Y0S\",\"over \":\"0M1K0N030O0C0P0B0R4X0Z32100C122F\",overf:\"0Z0F1208\",overr:\"0Z0D120F\",overs:\"0M040O020Q020R090T020Z10120R\",ovet:\"0Q0K0T050Z0A100611031207\",oveď:\"0Y16\",\"oveď \":\"0Y1E\",\"ovi \":\"0Q090T0O0U4I0V1A0Y3C110E1B0B1O0I\",ovie:\"0L020M0C0O070Y1K\",ovis:\"0L030O020T0L10021O1G\",\"ovis \":\"0T0B1O2V\",ovk:\"0U030V050Y0E\",ovl:\"0U050V030Y050Z021Q0D\",ovn:\"0U120V0B0Y1N0Z0212031Q04\",ovnak:\"0Y0X\",ovní:\"0U0J0Y11\",ovník:\"0U0G0Y14\",\"ovo \":\"0P1M0Q180T040U0R0V420Y131O05\",ovol:\"0U0W0V0Y0Y0T\",ovolj:\"0V2G\",ovor:\"0U040V2S0Y95\",ovori:\"0V4O0Y3S\",ovorí:\"0Y74\",\"ovou \":\"0P020U0X\",ovr:\"0Q1N0U020V0N0Y050Z0310021O09\",ovre:\"0Q2D0V0K0Z07\",ovreb:\"0Q0V\",ovs:\"0U030V020Y0E\",ovt:\"1Q05\",ovu:\"0Q0L0T0E0U0G0V0W0Y0B11051B021F041O0K\",\"ovu \":\"0U0N0V0Z0Y0F1O09\",ovus:\"0T061O0M\",ovut:\"0Q0V1105\",ovuto:\"0Q0Q\",ovv:\"0Q08\",ovy:\"040C0U08\",ová:\"0P040U1F0Y14140Q\",\"ová \":\"0U0L0Y17140J\",ovább:\"1415\",ován:\"0U1B1402\",ování:\"0U17\",ovä:\"1004\",ové:\"0U1E0Y0W\",\"ové \":\"0U1N0Y1A\",oví:\"0U0E\",ovò:\"0Q05\",ovú:\"0Y0G\",ovü:\"1P12\",ovül:\"1P1B\",ovüli:\"1P1J\",ový:\"0U0Y0Y11\",\"ový \":\"0U150Y19\",ovė:\"1B0M\",ově:\"0U1Q\",ověd:\"0U0T\",ověk:\"0U11\",\"ověk \":\"0U13\",\"ow \":\"0M6K0P02\",owa:\"0M041A7Z1N24\",\"owa \":\"1A161N15\",owad:\"1A0Y1N15\",owada:\"1N17\",owadz:\"1A1D\",owan:\"1A2U\",owani:\"1A22\",ować:\"1A2M\",\"ować \":\"1A45\",ował:\"1A3K\",\"ował \":\"1A2Q\",owałe:\"1A1F\",owd:\"0M02\",\"owe \":\"010F0M021A13\",owed:\"0M0L\",\"owed \":\"0M0T\",ower:\"0M0M1A0E\",owi:\"0M061A8I\",\"owi \":\"1A1K\",owie:\"0N021A7H\",owied:\"1A7Q\",owiek:\"1A1I\",owin:\"0M0C1A25\",owini:\"1A22\",owl:\"0M051N09\",owo:\"1A1Q\",owp:\"1N0B\",\"ows \":\"0M16\",owt:\"1A04\",owu:\"1A0C1N0W\",owy:\"1A1Z1N54\",\"owy \":\"1A1Q1N6U\",\"ox \":\"0M040T0H\",oxi:\"0L020M020O040P070T0H1505\",oxim:\"0L020O040P070T0S1505\",\"oy \":\"0D0G0M0C0O5L1F081P0B1Q2I\",\"oy'\":\"1Q2T\",\"oya \":\"041O0L020O021F06\",oyag:\"0L0O\",oyd:\"1F0F1Q04\",oye:\"041C0B020L110M060O09\",\"oye \":\"043Y0O03\",oyez:\"0L0Q\",oyf:\"0M02\",oyi:\"0M021Q0K\",oyn:\"1F13\",oyna:\"1F10\",oyo:\"0L050O02\",oys:\"0M040T0G\",oyse:\"0T0R\",oyu:\"1F1M1P10\",oyuf:\"1P1A\",oyufo:\"1P1I\",oyun:\"1F1F\",oyé:\"0L0B\",oyó:\"0O02\",\"oz \":\"0O0B0P0A0T020V0I141B1F03\",\"oza \":\"042Z0V0415051A071O06\",ozaj:\"0V090Y1T1O02\",\"ozaj \":\"0Y271O03\",ozc:\"0O0A1A03\",ozd:\"0U0V0V030Y0B14061A061F02\",ozdě:\"0U0Y\",oze:\"041K0M020N020P040R050U0M0Y0F15031A031O05\",\"oze \":\"044Q0P020R060U041O04\",ozh:\"0U0O0Y0S1404\",ozho:\"0U120Y1B\",ozhod:\"0U1E0Y1D\",ozik:\"141C\",\"ozik \":\"141F\",ozin:\"0P1D\",ozinh:\"0P1Q\",ozm:\"0U040Y051A11\",ozma:\"0U021A18\",ozmaw:\"1A1Y\",ozn:\"0U0J0V150Y2N14121A0G\",ozna:\"0U0B0V180Y1V140G1A0N\",oznal:\"0U0A0V0B0Y1D1A02\",ozni:\"0V02141X\",\"ozni \":\"141Y\",ozná:\"0U0A0Y2K1402\",oznám:\"0U070Y1A\",ozot:\"141I\",ozott:\"141L\",ozp:\"0U060Y0U1A0A\",ozpr:\"0Y161A02\",ozprá:\"0Y1F\",ozr:\"0U030Y12\",ozri:\"0Y15\",ozt:\"0U041418\",ozta:\"142D\",oztam:\"140Y\",ozu:\"0U0Q0Y1714051A0W1F09\",ozum:\"0U120Y1Z1A1A\",ozumi:\"0U020Y1N1A1Z\",ozumí:\"0U0W\",ozv:\"0U0N0V0P0Y0P\",ozw:\"1A0Y\",ozz:\"0Q050U03141D\",ozzá:\"142C\",ozá:\"140E\",ozó:\"140A\",ozī:\"1D0Q\",ozīm:\"1D0U\",oß:\"0N0I\",\"oß \":\"0N07\",oße:\"0N0H\",oã:\"0P02\",oão:\"0P09\",oän:\"1003\",oç:\"0P05\",oça:\"0P08\",oço:\"0P0A\",oçã:\"0P03\",oë:\"010G0L02\",oël:\"010K0L0C\",\"oël \":\"010K0L0K\",oëls:\"010S\",\"oëls \":\"010T\",oí:\"0O060S09\",\"oí \":\"0O03\",oíc:\"0S0K\",oích:\"0S0O\",oíche:\"0S2T\",oíd:\"0O08\",oír:\"0O07\",oís:\"0O020P02\",oît:\"0L07\",oð:\"130E\",oñ:\"0O021N0R\",\"oñ \":\"1N0E\",oña:\"0O031N0S\",oño:\"0O03\",où:\"0L0D\",\"où \":\"0L1T\",oû:\"0L03\",oût:\"0L0H\",oý:\"1N2C\",\"oý \":\"1N0E\",oýa:\"1N0K\",oýd:\"1N0C\",oýl:\"1N0K\",oýn:\"1N0X\",oýna:\"1N15\",oýu:\"1N19\",oýun:\"1N17\",oć:\"0V0Z1A03\",oći:\"0V0V\",\"oći \":\"0V11\",oĉ:\"1O07\",oĉa:\"1O03\",oĉo:\"1O04\",oč:\"0U2R0V110Y2P1B03\",\"oč \":\"0U2J\",oča:\"0U080V0F0Y0O\",oče:\"0U0B0V0Z0Y05\",oči:\"0U0P0V1A0Y1A1B09\",očk:\"0U150Y0O\",očka:\"0U0V0Y0R\",očn:\"0U080V090Y1F\",oču:\"0Y1K\",očul:\"0Y1O\",\"očul \":\"0Y18\",očí:\"0U0L0Y0W\",očít:\"0U0M0Y16\",očíta:\"0U0R0Y1H\",oď:\"0U030Y0F\",\"oď \":\"0U060Y0K\",ođ:\"0V0L\",ođe:\"0V10\",oĝ:\"1O0G\",oĝa:\"1O0F\",oĝi:\"1O06\",oĝo:\"1O05\",oğ:\"1F1I\",oğa:\"1F0B\",oğl:\"1F0J\",oğr:\"1F1G\",oğru:\"1F1C\",\"oğru \":\"1F1D\",oğu:\"1F1L\",oľ:\"0Y1M\",oľk:\"0Y2H\",oľko:\"0Y3T\",\"oľko \":\"0Y4F\",oľn:\"0Y0H\",oľs:\"0Y0E\",oľv:\"0Y0D\",oł:\"1A19\",oń:\"1A10\",ońc:\"1A1L\",ończ:\"1A1E\",ończy:\"1A1Q\",oņ:\"1D06\",oň:\"0U030Y041N1K\",\"oň \":\"0U051N0F\",oňa:\"0Y061N1E\",\"oňa \":\"1N1R\",oňk:\"1N0H\",oř:\"0U0P\",ořá:\"0U0R\",ořád:\"0U19\",\"ořád \":\"0U14\",oś:\"1A37\",\"oś \":\"1A22\",ośc:\"1A28\",ości:\"1A37\",\"ości \":\"1A3R\",ość:\"1A1Q\",\"ość \":\"1A2G\",oŝ:\"1O07\",oŝt:\"1O07\",oş:\"1F0Z1N0N\",\"oş \":\"1F0N1N0E\",oşa:\"1F0D1N09\",oşl:\"1F0W\",oşla:\"1F10\",oşlan:\"1F1E\",oşu:\"1F0B1N09\",oš:\"0U0E0V1O0Y0C1B0E1D0W\",\"oš \":\"0V1P\",oša:\"0V0N1D18\",ošan:\"1D13\",ošana:\"1D21\",oši:\"0U040V080Y041B0B1D13\",\"oši \":\"1D11\",ošu:\"0V031B031D0K\",ošę:\"1B09\",oţ:\"1504\",oż:\"1A2L\",oże:\"1A36\",\"oże \":\"1A29\",ożes:\"1A1B\",ożesz:\"1A23\",oży:\"1A0W\",ož:\"0U1R0V1Z0Y1W1B07\",\"ožda \":\"0V1R\",ože:\"0U0W0V3V0Y1D\",\"ože \":\"0U110V1M0Y0Y\",ožeš:\"0V1Q\",\"ožeš \":\"0V4D\",oži:\"0U0J0V0O0Y1L1B08\",ožn:\"0U0Y0V020Y11\",ožno:\"0U0A0Y19\",\"ožno \":\"0Y13\",ožná:\"0U0Q\",\"ožná \":\"0U10\",ožá:\"0U0I\",ožád:\"0U0P\",ožáda:\"0U0U\",oș:\"150B\",oșt:\"150J\",oț:\"150X\",oți:\"153D\",\"oți \":\"154G\",\"p'\":\"1Q06\",\"p-\":\"1N05\",\"pa'\":\"1F031Q5A\",\"pa' \":\"1Q6G\",\"pa-\":\"0B0D\",\"pa-a\":\"0B0N\",\"pa-ap\":\"0B1B\",paa:\"010B0D0H0N070R0E11231B0D1C0O\",\"paa \":\"0D02111I\",paan:\"0D0J0R08110Q1C0I\",paano:\"0D0V\",paar:\"010K0D050N0H0R14\",\"paar \":\"010L0N0R0R0S\",pabi:\"0D0215091F14\",pabil:\"0L02150C1F1J\",pabl:\"0L0H0M020O061O0R\",pabo:\"0D06\",paca:\"0B0H1F1K\",pacağ:\"1F1F\",\"pada \":\"0BAS0D040O0C0P0D0Q020V1A150F1A0H\",padak:\"0B1K\",padam:\"0B1I1A02\",padar:\"1B8J1D1D\",pade:\"0D030O020U060Y09100P1A0B1B0A\",\"pade \":\"0Y0B100M\",pado:\"0O0O0P0Q0Y0C14031B061D0O1O02\",\"pado \":\"0O0Q0P0S1O02\",padr:\"0O1T0P060Q0Z\",padre:\"0O2D0P040Q0X\",padá:\"0U18\",\"padá \":\"0U17\",padė:\"1B2P\",padėt:\"1B2Q\",pae:\"0Q0D0T0D\",paes:\"0Q0K\",paf:\"1O05\",\"pag \":\"0D0F\",\"pag-\":\"0D0Q\",\"pag-a\":\"0D0G\",\"pag-u\":\"0D0I\",pagal:\"15051B3Y\",pagb:\"0D09\",pagh:\"0D060Q080R040Z021Q5W\",\"pagh \":\"1Q9A\",pagi:\"03020B0Z0D040Q050R020T0715041B031O09\",\"pagi \":\"0B1W1O09\",pagk:\"0D1E\",pagka:\"0D2C\",pagl:\"0D09\",pagm:\"0D06\",pagn:\"0L0U0Q19\",pagna:\"0Q0Q\",pago:\"0D060O020P061O04\",pagp:\"0D0E\",pagpa:\"0D0L\",pags:\"0D0I\",pagsa:\"0D0F\",pagt:\"0D0D\",pah:\"0B0A0D07111S15051F091Q0A\",pahi:\"0D0A1105\",paht:\"111Q\",pahtu:\"1146\",\"pai \":\"0B1M0P1G14071B08\",paik:\"111T\",paika:\"112E1B02\",pain:\"0B030D020L0H0M0G0P02110T1B05\",pais:\"0L050O020P0P110G1B061C0G\",\"pais \":\"0L030P0V\",paj:\"0B030O031A051B061O03\",\"pak \":\"0B0N0D040R080U0K0V041A07\",paka:\"0B680D0U11071A031B151D0X1O02\",pakah:\"0B9S0D04\",pakan:\"0B170D0211091B1G\",pakaļ:\"1D21\",pake:\"0D02100311091B0T1F04\",paki:\"0D0P0Q0D1A021B05\",pakl:\"1B101D0J\",pakla:\"1B1O\",palab:\"0D060O1G\",palag:\"0D0W\",palav:\"0P1A1104\",pald:\"0O061D0Z\",paldi:\"1D2K\",palik:\"1B211D43\",palin:\"0B1J1B03\",palj:\"11411C3E\",paljo:\"1195\",palju:\"1C7Y\",palu:\"0T0211021C2V\",palun:\"1C6B\",palī:\"1D2U\",palīd:\"1D6X\",pama:\"0B060D080U0Q11021B151D0J1F0K\",pamat:\"0U101B1U\",pami:\"03020D0C11021A0T1B10\",pamil:\"0D0G\",pamir:\"03051B1H\",pamä:\"0Y0X\",pamät:\"0Y0X\",panah:\"0D0I\",panas:\"0B1H140D\",pang:\"0B1N0D1N\",\"pang \":\"0B2H0D0T\",panga:\"0D17\",panh:\"0P0S\",\"pani \":\"110W1A0M1C1V1O02\",panj:\"0B0Q0R050V05110B1O06\",panja:\"0B1G110S\",pansk:\"0V0M0Z0J100F120I130Q\",pany:\"0B0A0D070M09140A1A021F091Q0Q\",pao:\"0V0A\",papir:\"0V0F0Z0G1205\",papp:\"100Q110612061308\",pappa:\"100H1205\",papr:\"14021B1I\",papra:\"1B31\",papu:\"041G0B0Q0D0A14021B02\",papun:\"0B1E0D0H\",paq:\"0O021Q3Q\",\"para \":\"0B1D0D3U0OAX0PFL0Q040T030V0I10031A021F1F\",parar:\"0O0K0P0N0Q190T04\",paraš:\"1B1W\",parc:\"0L0V0O050P020Q0E0T05150L1A02\",pard:\"0L0B0R0211021B101F051O0G\",pardu:\"1B1N\",\"pare \":\"0L070M040O020P0A0Q0F0T041003152L1O03\",parec:\"0O380P2V0Q04\",pareh:\"0D0I\",parei:\"0L0K0P031B0O1D21\",parem:\"0L030P0211301C31\",paren:\"0L1I0M0R0N040O060P070Q090R040T131O05\",parf:\"0L0P0R02\",parh:\"110F1Q5N\",parha:\"11121Q9G\",parke:\"0D0I0M030N020R090Z0I100F120F1B0D1F051O03\",parla:\"0L0F0N020O030P020Q3Q1103140215051F091O05\",parle:\"0L5N0Q040R02\",paro:\"0L0B0O050P090Q0Y1B0P1O32\",parod:\"1B1F\",parol:\"0L0H0Q0V1O5H\",\"part \":\"0L1Q0M0F0N021402150A\",party:\"010L0M0P0N081A03\",parv:\"0L0B0Q020T1C\",parā:\"0T031D0U\",parād:\"1D1R\",pasa:\"0B0A0D0E0O2P0V0415041A041B6E1D211F031O04\",pasad:\"0D020O1D\",pasak:\"1BAH\",pasar:\"0B090O0X\",pasau:\"1B2G1D43\",pasi:\"0B080D050O06110X1204140415041B7T1F021O0X\",pasik:\"1B20\",pasil:\"0O021B1T\",pasir:\"1B38\",pasis:\"1B1Z1O0E\",pasit:\"11091B23\",pask:\"0B050D0311081B261D0W\",paska:\"0B09110G1B1Y1D2A\",pasku:\"1A021B1Y\",paso:\"0D090O090V031A021B041O02\",passa:\"0L0K0N020P2F0Q1V0R020Z02100C110L130Q\",passe:\"0L2O0M0A0N0B0P0G0Q0C0R070T030Z0G1002120M\",passé:\"0L1U\",pasta:\"0O020P020Q030R04110A1B1P1F08\",pasti:\"0B1E0O020Q030V0A\",pastā:\"1D2K\",pasy:\"0D07\",\"pat \":\"0B5M0D190U04100611031404151M1B1H1D201F02\",patei:\"1B0C1D6G\",pater:\"0T2N\",patid:\"0D0R\",patie:\"0L0P0M090N050T030Z0410021B0B1D48\",patik:\"14031B291D1I1F02\",patin:\"0D020L020O021B5P1O02\",patk:\"0B0R1404\",patka:\"0B1G\",patn:\"0B080U11\",pato:\"0D070O0E0P0B0Q0P14021B061O02\",patre:\"0T0X\",patri:\"0L060O050P020Q020T1P1O1F\",patro:\"0L0D1F091O2H\",pats:\"1B0U1D0X\",\"pats \":\"1B1Q1D2F\",patu:\"0B0H0D0B0T0414021505\",patī:\"1D3O\",patīk:\"1D8O\",paur:\"0Q0S\",paura:\"0Q0R\",pava:\"0V0U1B1F1D0K\",pavar:\"1B1X\",pavo:\"0O020T030U031B0T\",pavy:\"1B0W\",paw:\"1Q1L\",pax:\"0T03\",pay:\"0B060D0B0L0Z0M081F0A1Q0I\",\"pay \":\"0D080M0C1Q08\",paya:\"0B060D07\",pays:\"0L12\",\"pays \":\"0L1N\",paz:\"0N030O0D0P0K0Q0O0V0A15021D1M1F0P\",\"paz \":\"0O0K0P0L\",pazi:\"0N070Q0P0V0C\",pazī:\"1D1A\",pazīs:\"1D1R\",paç:\"0P07\",paí:\"0O0N0P0Q\",país:\"0O100P0W\",\"país \":\"0O110P0V\",pað:\"130P\",pañ:\"0O0X\",paña:\"0O0I\",paý:\"1N0A\",pač:\"1B0G\",paŝ:\"1O06\",paš:\"0V031B0F1D1T\",pať:\"0Y0L\",\"pať \":\"0Y10\",paŭ:\"1O03\",paž:\"0V091B1Z\",paži:\"1B1G\",pažin:\"1B1L\",pažiū:\"1B1H\",pažį:\"1B0X\",pažįs:\"1B1Y\",pb:\"14031Q0M\",pbe:\"1Q1T\",pci:\"0O0B0P050U020Y051502\",pcs:\"140H\",pcsol:\"1413\",pda:\"0R020Z0312031Q0T\",pde:\"1N1J\",\"pde \":\"1N18\",pdi:\"1N0N1Q07\",pdy:\"1N1S\",\"pdy \":\"1N12\",pdyr:\"1N0Y\",\"pea \":\"0O020Q02110A1C11\",peab:\"1C11\",\"peab \":\"1C2J\",pead:\"1C0N\",\"pead \":\"1C1L\",peak:\"0M171C1N\",\"peak \":\"0M12\",peaks:\"0M081C42\",peal:\"11031C1T\",peale:\"1C2J\",pean:\"0M030S0M1C1K\",\"pean \":\"0M021C3V\",peann:\"0S2K\",peb:\"1Q03\",pect:\"0L0M0M0X0O0F0P040R080T2B0Y09150X\",\"pect \":\"0L0A0M0L0R041507\",pecta:\"0L080M020O030P020T1H150I\",pecu:\"0T2G\",pecun:\"0T23\",\"ped \":\"0M180O0214021Q0C\",peda:\"0B0N0O040P070Q0Q\",pedal:\"0Q0Q\",pede:\"0P050T0J0Z09140215101F03\",pee:\"010G0M050R09110H\",peel:\"010V0R0U1102\",\"peel \":\"010T0R08\",pegn:\"0Q0S\",peid:\"1C0L\",pein:\"0L0P0O02\",peit:\"0P0L110H\",pej:\"0O030Z021A021Q04\",peke:\"0B191405\",peker:\"0B2H\",pekt:\"0D020N050U030Z051008120F1A021B021O17\",pela:\"0B1H0L040O030P1E0T060V04101C1119\",\"pela \":\"0L020P1G0V0A100I\",pelaj:\"0B1O\",pelar:\"100M\",pelen:\"0R131B03\",pelk:\"1116\",pell:\"0L0V0M030O050Q0R0R050T1D1106\",pelle:\"0L1F0M020Q030R060T051105\",pelo:\"0L030O0J0P1J0R02110G1O051P1Q\",\"pelo \":\"0O0J0P1M1O03\",pelob:\"1P1A\",pels:\"0R0J0Z081005110612091B06\",pelí:\"0O0K\",pema:\"0B0M\",pemb:\"0B0L\",pena:\"0B0E0O0J0P170Q0X0T031O08\",\"pena \":\"0O0C0P0A0Q0X\",penas:\"0B0C0O0D0P181O02\",penda:\"0B0T0L1S1O0C\",pened:\"0M111P1A\",peng:\"0B1N0R020Z1O1018121I\",penga:\"0B1G1018\",penge:\"0B0S0R020Z21121J\",penia:\"0Y19\",penin:\"0M08132P\",penj:\"03020B0H\",penk:\"11041B11\",penki:\"11091B1I\",penn:\"0Q080R020T090Z02100E1104120C130A\",peno:\"0V021O031P13\",pensa:\"0L1A0O1J0P1R0Q2U0T0311031O21\",pense:\"0L5F0M020P0O0Q021O03\",penso:\"0L020P0D0Q3B1O0D\",pentr:\"15CC1O0D\",penu:\"0B0P\",peny:\"030F0B0H1402\",pení:\"0U18\",peníz:\"0U1E\",penö:\"1P0V\",peně:\"0U0S\",peněz:\"0U0V\",peo:\"0M0V0O0A0P020V0B\",peop:\"0M1L\",peopl:\"0M27\",peq:\"0O0J0P0K1Q05\",pequ:\"0O0U0P0P\",peque:\"0O130P0U\",\"pera \":\"0D0T0L020O0H0P0C0Q050T091O05\",perar:\"0O0S0P0Q0Q040T071507\",perb:\"0B0W0L020T07\",perc:\"0B140L050M030O040P0F0Q5K0T0G140Y1505\",perca:\"0B220P02\",perch:\"0Q5J\",perd:\"0B050L1B0O1S0P1N0Q0V0T0K1B091F021O0O\",perde:\"0L030O0J0P110Q0I0T031F03\",perdi:\"0L040O140P0K0Q040T0E1O10\",perdu:\"0L191B061O02\",\"pere \":\"0O030P060Q0P0T0W150E1O0V\",perek:\"1C1H\",perem:\"0B1P0O020P020T030V07\",perg:\"0B5S0P1M0T0I1B05\",pergi:\"0BAO0T04\",pergu:\"0P21\",perit:\"0T0U1103150C\",perk:\"0B0J0R041B0A\",perlu:\"0B2N\",perna:\"0B5Q0P081B04\",\"pero \":\"0D140O5G0P0Z0Q0O0T0S0U090Y0L1O0I\",perr:\"0L020N020O190T0A\",perro:\"0L020O1K\",perta:\"0B2L0O090P060Q090T0B1B021O06\",perti:\"0B590L020Q040T0C1O05\",però:\"0Q0M\",\"pes \":\"0L0E0M070O070P020T0R0U0X0Y13140J1F02\",pesa:\"0B0X0O0I0P0F0Q08\",pesaw:\"0B1E\",pesi:\"0O021108120C\",pess:\"0P2L0Q0Z0T0511031408\",pesso:\"0P370Q0S\",\"pet \":\"0B040D020M020V0V0Z0G100P121U140R\",peta:\"0B050O060T0F0V05110J15031C201O0H1Q0C\",petaj:\"1C2U\",petit:\"0L390M040N020O030P030Q020T080Z0211021B041O03\",petr:\"0O030P020T0A0U02151J1B021F021O03\",petre:\"151V\",pett:\"0Q2K112I140C\",petta:\"0Q1O114C\",peu:\"0L5A0P031105\",\"peu \":\"0L1Z0P02\",peur:\"0L0U\",\"peur \":\"0L1E\",peut:\"0L2V1103\",\"peut \":\"0L3K\",\"peut-\":\"0L1C\",peux:\"0L2V\",\"peux \":\"0L41\",pev:\"0Q0Q0V0D0Y0A\",pevo:\"0Q0N\",pew:\"03021A12\",pex:\"0T08\",pez:\"0L020O0K0Q060Y0B140415031O0A\",peä:\"110E\",peç:\"0P0A\",peó:\"0O03\",peč:\"0U0J0V030Y0O1B02\",peğ:\"1F0H\",peł:\"1A0W\",peň:\"0Y0I\",\"pf \":\"0N08\",pfa:\"040C0N0210041202\",pfe:\"0N0I\",pfi:\"0N02\",pfl:\"0N07\",pfu:\"042K\",pfuz:\"044T\",pfuza:\"047X\",pfø:\"0Z031204\",pfør:\"0Z081209\",pg:\"010A0R070Z02120313021B05\",pga:\"0Z0212041B0B\",pgav:\"0Z05120A1B04\",pge:\"010H0R0A\",pgi:\"1003\",\"ph \":\"0T0A\",phar:\"0L030T0Y\",phara:\"0T0T\",phe:\"0L050M040N020T051F0G\",phic:\"0T0V\",phr:\"0L0I0T05\",phra:\"0L0U0T04\",phras:\"0L1F0M02\",phu:\"0T04\",phy:\"0L030M030T02\",phœ:\"0T02\",\"pia \":\"0O0D0P030Q0P0T05110X15041A031B09\",piac:\"0Q6B1405\",piacc:\"0Q0U\",piace:\"0Q53\",pib:\"0T03\",picc:\"0Q0R\",pici:\"0M020T0U0U021402150K1A06\",pict:\"0M0C0T0D1509\",pida:\"0B050O0D0P0A0Q0C0T081C201O06\",\"pida \":\"0O070P040Q050T061C2D1O07\",pide:\"0L0Q0M020O070P020Q030T0C110M1O0O\",pido:\"0O0S0P0M0Q080T07\",\"pido \":\"0O100P0R0Q080T07\",pidä:\"113A\",\"pidä \":\"1136\",pidän:\"112U\",piec:\"0M051A121D0Z\",pieci:\"1D1R\",pied:\"0L0I0O090Q0G15071D1S1O0H\",piedo:\"1D1R1O0B\",pieg:\"0N040Q0W0R041A02\",piek:\"0Y081A0B1D0U\",piel:\"0N1S0O0411031A07\",pien:\"0O150Q0E0T0V111H1A1J1B0I1D0U\",pieni:\"111X1A2H\",piens:\"0O1A0T0A1105\",piepi:\"1D1R\",pierd:\"0O0815271A02\",pierw:\"1A1L\",pies:\"010K0O050T030Y0D1A0U1D13\",piet:\"0M020Q060T0515041B0Q1D1G\",pieti:\"1D2F\",piev:\"0Y1G1B021D0O\",pieva:\"0Y1T\",pige:\"0L020T050Z14\",\"pige \":\"0R020Z0M\",piger:\"0T040Z0D\",pih:\"0D030V02110914041Q0I\",pii:\"0T02110U150Y1C16\",piis:\"1C0K\",pije:\"0U0F0V0G0Y1A1A09\",pijn:\"0R0S\",\"pijn \":\"0R0Y\",\"pik \":\"10021P0V\",piki:\"0B2011051N60\",pikir:\"0B3X11061N85\",piko:\"0D0211021P2M\",pikol:\"1P24\",pikö:\"1P0T\",\"pil \":\"0U1P0Y1Z0Z07150K1Q1Q\",\"pila \":\"0O020T070U0I0V0D0Y0Y1311\",pild:\"0Z061B091D1C\",pildī:\"1D1M\",pille:\"0L040R030Z1N1105121G\",piln:\"0U031A051B0I1D13\",pils:\"1D1H\",pilsē:\"1D3L\",pilt:\"1208\",pinag:\"0D1J\",pinak:\"0D13\",pinan:\"0D0K1103\",pinap:\"0D0J\",\"ping \":\"0B0C0D030L020M120P020Q020R06\",pinig:\"1B4M\",pintu:\"0B1E0D070O070P03\",pinā:\"1D11\",pip:\"0D021102\",piq:\"0L051Q0F\",\"pir \":\"0B0S0V060Z06\",pirk:\"1B2F1D1P\",pirkt:\"1B1M1D25\",pirm:\"0D021B1Q1D25\",pirma:\"0D031B1O\",pisa:\"0B0E0D040O020V19100211021A19\",pisc:\"0L030N030O040P040Q0O0R030T141505\",pise:\"0Z1V1103121S\",\"pise \":\"0Z0X120Y\",piser:\"0Z19120S\",pisk:\"0Z02100311221402\",piske:\"0Z02114Z\",\"pist \":\"0Z0I120A\",piste:\"0L020O020Z0N110L120G1F04\",pistu:\"0T0X\",pisy:\"0D060U051A02\",\"pit \":\"0B050D0J0L020T1M0U0W0V0811051507\",pitan:\"0D040Q030V2015081A031O03\",pitk:\"111U\",pitkä:\"1141\",pitä:\"115I\",pitäi:\"114Z\",pitää:\"115L\",piu:\"0Q0D0T0A1B0B\",piut:\"0Q0K1B0G\",piv:\"0U0B0V060Y0B11061Q0O\",piy:\"0D031F0B\",piä:\"1104\",piè:\"0L0D\",pið:\"130K\",pió:\"0O06\",più:\"0Q3C\",\"più \":\"0Q5B\",pię:\"1A1C\",piękn:\"1A1N\",piĝ:\"1O05\",pił:\"1A14\",piş:\"1F0H1N0G\",piš:\"0U040V14\",piše:\"0V11\",piť:\"0Y0O\",\"piť \":\"0Y15\",pj:\"0R031302140G1B031D061Q06\",pja:\"1303140E1B051Q03\",pje:\"0R04\",pjá:\"140D\",pka:\"0B091A021B051F08\",pkan:\"0B0I\",pko:\"1404\",pku:\"0B03\",plaa:\"010F0R0Z1C0I\",plaas:\"010G\",plaat:\"0R1A\",plac:\"0L0T0M0O0O070P020T420U05155A\",place:\"0L160M0W0O080T3V0U05155K\",plad:\"0Z0H1F041O02\",plads:\"0Z0G\",plag:\"0L071209\",plai:\"0L160M0F\",plain:\"0L0D0M0K\",planl:\"0Z0312061F151N0Q\",plann:\"0M0P0R06\",plano:\"0D0F0O020P0H1A051B031O0H\",planē:\"1D1W\",plar:\"15041F0M1N13\",plass:\"120J\",plati:\"0L020U0T0V0Y0Y0M1B04\",plats:\"0L03100R\",plau:\"0L030O020Q020R020T0415061B1P\",plauk:\"1B2X\",plav:\"0U0U0V09\",play:\"0D020M160O091F02\",\"play \":\"0D020M0P\",plaî:\"0L14\",plaît:\"0L1W\",plea:\"0M140O0G0Q071508\",pleas:\"0M1I\",plec:\"0T0315301A04\",pleca:\"15241A04\",plei:\"0L0J0R03120C1B02\",plej:\"0O040Z0E1O25\",\"plej \":\"1O3Z\",pleje:\"0Z0H1O03\",plek:\"010N0R081O04\",\"plek \":\"010L0R09\",plen:\"0M020O030P030Q030T0N10071N0O1O1F\",pler:\"0T070Z03120C1F05\",\"pler \":\"0Z03120C\",pleu:\"0L0W\",plev:\"0T070Z021002120A\",\"pli \":\"0L050Q0H130714021O44\",plic:\"0L080M040O0T0P0N0Q0P0R080T0P0Z031003151W\",plica:\"0L0B0M050O0V0P0O0Q060T0D151A\",plid:\"1P0T\",pln:\"0U0Q0Y17\",plne:\"0Y0Z\",\"plne \":\"0Y10\",\"plu \":\"0L040R07150N1O11\",plus:\"0L7P0T0L0Z0311071505\",\"plus \":\"0LBY0R020T0M0U020Z03110H1506\",ply:\"0M040U060Y0E0Z04100412041B021N0G\",plá:\"0O030P020U0S0Y0Y1403\",plán:\"0U0R\",pláv:\"0Y0Z\",pláva:\"0Y18\",plâ:\"150K\",plå:\"1006\",plæ:\"0Z02\",plè:\"0L07\",plö:\"0N021006\",plø:\"1202\",plā:\"1D0Q\",plān:\"0T021D0W\",plă:\"1528\",plăc:\"151S\",plō:\"0T02\",pma:\"1F651N0D1Q07\",pmak:\"1F27\",\"pmak \":\"1F2M\",pmam:\"1F10\",pmas:\"1F0W\",pması:\"1F17\",pmay:\"1F1K\",pmaya:\"1F17\",pme:\"12021F041Q0N\",pmä:\"1003\",pna:\"100J130K14021B051Q03\",pne:\"0U0212061A05\",pni:\"0R020U031003130714061A071D1B1Q0B\",pnis:\"1D151Q0K\",\"pnis \":\"1D2Y1Q0P\",pny:\"0B051A07\",pnå:\"1202\",\"po'\":\"0Q151Q0O\",\"po' \":\"0Q1U1Q0U\",poa:\"1108152O\",poat:\"153Y\",poate:\"154W\",pob:\"0O0C0P080U060V0Q0Y0B1A0D1P0G1Q04\",poch:\"0L050Q080U0Y0Y0T1A0F\",poco:\"0O1U0Q0C\",\"poco \":\"0O270Q0C\",pocz:\"1A18\",pode:\"0O120P5S0U0B0V0315041A0C\",\"pode \":\"0P3O\",podem:\"0O0Q0P1F\",poder:\"0O0O0P27\",podi:\"0O030P0B0U020V071O021P0R\",podo:\"0U0I0Y1O1A1C1O02\",podob:\"0U0O0Y1H1A24\",podr:\"0O1G0U060V090Y081A0K\",podrí:\"0O1I\",podí:\"0O0K0U0Q\",podív:\"0U10\",pog:\"0Q030V1B14041A0L1O02\",pogle:\"0V1Y\",poh:\"0B090U0K0Y0Y110A14051Q1I\",poho:\"0B0J0U080Y0L\",poi:\"0L150M0A0P160Q09112E150D1A021C0P\",poik:\"111V\",poika:\"113S\",poin:\"0L0W0M0G11041A03\",point:\"0L1F0M0L1103\",pois:\"0L0F0M020P1B11201C0V\",\"pois \":\"0P1N112K\",poj:\"0U0Q0V0R0Y0C100E110D1A0Z1B031O0B1Q06\",pojk:\"100K\",poko:\"0U1G0Y1C14071A1A1O03\",pokoj:\"0U1S0Y151A1P\",poku:\"0U100V0W\",pokud:\"0U0R\",pokuš:\"0U050V25\",\"pole \":\"0U021A031CAZ\",polic:\"0L0V0M0M0O0P0P060U0Q0V0U1A0X1B131D1D1O0N\",polis:\"0B0V0M02100E1F0Z1N0J\",poln:\"1C0L\",polnu:\"1C1H\",poloč:\"0Y0Z\",polu:\"0U0O0V030Y1315071A031O02\",polí:\"0O0D0P0J0U0C\",poma:\"0T050U0B0V0K0Y101A0K\",pome:\"0Q0A0T050U0O0V0A0Y0N1B02\",pomn:\"0U0T1A0V\",pomně:\"0U14\",pomo:\"0Q020U2K0V1Q0Y1O11081A161O09\",pomoc:\"0U2E0Y171A15\",pomog:\"0V221A0G\",pomoh:\"0U130Y0W\",pomoć:\"0V1X\",pomín:\"0U0T0Y0B\",pomô:\"0Y2A\",pomôc:\"0Y1Y\",pomôž:\"0Y0X\",\"pon \":\"0B0K0D0U0L0F0M060O03140C1F081O171Q1G\",ponde:\"0L050O0C0P0M0Q0D0T0P0Y111O0B\",\"pone \":\"0O0D0Q0S0T0A1B04\",pong:\"0D0Z0O0D0Q031Q3A\",\"pong \":\"0D1S1Q19\",ponsk:\"0U0J0Y12\",pont:\"0L060O030P0S0Q0M0T0A141S1O05\",pool:\"0M030R041C1X\",poq:\"0L031Q1H\",\"por \":\"0B090OCD0P9G0Z02100414021F0E1O65\",pore:\"0Q040R020T0R0V0J1505\",pori:\"0T0C0Y16\",poria:\"0Y1F\",porq:\"0O1G0P10\",porqu:\"0O1W0P19\",\"pos \":\"0B040D0M0L0C0O0D0P0D0T0414071B061O06\",posa:\"0L060M020O0H0P0G0Q0W0U060V0T14041A02\",posao:\"0V1Z\",pose:\"0L170M0P0O050P040Q040U040V0L0Z041O08\",posed:\"0M0P0U040V081O0G\",posib:\"0D070O0Z151C\",posl:\"0U210V220Y19\",posle:\"0U1F0V2V0Y13\",poslo:\"0U0Z0V0I\",poss:\"0L100M0G0P390Q4A0T431102\",posse:\"0L020M020Q020T0Z\",possi:\"0L1B0M0K0P050Q1H0T0S\",posso:\"0P2L0Q2O\",possu:\"0P0A0T2P1106\",possí:\"0P0R\",\"post \":\"0D020M030N040R030T1E0U021O25\",posto:\"0P0F0Q0W0U020V231O04\",\"pot \":\"0D050L020M030R08140Q154V1A02\",potes:\"0Q050T3J\",poti:\"0T1B0V021105\",potio:\"0T19\",potk:\"0U0F11081A18\",potka:\"0U0J11081A1Y\",potpu:\"0V1O\",potr:\"0Q1J0U0C0V170Y3T150Z1A2C\",potre:\"0Q1G0U080V2C0Y4F\",potrz:\"1A2L\",potu:\"0Q090T0P\",potř:\"0U3K\",potře:\"0U4W\",pou:\"0LAH0M030P1L0U0X0V030Y0E1102\",pouc:\"0P1N\",pouco:\"0P1X\",pour:\"0LDN0M03\",\"pour \":\"0LFW\",pourq:\"0L4P\",pourr:\"0L2K\",pous:\"0L0O0P030U08\",pouv:\"0L2K\",pouve:\"0L1P\",pouvo:\"0L1L\",pov:\"0P080Q060U1R0V140Y84150G1O3Z1Q0I\",pova:\"0U0J0V030Y0L1O4L\",povas:\"1O8R\",pove:\"0Q0A0U030V0C0YB7150Q\",poved:\"0U030YCD\",poveď:\"0Y1G\",povi:\"0U050V040Y1H1O0R\",povie:\"0Y1K\",povu:\"0V031O0N\",pově:\"0U1D\",pověd:\"0U14\",pow:\"0M051A70\",powi:\"1A7U\",powie:\"1A8U\",powin:\"1A3B\",powod:\"1A1G\",poy:\"0O04\",poz:\"0U1P0V1Z0Y451403150S1A1I1F031O0D\",pozd:\"0U150V021A03\",pozdě:\"0U17\",pozn:\"0U0F0V150Y3N1A0G\",pozna:\"0U0C0V2X0Y1R1A0Q\",pozná:\"0U090Y2V\",pozor:\"0U0U0V0D0Y0U\",pozr:\"0Y1A\",pozri:\"0Y1B\",poè:\"0L05\",poč:\"0U180V110Y3H\",počk:\"0U0P0Y0V\",poču:\"0Y2P\",počul:\"0Y23\",počí:\"0U0Q0Y12\",počít:\"0U0U0Y18\",poď:\"0Y0I\",poľ:\"0Y0Q\",poł:\"1A0U\",poř:\"0U0T\",pořá:\"0U18\",pořád:\"0U1Q\",poŝ:\"1O08\",pož:\"0U0Q0V090Y0V1B02\",poži:\"0Y1D1B02\",požič:\"0Y0Y\",požá:\"0U0U\",požád:\"0U0Z\",poț:\"151P\",poți:\"152S\",\"poți \":\"153J\",\"ppa \":\"0L020Q08101011081208130A\",ppad:\"100H\",ppade:\"100G\",ppar:\"0L0V0M020N020Q0L0R070T0D0Z07100F1107\",ppas:\"0Q02100N1105\",\"ppas \":\"100M1102\",ppd:\"1204\",\"ppe \":\"010M0L070N0E0Q050T030Z0L1007120U\",pped:\"0M0M0Z07\",\"pped \":\"0M0V\",ppel:\"010F0L1U0N040Q0A0R170T0K0Z081002110D12091404\",ppell:\"0L1E0Q0A0T0L\",ppen:\"0M1A0N090Q0R0R0Z0Z0B100L1103120O1416\",\"ppen \":\"0M0N0N0C0R170Z0C100H120I1416\",ppena:\"0Q0R\",ppene:\"0M0S11041204\",\"pper \":\"0L090M040R080Z0N1008120G\",ppet:\"0Q030T040Z0B100F120F1402\",\"ppet \":\"0Z0C100F120F1402\",ppf:\"100A1208\",ppfø:\"1209\",ppg:\"100412051305\",ppga:\"120B\",pph:\"100212021304\",ppid:\"0T0P1C0Y\",ppida:\"0T041C2D\",ppie:\"010J0M02\",\"ppie \":\"010G\",ppim:\"11051C0N\",pple:\"0M07100J120C\",ppm:\"10041203\",ppn:\"100L12021306\",ppna:\"100O\",\"ppo \":\"0Q231109\",ppon:\"0Q15\",ppone:\"0Q14\",ppor:\"0L0Z0M090Q0H0R0210081102\",pport:\"0L1O0M0C0Q0G0R020Z021005\",ppos:\"0L0G0M0K0Q030T021103\",ppose:\"0L0E0M0P\",ppr:\"0L1H0M060Q0C0T06100812031303\",ppre:\"0L140M040Q0D0T041003\",ppren:\"0L1V\",pps:\"100A12031303\",ppt:\"0N02100Q1205130G\",ppta:\"100J1209\",pptag:\"100J\",ppu:\"0L030Q090T03111A13041C0D1Q1H\",ppv:\"1202\",ppy:\"0M0E\",\"ppy \":\"0M0Q\",ppä:\"1108\",ppé:\"0L07\",pq:\"1Q08\",praa:\"013P0R0S\",praak:\"010K0R0D\",praat:\"013F0R0P\",prac:\"0M060N1E0O040R0A0U280Y2Y15061A3A\",prach:\"0N2C0R0E0U02\",praco:\"0U1M0Y1N1A1C\",pracu:\"0U1D0Y1Y1A16\",pracy:\"1A1F\",prad:\"0O080P031B1V\",pradė:\"1B2Q\",prae:\"0T2F1B0A1C0U\",praeg:\"1C1Z\",pral:\"0U021A021B0R\",pranc:\"0B1R1B3M\",prans:\"0D0X\",prant:\"1B2G1C4C\",prar:\"0O0V0P0X0Q0U0U021B0J\",\"prar \":\"0O0T0P11\",prare:\"0Q0R\",pras:\"0O080P060U041A0J1B2M1D0Q\",prast:\"0O040P031B3K\",prat:\"0L080P0E0Q160R0X0V0D101S1B101F03\",prata:\"0P03101Q1B0S\",prate:\"0P020Q020R18\",prato:\"0P060Q0V1B0H\",prav:\"0Q050T030U5E0V320Y6O15071B061O0D\",pravd:\"0U4A0Y3F\",prave:\"0U0X0V060Y1E1O02\",pravi:\"0U190V3O0Y2715071B071O08\",pravo:\"0U090V1Q0Y0P\",praw:\"1A62\",prawd:\"1A5D\",prawi:\"1A2A\",praėj:\"1B1I\",praš:\"0U021B3C\",praša:\"1B4A\",\"pre \":\"0L0G0O280P1V0Q2A0V150Y2S140315381O08\",prea:\"0M03152P\",\"prea \":\"153A\",prech:\"0N270R020Y0M\",preci:\"0M070O0U0P500Q040R0F100I150E1O0L\",pred:\"0M020O040Q020V1R0Y4A0Z03150E1O02\",\"pred \":\"0V120Y1Q\",pree:\"0P0J0R1H\",preek:\"0R1Z\",pref:\"0M060O0M0P0M0Q110U02150W1O0J\",prefe:\"0M080O0C0P0H0Q120U0315111O12\",preg:\"0M020O1P0P0K0Q0A0V05150J\",pregu:\"0O260P05\",prek:\"0R1F0V0T0Y2E1B07\",preke:\"0R1R\",prekv:\"0Y1U\",prema:\"0V2G1O04\",prend:\"0L6D0O2L0P1V0Q261B1P\",preni:\"0L021O2G\",preo:\"0O0L0P0N0Q0Y1504\",preoc:\"0O0S0P0T0Q0Y\",prep:\"0M070O0K0P0D0Q0O0V0E0Y1315041O09\",prepá:\"0Y0Y\",prese:\"0M0F0O0S0P160Q0R0V0710081205\",preso:\"0D020O030P0C0Q0U1O05\",prest:\"0L020O0K0P0Q0Q1D0V1N0Y1B\",\"pret \":\"1D21\",preto:\"0P070Y1D1O02\",prett:\"0M0N0R03\",prev:\"0M040O060P060Q060V110Y0E1506\",prez:\"0P020Q0M0U080V08151B1A0Q1B041O0O\",preč:\"0V030Y79\",prečo:\"0Y7V\",\"pri \":\"0Q060V050Y1215051B031O4L\",pria:\"0B0L0P0D0Q060T0A0Y2R15071B05\",priat:\"0M020Y38\",prie:\"0L0G0P030Q050R020Y0J152M1B461D35\",\"prie \":\"0L0P0Q021B2V\",priec:\"1D25\",priek:\"1B0F1D58\",priet:\"0Q03153A1B03\",prieš:\"1B40\",prij:\"0R0D0V1K0Y0C\",prija:\"0V3Y0Y0A\",prima:\"0L050O0B0P0A0Q1Q0R030T0I0V0915171O03\",prime:\"0L0D0M020O1P0P1Q0Q040T020V101002150A1B05\",prio:\"0L020P0B0Q0P0T05\",prip:\"0V0A0Y1F1B0F1O0A\",pripr:\"0V0G0Y1C1B0F\",\"pris \":\"0L300Z041002\",prise:\"0L180M0K0Z0C10041207\",prisi:\"0O060P021B32\",priva:\"0M040N040O050P030Q070Z0215051B1Y1O05\",prič:\"0V1T\",priča:\"0V41\",priš:\"0Y21\",priši:\"0Y1N\",\"pro \":\"0N020P020Q0H0T120U311B041O1K\",proba:\"0L0M0M0Y0O0U0Q0J0T0D0V1H151F1O09\",probe:\"010Y0N020R1U0T02\",proch:\"0L1W0N0L0U0A\",procu:\"0L040P0U0T0B\",\"prog \":\"0Z1D\",projā:\"1D2O\",prok:\"0R0E0U041O0V\",proks:\"1O1D\",prona:\"0U020V1Y\",pront:\"0O0Y0P0J0Q0T\",proo:\"0R021C0S\",proov:\"1C1Z\",prope:\"0D050M050T0V\",propi:\"0O0W0T0C0U03150Q\",propr:\"0L170M020P060Q0Z0T0915101O0T\",prosi:\"0U090Y0B1A1G\",pross:\"0Q0Y\",prosz:\"1A3K\",prosí:\"0U2H0Y4H\",prota:\"1D1R\",proti:\"0T030U0T0V0O0Y0Q1B10\",proto:\"0U1N1B0B\",prova:\"0P0Z0Q1710041O0F\",prowa:\"1A1F\",prox:\"0L020O040P070T0S1505\",proxi:\"0L040O060P080T0U1507\",proč:\"0U430V0F1B03\",\"proč \":\"0U5M\",prv:\"0U0K0V0R0Y0M\",prz:\"1AD2\",prze:\"1AAN\",przec:\"1A29\",przed:\"1A3C\",przep:\"1A1P\",przes:\"1A2T\",przez:\"1A38\",przy:\"1A8S\",przyj:\"1A5C\",przys:\"1A2O\",prá:\"0O030P030U3E0Y4R\",prác:\"0O040U2K0Y1E\",práce:\"0U1L\",práci:\"0U210Y0F\",práv:\"0U2F0Y5C\",práva:\"0U070Y2C\",práve:\"0Y15\",právn:\"0U0V0Y1E\",právo:\"0U0D0Y14\",právě:\"0U1C\",práz:\"0U0J0Y1K\",prázd:\"0U0Q0Y1Y\",prä:\"0N061005\",prå:\"100S120N\",pråk:\"1011121N\",\"pråk \":\"100S1218\",præ:\"0T0Q0Z07\",præs:\"0T070Z0C\",prè:\"0L18\",près:\"0L22\",\"près \":\"0L30\",pré:\"0L2J0O070P05\",préc:\"0L0X\",préci:\"0L1E\",préf:\"0L0U\",prés:\"0L15\",prése:\"0L1H\",prê:\"0L0J0P02\",prêt:\"0L0W\",prì:\"0Q02\",prí:\"0P020S0R0Y45\",príd:\"0Y24\",príde:\"0Y2G\",príl:\"0Y1S\",príli:\"0Y1V\",prío:\"0S0X\",príom:\"0S2K\",prís:\"0Y0X\",prò:\"0Q03\",pró:\"0O0H0P10130E140Y1A0X\",prób:\"14251A16\",próbá:\"1428\",próp:\"0P0L\",própr:\"0P0R\",próx:\"0O0E0P0N\",próxi:\"0O0J0P0T\",prö:\"1004\",prø:\"0Z08120O\",prøv:\"0Z0I121K\",prøvd:\"120L\",prøve:\"0Z0J120U\",prü:\"0N051F04\",prā:\"1D27\",prāt:\"1D2J\",prātī:\"1D2K\",prę:\"1A041B07\",prō:\"0T02\",prš:\"0U0H0Y0I\",\"psa \":\"0T0E0U0P0V0A0Y0W15041A0D\",psal:\"0U0R\",\"psal \":\"0U0U\",\"pse \":\"0T0Q1F02\",psed:\"1C0Z\",\"psed \":\"1C2G\",psit:\"0T0X150F\",\"psit \":\"0T0T150F\",psk:\"0V0310041B05\",pst:\"0M020R020V0810031A031B031D0U\",psu:\"0T080V0211041A071B03\",psy:\"0M020U050Y0812021A05\",psē:\"1D0J\",\"pt \":\"0L050M0F0N070R0I100H120A13081514\",ptag:\"0Z03100J\",ptage:\"0Z04100F\",ptat:\"0T0B0U061209151G\",\"pte \":\"0L0L0N020R0L101A12141405151H\",\"pti \":\"0T0K13111B0T1F021O08\",ptor:\"0T0R\",pts:\"0N02\",pty:\"0M021B07\",ptá:\"0U0E1404\",pté:\"0L051402\",ptó:\"0O02\",ptă:\"151I\",ptăm:\"151N\",ptămâ:\"151S\",ptı:\"1F3A\",\"ptı \":\"1F12\",ptığ:\"1F1H\",ptığı:\"1F20\",\"pu'\":\"1QKI\",\"pu' \":\"1QPW\",\"pu-\":\"0B02\",pua:\"0B0L0D03110I1F02\",puan:\"0B110D0611021F02\",\"puan \":\"0B1O0D091F02\",puc:\"0B020V0414021Q09\",\"pud \":\"0T111O0D\",pude:\"0O090P0F0T050Z021A061C0I\",pue:\"0O6S0T2D\",pued:\"0O7I\",puede:\"0O68\",puedo:\"0O3E\",puel:\"0T1P\",puell:\"0T1T\",puer:\"0O110T2U\",\"puer \":\"0T1A\",pueri:\"0T0Y\",puert:\"0O1B\",pues:\"0O1J\",puest:\"0O1S\",pug:\"0Q030T0B\",puh:\"11451C0P1Q1Q\",puhe:\"111H\",puhel:\"112K\",puhu:\"115N\",puhua:\"113U\",pui:\"0L1N0T05110P150S1B0D\",puis:\"0L2P110G\",\"puis \":\"0L28\",puj:\"0U060V020Y0911051A071Q06\",puk:\"0B0H110D14031A02\",puku:\"0B0T1105\",pukul:\"0B1L\",\"pul \":\"0B04152C1F021N121P0R\",pulan:\"0B210D07\",pulc:\"0T2U\",pulch:\"0T2W\",puli:\"0D080Q0E0T0M11061B05\",pulk:\"0B051D0U\",pulks:\"1D25\",puls:\"0L020O060P060Q030T0T1102\",pulu:\"03040B110T1415071N0L\",puluh:\"0B22\",pulus:\"0T0S\",puma:\"0D0F0T021105\",pumu:\"0D0O1103\",pumun:\"0D12\",\"pun \":\"03040B2Q0V031107151M\",puna:\"0D07110V13051C0N\",pune:\"11021542\",\"pune \":\"1531\",pung:\"0B0E0D060Z05110M\",punkt:\"0N0E0Z0A1006120C1A0B1B041O0B\",puno:\"0D0G0V1B1O03\",\"puno \":\"0D0Q0V2V1O03\",punt:\"0D0T0O0R0Q0N0R0B\",punta:\"0D1F0O070Q07\",puny:\"0B3N\",punya:\"0B70\",puo:\"0Q0J11161B0I\",puoi:\"0Q0V\",\"puoi \":\"0Q0V\",puol:\"11241B06\",puole:\"112J\",pupu:\"0D0B\",pupun:\"0D0J\",puq:\"1Q3N\",purg:\"0T0F0Z0D\",purgt:\"0Z0G\",purt:\"0Q05120G150A\",purte:\"120E\",pusa:\"0B040D0B1B03\",\"pusa \":\"0D0F\",puso:\"0D040O0I\",pust:\"0B060U0Y0V0S0Y110Z02110312081A0C\",pusti:\"0U100V1U0Y0Z1103\",\"put \":\"0B040L020M0T0R040T0F0V0X11041512\",puta:\"0B040L030O0D0P0I0Q030T200V0K1O02\",putat:\"0L030M020T0W\",putea:\"153C\",puter:\"0B0L0L030M0C0N0B0Q0M0R0H0Z0O15181A0Q\",puto:\"0D030Q030T110V09110A1O03\",\"puto \":\"0Q030T131O03\",putut:\"151O\",putį:\"1B0R\",\"putį \":\"1B1L\",puu:\"111E1C1E\",\"puu \":\"110I1C0K\",puud:\"1C0N\",puv:\"11051Q0C\",puw:\"0D0K\",puwe:\"0D11\",puwed:\"0D1Q\",puy:\"0L02\",puz:\"040H0Q02\",pué:\"0O0P\",pués:\"0O13\",\"pués \":\"0O1G\",puñ:\"0O02\",può:\"0Q1A\",\"può \":\"0Q22\",puț:\"1510\",puți:\"151O\",puțin:\"1525\",pv:\"0104120214031Q04\",pva:\"0Z0212021B021Q09\",pvo:\"0107\",pvoe:\"010F\",pvoed:\"010G\",pw:\"0D021Q0M\",pwa:\"1Q06\",pwe:\"0D02\",pwi:\"1Q25\",\"pwi'\":\"1Q3L\",\"pwi' \":\"1Q4Z\",\"py \":\"0M0I0U040Y081A0D1N09\",pya:\"03030D021F051Q0B\",pyh:\"1106\",pyk:\"1B0G\",pyn:\"1N14\",pyny:\"1N0X\",\"pyny \":\"1N16\",pyr:\"0T02110613051B0A\",pys:\"111X1A02\",pyst:\"111S\",pysty:\"114C\",pysy:\"1113\",pyt:\"1A0X1B03\",pyta:\"1A1B\",pyu:\"0D02\",pyy:\"110U\",pyö:\"110P\",pyör:\"1119\",pyörä:\"112D\",pz:\"1406\",pze:\"1409\",\"pà \":\"0Q03\",pá:\"0O070P040S0W0U0S0Y141308141D\",\"pá \":\"0O050U02\",pág:\"0O040P04\",pái:\"0S28\",páin:\"0S0X\",páis:\"0S11\",páist:\"0S49\",páj:\"0O06\",pám:\"140J\",pán:\"0U060Y0N140I\",pár:\"0O020U0D0Y0A140S\",pás:\"0P070U021403\",pát:\"0O020P040U0K1404\",páč:\"0Y1E\",páči:\"0Y1O\",\"páči \":\"0Y1B\",pâ:\"150C\",pân:\"1515\",până:\"151L\",\"până \":\"1521\",pã:\"0P04\",pão:\"0P0H\",\"pão \":\"0P0L\",pä:\"0N080Y0C1003112D1C1G1P0P\",\"pä \":\"110H\",päe:\"1C2C\",päev:\"1C2W\",\"päev \":\"1C2G\",päeva:\"1C48\",päh:\"1103\",päi:\"113A1C0E\",päiv:\"114Q\",päivä:\"11AC\",päl:\"11031P0D\",pän:\"100411021P0B\",päo:\"1105\",pär:\"1003110S1C20\",pära:\"1C1R\",päras:\"1C3H\",päri:\"110R1C0R\",päs:\"1105\",pät:\"0N0B0Y061108\",pää:\"113T1C0D\",pääl:\"1113\",pääll:\"112B\",pääs:\"11221C0G\",päät:\"111M\",päť:\"0Y0R\",\"päť \":\"0Y0W\",på:\"0Z3N104U124S\",\"på \":\"0Z5G10CI127D\",påk:\"1002\",påm:\"1003\",pår:\"1003\",pås:\"1005\",påv:\"1202\",pæ:\"0Z041302\",pæn:\"0Z02\",pær:\"0Z02\",pç:\"1F02\",pçã:\"0P03\",pè:\"0L09\",pèr:\"0L16\",père:\"0L1Y\",\"père \":\"0L38\",pé:\"0L0I0O020P060S0A1418\",\"pé \":\"0L0M0P08\",péc:\"0L060P04\",pée:\"0L0C\",pén:\"0L03141G\",pénz:\"143E\",pénzt:\"1418\",pér:\"0L0W0O030P03\",pés:\"0L030P061405\",pét:\"0L0B140E\",péter:\"0L06140X\",péu:\"0P05\",pê:\"0L03\",pêc:\"0L0B\",pí:\"0O020U130Y171306140A\",\"pí \":\"0U0E0Y0B\",pír:\"0O020P040U0713051407\",pís:\"0U080Y1B\",písa:\"0Y21\",písal:\"0Y1I\",pít:\"0U06140B\",pív:\"0U0D\",píš:\"0U0L0Y18\",píše:\"0U0C0Y19\",pó:\"0O070P040S0A130414061A11\",\"pó \":\"0O04\",pón:\"0O0D\",\"pón \":\"0O0I\",pós:\"0O030P0C1308\",póź:\"1A0T\",późni:\"1A1F\",pô:\"0P030Y0G\",pôd:\"0P04\",pôj:\"0Y0O\",pôjd:\"0Y16\",pôjde:\"0Y1F\",pôr:\"0P03\",pôs:\"0P050Y0E\",põ:\"1C0D\",põe:\"0P05\",põh:\"1C0S\",põl:\"1C0B\",pö:\"1108130514021P14\",\"pö \":\"1103\",pök:\"10021P0G\",pöl:\"1104\",pön:\"130A1P0O\",pöt:\"1104\",pöy:\"110G\",pø:\"0Z0A120F\",pøk:\"1202\",pør:\"0Z0E120K\",pørg:\"0Z12\",pørgs:\"0Z0V\",pørr:\"120C\",pørre:\"120C\",pørs:\"120W\",pørsm:\"120U\",pú:\"0O020P020Y021302\",púb:\"0O060P07\",pü:\"0N02140C1C0B1F051N071P65\",püh:\"1C0F\",pük:\"1PAX\",\"pük \":\"1P1Y\",püki:\"1P6N\",\"püki \":\"1P7D\",püko:\"1P3D\",pükol:\"1P12\",pükom:\"1P1J\",pükö:\"1P29\",pükön:\"1P2M\",pül:\"140L1F05\",püü:\"1C0J\",pý:\"0U030Y0G1N07\",pýt:\"0Y11\",pýta:\"0Y1S\",pýu:\"1N0B\",pā:\"1D1S\",\"pā \":\"1D11\",pān:\"0T021D0Q\",pār:\"1D5B\",pārd:\"1D0U\",pārl:\"1D0W\",pārli:\"1D25\",pārs:\"1D17\",pārst:\"1D25\",pārā:\"1D11\",pārāk:\"1D2O\",pă:\"1523\",\"pă \":\"1526\",păr:\"153Q\",păra:\"151W\",părat:\"151X\",păs:\"150J\",pą:\"1B02\",pē:\"1D2E\",pēc:\"1D37\",\"pēc \":\"1D3T\",pēd:\"1D0T\",pēj:\"1D2P\",pēja:\"1D1S\",\"pēja \":\"1D1W\",pējam:\"1D2F\",pēju:\"1D0S\",\"pēju \":\"1D21\",pēk:\"1D0E\",pēl:\"1D1F\",pēlē:\"1D1J\",pēlēt:\"1D2A\",pēr:\"1D0X\",pēt:\"1D0M\",pė:\"1B0K\",\"pė \":\"1B0H\",pėj:\"1B0D\",pės:\"1B0D\",pę:\"1A091B02\",pě:\"0U0W\",pěl:\"0U0C\",pět:\"0U0L\",\"pět \":\"0U0S\",pī:\"1D09\",pīr:\"1D0G\",pı:\"1F10\",pıl:\"1F0P\",pıy:\"1F1A\",pıyo:\"1F11\",pıyor:\"1F1F\",pł:\"1A0Z\",pła:\"1A0Z\",pły:\"1A0S\",pņ:\"1D0G\",pņi:\"1D0Q\",\"pņi \":\"1D0X\",pņo:\"1D0Y\",pōn:\"0T03\",pő:\"1407\",pœn:\"0T02\",př:\"0U6K\",pře:\"0U5P\",před:\"0U39\",\"před \":\"0U1Z\",předs:\"0U0S\",přek:\"0U15\",přes:\"0U2R\",přest:\"0U23\",při:\"0U4F\",přij:\"0U2C\",přijd:\"0U17\",přije:\"0U0S\",přip:\"0U13\",připr:\"0U12\",přiš:\"0U19\",přiše:\"0U17\",přá:\"0U0S\",přát:\"0U11\",přáte:\"0U1E\",pří:\"0U31\",příl:\"0U15\",příli:\"0U1F\",přít:\"0U19\",příte:\"0U1E\",příšt:\"0U0T\",pš:\"0U0E0V060Y0L1B04\",pši:\"0U030Y0Y1B03\",pšie:\"0Y1F\",\"pšie \":\"0Y1O\",pší:\"0U0O0Y0D\",\"pší \":\"0U0X0Y0C\",pū:\"1B041D05\",pů:\"0U0N\",půj:\"0U0P\",půjd:\"0U0Q\",půs:\"0U0C\",působ:\"0U0S\",pț:\"1505\",pți:\"150J\",\"q \":\"030K0L021QA4\",\"q'\":\"1Q0F\",\"q-\":\"0302\",qa:\"030W1L051Q9G\",\"qa'\":\"1Q50\",\"qa' \":\"1Q4F\",qac:\"03071Q2A\",qach:\"1Q4A\",qah:\"03041Q1N\",qan:\"03021Q2N\",qap:\"1Q2B\",qaq:\"03021Q37\",\"qaq \":\"1Q3P\",qar:\"03101Q30\",\"qar'\":\"1Q48\",\"qar'a\":\"1Q75\",qas:\"03061Q4L\",qast:\"1Q4H\",qasta:\"1Q7K\",qat:\"1Q4B\",qatl:\"1Q7G\",qatlh:\"1QCA\",qb:\"030K1Q0G\",qc:\"03061Q08\",qd:\"03041Q11\",qda:\"03061Q3D\",qdaq:\"1Q5H\",\"qdaq \":\"1Q94\",qe:\"031T1Q25\",qel:\"031K1Q1F\",qh:\"1Q08\",qi:\"030Q1Q1G\",\"qi \":\"03021Q04\",qim:\"031S1Q0O\",qj:\"1Q04\",ql:\"030V1Q0P\",\"ql-\":\"031R\",qm:\"1Q0X\",qme:\"1Q1U\",qn:\"03021Q07\",qo:\"1Q46\",\"qo'\":\"1Q4M\",\"qo' \":\"1Q7J\",qon:\"1Q3C\",qong:\"1Q3Y\",qoy:\"1Q22\",qp:\"1Q0I\",qpu:\"1Q1O\",qq:\"03221Q0I\",qqa:\"031J1Q0S\",qqe:\"031G\",qqi:\"031V\",qqim:\"031V\",qr:\"030J1Q03\",qs:\"03051L05\",qt:\"1Q0I\",\"qu'\":\"0L7B1QBP\",\"qu' \":\"1QEH\",\"qu'a\":\"0L0S\",\"qu'e\":\"0L30\",\"qu'el\":\"0L2X\",\"qu'es\":\"0L1U\",\"qu'i\":\"0L56\",\"qu'il\":\"0L8G\",\"qu'o\":\"0L12\",\"qu'on\":\"0L1Q\",\"qu'u\":\"0L1X\",\"qu'un\":\"0L39\",\"qu'à\":\"0L0W\",\"qu'à \":\"0L1J\",qua:\"0L2G0M080N030P8N0Q8V0TC1\",\"qua \":\"0L030Q1N0T24\",quae:\"0T4X\",\"quae \":\"0T2K\",quaes:\"0T1X\",qual:\"0L060M050N030P280Q760T0M\",\"qual \":\"0M020P1W0Q0Q\",qualc:\"0Q5I\",qualq:\"0P0S\",quam:\"0TAD\",\"quam \":\"0TAG\",quan:\"0L2V0P680Q4L0T3I\",quand:\"0L4A0P4B0Q2L0T2N\",quant:\"0L0M0P3S0Q270T11\",quar:\"0L0A0M040P0U0Q070T0R\",quart:\"0L090M020P0Y0Q040T07\",quas:\"0L020P0R0Q0M0T0O\",quase:\"0P0Y\",quat:\"0L0K0P0E0Q0A0T0X\",qub:\"03021Q2X\",\"qub \":\"1Q3V\",quc:\"03021Q1S\",\"que \":\"0LOQ0M060ORC0PRK0Q0W0TEP\",quec:\"03020O020P0V\",qued:\"0O290P05\",queda:\"0O240P02\",quei:\"0P100Q05\",quel:\"0L710N020O0X0P1W0Q5C\",\"quel \":\"0L2Q0O0I0Q17\",quela:\"0P10\",quele:\"0P1E\",quell:\"0L300N040O0O0Q4C\",quelq:\"0L65\",quem:\"0L0A0N020O080P2X0T1N\",\"quem \":\"0N020P3N0T1J\",quen:\"0L0C0M030O020P1B0Q040T0J\",quent:\"0L0E0M030P0T0Q040T0A\",quer:\"0L0V0N030O280P880T1G\",\"quer \":\"0L170P3V\",quere:\"0L040N020O0F0P1E0T0T\",queri:\"0O070P280T0L\",quero:\"0O050P3C\",querí:\"0O1I0P03\",ques:\"0L340M0L0O0E0P0D0QBK0T04\",\"ques \":\"0L3M0O0A0P05\",quest:\"0L1O0M0T0P0B0QBO0T02\",queñ:\"0O0U\",\"qui \":\"0L7H0P3L0Q350T5Z\",quia:\"0O040P060T1C\",\"quia \":\"0P030T1D\",quid:\"0L030O020P020T8S\",\"quid \":\"0T80\",quie:\"0L060M060O7G0P040Q020T0G\",quien:\"0O0V\",quier:\"0L030O8S\",quil:\"0L0B0O0M0P150Q080T0F\",quilo:\"0O060P15\",quin:\"0L070O0H0P0L0Q0G0T24\",quinq:\"0T0T\",quis:\"0L050O0O0P100Q060T3Z\",\"quis \":\"0L040P0B0T3G\",quit:\"0L0K0M0K0O0J0P040T24\",\"quit \":\"0M070T0T\",quitu:\"0T14\",quié:\"0L050O1T\",quién:\"0O2D\",quo:\"03020L2K0Q020T75\",\"quo \":\"0T1W\",quod:\"0T4I\",\"quod \":\"0T4N\",quoi:\"03020L46\",\"quoi \":\"0L6W\",quom:\"0T13\",quomo:\"0T14\",quoq:\"0T13\",quoqu:\"0T15\",quor:\"0T0X\",quot:\"0L030Q020T3J\",\"quot \":\"0T2P\",qur:\"03081Q06\",quu:\"0T0P\",quã:\"0P03\",quæ:\"0T17\",\"quæ \":\"0T1W\",qué:\"0L0P0O5C\",\"qué \":\"0L0R0O7Y\",quê:\"0L030P0G\",quí:\"0O210P06\",\"quí \":\"0O2V\",quā:\"0T08\",quī:\"0T03\",quō:\"0T0B\",qv:\"1Q0M\",qw:\"1Q0C\",\"r'\":\"0M041F041Q0Q\",\"r'a\":\"1F021Q2I\",\"r'a'\":\"1Q4O\",\"r'a' \":\"1Q7W\",\"r's\":\"0M09\",\"r's \":\"0M0G0N03\",\"r-a\":\"031K0B031504\",\"r-b\":\"0B0I1N0D\",\"r-be\":\"0B0Z\",\"r-ben\":\"0B1X\",\"r-d\":\"030D1N0F\",\"r-i\":\"0313\",\"r-l\":\"0L020P06\",\"r-m\":\"03060P07\",\"r-o\":\"1513\",\"r-o \":\"151Q\",\"r-s\":\"03170P0C\",\"r-t\":\"0P04\",\"r-u\":\"150J\",\"ra'\":\"0M021F051Q27\",\"ra-\":\"031D0B060L040P07\",raa:\"01320B060D040R1Y111Q1C3F\",raag:\"01120R3M\",\"raag \":\"01100R3V\",raai:\"010N0R09\",\"raai \":\"010K0R02\",raak:\"01120R0V1104\",\"raak \":\"01100R0J\",raam:\"0R0A11061C3B\",raama:\"11091C7Y\",raan:\"010N0B0B0D080R0B110M\",raar:\"0R0N\",\"raar \":\"0R0T\",raat:\"013F0R0X1105\",\"raat \":\"013N0R131102\",\"raba \":\"049O0O0N1F151O02\",rabah:\"0D1J\",rabaj:\"0O49\",rabal:\"0P3F1F0B\",rabb:\"0M030Q0T10031408\",rabbi:\"0M020Q0T\",rabic:\"0M030T0R0U0C0Y0X\",rabu:\"0303042614021B0E\",racc:\"0L030O020Q1F\",\"rach \":\"0N0L0S4Z0U0L1A09\",racha:\"0L020O030P020S5P\",rache:\"0L050N1T0T070U02\",racht:\"0N1H0R1R0S2K\",racia:\"0O110P031A021O05\",ració:\"0O0T\",raco:\"0L0C0O020P060Q020T020U160Y1C1A0V\",racov:\"0U1M0Y1N\",ract:\"0L090M0I0O0A0P020R030T0N150J\",racu:\"0T070U100Y1K15061A0Q\",racuj:\"0U1E0Y1Y1A16\",\"racy \":\"0M031A1F\",\"rade \":\"0L030M040N1I0Q100V0L0Y0U1025\",radh:\"0S0T1405\",\"radh \":\"0S3A\",\"radi \":\"0U030V430Y0R\",radil:\"0U090V1L\",radim:\"0V361B06\",radiš:\"0V28\",\"rado \":\"0D0G0O2E0P200Q0I0V0A1B191O0N\",radt:\"141K\",\"radt \":\"1414\",rady:\"0D020U040Y0J1A081F051N19\",radė:\"1B1B\",radėj:\"1B1M\",radě:\"0U0W\",raděj:\"0U0W\",radī:\"1D0U\",\"rae \":\"0O050T1C\",raec:\"0T11\",raed:\"0T23\",raeda:\"0T21\",raeg:\"1C0S\",raegu:\"1C1Z\",rael:\"0M030O030P040Q020T0S0Z021O02\",raes:\"0T0P\",raet:\"0T0O1206\",raff:\"0M060Q090R020Z061007120C\",rafis:\"044Q1A041O0D\",raft:\"0M020N090R030Z081006120715041F06\",rafı:\"1F15\",rafın:\"1F1E\",\"rag \":\"010F03060N080R050Z0310061504\",ragaz:\"0Q1D\",ragen:\"030C041V0N1K0R1I0Z06\",ragez:\"044X\",ragg:\"0Q0N\",ragio:\"0Q0R\",ragt:\"03040N0H0Z0G1402\",ragte:\"0N0H0Z0E\",\"rah \":\"0B2I\",\"raha \":\"0U0211081C3B\",rahaa:\"112P\",raham:\"042Z0T0L1O02\",rahi:\"041K0D020L040T041F02\",rahu:\"041K0T021C0N\",rahv:\"11031C18\",rahva:\"1C1E\",rahvu:\"1C1O\",\"rai \":\"0B0B0L340P020Q1O0T02140415071B4B\",raib:\"0S3L\",raibh:\"0SDI\",raid:\"0L020M0H0S361B09\",\"raid \":\"0M0N\",raidh:\"0SBR\",raie:\"0L0O\",raim:\"0L1U0T021402\",raime:\"0L35\",\"rain \":\"0L2P0M0U\",rainc:\"0S3S\",rais:\"0L5O0M070O020P070Z0211051B03\",\"rais \":\"0L6P0O020P091B05\",raiso:\"0L1M\",rait:\"0L3L11061B02\",\"rait \":\"0L4Z\",\"raj \":\"0V0A0Y0G1A1G1O0W1Q11\",raji:\"0U070Y1L\",rajin:\"0U050Y1X\",rajn:\"0V0414031O0Q\",rajt:\"0V0414101O0Q\",rajta:\"140Z1O10\",\"raju \":\"03090U030V1T1A0E\",raka:\"041O0B0L0V031006112514051A031B041F07\",rakas:\"11541O02\",rakh:\"0B0M\",rakk:\"0Z03110M120H130L\",\"rakk \":\"120C\",rako:\"045O0U041102140U1A031B031O0N\",rakoz:\"0453140M\",raks:\"0R020Z06110212061D2Q\",rakst:\"1D6P\",rakte:\"0N050R020Z07120G1A041B061F031O07\",raku:\"043R0B050V031A071O02\",rakun:\"0453\",ralia:\"0B0V0D060M1K0O0D0Q130T0S1119120E150T1B05\",ralie:\"0L0E0N0F0Z0L10081B04\",ralië:\"0R1E\",raliý:\"1N3Y\",ramd:\"0D07\",\"rami \":\"0D0N0Q021A081B02\",ramin:\"0D1W0T041B0D\",ramm:\"0L0C0M020N070Q0G0R060T060Z0610041105120A1402\",ramo:\"0O0M0P0H0Q020U020V0X14051A021B031O08\",\"ramo \":\"0V231O06\",ramos:\"0O0T0P0J\",ramu:\"04450B050T0F15051B06\",\"rana \":\"030204350O020Q040U020V1011031A081F03\",rance:\"0L140M0C0O050P070Q1Q152B1O07\",ranco:\"0P0E0Q030T0B0U251O03\",rancu:\"0V1K1A1P1O04\",rancé:\"0O1D\",rancê:\"0P1U\",rancú:\"0Y3R\",rancū:\"1B3L\",\"rand \":\"010K0L1K0M020N0B0R0L0Z051003\",randa:\"0P030T031B0G1F061O3M\",rando:\"0L020O190P1O0Q0Q0T0414031O0A\",randr:\"0Z03100D120N1402\",\"rane \":\"043I0Q020V0T0Y0A1A021B081C10\",range:\"0L1T0M0I0N080P0B0Z0410031B041O04\",rangi:\"042S0B0A1B0J\",rangk:\"0B1E0D02\",rango:\"04410P0514021O02\",ranij:\"0V1N\",ranj:\"0O0P0P080R030V0I150O\",rankr:\"0N070R0C0Z0D10041208\",ranno:\"0Q1G1102\",\"rano \":\"0O150Q4B0V0N1A0Y1O08\",\"rans \":\"0R1L0T091F021O06\",ransa:\"0304045R11091F07\",ranse:\"0D0U0R08\",ransk:\"0Z1V1016119J120T\",ransu:\"1N3L\",ransä:\"1P14\",ransı:\"1F29\",rants:\"0L050M021C4C\",rany:\"042V0B0J0U03140E1A06\",ranz:\"0N0Y0O070Q0R\",ranç:\"0L1D0P0N1F04\",rança:\"0L2A0P0S\",\"rao \":\"0T080V11\",\"rap \":\"0B0Q0D0P0M020R081F091N0O1Q0P\",rapa:\"0B430D0D0L020O050P0910021A021O04\",\"rapa \":\"0B6D\",raph:\"0L070M040T0Z\",raphi:\"0L080N020T0Z\",rapid:\"0L0U0M020P080Q09150D1O1Y\",rapp:\"010K0L120M020Q0G0R090Z04100A1207\",rappe:\"010I0L0Y0M030Q020R030Z04\",rapy:\"1N0X\",rapyn:\"1N16\",raq:\"03030L020P030T061Q08\",\"rar \":\"030T0O390P4G103D120I131915081F251N0F\",rara:\"0302041R0D030O090P0I0Q050T021B0I1F051O04\",rare:\"030H0L080M030O020P060Q3X0R080T1D100X1514\",\"rare \":\"0L030M020Q3Z0R030T19100R150S1O02\",raro:\"0O0K0P020Q040T050U021O0J\",rasa:\"0B2J0D020O050P0C10021O02\",\"rasa \":\"0B3B0O021O02\",rase:\"0L0W0N020O0P0P0K0Q0D0U020Z021206\",rash:\"04D10M03\",rasha:\"047F\",rasho:\"04DM\",rasj:\"1209\",rask:\"0V030Z0C10081108120T1B051C12\",raske:\"0Z0D120L1C29\",rass:\"0L0O0M060N020P050Q0A0R040T06110C14021N0E\",\"rast \":\"03040R061002130N1C371D21\",rasta:\"0P030V0B1122130E1A041B2J\",rasti:\"0T04110N1B1V1D1W1O04\",rası:\"1F1J\",rasın:\"1F17\",ratar:\"0O090P05100K\",ratas:\"0O050P021B041C1H\",ratel:\"0M020P020Q0V150V\",raten:\"03050N0P0R1D\",rater:\"0D020L050O030T130Z021002\",ratia:\"0T0W1104\",ratil:\"0U0Z0V060Y16\",ratin:\"0D0G0M041B071O0T\",ratio:\"0L0Z0M0E0N080T0U0V0M0Z05100511051O03\",\"rato \":\"0D060O0N0P0H0Q330T031B0F1O16\",ratr:\"0T1M0U0V\",ratre:\"0T140U02\",ratt:\"0L050Q19100N11091206130I14041F04\",ratta:\"0Q0R100G11031403\",ratus:\"0B0F0T151B03\",rată:\"151O\",\"rată \":\"151Y\",\"rau \":\"0N11150X1B07\",rauc:\"0N1Q1D1G\",rauch:\"0N2W\",raud:\"11041B0U1D1E\",raudz:\"1D25\",raug:\"130F1B2L1D1P\",rauga:\"1B26\",raugs:\"1D1R\",rauk:\"11061B1X1D11\",rauki:\"1B1T\",\"rava \":\"0P0O0Q0T0U060V0K0Y0J11091O0N\",ravai:\"0L4S\",ravd:\"0U330Y2R1003\",ravdu:\"0U2V0Y1R\",raven:\"0R050U0T0Y0W\",\"ravi \":\"0L040Q040T0E0V1O\",ravil:\"0O090P060U0C0V1E0Y0Y\",ravit:\"0L020T1C0U0H0V0I1O02\",\"ravo \":\"0P070Q0J0V1W1B0F\",ravu:\"041R0U0B0V0E0Y0P\",raw:\"031Q0B060D0Y0M051A4G1N09\",\"raw \":\"030T0D1D0M031A05\",\"raw-\":\"030H0D06\",rawa:\"0B0B0D090N021A0G\",rawan:\"0D0H\",rawd:\"1A3E\",rawda:\"1A1I\",rawdę:\"1A27\",rawi:\"03071A1H\",rax:\"0T02130A\",raya:\"0B070L020O021F1W\",\"raya \":\"1F26\",\"raz \":\"03040P030U060V030Y3414031A2Q1F251N1B\",raza:\"0305041R0O080V04\",\"raza \":\"042Z0O02\",razgo:\"0V1P\",\"razi \":\"049Z\",razl:\"0V0V\",razu:\"0V130Y081A06\",razum:\"0V2R\",razó:\"0O0X\",razón:\"0O16\",raß:\"0N07\",raç:\"0P1K1F04\",raçã:\"0P10\",ração:\"0P1A\",raí:\"0O050P040S1U\",raím:\"0S0Q\",\"raím \":\"0S32\",raío:\"0S0Q\",raî:\"0L0D\",rað:\"130V\",rañ:\"0O0D1N0A\",raó:\"0O020P03\",raý:\"1N0G\",rač:\"0U0D0V0O0Y0B1B06\",raė:\"1B0G\",raĝ:\"1O08\",rağ:\"1F0B\",raĵ:\"1O0B\",raň:\"0U030Y0H\",raş:\"15031F0C1N1R\",raš:\"0U080V1A0Y0F1B41\",\"raš \":\"0V17\",raša:\"1B29\",rašau:\"1B4E\",rašo:\"1B0Q\",rašy:\"1B1K\",rašyt:\"1B26\",rašė:\"1B0R\",\"rašė \":\"1B1J\",rať:\"0U040Y0O\",\"rať \":\"0U050Y16\",raŭ:\"1O1Z\",\"raŭ \":\"1O2N\",raž:\"0U0D0V0U1B19\",raži:\"0V0T1B19\",raș:\"150R\",raț:\"1515\",rați:\"151Q\",\"rb \":\"0N04\",rbaa:\"010F0R06\",rbah:\"0B0R\",rbaha:\"0B1I\",rbai:\"0B0N1B03\",\"rbe \":\"0L0A0N070T0W140915031B03\",rbed:\"0B0G0Z021205\",rbei:\"0N2I0R03121N\",rbeid:\"0R04121M\",rbeit:\"0N3R\",rbej:\"0Z2A1Q06\",rbejd:\"0Z2S\",\"rber \":\"0M0Q0R02\",rberg:\"0N030R06132H\",rbet:\"0R06101R1N0T1O02\",rbeta:\"100T\",rbete:\"0R09100L\",rbeș:\"151I\",rbeșt:\"151Y\",rbh:\"0S15\",rbic:\"0B1L\",rbica:\"0B34\",rbj:\"1008\",rbl:\"0N030R020Z021002\",\"rbo \":\"0O020P020Q030T051B0S1O0X\",rbor:\"0R030T111O03\",rbr:\"0L0D0N0A0R040Z03100912041304\",rbs:\"0N020T081B02\",rbt:\"0N021B0D\",\"rbu \":\"1B0P1D0U\",rbua:\"0B0K\",rby:\"0Y06\",rbą:\"1B0J\",\"rbą \":\"1B0U\",rbū:\"1B07\",\"rc \":\"0L071405150K\",\"rca \":\"0O100P0D0Q0X0T0B0V051405150K1A071F07\",rcan:\"0B080O060Q0L\",rcar:\"0O030P030Q1415071F02\",rcare:\"0Q131509\",rcay:\"0B12\",rcaya:\"0B24\",\"rch \":\"0M0A0N10\",rche:\"0L1L0M040N0D0Q0C1A02\",rchi:\"0L040M030N020O030Q0N0R030U0214021B04\",rché:\"0L0I0Q5H\",\"rché \":\"0L0R0Q5J\",\"rci \":\"0L0L0Q0Y0T030V04150F1A07\",rcl:\"0L02\",rcs:\"140D\",rcum:\"0T0S1504\",rcus:\"0T0X\",rcy:\"0Z03\",rcé:\"0L04\",rcí:\"0P03\",rcò:\"0Q02\",rcó:\"0O02\",rcă:\"150J\",\"rd'\":\"0L0V1F02\",\"rd'h\":\"0L1H\",\"rd'hu\":\"0L2I\",rdad:\"0O220P1N1002\",\"rdad \":\"0O24\",rdade:\"0O0I0P1V\",\"rdan \":\"030V0O020Z1I12201F1B1N1I1O05\",rdat:\"0Q0O0R090T07\",rday:\"03040M0L\",\"rday \":\"03040M0S\",rdb:\"0R020Z0510061204\",rdbo:\"0Z0A10051208\",rdc:\"0U050Y0G\",rdek:\"0B07141L1F031O04\",rdeke:\"1418\",\"rden \":\"03090M080N5S0O070R5G0Z1O100I12191F121N2V\",rdens:\"0P020Z0H1002120B\",\"rder \":\"010V0D030L150M0J0N020O0F0P0D0R110Z051004\",rdet:\"0N050T030Z0T100P12131403\",\"rdet \":\"0N080T030Z0Z100P1213\",rdez:\"0L08141E\",rdeş:\"1F1E\",rdeşi:\"1F18\",rdie:\"018J0L030N090O040R0G1B09\",\"rdie \":\"018T\",rdig:\"010Y0N050R0N0Z0I100L12121O04\",\"rdig \":\"0N030R0K0Z0C100A120U\",rdigh:\"010L0R040Z04\",rdim:\"0O020P0A1F141N2O\",\"rdim \":\"0P0C1F1I1N3L\",\"rdin \":\"03040D0F0L0L1F0J\",\"rdis \":\"03030L020T041B0G1O1E\",rdiň:\"1N0X\",rdl:\"01090M03\",rdlo:\"010K\",rdloo:\"010L\",rdm:\"1202\",rdn:\"0N030V021005\",rdon:\"0L0G0O090Q080R02100215051O0Y\",rdr:\"0L0C0R050Z0410061206\",rds:\"0L070M0D0Z05100412021C0K1D0U\",\"rds \":\"0L0C0M0N0Z021D0Z\",rdse:\"1C0I\",rdt:\"0R0G0Z031207\",\"rdt \":\"0R1P0Z06120G\",\"rdu \":\"0L0P1B051D0O1F5F1O08\",rdum:\"0T061F1U\",\"rdum \":\"0T061F2H\",rduo:\"1B0V\",rdw:\"0R02\",rdy:\"1B021N4V\",\"rdy \":\"1N4A\",rdz:\"1A33\",rdzo:\"1A3E\",\"rdzo \":\"1A5C\",rdé:\"0L0B140I\",rdés:\"141A\",rdì:\"0Q04\",rdí:\"0O0C0U03140E\",rdò:\"0Q03\",rdó:\"0O06\",rdü:\"1F251N1Z\",rdüm:\"1F0L1N21\",\"rdüm \":\"1F0T1N2Q\",rdý:\"0U020Y0E\",rdą:\"1B07\",rdē:\"1D0Q\",rdė:\"1B0M\",rdėj:\"1B0Q\",rdı:\"1F73\",\"rdı \":\"1F2Z\",rdım:\"1F3U\",\"rdım \":\"1F42\",rdır:\"1F0Z\",\"rdır \":\"1F1B\",rdž:\"1B08\",\"re'\":\"0M0H1F06\",\"re's\":\"0M0U\",\"re's \":\"0M15\",\"re-\":\"0L0B0P061502\",reac:\"0M090O040R030S3C150A\",reach:\"0M090SCK\",read:\"0M260O050S11\",\"read \":\"0M11\",readh:\"0S3A\",ready:\"0M1K\",reak:\"0M0F1402\",reall:\"0M2U\",realm:\"0O0S0P11\",ream:\"0M0I0T031507\",rean:\"0O040P020Q030S1E0T031003\",reann:\"0S4R\",reas:\"0M0L0O050T03150U\",reat:\"0M170O020Q080R020S0M0T0A150L\",\"reat \":\"0M0Q0T03150L\",reau:\"0L0L0R06153H\",\"reau \":\"0L0W0R07154F\",reba:\"0O020P030T0C0V3S0Y0G151E\",\"reba \":\"0V5S0Y0K1508\",rebal:\"0V26\",rebb:\"030Q0Q45\",rebbe:\"03020Q47\",rebil:\"1F14\",rebu:\"0T0B0Y2T15AD\",rebui:\"15CT\",rebuj:\"0Y3F\",\"rece \":\"0O240P1O15101F0F\",rech:\"0L0A0N310O0Q0R110Y0P150F1A02\",reche:\"0L0F0N2H150B\",recht:\"0N210R1D\",reci:\"0M060O260P4N0Q0M0R0B0T080V0N100I150R1F021O0D\",recis:\"0O060P4U0Q03100I\",reco:\"0L0S0M0E0O0Z0P0L0Q030T0H150B1O0B\",rect:\"0L0K0M0C0O0N0R070T0Z150W\",recu:\"0L030O0X0P0C0Q020T061531\",recue:\"0O0V\",recut:\"152K\",redan:\"100V1O02\",redas:\"1O1S\",redd:\"0Q0I0R060T0L0Z0B1005120Y1F0F\",\"redd \":\"1004120M\",redde:\"0R070T090Z0D120C1F0I\",\"rede \":\"010N0N0C0P080Q060R090Z451212150V1F1Z1N2C1O02\",reden:\"0N0T0R0X0T031F0H1N1I\",redey:\"1F14\",rediv:\"0V0B0Z0G\",reds:\"0V0A0Y0L0Z0F10021206\",redz:\"1D3X\",redzē:\"1D6C\",\"ree \":\"010K0M1Q0O0B11021O03\",reed:\"010K0M090R0B\",reek:\"01110M020R1Q1C0H\",\"reek \":\"010X0M020R0X\",reekt:\"0R1C\",reen:\"0M060O060P0J0R1E11091O02\",\"reen \":\"0M070O050R1S110E1O03\",refu:\"0L0E0M0G0O030T02150D\",\"reg \":\"012H03040D050Z02140J\",rega:\"0D040L240M030N020O0R0P0J0Q0N0T070Z021O09\",regar:\"0L3K0M030O060P06\",rege:\"0N0N0R1R0T0K0Z0E10051208140D1505\",regen:\"0N0O0R1M\",regg:\"03020Q07141J\",regge:\"0Q03141N\",regl:\"0O0G0Z061009120A130R\",regn:\"0M020N0B0Q0D0T0J0Z1G100L120Z130C\",regne:\"0N0I0Z191003120Q\",rego:\"0P0M0Q0E0V031A0F1O03\",regt:\"01250N02\",regte:\"0118\",regti:\"0113\",regu:\"0M030O1R0P090T06150Q1A051O09\",regun:\"0O26\",reho:\"0D081402\",\"rei \":\"0N190P340Q320T07131F1402153U1B0K1O02\",reib:\"0N13\",reic:\"0N1I\",reich:\"0N2J\",reid:\"0R0E0S1311041P0P\",reie:\"0N09120A1505\",reik:\"0R09110B130D1B5V\",reika:\"11081B2H\",reiki:\"1B78\",reikė:\"1B1V\",reino:\"0O030P041P12\",reis:\"010N0N120P040R0K110D120Z13071B021C0Q1O03\",\"reis \":\"010L0N0H0P060R0G1O05\",reise:\"0N0Z1108120O\",reisi:\"11051C1H\",reit:\"0N1A0P0K110M120913061B1P\",reita:\"0N050P07110U1B2I1O02\",reiz:\"0L020N050R07150C1D42\",\"reiz \":\"1D4H\",reizi:\"1D25\",reizē:\"1D2A\",reið:\"131G\",rejs:\"0U020Z0P\",rejse:\"0Z0P\",\"rek \":\"011103030R0E0U0D1004142Y1A0E1F131N3O\",reka:\"044X0B4Q0V1B130H1F021O03\",\"reka \":\"047X0B8Y0V0A1O02\",rekao:\"0V2V\",reke:\"010P042O0R1U142O1F0V1N0G\",rekek:\"1417\",reken:\"010P0R2B1F0L\",rekey:\"042Z\",reki:\"0V0710051A021B021F1M\",rekiy:\"1F1I\",rekk:\"03020R0K1102120Y130Y140F\",rekke:\"0R0P120L1407\",reko:\"0B030D020V0D0Z0710051B031C0L1O0C\",rekon:\"1C1H1O0B\",rekt:\"0N060R080V030Z051008120714051A021F131O0E\",rekti:\"03021F1F1O06\",rekv:\"0Y1H\",rekva:\"0Y1U\",reld:\"010Q0R0X120O130R\",\"reld \":\"010S0R0Z\",reldr:\"120N131L\",\"rele \":\"151W\",\"reli \":\"1F1R\",rell:\"0L080M040N020O0C0Q15110F1206\",rels:\"0Z1J1004120M1309\",relse:\"0Z1I10041208\",relsk:\"0Z0D120E\",\"reme \":\"0V3E151L1O03\",remem:\"0M0M1F061O04\",remen:\"0L1N0M020O060P040T030V2S1402\",remm:\"0L020Q0Q0Z0A110J120D\",remme:\"0L040R020Z0D120D1402\",remmo:\"0Q0R\",\"remo \":\"0P020Q1P0T021O09\",remos:\"0O1I0P1E\",remp:\"0B0V0L0F1114\",rempi:\"112A\",rempu:\"0B1O\",remt:\"031K0Z091002120G1406\",\"remt \":\"033A0Z0310021205\",remé:\"0P05141C\",remél:\"1410\",\"ren'\":\"0M10\",\"ren't\":\"0M1C\",\"rena \":\"0B3T0O060T040V0Q1003110D1O02\",renan:\"0B1D0L041O03\",rench:\"0M1O\",renco:\"0L1K1O0H\",\"rend \":\"0L190N0R0R0B1402\",rende:\"0L0J0N070O1F0P1M0Q1Y0R0F0Z0U120O141F1F041O07\",rendi:\"0L050O0Y0P090Q0A0T031B0N1F0H1N0Q\",rendr:\"0L56\",rends:\"0L1W140E\",\"rene \":\"0N020Q0H0V0B0Z0M121D1F04\",\"reng \":\"0D060N030R0F0Z0E\",renga:\"043O1104\",renge:\"0N050R0P0Z0N122D140A\",rengt:\"0M030R06120F1B07\",renk:\"11051B0D1F061O0M\",renm:\"1F0O1N12\",renme:\"1F0V1N1B\",renn:\"03060L090N0C0R0611031209130E\",reno:\"0L0A0O050P050Q110T030V0C1O0F\",rense:\"0L03120E1F03\",\"rent \":\"032A0L340M0M0R030T0R0Z0B10021209150G\",rente:\"0L0R0N020O100P1B0Q070R020T0V0Z021208\",rents:\"0L1F0M0O\",renz:\"04390M040N080Q0C0R02\",renze:\"045F0N070Q030R02\",\"reo \":\"0O1U0Q090T030V07150I1O03\",reoc:\"0O0L0P0N0Q0Y\",reocc:\"0Q0Y\",reocu:\"0O0S0P0T\",repa:\"0L0B0M0A0N050O0S0P0F0Q0P0R050Z061005120A150M1O0A\",repar:\"0L040M090N080O0Y0P0J0Q0P0R070Z071004120A150Q1O0H\",repr:\"0L0Q0M020O080P080Z02150D1O08\",rept:\"0T09120A1402151E\",repáč:\"0Y0Y\",repül:\"1412\",req:\"03080L020M040O030P0D0Q020T08\",\"rer \":\"0L2U0M020N1U0O090P0O0T050Z4Q1008124O1F06\",rera:\"043R0D020L0B0O060P040Q03100G\",\"rera \":\"046A0D030L050O071006\",\"rere \":\"04290N070Q0A0T0J0Z0F120G150E\",reren:\"0N020R090Z08120I\",rert:\"1209\",resc:\"0M030O0B0P0J0Q0H0T0F1512\",resen:\"0M0E0O0S0P150Q0H100812051406\",resh:\"04290M04\",resk:\"0V02120514051O0X\",reska:\"1O1B\",resn:\"0Y0I14091B0T\",reso:\"0D030M030O0H0P0K0Q0W0U020V061A081B021O0C\",\"reso \":\"0D040O070P0A0Q0W1B031O09\",respo:\"0D020L0L0M0A0O0W0P1E0Q060T1H150G1O1L\",\"ress \":\"0L020M0R0N03100912041403\",ressa:\"0L0Q0N0D0P180Q0Z0R0G0T050Z0A100B1109120B1F02\",resse:\"0L270M0I0N0J0P090Q0F0R0N0Z0R100E120T1403\",resto:\"0B070D030L020O080P060Q0Z0V0D0Z021B0J1F0D1O0U\",resul:\"0D030M070O0P0P0A0R080Z041005120C1506\",\"rete \":\"0O030Q1D0T04150B1F031O03\",retem:\"141K\",retik:\"14061P1J\",retm:\"1F131N0F\",retme:\"1F1H1O02\",retn:\"0Y0Y0Z071209143A\",retné:\"142X\",retr:\"0L0D0O080P030T060Z0D120615061O02\",retræ:\"0Z0E\",\"rett \":\"0N021002121B1402\",rette:\"0L0I0M030N0D0Q020R030Z0L120R140L\",retti:\"0Q030R030Z0910071104120I1F09\",retty:\"0M0M1102\",\"reu \":\"0P0M151L\",reun:\"0N1S0O0G0P0C1102150U\",reund:\"0N2Z\",reur:\"0L0Q0R02\",reus:\"0L170T07\",reuse:\"0L20\",reux:\"0L1L\",\"reux \":\"0L2Q\",\"rev \":\"0U040Z0X100N120T1F03\",rever:\"0L040M050O030P0U0T0Q1209\",revet:\"0V0Y0Z0O1005120L1405\",revl:\"100E1F02\",rew:\"030I041P0M081A091Q05\",rewe:\"04541A02\",\"rewe \":\"048W\",rex:\"0T0I\",rey:\"040V0D020O08132X1F0W\",reye:\"042O0O021F0L\",\"reye \":\"044E1F0S\",reyk:\"1318\",reyn:\"1315\",reyt:\"131T\",reytt:\"132L\",\"rez \":\"030D0L0Z0O070P081402150Q\",reza:\"042V0O060P0B0V061A02\",\"reza \":\"04530O050P0B1A03\",reze:\"0N020P040U030V02151Q1A0E1B021F021O0C\",rezi:\"0Q040U0815241A031B041F051O0F\",\"rezi \":\"151Q\",rezw:\"043R\",rezwa:\"0464\",rezz:\"03020Q0R1404\",reä:\"1106\",reç:\"0L090P0H1F02\",reë:\"010E\",reël:\"010K\",reëls:\"010L\",reí:\"0O0E\",reć:\"0V1N\",reĉ:\"1O04\",reč:\"0U050V190Y4H1B07\",rečo:\"0Y6G\",\"rečo \":\"0Y7V\",reĝ:\"1O0B\",reŝ:\"1O03\",reš:\"0V1U0Y0F1B03\",reș:\"1523\",reșt:\"151I\",reț:\"150W\",reɣ:\"0331\",\"reɣ \":\"0330\",reḍ:\"0324\",\"reḍ \":\"031U\",\"rf \":\"01080N0B0R0413111F02\",rfai:\"0L0B0S0M\",rfar:\"0Z06100I120B\",rfer:\"0N020Q020Z02120A\",rfl:\"0N020Z0210021202\",rfor:\"0M030N040Z2I122V1F021O04\",\"rfor \":\"0Z2Z122S\",rfr:\"0N020Z0312021306\",rfs:\"0N021303\",rft:\"0N02130V\",rfæ:\"0Z02\",rfö:\"101Y\",rför:\"102M\",\"rför \":\"102M\",rfø:\"1202\",rfü:\"0N04\",rgai:\"1B0S\",rgait:\"1B1I\",rgaŭ:\"1O0O\",\"rgaŭ \":\"1O1A\",rgd:\"0R02\",rgea:\"0S0T1507\",rgead:\"0S3A\",rgee:\"01230R0G\",rgeet:\"01260R0G\",\"rgen \":\"03020N2F0O020R300Z1V1005121A\",rget:\"0M0B0R0K0Z0410051406\",rgh:\"1Q5G\",\"rgh \":\"1Q65\",\"rgi \":\"0B5M0Z0310021205130G150S1B0O1C0Y1F031O03\",rgid:\"0S0M\",\"rgid \":\"0S2K\",rgl:\"0N020Q08\",rgm:\"1C0K\",rgmi:\"1C0Q\",\"rgo \":\"0O0L0P040Q090T0Z1B071O02\",rgon:\"0O040P06101I1404\",\"rgon \":\"1018\",rgr:\"0N021303\",rgs:\"0Z091B021D0E\",rgsm:\"0Z0O\",rgsmå:\"0Z0U\",rgt:\"0N020Z05\",rgte:\"0Z0C\",\"rgte \":\"0Z0F\",rgun:\"0B080P1M131G1F0G\",\"rgun \":\"030213231F0D\",rgunt:\"0P21\",rgy:\"0M0214051B02\",rgå:\"1003\",rgé:\"0L040P02\",rgí:\"0O03\",rgü:\"0O031F03\",rgā:\"1D0K\",rgă:\"150I\",rgę:\"1B0A\",\"rha'\":\"1Q5V\",\"rha' \":\"1Q6D\",rhad:\"0B0I\",rhang:\"1F15\",rhas:\"0B0H1108\",rhat:\"0B0H1102140C\",rhed:\"0Z0A\",rhei:\"0N0V0R0O110J\",rheid:\"0R0X\",rhen:\"0B0Y0T040Z0A\",rhent:\"0B1V\",rhet:\"100A1105120F140I\",rhi:\"0B020N031202\",rhj:\"0Z02\",rho:\"0M020N030R020Z051107120614031F07\",rhol:\"0N060Z09120D\",rhold:\"0Z0B120D\",rhä:\"0N021003\",rhå:\"10021202\",\"ri'\":\"0M041F021Q1X\",\"ri-\":\"030B0B02\",riad:\"0O070P0B0Y1F\",riadk:\"0Y16\",riae:\"0T1J\",\"riae \":\"0T1N\",riam:\"0O040P0P0Q0I0S0M0T2Y0Y091B0C\",\"riam \":\"0P0P0T2U1B06\",rianç:\"0P1E\",rias:\"0N090O0J0P0Y0T090Z02110514061B0F1O02\",\"rias \":\"0N0F0O0P0P170T090Z0214031B0E1O05\",riate:\"0M020Y3A1B03\",riau:\"1B3P\",\"riau \":\"1B46\",riaus:\"1B33\",ribe:\"0M040O090T0U0Z041O02\",ribi:\"0O0X0Q0A0T0P15041D0M1O0N\",\"ribu \":\"0B0C1D4L1O05\",ribus:\"0T1V\",ribē:\"1D23\",ribēj:\"1D37\",ribēt:\"1D21\",\"rica \":\"03030M080O0R0P0M0Q0V0T0Q0V07150H1F08\",rich:\"0L0K0M090N2G0Q0V0R0H0Y081Q0P\",richt:\"0N3J0R0M\",ricit:\"0L030M020R020Z02151X\",rick:\"0M040N030U070Z02100Z\",ricke:\"100H\",rico:\"04150L050O0J0P0F0Q1R0T0E150F\",ricor:\"0Q0U0T05\",ricu:\"0L020O020P030T0P150H\",rido:\"0O0R0P0K0Q041B041O03\",\"rido \":\"0D020O0V0P0M1B061O03\",riec:\"0N071D0X\",ried:\"0M1G0N0G0O020P040Y0X1B02\",\"ried \":\"0M1Z\",rief:\"010N0M020N0N0R0K\",\"rief \":\"010N0N0S0R0P\",riek:\"0R0E0Y0X1B081D2C\",riekš:\"1D3Z\",\"rien \":\"0L4E0N0C0Z0B1003110A120L\",riend:\"01260M200O0H0R3A0T05\",ries:\"0L080M0K0N060O070Q1P0R060T021B021D13\",\"ries \":\"0L0E0M0Q0R030T031D21\",riesc:\"0Q1P\",\"riet \":\"0N050R070T020Z0W100912061D1D\",riete:\"0R0F0T031532\",rieu:\"0L0W0R06\",riez:\"0L181D15\",\"riez \":\"0L17\",rieš:\"0Y0F1B20\",\"rieš \":\"1B2N\",rifa:\"0Q041318\",rift:\"0N090R070Z0510031209\",\"rig \":\"010S03040N0J0R0N0Z2Q102G120B1402150A\",rigad:\"0P0P1O04\",rigar:\"0P030Q021O27\",\"rige \":\"0L030N090O020P030R0K0Z0F100B120B\",righ:\"0M1D0Q020S0T1002\",\"righ \":\"0S3A\",right:\"0M1V\",rigo:\"0L040O090P0I0Q050T041O09\",rigt:\"03030Z0N1003\",rigti:\"0Z0Q\",rih:\"041S0D020V0B0Z02100412041F08\",rihe:\"04360Z051005120A\",\"rihe \":\"045F\",rii:\"0T0E0U070Y0Y111515281A091B061C211O05\",\"rii \":\"0T0E0U0C0Y16110315311A0E\",riig:\"1C0O\",riigi:\"1C1L\",riik:\"1C0Q\",\"rij \":\"0R0V1Q0M\",rija:\"0V2W0Y081B491D6D\",\"rija \":\"0V351B791D9D\",rijai:\"1B1E1D32\",rijas:\"1B021D43\",rijat:\"0V3T\",rijd:\"0R0W\",rijf:\"0R0Q\",rijg:\"0R0W\",rijge:\"0R0S\",rijk:\"0R1J\",\"rijk \":\"0R1D\",rijo:\"0V03150L1B12\",rijos:\"1B1V\",rijp:\"0R0U\",rijs:\"0R0P0V03\",\"riju \":\"0V161D1R\",rijv:\"0R0P\",rijve:\"0R0W\",riją:\"1B0V\",\"riją \":\"1B1S\",rikan:\"030D041V0B2U0D070N0D0R040Z0I1005110A120B1F081O03\",rikas:\"11151C1S\",rike:\"0Y0D0Z02100A120O\",\"rike \":\"0Y0G1005120F\",riki:\"0302043V11021B08\",rikir:\"043V\",rikk:\"0R080Z171111121A\",rikke:\"0R0B0Z1H1215\",riko:\"0450110I1B0C1O0C\",\"riko \":\"048911031B031O0F\",rikt:\"03030R02100S120B1F02\",rikti:\"100O12091F03\",riku:\"0B0L0V0411021C0Q\",\"ril \":\"0B030D070L030O030P030R090Y1Z0Z021002\",\"rila \":\"0V0T0Y0X1O02\",rile:\"0Q0315461F0C\",\"rile \":\"0Q02155A\",\"rili \":\"0D0O0T020V0G0Y0M1F02\",rille:\"0L070N0A0R020Z0J11251208\",\"rime \":\"0L0A0M050P060Q040T051B311F06\",rimei:\"0P1J\",rimer:\"0L080O1O0Q020V0J10021206\",rimo:\"0O0B0P070Q0L0T0L0V061B091O06\",rimu:\"0B0K0T1E150I1B031O02\",rimus:\"0T0T1B03\",rimw:\"044J\",rimwe:\"045Y\",rimç:\"1N1D\",rimçe:\"1N1V\",rinde:\"0Z0E150D1F1Z1N141O0G\",rindi:\"045Y0D041B09\",\"rine \":\"0L0B0M020Q020R020V071F1T1N2O\",\"ring \":\"011R0B270D0L0M2D0N090R1H0Z1C100Q121H130H\",ringa:\"0B0I100N14021B04\",ringe:\"0N1G0R0I0T030Z1O100I121G\",ringt:\"0N0G0R021003120D\",\"rini \":\"0D020Q020T03110G1F311N5W\",rinig:\"0D0H\",riniñ:\"1N14\",riniň:\"1N2R\",rink:\"011J0M0N0N0N0R130Z041002110L12041A021B131O0W\",\"rink \":\"011M0M0J0N020R0C0Z0410021B09\",rinn:\"0N0M0R0I0S1T100711061207135H\",\"rinn \":\"13AA\",rinne:\"0N100R0N0S6M100611041205\",rino:\"0O040P020Q080V0311081B051O1K1P1L\",\"rino \":\"0O030Q081B061O29\",rinob:\"1P17\",\"rint \":\"032U0T0C140W1B05\",rinte:\"0L090Z031106141K1O0A\",riny:\"0B1211021N0E\",rinya:\"0B24\",rior:\"0L020M030O0C0P0D0Q090T101508\",rios:\"0O0X0P100Q0A0T0A150K1B0A\",\"rios \":\"0O0Y0P0Z0T07150Q1B0K\",riou:\"0M0F0P030Y09\",rious:\"0M0L\",\"rip \":\"0B080M070R021F0B1N1L\",ripa:\"0B120Q0E0T030V0411031B051O08\",ripad:\"0B230V09\",ripr:\"0Q050V060Y131B071O03\",ripra:\"0Y1C1B0F\",rips:\"0T12\",ripsi:\"0T12\",ript:\"0L020M020T0T\",riq:\"03040L0E0O030P030T021Q0I\",riqu:\"0L0O0O040P030T05\",\"rir \":\"03030L110O0N0P0N138L1F0I\",rira:\"047Y0L030P050Q020V041O03\",\"rira \":\"04AF0L02\",rire:\"041V0L100Q0V0T0C15061B05\",\"rire \":\"042M0L1L0Q0O0T0B1505\",riri:\"0309042H0D030P021F051O0E\",risc:\"0N0I0P070Q0R0R070T031507\",\"rise \":\"0L1D0M080N030P030Q020Z03\",risen:\"03050L020Z091002120C\",rish:\"045A0M02\",risha:\"048E\",risim:\"1B1T\",risk:\"0M040U030Z0K100H1105120F14021B021F061O08\",\"risk \":\"0M040Z0G1008120A1F02\",riso:\"0L0B0M060P040Q0M1103150S1B02\",risp:\"0Q1J\",rispo:\"0Q12\",risto:\"0L030N020O020P020Q0V0V0A11071O0O\",ritah:\"0B2B\",rith:\"0S1R1306\",\"rith \":\"0S2K\",rithe:\"0S3A\",\"rito \":\"0D1B0O0Q0P0N0Q100T0A1B0L1O05\",ritt:\"0M050N0L0Q110R020Z021005111S120M\",\"ritt \":\"0N0F1004120F\",ritto:\"0Q0R1102\",rittä:\"112Y\",rità:\"0Q0N\",rité:\"0L19\",\"rité \":\"0L20\",\"riu \":\"0P0H0Y0U150M1B73\",rium:\"0N020R020T1S0Z03100214041A021B02\",\"rium \":\"0N020R030T1U0Z0310021A03\",riun:\"0O030Q090T11\",riund:\"0T0V\",riusc:\"0Q0Z\",\"riv \":\"0V020Z061006120C\",\"riva \":\"0L030Q090V06100L150K\",rival:\"0M02110214041B1U\",rivat:\"0M030N040Q0R0T020Z0215051O05\",\"rive \":\"0L1G0M0I0Q050Z0R120M\",river:\"0L0Z0M0F0Q0Q0Z0G100C120E1B0G1O0N\",rivé:\"0L10\",riw:\"030H040V\",riwe:\"0306042K\",\"riwe \":\"044K\",rix:\"0L090T07\",riy:\"030804280D041F1I1Q3M\",\"riy \":\"1Q4K\",riya:\"041R0D06\",\"riya \":\"04350D04\",riye:\"0305044Q0D021F0D\",\"riye \":\"04831F0B\",riyo:\"1F0W\",riyor:\"1F17\",riza:\"045O0O070P0615051O08\",\"riza \":\"049O1O06\",rizw:\"04AS\",rizwa:\"04HK\",riá:\"0U03140D\",riä:\"110B\",riè:\"0L0E\",rié:\"0L0F\",riê:\"0P05\",rië:\"0R02\",rið:\"132K\",\"rið \":\"133N\",riñ:\"0O021N0M\",rió:\"0O0V\",\"rió \":\"0O14\",riý:\"1N0E\",riā:\"1D0E\",rią:\"1A021B0B\",riĉ:\"1O0E\",rič:\"0U020V1N0Y0M\",riča:\"0U030V1M0Y0I\",riĝ:\"1O0J\",riņ:\"1D0J\",riň:\"1N17\",\"riň \":\"1N0Z\",riş:\"1F0I1N0A\",riš:\"0V0T0Y181B08\",riši:\"0Y1C\",rišie:\"0Y1N\",riť:\"0Y1E\",\"riť \":\"0Y28\",rių:\"1B0P\",\"rių \":\"1B15\",riž:\"0V021B06\",riɣ:\"0320\",\"riɣ \":\"031W\",\"rja \":\"0B1J100A110Y130Z140X1C0O\",rjaa:\"0B150R0B1112\",rjaan:\"0B29110D\",rjad:\"0B16100I\",rjade:\"100I\",rjadi:\"0B2C\",rjal:\"0B0X1106\",rjala:\"0B1T1105\",rjan:\"0B09100611171F03\",rjar:\"100E130C\",rje:\"0B0A0O03100N110X140G1N0M\",\"rje \":\"100U11041409\",rjem:\"0B0F140E\",rji:\"030513031F051N0I\",rjo:\"11241402\",rjoi:\"112M\",rjoit:\"115S\",rju:\"0B061103132614041C1Y\",\"rju \":\"132J\",\"rjum \":\"1321\",rjut:\"1C1N\",rjuta:\"1C3E\",rjá:\"130S1408\",rjä:\"110A\",rkad:\"0B050Y08100B1F2H\",rkada:\"0B0A1F3E\",rkan:\"030E0B2Q0N050R0410051F02\",\"rkan \":\"030K0B4M1004\",rkar:\"0N02100T130D1B021F05\",\"rkar \":\"100Q130J1F02\",rkat:\"0B141O02\",rkata:\"0B1Y\",rkaç:\"1F11\",\"rkaç \":\"1F1E\",\"rke \":\"0D0A0N070R020V040Z0F1005120O14041B09\",rked:\"0M0A0Z0B12061405\",rkee:\"010P0R0L1104\",rkeer:\"010Q0R0T\",rkek:\"1F12\",\"rkek \":\"1F17\",rkeli:\"0R090Z1B121D\",\"rken \":\"0N0G0R1F0Z0K100Q120J1F2C\",rker:\"0M040N040R080Z111008120S\",\"rker \":\"0M020N060R060Z0J1003120L\",rkert:\"0Z0D\",rkes:\"03020Z0314021F1H1O02\",\"rkes \":\"03031F1A\",\"rket \":\"0M060Z061003120M1F07\",rking:\"0L020M0O0R081B04\",rkj:\"12041308\",rkk:\"10031118\",rkl:\"010D0N0M0R030Z07101D120D1B091F0H\",rkla:\"0R070Z0B100G120O\",rklar:\"0R050Z0D100F120N\",rkli:\"0N14101D1B05\",rklic:\"0N1V\",rklig:\"101D\",rkm:\"03031F091N0P\",rkn:\"10031202\",rkoit:\"112B\",rkr:\"10031303\",rks:\"03020M060N040Z02100512031B06\",rkt:\"0N070R0D0Z04100B12051B0O1D0N1F09\",\"rkt \":\"0N0C0R140Z07100812081D0K\",rkti:\"1B0Z\",\"rkti \":\"1B21\",rky:\"0U040Y07100411071B02\",rkä:\"0N0210061104\",rkø:\"0Z02\",rký:\"1N0B\",rkā:\"1D0H\",rkė:\"1B08\",rkı:\"1F13\",\"rla \":\"0L020O0O0Q290S1L0V041F0Y\",rlaa:\"010H0R03\",rlaat:\"010G0R03\",rlad:\"0Z0E1F0B1N0E\",rlal:\"0B1C\",rlalu:\"0B2N\",rlam:\"0B0L0Q02140215041F0G1O02\",rlar:\"0B0D0O030Q1Z1F2K1N34\",\"rlar \":\"1F2D1N3B\",rlare:\"0Q1T\",rlat:\"0Q0N0R0B120C14071F06\",rld:\"0M0C100G\",\"rld \":\"0M0K1002\",rlde:\"100G\",rlden:\"100G\",\"rle \":\"0L100O150Q0U1F0C\",rled:\"010H0N050R090Z031F02\",rlede:\"010I0R0C0Z03\",rleg:\"0N080R060T02131G1402\",rlek:\"100D141A\",\"rlek \":\"100A141D\",rler:\"0L1Q0N020Q041F201N35\",\"rler \":\"0L2T1F1B1N31\",rleri:\"1F171N0V\",rleş:\"1F091N1V\",rleşm:\"1F021N17\",rlf:\"0M03\",\"rli \":\"0Q0U1F0S1N0L\",rlic:\"0N120R02\",rlich:\"0N1S0R03\",rlie:\"0M040N0N0R0O1D0U\",rliec:\"1D25\",rlig:\"0Z261012122X\",\"rlig \":\"0Z0V100C1222\",rlige:\"0Z0H1004120E\",rligh:\"0Z0F120F\",rligt:\"0Z0V100G\",rlih:\"0B16\",rliha:\"0B2C\",rlij:\"0R1E\",rlijk:\"0R1R\",rlik:\"010V1F191N13\",\"rlik \":\"010K1F031N16\",rlikt:\"1F1K\",\"rlo \":\"0O2A0Q3M0V0G\",rlog:\"0L020R0K1Q0G\",rloo:\"010K0R07\",rloor:\"010I0R04\",rlor:\"0N0G0R0E100H\",rlora:\"100G\",rlos:\"010H0M030N020O09\",rlosi:\"010I\",rls:\"0M031D0O\",\"rls \":\"0M051D0W\",rlu:\"0B0W10051F0A1Q0A\",\"rlu \":\"0B171F04\",rluk:\"0B0I1F05\",rly:\"0M0F1B021N0S\",\"rly \":\"0M0R1N0G\",rlä:\"0N0310071N0J\",rlå:\"1008\",rlæ:\"1303\",rlé:\"0L08\",rlò:\"0Q02\",rlı:\"1F0W\",rmaa:\"010F0R0B110P\",rmag:\"0Q031N0Z\",rmagy:\"1N14\",rmai:\"0B1G0L0A0Q051B02\",rmain:\"0B2U\",rmak:\"0R031F0V1N17\",\"rmak \":\"1F0Z1N14\",rmana:\"0O0W15051F021O0H\",rmano:\"0O151O04\",rmast:\"1004110Z1C5S\",rmb:\"1003\",rmd:\"1D0G\",rmed:\"03020M060O080Z031F121N1D\",rmedi:\"1F1A1N1Q\",rmee:\"010F0R0F1105\",rmek:\"140N1F1S1N1N\",\"rmek \":\"14051F271N1Q\",rmey:\"1F181Q0X\",rmeye:\"1F15\",\"rmi \":\"030B0L0E0P020Q2B0V031103140615081F061N0Y1O0D\",rmid:\"0O080P020T030Z0910061208\",rmina:\"0D030L040O120P0P0Q040T0A151C\",rms:\"0M0410021D0H\",rmt:\"0Z0310071205\",\"rmt \":\"0R020Z091009120C\",\"rmu \":\"0B0I0U031O05\",rmy:\"0U021A031N1P\",\"rmy \":\"0M020U031A051N22\",rmá:\"0P030U060Y051307140G\",rmã:\"0P17\",\"rmã \":\"0P0I\",rmão:\"0P0V\",\"rmão \":\"0P0U\",rmä:\"11031N0S\",rmå:\"1003\",rmé:\"0L0G140B\",rmí:\"0O03\",rmó:\"0O02\",rmā:\"0T021D0G\",rmă:\"1511\",rmą:\"1B08\",rmı:\"1F0I\",rnah:\"0B2Y\",\"rnah \":\"0B5A\",rnar:\"0P0C0Q0C0T081339\",\"rnar \":\"0P08136G\",rnb:\"1002\",rnd:\"0N021305\",rned:\"0M0S0Z031402\",\"rned \":\"03020M121402\",rnej:\"0Y081O0S\",rnejo:\"1O1A\",rnen:\"03020N0V0Z0D100G1206\",\"rnen \":\"03020N1F0Z04100G\",\"rni \":\"03030Q0M0T050V090Y0A1104130714211A031D0Q1O0D\",rnig:\"1320\",\"rnig \":\"1348\",rnin:\"0M0T0Z07100611021316\",rning:\"0M140Z091005131I\",rnir:\"131L\",\"rnir \":\"0L021339\",rniy:\"0D08\",rniè:\"0L0R\",rnièr:\"0L1A\",rnm:\"0M031304\",\"rno \":\"0D040O0W0P0R0Q2B0T050V1E1A021O05\",rnos:\"0O0R0P030U040V07\",\"rnos \":\"0O0Y0P041O02\",rns:\"0M020N090R020Z0510041202\",rnsy:\"0Z0B\",rnsyn:\"0Z0D\",rnt:\"0N0B1307\",rnud:\"1C0L\",\"rnud \":\"03021C1H\",rny:\"0B1A0Y05140J1A071B02\",rnya:\"0B2J1405\",\"rnya \":\"0B41\",rnä:\"10021N0M\",rnäç:\"1N0V\",rnäçe:\"1N17\",rnå:\"0Z0B\",rnår:\"0Z0V\",\"rnår \":\"0Z12\",rné:\"0L0H0U060Y0A1404\",rnò:\"0Q02\",rnø:\"1203\",rný:\"0U090Y0E\",rnā:\"0T03\",rně:\"0U0D\",\"ro'\":\"1Q2J\",\"ro-\":\"0P03\",robab:\"0L0K0M0Y0O0E0Q0J15191O07\",robee:\"010Y0R1D\",robil:\"0Y4W1A0B\",robić:\"1A3T\",robił:\"1A2S\",robiť:\"0Y4H\",roblè:\"0L1W\",roblé:\"0U1S0Y0S1416\",roblē:\"1D25\",robí:\"0U020Y2D\",\"robí \":\"0Y17\",robím:\"0Y0Y\",rocc:\"0M020Q0L\",roch:\"0L1G0N0K0O020P030U140Y1I150C1A0W\",rochu:\"0U190Y12\",rochę:\"1A1F\",rocu:\"0L020P0N0T0B1506\",rocur:\"0L040P0U\",rodd:\"100T120O\",rodde:\"100S120N\",roden:\"0Y11\",rodin:\"0U0Z0Y19\",rodič:\"0U190Y0Q\",rodo:\"0Q050V0714031A081B1N\",\"rodo \":\"1B3A\",rody:\"1A031B0V\",rodz:\"1A2E\",rodzi:\"1A30\",rodė:\"1B0T\",\"rodė \":\"1B1N\",roed:\"0Z0K\",roede:\"0Z0O\",roeg:\"010F0R1V\",\"roeg \":\"010G0R1W\",roen:\"010S0R0J0Z061003\",roent:\"010I0R08\",roep:\"010M0R0H\",\"roep \":\"010G0R0C\",roer:\"010Y0R12\",\"roer \":\"010S0R11\",\"rog \":\"0V040Z16100512041404152U\",roh:\"0N050O040T020U08110614041C1A\",rohk:\"11091C11\",rohke:\"110K1C2J\",roir:\"0L0N\",rois:\"0L281103\",\"rois \":\"0L33\",roit:\"0L1D110H\",\"roit \":\"0L1Q1103\",\"roj \":\"0U060V0B1O3A1Q06\",rojn:\"1O25\",\"rojn \":\"1O47\",rojā:\"1D18\",rojām:\"1D2O\",\"rok \":\"0B030R0A0U0J0V050Y1H142H1A0B\",roke:\"0M0E0R12\",roken:\"0M070R1D\",rokok:\"0B1C\",rokov:\"0Y1L\",roks:\"11071O0P\",roksi:\"11051O1D\",\"roku \":\"0U070Y0C1A1I1D1I\",rola:\"0O040P050Q0G0T040V0515061O17\",rolas:\"1O1S\",\"roli \":\"1A021O1S\",rolig:\"0Z0B100P120C\",romis:\"0L0A0M0K0O020P020Q020T09150L1B04\",romm:\"0R02120V1402\",romme:\"0R03120V\",rond:\"010P042O0L050R0V14041O03\",ronde:\"044Q0L040R08\",rong:\"045L0B040D0A0M0R0R0614041C0E\",\"rong \":\"0B070D0J0M0X0R06\",rongo:\"049I\",ronk:\"010M04290R0L\",\"ronk \":\"010K0R09\",ronka:\"0441\",\"rono \":\"0Q0Z1O04\",rons:\"0L131102\",\"rons \":\"0L1R\",\"ront \":\"0L1G0M0D\",ronto:\"0O0Y0P0F0Q0D1403\",rood:\"0R0S\",\"rood \":\"0R0X\",rook:\"010J0R0A\",\"rook \":\"010K0R06\",room:\"010P0M160R0F1107\",\"room \":\"010P0M1H0R0E\",roon:\"0D0Y1108\",\"roon \":\"0D1M110I\",roor:\"010Q0R0B\",\"roor \":\"010L\",root:\"01120R1B\",\"root \":\"010Y0R0Y\",roov:\"1C0S\",roovi:\"1C1Z\",\"rop \":\"0L1T0M030R0F0Z051Q0O\",ropp:\"0M040Q210Z0410091209\",roppo:\"0Q1X\",ropr:\"0L0P0P050Q0Z0T08150S1O0F\",ropri:\"0L080M020P060Q0Z0T0915101O02\",roq:\"0L020T021Q07\",\"ror \":\"0M040O0E0P020T180Z2G102K122L150K\",rore:\"041V0O090Q0E0R020T0P120H\",roren:\"0N020R02120H\",rosj:\"120C1A03\",roso:\"0O0J0P090Q07100214061504\",ross:\"0L0G0M0B0P040Q1G1003110C1422\",rossi:\"0L080Q10\",rossz:\"1425\",rosz:\"140M1A2E\",roszę:\"1A38\",rosí:\"0U1S0Y3M\",rosím:\"0U2G0Y4E\",\"rot \":\"0N0D0R03110314061D15\",rota:\"0O080P0F0T1211061D0Q\",\"rote \":\"0M090N050Q020R101B05\",roth:\"0M0E\",rothe:\"0M0J\",rotož:\"0U17\",rots:\"010J0R091006\",\"rots \":\"010K0R0B1005\",rott:\"0L060N020Q0G0Z05100F110F13051408\",\"rotu \":\"1A021D1R\",\"rou \":\"01210L030P2D0U0X150E\",roug:\"0L0H0M0S\",rough:\"0M12\",roun:\"0M0X\",round:\"0M19\",rouv:\"0L2X1106\",rouve:\"0L34\",rouvé:\"0L1F\",rouw:\"0R2P\",\"rouw \":\"0R1P\",rouwe:\"0R17\",rova:\"0P0S0Q350U0N0V0S0Y161004110D14031O0F\",rovar:\"0P040Q181403\",rovat:\"0Q1A0U080V1F\",rovis:\"0L040O031O1J\",rovn:\"0U0L0Y1B\",rovna:\"0U0C0Y10\",\"row \":\"0M13\",rowa:\"1A1K\",rowad:\"1A1F\",rox:\"0O030P060T0F1503\",roxi:\"0L020O040P070T0S1505\",roxim:\"0L040O060P090T0U1507\",roy:\"0B020L0B0M020O061F02\",rozh:\"0U130Y1C\",rozho:\"0U1H0Y1M\",rozm:\"0U070Y091A1H\",rozma:\"0U021A1Z\",rozp:\"0U0A0Y1G1A0E\",rozpr:\"0Y1G1A03\",rozu:\"0U120Y1Z1A1A\",rozum:\"0U1I0Y2G1A22\",roß:\"0N0Q\",roße:\"0N13\",roĉ:\"1O03\",roč:\"0U2M0V0E0Y0A1B02\",\"roč \":\"0U42\",roš:\"0U040V0T1B031D0V\",rož:\"0U050V021B0B\",\"rp \":\"0R0413041B0D1D0E1F02\",rpik:\"0B0J\",rpin:\"130C1D0X\",rpinā:\"1D25\",rpre:\"0D020L030O0L0P0H0Q0N0T0615031O04\",rpri:\"0L0E0M0G150I1F041O09\",rpris:\"0L0N0M0L\",rps:\"0L050T02\",rq:\"03040L0E0O0E0P0A0T041Q07\",rqu:\"0L1Z0O1A0P1A0T0A1Q0I\",rque:\"0L090N020O1S0P1A0T0G\",\"rque \":\"0L070O270P1J0T0F\",rquo:\"0L2S\",rquoi:\"0L4P\",\"rr \":\"030E0N050S36100I1204130D\",rrab:\"03030Q0Q0T02\",rrabb:\"0Q0Q\",rrad:\"03050N090O0E0P0N0R0310071402\",rrai:\"0L180Q020S3A\",rraid:\"0SB5\",rram:\"03070O050P050T1E1305\",\"rram \":\"03060T1F\",rrask:\"0Z0C10081103120F\",rrei:\"0N0E0P080Q11\",\"rrei \":\"0Q12\",\"rren \":\"030F0N0B0O030R07100U1103\",rrer:\"0L040O0D0P0N0Q0R0T090Z06\",rret:\"0O060P0A0Q0A0T080Z0B1106120A1O04\",rreu:\"0L0N0P0K0T02\",\"rreu \":\"0P0P\",\"rri \":\"030B0L020P020Q020T031315\",rrie:\"0L0F0M0S0N020O0C0Q0J0R021402\",rried:\"0M0Y\",rrig:\"03040L050N020P040R020T050Z051209\",rrim:\"0O020T0Y\",rriv:\"0L2K0M0D0Q1I0R020T04\",rriva:\"0L090Q15\",rrive:\"0L2L0M0F0Q050R02\",rrivé:\"0L1I\",\"rro \":\"0O1H0P2P0Q070T08110K\",rror:\"0L020M060O0Q0P040Q0P0R020T0A0Z021403\",rros:\"0L030O0D0P0I0Q021104\",rrow:\"0M0Z\",\"rrow \":\"0M18\",rrt:\"0N04\",rrà:\"0Q08\",rrä:\"1005110K\",rrå:\"1002\",rræ:\"0T08\",rré:\"0L07\",rrê:\"0L0V\",rrêt:\"0L1H\",rrête:\"0L1N\",rrí:\"0O050P06\",rrò:\"0Q04\",rró:\"0O071408\",rrü:\"0N021N0F\",rrā:\"0T02\",\"rsa \":\"0O020P080Q0T0T0D140215061F0P\",rsam:\"0B100N040P020T04100214021F08\",rsama:\"0B1Y1F03\",\"rsan \":\"140Y1F0N\",rsc:\"0N150R0H\",rsch:\"0N2T0R1U\",rschi:\"0N0T0R1H\",rsd:\"0Z0210031205\",rsda:\"0Z061003120D\",rsdag:\"0Z081003120D\",rseb:\"0B0M0Z04\",rself:\"0M12\",rset:\"0N0K0Z03120O13051403\",rsett:\"120K\",rsh:\"0M02\",\"rsi \":\"030G0B080Q1T0T0711091A021B0D1F02\",rsik:\"0B050Z021008110A120C1B08\",rsin:\"0B050Z03110C1F1O\",\"rsin \":\"110K1F1P\",rsiň:\"1N4K\",\"rsiň \":\"1N2F\",rsiňi:\"1N2K\",rsiňm:\"1N1G\",\"rsk \":\"0Z07120N1B03\",rska:\"010F0U030V020Z05100H110512041B0J\",rske:\"0Z0S120I\",rskel:\"0Z0H\",rskj:\"120L\",rskje:\"120L\",rsl:\"0R030Z0210061203130A1B021F04\",rsm:\"1005120D\",rsmå:\"0Z041005120Y\",rsmål:\"0Z051005120X\",\"rso \":\"0D030O0F0P0H0Q260T041O0A\",rsoan:\"151O\",rsom:\"0Z021009120E\",rsona:\"0D030M060O2N0P040Q0T0T041002150H1O05\",rsone:\"0N050Q100R060Z081009120G1O04\",rsonn:\"0L4G\",rsoo:\"010N0R0I1102\",rsoon:\"010N0R0O1105\",rsq:\"0L0J\",rsqu:\"0L0W\",\"rst \":\"0M100N1R0R0S0Z0D100F120K130S1C0H\",\"rsta \":\"0R030V0B100S1319150A1B06\",rstaa:\"010T0R0B\",rstan:\"0M0V0N0Q0R0A0Z04\",rste:\"011E0N240R1U0U020V030Z1A1003121G1D0O\",\"rste \":\"010L0N0L0R190Z1C121B\",rstel:\"010N0N0I0R0W\",rstm:\"0R0X\",rstmi:\"0R13\",rstå:\"0Z0Y1015121H\",\"rstå \":\"0Z0A100B120C\",rstår:\"0Z0K100O120R\",\"rsu \":\"0T02131G\",rsuc:\"0N0Y\",rsuch:\"0N1L\",rsun:\"1F4M\",\"rsun \":\"1F5F\",rsv:\"0Z04100712051303\",rsy:\"110512021A041N18\",rsyň:\"1N0Z\",rsz:\"141X1A0L\",\"rsz \":\"14211A02\",rszá:\"142E\",rszág:\"142F\",rsá:\"0P0A1404\",rsä:\"100N\",rsäk:\"100G\",rsäkt:\"100E\",rsät:\"100E\",rsæ:\"0T020Z07\",rsæt:\"0Z0I\",rsætt:\"0Z0J\",rsé:\"0L041409\",rsö:\"0N021014\",rsök:\"101H\",rsökt:\"100L\",rsø:\"0Z081204\",rsøg:\"0Z0J\",rsøk:\"120B\",rsı:\"1F0N\",\"rt-\":\"031L\",rtaa:\"0R0F1113\",rtai:\"0L180M0B110I1B0H\",rtain:\"0L1L0M0F1108\",rtalt:\"0Z0X120U\",rtam:\"0B0M0O0E0P0G0Q0F0T0D141K150H1F021O02\",\"rtam \":\"0P020T0A141M\",rtant:\"0D080L160M0F0O0T0P0S0Q0H0T05151C1O03\",rtany:\"0B20\",rtas:\"0B0A0O0H0P0F0T0E110214041B0R1F041O0T\",\"rtas \":\"0B0H0O0L0P0I0T061B1K1O1L\",rtat:\"0Q0P0T0I10031408150M\",rtd:\"1N09\",rtea:\"151U\",\"rtea \":\"1528\",rted:\"0M0U0Q050Z03140J\",\"rted \":\"0M15140K\",\"rtel \":\"010T0N040R0J\",rteld:\"0R15\",rtell:\"0Q030R0U1210\",\"rtem \":\"0T0X141M1A04\",rtemu:\"0B2E\",\"rten \":\"0N2T0O020R0J0Z0D100B110T120N\",rtet:\"0N0N0T0F0Z091002120H140U\",\"rtet \":\"0N0Q0T0E0Z0A1002120H1404\",rtez:\"0L080P0T\",rteza:\"0O020P10\",rtf:\"100V1A03\",rtfa:\"1015\",rtfar:\"1015\",\"rth \":\"0M0I\",rtha:\"0S1J0T031405\",\"rtha \":\"0M020S4I\",rthá:\"0S0V\",rthái:\"0S3J\",rtid:\"0B060O0O0P0I0Z041003120615031F05\",rtie:\"0L120M020N040O030Q060R050Z03150L1B09\",rtig:\"0L020N0M0P050Q020R0E0Z0N10031O0L\",rtigt:\"0N020Z0K\",rting:\"0B0F0M070R021B1S\",rtiny:\"0B1E\",rtir:\"0L1A0O0F0P0E0Q0H13071N1I\",\"rtir \":\"0L1X0O0B0P0D130F1N1D\",\"rtis \":\"0L090T0R1B0F1O1D\",rtit:\"03040L060Q0R0T0L110214021504\",rtj:\"0R040Z02100512021407\",rtl:\"0N021F07\",rtm:\"0M041F08\",rtn:\"0V03\",rtog:\"0Q0K1402\",rtoj:\"11031B071O0R\",\"rton \":\"14051O1C\",rtro:\"010K0Q050R0Q1002\",rtrou:\"010L0R0P\",rts:\"0L0D0M080N090R050Z07100F120J1407\",\"rts \":\"0L0L0M0F0N040R0G0Z0310031402\",rtsa:\"0Z03100512101403\",rtsat:\"0Z0310041210\",rtse:\"0Z04120B1402\",rtt:\"110K1F0A\",\"rtu \":\"0B060T040U040V09133W1A051B0N1O05\",rtus:\"0T0S1B0D\",\"rtus \":\"0T0S1B0S\",rtuu:\"0T0W\",\"rty \":\"0M0X0N050U0A1A0B\",rtyt:\"010F\",rtytj:\"010G\",rtà:\"0Q03\",rtá:\"0P04140F\",rtã:\"0P05\",rtä:\"110L\",rtæ:\"0Z0A1307\",rtæl:\"0Z0Q\",rtæll:\"0Z0N\",rté:\"0L0G0O03141L\",rtén:\"142W\",rtént:\"141D\",rtí:\"0O061305\",rtò:\"0Q02\",rtó:\"0O051408\",rtă:\"150T\",rtą:\"1B0T\",\"rtą \":\"1A021B1C\",rtė:\"1B0D\",rtī:\"1D0Q\",rtı:\"1F20\",rtık:\"1F17\",\"rtık \":\"1F1N\",\"ru-\":\"030C0B03\",ruan:\"0B0Z0D04\",ruang:\"0B1T\",ruba:\"03040B0H0Q0C\",\"rud \":\"03050S410Z03\",rue:\"0L0C0M070O0E0P030T070Z0512021O0F\",ruf:\"03030B020N0B13041F02\",\"rug \":\"01250M020N060R1E0Z1G\",ruge:\"041Z0V060Z111B04\",\"ruge \":\"0V0G0Z0H\",ruger:\"0Z0O\",rugk:\"010M0R08\",rugko:\"010I0R06\",rugs:\"0M020R031B031N1A\",rugsa:\"1N1S\",rugt:\"0Z0G\",ruh:\"04270B0D0N080U0H0Y0P140H1F06\",\"ruh \":\"0B0I0U041F03\",ruhu:\"043O0Y081F02\",ruhuk:\"044X\",ruik:\"011B0R1K\",\"ruik \":\"011B0R0L\",ruir:\"0L040O050P040QBL\",ruire:\"0L060QBQ\",ruis:\"0L040R050T0511021O0Q\",ruit:\"0L0S0M040Q040R0O0T0O15081O03\",ruj:\"03030O020U060V0Q0Y081A071O02\",\"ruk \":\"010J0B0U0R0M120614021C0R1F02\",ruka:\"045L0U050V07100H1102\",\"ruka \":\"030204970U02\",ruke:\"0V071212\",\"ruke \":\"0V0J120H\",ruker:\"120I\",ruki:\"041Z\",rukk:\"0R070Z0C110212061305\",rukke:\"0R070Z0F1206\",rukt:\"0R030Z02100B120L1B031O09\",\"rukt \":\"03030R021003120C\",\"rul \":\"140B156U\",ruma:\"0B3J0O020P0311041F091O03\",rumah:\"0B6T\",rumm:\"0Z06100N\",rumme:\"0Z07100M\",rumo:\"0M020O030P030Q07151O1B02\",\"run \":\"030C0B0P0M0811031F0R1Q0C\",\"rund \":\"0N0N0Z0M1009\",runda:\"10031F3U\",rundt:\"0Z0D120L\",rung:\"0B0T0N1E10031B02\",\"rung \":\"0B190N1N\",runn:\"0M050N0212161307\",\"runn \":\"120N\",runo:\"0D0A0M03110D\",runon:\"0D0J1102\",runt:\"03020B0A0L060N050T5G100E15081O09\",\"runt \":\"03050T5E100D\",runā:\"1D4J\",\"runā \":\"1D3L\",runāj:\"1D48\",runāt:\"1D3U\",ruo:\"0Q0211151B1E1O08\",ruok:\"111D1B02\",ruoka:\"1130\",ruoš:\"1B15\",rupp:\"0N060Q090Z0310051209\",rupu:\"15071B0U\",ruput:\"1B1N\",rura:\"0303041Z0T031O05\",ruse:\"0Z0910031C0K\",rush:\"04220M06\",rusn:\"0B0O\",rusny:\"0B1D\",russi:\"0L0A0M090N090Q0W0R090T050Z061206\",ruth:\"0M0C0T0D\",ruts:\"041R0N021205\",rutse:\"0435\",rutt:\"0Q0R10031105\",ruu:\"0T05110M1C0F\",ruv:\"0Q0210031O03\",ruy:\"030H0O031F0S\",\"ruz \":\"1F24\",ruç:\"0P041N0M\",ruí:\"0P08\",ruð:\"130O\",ruĝ:\"1O0A\",ruğ:\"1F0E\",ruš:\"0U0I0V080Y0R\",ruž:\"0U020V0G0Y0I\",\"rv \":\"0Y051402\",rvad:\"0O030P031C0N\",\"rvad \":\"1C1L\",rvan:\"011G0O020Q020R0O0T0511041C1D\",\"rvan \":\"011E0R0Q11021C2X\",rvas:\"0P020T02110514031C0K1F021O03\",\"rvi \":\"0L020Q0V0T0G0V0H11041O04\",\"rvis \":\"0T061D1R1F021O05\",rvit:\"0Q020T06112H1307\",rvits:\"115D\",rvn:\"0U0C\",rvu:\"0L020T0M0U020V021B031C0F\",rvus:\"0T0P\",rvá:\"0U060Y0F1403\",rvä:\"100D\",rvå:\"1005\",rvé:\"0L040U05140A\",rvö:\"1003\",rvī:\"1D0E\",rwa:\"010C030L04520B070M030N0A0R071A0I1Q0F\",\"rwa \":\"030304821A05\",rwan:\"0303041V0N050R021A02\",rway:\"0429\",rwaye:\"043I\",rwe:\"0107030I040M0N0C0R061A02\",\"rwe \":\"041R\",rwij:\"0R0L1Q06\",rwo:\"0R021A0H\",rwy:\"010F1A02\",rwys:\"010N\",rwyse:\"010K\",\"ry'\":\"040O0M0A1F66\",\"ry'n\":\"1F3X\",\"ry'ni\":\"1F5B\",\"ry's\":\"0M0I0R04\",\"ry's \":\"0M0P0R06\",\"ry'y\":\"1F2Z\",\"ry'ye\":\"1F2G\",\"ry'yi\":\"1F1L\",rya:\"0304045U0B020D0511041F071Q0E\",\"rya \":\"043Y0D0711081F04\",ryam:\"043D\",ryan:\"03030449\",ryang:\"043V0D02\",ryar:\"0449\",ryari:\"047A\",ryaw:\"0426\",ryawe:\"043V\",ryb:\"0M060U0F0Y0E1A0C1B0E\",ryc:\"0U0M100C1A0H\",rych:\"0U111A0E\",rychl:\"0U1F\",ryck:\"100H\",ryd:\"0Z0B100212031B021N0C\",ryde:\"0Z0K\",ryder:\"0Z0G\",rye:\"0D021F03\",ryf:\"010I\",\"ryf \":\"0115\",ryg:\"0Z0F1008120613071A04\",ryge:\"0Z0I\",\"ryge \":\"0Z0E\",rygg:\"0Z031009120F130C\",rygt:\"0Z0C\",ryh:\"010D1106\",ryhe:\"010V\",ryhei:\"010K\",ryi:\"040T0M0D\",ryin:\"0M0P\",rying:\"0M0Y\",ryiwe:\"042S\",ryj:\"1A021B0D\",ryk:\"01090Z061003120E13041A0E1B0K1N09\",\"ryk \":\"010M0Z081B0M1N0D\",rykk:\"0Z07120M1306\",rykt:\"0Z021003120C\",ryl:\"0Y040Z0211061B021C0G1N0K\",rym:\"10071A0G1N20\",\"rym \":\"1A0I1N10\",rymy:\"1N1A\",ryn:\"1002110G14031A051B021N8P\",\"ryn \":\"1002110O1N5D\",ryna:\"1A021B021N10\",\"ryna \":\"1N1E\",ryny:\"1N63\",\"ryny \":\"1N5N\",rynyň:\"1N27\",ryo:\"041V0D070M0C\",\"ryo \":\"04420D08\",ryon:\"0D030M0N\",ryone:\"0M0V\",ryp:\"1B021N12\",\"ryp \":\"1N1B\",ryr:\"10061203\",rys:\"01070U020Z0B100H110512041A0B1B1B1N0W\",\"rys \":\"010F0N020Z0N100C11021B1H1N14\",ryt:\"0M0H0U030Y081006120414041A0G1B45\",ryte:\"120B1A031B07\",ryth:\"0M0V\",rythi:\"0M17\",ryti:\"1B3O\",\"ryti \":\"1B7G\",ryto:\"1A021B1Q\",rytoj:\"1B36\",ryu:\"030A040C\",ryw:\"1A0B\",ryz:\"0T041A0B\",ryñ:\"1N1S\",\"ryñ \":\"1N2H\",ryč:\"0U061B09\",ryň:\"1N20\",\"ryň \":\"1N26\",ryş:\"1N0A\",ryž:\"1B0C\",\"rz \":\"0N091A10\",rza:\"030A0O0B0Q080R050V0214031A1B1N0A\",\"rze \":\"0N061A33\",rzeb:\"1A27\",rzebu:\"1A1T\",rzec:\"1A37\",rzeci:\"1A1E\",rzecz:\"1A2P\",rzed:\"14041A24\",\"rzed \":\"14041A1I\",rzes:\"1A20\",rzest:\"1A1L\",rzez:\"1A21\",\"rzez \":\"1A2V\",rzi:\"03060N040Q050R050U020V0G140415131B04\",rzo:\"0O080Q030R040U050V0F1A07\",rzt:\"0N09\",rzu:\"03070N041A0Q1F021N0F\",rzw:\"1A0G\",rzy:\"0U0I1AAE\",\"rzy \":\"0U0U1A2H\",rzyj:\"1A3F\",rzyja:\"1A2A\",rzym:\"1A1R\",rzyma:\"1A24\",rzys:\"1A2A\",rzysz:\"1A2E\",rzä:\"0N07\",rzą:\"1A0V\",rà:\"0Q0V\",\"rà \":\"0Q3D\",rá:\"0O1G0P170S1S0U6F0Y6F13201448\",\"rá \":\"0O2B0P2V0S210U0O0Y1Y131F140T\",\"rá-\":\"0P06\",ráb:\"0U030Y071308140B\",rác:\"0O050U1R0Y15140B\",ráce:\"0U1A\",\"ráce \":\"0U1L\",ráci:\"0U1G0Y0R1407\",\"ráci \":\"0U210Y0F\",rád:\"0P040U3J0Y2G140C\",\"rád \":\"0U3S0Y42140N\",ráda:\"0U0T\",\"ráda \":\"0U14\",rádi:\"0P050U0P1407\",\"rádi \":\"0U0R\",ráf:\"0O040P03\",rág:\"0P02140Q\",rái:\"0O030S101402\",rák:\"0U02130H1407\",rál:\"0P0G0U0U0Y0S140J\",ráli:\"0P0K0U0J0Y14140G\",rália:\"0P0P1402\",rám:\"0U050Y0E140H\",rán:\"0O0N0S1E0U170Y1813041411\",\"rán \":\"0O0T0S160U02140X\",ráno:\"0U0P0Y14\",\"ráno \":\"0U100Y1C\",ráp:\"0O0I0P0G0U03\",rápi:\"0O0S0P0K\",rápid:\"0O110P0P\",rár:\"0P061404\",rás:\"0O0W0P0L0U0K0Y111304140J\",\"rás \":\"0O1C0P0Q140E\",rásn:\"0U0S0Y1I\",rát:\"0P050S0P0U250Y1Z130I141K\",\"rát \":\"0U1Q0Y0R140Y\",ráth:\"0S0O\",ráti:\"0P050U0W0Y1V1402\",rátil:\"0U0S0Y0V\",ráto:\"141B\",ráv:\"0P080U230Y3W1403\",ráva:\"0U0B0Y221405\",\"ráva \":\"0U090Y10\",ráve:\"0P070U020Y0Z1402\",\"ráve \":\"0Y17\",rávn:\"0U0O0Y1F\",rávo:\"0U090Y0X\",\"rávo \":\"0U0C0Y12\",rávě:\"0U0Z\",\"rávě \":\"0U12\",ráz:\"0U0H0Y15140M\",rázd:\"0U0J0Y1K1402\",rázdn:\"0U0Q0Y1W\",ráð:\"131M\",ráðl:\"131N\",ráðla:\"132X\",râ:\"150P\",rân:\"0P06151J\",rã:\"0P09\",rão:\"0P12\",\"rão \":\"0P1A\",rä:\"0N0M102I110U1C1Z1N1T1P09\",\"rä \":\"110O1N0M\",räc:\"0N03100I\",räck:\"100O\",räd:\"101B\",rädd:\"100Z\",\"rädd \":\"100J\",räf:\"0N02100X\",räff:\"1017\",räffa:\"1015\",räg:\"0N06\",räi:\"1109\",räk:\"100C11021N0J\",räl:\"100J1104\",räld:\"100I\",räldr:\"100H\",räm:\"100A\",rän:\"0N07100U110E1N2D\",\"rän \":\"1005110H1N3A\",räs:\"0N031008110K\",rät:\"0N031022110G\",rätt:\"102O110C\",\"rätt \":\"1011\",rätta:\"1015\",räu:\"0N08\",räv:\"100C1102\",rää:\"110M1C6Q\",rääg:\"1C5O\",räägi:\"1CD3\",rääk:\"1C2U\",rääki:\"1C6U\",rå:\"0Z0E101V120X\",\"rå \":\"1002\",råb:\"0Z02\",råd:\"0Z0C100I120J\",\"råd \":\"0Z0A100C120C\",råde:\"0Z0B1007120E\",rådi:\"120L\",rådig:\"120L\",råg:\"1012\",råga:\"1014\",\"råga \":\"100L\",råk:\"1015120P\",\"råk \":\"100S1218\",råke:\"1005120A\",rål:\"1002\",rån:\"1025\",\"rån \":\"102Q\",rår:\"0Z05\",råt:\"100G1207\",råte:\"10051209\",ræ:\"0T0I0Z1Q1202131H\",\"ræ \":\"0T0G0Z07\",ræb:\"0Z08\",ræbt:\"0Z0F\",ræc:\"0T0B0Z02\",ræd:\"0Z09130K\",ræde:\"0Z0G\",ræe:\"0Z08\",ræer:\"0Z0A\",ræet:\"0Z0B\",ræf:\"0Z02\",ræg:\"1307\",ræk:\"0Z0D1305\",rækk:\"0Z0P\",række:\"0Z0V\",ræl:\"0Z0A\",ræld:\"0Z0O\",rældr:\"0Z0T\",ræm:\"0Z02\",ræn:\"0Z0E130M\",rænd:\"0Z0E130B\",ræns:\"0Z0A\",ræp:\"0T02\",rær:\"1203\",ræs:\"0T040Z09\",ræt:\"0T020Z09130F\",\"ræt \":\"0Z0H\",ræv:\"0Z03\",ræð:\"131B\",ræði:\"131B\",rç:\"0L030P051F1Q1N08\",rça:\"0P0D1F0D\",rçe:\"1F3F\",rçek:\"1F3J\",rçekt:\"1F3U\",rço:\"0L0E0P091F0Q\",rè:\"0L0U\",règ:\"0L08\",rèr:\"0L0H\",rère:\"0L0T\",rès:\"0L3C\",\"rès \":\"0L5A\",ré:\"0L1Y0O0U0P040S0Z0U0Q0Y0S1315141F\",\"ré \":\"0L1J0O280U140Y1K\",réa:\"0L0J0S0M\",réc:\"0L0W0P02\",réci:\"0L0W0P03\",réd:\"0L080O020P06\",rée:\"0L0W\",\"rée \":\"0L10\",réf:\"0L0S130I\",rég:\"0L0C140K\",réi:\"0O060S2B\",réid:\"0S0Q\",réidh:\"0S2T\",réir:\"0S0O\",\"réir \":\"0S2T\",réj:\"0L03\",rék:\"140B\",rém:\"0L050P050U051405\",rép:\"0L1C1402\",répa:\"0L0S\",répar:\"0L18\",répo:\"0L12\",répon:\"0L1T\",rés:\"0L1N0O08140W\",rése:\"0L131405\",résen:\"0L1E\",rész:\"141W\",rét:\"0L0A131T1406\",rétt:\"132V\",\"rétt \":\"1328\",rétti:\"131Z\",réu:\"0L0I\",rév:\"0L0N\",rê:\"0L0E0P0A\",rêm:\"0L030P02\",rên:\"0P06\",rês:\"0P11\",\"rês \":\"0P1A\",rêt:\"0L1L\",\"rêt \":\"0L0N\",rête:\"0L1C\",rêv:\"0L0B\",rì:\"0Q02\",\"rì \":\"0Q07\",rí:\"0O2E0P080S3J0Y3S1319140C\",\"rí \":\"0O030S2I0Y2B\",ría:\"0O6M0P0D\",\"ría \":\"0O7S\",rías:\"0O1K\",\"rías \":\"0O22\",ríd:\"0Y1A1303\",ríde:\"0Y1Z\",\"ríde \":\"0Y17\",ríe:\"0O03\",rík:\"0Y0C1315\",ríl:\"0Y11\",ríli:\"0Y1I\",ríliš:\"0Y1V\",rím:\"0Y1C\",\"rím \":\"0Y1W\",rín:\"0O020P021305\",río:\"0O0M0P030S66\",\"río \":\"0O0W\",ríob:\"0S2J\",ríobh:\"0S9P\",ríoc:\"0S1J\",ríoch:\"0S65\",ríom:\"0S36\",ríomh:\"0SC5\",rír:\"0S0M0Y05\",ríre:\"0S0Q\",\"ríre \":\"0S32\",rís:\"0O070P020S0P0Y0J130D\",\"rís \":\"0O080S0T\",rít:\"0O020P030Y0P1305140M\",ríte:\"0Y141409\",\"ríte \":\"0Y1E\",rív:\"0P0A\",ríš:\"0Y0V\",\"ríš \":\"0Y1F\",rð:\"137B\",\"rð \":\"1325\",rða:\"132R\",\"rða \":\"1323\",rði:\"1349\",\"rði \":\"132G\",rðin:\"132F\",rðu:\"137B\",\"rðu \":\"137C\",rðum:\"131F\",\"rðum \":\"132Y\",rður:\"1339\",\"rður \":\"1366\",rò:\"0Q0U\",\"rò \":\"0Q38\",ró:\"0O0N0P0A0S0R0Y04130V14211A29\",\"ró \":\"0O1C1303140A\",rób:\"140V1A13\",róbá:\"1424\",róbál:\"1425\",róc:\"1A0U\",róf:\"130G1402\",róg:\"0S0I\",rói:\"0P030S0M\",ról:\"141O1A07\",\"ról \":\"14301A02\",róla:\"1419\",rón:\"0O0C1402\",róp:\"0P0I0Y0713061408\",rópr:\"0P0L\",rópri:\"0P0R\",rów:\"1A13\",róx:\"0O090P0J\",róxi:\"0O0E0P0N\",róxim:\"0O0J0P0T\",róð:\"130J\",róż:\"1A0U\",rô:\"0L02\",rôl:\"0L09\",rôn:\"0P03\",rö:\"0N0910191102130G140T\",röd:\"100L13031402\",röi:\"1104\",röj:\"1004\",rök:\"100F1304140B\",röl:\"10031404\",röm:\"100F1407\",rön:\"1007130I1403\",rör:\"100H\",rös:\"100I1406\",röst:\"0N02100K\",röt:\"100Q1402\",rött:\"100R1404\",\"rött \":\"100M1403\",röv:\"10031407\",röß:\"0N08\",rø:\"0Z17121H\",\"rø \":\"1202\",rød:\"0Z0M120F\",\"rød \":\"0Z0Q120G\",røde:\"0Z0B1209\",rødt:\"0Z081206\",røg:\"0Z03\",røm:\"0Z0D120D\",\"røm \":\"0Z0A1209\",rømm:\"0Z0C120H\",rømme:\"0Z0F120H\",rømt:\"0Z0C1207\",røn:\"0Z081206\",rønn:\"0Z06120D\",rør:\"0Z041204\",røs:\"1205\",røst:\"0Z02120C\",røt:\"1208\",røtt:\"120G\",\"røtt \":\"120C\",røv:\"0Z0B120N\",røvd:\"120L\",røvde:\"120I\",røve:\"0Z0L120V\",\"røve \":\"0Z06120D\",røver:\"0Z08120D\",røy:\"1208\",røyk:\"120J\",røyke:\"120E\",rú:\"0S0G0Y0G130X140B\",\"rú \":\"0S0R0Y0K13091407\",rús:\"0P03130F\",rûl:\"0L04\",rü:\"0N1814131F2J1N1I1P0A\",\"rü \":\"1F0J\",rüb:\"0N0A\",rüc:\"0N0R1F04\",rück:\"0N1Q\",rüh:\"0N0J\",rül:\"141U1F0J\",rült:\"141S1F07\",\"rült \":\"141F\",rüm:\"1F0D\",rün:\"0N0514051F2Y1N1K1P0C\",rünü:\"1F29\",rünüy:\"1F2O\",rüný:\"1N1F\",rünýä:\"1N1X\",rüp:\"1N0D\",rür:\"1F0A\",rüy:\"1F0Z\",rüň:\"1N0F\",rüş:\"1F0J\",rý:\"0U100Y1D13041N2H\",\"rý \":\"0U1E0Y1X\",rýa:\"1N1X\",rýar:\"1N1Z\",\"rýar \":\"1N1U\",rýc:\"0U060Y0Y\",rých:\"0U050Y1M\",rýchl:\"0Y1R\",rýä:\"1N34\",rýän:\"1N1A\",rýär:\"1N33\",\"rýär \":\"1N17\",rýäri:\"1N1X\",rā:\"0T0E1D3G\",\"rā \":\"0T031D1T\",rād:\"1D2H\",rādā:\"1D1Y\",rādāj:\"1D21\",rāk:\"1D31\",\"rāk \":\"1D38\",rāl:\"0T021D10\",rāli:\"0T041D11\",rām:\"1D1V\",rāma:\"1D21\",rāmat:\"1D58\",rān:\"1D0G\",rār:\"0T03\",rās:\"0T051D0K\",rāt:\"0T0A1D2K\",rātī:\"0T031D0Z\",rātīg:\"1D1R\",rāv:\"0T04\",ră:\"154A\",\"ră \":\"1582\",răb:\"150H\",răc:\"150K\",răi:\"151C\",răm:\"1518\",răs:\"151J\",răsp:\"151J\",răspu:\"151R\",răt:\"150N\",rău:\"150W\",răz:\"150N\",rą:\"1A0J1B0N\",\"rą \":\"1A0I1B1G\",rąs:\"1B08\",rć:\"1A02\",rĉ:\"1O08\",rĉa:\"1O06\",rĉi:\"1O05\",rč:\"0U090V060Y0D1B05\",rči:\"0U0H0V060Y0M1B0E\",rčit:\"0U0P0Y0R\",rčitě:\"0U0U\",rē:\"0T0A1D17\",\"rē \":\"0T02\",rēd:\"0T08\",rēg:\"0T02\",rēj:\"1D1H\",rēja:\"1D11\",\"rēja \":\"1D2O\",rēs:\"0T081D0G\",rēt:\"1D2O\",rētu:\"1D27\",\"rētu \":\"1D5L\",rė:\"1B2S\",\"rė \":\"1B26\",rėj:\"1B2F\",rėja:\"1B1K\",rėjau:\"1B2K\",rėjo:\"1B27\",\"rėjo \":\"1B3Y\",rėk:\"1B0I\",rėm:\"1B06\",rės:\"1B0L\",rėt:\"1B16\",rėč:\"1B0P\",rėči:\"1B14\",rėčia:\"1B2B\",rę:\"1A0T1B08\",\"rę \":\"1A0O1B08\",ręs:\"1B0D\",rĝ:\"1O06\",rĝa:\"1O04\",rī:\"0T0F1D3Y\",\"rī \":\"0T0B1D29\",rīa:\"0T0C\",rīb:\"0T031D0R\",rīd:\"1D18\",rīg:\"1D20\",\"rīgi \":\"1D1R\",rīgs:\"1D0U\",\"rīgs \":\"1D25\",rīj:\"1D1C\",\"rīja \":\"1D1W\",rīk:\"1D0E\",rīn:\"1D0Q\",rīp:\"0T02\",rīs:\"1D0X\",\"rīs \":\"1D0W\",rīt:\"1D55\",\"rīt \":\"1D4V\",rītu:\"1D11\",\"rītu \":\"1D2O\",rīv:\"1D0U\",rīz:\"1D1A\",\"rīz \":\"1D1C\",rį:\"1B0U\",\"rį \":\"1B17\",rįš:\"1B0B\",rįž:\"1B0R\",rı:\"1F7Z\",\"rı \":\"1F5U\",rıd:\"1F0E\",rık:\"1F0B\",rıl:\"1F1O\",rım:\"1F48\",\"rım \":\"1F3F\",rımı:\"1F13\",rın:\"1F72\",\"rın \":\"1F3R\",rını:\"1F2Y\",\"rını \":\"1F2H\",rıs:\"1F0P\",rıy:\"1F14\",rış:\"1F0O\",rł:\"1A08\",rō:\"0T06\",\"rō \":\"0T04\",rōr:\"0T02\",rōs:\"0T06\",rő:\"1413\",ről:\"1417\",\"ről \":\"142Z\",rős:\"140G\",rŝ:\"1O08\",rŝa:\"1O09\",rŝi:\"1O03\",rş:\"1F0J1N0B\",rşy:\"1N0C\",rşı:\"1F19\",rš:\"0U0H0V0E0Y0E1B0U1D0W\",\"rš \":\"1B051D1I\",rša:\"0V030Y0F1B0F1D0E\",rše:\"0U0C0V07\",rši:\"0V0M0Y071B081D0T\",\"rši \":\"0V031D0Z\",ršk:\"0V031B0E\",ršo:\"1B081D0N\",ršt:\"0U021B0Q\",rší:\"0U0I0Y0D\",\"rší \":\"0U0S0Y0K\",rţ:\"1502\",rū:\"1B0L1D0J\",rūk:\"1B0V\",rūp:\"1B0F1D0Q\",rūt:\"1D0O\",\"rūti \":\"1D1R\",rů:\"0U0D\",rű:\"140G\",\"rű \":\"140G\",rų:\"1B0G\",\"rų \":\"1B0P\",rųj:\"1B0J\",rųjų:\"1B0V\",\"rųjų \":\"1B1S\",rż:\"1A02\",rž:\"0U0B0V0F0Y071B04\",rǧ:\"0307\",rș:\"1504\",rț:\"150F\",rți:\"151E\",rɛ:\"0303\",rɣ:\"0303\",rḍ:\"030B\",rḥ:\"0303\",rṭ:\"0303\",rẓ:\"0307\",\"s' \":\"0M03\",\"s'a\":\"0L0V0Q031Q0V\",\"s'e\":\"0L1Z1F021Q0A\",\"s'en\":\"0L0O\",\"s'es\":\"0L2G\",\"s'est\":\"0L43\",\"s'h\":\"0Q07\",\"s'i\":\"0L17\",\"s'il\":\"0L1S\",\"s'il \":\"0L2V\",\"s'o\":\"0L04\",\"s'y\":\"0L04\",\"s'è\":\"0Q09\",\"s'é\":\"0L0B\",\"s) \":\"0P020T02\",\"s-a\":\"031H1550\",\"s-a \":\"031F156K\",\"s-au \":\"151M\",\"s-d\":\"031X\",\"s-j\":\"0L0Q\",\"s-je\":\"0L18\",\"s-je \":\"0L23\",\"s-l\":\"0L0A1P20\",\"s-li\":\"1P2J\",\"s-li \":\"1P2Y\",\"s-m\":\"0L0I\",\"s-n\":\"03110L0F\",\"s-no\":\"0L0Q\",\"s-nou\":\"0L18\",\"s-s\":\"0307\",\"s-t\":\"030W0L3G\",\"s-tu\":\"0L5L\",\"s-tu \":\"0L97\",\"s-u\":\"0L06\",\"s-v\":\"0L0P\",\"s-vo\":\"0L16\",\"s-vou\":\"0L20\",\"sa'\":\"0D021F041Q0T\",\"sa-\":\"030I0B041103\",\"saa \":\"0D03113T1C20\",saab:\"1C12\",\"saab \":\"1C1O\",saad:\"110P1C1G\",saada:\"111O1C29\",saak:\"010Q110F1C0S\",\"saak \":\"010L\",saaks:\"11031C1Z\",saam:\"010Z110D1C0L\",\"saam \":\"010V\",saan:\"0B0K0D0Z112S1C1J\",\"saan \":\"0B0W0D1N114K1C26\",saanu:\"11111C1O\",saat:\"0B1N111R1C0N1F1S\",\"saat \":\"0B35110W1F1I\",saba:\"0B060D060O0E0Q081F131O03\",sabah:\"1F16\",sabb:\"0Q02141D\",sabe:\"03050M040O350P3N0T03\",\"sabe \":\"0O1O0P2H\",sabem:\"0O080P0P\",saber:\"03080O100P16\",sabes:\"0O0Z0P08\",sabi:\"0D1P0L030O0C0P160Q07150F\",\"sabi \":\"0D1X\",sabia:\"0P1D\",sabih:\"0D14\",sabí:\"0O0S\",sabía:\"0O11\",sacc:\"0Q090T0V\",sach:\"0L080N0O0S0Q1A06\",\"sad \":\"0M040V0F0Z0D100614021A021Q08\",\"sada \":\"0D030O0N0P0T0V4A11031A021B421F04\",sade:\"0L020P020R030Z02101J110D1F31\",\"sade \":\"0L020R030Z02101B110G\",sadec:\"1F43\",sado:\"0D060O230P1S11021O04\",\"sado \":\"0D080O2G0P1W1O05\",sady:\"1A031N18\",sae:\"0T0W\",\"sae \":\"0T0P\",saep:\"0T0U\",saepe:\"0T0U\",\"sag \":\"0D030N090Z041N18\",saga:\"04290D03130B1N1F\",sagar:\"0435\",sagat:\"1N1I\",sagd:\"0Z1N\",sagde:\"0Z20\",sage:\"0L130M070N1O0P0E0Q030Z0K1002\",\"sage \":\"0L1C0M070N0F0Z02\",sagen:\"0N2E0P030Z07\",sagg:\"03020Q0O\",sago:\"0D051P7V\",sagob:\"1P19\",sagof:\"1P11\",sagol:\"1P2X\",sagom:\"1P42\",sagt:\"0N2W0Z0D100B120C130M\",\"sagt \":\"0N2M0Z0E100B120C131B\",sagte:\"0N2A\",sagð:\"131U\",sagði:\"133T\",sagö:\"1P1D\",sagön:\"1P1L\",saha:\"045O0B0V0D0711031F02\",\"saha \":\"048K0B0U\",sahi:\"0D081F18\",sahip:\"1F15\",\"sai \":\"0B0H0L020P050Q0P110Q14051B181C0N\",said:\"0M511403\",\"said \":\"0M6T1402\",saik:\"0B0L1102\",sair:\"0L0L0P0N1114\",\"sair \":\"0P0R\",saira:\"112Q\",sais:\"0L3F110M1B03\",\"sais \":\"0D020L4X0P021B06\",sait:\"0L22110H1405\",\"sait \":\"0L3E110H1404\",saj:\"0B110O09140Y15071C0G1F091O071Q05\",saja:\"0B1Z1C0K\",\"saja \":\"0B3V\",saját:\"1413\",\"sak \":\"0B0L0D070V03100A14961F06\",sakah:\"0B1R\",sake:\"100W120O1B0I\",saker:\"100O120B\",sakia:\"1B1T\",sakin:\"11071B1H1F0B\",sakit:\"03020B2I0D0Q\",sakla:\"1F0M1N12\",sakn:\"100N13051402\",sakna:\"100N130B\",sako:\"110214021B1T1O07\",\"sako \":\"1B1R1O06\",saks:\"03040Z02110Z1C15\",saksa:\"111W1C1V\",saky:\"0D0F1B4E\",sakya:\"0D0S\",sakyk:\"1B29\",sakym:\"1B1E\",sakyt:\"1B4F\",sakė:\"1B2S\",\"sakė \":\"1B5E\",salah:\"0B6H\",salam:\"0B070D0S11091N0N\",salit:\"0D1E0Q03\",\"salt \":\"030A0M030Z0614021C1H\",salv:\"0O0D0P0A0Q0E0T0T150B\",salá:\"0P030U021415\",salád:\"1412\",salī:\"1D1A\",salīd:\"1D3C\",\"sama \":\"0B4P0D0Y0U0I0V0O0Y0S110E131V1A0C1C1A1O0F\",\"same \":\"0D040M0T0N050O030Q0C1A031B1M1O0G\",samen:\"0D060N040O090P0N0Q090R0Y0Z041205\",saml:\"0V040Z091007120A132A1Q0E\",samle:\"0Z071205134O\",samm:\"0L060N0V0Z1G1016110M121W130D\",samma:\"030310161105\",samme:\"0L0A0N1C0Z1S110V121W\",samo:\"0O070P0N0U0F0V2X0Y0R11031A2M1O04\",\"samo \":\"0V6H1A0I1O02\",samoc:\"1A2M\",samos:\"0O090P0T\",samp:\"0B1P0D061102\",sampa:\"0B340D02\",samt:\"03020N040Z04100K1207130E1O041Q09\",\"sana \":\"0B2D0D0J0O02110O1A021F3Z1O0F\",sandh:\"0Z0N\",sando:\"0O0O0P0W0Q0J\",sandt:\"0N020Z0M\",sane:\"03070T0311021A021P1E\",sanel:\"11021P1N\",\"sang \":\"0B0M0D4N0L0B0M020N030Z0B1209\",sanga:\"041V0B7G0D021O03\",\"sani \":\"112M\",sanl:\"1F1J\",sanla:\"1F21\",sann:\"0B050Q080T02100H110D120V1316\",sannh:\"120G\",sano:\"0O030Q0A11681O0C\",sanoi:\"1168\",sans:\"0D040L1V100211031F05\",\"sans \":\"0L34\",\"sant \":\"030I0L1S0M020N070R0C0Z0A100K121015091B08\",sany:\"0B0R140F1N0Z\",\"sany \":\"1A021N19\",sanya:\"0B1I\",sanı:\"1F28\",sanır:\"1F21\",sao:\"0L020S2I0V1G1102\",\"sao \":\"0V1J\",saoi:\"0S1L\",saoir:\"0S65\",saor:\"0S0T\",\"sap \":\"0D0I0R081F02\",sapa:\"0D0K0O070P0G1102140E1N0Q\",sapan:\"0D0I\",sapat:\"0D0F0P0E140E\",sape:\"0Q25\",sapev:\"0Q11\",sapi:\"0B040D060L030T0Z1P0P\",sapn:\"14021B0A1D1E\",sapni:\"1D3C\",sapo:\"0O040P060Q0X0T0214051F03\",sapor:\"0O040P040Q0W1F04\",sapr:\"0Q031D2J\",sapro:\"1D3G\",saprā:\"1D25\",sapņ:\"1D2I\",sapņi:\"1D2F\",sapņo:\"1D37\",saq:\"0O021Q20\",sarap:\"0B0H0D0I\",sare:\"03040P040Q2K0T0310051104150D1F06\",\"sare \":\"0Q160T0210051509\",sareb:\"0Q0T\",sari:\"0D0H0O0D0P040Q0A0T0N1104130K1B06\",saril:\"0D0S\",sarà:\"0Q16\",\"sarà \":\"0Q17\",sasa:\"0D16\",sasab:\"0D0F\",sasak:\"0D0W\",\"sate \":\"0Q0S1B14\",satik:\"1D1W\",satis:\"0L0F0M050O090P080T0T\",\"sato \":\"0Q1G11031O03\",satt:\"0N030Q0B0Z0K1010110T121W130M1F04\",\"satt \":\"0N03100H121G131C\",satte:\"0Z0O100H120H\",satu:\"0B2G0M020T0D110C\",\"satu \":\"0B3H1103\",saty:\"1N1Q\",satyn:\"1N27\",satı:\"1F1A\",satın:\"1F19\",\"sau \":\"0B050T08151X1B0H\",sauc:\"0L021D0W\",saul:\"1B1W1D2Y\",saule:\"1D4L\",saulė:\"1B1E\",sava:\"0L0R0P0J0Q0B110514081B1B1C0G1D1G1F0H\",savai:\"0L181B29\",savas:\"1D1R\",savi:\"0L020M020T0A1B0G1D0U1O04\",savie:\"0L031D21\",savn:\"0Z09120A\",savo:\"0L100Q0O1B8N\",\"savo \":\"0Q0O1BGC\",savoi:\"0L1D\",savu:\"11041D3M1F05\",\"savu \":\"1D83\",savy:\"042R1B03\",savye:\"044X\",savā:\"1D1L\",\"savā \":\"1D2T\",saw:\"033K0B0E0D070M0G1Q0I\",\"saw \":\"03020M0T1Q0C\",sawa:\"03270B0Q0D0B\",\"sawa \":\"0D0J\",sawal:\"034N\",sawat:\"0B1E\",sax:\"0T05\",\"say \":\"03030D040M1D\",saya:\"0BGV0D0J0L051F0K\",\"saya \":\"0BQ10D0J0L041F04\",says:\"0D020M0U\",\"says \":\"0M15\",saz:\"0304040T0Q040U020V061N0H\",saza:\"042D\",saç:\"0P031F0H1N0H\",saí:\"0P080S0R\",sað:\"130H\",sañ:\"1N16\",saña:\"1N1D\",\"saña \":\"1N1U\",saú:\"0P08\",saý:\"1N0K\",saĝ:\"1O0C\",sağ:\"1F0U\",saň:\"1N1K\",saňa:\"1N1W\",\"saňa \":\"1N2K\",sať:\"0Y16\",\"sať \":\"0Y1S\",sbag:\"0Q0L\",sban:\"0M060R0210021417\",\"sban \":\"1419\",sbi:\"0302\",sbr:\"0N020Q040Z0210021B02\",sbu:\"03051P0D\",sby:\"0Z04\",\"sc \":\"0S19155N\",\"sca \":\"0O0A0P070Q0K0S0Q0T031A07\",scan:\"0L020O0M0P080Q050T061504\",scar:\"0L020M0D0O0K0P0E0Q0O0T0D\",\"sce \":\"0P030Q1Q0S1E0T0G0U021A0F\",scen:\"0L0F0M050O0D0P0C0Q0Q0T1R0Z0615051A031O03\",scend:\"0L0H0O040P060Q070T1D\",scer:\"0P080Q0M0T18\",scere:\"0Q0B0T14\",\"sch \":\"0N4D0R1H0Z021002\",scha:\"0N3A0R240Z02100A1Q06\",schaf:\"0N2S0R02\",schap:\"0R16\",\"sche \":\"0N3F0Q030R1C\",schei:\"0N310R0J\",schen:\"0N7C0R091003\",schi:\"0N2R0Q0T0R38152H\",schie:\"0N1U0Q030R1M\",schij:\"0R11\",schil:\"0N060R19\",schim:\"0N05151M\",schl:\"0N50\",schla:\"0N31\",schli:\"0N1M\",schm:\"0N12\",schn:\"0N1K\",schne:\"0N1Y\",scho:\"0M120N2N0R350T190U0T0Y0X1A091Q0O\",schol:\"0R040T1C\",schon:\"0N3Q0R04\",schoo:\"0M1G0R2H\",schr:\"0N2G0R2C\",schre:\"0N220R10\",schri:\"0N1O0R22\",scht:\"0N10\",schu:\"0N2F0R190Y081Q0Q\",schul:\"0N2R0R13\",schwe:\"0N2W0Z051002\",schwi:\"0N1R\",schä:\"0N0Z\",schö:\"0N1E\",schön:\"0N26\",\"sci \":\"0P040Q0W0T0B\",scia:\"0Q250T0B1O2E\",scias:\"0T021O4J\",sciat:\"0Q0W0T03\",scie:\"0L0K0M080O080P020Q090T1D1O0D\",scieb:\"0T0X\",scii:\"1O15\",scio:\"0M020Q0A0T281O09\",\"scio \":\"0Q030T2D1O09\",scip:\"0T171O0E\",scipu:\"0T15\",scir:\"0Q0I0T0O\",scis:\"0M020T1K\",scisn:\"0T0S\",scit:\"0Q0R0T271O03\",\"scit \":\"0T1D\",sciu:\"0Q0R0T0B1O07\",scl:\"0L020O031502\",scoi:\"0P020Q020S18\",scoil:\"0S4Z\",scol:\"0L020O030P1G0Q0Y\",scola:\"0L030O020P1A0Q04\",scolt:\"0Q0S\",scon:\"0O0J0P0L0Q0X0T06\",scor:\"0L020M020P040Q1M0T071507\",scors:\"0Q11\",scr:\"0L060M090O1C0P1X0Q1D0S230T241527\",scre:\"0M070P1H0Q04\",screv:\"0P1U\",scri:\"0L070M060O1Z0P0Q0Q220T3P153H\",scrib:\"0M040O1R0T1V\",scrip:\"0L040M030O030T1Z\",scris:\"0Q04152F\",scrit:\"0L040O0Q0P0S0Q0Q\",scriv:\"0P020Q18\",scrí:\"0S2H\",scrío:\"0S9A\",scu:\"0L0E0M050O270P1G0Q1U0T1G153K1A06\",scuc:\"0O0X\",scuch:\"0O17\",scue:\"0M020O0W\",scuel:\"0O14\",scul:\"0L050O0E0P0L0T1H150Z\",scuo:\"0Q1X\",scuol:\"0Q1Y\",scus:\"0L030M050O030P030Q0Q0R040T04\",scut:\"0L0B0O080P0M0Q05151X\",\"scut \":\"151U\",scy:\"1A0X\",\"scy \":\"1A18\",scé:\"0S0P\",scéa:\"0S0V\",scéal:\"0S3J\",scì:\"0Q02\",scă:\"1528\",\"scă \":\"152R\",scī:\"0T09\",\"sd \":\"0R02140S\",\"sda \":\"0D09\",sdag:\"0R050Z0L100A120F\",\"sdag \":\"0R060Z0J10081207\",sde:\"03060O0P0P0E0R020T031B0F1O02\",\"sde \":\"0O130P0H0R071O02\",sdeši:\"1B1H\",sdi:\"1B0E1D0M1Q08\",sdie:\"0R051B0D1D0S\",sdien:\"0R041B0R1D21\",sdo:\"1O03\",sdr:\"0N02\",\"se-\":\"0L0D0P04\",\"sea \":\"0M050O0U0Q02150C\",seac:\"0S24\",seach:\"0S7J\",seal:\"1C1J\",\"seal \":\"1C37\",sean:\"0O070S13\",seap:\"0S0O\",seapá:\"0S2T\",sebag:\"0B1I\",sebb:\"0307141I\",\"sebb \":\"1413\",sebe:\"0B2K0U0Q0V0E0Y0H140C1F0A\",\"sebe \":\"0U0R0V100Y0I\",sebel:\"0B2P\",seben:\"0B1P\",sebl:\"012E1O02\",sebli:\"012I\",sebu:\"0B38\",sebua:\"0B4L\",sebut:\"0B1P\",sebä:\"1N13\",seca:\"0B0O0O040P040T050V06\",secu:\"0M040O080P020T1J1509\",secun:\"0O030T0S1507\",\"sed \":\"030P0M3U0O030T3A140A1C581O2P\",seda:\"0B3N0O020U040V09100V1C7R1O07\",\"seda \":\"0O020U021CH2\",sedan:\"0B70100O1O03\",\"sede \":\"0P050T040Z0W1F04\",sedi:\"0B130Q070T080V0C1F0P1O02\",sedik:\"0B1D\",\"see \":\"010J0M1L0N050O0211191CET\",seek:\"0B0L0M021102\",seem:\"0M14\",\"seem \":\"0M0K\",seems:\"0M0J\",seen:\"0M0I1003114D\",\"seen \":\"0M0O119B\",seer:\"01180R0Q\",\"seer \":\"01120R06\",sef:\"034U13051F0A\",sefk:\"033R\",\"sefk \":\"037V\",\"seg \":\"035S124S\",sega:\"0B0D1C0V\",\"sega \":\"1C1H\",sege:\"0B0K0N020T021002\",segi:\"0B04130X1C0R\",\"segi \":\"130B1C1V\",segj:\"131R\",segja:\"133N\",segn:\"030F0Q331O03\",segna:\"030W0Q2V1O02\",segu:\"0O2J0P380Q0M\",segui:\"0O150P1Y0Q0E\",segun:\"0O0H0P0X\",segur:\"0O1M0P0O\",segz:\"03A5\",segza:\"03JW\",segí:\"1438\",segít:\"143F\",seh:\"03040B0Q0N2A0U02110214041Q05\",seha:\"0B1C\",sehar:\"0B1N\",sehe:\"0N2O\",sehen:\"0N3Y1102\",sehr:\"0N2T\",\"sehr \":\"0N4N\",\"sei \":\"0N0V0P2T0Q3X11071404150C1B03\",seid:\"0N0E110314021C0K\",sein:\"0L030N7P111D131C14021B04\",\"sein \":\"0L030N5X112L130J\",seine:\"0N741103\",seis:\"0O0D0P0C110N1C0Y\",seit:\"0N1511131403\",sej:\"0B0K0O090P160U050Z03110614031O02\",seja:\"0B0W0P161107\",\"seja \":\"0P14110H\",\"sek \":\"0U06141L1A021F0H\",seka:\"0B3M0Z0311081B0I1O04\",sekal:\"0B3L\",sekar:\"0B3H\",seke:\"011L0B06140F\",seker:\"011O\",seko:\"0B191107\",sekol:\"0B2E\",\"seks \":\"0R020Z0F120D1B071C4P1F02\",seksi:\"113E\",sela:\"0B3X0D020U041F05\",selal:\"0B2S\",selam:\"0B3W1F06\",selb:\"03020N1G\",selbs:\"0N1V\",\"sele \":\"150H1C6R1F02\",self:\"012D03020M23\",\"self \":\"011E0M2Q\",selg:\"12091C0Z\",selge:\"12091C1H\",selig:\"0N030Z08120F\",sell:\"030C0L080M070N080O030T0H112X1C7G1F02\",sella:\"03030T0F113W\",selle:\"030D0L0D0N0211221CFI\",selli:\"03020M02110I1C1O\",sels:\"03070Z0F1209\",selt:\"03040N0F110P14091C37\",\"selt \":\"03080N0414061C7P\",selv:\"0M0H0P030Z201112122A\",\"selv \":\"0Z1X121P\",selve:\"0M0N\",selī:\"1D1A\",selīb:\"1D2K\",sema:\"0B150L0S0O110P0X11141O0P\",semai:\"0L1D\",seman:\"0B0M0O1D0P15110A\",semb:\"0B0J0L1X0O020P020Q2M14021F02\",sembl:\"0L390M02\",sembr:\"0O020Q2M\",semen:\"0B0F0L170M040P020T0B150K\",\"semi \":\"0B071N52\",semm:\"030P111B144J\",semmi:\"030F111B144R\",semp:\"0B0G0O020P1U0Q2T0T1Q0Z06110D12091F02\",sempe:\"0P020T1R0Z041206\",sempr:\"0P2A0Q28\",semu:\"0B320T031103\",semua:\"0B5U\",senan:\"0B21\",sende:\"0N0F0Z0G120F14051F0I1O06\",sendi:\"0B3B130J1O0J\",sendt:\"0Z0G120B\",\"sene \":\"0N040Q050Z04120U1F06\",sener:\"0N020Z09120F\",seng:\"030304190B060D040M020Z0T120L14051Q0R\",\"seng \":\"0D070Z0K12051Q0M\",senge:\"0M020Z0F120A1402\",senh:\"0N040P2I1O03\",senho:\"0P301O02\",\"seni \":\"0B0B113214021B041C131F2U1N2A\",senin:\"0B0H1F4W1O02\",seniñ:\"1N3D\",seniň:\"1N5D\",senk:\"0N031104142H1A0D1O08\",senki:\"1105142M1A05\",\"sens \":\"0L170N040T03150D1A03\",\"sent \":\"03620L2W0M0K0T0E0Z0L100G120N\",senta:\"03020L0E0O110P150Q0A100211061O13\",senz:\"03090N020Q17\",senza:\"0Q16\",\"seo \":\"0O0F0Q020SCR0T040V021O02\",seom:\"0S0M\",seomr:\"0S2K\",seor:\"0B3E1506\",seora:\"0B6L\",sepa:\"0B100M070O0D0P050Q030T0315031O03\",sepe:\"0B3B0T09\",seper:\"0B55\",septe:\"0L020R020T0T0Z02120615081O02\",sepu:\"0B0L0T09\",seq:\"030J0P070T0I\",sequ:\"0M020O020P090T0Y\",\"sera \":\"0L1F0O030Q140T031004\",serai:\"0L22\",\"sere \":\"0N130Q480T060Z0A120C1F02\",sered:\"0Z061N19\",seret:\"0T030Z0B1N16\",serin:\"0B1P1F04\",sern:\"0N050Z0D10041409\",serne:\"0Z0F\",sero:\"0L0B0O030Q0U0T0A11021204\",\"sero \":\"0O030Q0V0T09\",\"sert \":\"030F0L0E0M030N03120L1F06\",será:\"0O0Q0P14\",\"será \":\"0O0T0P1E\",sese:\"0B0N0O020T0315081B0L\",sessa:\"1002112R\",\"sest \":\"1C4L\",sesta:\"03031145\",sesti:\"115A\",sestr:\"0U160V100Y17\",sestä:\"112C\",sesu:\"0B1H1B0D\",sesua:\"0B2Q\",seta:\"0B040O030P020Q0211041C0N\",sete:\"0B140O020P0C0Q0311021205140C150A1C0E\",setel:\"0B1U1104\",seti:\"0B1J0U030V0G1305\",setia:\"0B2P\",setn:\"120R130R\",setni:\"120R131M\",\"sett \":\"030A100R121H1410\",sette:\"03070L080Q07110D121C\",setti:\"0Q161107130Z1F0W\",setz:\"0N1H\",\"seu \":\"0P4F\",seul:\"0L2G\",\"seul \":\"0L1R\",seule:\"0L28\",seun:\"0118\",\"seun \":\"010Y\",seur:\"0L0Q1119\",seura:\"112S\",seus:\"0L020P1M0T03\",\"seus \":\"0P210T03\",sever:\"0M0C0O030P020Q020T090U040V0B0Y0A1F1I1O06\",sevi:\"1D171F1L\",\"sevi \":\"1D2F\",seviy:\"1F1M\",sevm:\"1F0X\",sevo:\"1P2K\",sevob:\"1P1D\",sevol:\"1P0Z\",sew:\"03120B03\",sey:\"1F141Q04\",sez:\"0L1G0U0615061F03\",\"sez \":\"0L1N\",\"sez-\":\"0L0U\",seä:\"1108\",seç:\"1F0O\",señ:\"0O0U1N0P\",\"señ \":\"1N0Y\",seña:\"0O0O\",seý:\"1N0C\",seć:\"0V10\",seća:\"0V15\",seĝ:\"1O04\",seň:\"0U040Y0A1N0B\",seš:\"0U031D0G\",seș:\"150H\",seɣ:\"035V\",\"seɣ \":\"035O\",sfi:\"03050Q03\",sfr:\"0O0A0P050Q021002\",sfu:\"03030M020O05\",sfâ:\"150H\",sfö:\"1005\",sga:\"03080O020P0213031N0A\",sge:\"03020N0F0R03\",sgi:\"0308\",sgo:\"0O030P03\",sgr:\"0O031304\",sgu:\"030A0Q03\",\"sha \":\"04GG\",\"sha'\":\"1Q3L\",shaj:\"041R\",shaje:\"0435\",shaka:\"04S2\",shan:\"041O0R021F05\",shas:\"043D\",shash:\"045Y\",shat:\"04261403\",shats:\"043O\",\"she \":\"04650M6Z\",\"she'\":\"0M18\",\"she's\":\"0M17\",shed:\"0M0W\",\"shed \":\"0M17\",shik:\"047I\",shika:\"04AL\",shimi:\"047F1102\",ship:\"0M0E\",shir:\"043Y0M060R050Z06\",shira:\"0464\",shit:\"041Z0M03\",shits:\"043I\",\"sho \":\"0422\",shob:\"04MQ\",shobo:\"04SG\",shou:\"0M2T\",shoul:\"0M3S\",show:\"0M0O0P02\",shur:\"0468\",shure:\"046S\",shuri:\"042S\",shw:\"040J\",shy:\"0M02\",shå:\"1003\",\"si-\":\"030A1103\",siaa:\"110X1C0Y\",siaal:\"11081C29\",siac:\"0Y0Z\",siad:\"0O1B0P030S2Y1A0M\",\"siad \":\"0SBD1A02\",siado:\"0O1M0P03\",siai:\"1B1Q\",\"siai \":\"1B32\",siaj:\"1A0T1O19\",siajn:\"1O1D\",sial:\"0B0B1106120D\",siam:\"0Q360T0E11051B03\",siamo:\"0Q37\",sian:\"0B0S0M050Q0D110N1B041O1Y\",\"sian \":\"0M06110O1O3V\",siang:\"0B1B\",siap:\"0B2G\",siapa:\"0B43\",sias:\"0L020O030P020Q0A0R02110Q1B14\",\"sias \":\"1B27\",siau:\"1B0S\",sibh:\"0S1G\",\"sibh \":\"0S5P\",sibi:\"0D020L040M040O040P040Q0T0T0N15161Q1T\",sibil:\"0D040L070M050O060P050Q0T0T05151I\",sibl:\"0D030L0Z0M0J0O0T\",sible:\"0D060L1N0M0M0O12\",sibu:\"0B0I0T071B02\",\"sic \":\"0M0B0T0R\",sica:\"0M070O0R0P0U0Q0T0T0I150C\",\"sica \":\"0M040O0V0P0W0Q0N0T0B150G\",sich:\"0N8M0T031B021Q0B\",\"sich \":\"0NB8\",sicht:\"0N1R\",sicu:\"0Q1Q0T0P\",sicur:\"0Q1R\",\"sid \":\"030214021C7E1Q06\",sida:\"0D020O0I0P0D100F1B0K1C0G1O06\",sidd:\"0Z0K\",sidde:\"0Z0O\",\"side \":\"0L020M110Z0F1209\",sido:\"0O0M0P0E10021B041O03\",\"sido \":\"0O0T0P0H1O04\",sids:\"0Z13\",sidst:\"0Z1C\",sieh:\"0N0V\",siek:\"010Y0R031B0M\",\"siek \":\"010P\",siel:\"111B120D1A041B09\",siell:\"112Q1205\",siem:\"0O270Q0K11031A051B0C1D0M\",siemp:\"0O2V\",sien:\"013O0L050O190Z02110G12051A091B0R\",\"sien \":\"013L0L030N020Z02110S\",sient:\"0O1D\",sier:\"0L070M030N120O0K0Q050R050T04121E1A031B031O02\",\"sier \":\"0L090M04121D\",sies:\"010K0L030O020R0214051B041D1S\",\"sies \":\"010L0R031B051D4L\",siet:\"0L030O0B0Q2H1107140B1D0X\",\"siet \":\"1D25\",siete:\"0O0F0Q2I1402\",siev:\"11021D1H\",sievi:\"1D2Y\",sif:\"03090B040L040P021F02\",\"sig \":\"011A0N040Z3I104N13161403\",sige:\"0N050Q020Z201B04\",\"sige \":\"0D020N030Z10\",siger:\"0Z1A1B03\",sigo:\"0O050P0M1F02\",\"sigo \":\"0O060P0S\",sigt:\"010H0Z0K1003\",sigti:\"010G0Z06\",sigu:\"0D0A0O0Y0V1E152C1B02\",sigur:\"0D0I0V3I152Z\",sih:\"03050B1V11031F02\",\"sih \":\"0B36\",sii:\"0Q020T05114W1B0B1C4O1O02\",siia:\"1C0X\",\"siia \":\"1C26\",siih:\"1112\",siihe:\"112M\",siin:\"113D1C36\",\"siin \":\"114N1C7G\",siinä:\"112M\",siis:\"110E1C19\",\"siis \":\"110G1C311O02\",siit:\"0T08112T\",siitä:\"116N\",sij:\"0V0A110G14031B0N\",\"sik \":\"0B0M0D040N0A0Z0B100C141D1F041P1J\",sika:\"0B0J0D0A110K14051B0W1C1C1F041O02\",sikal:\"11031B1I\",sike:\"03050N020Z02100314171B0G\",siker:\"0N030Z0310021419\",sikk:\"0Z13110K121C1402\",\"sikk \":\"120D\",sikke:\"0Z1C120X\",sikt:\"100V120N\",sikte:\"100E1206\",\"sil \":\"0B0S0D020L050O060P0E0U0O0Y0I1F02\",sila:\"0B0J0D1J0U050V050Y0911031B0B1F0C1O02\",\"sila \":\"0D240U060V0E0Y0B\",silan:\"0D0O1B06\",silik:\"1B1J\",sill:\"0L020O0F112Z140G\",sillä:\"112C\",silm:\"11171C16\",silma:\"1C2N\",silv:\"0D080T0H1002\",\"sima \":\"0O040P040Q0N0T0S0V071O08\",sime:\"0Q020T0A110B1B2K1C291O08\",\"sime \":\"0Q020T081B3F1C3Y1O0E\",simf:\"041K\",simfi:\"042S\",simil:\"0L030M030O040Q050T0W1O0M\",simm:\"100F111U\",simma:\"100F1108\",simo:\"0D020O0A0P060Q0W0T0T14021B07\",\"simo \":\"0O090P060Q0W0T0T1B05\",simpl:\"0D050L1A0M080O0G0P0I0T06150W1O18\",simt:\"150X1D15\",simu:\"0D0F0L020T261B071C0O1O06\",simul:\"0D0R0L040T0I1O02\",simus:\"0T1A1B0E1C1O\",\"sina \":\"0D110P050Q030V0H100Z110F1C2D\",sinab:\"0D12\",sinas:\"0D0I0T031B02\",sinc:\"0L030M0G0O040P040Q04140L150E1F021O04\",since:\"0M0L0O050P050Q04150H1O08\",\"sind \":\"0N7S0Z0A1C6B\",sinda:\"045Y0Q02130L\",sinde:\"0Z0R1F1B\",\"sing \":\"010X0B0T0D0S0M1B0R0L\",singu:\"0T0B130J15301B03\",\"sini \":\"0B5011091F341N1V\",siniz:\"1F1Q\",sinn:\"0N0G1004110N120C132E1C0L\",sinna:\"130O1C1H\",sinni:\"0N041002132C\",\"sino \":\"0D1F0O0P0P080Q061B09\",sinon:\"0D0I0L05\",sins:\"048O0L091102131U\",\"sins \":\"0L0F133V\",sinsh:\"04EA\",\"sint \":\"03020S320T0F120C\",\"sinu \":\"131I1C68\",sinua:\"1166\",sinud:\"1C1Z\",sinug:\"1C1V\",sinul:\"0D05119P\",sinun:\"0D0D11C7\",sinut:\"112B\",siny:\"0B0G1102\",sinz:\"048U\",sinzi:\"04CC\",sinzo:\"042Z\",siná:\"144X\",sinál:\"1457\",sinä:\"117L\",\"sinä \":\"11G2\",siog:\"1B0S\",\"siog \":\"1B1K\",\"sion \":\"0L340M110N0A0Z08100611081O07\",siona:\"010K0B0I0M050O0F0P0B0Q0A150G\",sione:\"0N030O0G0P020Q1B0R020T0C0Z041004\",sioo:\"1C12\",sioon:\"1C2N\",\"sip \":\"0D0K1Q0C\",sipi:\"0D030T031B15\",sipir:\"1B26\",siq:\"0L0C0O061Q0K\",sira:\"0D060L020V04110214031B0L\",siri:\"03060Q0H1B0S1O03\",sisc:\"0N190R071Q09\",sisch:\"0N230R0A1Q0G\",sisi:\"03040B080D0G110B1B051F02\",sisk:\"0Z0H100D110U120I1B0F\",\"sisk \":\"0Z0E1004120E\",siss:\"0L040T0K111D1C0G\",sissa:\"112Q\",sista:\"0D020L080M030P020Q02100B112E1B0D1O0C1Q0J\",sisti:\"0O090P0R0Q030T0O11031O05\",sistē:\"1D25\",sisw:\"0B0K\",sisy:\"0D07\",\"sisz \":\"1A1I\",sisä:\"1117\",sitat:\"0Q0R0T0A150C1O0A\",sitik:\"1B5R\",sitk:\"1121\",sitko:\"1148\",sito:\"0O0Y0P0C0Q090T03110B150B\",\"sito \":\"0O160P090Q080T02\",sitt:\"0M080T05101W112T121H130K\",\"sitt \":\"1019120Y1312\",sitte:\"0N02100E115G120J\",sità:\"0Q0R\",\"sità \":\"0Q0R\",sitä:\"0N041141\",\"sitä \":\"119G\",\"siu \":\"1B5C\",siun:\"0B0M150M1B0B\",siva:\"0O050P040Q050V03111114071B0J\",sive:\"0L060M0E0P020T0714021B05\",sivy:\"041Z1B05\",sivyo:\"042S\",siw:\"031U\",six:\"0L060M05\",siy:\"03050D3G1F1G1Q05\",siya:\"0D5M1F0B\",\"siya \":\"0D7S\",siyan:\"0D2D\",siye:\"03040D071F0U\",siyo:\"0D0B1F08\",siyon:\"0D0G1F08\",siyu:\"0D08\",siz:\"03050M020Q041F391N5Q\",\"siz \":\"1F1K1N4L\",\"size \":\"0M031F0S1N1D\",sizi:\"0Q061F111N2J\",siziň:\"1N2M\",siä:\"111B\",\"siä \":\"1129\",siç:\"0P06\",siè:\"0L08\",sið:\"1310\",\"sið \":\"131J\",siñ:\"1N0W\",sió:\"0O121A04\",sión:\"0O1N\",\"sión \":\"0O25\",siú:\"0S2A\",siúl:\"0S0M\",siún:\"0S1G\",siúnt:\"0S49\",siý:\"1N0U\",siýa:\"1N13\",\"siýa \":\"1N14\",sią:\"1A261B08\",siąż:\"1A1Z\",siążk:\"1A2M\",siė:\"1B0D\",się:\"1AF3\",\"się \":\"1AJI\",siĝ:\"1O07\",sił:\"1A0T\",siň:\"1N43\",\"siň \":\"1N2I\",siňi:\"1N2I\",siňiz:\"1N3E\",siňm:\"1N12\",siňmi:\"1N1G\",siš:\"0V031B0T\",sišk:\"1B0V\",siška:\"1B1R\",siū:\"1B0G\",sių:\"1B0C\",siž:\"1B0D\",\"sj \":\"1203\",sja:\"0V02120713061A031C0N1Q0B\",sje:\"0R0K120M\",\"sje \":\"0R0U1206\",sjeb:\"0R0Z\",sjebl:\"0R1C\",sjek:\"120E\",sjel:\"120C\",sjen:\"1209\",sji:\"01070B031A04\",sjo:\"0Z02121B\",sjon:\"12341A02\",\"sjon \":\"1215\",sjone:\"121J\",sju:\"101911021202\",sjuk:\"100Y\",\"sjuk \":\"100F\",sjun:\"100I\",sjung:\"100G\",sjá:\"131L\",sjál:\"131C\",sjálf:\"132S\",sjä:\"10101102\",själ:\"101C\",själv:\"101A\",sjå:\"1202\",sjæ:\"0Z03\",sjæl:\"0Z09\",sjó:\"130Q\",sjö:\"100A130A\",sjø:\"1204\",skaa:\"010Q1162\",\"skaa \":\"116W\",skaan:\"117S\",skab:\"0Z121C0L\",\"skab \":\"0Z0G1C1H\",skabe:\"0Z0L\",skad:\"0Z091013120F\",skade:\"0Z0A100H120C\",skai:\"11021B2P1D36\",skaid:\"1D2K\",skais:\"1D4U\",skait:\"1B4D\",skak:\"010F0Z041005110C1A02\",skake:\"010G\",\"skal \":\"0U020Z3I12451329\",skam:\"0Z071003120713071B1O\",skamb:\"1B3E\",\"skan \":\"0B25100H1117130E1O04\",skap:\"011G100M121S130L1O04\",\"skap \":\"011B100C120R\",skape:\"1005120R\",skar:\"0D020N020Z05102C1102130J1A091B03\",\"skar \":\"0Z031027130X\",skas:\"110H1B101O06\",\"skas \":\"11031B231O0C\",skati:\"1B051D2K\",skatā:\"1D2T\",skatī:\"1D3Z\",\"ske \":\"0V0I0Y0G0Z4E100L1107124O14031C0Y1F02\",sked:\"0M130Z141007140D\",\"sked \":\"03020M1H0Z041002\",skede:\"0Z181403\",skei:\"010K1103\",skel:\"0Z0U1002112J121713061B04\",skeli:\"0Z0D111N1212\",skell:\"0Z0D111X\",sken:\"010F03050Z0M1009111E120R14021B02\",\"sken \":\"03020Z0D1008110T120G\",skep:\"100E\",\"sker \":\"03040Z5U1002123I1F02\",skere:\"0Z09120E\",skerm:\"010G\",\"sket \":\"0Q040Z111104121A\",skete:\"0Z0E\",skib:\"0Z09\",skic:\"100E1A07\",skid:\"03030Z0A10051F05\",skie:\"010W0L0211031A1S\",skieg:\"1A1O\",skif:\"0Z0C\",skift:\"0Z0D\",skil:\"0M020Z0C100T1102120A132J1B02\",skine:\"0Z0A1004120G\",skip:\"0B0A1103120F131Q\",skipt:\"132Y\",skir:\"11031B0U\",skit:\"03031006110D12061B0Q1O02\",skite:\"1B1G\",skj:\"0Z05100C121O130S\",skje:\"123B\",\"skje \":\"1210\",skjed:\"120X\",skjel:\"120O\",skjer:\"120I\",skjø:\"120M\",skjøn:\"120D\",skla:\"0N020U020V030Y0H0Z0E1005120H1B031O03\",sklan:\"0Z0H1005120H1B03\",skn:\"0U0210041A05\",skog:\"0V0B10081209\",skol:\"0Z1710161106121A141O1B0J1D1R1O02\",skola:\"1011140E\",skole:\"0Z1C1219\",skolu:\"1D1W\",skolá:\"141D\",skon:\"0U0F0Y0J100511121A081B081C0G1O08\",skoo:\"011I1107\",skool:\"010Q\",skoon:\"010T1102\",skor:\"0U0J0V110Y220Z0310151102130814061A07\",\"skor \":\"100V1405\",skoro:\"0U0Q0V260Y2D1A04\",skov:\"0U030Z0K1105\",skove:\"0Z0D\",skońc:\"1A1E\",skra:\"0N020Z04100L1A041B08\",skrat:\"100I\",skre:\"0V0H0Z0T100G12111B04\",skrev:\"0Z0X100B120O\",skrib:\"1O2A\",skrif:\"0Z0510031204133L\",skrik:\"010L10041204\",skriv:\"0Z1H101E121H\",skru:\"0Z06100212091B03\",skry:\"01140Y081A021B0C\",skryf:\"0113\",skrä:\"100F\",skræ:\"0Z0C\",sks:\"0M021D0E\",skt:\"100R1202\",\"skt \":\"10101206\",\"sku \":\"0B080U0L0V0J0Y1D1103132E1A1F\",skul:\"0Z11104I1103122J130M1O0J\",skull:\"0Z14104D1102122G\",skura:\"037N0L050M0Z0O030Q030R031103\",skut:\"0N020U0N0Y0U0Z031003110212091A081B0R1O08\",skute:\"03030U0S0Z04100312061A06\",skuto:\"0U030Y111A041O04\",skv:\"0U070Y07100213031B02\",skyl:\"0Z13100F120Z130O1B02\",skyld:\"0Z19100A120Y131F\",skyn:\"0U030Z0610081103120A130C\",skyt:\"0U030Z081102120K\",skytt:\"0Z0A120E\",ská:\"0U0B0Y0I130E140I\",skä:\"100N1107\",skäm:\"100F\",skå:\"1009\",skæ:\"0Z08\",ské:\"0U0J0Y0L1405\",skó:\"131B14021A03\",skól:\"131K\",skóla:\"132Z\",skô:\"0Y0L\",skôr:\"0Y10\",\"skôr \":\"0Y19\",skõ:\"1C0D\",skö:\"100E1402\",skø:\"0Z09\",skøn:\"0Z09\",skú:\"0Y0U1303\",ský:\"0U0F0Y0K130I\",skā:\"1D0Y\",ską:\"1A0B1B0T\",\"ską \":\"1A081B1C\",skė:\"1B08\",\"sl \":\"0U0D\",\"sla \":\"03070D070O060R030U060V0D100513071F1L\",slaa:\"01210R14\",slaap:\"011L0R0W\",slag:\"0R0U0V030Z0I100K120I1309\",slah:\"0B041N0Z1Q14\",slaha:\"1N19\",slap:\"0R0R0Z07100314021B0L\",slape:\"0R0Z\",slec:\"0R0W0U09\",slech:\"0R170U0C\",sled:\"0U1M0V0Z0Y1M1N0V\",sledi:\"0V091F021N17\",sledn:\"0U0X0V1A0Y0P\",slee:\"0M0S\",sleep:\"0M12\",sleg:\"0115130F1405\",\"sleg \":\"010G\",slegs:\"010K\",slel:\"0U120Y1N\",\"slel \":\"0U1A0Y1H\",slem:\"030K0U021F021N1T\",sleme:\"1F031N2F\",slet:\"0U050Z0G120B\",\"slet \":\"0U070Z0H1205\",sleý:\"1N4H\",sleýä:\"1N5Z\",sliek:\"1D1R\",slik:\"010J0V0F0Z04120Y1C0O1D17\",\"slik \":\"0Z03120L\",slike:\"010G0V081207\",slikt:\"12061D32\",slim:\"03060M080R0F0V1L0Z051D0M1F05\",\"slim \":\"0D020M070R0A0V3V0Z031F06\",\"slio \":\"0V1Z\",slip:\"0M020Z06100612091P2C\",slipo:\"1P1W\",slit:\"03020U030V06120C\",\"sliš \":\"0V1T\",sln:\"0U020Y0I\",\"slo \":\"0O040U0F0V030Y0M120L1B04\",slob:\"0V0E0Y10\",slobo:\"0V100Y17\",slog:\"0Z0B100H1Q0F\",\"slog \":\"0Z0D100F\",slot:\"0R0L0Z0310021205\",slou:\"0U10\",slouc:\"0U10\",slove:\"0Q040U060Y1E1F03\",slovn:\"0U0E0Y14\",slovo:\"0U0M0Y0Y\",slui:\"011A0R0C1B02\",sluit:\"011B0R0F\",sluk:\"0R020Z081102\",slut:\"0Z0T10241216\",\"slut \":\"100R\",sluta:\"1011\",slutt:\"0Z0L1215\",sly:\"0M060U0U10051202130D1B031N0K\",slyš:\"0U1B\",slyše:\"0U1E\",slä:\"100I11021N1B\",slå:\"0Z08100C1205\",\"slå \":\"0Z0810091208\",slæ:\"1308\",slí:\"0U2C0Y38130A\",slím:\"0U200Y3T\",\"slím \":\"0U2S0Y4N\",slíš:\"0U0Q0Y0W\",\"slíš \":\"0U110Y14\",slö:\"100C1307\",slø:\"0Z031204\",sløs:\"0Z041209\",slā:\"1D0H\",slē:\"1D23\",slēg:\"1D0X\",slēp:\"1D18\",slė:\"1B0D\",slı:\"1F0K\",\"sm \":\"0M050U0410021504\",smaa:\"0R0811021C12\",smaal:\"1C26\",smag:\"0Z0D1B05\",smak:\"0R02100A120G1A07\",smao:\"0S0O\",smaoi:\"0S2T\",\"sme \":\"0B060L0F0R070U4L0V050Y6K0Z0512061F02\",smere:\"141A\",smet:\"03020L020Q0M0R030U020V05\",smie:\"0Y0X11041D0M\",smil:\"0M070Z0D120F\",\"smit \":\"14031D3U\",\"smo \":\"0D090O1M0P260Q0D0V3F1A021B0A1O0A\",smr:\"0U0E0V0C0Y05\",\"smu \":\"0B0D0V071D85\",smuk:\"0Z17\",\"smuk \":\"0Z0Q\",smukk:\"0Z0K\",smá:\"0U08130L1402\",smä:\"0Y0910091104\",små:\"0Z0F100A120I\",\"små \":\"0Z0610051209\",smål:\"0Z0T1006120Y\",\"smål \":\"0Z0R1005120H\",småle:\"0Z08120G\",smí:\"0U0J\",smö:\"1005\",smø:\"0Z021202\",smė:\"1B08\",smī:\"1D0R\",\"sn'\":\"0M3H\",\"sn't\":\"0M6B\",\"sn't \":\"0M8H\",snab:\"100L\",snabb:\"100L\",snak:\"03050M020Z0C123Q1419\",\"snak \":\"0Z03141C\",snakk:\"0Z0C123Q\",snar:\"0Z0J100Q120L\",snart:\"0Z0L100G120I\",snaž:\"0U0R0V030Y0S\",\"sne \":\"0T6J0V0L0Y1E0Z0C1A08\",snee:\"0R0N0Z07\",snel:\"0R1A\",\"snel \":\"0R1B\",snie:\"1B0C1D1E\",snieg:\"1B0O1D21\",snil:\"0U03120J\",snill:\"120J\",snin:\"0Z0D100F120Q1B05\",sning:\"0Z0G100F120Q1B0A\",snis:\"0B031B1E1Q0T\",\"snis \":\"1B2V1Q0Z\",\"sno \":\"0V0Y1A02\",sny:\"0B0R0Y0710031A08\",snya:\"0B1H\",\"snya \":\"03030B2W\",sná:\"0S0R0U0H1402\",snám:\"0S0X\",snámh:\"0S3S\",snä:\"100M1102\",snäl:\"100T\",snäll:\"100T\",sní:\"0U0O0Y0E\",snö:\"100F\",snø:\"1209\",\"snø \":\"1209\",snė:\"1B0F\",sně:\"0U0W\",snī:\"1D0T\",snīb:\"1D0U\",snība:\"1D1W\",soa:\"0B030P251106151S\",\"soa \":\"0P0R110B\",soar:\"151L\",soare:\"151Q\",soas:\"0P1N\",\"soas \":\"0P23\",sobi:\"0U070V060Y0B1A1R\",sobie:\"1A2M\",sobr:\"0D0B0O200P2J0T0E\",sobra:\"0D0I0O040P02\",sobre:\"0D020O2E0P31\",\"sod \":\"0D04140C1P13\",soe:\"010W0R02\",soek:\"011O\",\"soek \":\"011O\",sog:\"0N030P030Q1O14031O08\",sogn:\"0Q2L\",sogno:\"0Q1Y\",soh:\"040F0N051104140V1F021Q3T\",soha:\"1427\",\"soha \":\"1422\",soi:\"0L370O0311251O02\",soin:\"0L211109\",\"soin \":\"0L3B110H\",soir:\"0L13\",\"soir \":\"0L1I\",soit:\"0L18112D\",\"soit \":\"0L221103\",soitt:\"113O\",soj:\"11031B071O0D1Q16\",\"sok \":\"0B170D0E0V02144N1A02\",soka:\"1104142A1A021F07\",sokat:\"141Y\",soko:\"0D0614081A03\",soldi:\"0M040Q1P\",solen:\"0L020Z0E100811021206\",solg:\"0Z081207\",soll:\"0N2O0Q040T061102\",sollt:\"0N29\",solo:\"0O2B0P020Q2D0T021403\",\"solo \":\"0O2Y0P030Q2E\",solt:\"0O050P060Q0K140G\",\"som \":\"0P040V070YRE0Z5E107912AT140R1P0E\",soma:\"043V0P020Q0C110E140K1B03\",\"soma \":\"046S1B03\",some:\"0M3X0P051O09\",\"some \":\"0M2B\",someo:\"0M0O\",somet:\"0M210O02\",somh:\"0Z04120B\",somm:\"0L250N090Q020R0C0Z0O100A1102120L\",somme:\"0L3H0N0G0Z0T1103120L\",somn:\"0T1B1005150F\",somni:\"0T0U\",somo:\"0O0G0P0J1402\",somt:\"0Z05120B\",\"sona \":\"0O110Q0L11031F071O08\",sonas:\"0O1B1B031O06\",sond:\"011G0N0V0R02\",sonde:\"010Y0N1G0R03\",\"sone \":\"0Q101O02\",song:\"0B0A0D060L090M080R021Q0K\",sonh:\"0P0J\",soni:\"0O050T0611041O021P12\",sonn:\"0L340N0P0Q0A\",sonne:\"0L4O0N0T\",sono:\"0P070QFS1O0U\",\"sono \":\"0P080QFY1O0W\",sonr:\"0O0D1F24\",sonra:\"1F2V\",sons:\"0L130M060N0B1F04\",\"sons \":\"0L1Q0M08\",sont:\"0L661405\",\"sont \":\"0L9T1402\",sonu:\"0T04130A1F15\",soo:\"010X0M0C0R0811061C1I\",soon:\"010T0M0M0R0H1103\",\"soon \":\"010I0M0S0R0F\",soos:\"0114\",\"soos \":\"0116\",soov:\"1C14\",soovi:\"1C2Q\",sora:\"0O070P0A1407150H1F071N3U\",sorad:\"1N1D\",sorag:\"1N1Z\",sore:\"0B070O040P040Q1E0T04\",sorel:\"0Q0T\",soro:\"0O020T1E140B1O02\",soror:\"0T1H\",sorp:\"0D020O0H0Q0K\",sorr:\"0M0C0P090Q0C0R061403\",sorti:\"0L1I\",soru:\"0T04150D1F2M\",sorun:\"1F22\",\"sos \":\"0O1K0P1A0T0914051B0R1O0E1Q0Q\",sosi:\"0B06110A120B150G1B03\",sotr:\"0O1J\",sotro:\"0O1R\",sots:\"1C11\",sotsi:\"1C2J\",sott:\"0Q0L11021404\",\"sou \":\"01230P310U4P\",souhl:\"0U0S\",sour:\"0L0S0M040P04\",sous:\"0L0U0U0F\",\"sous \":\"0L18\",souv:\"0L1E0U02\",souve:\"0L1V\",\"sov \":\"0Y0M0Z0B100C120B1Q54\",sovbe:\"1Q50\",sove:\"0Z0Y100C1109120X\",\"sove \":\"0Z0E120A\",sover:\"0Z0H100C120J\",sow:\"0N031A0P1N0Y\",soy:\"0L0B0O1A1F081Q0C\",\"soy \":\"0O1Z1Q0C\",soz:\"0P0Q\",sozi:\"0N030P0W\",sozin:\"0P15\",soñ:\"0O041N0K\",soğ:\"1F0I\",soň:\"1N1J\",soț:\"150N\",spagn:\"0L0E0Q0Q\",spava:\"0V24\",spañ:\"0O0S\",spať:\"0Y10\",\"spať \":\"0Y18\",spea:\"0M17\",speak:\"0M1M\",spect:\"0L110M0L0O0J0P040R0B0T1R1516\",sped:\"0O080P060Q0T\",speda:\"0P020Q0Q\",spee:\"010V0M070R0V\",speel:\"010X0R15\",spei:\"0N040P0J\",spekt:\"0N080U050Z061008120F1A031B041O2D\",spela:\"101C\",spele:\"0R111003\",spelo:\"1P1I\",spero:\"0O0O0P110Q0M0T0Q1O0K\",spes:\"0D030P020Q0Y0T08120C\",spesi:\"120C\",spess:\"0Q0T\",spet:\"0O090P030Q2I1003\",spett:\"0Q2J\",sph:\"0L020T02\",spia:\"0Q0S\",spic:\"0M030T1D1503\",spici:\"0M030T0W\",spie:\"0N1X0O060Q0L0R060Y1H1A0B1D0J\",spiel:\"0N2Z\",spiev:\"0Y1T\",spij:\"0R0L\",spik:\"10031P3D\",spiko:\"1P2Y\",spil:\"0L020R040Z1O121T130X1D0M\",spill:\"0L040R030Z1M121L\",spis:\"0U030Z2T122P\",spise:\"0Z29121S\",spist:\"0Z14120Q\",spita:\"010I0D040L020M0B0O0D0P0C0V080Z09150O1O06\",spol:\"0T030U1E0V050Y1R1A02\",spole:\"0U0X\",spolo:\"0V090Y0Z\",spolu:\"0U0Y0Y17\",spond:\"0L050M030O0N0P0R0Q0G0T1D1O1K\",spos:\"0L0G0O0I0P0W0Q1R0V091A0I\",sposa:\"0L020O0H0P0I0Q0Q\",spost:\"0P0J0Q0U0V08\",spot:\"0M030R020U0210021A1D\",spotk:\"1A1Y\",spraa:\"010K0R0D\",sprac:\"0N2B\",sprav:\"0U090V0K0Y1W\",spraw:\"1A1W\",\"spre \":\"1544\",sprec:\"0N270O040Q04\",spree:\"0R1Z\",sprek:\"0R1Y\",sprem:\"0V2E\",spren:\"1B1P1O02\",spri:\"0L0C0M040N0T0Q030R050V060Z03100F15031F021O08\",sprog:\"0Z1N1B09\",sprá:\"0U0H0Y1R\",správ:\"0U0N0Y26\",språ:\"1012121N\",språk:\"1011121N\",spun:\"0V040Z051205155T\",spune:\"153X\",spur:\"0N020Z0E120G131L1O02\",spurg:\"0Z0G\",spurt:\"120G\",spus:\"0V061559\",\"spus \":\"156G\",spué:\"0O13\",spués:\"0O1G\",spy:\"13051A041B05\",spá:\"0U0I0Y0C1303\",spä:\"0N0B0Y0810061103\",spå:\"1003\",spæ:\"0Z031304\",spè:\"0L0E\",spé:\"0L0H0P04\",spí:\"0O030P040U0L0Y0F\",spó:\"1A0U\",spø:\"0Z0F120N\",spør:\"0Z12121G\",spørg:\"0Z1B\",spørr:\"120C\",spørs:\"120W\",spý:\"0Y0I\",spýta:\"0Y12\",spă:\"150L\",spē:\"1D4N\",spēj:\"1D33\",\"spēj \":\"1D1R\",spēja:\"1D43\",spēju:\"1D1R\",spēl:\"1D1U\",spēlē:\"1D3Z\",spė:\"1B0E\",spě:\"0U0K\",sq:\"03040L0D0M030O050P0B0Q020T0X1Q0F\",squ:\"0L1S0M050O0G0P1F0Q080T261Q0U\",\"squ'\":\"0L181Q1L\",sque:\"0L1P0M050O0D0P1D0T3Q\",\"sque \":\"0L2G0M060O090P030T3X\",squec:\"0P0Y\",\"sr \":\"0O030P05\",\"sra \":\"1419\",srae:\"0M030O030P040Q020T0Q0Z02\",srael:\"0M050O040P050Q020T0S0Z0211031O02\",srd:\"0U060Y0I\",sreć:\"0V1E\",sri:\"03521B06\",\"sri \":\"031X\",srin:\"0321\",sro:\"1B02\",sru:\"03041003\",sry:\"1B08\",ssaa:\"111L\",ssaan:\"113F\",ssad:\"0L020P100R030Z02100F\",ssado:\"0P0U\",ssai:\"0L1E1106\",ssani:\"112J\",ssant:\"0L1K0N0E0P0F0Q0F0R0H0Z0B1008120B\",ssap:\"0P030Q0T1102\",ssapo:\"0P040Q0T\",ssar:\"030N0M050P150Q0P0T0G100A1318\",\"ssar \":\"03050P0W1009131B\",ssas:\"03080L040P0V0Q030T021002110Y\",\"ssas \":\"03050P0W1102\",ssat:\"0Q16100311051402\",ssaw:\"0323\",ssay:\"0L12\",ssc:\"0N070R08\",ssch:\"0N0I0R0U\",sschi:\"0N020R12\",sseb:\"012E030A\",ssebl:\"012K\",ssed:\"03060M0Y0Q020Z0C1F0J\",\"ssed \":\"03030M1B\",ssede:\"0Z0E1F04\",ssef:\"033U\",ssefk:\"037I\",ssem:\"030E0L0L0P0J0Q020T0V1403\",\"ssem \":\"03030P0E0T0U1403\",\"ssen \":\"010N032Q0NA00R2Z0T030Z11100K12171408\",ssent:\"03030L1F0M020P060Q040R020T0I\",sser:\"030K0L1Z0M030N220P0D0Q560R060T0J0Z14100E120V\",\"sser \":\"03040L2O0N2O0P020R030Z0R120D\",ssere:\"0N090Q490R030Z0H\",ssert:\"0L040M020N040Q020Z02120C\",sses:\"0L0O0M0F0N030P0J0Q020T0H\",sset:\"03030L040Q050T1Y0Z0C120H14021F0Q\",\"sset \":\"0T210Z0D120F\",sseu:\"0L0N\",ssez:\"0L1O\",\"ssez \":\"0L27\",ssf:\"0M021002\",ssia:\"0M060P040Q1N1109\",\"ssia \":\"0M040P050Q0W110K\",ssiam:\"0Q0S\",ssib:\"0L0T0M0F0P040Q0O0T06\",ssibl:\"0L180M0I\",ssic:\"0M050N020P020Q0S0T04\",ssim:\"0L030P1F0Q1K0T301105\",\"ssim \":\"0P1H0T06\",ssima:\"0P040Q0M0T0W1106\",ssimo:\"0P060Q0T0T04\",ssimu:\"0L030T1L\",ssio:\"0L1C0M0G0N050P090Q0U0T0C0Z051004\",ssion:\"0L2A0M0M0N080P0B0Q0U0T070Z061004\",ssit:\"03070L090P020Q020T0Z1104\",\"ssit \":\"030G0L040T0Y1108\",ssk:\"03050Z0210031308\",ssl:\"03020N03100B1307\",ssn:\"0316100H1306\",ssna:\"0307100K\",\"sso \":\"0PC70Q7N0T02\",ssoa:\"0P2J\",\"ssoa \":\"0P0X\",ssoas:\"0P23\",sson:\"0L0R0M030Q0J1407\",ssor:\"0L020M030N020P110Q0R0R040T030Z0210061103\",\"ssor \":\"0M020N030P0U0R051005\",ssos:\"0P0J0T04\",ssp:\"0N021002\",ssr:\"0302\",sst:\"0N1I0Z031019120I130C\",\"sst \":\"0N2510061207\",ssta:\"0N02100F\",sste:\"0N1C0Z02100W120S\",\"sste \":\"0N1L100V120R\",\"ssu \":\"03040T0311031316\",ssum:\"03070M040P020Q040T2F130R\",\"ssum \":\"0T22131L\",ssun:\"03020N030P090Q1Q0T0G13051402\",ssuno:\"0Q1A\",ssur:\"030B0L0O0M030P020Q030T03\",ssus:\"03080L0G0P090T1B\",\"ssus \":\"03060L0R0T1D\",ssv:\"10021205\",ssve:\"0N02120D\",ssver:\"0N03120D\",ssw:\"0303\",ssy:\"11061N0F\",ssz:\"144N\",\"ssz \":\"141N\",ssza:\"143Y\",\"ssza \":\"141E\",ssze:\"143L\",\"ssze \":\"1412\",ssá:\"0P09140K\",sság:\"1416\",ssã:\"0P0H\",ssão:\"0P0K\",\"ssão \":\"0P0Q\",ssä:\"1002116O\",\"ssä \":\"11AI\",ssæ:\"0T02\",ssè:\"0L04\",ssé:\"0L1T140P\",\"ssé \":\"0L271408\",sség:\"141C\",ssí:\"0P0J\",ssív:\"0P0M\",ssíve:\"0P0S\",ssò:\"0Q03\",\"st'\":\"0M020Q07\",\"st-\":\"030S0L2X\",\"st-c\":\"0L3Y\",\"st-ce\":\"0L6L\",\"st-i\":\"03060L0O\",staa:\"012D0N0A0R2U115R\",\"staa \":\"1171\",staan:\"01220R1O116E\",staat:\"0N0H0R211102\",\"stab \":\"1C42\",staba:\"0O540T051B03\",stac:\"0L020O0K0P060Q0310051A081O09\",\"stad \":\"010I0O060R1P0Z07100C14061C1A\",stada:\"0O040P041C2Q\",stade:\"0L020P050Z04100T\",stado:\"0D050O290P131O06\",stah:\"0D020N0211021Q5T\",stahv:\"1Q7P\",stai:\"0L050M070P030Q0W0S11110J150P1B1K\",\"stai \":\"0Q0W1102150W1B29\",stak:\"0B060M0D0R050V030Z051002110I130H\",\"stal \":\"03050O030P020R0E0U250Y1Y1005\",stala:\"0O020P030U0J0V0H0Y0Y1102140315051B0B1F06\",stalo:\"0U1E0V0M0Y2G11031B13\",stamo:\"0O130P1A\",stanc:\"0L0E0M070O0C0Q0R1A021O0A\",stane:\"0U170V200Y1W11091A031F0J\",stani:\"03050U060V1E0Y0Y111E14021A1I1O02\",stann:\"0Q0U1010110L\",stanz:\"0Q1E\",stare:\"0M030O020P0A0Q0U0T070V081003150G1A071O02\",stari:\"0M030P1P0V1A110C1O0R\",starp:\"1D1R\",start:\"0M1G0N030O020R060U040Z0A1005120C1A041O03\",starí:\"0O1A\",\"stas \":\"0O1P0P1E0T0G1B321C311OSG\",stasi:\"0B1711221C2N\",stasj:\"120F\",\"stat \":\"0T120U1J0Z021002110L151D1C1V\",stata:\"0Q1F0V09110O1B081O0J\",stato:\"0Q2S0Y0E1B061O09\",staty:\"1B1K\",stava:\"0P650Q180V0D100411221C1A\",stavi:\"0Q030U140V390Y181107\",staw:\"0D041A1M\",stawi:\"1A1O\",stay:\"0M141F05\",\"stay \":\"0M11\",staí:\"0S1A\",staío:\"0S58\",stað:\"131Z\",\"stać \":\"1A1W\",stał:\"1A32\",\"stał \":\"1A1X\",stať:\"0Y1I\",\"stať \":\"0Y1V\",stb:\"0R020Z031003\",stc:\"0R02\",stea:\"0M080S220T04151K\",\"stea \":\"0T04151W\",steac:\"0S7A\",steb:\"1B101P0M\",sted:\"0M0U0O1Y0R050Z1R120X1F38\",\"sted \":\"0M160O1T0Z0V120F\",stede:\"0O0S0R070Z17120H1F03\",stedi:\"1F4A\",stee:\"01150M020R1O110I\",steed:\"0R1A\",steek:\"010K0R08\",stef:\"0M040Z0B120513081F02\",steh:\"0N29\",stehe:\"0N21\",stej:\"0P0E0U0V0Y0P11031A07\",stejn:\"0U17\",\"stel \":\"011E0O050R0O0U08\",steld:\"0R0Y\",stele:\"0O020R050U070Y0D1115140515091C1S\",stell:\"0N340Q070R110T0J110T\",steme:\"0L0412061F1U\",stemi:\"1F2F\",stemm:\"0R0D0Z0I120M\",stemt:\"0Z0B120L\",\"sten \":\"03020M090N490O080R1T0Z1Z1012113E122J140N1F08\",sterd:\"0M0R0R0C0Z021F0F\",sterk:\"010G0R0I120G130Q1O02\",stern:\"0M050N1T0Q020R020T090Z0D10061O04\",\"stes \":\"0L0X0M020N0E0O080P0P0T0B0Z02\",stess:\"0L020Q191103\",stest:\"0N051C1L\",\"stet \":\"0N0H0T020Z0M100312151402\",steś:\"1A3I\",\"steś \":\"1A41\",stf:\"1304150A\",stg:\"0N02\",sth:\"0N020T02\",stie:\"0L020N0G0O030Q040R0J0Y0Z0Z02110215061B051D1A\",sties:\"1B071D2F\",\"stig \":\"010P0N0C0R0K0Z0510091402\",\"stil \":\"0N030R0B0U0U0Y0L0Z041004\",still:\"0M230N0C0O080R030Z0Y10051106120Y\",stily:\"0D0J\",stimm:\"0N1K11071402\",stine:\"0L030Q020T18110D\",sting:\"0L060M0K0O050P020Q030R050T0215061B0J1O0A\",stio:\"0L110M0K0O020Q070T0D0V0C1103\",stion:\"0L1S0M0S0O030P020Q070T05\",\"stis \":\"0T3E1B0R1C2D1OCD\",stisk:\"0U020Z0C100A120I\",stive:\"0P0X\",stiy:\"1F4I\",stiyo:\"1F62\",stj:\"0R030Z0A10061206130O\",stje:\"0R0A0Z08120A\",stjå:\"0Z091205\",stk:\"0R020U0410021A23\",stki:\"1A1F\",stko:\"0Z0210021A1G\",\"stko \":\"1A2A\",stla:\"0U020Y0O1F051N0X1O02\",stlar:\"1F021N17\",stli:\"0N060U1R0Y0E\",\"stli \":\"0U27\",stm:\"0M040R09100214021O02\",stmi:\"0R0T\",stmis:\"0R13\",stn:\"0T120U1P0Y2E0Z03100912031A0A1O05\",stne:\"0T200Y0E0Z061204\",\"stne \":\"0T240Y0C\",stní:\"0U0T0Y0F\",\"stní \":\"0U0V0Y0G\",stný:\"0U0J0Y19\",\"stný \":\"0U0O0Y1D\",stod:\"0T0D0Z0P100K120B\",\"stod \":\"0Z0U100K120B\",stoi:\"0L0O110H1A06\",stoj:\"0U0P0V1A0Y1B11031A041B0I1O1A\",\"stoj \":\"1O1Z\",stoji:\"0V2G\",stojí:\"0U0U0Y11\",stole:\"0L020M090N020R0A0U0N0Y0X0Z0L1005120L1A0J1B03\",\"ston'\":\"1F33\",stona:\"1B041N22\",stonb:\"1410\",stond:\"0R0T1N1J\",stong:\"0D0K\",stoni:\"0Q0E0T1N113614021A0R1C291P0G\",stonu:\"0U140V0F0Y0Q1A0O\",\"stop \":\"0M0T0R0G0Z05\",stopp:\"0M0B0N020R0G0Z0C1009120D130L\",\"stor \":\"0D090O020T040Z0Y100S1212\",stora:\"0B070Q0T0V0I0Z02100A1B0T1F0C1O0E\",store:\"0M0C0R020T040Z0P1002120K\",stort:\"0R040Z0H100F120F\",stos:\"0D050O130P0B0Q080T04110N1A081B071O1A\",\"stos \":\"0D080O1C0P0A0T041B091O2J\",stot:\"0U0211021A031B0R\",stou:\"0P4O0U0V\",\"stou \":\"0P5U0U0D\",stoup:\"0U0U\",stov:\"0U0H0V070Y0I1B0R\",stoy:\"0O3H\",\"stoy \":\"0O4K\",stp:\"1D0K\",stprā:\"1D1W\",stq:\"0T04\",strad:\"0O060P0D0Q1G150A1A021O02\",stred:\"0Y0X\",stret:\"0M020Q050Y211009\",\"stri \":\"0B0I0Q1J0T0J130E1O02\",\"stro \":\"0D020O1R0P060Q1X0T0E1A021O14\",strom:\"0N040R020U0S0Y1P\",strui:\"0L0H0O0B0P0B0QBU0R030T03150D1O1O\",strá:\"0P0K0U100Y1W130S\",strál:\"0P0P0U0J0Y1G\",strä:\"100D\",strø:\"0Z081207\",strā:\"0T051D2E\",strād:\"1D4Q\",stră:\"153R\",\"stră \":\"1538\",strī:\"1D0S\",strīd:\"1D1R\",\"sts \":\"0M0N1D1W\",stsi:\"1C0K\",stt:\"0R021F031O03\",\"stu \":\"0T020U0J0V0C0Y0E110C132V1A0W1B1Y1C111D2L1O0V\",stub:\"0R0W\",stubl:\"0R17\",studa:\"0P1V1O0F\",studo:\"0P0E0U0E1O071P1D\",study:\"0D0A0M0R\",studö:\"1P1L\",stuh:\"0D060N04\",stui:\"0R02111L150C\",\"stui \":\"112C150D1B03\",stuk:\"010F0R0G0Z02110I\",\"stul \":\"152B\",stula:\"0T121O07\",stun:\"0N0P100B111C12061312\",stup:\"0L090M070O050Q0K0T060U0N0V070Y0K1505\",stur:\"03020M030N050O020P050Q070R06131O15081F03\",\"stur \":\"0303132K\",stus:\"0R020T0P110V1B071C2H1O0P\",\"stus \":\"0R030T0Q110K1B0F1C2U1O1D\",stust:\"11171C1E\",stuu:\"010W0R0H110Y\",stuur:\"010Y0R0M\",stuv:\"0O0V11071B05\",stv:\"0U0O0V2W0Y1Q1408\",stva:\"0U020V220Y0E\",stvar:\"0V4K\",stvo:\"0U040V0U0Y1G0Z02\",\"stvo \":\"0U030V1K0Y1D\",ství:\"0U0S\",\"ství \":\"0U12\",stw:\"1A1H\",\"stwo \":\"1A1I\",styk:\"0Z0D110D12061B05\",stykk:\"0Z0G1206\",styr:\"0Z0D1005120H\",stá:\"0O7L0P8X0S150U2E0Y2P140A\",\"stá \":\"0O810PA50U0C0Y0T\",stái:\"0O090S0M\",stál:\"0U1L0Y241403\",stále:\"0U1S0Y23\",stán:\"0O1W0U061404\",\"stán \":\"0O2H0U041403\",stás:\"0O1M0P0B1402\",\"stás \":\"0O250P0D\",stát:\"0P020U0R1403\",\"stát \":\"0U0R1402\",stáv:\"0P080U0W0Y17\",stáva:\"0P090U0B0Y18\",stâ:\"0P061506\",stã:\"0P27\",stão:\"0P2O\",\"stão \":\"0P3C\",stä:\"0N0E102N119I\",\"stä \":\"11B6\",stäl:\"101M\",ställ:\"101M\",stäm:\"100N1108\",stän:\"0N0M1011110Y\",stäng:\"100M\",stäv:\"1002112V\",stävä:\"1155\",stää:\"111K\",stå:\"0Z0U101V1215\",\"stå \":\"0Z0M100L120U\",ståe:\"0Z0E1002120C\",står:\"0Z19101H121L\",\"står \":\"0Z1I101H121K\",stæ:\"0Z0A130Q\",stæn:\"0Z0C\",stær:\"0Z0C130K\",stærk:\"0Z0F\",stè:\"0L06\",sté:\"0L0C0O0D0P030U080Y0F1409\",stê:\"0P03\",stí:\"0O020P030S150U100Y0Q13081402\",\"stí \":\"0S160U190Y0X\",stó:\"0O0D0P0K131H14041A09\",stór:\"0P0O131D\",stóri:\"0O020P0V\",stô:\"0Y0G\",\"stôl \":\"0Y0Y\",stö:\"0N04100Q110C1318\",stör:\"0N09100Q\",stöð:\"131F\",stø:\"0Z0D120E\",stør:\"0Z0K120M\",størr:\"0Z0D1209\",størs:\"0Z0B120D\",støt:\"0Z04120A\",stú:\"0O050P050Y0J130B\",stü:\"0N0C14021F0G1N0R\",stün:\"14021F0B1N10\",stý:\"0U0B0Y0S\",\"stý \":\"0U0E0Y1A\",stā:\"1D4E\",stāj:\"1D0W\",stāk:\"1D15\",stās:\"1D13\",stāst:\"1D2K\",stāv:\"1D1L\",stă:\"155G\",\"stă \":\"156Z\",stăzi:\"151V\",stą:\"1A0K1B0J\",\"stą \":\"1A0B1B0V\",stē:\"1D14\",stēm:\"1D0W\",stė:\"1B0G\",stě:\"0U11\",\"stě \":\"0U13\",stī:\"0T161D2M\",\"stī \":\"0T26\",stīt:\"1D1C\",\"stīt \":\"1D2O\",stř:\"0U0S\",stře:\"0U0X\",stų:\"1B08\",\"sua \":\"0P3Y0Q3N0T0P110L\",sual:\"0M0E0O070Q030T02\",suam:\"0B080T0U\",\"suam \":\"0T0V\",suar:\"0B0I0O02\",suas:\"0P0X0S0M0T0A\",\"suas \":\"0P160S2K0T07\",suat:\"0B1M\",suatu:\"0B36\",\"sub \":\"0T0S15161C0N1O0C1Q07\",subi:\"04650L040O0A0P060Q080T0C15081O08\",subir:\"04830O050P031O03\",subu:\"0D060T03\",succ:\"0L090M090Q190R070T080Z05150E\",succe:\"0M0D0Q170R0A0T030Z06150I\",such:\"0M0F0N230U031A021Q20\",\"such \":\"0M0L0N0B1Q17\",suda:\"03020B580O020Q0G1B0C1F021O02\",sudah:\"0B9W\",\"sue \":\"0L020M030Q15\",suel:\"0O0R0Z05\",sueñ:\"0O0K\",suf:\"030E0L090M030O0I0P0D0Q040T04150L1O0L\",sufi:\"0O0K0P0F150D1A021O0O\",sufiĉ:\"1O1C\",suga:\"0D070M0310021B0C\",suh:\"0B0511081C0G1Q04\",suis:\"0L710T0L1103\",\"suis \":\"0LB70T0K\",suj:\"031D0L0A0O020P050U020V04110A1A0G1B021Q06\",sujji:\"0338\",\"suk \":\"0B0X14091B03\",suka:\"0B420D0811071B09\",\"suka \":\"0B6U1B03\",sukc:\"1A0A1O0Y\",sukce:\"1A0F1O1X\",sukk:\"030B0B040Z0A110A1207\",\"sul \":\"0D030P060Q130T021404152C1C2V\",sulat:\"0D0X1103\",suli:\"03020B0S0D0414061B02\",sulit:\"0B1I0D07\",sull:\"03030Q1411091C2V\",sulla:\"0Q0Q110D\",sulle:\"0Q0511091C6X\",sulte:\"0L080Z0A120F\",\"sum \":\"030B0N030R020TAG100213121F031Q0G\",sumb:\"043R0B041Q07\",sumba:\"045Y\",sumu:\"0D080T2011051B03\",sumus:\"0D040T221102\",\"sun \":\"0M060Q05111215051F6L1N0I\",sund:\"03020D090M050N0C0U030Z08130O1F0F\",sung:\"0B120N0B0Z02\",sunk:\"140F1A031B1C\",sunku:\"1A021B1N\",suno:\"0D090Q1A1O091P0E\",\"suno \":\"0Q1A1O0F1P0G\",sunt:\"0O0A0P090Q040TBG110815EJ\",\"sunt \":\"03020TBT15G3\",sunte:\"0N02152K\",sunu:\"11071F1C\",sunuz:\"1F1I\",suo:\"0D040Q3Y0T0N111J1B0S\",\"suo \":\"0Q3X0T0T1B0C\",suoi:\"0Q1O\",\"suoi \":\"0Q1P\",suon:\"0Q0S\",suot:\"0D0811021B04\",supp:\"0L0Q0M0Q0N040Q050T050Z061103\",suppo:\"0L0Y0M0W0Q04\",supr:\"0P020T060V03150U1B261O0E\",supra:\"0T0415111B4G1O04\",\"sur \":\"0L4Z0O040Z041B051F031O24\",surat:\"0B1E1N12\",\"sure \":\"0L0L0M1L0Z03\",suri:\"03040T0E150G1B021C0V1F02\",surm:\"0L0211041C0K1O05\",surn:\"1C0L\",surnu:\"1C1H\",surp:\"0L0I0M0G0P0F150J1O0A\",surpr:\"0L0S0M0L0P0J150N1O0I\",suse:\"03050V030Y0C1C24\",\"suse \":\"1C4V\",susit:\"1B1V\",sust:\"010Q0O0A0P0A0T0611061B0K1C0X\",susta:\"0O090P09110B1B0H1C1O\",suste:\"010S0P02\",susu:\"0B0B0D0H1F02\",suta:\"11091B0F1C1D\",suti:\"1B16\",sutik:\"1B1S\",sutra:\"0V1X\",suu:\"0T0P11421C3R\",suud:\"110Y1C16\",suuda:\"1C1Z\",suude:\"112D\",suum:\"0T19\",\"suum \":\"0T1C\",suun:\"111B\",suunn:\"112H\",suur:\"112A1C2Y\",\"suur \":\"1C37\",suure:\"111P1C31\",suuri:\"1139\",suut:\"111A\",suv:\"0V0611061B0E1C0E1Q0R\",suw:\"0D021N0W1Q05\",suy:\"03030O041F0C\",\"suz \":\"1F0E1N0X\",suzç:\"1N1R\",suzça:\"1N2F\",suæ:\"0T04\",suç:\"1F0Q\",suí:\"0P03\",suž:\"1B0H\",svak:\"0V161205\",svako:\"0V1L\",svar:\"0Z0Y101A121P13131B191D0X1Q08\",\"svar \":\"0Z0C100A120G130G\",svara:\"100F1313\",svarb:\"1B22\",svare:\"0Z0R1006120K\",svart:\"100A120L\",svarī:\"1D1R\",\"sve \":\"0V2Q1402\",svei:\"11021205130B1B161D17\",sveik:\"1B2G1D2O\",sven:\"0Q020Z05100H1206\",svens:\"0Z06100H1206\",sver:\"0N060R080Z04100D120L13081B03\",sverr:\"120D\",svet:\"0U030V0Y0Y2410051B07\",svetl:\"0V0P0Y1D\",\"svi \":\"0V1C\",svim:\"0V0F0Z0210021P1B\",svin:\"0Z0G1003120A1306\",sviđa:\"0V20\",\"svo \":\"133J1B02\",svoj:\"0U1T0V2Y0Y6H\",svoje:\"0U0X0V2I0Y31\",svojh:\"0Y18\",svoji:\"0U170V140Y15\",svoju:\"0V1T0Y1G\",svon:\"1103131U\",svona:\"133V\",svr:\"0V03\",svu:\"0V0210021102\",svä:\"100J\",svär:\"100G\",svå:\"100O\",svår:\"100W\",svårt:\"100O\",svæ:\"0Z0B12071306\",svær:\"0Z0R120I\",svært:\"0Z0E120I\",své:\"0U281403\",\"své \":\"0U1Y\",svéh:\"0U10\",svého:\"0U1F\",svém:\"0U0P\",svø:\"0Z091208\",svøm:\"0Z0O120M\",svømm:\"0Z0R120K\",svý:\"0U0P\",svým:\"0U0T\",\"svým \":\"0U0S\",svē:\"1D0M\",svě:\"0U1G\",svět:\"0U1S\",světl:\"0U19\",svů:\"0U0N\",svůj:\"0U11\",\"svůj \":\"0U1G\",\"swa \":\"030C0B0J\",swaa:\"010H\",swaar:\"010I0R02\",swe:\"010H03090B020M0E0N060R031A08\",swem:\"010J0302\",\"swem \":\"010K0302\",swer:\"010F0M0F0N040R09\",swi:\"030K0M0A1Q1Z\",swim:\"0M0F\",swo:\"0M021A29\",swoj:\"1A2D\",swoje:\"1A2U\",\"sy \":\"014X0M0H0U0M0Y0U110C1A0N1N2J\",sya:\"03080B050D0K1F0A1Q0B\",\"sya \":\"03060D0B1F02\",syad:\"0D0H\",syado:\"0D0V\",syal:\"0D061F04\",syc:\"1A03\",syd:\"0Z0210031108\",sye:\"0D031F02\",syg:\"0Z0B\",\"syg \":\"0Z0D\",syge:\"0Z0C\",syi:\"110H1P0E\",syk:\"1108120J1A021B0E1N0I\",\"syk \":\"120A1B091N0E\",syke:\"120A\",sykk:\"120D\",sykke:\"120D\",syl:\"0T0211031N0B\",sym:\"0L050M020Z031002110K1A03\",\"syn \":\"0U0B0Y0K0Z0A1003110712081A061N0F\",syna:\"0U091A061N1Y\",synan:\"1N1N\",synd:\"0Z0410041209130K1N14\",synda:\"130Q1N1J\",syne:\"0Z0U110712121A02\",synes:\"0Z0Q120V\",syng:\"0Z0D120D1309\",synge:\"0Z0F120D\",synl:\"0Z081002120C1306\",synli:\"0Z0A1002120C\",synt:\"0Z04100211111205\",syny:\"110J1N2N\",\"syny \":\"0U021N2V\",syo:\"0D0W1F0P\",\"syo \":\"0D0C\",syon:\"0D1C1F0S\",\"syon \":\"0D251F08\",syr:\"0T040Y08100211021N0A\",syst:\"0L070M050N050R040T020U040Z04100I1208130R1A05\",syste:\"0M080N080R060T030Z05100G12081A07\",syt:\"110N1A0A1B09\",syu:\"0D02\",syv:\"0Z0511091203\",\"syv \":\"0Z0B1206\",syy:\"1113\",syz:\"1N0Z\",\"syz \":\"1N0X\",syä:\"110C\",syñ:\"1N0G\",syö:\"1123\",syý:\"1N0E\",syň:\"1N1A\",\"syň \":\"1N0Y\",sz:\"0N0614ND1AFB\",\"sz \":\"147G1A8Z\",sza:\"144K1A2O\",\"sza \":\"141H1A1B\",szab:\"142M\",szaba:\"141R\",szak:\"142H\",szav:\"1419\",szava:\"1414\",szc:\"1A3G\",szcz:\"1A4T\",szcze:\"1A3K\",szczę:\"1A22\",sze:\"0N0314D41A4V\",\"sze \":\"141R1A2S\",szed:\"14191A1U\",szedł:\"1A2X\",szek:\"141V1A04\",\"szek \":\"141C1A05\",szel:\"141T1A08\",\"szel \":\"1416\",szem:\"14671A04\",\"szem \":\"142N1A04\",szeme:\"1415\",szemé:\"141D\",szen:\"0N02141Y1A0F\",szer:\"14FS1A06\",\"szer \":\"141Q\",szere:\"14AZ\",szeri:\"142B\",szerű:\"141F\",szet:\"141K\",szi:\"0N02142K\",szik:\"1437\",\"szik \":\"1438\",szint:\"140Y\",szk:\"140Q1A2M\",szka:\"14021A1R\",szko:\"140L1A1O\",szl:\"140D1A0C\",szn:\"141E1A0G\",szná:\"141J\",sznál:\"141K\",szo:\"144B1A0K\",szob:\"141U\",szobá:\"141J\",szok:\"14221A02\",szol:\"141W\",szom:\"141S\",szon:\"141H1A0B\",szor:\"141E\",szt:\"144H1A0Q\",\"szt \":\"1419\",szta:\"142D1A06\",sztal:\"141F\",szte:\"142D\",sztá:\"141M\",szu:\"0N04140G1A0S\",szy:\"1A64\",\"szy \":\"1A20\",szys:\"1A3Y\",szysc:\"1A1W\",szyst:\"1A4E\",szá:\"1446\",szág:\"142C\",szál:\"141M\",száll:\"141G\",szám:\"143O\",számo:\"141D\",számí:\"1418\",szé:\"144E\",szél:\"146S\",\"szél \":\"141A\",széln:\"141J\",szép:\"141X\",\"szép \":\"141G\",szí:\"1422\",szín:\"141R\",szít:\"141E\",szív:\"1426\",szíve:\"141M\",szó:\"141Q1A04\",szól:\"141M\",szö:\"1417\",szön:\"1417\",ször:\"1417\",szú:\"140E\",szü:\"142G\",szük:\"142D\",szüks:\"142C\",szül:\"1436\",szüle:\"1421\",szę:\"1A2M\",\"szę \":\"1A3N\",szł:\"1A1B\",sá:\"0O030P070S0N0U0O0Y0I130M142S\",\"sá \":\"0Y05130T\",sáb:\"0O040P071404\",ság:\"142Q\",\"ság \":\"1428\",ságo:\"1428\",ságot:\"1415\",sái:\"0S19\",sáid:\"0S1E\",sáide:\"0S2T\",sám:\"0U0R0Y0Z\",\"sám \":\"0U180Y1O\",sán:\"0O020U021409\",sár:\"0P0J140X\",sári:\"0P0O\",sário:\"0P0R\",sárol:\"140Y\",sás:\"0S0I13061406\",sát:\"0U0C1304140H\",sáv:\"0P050Y061404\",sâ:\"1502\",sã:\"0P10\",são:\"0P4D\",\"são \":\"0P59\",sä:\"0N07101R113S1C031N0I1P1Q\",\"sä \":\"118R\",säg:\"101P\",\"säg \":\"100E\",säga:\"100Y\",\"säga \":\"100Y\",säge:\"100V\",säger:\"100V\",säh:\"110E\",säi:\"1107\",säk:\"1012110F1P1P\",säke:\"100W\",säker:\"100W\",säko:\"1P1E\",säkt:\"100E\",säl:\"100I110H\",sälj:\"100F\",säm:\"100211021N0V\",sämi:\"1N19\",\"sämi \":\"1N1N\",sän:\"100G111E1P10\",säna:\"1P0Y\",sänap:\"1P12\",säng:\"0N03100F110B\",säni:\"1113\",\"säni \":\"112M\",sär:\"100A1106\",säs:\"110H\",sät:\"0N0410121105\",sätt:\"101F\",\"sätt \":\"100L\",sätta:\"100F\",säy:\"1105\",sää:\"1122\",\"sää \":\"1115\",sään:\"111Y\",\"sään \":\"113H\",så:\"0Z1Q10241224\",\"så \":\"0Z2C10411235\",såd:\"0Z06100A\",såda:\"0Z0H100D\",sådan:\"0Z0K100D\",såg:\"1017\",\"såg \":\"101K\",sål:\"1005\",sån:\"100A1205\",sår:\"0Z0410041203\",sæ:\"0T050Z0O1202130H\",\"sæ \":\"0T06\",sæd:\"0Z03\",sæk:\"1307\",sæl:\"0Z05130D\",sælg:\"0Z0F\",sælge:\"0Z0I\",sæp:\"0T03\",sær:\"0Z031203\",sæt:\"0Z0N130F\",\"sæt \":\"0Z09\",sætn:\"0Z0Q\",sætni:\"0Z0W\",sætt:\"0Z0S\",sætte:\"0Z0Z\",sæv:\"0T02\",sç:\"1N0A\",sçe:\"1N0J\",sè:\"0L02\",sé:\"0L0X0O0K0P050S3E131I143U\",\"sé \":\"0L2K0O1O0P040Q030S9P13171404\",séc:\"0L070P05\",sée:\"0L0Y\",\"sée \":\"0L16\",ség:\"144N\",\"ség \":\"142L\",sége:\"1469\",\"sége \":\"141A\",ségem:\"141G\",séges:\"1419\",séget:\"141B\",sél:\"140C\",sép:\"0L04\",sér:\"0L080P0B131O140M\",\"sér \":\"1324\",sés:\"0L0B0O030P031409\",sét:\"140K\",sê:\"010S\",\"sê \":\"011D\",sì:\"0Q0K\",\"sì \":\"0Q26\",sí:\"0O0I0P070S1R0U2J0Y2C131C140Q\",\"sí \":\"0O1I0S3W0U150Y0Q1304\",sía:\"0O03\",síc:\"0U0F0Y08\",sím:\"0P030U2J0Y3S130F\",\"sím \":\"0U390Y5I\",síme:\"0U0X0Y10\",\"síme \":\"0U1A0Y18\",sín:\"0S0N131J\",sínu:\"131D\",sínum:\"1322\",sío:\"0S0K\",sír:\"140D\",sít:\"0U090Y0L140T\",síte:\"0U0E0Y10140F\",\"síte \":\"0U0J0Y19\",sív:\"0P0N\",síve:\"0P0S\",sível:\"0P0W\",síð:\"130R\",síš:\"0U0S0Y0S\",\"síš \":\"0U1A0Y1C\",sò:\"0Q02\",\"sò \":\"0Q07\",só:\"0O0F0P0D130D140J1A0E\",\"só \":\"0O0R0P1E140D\",sól:\"0O0M130E\",sólo:\"0O0W\",\"sólo \":\"0O17\",sõ:\"0P021C1G\",sõb:\"1C1S\",sõbe:\"1C19\",sõber:\"1C34\",sõbr:\"1C0Y\",sõbra:\"1C2D\",sõe:\"0P07\",sõi:\"1C11\",sõit:\"1C0O\",sõn:\"1C16\",sõna:\"1C12\",sõp:\"1C0K\",sõpr:\"1C0Q\",sö:\"100W1106130Q140N1C0I1F421N1O1P11\",söd:\"10031P14\",\"söd \":\"1P1E\",sög:\"1005130K\",söi:\"110H\",sök:\"101O130G1405\",\"sök \":\"100G1404\",söka:\"100F\",söke:\"100I1402\",söker:\"100I\",sökt:\"100X\",sökte:\"100R\",söm:\"1004130A\",sön:\"100C1309140A1F03\",sönd:\"100E14071F03\",söp:\"11051402\",sör:\"1003140B1F06\",söt:\"1005140B\",söy:\"1F9A\",söyl:\"1FAI\",söyle:\"1FCU\",söylü:\"1F1C\",söz:\"1F141N25\",\"söz \":\"1F0I1N13\",sözl:\"1F0G1N1I\",sözle:\"1F0C1N1G\",söö:\"1C1S\",söý:\"1N10\",sø:\"0Z10120T\",sød:\"0Z03\",søg:\"0Z0J\",søge:\"0Z0O\",søger:\"0Z0E\",søgt:\"0Z0K\",søgte:\"0Z0I\",søk:\"120H\",\"søk \":\"1208\",søke:\"120L\",\"søke \":\"120D\",søkt:\"120E\",søn:\"0Z0D120B\",\"søn \":\"0Z0K\",sønd:\"0Z081208\",sønn:\"0Z06120K\",sør:\"0Z021204\",søs:\"0Z0A1208\",søst:\"0Z0N120J\",søste:\"0Z0N120F\",søt:\"1203\",søv:\"0Z041203\",søvn:\"0Z0B1207\",sú:\"0S0J0Y2B1309140B\",\"sú \":\"0Y4W13031403\",súh:\"0Y0G\",súhla:\"0Y0Y\",súi:\"0S15\",súil:\"0S16\",\"súil \":\"0S3J\",sû:\"0L04\",sûr:\"0L0K\",sü:\"0N05140N1C0V1F1C1N0W1P0Q\",süd:\"0N021C0J\",süda:\"1C0O\",süg:\"1C0E\",sük:\"14051P0X\",süko:\"1P0Y\",sül:\"140G\",sün:\"14061C0P1F0B\",sür:\"14021F2L1N0P\",süre:\"1F1L\",süt:\"140B1F08\",süü:\"1C18\",süüa:\"1C0X\",\"süüa \":\"1C29\",süý:\"1N0J\",sý:\"13091N05\",sýn:\"130J\",sā:\"0T021D13\",\"sā \":\"1D0R\",sāk:\"1D1Q\",sāka:\"1D0W\",\"sāka \":\"1D1W\",sāl:\"1D0H\",sāp:\"1D0J\",sās:\"0T02\",sāt:\"1D0E\",să:\"15A3\",\"să \":\"15P5\",\"să-\":\"153V\",\"să-i \":\"151M\",\"să-l\":\"151J\",\"să-l \":\"151Y\",\"să-m\":\"151V\",\"să-mi\":\"1521\",săp:\"150V\",săptă:\"151S\",săr:\"1510\",săt:\"150W\",său:\"150O\",są:\"1A1I1B0W\",\"są \":\"1A2G1B1V\",sč:\"1B0A\",sči:\"1B0T\",sčia:\"1B10\",sčiau:\"1B1V\",sē:\"0T081D0Q\",\"sē \":\"0T0G1D0K\",sēd:\"1D0M\",sēt:\"1D1I\",sēta:\"1D0U\",sė:\"1B0T\",\"sė \":\"1B0I\",sėd:\"1B0K\",sėj:\"1B0B\",sėk:\"1B0A\",sės:\"1B0H\",sę:\"1A031B04\",\"sę \":\"1A051B0C\",sī:\"0T031D0V\",\"sī \":\"0T03\",sīb:\"1D0O\",sīj:\"1D0Q\",sīt:\"1D11\",sį:\"1B06\",\"sį \":\"1B0H\",sı:\"1F84\",\"sı \":\"1F45\",sıc:\"1F0F\",sık:\"1F1O\",\"sık \":\"1F12\",sıl:\"1F2M\",\"sıl \":\"1F2P\",sın:\"1F92\",\"sın \":\"1F3H\",sına:\"1F1R\",\"sına \":\"1F1Z\",sınd:\"1F1Q\",sında:\"1F2C\",sını:\"1F43\",\"sını \":\"1F3F\",sır:\"1F16\",sıy:\"1F0A\",sız:\"1F2X\",\"sız \":\"1F18\",sızc:\"1F1I\",sızca:\"1F22\",sľ:\"0Y07\",sł:\"1A26\",sło:\"1A1G\",słu:\"1A0Y\",sły:\"1A0Z\",słysz:\"1A1U\",sō:\"0T02\",sōl:\"0T03\",ső:\"140R\",\"ső \":\"140R\",sœ:\"0L03\",sœu:\"0L0D\",sť:\"0U020Y2T\",\"sť \":\"0Y6C\",sťa:\"0Y0G\",sū:\"1B081D08\",sūm:\"0T02\",sūn:\"1B0G\",sūt:\"1D0H\",sů:\"0U02\",sų:\"1B17\",\"sų \":\"1B3D\",sɛ:\"031N\",sɛa:\"033F\",\"sɛa \":\"0320\",sɛi:\"031T\",sɣ:\"032Y\",sɣa:\"033B\",sɣe:\"035T\",sɣen:\"033L\",\"sɣen \":\"0341\",sɣent:\"0344\",\"sɣeɣ \":\"0332\",sε:\"0307\",sṛ:\"0303\",\"t'\":\"0L0E0M1F0N020Q031F021Q04\",\"t'a\":\"0L140Q091Q05\",\"t'ai\":\"0L0S\",\"t'e\":\"0L0K1Q08\",\"t'i\":\"0L03\",\"t'l\":\"0M05\",\"t'o\":\"0L03\",\"t's\":\"0M2O0N03\",\"t's \":\"0M4U0N07\",\"t'v\":\"0M02\",\"t-a\":\"033B0S15\",\"t-a \":\"031V\",\"t-c\":\"0L2F\",\"t-ce\":\"0L40\",\"t-ce \":\"0L6O\",\"t-d\":\"03290L04\",\"t-d \":\"0322\",\"t-e\":\"0L0O1402\",\"t-el\":\"0L15\",\"t-ell\":\"0L1X\",\"t-i\":\"03530D020L23\",\"t-id\":\"031S\",\"t-il\":\"03030L3H\",\"t-il \":\"0L4W\",\"t-k\":\"0305\",\"t-l\":\"0L02\",\"t-n\":\"035A\",\"t-nn\":\"0347\",\"t-nne\":\"034W\",\"t-nni\":\"034O\",\"t-o\":\"0L07151F\",\"t-o \":\"152D\",\"t-s\":\"030E0Z02\",\"t-t\":\"035S\",\"t-ta\":\"033K\",\"t-u\":\"0302\",\"t-ê\":\"0L0C\",\"ta'\":\"1QAG\",\"ta' \":\"1QDH\",\"ta-\":\"03030B040P0D11021503\",taa:\"01220B0C0D050N040R1D11BN1C0M1F02\",\"taa \":\"11D1\",taal:\"011X0R1U11041C0K\",\"taal \":\"011U0R1P\",taan:\"01230B0N0D020R1A1163\",\"taan \":\"011Z0B0W0D030R1J11D8\",taas:\"0D081114\",taat:\"0N0A0R1M11081F02\",\"taat \":\"0N030R2411071F02\",\"tab \":\"1C41\",\"taba \":\"0D030O4S\",taban:\"03080O0S0T071F02\",tabh:\"0S1A\",tabha:\"0S58\",\"tabi \":\"0D0G1B07\",table:\"0D020L280M0T0N030O0J0Z03100214021A02\",tabt:\"0Z08\",tabu:\"030304750P020T0J0U020Z021B061O03\",\"tabu \":\"04C20Z021B06\",taby:\"03041N0X\",tach:\"03020L080M020R020S281A0B\",\"tach \":\"0S5P1A0I\",tacht:\"0R020S3A\",tació:\"0O1Y\",tack:\"0M06101B\",\"tack \":\"0M041010\",taco:\"042R0Q041505\",\"taco \":\"044X\",\"tad \":\"010H0O0N0R190Z06100I142M1C121D1C1Q0B\",tada:\"030I0O0J0P0N0V061B0E1C2U1F0B1O02\",\"tada \":\"0O0J0P0M0V0F1B0T1C6U1F0A\",tade:\"03030L020O040P0J0Z03103Q\",\"tade \":\"0L020P0N1034\",taden:\"0Z04100H\",tadig:\"0Z181205\",tado:\"0D040O3X0P2U1O0F\",\"tado \":\"0D030O3J0P211O0L\",tador:\"0O0M0P0S\",tados:\"0D030O0Z0P0U\",tady:\"0U2U\",\"tady \":\"0U3X\",tae:\"0T1B1108\",\"tae \":\"0T2B\",\"taf \":\"03071317\",tafe:\"010M030O0R0K\",tafel:\"010N03060N020R0R\",\"tag \":\"03030D020N1W0Z0K100R1406\",\"taga \":\"1C1S1O03\",tagad:\"030B14061D3G\",tagal:\"03020D0O\",tagas:\"1C4F\",tage:\"030E0L0U0M060N0V0P040Z3S100R1C0E1O0C\",\"tage \":\"0L150M070N0O0R020Z1R1C101O0O\",tagen:\"03030N0A0Z03100H\",tager:\"030B0L040Z1U\",taget:\"0Z0X100A\",tago:\"0D0514031O1A\",\"tah \":\"0B0K0U041QJ1\",taha:\"0305042D0B0Q0D0C110R1C7K\",\"taha \":\"04351C2X\",tahab:\"1C3L\",tahad:\"1C2D\",tahak:\"1C22\",tahan:\"0B0U0D0L111K1C6X\",tahi:\"0D06\",taht:\"110J1C1P1F02\",tahtn:\"1C1S\",tahu:\"03060B8Z0U06\",\"tahu \":\"0B9H0U04\",tahun:\"0B5W\",tahv:\"1Q92\",tahvi:\"1QEQ\",\"tai \":\"0B120L020Q11111G1406150T1BHJ\",taid:\"0S0M110F1405\",taie:\"0L101505\",taien:\"0L1P\",taig:\"0S0O1B0P\",taigh:\"0S2K\",tain:\"0B050L160M0Q0S0Q112R14031B05\",\"tain \":\"0L0H0M0J114Y\",taip:\"11041B47\",\"taip \":\"1B8F\",tair:\"0L0R0M060R02\",taire:\"0L1B0R02\",tais:\"0L1X0P0D112T1B2J1D1A\",\"tais \":\"0L300P0G1B3O\",taisi:\"114A1B03\",taisn:\"1D2K\",tait:\"0L630S1A110M1403\",\"tait \":\"0L9W1403\",taith:\"0S3J\",\"taj \":\"0V0Y0Y0M15041A171O3T1Q0I\",taja:\"03030B030O030V0B111X1C1Q\",\"taja \":\"0O02112A1C3B\",tajn:\"0U030V0C1O0X\",\"tajn \":\"1O1U\",\"tak \":\"0B1I0D030R050U3P0V0L0Y2X0Z0R120814491A371F08\",\"taka \":\"0D060V07132X1A09\",takaa:\"0B0C113B\",takai:\"112Q\",takan:\"03030B4D110Q\",\"take \":\"0D020M22\",taki:\"03070M09111U13061A1F1B021F0C1O02\",takin:\"03020M0C112R\",takk:\"03040B070Z081107120W130P\",\"takk \":\"0303120M131E\",tako:\"0D0C0U100V25110H14061A031B021O03\",\"tako \":\"0V4Z110Z1O02\",takot:\"0D0M\",takov:\"0U1E\",taks:\"0B050D030V04110B1A051B061C1T1F061O07\",takse:\"11081C31\",taku:\"030D0B0Z1106\",takut:\"0B1E0D021104\",také:\"0U0S0Y0S\",\"také \":\"0U130Y0S\",talag:\"0D18\",talar:\"0O021016131E1F0J\",\"tale \":\"0L0G0O030Q0X0R020T030Z1T120F150Y1A021O03\",taler:\"0R020Z2512071A04\",talie:\"0L0H0N0A0Z0D10071206\",talk:\"0B040M1K1402\",\"talk \":\"0M15\",talki:\"0M0M\",talle:\"030G0L030M040O060R040Z0B1002110812051C4L\",\"talo \":\"0D080O030U1E0V0J0Y2H11141B141O0E\",talop:\"1P19\",talt:\"0N040Z1K100411031216140B\",\"talt \":\"0Z0O1004120L1409\",talte:\"0N030Z17120M\",talá:\"146F\",talál:\"144T\",talán:\"141O\",\"tam'e\":\"1Q4O\",\"tama \":\"030D0B1C0D0F110N1B0G1C3O\",tamaa:\"113U\",tamam:\"1F14\",tamb:\"041Z0B0A0O140P1814021B02\",tambi:\"0O1G\",també:\"0P1K\",\"tame \":\"0O061B1Q1C22\",tamen:\"030P0O1O0P240Q260T0I1102150Q1O0R\",tamis:\"0D0511271C29\",\"tamo \":\"0V35\",tamos:\"0O1O0P1L\",tamá:\"1434\",tamás:\"143A\",tanc:\"0L0D0M070O0C0Q0R0U040Y0X1A021O06\",\"tand \":\"0M0Y0N160R0J0Z0L1209\",tando:\"0O120P1E0Q0Z\",\"tane \":\"0U0W0V0L0Y131F0U\",\"tang \":\"0B850D2G0L03\",tanga:\"0302043O0B2I0D091F05\",tangg:\"0B1E0D0O\",tangu:\"043O\",\"tani \":\"0V0I1122142A\",tanie:\"0Y0X1A2A\",tanj:\"0V11\",tanke:\"0Z0910041102120D\",tanna:\"030C1010\",tanno:\"0Q0U\",tano:\"0D090O070Q0Y0U040V0514091A0G1O07\",\"tano \":\"0O050Q0T1O08\",tanon:\"0D0G\",tanp:\"0B0Z\",tanpa:\"0B1X\",\"tant \":\"030B0L3F0M0O0R050T1A0Z021402150W1B0C\",tante:\"0D0D0L0O0N050O240P1V0Q0V0R060T080Z0A15091O0I\",tanto:\"0O1A0P150Q190T0411031O0F\",tantu:\"0T19\",tanu:\"0304042Z0D020U0A0V061129130614341C12\",\"tanu \":\"04530U0E0V0F1A02\",tanud:\"1C2N\",tanul:\"1435\",tanut:\"115G\",tany:\"0B1Z14021A031N1B\",tanya:\"0B3V\",tanyş:\"1N19\",tanz:\"0N090Q1G\",tanza:\"03020Q1D\",taná:\"141N\",tanı:\"1F24\",tao:\"0D120V12\",\"tao \":\"0D0Z0V17\",taon:\"0D0Y\",\"taon \":\"0D0U\",taong:\"0D0W\",\"tap \":\"0B0K0R041F0P1N12\",tapah:\"114B\",tapi:\"03040B1V0L0214021B021O02\",\"tapi \":\"0B3O\",tapo:\"0D0M110614031B0C\",tapos:\"0D121402\",tapp:\"0Q030R04100D110N\",tapü:\"1P2R\",tapük:\"1P38\",taq:\"03140L040O020P040T081Q0B\",\"tara \":\"042M0B1C0D060O050V0Q11031A051B0C1O05\",taraf:\"03031F1D\",tarap:\"1N1S\",tard:\"03050L180O1G0P0S0Q120T091F06\",\"tard \":\"0L1T\",tarde:\"0L050O1O0P0Y\",\"tare \":\"0L080Q4V0T210V08100F151X1A041O02\",\"tari \":\"043I0Q0K0T080V0G11081B031O03\",taria:\"0M020O090P210Q050T0A100211031A031B0M\",tark:\"0B040N0A100C111U1A021B02\",tarko:\"112C\",tarl:\"0O0G0Q0U13051A021F08\",tarp:\"110S1B0R1D0O\",tarta:\"0O060P021003140Z\",tarte:\"0L030M0W0N030O0B0R020Z09120A\",tarto:\"0U03141P1A02\",tarv:\"0Q05112N\",tarvi:\"0Q05116B\",tará:\"0O0J0P0E0U090Y0B\",tarí:\"0O16\",taría:\"0O1J\",tase:\"031U0O020Q0H11041506\",\"tasi \":\"0B0V0Z02112Y1B03\",tasid:\"1C34\",tasin:\"11041C3H\",tasj:\"120L\",tasjo:\"120J\",tasy:\"0D071F0D1N0T\",\"tata \":\"0Q250T0B0V0B110Q15061A061O0J\",tatan:\"0D0H1O02\",tatay:\"0D0J\",\"tate \":\"0M090O080Q200T130V0A0Y0B15441B0H\",tatea:\"152F\",tatem:\"0M020Q030T131O0E\",\"tati \":\"0Q1N0T0A0V0V1C10\",tatio:\"0L1A0M0M0N060R0I0T0Z0Z0K100F\",tatis:\"0T0Z10021O03\",tatl:\"0D0H140L1F07\",tatlo:\"0D0T\",\"tato \":\"0P050Q680U161B051O0O\",tatr:\"03050D060T07\",tatt:\"03020N0B0Q0A110D1210140T\",\"tatt \":\"0N0C120Z\",\"tatu \":\"048W\",tatud:\"1C2J\",taty:\"1A021B0R\",tată:\"151W\",tatăl:\"151R\",\"tau \":\"0B1H150L1B66\",\"tav \":\"0U030V060Z021C11\",tava:\"0P580Q1J0T020V071003116G140H1B041C1X1D1A1F03\",\"tava \":\"0P5N0Q140V08113B1D2T\",tavad:\"1C1Z\",taval:\"112C14071C1V\",tavam:\"0P0Z0Q051105\",tavan:\"0Q080V0A112O1F03\",tavat:\"0Q03113N\",tave:\"0T090U060Y0C0Z061B2J\",\"tave \":\"1B58\",tavi:\"0Q050T1J0U0U0V1A0Y10110G1B10\",tavim:\"0T030V0F11021B22\",tavit:\"0T0V0U0J0V0L\",tavo:\"0Q110R020U03110B1B4R1D1H\",\"tavo \":\"0Q0N1B9E\",tavs:\"0Z021D111F0G\",\"tavs \":\"1D2O\",tavę:\"1B1O\",tavęs:\"1B3F\",taw:\"031V0B0C0D0G1A151Q0C\",tawa:\"03090B0N0D0O1A08\",tawag:\"0D0L\",tay:\"03180D1Q0M0M1F0S1Q0B\",\"tay \":\"03070D190M0R\",tayo:\"0D1M\",\"tayo \":\"0D2B\",tayon:\"0D0O\",taz:\"031I040I0O070Q0H0U03140E1F03\",tazi:\"03040Q0L0U0214031O02\",taç:\"0P0N\",taçã:\"0P0N\",tação:\"0P0T\",taí:\"0S1W\",taío:\"0S1N\",taíon:\"0S5G\",tað:\"131V\",\"tað \":\"1319\",tañ:\"0O09\",taý:\"1N1E\",taýý:\"1N13\",taýýa:\"1N1I\",tać:\"0V031A1B\",\"tać \":\"1A1W\",tač:\"03080U0E0V0C0Y0J1B05\",taĝ:\"1O05\",taĵ:\"1O0F\",taĵo:\"1O0M\",tał:\"1A2U\",\"tał \":\"1A1L\",taň:\"0U0A0Y0E\",taş:\"1F0P1N0E\",tať:\"0Y1I\",\"tať \":\"0Y2L\",taŭ:\"1O1S\",\"taŭ \":\"1O1L\",taț:\"150T\",taɣ:\"034M\",\"taɣ \":\"031O\",taɣe:\"031Z\",tbal:\"03020L060M050Q020R0B0U07120B1403150A1O02\",\"tban \":\"0309140Y\",tbe:\"030O0N03140O1Q0A\",tben:\"0302141D\",\"tben \":\"141F\",tbi:\"03020R030Z0210041D0O\",tbil:\"0Z0610051D0W\",tbild:\"10021D1W\",tbo:\"0O07100613041B061F0A\",tbr:\"0R02\",tbu:\"03050U021002\",tca:\"03030M020R020Y0B1402\",tce:\"030G0U0B0V0215071A0A1D0T\",tcer:\"03021D11\",\"tch \":\"0L050M0P\",tche:\"0M0G0N031005\",tci:\"03060U020Y181506\",\"tci \":\"0U040Y20\",tda:\"030A0R0212031N2X1Q0D\",\"tda \":\"1N0X\",tdan:\"030212051N2R\",\"tdan \":\"1N24\",tdana:\"1N1O\",tde:\"03070N03150T1N0S\",tdeau:\"151P\",tdi:\"1D0O1N5A\",\"tdi \":\"1N3Q\",tdie:\"1B021D0W\",tdien:\"1B041D2A\",tdim:\"1N25\",\"tdim \":\"1N2V\",tdu:\"0302\",tdy:\"1N6A\",\"tdy \":\"1N6J\",tdyl:\"1N1O\",tdyla:\"1N2A\",\"te-\":\"0L0B0P081517\",\"tea \":\"0M060O030T0A1103140315891C1Q\",teac:\"0M0R0S5E\",teach:\"0M110SIY\",tead:\"0M040P041C33\",\"tead \":\"0M051C29\",teada:\"1C22\",tean:\"0O020S1J15031C1C\",\"tean \":\"1C3B\",teang:\"0S41\",tear:\"0M030O030S1N\",\"tear \":\"0O020S65\",teas:\"0S0V150H\",teau:\"0L13\",\"teau \":\"0L1K\",teba:\"0T050Y19\",\"teba \":\"0Y1L\",tebe:\"0U110V0V0Y0I1B05\",\"tebe \":\"0U1G0V270Y0N\",tebo:\"0P0B0U0T0Y0W\",tebou:\"0U120Y14\",tebɣ:\"032S\",tebɣa:\"033O\",\"tec \":\"0U110Y1B1509\",tece:\"0O040P1G1A031F04\",teceu:\"0P0T\",teco:\"1O0M\",tecu:\"0T0R1506\",tecum:\"0T0T\",teda:\"1C1B1F041O04\",\"teda \":\"1C371O02\",tedd:\"033F1002140H\",teddu:\"035I\",tede:\"0O0L0Q0D0R050V050Z2N120L14041F08\",\"tede \":\"0Z2S12071F07\",tedes:\"0O0S0Q0D\",tedi:\"0P020V0614031F3C\",\"tedi \":\"0V071F16\",tediğ:\"1F2E\",\"tee \":\"010J0N0811151C0Z\",teeb:\"1C0L\",\"teeb \":\"1C1H\",teed:\"0R0Y1C0Y\",\"teed \":\"1C26\",teeds:\"0R17\",teek:\"010W0R06111A\",\"teek \":\"010X0R06\",teeks:\"1131\",teen:\"011J0M090R0G0Z03113M1C16\",\"teen \":\"01100M080R0I0Z02115R1C10\",teer:\"0M020R0N1105\",tees:\"1114\",teet:\"0M03111E\",tefa:\"0M030Z091F021O02\",tega:\"04110B051C0N1O09\",\"tega \":\"03031C1L1O03\",tegek:\"044Q1403\",tegem:\"1C3H\",tegen:\"0R2M1002\",teger:\"04E00O050P05\",tegi:\"0O020T021C1Q1O03\",\"tegi \":\"1C2Q\",tegn:\"03090Z0G120B141R\",tegna:\"141T\",tego:\"1A4A1O02\",\"tego \":\"1A6P1O02\",teha:\"11021C21\",\"teha \":\"1C4P\",tehd:\"0U0411301F04\",tehdä:\"1170\",tehe:\"0N1811021412\",teht:\"0N0W110Y\",\"tei \":\"0N020P0Z11121402150H1B0P\",teic:\"1D55\",teica:\"1D90\",teicī:\"1D2K\",teid:\"0N02111514021C0G\",teidä:\"112I\",teie:\"1C1G\",\"teie \":\"1C3E\",teik:\"11021B0S1D33\",teikt:\"1B051D4Z\",teiku:\"1D2F\",teil:\"0L080N1511101C12\",\"teil \":\"0N0N1C1L\",teine:\"0N05110H12061C29\",teir:\"0P0V1B02\",teisi:\"110E1B23\",teist:\"0Z02111I1B031C37\",teit:\"010H0R0L111I130714021B0S\",tej:\"030B0O030P0C0U0O0Y1M1108140B15051A1C1O051Q06\",\"tej \":\"0U060Y1S14041A1X1Q06\",tejn:\"0U0V\",tejto:\"0Y13\",\"tek \":\"0U0Q0V080Z031003148F1A0M1F1H\",teka:\"043V0B060V030Y0C11041A021B08\",\"teka \":\"044X1A031B09\",teke:\"010T0R100Z06100511271207140Y1F02\",tekem:\"112P\",teken:\"010T0R1B1404\",teki:\"0R02111J130V140E1A041F09\",teko:\"0R02111J1B0F1O0C\",\"teko \":\"11391B0L1O09\",tekr:\"030414041F14\",tekra:\"03041F1I\",teks:\"0R030V060Z061107120B1A041B0B1F031O07\",telah:\"0B71\",teld:\"03040R1L1F04\",\"teld \":\"0R18\",telde:\"03030R0X1F05\",telen:\"0R07111B141J1F03\",\"teli \":\"0Q030U0O0Y0H112S14071P0W\",telj:\"0V26141U\",\"telj \":\"0V1L\",telje:\"0V0K141W\",telji:\"0V22\",\"tell \":\"0M2I0N041002120A\",tella:\"03690O0A0Q030T0I112D\",tello:\"0Q0T\",telo:\"0O040P050Q0A0R040V031103150A1O0Q\",telse:\"03030R030Z0E1006120P\",telu:\"03020B070U0411121306150F1A05\",tely:\"0M0P110A1B02\",\"tely \":\"0M0Z1107\",\"tema \":\"0D020O0F0P090Q051B081C701O08\",temag:\"1C1H\",temal:\"010P0N02\",teman:\"0B3A0D020Z021102\",temed:\"1F18\",temel:\"150H1F1J\",temen:\"0B0B0L3O0M020O0N0P0P0Q0E0R071403\",temi:\"0Q0O110314021F2D\",temiy:\"1F29\",temm:\"030H0R0A0Z0H1105120M\",temme:\"030A0R050Z0K110A120M\",temo:\"0O080P100Q040R030Z0712061B031O0C\",temos:\"0O040P171B03\",tempa:\"0B251O08\",tempo:\"0L030O050P3L0Q1X0T131O36\",temps:\"0L6G\",tempu:\"0B090T0Z1102\",temt:\"03060Z09120L\",temte:\"0Z05120C\",temu:\"0B1I0P020T05150C1A0K\",\"temu \":\"0B2C1A0W\",tenan:\"0B0B0L2B1O03\",tenc:\"0L050M0C0O0P0P091A021O0K\",tenci:\"0O0X0P051O06\",tendo:\"0L050P0P0Q0G0R021O08\",tendr:\"0L1Q0O0P\",tendu:\"0L1Q0T04130R1O0B\",\"tene \":\"0N020Q040T030Z06121O140315051O0R\",tenem:\"0O181406\",tener:\"0O1N0Q0F0T05\",teng:\"0B0P0D0A0O3U0Q070R0212061307140O1B0B\",\"teng \":\"0D0H\",tengo:\"0O4H0Q05\",tenh:\"03030P3T0U0K\",tenha:\"03020P0W\",tenhl:\"0U0S\",tenho:\"0P3Y\",\"teni \":\"110N142G150I1O0G\",tenk:\"03050U07110N121V1B0Q\",tenke:\"03051210\",tenkt:\"120L\",tenni:\"030Y0L0C0M070N080Q090R0F0Z09100B110V120D130I1415\",\"tent \":\"031K0D040L210M070R020T020Z021402150I1B09\",\"tent-\":\"032T0L03\",tente:\"0L0N0N020O0C0P0P0Q0I0T0614031O08\",tenti:\"030P0L1L0M0D0Q060R020T1D11021B041O0G\",tento:\"0D050O0D0P0G0Q060T020U1Z0Y2Y1O0A\",tenz:\"0N020Q110R02\",tenzi:\"0Q0V0R02\",tenç:\"0P0K\",tení:\"0O1I0U050Y08\",tenía:\"0O1Z\",teoi:\"0S1E\",teoir:\"0S5G\",tepa:\"0B0O\",tepat:\"0B1D\",tept:\"151S\",teq:\"03290O020T041Q0B\",teqq:\"031O\",teraz:\"0Y321A26\",terb:\"03030B250N0J0R031002\",terba:\"0B1R\",terda:\"0B0K0M0R0R080Z02\",\"tere \":\"0N0A0Q120R080T0O0Z0Q120S150S1C2X1F021O0E\",tered:\"0M0A0Z0E1F02\",teren:\"0N070R2C0Z0M120U1A021O08\",terer:\"0N020Z0G120E\",teret:\"0Q030T040Z0J\",terh:\"0B0L0N0B0R030Z0210021407\",terij:\"0R050V0F1B081D1R\",terim:\"0B1J0T031B051F09\",terj:\"0B1P14091N0Q\",terja:\"0B2J\",terk:\"010K0B160N030R0G120G130D1F0F1O06\",terke:\"03020B1G0R061206\",terla:\"0B3N0N070Q020R020Z041O0E\",\"tern \":\"0M050N2W100A\",\"tero \":\"0O0E0Q0C0T0811021O1F\",terra:\"03150L080O0B0P100Q0R0T3O\",terre:\"030F0L1J0N030O0A0P070Q050R0A0T0914051O07\",\"ters \":\"03020M0P0N0C0R0P0Z0A10051B061F03\",terse:\"03040B240O021F0A\",\"tert \":\"0N0C0R07120I1407\",terta:\"0B1H\",teru:\"012Q0B0O0N020R1O0T0S15031O0A\",terug:\"012W0R27\",terve:\"0L030Q020R0E112J140V1O02\",teré:\"0O030U1B1402\",\"teré \":\"0U1E\",terý:\"0U10\",\"terý \":\"0U14\",\"tes-\":\"0L1K\",\"tes-v\":\"0L20\",tesi:\"0O020Q050T0B11081F10\",tesr:\"031Z\",tesri:\"034B\",tess:\"034F0L070Q1P0T061105140L\",tesse:\"033J0L0C0Q0J0T071403\",tesz:\"141P\",tesɛ:\"0325\",tesɛa:\"032S\",tesɣ:\"032X\",tesɣe:\"0330\",\"tet \":\"0N2X0T100V040Z3I10281109125W142C1A03\",tetap:\"0B2U\",tets:\"0N030Z0310021205141J\",tetsz:\"141M\",tett:\"037K0Q06112X148T\",\"tett \":\"030I143G\",tetta:\"03361120\",tette:\"033L11031451\",tetté:\"1410\",teu:\"0L1J0N070P100R030T071105\",\"teu \":\"0P0Z\",teur:\"0L2C0N030R08\",\"teur \":\"0L310R09\",\"tev \":\"0U021D6E\",teve:\"0M050P0R0R031003\",\"teve \":\"0P0Y\",tevi:\"03020Q0F0R021D3H\",\"tevi \":\"0Q0F1D7I\",tevř:\"0U0W\",tevře:\"0U0V\",tey:\"0302040T11071F0R1Q06\",teye:\"042H1F0H\",\"teye \":\"044E1F07\",\"tez \":\"0L11150E\",teza:\"0O030P0V\",\"teza \":\"0O040P13\",teá:\"0S0K1406\",teä:\"110F\",teç:\"0P04\",teč:\"030N0U0N0V030Y05\",tečn:\"0U0Z0V03\",teď:\"0U18\",\"teď \":\"0U1Z\",teľ:\"0Y2S\",\"teľ \":\"0Y1I\",teľk:\"0Y0X\",teľo:\"0Y1C\",teľov:\"0Y0X\",teř:\"0U0G\",\"teří \":\"0U0U\",teś:\"1A2G\",\"teś \":\"1A2J\",teş:\"1F0Y\",teș:\"150L\",teț:\"150T\",teɣ:\"033Q\",teḥ:\"031Q\",teḥwa:\"033C\",teẓ:\"031M\",tfa:\"030B100U13061F08\",tfar:\"03021015\",tfara:\"1015\",tfe:\"030L0N031203150C1A031F1I\",tfen:\"1F1Q\",\"tfen \":\"1F2D\",tfer:\"03050N071208\",tfo:\"100212041O02\",tfor:\"0Z021003120B\",tfu:\"030B\",tfæ:\"0Z02\",tfö:\"1006\",tga:\"0107030J0R021B09\",tge:\"010D031L0N080R0C1N0V1P0H\",tgr:\"1D0M\",tgri:\"1D0S\",tgrie:\"1D21\",tgå:\"1003\",\"tha \":\"0S260T03140O\",thai:\"0B030Q020R020S56\",thair:\"0SET\",than:\"0M24110A\",\"than \":\"0M2E110N\",thar:\"0S1T0T09\",\"thar \":\"0S49\",tharl:\"0S2K\",thas:\"0S0Q\",\"thas \":\"0S32\",that:\"0MKN141A\",\"that \":\"0MOJ1405\",\"that'\":\"0M1K\",thd:\"0M04\",thea:\"0M030N030R020S3A0T0A\",thean:\"0S5P\",theas:\"0S2T\",thee:\"0R0L\",thei:\"0M1N0N030R02\",their:\"0M28\",them:\"0M1Z0N090T07\",\"them \":\"0M28\",then:\"03040M0G0T0D0Z031205\",\"then \":\"0M0L0Z041205\",theo:\"0M020N040R040S0Q0T03\",theoi:\"0S2K\",ther:\"0L020M8H0N030R020T0A\",\"ther \":\"0M611102\",there:\"0M53\",thes:\"0M0X0T04\",these:\"0M0Z\",they:\"03020M6H\",\"they \":\"0M7H\",\"they'\":\"0M1H\",thf:\"0S12\",thfi:\"0S13\",thfid:\"0S49\",thin:\"0M9L0N050S0Q\",thing:\"0M6T\",think:\"0M6P\",thir:\"0M0G\",this:\"0M6S\",\"this \":\"0M93\",thl:\"0T02\",thn:\"0S1E\",thne:\"0S13\",\"thne \":\"0S49\",thoi:\"0S18\",thoil:\"0S4R\",thomá:\"0S49\",thon:\"0T03141J\",\"thon \":\"0L02141C\",thos:\"0M0J\",those:\"0M0Q\",thou:\"0L020M350R06\",thoug:\"0M39\",thout:\"0M0U\",thr:\"0M150S150T03\",thre:\"0M1A\",three:\"0M1G\",thro:\"0M0S0T02\",throu:\"0M0P\",ths:\"0M06\",\"thu \":\"0S0M\",thug:\"0S1J1306\",\"thug \":\"0S5G\",thui:\"0R130S18\",thuig:\"0S2K\",thuis:\"0R1H\",thv:\"0Z02130O\",thva:\"1314\",thvað:\"132B\",thy:\"0M05\",thá:\"0S1Q\",thái:\"0S1P\",tháin:\"0S3J\",tháir:\"0S3J\",thä:\"1106\",thè:\"0L06\",thé:\"0L0I\",thí:\"0S0M\",thú:\"0S1G\",\"thú \":\"0S1N\",thō:\"0T1T\",thōm:\"0T3G\",thōma:\"0T11\",thōmā:\"0T2O\",\"ti-\":\"03070B060P02\",\"tia \":\"0O020P0C0Q0F0T2X0Y0N1129150U1A021O0E\",tiae:\"0T0T\",\"tiae \":\"0T0V\",tiam:\"0Q100T2Q150H1O0J\",\"tiam \":\"0T2Q150M1O0W\",tiamo:\"0Q10\",tiap:\"0B1F\",\"tiap \":\"0B2T\",tias:\"0T0Y110B\",\"tias \":\"0P020T0Z110K\",tiba:\"030204290B100D041F04\",\"tiba \":\"0B1N\",\"tibi \":\"0T5T\",tibu:\"0T1F\",tibus:\"0T1H\",\"tic \":\"0M0L150K\",\"tica \":\"0O0X0P100Q130R030T0J0V0C150F\",tice:\"03040L050M0D0T070U020V04150J\",tico:\"0O110P0S0Q0Y0T02150G\",\"tico \":\"0O0W0P0O0Q0N\",\"tid \":\"030A0D0G0Z2N102T1232\",tida:\"03040BJU0D020O0F0P0K1B0T1P0I\",tidak:\"03030BS5\",tidar:\"1B1K\",tide:\"031K0T040Z11100T12171F061P1T\",tidel:\"1P24\",tiden:\"0Z0Y100R12101F02\",tidet:\"033H\",tidi:\"03070L030O030Q0A0T0H0Z03100N12061F05\",tidig:\"0Z03100N1206\",tidl:\"0Z0P120O\",tidli:\"0Z0V120O\",tido:\"0O1G0P121P11\",\"tido \":\"0O1P0P17\",tids:\"0Z0C10051205\",tidu:\"041V0B1U1B07\",tidur:\"0B3M\",tied:\"0M02114C14031P1D\",tieda:\"1P1J\",tiedä:\"1194\",tiek:\"0R0C0Y0E1B161D2Q\",\"tiek \":\"0R0A1B281D43\",tiel:\"0L0611061O1H\",\"tiel \":\"0L051O2W\",tiem:\"0O2U0R021B051D1U\",\"tiem \":\"1D4Q\",tiemp:\"0O3N\",\"tien \":\"0L090R100Z02111F1O12\",tiend:\"0L040O1M0R03\",tiene:\"0O970Q090R02\",tient:\"0L170M070N050T030Z0410021507\",tier:\"0L0I0N100O0Q0Q090R0B0T020Z081508\",ties:\"010N0L040M0E0R0D0T04110M1B3W1DBP1O04\",\"ties \":\"010I0L080M0J0R0G0T0411071B2J1DMK1O07\",tiesi:\"11181B25\",tiesī:\"1D2A\",tiet:\"0Y170Z0F113P120G\",\"tiet \":\"0Z0I1103120F\",tieto:\"0Y1I1124\",tietä:\"115J\",tieš:\"1D1U\",tiešā:\"1D3Q\",\"tiež \":\"0Y0X\",tifu:\"0M0E\",tiful:\"0M0J\",\"tig \":\"012P0D020N1Y0R2A0Z0Z1013121O140A\",\"tiga \":\"0B320P04100G150G1O03\",tige:\"03050L030N1F0R0L0Z111005120I1504\",\"tige \":\"0L020N0T0R0L0Z0U120F1505\",tigh:\"0M020R030Z0C1009120L1Q07\",tighe:\"0R040Z0F1009120L\",tigi:\"0D030Q030T0715041O0U\",tigo:\"0D030O0M0P0K1O07\",\"tigo \":\"0O0T0P0L1O04\",tigt:\"0N0J0Z131011\",\"tigt \":\"0N0Q0Z1C1011\",tih:\"03030B0B0U040V0911041C0H1F041Q04\",\"tih \":\"0B0K0V07\",tii:\"0D020Q020T0G112Q15191C0E\",\"tii \":\"0Q030T0G1108151K1A02\",tiin:\"113Q150I\",\"tiin \":\"0D02118G\",tij:\"03040O020R1F0V0A11041B0D1N0A1Q0A\",tijd:\"0R4W\",\"tijd \":\"0R5H\",\"tik \":\"0B120D060N0C0Z0F1009140P1B3D1D2N1F0W1P55\",\"tika \":\"0B2Q0D070U070V0B100214071B0C1D5Y1F021O0A\",tikai:\"14091B0E1D5L\",tikan:\"0B1T0D0311021O04\",tiki:\"0D0211031B2Q1O061P0E\",tikim:\"1B1G\",tikiu:\"1B1W\",tikk:\"030X0Z0C110M120Y\",\"tikk \":\"120C\",tikke:\"031L0R020Z0E110D120L\",tiko:\"0D04110G1B1H1O0M1P6V\",\"tiko \":\"0D0411051B2N1O0P1P11\",tikob:\"1P3Z\",tikol:\"11021O071P22\",tikr:\"1B48\",tikra:\"1B56\",tikri:\"1B1J\",tikrų:\"1B1T\",tiks:\"0Z0211051B1C1D11\",\"tiks \":\"1B0W1D1R\",tiksl:\"1B1M\",tikt:\"03031B0Z1D0X1F05\",tikus:\"0B0A140Y1B03\",tikė:\"1B1N\",tikėt:\"1B1W\",tilb:\"0Z1G121K130M\",tilba:\"0Z151214\",tilf:\"0Z0F120G1307\",tilfe:\"120D\",tilg:\"0Z0K12081306\",tilgi:\"0Z0E1205\",tilis:\"03090L1F0T08\",\"till \":\"0M250N06108T\",tillb:\"1018\",tille:\"0L0B0N040R040Z0S1106120R1F02\",tills:\"100N\",tils:\"0L020Z0B120C\",tilt:\"03060R030Z091102120B14061B08\",tily:\"0D0B\",tilyo:\"0D0K\",\"tima \":\"043C0O0P0P0K0Q0D0T0F0V13150M1O05\",timan:\"03030Q130Z0211041O02\",timer:\"03050T070Z0E1108120D\",times:\"030A0L040M0S0T031103\",timm:\"03060N0X0R02100J110H1402\",timo:\"0D030O0K0P0N0Q0E0T0H0V0911021B071O0A\",timp:\"154P\",\"timp \":\"153X\",timpu:\"1528\",tinai:\"1B1P\",tinan:\"0D0H11031O04\",tind:\"03020B040D0M0P0J0Z02130I150B1F081O04\",tindi:\"0D0Q130K\",tinga:\"1002130S1B3D1O06\",tingg:\"0B66\",tingi:\"0D0Z0P061B0P1O0S\",tinh:\"0P1T\",tinha:\"0P25\",tink:\"0N020R050Z02100211031B3O\",tinka:\"1B6G\",tinn:\"03030S0V1102131X\",\"tinn \":\"1337\",tino:\"0D020M040O080P060Q0C0T030U021B0J1O0V\",\"tino \":\"0D030M050O080P060Q0C1B0Q1O1B\",\"tinu \":\"0U0R0V0R0Y0M130Z1B0M\",tiny:\"041G0B110U0N0Y0L11021B02\",\"tiny \":\"0M020U0W0Y0R\",tinya:\"0B22\",tinė:\"1B0V\",\"tio \":\"0O0B0P080T2C0V13100S11091O5G\",tiom:\"1O0T\",\"tiom \":\"1O1L\",tiona:\"0L0E0M0M0N0A0O020R0B0T050Z0910021106\",tione:\"0M040N0F0Q060R040T3D0Z101011\",tioni:\"0M020N0A0T0X0Z021102\",tionn:\"0L1R\",tions:\"0L3H0M1G0N060Z051003\",tior:\"0T18\",\"tior \":\"0T0V\",tios:\"0P020T0Z1105\",tipo:\"0O0K0P0I0Q0D\",tiq:\"03080L120T091Q14\",tiqu:\"0L1T0O020P020T0I\",tique:\"0L2W0O020T05\",\"tir \":\"03020B0D0L1G0O0S0P180S0T137B1F1B1N181Q17\",\"tira \":\"03090D0J0L060O070P070Q02\",tird:\"1F0W1N17\",tirdi:\"1F171N1I\",tire:\"03040L0H0M0M0O020P090Q0S0T0515061F0G\",\"tire \":\"0L070M070P040Q0Q0T05\",tired:\"0M0K\",tirm:\"03020O0213071F0Z1N0N\",tirme:\"0O031F191N0S\",tirðu:\"131W\",tisc:\"0N160Q020R0V\",tisch:\"0N1Z0R16\",tisk:\"0U040Y0I0Z0Y10151106121O1D1C\",\"tisk \":\"0Z0Q100D121A\",tiske:\"03030Z0F1102120F\",tiskt:\"100M\",tisn:\"03040T0W\",tisne:\"0T0Y\",tiss:\"030C0L0A0P020Q040T15110C\",tissi:\"030L0Q040T17\",tisz:\"141F\",tiszt:\"141H\",\"tit \":\"030O0L140T0W0U180Z0F100F110W1405151S1C0I\",tito:\"0D020O060Q1P0T03110314071O04\",\"tito \":\"0D030O060Q1N1O02\",titt:\"100U1109\",titta:\"100T1106\",tiu:\"0P0H0T1A110215281B021O4Q\",\"tiu \":\"0P0J15321O4O\",tiuj:\"1O13\",\"tiuj \":\"1O1O\",tium:\"0T1K1B03\",\"tium \":\"0T1N\",tiun:\"0T0415041O1T\",\"tiun \":\"1O3L\",tius:\"0T0T\",\"tius \":\"0T0U\",\"tiv \":\"0N070V0A0Z0A100A120G15121Q1C\",\"tive \":\"0L0K0M100N070P0U0Q070Z041205150D1O0F\",tivo:\"0O0Y0P0Z0Q0Q0U021O05\",\"tivo \":\"0O0W0P0W0Q0R1O05\",tivt:\"0Z021005120A\",tivē:\"1D0X\",tivēt:\"1D1W\",tiw:\"030E040P0D04\",tiwa:\"0D06\",tiy:\"030904150D061F5T\",tiya:\"041D0D061F1W\",tiyac:\"1F28\",tiyo:\"1F4O\",tiyor:\"1F69\",tizi:\"03040Q0L\",tiä:\"110F\",tiæ:\"0T02\",tiç:\"0P06\",tiè:\"0L09\",tié:\"0L081403\",tið:\"131C\",\"tið \":\"1326\",tió:\"0O0K\",\"tió \":\"0O0R\",tiö:\"1107\",tiú:\"0S0N\",tič:\"0V0U\",tiē:\"0T09\",tiĝ:\"1O0S\",tiĝi:\"1O0O\",tiğ:\"1F25\",tiği:\"1F2G\",tiğin:\"1F2H\",tiķ:\"1D0R\",tiķi:\"1D0U\",tiņ:\"1D0J\",tiō:\"0T03\",tiş:\"1F0G\",tiš:\"0U050V0Z0Y071B0E\",tiť:\"0Y0L\",\"tiť \":\"0Y10\",tja:\"03030Z021002130F140Q1N0F1O031Q03\",\"tja \":\"130F141S\",tje:\"03080R0R0Z0G1006120C14021N1U\",\"tje \":\"0R291404\",tjek:\"0Z061N2B\",\"tjek \":\"1N1N\",tjen:\"0Z0R120N\",tjene:\"0Z0F120K\",tjent:\"0Z0F\",tjer:\"0Z081206\",tjes:\"0R0N\",\"tjes \":\"0R0U\",tji:\"0110\",tjie:\"0125\",\"tjie \":\"011Y\",tjo:\"1004\",tju:\"0303100B12031406\",tjá:\"1306140F\",tjä:\"100J\",tjän:\"100H\",tjå:\"0Z031202\",tjål:\"0Z091205\",\"tka \":\"0U0R0V0A0Y0U111514041A0N\",tkan:\"03020B1Q0R0211051A0D\",\"tkan \":\"0B341109\",tke:\"03190U020V040Y08110T140M1C0M\",tkez:\"141C\",tki:\"03080V04110V1A1J1F0M\",tkl:\"0U021D0K\",\"tko \":\"0U050V070Y3P117S1A1I1B02\",tku:\"030A0B0F0U0B0V050Y0F110S1A071F021O02\",\"tku \":\"0B0T0U0J0V050Y0R11021A09\",tky:\"0U0C0Y11\",\"tky \":\"0U0K0Y1S\",tkä:\"1117\",tkö:\"111Q1404\",\"tkö \":\"1132\",tký:\"0Y0N\",\"tl \":\"0U0J\",tlar:\"130M1F0S1N3Z\",\"tlar \":\"130P1F0C1N1I\",tlary:\"1N3G\",\"tle \":\"0M131C0K1F0A\",tlem:\"030H0M0214021C0I1F02\",tlen:\"0U051308142Y1A021F03\",\"tlen \":\"141Z\",tler:\"0N091F141N0N\",tles:\"0M041C2C\",\"tles \":\"0M031C45\",tlesi:\"1C1O\",tlh:\"1QQV\",\"tlh \":\"1QNX\",tlha:\"1Q46\",tlhe:\"1Q56\",tlhi:\"1Q3Y\",tlho:\"1Q82\",tlhoy:\"1Q53\",tlhu:\"1Q3V\",tlhut:\"1Q51\",\"tli \":\"03040U1P0Y0B13061F0O\",tlic:\"03020N1O1F02\",tlich:\"03040N2S\",tlig:\"0Z0G100T120M\",\"tlig \":\"0Z081008120I\",tlik:\"010S1B081C0S1F03\",\"tlik \":\"010P1C1A1F03\",tlo:\"0D0B0N020R020U070V060Y07\",tlon:\"0D0D\",tlong:\"0D0O\",tlu:\"030A0U05130D1C0D1F161Q04\",\"tlu \":\"13051F0W\",tly:\"0M0K1B031N1M\",\"tly \":\"0M121N1N\",tlı:\"1F0C\",tmad:\"1F071N13\",tmady:\"1N1I\",tmag:\"03041N0U\",tmak:\"1F0E1N12\",\"tmak \":\"1F0H1N19\",tmal:\"03071F031N0V\",tmaly:\"1N17\",tme:\"03280M070N0214031B041F831N8L1Q0N\",tmed:\"030G1F181N19\",tmedi:\"1F1G1N1N\",tmeg:\"1N2L\",tmegi:\"1N3J\",tmek:\"1F2R1N3S\",\"tmek \":\"1F3E1N49\",tmel:\"03061F0K1N35\",tmeli:\"1F0P1N4B\",tmem:\"1F0W\",tmen:\"03050D020M0D0N0214071F1B\",tmey:\"1F1T1Q0U\",tmeye:\"1F1K\",tmis:\"0R0T1C0N\",\"tmis \":\"0R13\",tmoe:\"010J0R0R\",tmoet:\"010K0R0V\",tmu:\"031F0B0J1F02\",\"tmu \":\"0B11\",tmä:\"10031N27\",tmäg:\"1N26\",tmäge:\"1N2T\",tmän:\"1N0X\",\"tne \":\"0T4D0V060Y0X0Z0310021204140J1A081C0Q\",\"tnek \":\"140Y\",\"tni \":\"030G0U020V091308143G1A0A\",tnin:\"0Z1H100L121C1312\",tning:\"0Z1T100L121C1323\",tno:\"0U0I0V180Y0C14031A041O02\",\"tno \":\"0U020V17\",tnu:\"030C0U020V050Y0E13031C0Z\",tnud:\"03051C18\",\"tnud \":\"1C31\",tny:\"0B0Z1A0D\",tnya:\"0B1Y\",\"tnya \":\"0B3T\",tná:\"0U0H0Y0O1408\",tné:\"0U0I0Y0Q141D\",\"tné \":\"0U0N0Y141404\",tnék:\"141J\",\"tnék \":\"141M\",tní:\"0U1F0Y0E\",\"tní \":\"0U1L0Y0J\",tný:\"0U0L0Y13\",\"tný \":\"0U0U0Y1I\",tnā:\"1D0M\",tně:\"0U0J\",\"tně \":\"0U0R\",\"to'\":\"0R031F031Q08\",\"to-\":\"0P041102\",\"toa \":\"112G\",toar:\"152Z\",toare:\"152Q\",toat:\"153L\",toate:\"152M\",toată:\"1523\",\"tob \":\"1P3E\",tobe:\"0B050M060N030R040Z0F1002\",tober:\"0B0A0M080N050R050Z0I1002\",tobs:\"1P1H\",\"tobs \":\"1P1O\",tobu:\"0Q0E0U0S0V0E0Y0J150Q1A0J1B0U1N0J1O02\",tobus:\"0Q0E0U130V110Y0O1A0V1B1C1N0Q1O03\",toca:\"0O0L0P0K1509\",toch:\"0L020N0A0R0X\",\"toch \":\"0R16\",\"tod \":\"0N090Z0P100L120B1417\",toda:\"0M170O2Y0P1K14051B02\",\"toda \":\"0O140P10\",todas:\"0O1B0P10\",todav:\"0O1J\",today:\"0M1O\",tode:\"0N040T030Z02113Q12061504\",todel:\"1183\",todo:\"0O6C0P3T1O04\",\"todo \":\"0O4S0P1V1O03\",todos:\"0O3R0P32\",\"toe \":\"013U0R13\",toen:\"0R1A0Z02\",\"toen \":\"0R1P0Z02\",\"tog \":\"0D040V0C0Z20101E\",toga:\"0Q0F0V0Y140X1B09\",\"toga \":\"0V2E\",toge:\"0M0J0T030Z0G120H\",toget:\"0M0R0Z0J120G\",tohl:\"0N040U2G\",tohle:\"0N070U3E\",toho:\"0U1X0Y1F\",\"toho \":\"0U2C0Y1Q\",\"toi \":\"0L2K0Q0H11261A05\",toim:\"111R1C0G\",toimi:\"113M\",toin:\"1115\",toir:\"0L0Z\",toire:\"0L1L\",tois:\"113R\",toise:\"112U\",toisi:\"112Q\",toist:\"113E\",toiv:\"111N\",toivo:\"113A\",toj:\"0U0F0V150Y0R110H14061A031B3I1D0K1O451Q07\",\"toj \":\"0V051B1J1O4G\",toja:\"0V04110M1B1Y\",tojas:\"1B2G\",toje:\"0V0511091B0V\",\"toje \":\"0V0B1B1U\",toji:\"0V0Y1B06\",\"toji \":\"0V291B09\",tojn:\"1A021O27\",\"tojn \":\"1O4B\",toko:\"0B0L0V0E110S14031A03\",toks:\"110D1B0Y\",\"toks \":\"1B1Z\",\"tol \":\"0B060D020Y0O0Z0A10051P1R\",told:\"0M2W1402\",\"told \":\"0M3Y1402\",\"tole \":\"0M050Q020U0H0Y0X0Z0812041A0F\",tolo:\"0B1V0P030Q0711021F041O0A\",tolon:\"0B3M1F041O06\",tolt:\"0Q030Z061007120B1407\",\"tom'\":\"0M1711031A051FDE\",\"tom'a\":\"1A051F3O\",\"tom'l\":\"1F1G\",\"tom's\":\"0M1N\",\"tom'u\":\"1FD5\",\"toma \":\"0O0A0P050U870V3O0Y3K1A3B1D2A1N59\",tomam:\"0O020P021D9D\",tomar:\"0O0Y0P0M\",tomas:\"0D0H0O06110M1A0A1BSG1O1F1PP0\",tomb:\"0B050L11140515051O03\",\"tome \":\"0O020P040U0W0V2R1B08\",tomem:\"0U2H1A0Q\",\"tomi \":\"100311M6145R1B021C61\",tomia:\"1144\",tomig:\"1C1S\",tomil:\"0U03118T1C7J\",tomin:\"11A51410\",tomm:\"0Z06111G140F\",tommi:\"113G\",tomn:\"0L030U07141S1A02\",tomna:\"141U\",\"tomo \":\"0O050P021B561OFI\",tomob:\"0L020Q0J0U030V151B2Y1F021O08\",tomom:\"0V1A0Y13\",tomon:\"14021O1I\",tomor:\"0M12\",tomot:\"1419\",tomov:\"0U6Y0V1T0Y4O\",tomow:\"1A1F\",toms:\"0N0S0R0W0Z1R1015120R1DHH1P0P\",\"toms \":\"0M020N1B0R170Z241015120Q1B031DSG1P0R\",tomu:\"0U140V170Y0L110K1B3A1D1R1N69\",\"tomu \":\"0U1G0V330Y0P1B1Z1D4H\",tomui:\"1B4V\",tomuň:\"1N78\",tomy:\"1N4G\",\"tomy \":\"1N2O\",tomyñ:\"1N1V\",tomyň:\"1N1O\",tomá:\"0O0W0P090S4P0U050Y0E\",tomás:\"0O130P0B0SGW\",tomą:\"1B1N\",\"tomą \":\"1B3E\",tomův:\"0U0S\",\"ton'\":\"1F2A\",\"ton'a\":\"1F1B\",\"ton'd\":\"1F1L\",tona:\"0O020P020Q02110Q14051B091N1I1O02\",\"tona \":\"111L14031B041N221O02\",tonba:\"140Z\",tonc:\"0O0J\",tond:\"041Z0R0M10021N141O05\",tonda:\"1N1J\",tong:\"0B0I0D1K0M020R03\",\"tong \":\"0B0Q0D2S0R04\",tonia:\"0Q0S0T1N1103\",tonis:\"11221B031C29\",tono:\"0O020P040Q0914021A021B071O0R\",tonu:\"0U0T0V060Y0L110A15061A0F1F02\",\"tonu \":\"0U140V0F0Y0Q1A0P\",too:\"01090D050M1C0R08110N1C1D1P0M\",\"too \":\"0D080M1D110A\",took:\"0M0S\",\"took \":\"0M13\",toom:\"0R031C0Y\",tooma:\"1C2D\",\"top \":\"0M0Q0Q030R0G0Z0A1F03\",topl:\"0V081F0X\",topp:\"0M080R0C0Z0C100B120P130D\",toppe:\"0M0B0R0G0Z0E1002120D\",toq:\"0O020P030T021Q03\",\"tora \":\"043O0O030P050T080U060V0E10091A051B041F03\",toran:\"0B090Q0T0V0F1B0J1F0C\",\"tore \":\"0M0B0Q1G0T0G0Z0J120I\",\"tori \":\"0Q180T04110G150Y\",torie:\"0M040Q0K0Z0H1004120N150E\",torn:\"0D020O080P0W0Q1S100E11041408\",torna:\"0O020P0M0Q1110031403\",\"tort \":\"0L0C0Z0H100F120F14041506\",toru:\"0T0K152B1F07\",torul:\"152Y\",tory:\"0D030M0I1A03\",\"tory \":\"0M0P\",toré:\"0Y1N\",\"toré \":\"0Y1O\",torý:\"0Y1F\",\"torý \":\"0Y1E\",tosa:\"0O030P020Q040S0O1103141L\",tosan:\"1418\",tosi:\"0Q02111V1B061F031PCX\",\"tosi \":\"0Q0211311B091PEQ\",tossa:\"112B\",tost:\"0Q110U0D110D1A021B0D\",\"tot \":\"011X0D020N050R1J0T06110314231526\",totde:\"151P\",toto:\"0D0E0R020T040U0O0Y43\",\"toto \":\"0T040U0V0Y4Y\",totoo:\"0D0G\",tott:\"1112146G\",\"tott \":\"1438\",totta:\"111V142T\",tou:\"0L8F0M070P5U0U0X0Y061106\",\"tou \":\"0P6U0U0Q0Y0A\",touj:\"0L28\",toujo:\"0L3R\",tour:\"0L1T0M040N030P02\",\"tour \":\"0L1C\",tourn:\"0L1A\",tous:\"0L2L\",\"tous \":\"0L4A\",tout:\"0L7P1105\",\"tout \":\"0L9F\",toute:\"0L3R\",\"tov \":\"0U020Y0X\",tova:\"0Q030U0Z0V0L0Y0R11061B03\",tová:\"0U0C0Y0A1415\",továb:\"1415\",tow:\"0M0B1A1Y\",towa:\"0M051A1Y\",\"toy \":\"0O3H\",toz:\"140Q1F02\",toñ:\"0O02\",toč:\"0U040V030Y0U\",točn:\"0Y19\",toņ:\"1D0E\",tož:\"0U0L0Y0H\",tože:\"0U0X0Y0Q\",\"tože \":\"0U1A0Y0W\",toț:\"1512\",toți:\"151R\",\"toți \":\"1520\",tpa:\"030311021B031D0K1Q07\",tpaka:\"1D1R\",tpl:\"1A03\",tpo:\"0V05\",tpr:\"1D0K\",tprāt:\"1D1W\",tpuno:\"0V1L\",tq:\"030C0T0V1Q04\",tqu:\"03030T231Q05\",tque:\"0T3P\",\"tque \":\"0T3X\",\"tr \":\"0U0H1A06\",\"tr-\":\"151P\",\"tr-o\":\"151T\",\"tr-o \":\"1528\",trab:\"0D0U0O3C0P2Q0T08\",traba:\"0D1J0O4D0P3F0T03\",trade:\"0M030Q100T031003\",tradu:\"0L0Y0O0Q0P0P0Q0H150J1O0T\",trai:\"0L2G0M0L0N020O070P080Q030R031B061O02\",train:\"0L2M0M0K0N030R04\",trand:\"0N080O020P020R0A0Z0J1008120814051O05\",trang:\"0D020L190M0C0P0C1O0L\",trapp:\"010G0Q040Z0310051205\",trar:\"0L030O1I0P1G0Q0U0T0B10071305150B\",\"trar \":\"0O120P1C1006\",\"tras \":\"0O270P0G0T0B150G1B0D1O0E\",trast:\"0O061D1W\",trata:\"0D040O0X0P0H0Q05150C1A021O02\",trati:\"0L050M030Q040R030U110Y17\",trau:\"0N0Y1B1V1D1J\",trauc:\"1D1R\",trauk:\"1B3S1D1M\",trava:\"0L4U0P04\",traŭ:\"1O0X\",traž:\"0V0W\",traži:\"0V21\",trea:\"0M090T02151N\",treb:\"03070N030Q0N0V4F0Y3Y15C81O02\",treba:\"0V980Y0K151T1O02\",trebu:\"0Y3F15CX\",trec:\"0N030O040Q020T031002153D\",trecu:\"152L\",tred:\"03030Q020R040T030Y0R0Z0Q10041207\",tredi:\"0L020Q020Z0G\",\"tree \":\"010I0M0A\",trei:\"0L020N0K0O080P0J0Q0B0R0L152C\",\"trei \":\"0P0H0Q0B152F\",trein:\"0O0A0P040R0S\",trek:\"010W03020R0Z120I\",\"trek \":\"010S0R09\",trekk:\"03020R0Q120F\",\"trem \":\"03040N020P0J0T1J0U04150C1A02\",\"tren \":\"03080D0B0O0R100215071F0A1O04\",treng:\"0M030N0A0R040Z04122S\",trer:\"0L120Q050R020Z061004120B1505\",\"trer \":\"0L1N0Z04\",\"tres \":\"0D020L2V0O1Y0P020T1S0Z02\",tress:\"0L070M060N020P020R02100N11041402\",tretn:\"0Y17\",trett:\"0Q050Z061008120C\",trev:\"0O070P04100E\",trie:\"0L060M0R0N0A0R030T020Y0O\",tried:\"0M0U0Y0L\",trink:\"0N121O1F\",trino:\"1O1E\",\"tris \":\"0T1T1B1X1O0G\",troc:\"0N040O020P080T030U0Y0Y1F1A0W\",troch:\"0U1A0Y1O1A1F\",trodd:\"100S120O\",trodo:\"1B32\",troe:\"0R040Z0N\",troed:\"0Z0O\",troi:\"0L1C0P030T071O02\",trois:\"0L24\",troj:\"0T0B0U0A0V020Y0C1A041O0V\",\"trop \":\"0L32\",tropp:\"0Q22\",tror:\"0T060Z1O101R122C\",\"tror \":\"0T030Z21101R122C\",\"tros \":\"0O370P120T080V0B1B051O03\",trot:\"010J0L020N070R081008\",trots:\"010K0R0A1006\",trou:\"01150L2Z0M0B0P0R0R190U061504\",\"trou \":\"01150L040P0O0U04\",trouv:\"0L4K\",trouw:\"0R1P\",trova:\"0Q210U031O0F\",trovi:\"0Q040U021O2D\",trp:\"0U0C0V060Y0D\",\"tru \":\"03040U080V0B0Z0415BG1A021D151O03\",truc:\"0L0D0M0C0O0A0Q020R030T021507\",trui:\"0L0G0O090P080QBP0R050T04150B1O0X\",truir:\"0L070O060P050QBQ\",truis:\"0L040R021O1C\",truk:\"0B080U020V030Z0512051A021B0S1O03\",\"trum \":\"0N030R050T220Z021A05\",trup:\"15041B0U\",trupu:\"1B1Q\",trv:\"0U0D0V030Y0H\",\"try \":\"0M120U091A08\",tryc:\"100E1A03\",tryg:\"0Z021002120A1308\",tryi:\"0M0G\",tryin:\"0M0M\",tryk:\"0Z0E1002120O\",trykk:\"0Z06120L\",trz:\"1A4Y\",trze:\"1A3E\",trzeb:\"1A33\",trzy:\"1A2Z\",\"trzy \":\"1A1K\",trzym:\"1A2E\",trá:\"0O0F0P130S0W0U140Y1O130I140B\",trál:\"0P0K0U0E0Y16140I\",tráli:\"0P0P0U0J0Y1C140D\",trás:\"0O0D0P0I\",tráv:\"0U0P0Y19\",trâ:\"0P02150I\",trä:\"0N0D101V\",träd:\"100S\",träf:\"1017\",träff:\"1017\",trå:\"0Z0410091202\",træ:\"0T020Z101203130B\",\"træ \":\"0T030Z0J\",træe:\"0Z0L\",træet:\"0Z0E\",træk:\"0Z0J\",trækk:\"0Z0J\",træn:\"0Z0A\",træt:\"0Z0J130G\",\"træt \":\"0Z0I\",trè:\"0L24\",très:\"0L3J\",\"très \":\"0L5X\",tré:\"0L0R0O0A0U0313091402\",\"tré \":\"0L0N0O0D\",trê:\"0L030P12\",três:\"0P1A\",\"três \":\"0P1M\",trí:\"0S1J0Y051309\",\"trí \":\"0S0X0Y08\",trò:\"0Q03\",tró:\"0O0H0P0314041A05\",\"tró \":\"0O0J\",trô:\"0L040P04\",trö:\"100N1308\",tröt:\"100M\",trött:\"100M\",trø:\"0Z04120D\",trøs:\"0Z02120C\",trøt:\"120E\",trøtt:\"120E\",trú:\"130X\",trā:\"0T051D2F\",trād:\"1D1U\",trādā:\"1D4Q\",tră:\"153H\",\"tră \":\"152Z\",trăi:\"1524\",trē:\"0T03\",trī:\"0T021D1I\",trīs:\"1D0W\",\"trīs \":\"1D1R\",trū:\"1B0C\",\"ts-\":\"0L09\",tsaa:\"0D0A1105\",tsak:\"1B1N\",tsaky:\"1B2C\",tsal:\"11031C0L1F02\",tsalt:\"1C1H\",tsat:\"0Z0410091216\",tsatt:\"0Z0210071216\",tsb:\"10021202\",tsc:\"0N0Z0R02\",tsch:\"0N2F0R09\",tsd:\"140E\",\"tse \":\"04B40D0F0R06111L14061C0R\",tsem:\"0304111314041O03\",tsen:\"030H0R0G100D111A120614071C0H1F02\",tset:\"03030N020Z04110G120I1C0G\",tsett:\"03021108120H\",tseɣ:\"031U\",\"tseɣ \":\"0345\",\"tsi \":\"042O0T02110Q1C0G\",tsia:\"11031C14\",tsiaa:\"1C29\",tsid:\"0M0A1B061C0U\",\"tsid \":\"1C1L\",tsin:\"03020D061002110G1B021C1M1F03\",\"tsin \":\"110U1C3V1F04\",tsio:\"1C0X\",tsioo:\"1C29\",tsis:\"11071B12\",tsit:\"11061B1B\",tsiti:\"1B2M\",tsl:\"0R05100912021D0G\",tsla:\"0R0K\",tsm:\"1002\",tsn:\"0R02\",tso:\"0D051116\",tsok:\"0D061103\",tsp:\"0N040R0210061B04\",tss:\"0N021402\",tste:\"0N060R19\",\"tste \":\"0R1D\",tsus:\"03021C30\",tsuse:\"1C3V\",tsust:\"11021C1S\",tsv:\"1002\",tsw:\"0302040C\",tsy:\"1P0F\",tsz:\"14251A02\",\"tsz \":\"141O\",tszi:\"141G\",tszik:\"141J\",tsä:\"0N021007110C\",tså:\"1002\",tsé:\"140V\",tség:\"1425\",tsége:\"1416\",tsı:\"1F0C\",\"tt-\":\"0324\",ttaa:\"117Z\",\"ttaa \":\"11GQ\",ttac:\"0L040M060Q0R0T081003\",ttad:\"03030Q04101O140P\",ttade:\"0302101L\",ttai:\"0L061118\",ttaj:\"03041119\",ttaja:\"112S\",ttam:\"03090Q0I0T061126143C\",\"ttam \":\"0T06143I\",ttama:\"113L\",ttan:\"030F0L030Q0K1008111Q14091F05\",ttanu:\"113J\",ttar:\"030Y0Q0W10141106130D1F03\",\"ttar \":\"100X130I1F02\",ttat:\"030Q0Q1F100E1408\",ttato:\"0Q111403\",ttav:\"0Q0A112W\",ttava:\"0Q04116H\",tted:\"031D0M0E0Z0R1414\",\"tted \":\"03030M0J1416\",ttedd:\"0331\",ttede:\"0Z0W\",ttei:\"0L0A0N02111P1402\",\"ttei \":\"112L\",ttek:\"030B111T141D\",\"ttek \":\"141E\",tteko:\"1138\",ttel:\"010J03040N0J0R070Z0F1004113P120E140J\",ttele:\"0Z04114B1404\",tteli:\"0R041138\",ttels:\"0N020Z0C1003120C\",ttem:\"030D0M020Q021002145G\",\"ttem \":\"0304145S\",\"tten \":\"03080M0I0N230R2C0Z1P101O114C121T140K1F0D\",ttend:\"0L2Q0M060Q050R040Z03\",ttene:\"0Q05120F1402\",ttent:\"03020L1D0M080Q070T031402\",ttera:\"0L030Q0O0T130Z02\",ttere:\"0M020N020Q0W0R030T060Z07120C140A\",ttes:\"030B0L0X0N0E0Q030Z0410041207140A\",\"ttes \":\"0L1K0N060Z0212061402\",ttet:\"030P0N080Q080T020Z0V100C110B1216140I\",\"ttet \":\"0N0B0T020Z11100B110N1215\",ttf:\"030710021204\",tth:\"03060M02130O140M\",ttho:\"141I\",tthon:\"141M\",tthv:\"1314\",tthva:\"132B\",ttig:\"0Q0A0R0A0Z0T100I120T\",ttigh:\"0Z0B1006120G\",ttii:\"111V\",ttiin:\"114C\",ttim:\"03020Q1G110B1F16\",\"ttim \":\"1F1L\",ttima:\"0Q171104\",ttin:\"030C0M0V0Q0V0R060T03110D131414021F0J\",ttina:\"0Q0R1103\",tting:\"0M160R08\",ttir:\"0L06132E1F0H\",\"ttir \":\"13481F0C\",ttiv:\"0Q0O110O\",ttiğ:\"1F19\",ttiği:\"1F1Q\",ttl:\"03080M0L0N02100413071Q03\",ttle:\"0M120N02\",\"ttle \":\"0M1C\",ttn:\"0310100L1402\",\"tto \":\"0QEA0T021002110B\",ttom:\"1002111I\",tton:\"0L020M030Q0M10051102\",ttor:\"0Q1M1003110F\",ttore:\"0Q0Q\",ttori:\"0Q0T1111\",ttos:\"0Q0M\",ttr:\"030X0L1A0M020Q0J100X1204\",ttre:\"03050L1M100O\",\"ttre \":\"0L2H100N\",tts:\"030B100512051404\",\"ttu \":\"030D0L04112413281C0H1F0A\",\"ttum \":\"0306131X1F0A\",ttun:\"03060N0210021112140G1F02\",ttur:\"03090Q0H131K\",\"ttur \":\"132F\",ttv:\"1003\",ttw:\"0327\",ttwa:\"0327\",ttà:\"0Q0H\",\"ttà \":\"0Q0S\",ttá:\"140P\",ttä:\"0N0211CR\",\"ttä \":\"11DI\",ttäi:\"1111\",ttäm:\"1115\",ttämä:\"112B\",ttäv:\"111R\",ttävä:\"1140\",ttää:\"114I\",\"ttää \":\"11A2\",tté:\"0L071413\",\"tték \":\"1411\",ttél:\"141G\",\"ttél \":\"141J\",ttò:\"0Q03\",ttö:\"1115\",ttü:\"140I1F03\",ttı:\"1F1F\",\"ttı \":\"1F12\",ttő:\"140C\",\"tu'\":\"1Q4B\",\"tu'l\":\"1Q5K\",\"tu'lu\":\"1Q91\",\"tu-\":\"03020B06\",\"tua \":\"0B0R0O020P0N0Q1E0T2E111V\",tual:\"0M0F0O0E0P090Q070U02150C1A041B041O02\",tuam:\"0T11\",\"tuam \":\"0T13\",tuan:\"0B0R0D030Q0H1102\",tuas:\"0B050P030T06120E1O04\",tuasj:\"120E\",tuba:\"0T021C0K\",\"tuba \":\"1C1E\",tubi:\"04290D0D\",tubig:\"0D0P\",tubl:\"0R0W\",tubli:\"0R17\",tubw:\"041Z\",tubwi:\"043I\",\"tud \":\"0O0E0T0G0U02141L1C3M\",tuda:\"0P1H140A1C0G1O07\",tudar:\"0P0W\",tudee:\"010K0R0L\",tuder:\"030V0R0J0T050Z0L100I120Q\",tudia:\"0L0V0O1V0Q1V150R1A05\",tudj:\"142G\",tudja:\"141Q\",tudn:\"0U02142J\",tudni:\"140Y\",tudná:\"140Y\",tudo:\"0P2H0T080U0A0Y0B147C1O031P16\",\"tudo \":\"0P2Y0T081O02\",tudod:\"1420\",tudok:\"141U\",tudom:\"143V1P0I\",tuds:\"1417\",tudsz:\"141A\",tudt:\"142D\",tudta:\"1423\",tudy:\"0D050M0K\",tudö:\"1P1D\",tudön:\"1P1L\",\"tue \":\"0L0A0N050Q0P0Z02\",tuf:\"03120M030Q03\",tuge:\"0D020N020R031C0Q\",tugev:\"1C1O\",tuh:\"0B1G0D050N020U09110I1F061Q06\",\"tuh \":\"0B1C\",tuha:\"0B0L0D06110E1F07\",tuhk:\"0B0R1105\",tuhka:\"0B1H110B\",\"tui \":\"0T1B112W150C1B09\",tuig:\"0R0L0S0Z\",tuige:\"0R080S2T\",tuin:\"0D020R0J110I\",tuir:\"0Q020S0X\",tuis:\"010F0T0I110I\",tuj:\"040J0B0H0U0W0V0B0Y0P11081A0L1O0E1Q0Y\",tuje:\"0U0U0V0B0Y1011031A0I\",tuju:\"0B0X0U03\",\"tuk \":\"0B7D0R0A14101F06\",tuke:\"030311051C0X\",\"tuke \":\"1C26\",tuks:\"0303111Y\",tukse:\"113P\",\"tul \":\"03021404159J1C0L1Q1A\",tule:\"03020T07100311511C2Y\",\"tule \":\"112W1C1S\",tuleb:\"03031C1Z\",tulee:\"114N\",\"tuli \":\"0D020T07112Y1C1L\",tulit:\"0T0V110M\",tull:\"0303111Y1209\",tulla:\"0302112S\",tulo:\"0D0S0O030P030T02110W1O0D\",tulog:\"0D0N\",tulon:\"0D0G11031O02\",tulu:\"0D0E0T08150W1F02\",tulun:\"0D0K\",\"tum \":\"03040N060R020TB90Z02100313351B1P1F0H\",tuma:\"030304450D0S0P0H110U1B07\",\"tuma \":\"046G0P051105\",tumi:\"0D0B110E1C0Q1O02\",tumu:\"0B090D0A0T0611021F02\",\"tun \":\"03030N1J110J13091F06\",tunay:\"0D0G\",tund:\"0N0L0T06100A1206130X1C1D\",tundu:\"130V1C1E\",tung:\"04420B140D0K0N160Z06100712081315\",tunga:\"045L0B0D1002\",tungk:\"0D0W\",tungu:\"131Z\",tunk:\"110214351A02\",\"tunk \":\"1437\",tunn:\"0M020Q0310041121130A1C1X\",tunne:\"0L020M020Z021003112W1C2U\",tunt:\"030B0T0511211B03\",tunu:\"0T02112D1C0O1F05\",tunud:\"1C1L\",tunut:\"115N\",tuny:\"0B0Z\",tunya:\"03030B1Y\",tunz:\"041K\",tuo:\"0O020P020Q1H0T0Z115B1B26\",\"tuo \":\"0Q1I0T0X112T1B14\",tuoi:\"0Q0U1104\",\"tuoi \":\"0Q0U\",tuoj:\"1B11\",tuoja:\"1B1F\",tuol:\"11101B04\",tuom:\"112E1B02\",tuoma:\"112Y\",tuomo:\"112I\",tuon:\"11161B0C\",\"tuon \":\"112F\",tuor:\"0T0O1104\",tuot:\"111H1B0B\",tuota:\"112S1B04\",\"tup \":\"0B0M0U071F091Q0L\",tuq:\"03021Q1V\",\"tura \":\"031P0D070O160P120Q0U0T0X0V0815111A061O07\",turab:\"043C1F02\",\"ture \":\"0L4X0M160Q040T030V090Z021O03\",\"turi \":\"046A0T05110715161BB91O05\",turim:\"1B2G\",turiu:\"1B6N\",turma:\"0P020T041F0D1N14\",\"turn \":\"0M0J\",turne:\"0L020M0K0T02\",turo:\"04110D050O090P080Q080T04150E1O0N\",turp:\"0T0411031D11\",turpi:\"0T031D2F\",turt:\"1B0U1Q08\",turu:\"041D0B0S0D020T1S0V031F0H\",turum:\"0T0Y\",turun:\"0B1C1F02\",turus:\"0T0Y\",turė:\"1B2Q\",turėj:\"1B2R\",turėt:\"1B1T\",tusa:\"03060B070S0Q\",\"tusa \":\"03030S32\",tuse:\"1008120A1C1P\",\"tuse \":\"1C1V\",tusi:\"03060O020P020Q020Z0C11021B041C0E\",tusin:\"0Z0E1103\",tuss:\"010N03060R0J1102\",tusse:\"010P0R0Q\",tust:\"0N0311141C1M\",\"tust \":\"0N061C2N\",\"tut \":\"03040B030N0I1109151H1C111F02\",tuta:\"0Q040T0311051A0W1F081O0V\",tutaj:\"1A1F\",tute:\"0L030Q020T0D11021O10\",\"tute \":\"0Q020T071O1Y\",tutt:\"03090Q6A110Q130R1F07\",tutte:\"0Q0T1104\",tutti:\"0Q2M110A\",tutto:\"0Q2P\",tutu:\"0B0G0D0O0T061106150C1F0I\",tutul:\"0D0H11041F04\",tuu:\"010I0R0B0T23112B1C0I\",\"tuu \":\"1126\",tuum:\"0T1X\",\"tuum \":\"0T21\",tuur:\"01170R151108\",\"tuur \":\"01100R0N\",tuus:\"0T24110B\",\"tuus \":\"0T28110H\",tuv:\"040L0O1F110F1B131D0T1F031P1X1Q05\",tuve:\"0O0J1B05\",tuvi:\"0O0R11021B04\",tuvo:\"0O0X1B031P1N\",\"tuvo \":\"0O181B05\",tuvö:\"1P0T\",tuw:\"030E0D08\",tuwa:\"0D07\",tuwi:\"03090D07\",tuy:\"03020O071F08\",tuz:\"030A041W15031A021F0G1O02\",tuzo:\"043V\",tuzob:\"042S\",tuæ:\"0T03\",tué:\"0L0A\",tuā:\"1D0G\",tuğ:\"1F0D\",tuŝ:\"1O04\",tuš:\"0U050V020Y071B09\",tuɣ:\"032P\",\"tv-\":\"0Z021002\",tvai:\"1D0S\",tvain:\"1D1W\",tvar:\"0V1Z13081B0H\",tvari:\"0V1Q\",tvarn:\"0V25\",tvi:\"0Z04100K120C13061B0G1D0O\",tvik:\"120D\",tvikl:\"120D\",tvil:\"0Z031005120D\",tvo:\"0U0X0V3N0Y4P13091B02\",\"tvo \":\"0U020V0O0Y1C130E\",tvoj:\"0U140V2B0Y42\",\"tvoj \":\"0V1Z0Y1C\",tvoja:\"0V1C0Y1H\",tvoje:\"0U160V1G0Y14\",tvor:\"0V170Y2N1B03\",tvori:\"0V1N0Y1M\",tvr:\"0U0C0V090Y0F\",tvu:\"0V0A0Y091008\",tvy:\"0Y051B0Q\",tvyk:\"1B14\",tvá:\"0U090Y0J1409\",tvä:\"100D\",tvät:\"100E\",tvätt:\"100E\",två:\"1016\",\"två \":\"101I\",tvæ:\"1307\",tvé:\"0U0E140D\",tví:\"0U0N\",\"tví \":\"0U0X\",tvē:\"1D0M\",tvė:\"1B0B\",tvů:\"0U0M\",tvůj:\"0U0Z\",\"tvůj \":\"0U1D\",twa:\"032W043Y0D020N0Z0R051A0Y\",\"twa \":\"041R0N061A0N\",twar:\"0302044T0Q020R021A0Q\",twara:\"045L\",twas:\"03090N26\",\"twas \":\"0N3M\",twe:\"010S030L041N0M080N050R0L1A08\",\"twe \":\"041O1A04\",twee:\"011P0M0A0R25\",\"twee \":\"011O0R28\",two:\"010B0M0G0N0B0R0A1A2W\",\"two \":\"0M0S1A19\",twoj:\"1A1T\",twoje:\"1A1Q\",twoo:\"010N0R13\",twoor:\"010P0R1H\",tx:\"030H\",tya:\"0302140A\",tyb:\"1B07\",tyc:\"102O1A16\",tyck:\"103N\",tycke:\"1031\",tyckt:\"100H\",tyd:\"011B0U050Z06100F12051A0A1B04\",\"tyd \":\"012H1A02\",tyde:\"0Z0D100C1207\",tye:\"1102\",tyg:\"100912021A0H\",tyh:\"0U07110J\",tyi:\"111H\",\"tyi \":\"111I\",tyj:\"110314021B09\",tyk:\"0Z07111L12041A0Q1B0F\",tykk:\"0Z0F111P120B\",tykke:\"0Z0J1208\",tykkä:\"1145\",tyks:\"1113\",tykse:\"112C\",tyl:\"0L040T0211081A1S1B0E\",tylk:\"1A22\",tylko:\"1A3A\",tym:\"1002110M1A2G1B0C1N0L\",\"tym \":\"10021A3C1N0F\",tyn:\"0Z021002111612021A071B0E1N2G\",\"tyn \":\"11081B021N1V\",tyny:\"11191N0X\",tynyt:\"1133\",typ:\"0L060M030N021003110B12031A041N0A\",tyr:\"0T040Y0B0Z0810061102120D1B061N1B\",\"tyr \":\"0Z031003120E1N0O\",tys:\"0Z0D100M110T120C1A0C1B0J\",tysk:\"0Z10100H1103120V\",\"tysk \":\"0Z0G1002120A\",tyskl:\"0Z0H1005120H\",tyt:\"01070U08111G1A021B1G\",tyti:\"1B1W\",\"tyti \":\"1B3U\",tytj:\"010F\",tytji:\"010G\",tytt:\"111Q\",tyttö:\"112Q\",tyv:\"0Z081004110B12021B06\",tyve:\"0Z0K\",\"tyve \":\"0Z0D\",tyy:\"112A\",\"tyy \":\"1130\",tyá:\"140V\",tyä:\"110K\",työ:\"111S\",tyň:\"1N0G\",\"tz \":\"0N0K\",tze:\"033A0N150R051502\",\"tze \":\"0N13\",tzem:\"032Q\",tzemr:\"035W\",tzen:\"0N1F\",\"tzen \":\"0N26\",tzi:\"0N030R02\",tzl:\"0N05\",tzt:\"0N1J\",\"tzt \":\"0N2H\",tzte:\"0N1A\",tzu:\"03040N08\",tà:\"0Q1H\",\"tà \":\"0Q5K\",tá:\"0O2I0P2D0SC00U230Y2R1304145A\",\"tá \":\"0O5C0P8H0SP00U0J0Y1Q\",\"tá-\":\"0P07\",táb:\"0O041409\",tác:\"0O030P020U050Y09\",tái:\"0O060S4J\",táim:\"0S4H\",\"táim \":\"0SE2\",táimi:\"0S3A\",ták:\"0U050Y061417\",\"ták \":\"0U05142X\",tál:\"0P040U150Y18142E\",\"tál \":\"0U05143U\",tále:\"0U1A0Y1O\",\"tále \":\"0U1S0Y23\",tán:\"0O1E0S0I0U081305141T\",\"tán \":\"0O1Z0S0M0U0513061434\",tár:\"0O020P0B0Y04141D\",tás:\"0O140P0B141O\",\"tás \":\"0O1N0P0B1410\",tát:\"0P020U0N0Y1I140H\",táto:\"0Y251409\",\"táto \":\"0Y2J\",táv:\"0P0E0U0K0Y0P140C\",táva:\"0P070U090Y101404\",táx:\"0P04\",táz:\"0U0G0Y0W1404\",tázk:\"0U0N0Y12\",tâ:\"0P031518\",tâl:\"150U\",tâm:\"1514\",tâmp:\"151U\",tâmpl:\"1529\",tân:\"0P0C150N\",târ:\"150X\",târzi:\"151U\",tât:\"1519\",\"tât \":\"151X\",tã:\"0P11\",tão:\"0P4G\",\"tão \":\"0P5D\",tä:\"0N0I101G11F41C1F1N121P0I\",\"tä \":\"11NT\",täc:\"1007\",täd:\"1008\",täe:\"1107\",täh:\"110X1C19\",tähe:\"1C0Q\",täi:\"111W1C14\",täie:\"1C0L\",täis:\"112Q1C0G\",täisi:\"1165\",täj:\"110A\",täk:\"110O1N09\",täl:\"1018110Q\",täll:\"101M1115\",tälle:\"100E110F\",täm:\"100I1161\",tämä:\"119W\",\"tämä \":\"11EK\",tämän:\"115S\",tän:\"0N0A101U114E1C2E1P0K\",täna:\"1C2N1P0E\",\"täna \":\"1C4F\",tänd:\"0N0M100L\",täng:\"100M\",täni:\"1114\",\"täni \":\"112Q\",tänk:\"101B1102\",tänke:\"100M\",täny:\"1121\",tänyt:\"114V\",tänä:\"112Y\",\"tänä \":\"112H\",tänää:\"114S\",täp:\"1104\",tär:\"0N031003110Q\",täs:\"11211N0B\",täss:\"111V\",tässä:\"114J\",tät:\"0N0A1002111I\",tätä:\"111O\",\"tätä \":\"1144\",täv:\"1004113I\",tävä:\"1156\",\"tävä \":\"1135\",tävän:\"113D\",tävät:\"112G\",täy:\"112Y\",täyt:\"113M\",täyty:\"117I\",täz:\"1N1E\",täze:\"1N21\",\"täze \":\"1N1S\",tää:\"11A5\",\"tää \":\"119V\",tääl:\"112T\",tääll:\"1162\",tään:\"115Z\",\"tään \":\"11DD\",tå:\"0Z0O100X120U\",\"tå \":\"0Z08100G120C\",tåe:\"0Z0510021205\",tåel:\"0Z031209\",tået:\"0Z0A\",tåg:\"100G\",tåge:\"0Z04100E\",tål:\"0Z0210071204\",tån:\"1008\",tår:\"0Z0K1018120Q\",\"tår \":\"0Z1B101I121K\",tåt:\"10021202\",tæ:\"0T050Z0S130M\",\"tæ \":\"0T0A\",tæk:\"130N\",tæl:\"0Z0B\",\"tæl \":\"0Z09\",tæll:\"0Z0L\",tælle:\"0Z0M\",tæn:\"0Z0K\",tænd:\"0Z0I\",tænk:\"0Z10\",tænke:\"0Z0P\",tænkt:\"0Z0G\",tær:\"0Z061202130D\",tærk:\"0Z0C\",tæt:\"0Z03\",tç:\"1F061N0B\",tça:\"1N0C\",tè:\"0L020Q02\",\"tè \":\"0Q07\",tèm:\"0L04\",tèr:\"0L07\",té:\"0L210O0E0P0E0S0B0U0Z0Y0G144Z\",\"té \":\"0L730O0U0P190U120Y0Z\",tée:\"0L0J\",\"tée \":\"0L0P\",tég:\"0L05140I\",tége:\"0L041417\",téged:\"1419\",ték:\"0U02141I\",\"ték \":\"1428\",tél:\"0L0P141H\",\"tél \":\"142U\",télé:\"0L16\",tém:\"0L020P040U091404\",tén:\"0O05141U\",tént:\"0O03141C\",\"tént \":\"141B\",tény:\"1419\",tér:\"0L0W0O030P08140S\",tére:\"0L0P140C\",tés:\"0L0O0O04141L\",\"tés \":\"0L140O06140T\",tét:\"0U0D140U\",\"této \":\"0U0T\",tév:\"140K\",tê:\"0L030P0A\",\"tê-\":\"0P03\",têm:\"0P0V\",\"têm \":\"0P11\",tên:\"0P0B\",têt:\"0L0F\",tête:\"0L0P\",\"tì \":\"0Q04\",tí:\"0O0D0P060S120U2E0Y11131O140E\",\"tí \":\"0O060S230U280Y1F\",tía:\"0O09\",tíc:\"0O040P0A\",tíf:\"0O040P02\",tím:\"0O030P040U1Q0Y071329\",\"tím \":\"0U2H0Y09\",tíma:\"1334\",\"tíma \":\"1356\",tín:\"0O040P030Y05\",tío:\"0O060S0I\",tíu:\"130W\",\"tíu \":\"131G\",tív:\"0P030U0D0Y0M1406\",tíz:\"140C\",tò:\"0Q05\",\"tò \":\"0Q0J\",tó:\"0O0Q0P0A0S0B131K142H1A1I\",\"tó \":\"0O1S130B1416\",tób:\"140C\",tói:\"0S0M\",tók:\"13141407\",tól:\"130K1412\",\"tól \":\"142L\",tóm:\"0O0313061404\",tón:\"0O0D130C1406\",\"tón \":\"0O0I1406\",tóq:\"0P04\",tór:\"0P12130U14031A2A\",tóri:\"0O020P1A\",tória:\"0P0Y\",tót:\"140K\",\"tót \":\"141E\",tô:\"0L060Y06\",tôl:\"0Y0G\",tôn:\"0P03\",tôt:\"0L0U\",\"tôt \":\"0L1E\",tõ:\"1C0Y\",tõe:\"0P041C1A\",tõen:\"1C0L\",tões:\"0P041C0R\",tõest:\"1C1V\",tõs:\"1C0K\",tõsi:\"1C0O\",tõt:\"1C0H\",tõtt:\"1C0L\",tõu:\"1C0J\",tõus:\"1C0O\",tö:\"0N05100C110W131214381C0X1F031N0E1P0T\",\"tö \":\"110G\",töb:\"141I\",több:\"143T\",\"több \":\"141T\",többe:\"140Z\",töi:\"110U\",töj:\"1105\",tök:\"1107130I140D\",töl:\"1104130U140I1N0G\",tölt:\"1415\",töm:\"110E1406\",tön:\"110I140D1P17\",\"tön \":\"110J14081P1I\",tör:\"0N04100M110414221F08\",tört:\"0N051003143H\",törté:\"1433\",tös:\"1108\",töt:\"0N0210031104140R\",tött:\"1002141V\",tötte:\"1411\",töw:\"1N0B\",töy:\"1108\",töz:\"140D\",töä:\"1105\",töð:\"130V\",töö:\"11041C39\",tööd:\"1C0S\",\"tööd \":\"1C1S\",tööt:\"1C1U\",tööta:\"1C4C\",tø:\"0Z0K120F\",tøj:\"0Z09\",\"tøj \":\"0Z0H\",tøm:\"0Z02\",tør:\"0Z0E120E\",tørr:\"0Z0D120B\",tørre:\"0Z0G1209\",tørs:\"0Z0D120G\",tørst:\"0Z0G120G\",tøt:\"1204\",tøv:\"0Z02\",tøy:\"1204\",tú:\"0O0E0S3Q0Y0S130A140P\",\"tú \":\"0O120S9P0Y0T\",túi:\"0S0R\",túir:\"0S0O\",túl:\"130C1411\",\"túl \":\"141Z\",túp:\"0O050P040Y0B\",tút:\"0Y0U\",túto:\"0Y1F\",\"túto \":\"0Y1S\",tü:\"0N0G14181C0Q1F2G1N0S1P0I\",\"tü \":\"1F1L\",tüc:\"0N07\",tüd:\"1C0Y1F02\",tüdr:\"1C16\",tüdru:\"1C2X\",tüh:\"1C0E\",tük:\"140H1F06\",tül:\"14091F071P0I\",tüm:\"1F10\",\"tüm \":\"1F11\",tün:\"141A1F1P1N0W\",\"tün \":\"1F1J\",tünk:\"1431\",\"tünk \":\"1432\",tür:\"0N0E14051C0H1F1J1N0L\",tüt:\"0N021C0D\",tý:\"0U0U0Y1C13041N0I\",\"tý \":\"0U0Q0Y1L\",týa:\"1N0M\",týd:\"0U0L\",týden:\"0U0W\",tým:\"0U060Y0V\",\"tým \":\"0U060Y1E\",týä:\"1N0D\",týž:\"0Y0J\",týžd:\"0Y0X\",tā:\"0T0B1D4B\",\"tā \":\"0T041D5G\",tāb:\"0T03\",tād:\"1D17\",tāj:\"1D3B\",tāji:\"1D0U\",tājs:\"1D0S\",\"tājs \":\"1D21\",tāju:\"1D1P\",\"tāju \":\"1D1W\",tājum:\"1D2F\",tāk:\"1D15\",tāl:\"1D13\",tām:\"1D0R\",\"tām \":\"1D0X\",tār:\"0T05\",tās:\"0T041D2P\",\"tās \":\"0T071D2J\",tāst:\"1D0Z\",tāt:\"0T041D17\",tāv:\"0T041D18\",tă:\"1568\",\"tă \":\"15G5\",tăl:\"150V\",tăm:\"151I\",tămân:\"151S\",tăr:\"150T\",tău:\"1513\",\"tău \":\"151T\",tăz:\"150W\",\"tăzi \":\"151V\",tăț:\"150U\",tą:\"1A0L1B37\",\"tą \":\"1A0V1B8K\",tē:\"0T091D19\",\"tē \":\"0T0F1D0G\",tēj:\"1D1C\",tēm:\"1D13\",tēr:\"1D0E\",tēs:\"0T04\",tēv:\"1D1E\",tēvs:\"1D17\",\"tēvs \":\"1D32\",tė:\"1B2G\",\"tė \":\"1B2V\",tėj:\"1B11\",tėjo:\"1B0W\",\"tėjo \":\"1B1O\",tėm:\"1B08\",tės:\"1B0Z\",\"tės \":\"1B1G\",tėt:\"1B08\",tėv:\"1B1G\",tėva:\"1B1M\",tėvas:\"1B26\",tę:\"1A151B0K\",\"tę \":\"1A1J1B14\",tęs:\"1A051B0G\",tě:\"0U53\",\"tě \":\"0U5V\",těj:\"0U0C\",těl:\"0U1W\",\"těl \":\"0U25\",těs:\"0U0B\",těž:\"0U0V\",těžk:\"0U0W\",tī:\"0T0N1D2T\",\"tī \":\"0T1C\",tīb:\"1D1J\",tība:\"1D11\",\"tība \":\"1D1R\",\"tību \":\"1D1R\",tīg:\"1D23\",tīgi:\"1D18\",\"tīgi \":\"1D2K\",tīj:\"1D1C\",tīja:\"1D0S\",\"tīja \":\"1D21\",tīk:\"1D2P\",\"tīk \":\"1D3A\",tīs:\"1D0N\",tīt:\"0T031D20\",\"tīt \":\"1D1G\",tīv:\"1D0Q\",tīš:\"1D0E\",tį:\"1B0V\",\"tį \":\"1B2G\",tı:\"1F71\",\"tı \":\"1F5P\",tık:\"1F1U\",\"tık \":\"1F1P\",tıl:\"1F19\",tım:\"1F1S\",\"tım \":\"1F1Q\",tın:\"1F2K\",\"tın \":\"1F1O\",tır:\"1F30\",\"tır \":\"1F13\",tıy:\"1F0O\",tığ:\"1F22\",tığı:\"1F2C\",tığın:\"1F1U\",tış:\"1F0L\",tł:\"1A0B\",tō:\"0T04\",\"tō \":\"0T05\",tōs:\"0T02\",tő:\"141T\",\"tő \":\"140Q\",től:\"141C\",\"től \":\"141U\",tőle:\"141H\",tős:\"140C\",tř:\"0U2N\",tře:\"0U3C\",třeb:\"0U3U\",třebu:\"0U3V\",tři:\"0U19\",\"tři \":\"0U1C\",tří:\"0U0N\",tš:\"0U08\",tū:\"0T071B091D07\",\"tū \":\"0T02\",tūk:\"1B0A\",tūr:\"0T0B1B091D0N\",tů:\"0U08\",tű:\"140N\",tűn:\"140Q\",tűnik:\"140Y\",tų:\"1B1G\",\"tų \":\"1B3Z\",tɛ:\"030H\",tɣ:\"030H\",tḍ:\"0304\",tḥ:\"030N\",tṛ:\"030K\",tṣ:\"0304\",tẓ:\"0305\",\"u'\":\"0L1I0M0O1QFJ\",\"u' \":\"1QQV\",\"u''\":\"1Q27\",\"u''a'\":\"1Q5T\",\"u'a\":\"0L0G\",\"u'b\":\"1Q4C\",\"u'be\":\"1Q5I\",\"u'be'\":\"1Q7T\",\"u'bog\":\"1Q4J\",\"u'd\":\"0M061Q1Z\",\"u'e\":\"0L1S1Q05\",\"u'el\":\"0L1Q1Q07\",\"u'ell\":\"0L2X\",\"u'es\":\"0L13\",\"u'est\":\"0L1T\",\"u'i\":\"0L331Q08\",\"u'il\":\"0L53\",\"u'il \":\"0L76\",\"u'ils\":\"0L1H\",\"u'l\":\"0M071Q4P\",\"u'll\":\"0M0E\",\"u'll \":\"0M0J\",\"u'lu\":\"1Q5K\",\"u'lu'\":\"1Q98\",\"u'm\":\"1Q2A\",\"u'o\":\"0L0M1Q05\",\"u'on\":\"0L11\",\"u'on \":\"0L1P\",\"u'p\":\"1Q25\",\"u'pu\":\"1Q3O\",\"u'pu'\":\"1Q69\",\"u'r\":\"0M0T1Q06\",\"u're\":\"0M1I\",\"u're \":\"0M22\",\"u't\":\"1Q29\",\"u'u\":\"0L15\",\"u'un\":\"0L1X\",\"u'un \":\"0L2L\",\"u'v\":\"0M071Q19\",\"u've\":\"0M0D1Q0M\",\"u'à\":\"0L0J\",\"u'à \":\"0L0W\",\"u-a\":\"030B\",\"u-b\":\"0B06\",\"u-d\":\"03050L04\",\"u-i\":\"0306151K\",\"u-i \":\"152K\",\"u-k\":\"03020B02\",\"u-l\":\"0B020P04150F\",\"u-m\":\"0P04150Z\",\"u-mi\":\"151L\",\"u-mi \":\"1521\",\"u-s\":\"0B060P0I1505\",\"u-se\":\"0P0M1507\",\"u-se \":\"0P0S1509\",uaa:\"110R\",uac:\"0B070O0B0S1G0U070V081A061B051O05\",uach:\"0S1R\",uacha:\"0S3S\",uacht:\"0S32\",uad:\"0L020M020O0C0P0E0Q0D0T0B1O02\",uae:\"0T33\",\"uae \":\"0T3C\",uaer:\"0T0P\",uaes:\"0T1T\",uaeso:\"0T1B\",uag:\"0L030M0C0P040Q030T07\",uage:\"0L060M0M0P040T05\",\"uage \":\"0L040M0M\",uah:\"0B1G\",\"uah \":\"0B2Q\",uai:\"0B040L080P0E0Q070S7N110U\",uaig:\"0S18\",uaigh:\"0S4I\",uaim:\"0S1V\",\"uaim \":\"0S7J\",uain:\"0S0M\",uair:\"0S45\",\"uair \":\"0SCC\",uais:\"0L030P0G111G\",uaisi:\"113H\",uaj:\"0O041O04\",uak:\"0B051105\",\"ual \":\"0B0G0M0B0O0R0P1T0Q0Q1508\",uala:\"0S0M\",ualc:\"0Q5F\",ualch:\"0Q10\",ualco:\"0Q35\",ualcu:\"0Q1J\",uale:\"0O080Q0Q0T0A1B02\",\"uale \":\"0Q0R0T03\",uall:\"0M0O1103\",ually:\"0M0Y\",ualq:\"0O0K0P0M\",ualqu:\"0O0R0P0S\",uam:\"0B050O020P020T7N1104\",\"uam \":\"0P020TD7\",uand:\"0L2J0O3C0P3G0Q2K0T2I\",\"uand \":\"0L4A\",uando:\"0O4D0P4C0Q2H0T1Q\",uandō:\"0T0X\",uang:\"0B2T0D02\",\"uang \":\"0B3N0D04\",uanga:\"0B1B\",uans:\"0Z02120A\",uant:\"0L0F0O0O0P300Q280T1111041O02\",uanto:\"0O0N0P3A0Q1D0T03\",uany:\"0B0T\",uanya:\"0B1L\",uap:\"0O04\",uaq:\"0T02\",\"uar \":\"0B1N0N020O070P080T040Z04\",uara:\"03030B0K0L040Q02\",uard:\"0M030O0C0P0H0Q26\",uarda:\"0O0A0P0H0Q1D\",uarg:\"0B0K\",uart:\"0L050O0D0P0R0Q040T07\",uarto:\"0O0G0P0U\",\"uas \":\"0B070O0H0P250S0X0T1C11021O0L\",uase:\"0P0R\",\"uase \":\"0P0Y\",uasi:\"0B050L020Q0M0T0E1106\",uasj:\"120E\",uasjo:\"120E\",\"uat \":\"03020B250T05110W151T\",uath:\"0S0V\",\"uath \":\"0S32\",uatu:\"0B1M0T05\",\"uatu \":\"0B37\",uav:\"0O020P020T031105\",uay:\"0Q0H1F04\",\"uay \":\"0Q0R1F03\",uaz:\"0Q06\",uaç:\"0P09\",uaĵ:\"1O04\",\"ub-\":\"0306\",ubah:\"04490B0P\",ubahi:\"045L\",ubak:\"041Z\",uban:\"0302041V0B051406\",ubat:\"03030D060Q090T02\",ubaz:\"04260V06\",ubb:\"03040M020Q0D100B12021Q0F\",ubd:\"1Q03\",ubera:\"04I5\",\"ubi \":\"0Q020T5Y0V071A11\",ubib:\"041Z0T02\",ubibo:\"042S\",ubic:\"0O020T10\",ubicu:\"0T11\",ubie:\"0O0Q15081A07\",ubier:\"0O0U1A03\",ubig:\"04290D0D\",\"ubig \":\"0D0P\",ubik:\"044T\",ubiko:\"0464\",ubim:\"04260V051A02\",ubir:\"045R0O040P031507\",ubira:\"0474\",ubit:\"0302041R0Q0B0T0Y0V05150I1O06\",ubiz:\"041V\",\"ubię \":\"1A1W\",ubj:\"0M02\",ublic:\"0L0D0M080N040O060P060R020T0Z150N1A06\",ublie:\"0L0X0R1E\",ubm:\"0P021Q05\",ubon:\"045E0D04\",ubona:\"0483\",ubs:\"0M020N040P060T0315031O03\",ubt:\"0M050N080T031O05\",\"ubu \":\"046M0U031A041F06\",ubuk:\"0D0B\",ubuka:\"0D0K\",ubun:\"0B0G1F04\",ubur:\"042Z\",ubv:\"0T02\",ubw:\"043Y1Q04\",ubwa:\"0422\",ubwi:\"046V1Q07\",ubwir:\"04A4\",ubwo:\"0429\",ubė:\"1B09\",\"uc \":\"030H0L030T0P150U1D0N\",ucc:\"030J0L050M050O090Q1O0R020T050Z0214021508\",ucce:\"03050M090Q1D0R070T050Z05150E\",ucces:\"0M080Q0S0R0A0Z06150H\",ucci:\"03030O0D0Q0V\",\"uch \":\"0M230N4M0U040Y0B1A061Q74\",ucha:\"0L030O2H0U0L1A101Q06\",\"ucha \":\"0O0Z0U031A0B\",uchas:\"0O151A02\",uche:\"0L1C0M020N220O040R030U051A031Q0H\",\"uche \":\"0L190N110O020R03\",uchen:\"0N291A021Q0F\",ucho:\"0L040O3O0U060Y0B1A051Q07\",\"ucho \":\"0O3J0U020Y0A1A02\",uchos:\"0O1C\",ucht:\"0N1V0R0Y1Q0J\",\"ucht \":\"0N1Z0R0Q\",ucin:\"0B0Y0Q0L\",ucing:\"0B1V\",ucir:\"0O0J\",\"uck \":\"0M0E0N0A\",ucl:\"0L030O02\",uco:\"0B020L1H0O020P1J0Q020T03\",\"uco \":\"0P1N0Q02\",ucou:\"0L2I0P03\",ucoup:\"0L47\",ucr:\"0L050O030P020Q0B0T09152I\",ucru:\"0T03152M\",\"ucru \":\"1521\",uct:\"03070L0D0M080O0B0R020T0P1506\",uctu:\"0L020M020O020T0R\",ucu:\"03030B060L0P0P020T0G150L1F0J\",ucun:\"0L160T0C1F03\",ucz:\"1A2R\",uczy:\"1A2A\",ucā:\"0T02\",ucă:\"150W\",udad:\"0D080O140P0B1O03\",\"udad \":\"0D0E0O15\",udah:\"0B5R\",\"udah \":\"0BAM\",udar:\"0B0K0O120P210V07100214051B06\",\"udar \":\"0O0J0P29\",udb:\"0U080V080Y0B1Q03\",udee:\"010J0R0F\",udeer:\"010K0R0L\",udel:\"0N020T05110V1C0U1O021P0G\",udem:\"030C0P020T030U0L0V0P0Y2B1A02\",\"udem \":\"030C0T020V1G0Y2A1A04\",udeme:\"0U0S0Y0N\",\"uden \":\"030B0N030R2O0Z1910021141\",uder:\"030I0N0H0P040Q070R1K0T0N0Z0M100L120T1A05\",udera:\"100J\",udere:\"0Q050R0O0T0O0Z0M120O\",uders:\"0R0Z\",udes:\"03030L070O030P070T04111N\",udest:\"112Q\",udet:\"0T0B0U0A0Y0R100F1108\",\"udet \":\"0T0A100F110J\",udete:\"0U0E0Y0Y\",udeš:\"0U0Y0V0B0Y0X\",\"udeš \":\"0U1B0V0S0Y15\",udf:\"03070Z02\",udg:\"0M030Z02\",udh:\"14031Q09\",\"udi \":\"03030B0D0L020Q050T0E0V1O1B021O0F\",udia:\"0B090L0I0O1F0Q1U0T060Y1I150L1A03\",\"udia \":\"0O050Q070T020Y1V15081A04\",udian:\"0B0J0L0T0O0Y0Q0A\",udiar:\"0O0M0Q13\",udik:\"14051P6C\",\"udik \":\"14051P3U\",udiko:\"1P1N\",udiku:\"1P1D\",udj:\"1411\",udja:\"141O\",\"udja \":\"141M\",udk:\"0302\",udl:\"03040Y0E0Z041Q06\",udm:\"03071Q05\",udn:\"03020U070V0C0Y0S1002141A1A16\",udni:\"0Y0P141H1A0Q\",\"udni \":\"0Y0H141I\",\"udo \":\"0O130P2E0Q030T0J0V031B091O08\",udod:\"141W\",\"udod \":\"141Z\",udok:\"141S1B03\",\"udok \":\"141V1B03\",\"udol \":\"0Y0Z\",udom:\"143N1B021P0K\",\"udom \":\"143K1P0J\",udov:\"0U0I0V050Y0W\",udr:\"03090B020L0O0U040V021B061D0G\",udra:\"03020B030L0P1B03\",uds:\"03040V060Y0C0Z0D1007140H\",udse:\"03040Z0A\",udsz:\"1419\",\"udsz \":\"141B\",udt:\"0R0D0Z081418\",\"udt \":\"0R1E0Z0C140A\",udta:\"0Z04142C\",udtam:\"141K\",\"udu \":\"0U1R0V0711051A021B021F091O03\",udug:\"047F\",uduga:\"04CM\",uduk:\"0B0U\",\"uduk \":\"0B1F\",udv:\"0Z0310021406\",udz:\"0Y071A1L1D4J\",\"udz \":\"1D3K\",udzi:\"0Y0B1A1Z1D0M\",udá:\"0P0B0U031405\",udí:\"0O020U050Y0M\",\"udí \":\"0U040Y0W\",udó:\"0O041402\",udö:\"1P15\",udön:\"1P1E\",\"udön \":\"1P1N\",udú:\"0Y0N\",udā:\"1D0E\",udē:\"1D0U\",udė:\"1B0I\",udě:\"0U3W\",uděl:\"0U68\",uděla:\"0U73\",udělá:\"0U1F\",udī:\"0T04\",udž:\"0V031B09\",\"ue-\":\"0L030P03\",uea:\"0O02\",ueb:\"0O0K0P0D0T07\",uebl:\"0O0K\",uec:\"03020O050P0R\",uece:\"0O030P0I\",ued:\"0M040O6C0P041502\",ueda:\"0O240P02\",\"ueda \":\"0O100P02\",uedar:\"0O0Z\",uede:\"0O4W\",\"uede \":\"0O3Q\",ueden:\"0O0V\",uedes:\"0O1Z\",uedo:\"0O2N0P03\",\"uedo \":\"0O3G0P02\",uee:\"1108\",ueg:\"0O0W0P02\",uego:\"0O11\",\"uego \":\"0O17\",uei:\"0L050P190Q031B05\",\"uei \":\"0P0W0Q05\",uej:\"0O05\",uela:\"03020O180P0T1O02\",\"uela \":\"0O1I0P0W1O02\",uele:\"0O0N0P140R02\",\"uele \":\"0O0L0P150R02\",uell:\"0L2A0N060O0N0Q4A0T1P0Z021004\",uella:\"0O0E0Q180T1O1002\",uelle:\"0L3U0N080Q0A0Z02\",uello:\"0O0F0Q2E\",uelo:\"0O0S\",\"uelo \":\"0O0X\",uelq:\"0L3O\",uelqu:\"0L65\",uelt:\"0O0K0Z02\",uem:\"0L060O060P2L0T0V1102\",\"uem \":\"0N020P330T1H\",\"uen \":\"0N1A0O0Z0Z06110B\",uena:\"0O170P0B\",\"uena \":\"0O190P0A\",ueno:\"0O0Z0P0D\",\"ueno \":\"0O0Z0P0B\",uent:\"0L0F0M040O1S0P0T0Q070T0G11021504\",uenta:\"0O140P08\",uente:\"0L020O0J0P0R0Q040T08\",\"uer \":\"0L1Z0N0U0P330T170Z0A1206\",uera:\"0L060O130T081002\",\"uera \":\"0L040O1A\",uerd:\"0O150P05\",uerdo:\"0O100P02\",uere:\"0L020N030O0F0P130Q030T170Z02\",\"uere \":\"0N020O030Q020T11\",uerem:\"0O0A0P0W\",ueri:\"0O050P1R0T29\",\"ueri \":\"0T0U\",ueria:\"0P23\",uero:\"0O0P0P2N0T0E\",\"uero \":\"0O070P3B0T07\",uerr:\"0L0H0O0M0P0E0Q0A\",uers:\"010Q0N07\",\"uers \":\"010S\",uert:\"0N090O2M\",uerta:\"0O15\",uerte:\"0N060O1M\",ueru:\"0T0Y\",uerz:\"0O0K\",uerí:\"0O150P02\",uería:\"0O1I0P03\",\"ues \":\"0L3D0M050N090O0K0P050T05\",uest:\"0L110M0N0O4B0P090QBJ0T0211021C0G\",uesta:\"0O190Q401104\",ueste:\"0N020Q0Q\",uesti:\"0L1O0M0P0O050Q0V1C13\",uesto:\"0O0Y0Q6O\",uestr:\"0O3F0P02\",uet:\"0L0D0O0A0P060T070Z0511071207\",\"uet \":\"0L080T070Z0D1102120I\",ueu:\"0L0G\",uev:\"0O1S\",ueva:\"0O0V\",\"ueva \":\"0O0W\",uevo:\"0O1I\",\"uevo \":\"0O1I\",uez:\"0L050O030P03\",ueç:\"0P07\",ueñ:\"0O0Y\",ueño:\"0O12\",\"ueño \":\"0O12\",\"uf \":\"030B0B030L090N33\",ufa:\"033B041G0N020Q020U041A0A1F02\",ufan:\"032N1A02\",\"ufan \":\"035I\",ufat:\"0422\",ufe:\"030A0N0S0T0315071O05\",ufen:\"03020N1D\",\"ufen \":\"03020N26\",uffe:\"03050L080M060R060Z0B1209\",uffi:\"03030L0F0Q0L0T02\",ufg:\"0N0G\",ufi:\"030V041X0N020O0D0P0C15081O0F1P12\",\"ufi \":\"03051P1B\",ufic:\"0O0K0P0E150D\",ufis:\"0454\",ufise:\"048W\",ufiĉ:\"1O0O\",ufob:\"1P0T\",ufom:\"1P1H\",\"ufom \":\"1P1F\",ufr:\"03040N050O060U03\",ufs:\"0L040N06\",uft:\"03090N0I0Z0910061205\",\"uft \":\"03080N0Y0Z0410031206\",ufte:\"0N060Z0A10021205\",ufu:\"030M040G\",ufz:\"0N05\",ufá:\"0U0H\",ufám:\"0U0P\",\"ufám \":\"0U0X\",ufö:\"1P2F\",ufön:\"1P31\",\"ufön \":\"1P3K\",\"ug-\":\"0302\",ugab:\"04260O02\",ugall:\"1N19\",ugan:\"0303044M0D060O070Q0C\",ugana:\"0441\",ugar:\"030Z04220D070M030O1C0P0Y0V031002130A1B05\",\"ugar \":\"031R0D0E0M040O1L0P12\",ugd:\"03030R021403\",\"uge \":\"0L0G0M040N080T040V090Z0W1B05\",ugen:\"030904970N110R0A0Z06\",ugend:\"04B10N0D\",ugenz:\"044K\",uger:\"030304150L040O020P030T070Z0S100A15061A02\",\"uger \":\"03020L070N020Z0W100A\",ugev:\"1C0O\",ugg:\"03080L030M070Q090R030Z02100B1202130N\",ugh:\"0M2V0N0215051O021Q7X\",\"ugh \":\"0M1H1QAL\",ught:\"0M3L\",\"ught \":\"0M4G\",ugia:\"0Q051B24\",ugiau:\"1B46\",ugir:\"045V0P03\",ugira:\"049O\",ugk:\"01090R02\",ugko:\"010H0R05\",ugkom:\"010I0R06\",ugl:\"03050L030Q030V090Z0B1206130C1B02\",\"ugl \":\"0Z081204\",ugle:\"0L040V040Z0N120A\",ugm:\"03020L04130F\",ugor:\"043210021404\",ugoro:\"042S\",ugr:\"030414061A021B0B\",ugs:\"130Y14041B061D1Q1N0W\",ugsa:\"131C1N1A\",\"ugsa \":\"131X\",ugsat:\"1N1Q\",ugst:\"1D1J\",ugstp:\"1D1W\",ugt:\"03030D020N030Z0913051405\",\"ugt \":\"03030N050Z0B1308\",ugte:\"0N020Z0B\",\"ugu \":\"030204490V07130O1B05\",ugur:\"030K04450B030Q05130A\",uguru:\"044K\",ugut:\"0302041V0D02\",ugw:\"040D\",ugy:\"140Q1B071N0D\",ugya:\"1415\",ugyan:\"1417\",ugü:\"1F1J\",ugün:\"1F1S\",\"ugün \":\"1F26\",ugė:\"1B08\",ugų:\"1B09\",\"uh \":\"0B2Q0U030V021F031Q3V\",\"uh-\":\"0B02\",\"uha \":\"0302041G0D0E0U0211021407\",uhan:\"041G0B0V0D0J110D1408\",\"uhan \":\"0B1M0D0S1107\",uhay:\"0D0Q\",\"uhay \":\"0D19\",uhd:\"11061Q0V\",uhe:\"0303041A0N0711101Q04\",uhel:\"03020Z031111\",uheli:\"112B\",uhi:\"042V0B060D040N040V021103\",uhin:\"041Z0D070V03\",uhir:\"0454\",uhira:\"048K\",uhk:\"0B0H110A1C0N\",uhka:\"0B0V110D\",uhkan:\"0B1O1102\",uhl:\"03020N020U0N110J1Q07\",uhlas:\"0U0S1105\",uhn:\"0B06\",uho:\"04170D060U0U0V030Y0511091Q08\",\"uho \":\"0U13\",uhok:\"0D08\",uhor:\"041O\",uhr:\"0N0D1102\",uht:\"110B1C1B1F0Y\",uhte:\"11091F12\",uhtem:\"1F1D\",uhtu:\"1C15\",uhu:\"030D042K0B030D020U020Y05113G1C0S1F021Q04\",\"uhu \":\"030E0B040U030Y08110N1C0O\",uhua:\"111L\",\"uhua \":\"113S\",uhuk:\"04321103\",uhuko:\"0435\",uhun:\"0426110S\",uhung:\"043V\",uhá:\"0U030Y05140F\",\"ui-\":\"0L08\",uia:\"0O030P0D0T0Q150R\",\"uia \":\"0P0A0T1B150R\",uib:\"0T0C\",uic:\"0L060M070O050P020Q020T07\",\"uid \":\"0R0A0S1Y0T7K1C0S\",uida:\"0O0Y0P0Z0Q0J0T0511091C24\",uidad:\"0O0O0P0X\",uidas:\"0O021C4Z\",uide:\"0L050O020P020R0J0T0O1107\",uido:\"0O0N0P06\",uie:\"0L0H0M030O5P0P030T081559\",\"uie \":\"0L0L156X\",uien:\"0O1W\",\"uien \":\"0O220R02\",uier:\"0L020O6U\",uiera:\"0O13\",uiere:\"0O3O\",uiero:\"0O3S\",uig:\"0R060S1Z1C0B1O02\",uige:\"0R080S0X\",uigea:\"0S3A\",uigi:\"0S0M1O02\",uigim:\"0S2K\",uih:\"1106\",uij:\"1108\",uik:\"010O0R0H11061B0F\",\"uik \":\"011B0R0I\",uike:\"0R0R\",uikt:\"0R0L\",\"uil \":\"01110L040R050SB8\",uile:\"0L030O020R0D0S2L\",\"uile \":\"0L050S9A\",uill:\"0L1X0O070Q050T04110B\",uille:\"0L2C110A\",uilo:\"0O040P0W0R021B02\",\"uilo \":\"0O040P121B03\",uim:\"0O060P080R040T09110G15061B02\",\"uin \":\"0D040L040R0J0T0P116Y\",uine:\"0L040M020R030S5V0T0C110A\",\"uine \":\"0L030R020SK90T06\",uink:\"112P\",uinka:\"116F\",uinn:\"03020S0X\",uinne:\"0S2T\",uinq:\"0T0R\",uinqu:\"0T0T\",uio:\"0P050Q02\",uip:\"0L070O080P051104\",uiq:\"0T02\",\"uir \":\"0L050O0O0P0K0S22\",uire:\"0L0S0M050P020QBP1O05\",\"uire \":\"0L1B0QBU\",uirs:\"0S0M\",uirse:\"0S2K\",\"uis-\":\"0L0T\",\"uis-j\":\"0L1C\",uisc:\"0Q030S1E\",uisce:\"0S4Z\",uisi:\"0L0N0O0D0P020Q020T04110R\",uiss:\"0L0S0T0Y1105\",uisse:\"0L0S0T0X\",uista:\"0O030P040Q02112Z1B04\",uiste:\"010N0O080R191107\",uisti:\"0L030Q030T0U110M1O05\",\"uit \":\"012H0L2G0M0B0R580S2J0T631107152J\",uita:\"0L060M050O0F0P1F0Q040T0A0Z07110E151P1O04\",uitas:\"0P12\",uite:\"010W0L0Q0M0E0O020P020Q020R1M0T021109150D\",uiten:\"0R1Q110M\",uitg:\"01110R10\",uitge:\"010T0R14\",uito:\"0O060P7B0Q0A1506\",\"uito \":\"0O050P880Q0A\",uitos:\"0O030P12\",uits:\"010T0L0H0M020R14\",uitu:\"0T161504\",uitur:\"0T16\",uiu:\"0P0E0T0R\",uius:\"0T1D\",\"uius \":\"0T1E\",uiv:\"0L0E0O090P040R02110H1504\",uiz:\"0O070P020R05\",uize:\"0R0K\",uiç:\"0P06\",uiè:\"0L04\",uié:\"0L030O16\",uién:\"0O1T\",\"uién \":\"0O2B\",uió:\"0O05\",uiĝ:\"1O03\",\"uj \":\"03030U0B0V050Y0B1A0J1D0E1O2K1Q37\",ujan:\"04220B1311031B02\",\"ujan \":\"0B1Q1103\",\"uje \":\"041D0U470V180Y461A311B0N\",ujem:\"0U0P0V1C0Y6P1A0J\",\"ujem \":\"0V2Q0Y7C\",ujeme:\"0U0Z0Y12\",ujer:\"03020O1C\",\"ujer \":\"0O14\",ujet:\"0L0I0O030U0G0V030Y0X\",ujete:\"0U0N0V080Y16\",uješ:\"0U160V0H0Y1J\",\"uješ \":\"0U1N0V170Y1X\",ujj:\"031F1405\",ujn:\"1O0P\",\"ujn \":\"1O14\",ujo:\"0L260O050P0411031B0K1O0L1Q03\",\"ujo \":\"0O070P0311041B0K1O0O\",ujou:\"0L3N\",ujour:\"0L63\",uju:\"040G0B0V0U0F0V0R11081B0D1C10\",\"uju \":\"0B0P0U0P0V0J1B0F\",ují:\"0U0U0Y0P\",\"ují \":\"0U13\",ujím:\"0Y16\",ujíma:\"0Y1H\",ujú:\"0Y13\",\"ujú \":\"0Y1D\",ują:\"1A0Y1B0B\",uję:\"1A1J\",\"uję \":\"1A28\",ukaa:\"0B0A112F\",ukaan:\"0B0K114Z\",ukai:\"0B18110D1B0I\",\"ukai \":\"0B1V1B0W\",ukan:\"0305042R0B980D0D110V1A02\",\"ukan \":\"03080BDS0D0M110F1B03\",ukann:\"0B2D1108\",ukas:\"0D0H0M04110B14031A021B0Z1O05\",\"ukas \":\"0D0R0M05110914021B1X1F021O09\",ukc:\"1A091O0M\",ukce:\"1A0A1O0Y\",ukces:\"1A0F1O1W\",ukd:\"10041B05\",uken:\"0302041O0R0E1002110H12091B02\",uker:\"030A120N1O04\",\"uker \":\"0302120L\",ukh:\"0D0D1005\",ukha:\"0D0O\",\"ukha \":\"0D0J\",ukhan:\"0D0P\",ukia:\"1B0Z\",ukin:\"030411051B0T\",ukir:\"042H\",ukira:\"0435\",ukis:\"0B0811041B071O051P0U\",\"ukis \":\"1B0F1O091P0Z\",ukk:\"010M030V0B0C0R0B0Z0R112N120H131514031C0G1F04\",ukka:\"0B0K111I131D1406\",ukkan:\"0B131109132V1403\",ukke:\"010H03070R0C0Z22110412121F04\",\"ukke \":\"0Z0M11041206\",ukker:\"0Z0M120B\",ukket:\"0Z0R120J\",ukki:\"010Y03030R0X110H\",ukkig:\"010T0R15\",ukku:\"03050B041128130D1C0K\",ukla:\"03080D040V0311061B021F1W1N0Q\",uklar:\"1F25\",ukm:\"0B031N0S\",ukma:\"1N14\",ukman:\"1N1I\",ukn:\"0B050U030V030Z0214021B05\",ukob:\"041O0D02\",ukor:\"0468140A\",ukora:\"048Q\",\"uks \":\"1B061C19\",ukse:\"0B050Z071141120E1C0Z\",uksen:\"114J\",ukses:\"0B09112H1207\",uksi:\"03020B0611261B0B\",uksia:\"112F\",\"ukt \":\"03090R090Z061005120D1D0J\",ukte:\"0R040Z021003120I1B08\",ukti:\"03020B050N020Z0310071B101O04\",\"ukti \":\"1B221O03\",ukub:\"042V\",ukubo:\"043V\",ukul:\"0B0W0D021103\",\"ukul \":\"0B1M\",ukun:\"044Q0B070D020N07110B\",ukund:\"046Y\",ukup:\"0B0S1104\",\"ukup \":\"0B1I\",ukur:\"045H0B0B1B021D0O\",ukuri:\"045Y\",ukw:\"040Y\",uká:\"0U0E0Y0K1406\",ukç:\"1F0X\",ukça:\"1F12\",\"ukça \":\"1F1G\",uką:\"1A021B0I\",\"uką \":\"1A021B0U\",ukė:\"1B0I\",ukš:\"1B15\",ukšt:\"1B15\",\"ulac \":\"0338\",ulad:\"0D080O040P041F02\",ulag:\"0D020L021N15\",ulah:\"0B0K1102\",ulai:\"0B1G0L1C0R0511051B04\",\"ulai \":\"0B2S1B04\",ulak:\"0B060D0A11041F06\",ulam:\"03030D030T1D11071F0E\",\"ulam \":\"0D030T1F\",\"ulan \":\"0B230D0R11091F031O02\",ulang:\"0B3H0D140L03\",\"ular \":\"0B070D030M0A0O0I0P0Q15081F0N1N0Z\",uları:\"1F16\",\"ulat \":\"030A0B080D190T0A110314021508\",ulay:\"03030D0K\",\"ulay \":\"0D0L\",ulch:\"0T2Q1Q0D\",ulche:\"0T0T\",ulchr:\"0T24\",\"uld \":\"0M6A0N0A0R0E0Z0U10051402\",\"uld'\":\"0M0L\",\"uld'v\":\"0M0S\",ulde:\"0M030N050R050Z0C1002\",uldi:\"0N0I0R0N\",uldig:\"0N0U0R0V\",uldn:\"0M20\",\"uldn'\":\"0M2Q\",uldu:\"03021F15\",uleb:\"1C0S\",\"uleb \":\"1C1Z\",ulee:\"0R021122\",\"ulee \":\"114P\",uleg:\"0Z04131B1Q0I\",\"ulen \":\"03090N040Z041004113M1C17\",uler:\"0L0A0N020T080Z081002120A1O02\",\"ules \":\"03030D040L0O0M050O030T041D32\",ulez:\"0L0S\",ulf:\"030I\",ulh:\"0P1C0Y0B1402\",ulhe:\"0P13\",ulher:\"0P1B\",ulie:\"0L070N030R020T0V15061B03\",ulier:\"0L080N050R020T0T\",ulig:\"0Z0M120Z1O06\",\"ulig \":\"120P\",uligt:\"0Z0F\",ulik:\"110412061C0L1P2J\",\"ulik \":\"1C101P28\",\"ulin \":\"030A0D040L02112U\",\"ulis \":\"03020B200D0A0T0S1B121O08\",ulit:\"030K0B0Y0D0A0Q070T0Y110D1402\",\"ulit \":\"030U0B1F0D0C0T0Y110D1402\",ulj:\"0V09110914071C0F\",ulko:\"1118\",ulks:\"1D0U\",ulkst:\"1D25\",\"ull \":\"03020M0A100N120Z130A\",ulla:\"03030O020Q220T0P100B1181140D1F1I1N0F\",\"ulla \":\"0Q1Z0T0G100511H41402\",ullan:\"030411051F1T\",\"ulle \":\"018B0L080Q050Z15104B11EK122M1CHI\",ullen:\"03040R1Q10041103\",ulli:\"030F0M020O020R500T0B110O1306\",ullie:\"0R6O\",ullu:\"03020T0M111G1307\",ullut:\"112E\",ulma:\"0L030Q02110A1F0V\",uln:\"0T0C140L1C0J\",\"ulni \":\"1411\",ulnu:\"0T0214021C0O\",ulnud:\"1C1O\",ulog:\"0D0G0V03\",\"ulog \":\"0D0T\",uloj:\"1O1L\",\"uloj \":\"1O2A\",ulon:\"0D0J0L0711021O0B\",ulong:\"0D0Y\",ulos:\"0O0A0P0F0T1C0U06111S150B1Q07\",\"ulos \":\"0O0B0P0H0T0V112E150E\",\"ulp \":\"010K0R0K\",ulpa:\"0O0K0P0J0T0E1O05\",\"ult \":\"030L0M0J0R0E0T150Z05141C154L1C2R\",\"ulta \":\"030O0D030O090P030Q020T10112N14041O0B\",ultaj:\"1O2O\",\"ulte \":\"0L050T020Z02152Y1O2J\",ulten:\"0Z09120G\",\"ulti \":\"0Q020T0S1B061O0A\",ulto:\"0D030O070P080Q020T1615061O0J\",ultum:\"0T0U\",\"ulu \":\"03020B0R0D040L06110C13071F08\",uluh:\"0B11\",\"uluh \":\"0B22\",ului:\"110F154P\",\"ului \":\"1109155Y\",ulum:\"0T3D11031F03\",\"ulum \":\"0T3K\",ulun:\"03040B070D0G110M14051F0S\",ulung:\"0D0S\",ulus:\"0B090T1U110Q1F05\",\"ulus \":\"0B0H0T1X\",ulut:\"03020B0A0D09110L1C0E1F03\",ulv:\"0T040Z04110212051B031O03\",ulve:\"0T030Z0812091B02\",uly:\"03040U020Z0512051B0B1N1C\",\"uly \":\"0M030U031N1O\",ulyk:\"0Z0D120D\",ulykk:\"0Z0F120D\",ulá:\"0P030U04140C\",ulä:\"1004\",ulæ:\"0Z021203\",ulé:\"0L080U02\",ulā:\"0T06\",ulē:\"1D0Y\",ulė:\"1B0L\",ulį:\"1B08\",ulō:\"0T04\",ulț:\"151U\",ulți:\"151Q\",\"ulți \":\"151T\",ulțum:\"151R\",umaa:\"0D041119\",umaan:\"0D04112M\",umab:\"0D09\",umaba:\"0D0F\",umag:\"0D0S\",umaga:\"0D15\",umah:\"03190B3J0D03\",\"umah \":\"0B4Q\",umahi:\"032T0D02\",umahk:\"0B1L\",umai:\"0D0J0L0E150H1B03\",umain:\"0D0Z0L0L\",umak:\"0D0S1F0C\",umaka:\"0D11\",umal:\"03040D0U110Y1C0G1F03\",umali:\"03070D101102\",umam:\"0D060P021F03\",umang:\"0D0V\",umas:\"03030D0C0P0R110D1B0J1F021O08\",\"umas \":\"0O020P0Z1B151O0H\",umati:\"03050D0G0U03\",umaw:\"03020D0G\",umawa:\"03030D0P\",umba:\"046C0B040D040O040T091406\",\"umba \":\"04970D030O020T061402\",umbu:\"030204290B0B0T081204\",umc:\"0T021Q03\",umd:\"03070T021F0M\",umeny:\"046M\",umf:\"1306\",umg:\"03040N05\",umie:\"0Y1H1A201D0K\",umig:\"0D081O02\",umii:\"0D0911061504\",umil:\"0D0K0L020O020P020Q031O02\",umili:\"0D0W0L030Q021O02\",umis:\"0D050T04110O1B0L1C191O0A\",umise:\"110T1C1Z\",umit:\"0D060T080U021102150R1O02\",umk:\"03020B02\",uml:\"03030B050V031F0G1Q04\",umme:\"03060M0A0N0D0R0B0Z0M100T110E120J\",ummer:\"0M0D0N0C0R0D0Z0F1005120A\",ummet:\"0Z07100M\",umny:\"0B0H1A04\",\"umo \":\"0O070P070Q040T051B0F1O0G1P2F\",umpa:\"0B0C0D09100211031B09\",umpl:\"0O0J14071505\",umpu:\"0B0G0D021Q0B\",umpă:\"152A\",umpăr:\"152Q\",umq:\"0T1I1Q08\",umqu:\"0T2U1Q09\",umqua:\"0T0Y\",umque:\"0T20\",umr:\"03060V0F10021A051F02\",ums:\"03040N06130I15021B2F1D7O1F02\",\"ums \":\"0N051B3V1D9M\",umt:\"030X0N03100212021Q0C\",\"umu \":\"03020B0U0V041B071D3F1F0Z1O03\",umub:\"042O\",umud:\"045O1F03\",umudu:\"04911F03\",umug:\"045Y0D02\",umuga:\"0441\",umuge:\"044K\",umuh:\"043O0D07\",umuhu:\"0435\",umuk:\"043D0D041102\",umuko:\"043C0D03\",umum:\"0B0F0T031F02\",umun:\"04CQ0D0O0T0311021F0A\",umuna:\"042S\",umuns:\"0447\",umunt:\"04CX0D120T03\",umuny:\"043O\",umup:\"0D07\",umur:\"0304043G0B0I0D0213061F0I1O02\",umury:\"0435\",umus:\"042R0D050T24110415071B031C0E1D0J1Q0T\",\"umus \":\"0T2811041B061D1D1Q0J\",umut:\"044G0D04150G1F06\",umv:\"043Z\",umva:\"0439\",\"umva \":\"045R\",umvi:\"047Y\",umvir:\"04BH\",umw:\"04701Q05\",umwa:\"04BM\",umwan:\"030204G8\",umwe:\"04790N03\",\"umwe \":\"04BX\",umwi:\"041O1Q0A\",umy:\"040R0U040Y071A061N17\",umyt:\"1N1A\",\"umyt \":\"1N1Q\",umá:\"130I\",umé:\"0L0A\",umí:\"0U1B\",\"umí \":\"0U10\",umím:\"0U0P\",\"umím \":\"0U0Y\",umö:\"1003\",umā:\"1D17\",\"umā \":\"1D1G\",umă:\"150N\",umą:\"1B09\",umė:\"1B08\",umě:\"0U0C\",\"un'\":\"0Q191Q0B\",\"un'a\":\"0Q111Q0G\",\"un-\":\"030E0B02\",unag:\"03041C1Q\",unagi:\"1C48\",unak:\"0B121102\",unaka:\"0B22\",\"unan \":\"030A0B0O0D0U110V1F051O08\",unang:\"0D0H0N03\",unas:\"03050D030O0V110Q1B0B1C0H1O02\",\"unas \":\"0D040O1411041B0K1O04\",unav:\"0U0L0Y151102\",unave:\"0U0Q0Y19\",unay:\"0D08\",unb:\"0N051Q03\",\"unc \":\"0T3F\",unca:\"0B040O230P2I0T040V02150I1F0N\",\"unca \":\"0O2Q0P350T020V06150F1F0Q\",unch:\"0M0D0R08100B150A1A03\",unci:\"0B0D0O0Q0P0L0Q0A0T040U02150Y\",unct:\"0M020R030T15150G\",\"unda \":\"04KW0B070O0B0P0E0T0O1008130I1B021F3W1N0Q1O06\",undan:\"0B0M0D050O040T041006130V1F1B1N1G1O02\",unday:\"0M051F19\",\"unde \":\"0N1O0R0E0T0M0Z0Q101F15511O0A\",unden:\"0N1W0Z0X100I120O1507\",under:\"0M1L0N190Z29101L121L\",undet:\"0N060Z0S\",\"undi \":\"030304470D030L0C0T0D131Q1C10\",undir:\"0O02133M\",undo:\"04110D0H0M040O1R0P1W0T0E14031O12\",\"undo \":\"041V0D0J0M050O270P290T0E1O13\",undr:\"0M070Z0P100P120I130Y\",undra:\"100O130S\",undre:\"0M080Z0V120H\",unds:\"0M070N080Z0L1005\",undsk:\"0Z0J\",undt:\"0Z0F120L\",\"undt \":\"0Z0E120L\",undu:\"03050B070D020T1I131L1A021C0K1F0O\",undum:\"0T0V130Z1F03\",\"une \":\"0LFQ0M040N040Q0E0T060Z02153S1C0Q1O0B\",unez:\"041K\",uneze:\"042S\",unf:\"030B0M030N090O02\",\"unga \":\"043O0B0W0D030Q06100C\",ungan:\"046A0B1C0D0U\",ungen:\"04220N2O0Z02100E\",unger:\"0M070N0H0Q080T030Z08100M\",ungg:\"0B1Y0D03\",unggu:\"0B3P\",\"ungi \":\"0B1G15091O02\",ungk:\"0B270D0N\",ungki:\"0B3T\",ungko:\"0D12\",ungu:\"0303048O0B040D050T050U08131D1506\",\"ungu \":\"0302049O\",ungum:\"131W\",ungur:\"0441130R\",unh:\"0M020P091103\",unia:\"0B150T2011061B02\",\"unia \":\"0B280T0O110D\",uniam:\"0T12\",unic:\"0L040M030O080P050Q0L0R030T0K150R\",unid:\"0D030O0W0P0N\",\"unik \":\"1P15\",unin:\"030304190B060D07110F130N1C0H\",unj:\"0B0I0V09\",unju:\"0B10\",\"unk \":\"0M08149F1B03\",unka:\"0B0710031105141F1B02\",unkt:\"0N0F0Z0A10081107120C1A071B021O06\",unku:\"1A061B0T\",unká:\"141T\",unl:\"0M051F231O03\",unla:\"1F261O03\",\"unla \":\"1F1Q\",unlar:\"1F19\",unm:\"0N0313061F0D\",\"unn \":\"120X\",unna:\"1015110I130O\",\"unna \":\"1012130G\",unne:\"0M030N020Q040R2H0Z251008111Q12381C15\",\"unne \":\"0Q040Z2I11101228\",unnen:\"0N030R3A1005110X1209\",unnet:\"110W120L\",unni:\"03040M060Q041004111W132I1C0N\",\"unni \":\"0Q04134M\",unnl:\"120A\",unns:\"120T\",unnsk:\"120O\",unnu:\"1113130O\",unob:\"1P1H1Q0I\",\"unob \":\"1P1A\",unod:\"0D08\",\"unod \":\"0D0F\",unog:\"0D06\",unoh:\"1118\",unol:\"1P1T\",\"unol \":\"1P1G\",unom:\"14031P22\",\"unom \":\"14031P1U\",unon:\"0D0C0T031O04\",unong:\"0D0N\",unos:\"0O150P070V05151N\",\"unos \":\"0O1I0P09\",unosc:\"1522\",unp:\"11051O041Q06\",unq:\"0O090Q0A0T0S1Q07\",unqu:\"0O0D0Q0G0T1I1Q0C\",unqua:\"0T1K\",unr:\"0N02\",\"uns \":\"0L040M030N2P0P0Y151B1B051D1N\",unse:\"0N1K0Q02\",unser:\"0N2M\",unsi:\"049V0N0311081O03\",\"unsi \":\"04FZ110A\",unst:\"0N0A0O020R0C0Z0B120A\",\"unta \":\"0D240O0P0P0I0Q03111L\",untem:\"110G151R1O0B\",unter:\"0L060M080N431F02\",unti:\"0D0D0M0J0Q050T0P110O1B021O03\",until:\"0M0M\",unto:\"0D030O1J0P1B0Q0H110E1O02\",\"unto \":\"0O1E0P0Q0Q0H11081O02\",untr:\"0M0J1508\",untry:\"0M0K0R02\",untu:\"04B40B7Q0O030Q020T10110J\",\"untu \":\"04I1\",untuk:\"0BDK\",untur:\"0T131103\",\"unu \":\"1102130815061B031D0J1FC21O1R\",unua:\"1O0P\",unud:\"1C18\",\"unud \":\"1C31\",unuh:\"0B0I\",\"unul \":\"151Q\",unum:\"0T0I132F1F0A1O02\",\"unum \":\"0T0J13521F0B\",unun:\"0B0J1F2C1O02\",\"unun \":\"1F2X\",unus:\"0T0J1C111F02\",unust:\"1C2J\",unut:\"0V0711301F0Y\",\"unut \":\"1174\",unuz:\"1F1M\",\"unuz \":\"1F1X\",unv:\"0N0313031O04\",unw:\"03030N021Q04\",uny:\"0304042F0B3514031B061N4V\",\"uny \":\"1N6N\",unya:\"030204110B5P\",\"unya \":\"03050B9Y\",unyu:\"0422\",unyw:\"042H\",unywa:\"0441\",unz:\"030304120N020Q0A1508\",unze:\"041O0N021503\",\"unze \":\"042Z\",unç:\"0P041F06\",unö:\"1P4Q\",unön:\"1P5T\",\"unön \":\"1P6Q\",unā:\"1D3U\",\"unā \":\"1D1G\",unāj:\"1D1N\",unāja:\"1D25\",unāt:\"1D1H\",\"unāt \":\"1D37\",ună:\"152K\",\"ună \":\"153L\",unį:\"1B07\",unț:\"150H\",\"uo \":\"0O050P030Q3H0T2B0V0P111V1B461O0A\",uoa:\"1106\",uob:\"0T040V031B061O02\",uoc:\"0Q070T04\",uod:\"0T2K110T1B11\",\"uod \":\"0T4E\",uoda:\"110C1B0R\",uog:\"0Q031B06\",uoh:\"1108\",uoi:\"03020L2I0Q2Q1103\",\"uoi \":\"0L440Q4A\",uoj:\"11071B2I1O07\",uoja:\"11071B2T\",\"uoja \":\"11031B3U\",uok:\"111X1B1W\",\"uok \":\"1B0Y\",uoka:\"111M1B0A1O02\",uoki:\"11041B0Y\",uoks:\"111D1B02\",uol:\"0Q2K113R1B17\",uola:\"0Q1G110D1B0E\",\"uola \":\"0Q1G1104\",uole:\"0Q2K112G\",\"uole \":\"0Q2L1104\",uoli:\"11281B0W\",\"uoli \":\"112H\",uoll:\"111E\",uom:\"0Q0Q0T0L113G1B14\",uoma:\"112F\",uomas:\"112O\",uome:\"111X1B10\",uomen:\"11411B0H\",uomet:\"1B1N\",uomo:\"0Q0Y0T1211111B0Q\",\"uomo \":\"0Q0Y111R\",uomod:\"0T14\",uon:\"0D060L020Q1I0T0611371B0J1O0D\",\"uon \":\"0Q0H11151O09\",uona:\"0Q17110G1B031O02\",uone:\"0Q05111V\",uonee:\"113A\",uong:\"0D0C\",\"uong \":\"0D0L\",uonn:\"1118\",uop:\"0V0B1105\",uoq:\"0T0K\",uoqu:\"0T13\",uoque:\"0T14\",uor:\"0Q0P0T0X111M\",\"uor \":\"0T14\",uori:\"0Q0S110Z\",\"uori \":\"0Q0S111A\",uos:\"0O040P030T0X11161B3W1O02\",\"uos \":\"0O040T1O1B1J1O03\",uose:\"1B1E\",\"uose \":\"1B2T\",uosi:\"11181B2H\",\"uosi \":\"110K1B40\",uost:\"110M1B0Z\",uot:\"0D050L020Q0J0T1V112O1B31\",\"uot \":\"0D090T2K11021B02\",uota:\"0Q0N0T0B111J1B0K\",\"uota \":\"0Q040T0A11301B0D\",uoti:\"0L030Q020T0O110N1B2X\",\"uoti \":\"11041B5L\",uott:\"111R\",uotta:\"113M\",uou:\"0P030T03\",uov:\"0Q1N11091B02\",uova:\"0Q121105\",\"uova \":\"0Q121104\",uovo:\"0Q121B02\",\"uovo \":\"0Q12\",uoš:\"1B0V\",upad:\"0O0O0P0S0U031A03\",upado:\"0O0O0P0R\",upak:\"0B0L110L\",upat:\"0L030Q170T05110215101O05\",upd:\"1N0A1Q06\",\"uper \":\"0D020L0N0M020T2814021O0D\",upil:\"0U1J0V051105\",\"upil \":\"0U1M\",\"upit \":\"0D050T040U0Z\",upk:\"0B031B02\",upn:\"0B030U051Q04\",\"upo \":\"0D0B0O080P070Q030T020V061B061O09\",\"upp \":\"102D131P\",uppe:\"0M020N0C0Q030R020T020Z0C100E1102120D\",uppo:\"0L0K0M0N0Q0B1104\",uppos:\"0L0J0M0O1103\",uppt:\"100N130K\",uppta:\"100J\",upra:\"0T040U040V0C0Y0F150S1A041B261O02\",upran:\"1B2G\",ups:\"0L020M05\",upun:\"0B0F0D0D11191508\",upunt:\"0D0M\",uput:\"1B0S\",uputį:\"1B1L\",upw:\"1Q1O\",\"upwi'\":\"1Q5C\",upy:\"11051A051B04\",upé:\"0L0K0U02\",upă:\"151M\",\"upă \":\"1520\",upė:\"1B0B\",uq:\"030I1Q4E\",\"uq \":\"03051Q60\",uqd:\"1Q29\",uqda:\"1Q44\",uqdaq:\"1Q6R\",\"uqpu'\":\"1Q4G\",uqu:\"03030L040P050T021Q09\",urab:\"04720T031F07\",uraba:\"044X\",urabi:\"044Q1F09\",urad:\"03020D080O070P090V2S10031B021F381O02\",urada:\"0O020P041F4E\",uradi:\"0V6V\",uraf:\"042D\",urafi:\"043O\",urag:\"04220L0D0M05\",urai:\"0L1B0P0311031402\",urak:\"04621F021N0D\",urako:\"046S\",uram:\"0302042D0L030O040P030Q0C0T0J110614051F05\",\"uran \":\"030N0B1M0D0A0M030O020V1I11061F051O08\",urang:\"04220B1I0D031005\",urar:\"030S041R0O0A0P0C0Q060T0410031504\",urash:\"04E0\",\"urat \":\"0B170T04120G1402151P1A02\",uraz:\"046F0U030Y0B\",urazi:\"049C0U040Y0C\",urbe:\"0L020T1E1O031Q0K\",\"urbe \":\"0T0T\",urbo:\"1O0T1Q0C\",urch:\"0L030M050N1K0Q0F1Q0D\",\"urch \":\"0M050N1O\",\"urd \":\"0L040R0R1504\",\"urd'\":\"0L1H\",\"urd'h\":\"0L2I\",\"urde \":\"0L090N2S0R0K0Z0O120T1C10\",urdu:\"03020T031F1U\",\"urdu \":\"1F1E\",urdy:\"1N0Z\",ured:\"03040M0D\",\"uren \":\"031F0N0B0R1E0Z0F1009110E1209\",urer:\"0L0J0N030Q020Z03120I150I\",\"urer \":\"0L0T0N050Z02120F\",ures:\"0L1X0M0A0T0E11051C0H\",\"ures \":\"03020L380M0E0T0E1C13\",ureu:\"0L1U0T04\",ureus:\"0L19\",ureux:\"0L1P\",urf:\"03090L02130O1O02\",urgt:\"0Z0D\",urgte:\"0Z0F\",urh:\"110H13041O05\",urik:\"043K1105\",uriki:\"044K\",uril:\"110715351O04\",urile:\"153G\",urim:\"04190T0B11071B18\",urime:\"1B2F\",urind:\"043C\",urinn:\"137W\",urir:\"04540L0N0T03\",urira:\"044E\",\"uris \":\"0L090T091B321D1I1O0N\",uriu:\"0T0B1B3N\",\"uriu \":\"1B6O\",urls:\"1D0W\",\"urls \":\"1D2A\",urmu:\"03050T031F031N0U\",urmuş:\"1F021N14\",\"urn \":\"0M0F1306\",urnar:\"132I\",urne:\"0L0K0M0I0T03\",urned:\"0M0N\",urnu:\"0T021C0L1F04\",urné:\"0L0O\",urob:\"0Y70\",urobi:\"0Y7B\",urobí:\"0Y14\",uron:\"043K0D030L070Q0311021O0C\",uronk:\"042S\",urpi:\"0T0311021D0X\",urpin:\"1D2F\",urpr:\"0L0H0M0F0P0F150I1O09\",urpri:\"0L0N0M0L150N1B031O0H\",urq:\"0L1O1Q0A\",urqu:\"0L2U0O021Q0A\",urquo:\"0L4P\",urra:\"0L140O030P030T0210031102\",urrai:\"0L1P\",urri:\"03040L100M020O0M0Q020T0Q\",\"urs \":\"0L770M0I0N020R0310031307150A1A02\",urse:\"0L0A0M0Q0Z031506\",ursel:\"0M0O\",ursu:\"03020L040T0R0Z02150A1F08\",ursä:\"100E\",ursäk:\"100E\",urte:\"0L040N071102120H130815051O03\",\"urte \":\"0L05120G\",urtig:\"0Z0R\",urug:\"043G0Q0G1F02\",uruge:\"0435\",uruh:\"042K0B0F\",uruhu:\"0435\",uruk:\"043Y0B0L1102\",urum:\"041K0T1K1F11\",\"urum \":\"0T1O1F0I\",urun:\"041K0B1J1F09\",\"urun \":\"0B1E1F06\",urung:\"0B19\",urur:\"04321F0D1Q06\",\"urus \":\"0B0A0T1G1B0B\",urut:\"042H0B0M0L03\",urvis:\"1D1R\",urw:\"041K1A02\",urwa:\"042V\",ury:\"042D0M031A0A1B071F021N0O\",urya:\"04501F03\",\"urya \":\"030204351F02\",uryam:\"042S\",uryan:\"043C\",uryo:\"0426\",\"uryo \":\"043C\",urz:\"0N071A0H\",urâ:\"150K\",uré:\"0L0A\",urí:\"0O02\",urð:\"132M\",urðu:\"132T\",\"urðu \":\"135L\",uró:\"0O050Y07140A\",urü:\"0N0D\",urüc:\"0N0X\",urück:\"0N1K\",ură:\"151Y\",\"ură \":\"1528\",urč:\"0U0G0Y0J1B02\",urči:\"0U0P0Y0S1B02\",určit:\"0U0Y0Y0Y\",urē:\"1D0H\",urė:\"1B1R\",urėj:\"1B1C\",urėjo:\"1B1Q\",urėt:\"1B0V\",urĝ:\"1O04\",urį:\"1B0D\",urš:\"1D15\",\"urš \":\"1D1G\",urų:\"1B06\",\"us-\":\"03080L061503\",usah:\"0B0X0D02\",usaha:\"0B1D0D04\",usal:\"03020D0711021C0I1F03\",usap:\"0D0W\",\"usap \":\"0D0X\",usapa:\"0D0I\",usar:\"03040O0H0P0I0Q0G\",usav:\"041K0P030T021B02\",usavy:\"042S\",usaz:\"0422\",usaza:\"043O\",usb:\"0M030N0214031B021Q06\",usca:\"0O0R0P070T04\",usci:\"0Q1O0T08\",usd:\"0N020T031B021N0A1Q0C\",used:\"0M180U0C0V030Y0C1C14\",\"used \":\"0M1P0U021C2Q\",usei:\"0N02111R1B02\",usein:\"0N04112M\",usel:\"030E0U120Y0I10021C1Q\",\"usel \":\"0U120Y0G10021C1S\",usele:\"1C26\",usen:\"030K0L020N090O050P020Z04100D1103120K1O02\",uses:\"0L0R0M080N020O020P030R0215071C18\",\"uses \":\"0L190M0B0N040O030P040R031B031C1S\",uset:\"03040N020U0C0Z0O100Z1106121A\",\"uset \":\"030A0U0H0Z0S100Z1103121B\",usg:\"03020N0D\",usha:\"04A40N030R021Q3A\",\"usha \":\"042Z\",\"usha'\":\"1Q5I\",ushak:\"04AQ\",ushe:\"042D0M06\",\"ushe \":\"0447\",ushik:\"048K\",ushim:\"0435\",usho:\"045A\",ushob:\"048K\",\"usia \":\"0B270O040Y0A110L15071B21\",usiai:\"1B2G\",usias:\"0L030O030P020Q020R021B28\",usic:\"0L030M0B0O020P020Q0K0T0B1A02\",usid:\"03020T031B0B1C0Y\",\"usid \":\"03021C2D\",usik:\"0B0L0D040N0D0Z0E100F1108120M1B0C1C0K\",usikk:\"0Z021107120K\",usim:\"03050B0R11031A0N1B1B\",\"usim \":\"03070B1H\",usind:\"0Z0E\",usip:\"11021B1F\",usipi:\"1B20\",usisz:\"1A1G\",usit:\"030S0T0H0U0411081B11\",usj:\"12051A02\",uske:\"0Z0I1107120K1B02\",usko:\"0U040V0I112S1B021O02\",usli:\"03030M070U020Z0511031C0N\",uslik:\"1C1L\",usm:\"03080U050Y0811031B0C1C0K1D0N1Q06\",usma:\"03020N0211021B041C0O\",usny:\"0B0U\",usnya:\"03030B1O\",\"uso \":\"0D080N050O130P0A0Q0J1B0J1O09\",usom:\"04260V030Z03120414021B03\",usoma:\"04351B06\",uspe:\"0L050M080O020P060T040V0Y15061O05\",usq:\"0L0K0T0X1Q0D\",usqu:\"0L0X0O020T1S1Q0D\",\"usqu'\":\"0L1H1Q0M\",usque:\"0L040T1P\",usr:\"03030N020V021B08\",\"uss \":\"0M020N2A1006120914021D0K\",ussa:\"030F0L030N020P020Q090T03111T14021N0F\",\"ussa \":\"0L020P020Q070T041141\",ussen:\"010P03030L030N020R160Z0M100A120D\",ussi:\"03040L2N0M080N0B0Q0Y0R0A0T0K0Z051005110S12061C0N\",\"ussi \":\"0L3B0T02110J\",ussia:\"0M090Q0V1105\",usst:\"0N1O0Z02\",usste:\"0N1L\",ustad:\"0O060P071C1E\",ustan:\"0N060O0V0V0D110X1C1A1O08\",ustar:\"0O180P04\",ustas:\"0O03110O1B041C2X1O09\",\"uste \":\"0L1V0O040R040T030U021A041C3H1O0G\",usted:\"0M060O2K\",uster:\"010S0N020R06\",\"usto \":\"0D4A0O0M0P0A0Q0H11041O06\",uston:\"0D0J11031O03\",ustrá:\"0P0P0U0J0Y1G\",ustus:\"0R020T0A11081C1E\",usua:\"0M0E0O04\",usual:\"0M0J0O03\",usub:\"042H0D03\",usubi:\"044E\",usul:\"0D070L030O020Q02150A\",usum:\"0302043G0T04\",usumb:\"0459\",usun:\"03040D0711041A021F3A\",\"usun \":\"030211061F39\",usv:\"11041C0D1Q04\",usy:\"0D030M080U021B0E1F031N0E\",\"usy \":\"0M0G0U04\",usz:\"0N0414121A25\",\"uszę \":\"1A1U\",usã:\"0P04\",usé:\"0L0G\",usí:\"0U300Y36\",\"usí \":\"0U170Y0S\",usím:\"0U260Y2L\",\"usím \":\"0U1V0Y24\",usíme:\"0U180Y16\",usít:\"0U0D0Y0Z\",usíte:\"0U0J0Y18\",usíš:\"0U180Y19\",\"usíš \":\"0U1P0Y1K\",usó:\"0O03\",usö:\"13041C0H\",usöö:\"1C0L\",usē:\"1D0K\",usė:\"1B0I\",usī:\"1D0N\",\"ut-\":\"030R0L0K150I\",utab:\"04150T0D1C0Q\",\"utab \":\"1C1S\",utad:\"0O0A0P0H10091C0R\",utada:\"1C1L\",\"utaj \":\"1A1F\",\"utan \":\"03030B130D0S0V07100U110N130L1O0U\",utang:\"0B080D0G1F04\",utare:\"0Q0T0T091505\",utas:\"0D080O040P040T0I1106140R1B051C141O04\",\"utas \":\"0D0E0O050P050T0D14021B081C1H1O09\",utat:\"0L020Q0N0T171005110C141H151C1C0I\",utb:\"10041B061F071Q04\",utc:\"14081Q03\",utd:\"12031Q05\",utea:\"0L07152M\",\"utea \":\"1532\",utek:\"041O0U081A03\",utem:\"0T2D0U061102150X1B03\",\"utem \":\"0T2H0U091516\",\"uten \":\"03130N1D0R0W10041118121C\",\"uter \":\"030F0B0F0D070L110M0B0N0T0Q0M0R0D0T070Z0G100F1A0D\",utes:\"0L1N0M090N080T0211031B03\",\"utes \":\"0L2S0M0C0N0D1B07\",utečn:\"0U0T\",utf:\"100612031F06\",utg:\"1004\",uth:\"0M0E0T07\",\"uth \":\"0M0I0T02\",utif:\"0M0E\",utifu:\"0M0J\",utih:\"0B0F\",utik:\"0D020Z0F1005120B1B0Y1O07\",utili:\"0L1G0O0B0P0D0Q0L0T0B15091O04\",utim:\"041V11021O0M\",utima:\"043C1O0A\",utj:\"0R02\",utk:\"0B090U020V03110O1A041F02\",utl:\"030K0N02100412021F1B1N0H1Q4A\",utlh:\"1Q7B\",utlu:\"1F1A\",\"utlu \":\"1F18\",utm:\"0B0610061F0P1N0H1Q0J\",utni:\"03040V050Z0A1002130514091A02\",utny:\"0B0H1A03\",\"utob \":\"1P1N\",utobs:\"1P1A\",utobu:\"0Q0E0U130V110Y0O150X1A0V1B1C\",utol:\"0D021108140X1P17\",\"utol \":\"0D031P19\",\"utom \":\"0D0710081P19\",utomo:\"0L020Q0J0U030V151B2Y\",utos:\"0N040O0I0P0H0Q0I110K1B021P0K\",utočn:\"0Y10\",\"utra \":\"0P0R0T040V2E1A04\",utre:\"030A0L2Q1509\",\"utre \":\"0L2W\",utres:\"0L1K\",utro:\"0P180V080Z0612091A11\",\"utro \":\"0P0U0V090Z021A1N\",utsc:\"0N0V\",utse:\"045E1002120H\",\"utse \":\"0491\",utsu:\"110U1C0I1F07\",\"utt \":\"03020N03100212121307\",utta:\"0Q0Y1007119614021Q0I\",\"utta \":\"0Q0S11BY\",uttaa:\"116C\",utte:\"0L050M040N110Q0V0R020Z141002110O121N\",\"utte \":\"0L050Q0V0Z021107120A\",utted:\"0Z0F\",utten:\"1107120I\",utter:\"0L020M060N1Q0Z0O120I\",uttet:\"0Z09120E\",utti:\"0M030Q2P0R03111N\",\"utti \":\"0Q2P112H\",utto:\"0M030Q3H1002110A\",\"utto \":\"0Q2Y\",uttu:\"0Q02111K130K1F0M\",utuh:\"0B15\",utuhk:\"0B1A\",utul:\"0D0B1104150C1F06\",utun:\"041R0D040N050Q03110L14021F03\",utup:\"0B0N\",utus:\"0B0K0T11110K1B021C0S1F02\",\"utus \":\"0B070T12110G1B03\",\"utut \":\"1102151O\",utv:\"100312071B031Q09\",utvi:\"120G\",utvik:\"120D\",utw:\"041B1Q06\",utwe:\"041R\",uty:\"0M020T02140R1A0A1B02\",utyá:\"1419\",utz:\"0N0D\",utá:\"0U020Y04141A\",után:\"142I\",\"után \":\"1424\",utä:\"1P0C\",uté:\"0L0D0O020U040Y07\",utò:\"0Q03\",utó:\"0O021412\",utô:\"0L07\",utā:\"0T031D1F\",utāj:\"1D1C\",utāju:\"1D32\",ută:\"151E\",\"ută \":\"151N\",utė:\"1B0F\",utę:\"1B07\",utį:\"1B0J\",\"utį \":\"1B0V\",utō:\"0T02\",\"uu \":\"112Z1C0Z1O02\",uua:\"11041C0F\",uud:\"11241C22\",uuda:\"11021C0V\",uude:\"113P\",uuden:\"113H\",uudes:\"113H\",uue:\"1C0Z\",\"uue \":\"1C0N\",uuh:\"1109\",uuk:\"110Q1C0E\",uul:\"0D03113H1C30\",\"uul \":\"1C0N\",uula:\"0D0511031C16\",uule:\"11271C0G\",uuli:\"0D02111M\",uulu:\"110Z1C0L\",uum:\"0T20110R1C0G\",\"uum \":\"0T3R\",uun:\"0D020T08112Q1C0E\",\"uun \":\"112I\",uunn:\"1119\",uunni:\"112A\",uup:\"1102\",uur:\"011H0R12112N1C3A\",\"uur \":\"012H0R2H1C1B\",uurd:\"0R0J1C0E\",uure:\"110R1C1G\",uuri:\"113I1C0R\",\"uuri \":\"1167\",uus:\"01090D020T1K11271C1K\",\"uus \":\"010H0T2Y11121C0V\",uusi:\"111J1C0R\",\"uusi \":\"112G\",uut:\"0R0211461C0U\",uuta:\"112B\",\"uuta \":\"112R\",uute:\"1116\",uutt:\"112Q\",uutta:\"1139\",\"uv \":\"0U031Q1R\",uvai:\"0L1K11091B0F\",uvais:\"0L1R1103\",uvau:\"11021B1A\",\"uvau \":\"1B2L\",\"uve \":\"0L110O0J0P071B03\",uvea:\"0L0W\",uveau:\"0L1J\",uvek:\"0V1Z\",\"uvek \":\"0V4Z\",uvel:\"0L130R030V031105\",uvell:\"0L1L\",uven:\"0L1M0O030P050T0K0Z021003\",uvent:\"0L2F0O030P030T03\",\"uver \":\"0L1C0P02\",uvert:\"0L1E1002\",uvez:\"0L14\",uvid:\"0P0B0U0K0Y10\",uvidí:\"0U0L0Y11\",uvil:\"0U0Z11021B02\",\"uvil \":\"0U0Z\",uvit:\"0T030U1D110K1C14\",\"uvit \":\"0T030U1W\",uvita:\"110A1C2Q\",\"uvo \":\"0O0Y1B8N1O06\",uvom:\"1B0C1O021P0T\",uvr:\"0L0X0V04\",uvre:\"0L0V0V04\",uvu:\"042D0U02100K11071B041D0E1Q05\",uvud:\"100S\",uvug:\"0462\",uvuga:\"049T\",uvy:\"04181B05\",uvé:\"0L0K\",\"uvé \":\"0L0S\",uví:\"0U14\",\"uví \":\"0U0W\",uvö:\"1P0N\",uvön:\"1P0T\",uvā:\"0T02\",uvė:\"1B0F\",uvę:\"1B08\",uvě:\"0U0B\",uw:\"010H030C040J0D200R1Z1A0Q1N1I1Q03\",\"uw \":\"0R1M1N0P\",uwa:\"0307040G0D171A121N0R\",uwag:\"0D141A0C\",\"uwag \":\"0D20\",uwan:\"0D0D\",\"uwan \":\"0D0H\",uwar:\"0D0B\",uwart:\"0D0K\",uwd:\"0R09\",\"uwd \":\"0R0N\",uwe:\"010T03090D0X0R0U\",\"uwe \":\"01120R1E\",uweb:\"0D07\",uwed:\"0D0X\",uwede:\"0D1Q\",uwel:\"010K0D050R0G\",uweli:\"010K0R0K\",uwen:\"0D090R1D\",\"uwen \":\"0R1S\",uwi:\"030J0D080R021A0G1Q03\",\"uwi \":\"03040D06\",uwin:\"03030D060R02\",uwo:\"040N1Q03\",\"uwo \":\"041V\",uws:\"0R05\",uwt:\"0R03\",uwu:\"040S\",uwy:\"03031N0G\",uwç:\"1N0J\",\"ux-\":\"0L0O\",\"ux-t\":\"0L0Z\",\"ux-tu\":\"0L1N\",uxe:\"03080P070T030Y041002\",uxi:\"0L030T0G\",uxo:\"0P020T0W\",uxor:\"0T1Q\",uxore:\"0T0Y\",uxt:\"0T08\",\"uy \":\"030D0M0K0O2U1Q08\",uya:\"0307040G0D050L040O071F1H1Q05\",uyd:\"03091F1A\",uydu:\"1F1H\",uye:\"030B042X0L040O07\",\"uye \":\"048I0O05\",uyg:\"1F0K\",uyi:\"0302\",uyk:\"1F0B\",uym:\"1F0G\",uyo:\"040O0D020O071F3M1Q04\",\"uyo \":\"041O0D020O09\",uyor:\"1F44\",\"uyor \":\"1F2J\",uyoru:\"1F1J\",uyr:\"1F0G\",uys:\"0M031F02\",uyu:\"030204361F2E1Q03\",\"uyu \":\"04901F0M\",uyó:\"0O03\",\"uz \":\"03080O0A0P0D0V07150B1D681F4B1N0T\",\"uza \":\"04AY15101F071O05\",uzc:\"0O02\",uzd:\"0U020V081F0C\",\"uze \":\"04650L030R0A0U0E150I\",uzg:\"03090O02\",\"uzi \":\"044J15061O09\",uzie:\"0N030R0Q1B04\",uziek:\"0R0T\",uzio:\"0Q0L\",uzm:\"0V091D151F04\",uzma:\"1D111F04\",uzman:\"1D2O1F06\",uzo:\"042T1O06\",uzob:\"0429\",uzr:\"03030V021D0K\",uzs:\"0U0K1D0Q\",uzsk:\"0U0X1D0M\",uzsky:\"0U15\",uzt:\"03021D15\",uztic:\"1D1W\",uzun:\"15051F1H\",\"uzun \":\"1F1S\",uzv:\"1D0X\",uzva:\"1D0W\",uzvar:\"1D25\",uzy:\"1A0F1N0J\",uzz:\"030E0Q03\",uzç:\"1N18\",uzça:\"1N1R\",\"uzça \":\"1N25\",uzš:\"0U0C\",uzšti:\"0U0S\",uß:\"0N0B\",uße:\"0N0B\",uá:\"0O0M0Y031402\",uál:\"0O0M0U021402\",\"uál \":\"0O0U\",uán:\"0O1F\",uánd:\"0O0T\",uándo:\"0O12\",uánt:\"0O1D\",uánto:\"0O1E\",uão:\"0P03\",uæ:\"0T0L\",\"uæ \":\"0T17\",uær:\"0T03\",uæs:\"0T02\",uç:\"0P051F0L1N0K\",uça:\"0P041F0C\",uçk:\"1N0G\",uçl:\"1F0P\",uçu:\"1F0B\",uçã:\"0P0D\",uçõ:\"0P03\",ué:\"0L0D0O200P0H\",\"ué \":\"0L150O5F\",uéd:\"0O02\",uée:\"0L0D\",uél:\"0O02\",uém:\"0P1Z\",\"uém \":\"0P2F\",uér:\"0L040O02\",ués:\"0L060O0U\",\"ués \":\"0L0A0O17\",uê:\"0P06\",\"uê \":\"0P09\",uên:\"0P08\",uês:\"0P09\",uí:\"0O0O0P060S0E\",\"uí \":\"0O1X0S0P\",uía:\"0O05\",uíd:\"0P0A\",uím:\"0O020P05\",uís:\"0P03\",uð:\"1328\",\"uð \":\"1321\",uði:\"130H\",uðu:\"1319\",uðv:\"130K\",uñ:\"0O031N1G\",\"uñ \":\"1N2O\",uña:\"0O04\",uñe:\"0O03\",uò:\"0Q0C\",\"uò \":\"0Q1C\",uý:\"1N0Q\",uýd:\"1N0G\",uýý:\"1N0C\",uā:\"0T051D06\",\"uā \":\"0T03\",uāl:\"0T06\",uă:\"150O\",\"uă \":\"1529\",uć:\"0V141A02\",uće:\"0V0X\",\"uće \":\"0V11\",ući:\"0V1A\",\"ući \":\"0V1I\",uč:\"03040U1E0V1T0Y1F1B0G\",uče:\"0U090V1I0Y0C\",\"uče \":\"0V0X\",uči:\"0U1Q0V2J0Y1R1B18\",učia:\"1B0S\",učil:\"0U0U0V0C0Y0G\",\"učil \":\"0U0W0Y0E\",\"učio \":\"0V1L1B04\",učit:\"0U1U0V0M0Y1B\",\"učit \":\"0U1B\",učite:\"0U1A0V1B0Y1M\",učiu:\"1B0S\",učiť:\"0Y17\",\"učiť \":\"0Y1I\",učí:\"0U0H0Y16\",učím:\"0U0A0Y12\",\"učím \":\"0U0B0Y19\",uď:\"0U060Y0C\",\"uď \":\"0U0A0Y0I\",uđ:\"0V06\",uė:\"1B04\",uėj:\"1B08\",uĝ:\"1O0A\",uĝa:\"1O09\",uĝi:\"1O05\",uğ:\"1F3G\",uğr:\"1F0H\",uğu:\"1F8G\",\"uğu \":\"1F1P\",uğum:\"1F1G\",uğumu:\"1F17\",uğun:\"1F6U\",uğunu:\"1F7J\",uī:\"0T03\",\"uī \":\"0T07\",uļ:\"1D09\",uľ:\"0Y02\",uł:\"1A0A\",uņ:\"1D06\",uň:\"1N3W\",\"uň \":\"1N7D\",uō:\"0T06\",\"uō \":\"0T0B\",uř:\"0U0C\",uś:\"1A0A\",uŝ:\"1O0C\",uŝa:\"1O05\",uŝi:\"1O07\",uŝo:\"1O04\",uş:\"15041F271N1H\",\"uş \":\"1F0Q1N0G\",uşa:\"15031F121N0E\",uşm:\"1F1X\",uşma:\"1F22\",uşt:\"1F11\",uştu:\"1F14\",uşu:\"1F131N0L\",uşy:\"1N0T\",uš:\"0U0X0V100Y0N1B0E1D0M\",uša:\"0V161B031D0K\",uše:\"0U0M0V080Y07\",uši:\"0U0D0V0F0Y0F1B0B1D1J\",\"uši \":\"0U060V070Y081D1N\",ušk:\"0U0A0V0C0Y0E\",ušč:\"1B07\",uţ:\"1502\",uť:\"0U020Y07\",\"uť \":\"0U050Y0J\",uż:\"1A22\",\"uż \":\"1A1Z\",użo:\"1A0V\",\"użo \":\"1A19\",uży:\"1A0Z\",už:\"0U2D0V0N0Y1V1B2S\",\"už \":\"0U3C0V040Y2Y1B21\",uža:\"0V0I1B07\",užd:\"1B0S\",užg:\"1B06\",uži:\"0U0G0V0J0Y0P1B0S\",užk:\"0U031B08\",užm:\"1B0X\",užmi:\"1B18\",užmir:\"1B1V\",užs:\"0U020Y081B18\",užsi:\"1B1U\",užt:\"1B0F\",užu:\"0V051B09\",uží:\"0U0M0Y0B\",uș:\"150N\",uși:\"150V\",uț:\"150K\",uți:\"151U\",uțin:\"151O\",uɛ:\"0303\",uɣ:\"032U\",\"uɣ \":\"032F\",uɣa:\"031J\",uɣe:\"0342\",uḍ:\"030P\",uḥ:\"0314\",\"uḥ \":\"031Q\",uḥe:\"031K\",uṛ:\"030D\",uṭ:\"0305\",uẓ:\"0309\",\"v'\":\"0Q041Q0C\",\"v'e\":\"0Q041Q0G\",\"v'è\":\"0Q0C\",\"v-\":\"1502\",\"v-a\":\"1507\",\"va-\":\"0L020P04\",vaa:\"010F0R0G113E1C221F05\",\"vaa \":\"112F\",vaak:\"0R0T1102\",\"vaak \":\"0R13\",vaan:\"111F\",\"vaan \":\"1137\",vaar:\"010T0R0V110P\",\"vaar \":\"010G0R09\",vaat:\"0R02110W1C1T\",vaata:\"1C3O\",vab:\"0O060T061B031C2R1F061P0F1Q0A\",vaba:\"0O090T021C32\",vabad:\"1C2N\",vaban:\"1C2J\",vaca:\"0L0C0M040O0F0P030Q1F0T05150F\",vacan:\"0L0K0Q1F150F\",vack:\"100W\",vacke:\"100J\",\"vad \":\"0Z5Q106Y14031C7D1QD2\",vader:\"0R1X\",vado:\"0O0E0P0E0Q3J140A1B081O05\",\"vado \":\"0O0B0P090Q3K1O06\",vae:\"0T061102\",vagy:\"14DS1B02\",\"vagy \":\"1471\",vagyo:\"146T\",vagyu:\"141K\",vah:\"0U040Y06110J1C1K1F021Q04\",vahe:\"1C1U\",vahel:\"1C2D\",vahet:\"1C1H\",vai:\"0L6E0M020O030P2Q0Q2B116714031B5U1C0U1DF0\",\"vai \":\"0P370Q3O111614021B1I1DDS\",vaig:\"1B0C1D0X\",vaik:\"113D1B3I\",vaika:\"1B2Y\",vaike:\"113C1B04\",vaiku:\"11341B0Z\",vaikš:\"1B1E\",vail:\"0L2V0M0311041B0U\",\"vail \":\"0L2D\",vaill:\"0L2K1106\",vaim:\"11111B04\",vain:\"0L0I113Z1D2C\",\"vain \":\"0L08118A\",vaino:\"11021D3U\",vair:\"1B0R1D3H\",vairs:\"1D32\",vairā:\"1D5C\",vais:\"0L490O040P04110N1B0U\",\"vais \":\"0L660O050P051B0A\",vait:\"0L3411041B0Y\",\"vait \":\"0L56\",\"vaj \":\"0V1E0Y0R14041O0E1Q2U\",vaja:\"0V0314021C2B1D5C\",\"vaja \":\"1C3H\",vajad:\"1D88\",vajag:\"1D5L\",\"vají \":\"0U0R\",vajú:\"0Y1F\",\"vajú \":\"0Y1K\",vaka:\"0R0B0V06110J1309140A1B2X1D27\",vakar:\"14021B5Z1D5H\",vakk:\"120F1403\",vakke:\"120F\",vakr:\"0U071209\",\"vala \":\"0U1P0V220Y1Y\",valak:\"141N\",valam:\"144R\",valan:\"11021B2Q1F02\",vald:\"0T2M100713081B081C0G\",valde:\"0T2S1005\",valet:\"0T0H11031C1L1F04\",valg:\"0Z0I120H1B3B1C0K\",valgo:\"1B1H\",valgy:\"1B2Q\",\"vali \":\"0Q020U1J0V0T0Y1T\",valik:\"11021C1H1P4P\",valit:\"0U020Z02112J1C1A1O05\",vall:\"0L020O020Q0A0R0V0T031002111V1306140J1F02\",valle:\"0R120T02110C\",valm:\"111G1C0X\",valmi:\"113E1C29\",valod:\"1D9T\",vals:\"0R051B0C1D17\",valst:\"1B0N1D32\",valt:\"0R091002111I1B041C0Z1F09\",\"valt \":\"0R0C1C2G\",valta:\"112M\",való:\"142Z\",valós:\"1411\",\"vam \":\"0P1B0T0Q0V100Y1N14021D0M1F0N1QFR\",\"vam'e\":\"1Q4Z\",vame:\"0O080P0G0Q0L0Y0H\",vamo:\"0O0R0P1M0Q0Y0V06\",\"vamo \":\"0Q0Z0V0G\",vamos:\"0O100P22\",\"vana \":\"0V0D1002110F1B051C1V\",vanaa:\"010G\",\"vand \":\"0Z12\",vanda:\"011O0R2C0T05131R\",vande:\"0Z0G10071B2C\",vane:\"0Q0F0Z051C151O02\",vanem:\"1C2U\",\"vang \":\"010N0R021Q14\",vange:\"0R0T\",vanh:\"112P\",vanha:\"1133\",vanhe:\"112P\",vanie:\"0Y1B\",vanj:\"0V18\",vanje:\"0V23\",vanl:\"0Z07100C120R1F06\",vanli:\"0Z08100C120R\",vann:\"0Q3E0R041009110G121D13081424\",\"vann \":\"1009120S130B\",vanna:\"0R051428\",vanne:\"1109120C\",vanno:\"0Q3F110A\",vano:\"0L020O020Q1Q0R030V061B0E\",\"vano \":\"0O030Q1Q0V091O02\",vans:\"0Z091003110P120X1504\",vansk:\"0Z0A120W\",\"vant \":\"0L3J0M020T040Z041002120I\",vao:\"0V14\",\"vao \":\"0V1D\",vape:\"0U0A0Y0X1005\",vapen:\"0U0D0Y161005\",\"var \":\"0O0K0P0R0V090Z9M10CE12AI13AC14061D4E1F721O07\",\"vara \":\"0V0M10321104130L150N1F021O05\",varan:\"0P02100L11041B08\",varat:\"0V07110N1D25\",varb:\"14041B10\",vardı:\"1F2R\",\"vare \":\"0Q180T0H0Z0D1005120H\",varer:\"0Z0E1205\",varf:\"102I\",varfö:\"102I\",varg:\"10031B171Q09\",\"vari \":\"0T020V1K1B051D3C\",varit:\"0T03100S\",varj:\"100U110F1405\",varje:\"100V\",varm:\"0Q020Z0O100E111X120Q1F061O0X\",varma:\"100211451F061O0P\",varno:\"0V23\",vart:\"0Q020Z03100O110O120Q130K14071B0F1O03\",\"vart \":\"100J1208130S1403\",varte:\"0O020Z02110T120I\",varu:\"0T05110A1B031D2W\",\"varu \":\"1D7A\",varē:\"1D3T\",varēj:\"1D2T\",varēt:\"1D6C\",varīg:\"1D1R\",vasar:\"11031B1G\",vasi:\"0T03110H1B021C0K\",vask:\"0Z0Q120L\",vaske:\"0Z0S120I\",vast:\"0L030M020O020P030Q020R0K0T06114U140P15041C2N1O06\",vasta:\"0P020T031168140O1C1H1O05\",vasti:\"11451C131O06\",vastu:\"11151C2Q\",\"vat \":\"010N0R060T0F0U5O100411CV1405150V1C0N1F05\",vate:\"0L060M050N0Y0O020Q100T060U0B0V050Y0O1102\",\"vate \":\"0L070M030O020Q100T030V0A0Y0G\",vater:\"0N1K\",vato:\"0Q1N0Z05140B1B021O03\",\"vato \":\"0Q1M1O02\",vatt:\"0Q040R04100X110A1402\",vatte:\"0R04100O\",vatu:\"0T050U0211021C0N\",vatud:\"1C1L\",vau:\"0L0B110G1B1K\",\"vau \":\"1B27\",vav:\"0P0B0Q020T0311031B051Q2T\",vax:\"130A1P0G\",vay:\"0O0E1F051Q3C\",\"vay'\":\"1Q66\",\"vay' \":\"1Q9P\",vaya:\"0O0L1F02\",vaz:\"0P050U040V04140615021B021F0D1O08\",vaç:\"0P04\",vað:\"1350\",\"vað \":\"136M\",vaða:\"131F\",\"vaða \":\"1327\",vaĵ:\"1O08\",vaş:\"1F0P\",vaš:\"0U0P0V0M0Y1L\",vaše:\"0U0P0V030Y0X\",\"vaše \":\"0U0T0V060Y0U\",vať:\"0Y3O\",\"vať \":\"0Y68\",važ:\"0U070V0L0Y051B10\",važi:\"1B1N\",važiu:\"1B2D\",vb:\"100314041Q0N\",vbe:\"14061Q26\",vbo:\"10041Q06\",vbr:\"1003\",vc:\"0U050V050Y051F021Q07\",\"vd \":\"10021203\",vda:\"0U0H0Y0D1F021Q0S\",vde:\"0V210Y0D0Z14100E120B1F0T\",\"vde \":\"0V2G0Z2W100G120Q1F0Q\",vdi:\"1F0O\",vdu:\"0U190Y0T\",\"vdu \":\"0U220Y1F\",\"ve-\":\"0L030P03\",vea:\"0L0O0O031103151H\",\"vea \":\"0O021105151Q\",veau:\"0L150R020Z021507\",\"veau \":\"0L1O0R021509\",veb:\"0T020Z0212021O031Q0C\",\"vec \":\"0L5P0U030Y0I\",vecc:\"0Q0O\",vece:\"0O0W0Q051F04\",veces:\"0O16\",veck:\"100N\",vecka:\"100F\",vecā:\"1D0W\",vecāk:\"1D21\",\"ved \":\"0M1N0Z55121C140K\",veda:\"0O020Y8K1B041F031O02\",vedal:\"0Y84\",vedať:\"0Y1Z\",vede:\"0Q280U0C0V070Y310Z18110C140D151H\",\"vede \":\"0Q080U0A0Y0I0Z101505\",vedel:\"0Y3111071402\",veder:\"0Q1R150M\",vedet:\"0Q020Z0F11031408\",vedi:\"0Q0B0V040Y1P15051B02\",vedie:\"0Y1I\",vedl:\"0U0W0Y0C\",vedo:\"0Q0F0U030Y1011021P0Y\",vedom:\"0Y18\",veds:\"0V050Z0A12061402\",vedz:\"0Y21\",\"vedz \":\"0Y1H\",vedzt:\"0Y11\",vee:\"010S0R1K11091C2X\",veel:\"011I0R5B11051C2O\",\"veel \":\"011L0R6U1C61\",veer:\"0R0K\",vegn:\"1318\",vegna:\"132M\",veh:\"0O020T0C110314031Q03\",\"vei \":\"0P031104120I1403151C1B06\",veid:\"14021B0I1D1E\",veie:\"120R\",veien:\"120O\",veik:\"110413121B301D1W\",\"veik \":\"130F1B1G\",veiki:\"130B1B1T\",veiks:\"1B101D2K\",veil:\"0L0U0R0C1103\",veill:\"0L1E1103\",veis:\"0P0I1108130T\",veit:\"0P05110C1205131W1402\",\"veit \":\"132S1402\",vej:\"0O030P0P0U0P0Y0C0Z0T1B0C\",\"vej \":\"0U0N0Y0G0Z0M\",veje:\"0O020Z0Q\",vejen:\"0Z0L\",vejr:\"0Z0P\",vejre:\"0Z0H\",vek:\"0U020V2E0Y170Z0210031103120D1304140G1O06\",\"vek \":\"0U040V2L0Y1B140G\",vekk:\"120G1403\",veks:\"0Z0411031209\",vela:\"0O0E0P080Q030T050V0711021P29\",velat:\"1P2M\",veld:\"0R071249130P\",\"veld \":\"0R07120N\",veldi:\"123H130I\",vele:\"0M020Q040R0E0Z02110G145415061F02\",\"vele \":\"0R091106141N1507\",veled:\"0M02141C\",velem:\"110A141M\",velg:\"120C1B07\",velh:\"0P0V\",velik:\"0U080V3B\",velje:\"112B\",velk:\"0U1E0Z0611071208130E1B04\",velký:\"0U0R\",vell:\"0L0Y0Q070T0H0Z02110K13051402\",velle:\"0L1M0T0G110F\",velm:\"0P0G0U2D\",velmi:\"0U3A\",vels:\"0M020Z091002120B1402\",\"vem \":\"0P1G0T0Q0U060V040Z1R101Q1221140T151I\",vemo:\"0O040P0J1P4B\",\"vemo \":\"1P4Y\",\"ven'\":\"0M0H\",\"ven't\":\"0M0N\",vena:\"0L0A0Q030R020T0A0U050V0611021B1M1O0O\",\"vena \":\"0Q030U050V0D11041B2I1O04\",venc:\"0O0G0P0K140F\",vende:\"0L060O0G0P0F0Q0C0R080T060Z0O120B1F071O0A\",vendi:\"0L020O060P030Q040R030T0C0Z08120D1B061F021O0D\",\"vene \":\"0Q020V0B0Z031103120F\",vener:\"0Q070T1G\",\"veni \":\"0T140U060V0D151G1B0B1F021O0T\",venie:\"0L020M020O020P020T0U\",venim:\"0T090V09150D1B32\",venir:\"0L2P0O0O0Q0Q0T0W\",venis:\"0Q020T171O28\",venit:\"0Q050T2F152Y\",venl:\"0Z0P1F0E\",venli:\"0Z0V1F0D\",venn:\"0Q0B0Z0V11021227141D\",\"venn \":\"120N\",venne:\"0Q0B0Z1112141408\",venni:\"1412\",vennl:\"120C\",veno:\"0L020U040V0A1B0G1O1E\",venos:\"1O1B\",vensk:\"0U030Y0F0Z09100H1206\",\"vent \":\"0L430M050R030Z051208\",venta:\"0O100P050Q130T0215051O03\",vente:\"0L070M030P020Q030T050Z1D121614021O02\",venti:\"0L060M020O020P020Q080R030T071B1K1O05\",ventu:\"0L050M060O070P060Q020T0Y1B021O05\",venu:\"0L1O0Q100T060V051B0E1O0C\",\"venu \":\"0L1O0V0C1B0S1O0K\",venut:\"0Q10\",vený:\"0U0F0Y15\",\"vený \":\"0U0K0Y1E\",veo:\"0O0A0V1Q\",veom:\"0V1R\",veoma:\"0V4G\",vep:\"1B03\",\"vera \":\"0L090O080P070Q0B0T0A137M1O0N\",veram:\"0P0C0Q100T02\",veran:\"010S0N0B0O0J0Q030R19120I1O04\",verba:\"010G0N030R0C0T0K\",verda:\"0N070O2L0P1P0R061B061O0K\",verde:\"0N020O0A0P0A0Q050R0N0Z1G121515091O03\",verdi:\"010K0N0G0R0M120C1F2V1O04\",\"vere \":\"0Q2C0T130Y1S0Z041O29\",verf:\"0N0D0R060Z0C100212081308\",verge:\"012D0L020N150R1Y\",verh:\"0N0L0R120Z0710021102\",veria:\"0P1N11031B05\",verið:\"1338\",verj:\"0R0A133P1403\",verju:\"136Y\",verka:\"0N0I0R02100W1O04\",verke:\"010N0N090R0O0Z0610021207130C\",verkl:\"0N030R0C101B\",verko:\"010L0R1111051O08\",verl:\"011R0N1X0O0B0Q090R2D0Z08100A12071F02\",verla:\"010K0N0R0O040Q020R0K\",verle:\"0N0I0O030R0W0Z08100712051F02\",verli:\"0N0Y0R0Y\",verlo:\"010P0N0U0O080Q060R0V\",verme:\"0N060O060P0I0R031F26\",verni:\"0N020R0713481403\",\"vero \":\"0Q550T0P11021O0R\",verov:\"0V1N0Y0G1102\",verr:\"0L0O0N0D0Q0G0R0I0T040Z0B10081106120U130A\",verra:\"0L090N050Q020R0G0Z0C1008110E120F\",verre:\"0L0N0N030Q020R05120F\",\"vers \":\"0L1S0M040R0413201B02\",versa:\"0L0U0M050N080O0E0P0W0Q0H0T0O0Z071004150I1O0G\",versc:\"0N1C0R19\",versk:\"010N0Z02130C1B08\",verst:\"010X0N2P0R1A0Z0210021207130F1B0K\",versu:\"0N1J0R020T0E1002110213331509\",versæ:\"0T040Z0M\",\"vert \":\"0L0V0R020Z0D120I132C1408\",vertr:\"010P0N0T0R1P0Z02\",veru:\"0N050T1S0V0N0Y0C130D\",verun:\"0T14\",verv:\"010F0R0Q0Z051003\",verw:\"01140M020N0M0R1C\",verwa:\"010T0N0A0R0U\",very:\"0M5A1Q0I\",\"very \":\"0M4U\",veryo:\"0M0V\",veryt:\"0M17\",verz:\"0N0C0R0N0U040V061403\",verí:\"0O030P070Y10\",verð:\"135Y\",verða:\"131X\",verðu:\"137N\",vese:\"0U02141G15061D2A\",vesel:\"0U0315081D5H\",vesp:\"0T0M1O0R\",vespe:\"0T0K1O1I\",vess:\"0P0V0Q0C1108140E\",vesse:\"0P0R0Q071403\",vestr:\"0D0E0T12\",vesz:\"143E\",veszt:\"1413\",\"vet \":\"0T080V0Q0Y0G0Z3U103T1105125J142C1F0L\",veta:\"0V0E0Y0K100L1B04\",\"veta \":\"0V0P0Y0P100I\",\"vete \":\"0O050P040Q3V0T060Y0S10061205\",vetl:\"0V0A0Y1314041F031Q7Z\",vetlh:\"1QD4\",vett:\"0Q081007110U14431C0I1F02\",\"vett \":\"14161C1A\",vette:\"0L020Q041002142K\",\"vety \":\"0Y12\",veu:\"0L3M0P0G0R02\",\"veu \":\"0P0J\",veut:\"0L13\",\"veut \":\"0L1R\",veux:\"0L3X\",\"veux \":\"0L5U\",vev:\"0Q1P0U020Y09\",veva:\"0Q1X\",\"veva \":\"0Q1G\",vevo:\"0Q0O\",vex:\"0T04\",vey:\"030311061F0J\",vez:\"0L350O1T0P2A0Q090U0B0V0N0Y0G1417150C\",\"vez \":\"0L320O2J0P1Y1402\",\"vez-\":\"0L2A\",\"vez-v\":\"0L3T\",veze:\"0P0V0V061421\",vezes:\"0P131404\",vezet:\"141T\",veä:\"1108\",veí:\"0O03\",veð:\"130O\",veü:\"1P0C\",već:\"0V1T\",\"već \":\"0V1B\",več:\"0U0S0V0Q0Y161B06\",veče:\"0U160V0O0Y1E\",večer:\"0U130V1C0Y1Q\",veď:\"0Y10\",\"veď \":\"0Y1F\",veľ:\"0Y6D\",veľa:\"0Y39\",\"veľa \":\"0Y42\",veľk:\"0Y25\",veľký:\"0Y0X\",veľm:\"0Y5R\",veľmi:\"0Y73\",veř:\"0U0M\",veře:\"0U0W\",\"veře \":\"0U13\",veț:\"150Q\",vf:\"0Z0210021203\",vfø:\"1203\",vføl:\"0Z031209\",vg:\"100212031F05\",vgj:\"1203\",vgå:\"1003\",vh:\"12031Q02\",vhe:\"1204\",vhen:\"120A\",\"vi'\":\"1Q2M\",viac:\"0Y22\",\"viac \":\"0Y1R\",viag:\"0P0D0Q0Z\",viagg:\"0Q10\",viaj:\"0O0R0P0F1O0Z\",vian:\"0L080O020Q070Y0A1O1J\",\"vian \":\"1O2Q\",viaț:\"151N\",vib:\"0T041Q0G\",vici:\"0O060Q140T0M150B\",vicin:\"0Q150T09\",vida:\"0O2N0P2G0T0310061B021O0S1Q0Z\",\"vida \":\"0O2F0P2E1O03\",\"vide \":\"0L0B0M020O030Q050T060Z0T1O03\",videl:\"0U050V150Y5K\",vider:\"0Q030T1D0Z0710021209\",vides:\"0L030O070T0V\",videt:\"0T180V0P\",\"vidi \":\"03060Q060T0Y0V0L1O1E\",vidie:\"0Y17\",vidim:\"0T050V23\",vidis:\"0T0P1O24\",vido:\"0O070P0O0Q031O0D\",vids:\"0Z0U\",vidst:\"0Z10\",vidt:\"0Z081205\",vidí:\"0U1N0Y3A1402\",vidím:\"0U190Y2V\",vidě:\"0U39\",viděl:\"0U3I\",vidět:\"0U10\",\"vie \":\"0L260M080Y3D1104\",viej:\"0O0M1B08\",viel:\"0N3X0R0F112H\",\"viel \":\"0N300R0I1102\",viele:\"0N2R0R02\",vielä:\"115W\",viem:\"0Y5F1B031D0O\",\"viem \":\"0Y6B1B061D1R\",vien:\"0L2W0O1J0Q0T110D1B621DA2\",\"vien \":\"110Q1B051D32\",viena:\"1B651D3G\",viene:\"0O100Q0L\",vieni:\"0Q0811021B1I\",vienk:\"1D32\",vienm:\"1B021D3Z\",vieno:\"1B141D1W\",viens:\"0L1P11021D5Y\",vient:\"0L1I0O0E\",vienu:\"1B0D1D2A\",vieną:\"1B3G\",vier:\"010T0L060N0P0O140P050R0X0Y0T110W1D0K\",\"vier \":\"010T0L080N0J0P020R0X\",vies:\"0L020M030O030P020R07110B1B0X1D0J\",viete:\"0Y1611021B051D2F1O02\",vieto:\"1B1E\",vieš:\"0Y1J1B0D\",\"vieš \":\"0Y1X\",vif:\"1P19\",vifi:\"1P1L\",vifik:\"1P1U\",vigh:\"1QAX\",vigha:\"1Q6A\",vigho:\"1Q4R\",vighr:\"1Q7S\",vigi:\"0O030Q020T0U1O0A\",vigt:\"0Z0J1002\",vigti:\"0Z0K\",vih:\"0V0E0Y0G111914041C1N1Q2C\",viha:\"0Y0E111E14081C0G1Q26\",vihk:\"11021C0V\",vihka:\"1C26\",vihm:\"1C0R\",vihma:\"1C1S\",vii:\"0T04113915151C2C\",viik:\"111B\",viiko:\"112E\",viim:\"111Y1C0I\",viime:\"114Q\",viis:\"110X1C15\",vij:\"0R090V0A1B021D0H1Q3T\",vijf:\"0R0R\",vikl:\"0Z05120E\",vikt:\"100L120X1O02\",vikti:\"100H120W1O04\",\"vil \":\"0M040O060P020U1R0Y190Z5X127M13101Q0U\",vileg:\"1Q4L\",vilj:\"0Z07101211061207130V\",vilja:\"101011071315\",vilk:\"0U050Z10101S110412101B0G\",vilke:\"0Z17101H120Y\",\"vill \":\"104Y130K\",ville:\"0L1L0Z2L1016110Q1226\",vilo:\"0U030V041O021PDZ1Q1L\",vilob:\"1P7P\",vilof:\"1P12\",vilol:\"1P3E\",vilom:\"1P5R\",vilt:\"1103131D1B0A\",vilá:\"141Y\",világ:\"1422\",\"vim \":\"0P040V1D1B021F03\",vimi:\"0O031B141F09\",\"vimi \":\"1B2B1F05\",vimö:\"1P0T\",vind:\"011A0P0G0R2C0T030Z2G1007120O130C150A1F0C1O04\",\"vind \":\"011B0R170Z04\",vinde:\"0R160Z281004150A1F0A1O06\",vindt:\"0R0S\",vindu:\"0Z0L120H\",vineh:\"1QDN\",ving:\"0L0C0M1I0P020R0M0Z061007120715071B051Q0Q\",\"ving \":\"0M210R0I\",vinh:\"0P0I\",vinn:\"010J0U090Y0L101211071219132P140A\",vinna:\"100L1319\",vinne:\"100412181402\",vinni:\"010K1407\",vinnu:\"1108133Z\",vino:\"0O0P0Q0K0T040V0315111B031O0G1Q0Y\",\"vino \":\"0O0W0Q0K0T03150P1B041O0J\",vins:\"0Q020Y0B132C1507\",vinsa:\"1348\",vint:\"0L060P080Q0G0Z0C1009110C120D150E1B061O0I\",vinte:\"0P0A0Z0F1009120C150I\",\"vio \":\"0M040O0L0P090Q030T090V0X1B04\",vip:\"11021Q49\",vipa:\"1Q4E\",vipar:\"1Q6I\",viq:\"1Q49\",viqub:\"1Q5R\",\"vir \":\"01AC0L040O0N0P0W0T0W\",\"vira \":\"044X0V0C\",viras:\"11021B031Q5H\",viri:\"042V0P020T0X11021F061O0O1Q0S\",virin:\"1O1B\",viriz:\"0441\",virk:\"0Z1B1106121V130S1B05\",virke:\"0Z1G121T\",viro:\"0L0A0M020P020T0C11021O0P\",visad:\"0O020P0210091B41\",visai:\"1B2A\",\"vise \":\"0L030Z0C120C\",visel:\"141I\",viser:\"0L020T030Z0E120D\",\"visi \":\"0B0I0T030V0B110C1B4H1D531F02\",visie:\"010I0R0B1B0N1D1D\",visit:\"0L130M0O0O0U0P0V0Q140T0F1102\",visiš:\"1B1I\",visk:\"0Z0310021B2I\",viska:\"1B24\",viską:\"1B2P\",visn:\"0T0T0V050Z0510031208\",visne:\"0T0V\",viso:\"0O040P030Q080T030V071B0N1Q6E\",visov:\"1Q7K\",viss:\"0L020Q070R0A0T101015110I12101313142Q1D15\",\"viss \":\"130X1D2O\",visse:\"0R0D0T0T\",visst:\"100V120Y\",vissz:\"142W\",viste:\"0O0D0P030Q060Z0E1104120C\",visti:\"0Q050T1711041O02\",visto:\"0O100P0D0Q1K1O04\",\"visu \":\"1B031D53\",visą:\"1B19\",\"visą \":\"1B2L\",\"vit \":\"0L0H0T780U2L100Q11061207150Q1Q0V\",\"vita \":\"0O020Q170T0W1002110G131A14021O07\",vitav:\"0T051C1S\",\"vite \":\"0L150M020P030Q020V0V120M1507\",vits:\"112L1209\",vitse:\"11571205\",vitt:\"0Q040Z05100D1111120A140E1Q09\",viu:\"0P0M0T0E110215031B02\",\"viu \":\"0P0R15041B02\",vive:\"0L0C0M030O0V0P0Z0Q150T0P\",vivi:\"0O150P040Q060T0R1O0I\",vivir:\"0O0V\",vivo:\"0L030O0F0P090Q0F0T041O181Q09\",\"vivo \":\"0O0I0P090Q0A0T031O1M\",vivr:\"0L0N\",vix:\"0T0A\",viy:\"11021F131Q0K\",viyo:\"1F15\",viyor:\"1F1J\",viz:\"0P070Q080U0A0V04140J15131B0D1F0C1O0O\",vizi:\"0P080Q070U0C15131B041O0Q\",vizit:\"15161B031O1C\",viã:\"0P07\",viä:\"110Q\",viç:\"0P041F06\",viè:\"0L06\",vié:\"0O02\",við:\"13A2\",\"við \":\"13ER\",vió:\"0O0K\",\"vió \":\"0O0L\",vič:\"0U060V050Y0E\",viđa:\"0V0W\",viĝ:\"1O0G\",viņ:\"1DMJ\",viņa:\"1DEB\",\"viņa \":\"1DKR\",viņai:\"1D4L\",viņam:\"1D8K\",viņas:\"1D2K\",viņi:\"1D5J\",\"viņi \":\"1DAD\",viņie:\"1D3Q\",viņu:\"1D3M\",\"viņu \":\"1D8G\",viņš:\"1DBT\",\"viņš \":\"1DOC\",viš:\"0U020V2V1B07\",više:\"0V2Q\",\"više \":\"0V6N\",viť:\"0Y0T\",\"viť \":\"0Y1E\",vių:\"1B08\",vj:\"14051Q08\",vje:\"1Q0N\",vk:\"0U0G0V020Y0F1F03\",vka:\"0U0D0V020Y09\",vku:\"0U080V030Y0D\",\"vl \":\"0Z03\",vlak:\"0R050U0W0Y181404\",\"vlak \":\"0R040U0Q0Y0Z1405\",vlas:\"0U140V030Y1T\",vlast:\"0U110Y11\",vle:\"01090R050U020Z051F0W\",vlei:\"010F\",vli:\"01090R070U030Z02100G12021F0D1Q0E\",vlie:\"010K0R0Q\",vlieg:\"010L0R0Y\",vlig:\"0Z04100I\",vlj:\"0V18\",vlja:\"0V0V\",vlo:\"01070R050U02\",vloe:\"010F0R0D\",vlt:\"0Z02\",vlu:\"0R031F021Q08\",vlá:\"0U0L0Y0I\",vlád:\"0U0P0Y0H\",vm:\"1F0C1Q0D\",vme:\"1F0I1Q0I\",vmi:\"1F0D\",vmo:\"10031Q0R\",\"vn \":\"0Z0H1205\",vna:\"0U080V0B0Y0L1402\",vne:\"0V050Y0J0Z0C120H\",vnen:\"0Z0A1207\",vner:\"0Z07120A\",vnet:\"0Z05120G\",\"vnet \":\"0Z06120G\",vni:\"0U0A0V0Q0Y0D0Z02100614031D0K1Q0L\",vniek:\"1D1W\",vno:\"0U090V190Y0B\",\"vno \":\"0U070V130Y08\",vné:\"0U070Y0L\",\"vné \":\"0U090Y0X\",vní:\"0U1B0Y0N\",\"vní \":\"0U1F\",vník:\"0U0I0Y0X\",vně:\"0U0F\",\"vo'\":\"1Q20\",\"vo' \":\"1Q3O\",voa:\"0P08110A150U\",vob:\"0T0H0U081P4S\",\"vob \":\"1P29\",vobi:\"0T0X1P0T\",vobis:\"0T0Z\",vobo:\"0U0D1P1T\",vobö:\"1P0R\",voc:\"0L050O0E0PH90Q0D0R020T1L0U040Y0H150D\",voca:\"0L080M020O0I0P060Q0B0R060T22150D\",vocat:\"0L0B0Q070T0T150B\",você:\"0PJX\",\"você \":\"0PLA\",vocês:\"0P48\",vod:\"0U150V180Y261402\",\"vodu \":\"0U0K0V0F0Y0Z\",vody:\"0U0C0Y0W\",\"vody \":\"0U0G0Y14\",voe:\"01150R0Q\",voed:\"010K0R0B\",voel:\"011I0R1B\",\"voel \":\"011J0R0R\",voet:\"0R0K\",vof:\"1P0E\",vog:\"0N020P050Q2L0R040V0Z0Z041B081Q03\",\"vog \":\"0V10\",vogl:\"0Q45\",vogli:\"0Q46\",voi:\"0L5I0M060Q2D117O1550\",\"voi \":\"0Q3S114A154L\",voie:\"0L0A153A\",\"voie \":\"0L0B1546\",voim:\"1112\",voin:\"112Y1504\",\"voin \":\"1132\",voir:\"0L5Q\",\"voir \":\"0L90\",vois:\"0L0U112T\",voisi:\"0L0K1161\",voit:\"0L1S112U\",voitt:\"112R\",voitu:\"0L2M1105\",voj:\"0U1Z0V5H0Y6F11081B281D1L1O17\",\"voj \":\"0V1V0Y1S1O0G\",voja:\"0V0L0Y1B110D1B171D0Q1O0J\",\"voja \":\"0V1J0Y1I110R1B0Q\",vojau:\"1B1E\",voje:\"0U1J0V1N0Y3C11021B0D1O03\",\"voje \":\"0U220V3W0Y2Q1B0R1O05\",vojej:\"0Y1F\",vojh:\"0Y13\",vojho:\"0Y1C\",voji:\"0U130V0P0Y131B0Q\",\"voji \":\"0U1H0V091B0V\",voju:\"0V0V0Y1J1B121D0X\",\"voju \":\"0V290Y1X1B1Z1D21\",voki:\"1B0U1O08\",voks:\"0Z0C1102120H\",vokse:\"0Z0D1207\",\"vol \":\"010P0L050R0H0U0314061P1Q\",volas:\"1O6C\",vole:\"0L0F0Q3H0T0E0U0N0V0S0Y0K1O07\",volet:\"0Q0S\",volev:\"0Q21\",volg:\"011G0Q040R1I\",volge:\"01150Q030R1I\",voli:\"0Q050U0D0V280Y0B1O0Q\",\"voli \":\"0Q050V1X1O02\",volim:\"0V2M\",volis:\"1O1E\",volj:\"0V19\",voljn:\"0V1S\",voll:\"0N0V0R0B1105\",voln:\"0U0G1430\",volna:\"1434\",volo:\"0L080Q0M0T1R1O09\",\"volo \":\"0Q0H0T1V1O05\",volt:\"0P1K0Q210R020U0314DF1508\",\"volt \":\"14B0\",volta:\"0P1H0Q19142T1509\",\"volu \":\"0V0B1O1G\",volv:\"0M040O1E0P0C0T081O02\",volve:\"0M050O130P080T04\",volá:\"0U0E0Y13\",volö:\"1P0Y\",\"vom \":\"0N0M0V0X0Y0P0Z041403150Z1P2B\",\"vome \":\"0V0H1B1E\",voms:\"1P0Y\",\"voms \":\"1P14\",\"von \":\"0L020N5L110R14041O15\",vona:\"132B1417\",\"vona \":\"134N\",vonat:\"1410\",vond:\"0R29120B1308\",\"vond \":\"0R1T\",vonde:\"0R12\",vons:\"0L3J1103\",\"vons \":\"0L5M\",voo:\"01190P040R3411021C0F\",voor:\"012W0RB7\",\"voor \":\"010S0RBH\",voord:\"010G0R0H\",voors:\"010G0R0M\",vora:\"0L020N060O020P020Q1Y0T080V061B031O04\",vorar:\"0Q13\",vorb:\"0N0D155O\",vorbe:\"0N0K154P\",vorbi:\"152J\",vord:\"0R020Z191220\",vorda:\"0Z1I1220\",vore:\"0P0H0Q1C0R030V0R0Y0L0Z1L10091O02\",\"vore \":\"0P0D0Q190V0R0Z0510091O03\",vores:\"0P070Z1T\",vorf:\"0N020Z25122J\",vorfo:\"0Z2L122K\",\"vori \":\"0L020Q040V271F05\",voria:\"0Y11\",voril:\"0V0P0Y2S\",voriť:\"0Y1Q\",vorm:\"010F0N020R09\",vorn:\"0N030V050Z0V\",vornå:\"0Z12\",voro:\"0Q2K\",\"voro \":\"0Q2L\",vorr:\"0N030Q1W\",vorre:\"0Q1U\",vort:\"0N040Y0E0Z0413191O13\",\"vort \":\"0Z05132O\",vorto:\"1O1O\",voru:\"0T050V03131G\",\"voru \":\"0V081323\",vorí:\"0Y5V\",\"vorí \":\"0Y2Z\",vorím:\"0Y20\",vorít:\"0Y17\",voríš:\"0Y1G\",\"vos \":\"0L120O150P170T1A140E15061B1L1O14\",vost:\"0Q320U0D0V030Y08110D1403\",vostr:\"0Q33\",\"vot \":\"0U100V0W0Y0R11051D0Z\",votr:\"0L2Z\",votre:\"0L50\",vou:\"01070LE50M040P2L0R020U120Y0B\",\"vou \":\"0P340U1L0Y0I\",voud:\"0L0O0R08\",voul:\"0L2D\",voula:\"0L1Q\",voule:\"0L1B\",vous:\"0LJG0M05\",\"vous \":\"0LQO0M07\",vov:\"0U090V030Y0B1B03\",vox:\"0T04\",voy:\"0L0X0O131Q06\",\"voy \":\"0O1O1Q0B\",voya:\"0L0U\",voz:\"0O060P070U050V0W14031O02\",voë:\"010K\",voël:\"011B\",\"voël \":\"010L\",voëls:\"010T\",voĉ:\"1O06\",voľ:\"0Y0F\",voš:\"1D0H\",vp:\"0Y021Q0D\",vq:\"1Q05\",\"vra \":\"010W0L030P0G\",vraa:\"0R1D\",vraag:\"0R1V\",vrag:\"0L030R0Q\",vrage:\"0L050R10\",vrai:\"0L3T0Q04\",vraim:\"0L35\",vrais:\"0L1D\",vras:\"0P0J\",vrat:\"0U030V1C\",vrati:\"0V1Z\",\"vre \":\"0L2Q0P070Z071406\",vrea:\"155L\",\"vrea \":\"1531\",vreau:\"154B\",vreb:\"0Q1F\",vrebb:\"0Q1F\",vred:\"0R0E0V0I0Z09\",vree:\"010H0R0L\",vrei:\"0Q0U151O\",\"vrei \":\"0Q0V1524\",vrem:\"0Q0K0V2D151Y\",vreme:\"0V5Z1525\",vres:\"0L0U0Q0V0R0410021F02\",\"vres \":\"0L1F\",vrest:\"0Q0V\",vri:\"010W0L0N0R0X0Y0410031F061O06\",vrie:\"01210L0D0R2H\",vrien:\"01260R3A\",vrij:\"0R12\",vro:\"010M0L020P1L0R0T0U040V051F021O02\",\"vro \":\"0P1E\",vroe:\"010H0R1L\",vroeg:\"010G0R25\",vros:\"0P0K\",\"vros \":\"0P0P\",vrou:\"010Z0R1G\",\"vrou \":\"010T\",vrouw:\"0R1Y\",vru:\"0V041002150K1F08\",vry:\"010O\",vryh:\"010V\",vryhe:\"010X\",vrà:\"0Q06\",vrá:\"0U0V0Y16\",vrát:\"0U1D0Y1U\",vráti:\"0U170Y29\",vrò:\"0Q04\",vrš:\"0V0U\",\"vs \":\"10041D2M\",vse:\"1004\",vsi:\"10031F0H\",vsk:\"0U030V020Y0710071202\",vsl:\"10081202\",vst:\"0U0K0Y0Z10051203\",vt:\"0U040Y0D0Z041004120614081Q07\",\"vt \":\"0Z0410071206\",vte:\"0U040Y0E\",vtr:\"0Z02\",vtá:\"0Y0D1405\",\"vu \":\"0L0W0U1E0V1V0Y24110213031B071D3Z1O0D\",vub:\"040H\",vud:\"0302100K1Q0B\",vue:\"0L0D0O0Y\",vuel:\"0O13\",vug:\"045B\",vuga:\"04DK\",\"vuga \":\"04IP\",vugan:\"044Q\",vui:\"0R0211041B02\",vuj:\"0U0B0V030Y0G\",vuk:\"040N0U030V080Y0511041F09\",vult:\"0T1P1402\",\"vult \":\"0T181402\",vum:\"0T0R1Q1H\",\"vum \":\"0T1F1Q14\",vun:\"0Q020T080Z02100C1106120213041F051O061Q03\",vuo:\"0Q23112S1B051O02\",vuoi:\"0Q12\",\"vuoi \":\"0Q13\",vuol:\"0Q25\",vuole:\"0Q23\",vuot:\"0Q06111Q1B02\",vuott:\"112D\",vur:\"040H12031F0J\",vus:\"0L020T0S11061B091C161D0R1F0J1O0R\",\"vus \":\"0L040T1H1B0C1D0S1O17\",vuse:\"1C0I\",vut:\"0Q17110E15141F021Q1A\",\"vut \":\"1104151U1F021Q0K\",vuto:\"0Q1R\",\"vuto \":\"0Q1S\",vuu:\"0R021104\",vux:\"1003\",vuy:\"040F\",vuz:\"04141F03\",vuze:\"042H\",\"vuze \":\"044E\",vv:\"0Q0G14031Q06\",vva:\"1Q0A\",vve:\"0Q1514051F021Q03\",vver:\"0Q1N\",vvero:\"0Q1F\",vvi:\"0Q0I\",vvo:\"0Q041Q08\",vw:\"1Q0J\",vwi:\"1Q1X\",\"vwi' \":\"1Q4P\",\"vy \":\"0M040U100Y1B\",\"vy'\":\"0412\",\"vy'u\":\"041R\",vya:\"0302043D1F021Q05\",vyan:\"042K\",vyar:\"0422\",vyb:\"0U0C0Y0D1B04\",vyd:\"0U0D0Y0C1B05\",vye:\"043P1F02\",\"vye \":\"046P\",vyey:\"042O\",vyeyi:\"044Q\",vyh:\"0U0V0Y1A\",vyhr:\"0U0O0Y16\",vyhra:\"0U080Y14\",vyi:\"043V\",vyin:\"043O\",vyins:\"045Y\",vyiy:\"0429\",vyiyu:\"043V\",vyiz:\"041V\",vyiza:\"043C\",vyk:\"0U0W0Y0M1B2L\",vykl:\"0U0Z0Y08\",vyko:\"0U050Y0E1B1F\",\"vyko \":\"1B2R\",vyks:\"1B1E\",vyn:\"0U080Y0811021B0K\",vyo:\"046T\",\"vyo \":\"04CH\",vyos:\"045Y\",vyose:\"04A4\",vyp:\"0U1J0Y0P\",vypa:\"0U1G\",vypad:\"0U20\",vyr:\"0U0B0Y0J1B16\",vyra:\"0U031B0W\",vys:\"0U120Y1L11021B05\",vysok:\"0U0F0Y10\",vysvě:\"0U0U\",vyu:\"040Z0U060Y04\",vyy:\"1104\",vyz:\"0U080Y1B1B05\",vyze:\"0Y1R\",vyzer:\"0Y27\",vyč:\"0U040Y0P\",vyčaj:\"0Y11\",vyš:\"0U090Y0I1B02\",vz:\"0U0X0Y0I\",vza:\"0U0C0Y08\",vzd:\"0U0E0Y0L\",vzp:\"0U0C\",vzpom:\"0U0R\",vá:\"0P070U3V0Y2W143Y\",\"vá \":\"0P0C0U1U0Y1J140A\",váb:\"140G\",vág:\"140J\",vál:\"0U0F1429\",vála:\"142F\",válas:\"142K\",vált:\"141Y\",válto:\"141C\",vám:\"0U1P0Y1R\",\"vám \":\"0U2D0Y2Y\",ván:\"0U15140V\",vání:\"0U161402\",\"vání \":\"0U1J\",vár:\"0P0E0U040Y0I1424\",váro:\"1425\",város:\"141V\",vás:\"0U0Z0Y1Y140L\",\"vás \":\"0U1L0Y3C1405\",vásá:\"1414\",vásár:\"1416\",váv:\"0P040U040Y06\",váš:\"0U0I0Y0I\",\"váš \":\"0U0S0Y0P\",váž:\"0U0K0Y0D\",vâ:\"150E\",vân:\"150X\",vâr:\"150O\",vã:\"0P04\",vão:\"0P0I\",\"vão \":\"0P0M\",vä:\"0Y0E103E11461C2O1P06\",\"vä \":\"112Y\",väc:\"1006\",väd:\"1008\",väg:\"101C1C3P\",\"väg \":\"100T\",väga:\"10031C4I\",\"väga \":\"1CAL\",väge:\"100J\",vägen:\"100H\",väh:\"111I1C0J\",vähe:\"110E1C0N\",vähä:\"1123\",vähän:\"114J\",väi:\"110J1C0U\",väik:\"1C0U\",väike:\"1C1V\",väk:\"110O\",väl:\"102E11231C2S\",\"väl \":\"100K\",väld:\"101G\",väldi:\"101G\",väli:\"111S1C0O\",välis:\"110M1C1O\",välj:\"10071C2R\",välja:\"10041C6B\",väll:\"100R1114\",\"väll \":\"100K\",väm:\"10031102\",vän:\"103B1123\",\"vän \":\"100T111W\",vänd:\"1014\",vände:\"100K\",vänn:\"100M1102\",vänne:\"100M\",vänt:\"101F\",vänta:\"101C1102\",vär:\"101K11091C0I\",värd:\"100G\",värl:\"100N\",värld:\"100M\",väs:\"100E11141C0O\",väsi:\"11091C0U\",väsin:\"1C1S\",vät:\"100C113H\",\"vät \":\"115Y\",vätt:\"100F\",väx:\"100A\",vää:\"11271C0M\",\"vää \":\"112O\",väär:\"110Y1C0R\",väč:\"0Y0I\",vå:\"0Z051015120L\",\"vå \":\"1013\",våb:\"0Z03\",våd:\"0Z02\",våg:\"0Z031005\",våk:\"1203\",vål:\"1003\",vån:\"100A\",vår:\"101P120Q\",\"vår \":\"100R120T\",våra:\"100E\",våre:\"1004120M\",\"våre \":\"120I\",vårt:\"100Y120G\",\"vårt \":\"100Y120G\",væ:\"0Z2A121T1310\",\"væ \":\"0T03\",væg:\"0Z08130A\",vægg:\"0Z0B\",vægge:\"0Z0E\",væk:\"0Z0C\",\"væk \":\"0Z0R\",væl:\"0Z03\",væn:\"130F\",vær:\"0Z2R122W1312\",\"vær \":\"0Z0P120X130B\",værd:\"0Z0H\",være:\"0Z571245\",\"være \":\"0Z3I123Q\",værel:\"0Z1D\",været:\"0Z1G120B\",væri:\"131D\",\"væri \":\"132K\",værk:\"0Z09\",værr:\"0Z08\",vært:\"0Z0E122C\",\"vært \":\"0Z0E122C\",væs:\"0Z02\",vé:\"0L0K0O030P020U270Y0N1309142Z\",\"vé \":\"0L160O050U2V0Y1E1406\",véc:\"0L051402\",véd:\"140D\",vée:\"0L0C\",vég:\"0L02141G\",vége:\"1415\",véh:\"0U0Z0Y06\",vého:\"0U1L0Y0B\",\"vého \":\"0U270Y0D\",vél:\"0L09130J140M\",véle:\"1419\",vélem:\"140Z\",vém:\"0U0N\",vén:\"0L04140I\",vér:\"0L0M140V\",vére:\"141F\",véri:\"0L0Y\",vérit:\"0L1C\",vés:\"0L050O040P070U02140J\",vét:\"140P\",\"vét \":\"141B\",vê:\"0L020P04\",\"vê \":\"0P06\",\"vê-\":\"0P08\",vêt:\"0L08\",ví:\"0O0D0P030U420Y0P131Q140G\",\"ví \":\"0O030U2I0Y0F132L\",vía:\"0O0Z\",\"vía \":\"0O1F\",víc:\"0O020U12\",\"víc \":\"0U0Y\",více:\"0U0R\",\"více \":\"0U10\",víd:\"0P050U0A0Y04\",vím:\"0U260Y08\",\"vím \":\"0U340Y0D\",vír:\"0P030U080Y041402\",vít:\"0P020U0Q13091407\",víz:\"0Y05140K\",víš:\"0U0P\",\"víš \":\"0U16\",vò:\"0Q02\",\"vò \":\"0Q08\",vó:\"0O020P031402\",\"vó \":\"0O070P05\",vós:\"0P09\",vô:\"0P020Y0B\",\"vô \":\"0P07\",vôb:\"0Y0G\",vôbec:\"0Y0Z\",võ:\"1C2C\",või:\"1C55\",\"või \":\"1C2B\",võib:\"1C0Y\",\"võib \":\"1C1O\",võim:\"1C19\",võima:\"1C26\",võit:\"1C0O\",võr:\"1C0P\",võrd:\"1C0R\",võrds:\"1C1H\",võt:\"1C28\",võta:\"1C12\",\"võta \":\"1C1O\",võtt:\"1C0S\",vö:\"0N05130Z140A1P17\",vöd:\"1P0T\",völ:\"0N0513101403\",völd:\"131D\",vön:\"13061P18\",\"vön \":\"13051P1J\",vör:\"130H1405\",vös:\"1003\",vø:\"0Z071206\",vøm:\"0Z091208\",vømm:\"0Z0N120K\",vømme:\"0Z0R120J\",vú:\"0Y08\",\"vú \":\"0Y0L\",vü:\"14071F031P0N\",vül:\"14091P12\",vüli:\"14051P1B\",\"vüli \":\"14031P1J\",vý:\"0U1Q0Y1I\",\"vý \":\"0U1F0Y1U\",výc:\"0U0I0Y0J\",vých:\"0U0R0Y0X\",\"vých \":\"0U0W0Y0P\",vým:\"0U0P0Y06\",\"vým \":\"0U0U\",vā:\"0T021D1E\",\"vā \":\"1D15\",vāc:\"1D0V\",vāci:\"1D0U\",vācij:\"1D1W\",vār:\"0T021D1Z\",vārd:\"1D27\",vārds:\"1D1R\",vārdu:\"1D21\",vās:\"1D0K\",vāt:\"1D0E\",vă:\"151N\",\"vă \":\"152H\",văd:\"150K\",văr:\"151G\",vărat:\"151P\",văz:\"151C\",văzu:\"1526\",văzut:\"152O\",văț:\"150O\",vą:\"1B0B\",\"vą \":\"1B0T\",vč:\"0U0K0Y0X\",vča:\"0U050V020Y0W\",vče:\"0U0X0Y1F\",včer:\"0U1D0Y24\",včera:\"0U1T0Y2L\",vď:\"0Y04\",vē:\"0T081D3Y\",vēj:\"1D13\",vēk:\"1D4N\",vēki:\"1D3A\",\"vēki \":\"1D5C\",vēkie:\"1D37\",vēks:\"1D17\",\"vēks \":\"1D32\",vēku:\"1D11\",\"vēku \":\"1D25\",vēl:\"1D5X\",\"vēl \":\"1D1G\",vēla:\"1D2G\",vēlas:\"1D3L\",vēlat:\"1D21\",vēlie:\"1D1R\",vēlo:\"1D15\",vēlos:\"1D2Y\",vēn:\"0T0D\",vēr:\"0T031D2D\",vērt:\"1D1C\",vēs:\"0T021D0V\",vēt:\"1D1B\",vė:\"1B1I\",\"vė \":\"1B0V\",vėj:\"1B0T\",vėl:\"1B1I\",\"vėl \":\"1B0U\",vėr:\"1B08\",vės:\"1B0G\",vę:\"1B0K\",\"vę \":\"1B0D\",vęs:\"1B17\",\"vęs \":\"1B1W\",vě:\"0U56\",\"vě \":\"0U18\",věc:\"0U0Q\",\"věci \":\"0U0U\",věd:\"0U32\",vědě:\"0U3D\",věděl:\"0U39\",vědět:\"0U1H\",věk:\"0U0S\",\"věk \":\"0U0W\",vět:\"0U2F\",větl:\"0U0W\",větš:\"0U0Q\",věz:\"0U0H\",věř:\"0U1B\",věři:\"0U0X\",věřit:\"0U0T\",věří:\"0U0Z\",vī:\"0T0D1D0N\",\"vī \":\"0T03\",vīb:\"1D0J\",vīc:\"0T0A\",vīd:\"0T06\",vīm:\"1D0E\",vīr:\"1D0T\",vīs:\"0T04\",vīt:\"0T02\",vīv:\"0T03\",vį:\"1B02\",vı:\"1F03\",vō:\"0T02\",vōs:\"0T03\",vő:\"140D\",\"vő \":\"140B\",vř:\"0U0G\",vře:\"0U0N\",vš:\"0U1Z0Y2C\",vša:\"0U020Y0P\",však:\"0U030Y12\",\"však \":\"0U040Y16\",vše:\"0U2D0Y4L\",všec:\"0U2W\",všech:\"0U40\",všet:\"0Y7K\",všetc:\"0Y2L\",všetk:\"0Y6Y\",vši:\"0U120V020Y07\",všic:\"0U1J\",všich:\"0U25\",všt:\"0U0I0Y0L\",vštív:\"0U0T0Y12\",vū:\"1B03\",vů:\"0U13\",vůb:\"0U0K\",vůbe:\"0U0X\",vůbec:\"0U1A\",vůj:\"0U18\",\"vůj \":\"0U20\",vůl:\"0U0C\",vű:\"1402\",vų:\"1B03\",\"vų \":\"1B09\",vž:\"0U0G0Y0F\",vžd:\"0U0W0Y12\",vždy:\"0U1H0Y1U\",\"vždy \":\"0U0Y0Y21\",vždyc:\"0U120Y0A\",\"w'\":\"04171Q2V\",\"w' \":\"1Q7E\",\"w'i\":\"0445\",\"w'im\":\"0422\",\"w'is\":\"043K\",\"w'ish\":\"0441\",\"w'u\":\"040D\",\"w-\":\"03070D03\",\"w-a\":\"0D03\",\"w-ar\":\"0D06\",\"w-i\":\"0306\",\"wa'\":\"1Q7H\",\"wa' \":\"1Q5P\",\"wa'hu\":\"1Q4H\",\"wa-\":\"0306\",waa:\"01320D020R2P\",waad:\"010F0R08\",\"waad \":\"010G0R0B\",waar:\"01620R93\",\"waar \":\"013O0R5F\",waard:\"010L0R0Y\",waaro:\"010X0R4E\",waars:\"0R0X\",wab:\"0305041C0B0F1Q0K\",\"wab \":\"03030B0H1Q0T\",wabo:\"0422\",wac:\"030W041E0N090R0I1A07\",wach:\"0N0N0R1Y1A04\",wacht:\"0N060R2N\",wacu:\"030J043R\",\"wacu \":\"030F046M\",wad:\"030D0D021A0T1N0U\",wada:\"1N0Y\",wadan:\"1N16\",\"wag \":\"011A03020D1E\",waga:\"0D081A04\",wagt:\"1N6Q\",\"wagt \":\"1N55\",wagty:\"1N2O\",wah:\"0303040J0B0D0D020N0P1A021Q0B\",\"wah \":\"0B0M1Q08\",wahr:\"0N1H\",wait:\"0M0Y\",\"wait \":\"0M0M\",waj:\"03400B061A0J\",\"waj \":\"031U1A0B\",waje:\"032H1A02\",wajen:\"033M\",wak:\"0316041A0B1C0D080M040R051A06\",waka:\"0306042D0B0C0D091A07\",\"waka \":\"0441\",wakt:\"0B27\",waktu:\"0B4B\",\"wal \":\"03BZ0B0H0D05\",wala:\"03100B090D3O1A05\",\"wala \":\"030Y0D3U1A03\",walan:\"03070D2N\",walk:\"0M0T1A02\",wam:\"030U04150R0D1A0F1N0G1Q07\",\"wam \":\"03020R171A0F1N0I\",\"wan \":\"030V0B0T0D0T\",wana:\"0308045A0D0B1A0E\",\"wana \":\"04970D021A0K\",wand:\"030404260N0J0R0C\",wani:\"03060B0L1A1R1Q15\",wanj:\"0490\",wanje:\"04F3\",wann:\"011O03030N0R0R1H1A02\",wanne:\"011R0N020R1Z\",wans:\"031Y\",wansi:\"034C\",want:\"030G0M5S0R0B\",\"want \":\"030O0M4X0R0D\",wante:\"0M21\",wants:\"0M16\",wany:\"0302047M1A101N0G\",\"wany \":\"1A1E\",wanya:\"030404A4\",wap:\"0R02\",\"war \":\"030D0B070M070N580R03\",wara:\"0304044Q0B041A02\",\"wara \":\"030A044E\",ward:\"0M0F0R021A05\",ware:\"03030M060N0X0Q020R1Q0Z02\",waren:\"03020N1H0R23\",wari:\"0302041Z1A03\",warn:\"0B0S0M040N04\",warna:\"0B1K\",wart:\"03030D0C0N1A0R0E1A0P\",warte:\"0N1X0R071A0G\",warto:\"0D0L1A0C\",waru:\"030G0N1Q1A03\",warum:\"0N2W\",\"was \":\"018S03040B030D020MBP0N7S0R9D1A0A\",wasn:\"0M1G\",\"wasn'\":\"0M1Z\",\"wat \":\"019F030C0B100D080R931A03\",watc:\"0M0N\",watch:\"0M0V\",wate:\"011L03020M0M0R1C1A03\",water:\"011O0M0U0R1U\",wati:\"030A0B0J\",watt:\"010P0N02\",watte:\"010Q0N03\",wav:\"040D0M02\",waw:\"030O041L0B030D02\",wawe:\"0309044T\",\"wawe \":\"048E\",way:\"032V04110D030M1R\",\"way \":\"03080D040M23\",waye:\"0315042O\",\"waye \":\"044Q\",ways:\"0M16\",\"ways \":\"0M1M\",waz:\"0307040J\",wać:\"1A2N\",\"wać \":\"1A3T\",wał:\"1A3J\",\"wał \":\"1A2A\",wałe:\"1A19\",wałem:\"1A1I\",waş:\"1N0C\",waż:\"1A1R\",wb:\"1Q03\",wbe:\"1Q09\",wc:\"1A1G\",wcz:\"1A21\",wczo:\"1A17\",wczor:\"1A1X\",wd:\"03020R061A181N0D1Q05\",\"wd \":\"0R06\",wda:\"1A0N1N0A1Q06\",wde:\"03050R03\",wdę:\"1A0Y\",\"wdę \":\"1A1E\",\"we \":\"011M04KV0M350R301A1J1N6O\",\"we'\":\"0M0V\",\"we'l\":\"0M0D\",\"we'r\":\"0M0U\",\"we're\":\"0M16\",wea:\"0M0L\",wear:\"0M0L\",wec:\"0N06\",wed:\"030H0D0K0M0F0N040R031A041Q03\",\"wed \":\"030C0M0N\",wede:\"0D110N090R03\",\"wede \":\"0D15\",weden:\"0D0T0N020R03\",\"wee \":\"011R0R1P\",week:\"010M0L060M0V0Q040R0X0Z0515051A06\",\"week \":\"010N0M0R0R0Z\",weer:\"01170R1G\",\"weer \":\"01150R1J\",wees:\"01560R1C\",\"wees \":\"015G0R0P\",weest:\"0R13\",weet:\"01450M040R3T\",\"weet \":\"014D0M040R53\",weg:\"010F03070N0R0R0N1A0P\",\"weg \":\"010M03040N0T0R1I\",\"wego \":\"1A1I\",weh:\"03040N05\",wei:\"0M050N3A0R050Z021002\",\"wei \":\"0N0Y\",weil:\"0N10\",weis:\"0N0Y\",weit:\"0N1B\",weiß:\"0N2D\",\"weiß \":\"0N2Z\",wej:\"03061A0O1Q38\",\"wej \":\"03021A0P1Q3V\",wek:\"03020R041A04\",\"wel \":\"030U0M020R1U\",wela:\"0D07\",welc:\"0M030N0X\",weli:\"010J0R0F1N0G\",welik:\"010K\",welk:\"0R14\",welke:\"0R11\",well:\"03020M130N030R02\",\"well \":\"0M1E\",welt:\"03070N17\",wem:\"0109030D040D0N030R071A09\",\"wem \":\"010J03040N061A0C\",\"wen \":\"037E0N060R1B1Q07\",wene:\"041O0R05\",wenn:\"030B0N3X\",\"wenn \":\"0N6F\",wens:\"010P0R0A\",\"wens \":\"010G0R07\",went:\"03360D080M1A\",\"went \":\"035O0M1N\",weny:\"0422\",wenye:\"0435\",\"wer \":\"03070M0O0N1X1A09\",werd:\"03020N3S0R29\",\"werd \":\"0R2N\",werde:\"0N690R0F\",were:\"0M3E0N050R0Y1N0G\",\"were \":\"0M430N03\",werel:\"0R19\",werk:\"01460N0B0R3P\",\"werk \":\"013R0N070R23\",werke:\"0N050R1E\",werkt:\"0R1A\",wese:\"045L0N0K1A02\",\"wese \":\"049O\",wet:\"010B03210N060R0G1A0I\",\"wet \":\"031Y0D020M020R061A0J\",wete:\"0R1G1A04\",weten:\"0R1Z\",wew:\"040U\",wewe:\"042K\",\"wewe \":\"044K\",wey:\"0308\",wez:\"030Q040M0R041A03\",wezi:\"041V0R08\",\"wezi \":\"043C\",wg:\"1N05\",wha:\"03020M3G0P02\",what:\"0M680P02\",\"what \":\"0M7E\",\"what'\":\"0M0Y\",whe:\"03020M2L\",when:\"0M2H\",\"when \":\"0M3A\",wher:\"0M1U\",where:\"0M2J\",whet:\"0M0F\",wheth:\"0M0K\",whic:\"0M0N\",which:\"0M0W\",whil:\"0M0J\",while:\"0M0P\",who:\"0M1M\",\"who \":\"0M2B\",why:\"0M1A\",\"why \":\"0M2D\",\"wi \":\"031O041D0D041A2L\",\"wi'\":\"1QFE\",\"wi' \":\"1QK6\",\"wi'pu\":\"1Q4C\",wia:\"1A3Y\",wiad:\"1A1A\",wiat:\"1A1C\",wib:\"040Y1Q0K\",wiba:\"0426\",wic:\"0304040C0L020M030N0C0Q021A0C1Q09\",wid:\"030U0D020M020N051A261Q08\",widz:\"1A2J\",widzi:\"1A31\",wie:\"010U0N370R0P1AE2\",\"wie \":\"011X0N5J0R2G1A2Z\",wiec:\"1A1I\",wied:\"0N1G1A6X\",wiede:\"0N2G\",wiedz:\"1AA1\",wiek:\"1A1Z\",\"wiek \":\"1A1Z\",wiel:\"1A2U\",wiele:\"1A1Q\",wiem:\"1A1S\",\"wiem \":\"1A2L\",wier:\"0N0E0R031A1T\",wierz:\"1A1Z\",wif:\"0M07\",wife:\"0M0D\",wig:\"01070302041I0N021Q0O\",wiga:\"042K\",\"wiga \":\"044E\",wij:\"0307040C0R121A021Q7G\",\"wij \":\"03020R1G1QAO\",wika:\"0D0H\",\"wika \":\"0D0H\",\"wil \":\"016Q03020R4N\",wild:\"0M030N030R16\",wilde:\"0N030R1J\",will:\"0L020M3M0N2O0R1I\",\"will \":\"0M4J0N2V\",wille:\"0N070R1X\",wilt:\"03020R0T\",\"wilt \":\"03040R13\",wim:\"030G0M080N061A021Q05\",wing:\"010H03040D050M0G0N030R04\",\"wing \":\"010I0D0A0M0K0R03\",wini:\"1A1H\",winie:\"1A27\",winj:\"041K\",winji:\"042S\",wink:\"010J0N020R0H\",winke:\"010K0N030R0O\",wip:\"040C1Q0E\",wir:\"0306045H0N4U1A021Q04\",\"wir \":\"03030N6T\",wira:\"0429\",\"wira \":\"043I\",wird:\"0N35\",\"wird \":\"0N57\",wiri:\"04C31Q06\",wiriz:\"04GQ\",wirk:\"0N1B\",wirkl:\"0N1U\",wis:\"030V040G0B030M0F0N0U0R0F1A0P1Q0U\",wish:\"04150M0M\",\"wish \":\"0M0M\",wiss:\"030N0N1G0R06\",wisse:\"031G0N280R08\",wist:\"0R161A06\",\"wist \":\"03030R1G\",with:\"0M6O\",\"with \":\"0M85\",witho:\"0M0U\",wiw:\"0418\",wiwe:\"043O\",\"wiwe \":\"046G\",wiy:\"0309041P\",wiye:\"042Z\",\"wiye \":\"0453\",wiyu:\"041K\",wiz:\"030J041J1A0H1N0D\",wiza:\"030K0449\",\"wiza \":\"0319046Y\",wią:\"1A0Z\",wić:\"1A0V\",\"wić \":\"1A19\",wię:\"1A2D\",więc:\"1A1T\",więce:\"1A1W\",wił:\"1A1A\",wj:\"0302\",wk:\"1A0I\",wl:\"030P0M031N0C1Q03\",wle:\"03150M021N09\",wli:\"03021Q04\",wly:\"0M02\",wm:\"1N041Q04\",wne:\"030D0M021A0J\",wni:\"030H1A1L\",wns:\"0M02\",\"wo \":\"04330M0F0N0O1A1R\",wob:\"040M1A03\",woba:\"041O\",\"woba \":\"042S\",woc:\"0N0A1A061Q0L\",wod:\"1A1J1Q04\",woe:\"0R02\",woh:\"0N0V\",wohn:\"0N11\",woi:\"1A0Z\",woj:\"1A38\",woje:\"1A2W\",\"woje \":\"1A29\",wok:\"0M021A04\",wol:\"0N0T0R021A1P\",woll:\"0N1U\",wollt:\"0N1U\",wom:\"0M0B1A021Q03\",woma:\"0M0C\",won:\"010G040D0M150N020R0F1A0T\",\"won'\":\"0M19\",\"won't\":\"0M1Q\",wond:\"010V0M0R0R0K\",wonde:\"010X0M110R0G\",wone:\"0R0Q1A07\",woon:\"011J0R2N\",\"woon \":\"01120R1N\",woont:\"0R15\",woor:\"01170R2L\",woord:\"011A0R3H\",word:\"013M0M0L0N0L0Q020R48\",\"word \":\"013U0M0G0Q020R0C\",worde:\"0N0Z0R39\",wordt:\"0R29\",work:\"0M2B\",\"work \":\"0M1X\",worki:\"0M0K\",worl:\"0M0N\",world:\"0M0V\",worr:\"0M0E\",wort:\"0M060N1M0R04\",wos:\"040L\",wou:\"010B0M1Z0R05\",\"wou \":\"010J0R0J\",woul:\"0M3J\",would:\"0M4U\",wow:\"1A0A\",wp:\"1A081N051Q03\",wra:\"03020D021A0E\",wre:\"03041A021N1Z\",wren:\"03021N27\",wrenm:\"1N1D\",wri:\"03020M0D\",writ:\"0M0N\",wro:\"0M0D1A0A\",wron:\"0M0I\",wrong:\"0M0P\",wró:\"1A0U\",wróci:\"1A1I\",wsp:\"0M021A0N\",wst:\"1A0R1N23\",wstr:\"1A091N2Z\",wstra:\"1N41\",wsz:\"1A4N\",wsze:\"1A22\",\"wsze \":\"1A2J\",wszy:\"1A4H\",wszys:\"1A64\",\"wt \":\"031A0R02\",wto:\"0D021N0M\",wu:\"0314040S0N0X1A0E1N0N1Q0B\",wub:\"040N\",wuba:\"041Z\",wug:\"0309040H\",wuk:\"03051N0C\",wum:\"0302040T\",wumv:\"041Z\",wun:\"0306040I0N0A\",wur:\"03120N0V\",wurd:\"0N1Z\",wurde:\"0N3A\",wus:\"030D0N0B1Q04\",wv:\"1Q02\",ww:\"0311\",\"ww \":\"0302\",wy:\"010J03031A6E1N2T\",\"wy \":\"1A2B1N53\",wyb:\"1A0S\",wyc:\"1A1J\",wye:\"03080M02\",wyg:\"1A1B\",wygl:\"1A1A\",wyglą:\"1A21\",wyj:\"1A0Z\",wyk:\"1A0X\",wym:\"1A0Y\",wyn:\"01091A0D\",\"wyn \":\"010M\",wyp:\"1A0Y\",wys:\"010E1A1K\",wyse:\"010K\",wyser:\"010K\",wz:\"1A0H\",wä:\"0N0N\",wäh:\"0N0B\",wär:\"0N0J\",wäre:\"0N0Z\",wç:\"1N0A\",wçy:\"1N0M\",wê:\"0106\",wêr:\"010A\",wêre:\"010N\",wêrel:\"010P\",wó:\"1A0U\",wój:\"1A10\",\"wój \":\"1A1F\",wö:\"0N07\",wöh:\"0N05\",wör:\"0N05\",wü:\"0N0N1N0B\",wün:\"0N06\",wür:\"0N0P\",würd:\"0N1O\",würde:\"0N2L\",wą:\"1A0G\",wę:\"1A0D\",wł:\"1A0S\",wła:\"1A13\",wś:\"1A03\",wḍ:\"0309\",\"x-\":\"0L05\",\"x-t\":\"0L0L\",\"x-tu\":\"0L0Z\",\"x-tu \":\"0L1N\",\"xa \":\"0P0M0T041004\",xac:\"0L060M050O051509\",xad:\"0P0C\",xag:\"0L020P020T031502\",xak:\"1004\",xam:\"032N0L080M050O0A0P080R0210021506\",xar:\"0P0M\",\"xar \":\"0P0K1002\",xas:\"0P05\",xat:\"03020P08\",xc:\"0L040M050O040P030T071503\",xce:\"0L060M040O090P090T031508\",xci:\"0L020M030T08\",xcu:\"0L090M020O030R020T03\",xd:\"0308\",\"xe \":\"0L040P0L\",\"xe-\":\"0P06\",xec:\"0P02\",xed:\"031J0M020T06\",xei:\"0P04\",xel:\"030L1003\",xem:\"030S0L050P090T030Y0410051505\",xen:\"030310021P0G\",xer:\"03060L040M020P080T0U10031505\",xes:\"0P04\",xic:\"0O030P030T02\",xig:\"0L030O020P04\",xii:\"0T04\",xil:\"030H0T09\",xim:\"0L020O0D0P0R0T0Y1506\",xin:\"0P021305\",xir:\"030V0T02\",xis:\"03020L090M030N020O0D0P0K0T0J0U091514\",xist:\"0L0E0M050N040O0J0P0O0T0M0U0F1002151U\",xistă:\"151S\",xit:\"03020O070T2Q\",\"xit \":\"03020T4C1403\",xitq:\"0T0Q\",xitqu:\"0T0S\",xl:\"0302\",xla:\"03041003\",\"xo \":\"0P0L\",xon:\"0P08\",xop:\"0T03\",xor:\"0T0Y1007\",xore:\"0T0W\",xorem:\"0T0S\",xos:\"0P020T06\",xou:\"0P0D\",xpe:\"0M0J0O0A0P0B0T0H1002150C\",xpec:\"0M0I0T0F\",xpect:\"0M0P0T0G\",xpl:\"0L0D0M080O0F0P0H0T06150L\",xpo:\"0L020O020P020T02\",xpr:\"0L070M020O050P060T031504\",xpé:\"0L06\",xs:\"03030T0B\",xsi:\"03040T02\",xsp:\"0T0J\",xspe:\"0T10\",xspec:\"0T12\",xst:\"0T02\",\"xt \":\"03040M0H0U021002\",xta:\"0P040T09\",xte:\"0L050M020O050P060T071006\",xti:\"0O020P020T02\",xto:\"0O040P06\",xtr:\"0L060M040O0S0P090T0B10031509\",xtra:\"0L040M030O120P050R020T0E1505\",xtu:\"0T03\",xu:\"03030T041502\",xua:\"0O020P020T041504\",xum:\"0T02\",xus:\"0T03\",xvi:\"0T02\",xxa:\"032N\",xxam:\"032R\",\"xxam \":\"033D\",xxi:\"0T02\",xxx:\"0T02\",xão:\"0P03\",xíc:\"0P04\",\"y'\":\"04170M0H1F2E1Q3G\",\"y' \":\"1Q82\",\"y'a\":\"040W1Q05\",\"y'd\":\"0M051F0E1Q05\",\"y'i\":\"042D\",\"y'l\":\"0M021Q0B\",\"y'n\":\"1F3G1Q03\",\"y'ni\":\"1F3Y\",\"y'nin\":\"1F5C\",\"y'r\":\"0M0B\",\"y're\":\"0M0L\",\"y're \":\"0M0T\",\"y's\":\"0M0F0R02\",\"y's \":\"0M0R0R06\",\"y'u\":\"041J\",\"y'v\":\"0M021Q08\",\"y'y\":\"1F2M\",\"y'ye\":\"1F1S\",\"y'ye \":\"1F2G\",\"y'yi\":\"1F16\",\"y'yi \":\"1F1L\",\"y-\":\"03080D071402\",\"y-a\":\"03020D03\",\"y-d\":\"0304\",\"ya'\":\"0D021F171Q2A\",\"ya-\":\"0305\",yaa:\"0B0E0D03\",yaan:\"0B0R0D06\",yab:\"041Y0L0314021F121Q03\",yaba:\"042H1F0B\",yabi:\"1F0W\",yabil:\"1F18\",yabu:\"041Z\",\"yabu \":\"0435\",yac:\"040W1F41\",yaca:\"1F32\",yacak:\"1F1T\",yacağ:\"1F2F\",yacu:\"041R\",\"yacu \":\"0435\",yacı:\"1F1N\",yacım:\"1F16\",yad:\"03080B050D0D14031F0E\",yado:\"0D0J\",\"yado \":\"0D0G\",yadon:\"0D0J\",yag:\"0308041S0D050L0F14071P0B1Q03\",\"yag \":\"0D061405\",yaga:\"04290D04\",yage:\"0L0N\",yagi:\"0307041V1403\",yah:\"040O0B0V0D070O041F0G1Q0K\",\"yah \":\"0B0S1F061Q0Q\",yaha:\"0D071F0A\",yai:\"0B0G0L081404\",\"yai \":\"0B0N1402\",yaj:\"040F1Q1I\",yak:\"0306043K0B2I0D07140T1F2U\",\"yak \":\"03020B3H0D0914021F0A\",yaka:\"0303047V0B0E0D0214041F0L\",\"yaka \":\"04CX\",yaki:\"0B0Z\",yakin:\"0B1I\",yakra:\"1415\",yakı:\"1F17\",yakın:\"1F1E\",yal:\"03130B0A0D04140D1F2O\",\"yal \":\"030U0D0714081F0J\",yala:\"0B0J1F0Y\",yaln:\"1F0X\",yalnı:\"1F19\",\"yama \":\"046S\",\"yan \":\"03090B080D3S0O0314651F0W1Q08\",yand:\"04291F0B\",yang:\"042O0BJ30D401F07\",\"yang \":\"0BRN0D76\",yango:\"04471F02\",yanj:\"045Y\",yanje:\"04AA\",yano:\"0D07140C1F07\",yant:\"030B0D060L0B0Z071205\",yany:\"042K0B0K1409\",yanyu:\"042Z\",yanı:\"1F1C\",yao:\"0D02\",yap:\"0B0314051FDO1P0D1Q0L\",yapa:\"0D021F4E\",yapab:\"1F1J\",yapac:\"1F25\",yapar:\"1F1B\",yapm:\"1F76\",yapma:\"1F9B\",yapt:\"1F3K\",yaptı:\"1F4U\",yapı:\"1F1Y\",yapıy:\"1F1E\",yara:\"04320B0E0D0314091F15\",yard:\"0M031F3G\",yardı:\"1F4O\",yare:\"1F10\",yaret:\"1F1D\",yari:\"04850D0G\",\"yari \":\"04CM0D0P\",yarı:\"1F23\",yarın:\"1F1S\",yas:\"030U040R0D030O0A14071F0O1Q07\",yash:\"041O\",yat:\"0305040V0B0C0D0614061F2G1Q03\",yata:\"0B0I0D051F0M\",yatı:\"1F10\",yav:\"040J1F0C1Q06\",yaw:\"030E041U0D0E\",\"yaw \":\"0D0O\",yawe:\"0306045H\",\"yawe \":\"049I\",yay:\"0D051F0J1Q07\",yaya:\"0D091F04\",yaz:\"030E1F22\",yağ:\"1F1D\",yaş:\"1F3O\",yaşa:\"1F1W\",yaşam:\"1F17\",yaşı:\"1F1L\",yaşıy:\"1F17\",\"yb \":\"0U041A02\",yba:\"0U0A0Y07140A1A0K1B04\",ybi:\"1A081B07\",ybo:\"0M0C0U021A051B041F07\",ybod:\"0M0L\",ybody:\"0M0T\",ybu:\"0U0C0Y0E1A05\",yby:\"0U170Y0D1A0T\",\"yby \":\"0U130Y0M1A0L\",ybych:\"0U0U\",ybė:\"1B0U\",ybę:\"1A021B0A\",yce:\"0T030U021A06\",ych:\"0M020U4D0Y0K1A3T1Q0F\",\"ych \":\"0U4Z0Y0L1A47\",ychl:\"0U11\",ychle:\"0U17\",ycho:\"0N020U101A0T1Q06\",ychom:\"0U19\",yci:\"1A20\",ycie:\"1A1S\",yck:\"0U0H0Y05106T\",ycka:\"1012\",\"ycka \":\"100G\",ycke:\"106Q\",ycker:\"1030\",ycket:\"103R\",yckl:\"100T\",yckli:\"100N\",yckt:\"100L\",yckte:\"100J\",ycky:\"0U0R0Y08\",\"ycky \":\"0U120Y0A\",ycl:\"0L030M05\",ycz:\"1A1U\",\"yd \":\"01130Z0212051407\",yda:\"0U020Y071A0R1B0A1F0D1N151Q0U\",ydd:\"100B12031304\",yde:\"030G0Z0O1009110M12081A051F0B\",\"yde \":\"0Z0D12061F03\",ydel:\"0Z0A1002110F1209\",yder:\"0Z10100A\",\"yder \":\"0Z13100A\",ydi:\"030S11031B061F2Z1Q05\",\"ydi \":\"030D1B051F2F\",ydl:\"0U0L0Y061005\",ydn:\"1202\",ydr:\"0T030U02\",yds:\"0Z02\",ydu:\"1A021F1P\",ydy:\"11061B0H1N27\",ydyg:\"1N0X\",ydygy:\"1N19\",ydyt:\"11041B0R\",ydyto:\"1B1H\",ydä:\"1112\",ydı:\"1F2J\",\"ydı \":\"1F1S\",\"ye \":\"010804M10D030L030M040O050Z09121L140S1F7Z\",yea:\"0M0S\",year:\"0M1F\",\"year \":\"0M0S\",years:\"0M14\",yeb:\"032C0B07120514061F0Q\",yebil:\"1F14\",yebl:\"120C\",yebli:\"120C\",yebɣ:\"031R\",yebɣa:\"033B\",yec:\"030I0O061F2Y\",yece:\"1F34\",yecek:\"1F20\",yeceğ:\"1F2B\",yed:\"031S0B020M0E140U1F0U\",\"yed \":\"03070M0Q140B\",yedi:\"0B0414041F0V\",yedü:\"141C\",yedül:\"141F\",yef:\"031L\",yeg:\"03131407\",yek:\"03140B02141D\",\"yek \":\"0B03142F\",yel:\"038U0B0D0D030M03141W1F0I1P0X\",yele:\"0B0I140B1F0A\",yell:\"037U0M051404\",yella:\"03E5\",yelli:\"032R0M02\",yelv:\"142C\",yelve:\"1416\",yem:\"0324040P0B040D02140C1F37\",yeme:\"041K14051F3A\",yemek:\"1F1P\",yemeğ:\"1F1I\",yene:\"045H0O031206140H1F04\",\"yene \":\"049C12061F03\",yeni:\"15051F20\",\"yeni \":\"15071F24\",yenn:\"031Q0L0311021406\",yeq:\"031R\",\"yer \":\"032C0L130M090O140Z0812051F0P\",yere:\"042K120814411F0N\",yerek:\"043514321F08\",yeri:\"1F0X\",yes:\"039W040T0B020M0K0O04110214111F0G\",\"yes \":\"03030M0H0O061418\",yesh:\"042D\",yess:\"036U11021402\",yesse:\"03AT\",yest:\"03040M0K1102\",yeste:\"03050M0R\",yet:\"035X0B030M0C0Z021207141H1F2P\",\"yet \":\"03070M0M0Z05120J14201F0K\",yete:\"140I1F13\",yeti:\"1F12\",yett:\"0360140G1F03\",yeu:\"0L0I\",yeux:\"0L0S\",\"yeux \":\"0L1C\",yey:\"04101F09\",yeyi:\"042O1F08\",\"yeyi \":\"044Q1F07\",yez:\"032J0L0M140F\",\"yez \":\"0L0V\",yeɣ:\"031W\",yf:\"010H1003130U14021F02\",\"yf \":\"010N\",yfi:\"1002131E1A02\",yfir:\"1320\",\"yfir \":\"132S\",yfr:\"0M02\",yft:\"10051303\",\"yg \":\"0Z0710061B0F\",yga:\"10081B0M1F021N0E\",ygd:\"0Z021202\",yge:\"0Z0C10041203\",\"yge \":\"0Z0F\",ygg:\"0Z08100M120H130T\",\"ygg \":\"1005120A\",ygge:\"0Z0L1004120U\",ygi:\"0T021A021B0E\",ygl:\"1A0W\",yglą:\"1A1A\",ygląd:\"1A23\",ygn:\"0Z0312021A061N0K\",ygni:\"0Z0A1206\",ygo:\"1A0S1B0A\",ygp:\"1007\",ygt:\"0Z071B02\",ygte:\"0Z0D\",ygu:\"1F0M\",ygy:\"1N85\",\"ygy \":\"1N1V\",ygym:\"1N1E\",ygymy:\"1N1G\",ygyn:\"1B021N78\",ygyna:\"1N17\",ygyny:\"1N8O\",ygyň:\"1N17\",ygyňy:\"1N14\",ygą:\"1B0Q\",\"ygą \":\"1B16\",ygı:\"1F0C\",ygų:\"1B08\",yhd:\"1116\",yhde:\"111O\",yhe:\"010D0Z02100511041202\",yhei:\"010J\",yheid:\"010K\",yhi:\"1105\",yhj:\"1108\",yhk:\"1104\",yhm:\"110F\",yhr:\"0U0F0Y0P\",yhra:\"0U050Y0W\",yht:\"111U\",yhte:\"1118\",yhtä:\"111X\",yhy:\"1108\",yhä:\"110I\",\"yi \":\"032C043F0B0E1116140U1F9T\",\"yi-\":\"033M\",\"yi-d\":\"032K\",\"yi-d \":\"033A\",yia:\"0B041403\",yib:\"030A040J14051Q0F\",yic:\"0307040C1F051Q1B\",yid:\"033F1F091Q07\",\"yid-\":\"0327\",yig:\"030F040V1Q0N\",yik:\"0305040C0B051416\",\"yik \":\"142F\",yil:\"03151106140C1F091Q19\",yim:\"033C0B0211021F231Q0Q\",\"yim \":\"1F25\",yin:\"031M04250B030D040M14110D1F1I1P0E1Q2W\",\"yin \":\"03110D07110L1F141Q16\",ying:\"0M211Q1J\",\"ying \":\"0M2T\",yins:\"044M1Q07\",yinsh:\"0483\",yir:\"030T040G140K1F0A1Q0C\",yis:\"031W040D110K14081F071Q0U\",yit:\"030E040U1103140S1Q20\",yiv:\"11041Q0O\",yiw:\"034E041J1Q06\",yiwe:\"034J044M\",\"yiwe \":\"0483\",yiwen:\"036R\",yiwet:\"033I\",yiy:\"0302040Z1F151Q08\",yiyu:\"042D\",yiyum:\"0447\",yiz:\"030I040Z1F0R\",\"yiz \":\"1F0V\",yiza:\"042O\",\"yiza \":\"044Q\",yja:\"0Y06130814081A1A1B05\",yjac:\"1A18\",yjaci:\"1A1Z\",yje:\"0U031A0X1B1P\",\"yje \":\"0U021A0B1B2Q\",yjy:\"1N0F\",yjä:\"1106\",\"yk \":\"01140D030U0B0Y0E0Z0512051A0C1B1V1N4Q\",yka:\"0U031A0Z1B0C1N2S\",ykar:\"1N12\",ykat:\"1N20\",ykatd:\"1N2E\",ykd:\"12031B051N0Y\",ykdy:\"1B031N0X\",yke:\"01090U030Z0A10071105120B14021F0B\",\"yke \":\"010J120A\",ykel:\"0Z0R1009\",\"ykel \":\"0Z0T1007\",yki:\"1102130K1A0O1B12\",ykit:\"1B0Y\",ykite:\"1B1Y\",ykk:\"0Z0M1116120X1310\",\"ykk \":\"120C\",ykke:\"0Z1O121Y\",\"ykke \":\"0Z0R120G\",ykkel:\"0Z0G120Q\",ykkä:\"111Z\",ykkää:\"1149\",ykl:\"0U0M0Y070Z061004120213051A0C1B181N2O\",ykla:\"100413051B071N2R\",yklar:\"10021N2O\",ykle:\"0U0G0Z0F12041A0E1B03\",ykly:\"1N15\",\"ykly \":\"1N16\",yklą:\"1B0R\",\"yklą \":\"1B1K\",ykm:\"0Y051N0D\",yko:\"0U060Y0O14051A0N1B0Z\",\"yko \":\"1B1H\",yks:\"11301B111N09\",ykse:\"111M\",yksi:\"113P1B09\",\"yksi \":\"113I1B04\",yksin:\"1135\",ykst:\"1B0U\",ykt:\"1005120913061B0G\",ykte:\"1004120F\",yku:\"0U021A0A1B031F0B\",yky:\"0U070Y0A110F1N0V\",ykä:\"110A\",ykö:\"1104\",\"yl \":\"0U451A021N14\",ylar:\"1F071N4O\",\"ylar \":\"1F031N5F\",yld:\"0Z0J100A120E130F1N1J\",\"yld \":\"0Z0I1003120G\",ylde:\"0Z0G1208\",yldi:\"0Z09100A1206\",yldt:\"0Z08\",yldy:\"1N1F\",\"yle \":\"0L090M071A0C1F38\",yled:\"1F59\",yledi:\"1F74\",ylem:\"0U021F2M\",yleme:\"1F3A\",yler:\"0Z021F16\",yley:\"1F18\",yleye:\"1F1G\",ylg:\"130H1N0H\",\"yli \":\"03020U0Y110P1A0R1B0P\",ylk:\"11031A1F\",ylko:\"1A22\",\"ylko \":\"1A3A\",yll:\"0T020Z04100F111S120713051N0L\",ylle:\"0Z021005110G120C\",yllä:\"112D\",\"yllä \":\"1134\",ylm:\"110G1N0A\",ylo:\"0L030T020U1F\",\"ylo \":\"0L040T020U28\",ylp:\"110A\",yls:\"10031108\",ylt:\"100211031203\",ylv:\"1105\",yly:\"0U0B1N1X\",ylyk:\"1N17\",\"ylyk \":\"1N12\",ylä:\"110E\",ylö:\"1107\",ylü:\"1F0W\",ylüy:\"1F0Z\",ylüyo:\"1F1C\",ylė:\"1B0L\",\"ym \":\"0Y0610041A7Z1N87\",\"yma \":\"130F1A041N1L\",ymb:\"0T04\",ymd:\"1002130A1N0K\",yme:\"0T0310021A021F05\",ymi:\"0T04110713041A0T1B051F04\",ymm:\"10041124\",ymme:\"1005111Z\",ymmen:\"114F\",ymmä:\"111Y\",ymmär:\"114O\",ymo:\"0M0B0T071B0A1Q06\",ymor:\"0M0J\",ymore:\"0M0Q\",ymp:\"0L050M020T020Z02110M1202\",ymr:\"0Z031205\",ymre:\"0Z06120C\",ymu:\"0T231A051B081F05\",ymus:\"0T3N1B05\",\"ymus \":\"0T3V1B0C\",ymy:\"0U02110N1A0B1N4G\",\"ymy \":\"1A091N3M\",ymyz:\"1N1N\",ymá:\"140H\",ymás:\"1415\",ymä:\"110M\",ymą:\"1B0C\",\"yna \":\"0U090Y08130A1A0V1B031F031N5D\",ynam:\"1A041F0G1N0V\",ynan:\"1N3Q\",ynany:\"1N1Z\",ynaný:\"1N17\",ynd:\"0U020Z0P100A1208132Q1N5E\",\"ynd \":\"0Z081003120B130Y\",ynda:\"0U02100813171N75\",\"ynda \":\"1005130V1N5R\",yndan:\"1N3I\",ynde:\"0Z0N1205\",ynder:\"0Z0F\",yndi:\"0Z021002131U\",yndl:\"0Z0A\",yndt:\"0Z0P\",yndte:\"0Z0O\",\"yne \":\"120E1B06\",ynen:\"1102120D\",ynene:\"120D\",ynes:\"0Z0L120W1B03\",\"ynes \":\"0Z0Q120V1B07\",yng:\"0Z0810051207130F\",ynge:\"0Z0E120E\",ynk:\"11041A0B\",ynl:\"0Z03120513051F091N0A\",ynli:\"0Z081002120C\",ynlig:\"0Z0A1002120C\",ynn:\"0U021002110M120B13091A05\",ynne:\"1002120Q\",ynner:\"120E\",yno:\"0U040Y061A071B0B\",yns:\"110312021307\",ynt:\"0Z031004110V120D1303\",ynte:\"0Z061002120P\",\"ynte \":\"120J\",yny:\"111B1A0C1NEO\",\"yny \":\"0U021A0E1NGR\",ynyt:\"112A\",\"ynyt \":\"115G\",ynyñ:\"1N18\",\"ynyñ \":\"1N1O\",ynyň:\"1N33\",\"ynyň \":\"1N46\",ynä:\"110A\",ynç:\"1N0Y\",\"ynç \":\"1N0X\",yną:\"1A081B08\",ynı:\"1F0W\",\"ynı \":\"1F0Z\",\"yo'\":\"1F041Q05\",yob:\"040J140A1A04\",yod:\"14041F021Q08\",\"yok \":\"146R1F2M\",yokt:\"1F0Z\",yoktu:\"1F1C\",yol:\"0B060D02140F1F1K\",yom:\"140U\",yon:\"041B0D3Q0L0B0M0N142I1F1H1Q09\",\"yon \":\"0D4D0L0414641F0L1Q08\",yone:\"0M141F05\",\"yone \":\"0M1H\",yong:\"0D2K\",\"yong \":\"0D4O\",yop:\"0D031F021Q07\",\"yor \":\"0O0J1FH0\",yord:\"1F5W1Q06\",yordu:\"1F7X\",yorl:\"1F1D\",yorla:\"1F1W\",yors:\"141E1F4X\",yorsa:\"14171F0N\",yorsu:\"1F63\",yoru:\"03021FF8\",yorum:\"1FHQ\",yoruz:\"1F2S\",yos:\"042Z0D0B0O03140E\",\"yos \":\"0D0I0O04140O\",yose:\"047Y\",\"yose \":\"04DH\",\"you \":\"0MHL\",\"you'\":\"0M2J\",\"you'l\":\"0M0J\",\"you'r\":\"0M22\",youn:\"0M0I\",young:\"0M0P\",your:\"0M42\",\"your \":\"0M4X\",yours:\"0M0O\",\"yp \":\"100212021N5Q\",ypa:\"0U0W0Y041A0N1B0A\",ypad:\"0U1G1A0U\",ypadá:\"0U1G\",ypd:\"1N0S\",ypdy:\"1N14\",yph:\"0T02\",ypi:\"0U030Y0511031A0A\",ypl:\"0U041202\",ypo:\"0L020U031A0A\",ypp:\"110B\",yps:\"1B09\",ypt:\"0M020T0Q0Z0210021202130N\",ypti:\"0T0W1102130R\",ypä:\"1104\",yq:\"1Q04\",\"yr \":\"0Y070Z0E100F120I13031N3L\",\"yra \":\"0T04100G130S140B1BHF\",\"yras \":\"1B1G\",yrd:\"1N18\",yrdy:\"1N1N\",\"yrdy \":\"1N1G\",yre:\"0Z0A1003120C140B1A021B091F05\",\"yre \":\"0Z051209140S\",yren:\"0Z041209\",yrir:\"138B\",\"yrir \":\"13EQ\",yrit:\"0302112C\",yritt:\"112F\",yrj:\"1103130T\",yrja:\"1314\",yrk:\"0Z03100811071205130B\",yrke:\"0Z051005120B\",yrl:\"1N0D\",yrm:\"1N0V\",yrma:\"1N14\",yrn:\"130R\",yrna:\"1317\",yrnar:\"132F\",yro:\"0D080U070Y051A041B03\",yroo:\"0D0F\",yroon:\"0D0S\",yrr:\"0Z03130L\",yrs:\"1105130T1N0C\",yrst:\"131C\",yrt:\"0Z0310041203130A\",yru:\"0T03130A1A021B0B1F0G\",yry:\"1N1K\",yrä:\"1104\",yrð:\"130I\",yrý:\"1N0J\",yrė:\"1B07\",yrı:\"1F0Z\",ysa:\"030J0D0A0L02100213031F04\",\"ysa \":\"030J0D0H100213051F02\",ysc:\"1A0U\",yscy:\"1A17\",\"yscy \":\"1A1W\",\"yse \":\"0Z0211041B051F0X\",ysel:\"0M0D0Y0C\",yser:\"010K0Z051004\",ysg:\"1N0C\",ysin:\"11111307\",\"ysin \":\"112K\",ysiu:\"1B1B\",\"ysiu \":\"1B2P\",\"ysk \":\"0Z0D1002120B\",yske:\"0Z081102\",yskl:\"0Z0E1005120H\",yskla:\"0Z0H1005120H\",ysl:\"0U3C0Y4I\",ysle:\"0U190Y1S\",yslel:\"0U1H0Y21\",yslí:\"0U3G0Y5D\",\"yslí \":\"0U0S0Y0F\",yslím:\"0U2S0Y4N\",yslíš:\"0U110Y13\",yso:\"0U070Y0H1A0C\",yss:\"0T020Z06100V1109120513091N0D\",ysse:\"0Z0F120A\",yssn:\"100I\",yssna:\"100I\",\"yst \":\"0Z0B100A120K1308\",yste:\"0M080N050R060T040U0W0Z0E100K1103120F1A071B03\",\"yste \":\"0U180Z021A031B03\",yster:\"0M030R020Z04100H\",ystk:\"1A2R\",ystki:\"1A27\",ystko:\"1A2A\",ysty:\"111U1A0A\",ystä:\"113M\",ystäv:\"116G\",ysv:\"0U0E0Y0B1105\",ysvět:\"0U0U\",ysy:\"111R1A021N1C\",ysz:\"141A1A2N\",ysze:\"142U1A0Y\",yszer:\"142Y\",ysä:\"110F\",yta:\"0U05100B1303140K1A231B0L1F021Q13\",yte:\"0U041004110I120B14051A0A1B05\",\"yte \":\"12091A021B08\",yth:\"0L020M12\",ythi:\"0M1X\",ythin:\"0M2N\",yti:\"0U030Y0E1108130B1B7P\",\"yti \":\"1BB1\",ytis:\"1B12\",\"ytis \":\"1B28\",ytj:\"01071303\",ytji:\"010F\",ytjie:\"010G\",ytk:\"0U0211051A04\",yto:\"0U0A0Y07140C1A061B27\",ytoj:\"1B3B\",\"ytoj \":\"1B30\",ytoja:\"1B2R\",ytr:\"0U051A05\",ytt:\"0Z0H100O114H120Q130T\",\"ytt \":\"1009120C130L\",ytte:\"0Z171009110H121A\",\"ytte \":\"0Z0D10041107120J\",ytter:\"0Z0D1004120A\",ytti:\"0Z03111812061308\",\"ytti \":\"112I\",yttä:\"114W\",yttää:\"115O\",yttö:\"111G\",ytu:\"0U021A0E1B0C1Q06\",yty:\"11261A08\",ytyy:\"112J\",\"ytyy \":\"115X\",ytä:\"111U\",ytö:\"110H\",ytą:\"1B08\",ytų:\"1B0A\",\"yu \":\"0308044I0B0314031F0U\",yub:\"0303040F\",yud:\"03050D040O191F071Q0A\",yuda:\"0D080O1N\",yudar:\"0O18\",yuf:\"032J1P5O\",yufa:\"032L\",yufan:\"034Z\",yufi:\"03031P19\",\"yufi \":\"03051P1G\",yufo:\"1P2X\",yufom:\"1P1O\",yufö:\"1P30\",yufön:\"1P3I\",yug:\"030L040H140I1Q08\",yuh:\"0D02\",yuka:\"0B0T14071F04\",yukai:\"0B1M\",yul:\"030U14051F04\",yuma:\"043D0D021F0A\",\"yuma \":\"045Y\",yumv:\"046P\",yumvi:\"049T\",yun:\"030J040G0B060D060O08140N1F1H1P0R\",yuni:\"0D021P0V\",yunik:\"1P11\",yunk:\"141O\",\"yunk \":\"141P\",yur:\"030P040D0B061F0C\",yus:\"030X0B02\",yut:\"0D021F03\",yuy:\"03021F0M\",yv:\"0U040Y030Z0E1002111D1204140U1B1K1F071Q0E\",\"yv \":\"0Z0512031408\",yva:\"0U021B0K1F0D1Q0Z\",yve:\"0Z0G11021203140Y1B331F051Q0F\",\"yve \":\"0Z0L14041F04\",yven:\"0Z0A14061B4Z\",yvena:\"1B3B\",yveni:\"1B3D\",yvent:\"1B1U\",yver:\"0Z0C140D\",\"yvet \":\"1413\",yvi:\"111X1B05\",yvin:\"112X\",\"yvin \":\"116W\",yvä:\"1004113C\",\"yvä \":\"112I\",yvää:\"1119\",\"yvää \":\"112Y\",yvū:\"1B06\",yw:\"040D0M021A1K1Q07\",ywa:\"04181A23\",\"ywa \":\"043K1A0O\",ywh:\"0M03\",ywo:\"1A03\",yxo:\"1003\",yy:\"030K111C\",\"yy \":\"111W\",yyd:\"110G\",yyh:\"1104\",yyk:\"1107\",yyl:\"1106\",yyn:\"110J\",yyp:\"1109\",yys:\"110M\",yyt:\"1112\",yz:\"03050T020U050Y0K140E1A0L1B021F031L051N5O\",\"yz \":\"1N4K\",yza:\"030I0T041N13\",\"yza \":\"030J0T021N18\",yzd:\"1A021B051N0L\",yze:\"0Y11140C1F04\",yzer:\"0Y1R\",yzerá:\"0Y1W\",yzl:\"1N0W\",yzla:\"1N10\",yzlar:\"1N1B\",yzm:\"1N0G\",yzy:\"1A051N44\",\"yzy \":\"1N1O\",yzyk:\"1A051N1B\",yzykl:\"1N1O\",yzyn:\"1N1A\",yzyna:\"1N17\",yá:\"141H\",yál:\"140C\",yám:\"140K\",yán:\"1405\",yár:\"140E\",yä:\"110C1P0B\",\"yä \":\"1112\",yän:\"1P0K\",yää:\"1106\",yç:\"1N07\",yé:\"0L05140S\",\"yé \":\"0L0K\",yée:\"0L03\",yél:\"140C\",yí:\"1408\",yð:\"130C\",yñ:\"1N47\",\"yñ \":\"1N6N\",yñd:\"1N0D\",yñm:\"1N0C\",yñy:\"1N0U\",yó:\"0O04140G\",\"yó \":\"0O0E1406\",yón:\"1402\",yö:\"111V140A1F06\",\"yö \":\"110M\",yöd:\"110O\",yöh:\"110X\",yöhä:\"1114\",yök:\"110B1403\",yöl:\"1104\",yöm:\"110E\",yön:\"111A14061F0G\",yöp:\"110A\",yör:\"110P1407\",yös:\"1115\",yöt:\"110U\",yöv:\"1106\",yú:\"1408\",yü:\"140J1F27\",yük:\"14031F2D\",\"yük \":\"14061F1Q\",yün:\"140B1F02\",yür:\"1F0W\",yürü:\"1F0Y\",yüt:\"140E\",yüz:\"1F25\",yý:\"1N0F\",yýa:\"1N0O\",yć:\"1A1W\",\"yć \":\"1A3W\",yč:\"0U070Y0A1B08\",yča:\"0Y0J\",yčaj:\"0Y0X\",yčajn:\"0Y13\",yči:\"1B0L\",yı:\"1F4L\",\"yı \":\"1F57\",yık:\"1F0G\",yıl:\"1F29\",\"yıl \":\"1F11\",yım:\"1F1J\",\"yım \":\"1F1Q\",yın:\"1F0V\",yır:\"1F0J\",yız:\"1F11\",\"yız \":\"1F17\",ył:\"1A4H\",\"ył \":\"1A3I\",yła:\"1A1Y\",\"yła \":\"1A2A\",yłe:\"1A1R\",yłem:\"1A1Z\",\"yłem \":\"1A36\",yło:\"1A1Q\",\"yło \":\"1A2C\",yń:\"1L05\",yň:\"0Y021N6Q\",\"yň \":\"1N9G\",yňa:\"1N0G\",yňm:\"1N0B\",yňy:\"1N32\",\"yňy \":\"1N1I\",yňyz:\"1N30\",\"yňyz \":\"1N2C\",yő:\"1409\",yř:\"0U08\",yś:\"1A1Z\",\"yś \":\"1A1D\",yśl:\"1A29\",\"yślę \":\"1A1O\",yş:\"1N33\",\"yş \":\"1N27\",yşa:\"1N0G\",yşd:\"1N0Y\",yşdy:\"1N13\",yşl:\"1N0Q\",yşm:\"1N0D\",yşy:\"1N13\",yš:\"0U0N0Y0G1B02\",yše:\"0U0P\",yšel:\"0U0X\",\"yšel \":\"0U11\",yť:\"0Y0Q\",\"yť \":\"0U020Y1V\",yű:\"140E\",yź:\"1A02\",yż:\"1A0B\",yž:\"0U100Y071B04\",\"yž \":\"0U1Y\",yži:\"0Y091B0A\",yɣ:\"0304\",\"z'\":\"0403\",\"z-\":\"03050L0S\",\"z-l\":\"0L08\",\"z-m\":\"0L0F\",\"z-mo\":\"0L0P\",\"z-moi\":\"0L17\",\"z-v\":\"0L3A\",\"z-vo\":\"0L5G\",\"z-vou\":\"0L90\",zaa:\"0R0911021A04\",zaba:\"0O030U020V0F141N1A0A\",zabad:\"141Q\",zabor:\"0V1O\",zabu:\"0Y22\",zabud:\"0Y2L\",zacz:\"1A1L\",zad:\"03040O0M0P0I0U070V0O0Y0714091A161F051N2V\",zado:\"0O0N0P0C0V0A14021A0B1O02\",zady:\"1N3M\",\"zady \":\"1N24\",zadym:\"1N14\",zag:\"03020R090V0514041A0D\",\"zag \":\"0R0U1402\",zah:\"0N0C0U0L0V0B0Y0C140215041F03\",zahr:\"0U0Q0Y0C\",zahra:\"0U0X0Y0B\",zai:\"0B020V0T1A08\",zaist:\"0V26\",zaj:\"0U0T0V0P0Y2N14091A1T1O05\",\"zaj \":\"0Y1T14021A0F1O06\",zajt:\"0Y2K1402\",zajtr:\"0Y34\",zají:\"0U16\",zajím:\"0U1L\",\"zal \":\"031D0R4E0U0X0Y0J140Q1N0E\",zama:\"04110V0514021A031F5V\",zaman:\"1F7V\",zami:\"0U090V050Y0I1A181B09\",zana:\"04290O0E14091F0B\",zane:\"0U0B0Y1B1A04\",zanep:\"0U090Y1J\",zap:\"0O090U1J0V0K0Y0R14021A25\",zapla:\"0U0U0Y0M\",zapo:\"0U1G0V0514021A0V\",zapom:\"0U1T1A19\",\"zar \":\"0O0Y0P0A0V0Z14051F0D\",\"zas \":\"0O0H0P0314071A171B021D0W1O11\",zast:\"0U0T0V060Y0P1A0K\",\"zasu \":\"1A1H\",\"zat \":\"0R0H0U07141C15131N4A\",zatl:\"14021N1Y\",zatla:\"14021N2O\",zato:\"0Q0Q0V07140P1A02\",zau:\"0N020V0M0Y0P14021A0A1D0O\",zaud:\"1D0W\",zaudē:\"1D25\",zauj:\"0U020Y17\",zaují:\"0Y1H\",zav:\"0U130V0W0Y11140R1505\",zava:\"0Q020U02141N\",zavo:\"0U0T0Y14\",zavol:\"0U150Y1E\",završ:\"0V1L\",zaw:\"039Q1A1L\",zawa:\"03A41A04\",zawal:\"03JV1A02\",zaws:\"1A1I\",zawsz:\"1A2E\",zax:\"0303\",zay:\"032Q1F0E\",zaye:\"0329\",zayer:\"0350\",zaz:\"0Q020U030V041A07\",zaç:\"0P07\",zač:\"0U180V050Y15\",zača:\"0U110Y0Q\",začal:\"0U1G0Y0J\",zaĝ:\"1O06\",zaļ:\"1D0K\",zał:\"1A1P\",zaš:\"0V1K0Y0A\",zašt:\"0V1Q\",zašto:\"0V46\",zaŭ:\"1O07\",zba:\"0U050Y09140F15021A05\",\"zben \":\"140X\",zbo:\"0U040V180Y0C150F1F06\",zbog:\"0V12\",\"zbog \":\"0V2N\",zby:\"0U070Y071A0Q\",\"zbyt \":\"1A1I\",zc:\"0O070U021A1V1F0W\",zca:\"0O061F1I\",\"zca \":\"0O061F1F\",zce:\"0U031A021F0T\",zcl:\"0O02\",zco:\"0O0D\",\"zco \":\"0O0K\",zcz:\"1A3F\",zcze:\"1A29\",\"zcze \":\"1A2O\",zczę:\"1A1A\",zczęś:\"1A1Q\",zd:\"03080U1T0V0E0Y1F14171A1L1B0B1D0T1F1I1N1N\",\"zd \":\"140O1A03\",zda:\"03030U090V0C0Y0F140D1A111B051D2A1F0Q1N0N\",zdar:\"0U031A0A1D2W\",zdarī:\"1D6T\",zde:\"030H0U0A0Y09140H1A0E1F1I1N0X\",zden:\"0U02140A1A041F101N0N\",\"zden \":\"1F1E1N0V\",zdi:\"03050U070Y0C1B021F0K1N0L\",zdn:\"0U0D0Y0V\",zdne:\"0Y1A\",zdnen:\"0Y1H\",zdo:\"0U030Y091A0A1B031D0H1F02\",zdr:\"0U0K0V0K0Y0L1A0Q\",zdra:\"0U0P0V0I0Y0U1A05\",zdrav:\"0U0Y0V180Y10\",zdu:\"0U040V040Y0514021A031B081F04\",zdy:\"0U020Y061A051B021N17\",zdá:\"0U0S0Y0G\",\"zdá \":\"0U0O0Y0H\",zdí:\"0U0D\",zdě:\"0U0O\",zdı:\"1F11\",zea:\"1506\",zeb:\"030314071A1O1F041O03\",zebuj:\"1A1S\",zec:\"151A1A2G1F02\",zecz:\"1A1P\",zeczy:\"1A1Z\",zed:\"030N0M09140T1A2P1F021N0G\",\"zed \":\"03020M0H14161A0Y\",zedł:\"1A1U\",\"zedł \":\"1A23\",zee:\"0R0A\",zeer:\"0R0N\",\"zeer \":\"0R0T\",zeg:\"030H0R0X140G1A2V1F03\",\"zeg \":\"0R0P1408\",zegd:\"0R0Q\",\"zegd \":\"0R0Y\",zegg:\"03020R18\",zegge:\"03020R1N\",zego:\"1A33\",\"zego \":\"1A4I\",zegt:\"0R0V\",\"zegt \":\"0R16\",zeh:\"03040N0914031F03\",zei:\"0N1L0P030R0J14031503\",\"zei \":\"0N070P020R1U14021505\",zeit:\"0N2M\",\"zeit \":\"0N35\",zej:\"0U040V0214021A161D0G\",zek:\"030M0R0B0U06141N1A221F061N17\",\"zek \":\"0U09142V1A0C1N1N\",zeka:\"1A1N\",zeke:\"0R15140O\",zeker:\"0R1K\",\"zel \":\"03050R050U0614351F1I\",zele:\"0U0C0V030Y0X140X150D1A021F05\",zelen:\"0R020U0G0V090Y15\",zelf:\"0R2F\",\"zelf \":\"0R1Q\",zelfd:\"0R0S\",\"zem \":\"03070N020P0K0U050Y0R14421A181N10\",zeme:\"0Y0B14161D181F06\",zemes:\"1D1R\",zemr:\"034E1403\",zemre:\"039J1402\",zemé:\"141B\",zemél:\"1410\",zemř:\"0U0W\",zemře:\"0U13\",\"zen \":\"030U0M030N2I0R2S0U08141V1F0F\",zend:\"0N040P130R0C1407\",zendo:\"0P1A\",zeni:\"0U0C14051A3J1F03\",zenia:\"1A2C\",zenie:\"1A2I\",\"zení \":\"0U0U0Y0B\",zep:\"0N020U0H14041A0Y\",zept:\"0N050U0S\",zepta:\"0U0W\",\"zer \":\"03020N080P6T0R06141X1F05\",zera:\"0P080Q090U020Y0W1A05\",zere:\"044C0P0214AG1F0A\",zerel:\"140Y\",zeret:\"148K1F02\",zerew:\"045L\",zeri:\"0D0414271F0X\",zerin:\"142B1F13\",zerá:\"0Y1Q\",\"zerá \":\"0Y1G\",zerű:\"141C\",\"zes \":\"0M020N060P1D0R0B140Q1D0K\",zet:\"0R0A0U050V0I143G1A0E1F0E1N0A1O04\",\"zet \":\"0R0K0U080V09141T\",zete:\"0R020V02141O1F09\",zett:\"0R0J142L\",\"zett \":\"1422\",zeu:\"0N090U021402150C1A02\",zev:\"0R031F07\",zew:\"030Q1A0R\",zey:\"040F1F08\",zez:\"0U02140415051A1F\",\"zez \":\"15041A1S\",zeý:\"1N0K\",ześ:\"1A0W\",zf:\"0302\",zga:\"030G0O020V0214071A0B1D131F05\",zgan:\"03041D0X\",\"zgan \":\"03061D2F\",zge:\"030J1F0B\",zgl:\"0V161A04\",zgle:\"0V1D\",zgled:\"0V3H\",zgova:\"0V1M\",zgubi:\"0V1M1A0K\",zgü:\"1F0P\",zgā:\"1D0Q\",zho:\"0U0P0Y0V\",zhod:\"0U100Y14\",zia:\"0N020P0A0Q291402150R1A461O03\",\"zia \":\"0P0A0Q1V1403150H1A02\",ziat:\"0Q0N150C\",ział:\"1A5B\",\"ział \":\"1A3C\",ziała:\"1A1Z\",ziałe:\"1A31\",zib:\"040M14041504\",zic:\"0R0V0U020V04150Z1A0G1O02\",zich:\"0N020R3A1402\",\"zich \":\"0R32\",zicht:\"0N030R11\",zid:\"0P060U050V0515021B021O04\",\"zie \":\"0Q1C0R0O0U020Y09150H1A6C\",ziec:\"1A1Y\",zieci:\"1A1Y\",zied:\"1A031D1G\",ziej:\"1A1L1B05\",ziek:\"0R1N\",\"ziek \":\"0R1E\",ziel:\"0N0C0R041A1A\",zien:\"0Q0M0R351A0W\",\"zien \":\"0R43\",zies:\"1A1Q1D13\",ziesz:\"1A1K\",ziet:\"0R0W\",\"ziet \":\"0R18\",ziew:\"1A1A\",zieć:\"1A1S\",\"zieć \":\"1A2P\",\"zień \":\"1A1I\",zif:\"03071P1J\",\"zif \":\"03041P1F\",zig:\"03020L020N0H0R0514071O07\",zii:\"0Q05150C1O02\",zij:\"0R5P0V0B1B0C\",\"zij \":\"0R39\",zijn:\"0RGG\",\"zijn \":\"0RKM\",zik:\"030Q040M0U030V18142O1A031B0I1D0Y1F0I1O0A\",\"zik \":\"030Q0V0K146E1A021F0E\",\"zim \":\"03040U040V0E1F0Y\",\"zin \":\"03050N030R130Z02140215081A081F25\",zina:\"044J0Q041A0C1B031D17\",\"zina \":\"047F0Q041A0E1B041D2Y\",zing:\"0M060R0O\",zinh:\"0P1Q\",zinha:\"0P0W\",zinho:\"0P18\",zini:\"0N020V051A061D0Z1F041O06\",\"zini \":\"0V0D1D2K1F03\",zinu:\"15071D2Z\",\"zinu \":\"1D7I\",zinā:\"1D3Y\",zināj:\"1D3C\",zināt:\"1D3U\",zio:\"0P020Q7O0V061A0E1O06\",\"zio \":\"0P020Q170V071O06\",zion:\"0QAL1A08\",ziona:\"0Q5H\",zione:\"0Q4P\",zioni:\"0Q19\",\"zir \":\"0P091N1F\",zira:\"045R0V061F021O0N\",\"zira \":\"046G0V0B\",ziras:\"1O1A\",zird:\"1D0Z\",zirdē:\"1D25\",\"zis \":\"150J1D0J1O12\",zist:\"0N040Q030Y0A140215081B041O0Q\",\"zit \":\"030P0R120U061403151A\",zitt:\"0N020Q020R0Q\",zitte:\"0N030R0Y\",ziu:\"0P0215111A03\",ziv:\"0V0714021D0J\",ziy:\"1F16\",ziya:\"1F11\",ziyar:\"1F1D\",ziz:\"0304040G\",ziñ:\"1N0S\",\"ziñ \":\"1N12\",ziò:\"0Q03\",zić:\"1A10\",\"zić \":\"1A1H\",zię:\"1A0U\",ziĝ:\"1O0E\",ził:\"1A1D\",ziņ:\"1D0Y\",ziň:\"1N2M\",\"ziň \":\"1N3Q\",ziś:\"1A0T\",ziš:\"0V081B0I\",zišk:\"1B0T\",ziška:\"1B1L\",ziɣ:\"031W\",ziɣt:\"031M\",\"ziɣt \":\"0330\",zj:\"0U040Y081A0O\",zje:\"0Y0I1A0H\",zk:\"0U130Y0M140J1A1T1D06\",zka:\"0U070Y0K1A1H\",zko:\"0U0M0Y0A140C1A19\",zku:\"0U0Q0Y0D1A03\",zla:\"030A0U060V0E0Y081A021D0H1F2J1N0V\",\"zla \":\"03050U031F1Z\",zlar:\"1F0I1N12\",zler:\"1F101N2D\",zleri:\"1F0W1N2R\",zli:\"03040N060U060V0H0Y0O14031A0D1D0K1F0J1N0J\",zlo:\"0O020U0N0V0F0Y0K\",zly:\"1N0M\",zlü:\"1F0H1N09\",zlı:\"1F0T\",zman:\"03021D1Y1F05\",zmant:\"1D2F\",zmanī:\"1D1W\",zmaw:\"1A17\",zmawi:\"1A1Y\",zme:\"032J0P040U040V0N0Y0V14021F0N1N0E\",zmer:\"032J\",\"zmer \":\"0358\",zmi:\"031E0U060V0O0Y0H1A0V1D1C1F021N15\",\"zmi \":\"0U050V030Y0B1A061N1L\",zmir:\"031G1D13\",zmirs:\"1D2T\",zmy:\"0U020Y081A081N0F\",změ:\"0U0L\",změn:\"0U0U\",zn:\"030A0U1X0V2G0Y1Z142F15031A3V1D0C\",zna:\"030I0U100V5O0Y1Q140D1A3V\",\"zna \":\"030I0V1714031A0Z\",znal:\"0U0M0V0E0Y191A0Z\",\"znal \":\"0U0I0Y0X\",znam:\"0U0N0V1P0Y0Y1A0K\",\"znam \":\"0U050V3O0Y0A1A0T\",\"znao \":\"0V1Q\",\"znaš \":\"0V1X\",zne:\"030D0U080V0O0Y08140H15041A0U\",\"znek \":\"1410\",zni:\"03020U090V080Y0J142F15071A1P1D0G1F02\",\"zni \":\"0V03145W1A03\",znie:\"14031A1F\",\"znie \":\"14031A1S\",zno:\"0U0D0V0B0Y0N14081A0H\",znov:\"0U0K0Y10\",znova:\"0U060Y11\",zny:\"1A0V\",zná:\"0U1K0Y1W140N\",znál:\"141J\",znám:\"0U190Y1C\",\"znám \":\"0U0V0Y0X\",\"zo'\":\"0R02\",zoa:\"0R04\",zob:\"041U0Y0T140Q1A0S\",zoba:\"042H140C1A13\",\"zoba \":\"043O1409\",zobac:\"1A1R\",zobi:\"042D\",zobá:\"141G\",zoc:\"0R04\",zod:\"0R020U0414041A02\",zoe:\"0R0F\",zoek:\"0R1C\",\"zoek \":\"0R0U\",zof:\"0V021O02\",zog:\"041O0N070Q021402\",zoh:\"040D\",zoi:\"0R02\",zoj:\"1O0F\",zok:\"04180Y0A141C1A021N0G\",\"zol \":\"0Y0C1414\",\"zom \":\"141W\",\"zon \":\"0L020R0C140Z1F021O0U\",zona:\"0O070P020Q0315081A0C1O13\",zonas:\"0O021B031O22\",zond:\"0R21\",zonde:\"0R1R\",zony:\"141I1A15\",\"zony \":\"140G1A1H\",zoon:\"0R0J\",zop:\"0Y07\",zora:\"0V041A1A\",zoraj:\"1A1X\",zorg:\"0R0Z14051O0K\",zoru:\"0U05140315051F2S\",zorun:\"1F3S\",zos:\"040R0O0A0Y1H1A2D1O06\",zost:\"0Y2F1A3E\",zosta:\"0Y2K1A5D\",zot:\"040H14191D0G\",zott:\"1435\",\"zott \":\"142X\",zou:\"0P030R1B0U02\",\"zou \":\"0P040R48\",zoud:\"0R0K\",zov:\"040F0R040U080V0Q0Y08\",zow:\"1A0D\",zoz:\"040N0Y0C\",zp:\"0U150Y0I14051A0K1D06\",zpe:\"0U0F0Y0G1404\",zpeč:\"0U0O0Y0S\",zpo:\"0U0I14021A08\",zpr:\"0U0B0Y0O1A02\",zprá:\"0U0G0Y15\",zpráv:\"0U0M0Y1F\",zpí:\"0U0D\",zq:\"0O02\",zqu:\"0O05\",zr:\"030F0U0F0V070Y0S14091A1S1D0C\",zra:\"030H0U0E0V070Y0G14041A041D0N\",zre:\"030B0V080Y0K140C1A04\",zri:\"030F0Y0Q\",zro:\"0U050V021A37\",zrob:\"1A3X\",zrobi:\"1A64\",zs:\"0U0C0Y0L14141A051D121F0C\",\"zs \":\"14021D0J\",zsa:\"14051D0V1F05\",zsi:\"14071F0A\",zsk:\"0U0K0Y1E1D1V\",zska:\"1D2E\",zskat:\"1D5C\",zsky:\"0U0U0Y1V\",\"zsky \":\"0U150Y2A\",zsl:\"1D0N\",zsá:\"140H\",zsı:\"1F0B\",zt:\"03040N160U0K0Y09148E1A0J1D0F\",\"zt \":\"030B0N180U031470\",zta:\"0U03142E1A05\",\"zta \":\"141C1A02\",ztal:\"141D\",ztam:\"141D\",\"ztam \":\"141F\",ztat:\"1418\",zte:\"0N0M0U020Y0L142E1A0A\",\"zte \":\"0N0R0U030Y101412\",ztem:\"141F\",\"ztem \":\"141H\",ztet:\"141J\",ztett:\"140Y\",zti:\"0U0314051B031D0Q\",zto:\"0U02141A1A07\",ztos:\"141V\",\"ztos \":\"1418\",ztr:\"0U0Q140A\",ztra:\"0U0T\",ztrat:\"0U11\",ztá:\"1418\",zté:\"140D\",ztü:\"140B\",zub:\"040N0N030U090V070Y0C\",zuba:\"041Z0U020V03\",zuc:\"0N020Q041A0P\",zud:\"140B\",zuf:\"03040N08\",zug:\"03030N0G1404\",zuh:\"0N051403\",zui:\"0R03\",zuk:\"0N0514031A0K1F04\",zull:\"0R14\",zulle:\"0R1I\",zum:\"03030N0T0O020U0O0V0Y0Y151A0W1F02\",\"zum \":\"03020N1W0U020V03\",zume:\"0V0W0Y0K\",zumi:\"0Y1C1A18\",zumie:\"0Y1M1A1K\",zun:\"030H0N0A140F15031F1F\",\"zun \":\"030G1F1E\",\"zunk \":\"1410\",zuo:\"1B02\",zup:\"0Q0214021A0C\",\"zur \":\"0N13\",zurü:\"0N0X\",zurüc:\"0N1K\",zus:\"0N0L0R0714041A02\",zut:\"03020N03140215231A02\",\"zut \":\"1536\",zuw:\"0N021N0G\",zv:\"0U180V0Y0Y18140715021D0V\",zva:\"0U0B0V0R0Y0K14031D1W\",zvai:\"1D17\",zvaig:\"1D1W\",zvar:\"1D0U\",zve:\"0U090V0B0Y0I14071D0Q\",zvi:\"0V0G0Y0G\",zvl:\"0U0E0Y07\",zvy:\"0U0F0Y0Y\",zvyk:\"0U0O0Y0R\",zvyča:\"0Y11\",zví:\"0U0F\",zvē:\"1D0N\",zw:\"030I041I0N0R0R0E1A1Z\",zwa:\"030W04570N060R091A0I\",\"zwa \":\"04EE\",zwe:\"0303040U0N0Q0R0A1A02\",\"zwe \":\"042H\",zwei:\"0N1O\",\"zwei \":\"0N1M\",zwem:\"0R0Q\",zwi:\"030M0N0A0R021A1E\",zwo:\"1A12\",zwy:\"1A0T\",zy:\"0M020U0O0Y0M1AEP1F061N2Y\",\"zy \":\"0M040U0N0Y0C1AA51N1D\",zyb:\"1A0Y\",zyc:\"0U021A1M\",zyj:\"1A2I\",zyja:\"1A1G\",zyjac:\"1A1Z\",zyk:\"0U0P0Y181A1O1N0Z\",zykl:\"1N18\",zyl:\"1A0D1N0H\",zym:\"1A281N0M\",zyma:\"1A1B\",zyn:\"1A1V1N1M\",zyna:\"1A101N10\",\"zyna \":\"1A0V1N1D\",zyo:\"1F0A\",zys:\"1A4Q\",zyscy:\"1A1W\",zyst:\"1A3J\",zystk:\"1A4D\",zysz:\"1A1V\",zyt:\"1A1B\",zyta:\"1A1I\",zyw:\"1A0X\",zyñ:\"1N0J\",zyć:\"1A1X\",\"zyć \":\"1A2S\",zył:\"1A2D\",\"zył \":\"1A1F\",zyň:\"1N0B\",\"zz \":\"140K\",zzat:\"0Q0U1403\",zzay:\"032H\",zzaye:\"034D\",zze:\"030G0D020Q0E140P1F04\",zzel:\"03061419\",\"zzel \":\"0309141B\",zzi:\"030M0Q0L\",zzl:\"03090U02\",zzo:\"0Q111403\",\"zzo \":\"0Q1I\",zzu:\"030C0U021404\",zzy:\"0302\",zzá:\"1410\",zá:\"0O020U0Z0Y16143U\",\"zá \":\"0O03140B\",zág:\"140X\",záh:\"0U020Y0N\",záhr:\"0Y13\",záhra:\"0Y1B\",záj:\"0U060Y06140C\",zák:\"0U0A0Y0F1403\",zál:\"0U090Y09140S\",záll:\"141D\",zám:\"0U030Y06141N\",zámo:\"141A\",zámí:\"1416\",zámít:\"1418\",zán:\"0U04140O\",zár:\"140Q\",zás:\"0O020U040Y05140Y\",záv:\"0U0B0Y0D\",záz:\"0U02140B\",zâ:\"1504\",zã:\"0P02\",zão:\"0P08\",zä:\"0N071N08\",zäh:\"0N0B\",zän:\"1N0A\",zç:\"1N0N\",zça:\"1N18\",\"zça \":\"1N1K\",zé:\"143I\",zéd:\"140E\",zék:\"140B\",zél:\"142Q\",\"zél \":\"1419\",zéln:\"141G\",zélni:\"1410\",zép:\"140T\",\"zép \":\"141D\",zér:\"140R\",zért:\"141R\",\"zért \":\"141U\",zés:\"140U\",zét:\"140C\",\"zê-\":\"0P05\",zí:\"0U130Y0G1417\",\"zí \":\"0U0P0Y0M\",zín:\"0U040Y05140O\",zít:\"0U0Z140M\",zítr:\"0U15\",zítra:\"0U1L\",zív:\"140U\",zíve:\"141J\",zíves:\"1418\",\"zò \":\"0Q03\",zó:\"0O0D14191A05\",\"zó \":\"0O0K140I\",zól:\"140M\",zón:\"0O0M1402\",\"zón \":\"0O0Y\",zót:\"140G\",zö:\"0N081419\",zöl:\"140B\",zön:\"140J\",zör:\"140H\",zös:\"0N0C1404\",zöt:\"140I\",zött:\"141B\",\"zött \":\"1417\",zú:\"0Y031409\",zúc:\"0O04\",zü:\"0N03141N1F0P1N2D\",zük:\"14121F03\",züks:\"1428\",züksé:\"142C\",zül:\"141G1F06\",züle:\"141Z1F02\",zülei:\"140Z\",zület:\"1414\",züm:\"1F0A1N11\",zümi:\"1N0V\",zün:\"140G1F0N1N2Y\",züni:\"1N34\",\"züni \":\"1N1G\",züniň:\"1N1X\",züň:\"1N0F\",zý:\"1N05\",zā:\"1D0C\",zāk:\"1D0J\",ză:\"151E\",\"ză \":\"154L\",zą:\"1A1E\",\"zą \":\"1A181B03\",zē:\"1D1W\",zēj:\"1D23\",zēja:\"1D17\",\"zēja \":\"1D2K\",zēji:\"1D0S\",zēm:\"1D0M\",zēn:\"1D0G\",zēr:\"1D0H\",zēs:\"1D0H\",zēt:\"1D3F\",\"zēt \":\"1D23\",zētu:\"1D23\",\"zētu \":\"1D5C\",zė:\"1B02\",zę:\"1A32\",\"zę \":\"1A401B02\",zęś:\"1A0X\",zī:\"1D2E\",zīb:\"1D0V\",zīg:\"1D17\",zīm:\"1D15\",zīs:\"1D0O\",zīt:\"1D0N\",zīv:\"1D5D\",zīve:\"1D11\",zīvni:\"1D1W\",zīvo:\"1D42\",\"zīvo \":\"1D48\",zīvoj:\"1D3C\",zīvot:\"1D2A\",zı:\"1F1U\",\"zı \":\"1F22\",zıl:\"1F0D\",zım:\"1F0F\",zın:\"1F0W\",zır:\"1F0W\",zł:\"1A1S\",zła:\"1A0X\",zło:\"1A1H\",złowi:\"1A1J\",zņ:\"1D0B\",zņe:\"1D14\",zņem:\"1D1G\",zņemt:\"1D2Y\",ző:\"140P\",\"ző \":\"140J\",zř:\"0U05\",zš:\"0U070Y09\",zšt:\"0U0C0Y0K\",zšti:\"0U0K0Y0Y\",zštin:\"0U0S0Y17\",zť:\"0Y02\",zů:\"0U0G\",zůs:\"0U0X\",zůst:\"0U1I\",zůsta:\"0U1W\",zű:\"1402\",zų:\"1B05\",\"zų \":\"1B0F\",zɣ:\"0303\",\"·\":\"0604\",ß:\"0N0P\",\"ß \":\"0N0Y\",ßb:\"0N02\",ße:\"0N10\",\"ße \":\"0N0I\",ßen:\"0N0N\",\"ßen \":\"0N1F\",ßer:\"0N0D\",ßi:\"0N04\",ßig:\"0N06\",ßt:\"0N0C\",\"ßt \":\"0N0E\",ßte:\"0N04\",à:\"0L1S0P0E0Q13\",\"à \":\"0L3T0P0Q0Q2N\",\"à-\":\"0L02\",\"à-b\":\"0L07\",às:\"0P08\",\"às \":\"0P0Y\",\"á \":\"0O2N0P460SDA0U7W0Y74138U1411\",\"á-\":\"0P09\",\"á-l\":\"0P14\",\"á-lo\":\"0P0V\",\"á-lo \":\"0P0V\",áa:\"1303\",áb:\"0O050P030S0F0U070Y0E1307142U\",ába:\"0O0B0P040U040Y0E142Z\",\"ába \":\"142G\",ában:\"0O02144T\",\"ában \":\"1453\",ább:\"1415\",\"ább \":\"1427\",ábh:\"0S0T\",ábha:\"0S0V\",ábi:\"0O030P08\",ábo:\"0U030Y08140B\",ábr:\"0O030P021402\",ábó:\"140J\",ából:\"141D\",\"ából \":\"141F\",ác:\"0O080P050S080U1G0Y10140J\",áce:\"0U0U0Y08\",\"áce \":\"0U150Y0D\",ách:\"0S0I0U0I0Y0H\",áci:\"0O0H0P0J0U120Y10140B\",\"áci \":\"0U1Q0Y0M\",ácil:\"0O0P0P0H\",ács:\"140M\",áct:\"0O060U0A\",ácu:\"0O020P020Y0I\",ád:\"0S060U3M0Y1U13031418\",\"ád \":\"0U2T0Y2D1413\",áda:\"0U1D0Y081408\",\"áda \":\"0U0X1402\",ádal:\"0U0T\",\"ádal \":\"0U0W\",ádh:\"0U020Y0F\",ádher:\"0U050Y0X\",ádi:\"0P060U0F1404\",ádn:\"0U181403\",ádné:\"0U0Q\",\"ádné \":\"0U0X\",ádz:\"0Y17\",ádza:\"0Y1X\",\"ádza \":\"0Y1F\",ádá:\"0U0D1403\",áf:\"0O020P02130C\",áfi:\"0O040P03\",áfr:\"0O020P03130E\",ág:\"0O030P0A0S0713051437\",\"ág \":\"141F\",ága:\"140E\",ágb:\"140J\",ágba:\"1418\",ágban:\"1412\",ági:\"0O060P081406\",ágo:\"141K\",ágot:\"141P\",\"ágot \":\"141N\",ágr:\"0O030P0413051405\",águ:\"0P0X1403\",água:\"0P12\",\"água \":\"0P18\",ágy:\"140H\",áh:\"0U0J0Y0J130K1405\",áhr:\"0Y0N1306\",áhra:\"0Y13\",áhrad:\"0Y1C\",ái:\"0O050S7G1308140B\",áid:\"0S281402\",\"áid \":\"0S111402\",áide:\"0S13\",áidea:\"0S41\",áig:\"140B\",áil:\"0S3Z\",\"áil \":\"0S43\",áim:\"0S3U1402\",\"áim \":\"0S3R1403\",áimi:\"0S0T\",áimid:\"0S3A\",áin:\"0S4W1303\",\"áin \":\"0S2T\",áini:\"0S1E\",áinig:\"0S3J\",áinn:\"0S0M\",áint:\"0S11\",\"áint \":\"0S2T\",áir:\"0S491306\",\"áir \":\"0S0T130A\",áire:\"0S26\",\"áire \":\"0S7R\",áiri:\"0S0V\",áirit:\"0S3A\",áirí:\"0S0X\",áirír:\"0S32\",áis:\"0O0F0S3K\",\"áis \":\"0O0O0S11\",áisi:\"0S1P\",áisiú:\"0S6U\",áist:\"0S1P\",áistí:\"0S4Z\",áit:\"0S1L1402\",\"áit \":\"0S1E1404\",áj:\"0O020U060Y0F1417\",\"áj \":\"140B\",ája:\"0O070Y06140L\",\"ája \":\"141E\",ájd:\"0Y0E1405\",ájá:\"140O\",ák:\"0U0L0Y0F130O1420\",\"ák \":\"0U0D0Y09142T\",áka:\"0U080Y0A130B140D\",\"ákat \":\"0U021410\",ákv:\"130N\",ál:\"0O090P070S0O0U2B0Y1D132P149K\",\"ál \":\"0O0K0U100Y0A130X1431\",ála:\"0S1N0U090Y05130O141O\",álai:\"0S1C\",álain:\"0S58\",álas:\"142F\",álasz:\"142H\",álc:\"0P030U04\",áld:\"1308140C\",ále:\"0O020U1C0Y1A\",\"ále \":\"0U1D0Y1P\",álf:\"131D\",áli:\"0O050P0P0U0N0Y0W1310140J\",ália:\"0P0P1402\",\"ália \":\"0P0V1402\",álj:\"140W\",álk:\"0U0A0Y05140R\",álko:\"141V\",álkoz:\"141X\",áll:\"143O\",\"áll \":\"1417\",álla:\"142R\",állt:\"141C\",\"állt \":\"140Y\",állít:\"1411\",álm:\"140D\",áln:\"0U0I0Y0D141F\",álni:\"142L\",\"álni \":\"142N\",álo:\"0U0K0Y0B1412\",álom:\"141N\",\"álom \":\"141N\",álp:\"1315\",álpa:\"131E\",ált:\"143A\",\"ált \":\"141P\",álta:\"144C\",\"álta \":\"140Y\",által:\"141G\",áltam:\"1419\",álto:\"141E\",áltoz:\"1418\",ály:\"0U02140S\",ám:\"0O050S0G0U5G0Y4E1305142N\",\"ám \":\"0U8L0Y991428\",áma:\"0O070U06140I\",áme:\"0O020U1C0Y1A\",\"áme \":\"0U220Y21\",ámh:\"0S190U02\",\"ámh \":\"0S13\",ámi:\"0U0J1304\",\"ámi \":\"0U0Q\",ámo:\"0O020U020Y04140O\",ámí:\"140G\",ámít:\"1416\",án:\"0D030O1A0S250U280Y1A130X1466\",\"án \":\"0O230S580U0P0Y0J130N143N\",ána:\"0S0V0U07130I1416\",ának:\"142A\",\"ának \":\"142F\",ánc:\"0O02140F\",ánd:\"0O0W140H\",ándo:\"0O191406\",\"ándo \":\"0O12\",ándék:\"140Y\",áne:\"0O020U04\",áng:\"0D020O031402\",áni:\"0O050U0I0Y0G13051405\",ánk:\"0U060Y0E140I\",áno:\"0U0Q0Y1F140D\",\"áno \":\"0U0W0Y1Y\",ánt:\"0O0Y140K\",ánto:\"0O121409\",\"ánto \":\"0O0X\",ánu:\"0U0A130I1403\",ány:\"0U090Y06143L\",\"ány \":\"0U0F0Y0B143G\",ányo:\"1424\",ání:\"0U1L\",\"ání \":\"0U2A\",áp:\"0O060P050U0G0Y0B13021405\",ápa:\"0U0F0Y0I1402\",ápi:\"0O0L0P0K\",ápid:\"0O0S0P0K\",áqu:\"0O040P05\",ár:\"0O080P0O0S0Y0U0N0Y32131F148U\",\"ár \":\"0S1I0U0A0Y14130Z1455\",ára:\"0O040P030S120Y0E130S142C\",\"ára \":\"0Y0G130R143L\",árac:\"0S0V\",árach:\"0S3J\",árb:\"0O0C0P021408\",árc:\"0O021408\",áre:\"0O020P040U060Y08\",ári:\"0P290Y4H130L140Z\",ária:\"0P0N0Y4P141E\",\"ária \":\"0P0F0Y5T141H\",árii:\"0Y1I\",\"árii \":\"0Y1B\",ário:\"0P240Y09\",\"ário \":\"0P21\",\"áriu \":\"0Y0Y\",árj:\"140E\",árm:\"0O02140P\",árn:\"0U0A0Y0B140R\",áro:\"0U070Y0Z142R\",árom:\"142I\",\"árom \":\"1423\",áros:\"141Z\",árs:\"0O020Y061309140G\",árt:\"0O020U04141D\",\"árt \":\"141F\",áru:\"0U021309140E\",árv:\"0P0D1407\",áró:\"140D\",ás:\"0O2H0P0E0S230U1R0Y28130J145X\",\"ás \":\"0O7N0P160S5G0U200Y2Q143G\",ása:\"0U02140M\",\"ása \":\"1415\",ási:\"0O030P030U04140L\",ásk:\"0U090Y0L1307140A\",ásn:\"0U0K0Y15140C\",\"ásne \":\"0Y0Z\",áso:\"0U020Y04141A\",ások:\"141A\",ásr:\"140G\",\"ásra \":\"1411\",áss:\"0P0A140I\",ást:\"0O050P050S0K0U090Y0F130U141H\",\"ást \":\"0U05130F143F\",ásta:\"0S0O13051403\",\"ásta \":\"0S2T\",ász:\"140N\",ásá:\"140Y\",ásár:\"141C\",ásáro:\"140Y\",ásť:\"0Y0H\",át:\"0O060P060S1A0U320Y2613231477\",\"át \":\"0U2R0Y0R1305146B\",áta:\"0O020U05130K140D\",áte:\"0U1S0Y1T\",\"áte \":\"0U1P0Y32\",átel:\"0U10\",áth:\"0S3H1408\",\"áth \":\"0S1L\",átha:\"0S2A140I\",áthai:\"0S58\",áti:\"0O0G0P0L0U0L0Y1513041402\",átic:\"0O0O0P0N\",átj:\"140B\",átk:\"0U0F0Y091404\",átn:\"0U02140I\",áto:\"0U030Y1E1424\",\"áto \":\"0Y22\",átok:\"141Q\",\"átok \":\"141P\",átom:\"141D\",\"átom \":\"1417\",áts:\"140Z\",átsz:\"141X\",átt:\"13351412\",\"átt \":\"132N\",átta:\"130P1423\",áttam:\"141D\",áté:\"0U03140B\",átí:\"0U0B1306\",áu:\"0Y0213051407\",ául:\"140C\",áv:\"0P0C0U2O0Y3E1308140U\",áva:\"0P0A0U130Y4D130C140Q\",\"áva \":\"0U080Y291402\",ávaj:\"0U090Y1A\",ávajú:\"0Y0X\",ával:\"0U0P0Y0Y141U\",\"ával \":\"0U0M0Y0P141X\",ávam:\"0P0C0Y11\",\"ávam \":\"0Y0Y\",ávať:\"0Y13\",\"ávať \":\"0Y1C\",áve:\"0P140U0A0Y0O\",\"áve \":\"0Y0Y\",ável:\"0P14\",\"ável \":\"0P1E\",ávi:\"0P030U0O0Y0S\",ávn:\"0U0J0Y0Z\",ávo:\"0U070Y0K140A\",ávu:\"0U0F0Y0S\",\"ávu \":\"0U0O0Y1C\",ává:\"0U13\",\"ává \":\"0U0S1402\",\"ávám \":\"0U0S\",ávé:\"140F\",ávě:\"0U0O\",\"ávě \":\"0U0S\",áx:\"0P02\",áxi:\"0P08\",áz:\"0U1E0Y161425\",\"áz \":\"140F\",áza:\"0U0L0Y0F1414\",ázal:\"0U0Q0Y0B1405\",\"ázal \":\"0U0R\",ázb:\"140D\",ázd:\"0U0B0Y0W\",ázdn:\"0U0J0Y1I\",ázdne:\"0Y1M\",áze:\"0U0I\",ázi:\"140B\",ázk:\"0U0I0Y0Q\",ázn:\"0U040Y0A140D\",ázo:\"0U080Y0K140B\",ázt:\"140D\",ází:\"0U0H\",áæ:\"1303\",áé:\"1403\",áð:\"131A\",áðl:\"1310\",áðla:\"131D\",áðlag:\"132X\",áðu:\"1316\",\"áður \":\"132B\",áč:\"0U070Y0Z\",\"áč \":\"0U030Y0F\",áči:\"0Y12\",\"áči \":\"0Y13\",áľ:\"0Y03\",áň:\"0Y03\",ář:\"0U0D\",áš:\"0U1W0Y1N\",\"áš \":\"0U380Y3M\",áť:\"0Y04\",áž:\"0U0O0Y0K\",áže:\"0U0D0Y08\",ážn:\"0U0E0Y08\",â:\"0L060P0415341F0B\",\"â \":\"1F0I\",âc:\"0L03\",âch:\"0L0C\",âd:\"1502\",âg:\"0L02\",âge:\"0L09\",âgé:\"0L03\",âi:\"150N\",âin:\"152A\",âine:\"1534\",\"âine \":\"152T\",âl:\"15081F0J\",âln:\"150U\",âlâ:\"1F1C\",\"âlâ \":\"1F1J\",âm:\"0P02150F\",âmb:\"150J\",âme:\"0L080P04\",âmp:\"0P021515\",âmpl:\"151R\",ân:\"0P09153Z\",âna:\"150Q\",ânc:\"0P0H152B\",ânca:\"151P\",ânci:\"0P0J150G\",ând:\"0P041569\",\"ând \":\"156X\",âng:\"0P021511\",âni:\"0P09150G\",ânt:\"0P031520\",ânz:\"150J\",ână:\"151Z\",\"ână \":\"152L\",âr:\"150L\",ârs:\"150J\",ârz:\"150V\",âs:\"1503\",ât:\"0L05151I\",\"ât \":\"154R\",âte:\"0L0D1515\",âti:\"0L05\",âtr:\"0L03\",âu:\"1502\",âș:\"1506\",âșt:\"150N\",âț:\"1503\",ã:\"0P4L\",\"ã \":\"0P0I\",ãe:\"0P09\",\"ãe \":\"0P0X\",ães:\"0P06\",ão:\"0PA3\",\"ão \":\"0PS0\",ãos:\"0P0J\",\"ãos \":\"0P0N\",ãs:\"0P02\",\"ãs \":\"0P0A\",ä:\"0N1M0Y0H10DY11MG1C6F1N961P68\",\"ä \":\"100211KQ1N1E1P09\",äb:\"1C0A1N0C1P29\",äbi:\"1C0P1N0J1P3K\",\"äbi \":\"1C0R\",äbin:\"1P4A\",äbino:\"1P4Z\",äc:\"0N0G100E\",äch:\"0N0O\",äck:\"0N021016\",äckt:\"100F\",äd:\"0N070Y04100S11051C0F1N0R1P3E\",\"äd \":\"1006\",äda:\"10071C171P0I\",ädal:\"1C0V\",ädala:\"1C1V\",ädc:\"0N08\",ädd:\"100V\",\"ädd \":\"100M\",ädda:\"100G\",äde:\"100N11091N091P1T\",ädel:\"1P1M\",ädelo:\"1P1U\",äder:\"100N\",\"äder \":\"100I\",ädg:\"1007\",ädi:\"11021N171P0W\",ädik:\"1P0Y\",\"ädik \":\"1P11\",ädip:\"1N1E\",\"ädip \":\"1N1X\",ädo:\"1P12\",ädr:\"1004\",ädu:\"1P0Q\",ädun:\"1P0X\",äduno:\"1P12\",ädä:\"1107\",ädö:\"1P0W\",ädön:\"1P12\",\"ädön \":\"1P19\",äe:\"11071C1B\",\"äe \":\"11041C0J\",äed:\"1C0F\",äen:\"110D\",äes:\"11041C0G\",äet:\"1104\",äev:\"1C2E\",\"äev \":\"1C0Z\",äeva:\"1C1T\",\"äeva \":\"1C1E\",äf:\"0N08100C1P0U\",äff:\"100V\",äffa:\"1015\",äffad:\"100H\",äfi:\"1P0I\",äft:\"0N0B1004\",äfu:\"1P0B\",äfö:\"1P0D\",äg:\"0N07101J1C2S1N1H1P0Z\",\"äg \":\"100W\",äga:\"100V1C3N\",\"äga \":\"100Z1C4I\",äge:\"0N04101G1C0J1N2P1P0D\",\"äge \":\"0N041N3P\",ägen:\"100T\",\"ägen \":\"0N02100I\",äger:\"0N031013\",\"äger \":\"0N041012\",ägg:\"100V\",\"ägg \":\"100I\",ägi:\"1C5I1P0Y\",\"ägi \":\"1C20\",ägib:\"1C0Q\",\"ägib \":\"1C1S\",ägid:\"1C1I\",\"ägid \":\"1C3O\",ägin:\"1C1Q\",\"ägin \":\"1C48\",ägo:\"1P0I\",ägr:\"1004\",ägs:\"1007\",ägt:\"0N04\",äh:\"0N0S111S1C1E1N1I\",\"äh \":\"1C0F\",äha:\"1C0F\",ähd:\"1116\",ähe:\"0N0511171C3D1N0K\",äheb:\"1C0Y\",\"äheb \":\"1C2D\",ähed:\"1C0L\",ähem:\"110C1C0K\",ähen:\"11061C11\",\"ähen \":\"0N021C1L\",ähi:\"0N03110B1N1J\",ähil:\"1N20\",ähili:\"1N2R\",ähk:\"110A\",ähl:\"0N0E1N0O\",ähli:\"0N021N0Y\",ähn:\"0N05110J\",ähr:\"0N0H\",äht:\"111N1C0B\",ähte:\"111A\",ähti:\"1118\",ähä:\"111W\",ähän:\"1132\",\"ähän \":\"1175\",äi:\"112M1C1M\",\"äi \":\"11041C0E\",äib:\"1C0E\",äid:\"110C1C0H\",äie:\"1C0H\",äik:\"11031C13\",äike:\"1C19\",\"äike \":\"1C29\",äil:\"110I\",äim:\"1109\",äin:\"112D1C13\",\"äin \":\"112H\",äine:\"111H\",äinen:\"113N\",äinu:\"1C12\",äinud:\"1C2N\",äir:\"1105\",äis:\"112X1C0O\",\"äis \":\"11021C0I\",äise:\"1114\",äisi:\"1133\",\"äisi \":\"1153\",äit:\"11141C0V\",äiti:\"111D\",äiv:\"112O\",äivä:\"114G\",\"äivä \":\"112Y\",äivän:\"113F\",äj:\"1105\",äjä:\"110H\",äk:\"100O111G1C131N0V1P21\",\"äk \":\"1N0Z\",äka:\"100A11081P12\",äkan:\"1P19\",äkano:\"1P15\",äkar:\"100D\",äke:\"100P110J\",äker:\"100X1102\",\"äker \":\"100L\",äki:\"110Z1C2A1N0H1P0I\",äkid:\"1C1B\",äkida:\"1C34\",äkim:\"1C0L\",äkk:\"110D\",äkn:\"1009\",äko:\"11031P1H\",äkr:\"1004\",äks:\"111B1C1K\",\"äks \":\"1C0Y\",äksi:\"11111C11\",\"äksi \":\"112H\",äkt:\"100M\",äku:\"1105\",äky:\"1109\",äkä:\"11151N09\",äkää:\"1115\",äkö:\"110S1P0H\",äl:\"0N0I103O112M1C171N4L1P3P\",\"äl \":\"100L1N47\",äla:\"100311081P0T\",äld:\"101L1N1W1P0G\",äldi:\"101G1N2O1P0J\",äldig:\"101G1N17\",äldir:\"1N1G\",äldr:\"100N\",äldra:\"100H\",äle:\"11031C0K1P0S\",älet:\"1C0Q\",äleta:\"1C1S\",äli:\"11151C0M1N0P1P1C\",älik:\"1P12\",\"älik \":\"1P15\",älis:\"11091C0O\",älism:\"1C1O\",älj:\"100F11061C2H\",älja:\"10091C2Y\",\"älja \":\"10081C58\",älk:\"10051118\",älke:\"1111\",älkee:\"112G\",älkä:\"1113\",äll:\"0N0B10341148\",\"äll \":\"1019\",älla:\"100X1107\",\"älla \":\"100N\",älld:\"100I\",älle:\"0N04100Y111H\",\"älle \":\"0N041005112S\",ällä:\"1152\",\"ällä \":\"11B6\",älm:\"1N2G\",älmi:\"1N3J\",\"älmi \":\"1N4O\",älo:\"11021P2A\",älog:\"1P23\",älogo:\"1P2G\",älp:\"101S\",\"älp \":\"100Q\",älpa:\"1014\",\"älpa \":\"1013\",äls:\"101S\",älsk:\"101Z\",älska:\"101W\",ält:\"0N0E100A1113\",ältä:\"111L\",\"ältä \":\"113E\",älv:\"100Y\",\"älv \":\"100V\",äly:\"1108\",älä:\"111W\",\"älä \":\"1135\",älö:\"11021P0Z\",äm:\"0N05100Z112C1C041N4J1P0G\",\"äm \":\"10031N0X\",ämd:\"1008\",äme:\"0N0211051N6C\",\"äme \":\"0N021N8O\",ämi:\"110N1N1F\",\"ämi \":\"1N1D\",ämm:\"100F110U\",ämme:\"0N0210091113\",ämn:\"100U\",ämna:\"100U\",\"ämna \":\"100H\",ämo:\"1N0B\",ämp:\"0N021006110C\",ämt:\"100U\",ämta:\"100R\",\"ämta \":\"100E\",ämä:\"116Z1N0A\",\"ämä \":\"117E\",ämän:\"112U\",\"ämän \":\"115R\",ämää:\"111J\",ämään:\"1131\",än:\"0N0Z105F11BF1C1A1N6O1P4O\",\"än \":\"102N11NO1N6C1P20\",äna:\"100A1C251P3B\",\"äna \":\"10031C1T1P0E\",änap:\"1P3F\",änapü:\"1P3X\",änd:\"0N0P103P1N48\",ända:\"100S\",\"ända \":\"100N\",ände:\"0N15102U\",\"ände \":\"0N0H101E\",änder:\"0N18101C\",ändi:\"0N0F100C11021N60\",ändig:\"0N0L100C1N62\",ändr:\"100H\",ändra:\"100F\",äne:\"0N0311671N0U1P0S\",\"äne \":\"0N031N12\",änel:\"1130\",änell:\"116H\",änen:\"0N04115L\",\"änen \":\"0N0711CR\",änet:\"111H\",\"änet \":\"113L\",äng:\"0N0H102X11061C1G\",\"äng \":\"100I\",ängd:\"100J\",änge:\"0N0J101H\",\"änge \":\"0N05100R\",ängi:\"0N031C1D\",ängr:\"100Q\",ängre:\"100Q\",äni:\"1002112L1N191P12\",\"äni \":\"114B1N0L1P0I\",änk:\"0N021018110E\",änke:\"0N02100P\",änker:\"100M\",änkt:\"0N02100E\",änl:\"100911021N0B\",änn:\"0N051033111F\",änne:\"0N0A10241119\",\"änne \":\"112F\",änner:\"0N0H1021\",änni:\"101B110A\",ännis:\"10101108\",ännu:\"100D\",äno:\"1N0J1P1R\",änol:\"1P25\",änolo:\"1P2I\",änp:\"1105\",äns:\"100P110Y\",änsä:\"111G\",\"änsä \":\"113E\",änt:\"101G111Z\",\"änt \":\"100H\",änta:\"101E1102\",\"änta \":\"100O\",äntar:\"100F\",äntä:\"112P\",\"äntä \":\"115C\",änu:\"1C0G\",äny:\"1116\",änyt:\"1123\",\"änyt \":\"1151\",änä:\"1129\",\"änä \":\"1124\",änää:\"111Z\",änään:\"114T\",änç:\"1N0B\",äo:\"11021C04\",äol:\"1C0F\",äon:\"1105\",äp:\"1009110A1C031N0S1P0N\",\"äp \":\"1N14\",äpe:\"11031P0G\",äpi:\"110B\",äpp:\"100O1103\",äppl:\"100H\",äpple:\"100H\",äpä:\"110I\",äpü:\"1P0J\",är:\"0N0Q10FX111K1C2X1NAO1P0I\",\"är \":\"10RU11031N74\",ära:\"101B1C5A\",\"ära \":\"10151C4K\",ärar:\"100L\",ärare:\"100K\",äras:\"1C1F\",ärast:\"1C37\",ärd:\"10101N32\",ärde:\"100H1N15\",\"ärde \":\"100B1N1B\",ärdi:\"100L1N3C\",\"ärdi \":\"1N2O\",ärdig:\"100L\",ärdim:\"1N1G\",äre:\"0N0J100C110G1C0E1P0F\",\"äre \":\"0N0Y\",ärf:\"1004\",ärg:\"0N0310091C1J\",ärgm:\"1C0Q\",ärgmi:\"1C1S\",ärh:\"1005\",äri:\"100F111N1C171N8C\",\"äri \":\"110R1N12\",ärin:\"1003110Q1N9I\",\"ärin \":\"11181NCL\",äris:\"110K1C0H1N14\",\"äris \":\"1C171N1I\",ärj:\"110K\",ärk:\"0N03100J110S1C0M\",ärl:\"100V1N1C\",ärld:\"100M\",ärlde:\"100G\",ärle:\"100A1N1V\",ärler:\"1N2C\",ärm:\"0N04100D11071N0Y\",ärmi:\"1N1B\",ärn:\"100N\",ärna:\"100H\",äro:\"1005\",ärr:\"1009110L\",ärs:\"100H110G1N25\",ärsi:\"110L1N33\",ärsiň:\"1N3Q\",ärsk:\"100G\",ärt:\"0N05100L110G\",ärv:\"100311061C0M\",ärä:\"110N\",ärö:\"1104\",äs:\"0N0B0Y05101A112E1C0N1N0F1P28\",\"äs \":\"1004110E1P0B\",äsa:\"100F1P1J\",\"äsa \":\"100I\",äsag:\"1P1V\",äsago:\"1P27\",äse:\"0N02100D110G1P0I\",äser:\"0N02100E\",äsi:\"0N02112D1C0V1N0M\",\"äsi \":\"112P\",äsin:\"110B1C0Q\",äsinu:\"1C1S\",äsk:\"100B110A\",äsl:\"1P0H\",äsp:\"1P0D\",äss:\"0N081002112K\",ässä:\"114I\",\"ässä \":\"11A7\",äst:\"0N03102A112U1C1A1P0B\",\"äst \":\"100U\",ästa:\"101N\",\"ästa \":\"100T\",ästan:\"100O\",äste:\"0N04100L1104\",ästi:\"11131C1B\",\"ästi \":\"112F1C34\",ästä:\"1135\",\"ästä \":\"1160\",äsy:\"110F\",äsä:\"1P0E\",ät:\"0N0Y0Y0E102F112Y1C0E1P17\",\"ät \":\"0N0B100F1156\",äta:\"100S1103\",\"äta \":\"1010\",äte:\"0N080Y04100U110L\",äter:\"0N0B1011\",\"äter \":\"0N0H1011\",äti:\"0N021008110D1P1O\",ätik:\"1P1N\",ätiko:\"1P1G\",ätk:\"0Y08110Y\",ätkö:\"111F\",\"ätkö \":\"113F\",äto:\"1104\",ätt:\"0N0M104N11231C0D\",\"ätt \":\"1023\",ätta:\"1022\",\"ätta \":\"1014\",ättad:\"100F\",ätte:\"0N1I100V110G\",\"ätte \":\"0N1O1002110F\",ättr:\"100U\",ättre:\"100N\",ättä:\"111X\",äty:\"110B\",ätz:\"0N08\",ätä:\"111Q\",\"ätä \":\"112L\",ätö:\"110B\",äu:\"0N0I\",äuf:\"0N06\",äum:\"0N09\",äus:\"0N06\",äv:\"100B111F1P1S\",äva:\"10041103\",ävd:\"1004\",äve:\"100E110S\",ävel:\"111D\",ävi:\"111A1P2O\",ävil:\"11031P33\",ävilo:\"1P3L\",ävl:\"1005\",ävo:\"1P0F\",ävy:\"1104\",ävä:\"113A\",\"ävä \":\"111I\",ävän:\"111G\",ävät:\"111C\",\"ävät \":\"1136\",äw:\"1N06\",äwa:\"1N0D\",äx:\"1006\",äxa:\"1003\",äxe:\"1003\",äxo:\"1004\",äxt:\"1004\",äy:\"11201P09\",\"äy \":\"110A\",äyd:\"110I\",äyk:\"1105\",äym:\"1105\",äyn:\"110T\",äys:\"110J\",äyt:\"115C\",äytt:\"114D\",äyttä:\"117D\",äyty:\"1135\",äytyy:\"115W\",äytä:\"111H\",äyu:\"1P0D\",äz:\"0Y031N1C\",äze:\"0Y061N1E\",\"äze \":\"1N1A\",äzi:\"1N1C\",äzir:\"1N1W\",\"äzir \":\"1N1V\",äß:\"0N02\",ää:\"117Z1C2X\",\"ää \":\"11B6\",ääd:\"110A1C0G\",ääg:\"1C4O\",äägi:\"1C5O\",\"äägi \":\"1C48\",äägib:\"1C1S\",äägid:\"1C2U\",äägin:\"1C2X\",ääh:\"1106\",ääk:\"111A1C2E\",ääki:\"11031C2U\",ääkid:\"1C37\",ääkim:\"1C1H\",ääl:\"112A1C0E\",ääll:\"113J\",äällä:\"1175\",ääm:\"110H1C0B\",ään:\"11BF1C0M\",\"ään \":\"11GF\",äänt:\"1112\",äär:\"111C1C0W\",ääs:\"111H1C0E\",ääst:\"1117\",äästä:\"112E\",äät:\"111E\",ääv:\"1106\",äç:\"1N0Y\",äçe:\"1N1U\",\"äçe \":\"1N2H\",äñ:\"1N0F\",\"äñ \":\"1N0B\",äñm:\"1N0G\",äý:\"1N0F\",äýn:\"1N0D\",äč:\"0Y07\",äčš:\"0Y0I\",äň:\"1N0L\",\"äň \":\"1N0L\",äňm:\"1N0A\",äş:\"1N05\",äť:\"0Y0E\",\"äť \":\"0Y0S\",å:\"0Z3E108X125K\",\"å \":\"0Z6C107P12DU\",åb:\"0Z0H\",åbe:\"0Z0E\",åben:\"0Z0G\",åber:\"0Z0H\",\"åber \":\"0Z0K\",åbn:\"0Z0A\",åbne:\"0Z0N\",åd:\"0Z0L100K120G\",\"åd \":\"0Z0610091205\",åda:\"0Z06100T\",\"åda \":\"100G\",ådan:\"0Z0H100N\",\"ådan \":\"0Z0J100G\",ådd:\"10061202\",åde:\"0Z0G100C1209\",\"åde \":\"0Z0S1007120C\",ådi:\"1209\",ådig:\"120M\",\"ådig \":\"120J\",ådt:\"0Z02\",åe:\"0Z0F1204\",åel:\"0Z021204\",åen:\"0Z0210031202\",ået:\"0Z0J\",\"ået \":\"0Z1G\",åfø:\"1202\",åg:\"0Z04102T\",\"åg \":\"101R\",åga:\"100Y\",\"åga \":\"100O\",åge:\"0Z03100K\",åget:\"100E\",ågl:\"1005\",ågn:\"0Z02\",ågo:\"1041\",ågon:\"103I\",\"ågon \":\"101Z\",ågons:\"100M\",ågont:\"100Z\",ågor:\"100D\",ågot:\"101O\",\"ågot \":\"101O\",ågr:\"100P\",ågra:\"100Y\",\"ågra \":\"100Y\",åh:\"1002\",åk:\"100S120I\",\"åk \":\"100M120H\",åka:\"100S\",\"åka \":\"100Q\",åke:\"100E1206\",åker:\"100D\",åket:\"10041209\",åki:\"1004\",åkt:\"100B\",ål:\"0Z0G1017120J\",\"ål \":\"0Z0C100G120C\",åla:\"100B\",åld:\"1009\",åle:\"0Z091003120C\",ålet:\"0Z0H1003120O\",\"ålet \":\"0Z0L1003120O\",åli:\"100J1202\",ålig:\"100O\",åll:\"101M\",\"åll \":\"100J\",ålla:\"100L\",\"ålla \":\"100H\",ålle:\"100X\",åller:\"100T\",ålm:\"0Z0210021203\",ålt:\"1003\",åmi:\"1003\",ån:\"0Z0J102P120I\",\"ån \":\"1024\",åna:\"100Q\",ånad:\"100O\",ånade:\"100H\",ånb:\"1004\",ånd:\"0Z0F100D120A\",\"ånd \":\"0Z0F1005120B\",ånde:\"0Z0C10021207\",åne:\"0Z0D1004120C\",\"åne \":\"0Z081209\",åned:\"0Z0J120I\",ång:\"1043\",\"ång \":\"101J\",ånga:\"1029\",\"ånga \":\"101Y\",ånge:\"1011\",ången:\"100J\",ånger:\"100H\",ångt:\"100F\",åni:\"1007\",ånn:\"1203\",ånt:\"10021204\",åp:\"1002120F\",åpe:\"1003120G\",åpen:\"120K\",åper:\"120D\",\"åper \":\"120D\",åpn:\"1206\",åpne:\"120F\",år:\"0Z2X1033123Q\",\"år \":\"0Z3H1069124L\",åra:\"100G\",ård:\"0Z07100F1202\",åre:\"0Z0C100I120L\",\"åre \":\"0Z02120I\",åren:\"0Z021008120C\",året:\"0Z0L100F120F\",\"året \":\"0Z0O100E120E\",åri:\"10051202\",årl:\"0Z08120D\",årli:\"0Z0M120X\",årlig:\"0Z0Q120X\",årn:\"1202\",års:\"0Z0610041205\",årt:\"100X1206\",\"årt \":\"1014120H\",ås:\"0Z0810151205\",\"ås \":\"0Z021006\",åsa:\"1004\",åse:\"0Z0310031203\",åsi:\"1004\",åsk:\"0Z061003\",åske:\"0Z0E\",\"åske \":\"0Z0F\",åst:\"0Z02102K1203\",åste:\"103B\",\"åste \":\"103B\",åt:\"0Z03101M120Z\",\"åt \":\"10271205\",åta:\"100E\",\"åta \":\"100G\",åte:\"100U120J\",\"åte \":\"120L\",åten:\"1007120F\",\"åten \":\"1007120F\",åter:\"100V120C\",\"åter \":\"100I120C\",åts:\"1006\",ått:\"0Z03100Z120V\",\"ått \":\"100W121A\",åtte:\"0Z09120Y\",\"åtte \":\"0Z0A120W\",åv:\"10021202\",åvi:\"1203\",æ:\"0T0R0Z32120V134H\",\"æ \":\"0T1C0Z051307\",æb:\"0Z0M\",æbe:\"0Z04\",æbl:\"0Z0N\",æble:\"0Z1R\",\"æble \":\"0Z0M\",æbler:\"0Z0V\",æblet:\"0Z0F\",æbt:\"0Z06\",\"æbt \":\"0Z09\",æc:\"0T0A\",\"æc \":\"0T0B\",æce:\"0T09\",æci:\"0T020Z02\",æcu:\"0T02\",æd:\"0T030Z0I130E\",\"æd \":\"0Z02\",ædd:\"130X\",æde:\"0Z0H\",\"æde \":\"0Z0G\",æder:\"0Z0J\",\"æder \":\"0Z0K\",ædi:\"0T03\",ædt:\"0Z02\",ædv:\"0Z02\",æe:\"0Z06\",æer:\"0Z04\",æet:\"0Z04\",\"æet \":\"0Z0B\",æf:\"0Z031307\",æft:\"0Z03\",æg:\"0Z0P130P\",\"æg \":\"0Z081304\",æge:\"0Z0D\",\"æge \":\"0Z0J\",ægg:\"0Z09\",ægge:\"0Z0N\",æggen:\"0Z0E\",ægt:\"0Z08130K\",ægte:\"0Z0F\",æi:\"1302\",\"æi \":\"0T03\",æis:\"0Z02\",æj:\"1303\",æk:\"0Z0M1311\",\"æk \":\"0Z0E\",æki:\"130H\",ækk:\"0Z0G1306\",ække:\"0Z17\",ækker:\"0Z0M\",ækn:\"130O\",æku:\"130O\",æl:\"0T030Z1E130G\",\"æl \":\"0Z05\",æld:\"0Z0N\",ælde:\"0Z0H\",ældr:\"0Z0X\",ældre:\"0Z15\",æle:\"0Z03\",ælg:\"0Z07\",ælge:\"0Z0I\",æli:\"0T031309\",ælk:\"0Z07\",\"ælk \":\"0Z0H\",æll:\"0Z0B1306\",ælle:\"0Z0Q\",\"ælle \":\"0Z0J\",ælp:\"0Z0J\",\"ælp \":\"0Z0J\",ælpe:\"0Z0X\",\"ælpe \":\"0Z0U\",ælt:\"1304\",ælu:\"0T02\",ælv:\"0Z02\",æm:\"0Z04130E\",æmp:\"0Z04\",æmpe:\"0Z0A\",æn:\"0Z1L130J\",\"æn \":\"1304\",ænd:\"0Z0W1307\",\"ænd \":\"0Z0F\",ænde:\"0Z0Y\",ænder:\"0Z0R\",ændi:\"0Z0C\",ændr:\"0Z0D\",ændre:\"0Z0F\",ændt:\"0Z0B\",æne:\"0Z05\",æng:\"0Z0U\",ænge:\"0Z1L\",\"ænge \":\"0Z0R\",ænger:\"0Z12\",ængs:\"0Z0C\",ænk:\"0Z0F1303\",ænke:\"0Z0P\",ænker:\"0Z0E\",ænkt:\"0Z0D\",ænn:\"1305\",æns:\"0Z04\",ænse:\"0Z09\",æp:\"0T021303\",æpe:\"0T02\",æpp:\"0Z02\",æq:\"0T04\",æqu:\"0T09\",ær:\"0T030Z3H123E132Z\",\"ær \":\"0Z0I120R132M\",æra:\"1315\",\"æra \":\"131E\",ærd:\"0Z0F\",\"ærd \":\"0Z0B\",ærdi:\"0Z0K\",ærdig:\"0Z0L\",ære:\"0T030Z33122U\",\"ære \":\"0Z3X124U\",ærel:\"0Z14\",ærels:\"0Z1D\",æren:\"0T020Z06120A\",ærer:\"0Z1C121D\",\"ærer \":\"0Z18120P\",ærere:\"0Z0B120L\",æres:\"0Z0L120C\",ærest:\"0Z0Q120C\",æret:\"0Z19120C\",\"æret \":\"0Z1I120C\",ærh:\"1203\",ærhe:\"0Z041208\",æri:\"0Z0212051319\",\"æri \":\"131L\",ærin:\"0Z03120C1306\",æring:\"0Z04120C\",ærk:\"0Z0E1305\",\"ærk \":\"0Z08\",ærke:\"0Z0O\",ærl:\"0Z08120D\",ærli:\"0Z0N120Y\",ærlig:\"0Z0R120Y\",ærm:\"0Z051205\",ærme:\"0Z0C120B\",ærn:\"12031306\",ærr:\"0Z05130G\",ærre:\"0Z0C\",ærs:\"0Z031304\",ært:\"0Z0C12131307\",\"ært \":\"0Z0K122K130C\",ærte:\"0Z091206\",ærð:\"130K\",æs:\"0T050Z0Z130I\",\"æs \":\"0Z02\",æse:\"0T030Z0H\",\"æse \":\"0Z0J\",æser:\"0Z0F\",\"æser \":\"0Z0H\",æsi:\"0Z03\",æsk:\"0Z04\",æso:\"0T02\",æss:\"0Z03\",æst:\"0T030Z0P130Y\",\"æst \":\"0Z0C1308\",æste:\"0Z1G\",\"æste \":\"0Z0V\",æsten:\"0Z0S\",æt:\"0T040Z0P132Y\",\"æt \":\"0Z0D1303\",æta:\"0T021307\",æte:\"0T04\",æti:\"131D\",\"æti \":\"1316\",ætl:\"1314\",ætla:\"131A\",ætn:\"0Z0A\",ætni:\"0Z0Q\",ætnin:\"0Z0W\",ætt:\"0Z0G1339\",ætte:\"0Z17\",\"ætte \":\"0Z0Q\",ætter:\"0Z0G\",ætti:\"1336\",\"ætti \":\"1335\",ættir:\"1339\",ættu:\"131E\",ætu:\"130M\",æv:\"0T020Z06\",æve:\"0Z05\",ævn:\"0Z02\",æð:\"1312\",æði:\"131A\",æðu:\"130J\",ç:\"0L0I0P1H1F611N5S\",\"ç \":\"1F3F1N4B\",ça:\"0L0W0P1G1F3B1N4D\",\"ça \":\"0L3I0P3G1F1F1N20\",\"ça-\":\"0P03\",çab:\"1F0E\",çad:\"0P0E1F02\",çag:\"1N20\",çaga:\"1N2F\",çagal:\"1N1Z\",çai:\"0L0W\",çais:\"0L1D\",\"çais \":\"0L23\",çak:\"1F0E1N0G\",çal:\"03021F4S1N19\",çalı:\"1F4J\",çalış:\"1F5V\",çam:\"0P0B1F06\",çan:\"0L020P071F0C1N29\",\"çan \":\"1F021N2N\",çar:\"0P0U1F0F1N0Q\",\"çar \":\"0P0Q1F02\",ças:\"0P131F06\",\"ças \":\"0P1B\",çay:\"1F0B\",çağ:\"1F0F\",çb:\"1F0J\",çbi:\"1F1H\",çbir:\"1F1P\",\"çbir \":\"1F23\",çd:\"1N0L\",çdi:\"1N0H\",çdy:\"1N0M\",çe:\"1F351N3J\",\"çe \":\"1F0C1N3X\",çek:\"1F4G1N0W\",çekt:\"1F33\",çekte:\"1F3U\",çen:\"1F0Z1N1H\",\"çen \":\"1F0S1N15\",çenli:\"1N14\",çer:\"1F0R1N0A\",çes:\"1F0F\",çev:\"1F0L\",çeğ:\"1F0D\",çi:\"1F5A1N55\",\"çi \":\"1F091N10\",çif:\"1F0A\",çil:\"1F0B1N0V\",çili:\"1F021N18\",çim:\"1F0J\",çin:\"1FAH1N76\",\"çin \":\"1FAR1N9L\",çind:\"1F0W1N0D\",çinde:\"1F15\",çir:\"1F0X1N0R\",çiy:\"1F0A\",çiç:\"1F0C\",çk:\"1F041N09\",çka:\"1N0G\",çl:\"1F0O1N0I\",çla:\"1F0V1N0C\",çlu:\"1F0B\",çly:\"1N0G\",çlü:\"1F0B\",çm:\"1F0K1N0K\",çma:\"1F0E1N0G\",çme:\"1F0W1N0J\",ço:\"0L060P0O1F4H\",\"ço \":\"0P1V\",çoc:\"1F24\",çocu:\"1F2G\",çocuk:\"1F2U\",çok:\"1F95\",\"çok \":\"1FA9\",çon:\"0L0Q\",\"çon \":\"0L0V\",ços:\"0P0F\",çou:\"0P0K\",\"çou \":\"0P0O\",çoğ:\"1F0F\",çs:\"1F02\",çt:\"1F0M\",çti:\"1F0S\",çtı:\"1F0J\",çu:\"0L031F051N04\",\"çu \":\"0L091F02\",çy:\"1N2S\",\"çy \":\"1N0R\",çyk:\"1N27\",çyka:\"1N14\",çykar:\"1N17\",çyl:\"1N1D\",çyly:\"1N13\",çylyk:\"1N12\",çyn:\"1N0L\",çã:\"0P18\",\"çã \":\"0P05\",ção:\"0P55\",\"ção \":\"0P67\",çãs:\"0P03\",çä:\"1N09\",çõ:\"0P0A\",çõe:\"0P1B\",ções:\"0P1L\",\"ções \":\"0P20\",çö:\"1F091N0F\",çör:\"1N0B\",çöz:\"1F0F1N0E\",çúc:\"0P04\",çü:\"1F0I1N0A\",çük:\"1F0R\",çün:\"1F0C\",çý:\"1N0A\",çýä:\"1N0G\",çı:\"1F1Y\",\"çı \":\"1F0C\",çık:\"1F3G\",çıka:\"1F16\",çıkar:\"1F19\",çıl:\"1F0C\",çın:\"1F0D\",çır:\"1F0B\",è:\"0L1A0Q2O\",\"è \":\"0Q6A\",èbr:\"0L04\",èc:\"0L04\",èce:\"0L0F\",ède:\"0L06\",èg:\"0L03\",ège:\"0L06\",ègl:\"0L07\",èle:\"0L05\",èm:\"0L08\",ème:\"0L15\",\"ème \":\"0L1K\",èn:\"0L02\",ène:\"0L0C\",èqu:\"0L06\",èr:\"0L19\",ère:\"0L64\",\"ère \":\"0L87\",èren:\"0L0Q\",èrent:\"0L19\",ères:\"0L10\",\"ères \":\"0L1N\",ès:\"0L0R\",\"ès \":\"0L3I\",\"ès-\":\"0L06\",èt:\"0L06\",ète:\"0L0S\",ètr:\"0L05\",èv:\"0L04\",ève:\"0L0G\",èvr:\"0L05\",éa:\"0L060S5I\",éab:\"0L04\",éac:\"0S10\",éach:\"0S13\",\"éach \":\"0S2T\",éad:\"0S26\",\"éad \":\"0S1P\",éag:\"0S0I\",éal:\"0L0B0S1N\",\"éal \":\"0S1V\",éam:\"0S13\",éamh:\"0S16\",\"éamh \":\"0S4R\",éan:\"0L060O020S6V\",\"éan \":\"0L020S11\",éana:\"0S4N\",éanam:\"0SCK\",éanan:\"0S2K\",éanf:\"0S1G\",éanfa:\"0S5X\",éann:\"0S0V\",éant:\"0L050S0Q\",éanta:\"0S2T\",éar:\"0S3F\",\"éar \":\"0S11\",éard:\"0S0Z\",\"éard \":\"0S3S\",éarl:\"0S1C\",éarla:\"0S58\",éas:\"0S10\",éb:\"0L050U02140Q\",éba:\"0L05\",ébe:\"140V\",ében:\"141N\",\"ében \":\"141Q\",ébr:\"0L051407\",ébu:\"0L06\",ébé:\"0L05\",éc:\"0L180O030P040U021402\",éca:\"0L05\",éce:\"0L0D\",éch:\"0L0Z\",éci:\"0L160P08\",écl:\"0L0C\",éco:\"0L1S\",écol:\"0L19\",école:\"0L1U\",écou:\"0L14\",écout:\"0L17\",écr:\"0L13\",écri:\"0L1N\",écrit:\"0L17\",éct:\"0O030U03\",écu:\"0L0G0P05\",éd:\"0L0A0O040P070U03140Z\",\"éd \":\"140I\",éde:\"0L0D140P\",édi:\"0L0M0O0C0P0U1403\",édic:\"0L0B0O0G0P0I\",édu:\"0L08\",édé:\"0L04\",ée:\"0L1I\",\"ée \":\"0L5J\",éen:\"0L03\",ées:\"0L1R\",\"ées \":\"0L2W\",éf:\"0L090O030U021308\",éfa:\"0L04\",éfe:\"0L05\",éfi:\"0L081307\",éfl:\"0L07\",éfo:\"0O0B\",éfè:\"0L08\",éfé:\"0L0A\",ég:\"0L0B13AV146T\",\"ég \":\"13L11455\",éga:\"0L0H\",ége:\"0L05143V\",\"ége \":\"141O\",éged:\"142B\",\"éged \":\"141V\",égem:\"141E\",\"égem \":\"1417\",éges:\"1419\",\"éges \":\"140Z\",éget:\"141O\",\"éget \":\"141G\",égi:\"0L070P03140R\",égl:\"0L071402\",égo:\"0L06\",égr:\"0L02140D\",égu:\"0L07\",égy:\"140N\",\"égy \":\"1415\",égé:\"0L03140M\",égü:\"140F\",éh:\"0U1D0Y0O140K\",éhe:\"0L02140C\",ého:\"0U2N0Y1R\",\"ého \":\"0U4A0Y30\",éhá:\"140F\",éhány:\"1415\",éi:\"0O090S5G1402\",\"éi \":\"0S0N\",éid:\"0S4G\",éidh:\"0S0O\",\"éidh \":\"0S2T\",éidi:\"0S45\",éidir:\"0SF6\",éig:\"0S1Z1402\",éigi:\"0S1J\",éigin:\"0S5X\",éil:\"0S17\",éile:\"0S1C\",\"éile \":\"0S58\",éim:\"0S12\",\"éim \":\"0S0X\",éin:\"0S2T\",\"éin \":\"0S24\",éinn:\"0S0V\",\"éinn \":\"0S2T\",éir:\"0S3D\",\"éir \":\"0L020S1P\",éire:\"0S18\",éirea:\"0S32\",éiri:\"0S0X\",éirig:\"0S32\",éis:\"0L020O0T0P030S1J\",\"éis \":\"0O150P040S0T\",éist:\"0S0V\",éit:\"0S0I\",éj:\"0L0A0O02140D\",éja:\"0O06\",éje:\"0L0B1402\",éjo:\"0L05\",éjà:\"0L0W\",\"éjà \":\"0L1H\",ék:\"0U0E130A1432\",\"ék \":\"0U031304142O\",éke:\"140X\",ékk:\"130H1402\",éko:\"0U07140P\",éks:\"140C\",él:\"0L0I0O1W0U02130N146U\",\"él \":\"0O5Y1306143F\",éla:\"0L06130H1409\",éle:\"0L0D0U031434\",élek:\"1418\",\"élek \":\"1417\",élem:\"141R\",\"élem \":\"1411\",élet:\"143Q\",élete:\"141I\",éli:\"0L0G0O020P0313091407\",élj:\"140H\",élk:\"140M\",élkü:\"141I\",élkül:\"141M\",éln:\"1411\",élni:\"141M\",\"élni \":\"141O\",élo:\"0L0C1402\",élt:\"13091410\",ély:\"1418\",élye:\"141A\",élè:\"0L0C\",élé:\"0L0X1406\",élép:\"0L0R\",éléph:\"0L1A\",ém:\"0L0A0O020P0S0U1A0Y0D1414\",\"ém \":\"0P3D0U1M0Y09140U\",éma:\"0L0B0U031406\",éme:\"0L0D140G\",émi:\"0L0A1402\",émo:\"0L0E0O04\",ému:\"0U0K0Y0I\",\"ému \":\"0U0X0Y0W\",émá:\"140F\",émé:\"0L03\",\"én \":\"0O200R080S2W0Z07100412051440\",éna:\"0L070U03\",énd:\"0O05\",éne:\"0L070O031413\",ének:\"141K\",éni:\"0L0B0P021407\",éno:\"0L080U0C\",ént:\"0O071413\",\"ént \":\"142H\",ény:\"1436\",\"ény \":\"141P\",énye:\"1431\",ények:\"1410\",énz:\"141B\",énzt:\"1416\",\"énzt \":\"1411\",éné:\"0L0E1403\",éo:\"0L02\",éor:\"0L04\",ép:\"0L0P0U05142H\",\"ép \":\"140T\",épa:\"0L0W\",épar:\"0L13\",épe:\"0L0A0U0A141A\",éph:\"0L0G\",épho:\"0L0O\",épi:\"0L06\",épl:\"0L05\",épo:\"0L120O020P04\",épon:\"0L13\",épp:\"140O\",éppe:\"1417\",éppen:\"1417\",épr:\"0L08\",épu:\"0L06\",épé:\"0L041406\",éq:\"0L03\",équ:\"0L0F\",ér:\"0L140O080P0A0U030Y080Z02134Z1481\",\"ér \":\"0U020Z03139V140R\",éra:\"0L150O040P020Y07\",éran:\"0L0O\",érc:\"0O040P04\",érd:\"0O03141X\",érde:\"143I\",érdek:\"141P\",érdez:\"141H\",érdé:\"141A\",érdés:\"141C\",ére:\"0L180P03142E\",\"ére \":\"141P\",érem:\"141T\",\"érem \":\"141Q\",éren:\"0L0S1405\",éres:\"0L0P1402\",érf:\"140J\",érfi:\"141A\",éri:\"0L2A0O060P0V13031409\",érie:\"0L1H0P02\",érieu:\"0L1A\",érit:\"0L15\",érité:\"0L18\",érj:\"140J\",érk:\"140H\",érkez:\"1410\",érl:\"140L\",érle:\"141G\",érlek:\"141A\",érm:\"0O02\",érn:\"130J140D\",éro:\"0L0I0O02\",ért:\"1304145V\",\"ért \":\"1307148P\",érte:\"144L\",értem:\"1418\",érz:\"140P\",éré:\"0L0H1404\",és:\"0L110O130P070U031303147V\",\"és \":\"0L2R0O340P0M146O\",ésa:\"0L040O02\",ése:\"0L0R0O02141C\",ésen:\"0L0U1408\",ésent:\"0L1A\",ési:\"0L0O0O020P021407\",éso:\"0L0P\",ésol:\"0L0O\",éss:\"0P041407\",ést:\"0O0B0P020U061305140Z\",\"ést \":\"0U0913071427\",ésu:\"0L08\",ész:\"143Z\",\"ész \":\"1439\",észe:\"142H\",ésé:\"140H\",éső:\"140C\",ét:\"0L280O030P030U0B0Y030Z0213101445\",\"ét \":\"0Z0313091440\",éta:\"0L5G0U031402\",étai:\"0L7P\",étaie:\"0L1E\",étais:\"0L2O\",était:\"0L8V\",éte:\"0L10141V\",étel:\"141M\",éter:\"0L0E1418\",éti:\"0L0P0O050P061402\",éto:\"0L0C0O020P020U0G\",\"éto \":\"0U0R\",étr:\"0L0Q0P041405\",étra:\"0L0R\",étran:\"0L19\",étt:\"131W1407\",\"étt \":\"1314\",étu:\"0L0T\",étud:\"0L1D\",étudi:\"0L1Z\",étá:\"140B\",été:\"0L2C\",\"été \":\"0L3R\",éu:\"0L030P031302\",\"éu \":\"0P0E1305\",éun:\"0L07\",éus:\"0L0B\",év:\"0L0B0U03141N\",éva:\"0L04140E\",éve:\"0L0H141G\",évi:\"0L0H1402\",évo:\"0L08\",évé:\"0L041408\",éx:\"0O03\",éxi:\"0O080P02\",éz:\"0U02141F\",\"éz \":\"140M\",éze:\"140H\",ézn:\"140B\",éé:\"0R05\",één:\"0R07\",\"één \":\"0R0R\",éð:\"1309\",\"éð \":\"130G\",éč:\"0U02\",éž:\"0U06\",\"éž \":\"0U0D\",ê:\"010H0L0W0P2M\",\"ê \":\"01160P43\",\"ê-\":\"0P06\",\"ê-l\":\"0P0O\",\"ê-lo\":\"0P0K\",\"ê-m\":\"0P03\",êba:\"0P04\",êc:\"0L02\",êch:\"0L0C\",êm:\"0L0B0P08\",\"êm \":\"0P0X\",ême:\"0L1M0P02\",\"ême \":\"0L2F\",ên:\"0P0I\",ênc:\"0P1L\",ênci:\"0P1Y\",ência:\"0P29\",ênd:\"0P04\",êni:\"0P0C\",êr:\"010G\",êre:\"010M\",êrel:\"010Z\",êreld:\"010P\",ês:\"0P1J\",\"ês \":\"0P6H\",êt:\"0L1I\",\"êt \":\"0L0E\",ête:\"0L3P\",\"ête \":\"0L25\",êtes:\"0L33\",\"êtes \":\"0L3I\",\"êtes-\":\"0L1T\",êtr:\"0L31\",être:\"0L52\",\"être \":\"0L84\",êts:\"0L03\",êté:\"0L08\",êv:\"0L02\",êve:\"0L09\",ë:\"010B0R05\",\"ë \":\"010A0R0B\",ël:\"010J0L02\",\"ël \":\"010B0L0D\",ëls:\"010L\",\"ëls \":\"011D\",ën:\"01040R04\",\"ën \":\"0R05\",ër:\"0R02\",ì:\"0Q0F\",\"ì \":\"0Q10\",\"í \":\"0O1Z0P030SAX0UFG0Y5P138Z\",ía:\"0O4P0P051304\",\"ía \":\"0OBL0P021304\",íai:\"0O02\",íam:\"0O0F0P0H\",íamo:\"0O0N0P0K\",íamos:\"0O0V0P0O\",ían:\"0O0S1304\",\"ían \":\"0O18\",ías:\"0O23\",\"ías \":\"0O37\",íb:\"0O020U0Y0Y051303\",íbi:\"0U0O\",íbil:\"0U0W\",íbl:\"0O030P02\",íbí:\"0U0S\",\"íbí \":\"0U17\",íc:\"0O0D0P0F0S0B0U1R0Y0D\",\"íc \":\"0U0T0Y08\",íca:\"0P04\",íce:\"0P020U0N\",\"íce \":\"0U10\",ích:\"0P020S0Y0U0W0Y0B\",\"ích \":\"0U180Y0D\",íche:\"0P030S0Z\",\"íche \":\"0P030S2T\",íci:\"0O0I0P1J0U0C0Y081402\",ícia:\"0P0M\",ícil:\"0O0S0P0P\",\"ícil \":\"0O0Y0P0V\",ício:\"0P0I\",íct:\"0O020U0M\",\"íct \":\"0U0Z\",ícu:\"0O0L0P04\",ícul:\"0O0W0P05\",ícula:\"0O0T0P03\",ící:\"0U0E\",íd:\"0O070P060S090U0Y0Y0L13031402\",\"íd \":\"0S0I1402\",ída:\"0O030P070U0E0Y07\",íde:\"0O030P060U020Y1A\",\"íde \":\"0Y11\",ídi:\"0P030U0A\",ídl:\"0U0M\",ído:\"0O0G0P09\",\"ído \":\"0O0M0P09\",\"íe \":\"0O02\",íf:\"0O03130O\",ífi:\"0O070P05130K\",íg:\"0O031304140Q\",\"íg \":\"140D\",íga:\"0O031303\",íge:\"0O030P02\",ígr:\"0O02\",így:\"140O\",\"így \":\"141L\",íh:\"0U0D0Y08\",ího:\"0U0H\",\"ího \":\"0U0R\",íj:\"0U070Y051403\",ík:\"0U1K0Y0V131E\",\"ík \":\"0U0Y0Y1D1308\",íka:\"0U0O0Y081318\",\"íkar \":\"131W\",íke:\"0U0D\",íki:\"130J\",íku:\"0U05130G\",íká:\"0U0P\",\"íká \":\"0U0T\",íl:\"0P050S2Y0U0T0Y0K130V1404\",\"íl \":\"0S7V0U05130L\",íli:\"0P0K0S0P0U0U0Y1213061403\",ília:\"0P0L1403\",\"ília \":\"0P0Q1402\",ílim:\"0S0V\",íliš:\"0U100Y1I\",\"íliš \":\"0U1E0Y1U\",ím:\"0O030P040S0I0U6R0Y5813191405\",\"ím \":\"0S130UAS0YAM\",íma:\"0U0J0Y0R1326\",\"íma \":\"0Y09132N\",ímb:\"0P03\",íme:\"0O020U1I0Y1L1404\",\"íme \":\"0U2F0Y2P1404\",ími:\"0O060P080U04130F\",ín:\"0O090P0C0S180U0T0Y0R1335140J\",\"ín \":\"0O0H0S2F0U040Y0H13201402\",ína:\"0O020P030U080Y0N131U1404\",\"ína \":\"0P020U080Y0R132F1402\",índ:\"0P04\",íne:\"0O040U030Y061403\",íng:\"0P0X\",íngu:\"0P13\",íngua:\"0P1D\",íni:\"0O020P070S0I0U02130E\",ínu:\"0U031327\",\"ínu \":\"0U051317\",ínum:\"132B\",\"ínum \":\"134U\",íná:\"0U0K1403\",ío:\"0O0D0S5T\",\"ío \":\"0O13\",íob:\"0S26\",íobh:\"0S2J\",\"íobh \":\"0S7Z\",íoc:\"0S35\",íoch:\"0S3P\",\"íoch \":\"0S2K\",íocha:\"0S2K\",íocht:\"0S6U\",íod:\"0P03\",íol:\"0S0N\",íom:\"0S3D\",íomh:\"0S3P\",íomha:\"0SAR\",íomhc:\"0S2K\",íon:\"0S4Y\",\"íon \":\"0S1C\",íonn:\"0S4B\",\"íonn \":\"0SFI\",íor:\"0S1G\",\"íor \":\"0S1A\",íos:\"0O040S2H\",\"íos \":\"0O070S2L\",íp:\"0U040Y041402\",ípi:\"0O020P04\",íqu:\"0O020P02\",ír:\"0O050P030S0P0U0M0Y081306141H\",\"ír \":\"0O080S0N0U080Y0413061409\",íra:\"0P030U0B\",íre:\"0S170U051407\",\"íre \":\"0S0X\",íri:\"0O020P060Y06\",írn:\"0U02140C\",íro:\"0U030Y05140C\",írt:\"140M\",íru:\"0P030U061402\",ís:\"0O0F0P0A0S0G0U130Y1R130O1404\",\"ís \":\"0O0Q0P0L0S131304\",ísa:\"0U020Y171305\",ísal:\"0Y17\",\"ísal \":\"0Y13\",íse:\"0O060P060U03\",ísi:\"0O0A0P05130B\",íss:\"0P06\",íst:\"0O060P060U1M0Y0B\",\"íst \":\"0U15\",ísť:\"0Y2F\",\"ísť \":\"0Y45\",ít:\"0O050P040S0D0U460Y26130Y143K\",\"ít \":\"0U3V140H\",íta:\"0O020U0E0Y2B130M140N\",ítal:\"0U030Y171309\",\"ítal \":\"0U030Y0X\",ítan:\"0Y0B141L\",ítani:\"1418\",íte:\"0S0W0U1U0Y2F141F\",\"íte \":\"0U1X0Y44\",ítea:\"0S0X\",ítear:\"0S3S\",ítel:\"0U10\",íten:\"141N\",íteni:\"141D\",ítet:\"141N\",ített:\"141Q\",íti:\"0O0B0P0F0U0B0Y0S130L1404\",íto:\"0U07140Z\",ítot:\"1426\",ított:\"142A\",ítr:\"0U0R\",ítra:\"0U15\",\"ítra \":\"0U1L\",íts:\"140W\",ítu:\"0O020P02130H\",ítá:\"0U05140G\",ítás:\"1416\",íté:\"140G\",ítí:\"0U0D\",ító:\"140G\",ítě:\"0U0M\",íu:\"130O\",\"íu \":\"131D\",ív:\"0P0B0U1K0Y0H141E\",íva:\"0U140Y0L1402\",íval:\"0U0Y\",\"íval \":\"0U0T\",\"ívat \":\"0U0Y\",íve:\"0P180U0J140M\",ível:\"0P1B\",\"ível \":\"0P1O\",íves:\"1416\",ívi:\"0P030U0A0Y0I\",ívk:\"0U0F\",ívá:\"0U0O140F\",íz:\"0U0N0Y08140U\",\"íz \":\"140H\",íze:\"0U0U1404\",\"íze \":\"0U101404\",íð:\"130V\",íða:\"130Z\",íðu:\"130H\",íó:\"1305\",íþ:\"1302\",íč:\"0U0C0Y06\",íď:\"0Y02\",íľ:\"0Y04\",íř:\"0U08\",íš:\"0U240Y1V\",\"íš \":\"0U3K0Y3J\",íše:\"0U090Y0R\",íšt:\"0U0D0Y08\",íž:\"0U0I0Y06\",î:\"0L071550\",îi:\"150G\",\"îi \":\"151R\",îl:\"150A\",\"îl \":\"1516\",îm:\"1519\",îmb:\"150I\",îmi:\"152Y\",\"îmi \":\"154U\",împ:\"151M\",în:\"0L03159M\",\"în \":\"15FS\",îna:\"1518\",înain:\"151N\",înc:\"156O\",înce:\"155G\",încep:\"1531\",încer:\"152I\",înch:\"151I\",închi:\"151Q\",încă:\"152F\",\"încă \":\"152J\",înd:\"1515\",îne:\"0L0C1503\",îng:\"150V\",îns:\"150W\",înt:\"157W\",înto:\"152U\",într:\"1566\",\"într-\":\"152Z\",între:\"154Y\",întâ:\"1540\",întâl:\"151R\",întâm:\"152A\",înv:\"151D\",înț:\"151C\",înțe:\"1527\",înțel:\"152R\",ît:\"0L0B\",\"ît \":\"0L0X\",îte:\"0L06\",îtr:\"0L0F\",îţ:\"1502\",îș:\"1506\",își:\"150N\",îț:\"150A\",îți:\"1516\",\"îți \":\"151Y\",ïn:\"0R03\",ïnt:\"0R02\",ð:\"13KK\",\"ð \":\"13QH\",ða:\"134Q\",\"ða \":\"1357\",ðal:\"130I\",ðan:\"131W\",\"ðan \":\"131Y\",ðar:\"131U\",\"ðar \":\"131S\",ðas:\"130P\",ðb:\"1306\",ðd:\"1303\",ðe:\"1304\",ðf:\"1307\",ðg:\"1305\",ðh:\"1303\",ði:\"137T\",\"ði \":\"138W\",ðin:\"133X\",\"ðin \":\"131A\",ðina:\"1315\",\"ðina \":\"132D\",ðinn:\"131Z\",ðinni:\"132C\",ðinu:\"1313\",ðir:\"132I\",\"ðir \":\"133H\",ðis:\"1315\",ðist:\"131L\",\"ðist \":\"1339\",ðið:\"131B\",\"ðið \":\"1326\",ðj:\"1309\",ðk:\"1303\",ðl:\"130T\",ðla:\"1310\",ðlag:\"131D\",ðlagð:\"132W\",ðm:\"1302\",ðn:\"1306\",ðr:\"130L\",ðs:\"130P\",ðsk:\"130H\",ðt:\"1302\",ðu:\"1386\",\"ðu \":\"137M\",ðum:\"1325\",\"ðum \":\"133C\",ðun:\"130L\",ður:\"1384\",\"ður \":\"13B8\",ðv:\"130C\",ðve:\"130K\",ñ:\"0O0X1N4D\",\"ñ \":\"1NAD\",ña:\"0O131N1U\",\"ña \":\"0O141N3B\",ñad:\"0O0A\",ñal:\"0O05\",ñam:\"0O02\",ñan:\"0O1E\",ñana:\"0O1Y\",\"ñana \":\"0O2G\",ñar:\"0O0B\",ñas:\"0O0C\",ñd:\"1N0D\",ñda:\"1N0B\",ñe:\"0O031N0A\",\"ñe \":\"1N0H\",ñec:\"0O03\",ñer:\"0O05\",ñi:\"1N0T\",\"ñi \":\"1N0M\",ñiz:\"1N0Y\",ñk:\"1N0C\",ñky:\"1N0C\",ñl:\"1N0F\",ñle:\"1N0I\",ñm:\"1N0P\",ñmi:\"1N0S\",\"ñmi \":\"1N13\",ñmy:\"1N0L\",ño:\"0O1H1N05\",\"ño \":\"0O28\",ñok:\"1N0B\",ñol:\"0O0A\",ñor:\"0O0B\",ños:\"0O25\",\"ños \":\"0O39\",ñs:\"1N05\",ñy:\"1N0U\",\"ñy \":\"1N0C\",ñyz:\"1N0O\",ñyş:\"1N0N\",ñz:\"1N08\",ñí:\"0O02\",ñía:\"0O05\",ñó:\"0O02\",\"ñó \":\"0O05\",ñü:\"1N07\",ñün:\"1N0B\",ò:\"0Q0T\",\"ò \":\"0Q1Z\",\"ó \":\"0O410P0F0S1G130O143D\",óa:\"13041406\",ób:\"130214101A0R\",óba:\"140O\",óban:\"1417\",\"óban \":\"1419\",óbá:\"140T\",óbál:\"1421\",óc:\"0P030S0E14041A0Q\",óca:\"0S12\",ócai:\"0S0Z\",ócair:\"0S41\",óci:\"0P051A0Q\",ócu:\"0P06\",ód:\"0O020S071303140M1A0P\",\"ód \":\"14041A14\",ódi:\"0O060P041405\",óf:\"130C1403\",óg:\"0O020P030S0L130B140E1A0J\",\"óg \":\"0S1C13081A05\",ógi:\"0O050P0D1403\",ógł:\"1A0Z\",óh:\"13031403\",ói:\"0P020S1W13031403\",\"ói \":\"0P041403\",óid:\"0S1G\",óidh:\"0S1C\",\"óidh \":\"0S5G\",óig:\"0S0I\",óir:\"0S24\",\"óir \":\"0S1V\",óis:\"0P020S0M\",ój:\"140A1A1P\",\"ój \":\"1A2V\",ók:\"131I140Q1A02\",\"ók \":\"131D140F\",óki:\"130P1A04\",ókin:\"1314\",ól:\"0O0A0P040S0M131W143B1A0G\",\"ól \":\"0S10130A144S1A0C\",óla:\"0O060P080S0R131A140M\",óle:\"0O020P031A08\",óli:\"0O030P04130R1A02\",ólk:\"1316\",\"ólk \":\"131A\",ólo:\"0O0N0P021A02\",\"ólo \":\"0O0W\",óm:\"0O0J130J1407\",óma:\"0O0313091403\",óme:\"0O04\",ómi:\"0O041304\",ómo:\"0O1G\",\"ómo \":\"0O23\",ón:\"0O330S180U020Y07130X140I\",\"ón \":\"0O8F0S150Y04130B1407\",óna:\"0S2R130D140I\",ónaí:\"0S2N\",\"ónaí \":\"0S9A\",ónd:\"0O18\",ónde:\"0O1V\",\"ónde \":\"0O2G\",óni:\"0O070P0313051402\",óp:\"0P050Y0413071406\",ópi:\"0P03\",ópr:\"0P0H\",ópri:\"0P0L\",óqu:\"0P04\",ór:\"0O020P0B0S0U0Y02131G140X1A1O1L07\",\"ór \":\"0S1J131J1A08\",óra:\"0S0M130A140O1A0B\",\"óra \":\"130914161A0E\",óre:\"13031A0T\",óri:\"0O020P1813071404\",ória:\"0P0W\",\"ória \":\"0P10\",ório:\"0P0I\",óry:\"1A0X\",órá:\"140M\",ós:\"0O030P0V0S0J130T140O1A08\",\"ós \":\"0O020P3J0S0V13081409\",ósi:\"0O030P031309\",óst:\"0S0I130I14031A09\",ósz:\"140D\",ót:\"0P020S0A0Y02131F141A1A07\",\"ót \":\"1307141I\",óta:\"1309140J\",\"óta \":\"130C141C\",óti:\"0O020P09130F\",ótt:\"131L\",\"ótt \":\"131P\",óu:\"1302\",óv:\"0O021305140B\",óva:\"1304140D\",óve:\"0O040P041402\",óvi:\"0O041303\",ów:\"1A3R\",\"ów \":\"1A46\",ówi:\"1A2M\",óx:\"0O030P04\",óxi:\"0O0A0P0J\",óxim:\"0O0E0P0N\",óz:\"0U02140B1A02\",óð:\"131R\",\"óð \":\"130T\",óða:\"130Z\",óði:\"130L\",óðu:\"1316\",óður:\"131M\",\"óður \":\"132Z\",óþ:\"1302\",ół:\"1A0O\",óź:\"1A0E\",óźn:\"1A0T\",óż:\"1A0N\",ô:\"0L070P060Y1V\",\"ô \":\"0P03\",ôb:\"0Y07\",ôbe:\"0Y0G\",\"ôbec \":\"0Y0Z\",ôc:\"0Y0E\",ôcť:\"0Y0Y\",\"ôcť \":\"0Y1M\",ôd:\"0Y02\",ôde:\"0P04\",ôj:\"0Y13\",\"ôj \":\"0Y1W\",ôjd:\"0Y0Q\",ôjde:\"0Y16\",ôk:\"0Y02\",ôl:\"0L020Y0H\",\"ôl \":\"0Y0G\",ôle:\"0L090Y0I\",ôleži:\"0Y12\",ôm:\"0P02\",ôme:\"0L030P03\",ômi:\"0P03\",ôn:\"0P06\",ôni:\"0P0Q\",ônib:\"0P0I\",ôpi:\"0L05\",ôr:\"01040Y09\",\"ôr \":\"0P030Y0L\",ôre:\"0107\",\"ôre \":\"010F\",ôs:\"0Y0A\",\"ôs \":\"0P05\",ôso:\"0Y0E\",ôt:\"0L0B\",\"ôt \":\"0L0U\",ôte:\"0L09\",ôté:\"0L0B\",ôv:\"0Y0C\",ôve:\"0Y0E\",ôvo:\"0Y0H\",ôň:\"0Y03\",ôž:\"0Y23\",ôže:\"0Y4V\",\"ôže \":\"0Y1Y\",ôžem:\"0Y45\",\"ôžem \":\"0Y3Z\",ôžeme:\"0Y18\",ôžet:\"0Y11\",ôžete:\"0Y1A\",ôžeš:\"0Y1J\",\"ôžeš \":\"0Y1X\",õ:\"0P071C4G\",õb:\"1C0L\",õbe:\"1C11\",õber:\"1C19\",\"õber \":\"1C34\",õbr:\"1C0R\",õbra:\"1C0Y\",õd:\"1C09\",õde:\"1C0N\",\"õde \":\"1C0Q\",õe:\"0P0I1C0I\",\"õe \":\"0P03\",õen:\"1C0H\",ões:\"0P251C0R\",\"ões \":\"0P2L\",õest:\"1C0S\",õesti:\"1C1S\",õg:\"1C03\",õh:\"1C0O\",õhi:\"1C0E\",õhj:\"1C0F\",õht:\"1C14\",õhtu:\"1C1D\",õhtul:\"1C1H\",õhtus:\"1C1E\",õi:\"1C4E\",\"õi \":\"1C2A\",õib:\"1C0R\",\"õib \":\"1C0O\",õid:\"1C0H\",õig:\"1C45\",õige:\"1C18\",\"õige \":\"1C1S\",õigi:\"1C0Q\",õigu:\"1C34\",õigus:\"1C7J\",õik:\"1C4G\",\"õik \":\"1C4B\",õim:\"1C11\",õima:\"1C0V\",õimal:\"1C22\",õin:\"1C0Q\",\"õin \":\"1C0V\",õis:\"1C0S\",õist:\"1C0X\",õit:\"1C15\",õiv:\"1C0D\",õl:\"1C0I\",õle:\"1C0G\",õn:\"1C10\",õna:\"1C0V\",õnd:\"1C0B\",õne:\"1C0O\",õnn:\"1C18\",õnne:\"1C1F\",õnnel:\"1C1L\",õnu:\"1C0D\",õp:\"1C1K\",õpe:\"1C1O\",õpet:\"1C21\",õpeta:\"1C4V\",õpi:\"1C15\",õpp:\"1C1R\",õppi:\"1C1U\",õppid:\"1C29\",õppim:\"1C1H\",õpr:\"1C0K\",õpu:\"1C0J\",õr:\"1C0M\",õrd:\"1C0M\",õrds:\"1C0L\",õrg:\"1C0G\",õrv:\"1C0N\",õrva:\"1C0R\",õs:\"1C06\",õsi:\"1C0J\",õt:\"1C11\",õta:\"1C0V\",\"õta \":\"1C0O\",õtl:\"1C0K\",õtle:\"1C0Q\",õtt:\"1C1E\",õu:\"1C0Y\",õud:\"1C0P\",õun:\"1C0Z\",õuna:\"1C0Z\",õus:\"1C15\",õv:\"1C04\",õõ:\"1C03\",ö:\"0N15107K112B133T144T1C1E1F3Z1N661P9F\",\"ö \":\"1006111A13091C081P28\",öa:\"1002\",öar:\"1003\",öb:\"140U\",öbb:\"141J\",\"öbb \":\"141P\",öc:\"0N0G10061404\",öch:\"0N0P\",öcht:\"0N1J\",öchte:\"0N2L\",öck:\"100H\",öcke:\"100N\",öcker:\"100N\",öd:\"0N02100T11061302140E1C0C1F0H1P7O\",\"öd \":\"100K14061C0U1P82\",öda:\"100L1P0J\",\"öda \":\"100F\",ödd:\"100B1304\",öde:\"100K1F0W\",ödi:\"100214061P2X\",ödik:\"140F1P33\",\"ödik \":\"140F1P1R\",ödiko:\"1P1J\",ödo:\"1P2N\",ödom:\"1P1E\",\"ödom \":\"1P1A\",öds:\"1003\",ödv:\"1003\",ödy:\"1105\",ödä:\"110I\",ödö:\"14031P0I\",ödü:\"1F0F\",öe:\"1C08\",öel:\"1C0U\",öeld:\"1C0R\",öelda:\"1C1L\",öf:\"0N07130S1F021P3Y\",öff:\"0N08\",öfi:\"1P1E\",öfik:\"1P16\",\"öfik \":\"1P17\",öfo:\"1P5B\",öfob:\"1P2O\",\"öfob \":\"1P2V\",öfol:\"1P13\",\"öfol \":\"1P19\",öfom:\"1P29\",\"öfom \":\"1P21\",öfu:\"1311\",ög:\"0N0B100O131R140E1C061P0O\",\"ög \":\"100C131X1405\",öga:\"1007\",öge:\"0N0710041P0X\",öget:\"1P16\",ögeto:\"1P1A\",ögi:\"1C0I\",ögl:\"0N0A1002\",ögn:\"10041306\",ögo:\"100P\",ögon:\"100X\",\"ögon \":\"100J\",ögr:\"10031307\",ögs:\"1003\",ögt:\"10061404\",ögu:\"131B\",öh:\"0N07110A1403\",öhe:\"0N0211071403\",öhn:\"0N06\",öhä:\"110S\",öi:\"110L\",\"öi \":\"110C\",öid:\"1104\",öih:\"1105\",öin:\"110F\",öis:\"110J\",öit:\"110N\",öj:\"100C11031403\",öja:\"1007\",öjd:\"100A\",öje:\"1003\",öjl:\"100D\",öjli:\"100I\",öjlig:\"100I\",öjä:\"1107\",ök:\"100V1107130R14171C031F061N0N1P0C\",\"ök \":\"100H130A1413\",öka:\"100K1103\",\"öka \":\"100J\",öke:\"100M14061F02\",öker:\"100M1403\",\"öker \":\"100M\",ökk:\"1105130D1406\",ökm:\"1N0I\",ökn:\"10041404\",öks:\"11091F02\",ökt:\"100Q1F04\",ökte:\"100S1402\",\"ökte \":\"100S\",öku:\"130U\",öl:\"0N05100O1106131N14201C041F101N111P14\",\"öl \":\"100B14061F021P16\",ölc:\"140G\",ölcs:\"1414\",öld:\"10021315140Y1F161N0H\",öldü:\"1F1B1N0J\",öle:\"14031C0B1F091N0S\",ölg:\"140B1F07\",öli:\"1P0J\",ölj:\"100N11031402\",ölk:\"0N02100B\",öll:\"0N04100L110A1318\",\"öll \":\"100O130W\",ölm:\"11031F0A\",ölt:\"141A\",öltö:\"141L\",ölu:\"130H\",ölü:\"1F0Q1N0E\",öm:\"100J1108130C140J1F051N191P29\",\"öm \":\"100D140M\",ömd:\"100G\",ömde:\"100I\",\"ömde \":\"100H\",öme:\"14041F021N2D\",ömek:\"1N2T\",\"ömek \":\"1N3I\",ömi:\"11071P0X\",ömib:\"1P0V\",ömibo:\"1P0Z\",ömm:\"100E110313041402\",ömn:\"1004\",ömo:\"1P2C\",ömom:\"1P1J\",\"ömom \":\"1P19\",ömt:\"1006\",ömu:\"130H\",ömä:\"110G\",ömö:\"14021P0W\",ömön:\"1P12\",\"ömön \":\"1P19\",ön:\"0N15100O110L1315143M1C031F2G1N0R1PF8\",\"ön \":\"0N07100G11111303141M1F051PN4\",öna:\"1007\",önb:\"140E\",önc:\"1F29\",önce:\"1F2L\",\"önce \":\"1F34\",önd:\"100B130N14051F0Z\",öne:\"0N09100314021F1W1N18\",\"öne \":\"0N091F021N1O\",önem:\"1F10\",öng:\"1003130X1404\",öni:\"0N0411031P1T\",önik:\"1P29\",\"önik \":\"1P2B\",önm:\"14031F0C\",önn:\"0N141102130E1417\",önne:\"0N1N140S\",önnen:\"0N2M\",önnt:\"0N16\",önnte:\"0N1P\",önny:\"141A\",öns:\"100P1107130I\",önsk:\"100I130T\",önska:\"100H\",önt:\"1003110E140R1F02\",öny:\"1108141D\",önyv:\"142U\",önyve:\"141X\",önä:\"1108\",önö:\"140K\",önü:\"1F0X1N0A\",öp:\"0N02100Q1105130214031F0K1N1Q1P1P\",\"öp \":\"10021F021N2A1P2E\",öpa:\"100H1105\",\"öpa \":\"100M\",öpe:\"10051F0Y\",öpl:\"1N0G\",öpo:\"11041P0I\",öpp:\"100M\",öppn:\"100M\",öppna:\"100M\",öpt:\"100U1F05\",öpte:\"100X\",\"öpte \":\"100X\",öpö:\"11061402\",öpü:\"1F061N0C\",ör:\"0N0W10981108131K142S1F3B1N611P09\",\"ör \":\"0N0310BI1307140E1F091N0C\",öra:\"1038\",\"öra \":\"1042\",örb:\"100G1404\",örd:\"0N02101714041F1H1N2E\",örde:\"0N04100W1F02\",\"örde \":\"100R\",ördü:\"1F1N1N2U\",ördüm:\"1F0P1N2T\",öre:\"0N0E100Z140D1F191N1P\",örf:\"10061309\",örg:\"1005130C14031F02\",örh:\"1006\",öri:\"100211051305\",örj:\"1012\",örja:\"101E\",örjad:\"100I\",örk:\"100Q13061N0D\",örkl:\"100F\",örkla:\"100F\",örl:\"100Q13051F02\",örlo:\"100I\",örlor:\"100G\",örm:\"1007110314021F1N1N1C\",örme:\"14021F1Q1N18\",örn:\"0N02100B130W140A1F04\",öro:\"1006\",örr:\"101B\",örre:\"100Y1402\",örren:\"100R\",örs:\"0N02103R\",örst:\"0N03102L\",örsta:\"100P\",örstå:\"1015\",örsö:\"101G\",örsök:\"101F\",ört:\"0N0N100K1304141O1F0G1N09\",\"ört \":\"0N0Y100D140N1F0E\",örté:\"142Y\",örtén:\"1432\",öru:\"1008130O\",örv:\"100F1408\",örä:\"100M110J1N2E\",öräl:\"100L1105\",öräld:\"100H\",örän:\"100811081N39\",\"örän \":\"110A1N4D\",örö:\"140U\",örü:\"140L1F3S1N1X\",örül:\"141H1F06\",örün:\"1F341N24\",örünü:\"1F2Z\",örüný:\"1N1X\",örý:\"1N1K\",örýä:\"1N29\",örýär:\"1N1Z\",ös:\"0N0H100L110H1307141F1C031F0B1N051P0N\",\"ös \":\"100F110T140G1P10\",ösa:\"1008\",öse:\"0N0610031404\",ösi:\"0N0C1102\",ösk:\"110G130B\",ösn:\"1003\",öss:\"10021109141D\",össz:\"143D\",össze:\"1432\",öst:\"0N04100S110C1F0U\",\"öst \":\"0N03100F\",öste:\"0N04100B1F0Y\",öster:\"0N0310041F1B\",ösz:\"140K\",öszö:\"1418\",öszön:\"1419\",öt:\"0N07100R110B130J142B1C0G1F0N1N061P09\",\"öt \":\"100G110A1307140G\",öta:\"10031C1G\",öte:\"0N03100E110214051F03\",öts:\"1006\",ött:\"10121105130F142S\",\"ött \":\"100Y144F\",ötte:\"0N02100C1102141U\",öttem:\"140Y\",öty:\"1104\",ötä:\"110I\",ötü:\"1F1M\",\"ötü \":\"1F11\",öv:\"101Q110214121F041P0L\",\"öv \":\"10031P0O\",öva:\"100B1P0B\",övd:\"1005\",öve:\"10471411\",över:\"105N\",\"över \":\"103Q\",övers:\"100J\",övet:\"1420\",övr:\"1003\",övä:\"1104\",övő:\"140C\",öw:\"1N23\",öwe:\"1N0N\",öwr:\"1N22\",öwre:\"1N2R\",öwren:\"1N2W\",öwü:\"1N0M\",öx:\"1302\",öy:\"110I1F43\",öyd:\"110K1F02\",öyh:\"1108\",öyl:\"1FAC\",öyle:\"1FAX\",\"öyle \":\"1F2N\",öyled:\"1F73\",öylem:\"1F3I\",öyley:\"1F1O\",öylü:\"1F10\",öylüy:\"1F1C\",öys:\"110J\",öyt:\"110J\",öz:\"141P1F1G1N6O\",\"öz \":\"14041F0O1N4Y\",öze:\"140N1F0M1N09\",özel:\"141B1F0E\",özi:\"14031N11\",\"özi \":\"14031N15\",özl:\"14041F181N2X\",özle:\"14071F0W1N3M\",özler:\"1F0R1N34\",özt:\"140B\",özö:\"140Q\",özött:\"1416\",özü:\"14081F0V1N49\",özüm:\"1F091N19\",özün:\"1F081N41\",özüni:\"1N43\",öß:\"0N05\",öße:\"0N04\",ößt:\"0N04\",öä:\"1103\",\"öä \":\"1109\",öç:\"1N0A\",öð:\"130U\",öðu:\"130S\",öñ:\"1N0H\",\"öñ \":\"1N0G\",öñü:\"1N0C\",öö:\"11021C1S\",\"öö \":\"1C0U\",ööd:\"1C17\",\"ööd \":\"1C11\",öög:\"1C0K\",öögi:\"1C0N\",öök:\"1C0D\",ööl:\"1C0F\",öön:\"1105\",öös:\"1C0B\",ööt:\"1C1K\",ööta:\"1C1T\",öý:\"1N2Z\",\"öý \":\"1N0E\",öýd:\"1N1S\",öýde:\"1N1P\",\"öýde \":\"1N17\",öýdem:\"1N12\",öýe:\"1N0N\",öýg:\"1N0D\",öýl:\"1N0J\",öýt:\"1N0F\",öýü:\"1N14\",öýün:\"1N14\",öğ:\"1F1E\",öğl:\"1F0Q\",öğr:\"1F2Y\",öğre:\"1F3D\",öğren:\"1F2S\",öğret:\"1F1W\",öň:\"1N0O\",\"öň \":\"1N0S\",öňü:\"1N0B\",ø:\"0Z371233\",\"ø \":\"0Z051207\",øb:\"0Z0X\",\"øb \":\"0Z07\",øbe:\"0Z0M\",\"øbe \":\"0Z0U\",øber:\"0Z0G\",\"øber \":\"0Z0J\",øbt:\"0Z0L\",\"øbt \":\"0Z0R\",øbte:\"0Z0U\",\"øbte \":\"0Z10\",ød:\"0Z1Q120Z\",\"ød \":\"0Z0Q120B\",ødd:\"0Z031204\",ødde:\"0Z081206\",øde:\"0Z0V120L\",\"øde \":\"0Z18120Y\",ødel:\"0Z09120F\",ødet:\"0Z08\",ødr:\"0Z021202\",øds:\"0Z051203\",ødse:\"0Z0B1205\",ødsel:\"0Z0D1204\",ødt:\"0Z0O1209\",\"ødt \":\"0Z1F120L\",ødte:\"0Z0E\",\"ødte \":\"0Z0E\",ødv:\"0Z031205\",ødve:\"0Z05120C\",ødven:\"0Z07120C\",øe:\"0Z041203\",øen:\"0Z031204\",\"øen \":\"0Z07120B\",øer:\"0Z02\",øf:\"0Z031204\",øfl:\"0Z021202\",øft:\"0Z021203\",øg:\"0Z0T1203\",\"øg \":\"0Z06\",øge:\"0Z0N\",\"øge \":\"0Z0B\",øger:\"0Z13\",\"øger \":\"0Z1B\",øgl:\"0Z05\",øgle:\"0Z0F\",øgn:\"0Z041204\",øgt:\"0Z07\",øgte:\"0Z0F\",\"øgte \":\"0Z0I\",øj:\"0Z0W\",\"øj \":\"0Z0C\",øje:\"0Z0K\",\"øje \":\"0Z0G\",øjeb:\"0Z0A\",øjer:\"0Z0B\",øjn:\"0Z08\",øjne:\"0Z0L\",\"øjne \":\"0Z0J\",øjr:\"0Z02\",øjs:\"0Z02\",øjt:\"0Z04\",øk:\"0Z05120S\",\"øk \":\"1205\",øke:\"120M\",\"øke \":\"120D\",øken:\"120C\",øker:\"120Q\",\"øker \":\"120Q\",økk:\"0Z031205\",økke:\"0Z09120D\",øko:\"0Z041203\",økt:\"1207\",økte:\"120A\",øl:\"0Z0K120S\",\"øl \":\"0Z071205\",øle:\"0Z0A120K\",ølel:\"0Z05120E\",ølels:\"0Z06120E\",øler:\"0Z0A120N\",\"øler \":\"0Z0C120N\",øles:\"0Z081209\",ølg:\"0Z09120E\",ølge:\"0Z0N120U\",\"ølge \":\"0Z0C120F\",ølt:\"0Z021205\",ølte:\"0Z04120B\",øm:\"0Z0H120G\",\"øm \":\"0Z051203\",ømm:\"0Z0E120G\",ømme:\"0Z131215\",\"ømme \":\"0Z0K120I\",ømmer:\"0Z0E120C\",ømt:\"0Z061205\",\"ømt \":\"0Z0A1207\",øn:\"0Z151211\",\"øn \":\"0Z0B\",ønd:\"0Z041203\",øne:\"0Z02\",ønn:\"0Z07120M\",\"ønn \":\"120G\",ønne:\"0Z0J120T\",ønner:\"0Z09120F\",øns:\"0Z0W120V\",ønsk:\"0Z251227\",ønske:\"0Z2L1227\",ønt:\"0Z061202\",\"ønt \":\"0Z09\",øp:\"120P\",\"øp \":\"1205\",øpe:\"120L\",\"øpe \":\"120R\",øper:\"120G\",\"øper \":\"120G\",øpt:\"120C\",øpte:\"120O\",\"øpte \":\"120O\",ør:\"0Z3P124D\",\"ør \":\"0Z1C1227\",øra:\"1203\",ørd:\"0Z02\",øre:\"0Z1Z122H\",\"øre \":\"0Z2O1243\",øren:\"0Z0W120N\",\"øren \":\"0Z0V120I\",ører:\"0Z191213\",\"ører \":\"0Z1F1210\",øres:\"0Z06120F\",\"øres \":\"0Z06120F\",ørg:\"0Z0F1202\",ørge:\"0Z0C\",ørgs:\"0Z0P\",ørgsm:\"0Z0U\",øri:\"1202\",ørk:\"0Z061209\",ørke:\"0Z07120E\",ørn:\"0Z0M1202\",\"ørn \":\"0Z14\",ørne:\"0Z0K1205\",ørr:\"0Z05120A\",ørre:\"0Z0E120M\",\"ørre \":\"0Z09120I\",ørs:\"0Z0M1213\",ørsm:\"120U\",ørsmå:\"120U\",ørst:\"0Z1I121Q\",\"ørst \":\"0Z0D120H\",ørste:\"0Z1E1218\",ørt:\"0Z0J120L\",\"ørt \":\"0Z0Q120P\",ørte:\"0Z0Q120S\",\"ørte \":\"0Z0V120R\",øs:\"0Z0J120R\",\"øs \":\"0Z051205\",øse:\"0Z051208\",\"øse \":\"0Z09120E\",øsk:\"0Z02\",øsn:\"0Z021204\",øsni:\"0Z04120B\",øst:\"0Z0F120N\",\"øst \":\"0Z08120F\",øste:\"0Z0Q1210\",øster:\"0Z0Q120I\",øt:\"0Z02120Q\",\"øt \":\"1205\",øte:\"120C\",\"øte \":\"120D\",øtet:\"120A\",øtt:\"0Z02120N\",\"øtt \":\"120U\",øtte:\"0Z04120S\",\"øtte \":\"0Z02120D\",øv:\"0Z0I120M\",\"øv \":\"0Z031206\",øvd:\"1209\",øvde:\"120J\",\"øvde \":\"120J\",øve:\"0Z0G120G\",\"øve \":\"0Z09120F\",øver:\"0Z0L120G\",\"øver \":\"0Z0M120G\",øvn:\"0Z041203\",\"øvn \":\"0Z09\",øy:\"1212\",\"øy \":\"1209\",øya:\"1203\",øyd:\"1205\",øye:\"120K\",\"øye \":\"120C\",øyeb:\"120C\",øyebl:\"120C\",øyer:\"120A\",øyk:\"1207\",øyke:\"120E\",øyn:\"120A\",øyne:\"120P\",\"øyne \":\"120D\",øynen:\"120C\",øyr:\"1202\",øyt:\"1204\",ù:\"0L060Q0E\",\"ù \":\"0L0D0Q0X\",ú:\"0O0K0P0C0S3A0U0C0Y46135N141I\",\"ú \":\"0O0C0S4O0Y56134Z140L\",úa:\"130E\",\"úa \":\"0O02130L\",úb:\"0O020P020Y0H\",úbe:\"0Y0H\",úbi:\"0Y0M\",úbl:\"0O060P07\",úc:\"0S060Y0P1402\",úca:\"0O040P040Y08\",úce:\"0Y0F\",úci:\"0Y0K\",úd:\"0P020Y05\",úde:\"0P07\",úf:\"0Y081302\",úfa:\"0Y0M\",\"úfam \":\"0Y12\",úg:\"13031415\",úgy:\"141S\",\"úgy \":\"144A\",úh:\"0Y07\",úhl:\"0Y0H\",úhlas:\"0Y0Y\",úi:\"0S2C130S\",úil:\"0S21\",\"úil \":\"0S20\",úin:\"0S2I1311\",\"úin \":\"0S0M130O\",\"úinn \":\"1329\",úint:\"0S1E\",úinte:\"0S5G\",úir:\"0S1U1308\",\"úir \":\"0S0T1307\",úirt:\"0S1C\",\"úirt \":\"0S58\",úis:\"0S0T1303\",új:\"1415\",\"új \":\"1414\",úk:\"0U030Y07130D1404\",úl:\"0O070P050S0I0Y06130A1410\",\"úl \":\"0S0I140S\",úla:\"0S0K\",úll:\"0S0I\",últ:\"0O0L0P0J140F\",últi:\"0O0X0P0N\",últim:\"0O160P0T\",úm:\"0O040P040U031308\",úme:\"0O0C0P0F1309\",ún:\"0O0K0P050S0Y133K1404\",\"ún \":\"0O1C0S171372\",úna:\"0S0M130O1402\",úni:\"0O0F0P0I1303\",únic:\"0O0O0P0L\",únt:\"0S12\",únta:\"0O020S1A\",\"únta \":\"0S3J\",úp:\"0O020U040Y171304\",úpi:\"0O050P050Y1T\",úpil:\"0Y2A\",\"úpil \":\"0Y1R\",úpl:\"0U080Y0H\",úr:\"0S0O0Y06130U1409\",\"úr \":\"0S0W131B1406\",úra:\"0S0M13041402\",ús:\"0O070P060S0J0U060Y0G130Z140I\",\"ús \":\"0O080Y04130D1403\",úsi:\"0O0D0P0J0Y0A130X\",úsic:\"0O0L0P0O\",úsica:\"0O0P0P0S\",\"úsið \":\"1320\",úss:\"0P03130G\",úsz:\"140J\",úsá:\"0S131402\",úsái:\"0S1C\",úsáid:\"0S5G\",út:\"0O030P020U030Y0O131L140H\",\"út \":\"0Y08131L140C\",útb:\"0O051303\",úti:\"0O060P05130C\",úto:\"0U030Y131406\",\"úto \":\"0Y1P\",úv:\"0Y08\",úva:\"0Y0I\",úvi:\"0P05\",úz:\"0Y0S140A\",úzs:\"0Y1B\",úzsk:\"0Y29\",úzsky:\"0Y28\",úzš:\"0Y0G\",úzšti:\"0Y0Z\",úð:\"130A\",úč:\"0U050Y0F\",úš:\"0Y08\",úť:\"0Y0C\",\"úť \":\"0Y0V\",úž:\"0Y06\",û:\"0L06\",\"û \":\"0L03\",ûr:\"0L04\",\"ûr \":\"0L0D\",ûre:\"0L08\",ût:\"0L04\",\"ût \":\"0L07\",ûte:\"0L09\",\"ü \":\"1F3A1P0P\",üa:\"1C0A\",\"üa \":\"1C0V\",üb:\"0N1H1F031N07\",übe:\"0N261F03\",über:\"0N53\",\"über \":\"0N43\",üc:\"0N151F0C\",üch:\"0N0G\",ück:\"0N1E\",\"ück \":\"0N18\",ücü:\"1F0G\",üd:\"0N0514071C101F0A1P0L\",\"üd \":\"1C17\",üda:\"1C0O1F02\",üde:\"0N061F03\",üdi:\"1C0I1P0R\",üdik:\"1P0V\",üdr:\"1C0Y\",üdru:\"1C16\",üdruk:\"1C2X\",üdü:\"1F0O\",üe:\"0O02\",üen:\"0O03\",üf:\"0N031F03\",üg:\"0N0A140E1C041N07\",üge:\"0N0A\",ügi:\"1N0C\",ügy:\"140I\",üh:\"0N0V14021C0W\",\"üh \":\"0N04\",üha:\"1C0D\",ühe:\"0N091C1A1F02\",\"ühe \":\"0N061C0L\",ühi:\"1C16\",ühis:\"1C0K\",ühl:\"0N0F\",ühr:\"0N0E\",üht:\"1C0B\",üj:\"1N0A\",üji:\"1N0A\",üjü:\"1N0B\",ük:\"141E1C0N1F1T1N0H1P6Z\",\"ük \":\"141E1F2T1N0D1P1J\",üka:\"1F041P0G\",üke:\"14051F0E\",üki:\"1P5C\",\"üki \":\"1P6C\",ükl:\"1F0D1N0B\",üko:\"1P41\",ükob:\"1P0Z\",ükol:\"1P1D\",ükom:\"1P1Z\",\"ükom \":\"1P1T\",üks:\"140V1C1Y1F0K\",\"üks \":\"1C0U\",üksi:\"1C0U\",üksé:\"1428\",ükség:\"142C\",ükö:\"14021P28\",ükön:\"1P2J\",\"ükön \":\"1P2Y\",ül:\"0N08144U1C1F1F181N0X1P1C\",\"ül \":\"142M1F061P0W\",üla:\"1C0P\",üld:\"140D1C0O1F0F\",üle:\"0N04141A1C241F0P1N0F\",\"üle \":\"14041C181F02\",üles:\"1C0Z\",\"üles \":\"1C26\",ület:\"141W\",üli:\"14061C0E1N0G1P1A\",\"üli \":\"140A1P1I\",ülk:\"1F0P\",üll:\"0N0614021C0N1F061N0C\",ülla:\"1C0K\",ülm:\"14021C0F1F0B\",üln:\"140F\",ült:\"141O1F0A\",\"ült \":\"142W\",üly:\"140C\",ülö:\"140T\",ülön:\"141D\",ülü:\"14041F0M\",ülő:\"140D\",üm:\"0N0314041C0E1F291N2E1P06\",\"üm \":\"1F341N23\",ümd:\"1F091N0D\",üme:\"1F0I1N0A\",ümi:\"1F021N19\",\"ümi \":\"1N13\",ümk:\"1F0A1N0O\",ümki:\"1N0Y\",ümkin:\"1N19\",üml:\"1F0G1N09\",ümm:\"0N031C0I\",ümme:\"0N081C0N\",ümn:\"1C0J\",ümne:\"1C0O\",üms:\"1F0B\",ümü:\"1F11\",ün:\"0N0L142G1C091F7P1N7W1P19\",\"ün \":\"1F6M1N2V1P1M\",ünc:\"1F0G\",ünd:\"0N071C0E1F311N35\",ünde:\"0N0B1F1G1N30\",\"ünde \":\"0N051F191N2M\",ündi:\"0N041N1J\",ündü:\"1F24\",ündüğ:\"1F14\",üne:\"14041F181N1U\",\"üne \":\"1F0N1N1Q\",ünf:\"0N08\",üni:\"1F0C1N3L1P0D\",\"üni \":\"1N2G\",üniň:\"1N1F\",\"üniň \":\"1N1X\",ünk:\"14411F0B\",\"ünk \":\"1497\",ünl:\"1F0R1N0K\",ünm:\"1F1D1N0M\",ünme:\"1F0R1N0U\",ünn:\"14051C0E\",üns:\"0N091N0P\",üny:\"1F0V\",ünya:\"1F0Z\",ünä:\"1N0I\",ünç:\"1F0B1N0B\",ünü:\"1F6F1N0G\",\"ünü \":\"1F1W\",ünüy:\"1F45\",ünüyo:\"1F5L\",üný:\"1N25\",ünýä:\"1N30\",ünýär:\"1N27\",üp:\"1C061F0C1N0I1P0L\",\"üp \":\"1F041N0T1P0S\",üph:\"1F0L\",ür:\"0N26140C1C0B1F3B1N2Z1P0A\",\"ür \":\"0N211F1Y1P0E\",ürc:\"0N04\",ürd:\"0N0O14051F0R\",ürde:\"0N1J1F02\",\"ürde \":\"0N1V\",üre:\"0N03140A1F1Z1N0R\",ürf:\"0N04\",ürg:\"0N0214021C0H\",ürgi:\"1C0L\",üri:\"1C0H1N0A\",ürk:\"14021F0A1N0I\",ürl:\"0N031F0I1N2G\",ürle:\"1F0D1N2S\",ürleş:\"1N2A\",ürm:\"1F0N1N0H\",ürr:\"1N0F\",ürü:\"1F2M1N0F\",üs:\"0N0K14071C0K1F0P1N0J\",üsi:\"1C1H\",üsim:\"1C0R\",üsimu:\"1C1O\",üss:\"0N0R1402\",üsse:\"0N1D\",üssen:\"0N1O\",üst:\"0N0314031F0X1N0S\",üstü:\"1F0H1N13\",üstün:\"1F0G1N1E\",üsü:\"1F0C\",üt:\"0N0A140K1C121F1B1N0C1P0B\",üte:\"0N0514031F02\",ütf:\"1F1I\",ütfe:\"1F1Q\",ütfen:\"1F2D\",üti:\"14021N0L1P0E\",ütin:\"1N0U\",ütl:\"1C2X1F02\",ütle:\"1C3M\",ütles:\"1C58\",ütt:\"0N03140F1F02\",ütz:\"0N06\",ütü:\"1F1M\",ütün:\"1F1J\",\"ütün \":\"1F21\",üv:\"14091F0F\",üve:\"140C1F13\",üven:\"1F15\",üw:\"1N04\",üy:\"1F3E\",üye:\"1F0D\",üyo:\"1F64\",üyor:\"1F6Y\",\"üyor \":\"1F4V\",üyord:\"1F1H\",üyors:\"1F1F\",üyoru:\"1F1X\",üyü:\"1F2E\",üyük:\"1F21\",\"üyük \":\"1F2B\",üz:\"14091F2U1N0Q\",\"üz \":\"1F1D1N09\",üzd:\"14031F0V\",üze:\"14071F2Z1N0B\",üzel:\"1F1O\",\"üzel \":\"1F1P\",üzer:\"1F15\",üzeri:\"1F16\",üzg:\"1F0N\",üzi:\"1F0H\",üzm:\"1F0C1N0A\",üzü:\"1F101N0H\",üß:\"0N04\",üç:\"1F131N46\",\"üç \":\"1F1J1N1B\",üçi:\"1N6X\",üçin:\"1N9O\",\"üçin \":\"1NCP\",üçl:\"1F0D\",üçü:\"1F0Z\",üñ:\"1N0A\",üü:\"1C12\",üüa:\"1C0Y\",\"üüa \":\"1C12\",üüd:\"1C23\",\"üüd \":\"1C1I\",üüdi:\"1C0N\",üý:\"1N1T\",üýj:\"1N0C\",üýn:\"1N18\",\"üýn \":\"1N1N\",üýt:\"1N17\",üýtg:\"1N1E\",üýtge:\"1N1Q\",üğ:\"1F0S\",üğü:\"1F22\",üğün:\"1F1C\",üğünü:\"1F15\",üň:\"1N0U\",\"üň \":\"1N0P\",üňi:\"1N0H\",üş:\"1F2M1N23\",\"üş \":\"1F0D\",üşe:\"1F0B1N0H\",üşm:\"1F0H\",üşt:\"1F0K\",üşü:\"1F581N2J\",üşün:\"1F5E1N3F\",üşünd:\"1F2A1N1D\",üşünm:\"1F1C1N0U\",üşünü:\"1F3C\",ý:\"0U3V0Y4713171NG9\",\"ý \":\"0U5W0Y6P13051N1F\",ýa:\"13021NIG\",\"ýa \":\"1N31\",\"ýa-\":\"1N0G\",ýad:\"1N2J\",ýada:\"1N30\",\"ýada \":\"1N2H\",ýag:\"1N1U\",ýak:\"1N0S\",ýal:\"1N6I\",ýaly:\"1N5O\",\"ýaly \":\"1N6I\",ýalñ:\"1N12\",ýalñy:\"1N1E\",ýalň:\"1N0Y\",ýalňy:\"1N1B\",ýam:\"1N0A\",ýan:\"13031N62\",\"ýan \":\"1N2R\",ýand:\"1N31\",ýandy:\"1N3Y\",ýany:\"1N26\",ýap:\"1N10\",ýar:\"1NCY\",\"ýar \":\"1N90\",ýara:\"1N18\",ýard:\"1N1K\",ýardy:\"1N20\",ýarl:\"1N2B\",ýarla:\"1N31\",ýars:\"1N12\",ýarsy:\"1N17\",ýary:\"1N4P\",ýaryn:\"1N4P\",ýas:\"1N0J\",ýat:\"1N1M\",ýaz:\"1N1U\",ýañ:\"1N0E\",ýaň:\"1N0G\",ýaş:\"1N3H\",ýaşa:\"1N34\",ýaşaý:\"1N27\",ýaşy:\"1N0X\",ýb:\"0U040Y0D1N05\",ýba:\"0Y0H\",ýc:\"0U0Q0Y1C\",ých:\"0U1E0Y3G\",\"ých \":\"0U1Y0Y3N\",ýchl:\"0Y1F\",ýchlo:\"0Y18\",ýd:\"0U0B1N42\",ýda:\"1N1L\",ýdan:\"1N0Y\",ýde:\"0U0E1N17\",\"ýde \":\"1N0V\",\"ýden \":\"0U0W\",ýdi:\"1N14\",ýdu:\"1N0G\",ýdy:\"1N2Q\",ýdym:\"1N10\",ýdyp:\"1N1I\",\"ýdyp \":\"1N1V\",ýdý:\"1N1C\",ýdýa:\"1N19\",ýdýar:\"1N1I\",ýe:\"1N6H\",\"ýe \":\"1N0S\",ýek:\"1N1A\",ýeke:\"1N1N\",\"ýeke \":\"1N1E\",ýen:\"1N2A\",\"ýen \":\"1N1J\",ýene:\"1N1E\",\"ýene \":\"1N1E\",ýer:\"1N5S\",ýerd:\"1N3I\",ýerde:\"1N4O\",ýere:\"1N14\",\"ýere \":\"1N1J\",ýeri:\"1N2F\",ýerin:\"1N1X\",ýet:\"1N2C\",ýete:\"1N0V\",ýeti:\"1N1J\",ýetir:\"1N1D\",ýeň:\"1N0G\",ýg:\"1N0D\",ýh:\"0U020Y03\",ýi:\"1N31\",\"ýi \":\"1N0B\",ýig:\"1N0J\",ýil:\"1N0F\",ýin:\"1N0G\",ýip:\"1N3D\",\"ýip \":\"1N4O\",ýit:\"1N0T\",ýiti:\"1N13\",ýitir:\"1N1G\",ýj:\"130C1N0F\",ýja:\"130J\",ýje:\"1N0F\",ýji:\"1N0D\",ýk:\"0U030Y06\",ýl:\"0U070Y0813031N36\",ýla:\"1N2T\",\"ýla \":\"1N15\",ýlan:\"1N19\",ýlany:\"1N14\",ýle:\"0U0713041N32\",\"ýle \":\"0U081N34\",ýli:\"0U020Y0K\",ýly:\"1N0B\",ýlä:\"1N0C\",ým:\"0U130Y1E1N0V\",\"ým \":\"0U1P0Y2W\",ýma:\"0U021N0D\",ýme:\"1N12\",ými:\"0U0F0Y0M\",\"ými \":\"0U0O0Y13\",ýn:\"0U020Y03130D1N1J\",\"ýn \":\"1N16\",ýna:\"13051N0Y\",ýne:\"1N0M\",ýo:\"1N26\",ýok:\"1N32\",\"ýok \":\"1N2Z\",ýol:\"1N11\",ýp:\"1N06\",ýr:\"0U04130P1N0D\",\"ýr \":\"0U03130N\",ýra:\"0U0313091N0G\",ýs:\"0U040Y04130H1N0M\",ýse:\"1N0A\",ýsk:\"130I\",ýsy:\"1N0L\",ýt:\"0U0W0Y0F130K1N54\",\"ýt \":\"0U1P1N0U\",ýta:\"0U030Y1113081N0D\",ýtd:\"1N5R\",ýtdy:\"1N7T\",\"ýtdy \":\"1N7R\",ýtdyl:\"1N29\",ýtg:\"1N0Y\",ýtge:\"1N19\",ýtm:\"1N2A\",ýtma:\"1N35\",ýtmad:\"1N16\",ýu:\"1N1G\",ýum:\"1N0D\",ýun:\"1N0T\",ýur:\"1N0A\",ýut:\"1N0B\",ýuw:\"1N0K\",ýv:\"0U0F0Y0K\",ýva:\"0U0L0Y1E\",ýval:\"0U0U0Y08\",ýw:\"1N04\",ýy:\"1N31\",ýyg:\"1N0P\",ýygna:\"1N14\",ýyl:\"1N2D\",\"ýyl \":\"1N10\",ýyld:\"1N1E\",ýyn:\"1N0U\",ýyp:\"1N0C\",ýyş:\"1N16\",\"ýyş \":\"1N19\",ýz:\"0U020Y021N05\",ýä:\"1NDC\",\"ýä \":\"1N0G\",ýäd:\"1N0C\",ýäm:\"1N0N\",\"ýäm \":\"1N0Y\",ýän:\"1N71\",\"ýän \":\"1N42\",ýänd:\"1N4U\",ýändi:\"1N6L\",ýär:\"1NHB\",\"ýär \":\"1N9M\",ýärd:\"1N2U\",ýärdi:\"1N3W\",ýäri:\"1NAE\",ýärin:\"1NCN\",ýäris:\"1N1J\",ýärl:\"1N1O\",ýärle:\"1N2A\",ýärm:\"1N18\",ýärmi:\"1N1O\",ýärs:\"1N2Z\",ýärsi:\"1N43\",ýäñ:\"1N0S\",ýäň:\"1N0O\",ýð:\"1306\",ýó:\"1302\",ýö:\"1N0U\",ýön:\"1N0Y\",ýöne:\"1N1E\",\"ýöne \":\"1N1S\",ýör:\"1N0S\",ýü:\"1N1C\",ýün:\"1N0S\",ýür:\"1N0I\",ýüz:\"1N0X\",ýý:\"1N1I\",ýýa:\"1N1A\",ýýar:\"1N1F\",ýýä:\"1N1R\",ýýäm:\"1N0Y\",\"ýýäm \":\"1N1B\",ýýär:\"1N10\",ýş:\"1N0B\",ýš:\"0U060Y05\",ýž:\"0Y07\",ýžd:\"0Y0J\",þ:\"13AC\",þa:\"137O\",þan:\"130N\",þar:\"132G\",\"þar \":\"1313\",þarf:\"132F\",\"þarf \":\"1331\",þau:\"131Q\",\"þau \":\"132T\",það:\"13C2\",\"það \":\"13I7\",þe:\"1361\",þeg:\"131Q\",þega:\"132N\",þegar:\"135G\",þei:\"131S\",\"þeim \":\"1325\",þeir:\"131Y\",\"þeir \":\"132F\",þek:\"130T\",þekk:\"131C\",þes:\"134S\",þess:\"137O\",\"þess \":\"133K\",þessa:\"134K\",þessi:\"135G\",þessu:\"133J\",þet:\"134Q\",þett:\"137M\",þetta:\"13EW\",þi:\"1326\",þig:\"1328\",\"þig \":\"133M\",þin:\"1313\",þinn:\"131R\",\"þinn \":\"132N\",þit:\"130P\",þitt:\"1315\",\"þitt \":\"132E\",þið:\"130Z\",\"þið \":\"131M\",þj:\"130D\",þjó:\"130Q\",þo:\"1306\",þr:\"1310\",þre:\"130R\",þreyt:\"1322\",þrj:\"130J\",þu:\"130C\",þur:\"130O\",þv:\"1317\",því:\"132G\",\"því \":\"133Y\",þy:\"130A\",þá:\"130J\",\"þá \":\"130Y\",þæ:\"130A\",þær:\"130J\",þé:\"131N\",þér:\"133O\",\"þér \":\"135X\",þí:\"130T\",þín:\"131U\",\"þín \":\"1318\",þó:\"1308\",þö:\"1304\",þú:\"134M\",\"þú \":\"139R\",þý:\"130D\",þýs:\"130H\",ā:\"0T0U1DEC\",\"ā \":\"0T0C1D8O\",āa:\"1D03\",āb:\"0T031D0E\",āba:\"0T04\",ābi:\"0T02\",ābo:\"1D0M\",ābol:\"1D0S\",āc:\"1D13\",\"āc \":\"1D0G\",āca:\"1D0K\",āci:\"1D1V\",ācij:\"1D1P\",ācija:\"1D2Y\",ācā:\"1D0G\",ācī:\"1D15\",ācīt:\"1D0X\",ācīti:\"1D25\",ād:\"1D2G\",āda:\"1D2D\",\"āda \":\"1D17\",ādar:\"1D0W\",ādara:\"1D2A\",\"ādas \":\"1D1W\",ādi:\"1D14\",\"ādi \":\"1D13\",ādr:\"1D0H\",āds:\"1D1O\",\"āds \":\"1D25\",ādu:\"1D1F\",\"ādu \":\"1D1R\",ādā:\"1D27\",\"ādā \":\"1D13\",ādē:\"1D0G\",ādī:\"1D0Q\",āf:\"1D03\",āi:\"1D05\",āj:\"1D40\",āja:\"1D5V\",\"āja \":\"1D5J\",ājas:\"1D15\",\"ājas \":\"1D2K\",ājat:\"1D0S\",\"ājat \":\"1D21\",āji:\"1D1Z\",ājie:\"1D0U\",ājis:\"1D13\",\"ājis \":\"1D2T\",ājo:\"1D0N\",ājs:\"1D0O\",\"ājs \":\"1D0U\",āju:\"1D5Y\",\"āju \":\"1D52\",ājum:\"1D1U\",ājumu:\"1D1W\",ājā:\"1D1X\",ājās:\"1D1J\",\"ājās \":\"1D3Z\",āk:\"1D3D\",\"āk \":\"1D5M\",āka:\"1D3E\",\"āka \":\"1D1J\",ākai:\"1D15\",ākais:\"1D2Y\",\"ākas \":\"1D1W\",āki:\"1D0V\",āko:\"1D0Q\",āks:\"1D1M\",\"āks \":\"1D0W\",ākt:\"1D0N\",āku:\"1D0Y\",ākā:\"1D0K\",ākļ:\"1D0E\",āl:\"0T061D10\",āla:\"0T021D0G\",āle:\"0T02\",āli:\"0T041D1Q\",\"āli \":\"1D0S\",āls:\"1D0E\",ālu:\"0T021D0Q\",ālā:\"1D0E\",ām:\"0T031D2E\",\"ām \":\"1D79\",āma:\"1D1V\",āmat:\"1D21\",āmata:\"1D25\",āmatu:\"1D32\",āmi:\"1D0J\",āmu:\"0T04\",āmī:\"0T02\",ān:\"0T061D0W\",āna:\"1D0N\",āne:\"0T02\",āni:\"0T031D1A\",āno:\"1D0E\",āns:\"0T051D0M\",\"āns \":\"1D0S\",ānu:\"0T021D0Q\",āp:\"1D0Z\",āpa:\"1D0U\",āpi:\"1D0K\",āpē:\"1D1Z\",āpēc:\"1D2A\",\"āpēc \":\"1D5U\",ār:\"0T081D2W\",ārd:\"1D2E\",\"ārds \":\"1D1R\",ārdu:\"1D0S\",āre:\"0T0E\",\"āre \":\"0T0P\",ārg:\"1D0J\",āri:\"0T021D0T\",ārl:\"1D0O\",ārli:\"1D0U\",ārlie:\"1D25\",ārp:\"1D0E\",ārs:\"1D1I\",ārst:\"1D1C\",ārste:\"1D1R\",ārt:\"1D1C\",āru:\"0T02\",ārz:\"1D0T\",ārā:\"1D18\",ārāk:\"1D11\",\"ārāk \":\"1D2O\",ārš:\"1D0Y\",ārši:\"1D11\",\"ārši \":\"1D2K\",ās:\"0T0X1D37\",\"ās \":\"0T241DAS\",āsa:\"1D0E\",āsi:\"1D0J\",āsn:\"0T02\",āst:\"1D0U\",āt:\"0T0F1D3B\",\"āt \":\"1D5I\",āta:\"0T071D0Y\",\"āta \":\"0T0A1D0S\",āte:\"0T031D11\",\"āte \":\"1D0W\",āti:\"0T031D18\",ātie:\"1D0X\",āties:\"1D25\",ātr:\"0T031D10\",āts:\"1D1O\",\"āts \":\"1D1Y\",ātu:\"0T0D1D0V\",\"ātu \":\"1D0U\",ātā:\"1D0K\",ātī:\"0T031D13\",ātū:\"0T02\",āv:\"0T091D0O\",\"āv \":\"1D0G\",āva:\"1D0O\",āve:\"1D0E\",āvi:\"0T0H\",āvī:\"0T02\",āz:\"1D07\",āzi:\"1D0J\",āļ:\"1D04\",āņ:\"1D04\",āš:\"1D0C\",āša:\"1D14\",āšan:\"1D1G\",āšana:\"1D1W\",ă:\"15GA\",\"ă \":\"15N9\",\"ă-\":\"151H\",\"ă-i\":\"150V\",\"ă-l\":\"1515\",\"ă-l \":\"151V\",\"ă-m\":\"151R\",\"ă-mi\":\"1527\",\"ă-mi \":\"152T\",\"ă-t\":\"150I\",\"ă-ț\":\"150T\",\"ă-ți \":\"151Q\",ăb:\"1507\",ăc:\"151I\",ăca:\"150Y\",ăce:\"1510\",ăci:\"150I\",ăcu:\"153E\",ăcut:\"155F\",\"ăcut \":\"155V\",ăd:\"150C\",\"ăd \":\"150K\",ăg:\"1507\",ăi:\"150P\",\"ăi \":\"150L\",ăia:\"150L\",ăie:\"150U\",ăin:\"150J\",ăl:\"150O\",\"ăl \":\"150S\",ălă:\"150M\",ăm:\"1515\",\"ăm \":\"1526\",ăma:\"150N\",ămâ:\"151N\",ămân:\"152J\",ăn:\"150L\",ănâ:\"150Z\",ănân:\"151M\",ănânc:\"1522\",ănă:\"150I\",ăp:\"150H\",ăpa:\"150M\",ăpt:\"150U\",ăptăm:\"151S\",ăr:\"1536\",\"ăr \":\"1511\",ăra:\"1527\",ărat:\"152V\",\"ărat \":\"1534\",ărb:\"150O\",ăre:\"1518\",ări:\"152O\",ăru:\"151O\",ărul:\"151I\",\"ărul \":\"151U\",ără:\"151X\",\"ără \":\"152E\",ărț:\"150V\",ăs:\"151E\",ăsa:\"150V\",ăsc:\"150M\",ăsi:\"150Y\",ăsp:\"150Z\",ăspun:\"151R\",ăst:\"150Q\",ăsă:\"150U\",ăt:\"151W\",ăta:\"1510\",ăte:\"150O\",ăti:\"150S\",ăto:\"152J\",ător:\"1537\",ători:\"151V\",ătr:\"150O\",ătu:\"151A\",ătă:\"150L\",ău:\"150V\",\"ău \":\"152I\",ăut:\"150O\",ăv:\"1502\",ăz:\"150U\",ăzi:\"150Z\",\"ăzi \":\"151H\",ăzu:\"151O\",ăzut:\"152O\",\"ăzut \":\"1532\",ăţ:\"1503\",ăș:\"1505\",ăț:\"150J\",ăța:\"150K\",ăți:\"1516\",ą:\"1A5Z1B41\",\"ą \":\"1A821BCX\",ąb:\"1A02\",ąc:\"1A1J\",\"ąc \":\"1A0T\",ąd:\"1A20\",\"ąd \":\"1A0T\",ąda:\"1A1A\",ądz:\"1A0Z\",ąg:\"1A0J\",ąj:\"1B03\",ąk:\"1A03\",ąm:\"1B02\",ąp:\"1A05\",ąs:\"1A051B08\",ąt:\"1A0N\",ąz:\"1A09\",ąć:\"1A0F\",\"ąć \":\"1A0V\",ął:\"1A0P\",\"ął \":\"1A14\",ąś:\"1A02\",ąż:\"1A0Z\",ążk:\"1A15\",ąž:\"1B04\",ąži:\"1B09\",ć:\"0V341A55\",\"ć \":\"0V0O1AC4\",ća:\"0V10\",\"ća \":\"0V12\",će:\"0V35\",\"će \":\"0V5E\",ćem:\"0V17\",ćemo:\"0V1B\",\"ćemo \":\"0V3C\",ćeš:\"0V1A\",\"ćeš \":\"0V1K\",ći:\"0V1D\",\"ći \":\"0V3E\",ćm:\"1A02\",ćn:\"0V0B\",ćo:\"0V02\",ću:\"0V18\",\"ću \":\"0V3B\",ćw:\"1A02\",ĉ:\"1O3V\",\"ĉ \":\"1O0B\",ĉa:\"1O1M\",\"ĉa \":\"1O0H\",ĉag:\"1O03\",ĉaj:\"1O05\",ĉam:\"1O0J\",ĉamb:\"1O0T\",ĉambr:\"1O1N\",ĉan:\"1O04\",ĉap:\"1O04\",ĉar:\"1O0R\",\"ĉar \":\"1O10\",ĉas:\"1O0K\",\"ĉas \":\"1O0S\",ĉe:\"1O1R\",\"ĉe \":\"1O13\",ĉee:\"1O05\",ĉef:\"1O09\",ĉem:\"1O03\",ĉer:\"1O04\",ĉes:\"1O0D\",ĉet:\"1O0P\",ĉeti:\"1O0S\",ĉev:\"1O05\",ĉi:\"1O4T\",\"ĉi \":\"1O2P\",\"ĉi-\":\"1O0D\",ĉia:\"1O0X\",ĉiam:\"1O1E\",\"ĉiam \":\"1O2Q\",ĉie:\"1O0A\",ĉil:\"1O03\",ĉin:\"1O08\",ĉio:\"1O0W\",\"ĉio \":\"1O0R\",ĉion:\"1O0N\",\"ĉion \":\"1O1A\",ĉir:\"1O0D\",ĉis:\"1O09\",ĉiu:\"1O2A\",\"ĉiu \":\"1O0X\",ĉiuj:\"1O1Z\",\"ĉiuj \":\"1O32\",ĉj:\"1O03\",ĉjo:\"1O05\",ĉo:\"1O0G\",\"ĉo \":\"1O0B\",ĉoj:\"1O04\",ĉon:\"1O07\",ĉu:\"1O3B\",\"ĉu \":\"1O5J\",ĉul:\"1O03\",č:\"030V0U5C0V3X0Y7S1B1F1D08\",\"č \":\"030E0U1Q0V0A0Y1E1B02\",ča:\"03080U1S0V1Q0Y38\",\"ča \":\"03090V0K0Y0I\",čaj:\"0U090V0V0Y19\",\"čaj \":\"0U0B0V0C0Y0Z\",čajn:\"0V090Y0W\",čak:\"0V0Q0Y1O\",čaka:\"0V050Y1P\",čaká:\"0Y18\",čal:\"0U0N0V070Y0N\",čan:\"03060U040V0O0Y0E\",čas:\"0U2K0V070Y33\",\"čas \":\"0U1Q0Y2B\",čast:\"0U150V030Y19\",často:\"0U190Y0Z\",\"času \":\"0U0R0Y0O\",čať:\"0Y0H\",čc:\"0U02\",če:\"03070U3G0V2B0Y241D04\",\"če \":\"0U0W0V1G0Y0M\",ček:\"0U1M0V0Z0Y0D1B02\",čeka:\"0U1E0V0T\",čekal:\"0U100V06\",čekat:\"0U0S0V07\",čeká:\"0U0W\",čem:\"03050U0G0V0D\",čen:\"03050U0R0V190Y0Y\",čer:\"03030U1S0V0H0Y2S\",\"čer \":\"0U0P0Y0M\",čera:\"0U1C0V0E0Y2F\",\"čera \":\"0U1V0Y2O\",često:\"0V1N\",čet:\"0U0O0V0K0Y061D0E\",či:\"030L0U290V2Q0Y3M1B4W1D03\",\"či \":\"03160U0H0V1K0Y1Z\",čia:\"0Y151B8R\",\"čia \":\"0Y0V1B5J\",čiai:\"1B1C\",\"čiai \":\"1B2C\",čiau:\"1B6K\",\"čiau \":\"1BBV\",čie:\"0Y12\",čier:\"0Y18\",čiern:\"0Y0Z\",čil:\"0U1D0V0D0Y10\",\"čil \":\"0U1I0Y0X\",čin:\"03090U0I0V1J0Y18\",čio:\"0V0Q1B17\",\"čio \":\"0V0S1B0T\",čit:\"03060U200V1S0Y1E\",\"čit \":\"03040U1P\",čita:\"0V17\",čite:\"0U0Y0V0N0Y2A\",\"čite \":\"0V0D0Y0Z\",čitel:\"0U1C0V1A\",čiteľ:\"0Y1Q\",\"čitě \":\"0U0U\",čiu:\"1B1W\",\"čiu \":\"1B0Y\",čiuo:\"1B0S\",čius:\"1B0R\",\"čius \":\"1B1F\",čią:\"1B0B\",čiť:\"0Y11\",\"čiť \":\"0Y1S\",čiū:\"1B0C\",čių:\"1B14\",\"čių \":\"1B1T\",čk:\"0U120V0R0Y1R\",čka:\"0U0W0V0I0Y1Y\",\"čka \":\"0U130V0K0Y2G\",čku:\"0U0E0V0D0Y12\",\"čku \":\"0U0N0V0E0Y1T\",čky:\"0U0F0Y0W\",\"čky \":\"0U0O0Y1J\",čl:\"0U0E0V030Y0D\",člo:\"0U0M0Y0O\",člov:\"0U100Y16\",člove:\"0Y1G\",člově:\"0U1F\",čm:\"0Y03\",čn:\"0U150V100Y13\",čne:\"0U030V080Y0P\",\"čne \":\"0U030V050Y0Y\",čno:\"0U0B0V1O0Y0J\",\"čno \":\"0V1Q\",čné:\"0U0D0Y0N\",\"čné \":\"0U0F0Y12\",ční:\"0U0L0Y05\",čný:\"0U0B0Y0F\",čně:\"0U0K\",\"čně \":\"0U0V\",čo:\"0U080V0B0Y5X\",\"čo \":\"0YCO\",čom:\"0Y0E\",čov:\"0U0B0V0R0Y0F\",čove:\"0V0X\",čovek:\"0V28\",čr:\"0Y02\",čt:\"0U0K0Y0D\",čte:\"0U0A0Y0I\",čti:\"0U0D0Y0E\",ču:\"03040U040V0O0Y0U1D08\",\"ču \":\"0V071D0U\",čuj:\"0U060V0D0Y0J\",čul:\"0V030Y10\",\"čul \":\"0Y10\",čá:\"0U06\",čí:\"0U1P0Y20\",\"čí \":\"0U130Y0Z\",čím:\"0U0M0Y0W\",\"čím \":\"0U0X0Y1I\",čín:\"0U0F0Y0G\",čís:\"0U0F0Y07\",čít:\"0U0L0Y2H\",číta:\"0U0K0Y3Y\",čítal:\"0U030Y1I\",čú:\"0Y06\",čúv:\"0Y0D\",čč:\"0319\",čči:\"031N\",čš:\"0Y07\",čši:\"0Y0F\",čů:\"0U03\",ď:\"0U0I0Y0Z\",\"ď \":\"0U100Y1H\",ďa:\"0U040Y0T\",ďak:\"0Y0Z\",ďaku:\"0Y15\",ďakuj:\"0Y1F\",ďal:\"0Y0S\",ďale:\"0Y0X\",ďalek:\"0Y0X\",ďm:\"0U030Y03\",ďt:\"0U040Y0C\",ďte:\"0U080Y0W\",\"ďte \":\"0U0D0Y1J\",đ:\"0V0W\",đa:\"0V0K\",đe:\"0V0Z\",đen:\"0V19\",đi:\"0V0B\",đu:\"0V0E\",ē:\"0T0U1D8M\",\"ē \":\"0T0R1D14\",ēb:\"0T06\",ēba:\"0T0B\",ēbā:\"0T02\",ēc:\"0T051D0T\",\"ēc \":\"1D2Z\",ēci:\"0T07\",ēct:\"0T02\",ēd:\"0T051D11\",\"ēd \":\"1D0J\",ēdi:\"0T051D0V\",ēdu:\"0T021D0T\",\"ēdu \":\"1D11\",ēdz:\"1D0R\",ēdē:\"1D0K\",ēdō:\"0T04\",ēg:\"0T021D09\",ēga:\"1D0E\",ēgi:\"0T03\",ēgt:\"1D0G\",ēj:\"1D39\",\"ēj \":\"1D0K\",ēja:\"1D5T\",\"ēja \":\"1D5J\",ējam:\"1D1A\",ēji:\"1D1Z\",ējis:\"1D1G\",\"ējis \":\"1D3Q\",ējo:\"1D0N\",ēju:\"1D3J\",\"ēju \":\"1D42\",ējā:\"1D1B\",ēk:\"1D1B\",ēka:\"1D0R\",ēki:\"1D2L\",\"ēki \":\"1D23\",ēkie:\"1D1A\",ēkiem:\"1D3C\",ēks:\"1D11\",\"ēks \":\"1D1C\",ēku:\"1D0V\",\"ēku \":\"1D0X\",ēl:\"0T031D25\",\"ēl \":\"1D1F\",ēla:\"1D24\",ēlas:\"1D1E\",\"ēlas \":\"1D3L\",ēlat:\"1D0S\",ēlati:\"1D21\",ēle:\"1D0E\",ēli:\"1D0T\",ēlies:\"1D1R\",ēlo:\"1D11\",ēlos:\"1D17\",\"ēlos \":\"1D2Y\",ēlr:\"1D0G\",ēls:\"1D0E\",ēlu:\"1D0E\",ēlā:\"0T021D0J\",ēlē:\"0T031D1P\",ēlēt:\"0T041D15\",ēm:\"0T071D0X\",\"ēm \":\"1D1O\",ēma:\"1D18\",\"ēma \":\"1D0X\",\"ēmas \":\"1D1R\",ēmi:\"0T0B\",ēmu:\"0T021D0R\",ēmō:\"0T03\",ēn:\"0T0B1D0F\",ēni:\"0T091D0H\",ēns:\"0T0C1D0G\",ēp:\"1D08\",ēpi:\"0T03\",ēr:\"0T081D26\",\"ēr \":\"1D1O\",ēra:\"1D0X\",ēre:\"0T06\",ēri:\"0T021D11\",ērn:\"1D1H\",ērni:\"1D11\",\"ērni \":\"1D1R\",ēro:\"1D0H\",ērs:\"1D0H\",ērt:\"1D1O\",ēru:\"0T08\",ēs:\"0T0I1D26\",\"ēs \":\"0T101D72\",ēsi:\"0T021D0H\",ēst:\"1D18\",ēt:\"0T031D3H\",\"ēt \":\"1D4Z\",ēta:\"0T021D1J\",\"ēta \":\"0T031D18\",ēti:\"0T021D1V\",ētie:\"1D1H\",ēties:\"1D3G\",ēts:\"1D0V\",\"ēts \":\"1D15\",ētu:\"0T021D3Y\",\"ētu \":\"1D52\",ētā:\"1D0V\",ēv:\"1D0D\",ēvs:\"1D0X\",\"ēvs \":\"1D17\",ēģ:\"1D0A\",ēģi:\"1D18\",ēģin:\"1D17\",ēģinā:\"1D2F\",ēļ:\"1D0C\",\"ēļ \":\"1D0U\",ēš:\"1D0D\",ēša:\"1D11\",ēšan:\"1D1C\",ēšu:\"1D0K\",ė:\"1B6P\",\"ė \":\"1B6F\",ėd:\"1B0L\",ėda:\"1B0E\",ėdi:\"1B08\",ėdė:\"1B0L\",ėg:\"1B18\",ėga:\"1B08\",ėgi:\"1B0K\",ėgo:\"1B0B\",ėgs:\"1B21\",ėgst:\"1B3A\",ėgsta:\"1B3N\",ėgstu:\"1B2O\",ėj:\"1B4U\",ėja:\"1B3Y\",\"ėja \":\"1B0U\",ėjai:\"1B18\",\"ėjai \":\"1B2J\",ėjau:\"1B3S\",\"ėjau \":\"1B7G\",ėje:\"1B1E\",\"ėje \":\"1B29\",ėji:\"1B0T\",ėjim:\"1B17\",ėjo:\"1B6J\",\"ėjo \":\"1B91\",ėjom:\"1B0X\",ėjome:\"1B1T\",ėju:\"1B0K\",ėjus:\"1B0R\",ėję:\"1B09\",ėk:\"1B0Z\",\"ėk \":\"1B14\",ėki:\"1B0Q\",ėkm:\"1B08\",ėko:\"1B06\",ėkt:\"1B09\",ėl:\"1B2K\",\"ėl \":\"1B46\",ėla:\"1B0F\",ėle:\"1B06\",ėli:\"1B0X\",ėlia:\"1B0Q\",ėlu:\"1B0B\",ėly:\"1B0B\",ėlė:\"1B0L\",ėlę:\"1B07\",ėm:\"1B0T\",ėme:\"1B0Y\",\"ėme \":\"1B16\",ėmi:\"1B0H\",ėmė:\"1B0G\",ėmę:\"1B08\",ėn:\"1B08\",ėne:\"1B0B\",ėnu:\"1B06\",ėp:\"1B06\",ėr:\"1B0S\",ėra:\"1B1N\",\"ėra \":\"1B2K\",ėri:\"1B09\",ėrė:\"1B09\",ės:\"1B36\",\"ės \":\"1B60\",ėsi:\"1B1V\",\"ėsi \":\"1B1L\",ėsiu:\"1B0T\",\"ėsiu \":\"1B1M\",ėst:\"1B0A\",ėt:\"1B2M\",ėta:\"1B0G\",ėte:\"1B0O\",\"ėte \":\"1B12\",ėti:\"1B4H\",\"ėti \":\"1B69\",ėtu:\"1B0U\",ėtum:\"1B1C\",\"ėtum \":\"1B1S\",ėtų:\"1B0L\",\"ėtų \":\"1B0Y\",ėv:\"1B0K\",ėva:\"1B10\",ėvas:\"1B11\",\"ėvas \":\"1B26\",ėč:\"1B0E\",ėči:\"1B12\",ėčia:\"1B1L\",ėčiau:\"1B35\",ėš:\"1B02\",ėž:\"1B05\",ę:\"1AAM1B11\",\"ę \":\"1AHC1B1W\",ęb:\"1A08\",ęc:\"1A1N\",ęce:\"1A0Z\",\"ęcej \":\"1A1V\",ęci:\"1A16\",ęcz:\"1A0S\",ęd:\"1A27\",ędz:\"1A3B\",ędzi:\"1A3B\",ędzie:\"1A4M\",ędzy:\"1A17\",\"ędzy \":\"1A1S\",ęg:\"1A05\",ęk:\"1A10\",ękn:\"1A0Q\",ęl:\"1A04\",ęp:\"1A0C\",ęs:\"1A0J1B1X\",\"ęs \":\"1B4Q\",ęst:\"1A0O1B0D\",ęt:\"1A0U\",ęz:\"1A0F\",ęć:\"1A0A\",ęł:\"1A0E\",ęś:\"1A0G\",ęż:\"1A0K\",ě:\"0UBD\",\"ě \":\"0U9I\",ěc:\"0U18\",ěch:\"0U0G\",ěci:\"0U0D\",ěco:\"0U1D\",\"ěco \":\"0U28\",ěd:\"0U1U\",ědě:\"0U24\",ěděl:\"0U2D\",\"ěděl \":\"0U2N\",ědět:\"0U12\",\"ědět \":\"0U1H\",ěh:\"0U0E\",ěj:\"0U1M\",\"ěj \":\"0U0G\",ěja:\"0U0R\",ějak:\"0U18\",ějaké:\"0U0W\",ěje:\"0U0G\",ěji:\"0U0T\",\"ěji \":\"0U1A\",ějš:\"0U0K\",ější:\"0U0X\",\"ější \":\"0U15\",ěk:\"0U1O\",\"ěk \":\"0U0K\",ěkd:\"0U15\",ěkdo:\"0U12\",\"ěkdo \":\"0U1H\",ěkdy:\"0U0R\",\"ěkdy \":\"0U12\",ěko:\"0U0O\",ěkoli:\"0U0R\",ěkt:\"0U0C\",ěku:\"0U0C\",ěl:\"0U89\",\"ěl \":\"0U6S\",ěla:\"0U5Y\",\"ěla \":\"0U1Y\",ělal:\"0U3W\",\"ělal \":\"0U41\",ělali:\"0U0S\",ělat:\"0U3X\",\"ělat \":\"0U5E\",ěle:\"0U0H\",ěli:\"0U1Q\",\"ěli \":\"0U2F\",ělo:\"0U0C\",ělá:\"0U1S\",\"ělá \":\"0U1E\",ělám:\"0U0R\",\"ělám \":\"0U0U\",ěm:\"0U0C\",ěn:\"0U0X\",ěni:\"0U0F\",ění:\"0U0K\",\"ění \":\"0U0U\",ěp:\"0U03\",ěr:\"0U08\",ěs:\"0U0W\",ěst:\"0U1C\",\"ěsto \":\"0U0U\",ěsí:\"0U0E\",ět:\"0U2U\",\"ět \":\"0U26\",ěte:\"0U0F\",ěti:\"0U17\",\"ěti \":\"0U1J\",ětl:\"0U0K\",ětš:\"0U0G\",ěv:\"0U07\",ěz:\"0U0I\",\"ěz \":\"0U0F\",ěč:\"0U05\",ěď:\"0U03\",ěř:\"0U0Q\",ěři:\"0U0L\",\"ěřit \":\"0U0S\",ěří:\"0U0M\",ěš:\"0U08\",ěť:\"0U02\",ěž:\"0U0P\",ěžk:\"0U0J\",ĝ:\"1O36\",ĝa:\"1O23\",\"ĝa \":\"1O0F\",ĝad:\"1O03\",ĝaj:\"1O07\",ĝan:\"1O0C\",ĝar:\"1O08\",ĝas:\"1O27\",\"ĝas \":\"1O3G\",ĝaĵ:\"1O06\",ĝe:\"1O0P\",\"ĝe \":\"1O04\",ĝej:\"1O06\",ĝem:\"1O03\",ĝen:\"1O0E\",ĝer:\"1O0B\",ĝi:\"1O4M\",\"ĝi \":\"1O2W\",ĝia:\"1O05\",ĝig:\"1O03\",ĝin:\"1O1M\",\"ĝin \":\"1O26\",ĝis:\"1O37\",\"ĝis \":\"1O4V\",ĝiĝ:\"1O07\",ĝo:\"1O20\",\"ĝo \":\"1O1I\",ĝoj:\"1O0N\",ĝon:\"1O0Q\",\"ĝon \":\"1O13\",ĝos:\"1O0K\",\"ĝos \":\"1O0W\",ĝu:\"1O0N\",\"ĝu \":\"1O0F\",ĝul:\"1O03\",ĝus:\"1O0G\",ĝust:\"1O0M\",ğ:\"1F63\",\"ğ \":\"1F03\",ğa:\"1F0P\",\"ğa \":\"1F0R\",ğd:\"1F06\",ğe:\"1F0R\",\"ğe \":\"1F0E\",ğen:\"1F0B\",ğer:\"1F1C\",\"ğer \":\"1F13\",ği:\"1F95\",\"ği \":\"1F39\",ğil:\"1F7Q\",\"ğil \":\"1F5I\",ğild:\"1F1W\",ğildi:\"1F2L\",ğili:\"1F1C\",ğilim:\"1F1K\",ğim:\"1F4O\",\"ğim \":\"1F34\",ğimi:\"1F1Y\",\"ğimi \":\"1F1M\",ğin:\"1F8G\",\"ğin \":\"1F18\",ğind:\"1F16\",ğinde:\"1F1L\",ğini:\"1F6U\",\"ğini \":\"1F8J\",ğit:\"1F0A\",ğiz:\"1F0F\",ğiş:\"1F0Z\",ğl:\"1F1A\",ğla:\"1F10\",ğle:\"1F18\",ğlu:\"1F0F\",ğlı:\"1F0W\",ğm:\"1F0E\",ğme:\"1F0B\",ğmu:\"1F0M\",ğr:\"1F1X\",ğra:\"1F0Q\",ğre:\"1F30\",ğren:\"1F24\",ğret:\"1F1E\",ğretm:\"1F1F\",ğru:\"1F17\",\"ğru \":\"1F10\",ğrı:\"1F0D\",ğu:\"1F3T\",\"ğu \":\"1F1Q\",ğuk:\"1F0F\",ğum:\"1F1K\",ğumu:\"1F0W\",ğun:\"1F6A\",ğunu:\"1F5O\",\"ğunu \":\"1F7C\",ğz:\"1F02\",ğü:\"1F0S\",\"ğü \":\"1F0D\",ğüm:\"1F0J\",ğün:\"1F16\",ğı:\"1F5K\",\"ğı \":\"1F21\",ğım:\"1F45\",\"ğım \":\"1F2S\",ğımı:\"1F1I\",\"ğımı \":\"1F1C\",ğın:\"1F7C\",ğına:\"1F0Y\",\"ğına \":\"1F1A\",ğınd:\"1F0Z\",ğında:\"1F1C\",ğını:\"1F61\",\"ğını \":\"1F7M\",ğır:\"1F0M\",ğız:\"1F0L\",ģ:\"1D0D\",ģe:\"1D04\",ģi:\"1D0L\",ģij:\"1D0H\",ģin:\"1D10\",ģinā:\"1D11\",ģē:\"1D04\",ī:\"0T0W1D8D\",\"ī \":\"0T131D17\",īa:\"0T05\",\"īa \":\"0T05\",īam:\"0T06\",īb:\"0T031D1X\",ība:\"1D49\",\"ība \":\"1D2W\",ības:\"1D29\",\"ības \":\"1D5Q\",ībe:\"0T04\",ībi:\"0T02\",ību:\"1D2V\",\"ību \":\"1D3O\",ībā:\"1D15\",\"ībā \":\"1D18\",īc:\"0T0D1D0D\",\"īc \":\"0T04\",īca:\"0T02\",īci:\"0T0B1D0M\",īcu:\"0T07\",īcā:\"0T02\",īcō:\"0T04\",īd:\"0T041D1N\",\"īd \":\"1D0J\",īde:\"0T02\",īdi:\"0T06\",īdz:\"1D50\",\"īdz \":\"1D1Y\",īdzi:\"1D1R\",īdzin:\"1D3Z\",īdzē:\"1D1U\",īdzēt:\"1D3G\",īdzī:\"1D11\",īdē:\"1D0E\",īg:\"1D2Y\",īga:\"1D38\",\"īga \":\"1D25\",īgas:\"1D11\",\"īgas \":\"1D2O\",īgi:\"1D3O\",\"īgi \":\"1D4A\",īgs:\"1D3M\",\"īgs \":\"1D4M\",īgu:\"1D13\",\"īgu \":\"1D11\",īgā:\"1D13\",īj:\"1D1L\",īja:\"1D2E\",\"īja \":\"1D33\",īji:\"1D18\",ījis:\"1D0W\",\"ījis \":\"1D2A\",īju:\"1D1Q\",\"īju \":\"1D17\",ījum:\"1D0U\",ījā:\"1D1C\",ījās:\"1D1G\",\"ījās \":\"1D3Q\",īk:\"1D0S\",\"īk \":\"1D2K\",īl:\"0T021D0J\",īli:\"0T041D0J\",īlu:\"1D11\",\"īlu \":\"1D1C\",īm:\"0T041D0L\",\"īm \":\"1D0Q\",īme:\"1D0E\",īmu:\"0T06\",īmē:\"1D0K\",īmī:\"0T02\",īn:\"0T041D0Z\",īna:\"1D10\",\"īnas \":\"1D1R\",īne:\"0T02\",īni:\"1D0V\",īns:\"0T02\",īnu:\"1D18\",\"īnu \":\"1D1A\",īp:\"1D05\",īpa:\"1D0J\",īps:\"0T02\",īqu:\"0T02\",īr:\"0T041D0M\",īra:\"1D0G\",īre:\"0T06\",īri:\"1D17\",īrij:\"1D0W\",īrs:\"1D0E\",īrā:\"0T02\",īs:\"0T0B1D1A\",\"īs \":\"0T0F1D1Z\",īsc:\"0T02\",īsi:\"0T041D11\",īst:\"0T031D29\",īsti:\"0T031D0U\",\"īsti \":\"1D1R\",īt:\"0T041D32\",\"īt \":\"1D6N\",īta:\"0T031D0H\",īti:\"0T021D2F\",ītie:\"1D2L\",īties:\"1D6K\",īto:\"1D0E\",īts:\"1D0R\",\"īts \":\"1D0Z\",ītu:\"0T031D13\",\"ītu \":\"1D1E\",ītā:\"1D0H\",īv:\"0T051D1S\",īva:\"1D0T\",īve:\"0T021D0T\",īvi:\"0T071D0T\",\"īvi \":\"1D0U\",īvn:\"1D0K\",īvnie:\"1D1W\",īvo:\"1D3C\",\"īvo \":\"1D1N\",īvoj:\"1D1C\",īvoju:\"1D21\",īvot:\"1D0X\",\"īvot \":\"1D1W\",īvs:\"1D0E\",īvī:\"0T02\",īx:\"0T03\",īxi:\"0T06\",īz:\"1D0C\",\"īz \":\"1D13\",īš:\"1D0D\",īša:\"1D0G\",īšu:\"1D0V\",\"īšu \":\"1D15\",į:\"1B2H\",\"į \":\"1B68\",įd:\"1B08\",įdo:\"1B0H\",įdom:\"1B0T\",įe:\"1B02\",įei:\"1B06\",įg:\"1B04\",įk:\"1B04\",įl:\"1B02\",įm:\"1B04\",įma:\"1B08\",įp:\"1B04\",įpr:\"1B09\",įr:\"1B04\",įs:\"1B0S\",įsi:\"1B0X\",įsp:\"1B07\",įst:\"1B0W\",įsta:\"1B0R\",įt:\"1B06\",įti:\"1B08\",įv:\"1B0B\",įvy:\"1B0M\",įvyk:\"1B10\",įė:\"1B02\",įš:\"1B04\",įši:\"1B07\",įž:\"1B0D\",įžo:\"1B09\",įžt:\"1B09\",ı:\"1FIA1L05\",\"ı \":\"1FJR\",\"ı'\":\"1F02\",ıc:\"1F0J\",ıca:\"1F0K\",ıcı:\"1F0V\",ıd:\"1F121L06\",ıda:\"1F0Z\",ıdı:\"1F1W\",ıdır:\"1F1R\",\"ıdır \":\"1F2E\",ıf:\"1F08\",ık:\"1F4Q\",\"ık \":\"1F65\",ıka:\"1F1D\",ıkar:\"1F0Y\",ıkl:\"1F28\",ıkla:\"1F1N\",ıklar:\"1F14\",ıklı:\"1F0X\",ıkm:\"1F0N\",ıkt:\"1F1D\",ıktı:\"1F13\",ıkı:\"1F0Y\",ıl:\"1F4N\",\"ıl \":\"1F3M\",ıla:\"1F33\",ılar:\"1F22\",\"ılar \":\"1F1P\",ıld:\"1F20\",ıldı:\"1F21\",\"ıldı \":\"1F1C\",ıll:\"1F0I\",ılm:\"1F1M\",ılma:\"1F1E\",ılı:\"1F1W\",ım:\"1F8D\",\"ım \":\"1FEZ\",ıma:\"1F11\",\"ıma \":\"1F0V\",ımc:\"1F0G\",ımd:\"1F0U\",ımda:\"1F0V\",ıml:\"1F0D\",ımı:\"1F49\",\"ımı \":\"1F22\",ımız:\"1F1Z\",\"ımız \":\"1F1H\",ın:\"1FFG\",\"ın \":\"1FFK\",ına:\"1F4R\",\"ına \":\"1F4X\",ınc:\"1F0B\",ınd:\"1F9C\",ında:\"1FA4\",\"ında \":\"1F9I\",ından:\"1F3K\",ınl:\"1F0L\",ınt:\"1F0A\",ını:\"1FD9\",\"ını \":\"1FB3\",ının:\"1F23\",\"ının \":\"1F2R\",ınız:\"1F23\",\"ınız \":\"1F20\",ıp:\"1F0A\",\"ıp \":\"1F0L\",ır:\"1F6S\",\"ır \":\"1F6Z\",ıra:\"1F2D\",ırak:\"1F1M\",ırd:\"1F1E\",ırdı:\"1F1H\",\"ırdı \":\"1F15\",ırl:\"1F1K\",ırla:\"1F1B\",ırm:\"1F1E\",ırma:\"1F15\",ırs:\"1F0S\",ırt:\"1F0K\",ırı:\"1F3D\",ırım:\"1F1Z\",\"ırım \":\"1F2M\",ıs:\"1F1N\",ısa:\"1F0H\",ısı:\"1F3F\",ısın:\"1F2F\",\"ısın \":\"1F21\",ıt:\"1F0C\",ıtl:\"1F09\",ıv:\"1F02\",ıy:\"1F5K\",ıya:\"1F0T\",ıyd:\"1F15\",ıydı:\"1F1A\",\"ıydı \":\"1F18\",ıyl:\"1F0M\",ıyo:\"1FAH\",ıyor:\"1FBU\",\"ıyor \":\"1F73\",ıyord:\"1F1W\",ıyors:\"1F1T\",ıyoru:\"1F64\",ıyı:\"1F1S\",ız:\"1F4Y\",\"ız \":\"1F79\",ıza:\"1F0K\",ızc:\"1F1H\",ızca:\"1F1P\",\"ızca \":\"1F1X\",ızd:\"1F0Q\",ızl:\"1F1A\",ızı:\"1F1Y\",\"ızı \":\"1F1E\",ıç:\"1F05\",ığ:\"1F2W\",ığı:\"1F7C\",\"ığı \":\"1F1L\",ığım:\"1F1Q\",ığımı:\"1F14\",ığın:\"1F5B\",ığını:\"1F4Z\",ış:\"1F42\",\"ış \":\"1F2A\",ışa:\"1F1C\",ışar:\"1F0Z\",ışarı:\"1F18\",ışl:\"1F0B\",ışm:\"1F1U\",ışma:\"1F1V\",ışt:\"1F2B\",ıştı:\"1F2M\",\"ıştı \":\"1F1H\",ışı:\"1F2S\",ışıy:\"1F17\",ışıyo:\"1F1M\",ĵ:\"1O0J\",ĵa:\"1O02\",ĵe:\"1O04\",ĵet:\"1O07\",ĵo:\"1O1A\",\"ĵo \":\"1O0U\",ĵoj:\"1O0U\",\"ĵoj \":\"1O0Q\",ĵojn:\"1O0N\",ĵon:\"1O0K\",\"ĵon \":\"1O0W\",ĵu:\"1O07\",ĵur:\"1O04\",ĵus:\"1O08\",ķ:\"1D0P\",ķe:\"1D07\",ķer:\"1D0K\",ķi:\"1D0V\",\"ķi \":\"1D0O\",ķie:\"1D17\",ķiet:\"1D11\",\"ķiet \":\"1D2O\",ķir:\"1D0J\",ķis:\"1D10\",\"ķis \":\"1D18\",ķē:\"1D06\",ķī:\"1D08\",ķīn:\"1D0H\",ĺk:\"0Y02\",ļ:\"1D21\",\"ļ \":\"1D0E\",ļa:\"1D0U\",\"ļa \":\"1D0N\",ļas:\"1D0O\",\"ļas \":\"1D0U\",ļau:\"1D1W\",ļauj:\"1D0W\",ļaut:\"1D0X\",ļi:\"1D0G\",\"ļi \":\"1D1B\",ļie:\"1D0M\",\"ļiem \":\"1D21\",ļo:\"1D19\",ļos:\"1D0E\",ļot:\"1D4A\",ļoti:\"1D5C\",\"ļoti \":\"1DCW\",ļu:\"1D0P\",\"ļu \":\"1D1V\",ļuv:\"1D0U\",ļuva:\"1D0U\",\"ļuva \":\"1D25\",ļā:\"1D0C\",\"ļā \":\"1D0M\",ļū:\"1D0D\",ļūd:\"1D0M\",ļūs:\"1D0G\",ļūt:\"1D0J\",ľ:\"0Y33\",\"ľ \":\"0Y0P\",ľa:\"0Y26\",\"ľa \":\"0Y2T\",ľad:\"0Y18\",ľah:\"0Y0L\",ľk:\"0Y1O\",ľko:\"0Y2D\",\"ľko \":\"0Y3K\",ľký:\"0Y0I\",ľm:\"0Y1C\",ľmi:\"0Y3G\",\"ľmi \":\"0Y5U\",ľn:\"0Y0B\",ľo:\"0Y0H\",ľom:\"0Y0D\",ľov:\"0Y0S\",ľs:\"0Y07\",ľsk:\"0Y0G\",ľt:\"0Y03\",ľu:\"0Y13\",\"ľu \":\"0Y0F\",ľub:\"0Y0E\",ľud:\"0Y1Q\",ľudi:\"0Y1H\",ľudia:\"0Y1U\",\"ľudí \":\"0Y10\",ľv:\"0Y06\",ľve:\"0Y0D\",ľú:\"0Y0N\",ľúb:\"0Y13\",ľúben:\"0Y0Y\",ľúbi:\"0Y10\",ľúč:\"0Y0F\",ł:\"1AD6\",\"ł \":\"1A9M\",ła:\"1A7F\",\"ła \":\"1A7U\",ład:\"1A16\",łam:\"1A26\",\"łam \":\"1A29\",łaś:\"1A18\",łb:\"1A10\",łby:\"1A24\",łbym:\"1A1Z\",\"łbym \":\"1A35\",łc:\"1A03\",łe:\"1A66\",łem:\"1A8V\",\"łem \":\"1ACC\",łeś:\"1A2J\",\"łeś \":\"1A3N\",łk:\"1A0M\",łm:\"1A03\",łn:\"1A0H\",ło:\"1A5O\",\"ło \":\"1A4S\",łod:\"1A17\",łow:\"1A27\",łowi:\"1A18\",łowie:\"1A1S\",łoś:\"1A0S\",łp:\"1A02\",łt:\"1A03\",łu:\"1A1Q\",ług:\"1A12\",ły:\"1A2O\",\"ły \":\"1A31\",łys:\"1A0V\",łó:\"1A0F\",łą:\"1A0H\",łę:\"1A09\",łż:\"1A02\",ń:\"1A111L03\",\"ń \":\"1A0V1L08\",ńc:\"1A0Z\",ńcz:\"1A1A\",ńczy:\"1A1C\",ńs:\"1A0S\",ńsk:\"1A0W\",ņ:\"1D47\",ņa:\"1D3A\",\"ņa \":\"1D80\",ņai:\"1D1J\",\"ņai \":\"1D1S\",ņam:\"1D2O\",\"ņam \":\"1D3F\",ņas:\"1D1O\",\"ņas \":\"1D23\",ņe:\"1D0G\",ņem:\"1D1X\",ņemt:\"1D1J\",ņi:\"1D1K\",\"ņi \":\"1D50\",ņie:\"1D1M\",ņiem:\"1D21\",\"ņiem \":\"1D58\",ņo:\"1D0D\",ņoj:\"1D0R\",ņu:\"1D16\",\"ņu \":\"1D3V\",ņus:\"1D0U\",\"ņus \":\"1D13\",ņā:\"1D07\",\"ņā \":\"1D0J\",ņē:\"1D05\",ņēm:\"1D0K\",ņš:\"1D2D\",\"ņš \":\"1D9L\",ň:\"0U0B0Y131N7Z\",\"ň \":\"0U0J0Y151NH4\",ňa:\"0Y111N31\",\"ňa \":\"0Y1J1N5Q\",ňaj:\"0Y0G\",ňaz:\"0Y0E\",ňd:\"1N0F\",ňde:\"1N0G\",ňe:\"1N0W\",\"ňe \":\"1N1E\",ňh:\"0Y05\",ňi:\"1N2O\",\"ňi \":\"1N19\",ňiz:\"1N3Y\",\"ňiz \":\"1N30\",ňizi:\"1N13\",\"ňizi \":\"1N1B\",ňizm:\"1N1B\",ňizmi:\"1N1U\",ňk:\"1N0M\",ňky:\"1N0T\",\"ňky \":\"1N10\",ňl:\"1N16\",ňle:\"1N1B\",ňleý:\"1N1B\",ňleýä:\"1N1S\",ňli:\"1N0Q\",ňlis:\"1N12\",ňm:\"1N11\",ňmi:\"1N1L\",\"ňmi \":\"1N2B\",ňmy:\"1N0F\",ňo:\"0U020Y0A1N05\",ňr:\"1N06\",ňs:\"1N04\",ňt:\"0U040Y03\",ňu:\"0U030Y0D1N05\",\"ňu \":\"0Y0D\",ňuj:\"0U060Y0L\",ňuje:\"0U040Y0X\",ňy:\"1N2A\",\"ňy \":\"1N1B\",ňyz:\"1N2L\",\"ňyz \":\"1N27\",ňyş:\"1N0J\",ňz:\"1N0A\",ňze:\"1N0E\",ňç:\"1N04\",ňü:\"1N06\",ō:\"0T11\",\"ō \":\"0T11\",ōb:\"0T02\",ōbī:\"0T04\",ōl:\"0T03\",ōlī:\"0T02\",ōm:\"0T0S\",ōma:\"0T0J\",ōman:\"0T0P\",ōmā:\"0T1C\",ōmās:\"0T2D\",\"ōmās \":\"0T2G\",ōn:\"0T0H\",\"ōn \":\"0T0L\",ōne:\"0T02\",ōnn:\"0T06\",ōns:\"0T04\",ōnā:\"0T03\",ōr:\"0T08\",ōra:\"0T02\",ōre:\"0T03\",ōri:\"0T02\",ōrā:\"0T04\",ōrē:\"0T04\",ōs:\"0T0I\",\"ōs \":\"0T10\",ōsc:\"0T04\",ōsu:\"0T02\",ōt:\"0T02\",ōti:\"0T02\",ő:\"143H\",\"ő \":\"1436\",őa:\"1402\",őb:\"140J\",őbb:\"140E\",őbe:\"140K\",őben:\"1414\",\"őben \":\"1416\",őd:\"140K\",őe:\"1405\",őf:\"1402\",őg:\"1403\",őh:\"1402\",ői:\"1404\",őj:\"1409\",ők:\"140U\",\"ők \":\"140N\",őke:\"140L\",őket:\"141D\",\"őket \":\"141F\",ől:\"1425\",\"ől \":\"142V\",őle:\"140V\",őm:\"140A\",őn:\"140J\",őp:\"1402\",őr:\"140S\",őre:\"140G\",ős:\"1418\",\"ős \":\"140J\",őse:\"140D\",ősz:\"140O\",ősé:\"140B\",őt:\"141O\",\"őt \":\"141L\",őtt:\"1418\",\"őtt \":\"142F\",őv:\"140C\",ővé:\"140B\",őz:\"140I\",œ:\"0L040T02\",œil:\"0L06\",œl:\"0T02\",œli:\"0T02\",œn:\"0T02\",œna:\"0T02\",œni:\"0T04\",œu:\"0L07\",œuf:\"0L06\",œur:\"0L0P\",\"œur \":\"0L12\",ŕ:\"0Y02\",ŕm:\"0Y03\",ŕt:\"0Y02\",ř:\"0U6R\",\"ř \":\"0U0G\",řa:\"0U05\",ře:\"0U85\",\"ře \":\"0U22\",řeb:\"0U2F\",řebu:\"0U2S\",řebuj:\"0U3T\",řec:\"0U0C\",řed:\"0U29\",\"řed \":\"0U1G\",řej:\"0U0G\",řek:\"0U4L\",řekl:\"0U5D\",\"řekl \":\"0U5F\",řekla:\"0U1A\",řekn:\"0U18\",řekni:\"0U0S\",řel:\"0U19\",\"řel \":\"0U12\",řem:\"0U0I\",řen:\"0U0O\",řes:\"0U1T\",řest:\"0U1J\",řesta:\"0U1O\",řeč:\"0U0D\",řeš:\"0U0F\",ři:\"0U3Z\",\"ři \":\"0U1U\",řij:\"0U1F\",řijd:\"0U0V\",řijde:\"0U10\",řil:\"0U0S\",\"řil \":\"0U0P\",řin:\"0U0G\",řip:\"0U0O\",řipr:\"0U0R\",řipra:\"0U12\",řit:\"0U0W\",\"řit \":\"0U18\",řiš:\"0U0S\",řiše:\"0U0V\",řišel:\"0U17\",řk:\"0U03\",řo:\"0U02\",řs:\"0U02\",řu:\"0U02\",řá:\"0U0T\",řád:\"0U0S\",\"řád \":\"0U0T\",řát:\"0U0N\",řáte:\"0U10\",řátel:\"0U1E\",ří:\"0U4B\",\"ří \":\"0U1B\",říc:\"0U0V\",říct:\"0U0Z\",\"říct \":\"0U1D\",říd:\"0U0M\",řík:\"0U1H\",říka:\"0U0W\",říká:\"0U15\",\"říká \":\"0U13\",říl:\"0U0R\",říli:\"0U10\",říliš:\"0U1F\",řím:\"0U0O\",řít:\"0U14\",říte:\"0U14\",řítel:\"0U1E\",řív:\"0U0G\",říš:\"0U0I\",ś:\"1A5Z\",\"ś \":\"1A4S\",śc:\"1A2J\",ści:\"1A58\",\"ści \":\"1A2W\",ście:\"1A2G\",\"ście \":\"1A39\",śl:\"1A20\",śli:\"1A28\",\"śli \":\"1A1Q\",ślę:\"1A0Q\",śm:\"1A1Z\",śmi:\"1A17\",śmie:\"1A1B\",śmy:\"1A2Y\",\"śmy \":\"1A48\",śn:\"1A15\",śni:\"1A29\",śnie:\"1A2B\",\"śnie \":\"1A22\",śp:\"1A0C\",śr:\"1A08\",św:\"1A0V\",świ:\"1A1T\",ść:\"1A21\",\"ść \":\"1A45\",ŝ:\"1O2C\",ŝa:\"1O27\",ŝaj:\"1O0S\",ŝajn:\"1O18\",ŝal:\"1O04\",ŝan:\"1O0O\",ŝanĝ:\"1O0M\",ŝar:\"1O03\",ŝas:\"1O06\",ŝat:\"1O1S\",ŝata:\"1O1W\",ŝatas:\"1O3F\",ŝe:\"1O05\",ŝer:\"1O04\",ŝi:\"1O3P\",\"ŝi \":\"1O4D\",ŝia:\"1O0P\",\"ŝia \":\"1O0O\",ŝin:\"1O0Q\",\"ŝin \":\"1O0Z\",ŝip:\"1O06\",ŝir:\"1O03\",ŝis:\"1O09\",ŝl:\"1O04\",ŝlo:\"1O06\",ŝo:\"1O0D\",\"ŝo \":\"1O06\",ŝoj:\"1O06\",ŝon:\"1O04\",ŝp:\"1O03\",ŝpa:\"1O05\",ŝt:\"1O0I\",ŝta:\"1O05\",ŝte:\"1O0B\",ŝto:\"1O09\",ŝtu:\"1O03\",ŝu:\"1O08\",ŝul:\"1O05\",ŝuo:\"1O04\",ŝv:\"1O02\",ş:\"150H1F731N72\",\"ş \":\"15031F2W1N2Q\",şa:\"15031F3L1N40\",\"şa \":\"15081F0G1N0J\",şab:\"1F0I\",şac:\"1F0G\",şad:\"1F0H1N0G\",şag:\"1N0E\",şak:\"1F0A1N0E\",şam:\"1F1X1N1L\",\"şam \":\"1F0Y1N0U\",şan:\"1F161N13\",şar:\"1F311N1W\",şark:\"1F0Y\",şarkı:\"1F1A\",şary:\"1N1D\",şarı:\"1F1I\",şaý:\"1N13\",şaýa:\"1N1G\",şaýar:\"1N1N\",şaş:\"1F0K\",şd:\"1N1R\",şda:\"1N0S\",şdi:\"1N0S\",şdy:\"1N1S\",\"şdy \":\"1N10\",şe:\"15031F4F1N2O\",\"şe \":\"1F121N12\",şeh:\"1F0J\",şek:\"1F1I1N0B\",şel:\"1F0L\",şem:\"1F0C\",şen:\"1F031N0Z\",şenb:\"1N0X\",şenbe:\"1N17\",şer:\"1F031N0F\",şey:\"1F7G\",\"şey \":\"1F55\",şeyi:\"1F2B\",\"şeyi \":\"1F2H\",şeyle:\"1F16\",şeý:\"1N26\",şeýl:\"1N31\",şeýle:\"1N43\",şg:\"1F081N11\",şga:\"1N1P\",\"şga \":\"1N19\",şgal:\"1N0X\",şgala:\"1N17\",şgu:\"1F0K1N09\",şi:\"150I1F351N32\",\"şi \":\"151C1F1Q1N1P\",şid:\"1F0B1N0A\",şig:\"1N0A\",şik:\"1F0J1N0W\",şim:\"1F2W1N0K\",şimd:\"1F2A\",şimdi:\"1F31\",şin:\"15081F121N0J\",şip:\"1N0J\",şir:\"1F0S1N0I\",şit:\"15061F081N0N\",şiy:\"1F0C\",şiň:\"1N0G\",şiş:\"1F0B\",şj:\"1N05\",şk:\"1F171N05\",şka:\"1F1Q\",\"şka \":\"1F1E\",şke:\"1F0Q\",şki:\"1F09\",şkı:\"1F0B\",şl:\"1F251N2Y\",şla:\"1F3R1N2H\",şlad:\"1F0Z1N0S\",şlady:\"1N12\",şladı:\"1F1B\",şlan:\"1F17\",şlar:\"1F1K1N0P\",şları:\"1F1I\",şle:\"1F141N28\",şler:\"1F101N18\",şleri:\"1F121N1I\",şleý:\"1N10\",şleýä:\"1N1D\",şli:\"1F051N0I\",şly:\"1N0O\",şlı:\"1F0S\",şm:\"1F211N1F\",şma:\"1F4D1N1J\",şmak:\"1F1B1N0N\",\"şmak \":\"1F1J1N0O\",şmay:\"1F10\",şme:\"1F0N1N13\",şo:\"1F021N1R\",şol:\"1N18\",\"şol \":\"1N1Q\",şon:\"1N28\",şony:\"1N2G\",\"şony \":\"1N3D\",şs:\"1F04\",şt:\"150C1F2Q1N08\",\"şt \":\"1N0B\",şta:\"1F0C\",şte:\"150M1F0M\",şti:\"150P1F1V\",ştir:\"1F1A\",ştu:\"1F16\",ştü:\"1F0F\",ştı:\"1F33\",\"ştı \":\"1F1D\",ştır:\"1F0X\",şu:\"1F131N25\",\"şu \":\"1F0Z1N2C\",şul:\"1F0K1N0E\",şun:\"1F0B1N0Q\",şur:\"1F0F\",şuy:\"1F0H\",şuş:\"1N0H\",şv:\"1F05\",şy:\"1F021N2S\",\"şy \":\"1N13\",şyg:\"1N0D\",şyk:\"1N0G\",şyl:\"1N0B\",şym:\"1N0I\",şyn:\"1N1K\",şynda:\"1N12\",şyny:\"1N0Z\",şyp:\"1N0I\",şyň:\"1N0I\",şä:\"1N09\",şäh:\"1N0G\",şç:\"1F04\",şü:\"1F251N1J\",şün:\"1F4Q1N2E\",şünd:\"1F1O1N0Z\",şündi:\"1N1D\",şündü:\"1F29\",şünm:\"1F0Z1N0L\",şünü:\"1F2G\",şünüy:\"1F32\",şüp:\"1F0F\",şý:\"1N0M\",şýa:\"1N0U\",şýar:\"1N0X\",şýä:\"1N0G\",şı:\"1F3O\",\"şı \":\"1F1C\",şık:\"1F14\",\"şık \":\"1F0W\",şıl:\"1F0P\",şım:\"1F0Z\",şın:\"1F2F\",şınd:\"1F13\",şında:\"1F1B\",şır:\"1F14\",şıy:\"1F25\",şıyo:\"1F28\",şıyor:\"1F32\",š:\"0U6T0V7E0Y6X1B821C031D5E\",\"š \":\"0U5D0V610Y5Q1BCG1D2X\",ša:\"0U080V1Q0Y121B1Q1D25\",\"ša \":\"0V0V0Y0O1B041D0J\",šai:\"1B0C\",šaj:\"0V080Y051D0Y\",šajā:\"1D13\",\"šajā \":\"1D2A\",šak:\"0U020V040Y0M1B03\",\"šak \":\"0U030Y0X\",šal:\"0V0E0Y0C1B1O\",šali:\"0V041B15\",šalt:\"1B0Q\",šam:\"0V071B021D0N\",šan:\"0U060V0J0Y051B041D4Y\",šana:\"1D3M\",\"šana \":\"1D3G\",šanas:\"1D4U\",šanos:\"1D1R\",šanu:\"1D0X\",\"šanu \":\"1D2F\",šanā:\"1D1C\",šanās:\"1D2T\",šao:\"0V1K\",\"šao \":\"0V1W\",šas:\"1B081D0J\",šau:\"1B231D15\",\"šau \":\"1B2K\",šaub:\"1D0W\",šb:\"1B04\",šd:\"1B04\",še:\"0U3U0V240Y341B0Q1D0G\",\"še \":\"0U1B0V3O0Y181B02\",šec:\"0U1S\",šech:\"0U2V\",šechn:\"0U3P\",šei:\"1B1A1D1L\",šeim:\"1B0R\",šeit:\"1B0M1D21\",\"šeit \":\"1D58\",šej:\"0U020Y0S\",\"šej \":\"0Y1C\",šel:\"0U2U1B02\",\"šel \":\"0U48\",šem:\"0U0E0V0I0Y07\",šen:\"0U0O0V0O0Y0P1B03\",šet:\"0U0H0V070Y4L\",šetc:\"0Y23\",šetci:\"0Y2L\",šetk:\"0Y5N\",šetko:\"0Y42\",šetky:\"0Y1K\",šetký:\"0Y1C\",šeš:\"0V0E1B0I\",šg:\"1B0A\",šge:\"1B09\",šgi:\"1B08\",ši:\"0U1C0V180Y351B4Q1D1N\",\"ši \":\"0U0J0V0R0Y0G1B0H1D3Z\",šia:\"0Y151B24\",\"šia \":\"0Y1H1B04\",šian:\"1B27\",šiand:\"1B4K\",šic:\"0U0Z\",šich:\"0U1M\",šichn:\"0U25\",šie:\"0Y5B1B0E1D13\",\"šie \":\"0Y3E1B03\",šiel:\"0Y4S\",\"šiel \":\"0Y5W\",\"šiem \":\"1D1R\",šil:\"0U0I0V0B0Y081B0B\",šim:\"0U060V0E0Y071B1K\",šimt:\"1B27\",\"šimt \":\"1B2O\",šin:\"0U070V090Y091B1A\",šio:\"0V0K1B0S\",šir:\"0V0E1B0I\",šird:\"1B0R\",šis:\"1B0C1D1I\",\"šis \":\"1B0J1D1Y\",šit:\"0U0B0V0B1B4R\",šita:\"1B3I\",\"šita \":\"1B2D\",šitas:\"1B3W\",šito:\"1B1R\",\"šito \":\"1B24\",šitą:\"1B21\",\"šitą \":\"1B46\",šiu:\"1B0M\",šią:\"1B0B\",šj:\"1B02\",šk:\"0U100V100Y151B2E\",\"šk \":\"1B0D\",ška:\"0U080V0L0Y0Q1B30\",škai:\"1B39\",\"škai \":\"1B6L\",škas:\"1B0V\",\"škas \":\"1B1S\",ške:\"0U020V0B1B0B\",ški:\"0V0A1B1A\",škin:\"1B11\",ško:\"0U160V1H0Y181B0O\",škol:\"0U1M0V0U0Y1W\",školy:\"0U150Y1B\",šku:\"0U090V080Y0B1B0B\",šky:\"0U080Y0F\",šką:\"1B0G\",\"šką \":\"1B0Q\",šl:\"0U0T0V0P0Y0Y1B0B\",šla:\"0U0J0V0H0Y141B0A\",\"šla \":\"0U0V0V0K0Y1W\",šle:\"0U0C0V091B06\",šli:\"0U0I0V0B0Y151B06\",\"šli \":\"0U0T0V0D0Y1K\",šm:\"1B0E\",šmi:\"1B08\",šmo:\"1B0F\",šn:\"0U090V0J0Y0D1B07\",šne:\"0Y0A1B0C\",šnj:\"0V0U\",šo:\"0U030V060Y0A1B0L1D1L\",\"šo \":\"1B0G1D30\",šod:\"1D1Z\",šodi:\"1D2J\",šodie:\"1D6G\",šok:\"0U030V040Y051B0P\",šom:\"0Y071B0A\",šos:\"1D0R\",\"šos \":\"1D0X\",šp:\"0U0H0V020Y081B04\",špa:\"0U0R0V030Y0A1B03\",špat:\"0U0Y1B02\",špatn:\"0U1C\",šr:\"1B041D04\",šs:\"0Y031B0G1D06\",\"šs \":\"1D0M\",šsi:\"1B0R\",šsk:\"0Y071B08\",šsp:\"1B06\",št:\"0U2J0V500Y221B20\",šta:\"0V600Y041B1T\",\"šta \":\"0U020V6H1B0P\",štai:\"1B13\",\"štai \":\"1B21\",šte:\"0U030V150Y2D1B0I\",\"šte \":\"0U040V0M0Y3I1B04\",šti:\"0U0V0V0G0Y0T1B15\",\"šti \":\"0U080V061B0R\",štin:\"0U150V030Y1C1B0C\",što:\"0V6B1B0F\",\"što \":\"0V7E1B0G\",štr:\"0V031B07\",štu:\"0V070Y0G1B0R\",ští:\"0U0R0Y0L\",štívi:\"0U0N0Y12\",štą:\"1B07\",ště:\"0U2Y\",\"ště \":\"0U3L\",štį:\"1B08\",šu:\"0U050V090Y091B0M1D18\",\"šu \":\"0U020V0E0Y0E1B051D4U\",šun:\"1B0N\",šuo:\"1B0G\",\"šuo \":\"1B0Q\",šus:\"1B08\",šv:\"0U020V030Y041B0U\",šva:\"0V031B0P\",šve:\"0V051B0L\",švi:\"0Y081B0O\",švie:\"1B0Q\",švy:\"1B0F\",šy:\"1B0I\",šyk:\"1B08\",šyp:\"1B09\",šyt:\"1B0O\",šyti:\"1B0S\",\"šyti \":\"1B1N\",šá:\"0U020Y03\",šé:\"0U02\",ší:\"0U250Y0X\",\"ší \":\"0U3B0Y1H\",ším:\"0U0P0Y0L\",\"ším \":\"0U0Z0Y0X\",šā:\"1D0K\",\"šā \":\"1D0J\",šām:\"1D18\",\"šām \":\"1D1J\",šć:\"0V06\",šč:\"1B0F\",šči:\"1B17\",ščia:\"1B0R\",šė:\"1B0I\",\"šė \":\"1B0Q\",šėj:\"1B0J\",šę:\"1B06\",šęs:\"1B0C\",šī:\"1D0U\",\"šī \":\"1D1E\",šīn:\"1D1C\",šīnu:\"1D0S\",\"šīnu \":\"1D21\",šīs:\"1D0G\",šį:\"1B09\",\"šį \":\"1B0K\",šķ:\"1D0I\",šķi:\"1D1H\",šķie:\"1D17\",šķiet:\"1D2O\",šľ:\"0Y04\",šņ:\"1D03\",šš:\"0U020Y03\",šť:\"0U0D0Y0O\",šťa:\"0U0K0Y1Q\",šťas:\"0U0U0Y2L\",šťast:\"0U160Y38\",šū:\"1B02\",ţ:\"150J\",ţa:\"1505\",ţe:\"1504\",ţi:\"150V\",\"ţi \":\"151O\",ţu:\"1502\",ţă:\"1504\",ť:\"0U0B0Y5N\",\"ť \":\"0U0G0YCA\",ťa:\"0U0A0Y2H\",\"ťa \":\"0Y33\",ťah:\"0Y0G\",ťas:\"0U0I0Y1I\",ťast:\"0U0U0Y2L\",ťastn:\"0U160Y2D\",ťaž:\"0Y12\",ťažk:\"0Y1B\",ťd:\"0Y02\",ťo:\"0Y05\",ťt:\"0Y02\",ū:\"0T091B211D39\",\"ū \":\"1B04\",ūc:\"0T02\",\"ūc \":\"0T02\",ūd:\"0T031B0D1D15\",ūda:\"1B051D0E\",ūde:\"1D13\",ūden:\"1D1A\",ūdens:\"1D2A\",ūdi:\"0T021B0E\",ūdz:\"1D30\",ūdzu:\"1D2P\",\"ūdzu \":\"1D6T\",ūdē:\"0T02\",ūg:\"1B02\",ūk:\"1B0O1D0A\",\"ūk \":\"1B0D\",ūki:\"1B08\",ūks:\"1B0G1D0H\",ūksta:\"1B1H\",ūky:\"1B0C\",ūl:\"1B06\",ūly:\"1B08\",ūm:\"0T021B02\",ūmp:\"0T02\",ūn:\"0T031B0H\",ūna:\"1B0I\",ūni:\"0T031B03\",ūnu:\"1B0D\",ūp:\"1B061D08\",ūpi:\"1B0C\",ūr:\"0T0B1B0U1D0A\",\"ūr \":\"0T0C\",ūra:\"0T051B071D0N\",ūri:\"1B0H\",ūro:\"1B09\",ūru:\"0T06\",ūrė:\"1B15\",ūs:\"0T031B321D2M\",\"ūs \":\"0T021B561D6L\",ūsi:\"1B0G\",ūst:\"1B051D0V\",ūsu:\"1D34\",\"ūsu \":\"1D3Y\",ūsā:\"0T03\",ūsų:\"1B2S\",\"ūsų \":\"1B4G\",ūt:\"0T021B0Y1D20\",\"ūt \":\"1B0H1D38\",ūta:\"1D0T\",ūti:\"1B1J1D14\",\"ūti \":\"1B1V1D0W\",ūtu:\"1B041D1Z\",\"ūtu \":\"1D2J\",ūtī:\"1D0T\",ūtų:\"1B0D\",ūz:\"1B0E1D0B\",ūzi:\"1B0N1D15\",ūzik:\"1D17\",ūzika:\"1D1R\",ūziš:\"1B0T\",ūzišk:\"1B1O\",ūzų:\"1B0F\",ūč:\"1B04\",ūči:\"1B0C\",ūš:\"1D04\",ūž:\"1D04\",ŭ:\"1O26\",\"ŭ \":\"1O3X\",ŭa:\"1O07\",\"ŭa \":\"1O05\",ŭd:\"1O0H\",ŭda:\"1O06\",ŭdi:\"1O0I\",ŭe:\"1O07\",\"ŭe \":\"1O08\",ŭg:\"1O04\",ŭga:\"1O04\",ŭi:\"1O03\",ŭl:\"1O03\",ŭr:\"1O0I\",ŭra:\"1O07\",ŭre:\"1O04\",ŭri:\"1O09\",ŭro:\"1O0A\",ŭs:\"1O0A\",ŭsk:\"1O0A\",ŭst:\"1O07\",ŭt:\"1O0M\",ŭte:\"1O04\",ŭto:\"1O0R\",ŭtu:\"1O03\",ŭv:\"1O02\",ŭz:\"1O06\",ŭzi:\"1O03\",ŭzo:\"1O04\",ů:\"0U2T\",\"ů \":\"0U17\",ůb:\"0U0A\",ůbe:\"0U0K\",ůbec:\"0U0X\",\"ůbec \":\"0U1A\",ůj:\"0U1R\",\"ůj \":\"0U2W\",ůjd:\"0U0G\",ůk:\"0U02\",ůl:\"0U0J\",\"ůl \":\"0U0D\",ůle:\"0U0D\",ůleži:\"0U0S\",ůli:\"0U0C\",ům:\"0U0I\",\"ům \":\"0U10\",ůr:\"0U04\",ůs:\"0U0N\",ůso:\"0U0C\",ůst:\"0U0Z\",ůsta:\"0U1E\",ůstat:\"0U0R\",ův:\"0U0F\",\"ův \":\"0U0D\",ůvo:\"0U0C\",ůz:\"0U06\",ůž:\"0U1T\",ůže:\"0U2N\",\"ůže \":\"0U1W\",ůžem:\"0U0O\",ůžeme:\"0U0Y\",ůžete:\"0U0V\",ůžeš:\"0U17\",\"ůžeš \":\"0U1O\",ůžu:\"0U0V\",\"ůžu \":\"0U1E\",ű:\"140Q\",\"ű \":\"140N\",űe:\"1405\",űj:\"1402\",űk:\"1406\",űl:\"1408\",űn:\"140K\",űni:\"140D\",\"űnik \":\"140Y\",űr:\"1405\",űs:\"1404\",űt:\"1406\",űv:\"1408\",űz:\"1407\",ų:\"1B2D\",\"ų \":\"1B7Z\",ųj:\"1B08\",ųjų:\"1B0M\",\"ųjų \":\"1B10\",ųs:\"1B02\",ź:\"1A0Q\",\"ź \":\"1A0M\",źc:\"1A02\",źd:\"1A06\",źl:\"1A05\",źm:\"1A05\",źn:\"1A0K\",źni:\"1A0X\",źw:\"1A02\",źć:\"1A04\",ż:\"1A6C\",\"ż \":\"1A2I\",ża:\"1A16\",żc:\"1A07\",żd:\"1A0J\",że:\"1A6F\",\"że \":\"1A97\",żeb:\"1A1D\",żeby:\"1A1Y\",\"żeby \":\"1A28\",żes:\"1A0X\",żesz:\"1A1B\",\"żesz \":\"1A24\",żk:\"1A0V\",żl:\"1A07\",żn:\"1A10\",żo:\"1A0V\",\"żo \":\"1A0W\",żs:\"1A07\",żu:\"1A05\",ży:\"1A2D\",\"ży \":\"1A0X\",życ:\"1A1J\",życi:\"1A1E\",żó:\"1A03\",żą:\"1A05\",żę:\"1A03\",ž:\"0U7Q0V3A0Y6B1B3T1D0X1N03\",\"ž \":\"0U4B0V050Y1Y1B0R\",ža:\"0U060V0V0Y0K1B1A1D07\",žad:\"0U051B0P\",žai:\"1B1H\",žaid:\"1B13\",žais:\"1B0Q\",žal:\"0U030V0E0Y0D1B0B\",žas:\"0U020V080Y071B0H1D0E\",žau:\"1B07\",žb:\"0V040Y02\",žd:\"0U190V080Y1D1B0E\",žda:\"0V0L1B0H\",žde:\"0Y0E1B04\",ždu:\"0U031B08\",ždy:\"0U0X0Y12\",\"ždy \":\"0U0P0Y1N\",ždyc:\"0U0R0Y08\",ždyck:\"0U120Y0A\",ždé:\"0U0D0Y07\",ždý:\"0U0T0Y1B\",\"ždý \":\"0U190Y28\",že:\"0U8M0V3Q0Y811B0L\",\"že \":\"0UCX0V2I0YDM1B02\",žei:\"1B0D\",žel:\"0U0T0V370Y0T1B02\",žele:\"0U050V16\",želeo:\"0V20\",želi:\"0U020V2J1B02\",želim:\"0V3G\",želiš:\"0V1Q\",žem:\"0U0J0V1C0Y2J1B0M\",\"žem \":\"0U030V0U0Y3B\",žeme:\"0U0R0Y10\",\"žeme \":\"0U120Y19\",\"žemo \":\"0V1Q\",žen:\"0U1N0V150Y1T1B09\",žena:\"0U0U0V0J0Y16\",\"žena \":\"0U0V0V180Y18\",žet:\"0U0L0V0I0Y0M\",žete:\"0U0O0V0K0Y12\",\"žete \":\"0U0X0V1G0Y1B\",žeš:\"0U0U0V1V0Y0Z\",\"žeš \":\"0U1D0V280Y1O\",žg:\"1B02\",ži:\"0U2A0V280Y3D1B5Q1D0F\",\"ži \":\"0U0D0V110Y0J1B0F1D1I\",žia:\"0Y1T1B30\",\"žia \":\"0Y091B0R\",žiad:\"0Y1L\",žiadn:\"0Y13\",žiai:\"1B0W\",\"žiai \":\"1B1K\",žiau:\"1B24\",\"žiau \":\"1B23\",žic:\"0Y0G\",žie:\"1B0E\",žij:\"0U0S0V020Y12\",žije:\"0U0T0Y1J\",\"žije \":\"0U0U0Y15\",žil:\"0U0Y0V070Y121B02\",\"žil \":\"0U120Y11\",žim:\"0V0F1B0C\",žin:\"0V041B6T\",žina:\"1B45\",žinai:\"1B2R\",žinau:\"1B5U\",žino:\"1B5G\",\"žino \":\"1B3M\",žinoj:\"1B3F\",žinom:\"1B1K\",žinot:\"1B2O\",žio:\"0V0D1B11\",\"žio \":\"0V0F1B0S\",žit:\"0U170V090Y12\",žiu:\"1B22\",žiuo:\"1B1D\",\"žius \":\"1B1E\",živ:\"0U1B0V3L0Y1B\",živi:\"0V18\",živo:\"0U1S0V1U0Y1S\",život:\"0U2D0V4I0Y22\",žič:\"0Y0G\",žiť:\"0Y0Y\",\"žiť \":\"0Y1M\",žiū:\"1B1F\",žiūr:\"1B2A\",žiūrė:\"1B3H\",žių:\"1B0O\",\"žių \":\"1B13\",žk:\"0U0G0Y0D1B0L\",žka:\"0U031B0J\",žki:\"1B08\",žko:\"0U040Y071B08\",žké:\"0U0A0Y0D\",žką:\"1B0F\",žl:\"0U050V020Y031B02\",žm:\"1B1A\",žmi:\"1B0R\",žmir:\"1B0W\",žmirš:\"1B1V\",žmo:\"1B2P\",žmog:\"1B1J\",žmogu:\"1B2K\",žmon:\"1B2S\",žmoni:\"1B1R\",žmonė:\"1B2A\",žn:\"0U0R0V0F0Y0P1B0A\",žna:\"0V061B0L\",žnai:\"1B0Y\",\"žnai \":\"1B1Y\",žni:\"0U030V090Y0D1B03\",žno:\"0U070V0F0Y0R\",žná:\"0U0H\",\"žná \":\"0U0S\",žné:\"0U0C0Y0A\",žně:\"0U0C\",žo:\"0U0A0V030Y061B0O1D05\",\"žo \":\"1B0E\",žod:\"1B0Z\",žodž:\"1B0Z\",žodži:\"1B21\",žov:\"0U0I0Y0C1B05\",žp:\"1B02\",žr:\"1B02\",žs:\"0U020Y051B0G1D04\",\"žs \":\"1D0E\",žsi:\"1B14\",žt:\"0U020Y051B0B\",žte:\"0U040Y0C1B08\",žti:\"1B0D\",žu:\"0U0O0V0C0Y091B0K1D0B\",\"žu \":\"0U100V0C0Y0B1B031D0O\",žud:\"1B0B\",žuj:\"0U0C0V050Y0B\",žus:\"1B0B\",žuv:\"1B0G\",žv:\"1B0B\",žva:\"1B0C\",žve:\"1B0A\",žy:\"1B08\",žym:\"1B09\",žá:\"0U0W\",žád:\"0U1K\",žáda:\"0U0S\",žádal:\"0U0W\",žádn:\"0U1J\",žádné:\"0U0Z\",ží:\"0U140Y0N\",\"ží \":\"0U100Y0P\",žít:\"0U0E\",žív:\"0U0C0Y0C\",žā:\"1D0B\",\"žā \":\"1D0K\",žą:\"1B02\",žď:\"0Y03\",žē:\"1D04\",žēl:\"1D0J\",žė:\"1B07\",\"žė \":\"1B0B\",žī:\"1D0A\",žīr:\"1D0V\",žīri:\"1D0U\",žīrij:\"1D25\",žį:\"1B08\",žįs:\"1B0K\",žįst:\"1B0X\",žň:\"0Y04\",žš:\"0U020Y05\",žū:\"1B02\",ǧ:\"030J\",\"ǧ \":\"0304\",ǧa:\"030C\",ǧe:\"0308\",ǧi:\"030D\",ǧǧ:\"030M\",ǵ:\"1L02\",ǵa:\"1L06\",ș:\"154G\",\"ș \":\"150K\",șa:\"150X\",\"șa \":\"152J\",șc:\"150F\",șco:\"1513\",școa:\"151K\",școal:\"151Z\",șe:\"150H\",și:\"153U\",\"și \":\"159Z\",\"și-\":\"151N\",\"și-a\":\"152P\",\"și-a \":\"1532\",șin:\"151O\",șit:\"1519\",\"șit \":\"151L\",șn:\"1503\",șo:\"1509\",șt:\"154E\",ște:\"1566\",\"ște \":\"156P\",ștep:\"151S\",ștept:\"1522\",ști:\"15AL\",\"ști \":\"157U\",știe:\"1525\",\"știe \":\"152K\",știi:\"151W\",\"știi \":\"151V\",știu:\"153I\",\"știu \":\"153U\",șu:\"1507\",șă:\"1503\",ț:\"1547\",\"ț \":\"1507\",ța:\"1511\",\"ța \":\"152P\",țar:\"150H\",țat:\"150U\",țe:\"150S\",\"țe \":\"150K\",țel:\"151P\",țele:\"152K\",țeleg:\"151U\",ți:\"1578\",\"ți \":\"15DV\",\"ți-\":\"1517\",ția:\"152A\",\"ția \":\"153B\",ție:\"1528\",\"ție \":\"1539\",ții:\"152O\",\"ții \":\"153S\",țil:\"150O\",țin:\"152H\",\"țin \":\"151K\",ține:\"151I\",țio:\"151H\",țion:\"1527\",ționa:\"1521\",țit:\"150Q\",țiu:\"150L\",țu:\"150D\",țum:\"150T\",ță:\"150S\",\"ță \":\"152S\",ɛ:\"031N\",\"ɛ \":\"0307\",ɛa:\"031H\",\"ɛa \":\"0323\",ɛd:\"0303\",ɛe:\"0318\",ɛi:\"030T\",ɛj:\"0305\",ɛl:\"030B\",ɛm:\"0303\",ɛn:\"0303\",ɛq:\"0303\",ɛr:\"0307\",ɛt:\"0303\",ɛu:\"0307\",ɛy:\"0303\",ɣ:\"03AS\",\"ɣ \":\"03BZ\",\"ɣ-\":\"031S\",\"ɣ-d\":\"033C\",\"ɣ-d \":\"033A\",ɣa:\"033S\",\"ɣa \":\"033M\",ɣal:\"0326\",ɣan:\"032T\",ɣe:\"03BR\",ɣef:\"03CF\",\"ɣef \":\"03CZ\",ɣem:\"0327\",ɣen:\"0390\",\"ɣen \":\"034R\",ɣent:\"034F\",\"ɣent \":\"038J\",ɣer:\"03B3\",\"ɣer \":\"038I\",\"ɣer-\":\"031S\",ɣerba:\"0334\",ɣeɣ:\"033C\",\"ɣeɣ \":\"032Y\",ɣi:\"031W\",ɣiɣ:\"031Q\",\"ɣiɣ \":\"031O\",ɣl:\"030I\",ɣm:\"0308\",ɣr:\"030T\",ɣs:\"0318\",\"ɣs \":\"031H\",ɣse:\"032K\",ɣt:\"030P\",\"ɣt \":\"031U\",ɣu:\"030N\",ɣɣ:\"0304\",ʼя:\"1703\",\"̇\":\"1F0I\",\"̇k\":\"1F07\",\"̇ki\":\"1F0H\",\"̇l\":\"1F05\",\"̇n\":\"1F0L\",\"̇ng\":\"1F0U\",\"̇ngi\":\"1F0Y\",\"̇ngil\":\"1F1B\",\"̇ns\":\"1F0J\",\"̇s\":\"1F0E\",\"̇st\":\"1F0F\",\"̇t\":\"1F03\",\"̇y\":\"1F05\",\"̇yi\":\"1F0E\",\"̇z\":\"1F02\",\"̇ç\":\"1F03\",\"̇ş\":\"1F0A\",ε:\"030B\",εa:\"0307\",εe:\"0308\",εi:\"0303\",εṛ:\"0307\",а:\"0VSG0XSG16SG17SG18PL19RD1LSG1MSG1N02\",\"а \":\"0VSG0XSG16SG17SG18QP19QH1LOC1MHW\",\"а-\":\"170R180E1L0D\",аа:\"0X2C170919021MH9\",\"аа \":\"0X4R1MGF\",аав:\"1M15\",\"аав \":\"1M0X\",ааг:\"1M3N\",аага:\"1M0P\",аагаа:\"1M1E\",аагү:\"1M30\",аагүй:\"1M5Z\",аад:\"1M3I\",\"аад \":\"1M3H\",аал:\"1M1L\",аала:\"1M0X\",аалаг:\"1M1I\",аалг:\"1M0T\",аалга:\"1M1M\",аан:\"1M4Y\",\"аан \":\"1M25\",аана:\"1M2A\",\"аана \":\"1M3M\",аар:\"19041M8N\",\"аар \":\"1M6G\",аара:\"1M2S\",аараа:\"1M16\",аарай:\"1M3I\",аас:\"1M4V\",\"аас \":\"1M4X\",ааса:\"1M0V\",аат:\"0X3T1M0J\",\"аат \":\"0X4X\",аах:\"1M14\",ааха:\"1M0V\",аахан:\"1M1Q\",ааш:\"1M1R\",\"ааш \":\"1M1F\",аб:\"0V0U0X1V161K17951831191X1L3F\",\"аб \":\"0X04174E\",аба:\"0V0J0X16160Q1773180B190N1L30\",абав:\"0V0G0X12160J171Q1803\",абава:\"0X0I1716\",абага:\"190U\",абае:\"1732\",абаец:\"174D\",абак:\"1727\",абака:\"171V\",абарл:\"1L23\",абач:\"171T\",абачы:\"171P\",абе:\"0V080X0B160F175018051906\",\"абе \":\"0X021775\",абл:\"0V040X05160A172B180I190B\",аблем:\"171Z\",або:\"0V0L0X4K163O173X183O190E\",абод:\"171X\",\"абой \":\"172B\",абор:\"0V0M0X0W170A18041905\",абора:\"0V1K0X0W1802\",абот:\"0X4O163X1719184G\",абота:\"0X2F1642184J\",аботе:\"0X0E160C180H\",аботи:\"0X1W162P180D\",аботу:\"0X06170W181T\",абр:\"0V0I0X0C1618171G180B1908\",абра:\"0V0B0X04161B171Q18071904\",абрав:\"162G1902\",абу:\"0V0B0X02171N180K191P1L0N\",абуть:\"1910\",абы:\"1726180W1L40\",абыл:\"170V180Q1L3T\",абылд:\"1L2X\",абі:\"176G19051L0D\",абіл:\"173H1L0O\",абіла:\"172S\",абіц:\"173Z\",абіць:\"175L\",абіў:\"172H\",\"абіў \":\"173K\",ав:\"0V4X0X6V165A17A6187V19DG1L0P1M3R\",\"ав \":\"0V0V0X4S160L180G19CV1M23\",ава:\"0V3C0X5Z167417H31831192E1M2C\",\"ава \":\"0V1C0X2V163J1743180F190L\",аваа:\"0X051M0T\",авай:\"160Q171S181U190O\",\"авай \":\"1617171T181S190H\",авайт:\"160B181J190H\",авал:\"0V0A0X05160E1765180H1907\",авала:\"0V0E175H18041902\",авалі:\"172O\",авам:\"0V0K0X2V1617\",\"авам \":\"0V170X2X1625\",аван:\"0V060X03160C173Y18031903\",аванн:\"172S\",аваны:\"171T\",авар:\"172818081904\",авары:\"172S\",ават:\"0V0A0X1216171728180Z190P\",\"ават \":\"0X0A161B172K\",авата:\"0X0T160U\",авати:\"0V0B190U\",авать:\"181K\",авах:\"16081M0P\",авац:\"175U\",аваць:\"177C\",аваш:\"0V060X0G160R\",\"аваш \":\"0V0G0X0C1614\",аваў:\"174L\",\"аваў \":\"175X\",авг:\"19021M0V\",авгү:\"1M0T\",авгүй:\"1M1M\",авд:\"0V080X031816192F\",авда:\"0X04180W190T\",\"авда \":\"0X02181H190U\",\"авду \":\"180Z190R\",авді:\"191A\",\"авді \":\"191V\",аве:\"0V0S0X131614175K1811190F\",авед:\"0X071606172118071908\",аведа:\"1724\",авек:\"173P\",\"авек \":\"173I\",авека:\"171T\",авж:\"191G\",авжд:\"191H\",авжди:\"1926\",ави:\"0V4K0X8L167R185G1932\",\"ави \":\"0V1E0X4A163I190N\",авив:\"0X14190A\",\"авив \":\"0X0Z190A\",авид:\"0X0E180F190V\",авиду:\"0X0F1804\",авил:\"0V0P0X18161C182W190X\",\"авил \":\"0X0V1614181F1903\",авим:\"0V0K0X11160I1804\",\"авим \":\"0V1116131804\",авиме:\"0X13\",авио:\"0V130X08\",\"авио \":\"0V2F\",авис:\"0V030X1Q1607180C1902\",авист:\"0X1P1805\",авит:\"0V0Y0X06160K183D190L\",авите:\"0V1K0X061616180G\",авитс:\"183R\",авить:\"181Z190B\",авих:\"161C\",\"авих \":\"162B\",авиш:\"0V060X1D16151805\",\"авиш \":\"0V0H0X1F162E\",авл:\"0X02160C181G190C1L0O\",авля:\"160918151904\",авм:\"0X101904\",авме:\"0X1C\",\"авме \":\"0X1F\",авн:\"0V110X0Y160U181C190E\",авно:\"0V0J0X0N160J181B1909\",\"авно \":\"0V0Z0X0M16111821190C\",аво:\"0V140X1O1614173J180H1916\",\"аво \":\"0V120X1T161118091915\",авошт:\"171T\",авр:\"0V0Y0X0V160718021905\",аврш:\"0V150X0P\",аврши:\"0V240X0K\",авс:\"0X031605180P192J1M0V\",авса:\"1M0V\",авсан:\"1M1Q\",авст:\"0X041604180V1919\",австр:\"0X031608181H191T\",ався:\"191Q\",\"ався \":\"192I\",авт:\"0X0E160U1824191U1L0J1M0Q\",авто:\"0X0C160X1814190U1L0X\",автоб:\"0X09161J1814190R\",автр:\"181T1917\",автра:\"183E191Q\",аву:\"0V0K0X0Q17291802190F\",авув:\"0X0Y\",авува:\"0X10\",авч:\"190P1M14\",\"авч \":\"1M0X\",авы:\"172J1808\",\"авы \":\"172Z1807\",авя:\"162P172Q180C\",\"авя \":\"1621\",авярн:\"171T\",аві:\"17571919\",авіл:\"171Z\",авін:\"172L\",авіть:\"190R\",авіщо:\"190W\",ављ:\"0V0V\",аг:\"0V0O0X0T1613176F181719321L0J1MA2\",\"аг \":\"18061MAO\",ага:\"0V0N0X10161S17AR180Z194U1L0F1M5Y\",\"ага \":\"0V050X0E160R17C8180519021M0P\",агаа:\"1M46\",агаад:\"1M33\",агаар:\"1M33\",агад:\"171G180419051M0M\",агас:\"1M0R\",агат:\"0X031605170N1802193K\",агато:\"1942\",агг:\"1M1A\",аггү:\"1M1J\",аггүй:\"1M33\",агд:\"1M23\",агда:\"1M1N\",агдаж:\"1M1U\",аги:\"0V030X07161B1808190C1M0O\",\"аги \":\"0V020X02161E18051906\",агий:\"1M0T\",агл:\"0V060X0817251803\",агля:\"171P1802\",агляд:\"172G1802\",аго:\"0V0H0X0W160Y173W180U190I\",\"аго \":\"0V0B0X0I174F18031902\",агода:\"0X0C161J180T\",агр:\"0V090X0F1604171418071904\",агриж:\"0X0D\",агт:\"1M1G\",\"агт \":\"1M19\",агу:\"0V050X05160G172Z1802190M\",\"агу \":\"0V03173A18021909\",агч:\"171I\",агчы:\"172K\",агчым:\"172V\",агш:\"1M0Z\",\"агш \":\"1M0T\",агү:\"1M2Z\",агүй:\"1M3H\",\"агүй \":\"1M6P\",ад:\"0V6I0X3G162H17CQ184Y194B1L9V1M9X\",\"ад \":\"0V2U0X0Q1616176D181D190K1M9U\",ада:\"0V5I0X1H161V17A7181G192A1LA11MAO\",\"ада \":\"0V5B0X0F160Z171Z180B190D1L3Z\",адаа:\"1M29\",адаас:\"1M2F\",адаб:\"1748\",адаба:\"1766\",адаг:\"1M1N\",\"адаг \":\"1M2R\",адад:\"16041M5U\",\"адад \":\"1MB9\",адам:\"0V0G0X0V1606170J18021LBH\",\"адам \":\"0V0Z0X0X160D170O18021L8S\",адамд:\"1L53\",адамн:\"1L2N\",\"адан \":\"0V0K16071L27\",адар:\"0X02172C\",адах:\"1M3L\",\"адах \":\"1M22\",адахг:\"1M55\",\"адаю \":\"170P1802190Z\",адв:\"0V020X0I160K17191805190C\",адво:\"0V020X0N1603170T1806190A\",адвор:\"0X0J17121906\",адд:\"170K1M0S\",адда:\"170N1M0X\",аддаг:\"1M1Q\",аде:\"0V0M0X54161Y181R1905\",\"аде \":\"0V0H0X42160Z1803\",адев:\"0X0V1802\",адева:\"0X0R1804\",аден:\"0X0J160F18091902\",\"аден \":\"0X0E160G\",адеш:\"0X0J1605\",\"адеш \":\"0X0F160A\",адеюс:\"181F\",адз:\"179D1908\",адзе:\"1749\",\"адзе \":\"172B\",адзя:\"1728\",адзі:\"179B\",адзіл:\"173E\",адзін:\"1772\",адзіц:\"171K\",ади:\"0V7E0X1E161M180X19131M12\",\"ади \":\"0V2W0X0Y160V180D190G\",адил:\"0V0W0X051603180619041M0Z\",адим:\"0V2F0X021803\",\"адим \":\"0V4K1804\",адио:\"0V1J0X0316091806\",\"адио \":\"0V3U1808\",\"адиш \":\"0V1Z1608\",адк:\"160E173R1809190E\",адка:\"1607173A18031902\",адказ:\"1737\",адн:\"0V0U0X1I160Y174I180D190M1M1C\",адна:\"0V040X11160V173P19051M1L\",\"адна \":\"0V0A0X0Q160U172R19051M2Z\",адне:\"0V070X0K18021902\",\"адне \":\"0V0E0X0D1903\",адно:\"0V0G0X0B171X180B190B\",адо:\"0V0T0X1O160G171P182Y190V\",\"адо \":\"0V040X031830\",адов:\"0V0F0X1116031804190Q\",\"адов \":\"0X0H\",адово:\"0V0S0X0F190W\",\"адта \":\"171W\",адтай:\"1M1A\",адто:\"190V\",\"адто \":\"1919\",аду:\"0V0J0X0A1602172E180G190J\",адува:\"0X0C1904\",адцат:\"181Q\",адч:\"171N\",ады:\"173C18091LF6\",\"ады \":\"173I18051LM0\",адым:\"1L2V\",\"адым \":\"1L44\",адява:\"1616\",ае:\"0V030X1916141775186B19021L0A\",\"ае \":\"0X19161617EH1807\",аев:\"0X0I18021L0T\",\"аев \":\"0X0O1L0Q\",аед:\"0X0E160C17091802\",аедн:\"0X0J160D\",аедно:\"0X0G160S\",аем:\"0X0C160R171G181C\",\"аем \":\"160M171X181C\",\"аеме \":\"0X0F\",ает:\"1615189N\",\"ает \":\"160M188F\",аете:\"160B182M\",\"аете \":\"160O184B\",аетс:\"182R\",ается:\"1853\",аец:\"0X02175Y\",аеце:\"1725\",\"аеце \":\"172V\",аецц:\"1781\",аецца:\"17BM\",аеш:\"0X1H1612173D182U\",\"аеш \":\"0X1C160Y1753\",аеше:\"0X0N1609\",\"аеше \":\"0X0O160K\",аешь:\"183W\",\"аешь \":\"186B\",аж:\"0V1L0X1Q1611171W1832192N1L141M3G\",\"аж \":\"0V020X07160B1707180419051M5S\",ажа:\"0V080X2X161C171U180H191E1L0O\",\"ажа \":\"0X1H1619170S1802\",ажав:\"0X0H16071904\",\"ажав \":\"0X0H1905\",ажам:\"0X17\",\"ажам \":\"0X19\",ажд:\"16081705181E1905\",ажды:\"1815\",аждый:\"181K\",аже:\"0V210X1G161L182B191B1L1H\",\"аже \":\"0V160X0Q160M181A190Y\",\"ажем \":\"0V1Y16071805\",ажет:\"0V050X04160C181519031L2Q\",\"ажет \":\"180C1L2K\",ажетс:\"181K\",ажеш:\"0V0A0X0O160N18071905\",\"ажеш \":\"0V0P0X0N161E1908\",ажи:\"0V120X10160G181I190T1M22\",\"ажи \":\"0V0I0X15160H1811190R\",ажил:\"0V051M2A\",\"ажил \":\"1M1I\",ажилл:\"1M2F\",ажите:\"0V0D0X03181F\",ажл:\"0X02190C1M0Q\",ажн:\"0V0C0X0E160L170W180P1908\",ажу:\"0V0C0X0G1713180H190M\",ажув:\"0X0L\",ажува:\"0X0M\",ажы:\"172F1L0F\",\"ажы \":\"171Q\",аз:\"0V270X1K1654176N1879194W1L741M0M\",\"аз \":\"0V0A0X0B165C174D181K191Y1L0T\",аза:\"0V0R0X0P163S1765187K195H1LBW1M0Q\",\"аза \":\"0V030X03161Y170C180S1L1B\",азав:\"193P\",\"азав \":\"18021959\",азал:\"0V04160N172I186C191K1L0Q\",\"азал \":\"160N187H\",азала:\"160G172N1826191N\",азали:\"1606181F190N\",азам:\"0X0G171618051L2T\",\"азам \":\"0X0H171R1802\",азама:\"1L3N\",азар:\"0X0616071L3D1M0M\",\"азар \":\"0X021L23\",азат:\"0X041604182E1917\",азати:\"191Q\",азать:\"1849\",азах:\"160T17121805\",\"азах \":\"161G1805\",азац:\"172C\",азаць:\"173I\",азаў:\"172F\",\"азаў \":\"173E\",азақ:\"1LC5\",\"азақ \":\"1L27\",азақс:\"1LDT\",азб:\"0V060X0T1620170S180I1L0E\",азбер:\"0X0516191803\",азби:\"0X0I1615180C\",азбир:\"0X0H162D1807\",азв:\"0V0B0X06162G172H180V190G\",азва:\"0V04162G172E180B1905\",\"азва \":\"161O\",азг:\"0V0D0X0L160G170A180T\",азго:\"0V0E0X0N160E1810\",азгов:\"0V110X0O160T181V\",ази:\"0V1F0X10164J180Q190R1L0S\",\"ази \":\"0V0V0X0I164C1904\",азл:\"0V0G0X0F160F170E1806\",азли:\"0V0C0X0H160G1805\",азм:\"0V0F0X0B1608172O1808\",азма:\"173Z\",азмаў:\"175U\",азмис:\"0V0D0X0D\",азн:\"0V0M0X0Q160P1720180M1903\",азна:\"0V0F0X0J160A171Z18051903\",\"азна \":\"0V0B0X0E\",\"азом \":\"180B190U\",азу:\"0V0X0X0816061734180O190J1L0F\",азум:\"0V120X071605174C1808\",азуме:\"0V2D0X02175L1805\",азы:\"171918131L1W\",азыв:\"170J181D\",азыва:\"170S182K\",азі:\"170O190I1L1N\",азір:\"170E1L32\",\"азір \":\"1L27\",аи:\"0V040X03160E180B1L04\",аис:\"0V07161A\",аист:\"0V09161G\",аисти:\"1632\",ай:\"162D1785183C19531LF61MNI\",\"ай \":\"164D17G5182V192G1LA31MG7\",\"ай-\":\"161M19041L0U\",\"ай-ақ\":\"1L23\",\"ай-до\":\"1618\",айв:\"170919051M17\",\"айв \":\"1M0Z\",айг:\"171E19031M93\",\"айг \":\"1M5F\",айга:\"1M5M\",айгаа:\"1MAS\",айго:\"1728\",\"айго \":\"1734\",айд:\"160N170N180G190L1L9W1M39\",айда:\"17091L8C1M3L\",\"айда \":\"1L6Q\",айдаг:\"1M6A\",айдал:\"1L3N\",\"айде \":\"161J1902\",айды:\"1LAB\",\"айды \":\"1LDB\",айж:\"190J1M0V\",\"айж \":\"1M0T\",\"айже \":\"190X\",айз:\"1M15\",\"айз \":\"1M0R\",айк:\"1614170A1803190H\",айка:\"160U\",\"айка \":\"161M\",айл:\"16051728180219041L3E1M1A\",айла:\"1603170P1L4U1M0V\",айлаа:\"1M16\",айлан:\"1L3X\",айле:\"172U\",айлеп:\"1747\",айм:\"170P180519121L2Z1M0H\",айма:\"170O190X1L0V\",аймы:\"1L4J\",аймын:\"1L56\",айн:\"160I171P180K191L1L1P1ML4\",\"айн \":\"1M4G\",айна:\"1609171S18021L2X1MKY\",\"айна \":\"160G1726180219021MSG\",айнал:\"1L3A\",\"айно \":\"1607180I190S\",айня:\"1915\",айнят:\"191K\",айр:\"1L0M1M19\",айрт:\"1M0R\",айрта:\"1M1I\",айс:\"160C1727180K190M1L0Z1M8Y\",айса:\"1MA3\",айсан:\"1MI9\",айсці:\"172E\",айт:\"161F1708182L19211L7C\",айта:\"1L3V\",\"айта \":\"18021L23\",айте:\"161H182Q191T\",\"айте \":\"1634184C1927\",айтты:\"1L20\",айты:\"1L55\",айтын:\"1L3E\",айтып:\"1L27\",айх:\"1M6F\",\"айх \":\"1M27\",айха:\"1M36\",айхан:\"1M4A\",айхг:\"1M1J\",айхгү:\"1M33\",айц:\"171V\",айце:\"172W\",\"айце \":\"173Z\",айш:\"172C1804190R1L0O1M0S\",айши:\"18021M0X\",айшин:\"1M1U\",айшл:\"171Z190E\",айшо:\"171Z190H\",айшоў:\"172Y\",айы:\"1L6Y\",айын:\"1L6L\",\"айын \":\"1L3R\",айынд:\"1L4D\",ак:\"0V4Q0X5R164V1783189Q19521L0I1M07\",\"ак \":\"0V2R0X1H1639177F18AD193L\",ака:\"0V1L0XA0163V177K1829191O\",\"ака \":\"0V0S0X4C1623171R180O1919\",акаат:\"0X0D\",акав:\"0V0D0X0Q170G1905\",\"акав \":\"0V0Y0X0M1907\",акал:\"0V040X1F1603171A18091905\",\"акал \":\"0X1E1808\",акала:\"0V07171M18041905\",акам:\"0X41160H170H1802\",\"акам \":\"0X3W160M\",акаме:\"0X0D160F\",аках:\"160A171Q\",акаха:\"172J\",акаш:\"0V050X2M1606\",\"акаш \":\"0X1S160B\",акаше:\"0X0Z\",\"акая \":\"171B181R\",акв:\"0V0N0X171677\",аква:\"0V050X0R1627\",\"аква \":\"0V0D0X0S163F\",акви:\"0V030X0F1610\",\"акви \":\"0X0F1622\",акво:\"0V080X0F1659\",\"акво \":\"0V090X0F169U\",аки:\"0V0G0X05160E181V191J\",\"акие \":\"181J\",акий:\"190Y\",\"акий \":\"191E\",акл:\"0V0C0X071607172I18081904\",акла:\"173H1902\",аклад:\"173V1802\",акн:\"0X0G170G\",ако:\"0V690X6T1632173X185D191A\",\"ако \":\"0V6L0X7P162W1804\",аков:\"0X0N160A180I1903\",\"аков \":\"0X0M1808\",акого:\"181C190B\",\"акое \":\"1712181Q\",акой:\"171X182C\",\"акой \":\"1720183T\",аком:\"0V02181G1904\",акон:\"0V080X0716061713181G1908\",аконч:\"170E181E\",\"акот \":\"0X0D\",акр:\"0V070X04160C171G180K1908\",акс:\"0V070X04160A171G18071908\",акса:\"171Z\",аксам:\"172R\",акт:\"0V090X0G160V1711180N190I\",\"акто \":\"161C\",аку:\"0V0I0X0E160A172B180O190W1L0D\",акул:\"0V040X04171Q1802\",акуль:\"171X\",акъ:\"161Q\",акъв:\"160U\",\"акъв \":\"161R\",акъс:\"160V\",акъсн:\"161T\",акі:\"173J190Y\",\"акі \":\"172B190C\",акінч:\"1913\",ал:\"0V5A0X3R164O17EI18FF19941LKN1M8B\",\"ал \":\"0V090X40164Y170J18EI19091L2Q1M47\",ала:\"0V570X1B163917GH1853196K1LIV1M3F\",\"ала \":\"0V5M0X0Z162T17EA185N196B1L3M\",алаа:\"1M2G\",\"алаа \":\"1M1U\",алаар:\"1M2V\",алав:\"1773\",алава:\"173O\",алаве:\"176F\",алаг:\"16051M0T\",алагд:\"1M16\",алад:\"17281L3B\",алады:\"170I1L3X\",алай:\"1L2M\",алал:\"1L46\",алала:\"1L53\",алам:\"0X071L2T\",аламы:\"1L23\",алан:\"0V03170F180519051L44\",аланы:\"1L2R\",алар:\"0X021L88\",\"алар \":\"1L3R\",алард:\"1L37\",алары:\"1L4A\",алас:\"174K180Y190W1L6T\",аласы:\"170L1L7B\",алась:\"181T1904\",алася:\"175N1914\",алата:\"0X051619\",алг:\"17051M20\",алга:\"17091M29\",\"алга \":\"1M1M\",алд:\"1L911M2N\",алда:\"1L3M1M25\",алдаа:\"1M1Q\",алдаж:\"1M16\",алдар:\"1L2R\",алды:\"1LCZ\",\"алды \":\"1LB7\",алдын:\"1L2H\",але:\"0V110X1H161I176Y181O192E\",\"але \":\"0V0R0X0O176E1809191E\",алж:\"173218031902\",алжы:\"1756\",алжыр:\"177M\",али:\"0V550X30163Y186H19501L0R1M0X\",\"али \":\"0V4H0X2W1636185Z193P\",алис:\"0X041607181B190J\",ались:\"181Z1902\",алиш:\"0V030X071912\",алиши:\"190U\",алк:\"0V030X1X162O170U180C1905\",алко:\"0V030X05162G18071904\",\"алко \":\"164U1803\",алку:\"0X2618041902\",\"алку \":\"0X291808\",алм:\"1L51\",алма:\"1L8V\",алмай:\"1L4W\",алмат:\"1L2K\",алн:\"0V0L0X0O161B\",алнат:\"0X03161B\",ално:\"0V0D0X0H160G\",\"ално \":\"0V0K0X0G160L\",ало:\"0V2V0X1E161B1733182E191O\",\"ало \":\"0V320X1B160M181H190V\",алод:\"171Q\",алос:\"0V050X02170M1816190V\",алось:\"18231902\",алося:\"170T1916\",алс:\"0X021827\",ался:\"182W\",\"ался \":\"185C\",алт:\"0X05160P19021L271M3H\",алта:\"1M25\",алтай:\"1M3I\",алтт:\"1M0P\",алтта:\"1M1E\",алты:\"1L2O\",алу:\"0V050X07170N181S19041L391M23\",алуй:\"1829\",алуйс:\"183Z\",алуу:\"1M2G\",\"алуу \":\"1M22\",алуун:\"1M1A\",алуғ:\"1L21\",алуға:\"1L2X\",алх:\"1M0S\",алы:\"170H18071LFB\",\"алы \":\"170G18051L68\",алын:\"1L26\",алып:\"1L44\",\"алып \":\"1L40\",алыс:\"1L32\",алық:\"1LD4\",\"алық \":\"1LCY\",алықа:\"1L2X\",алықт:\"1L37\",аль:\"17611835191Q1L0E1M0X\",\"аль \":\"171U180E19061M0Z\",альн:\"175H1829191D\",альна:\"172W180D1909\",ально:\"181Z190H\",альны:\"17201819\",альні:\"172N190E\",аля:\"160U172318041908\",алі:\"17FS192N1L0D\",\"алі \":\"17HX190T\",аліс:\"173D1907\",алісь:\"171K\",аліся:\"172K\",аліц:\"171V\",алії:\"1912\",\"алії \":\"191K\",алғ:\"1L5T\",алға:\"1L8X\",алған:\"1L9N\",алқ:\"1L1B\",алқы:\"1L21\",ам:\"0VCG0XC1166817AV187I196E1LA81M76\",\"ам \":\"0VMU0XPH16G317DT1885195M1L5J1M10\",\"ам'ят\":\"1910\",ама:\"0V1T0X0R1617177H180U191S1L951M66\",\"ама \":\"0V1U0X0I160W1734180T190N1L1B\",амаа:\"1M1J\",амааг:\"1M1I\",амаг:\"1727190U\",амага:\"171H1917\",амай:\"1L1W1M56\",амайг:\"1MA1\",амал:\"0V021604171V19081L10\",амаль:\"171P\",аман:\"0X05171H19071L2V\",амар:\"0X031M0M\",амас:\"1L4D\",амасы:\"1L4Q\",амат:\"0X05160B170H19021L2M\",аматт:\"1L2X\",амг:\"1M0Q\",амгий:\"1M1A\",амд:\"0V021L3M1M2N\",\"амд \":\"1M2Y\",амда:\"1L3V\",амдар:\"1L4K\",амды:\"1L2Z\",амдық:\"1L23\",аме:\"0V1A0X53164S172G181Q191B1L0U\",\"аме \":\"0V050X51163B170B1805190Q\",амен:\"0V0E0X0H16081715180Q190D1L10\",амер:\"0V0J0X0K161O171P180S190G\",амери:\"0V0O0X061624180V190K\",амж:\"1M0X\",ами:\"0V0E0X161614183B19201L0D\",\"ами \":\"0V050X0C160A18481927\",амин:\"0X0G160B1803\",амны:\"1L28\",амның:\"1L37\",амо:\"0V4S0X3Y161X172I181J1914\",\"амо \":\"0V560X3S161N18021908\",амол:\"0V0C0X161608180F1902\",амоли:\"0V0U0X11\",амт:\"0V060X051L0Y1M1V\",\"амт \":\"1M0T\",амта:\"0X041L1B1M13\",амтай:\"1M22\",аму:\"0V050X1B1603174U180E19061L0R\",\"аму \":\"0V050X1P177318031906\",амы:\"171N180K1L5Y\",амыз:\"1L2D\",\"амыз \":\"1L37\",амын:\"1L5I\",\"амын \":\"1L6Z\",амь:\"1M3U\",амьд:\"1M3P\",амьда:\"1M46\",амьдр:\"1M33\",амьт:\"1M0V\",амьтд:\"1M16\",амі:\"176Z191E\",\"амі \":\"1785190X\",ан:\"0V6D0X3S164J17A7188S19871LN71MGQ\",\"ан \":\"0V5W0X2M161U171V181K190W1LQM1MKY\",ана:\"0V350X2I163X1773181D191X1L8B1M76\",\"ана \":\"0V1O0X1R162Q172R180Y190Q1L4Z1M2C\",анаа:\"0X051M2C\",\"анаа \":\"0X051M27\",анав:\"0X0617211805\",анава:\"172K\",анад:\"1606171B180819161L2F\",анада:\"1L2H\",анадт:\"17191916\",анай:\"170J1M27\",\"анай \":\"170P1M46\",анам:\"0X0H170J18021L12\",\"анам \":\"0X0I1802\",анас:\"0V1D170I1L28\",\"анас \":\"0V3G\",анасы:\"1L37\",аната:\"0X091614\",анг:\"0X0C1611171K180U190W1M35\",анга:\"1M19\",ангал:\"1M1U\",англ:\"0X0D16131724181019101M1H\",англи:\"0X0D162B181U1M2Z\",англі:\"1732191G\",анд:\"0V060X08160H171D180T190N1LCS1M4L\",\"анд \":\"1M3L\",анда:\"0X051603170I180D19051LB81M1R\",\"анда \":\"180819051L6D\",андаа:\"1M33\",андай:\"1L3A\",андар:\"18021L5Y\",анды:\"170F18031LBM\",\"анды \":\"18061L5P\",андыр:\"1L30\",андық:\"1L6Q\",ане:\"0V1E0X15163F172N1818190S\",\"ане \":\"0V0X0X0H161U171C180K1908\",\"аней \":\"171P\",анет:\"0V050X0B1618170C180G190A\",ането:\"0X021627\",ани:\"0V3O0X2V164B1851191F1L1M1M10\",\"ани \":\"0V1G0X1F16131803190C\",ание:\"0X0C1615181X\",\"ание \":\"0X0A161L1835\",аний:\"18071911\",\"аний \":\"180D191J\",анима:\"0V0G0X02160M181E\",анира:\"0V100X0F160A\",ания:\"160Y181E1L1U\",\"ания \":\"161K182E\",анн:\"160B176V181J192P1L2L\",аннан:\"1L2D\",анне:\"175R\",\"анне \":\"177H\",анны:\"1709180X1L34\",анның:\"1L4G\",ання:\"173B192B\",\"ання \":\"173M1935\",анні:\"171T190H\",\"анні \":\"172O1908\",ано:\"0V0V0X21161I1718181U191I\",\"ано \":\"0V0L0X1J1619180Y1911\",анов:\"0V070X07160C1711181C1907\",анови:\"0X051607181K1907\",анот:\"0X0K\",\"анот \":\"0X0K\",анс:\"0V0W0X0M16101716180R190M1L0M\",\"анса \":\"0X0C1803\",ант:\"0V0U0X0H160Z171T180U190T1L0X1M0S\",анта:\"0V060X08160L171D180619081M0T\",антай:\"1M1I\",ану:\"0V0N0X0G171O180F190W1L1J\",анув:\"0X0J1905\",анува:\"0X0L1907\",анх:\"1M0X\",анц:\"0V110X0Z160P172F181T192W1L0Y1M1Y\",\"анц \":\"1M11\",анца:\"170M18021M13\",анцаа:\"1M22\",анцу:\"0V0X0X0Z1606171J181N19291L10\",анцуз:\"1720182V19381L1G\",анцус:\"0V280X0T\",анчын:\"1726\",\"анша \":\"1L2H\",аны:\"173B180R1LBK1M2M\",\"аны \":\"1739180Y1L4H1M2G\",\"аныг \":\"1M1A\",аным:\"170I1L2H\",анын:\"1L39\",аныс:\"1L3D\",аныст:\"1L3E\",\"аныя \":\"1726\",аның:\"1L55\",\"аның \":\"1L5L\",ань:\"170K1811190B1M0S\",\"ань \":\"170D1807190B1M0R\",аньше:\"181W\",аня:\"160B171M180Y1903\",ані:\"17421924\",\"ані \":\"170Y190Y\",аніц:\"171V\",аніше:\"190W\",анғ:\"1L1O\",анға:\"1L2Z\",анған:\"1L2K\",ао:\"0V5L0X04160318021902\",\"ао \":\"0VE3\",ап:\"0V1K0X1X162B1746181U192V1L4R\",\"ап \":\"0V020X031L63\",апа:\"0V0S0X0Y16191749180G190G1L1J\",апам:\"0V040X05172P1903\",апама:\"172E\",апи:\"0V0Q0X1116141815192K\",аписа:\"0V0W160X181N190Z\",апит:\"0X03160C1808191J\",апита:\"1809191R\",апиш:\"0V060X0R160818081906\",апиша:\"0X0M1606\",апла:\"0V050X03160S171I180G190M\",аплат:\"161E180L190P\",апо:\"0V0Q0X0V161T171J180J190C\",апоз:\"0X0J1606\",апозн:\"0X0K160D\",апоч:\"161E\",апочн:\"1625\",апошн:\"172B\",апр:\"0V0R0X371644173J180P190O\",апра:\"0V0N0X3T164A1751180C1902\",аправ:\"0V1N0X3Z168O180H1902\",апраў:\"174E\",апт:\"170O180219051L39\",апта:\"170M1L3M\",аптар:\"1L2K\",апты:\"1L2J\",\"апты \":\"1L2H\",апу:\"0V0O0X0E160F170P18081903\",апі:\"1724190M\",апізн:\"190R\",апіс:\"1724\",апіса:\"172I\",ар:\"0V3R0X34163M17B4185B19641LOM1MDB\",\"ар \":\"0V2P0X1U160W173H180C190G1LI91MAA\",ара:\"0V2C0X38163T17BH181R19381LEP1M7L\",\"ара \":\"0V130X0Y161D1726180C19081L3F\",араа:\"0X081M3J\",\"араа \":\"0X021M3Q\",араах:\"1M1I\",араг:\"170H1M1J\",\"араг \":\"1M1A\",арагд:\"1M1U\",арад:\"0V03160G173I19061L2F\",арады:\"170H1L2X\",араз:\"172T18021929\",\"араз \":\"173K192K\",арай:\"160718081L1W1M25\",\"арай \":\"160A1L1J1M3U\",арал:\"0V050X051710180519021L5E1M0K\",арала:\"0V061L2A\",аралы:\"1L4K\",арам:\"0V050X17160A171H1L2D\",\"арам \":\"0V070X0T160I171S\",араме:\"0X0E\",аран:\"0V060X05160H1729180D1909\",арап:\"1L2F\",арас:\"0X02170V190C1L42\",арасы:\"1L4D\",арат:\"0V050X09160X170P180719071L3D\",арата:\"0X041614\",арах:\"1609170D18021M0R\",араш:\"0X0G1606\",араға:\"1L2A\",арг:\"0V020X03170O180319041M3K\",арга:\"170S1M3H\",\"арга \":\"1M16\",аргаа:\"1M2Z\",аргал:\"1M1I\",аргүй:\"1M16\",ард:\"0V050X051607170K180519031LAB1M22\",арда:\"1L4J1M1H\",\"арда \":\"1L3A\",ардаг:\"1M2N\",арды:\"1LE5\",\"арды \":\"1L9W\",ардың:\"1LAZ\",аре:\"0V0M0X1H162D180Y190K\",арем:\"0X141904\",\"арем \":\"0X161905\",арес:\"161Z1806\",аресв:\"1639\",арж:\"19051L0I1M0T\",\"арж \":\"1M0Z\",ари:\"0V280X2E1631182R19181L2P1M3P\",\"ари \":\"0V1B0X1P161I18041904\",арива:\"181N\",арит:\"0X0K160R180B1903\",арите:\"0X0L161I1802\",ариу:\"1M13\",ариул:\"1M1M\",арих:\"16031L32\",арија:\"0V0N0X0G\",арк:\"0V0J0X0J160S1721180Y190T1L0F\",арл:\"170M180319021L5E1M0J\",арла:\"170B1L4B\",арлам:\"1L2H\",арлы:\"1L5T\",арлық:\"1L5P\",арм:\"0V040X081711180A19031L20\",арма:\"0X04171318071L28\",арн:\"0V0T0X0A1606170Y180C191E1L0T\",арно:\"0V0W0X0618031907\",\"арно \":\"0V280X051906\",аро:\"0V0G0X0X160Q1753181A191C\",арод:\"0V060X061606172D180F190V\",арот:\"0X0K170J\",\"арот \":\"0X0L\",арс:\"0V040X041609170M180F19041L1E1M1W\",арса:\"1M27\",арсан:\"1M4E\",арт:\"0V0B0X0D161A172U180Z191E1L4Q1M1E\",арта:\"0X03160G171H180519041L1W1M13\",арти:\"0V050X0A160V180O190E\",арты:\"170R18031L2Q\",ару:\"0V090X041606172X180M190P1L2F\",арус:\"171Y\",арх:\"180319021M10\",арч:\"0V020X031608170619021M1C\",\"арч \":\"1M13\",ары:\"1785180D1LHM1M0O\",\"ары \":\"172K18071LBM\",арыл:\"17281L1N\",арыла:\"172A\",арым:\"1L3M\",арын:\"170V1LDA\",\"арын \":\"1L6T\",арына:\"170Z1L53\",арынд:\"1L2N\",арыны:\"1L67\",арыс:\"17271L1N\",арыст:\"172E\",арыц:\"1720\",арыць:\"172J\",арь:\"18091M0Z\",арэ:\"172I\",аря:\"161G1808190C\",\"аря \":\"160W18051905\",арі:\"1918\",арғ:\"1L3I\",арға:\"1L57\",\"арға \":\"1L6T\",арқ:\"1L1K\",арқы:\"1L2M\",арқыл:\"1L2K\",ас:\"0V3K0X2V162D17BT189N197Y1LF21M54\",\"ас \":\"0V3Z0X31161S175Q186Q19521L451M6Q\",аса:\"0V0H0X0R1617172N180L19051L541M2M\",асаа:\"1M0M\",\"асаа \":\"1M16\",асам:\"0X051603171U1803\",асан:\"0V0416041M1V\",\"асан \":\"0V0B1M2R\",асе:\"0V040X0H160L170Q180G1905\",аси:\"0V0K0X0R1613181U190B1L0M\",аск:\"0V050X0O1609173Y180H1928\",аска:\"0X0G1603175C18031928\",\"аска \":\"0X02175K1933\",асл:\"0V0D0X0A160C1731180E190W\",аслив:\"1913\",\"асля \":\"171V\",аслі:\"171T\",аслів:\"172A\",асн:\"0V1J0X1N160T172C181N1912\",асна:\"0V030X0L160C171H18091903\",асни:\"0V0Z0X0I1604190F\",\"асни \":\"0V0B0X0D\",асно:\"0V0R0X0Z160F170I1816190E\",\"асно \":\"0V1K0X0T160L1813190E\",асо:\"0V0F0X0L160G171N180J190N\",\"асот \":\"0X0D\",асп:\"0V0G0X0M1609172C180K191E1L16\",аспа:\"0V040X051603171L18021L21\",аспр:\"0V030X05171718061916\",аспра:\"0X04171P191P\",асс:\"1705182F1L0F\",асск:\"181I\",асска:\"182S\",аст:\"0V1V0X1K16321772184R192Y1LBI1M0O\",аста:\"0V1A0X0M1604176U180T19051LCP1M0R\",\"аста \":\"0X02171T18081L0Z\",астав:\"0V280X06170T180T1902\",астад:\"1L2U\",астай:\"1L151M1E\",астал:\"170Z18051L23\",астам:\"1L2A\",астан:\"0V0R0X0B170H18021L4A\",астап:\"1L2H\",астаў:\"173J\",астл:\"1617180S\",астли:\"162J181G\",асто:\"0V050X061604170M181Q190X\",\"асто \":\"181S191A\",асту:\"0V050X031729180B190S\",аступ:\"172K180B1910\",асты:\"170L18021L8J\",\"асты \":\"1L37\",астыр:\"18021L47\",астық:\"1L2X\",асу:\"0V050X091603171K1803190W1L0J1M2I\",\"асу \":\"0V03171P1802190U\",асуу:\"1M2Y\",асууд:\"1M2V\",асуул:\"1M1Y\",асц:\"177D\",асць:\"173W\",\"асць \":\"175R\",\"асцю \":\"171T\",асці:\"174Q\",\"асці \":\"175U\",асы:\"170J180C1LG0\",\"асы \":\"170N180C1L7E\",асыз:\"1L36\",\"асыз \":\"1L4D\",асын:\"1LEM\",\"асын \":\"1L3H\",асына:\"1L4T\",асынд:\"1L96\",асыны:\"1L5Y\",асыр:\"1L2V\",ась:\"1707181Y190A\",\"ась \":\"182O190B\",ася:\"160D176O191X\",\"ася \":\"160717A61929\",асі:\"172I1908\",асқ:\"1L41\",асқа:\"1L6T\",\"асқа \":\"1L56\",асқар:\"1L2D\",ат:\"0V4J0X8Y168Z175U18CY19BG1LCI1M16\",\"ат \":\"0V0V0X7U165W17461818190T1L4Q\",ата:\"0V1P0XEY16HY173Y181B190X1L501M1E\",\"ата \":\"0V1H0XHE16J6171X180R190O\",атай:\"17091M0Z\",\"атай \":\"170E1M1Y\",атам:\"0X0Z170M180219021L0Q\",\"атам \":\"0X0U170K\",атар:\"0X021717180319021L28\",\"атар \":\"0X02170M1L20\",атат:\"0X0X160O18061903\",атата:\"0X0U161A\",атв:\"0V0C0X0I160T1709\",атво:\"0V0E0X0N160P\",атвор:\"0V100X0O161I\",ате:\"0V340X2U163Z182K190X1L1D\",\"ате \":\"0V250X0I162T180P\",ател:\"0X1E1611181Z190N\",\"ател \":\"0X0F160C\",ателе:\"0X051607180F190Y\",атели:\"0X0H1805\",атель:\"182X\",атен:\"0X141603\",\"атен \":\"0X0S\",атер:\"0V0C0X0K1609180G19051L0T\",атера:\"0V0B0X0I\",атељ:\"0V17\",ати:\"0V4M0X36161S182A19F71L0M\",\"ати \":\"0V350X1Z160O180I19DF\",атив:\"0V040X0K1805190I\",\"атив \":\"0X0E190J\",атим:\"0V0J0X0B18021917\",атиме:\"0X0B1910\",\"атио \":\"0V1N\",атис:\"16071802192L\",атися:\"193G\",\"атиш \":\"0X0C1607\",атк:\"0V0C0X0V16071719180A190E\",атко:\"0V060X0Q1605170L18021902\",\"атко \":\"0V0D0X0Q160A\",атн:\"0V0T0X0T160E170Q180E190M\",атно:\"0V0R0X0T160D180D\",\"атно \":\"0V1S0X0R160R180I\",ато:\"0V0K0X1L165E171N181F19351L0K\",\"ато \":\"0V0B0X0F164Y1803192X\",атоа:\"0X0M\",\"атоа \":\"0X0N\",атов:\"0X04160T170U18041903\",\"атот \":\"0X0D\",атр:\"0V0G0X0E1603173X180B19051L0F\",\"атре \":\"0X0C1802\",атры:\"1727\",атрым:\"1732\",атрэ:\"173E\",атрэб:\"1750\",атт:\"19031L6J\",атта:\"1L5K\",аттар:\"1L4N\",атты:\"1L6T\",\"атты \":\"1L61\",ату:\"0V0F0X0G1609171P180Q190I1L17\",атъ:\"160W\",атъчн:\"1617\",аты:\"173R180W1LD7\",\"аты \":\"1734180P1L2F\",атын:\"1LB0\",\"атын \":\"1L8G\",атына:\"1L34\",атынд:\"1L30\",атыны:\"1L27\",атып:\"1L2J\",\"атып \":\"1L3N\",атыр:\"170W1L44\",\"атыр \":\"1L2R\",атыс:\"1L2X\",ать:\"18HM191R\",\"ать \":\"18JY1907\",атьк:\"191Q\",атько:\"1911\",атьс:\"183L\",аться:\"186K1902\",атэ:\"171H\",атэле:\"171K\",атқ:\"1L20\",атқа:\"1L3D\",атқан:\"1L2K\",ау:\"0V0Y0X071607180E19061L8Z\",\"ау \":\"1L53\",ауа:\"1L25\",ауд:\"0V021L39\",ауда:\"1L42\",аудар:\"1L2R\",аул:\"1L1C\",аур:\"1L1I\",ауру:\"1L26\",аут:\"0V120X021902\",ауто:\"0V18\",ауч:\"0V0F0X0H160O180H\",ауы:\"1L6N\",ауыр:\"1L2A\",ауғ:\"1L28\",ауға:\"1L44\",\"ауға \":\"1L5F\",аф:\"0V060X0D1608170F180D190B1L0B\",афа:\"0X0N170A\",афат:\"0X0U\",афате:\"0X0V\",афе:\"0V030X0G160J17091802\",ах:\"0V0M0X02161S172Z181K191Q1L0Q1M6Y\",\"ах \":\"0V0Z0X02164B1733181U19171M7U\",аха:\"0V04161F1740180919051L0U1M2C\",\"аха \":\"0V02161A18031903\",ахаа:\"1M0V\",ахан:\"171L1M0X\",\"ахан \":\"1M1U\",аханн:\"171R\",ахг:\"1M3N\",ахгү:\"1M4A\",ахгүй:\"1M8E\",ахи:\"1803190I1M2D\",ахиа:\"1M1B\",ахиад:\"1M1E\",ахин:\"1M0X\",\"ахин \":\"1M1U\",ахме:\"160W1L0T\",\"ахме \":\"161W\",ахо:\"160D1728180X190Z\",аход:\"1733180U190K\",аходз:\"173F\",аходи:\"181C190M\",ахы:\"1M1E\",ахыг:\"1M1L\",\"ахыг \":\"1M37\",ац:\"0V100X0A160B178V180I191G1L0G1M0I\",\"ац \":\"0V1N\",аца:\"0V07172A1M0O\",ацаа:\"1M0R\",ацава:\"171Z\",ацал:\"171T\",ацала:\"172B\",аце:\"0X09173F\",\"аце \":\"0X04171Z\",ацел:\"171Z\",ацела:\"172E\",ацеў:\"171O\",\"ацеў \":\"172I\",аци:\"0V0Y0X0O161A18121L17\",ация:\"160W180E1L28\",\"ация \":\"1618180P\",ација:\"0V0O0X0E\",ацу:\"171H\",ацц:\"1738\",ацца:\"175F\",\"ацца \":\"176A\",аццац:\"171M\",ацы:\"173S\",\"ацыю \":\"1723\",ацыя:\"1728\",\"ацыі \":\"1727\",аць:\"17F11902\",\"аць \":\"17KX\",ацьк:\"172M1902\",ацька:\"1726\",ацю:\"191O\",ацюв:\"190U\",ацюва:\"1918\",\"ацює \":\"190W\",аці:\"1728191D\",\"ацію \":\"190S\",ач:\"0V1H0X0Z160R174Q182219341M0C\",ача:\"0V0B0X0F160Q174A181H190P\",ачал:\"0X021609171Q181F1906\",аче:\"0V0T0X0K160O181A1912\",\"ачем \":\"181K1902\",ачи:\"0V100X1516141810193M\",\"ачи \":\"0V0D0X0T160G1806\",ачив:\"1806191I\",\"ачив \":\"1922\",ачил:\"160318021911\",ачила:\"190Z\",ачит:\"0X031605180H1916\",ачити:\"191A\",ачк:\"0V0Q0X0Z160C171518031904\",ачка:\"0V0C0X0S1608170W18031902\",\"ачка \":\"0V0O0X0H160A171618021903\",ачн:\"0V0N0X05171H18091909\",\"ачно \":\"0V1K0X0218031905\",ачу:\"0V0H0X06173B1809190N\",\"ачу \":\"173W180B190J\",ачы:\"176P\",ачыла:\"171R\",ачын:\"1724\",ачыта:\"171O\",ачыц:\"172X\",ачыць:\"1740\",ачыў:\"1723\",\"ачыў \":\"172V\",аш:\"0V380X5K162Y17341831192G1L2Y1M2I\",\"аш \":\"0V410XAT16741738180R190Q1L0J1M4A\",аша:\"0V0V0X2A160M1728180M190M1L37\",\"аша \":\"0V0G0X0L160A171V180Q190P1L10\",ашам:\"0X0M\",\"ашам \":\"0X0I\",ашан:\"1L3B\",\"ашан \":\"1L4G\",ашањ:\"0X10\",ашање:\"0X0T\",аше:\"0V0Z0X5C163M181E190A\",\"аше \":\"0V0O0X6L163P180F1909\",аши:\"0V0O0X0P160Q182F191P1M1R\",ашин:\"0V040X041605181U191R1M1R\",\"ашин \":\"18031M1Q\",ашину:\"181H1913\",ашн:\"0V030X0C160F170H180H190E\",ашт:\"0V1T0X0D170U19031L0O\",ашто:\"0V1S0X09170N1902\",\"ашто \":\"0V4F0X09\",ашу:\"0V060X0F17111808190C1L0G\",ашув:\"0X0K\",ашува:\"0X0L\",ашы:\"17301L2G\",ашыл:\"170V1L23\",ашын:\"171X\",ащ:\"1615180H190L\",аща:\"161L180H1904\",\"аща \":\"16131905\",\"аще \":\"1804190T\",ащо:\"162M1903\",\"ащо \":\"162E1902\",ащото:\"1619\",аэ:\"17071803\",аю:\"173G184N1953\",\"аю \":\"177K186P197F\",аюс:\"170P180V191G\",аюсь:\"18161904\",\"аюсь \":\"18271906\",аюся:\"1716191L\",\"аюся \":\"171S192B\",ают:\"182I1921\",\"ают \":\"182O\",аются:\"181H\",ають:\"192D\",\"ають \":\"192E\",аютьс:\"1913\",аюц:\"173K\",аюцц:\"171T\",аюцца:\"172Q\",аюць:\"174B\",\"аюць \":\"176E\",аючы:\"171P\",\"аючы \":\"171X\",ая:\"160J1759183319021L191M23\",\"ая \":\"161G17G6186B1M17\",аян:\"18021M0Z\",\"аян \":\"1M15\",аяр:\"1M1R\",аярл:\"1M0X\",аярла:\"1M1U\",аярт:\"1M0R\",аярта:\"1M1E\",\"аята \":\"1614\",аё:\"1711180A\",\"аё \":\"171I\",аёй:\"171L\",\"аёй \":\"172P\",ађ:\"0V0L\",ађе:\"0V0V\",аѓ:\"0X0G\",аѓа:\"0X1O\",\"аѓа \":\"0X19\",ає:\"198J\",\"ає \":\"1985\",аєм:\"191H\",аємо:\"191L\",\"аємо \":\"191X\",аєт:\"196C\",аєте:\"192D\",\"аєте \":\"1932\",аєть:\"1959\",аєтьс:\"197I\",аєш:\"193C\",\"аєш \":\"193I\",аі:\"171E\",аім:\"171J\",\"аім \":\"1725\",аін:\"171S\",аї:\"190G\",ај:\"0V4V0X3B\",\"ај \":\"0V4G0X5C\",ајд:\"0V0C0X38\",ајда:\"0X0R\",ајдам:\"0X0Q\",ајде:\"0V0C0X2N\",\"ајде \":\"0V0P0X1V\",ајдем:\"0X0L\",ајдо:\"0X0U\",ајдоб:\"0X0I\",аје:\"0V1Y\",ајк:\"0V0G0X0K\",ајка:\"0V0B0X0N\",\"ајка \":\"0V0R0X0K\",ајл:\"0V040X0D\",\"ајле \":\"0X0D\",ајм:\"0V0D0X0F\",ајн:\"0V0I0X0K\",ајт:\"0V1N0X0A\",ајте:\"0V1V0X0B\",\"ајте \":\"0V4N0X0B\",ају:\"0V2F0X02\",\"ају \":\"0V2N\",ајц:\"0V030X0J\",ајца:\"0X0N\",ајцат:\"0X0E\",аљ:\"0V0G\",ањ:\"0V180X0O\",ања:\"0V110X0E\",\"ања \":\"0V110X0D\",ање:\"0V1Z0X23\",\"ање \":\"0V220X1U\",ањет:\"0X0Y\",ањето:\"0X0Z\",аћ:\"0V0L\",аќ:\"0X09\",аќа:\"0X0T\",аў:\"178X\",\"аў \":\"17EZ\",аўд:\"172V\",аўды:\"171X\",\"аўды \":\"172S\",аўл:\"173M\",аўля:\"1756\",аўляе:\"172R\",аўляц:\"171O\",аўляю:\"171T\",аўн:\"1736\",аўні:\"172E\",аўнік:\"1724\",аўс:\"174E\",аўся:\"173P\",\"аўся \":\"175G\",аўсё:\"172B\",аўсёд:\"173G\",аўт:\"172G\",аўтра:\"172I\",ағ:\"1L9D\",аға:\"1LCF\",\"аға \":\"1L4U\",аған:\"1LD6\",\"аған \":\"1LEM\",ағанд:\"1L2K\",ағд:\"1L2U\",ағда:\"1L51\",ағдай:\"1L4N\",ағдар:\"1L2H\",ағы:\"1LAJ\",\"ағы \":\"1LB4\",ағын:\"1L3T\",ағына:\"1L20\",ақ:\"1LBK\",\"ақ \":\"1L7D\",ақп:\"1L1C\",ақпа:\"1L21\",ақс:\"1L9I\",ақса:\"1L2A\",ақсат:\"1L2R\",ақст:\"1LA0\",ақста:\"1LDT\",ақсы:\"1L5I\",\"ақсы \":\"1L75\",ақт:\"1L6G\",ақта:\"1L7Y\",ақтар:\"1L37\",ақты:\"1L3V\",\"ақты \":\"1L30\",ақш:\"1L1T\",ақша:\"1L2D\",\"ақша \":\"1L23\",ақы:\"1L5M\",ақыт:\"1L4H\",\"ақыт \":\"1L2D\",ақытт:\"1L27\",\"аққа \":\"1L2A\",аң:\"1L44\",аңа:\"1L2E\",\"аңа \":\"1L3I\",аңд:\"1L2C\",аңда:\"1L3K\",аңы:\"1L2J\",аңыз:\"1L3I\",\"аңыз \":\"1L2K\",аңызд:\"1L2A\",б:\"0V6X0X7G167D176W188X19BU1LAR1MFH\",\"б \":\"0V040X04160D1727180Y192C\",\"б'\":\"17031903\",бi:\"1L13\",бiр:\"1L1E\",ба:\"0V330X3W1618175U181W197M1LDK1MI1\",\"ба \":\"0V2V0X581614173Q180Q192U1L2C\",баа:\"0X0B\",\"баат \":\"0X0E\",бав:\"0V100X27161C171E180E1909\",бава:\"0X0X1606171E\",\"бава \":\"0X0K160C\",бават:\"0X0C\",бавно:\"0V080X0C160Y1802\",баво:\"0X0P1609\",\"баво \":\"0X0Q160I\",баг:\"0X021604170R1802192X1M1L\",бага:\"0X021604170Z1803193E1M0P\",багат:\"170Z194T\",багш:\"1M0Z\",\"багш \":\"1M1I\",бае:\"171U18051L0R\",баец:\"172X\",баецц:\"174D\",бай:\"1709190A1L3L1MRT\",байв:\"1M19\",\"байв \":\"1M1Y\",байг:\"1M58\",байга:\"1M9Y\",байд:\"190A1M3C\",байда:\"1M6E\",байж:\"1M0R\",\"байж \":\"1M16\",байл:\"1L2O1M0K\",байла:\"1L30\",байн:\"1MKZ\",байна:\"1MSG\",байс:\"1MAD\",байса:\"1MIB\",байх:\"1M4E\",\"байх \":\"1M4E\",байхг:\"1M2Z\",байш:\"1M0X\",байши:\"1M1U\",бак:\"0V030X0B1603171T180W1916\",\"бака \":\"171R180V190U\",бал:\"0V1F0X0Q1714180B190P1L4B\",бала:\"0V07170K190G1L66\",\"бала \":\"0V0H1L23\",балал:\"1L3K\",бало:\"0V170X0P1908\",\"бало \":\"0V310X0P\",бам:\"0V070X0I170918031902\",\"бам \":\"0V060X0J\",бар:\"0V0S0X2616061728180719061LB01M27\",\"бар \":\"0V0S0X0X170J1L9M\",бара:\"0X1P171I180319021L2A1M0M\",\"бара \":\"0X0C\",бараг:\"1M1A\",барам:\"0X0J\",бараш:\"0X0D\",бари:\"1M0P\",барл:\"1L55\",барла:\"1L23\",барлы:\"1L5F\",барь:\"1M0R\",бас:\"0X031606170B180619071LAX1M1E\",\"бас \":\"16031L1E1M1N\",баст:\"1L78\",баста:\"1L7Q\",басты:\"1L2D\",басшы:\"1L2D\",басы:\"1L55\",\"басы \":\"1L23\",басын:\"1L3N\",басқ:\"1L4Z\",басқа:\"1L6Z\",бат:\"0V070X0T160B170M1808191L1L1Z\",бата:\"0X0Z160B170E1802\",\"бата \":\"0X0Z160N\",бать:\"1802191Q\",батьк:\"192I\",бац:\"0V0C171M\",баць:\"172N\",бацьк:\"173W\",бач:\"1606174L1803193Y\",бачи:\"1802193S\",бачив:\"1925\",бачил:\"191F\",бачит:\"1802191L\",бачы:\"175L\",бачыл:\"171X\",бачыц:\"172M\",бачыў:\"172R\",баш:\"0V0Z0X1O1807\",\"баш \":\"0V0Y0X1E\",баше:\"0X0U\",\"баше \":\"0X0W\",бащ:\"160U\",баща:\"160Y\",\"баща \":\"161Z\",бая:\"170H1L0D1M2P\",баян:\"1M13\",\"баян \":\"1M27\",баяр:\"1M23\",баярл:\"1M1U\",баярт:\"1M1I\",бає:\"1928\",баєт:\"192H\",баєть:\"193J\",бај:\"0V0B0X0B\",бағ:\"1L1T\",бақ:\"1L1N\",бб:\"18021L08\",бв:\"161S17021805\",бва:\"1679\",\"бва \":\"1678\",бваше:\"1614\",бг:\"1903\",бд:\"1902\",бе:\"0V1V0X3V162P173R185S19381L6Y\",\"бе \":\"0V160X2D1614178T185R19441L1P\",беа:\"0X0H\",\"беа \":\"0X0N\",бев:\"0X13\",\"бев \":\"0X14\",бег:\"0V0C0X0I1602170E180D1L0F\",бед:\"0V0U0X14160Y170K1818\",беди:\"0V0S0X0M160E180O\",\"беди \":\"0V0A0X0D160A\",без:\"0V0X0X1G161P171B181S191J\",\"без \":\"0V0S0X0S160X171Q181I190M\",безб:\"0V090X0H\",безбе:\"0V0H0X0E\",безпе:\"190Z\",бей:\"16061706180519051L1W\",бек:\"1L1R\",бел:\"0V0D0X0Q160Q171N180L19041L2K\",бела:\"0V030X0317271803\",белар:\"172Q\",белг:\"1L2T\",белгі:\"1L2U\",бен:\"0V040X0I160K180B190C1L19\",\"бен \":\"0X0D160A180419091L28\",бер:\"0V090X0J160Y170J180W190R1L72\",берд:\"1L2Z\",берді:\"1L44\",бере:\"0X0A160J180C190G1L2A\",беру:\"180519031L2H\",бері:\"19041L2V\",беріл:\"1L20\",бес:\"0V0I0X0K170G18131L1N\",беспо:\"0X04181J\",бет:\"0V030X08160B180219021L18\",беш:\"0V020X53164M\",беше:\"0X6N1655\",\"беше \":\"0X7016AH\",би:\"0V590X40162S182O197I1L191MFG\",\"би \":\"0V2P0X62161T1804193Q1L0F1MO1\",бив:\"0V030X0Q160A1808192R\",\"бив \":\"0X0F192X\",бид:\"0X3M1603180519081M5A\",\"бид \":\"1M48\",бида:\"0X0Y\",бидам:\"0X0U\",биде:\"0X321804\",\"биде \":\"0X29\",бидем:\"0X0C\",бидеш:\"0X0K\",\"биди \":\"0X0D\",бидн:\"1M0P\",бидни:\"1M1A\",бидув:\"0X0D\",бидэ:\"1M1H\",бидэн:\"1M2Z\",бие:\"0X0D16071L0I1M0H\",бил:\"0V3O0X251625181H191N1L0N1M0H\",\"бил \":\"0V060X1E1611180K\",била:\"0V1Q0X08160A1809191A\",\"била \":\"0V4B0X08160L180D191T\",билет:\"0X021613180I\",\"били \":\"0V1B160G180G190X\",било:\"0V1U0X0U160A1803\",\"било \":\"0V4L0X0V160M1802\",био:\"0V2M1802\",\"био \":\"0V33\",бир:\"0V020X0L161C1817190I\",бира:\"0X0L161H181L190L\",бирам:\"0X08161A\",бит:\"0V160X0D160I181N19771M12\",битг:\"1M17\",битги:\"1M2F\",бити:\"0V171604196B\",\"бити \":\"0V32198B\",бить:\"180J191W\",\"бить \":\"180Q192J\",бих:\"0V2F161T\",\"бих \":\"0V2W161P\",бич:\"0V0G0X0F162M1M1H\",бича:\"0V030X02162Y\",\"бича \":\"161W\",бичам:\"1620\",бичат:\"1611\",бичаш:\"1613\",бичи:\"1M0P\",бично:\"0V130X0F\",бичсэ:\"1M16\",биш:\"0X0316031808190H1M2X\",\"биш \":\"0X031603190K1M3F\",биј:\"0V0N0X0B\",бк:\"1703180E1905\",бл:\"0V0K0X0O160Y171Y1823192H1L1L\",бла:\"0V0B0X0J160T170Q180Q1907\",благ:\"0V030X0I160S170E180N1902\",благо:\"0X0H161P1815\",бле:\"0V0L0X1C161Q17191818191K1L0G\",блем:\"0V0M0X0Z161F171B18141913\",\"блем \":\"0V110X0H161D180A1908\",бли:\"0V0L0X0M1613180X190X1L2I\",блик:\"0V020X03160518061L4J\",блика:\"160718031L6G\",блы:\"170Y1L1H\",блыс:\"1L2Q\",блысы:\"1L2D\",блю:\"171I1812191A\",\"блю \":\"172K1813191G\",блі:\"171Y190D\",бм:\"170418041902\",бн:\"0V090X051606170P180J191A\",бно:\"0V0E0X0A160C180G191E\",\"бно \":\"0V0F0X09160B1805191L\",бо:\"0V2F0X3G161Z172Y187G194B1L8B1M9G\",\"бо \":\"0V050X02171Q1810190K\",бов:\"0V020X0H1608180N190I\",бог:\"0V190X0C160G170H180Q1909\",\"бог \":\"0V0Z1606170A18071904\",богат:\"0V0Y0X0C160I180U\",бод:\"0V0C0X0H160K1714180H19041M2A\",бодо:\"1M1P\",бодож:\"1M2R\",бож:\"0V090X0E1603170A180A190P\",бой:\"1715181K1L3L\",\"бой \":\"171P181Y\",бойы:\"1L68\",\"бойы \":\"1L20\",бойын:\"1L6Z\",бол:\"0V0Y0X19161N173M185E19131LFM1MHQ\",\"бол \":\"0V05160C170N1809190I1L0T1MAW\",бола:\"0X021L80\",болад:\"1L5P\",болат:\"1L27\",болг:\"1M0P\",болго:\"1M1E\",болд:\"1L68\",болды:\"1L8S\",боле:\"0V0J0X0G160G171Z1816\",болей:\"172U\",болж:\"1M0T\",\"болж \":\"1M1E\",болк:\"0X0G18021902\",болм:\"1L3V\",болма:\"1L5I\",болн:\"0V060X0A160J1M2S\",болно:\"0X021M5K\",боло:\"0X0319021M6H\",болов:\"0X031M1A\",болом:\"1M2V\",болоо:\"1M2J\",болох:\"1M5Z\",болс:\"1L1W1M11\",болсо:\"1M22\",болу:\"1L2M\",болуы:\"1L2U\",болы:\"1L4M\",болып:\"1L5Y\",боль:\"173K185I1904\",больн:\"181D1905\",больш:\"174U188J\",болғ:\"1L4O\",болға:\"1L67\",бор:\"0V0U0X3R160J170F180T190K1L0K1M0Z\",\"бор \":\"0V020X0M16081807\",бора:\"0V0P0X0X160518061903\",борав:\"0V1K0X0W\",боро:\"0X0C180A19091M13\",бороо:\"1M27\",бору:\"0X2U1903\",борув:\"0X30\",бос:\"0V0T0X22160Q170D181H19201L291M0O\",бост:\"0V0Y0X2P160R170L181X192A1L2V\",боста:\"170W1L3H\",босто:\"0V2F0X2U183H193B\",бостъ:\"161F\",бот:\"0V030X3S163J170Z183H191L\",бота:\"0X2B161Z170B182I190C\",\"бота \":\"0X1K1634170F180Q190H\",ботае:\"181I\",ботам:\"0X0C\",ботат:\"0X0K16141812\",боти:\"0X1T161A180C190D\",\"боти \":\"0X1B161S190J\",боту:\"0X05170O1811190Y\",\"боту \":\"1710181Y191E\",бою:\"170518091918\",\"бою \":\"17091918\",бољ:\"0V10\",\"боље \":\"0V1Y\",бр:\"0V260X1S161X172I1828192P1L09\",бра:\"0V1Q0X1Y163O175X1830191Z\",\"бра \":\"0V0F0X0O160M17421802190D\",брав:\"0X0516161905\",брави:\"161R\",брат:\"0V0D0X0J1613171E181U1911\",бре:\"0V050X0B1631180D192B\",\"бре \":\"0V040X0316351804191X\",брз:\"0V0S0X0R\",брзо:\"0V0P0X0M\",\"брзо \":\"0V1R0X0N\",бри:\"0V110X0M160R1808190Q\",бро:\"0V280X2R160O171F180Z190J\",\"бро \":\"0V1Q0X2U160A1803\",броў:\"171T\",бры:\"171M1806\",бс:\"16071706180D1905\",бу:\"0V1V0X0H160L172P1847199H1L0L1M1A\",\"бу \":\"0V0U170J180C190B\",був:\"0X07160F18031951\",\"був \":\"194B\",бува:\"0X08191P\",буд:\"0V2X0X0L160C176I186Y196U\",буде:\"0V1Q0X091604184B192J\",\"буде \":\"0V1T192S\",будет:\"0V0D185X1909\",будз:\"176T\",будзе:\"176K\",будзь:\"173M\",буди:\"0V1E0X07160818091919\",\"буди \":\"0V230X04160A1802\",будин:\"191N\",буду:\"0V08172Y181U190V\",\"буду \":\"172M1825190V\",будь:\"183C193I\",\"будь \":\"185L1949\",бул:\"1603170P1802195J\",була:\"1709192C\",\"була \":\"193D\",були:\"1919\",\"були \":\"191T\",було:\"1932\",\"було \":\"194E\",бур:\"0V040X041607170G180519061M0S\",буру:\"1M0P\",буруу:\"1M1E\",бус:\"0V0F0X06160N170K180G190K1M0Q\",бут:\"0X02160A170C1807192J\",бути:\"16061920\",\"бути \":\"192W\",\"буть \":\"1910\",буц:\"0V031M12\",буца:\"1M17\",буцаж:\"1M1M\",бх:\"1602170218041903\",бщ:\"1608180I\",бъ:\"161D180B\",бъд:\"1631\",бъда:\"160U\",\"бъда \":\"161B\",бъде:\"162D\",\"бъде \":\"1639\",бър:\"162H\",\"бър \":\"160Z\",бърз:\"1613\",бързо:\"161C\",бы:\"174C189W1L2A\",\"бы \":\"1726188P1L0F\",был:\"1773189Z1L2M\",\"был \":\"185O\",была:\"174W182K1L10\",\"была \":\"176O184P\",былд:\"1L23\",былда:\"1L2K\",были:\"181V\",\"были \":\"183G\",было:\"175O184J\",\"было \":\"17851888\",былі:\"171W\",\"былі \":\"172Q\",быр:\"1L1D\",быстр:\"181U\",быт:\"170B1822\",быть:\"182N\",\"быть \":\"184V\",быц:\"172E\",быць:\"1734\",\"быць \":\"174L\",быў:\"173J\",\"быў \":\"175I\",бь:\"1803\",бэ:\"17041M2G\",\"бэ \":\"1M4I\",бэл:\"1M0Z\",бэлэ:\"1M11\",бэлэн:\"1M1M\",бэр:\"1M0L\",бя:\"160V170Q182L\",\"бя \":\"16031854\",бях:\"162G\",\"бях \":\"161S\",бяха:\"160R\",\"бяха \":\"161M\",бё:\"17021808\",бі:\"173E194P1L8G\",\"бі \":\"170H194B1L0P\",біз:\"19021L66\",\"біз \":\"1L5T\",бізд:\"1L48\",бізді:\"1L4W\",біл:\"172Y193A1L59\",біла:\"172K\",\"біла \":\"173K1902\",білді:\"1L2D\",біле:\"170N19021L3B\",білме:\"1L2K\",біль:\"170L1930\",більш:\"193V\",білі:\"171619031L2A\",білім:\"1L2R\",бір:\"171219061LAJ\",\"бір \":\"19051L6R\",біра:\"171Q1L1Z\",бірақ:\"1L2D\",бірде:\"1L27\",бірі:\"1L4D\",бірін:\"1L37\",біц:\"174A190H\",біць:\"176B\",\"біць \":\"1797\",біў:\"1723\",\"біў \":\"173B\",бј:\"0V040X03\",бја:\"0V0B0X0B\",бјасн:\"0V0K0X0E\",бљ:\"0V03\",бү:\"1L141M2B\",бүг:\"1L221M19\",бүгд:\"1M1H\",\"бүгд \":\"1M1Q\",бүгі:\"1L3M\",бүгін:\"1L56\",бүр:\"1M14\",\"бүр \":\"1M13\",бүт:\"1M0N\",бүтэ:\"1M0P\",бүх:\"1M1G\",\"бүх \":\"1M11\",бүү:\"1M0N\",\"бүү \":\"1M0R\",бұ:\"1L4H\",бұл:\"1L8Z\",\"бұл \":\"1LF2\",бұр:\"1L1G\",бұры:\"1L28\",бұрын:\"1L2N\",бә:\"1L0L\",бө:\"1L0P1M0E\",бөг:\"1M0N\",бөл:\"1L1R\",в:\"0VCU0XDV16G3179J18GE19LY1L0S1M4N\",\"в \":\"0V0X0X4G163Q18C019I31L0N1M2P\",\"в'\":\"190K\",\"в'я\":\"1915\",\"в'яз\":\"190W\",вi:\"1902\",ва:\"0V7R0X8U16C917FF18D219CZ1L0J1M2R\",\"ва \":\"0V4K0XCP16NR179C183F193F\",ваа:\"0X201M12\",\"ваа \":\"0X13\",ваат:\"0X1L\",\"ваат \":\"0X1O\",вабод:\"172A\",вав:\"0X0Y170A18021938\",\"вав \":\"0X0Y193A\",ваг:\"171D190J\",\"вага \":\"171L1902\",вад:\"0V050X0E16061719180G1907\",вае:\"0X02174G182E\",\"вае \":\"1750\",вает:\"182N\",\"вает \":\"1835\",ваетс:\"181F\",ваец:\"171X\",ваецц:\"172K\",важ:\"0V0F0X0E160J171J180R191Z\",важа:\"0V03170M18051912\",вай:\"161Z174A1821190U\",\"вай \":\"161K173N181F190I\",вайго:\"1723\",вайт:\"160J1817190F\",вайте:\"16161829190M\",вак:\"0V190X0C1605170W18021905\",вал:\"0V230X0T162O1773184K19311M0Q\",\"вал \":\"0X0I1610182P1M0T\",вала:\"0V1H160D175T180Y191L\",\"вала \":\"0V3M160S175B181E1921\",валас:\"1732180D190A\",вали:\"0V0Q0X07160Z181J191A\",\"вали \":\"0V1A0X02161O1820191L\",валі:\"173D1908\",\"валі \":\"173R\",вам:\"0V1U0X6N166L17211843192X\",\"вам \":\"0V1T0X7G165W172M184L192O\",ваме:\"0X19161E\",\"ваме \":\"0X1B162X\",\"вами \":\"181W1914\",ван:\"0V0U0X0B162V1744181Q19211M0X\",\"ван \":\"0V0H0X03160D180C19021M0Z\",ване:\"161N1802\",\"ване \":\"161Z18041902\",ванет:\"161I\",ванн:\"172R180F190S\",ванне:\"171L\",вання:\"171L190V\",вао:\"0V1N\",\"вао \":\"0V1Z\",вар:\"0V2L0X12161C174K181N19191M0S\",вара:\"0V0U0X0V170T\",варам:\"0V080X0E\",вари:\"0V140X0A160B181C190L\",\"вари \":\"0V2G0X07\",варив:\"181M1902\",варно:\"0V260X03\",вары:\"172Z\",варыц:\"171R\",варя:\"160S1802\",вас:\"0V1I0X04160K172C1830192D\",\"вас \":\"0V1R0X05160N172R1841192R\",ват:\"0V1W0X1L1645171T18551956\",\"ват \":\"0X0B162D171Q1805\",вата:\"0V080X1J161F170B180G\",\"вата \":\"0V070X1L16311803\",вате:\"0V070X07160V180D\",\"вате \":\"0V0F0X06161N\",вати:\"0V13180P195T\",\"вати \":\"0V1I1806196K\",ватим:\"0V07190S\",ватис:\"1911\",вать:\"185B\",\"вать \":\"187V\",ватьс:\"181Y\",вах:\"160X170M180319031M34\",\"вах \":\"160L170K180419031M2E\",вац:\"0V0K175C\",вацц:\"171T\",вацца:\"172Q\",ваць:\"1776\",\"ваць \":\"17AE\",вач:\"0V090X0D170R1909\",ваш:\"0V160X3D1644171F181R191W\",\"ваш \":\"0V0N0X2S162M170U180J190J\",ваше:\"0V0E0X1N161M180W1907\",\"ваше \":\"0V0I0X1P1635180J190B\",ващ:\"1613\",ваю:\"1732181A1919\",\"ваю \":\"1734180N190A\",ваюс:\"18081911\",ваюся:\"191E\",вая:\"1725180P\",\"вая \":\"173H180X\",ваё:\"1724\",ваёй:\"1720\",\"ваёй \":\"1730\",ває:\"1918\",ваі:\"171S\",ваім:\"171U\",\"ваім \":\"1727\",\"ваіх \":\"171O\",вај:\"0V1J0X1Y\",\"вај \":\"0V180X1Y\",вајц:\"0X0I\",вајца:\"0X0J\",вањ:\"0V0S0X11\",вање:\"0V0N0X19\",\"вање \":\"0V1G0X0X\",вањет:\"0X0E\",ваў:\"1745\",\"ваў \":\"175Q\",вб:\"1908\",вв:\"1802190K\",вважа:\"1911\",вг:\"190A1M0E\",вгү:\"1M0S\",вгүй:\"1M0T\",\"вгүй \":\"1M1M\",вд:\"0V0U0X031602180N191R1M0G\",вда:\"0X03180P19101M0J\",вде:\"0V2B0X051906\",\"вде \":\"0V2S0X071802\",вдома:\"190Z\",вді:\"1914\",\"вді \":\"191A\",ве:\"0V670X4E1644177I189D194E1L0W\",\"ве \":\"0V4G0X12161E173118171912\",веа:\"0X0H\",вед:\"0V0E0X11161K177N181I190M\",веда:\"0X05160417B8\",ведае:\"176A\",ведац:\"171S\",ведаю:\"1760\",ведн:\"0X0I160T1709\",ведна:\"0X0F160X\",вее:\"0X0P160R1803\",век:\"0V1R0X0U161L172A181H\",\"век \":\"0V1W0X0S161G172G1817\",вел:\"0V110X0Z1608174H1817191J\",вели:\"0V0Z0X0P1608180T1918\",\"вели \":\"0V0D0X0H180D1904\",велик:\"0V1Y0X02160D180L191I\",вель:\"176Q1902\",вельм:\"179U1902\",вен:\"0V0T0X1Z162X170P1820190M1L0I\",\"вен \":\"0V030X1316111806190K\",вени:\"0V060X0L160R1805\",венио:\"0X0E\",венн:\"181W\",венно:\"181E\",венны:\"181F\",вено:\"0V050X0C160V\",\"вено \":\"0V0B0X0A161G\",вео:\"0V1S\",веом:\"0V1P\",веома:\"0V4C\",вер:\"0V1Z0X2G161O174L186R192T1L11\",вера:\"0V030X0417271802\",\"вера \":\"171T1803\",вере:\"0V080X071607181B1904\",верен:\"0V0B0X06160C182A\",вери:\"0V070X0C160D181F\",верит:\"181E\",верн:\"0V030X021603170I182G191H\",верну:\"1827191H\",веро:\"0V0P0X0N160J180E\",веров:\"0V1S\",вероя:\"1614180M\",верој:\"0X0N\",верси:\"160H180F19061L2H\",веру:\"0V0X0X1H170S\",верув:\"0X1K\",веруј:\"0V2A\",веры:\"172B\",\"веры \":\"171O\",\"верь \":\"181I\",вес:\"0V0L0X0Q160Q17151823190Z1L0D\",вест:\"0V0F0X0L160Q181G19081L0O\",вести:\"0V0P0X06181L190C\",вет:\"0V1L0X1R162P172K18351906\",\"вет \":\"0V0K0X0K1605170Z1814\",вете:\"0X0E1612180C1903\",\"вете \":\"0X081627180A1903\",вец:\"0X071607171J1804190B\",\"веце \":\"171S\",веч:\"0V0W0X0X163O171H181H191F\",вечар:\"171W\",вече:\"0V0W0X0Y1641181F190Z\",\"вече \":\"0V0K165S\",вечер:\"0V1R0X0Y162H1829191F\",вечір:\"190U\",веш:\"0V0B0X0H1609170918031903\",већ:\"0V1T\",\"већ \":\"0V1F\",веќ:\"0X2W\",веќе:\"0X3N\",\"веќе \":\"0X3P\",вж:\"191X1M09\",\"вж \":\"1M0O\",вжд:\"1919\",вжди:\"191H\",\"вжди \":\"1926\",вже:\"192E\",\"вже \":\"192T\",вз:\"160G180N190J\",взе:\"161J\",взем:\"1615\",вземе:\"1613\",ви:\"0V6H0X571660187419DD1L0B1M0C\",\"ви \":\"0V5A0X5D168C180C19A7\",вив:\"0X0Z16031803191K\",\"вив \":\"0X0Z190D\",вився:\"190R\",вивч:\"190W\",вивча:\"190W\",виг:\"1806191I\",вигл:\"190Z\",вигля:\"191F\",вигра:\"190Z\",вид:\"0V2R0X2V162M184E1922\",вида:\"0X0K18081906\",видам:\"0X0J\",виде:\"0V1R0X141604183V1902\",\"виде \":\"0V0A0X0F1804\",видел:\"0V110X0M184L1902\",видео:\"0V2K0X021808\",видет:\"0V0B181X\",види:\"0V1I0X0Y160V180Z190E\",\"види \":\"0V130X0I160K1903\",видим:\"0V1X0X0D160F180I\",видко:\"190S\",видо:\"0X0O1803\",видов:\"0X0N1803\",видум:\"0X0E\",видя:\"161D18031903\",\"видя \":\"161N\",вие:\"0X0O161I180C\",\"вие \":\"0X0V161G180D\",виж:\"0X04162L180O1904\",вижд:\"162J\",вижда:\"165B\",вий:\"16041802192H\",\"вий \":\"1802192E\",вик:\"0V0F0X0Y160R18041919\",вика:\"0V060X0N160J1902\",\"вика \":\"0X0D160B1803\",вил:\"0V0O0X111619182V191V\",\"вил \":\"0X0U160K18101902\",вим:\"0V1L0X0T160I1804190U\",\"вим \":\"0V15160K1803190D\",виме:\"0X12\",\"виме \":\"0X14\",вин:\"0V160X161634181T192O\",вина:\"0V0C0X0G161P180A190H\",\"вина \":\"0V0P0X0C160E180J190I\",винаг:\"162X\",винен:\"160B18061910\",винет:\"0X031611\",винн:\"1802190V\",вио:\"0V0Z0X0J\",\"вио \":\"0V10\",виот:\"0X0I\",\"виот \":\"0X0J\",вип:\"1912\",вир:\"0V0F0X0K160F18041911\",вирі:\"190W\",виріш:\"1916\",вис:\"0V0D0X26160R180F1917\",висок:\"0V0P0X0D1617190J\",вист:\"0X2C1806190B\",висти:\"0X2G1803\",вит:\"0V130X1216151847191R\",вите:\"0V0U0X191615181I1902\",\"вите \":\"0V250X19161O180A\",вител:\"0X02160R1828\",вити:\"0V0E18021910\",\"вити \":\"0V10190R\",витс:\"1829\",вится:\"1845\",вить:\"181P190E\",\"вить \":\"182F1908\",вих:\"0V0F161A190K\",\"вих \":\"0V0I16151906\",вича:\"190U\",вичай:\"1916\",виш:\"0V280X16161618061904\",\"виш \":\"0V0A0X1G1618\",више:\"0V29\",\"више \":\"0V5L\",виђ:\"0V0W\",виђа:\"0V10\",\"виђа \":\"0V1W\",вк:\"0V020X07160J180K190K\",вкъ:\"160V\",вкъщ:\"160Z\",вкъщи:\"1622\",вл:\"0V040X0E160G181I19121L091M0F\",вле:\"0X0X160G18131907\",влез:\"0X0J160A\",влезе:\"0X0E160I\",вля:\"160B181A191C\",вляет:\"181D\",влө:\"1M0S\",влөгө:\"1M16\",вм:\"0X0O1602180A190E\",вме:\"0X2I1607180M\",\"вме \":\"0X39\",вмест:\"160H181D\",вн:\"0V0O0X0T160O181R191T\",вна:\"0V080X0U160C1806190J\",\"вна \":\"0V0A0X0H160C1803190L\",внат:\"0X0K\",внатр:\"0X0D\",вни:\"0V0R0X15161P180V1914\",вним:\"0X0H1610180L1905\",внима:\"0X0I16261813\",вно:\"0V0T0X0W160S181N190W\",\"вно \":\"0V0P0X0Z160R181J190N\",во:\"0V7L0X7L164W173Q18DH19BY1L081M09\",\"во \":\"0V5Y0XDV16741708183C193P\",вобод:\"161B18141906\",вог:\"0V0X170H180B190Z\",вого:\"180E1913\",\"вого \":\"180Q191H\",вод:\"0V0Z0X0Z160T171A1828191H\",вода:\"0V060X0S160I180C1907\",\"вода \":\"0V0D0X0K160O180L190B\",води:\"0V0I0X0616061813190V\",водит:\"0X02181K190K\",вое:\"0X0I160E1708182G\",воего:\"181M\",воей:\"181B\",\"воей \":\"182H\",воето:\"0X0H160J\",воз:\"0V0U0X1L170D1826\",возм:\"0X0A1815\",возмо:\"0X0B1821\",вои:\"0X0O160A1823\",\"вои \":\"0X06181A\",воит:\"0X0O1609\",воите:\"0X0Q160J\",\"воих \":\"181F\",вой:\"160K1726182E\",\"вой \":\"16051737182O\",вол:\"0V3Q0X1T161I172K1825192B\",воле:\"0V120X0A160E170N1809190P\",волен:\"0X09160L170Z180E190Z\",воли:\"0V3B0X0C160E180G190G\",\"воли \":\"0V2Z0X05160E1802\",волим:\"0V3Z0X021607\",волн:\"0X0W160A180D\",волно:\"0X0T1807\",воль:\"171T18101908\",вольн:\"172G1812\",вом:\"0V0V180G190B\",\"вом \":\"0V0Z180J1907\",вон:\"0V030X0A170R181F198M\",вона:\"0X02195X\",\"вона \":\"198G\",вони:\"0X04181G193Z\",\"вони \":\"0X03180A195E\",воо:\"0X0O180J\",вооп:\"0X0N\",воопш:\"0X0O\",воп:\"1811\",вопр:\"181C\",вопро:\"182G\",вор:\"0V340X2N166H171Z186H194D\",\"вор \":\"0V0J0X15160A1809\",воре:\"0V0I0X0K160W18091902\",ворен:\"0V0S0X0J160T18071903\",вори:\"0V2G0X11164B186H193C\",\"вори \":\"0V250X0T1656180L1906\",ворил:\"0V0L0X02160E183D190F\",ворим:\"0V0P1617180E1907\",ворит:\"0V18160N187C1934\",вориш:\"0V0K0X03161I180N190C\",ворот:\"0X0C18091903\",воря:\"161N180U1906\",\"воря \":\"162T180A\",вос:\"0V050X091604171P181G1908\",вось:\"171P18041903\",\"вось \":\"172A\",вот:\"0V0Z0X1Q162I1816\",\"вот \":\"0V0H0X0M160E1816\",вото:\"0X1F161V\",\"вото \":\"0X0Z163Y\",вотот:\"0X0J\",\"вочы \":\"171L\",вошта:\"171T\",вою:\"1813191R\",\"вою \":\"181E191Z\",воя:\"1612180H190O\",воят:\"160U\",воята:\"1616\",воє:\"191C\",вої:\"191W\",\"вої \":\"1911\",вој:\"0V3V0X32\",\"вој \":\"0V150X0W\",воја:\"0V0E0X1C\",војат:\"0X14\",воје:\"0V17\",\"воје \":\"0V2T\",војк:\"0V090X0P\",војка:\"0V0E0X0M\",војо:\"0V0A0X0S\",војот:\"0X0T\",\"воју \":\"0V1L\",вољ:\"0V0Y\",вп:\"0X02180C190K\",вр:\"0V2A0X2816141824190L1M07\",вра:\"0V1M0X2916181818190G\",врат:\"0V1R0X2J16181809\",врата:\"0V1R0X16161M\",врати:\"0V2K0X181809\",вре:\"0V2M0X35162M182Y1906\",вред:\"0V0L0X111808\",вреди:\"0V130X0K1806\",врем:\"0V2E0X2W162V183Q\",време:\"0V5Z0X31165Y182X\",время:\"1843\",врс:\"0V070X0M\",врск:\"0X0Q\",врска:\"0X0Q\",врт:\"0V050X0C\",врш:\"0V120X15\",вршен:\"0V0K0X0D\",врши:\"0V0X0X0X\",\"врши \":\"0V0A0X0I\",вс:\"0X0E161P1863194Y1M0S\",вса:\"1M1L\",всан:\"1M1V\",\"всан \":\"1M3I\",все:\"0X0216291860192S\",\"все \":\"160R18341932\",всег:\"182S\",всегд:\"183F\",всего:\"181T\",всек:\"161D\",всеки:\"162W\",всем:\"160D181J\",\"всем \":\"160R182A\",\"всех \":\"181M\",вси:\"163E\",всич:\"163U\",всичк:\"167W\",вст:\"0X12160X1831191P\",вств:\"0X18160X181B1903\",вства:\"0X04161R180A\",вству:\"0X0Y1811\",встр:\"0X031604182A1919\",встра:\"0X031607181C191P\",встре:\"182U\",всушн:\"0X0E\",вся:\"160N180B194I\",\"вся \":\"18051958\",всяка:\"1617\",всё:\"183V\",\"всё \":\"1851\",всі:\"191S\",\"всі \":\"191J\",вт:\"0X0C160B1816191J1L0G1M0D\",вте:\"0X0C1904\",\"вте \":\"0X0G1902\",вто:\"0X0P1614181A191D1L0I\",втобу:\"0X09161J1814190R\",втор:\"0X0M160E180S1908\",вторн:\"0X0D1804\",втр:\"181C191H\",втра:\"181U191M\",\"втра \":\"182S191P\",ву:\"0V0Z0X0K16031729181I191T1M09\",\"ву \":\"0V1X172K180R1923\",вув:\"0X1L1604190F\",вува:\"0X241604190H\",\"вува \":\"0X0G\",вувам:\"0X0T\",вуваш:\"0X0G\",вуу:\"1M0N\",\"вуць \":\"171R\",вуч:\"0V0B0X0D1604172X18041903\",вуча:\"171R1802\",\"вучи \":\"0V080X0D1608\",вучы:\"172M\",вучыц:\"1721\",вх:\"180319021M0E\",вхө:\"1M0T\",вхөн:\"1M0Z\",\"вхөн \":\"1M1Y\",вц:\"0V061904\",вч:\"0X06160A180I191W1M0X\",\"вч \":\"1M19\",вча:\"1913\",вче:\"0X0K161518121903\",вчер:\"0X0O1614181G\",вчера:\"0X0P162D182P\",вчи:\"19231M0L\",вчин:\"190W\",вчит:\"190Z\",вчити:\"190U\",вчор:\"190X\",вчора:\"191D\",вш:\"0V02180A19051M09\",въ:\"1628\",въз:\"161J\",възмо:\"161C\",въп:\"161D\",въпр:\"161J\",въпро:\"162A\",вър:\"164Y\",върд:\"160X\",върде:\"161O\",върн:\"1615\",върна:\"161G\",върш:\"161M\",върши:\"162A\",вы:\"1774188V\",\"вы \":\"17AT18AI\",выву:\"171Z\",вывуч:\"172Z\",выгля:\"171X181E\",вый:\"170S181D\",\"вый \":\"181I\",вык:\"1726180H\",выпад:\"171K1802\",выр:\"171V180H\",выра:\"1733180C\",выраш:\"172F\",выход:\"170W181K\",выча:\"171Y1802\",вычай:\"172J1804\",выя:\"171J1804\",\"выя \":\"1728\",вь:\"180K1M09\",вэ:\"17021M3J\",\"вэ \":\"1M6F\",вэл:\"1M0V\",\"вэл \":\"1M11\",вэр:\"1M0S\",вээ:\"1M0V\",\"вээ \":\"1M0V\",вя:\"1615172L180K1905\",\"вя \":\"1621\",вяд:\"1720\",вядо:\"171R\",вядом:\"172N\",вял:\"16031727\",вялі:\"1734\",вялік:\"173Q\",вяр:\"1619172B\",вярв:\"1613\",вярва:\"162B\",вярн:\"160A1729\",вярну:\"172R\",вё:\"170G180L\",ві:\"173G19DE\",\"ві \":\"170B191T\",від:\"171D198V\",\"від \":\"170A192C\",відк:\"190Y\",відо:\"190T\",відом:\"1914\",відп:\"191R\",відпо:\"191U\",вій:\"191V\",\"вій \":\"191R\",вік:\"170M1912\",віл:\"172W191E\",віль:\"1716191A\",вільн:\"171K191V\",вілі:\"1721\",вілін:\"1723\",він:\"172D198S\",\"він \":\"19A2\",вір:\"170C192D\",віри:\"190Y\",вірит:\"190W\",віт:\"171G192D\",віта:\"171Y190B\",\"віть \":\"190T\",\"віщо \":\"190W\",вј:\"0X02\",вљ:\"0V0C\",г:\"0V5Z0X7S166U176O187J19781L4M1MJ7\",\"г \":\"0V1M0X09160A170O181Y191D1L051MIH\",гi:\"1L0Y\",га:\"0V2V0X32163F177V182J194V1L0T1MB0\",\"га \":\"0V4S0X5B168U17CG181A19151M2R\",гаа:\"0X021MC3\",\"гаа \":\"1M4N\",гааг:\"1M1V\",гаагү:\"1M27\",гаад:\"1M2A\",\"гаад \":\"1M46\",гаан:\"1M11\",\"гаан \":\"1M1E\",гаар:\"1M2U\",\"гаар \":\"1M3Q\",гаара:\"1M1A\",гаас:\"1M0P\",\"гаас \":\"1M1A\",гааш:\"1M1F\",\"гааш \":\"1M2R\",гав:\"0V030X061609171U190F\",гава:\"0V030X05160A171U\",гавар:\"172C\",гавор:\"171R\",гад:\"0X031606173C180B19171M1H\",гада:\"170J180819161M0X\",гадаа:\"1M1E\",гадаю:\"190V\",гадз:\"172M\",гадзі:\"173J\",газ:\"0V020X06160C170K180M190E1L0M1M0O\",газар:\"1M1A\",гай:\"1604170B180519081M1C\",гайх:\"1M13\",гайха:\"1M1M\",гал:\"0V0A0X061608172S180Q190V1M2Z\",галт:\"1M1R\",галта:\"1M1A\",галтт:\"1M1A\",гам:\"0V020X0E160E170F18081908\",ган:\"0V090X06160B171N180C190Z1L0W1M1H\",ганц:\"1M0X\",\"ганц \":\"1M16\",гао:\"0V1G\",\"гао \":\"0V1R\",гар:\"0V0B0X0F160O17331809191J1M22\",гарн:\"17091911\",гас:\"0V070X04170U180219021M15\",гаса:\"1M0T\",гасан:\"1M1M\",гат:\"0V0C0X0P162X171J180W1937\",гата:\"0V020X0K160T170P18021904\",\"гата \":\"0X0K161M18031906\",гато:\"161S170Z1802192U\",\"гато \":\"163S193Z\",гах:\"18041M0O\",гац:\"170F1M0Z\",гаца:\"1M0R\",гацаа:\"1M1I\",гаш:\"0X3A1606\",\"гаш \":\"0X491605\",гај:\"0V030X0D\",гв:\"16051705\",гг:\"1M14\",ггү:\"1M2S\",ггүй:\"1M3A\",\"ггүй \":\"1M6I\",гд:\"0V0G183Z1M2D\",\"гд \":\"1M0Q\",гда:\"186T1M1G\",\"гда \":\"188F\",гдаж:\"1M0X\",\"гдаж \":\"1M1U\",где:\"0V191823\",\"где \":\"0V1J182N\",гдө:\"1M1R\",гдөр:\"1M1R\",\"гдөр \":\"1M3F\",ге:\"0V0D0X051605170L180K190K1L9X\",\"ге \":\"0V0T180E190E1LCT\",ген:\"0V050X051607170I180819071L9C\",\"ген \":\"1LCN\",гер:\"0X071609170Q180D19071L3E\",гж:\"1M0C\",гжи:\"1M0O\",ги:\"0V0F0X1W160Y181Q190I1L0T1M2I\",\"ги \":\"0V0D0X611631181N190N\",гий:\"180219041M57\",\"гий \":\"180219051M17\",гийг:\"1M2K\",\"гийг \":\"1M55\",гийн:\"1M2I\",\"гийн \":\"1M4X\",гия:\"160B18041L1M\",гиялы:\"1L2A\",гк:\"170418091905\",гл:\"0V260X1U161M1721182H191P1M1Y\",гла:\"0V1Z0X1S161I170Z182C190R\",глав:\"0V0N0X0Q160E180D\",глава:\"0V090X0F160L\",глас:\"0V0N0X11160O1814\",гле:\"0V3C0X47163P170F\",глед:\"0V3F0X5G1628170M\",гледа:\"0V7S0X4Q163L\",гледн:\"0V0B0X0Q160U\",глеж:\"161Z\",глежд:\"1645\",гли:\"0V0F0X0C1614181D190R1M19\",\"гли \":\"0V0G1603180V190O1M0V\",глиар:\"1M1A\",глий:\"1610180U\",глийс:\"1624181K\",глиск:\"0X0C\",гло:\"0V050X031609180B19041M1V\",глох:\"1M0P\",\"глох \":\"1M1A\",глу:\"0V0E0X0K160F170C180L1905\",глуп:\"0V0A0X0H160F180E\",глупа:\"0X0C160O1802\",глэ:\"1M0N\",гля:\"173S180Z1914\",гляд:\"176618131916\",гляда:\"172I18031916\",глядз:\"175R\",глі:\"171S190V\",глій:\"171Q190V\",глійс:\"172K1917\",глө:\"1M0Z\",глөө:\"1M15\",\"глөө \":\"1M1E\",гн:\"0V0H0X19160U170P180D190G1M0K\",гна:\"0X291624170918051903\",\"гна \":\"0X0R161F\",гнам:\"0X1B\",\"гнам \":\"0X1E\",гне:\"0V0Y0X20161D170918051907\",\"гне \":\"0V0D0X13160K\",гнем:\"0V0J0X0O160D\",гнеме:\"0X0Q\",гнеш:\"0V060X0R160G\",\"гнеш \":\"0V0F0X0S160Z1902\",гнік:\"171R\",\"гнік \":\"171S\",гнө:\"1M0Q\",\"гнө \":\"1M0V\",го:\"0V3Y0X7E1663175618FL19BQ1L051M2F\",\"го \":\"0V3W0XIF16DF17A918IF19DZ\",гов:\"0V3T0X2A166A186K1939\",гова:\"0V0W0X0X160O180W\",говар:\"0V1A0X0R160U181M\",гово:\"0V2T0X1L1660187T193K\",говор:\"0V640X1J16BO18DN1954\",год:\"0V280X1I162D173618431949\",года:\"0X0C160Q170R181G1907\",\"года \":\"170Y181T190A\",годар:\"0X0C161J180T\",годзе:\"171M\",годи:\"0V270X1B161V1806191T\",годин:\"0V3F0X15163N191S\",годн:\"0V030X06171I182W192G\",годна:\"171M1906\",годня:\"184X\",годні:\"1939\",гол:\"0V080X18161C170S181O191O1M1R\",голд:\"1M0X\",голе:\"0X171609\",голем:\"0X19160K\",голо:\"0X02181P191J\",голов:\"181I190M\",голос:\"180W190R\",голя:\"1612\",голям:\"162A\",гон:\"0X031603170P180B19051M0N\",гоо:\"1M1E\",гор:\"0V0E0X0N160V172A1825190O\",гора:\"0X02172A180E\",горад:\"172Y\",горо:\"18191903\",город:\"18291904\",гот:\"0V060X0V16121816191E\",готв:\"0X0L160J\",гото:\"0V070X0F160M181J190S\",готов:\"0V0I0X0E160P182V1915\",гр:\"0V1E0X191616171H182D192J1L0E\",гра:\"0V2G0X1Z1631172Y183119371L0K\",град:\"0V100X16161918071902\",града:\"0V0G0X061613\",гради:\"0V080X0F160M\",градо:\"0X0C\",грам:\"0V0E0X0916081722180F1909\",грама:\"0X02160B17231904\",грат:\"0X021604180Q190U\",грати:\"1918\",грать:\"181C\",гре:\"0V0V0X121618180G1907\",греш:\"0V0S0X121619\",грешк:\"0V0W0X0H161H\",грешн:\"0V0H0X0E1608\",гри:\"0V040X0X160C18051906\",гриж:\"0X0Z160A\",гриже:\"0X0E\",гро:\"0V070X0C1607171E180M191K\",грош:\"1727191L\",гроше:\"1914\",грошы:\"171S\",гроші:\"1915\",гс:\"1M0O\",гсө:\"1M0T\",гсөн:\"1M0Z\",\"гсөн \":\"1M1U\",гт:\"190N1M3U\",\"гт \":\"1M3A\",гта:\"1M0O\",гти:\"191D\",\"гти \":\"1802191L\",гтэ:\"1M5E\",гтэй:\"1M5Z\",\"гтэй \":\"1MAB\",гу:\"0V1L0X24160Q172I182319151L0C1M17\",\"гу \":\"0V2F0X57173P183H1914\",губ:\"0V0O0X0P160S170P1804190H\",губи:\"0V0Q0X0Q160N190G\",гув:\"0X0F16041902\",гува:\"0X0K16051902\",гуй:\"1M0O\",гул:\"0X021603172I180C190B\",гульн:\"1728\",гуля:\"1723180B190A\",гур:\"0V0X0X171621170F18031904\",гуре:\"0X0X1610\",гурен:\"0X0Z1625\",гурн:\"0V0I0X0L1617\",гурна:\"0V0B161F\",гурно:\"0V0O0X0L160R\",гуу:\"1M1E\",гуул:\"1M1D\",гууль:\"1M1U\",гч:\"170F18021M0H\",\"гч \":\"1M0X\",гчы:\"171K\",гчым:\"171X\",гчыма:\"172R\",гш:\"1M0H\",\"гш \":\"1M0O\",гъ:\"1608\",гэ:\"17781M8W\",гэв:\"1M0L\",гэд:\"1M2X\",гэдг:\"1M0Z\",гэдги:\"1M1U\",гэдэ:\"1M2C\",гэдэг:\"1M4P\",гэж:\"1M67\",\"гэж \":\"1M73\",гэл:\"1M2C\",гэлж:\"1M0T\",\"гэлж \":\"1M1E\",гэлт:\"1M13\",гэлтэ:\"1M22\",гэн:\"1M1Q\",\"гэн \":\"1M1F\",гэр:\"1M3R\",\"гэр \":\"1M0X\",гэрл:\"1M0V\",гэрлэ:\"1M16\",гэрт:\"1M1N\",гэртэ:\"1M2J\",гэс:\"1M12\",гэсэ:\"1M19\",гэсэн:\"1M2J\",гэт:\"17M5\",гэта:\"17P6\",\"гэта \":\"17RA\",гэтаг:\"1749\",гэтай:\"172Z\",гэтая:\"172B\",гэту:\"173F\",\"гэту \":\"1727\",гэтую:\"171K\",гэты:\"179H\",\"гэты \":\"177U\",гэтым:\"173Z\",гэтыя:\"1727\",гэх:\"1M1C\",гээ:\"1M3R\",\"гээ \":\"1M13\",гээр:\"1M1Z\",\"гээр \":\"1M2V\",гі:\"171D190O1L6V\",\"гі \":\"171M19031L6C\",гіз:\"1L30\",гіл:\"1L1W\",гілі:\"1L2A\",гім:\"170B1L1E\",гін:\"170K1L57\",\"гін \":\"1L62\",гісто:\"171L\",гү:\"1L081M9A\",гүй:\"1MJI\",\"гүй \":\"1MLE\",гүү:\"1M10\",гүүл:\"1M0T\",гө:\"1M2N\",\"гө \":\"1M0X\",гөр:\"1M17\",гөрс:\"1M0P\",гөрсө:\"1M1E\",гөө:\"1M2K\",\"гөө \":\"1M1F\",гөөр:\"1M0R\",д:\"0VGS0XF616EI179X18DR19EV1LHC1MGV\",\"д \":\"0V2S0X2Q1616172M182B192T1L0B1MGA\",дi:\"1L1J\",\"дi \":\"1L2Q\",да:\"0VIC0XDX16DM17BY18B8195X1LM31ME7\",\"да \":\"0VSE0XRE16SG177J18BW191Z1LLJ\",\"да-ни\":\"181C\",даа:\"0X081M7L\",\"даа \":\"0X031M5H\",даас:\"1M1H\",\"даас \":\"1M2V\",даб:\"1739\",даба:\"1747\",дабае:\"174H\",дав:\"0V0M0X0S161G173Q182F19251M0Z\",\"дав \":\"0X041916\",дава:\"0V060X0M161J173I182D190Z\",давай:\"160H171A1836190X\",давал:\"1607171T180H1907\",даг:\"170S1M9M\",\"даг \":\"1M92\",дагг:\"1M1J\",даггү:\"1M33\",дад:\"0X1L161F170O18031L0S1M59\",\"дад \":\"1M65\",дада:\"0X0G170G\",дадам:\"0X0G\",даде:\"0X19161B\",\"даде \":\"0X0U1620\",дадов:\"0X0E\",дае:\"1604174U180M\",\"дае \":\"173F\",даец:\"172C\",даецц:\"172F\",даеш:\"172G1803\",\"даеш \":\"173I\",даж:\"16081708180W1M1M\",\"даж \":\"1M1V\",даже:\"16071816\",\"даже \":\"160G1826\",дай:\"161B171J180T19111L7A\",\"дай \":\"1614171S180N190N1L5N\",дайд:\"1L2H\",дайда:\"1L2H\",дайы:\"1L3D\",дайын:\"1L3U\",дал:\"0V150X2H163017381835191E1L3S1M30\",\"дал \":\"0X0A161E181U1M19\",дала:\"0V0S0X05160W171V180G190H1L3T\",\"дала \":\"0V1X0X05161V172E180Q190N\",далан:\"1L3H\",далд:\"1L0O1M19\",далда:\"1M22\",дали:\"0V060X2C160R180O190A\",\"дали \":\"0V0G0X2G161J1811190A\",дам:\"0V100X4R1616171R180C19081L8V\",\"дам \":\"0V0Y0X5V1614171A180A19051L6C\",дамд:\"1L3T\",дамда:\"1L44\",дамны:\"1L2K\",дамы:\"1L2D\",дан:\"0V3U0X1B160V171X1814190M1L741M1W\",\"дан \":\"0V290X1M160618051L8C1M1B\",дана:\"0V2A1603170F1802\",\"дана \":\"0V2016071802\",данас:\"0V3F\",данд:\"1L1E1M0T\",данда:\"1M1A\",дао:\"0V0Y\",\"дао \":\"0V15\",дап:\"171W1L0Y\",дапа:\"172P\",дапам:\"173S\",дар:\"0V0D0X0P161C174Y1818190P1LBW1M3X\",\"дар \":\"0X05170O180219021L6C\",дара:\"0V020X05171M1L0O1M1D\",дараа:\"1M2R\",дард:\"1L551M1B\",дарда:\"1L2N1M2J\",дарды:\"1L4T\",даро:\"0V030X0C1729180B\",дарч:\"1M0V\",\"дарч \":\"1M1M\",дары:\"171O1L82\",\"дары \":\"1L3H\",дарыл:\"171L\",дарын:\"1L6M\",\"даря \":\"161A1805\",дас:\"171O180419031L1G\",дасты:\"1L2A\",дат:\"0V0P0X191617170P181P19181L0I\",\"дат \":\"0X0S160M1803\",дата:\"0V070X0O160H1802\",\"дата \":\"0V080X0Q16101802\",дати:\"0V091916\",\"дати \":\"0V0N191J\",дать:\"181Y\",\"дать \":\"183E\",дау:\"1L2L\",дах:\"0V061605170M180219041M59\",\"дах \":\"1604170A180319021M1B\",дахг:\"1M3D\",дахгү:\"1M6P\",дахи:\"1M1L\",дахиа:\"1M1E\",дахин:\"1M1M\",дац:\"1721\",даць:\"172Y\",\"даць \":\"174E\",даш:\"0V0H0X0U160M17081806\",\"даш \":\"0V0J0X0K160G1803\",даше:\"0X0K160A\",\"даше \":\"0X0L160L\",даю:\"1734180J1910\",\"даю \":\"17421809190V\",дає:\"192H\",\"дає \":\"190T\",даєт:\"191L\",даєть:\"1923\",дај:\"0V1O0X18\",\"дај \":\"0V0R0X1J\",\"даље \":\"0V1Q\",даў:\"172X\",\"даў \":\"172Z\",дағ:\"1L5M\",дағы:\"1L8L\",\"дағы \":\"1LAW\",дб:\"0V060X0717071907\",дби:\"0V0A0X0B\",дв:\"0V0I0X0P1612170Y181N191L1M0C\",два:\"0V0L0X0Z163417291816190R\",\"два \":\"0V0J0X0B1611171O1813190M\",двам:\"160X\",двај:\"0X0S\",двајц:\"0X0J\",две:\"0V0E0X0J160S181C190R\",дверь:\"181F\",дви:\"0V040X0D160J180F1903\",дво:\"0V0B0X0N1608170Q180J190V\",двор:\"0V030X0L170T18051905\",\"двор \":\"0X0J1802\",дві:\"1911\",дг:\"0V0B0X09160217021M0S\",дги:\"1M0X\",дгий:\"1M13\",дгийг:\"1M22\",дго:\"0V0T0X0U16061803\",дгов:\"0V0Z0X10\",дгово:\"0V290X0X\",дгээр:\"1M16\",дгү:\"1M0L\",дгүй:\"1M0P\",\"дгүй \":\"1M1E\",дд:\"0X021709180419051M17\",дда:\"1603170F19061M19\",ддаг:\"1M1F\",\"ддаг \":\"1M1Y\",ддэ:\"1M1C\",ддэг:\"1M1H\",\"ддэг \":\"1M2F\",де:\"0V6C0X8C164Q18EC19531LFN\",\"де \":\"0V6N0X7Q167G1835194T1LG1\",дев:\"0V0J0X1J160418191906\",дева:\"0X0R1808\",девам:\"0X0N\",дево:\"0V0I0X0S180C\",девој:\"0V1A0X0T\",дег:\"1L31\",деген:\"1L2H\",дегі:\"1L3M\",\"дегі \":\"1L4Z\",дей:\"160G181I190E1L2M\",\"дей \":\"1606180U190H1L26\",дейс:\"160A1817\",дейст:\"160L1828\",дейін:\"1L2N\",дек:\"0X9O1603180219051L0G\",дека:\"0XCF\",\"дека \":\"0XD0\",дел:\"0V110X2C161118BG19041L1Y\",\"дел \":\"0X0Z1604182A\",дела:\"0V0F0X0O18AA\",\"дела \":\"0V0Y0X0M181F\",делае:\"182V\",делал:\"185E\",делат:\"1885\",\"деле \":\"0X04181C\",дели:\"0V090X0916081814\",\"дели \":\"0V0F0X071606181E\",делу:\"0V0B0X0J1803\",делув:\"0X0J\",дем:\"0V2B0X13160V180S190K1L1T\",\"дем \":\"0V26160T180W\",деме:\"0X1B\",\"деме \":\"0X1C\",\"демо \":\"0V1N190V\",ден:\"0V0F0X4G164P184K19221L6D\",\"ден \":\"0X3I162R180D19091L4S\",\"дена \":\"0X0C161218051902\",дене:\"0X181609180Y1L0O\",денег:\"181O\",денес:\"0X17\",дени:\"0X07160N181A1L1S\",дено:\"0X0H160G18021902\",дент:\"0V0C0X04160P180J190K1L36\",день:\"182Y191C\",\"день \":\"183I191W\",деньг:\"181W\",део:\"0V1318041902\",\"део \":\"0V1818031902\",деп:\"0X04180219021L3K\",\"деп \":\"1L66\",дер:\"0V0B0X0A1603181U190K1L6J\",\"дер \":\"0X031L2T\",дерд:\"1L2O\",дерді:\"1L2N\",дерев:\"181L190L\",держ:\"181G1903\",дері:\"1L4Z\",\"дері \":\"1L2N\",дерін:\"1L37\",дес:\"0V1L0X0E16141834190O1L1D\",десе:\"0V0Y0X0B1610180219021L0Q\",десет:\"0V2D0X091620\",десь:\"18301906\",\"десь \":\"185J1908\",десят:\"181S190T\",дет:\"0V0R0X0L161M1855190F1L1Y\",\"дет \":\"183G\",дете:\"0V0N0X0L161A1816190D\",\"дете \":\"0V1G0X0G1624180V190I\",детт:\"1L2D\",детте:\"1L27\",деть:\"181G1903\",\"деть \":\"1828\",дец:\"0V0I0X0P160Z18031902\",деца:\"0V0A0X0V160Z\",\"деца \":\"0V0P0X0H160Y\",децат:\"0X0G1615\",деч:\"0V0G0X0E\",дечк:\"0X0I\",деш:\"0V0W0X1N161D180O190P\",\"деш \":\"0V0V0X1K161F190O\",деше:\"0X0M160418031905\",\"деше \":\"0X0N1608\",\"дешь \":\"181F\",деюсь:\"181F\",деј:\"0V0A0X0E\",дељ:\"0V13\",дж:\"160F1712180E191D1L08\",джон:\"160H170E180G190V\",джу:\"1603170M190X\",дз:\"17AK190A\",дзе:\"17GJ1902\",\"дзе \":\"17CY\",дзей:\"172O\",\"дзей \":\"172K\",дзел:\"172Y\",дзен:\"174J\",дзень:\"174M\",дзец:\"172W\",дзець:\"1724\",\"дзеш \":\"1723\",дзь:\"172K\",\"дзь \":\"1736\",дзя:\"175C\",дзяку:\"171O\",дзяц:\"171T\",дзяўч:\"172B\",дзі:\"17DF\",\"дзі \":\"174F\",дзіл:\"173C\",дзіла:\"1724\",дзіль:\"171S\",дзін:\"175B\",\"дзін \":\"173J\",дзіц:\"176O\",дзіцц:\"172C\",дзіць:\"174Y\",дзіў:\"172N\",ди:\"0V690X2X1637186L197I1L0W1M1A\",\"ди \":\"0V5G0X4E164A1824194K\",див:\"0V080X0F1607180L1932\",диви:\"0V021604180C1919\",дий:\"190K1M22\",дийг:\"1M0V\",\"дийг \":\"1M1E\",дийн:\"1M1F\",\"дийн \":\"1M1Q\",дил:\"0V1B0X0C160D1822190R1M0T\",дила:\"0V0W180H190G\",\"дила \":\"0V27180L190D\",дим:\"0V380X16160O180R1906\",\"дим \":\"0V2V160H180F1902\",диме:\"0X1I\",\"диме \":\"0X1K\",димо:\"0V0W1606180C1904\",\"димо \":\"0V2A160C180C1904\",дин:\"0V1N0X1M164H182C1947\",\"дин \":\"0V040X04162C181I190V\",дина:\"0V0T0X0M160V18081911\",\"дина \":\"0V1Y0X0C16131805191F\",\"дине \":\"0V1Q1806\",дини:\"0V0B0X0U161C1805190N\",\"дини \":\"0V0O0X0V162I190L\",дино:\"180E190V\",динок:\"18091911\",динс:\"0X0H160E180L\",динст:\"0X0I160U1813\",дио:\"0V1R0X05160A1809\",\"дио \":\"0V231804\",дит:\"0V240X0H1612185O1932\",\"дит \":\"182A\",дите:\"0V1Q0X0K1613182I1903\",\"дите \":\"0V3F0X0B1618182C1904\",дител:\"0X0A16131826\",дити:\"0V0S191T\",\"дити \":\"0V1X191B\",дитин:\"190W\",дится:\"181H\",дить:\"182E191G\",\"дить \":\"1840191F\",диш:\"0V1A0X161612180I1906\",\"диш \":\"0V150X18160X1906\",дк:\"1607171A180J1914\",дка:\"160D172K18081907\",дказ:\"1725\",дл:\"0V0E0X0C1605170Z181S19161M0Y\",дла:\"0V090X0A160418041M15\",длаа:\"1M0Z\",\"длаа \":\"1M1U\",дли:\"0V050X0F1603180J190B\",дложе:\"160D181M\",длу:\"0V0N0X0C\",длучи:\"0V1Q0X05\",для:\"172S1825191X\",\"для \":\"174M182X1929\",дм:\"0V0D0X05160717071802190A\",\"дмах \":\"0V1V\",дмица:\"1616\",дн:\"0V1M0X241623172V184D193V1M1E\",дна:\"0V0L0X2Z163M174V180X19121M1C\",\"дна \":\"0V0N0X28162K1739180R190Z1M1H\",дната:\"0X0C160X\",днаш:\"0X0Q\",\"днаш \":\"0X0R\",\"дная \":\"171X180H\",дне:\"0V0S0X19161H1709180V190K\",днес:\"0X0Q1618\",\"днес \":\"162L\",днесу:\"0X0C\",дни:\"0V0R0X111614181719141M12\",\"дни \":\"0V0D0X0H160K180A\",дний:\"180G190N1M17\",\"дний \":\"180T190Y1M1E\",дниот:\"0X0D\",дно:\"0V2A0X2R162M171618361922\",\"дно \":\"0V1J0X2X162K170R182C1915\",дного:\"180X190W\",днос:\"0V0G0X0H1605170C18061903\",дност:\"0V0T0X0E180B1902\",дны:\"1728180W\",\"дны \":\"171V1804\",днэ:\"1M12\",\"днэ \":\"1M15\",дня:\"1714182L190P\",\"дня \":\"170T1831190N\",дні:\"170X192U\",\"дні \":\"170Q192Q\",до:\"0V4G0X5O16491731189J19BM1L121M3N\",\"до \":\"0V1C0X1F162T1844195Q\",доа:\"0X0N\",доаѓ:\"0X0H\",доаѓа:\"0X0H\",доб:\"0V3C0X4D165S1740181G195S\",доба:\"0V0R0X0U16061809193J\",добар:\"0V1S0X0V\",добає:\"193Q\",доби:\"0V0P0X0T1604180D1904\",добр:\"0V2L0X43164R1764180T193A\",добра:\"0V0X0X0L1611176P180H190J\",добре:\"0V080X03166N1802192S\",добри:\"0V0H0X0I161H1802190T\",добро:\"0V4U0X35160V180I190F\",добры:\"172I180B\",добъ:\"160Z\",добър:\"1622\",дов:\"0V110X2X161F17051823192Y\",\"дов \":\"0X1S180A\",дове:\"0V040X08160S180Q1907\",довме:\"0X0C\",дово:\"0V0T0X14160I180X1915\",довол:\"0X151611181K191C\",довољ:\"0V20\",довір:\"190T\",дог:\"0V0L0X061603180D19071M2K\",\"дог \":\"1M2M\",дод:\"0V0A0X0I1802190Z\",доде:\"0X0L1802\",додек:\"0X0H\",додо:\"190Y\",додом:\"191D\",дож:\"0X08170M181719021M1C\",\"дож \":\"1M1L\",дожд:\"0X061710181H\",доз:\"0V0H0X0R160718091911\",дозв:\"0V0I0X0M190Y\",дозво:\"0V1B0X0N1803191B\",дозна:\"0X0C\",дой:\"161W180H\",дойд:\"16251804\",дойде:\"163I\",док:\"0V140X0G161B170E180M190E\",дока:\"0V050X09160T18091902\",докат:\"161F\",дол:\"0V0T0X1M160G170K184B190G1L0E1M1C\",долг:\"0X0U180Y\",долго:\"0X0N181D\",долж:\"0X0N184E\",долже:\"0X02183G\",должи:\"0X0F180P\",должн:\"0X02183K\",доло:\"1M0Z\",долоо:\"1M1Y\",дом:\"0V0D0X1L160J172L183N192O1L0E\",\"дом \":\"0V080X041715181V1906\",дома:\"0V060X1T160H171W181K1914\",\"дома \":\"0X1O1606171R182H1917\",домо:\"0X0218141907\",домой:\"181U\",дому:\"170I18051911\",\"дому \":\"170P1809191I\",дон:\"0V090X0U160I170C1808190N\",доне:\"0V070X0Z160D1803\",донес:\"0V080X0X160Q\",доо:\"180219021M2R\",\"доо \":\"1M2Q\",доп:\"0V0F0X1F160A18091931\",допа:\"0V0F0X1M\",допад:\"0V0S0X0J\",допаѓ:\"0X17\",допо:\"1804193F\",допом:\"194U\",дор:\"0V070X09160F170A181E191C\",доро:\"0X03181Q191D\",дорог:\"181T190P\",дос:\"0V0T0X1B1624170I181H191L1L1D\",дост:\"0V0Q0X16161R181V190L1L17\",доста:\"0V1G0X0W16351821190Q1L0Z\",дот:\"0X11160618061908\",\"дот \":\"0X14\",доц:\"0X0R\",доцн:\"0X0Z\",доцна:\"0X0N\",доцни:\"0X0C\",дођ:\"0V0W\",дој:\"0X1Q\",дојд:\"0X29\",дојда:\"0X0D\",дојде:\"0X1I\",доў:\"1722\",дп:\"1606170C1809190R\",дпо:\"160I180B1913\",дпов:\"1913\",дпові:\"191L\",др:\"0V1L0X191610171B1825191T1L0F1M12\",дра:\"0V180X10161A171M180J190G1M1J\",драв:\"0V0P0X0H16111808\",драг:\"0V0H0X0H\",драго:\"0V0U0X0H1802\",драл:\"18021M13\",\"драл \":\"1M16\",дре:\"0V0B0X0C160M180D1909\",држ:\"0V0Q0X0V\",дру:\"0V1O0X1P1622170X183E192Q\",друг:\"0V1L0X1V1627170S183J1910\",\"друг \":\"0X0J161B181W190L\",друга:\"0V0J0X0G160M1816190F\",други:\"0V190X0G161M18191903\",друго:\"0V1J0X0K1619170F181V1908\",друж:\"0V080X0B1604180B191D\",дружи:\"0V0F0X051807191C\",друзі:\"190W\",дрэ:\"171L\",дс:\"0V081608170G180K190G1M0X\",дса:\"1M0Z\",дсан:\"1M15\",\"дсан \":\"1M22\",дстав:\"0V0F161A170F1810190A\",дсэ:\"1M0Z\",дсэн:\"1M15\",\"дсэн \":\"1M27\",дт:\"170A180E190F1L081M0I\",дта:\"170Q1M0Q\",дтай:\"1M0V\",\"дтай \":\"1M1M\",\"дто \":\"1807190V\",\"дтэй \":\"1M1A\",ду:\"0V1B0X0S160J172Z185N19661L071M3M\",\"ду \":\"0V1B160B1741184E192R\",дув:\"0V040X1D190I\",дува:\"0X1S190L\",\"дува \":\"0X0M\",дувам:\"0X0E\",дуг:\"0V0Y1M0S\",\"дуго \":\"0V1V\",дуж:\"0V09170A194P\",дуже:\"0V04195E\",\"дуже \":\"0V0A197Q\",дум:\"0X0F160V173F184U194D\",\"дум \":\"0X0H\",дума:\"160O1748186F194E\",думав:\"1919\",думае:\"171B1834\",думал:\"170V183G190P\",думаю:\"171R184P192M\",думає:\"191Q\",дур:\"0X0A170E180C190F1M56\",дург:\"1M1H\",дургү:\"1M2V\",дурт:\"1M4L\",дурта:\"1M8Z\",дуу:\"1M2M\",\"дуу \":\"1M0T\",дуус:\"1M19\",дуусг:\"1M1U\",\"дуць \":\"1723\",душ:\"0V060X0D160I170Q180L1909\",дх:\"18041902\",дц:\"180K190C\",дцат:\"181B\",дцать:\"181N\",дцят:\"190T\",дцять:\"190V\",дч:\"170H1803190B\",дш:\"170218061907\",дъ:\"1611\",дъл:\"161S\",дълг:\"160U\",дълго:\"1614\",дълж:\"160Y\",дължи:\"1612\",дър:\"161F\",държ:\"1611\",държа:\"161D\",ды:\"1736181C1LKG1M0H\",\"ды \":\"177E181I1LRY\",дым:\"170I18051L3O\",\"дым \":\"18051L6C\",дын:\"170F1L141M0S\",\"дын \":\"1M0R\",дыр:\"18021L2O\",дығ:\"1L1D\",дығы:\"1L2J\",дығын:\"1L2H\",дық:\"1L6A\",\"дық \":\"1L73\",дықт:\"1L4F\",дықта:\"1L4Z\",дың:\"1L8B\",\"дың \":\"1LDK\",дь:\"181T191T\",\"дь \":\"183D1932\",дэ:\"170R1M7X\",дэг:\"1M5W\",\"дэг \":\"1M56\",дэгг:\"1M0T\",дэггү:\"1M1M\",дэгт:\"1M11\",\"дэгт \":\"1M1M\",дэж:\"1M0S\",\"дэж \":\"1M0X\",дэл:\"17081M10\",дэлх:\"1M0P\",дэлхи:\"1M1E\",дэн:\"170U18021M2S\",\"дэн \":\"170I18031M19\",дэнд:\"1M1F\",\"дэнд \":\"1M2R\",дэнтэ:\"1M16\",дэх:\"1M3H\",\"дэх \":\"1M1H\",дэхг:\"1M21\",дэхгү:\"1M42\",дээ:\"1M5S\",\"дээ \":\"1M2G\",дээгү:\"1M16\",дээр:\"1M2G\",\"дээр \":\"1M4A\",дээс:\"1M0V\",\"дээс \":\"1M1M\",дя:\"160S180L190X\",\"дя \":\"161M180A1902\",дявам:\"1611\",дяку:\"190S\",дё:\"181A\",дёт:\"181S\",\"дёт \":\"181S\",ді:\"194G1LEV\",\"ді \":\"192A1LLC\",дів:\"1924\",діва:\"1912\",діваю:\"1913\",дівч:\"190Y\",дівчи:\"1915\",діг:\"1L1C\",дігі:\"1L2H\",дій:\"1910\",дійсн:\"190U\",дік:\"1L42\",\"дік \":\"1L5A\",дім:\"19091L25\",\"дім \":\"19031L3O\",дір:\"1L2D\",діт:\"191C\",дің:\"1L8O\",\"дің \":\"1LE8\",дњ:\"0V08\",дү:\"1L0N1M0E\",дүние:\"1L2R\",дүү:\"1M0X\",дұ:\"1L08\",дә:\"1L0V\",дө:\"1M2Q\",дөр:\"1M4V\",\"дөр \":\"1M5B\",е:\"0VQW0XR216QS17DX18QR19MU1LOW1M13\",\"е \":\"0VSB0XRU16RH17NL18SG19SC1LL51M0O\",\"е-\":\"180D1L08\",еа:\"0V020X0Y1602170618091905\",\"еа \":\"0X2B\",еам:\"0X0H\",\"еам \":\"0X0M\",еб:\"0V230X2V160R170J185J19311L0N\",\"еб \":\"0V060X04161417081805\",еба:\"0V3I0X5S1609170I18051916\",\"еба \":\"0V2P0X5K1605170G18051916\",ебаат:\"0X0E\",ебал:\"0V170X0Q\",ебало:\"0V2Z0X0P\",ебаш:\"0X0W\",ебаше:\"0X0V\",ебе:\"0V100X2Q161C1706185N194F1L0Y\",\"ебе \":\"0V0Y0X2Y1610170A187E194T\",еби:\"0V0G0X1L1603180319031L0D\",\"еби \":\"0V0G0X1V1902\",ебудз:\"171Z\",ебя:\"170B1856\",\"ебя \":\"186X\",ев:\"0V1K0X2D160O170G182V191U1L0L\",\"ев \":\"0V030X351602180K1L0W\",ева:\"0V1B0X151605170E1815190E\",евам:\"0V060X0O\",\"евам \":\"0V0F0X0N\",еве:\"0V0Y0X15160W180P190L\",\"евет \":\"0V0O0X0C1607\",еви:\"0V0U0X0P160U180N190I\",евм:\"0X0L\",евме:\"0X0S\",\"евме \":\"0X0U\",евн:\"0V080X0E1606180H190V\",ево:\"0V0Y0X1D160D181B190B\",\"ево \":\"0V0B0X0J180B1905\",евој:\"0V0J0X0S\",евојк:\"0V0M0X0P\",еві:\"170I190Z\",ег:\"0V1G0X1L1613170F187O190N1L4U\",ега:\"0V0V0X2K161U170B180F1908\",\"ега \":\"0V0O0X32161U1805\",егд:\"0V02181D\",егда:\"181U\",\"егда \":\"183F\",еге:\"0X0317081803190F1L69\",\"еге \":\"190B1L55\",еген:\"19021L4M\",\"еген \":\"1L56\",егн:\"0V060X0H160F1802\",его:\"0V240X25161N18D01906\",\"его \":\"0V0X0X1T161018EP\",егов:\"0V1J0X0T160U1804\",егови:\"0V0C0X0C160O1802\",егод:\"182P\",егодн:\"184Y\",егу:\"0X0E16021805\",егув:\"0X0I\",егува:\"0X0J\",егі:\"170619031L5V\",\"егі \":\"1L55\",егіз:\"1L32\",ед:\"0V510X4V164U1738186L191W1L5A1M0D\",\"ед \":\"0V0T0X1W162D170H1810190O1M0T\",едi:\"1L1D\",\"едi \":\"1L2J\",еда:\"0V420X4D162C17821817190F\",\"еда \":\"0V190X1V160R180H1902\",едае:\"17491803\",\"едае \":\"172Y\",едаеш:\"172G\",едам:\"0V0H0X1F160E170M\",\"едам \":\"0V130X1A160O1802\",едан:\"0V0X170B1802\",\"едан \":\"0V26\",едаш:\"0V0C0X121605\",\"едаш \":\"0V0V0X0K1607\",едаше:\"0X0K\",едаю:\"17421802\",\"едаю \":\"17541802\",\"едај \":\"0V110X0G\",\"едаў \":\"171O\",едв:\"0V060X0C161G1706180C1902\",едва:\"0V040X09161E170B1807\",едващ:\"161B\",еде:\"0V2P0X2V161M182919061L2A\",едел:\"0V020X11160J181N1L0V\",едела:\"0X0M1804\",еден:\"0X1R160G180F1L0Q\",\"еден \":\"0X1O160H1804\",едеше:\"0X0C\",едељ:\"0V17\",едз:\"171J1902\",еди:\"0V2G0X2J16501828190F1L0P\",\"еди \":\"0V0O0X191623180J1902\",един:\"0V0F0X0N162Z18111904\",\"един \":\"164Q\",единс:\"0X0I160U1813\",едл:\"0V060X0A160D181D1906\",едлож:\"0X04160K181Z\",едми:\"0V05160R\",едмиц:\"0V0D161F\",едн:\"0V2D0X4B1653170F18191908\",една:\"0V0D0X2M162Z17091803\",\"една \":\"0V0S0X1F1647\",еднат:\"0X0C160M\",еднаш:\"0X0R\",едни:\"0V0G0X0O160L180P1902\",едно:\"0V1N0X2D161S1805\",\"едно \":\"0V1R0X1Y163C1803\",еднос:\"0V0T0X0E1803\",едо:\"0V0J0X12160M17051817190C\",едста:\"0V0F161A180Z1905\",еду:\"0V0K0X0T1605170D18201906\",едув:\"0X0R\",едува:\"0X0T\",едующ:\"181F\",еді:\"190U1L9O\",\"еді \":\"19051LES\",\"едім \":\"1L23\",ее:\"0X0K160F170D181U\",\"ее \":\"0X0Z1610170M182L\",ееш:\"0X0L160D170G1809\",\"ееш \":\"0X0K160E170Q\",еж:\"0V0D0X0D160X170K181C190V1L0H\",ежд:\"162G1814\",ежда:\"16281809\",\"ежда \":\"16391808\",ежи:\"0V0E0X0B1609180I190H\",ез:\"0V140X0Z161I170P182T191E1L2R\",\"ез \":\"0V0Q0X0O16211712181O190V1L0T\",еза:\"0V0E0X0G1609170E180L190B\",езб:\"0V080X0D\",езбед:\"0V0F0X0E\",езд:\"0V060X091603170M181B19021L2D\",езде:\"0V0218091L3X\",\"езде \":\"180F1L2H\",ездес:\"1L2A\",езе:\"0V070X0Z160T180419021L1D\",\"езе \":\"0V030X0H160G\",ези:\"0V100X091621180819061L1E\",\"ези \":\"0V040X03161F\",езид:\"1603180619041L2F\",езиде:\"1607180C19061L3H\",еи:\"0X0216031807\",ей:\"160P1729185E19241L6A\",\"ей \":\"160I175G188A193B1L3B\",ейд:\"19021L4V\",ейді:\"1L6P\",\"ейді \":\"1L96\",ейм:\"160219041L1Y\",еймі:\"1L36\",еймін:\"1L4A\",ейс:\"160R170F1819190E1L1O\",ейст:\"160L1817\",ейств:\"16181828\",ейч:\"181K\",ейча:\"1825\",ейчас:\"1840\",ейш:\"171F1806\",ейі:\"1L36\",ейін:\"1L4J\",\"ейін \":\"1L59\",ек:\"0V3R0X5T161N171I182P192D1L9V\",\"ек \":\"0V1S0X0Z161B171I181A19031L77\",ека:\"0V3L0XC616211725180Y191T1L0F\",\"ека \":\"0V0O0XD5160W1712180N1903\",екак:\"0X0M\",екако:\"0X0G\",екам:\"0V0F0X0U\",\"екам \":\"0V0Q0X0J\",екаме:\"0X0C\",екао:\"0V1Y\",\"екао \":\"0V4X\",екар:\"0V090X0G160U170J180A1L0T\",екати:\"190Z\",еке:\"0V0B0X0218081L8V\",\"еке \":\"0V0D180A1L2A\",екен:\"1L3T\",\"екен \":\"1L2D\",екені:\"1L2A\",екет:\"1L86\",\"екет \":\"1L44\",екетт:\"1L72\",еки:\"0V160X0G161Q18061904\",\"еки \":\"0V0C161U18061904\",екива:\"0V21\",екн:\"0V020X0D\",еко:\"0V280X4Y16081811190X\",\"еко \":\"0V1H0X05180D1907\",еков:\"0X0L1802\",\"еков \":\"0X0G1802\",еког:\"0V0B0X201802\",екога:\"0V0C0X1V\",екол:\"0V0L0X0W\",еколк:\"0X0M\",\"екот \":\"0X0E\",екој:\"0X1Y\",\"екој \":\"0X1T\",екр:\"0V040X0F1609180T190B\",екрас:\"0V060X0F160C18121906\",екс:\"0V0F0X0F160D1705180E190K1L14\",ект:\"0V0B0X0A160M1713180O190G1L54\",екте:\"1L5T\",ектес:\"1L2D\",екті:\"1L28\",еку:\"0V0F0X1616031709180D1906\",екув:\"0X0V\",екува:\"0X0X\",екі:\"170B19041L3K\",\"екі \":\"170D1L46\",ел:\"0V3D0X35162S173618CF192U1LAI\",\"ел \":\"0V040X38161P185519021L2C\",ела:\"0V1X0X1J16131746188V1906\",\"ела \":\"0V1Z0X15160N173Q18201905\",елае:\"1603181M\",елает:\"1821\",елал:\"182Y\",\"елал \":\"183Q\",елар:\"0V080X07171T\",елару:\"172Q\",елат:\"0X0B1604184J\",елать:\"1886\",елг:\"1L45\",елге:\"1L4F\",елген:\"1L5L\",елгі:\"1L2M\",елгіл:\"1L27\",елд:\"1L4H\",елде:\"1L2Q\",елдер:\"1L2A\",елді:\"1L5E\",\"елді \":\"1L3N\",елдің:\"1L2K\",еле:\"0V270X1Y1620170B182T192A1L9W\",\"еле \":\"0V0H0X0L180V1L1B\",елед:\"1L55\",еледі:\"1L5S\",елен:\"0V060X0M160T170C180K19081L1B\",елер:\"1L4H\",елері:\"1L2U\",елес:\"0X0218021L26\",елеф:\"0V0L0X0G160J180Q191I\",елефо:\"0V1I0X0H1614181D1927\",ели:\"0V460X2L162S18351919\",\"ели \":\"0V210X29161E182T1903\",елик:\"0V0T0X031607180E1914\",елим:\"0V1F0X02\",\"елим \":\"0V3B\",елит:\"0V080X0B160T1808\",елите:\"0V0I0X0C161P1802\",елм:\"1L1M\",елме:\"1L2Z\",елмей:\"1L30\",елн:\"0X0J161P\",елно:\"0X091613\",\"елно \":\"0X0A1626\",ело:\"0V0R0X1B160K183F190L1L0F\",\"ело \":\"0V0L0X0V160B18121907\",елов:\"0V050X02182G\",елове:\"183U\",елот:\"0X0K1605\",\"елот \":\"0X0C\",елу:\"0V0I0X0G160718081L0I\",елув:\"0X0K\",елува:\"0X0L\",ель:\"1756184Y190W1L0I\",\"ель \":\"170D181B190J\",ельм:\"176Q1902\",ельмі:\"179U\",ельн:\"170M183X1903\",ельно:\"184H1902\",еля:\"1617170F180Q1906\",елі:\"1716190I1L4V\",ем:\"0V5Q0X4P162N171T189S193D1L88\",\"ем \":\"0V7N0X1S164L1740188G190T1L1Y\",ема:\"0V2C0X66161C170W180L19241L11\",\"ема \":\"0V1G0X5C160X170N180H190O\",емам:\"0V0L0X1C1604\",\"емам \":\"0V170X171607\",емаш:\"0V040X0Y\",емаше:\"0X0R\",емає:\"191N\",\"емає \":\"192E\",емд:\"16021L1M\",еме:\"0V240X6I163P181Y19031L8K\",\"еме \":\"0V1K0X70162I18031L0O\",емен:\"0V0Z0X0M1607181V19021L0V\",\"емен \":\"0X0F\",емена:\"0V210X021808\",емени:\"1827\",емес:\"16061LB2\",\"емес \":\"1L8S\",емесе:\"1L5F\",емето:\"0X0D1613\",емејс:\"0X0C\",еми:\"0V0M0X13160W180B190C1L0E\",\"еми \":\"0V040X0P160O1807190C\",емл:\"180H19091L3V\",емле:\"180819021L71\",емлек:\"1L9W\",емн:\"0V070X0R1604170I1813190A1L0D\",емно:\"0X0O181B1904\",емног:\"0X0N1820\",емо:\"0V2P0X0R1606180I192T1L0E\",\"емо \":\"0V2L0X06191X\",\"емој \":\"0V0U0X0D\",ему:\"0V0H186E1909\",\"ему \":\"0V0L188J190B\",емя:\"1606181O\",\"емя \":\"1828\",емі:\"190C1L48\",емін:\"19021L4F\",\"емін \":\"1L5Y\",емј:\"0X0H\",емја:\"0X0H\",ен:\"0V4Z0X6D167W174118FZ19CO1LMO1M0H\",\"ен \":\"0V1V0XAK16AV1711184K191Y1LSG\",ена:\"0V2X0X2H1636172J1821191W1L0E\",\"ена \":\"0V2S0X27162D171C181M1915\",енав:\"16031716180M190W\",енави:\"1815191A\",енаві:\"171L\",ената:\"0X0E161E\",енг:\"0V0H1708180319021L1Z\",енге:\"18021L28\",енген:\"1L2R\",енд:\"0V0F0X0D16091706180819081L4C\",енде:\"0X061L3R\",\"енде \":\"1L2N\",енді:\"1L44\",\"енді \":\"1L3R\",ене:\"0V1T0X2Z161X170F181D196J1L27\",\"ене \":\"0V1U0X2B16191809197D\",\"енег \":\"181O\",енес:\"0X1816031802\",\"енес \":\"0X15\",ени:\"0V320X3B167A1892192A1L11\",\"ени \":\"0V1F0X1S1622181H1903\",ение:\"0X0D163B184P1L1B\",\"ение \":\"0X0A164S187O\",ениет:\"0X03162A1L1Q\",ений:\"180I191X\",\"ений \":\"180Y192S\",енио:\"0V070X0H\",ениот:\"0X0I\",ените:\"0V0G0X0C16191803\",ениц:\"0V0M0X0J16061802\",еници:\"0V0D0X0C160A\",ения:\"161C183G\",\"ения \":\"161Z185Z\",енк:\"0X0B160417051805\",енн:\"1609173K1846192R1L0K1M0Q\",енне:\"172L1805\",\"енне \":\"17321802\",енни:\"1603180K19071M0V\",еннис:\"180G1M1M\",енно:\"160518301904\",\"енно \":\"160818331904\",енны:\"170E181M\",енный:\"181C\",ення:\"171J192P\",\"ення \":\"1721193P\",ено:\"0V1O0X27162D180W190P\",\"ено \":\"0V1F0X291628180L190J\",енс:\"0V060X08165R1706180A190A1L11\",енск:\"0V040X0916691805\",енски:\"0X0516CC1805\",ент:\"0V0Y0X121628170X181R191E1L3O\",ента:\"0V080X0H160P170P180G1907\",\"ента \":\"0V060X031615180D1902\",ентт:\"1L2O\",ентте:\"1L2K\",ену:\"0V130X0816021706180919031L0M\",енщин:\"181K\",ены:\"1720180V\",\"ены \":\"172D1814\",ень:\"172V186Z191R\",\"ень \":\"173W1873191O\",еньги:\"181P\",еня:\"160M170A187M1904\",\"еня \":\"1607170D189Q1903\",ені:\"170Q199W1LAV\",\"ені \":\"170J19AZ1L5T\",енім:\"1L2J\",енін:\"1L2D\",\"енін \":\"1L2A\",енің:\"1L9U\",\"енің \":\"1LCT\",ео:\"0V250X051605180H19091L06\",\"ео \":\"0V4418021902\",еом:\"0V1F\",еома:\"0V1P\",\"еома \":\"0V4C\",еп:\"0V0U0X0M160C1711181B19141L2P\",\"еп \":\"0V061L4Z\",епа:\"0V0C0X0I170G180319041L0D\",\"епей \":\"171L\",еперь:\"181Q\",епо:\"0V0T0X0I160F180J190E\",епр:\"0V090X0H160B170C180N190Y\",епш:\"0V03172B\",епша:\"171Z\",епшая:\"171T\",ер:\"0V3F0X3W163D175818BH19BW1LHO1M0U\",\"ер \":\"0V1C0X12161B1728181I191O1L8X1M0N\",ерi:\"1L1H\",ера:\"0V1J0X2A162517841823190M1L0O\",\"ера \":\"0V0C0X1F161W171V181X1908\",ерад:\"171T\",\"ерад \":\"171S\",ерак:\"0X02172A\",еракл:\"172I\",ерам:\"0V030X0J171N1803\",\"ерам \":\"0V070X0H1803\",ерв:\"0V0B0X0I160N170A1817190Q\",ерг:\"0V020X05160417061809190A1L3I\",ерге:\"1L55\",\"ерге \":\"1L4T\",ерд:\"180K190J1L7J\",ерде:\"18021L4H\",\"ерде \":\"1L3N\",ерді:\"1L8T\",\"ерді \":\"1L7B\",ердің:\"1L4Z\",ере:\"0V0R0X13161S187F196M1L7H\",ерев:\"181N190V\",еред:\"181O191O1L19\",\"еред \":\"181B190R\",\"ерез \":\"181C190M\",ерек:\"1806190Z1L8H\",\"ерек \":\"1L87\",ерем:\"0V030X0316031808190V1L0O\",еремо:\"18031911\",ерен:\"0V070X08160I181N1904\",\"ерен \":\"0V070X06160F181K\",ерес:\"0V090X0J160V1822190B\",ереси:\"0X0D\",ересн:\"0X05160P181Q\",ерж:\"18181903\",ери:\"0V310X62165B182I190O1L1B\",\"ери \":\"0V2H0X6Y164A180Q19091L10\",ерк:\"0V090X0D1603170J180D190C1L13\",ерл:\"0X021706180919091L30\",ерле:\"1L3F\",ерлер:\"1L4D\",ерлік:\"1L23\",ерм:\"0V040X08160B170B180C19081L1E\",ерн:\"0V0A0X0A160H170E182D191I1L0E\",ерну:\"18181911\",еро:\"0V0W0X13160R170B1819190K\",ерова:\"0V1T\",\"ером \":\"181M1908\",ерот:\"0X0J\",\"ерот \":\"0X0H\",ероят:\"1615180M\",ерој:\"0V040X0N\",ероја:\"0X0N\",ерсит:\"160F180A19061L2H\",ерт:\"0V060X09160F1708181119191L3U\",ерте:\"18031L3F\",ертең:\"1L3H\",еру:\"0V100X16170X180C190B1L23\",ерув:\"0X1I1903\",ерува:\"0X1L1904\",еруј:\"0V0X\",ерује:\"0V1X\",ерш:\"1724180N190Q1L0D\",ершы:\"171X\",еры:\"172Q180A\",\"еры \":\"17221808\",ерь:\"181Q\",\"ерь \":\"181Q\",еря:\"160W18171907\",ері:\"19A21LBW\",\"ері \":\"19B81L7M\",ерім:\"1L2A\",ерін:\"1L75\",\"ерін \":\"1L4N\",еріне:\"1L23\",еріні:\"1L34\",ес:\"0V3Q0X2W1634172A18AI192L1L9P\",\"ес \":\"0V030X0X161A1707180D19061L5N\",еса:\"0V0I0X0L160U18071904\",\"еса \":\"0V040X03160U18051903\",есам:\"0V030X0H\",\"есам \":\"0V060X0I\",есв:\"0V050X02161E1902\",есва:\"161K\",\"есва \":\"1626\",есе:\"0V1O0X1T1625170B180L190B1L5A\",\"есе \":\"0V040X0B1605170A1L4U\",\"есен \":\"0X0D160P1803\",есет:\"0V0Y0X0S1610\",\"есет \":\"0V1X0X0Q161T\",еси:\"0V1F0X0T160E180C1907\",\"еси \":\"0V0V0X0G160518041904\",есира:\"0X0C\",еск:\"0V0O0X0C160J181X19041L1B\",еско:\"0V070X041606181I\",ескол:\"181T\",есл:\"0X02182U1906\",если:\"183N\",\"если \":\"186O\",есн:\"0V0K0X1C161G170V181A190C\",есна:\"0V050X0G160818061903\",есно:\"0V080X0U160L180U1905\",\"есно \":\"0V0H0X0U161918151905\",есо:\"0V090X0J1607180A1904\",есп:\"0V0D0X081603170F180W190A1L3B\",еспу:\"18021L4J\",еспуб:\"18041L6G\",ест:\"0V4I0X3R1652170H18A5191G1L4C\",\"ест \":\"0V0H0X0N160D180E1903\",еста:\"0V1Y0X17160A180W1906\",естан:\"0V3E0X0V1607180G1904\",еств:\"0V050X0A1615182D\",ество:\"0V090X041614181O\",есте:\"0V0B0X04160H181819031L1U\",\"есте \":\"0V0P181V\",ести:\"0V0H0X0J160H181F190E1L0V\",\"ести \":\"0V0R0X09160B181T190H\",есто:\"0V1I0X1Y161E181A1907\",\"есто \":\"0V350X1C161Z1815\",естр:\"0V0E0X0E160S180R190O\",естра:\"0V0C0X0B161A180P190I\",есть:\"185E\",\"есть \":\"189J1902\",есті:\"1L4S\",естік:\"1L27\",есу:\"0V090X0C160C1706180E19071L14\",есува:\"0X0G160S\",есц:\"172B\",\"есца \":\"171T\",\"есці \":\"172C\",есь:\"170O183S190P\",\"есь \":\"17101852190T\",еся:\"172U18171919\",\"еся \":\"171A1804190W\",есяц:\"1737180K\",\"есяц \":\"172B180C\",есі:\"1709190A1L6Y\",\"есі \":\"1L2X\",\"есіз \":\"1L27\",есін:\"1L3V\",ет:\"0V3V0X3R165X171G18EY192M1LBV\",\"ет \":\"0V2B0X1W162U170Y18H9190H1L6M\",ета:\"0V1I0X1E162H171C1813190C\",\"ета \":\"0V0T0X0O1622170W180T1905\",ете:\"0V2W0X23166D184V19291L2K\",\"ете \":\"0V360X1W166C18501928\",ети:\"0V1V0X19161P1820190C\",\"ети \":\"0V0Z0X0O160T180M1907\",етк:\"0V0A0X0J160D170P180819051L32\",етке:\"1L3M\",еткен:\"1L2K\",еткі:\"170T1L21\",етн:\"0V0N0X0L160L170G180D1903\",ето:\"0V0G0X4Y169K180U1905\",\"ето \":\"0V070X5P16AB1806\",етот:\"0X0J\",\"етот \":\"0X0J\",етп:\"0V050X0B1L12\",етс:\"0V030X0B1605184B\",ется:\"1858\",\"ется \":\"189F\",етт:\"0X03160518021L9P\",еттi:\"1L3R\",еттiк:\"1L37\",етте:\"1L5V\",еттер:\"1L4Z\",етті:\"1L94\",\"етті \":\"1L6Z\",еттік:\"1L4A\",ету:\"0V0F0X0B170M180D19081L1S\",етува:\"0X0F\",еть:\"182J190T\",\"еть \":\"182W1904\",етьс:\"1806190S\",еться:\"180B1915\",еті:\"190F1L7X\",\"еті \":\"190A1L3V\",етін:\"1L7Q\",\"етін \":\"1L5S\",етіні:\"1L2H\",еу:\"0V020X0218071L2L\",\"еу \":\"1L2E\",\"еуге \":\"1L2A\",еф:\"0V090X071605170C180B190O1L05\",ефо:\"0V0I0X0E160H170F180K191B\",ефон:\"0V0L0X0G160I170P180Q191I\",ефону:\"1809191O\",ех:\"0V07160M170M181J190D1L0A\",\"ех \":\"0V080X02161M1810\",еха:\"0V03160C171Y1821190H\",ехал:\"1714181E1905\",\"ехал \":\"181L\",ехат:\"18181904\",ехать:\"182A\",\"ехаў \":\"171S\",ец:\"0V0J0X0J160L173R180W190W\",\"ец \":\"0V040X0S160Q170Y181D\",еца:\"0V0J0X0Q161E\",\"еца \":\"0V0J0X0J1611\",ецата:\"0X0G1615\",еце:\"0V060X0217331802\",\"еце \":\"0V05174Q\",ецо:\"0X0D\",ецот:\"0X0H\",\"ецот \":\"0X0I\",ецц:\"176V\",ецца:\"17B3\",\"ецца \":\"17FP\",ець:\"171O191F\",\"ець \":\"172Q191C\",еч:\"0V100X19161G170S1824191L\",еча:\"0V0I0X0A1608171A1817190A\",ече:\"0V1B0X2H164Y181P191D\",\"ече \":\"0V0D0X1K163718031903\",ечен:\"0V0C0X0H160R180H190E\",ечер:\"0V0O0X0W161618181910\",\"ечер \":\"0X081614180A\",ечера:\"0V160X0F160D1808\",ечері:\"190S\",ечи:\"0V0H0X0O160C180C1906\",ечк:\"0X0O1605170518041905\",\"ечко \":\"0X0C1902\",ечн:\"0V0B0X0G160D1712180O190C\",\"ечно \":\"0V090X0D180W1906\",еш:\"0V300X56163K1723184A19251L2P\",\"еш \":\"0V4A0X5X1666175F193C1L0F\",еша:\"0V0L0X0D160B180I\",еше:\"0V090X8B166T180T190A1L1Y\",\"еше \":\"0V050XAH167019041L28\",еши:\"0V0I0X0J16111812\",ешк:\"0V0V0X1B160V170F1807190B1L1R\",ешка:\"0V060X0J160J170H190C\",\"ешка \":\"0V0D0X0G160Z170F1802\",ешко:\"0V0G0X0U16031807\",\"ешко \":\"0V100X0R\",ешкі:\"1L2H\",ешкім:\"1L2R\",ешн:\"0V0B0X0L160C170C180C\",ешно:\"0V0C0X0J16091808\",\"ешно \":\"0V0P0X0J160G1809\",ешт:\"0V1T0X2G170V190L1L0N\",\"ешта \":\"0X021726\",ешто:\"0V1W0X2Q1902\",\"ешто \":\"0V4R0X2V\",ешь:\"186M\",\"ешь \":\"188B\",ешқа:\"1L2A\",ешқаш:\"1L2A\",ещ:\"161E181Z1904\",еща:\"1620180S1905\",\"еща \":\"160Z\",ещо:\"162X1903\",\"ещо \":\"163A1902\",ещё:\"182X\",\"ещё \":\"183Y\",ею:\"1708180K1909\",\"еюсь \":\"181G\",ея:\"160I1709180D19071L04\",\"ея \":\"161Q170C180B1909\",её:\"181Y\",\"её \":\"1849\",еђ:\"0V0B\",еѓ:\"0X02\",еє:\"1902\",еі:\"1703\",еї:\"190H\",еј:\"0V0J0X0F\",еја:\"0V0L0X0G\",ејс:\"0V030X0D\",ејств:\"0X0E\",ељ:\"0V12\",ењ:\"0V0L0X0C\",ење:\"0V0X0X15\",\"ење \":\"0V0W0X12\",ењето:\"0X0H\",ећ:\"0V2F\",\"ећ \":\"0V16\",ећа:\"0V1O\",еће:\"0V1X\",\"еће \":\"0V1H\",ећи:\"0V12\",\"ећи \":\"0V0Y\",еќ:\"0X17\",еќа:\"0X0Q\",\"еќа \":\"0X0I\",еќе:\"0X3A\",\"еќе \":\"0X3I\",еќен:\"0X0N\",\"еќен \":\"0X0O\",еќн:\"0X0B\",еў:\"1712\",\"еў \":\"172Y\",ең:\"1L3X\",\"ең \":\"1L42\",еңге:\"1L28\",еңе:\"1L1H\",еңі:\"1L1Y\",ж:\"0V2V0X31163M17301855195I1L7B1M5E\",\"ж \":\"0V040X04160B1712180I191P1L051MBG\",жа:\"0V0N0X1X1617173G182W191H1LBK1M0G\",\"жа \":\"0V070X1E162C173L180B190C\",жав:\"0V0F0X0R1610170I1907\",\"жав \":\"0X0I1906\",жава:\"0V0F0X0D1611170C\",жаз:\"1L2K\",жай:\"1706180819031L1D\",жал:\"0V0D0X0X160M170L183C190B1L2C\",\"жал \":\"0X0P180M\",жалу:\"0X02182B\",жалуй:\"1846\",жам:\"0X391603170N1L0O\",\"жам \":\"0X491711\",жан:\"0V090X051605172K180819071L1S\",жанчы:\"1726\",жар:\"0V030X041605170J180E190B1L3O1M0V\",жарг:\"1M11\",жарга:\"1M22\",жары:\"1L2O\",жас:\"0V050X071609180B1L65\",жаса:\"1L6L\",жасал:\"1L23\",жасау:\"1L27\",жаста:\"1L2U\",жат:\"0X0D1608180R19081L39\",жаты:\"1L2J\",жатыр:\"1L3E\",\"жать \":\"181E1905\",жатқа:\"1L23\",жау:\"1L1W\",\"жаш \":\"171Z\",жағ:\"1L2T\",жағд:\"1L3F\",жағда:\"1L4W\",жақ:\"1L4T\",жақс:\"1L5T\",жақсы:\"1L7Q\",жаң:\"1L2U\",жаңа:\"1L48\",\"жаңа \":\"1L4Z\",жб:\"0V030X02160217021802\",жв:\"1706\",жг:\"1M08\",жгү:\"1M0L\",жгүй:\"1M0P\",\"жгүй \":\"1M1E\",жд:\"0V090X02161G1709182K190T1L09\",жда:\"0V0O165B181K19051L0D\",\"жда \":\"0V0S162D1805\",ждал:\"1623180N\",\"ждал \":\"162J180O\",ждала:\"161R1806\",ждать:\"181G\",жде:\"160B18131907\",ждени:\"160G181D\",жди:\"1808191A\",\"жди \":\"1806191I\",\"ждый \":\"181K\",же:\"0V3A0X2X162Y188B196Z1L4Y\",\"же \":\"0V2K0X351655187219A9\",жеб:\"0X1D\",жеби:\"0X1T\",\"жеби \":\"0X1W\",жев:\"0X0K190C\",\"жев \":\"0X0K\",жек:\"180419071L1J\",\"жеке \":\"1L27\",жел:\"0V320X15160I180Q1L1M\",\"жел \":\"0X0U\",желе:\"0V0W0X0A18051L0X\",жели:\"0V2U1805\",\"жели \":\"0V2R1809\",желим:\"0V3C\",жем:\"0V0Z0X0Q160V180U190N1L0N\",\"жем \":\"0V0T160Z1814\",жеме:\"0X0Z\",\"жеме \":\"0X11\",\"жемо \":\"0V0Z1912\",жен:\"0V110X1J1622184Z191H\",\"жен \":\"0X0P160D182H1905\",жена:\"0V0J0X0L160L180M1906\",\"жена \":\"0V1B0X0K1611180Q1909\",жени:\"0V080X0F16131827190I\",жение:\"1611181W\",ження:\"190S\",женщи:\"181K\",жер:\"1605180519051L39\",жерд:\"1L23\",жерде:\"1L27\",жет:\"0V0K0X061611183S190R1L49\",\"жет \":\"18331L1W\",жете:\"0V0N0X061612181C190V1L0X\",\"жете \":\"0V1O0X061629182H1919\",жеткі:\"1L27\",жется:\"181M\",жеш:\"0V0X0X2B1627181D1918\",\"жеш \":\"0V140X291621191G\",жеше:\"0X0Q160G\",\"жеше \":\"0X0S160Y\",жешь:\"181V\",\"жешь \":\"183G\",жи:\"0V1X0X1F161B1847192N1L0S1M2C\",\"жи \":\"0V0Z0X1X161Q1816190Q\",жив:\"0V2U0X2H16291829191U\",живе:\"0V0M0X1I16181804190X\",\"живе \":\"0V0I190Z\",живеа:\"0X0M\",живее:\"0X0Z161T\",живи:\"0V120X021904\",живо:\"0V170X121610180H\",живот:\"0V2X0X131623180Q\",живёт:\"181E\",жиз:\"181D\",жизн:\"181V\",жизни:\"181G\",жизнь:\"181Z\",жил:\"0V0A0X0216061817190B1M44\",\"жил \":\"1604180W1M1T\",жилл:\"1M19\",жилла:\"1M2F\",жилт:\"1M0V\",жит:\"0V0B0X08160G1822191U\",жите:\"0V0A0X07160I1815\",\"жите \":\"0V0Q0X051609181P\",\"жити \":\"0V0A190R\",житт:\"190W\",життя:\"1915\",жить:\"1814190K\",\"жить \":\"181W190R\",жк:\"1604170G1805190W\",\"жку \":\"170N1805190S\",жл:\"0X021802190K1M0F\",жли:\"0X0718041917\",жлив:\"0X0A1805191F\",жливо:\"0X021804191I\",жн:\"0V090X0C160E171L183E191M\",жна:\"0V050X0416061736180T1919\",\"жна \":\"0V060X051606173C180Z191F\",жно:\"0V0D0X0Y1617184S190M\",\"жно \":\"0V0C0X14160Y185O1907\",жны:\"171X181I\",\"жны \":\"1727181H\",жо:\"0X031605171I1808190U1L3X1M0C\",\"жо \":\"172R\",жол:\"0X021L2O\",жоўты:\"171X\",жоғ:\"1L2A\",жоға:\"1L48\",жоғал:\"1L2D\",жоғар:\"1L3U\",жоқ:\"1L4F\",\"жоқ \":\"1L71\",жт:\"1M09\",\"жтой \":\"1M16\",жу:\"0V0C0X0A170O180W19241L0H\",\"жу \":\"0V0D1718181H1934\",жув:\"0X0Z190D\",жува:\"0X1A190G\",\"жува \":\"0X0E\",жц:\"1702\",жч:\"170418061905\",жъ:\"1603\",жы:\"173M1L30\",\"жы \":\"171X1L0D\",жыв:\"172Y\",жыве:\"171V\",\"жыве \":\"1727\",жыл:\"170M1L6E\",\"жыл \":\"1L23\",жылд:\"1L44\",жылда:\"1L3K\",жылды:\"1L2H\",жылы:\"1L3R\",\"жылы \":\"1L3U\",жыр:\"17371L0T\",\"жыр \":\"173K\",жыц:\"173R\",жыцц:\"173W\",жыцця:\"171O\",жыццё:\"173G\",жыць:\"171Z\",\"жыць \":\"172Z\",жь:\"1803\",жэ:\"170G1M0I\",жээ:\"1M15\",\"жээ \":\"1M11\",жё:\"1807\",жі:\"190P1L0R\",\"жіть \":\"190S\",жљ:\"0V04\",жњ:\"0V04\",жү:\"1L2G\",жүз:\"1L20\",жүзег:\"1L2K\",жүр:\"1L3D\",жүрг:\"1L26\",жұ:\"1L25\",жұм:\"1L52\",жұмы:\"1L8A\",жұмыс:\"1LB9\",жә:\"1L3K\",жән:\"1L97\",және:\"1LFS\",\"және \":\"1LKU\",жө:\"1L0D\",з:\"0V6T0X6H1694178V187K19BQ1L891M3C\",\"з \":\"0V0Z0X0D161Q1751182W195X1LBA1M0M\",\"з'\":\"170B190B\",\"з-\":\"18071902\",зi:\"1L0I\",зʼ:\"1702\",за:\"0V5R0X5S167F179C18BE19D41L711M36\",\"за \":\"0V4A0X8M16CA1767184V193R1L0Y\",заа:\"0X0219041M0O\",заб:\"0V170X1U161Z173Q181W191P\",заба:\"0V0C0X0Z160J170Y1804190C\",забав:\"0V0W0X0Z16141806\",забо:\"0V0M0X0W180I1906\",забор:\"0V1J0X0W18031905\",забр:\"0V0B0X04161918061905\",забра:\"0V0M0X04162O18071904\",забу:\"170U180F1915\",забув:\"190S\",забы:\"171N1814\",забыл:\"170Y181E\",забі:\"1725\",зав:\"0V130X0V161717161821195Y1M0X\",\"зав \":\"193P\",завг:\"19021M0T\",завгү:\"1M1M\",завж:\"191I\",завжд:\"1926\",завр:\"0V100X0U\",заврш:\"0V2J0X0R\",завт:\"181T1916\",завтр:\"183E191Q\",заг:\"0V060X0N160M1711180C19171M0L\",зага:\"0X02160417151804190M1M0P\",загал:\"190T\",загас:\"1M1E\",загр:\"0V040X0H18031902\",загри:\"0X0E\",загуб:\"0X051612190L\",зад:\"0V0R0X101618171F181D190Y1L0E\",задо:\"0V0B0X0L190P\",задов:\"0V0S0X0F190Z\",зае:\"0X0G161H1803\",заед:\"0X0J160D1802\",заедн:\"0X0K160S\",зает:\"160Y\",\"зает \":\"161A1802\",зай:\"1609170S180A191Z\",займ:\"170I18061911\",займа:\"170P191C\",зайн:\"1913\",зайня:\"191L\",зак:\"0V0U0X0M161M1728181S191D\",заках:\"1720\",зако:\"0V060X0A160817101814190J\",закон:\"0V080X07160C171A181Z1909\",закъ:\"160V\",закъс:\"161T\",закін:\"1913\",зал:\"0V090X071614172J1853192P1L0R1M1V\",\"зал \":\"160E184A1902\",зала:\"0V050X03160E1728181A19171L0T\",\"зала \":\"160N17301825191P\",зали:\"1604180T191J\",залиш:\"191J\",залу:\"0X0219021M1N\",залуу:\"1M3B\",зам:\"0V0P0X1X160Q1728181H19151L23\",\"зам \":\"0X0S160617161802\",зама:\"0V040X03170K19021L3F\",замат:\"1L3N\",заме:\"0V040X081608170U18141907\",зами:\"0V040X0K160B1805\",замин:\"0X0D160L\",замо:\"0V0C0X0W170I1806190I\",замол:\"0V0U0X0X18041903\",зан:\"0V0P0X09160T171M181V19141L12\",зана:\"170V1802190W\",занад:\"17191916\",заним:\"0V0U0X05160L181D\",занят:\"171B181U1905\",зап:\"0V0S0X0Z162U172A181J1938\",запи:\"0V030X021605180D191H\",запит:\"191V\",запл:\"0V030X02160S1713180G190O\",запла:\"0V080X02161P171H180T190V\",запо:\"0V040X0N161P170918091904\",запоз:\"0X0K160D\",започ:\"162Z\",запро:\"1803190W\",запіз:\"190R\",зар:\"0V190X13160O172L180I19231L2L1M10\",\"зар \":\"0V1C0X02170L1L1N\",зара:\"0V040X07160J172W180C191Z1L0V\",зараз:\"0X02173O1803192L\",заре:\"0X0Z18021902\",зарем:\"0X11\",зас:\"0V0F0X0R160T171Z180W19181L0D\",заста:\"0V080X081727180W1903\",зат:\"0V0O0X1A161O170H182E191T1L13\",затв:\"0V0F0X0O160X\",затво:\"0V100X0O161I\",зател:\"1608180T190Y\",зати:\"191C\",\"зати \":\"191T\",зато:\"0V060X0M16091803\",затоа:\"0X0N\",зать:\"182G\",\"зать \":\"1844\",зауыт:\"1L23\",заф:\"0X0O\",зафа:\"0X0U\",зафат:\"0X0W\",зах:\"0V0D1613171N180J190S1M14\",\"зах \":\"160R1803\",захи:\"190A1M0T\",захиа:\"1M16\",зац:\"0V021603172218051905\",заць:\"172G\",\"заць \":\"173N\",зачем:\"181K\",заш:\"0V1Q0X0816071803\",зашт:\"0V1T0X07\",зашто:\"0V4F\",защ:\"162L1809\",защо:\"162Q\",\"защо \":\"164L\",защот:\"1617\",зај:\"0V0J0X0C\",заў:\"1745\",\"заў \":\"172B\",заўс:\"172D\",заўсё:\"173G\",заўтр:\"172I\",зақ:\"1L7E\",\"зақ \":\"1L28\",зақс:\"1LA0\",зақст:\"1LDT\",заң:\"1L2E\",зб:\"0V0N0X1E160P170L180E190Q1L0P\",збе:\"0V0D0X0R160Q1708180719071L1B\",збедн:\"0V0A0X0C\",\"збен \":\"1L2K\",зби:\"0V080X0H1613180A190L\",збир:\"0X0H16161805190F\",збира:\"0X0H162I1809190M\",збо:\"0V0Y0X33160F170818021904\",\"због \":\"0V21\",збор:\"0V050X3W16081902\",\"збор \":\"0X0N160B\",збору:\"0X30\",збр:\"0V020X0D160J17061802190B\",збу:\"0V050X0H160318051906\",збіра:\"171Z\",зв:\"0V100X0Q161G171Q18241921\",зва:\"0V0O0X091636171Y180M190H\",\"зва \":\"1610\",\"звам \":\"1619\",зве:\"0V0E0X0H160L171018121907\",зви:\"0V0I0X0M1613180I191A\",звин:\"0V0F0X0G160U180J1908\",звине:\"0X0316141803\",звич:\"190Y\",звича:\"1917\",зво:\"0V0U0X0N160T170U181Y1911\",звол:\"0V0M0X0N160T170U180O190X\",звон:\"0V030X03170F181T1907\",звони:\"182P1908\",зву:\"0V0F0X0G160617061807190A\",звуч:\"0V090X0H160518051904\",звучи:\"0V0D0X0F160818061905\",звы:\"171F1802\",звыч:\"17201802\",звыча:\"172S1804\",зві:\"170P1910\",зг:\"0V0U0X0Y160L170I180K190C1L1M\",зге:\"1L3S\",\"зге \":\"1L4Z\",згл:\"0V170X1S161W1708180A1903\",згле:\"0V1E0X2B1620\",зглед:\"0V3L0X2F1606\",зглеж:\"1641\",зго:\"0V0I0X0X160G170P180S190F\",згов:\"0V0I0X0R160E1810\",згова:\"0V0W0X0L160N181G\",згу:\"0V0I0X0G1606170K\",згуб:\"0V0M0X0L1607170V\",згуби:\"0V1G0X0I160C\",зд:\"0V0F0X0E160D171L182R191R1L68\",зда:\"0V0C0X091609173F180X191O1L20\",здаец:\"171W\",здар:\"172B1L1G\",здары:\"171X\",здає:\"191B\",здаєт:\"191V\",зде:\"0V030X031606182L1L5X\",\"зде \":\"18081L3I\",здер:\"1L3B\",здері:\"1L23\",здес:\"18301L1S\",здесь:\"185J\",здр:\"0V0N0X0O160Y170G18091904\",здра:\"0V0P0X0J1613170J180B1902\",здрав:\"0V1S0X0I1624180F\",зды:\"170F18081L2M\",\"зды \":\"18031L3F\",зді:\"19061L6Y\",\"зді \":\"1L44\",здің:\"1L6X\",\"здің \":\"1L9Q\",зе:\"0V0Q0X0W160W175F180R190I1L1S\",\"зе \":\"0V0C0X0H160O178P1802\",\"зеге \":\"1L2K\",зей:\"1604171N180A\",\"зей \":\"1604171U180D\",зел:\"0V070X0A160H171Y18071906\",зем:\"0V0J0X18161A170N180H190E\",земам:\"0X0C\",земј:\"0X0M\",земја:\"0X0I\",зен:\"0X0G160B172R180419021L0E\",зень:\"1735\",\"зень \":\"174K\",зец:\"171R\",\"зець \":\"171Z\",зж:\"1809\",зз:\"1703\",зи:\"0V1P0X0U162M180X19161L15\",\"зи \":\"0V190X0R167M18051909\",зид:\"0V041604180519041L1D\",зиде:\"1605180619041L2F\",зиден:\"160B180C19061L3H\",зик:\"0V0Y0X0K160V1802190J\",зин:\"0V060X0E160E180G1908\",зия:\"160G18021L1G\",зиј:\"0V0A0X0C\",\"зија \":\"0X0D\",зк:\"160G17091806190B\",зка:\"160X170F18021907\",зл:\"0V0E0X0F160I170P180F190K\",зле:\"0X0M160K1803\",зли:\"0V0A0X0H160W180C190C\",зм:\"0V0G0X0A160B171D180V191H1L11\",зма:\"0V030X051603172Y18041903\",змаў:\"173X\",змаўл:\"175U\",зме:\"0V0J0X051606170F180Q1L2G\",змет:\"1L4J\",зми:\"0V0M0X0J160B\",змисл:\"0V0F0X0F160A\",змо:\"0X0A160O170K180U191O\",змов:\"1914\",змовл:\"191J\",змож:\"0X0A160M1813190L\",зможн:\"0X0A161B1820\",змі:\"17051913\",зн:\"0V340X2G161V172U185O1966\",зна:\"0V790X7K166D1765189I199Z\",\"зна \":\"0V1S0X0T160B171G1904\",знаа:\"0X0G\",знав:\"0V030X0R160N1804191J\",\"знав \":\"0X061921\",знава:\"0V070X0K161E1806\",знае:\"0X4K162G170F183Q\",\"знае \":\"0X1J161X\",знаев:\"0X0P\",знаем:\"0X0F160B180N\",знает:\"160G184B\",знаеш:\"0X1Y16201824\",знай:\"171X18021922\",знайо:\"190Y\",знайш:\"171K1912\",знак:\"0V050X03160318161903\",знако:\"181Y\",знал:\"0V0N0X061603182U190V\",\"знал \":\"0X03183U\",знала:\"0V11180M190U\",знам:\"0V2L0X2M162118041904\",\"знам \":\"0V5Y0X2P1643\",знао:\"0V15\",\"знао \":\"0V2X\",знат:\"0V0S0X0D16071816190T\",знати:\"0V0I1917\",знать:\"1821\",знахо:\"1726190L\",знач:\"0V0C0X0L160Y172A180X190J\",значи:\"0V0O0X0F160V180U1906\",\"знаш \":\"0V1Y\",знаю:\"170A183E192V\",\"знаю \":\"170E185N193S\",знає:\"1939\",\"знає \":\"1926\",знаєт:\"190W\",знаєш:\"191C\",зне:\"0V0O0X0Q160P170E180A1909\",знена:\"0V1I0X0F160V\",зни:\"0V0A0X0B160G180X190Y\",зно:\"0V0D0X08160F1713180J1918\",знов:\"190U\",знову:\"1915\",\"зноў \":\"171P\",зні:\"171O190E\",зо:\"0V0T0X16160L170E181O190W1L081M0Q\",\"зо \":\"0V0K0X0H160U1802\",зов:\"0V0U0X0416081817190A\",зог:\"1M0N\",зогс:\"1M0R\",зор:\"0V0L0X0C160I170O180G190I1L0I\",зош:\"0X2T180H\",зошт:\"0X3Q\",зошто:\"0X3X\",зп:\"160M190T\",зпо:\"160W1913\",зпов:\"1910\",зпові:\"191F\",зпол:\"160X\",зполз:\"161H\",зр:\"0V040X04160D171G180P193X\",зра:\"0V040X0B160S1741180G190D\",зраб:\"1606174Z1803\",зрабі:\"176U\",зраз:\"0V020X031607171Q1803\",зразу:\"172K\",зро:\"170R1805197H\",зроб:\"170T197Y\",зроби:\"19AG\",зрозу:\"1915\",зс:\"16041707180H19061L061M0C\",зса:\"1M0Q\",зсан:\"1M0V\",\"зсан \":\"1M1A\",зск:\"170Q1813\",зски:\"1816\",зт:\"16031903\",зу:\"0V0K0X051604171A180Z19281L0N1M0X\",зум:\"0V0X0X091604172Q18081921\",зуме:\"0V0Y0X03173R1803\",зумі:\"191U\",зумію:\"190S\",зупин:\"1910\",зур:\"1M12\",зус:\"17101802190Z\",зуст:\"18021912\",зустр:\"191K\",зусі:\"171Q\",зусім:\"172K\",зуу:\"1M0L\",зх:\"1606\",зч:\"16061903\",зш:\"1L08\",зъ:\"1604\",зы:\"170Q181D1L1Q\",зыв:\"170B1817\",зыва:\"170J181N\",зык:\"170O181J\",зь:\"170V180E1914\",\"зь \":\"172318051903\",зьк:\"1923\",зько:\"191D\",зькою:\"191J\",\"зьку \":\"1912\",зэ:\"1M1M\",зэх:\"1M0N\",зээ:\"1M2C\",\"зээ \":\"1M1X\",зя:\"16051725180J190B\",зял:\"171U180D1904\",зялё:\"172H\",зялён:\"173Q\",зяўчы:\"1727\",зё:\"17061802\",зі:\"174C191F1L3V\",\"зі \":\"172Q191W1L16\",зіл:\"17241L1K\",зім:\"170O1L1N\",зін:\"173C1L3M\",\"зін \":\"172G1L12\",зінд:\"1L2Q\",зінде:\"1L37\",зінің:\"1L27\",зір:\"170O19061L2K\",зіц:\"1743\",зіцца:\"172C\",зіць:\"173D\",\"зіць \":\"1750\",зіў:\"171K\",зј:\"0X03\",зғ:\"1L0S\",зға:\"1L1Y\",зқ:\"1L08\",зү:\"1M1S\",зүг:\"1M0L\",зүгээ:\"1M1A\",зүй:\"1M30\",зүйл:\"1M3D\",\"зүйл \":\"1M58\",зүү:\"1M0T\",зө:\"1M11\",зөв:\"1M2D\",\"зөв \":\"1M0V\",зөвх:\"1M0Z\",зөвхө:\"1M1Y\",и:\"0VPY0XM316PA18LO19OV1L581MHZ\",\"и \":\"0VO40XMM16O118OL19SG1L1T1MFS\",\"и-\":\"180219051L08\",иа:\"0V021608180H1L0F1M12\",\"иа \":\"1M0Q\",иад:\"1L0D1M0O\",\"иад \":\"1M0T\",иар:\"1M0O\",\"иар \":\"1M0T\",иб:\"0V070X061609181U190U1L05\",ибу:\"0V03181V190E\",ибуд:\"182J\",ибудь:\"184M\",ив:\"0V2K0X34161S184C19991L0L1M08\",\"ив \":\"0V0K0X54161C180V198X\",ива:\"0V290X1F162G183O191Q\",\"ива \":\"0V0O0X0U161S180F190X\",ивае:\"181A\",ивает:\"181X\",\"ивао \":\"0V1L\",ивать:\"181T\",иве:\"0V0S0X1L161E180O19101L0Z\",\"иве \":\"0V0B0X08190U\",ивеа:\"0X0L\",ивее:\"0X0X160V1803\",\"ивее \":\"0X0H16161805\",иверс:\"160F180B1L2H\",иви:\"0V1E0X0F160P180F1927\",ивий:\"190V\",\"ивий \":\"1919\",ивм:\"0X0L\",ивме:\"0X0S\",\"ивме \":\"0X0U\",ивн:\"0V0E0X0J1609180F190P\",иво:\"0V1S0X1L161A18141920\",\"иво \":\"0V0X0X0V160C180E191P\",ивот:\"0V150X171610180E\",\"ивот \":\"0V180X0E160U1803\",ивото:\"0X0L\",ивс:\"0X02192B\",ився:\"192O\",\"ився \":\"193V\",ивы:\"1816\",иві:\"190Y\",иг:\"0V1K0X16161M1829191A1L0B1M25\",\"иг \":\"180919031M23\",ига:\"0V0W0X0V161K180O190A\",\"ига \":\"0V0M0X0J1615180F1905\",игд:\"1M1O\",игдө:\"1M1R\",игдөр:\"1M3I\",иги:\"0V020X0B160M180G1903\",игля:\"190Z\",игляд:\"191F\",игн:\"0V0F0X0U161818051906\",игна:\"0X0Q160Y18021902\",\"игна \":\"0X0C1611\",игр:\"0V170X0R161C1824190M\",игра:\"0V1A0X0X161H1827190O\",играе:\"161E1812\",игт:\"1M0L\",игу:\"0V140X171625180M190B\",игур:\"0V0T0X1L162A1802\",игуре:\"0X0Z1625\",игурн:\"0V140X0M162K\",ид:\"0V2B0X28161M1849191O1L1C1M38\",\"ид \":\"0V030X06160D180919031M4G\",ида:\"0V050X171610180P190C1L0U\",\"ида \":\"16131802\",идам:\"0X1C\",\"идам \":\"0X1F\",иде:\"0V490X3Y1621184319061L1P\",\"иде \":\"0V160X32160M1803\",идел:\"0V0F0X0L182U1902\",\"идел \":\"0X0J183K\",идем:\"0V1A0X0D160C\",\"идем \":\"0V2M160P\",идеме:\"0X0D\",иден:\"0V030X05160B180F19051L2O\",идент:\"0V08160J180E19061L3H\",идео:\"0V110X021805\",\"идео \":\"0V2G1805\",идет:\"0V0A1605181A\",идеть:\"1823\",идеш:\"0V090X0L160B\",\"идеш \":\"0V0O0X0M160N\",идеја:\"0V0K0X0D\",иди:\"0V1N0X121614181D190G\",\"иди \":\"0V0O0X0U160H180C1903\",идиме:\"0X0D\",\"идко \":\"190R\",идн:\"0X08160A180B190A1M0N\",идний:\"1M1A\",идо:\"0V020X11160B1806\",идов:\"0X111802\",\"идов \":\"0X0U1802\",\"идти \":\"181M\",иду:\"0V060X0L180N1903\",идува:\"0X0F\",\"идум \":\"0X0E\",идэ:\"1M25\",идэн:\"1M1H\",идэнд:\"1M1U\",идэнт:\"1M16\",идя:\"161818041903\",\"идя \":\"160R\",идё:\"1814\",идёт:\"181A\",\"идёт \":\"181L\",ие:\"0X15162518491L1L1M09\",\"ие \":\"0X2M1668187C1L11\",иет:\"0X08161U18021L1N\",ието:\"0X08161W\",\"ието \":\"0X08163Z\",иеш:\"0X0F1608\",иж:\"0V070X0B160Q180M19151L061M0N\",\"иж \":\"160618021M1G\",ижд:\"16291907\",ижда:\"162K\",иждал:\"164C\",иже:\"0V0A0X0D1608180C1L0D\",ижи:\"0V030X0E160718021903\",ижк:\"1914\",\"ижку \":\"190X\",из:\"0V2X0X2B163O184H190M1L0D\",\"из \":\"0V140X08160318321904\",иза:\"0V140X03161D1807\",изб:\"0V0F0X0Y160V180C\",избег:\"0V0H0X0D1805\",избор:\"0V0D0X0E160I\",изв:\"0V170X1J161U1812\",изве:\"0V090X0I160K180P\",изви:\"0V0J0X0Q1615180J\",извин:\"0V130X0H161S1810\",изг:\"0V1U0X2G16231802\",изгл:\"0V1D0X28161Y\",изгле:\"0V3I0X2C163Z\",изгу:\"0V0M0X0L1607\",изгуб:\"0V1L0X0M160G\",изи:\"0V0E0X0J160R180C1905\",изк:\"160Y1807\",изл:\"0V0F0X0R16181802\",изле:\"0X0T160F\",излег:\"0X0C\",излез:\"0X0G160S\",изм:\"0V0E0X0H160J180R1904\",изн:\"0V0V0X0T1618181Z190J\",изне:\"0V0O0X0K160N1809\",изнен:\"0V1I0X0F160X1803\",\"изни \":\"181G\",\"изнь \":\"181T\",изо:\"0V050X06160X1817\",изп:\"1620\",изпол:\"161A\",изпра:\"161G\",ии:\"0X051605181S\",\"ии \":\"0X0G160F183X\",ий:\"160D182P198J1MGL\",\"ий \":\"1606184S19EV1MDT\",ийг:\"1MDT\",\"ийг \":\"1MF6\",ийд:\"190M1M1G\",ийдэ:\"1M0V\",ийдэг:\"1M1A\",ийж:\"1M1R\",\"ийж \":\"1M23\",ийм:\"190C1M2C\",\"ийм \":\"1M23\",ийн:\"190B1M7L\",\"ийн \":\"1M7E\",ийнх:\"1M0X\",ийнэ:\"1M0P\",ийс:\"1617180W19041M1E\",ийск:\"16131810\",ийски:\"1627181A\",ийсэ:\"1M1B\",ийсэн:\"1M2N\",ийх:\"1M30\",\"ийх \":\"1M2M\",ийш:\"1913\",ийшов:\"1910\",ик:\"0V3P0X271626184P19321L281M0B\",\"ик \":\"0V170X1E161B1826191N\",ика:\"0V390X2C163E181Y191F1L52\",\"ика \":\"0V130X1D161S180Z190U1L1W\",икад:\"0V220X03\",\"икад \":\"0V3L\",икада:\"0V1R\",икакв:\"0V0A0X091611\",икал:\"0V030X031609180319021L2X\",икалы:\"1L44\",икас:\"18021L2O\",икасы:\"1L3U\",икат:\"0X0G160J18021904\",иката:\"0X0F160V\",ики:\"0V090X071603180U190X\",икн:\"0V040X0D160L18041904\",ико:\"0V400X3H1636183I190S\",\"ико \":\"0V431802\",иког:\"0V070X2B162E1832\",икога:\"0V080X27164E\",икогд:\"184Z\",икой:\"160W1804\",\"икой \":\"161X1807\",икот:\"0V030X0V\",\"икот \":\"0X0V\",икој:\"0X18\",\"икој \":\"0X1A\",икт:\"1811\",икто:\"181D\",\"икто \":\"182H\",ику:\"0V0X0X091603180K190O\",\"ику \":\"0V0W180D190N\",икува:\"0X0C16071904\",ил:\"0V480X2A162G18A5195K1L0P1M3Q\",\"ил \":\"0V0A0X36162X188J19031M28\",ила:\"0V4V0X0T161G183F1951\",\"ила \":\"0V5M0X0T161C183D194N\",илас:\"18161918\",илась:\"18261906\",илася:\"191M\",илг:\"1M0T\",илд:\"1M0O\",иле:\"0V0K0X11160U180G19031L0T\",\"иле \":\"0V0L0X0O1802\",илен:\"0X0I160C\",\"илен \":\"0X0C160O\",или:\"0V3D0X1F163F1859193Q\",\"или \":\"0V3E0X0X1624185H192U\",илис:\"1815190W\",ились:\"18231905\",илися:\"1916\",иличн:\"0V0K0X0C1804\",илищ:\"1610\",илище:\"1622\",илл:\"180B19021M19\",илла:\"1M17\",иллах:\"1M16\",илн:\"0V040X0D160L\",ило:\"0V2P0X1D160W18211919\",\"ило \":\"0V2X0X1K160R180T190I\",илос:\"0V030X02181K190U\",илось:\"182Q1904\",илося:\"1912\",илс:\"1823\",ился:\"182V\",\"ился \":\"185A\",илт:\"1M0V\",илц:\"1M0O\",иль:\"181V1915\",ильн:\"181O1916\",ильно:\"181M190R\",илү:\"1M1J\",илүү:\"1M1T\",\"илүү \":\"1M2V\",им:\"0V8J0X40163O186B19511L0Q1M0K\",\"им \":\"0VDF0X2C163K186819541M0O\",има:\"0V720X7O169S182Q19171L0E\",\"има \":\"0V4R0X4E164618071905\",имаа:\"0X0H\",имаат:\"0X0G\",имава:\"0X05161H\",имал:\"0V0E0X0C160S180E1908\",ималн:\"1619\",имам:\"0V1K0X2I162M\",\"имам \":\"0V320X1W164K\",имаме:\"0X0R1610\",\"имао \":\"0V1S\",имат:\"0V0H0X0D161H180U1908\",имате:\"0V0V0X0C161Q180G\",имаш:\"0V0F0X20161K\",\"имаш \":\"0V130X1D162A\",имаше:\"0X0S1614\",име:\"0V120X47160S181V1915\",\"име \":\"0V0K0X5116041802190U\",ими:\"0V090X0A160F181F19131L0G\",\"ими \":\"0V030X031604181L1916\",имо:\"0V1P0X05160B180R1915\",\"имо \":\"0V201608180C190S\",иму:\"0V040X02160318071915\",ин:\"0V3E0X38164C187B197N1L2K1M6U\",\"ин \":\"0V0U0X0W163C1820191N1L0J1M47\",ина:\"0V260X52166Z182V193J1L2I\",\"ина \":\"0V260X47163V181Y193A1L0O\",инаг:\"161E\",инаги:\"162X\",инал:\"0X07160Z18081L1I\",инала:\"16171802\",инат:\"0X1N161418071902\",ината:\"0X1H162C\",инг:\"0V060X03160618061L0D1M0O\",инд:\"0V030X0N160618061L0E1M0N\",инда:\"0X0R\",\"инда \":\"0X0S1802\",ине:\"0V1E0X0O1617181C19131L0E\",\"ине \":\"0V1D0X06160418101902\",инен:\"160B1807190V\",\"инен \":\"1607190Z\",инете:\"0X0316151802\",ини:\"0V1X0X1S162M181K192R1L0N1M7I\",\"ини \":\"0V140X1P161O1804191R\",иний:\"180319081M8Q\",\"иний \":\"1805190B1MFN\",инима:\"1619180X\",\"инку \":\"180F190U\",инн:\"180F1912\",ино:\"0V0T0X0O160R1820191O1L0J1M0X\",\"инок \":\"18051912\",\"иною \":\"190U\",инс:\"0V0C0X0U160S180Z19061L0D\",инст:\"0V050X0M160J18121904\",инств:\"0X0L160Z181L1905\",инт:\"0V0F0X0M1616181A\",инте:\"0V0I0X0Q1610181N\",интер:\"0V150X0P161Z182W\",ину:\"0V1J0X0N160J181Z19331L0D\",\"ину \":\"0V0Y181J1920\",инув:\"0X0G190M\",инува:\"0X0H190C\",инул:\"0V071807190U\",инуло:\"190T\",\"ины \":\"1816\",инь:\"180319031M0T\",\"инь \":\"19021M0Z\",инэ:\"1M1C\",\"инэ \":\"1M13\",ині:\"1918\",\"ині \":\"1911\",ио:\"0V480X0Y160D180P1L0G1M0P\",\"ио \":\"0VAK0X0216091808\",иол:\"0V020X0218031M0O\",ион:\"0V0K0X0H160H180N1L0N\",иот:\"0V050X2N160E180D\",\"иот \":\"0X3C1802\",ип:\"0V0A0X09160A180H19121L0D\",ипа:\"0V0A0X0D16091806190F1L0I\",ипсва:\"161B\",ир:\"0V1M0X1M161A182E191E1L0M1M2X\",\"ир \":\"0V0G0X0C1605180C1905\",ира:\"0V280X3M163Z181V190T1L0F\",\"ира \":\"0V0O0X17161L180C1902\",ираа:\"0X0H\",ирам:\"0V0F0X131610\",\"ирам \":\"0V0T0X0X161P\",иран:\"0V0A0X0K160O1802\",ираш:\"0V030X0R160G\",\"ираш \":\"0V080X0K160R\",ире:\"0V0E0X0D160A180F1902\",ири:\"0V0L0X0U160I180619091L0G\",\"ири \":\"0V090X0H160B1907\",ирн:\"0V0B0X04180319031M0S\",ирнэ:\"1M0X\",\"ирнэ \":\"1M1Q\",иро:\"0V0H0X0I1608181I190F\",иров:\"0X021603181H\",ирова:\"1829\",ирс:\"1M1J\",ирсэ:\"1M1R\",ирсэн:\"1M3I\",ирэ:\"1M2P\",ирэх:\"1M1N\",\"ирэх \":\"1M2B\",ирээ:\"1M19\",ирээн:\"1M1E\",ирі:\"190Z\",иріш:\"190S\",иріши:\"1910\",ис:\"0V5S0X3W16581853195V1L101M0K\",\"ис \":\"0V0C0X08160F180C19051M0N\",иса:\"0V430X0C1611181C190Z\",исам:\"0V3P\",\"исам \":\"0V90\",иси:\"0V0U0X0D160718081903\",иск:\"0V0R0X1L167G1813190D\",иска:\"0V030X0B167Z180G1902\",\"иска \":\"0X0216371804\",искал:\"1624180E\",искам:\"165K\",искат:\"0X0216191808\",искаш:\"1651\",иски:\"0V030X0I1803\",\"иски \":\"0X0E1805\",иску:\"0V070X0H180D1906\",исл:\"0V4F0X4Z167G180F190D\",исла:\"0V030X3418061903\",ислам:\"0X301802\",исле:\"0V060X1M160W1803\",ислев:\"0X13\",ислех:\"161N\",исли:\"0V530X1T161Q1902\",\"исли \":\"0V1Y0X0I1617\",ислим:\"0V6O0X03\",ислиш:\"0V1I0X141619\",исля:\"1660\",\"исля \":\"16BQ\",исм:\"0V0Y0X0B160M1804\",исмо:\"0V100X0B160I1803\",\"исмо \":\"0V2L0X08160K\",исо:\"0V090X0H160K180B190F\",исок:\"0V0A0X0J160K1805190F\",исп:\"0V110X18160618141L0D\",испи:\"0V070X0H\",испра:\"0V0N0X0C180D\",ист:\"0V3L0X4G163Y182K192I1L1J\",иста:\"0V0P0X0M160A180C190V\",\"исте \":\"0V1S1902\",исти:\"0V1P0X3C162S180M190H\",\"исти \":\"0V0U0X0H160E18031909\",истин:\"0V1R0X2G1645180A\",исто:\"0V0N0X0V160O1816190I\",\"исто \":\"0V0J0X0J18021906\",ись:\"1833191Q\",\"ись \":\"183H191S\",ися:\"1802195Z\",\"ися \":\"196S\",ит:\"0V5B0X3L164V18EI19C41L1H1M1I\",\"ит \":\"0V070X09160D18751906\",ита:\"0V3A0X181632182V19391L0X1M0L\",\"ита \":\"0V0B0X0H160X18041907\",\"итав \":\"0X03190Z\",\"итам \":\"0V1C0X091616\",итан:\"0V030X031607180B1911\",итанн:\"18021916\",итати:\"190V\",итг:\"1M2Z\",итги:\"1M17\",итгий:\"1M2F\",итгэ:\"1M2C\",итгэж:\"1M16\",итгэл:\"1M1M\",итгэх:\"1M16\",ите:\"0V730XA016DE1889191I1L13\",\"ите \":\"0V7L0XBX16BV186K190Y\",ител:\"0X0W162X1846190L\",ители:\"0X0B161H1810\",ителн:\"0X06162L\",итель:\"1852190J\",итесн:\"1612\",ити:\"0V400X0I160Q180J19DX\",\"ити \":\"0V4B0X07160619D6\",итис:\"0V030X021924\",итися:\"192V\",ито:\"0V090X0C161P180D190B\",\"ито \":\"0V070X06161U18021902\",итс:\"183I\",ится:\"184R\",\"ится \":\"188M\",иття:\"190T\",\"иття \":\"1914\",иту:\"0V090X0C1607180B190D1L0R\",ить:\"18BZ196E\",\"ить \":\"18DO1964\",итьс:\"182S191G\",иться:\"18541924\",иу:\"1M0G\",иул:\"1M0Q\",иф:\"0V030X04160218041902\",их:\"0V1X161N182U191Q1L0R1M30\",\"их \":\"0V4W164O1858192K1L0F1M47\",иха:\"160U180219061L0E\",\"иха \":\"160Y\",ихл:\"1M0O\",\"ихме \":\"161G\",ихс:\"18021M14\",ихса:\"1M0P\",ихсан:\"1M1E\",\"ихте \":\"1618\",иц:\"0V1V0X11160Z181N190V1L0J\",ица:\"0V1N0X1U162B180T\",\"ица \":\"0V1R0X1G161J180W\",ицат:\"0X0U16101802\",ицата:\"0X0V1625\",ице:\"0V1B0X0A1609180U1903\",\"ице \":\"0V1J0X03180P\",ици:\"0V1G0X1N161Q180O1L18\",\"ици \":\"0V0S0X10160X\",ицит:\"0X0L160H\",иците:\"0X0M1611\",иција:\"0V0F0X0G\",ицу:\"0V0W180J\",\"ицу \":\"0V12180Q\",иці:\"190Z\",\"иці \":\"190T\",ич:\"0V1K0X0Y162E182D191C1M0U\",ича:\"0V1S0X0A163M180G190W\",\"ича \":\"0V0H161C\",ичай:\"16031802190T\",ичам:\"0V0E1613\",\"ичам \":\"0V0R1628\",\"ичаш \":\"0V0B1613\",иче:\"0V0E0X0I161A18311906\",ичег:\"182I\",ичего:\"184M\",ичен:\"0V020X0L160B18051902\",\"ичен \":\"0X0K160G1804\",ичес:\"160I181G\",ическ:\"160W1827\",ичи:\"0V0E0X0K160H180M190L1M0N\",ичк:\"0V0L0X0K163S18041906\",ички:\"0V090X0A16291902\",\"ички \":\"0V0J0X09163Y18021903\",ичко:\"0V050X05161R\",\"ичко \":\"0X04163L\",ичн:\"0V160X1I160Z180V190R\",ично:\"0V120X1E160M180J1909\",\"ично \":\"0V2I0X1B1613180M1907\",ичэ:\"1M0O\",ичээ:\"1M0T\",иш:\"0V3M0X2M161M182F192B1M18\",\"иш \":\"0V3C0X5G165H191G1M2X\",иша:\"0V150X0S160D190M\",\"ишао \":\"0V20\",ише:\"0V2M0X0B160Q180C191B\",\"ише \":\"0V2S0X07160E1803191C\",иши:\"0V0K0X071606180A1911\",ишк:\"1815\",ишко:\"181I\",ишком:\"182R\",ишт:\"0V1I0X2E\",ишта:\"0V190X07\",\"ишта \":\"0V320X04\",иште:\"0V070X0M\",\"иште \":\"0V0F0X0E1902\",ишто:\"0V040X29\",\"ишто \":\"0X27\",ишу:\"0V040X0H18051908\",ишув:\"0X0N\",ишува:\"0X0O\",ишь:\"182C\",\"ишь \":\"182T\",ищ:\"160Q180D190A\",ище:\"1617180C1906\",\"ище \":\"160W18041905\",ищо:\"161T\",\"ищо \":\"1620\",иы:\"1L0M\",ию:\"180Z\",\"ию \":\"18231902\",ия:\"163D183119041L4I\",\"ия \":\"167Y185U19021L3F\",\"ияда \":\"1L20\",иял:\"1L3R\",ияла:\"1L23\",иялы:\"1L4Z\",иялық:\"1L6Q\",иян:\"1608180219021L1C\",ияны:\"1L28\",ияның:\"1L27\",ияс:\"1L1O\",иясы:\"1L34\",иясын:\"1L27\",ият:\"1665180D\",\"ият \":\"1631\",ията:\"1625\",\"ията \":\"164I\",ияте:\"161P1802\",иятел:\"163H1803\",иђ:\"0V0C\",иђа:\"0V0T\",иє:\"1906\",иі:\"1L12\",иіс:\"1L1D\",иї:\"190A\",иј:\"0V4N0X1W\",ија:\"0V3L0X6M\",\"ија \":\"0V1Z0X4D\",ијам:\"0V060X0R\",\"ијам \":\"0V0A0X0R\",ијан:\"0V0B0X0J\",ијат:\"0V1A0X2P\",ијата:\"0X1D\",ијате:\"0V300X15\",ије:\"0V6X\",\"ије \":\"0V73\",ији:\"0V11\",\"ији \":\"0V17\",ију:\"0V16\",\"ију \":\"0V1C\",иљ:\"0V07\",ињ:\"0V0B0X07\",иња:\"0V080X0Q\",\"иња \":\"0V060X0N\",ић:\"0V0N\",иғ:\"1L0F\",й:\"1637173Z185A196V1L6Y1MIQ\",\"й \":\"163T17A118FB19CY1L5L1MMF\",\"й-\":\"160D180419021L0E\",\"й-ақ \":\"1L2A\",\"й-доб\":\"1617\",йб:\"170419071L09\",йв:\"170319031M0L\",\"йв \":\"1M0T\",йг:\"170F19021L0B1M9O\",\"йг \":\"1MGW\",йга:\"1M4V\",йгаа:\"1M5M\",\"йгаа \":\"1M6E\",йгааг:\"1M3F\",\"йго \":\"1724\",йгэ:\"1M0Q\",йгээ:\"1M0V\",\"йгөө \":\"1M16\",йд:\"160L170J180T190Z1L671M23\",\"йд \":\"1M0Q\",йда:\"160B170819021L4T1M32\",\"йда \":\"160C1L4Q\",йдаг:\"1M36\",\"йдаг \":\"1M5C\",йдал:\"1L2J\",йдала:\"1L37\",йде:\"1623180719121L1G\",\"йде \":\"161Q190S1L1U\",йдзе:\"171W\",\"йдзе \":\"171M\",йды:\"1L6O\",\"йды \":\"1LAJ\",йдэ:\"1M0T\",йдэг:\"1M0P\",йді:\"19061L48\",\"йді \":\"1L6T\",йе:\"1L1B\",йел:\"1L1O\",йж:\"19091M12\",\"йж \":\"1M2I\",йз:\"16021M0H\",\"йз \":\"1M0N\",йк:\"160C170B1805190B1L09\",йка:\"160Z170G18031904\",\"йка \":\"160X170C18031905\",йл:\"1603170N180319071L311M2C\",\"йл \":\"19021M2D\",йла:\"1606170J180219051L3Y1M0S\",йлан:\"1L2X\",йланы:\"1L34\",йлг:\"1M1C\",йлго:\"1M1F\",йле:\"171O1L37\",йлеп:\"172T\",йлепш:\"1743\",йм:\"17091807190V1L1W1M15\",\"йм \":\"1M1V\",йма:\"170J180719171L0P\",ймы:\"1L2G\",ймын:\"1L3M\",\"ймын \":\"1L56\",ймі:\"19021L1P\",ймін:\"1L2Z\",\"ймін \":\"1L4A\",йн:\"160F170W180M191O1L141MCT\",\"йн \":\"160D1705180519041MAA\",йна:\"160P171W180719091L2K1MIN\",\"йна \":\"160E171R1807190A1MKW\",йнал:\"1L2A\",йнд:\"1M0L\",йно:\"160D180F191C\",\"йно \":\"1606180D191H\",йнх:\"1M0T\",йнэ:\"1M0Q\",йнээ:\"1M0P\",\"йнээ \":\"1M1E\",йня:\"191A\",йнят:\"1917\",йняти:\"1916\",йо:\"16021803192S\",йог:\"193N\",його:\"1948\",\"його \":\"1963\",йом:\"191Z\",йому:\"191P\",\"йому \":\"192G\",йп:\"1702\",йр:\"1L0P1M0Q\",йрт:\"1M0N\",йрта:\"1M0R\",йртай:\"1M1I\",йс:\"160J171A1821191C1L121M49\",йса:\"1M8P\",йсан:\"1MA1\",\"йсан \":\"1MHZ\",йск:\"161617291813\",йски:\"1617180Z\",\"йски \":\"1624180J\",йст:\"160M1706182N1902\",йста:\"1825\",\"йста \":\"183Z\",йств:\"160O181J\",йстви:\"160J181Y\",йсці:\"1727\",\"йсці \":\"173A\",йсь:\"191H\",йськ:\"191N\",йсько:\"1912\",йсэ:\"1M14\",йсэн:\"1M1B\",\"йсэн \":\"1M2N\",йт:\"160P17021825191R1L351M0L\",йта:\"1L23\",йте:\"161N182M192B\",\"йте \":\"161V182Z1929\",йти:\"1824191E\",\"йти \":\"182U191M\",йто:\"1616\",\"йто \":\"161B\",йты:\"1L2U\",йтын:\"1L2F\",\"йтын \":\"1L2A\",\"йтып \":\"1L27\",йтэ:\"1M0L\",йх:\"1M3U\",\"йх \":\"1M47\",йха:\"1M2P\",йхан:\"1M25\",\"йхан \":\"1M46\",йхг:\"1M1C\",йхгү:\"1M1L\",йхгүй:\"1M37\",йц:\"1602170Q18051905\",йце:\"172E1902\",\"йце \":\"173N1902\",йч:\"1704180P\",йча:\"181K\",йчас:\"1825\",\"йчас \":\"1840\",йш:\"171Q180419101L091M0M\",йши:\"18051M0S\",йшин:\"1M0X\",\"йшин \":\"1M1M\",йшл:\"17271911\",йшла:\"1726190N\",\"йшла \":\"1738190Y\",\"йшлі \":\"1724\",йшо:\"171S1917\",йшов:\"191E\",\"йшов \":\"1920\",йшоў:\"1731\",\"йшоў \":\"174C\",йы:\"1L5A\",\"йы \":\"1L1P\",йым:\"1L2G\",йымда:\"1L2A\",йын:\"1L71\",\"йын \":\"1L32\",йынд:\"1L3Z\",йында:\"1L5C\",йынш:\"1L4Z\",йынша:\"1L6T\",йі:\"1L1P\",йін:\"1L2T\",\"йін \":\"1L3R\",йғ:\"1L0D\",йқ:\"1L0J\",к:\"0VBB0XC416E017B618CN19DU1LBT1M0O\",\"к \":\"0V2E0X1E162I1768188U196G1L7H1M0A\",\"к-\":\"1804\",кe:\"1L04\",кi:\"1L13\",ка:\"0V7L0XCK16AU17HV18DZ19BY1L2S1M08\",\"ка \":\"0V4K0XIW16BF17DY1865199C1L14\",каа:\"0X0L\",каат:\"0X0J\",\"каат \":\"0X0K\",каб:\"1603173Z18041904\",\"каб \":\"1768\",кав:\"0V0F0X131608173M1802192P\",\"кав \":\"0V0D0X0T190P\",кава:\"0X0C173A1908\",\"кава \":\"0X09171L190B\",каво:\"1911\",\"каво \":\"191G\",каг:\"171M\",кага:\"171Q\",\"кага \":\"172I\",кад:\"0V490X29170P18021L0M\",\"кад \":\"0V2B\",када:\"0V2W0X03170I\",\"када \":\"0V75170M\",каде:\"0X2V\",\"каде \":\"0X2Z\",кае:\"0X02171N1807\",\"кае \":\"171Z\",каж:\"0V1T0X4D162G172Y183O192K\",кажа:\"0X38160X171E\",\"кажа \":\"0X1B161Y1716\",кажав:\"0X0G\",кажал:\"0X0C\",кажам:\"0X15\",кажд:\"181G\",кажды:\"181Q\",каже:\"0V1K0X1B161H181E1917\",\"каже \":\"0V210X0M160V191E\",кажет:\"0V080X02160R18251904\",кажеш:\"0V0L0X0K161E180C1908\",кажи:\"0V0C0X0W160F181R190R\",\"кажи \":\"0V0M0X0Y160X181W1913\",кажит:\"0V0A181E\",кажу:\"0V090X0I171U180L190N\",кажув:\"0X0J\",кажы:\"171X\",\"кажы \":\"1721\",каз:\"0V0M0X0M1656176U187F195K\",каза:\"0V0G163O1782188T1967\",\"каза \":\"163X\",казав:\"18021959\",казал:\"0V0A161D173O18BA1929\",казат:\"1607184F191Q\",казах:\"161R171K1804\",казац:\"173I\",казаў:\"173C\",казв:\"16261715\",казва:\"164L171P\",казна:\"0X0C170E\",казыв:\"181S\",кай:\"160H174E1804190H\",\"кай \":\"160C176X18021909\",как:\"0V2T0X5K169N189D\",\"как \":\"162K188Q\",какв:\"0V0F0X0Z167I\",каква:\"0V080X0M163B\",какви:\"0X0A1624\",какво:\"0V0A0X0516AM\",каки:\"1813\",како:\"0V2R0X6F182C\",\"како \":\"0V6W0X6F\",каков:\"0X0E180B\",какой:\"182B\",както:\"161C\",какъв:\"161H\",кал:\"0V0E0X1K161O17BL180U190Q1L1W\",\"кал \":\"0X1G160U180D\",кала:\"0V080X04160F171Z1806190D\",\"кала \":\"0V0I0X02160U17201809190H\",калы:\"18021L2X\",калық:\"1L44\",калі:\"17DZ\",\"калі \":\"17HZ\",каліс:\"171M\",кам:\"0V0R0X4A1636174Z180X190K\",\"кам \":\"0V0B0X4C162V173B180A1906\",каме:\"0V080X0X160K170S18091902\",\"каме \":\"0X0S160V\",камі:\"171O1902\",\"камі \":\"1720\",кан:\"0V0I0X0W161817401811190X1L0Y\",кана:\"0V080X09160G172A180C190E\",као:\"0V3B\",\"као \":\"0V3Z\",кап:\"0V0A0X0J1604170J1808190B\",кар:\"0V0Y0X0W162R174L1817191N1L0T\",кара:\"0V0F0X0A161N171E180919061L12\",\"кара \":\"0V0A0X02161A\",кары:\"1731\",карыс:\"172Z\",кас:\"0V0P0X0816091715180619071L1I\",касы:\"1L2Q\",касын:\"1L37\",кат:\"0V090X2F16711713180Z191E\",ката:\"0X2W1643170E180C1908\",\"ката \":\"0X30168B18031902\",кате:\"0X03160R1806\",\"кате \":\"0X021613\",кати:\"18031915\",\"кати \":\"191F\",като:\"0X021630170T18031903\",\"като \":\"1667\",каф:\"0V0B0X0H160M1804\",кафе:\"0V030X0K160L1802\",\"кафе \":\"0V080X0E160X1803\",ках:\"160J173C180H1908\",каха:\"174K\",кахан:\"172E\",кац:\"0V03171D\",\"каць \":\"171O\",кач:\"0V040X0D160P170518071904\",каш:\"0V0A0X2H162L170Y18031903\",\"каш \":\"0V030X20162A\",каше:\"0X18160L\",\"каше \":\"0X1A1619\",кая:\"173P181G\",\"кая \":\"1767181U\",кај:\"0V0F0X10\",\"кај \":\"0V070X18\",каў:\"1728\",\"каў \":\"1739\",кб:\"1907\",кв:\"0V0C0X0E161U170G180B190I\",ква:\"0V0B0X0T162F170N180F190D\",\"ква \":\"0V060X0T161T1902\",кви:\"0V040X0E160Y1803190B\",\"кви \":\"0X0G161018021903\",кво:\"0V060X0B164O1802\",\"кво \":\"0V030X0E164T\",ке:\"0V160X05160B170C181J190W1LGM\",\"ке \":\"0V2P182K190Y1L4O\",кез:\"1L49\",кезд:\"1L3V\",кезде:\"1L5I\",кей:\"1605180219021L1X\",кейі:\"1L2A\",кейін:\"1L34\",кел:\"0X0216021LAH\",келг:\"1L2O\",келге:\"1L3N\",келд:\"1L2Q\",келді:\"1L3K\",келе:\"1L7M\",келед:\"1L5L\",келм:\"1L2T\",келме:\"1L40\",келі:\"1L2V\",кем:\"180B1L1C\",кен:\"0V060X07160K170E180319051L82\",\"кен \":\"0X03160E180219021L8R\",кені:\"1L2Q\",кенін:\"1L2H\",кер:\"0V0217051802190C1L6J\",кере:\"1L6E\",керек:\"1L8A\",кес:\"19021L20\",кет:\"0V050X05160D1706180819091L8E\",\"кет \":\"0V040X03180419021L2X\",кетт:\"1L8N\",кеттi:\"1L3H\",кетті:\"1L87\",кеш:\"1L27\",кең:\"1L1K\",кж:\"1802\",кз:\"170318061904\",ки:\"0V1Y0X1N163R185G195N1L0S1M0M\",\"ки \":\"0V2L0X3L16BG185O197A\",кие:\"181D\",\"кие \":\"181P\",кий:\"1823192K\",\"кий \":\"182U192X\",\"ким \":\"0V0C0X021812190U\",кин:\"0V0G0X0C160B180H190K1L0E1M0J\",кио:\"0X0F160818061M0N\",киот:\"0X0J1802\",\"киот \":\"0X0K\",кир:\"0V050X0H16051803\",кира:\"0V040X0I1605\",кит:\"0X0S161M180A190E\",ките:\"0X0Z161E\",\"ките \":\"0X11162Z\",\"ких \":\"0V081816190G\",кия:\"161B\",\"кия \":\"160R\",\"кият \":\"161K\",кк:\"170218021L0M\",кке:\"1L1K\",\"кке \":\"1L21\",кл:\"0V0U0X0H160S1722181A191U1L09\",кла:\"0V0N0X0F160S1750180U192F1L0E\",клад:\"0X041606174V180D191P\",клада:\"0X03172K190Z\",кладн:\"1719190S\",кло:\"0V0I0X0B16071707180B1903\",клу:\"0V040X0T1604170918051905\",клуч:\"0X0X\",клю:\"161D170U1811190J\",ключ:\"161J171F181D190M\",ключи:\"161G18161904\",км:\"0X02\",кн:\"0V040X0L160K17141814191B\",кна:\"0X0R160C18061905\",\"кна \":\"0X0I160518081904\",кни:\"0X0V161N181L191S\",книг:\"0X11161Q181Z190I\",книга:\"0X0S162C180T1907\",книги:\"0X0B161D180V1905\",книгу:\"181H190B\",книж:\"16031803191G\",книжк:\"1802191U\",кну:\"0V070X0B170D180D190E\",кнува:\"0X0F\",кні:\"17331905\",кніг:\"1744\",кніга:\"171Z\",кнігу:\"172U\",ко:\"0V980X83168B174S18FV19AZ1L2C1M0I\",\"ко \":\"0VC40X7Z16911706186M192Q\",ков:\"0V0E0X16162P171E181V1911\",\"ков \":\"0X111814\",кова:\"0V0A0X02162S171K180J1907\",\"кова \":\"165R171O18061903\",ког:\"0V190X5G165I1715186X191C\",\"ког \":\"0V11\",кога:\"0V0I0X6F165F171Y\",\"кога \":\"0V1A0X2Y167T172V\",когат:\"163R\",когаш:\"0X40\",когд:\"186W\",когда:\"18C7\",кого:\"0X0U160V182R191K\",\"кого \":\"0X0T161D184H191W\",кое:\"0X0E162E170X181O\",\"кое \":\"0X0D1608171J181O\",коет:\"162G\",което:\"1655\",кож:\"0X031604171R1803190V\",кожн:\"172Z190M\",кожны:\"1730\",кои:\"0X0I161F180C\",\"кои \":\"0X0H160J\",коит:\"1612180B\",които:\"1629\",кой:\"163Z171U183B\",\"кой \":\"1636172H183S\",койт:\"161B1803\",който:\"162S\",кол:\"0V380X4K165C1754184K196S1L13\",кола:\"0V0H0X1E1616170D180A190A1L14\",\"кола \":\"0V0M0X0N1612170I18061906\",колат:\"0X0K1616\",коле:\"0V0A0X09160Q171Q180N1905\",колер:\"171X\",коли:\"0V2N0X0616051806196J\",\"коли \":\"0V0H0X02197L\",колик:\"0V5Z\",колис:\"191D\",колк:\"0X35163H\",колко:\"1678\",колку:\"0X37\",\"колу \":\"0V130X0G170S18101906\",коль:\"172N183R1906\",кольк:\"173O186A\",колі:\"1739190L\",\"колі \":\"174T190H\",ком:\"0V1U0X0W160R170Q1867192T1L1Z1M0J\",\"ком \":\"0V1G170I183Y190Z\",комн:\"1819\",комна:\"182B\",кому:\"0X0H170I1813190W\",\"кому \":\"0X0E170R181U1916\",кон:\"0V0Z0X1A160Z171X1834191N1L25\",\"кон \":\"0V060X0I160318051903\",коном:\"1606180E19061L23\",конч:\"171H1816\",кончи:\"181N\",кончы:\"1721\",коп:\"0V080X0F160F1706180A1906\",кор:\"0V1E0X18160T170D18271921\",кори:\"0V0P0X0U1804190V\",корис:\"0V1N0X0S1914\",коро:\"0V0Q0X0J160O181J190W\",\"коро \":\"0V1S0X0J1619180Y190G\",кос:\"0V0A0X0F160S170A180H190D\",кот:\"0V030X21161U170Q182G190U\",\"кот \":\"0X29170L1807\",кото:\"0X0A161I182V\",\"кото \":\"0X0B1635\",котор:\"1858\",кох:\"0V040X0316051910\",коха:\"1913\",кою:\"1802192N\",\"кою \":\"1933\",коя:\"161D\",коят:\"1611\",която:\"1627\",\"кої \":\"190U\",кој:\"0V3F0X4E\",\"кој \":\"0V0D0X4T\",која:\"0V0H0X0S\",\"која \":\"0V180X0M\",\"које \":\"0V1Z\",који:\"0V1X\",\"који \":\"0V4E\",кп:\"1L0C\",кр:\"0V1J0X171610172B1838192A1L07\",кра:\"0V1C0X1M162G173K182L192P\",крас:\"0V040X0G160Y170F1828190B\",краси:\"161K181Y1906\",красн:\"0X0D1608181U1908\",кращ:\"1802191G\",краще:\"18021917\",краі:\"172R\",краін:\"1743\",країн:\"1915\",крај:\"0V0L0X0P\",\"крај \":\"0V0H0X0I\",кре:\"0V1G0X0T160G180V190E\",креве:\"0V0X0X0C\",крен:\"0V0Y0X0E1803\",кри:\"0V0W0X11160Z180G1913\",кро:\"0V0J0X081604170W1815190E\",крш:\"0X0E\",кры:\"173E181R\",крыху:\"171T\",кс:\"0V080X061606170S180F190F1L0M\",ксам:\"171V\",ксама:\"172R\",кт:\"0V0C0X09160F170W182G190L1L4S\",кте:\"0V030X021603180519021L78\",\"ктен \":\"1L27\",ктер:\"0X0218051L4Q\",\"ктер \":\"18041L2D\",ктері:\"1L27\",ктес:\"1L23\",кти:\"0V080X0G160E180E190G\",кто:\"0V0B0X08160U1706183W19081L0F\",\"кто \":\"160M1843\",кті:\"19021L4E\",\"кті \":\"1L4U\",ктің:\"1L21\",\"ктің \":\"1L2X\",ку:\"0V3C0X371615175H184S196U1L0B\",\"ку \":\"0V2Z0X67179Z1843198Q\",кув:\"0V080X181606190X\",кува:\"0V090X1M16071913\",\"кува \":\"0X0D\",кувам:\"0X0C\",куваш:\"0X0C\",куд:\"0V02170U181A190H\",куда:\"0V02181R\",\"куда \":\"0V06182X\",\"куди \":\"190R\",\"куды \":\"171X\",кул:\"0V0A0X0B16051725180C190F\",куль:\"172J18061904\",\"куль \":\"172U\",куп:\"0V220X1K161J171R18221921\",купа:\"0V070X0I1709180I1904\",купам:\"0X0F\",купи:\"0V1N0X1D160Y1821191W\",\"купи \":\"0V0T0X0P160P18031903\",купив:\"0X0D1911\",купил:\"0V0T0X051608182A190Q\",купит:\"0V0D181E190W\",\"купя \":\"1613\",купі:\"1724\",кус:\"0V0F0X0E160M170A180Q1908\",кут:\"0V050X0E160717071903\",куч:\"0V030X0K160U1707180G1904\",куче:\"0V040X0L160X\",кучет:\"0X0C1617\",кую:\"1731180M190L\",\"кую \":\"174S180R190L\",кућ:\"0V1S\",кући:\"0V14\",\"кући \":\"0V2R\",куќ:\"0X0L\",куќа:\"0X0R\",куќат:\"0X0F\",кц:\"0V020X021602170618061904\",кш:\"170219021L0E\",кщ:\"190K\",кщо:\"1917\",\"кщо \":\"191F\",къ:\"1623\",\"къв \":\"160T\",къд:\"162P\",къде:\"1630\",\"къде \":\"165H\",\"към \":\"160V\",къс:\"161V\",късн:\"161I\",късно:\"1613\",късня:\"1617\",къщ:\"161P\",къща:\"160W\",къщи:\"1612\",\"къщи \":\"1628\",кі:\"177K193V1L79\",\"кі \":\"17GE191G1L3X\",ків:\"191G\",\"ків \":\"191N\",кіз:\"1L22\",кіл:\"192A1L1O\",кіль:\"192K\",кільк:\"193M\",кім:\"172F190O1L3E\",\"кім \":\"173M1L3D\",кімна:\"1915\",кін:\"171I191A1L3U\",\"кін \":\"1L2A\",кінд:\"1L2A\",кінді:\"1L37\",кінч:\"1911\",кінчи:\"1918\",кір:\"170O19021L29\",кіт:\"1717190B1L2A\",кіта:\"171H1L36\",кітап:\"1L40\",кіх:\"171K\",\"кіх \":\"172P\",кія:\"172T\",\"кія \":\"174A\",кљ:\"0V08\",књ:\"0V0F\",књи:\"0V16\",књиг:\"0V1C\",кү:\"1L3E\",күн:\"1L4Q\",\"күн \":\"1L2T\",күні:\"1L46\",\"күні \":\"1L4K\",күт:\"1L19\",кұ:\"1L06\",кә:\"1L0I\",кө:\"1L6P\",көз:\"1L1Y\",көм:\"1L1H\",көме:\"1L2J\",көмек:\"1L37\",көп:\"1L35\",\"көп \":\"1L3D\",көпте:\"1L23\",көр:\"1L72\",көре:\"1L3I\",көрем:\"1L20\",көрс:\"1L2O\",көрсе:\"1L3U\",көрі:\"1L23\",көрін:\"1L23\",көш:\"1L1C\",л:\"0VCJ0XAM16CJ17C618H719E71LI71ME0\",\"л \":\"0V0E0X30162P170P18FG190M1LB81M9X\",\"л'\":\"0V02\",лi:\"1L0T\",ла:\"0V840X4N164217EB18CI19BS1LG91M5P\",\"ла \":\"0VCK0X3A166617L318BG19E51L2X\",лаа:\"0X021M6C\",\"лаа \":\"1M3T\",лаар:\"1M2C\",\"лаар \":\"1M2N\",лаара:\"1M1U\",лаб:\"0V050X0G1609170B18081909\",лав:\"0V0Y0X12160K175N180T190X\",лава:\"0V060X0K160D1744180J190M\",\"лава \":\"0V0F0X0D160A170T18041902\",лавац:\"171R\",лаваў:\"1728\",лаве:\"0V030X06174E\",лавек:\"175H\",лаг:\"0V0J0X0O161G170T180W19061M1H\",лага:\"0V0I0X0C160S170F180H\",лагд:\"1M0P\",лаго:\"0V030X0I160T1709180O1907\",лагод:\"0X0D161J180U1909\",лад:\"0V1E0X1I161L17571818191T1L6J1M0T\",лада:\"0V0G0X0A1607172K1805190P1M0X\",ладаг:\"1M1M\",ладз:\"171W\",ладн:\"0V0I0X0M16041716180B190N\",лады:\"170O18051LAF\",\"лады \":\"170R1LDV\",лае:\"0X021604170A1818\",лает:\"1814\",\"лает \":\"181I\",лаж:\"0V0P0X0T160G18041M0N\",\"лаж \":\"16051M0R\",лаз:\"0V160X02180P1902\",лази:\"0V13\",\"лази \":\"0V1O\",лай:\"170Z180E19041L3H\",\"лай \":\"170M180B1L2M\",лак:\"0V0T0X0E160Z171H180C190N\",лал:\"0V03170C182919061L2D1M10\",\"лал \":\"1823\",лала:\"170F180F19041L3M1M0R\",лалаа:\"1M1I\",лалар:\"1L4Q\",лам:\"0V050X3R16061718180C190E1L2W\",\"лам \":\"0X4S170V18051902\",лама:\"0X02170J190A1L2H\",ламы:\"1L21\",ламын:\"1L2A\",лан:\"0V0Z0X13161A1721181F191K1L5M1M0T\",ланд:\"1608170J180719091L2F\",ланды:\"1L2U\",лани:\"0V0J0X0P160K180M1905\",ланир:\"0V100X0F160A180R\",ланы:\"18061L4B\",ланыс:\"1L2X\",лап:\"0X02170E18021L1H\",лар:\"0V0D0X0F160B171G180A190B1LDU\",\"лар \":\"1LA6\",лард:\"1L7Q\",ларды:\"1L9I\",лару:\"171T\",ларус:\"172Q\",лары:\"1L6E\",\"лары \":\"1L3E\",ларын:\"1L53\",ларғ:\"1L2F\",ларға:\"1L3H\",лас:\"0V0T0X11160Z17AO1838194R1L47\",ласк:\"0V030X0217451928\",ласка:\"0X0217611937\",ласы:\"170E1L5K\",ласын:\"1L4D\",лась:\"182O1909\",\"лась \":\"184X190D\",лася:\"17A31928\",\"лася \":\"17EE1939\",лат:\"0V100X22162Z170Z184C190Z1L2C\",лата:\"0X1I162E170J1803\",\"лата \":\"0X1C164X170I1806\",лати:\"0V0M0X0H160H180K190S\",латы:\"170C18041L3M\",латын:\"18021L56\",лать:\"184S\",\"лать \":\"1887\",лау:\"1L2M\",лах:\"1708180419041M27\",\"лах \":\"180519031M1T\",лач:\"0V0G0X0F1606170R180A1909\",лаш:\"0V0M0X0N160B180719031L0I\",лб:\"0X0216041L061M0G\",лг:\"0X0616081702180F1L2G1M2H\",лга:\"0X03160D170618071M2Z\",\"лга \":\"0X0316071M11\",лге:\"1L4F\",лген:\"1L6X\",\"лген \":\"1L84\",лго:\"0X0G160H180K1M22\",\"лго \":\"0X0J160I180M\",лгі:\"1L1R\",лд:\"18031LAN1M32\",\"лд \":\"1M1M\",лда:\"180319021L6V1M28\",лдаа:\"1M11\",\"лдаа \":\"1M1Q\",\"лдаж \":\"1M16\",лдан:\"1L3O\",лдар:\"1L46\",лдары:\"1L3E\",лде:\"1L3P\",лдер:\"1L3K\",лдо:\"1M0X\",лды:\"1LD9\",\"лды \":\"1LFX\",\"лдым \":\"1L23\",\"лдық \":\"1L20\",лдың:\"1L2Q\",\"лдың \":\"1L37\",лдэ:\"1M1C\",лдэг:\"1M0T\",\"лдэг \":\"1M1E\",лді:\"1L64\",\"лді \":\"1L62\",лдің:\"1L26\",\"лдің \":\"1L2U\",лдө:\"1M0L\",ле:\"0V530X51164G175Z187V194E1LB11M09\",\"ле \":\"0V3B0X23160H174N182C191C1L11\",лев:\"0V0D0X17160F170Q180R190J\",\"лев \":\"0X12\",лег:\"0V090X0P160H170H180N190I1L0R\",легув:\"0X0G\",лед:\"0V3Y0X5E164Y1711182D19081L4G\",\"лед \":\"0V090X0A1616\",\"ледi \":\"1L27\",леда:\"0V370X4L161X170D1905\",\"леда \":\"0V2J0X1U1612\",ледай:\"1614\",ледам:\"0V0T0X0Z160O\",ледаш:\"0V0W0X13160A\",ледај:\"0V1S0X0G\",ледв:\"160Z1902\",ледва:\"1623\",ледн:\"0V040X1H16101812\",ледна:\"0X0M160U\",ледни:\"0X0D160V1815\",ледно:\"0V090X0J1608\",леду:\"0X05181C\",ледую:\"181H\",леді:\"1L66\",\"леді \":\"1L8M\",леж:\"0V050X0B1625170Q180F190N\",лежд:\"161Y\",лежда:\"1645\",лез:\"0V030X0T160X1708180O\",лезе:\"0X0O160P1802\",\"лезе \":\"0X0G160Y\",лей:\"1604171R180O190D1L1M\",\"лей \":\"172L180N1L14\",лек:\"0V0T0X1D1613171D1812190G1L54\",лека:\"0V0A0X0P160Q170M180H\",лекар:\"0V0M0X0E1613170S180G\",леке:\"1L73\",лекет:\"1L9W\",лем:\"0V0K0X1P161I170Y181619151L3M\",\"лем \":\"0V0F0X0T160N170E180H190B1L1E\",\"лема \":\"0V080X0F160I170Z180O190J\",леми:\"0X0J160M190B\",\"леми \":\"0X0F160W190G\",лен:\"0V0F0X1R162P173V183C192G1L2E\",\"лен \":\"0X1D161F180Q1903\",ленге:\"1L2D\",лени:\"0X0C160L181Q190V\",ление:\"0X03160O181F\",лений:\"18031910\",ленн:\"1725180W190L\",ленне:\"171L1804\",лення:\"170W190T\",\"лено \":\"0V090X05161518081909\",\"лены \":\"171M180C\",лео:\"0V0U\",\"лео \":\"0V11\",леп:\"0V130X08160A172Z18081902\",лепей:\"171L\",лепш:\"0V04173W\",лепша:\"172W\",лепшы:\"1728\",лер:\"0V030X0716031710180519051L6F\",\"лер \":\"0X03170U1L4B\",лерд:\"1L28\",лерді:\"1L23\",лері:\"1L4B\",\"лері \":\"1L30\",лерін:\"1L2D\",лес:\"0V0W0X0T160J170N180I19041L3H\",лесн:\"0V050X0O160F1802\",лесно:\"0X0J160Q\",лесі:\"1L2T\",лет:\"0V0O0X0V161U1714182E190G1L1X\",\"лет \":\"0V030X07160C170B181K1904\",летін:\"1L2D\",леу:\"1L1C\",леф:\"0V0H0X0D160G1719180J191B\",лефан:\"1727\",лефо:\"0V0L0X0G160J170P180Q191I\",лефон:\"0V1I0X0H16131712181D1927\",\"лех \":\"160R\",леч:\"0X0M160Q1709180C1902\",леш:\"0V060X0G1606\",\"леше \":\"0X0E160C\",лж:\"0X051607170T181J1L0C1M1H\",\"лж \":\"1M39\",лже:\"0X021605181E\",лжен:\"1605181V\",\"лжен \":\"183D\",лжн:\"0X02181E\",\"лжны \":\"1820\",лжы:\"1732\",лжыр:\"1756\",\"лжыр \":\"175B\",лз:\"16071M0W\",лза:\"16031M14\",лзва:\"160T\",лзс:\"1M0S\",лзса:\"1M0V\",лзсан:\"1M1Q\",ли:\"0VCU0X6L167S18D319BS1L1Z1M1Q\",\"ли \":\"0VIN0XDL16I418FU19CA1M0T\",лиа:\"160618021M0L\",\"лиар \":\"1M1A\",лив:\"0V0G0X22161P181G193R\",\"лив \":\"0X19160T180C190G\",лива:\"0V0I0X0M160M180M190N\",\"лива \":\"0V0B0X0C1615180A190T\",ливи:\"0X07160C1911\",ливий:\"1913\",ливо:\"0X0I1606180E191J\",\"ливо \":\"0X0H160A180A191T\",лиз:\"0V0G0X0A161F180K190F\",лиза:\"0V04160T1805\",лий:\"160X180P190J1M1O\",\"лийг \":\"1M1A\",лийн:\"1M1D\",\"лийн \":\"1M2N\",лийс:\"1610180V\",лийск:\"1624181M\",лик:\"0V420X0X160I180N191A1L2M\",лика:\"0V0O0X0S160A1806190I1L4O\",\"лика \":\"0V120X0I160E1806190D1L1J\",ликас:\"1L3H\",лико:\"0V370X04180A1906\",\"лико \":\"0V7I\",лим:\"0V690X0F160H18071906\",\"лим \":\"0V70160D1904\",\"лиме \":\"0X0G\",лин:\"0V0A0X0Z160H180P190M\",линд:\"0X0R1802\",линда:\"0X0T1802\",лио:\"0V160X061608180A\",\"лио \":\"0V16\",липсв:\"161B\",лис:\"0V080X0M160C182G1930\",лиск:\"0X0H1902\",лиски:\"0X0E\",лись:\"182R1913\",\"лись \":\"1853191L\",лися:\"191L\",\"лися \":\"192B\",лит:\"0V110X0P161I1817190T\",лите:\"0V100X0T161H1809\",\"лите \":\"0V2E0X0R162W1806\",лиц:\"0V120X0Y160U181C190I1L0M\",лица:\"0V0B0X0J160J180A\",лициј:\"0V0T0X0C\",лич:\"0V0U0X19161A1813190G\",личн:\"0V0M0X14160N180P\",лично:\"0V170X0U160S180P\",лиш:\"0V120X1C160S181L192M\",\"лиш \":\"0V150X1D160Q1903\",лише:\"16031918\",\"лише \":\"191R\",лиши:\"18021914\",лишк:\"181H\",лишко:\"182R\",лиште:\"0X0C1902\",лищ:\"160W\",лище:\"160Z\",\"лище \":\"161R1802\",лия:\"160W180B1L0D\",\"лия \":\"160U180B\",лиј:\"0V0O0X0D\",лија:\"0V090X0H\",лк:\"0V020X1S1623170I180L190J1L0Q\",лка:\"0X0N161617141809190D\",\"лка \":\"0X0F160T170N1809190D\",лката:\"0X071614\",лке:\"18041L19\",лкен:\"1L28\",\"лкен \":\"1L30\",лко:\"0V030X08167718091908\",\"лко \":\"0X03164O1802\",лков:\"162L18021902\",лкова:\"165B\",лкот:\"0X021614\",лкото:\"0X02162C\",лку:\"0X5H170B180C190E\",\"лку \":\"0X73170J180H190C\",лл:\"1702180H19051L0D1M0V\",лла:\"180B1L0G1M15\",лм:\"0V030X0216041L4J\",лма:\"16031L7T\",лмады:\"1L2U\",лмай:\"1L5R\",лмайд:\"1L47\",лмайм:\"1L23\",лматы:\"1L2K\",лме:\"1L3U\",лмей:\"1L4F\",лмейд:\"1L40\",лн:\"0V0B0X0U1617180Q1M1G\",лна:\"0V040X0H161C1802\",\"лна \":\"0V050X0F160T1802\",лната:\"0X05161K\",лни:\"0V0B0X11161G180A\",лно:\"0V0D0X1G1622180E1M2D\",\"лно \":\"0V090X1R161Z18031M2O\",ло:\"0V3S0X27161W173918A2196P1L121M4L\",\"ло \":\"0V650X3B162E17421874194U\",лоб:\"0V0D0X0I1804\",лобо:\"0V0F0X0J\",лобод:\"0V110X0J\",лов:\"0V0O0X0L1611171U184E19221M0J\",лова:\"0V0B0X02171V181M190E\",\"лова \":\"0V08171Z1819190G\",лове:\"0V030X04160D1829\",ловек:\"183H\",лові:\"190U\",ловік:\"1911\",лог:\"0V0O0X091607170H180L190T1L1C\",логия:\"18031L2R\",лод:\"0V020X0316081719181G191S1L0G\",лодн:\"170V180O190T\",лож:\"0V0H0X0J161K170C182E\",ложе:\"0V050X08160I181D\",ложен:\"0V0C0X08160Y182B\",ложи:\"0V0F0X0A16101816\",\"ложи \":\"0X0716161807\",лом:\"0V0J0X03160317071811190E1M17\",ломж:\"1M1D\",ломжг:\"1M16\",лон:\"0V0K0X0D160O170Q180M190E1M1V\",\"лон \":\"0V050X02160318041M1V\",лоо:\"1M3C\",\"лоо \":\"1M27\",лос:\"0V0A0X0B1607170W183L192S\",лось:\"183C1905\",\"лось \":\"18641907\",лося:\"1717191P\",\"лося \":\"171T192H\",лот:\"0X13160W180G1908\",\"лот \":\"0X0R\",лото:\"0X0M160Y18061904\",\"лото \":\"0X0N162018041903\",лох:\"1706180R1M3F\",\"лох \":\"18021M2K\",лохг:\"1M0R\",лохгү:\"1M1I\",лош:\"0V0L0X0T160Q1806\",лошо:\"0X0H160F\",\"лошо \":\"0X0H160P\",лп:\"1L0E\",лс:\"0X041605182E1L0R1M25\",лса:\"1L0M1M0T\",лсан:\"1M0V\",\"лсан \":\"1M1E\",лсо:\"1M12\",лсон:\"1M19\",\"лсон \":\"1M27\",лсэ:\"1M2S\",лсэн:\"1M38\",\"лсэн \":\"1M5V\",лся:\"1853\",\"лся \":\"186V\",лт:\"0V040X061609170218051L2K1M36\",\"лт \":\"1L0G1M1H\",лта:\"0V030X07160A18041L0R1M2C\",лтай:\"1M1T\",\"лтай \":\"1M3I\",лтанд:\"1M16\",лтг:\"1M0O\",лтт:\"1L201M0T\",лтта:\"1M0V\",лттай:\"1M1Q\",лтты:\"1L3B\",лттық:\"1L3R\",лты:\"18021L1Y1M0H\",лтэ:\"1M1L\",лтэй:\"1M1N\",\"лтэй \":\"1M3B\",лу:\"0V1L0X231614171H183Y191F1L2L1M12\",\"лу \":\"0V1A0X0F1606170W180S190F1L1E\",лув:\"0X0U160I190E\",лува:\"0X11160H190H\",\"лува \":\"0X0I160F\",луд:\"0V080X0C160818041L0O\",луж:\"0V0B0X0B160H1707180C1903\",луй:\"181O\",луйс:\"1825\",луйст:\"183Z\",луп:\"0V0D0X0H160E180B\",лут:\"0V060X0I1902\",луу:\"1M2M\",\"луу \":\"1M1F\",луун:\"1M0P\",\"луун \":\"1M1A\",лух:\"1603171K1806190Q\",луха:\"1722190R\",луч:\"0V0U0X29161P170C183U1909\",лучи:\"0V0O0X1N1616181V1903\",\"лучи \":\"0V080X17161L\",лучил:\"0V0I0X0D160I18271902\",лучув:\"0X0H\",лучш:\"182F\",лучше:\"183N\",луш:\"0V0K0X17160I180V\",луша:\"0V0N0X10160K1813\",лушн:\"0X0K\",лушна:\"0X0J\",луы:\"1L2U\",\"луы \":\"1L2Q\",луын:\"1L21\",луына:\"1L2K\",луѓ:\"0X0W\",луѓе:\"0X16\",\"луѓе \":\"0X0O\",луѓет:\"0X0J\",луғ:\"1L1E\",луға:\"1L2M\",\"луға \":\"1L3R\",лф:\"0V02\",лх:\"1M0X\",лха:\"1M0Q\",лхи:\"1M0X\",лхий:\"1M0X\",лц:\"1M0K\",лч:\"0X0218051M09\",лш:\"1L0H\",лъ:\"160D\",лы:\"171A181D1LE61M0M\",\"лы \":\"171R180J1L8J\",лыг:\"1M0T\",\"лыг \":\"1M0Z\",лым:\"170I18061L2K\",лын:\"170D1L2G1M0Q\",\"лын \":\"1L0V1M0V\",лып:\"1L59\",\"лып \":\"1L84\",лыс:\"1L3X\",лыст:\"1L2A\",лысы:\"1L2O\",лысын:\"1L2A\",лыш:\"1817\",лыша:\"1819\",лышал:\"181U\",лығ:\"1L2X\",лығы:\"1L57\",\"лығы \":\"1L34\",лығын:\"1L3E\",лық:\"1LFD\",\"лық \":\"1LJM\",лықа:\"1L21\",лықар:\"1L2X\",лықт:\"1L4S\",лықта:\"1L3K\",лықты:\"1L3H\",ль:\"17781899195L1L0L1M10\",\"ль \":\"174T1827191C1M1E\",льз:\"170D1819\",льк:\"175S184X1935\",\"лька \":\"170P1913\",льки:\"1805192H\",\"льки \":\"193J\",лько:\"186E1904\",\"лько \":\"18BD\",лькі:\"178E1903\",\"лькі \":\"17C0\",льм:\"174F180H190F\",льмі:\"176Q\",\"льмі \":\"179U\",льн:\"1778186L193P\",льна:\"174Q180O190F\",\"льна \":\"172J180G190M\",льни:\"181C191M\",льний:\"1913\",льник:\"181J190G\",льно:\"184U191A\",\"льно \":\"186B191C\",льны:\"17381822\",\"льны \":\"1727180C\",льный:\"181I\",льні:\"173C190O\",льнік:\"1724\",льніц:\"171V\",льск:\"171Q180B\",льш:\"1728183Q192B\",\"льш \":\"17221906\",льше:\"183H1923\",\"льше \":\"18681930\",лэ:\"1M48\",лэг:\"1M1H\",\"лэг \":\"1M11\",лэн:\"1M19\",\"лэн \":\"1M15\",лэх:\"1M2R\",\"лэх \":\"1M1L\",лэхэ:\"1M0P\",лээ:\"1M3X\",\"лээ \":\"1M17\",\"лээж \":\"1M16\",лээр:\"1M0V\",лю:\"160M1735183N193Z1L05\",\"лю \":\"172M181L191W\",люб:\"160X1749183P192Y\",люби:\"160E182J191J\",любит:\"182G191I\",любл:\"1726181B191R\",люблю:\"17341821191D\",любі:\"1734\",любіц:\"172Y\",люд:\"172H181K191Q\",людз:\"173V\",людзе:\"172B\",людзі:\"172Y\",люди:\"180V191D\",\"люди \":\"181L190V\",людин:\"1915\",люч:\"161D170Y1810190N\",ля:\"162W175B1833193Z\",\"ля \":\"167U175H182R1933\",ляв:\"1614170I190A\",лява:\"1613170U\",ляд:\"16031742180S1910\",ляда:\"171Q190T\",лядз:\"173X\",лядзе:\"1736\",лядзі:\"172O\",ляе:\"172N180T\",\"ляе \":\"1724\",лям:\"1610170618091902\",\"ляма \":\"1611\",лят:\"160S170A180J1910\",ляц:\"171P\",ляць:\"171W\",\"ляць \":\"172U\",ляю:\"171D180F190G\",лё:\"1715180L\",лён:\"171Q180I\",лі:\"17BC19551L73\",\"лі \":\"17IP19281L40\",лів:\"1737190L\",ліва:\"173N1902\",ліг:\"170D19061L27\",лігі:\"170K19051L3X\",лігін:\"1L34\",лід:\"170C191A\",\"лід \":\"1913\",лій:\"1716190Y\",лійс:\"171U1910\",лійск:\"172R\",лійсь:\"191G\",лік:\"172O19141L5X\",\"лік \":\"170G19061L5X\",ліка:\"171Z190S\",лікар:\"1912\",лікт:\"1L4Z\",лікте:\"1L3X\",лікті:\"1L3E\",лікі:\"171T\",\"лікі \":\"171O\",лім:\"170619031L35\",\"лім \":\"1L2O\",лін:\"172B190E1L27\",ліп:\"170719061L1E\",\"ліп \":\"1L2A\",ліс:\"174V190H1L13\",ліст:\"172E1909\",ліся:\"174E\",\"ліся \":\"176J\",літ:\"170Y1911\",ліц:\"172K190E\",ліцы:\"171R\",\"ліць \":\"171O\",ліч:\"171M1903\",лії:\"1911\",\"лії \":\"1918\",лј:\"0X04\",лја:\"0X0D\",лғ:\"1L4C\",лға:\"1LA0\",лған:\"1LE5\",\"лған \":\"1LFM\",лғанд:\"1L2D\",лғаны:\"1L23\",лғы:\"1L1P\",лқ:\"1L0O\",лқы:\"1L1E\",лү:\"1M0Q\",лүү:\"1M1T\",\"лүү \":\"1M1H\",лө:\"1M1O\",лөв:\"1M0L\",лөг:\"1M0S\",лөгөө:\"1M16\",лөө:\"1M25\",\"лөө \":\"1M1N\",м:\"0VJM0XJ716G517B118GY19JY1LFJ1M9M\",\"м \":\"0VKV0XIP16CE17AS18LY19JG1LAP1M64\",\"м'\":\"1704190Q\",\"м'я\":\"1705191I\",\"м'ята\":\"190S\",\"м-\":\"18051L07\",мi:\"1L0K\",ма:\"0V7C0X62166717CI189U19D01LCX1M7N\",\"ма \":\"0VAP0X8R16A31788186Y198V1L3M\",маа:\"0X0I1M2I\",мааг:\"1M0R\",маагү:\"1M1I\",маар:\"1M0X\",\"маар \":\"1M1E\",маат:\"0X0L\",\"маат \":\"0X0M\",мабут:\"1910\",мав:\"0X0L160M170P191S\",\"мав \":\"0X0E191W\",маг:\"0V030X0L160J1758180I191D1L0D1M0N\",мага:\"0X0P160J171S180H191J1M0K\",магад:\"1M16\",магл:\"0X02171R\",магу:\"172Y\",\"магу \":\"173W1802\",магч:\"172J\",магчы:\"173S\",мад:\"0V02170Q180219061L1J\",мады:\"1L2Q\",\"мады \":\"1L2D\",мае:\"1742181X\",\"мае \":\"174E\",мает:\"181J\",\"маеш \":\"1724\",маешь:\"181X\",маж:\"0V050X0F17071803\",май:\"161A171H180A19131L501M4L\",майг:\"170Q1M56\",\"майг \":\"1MA1\",майд:\"1L4F\",майды:\"1L61\",майже:\"190X\",майк:\"161018021904\",майка:\"161S\",маймы:\"1L2U\",мал:\"0V1N0X2L163C174Z183A19241L3B\",\"мал \":\"0X0E1604181S1L0Q\",мала:\"0V0B0X081603173U180D190X1L2Q\",\"мала \":\"0V0S0X06172N180K1918\",малад:\"171W\",малар:\"1L2D\",малк:\"0X26162L\",малко:\"164Q\",малку:\"0X2A\",мална:\"1618\",мало:\"0V160X08170E180H190G\",\"мало \":\"0V2N0X06180P190J\",маль:\"171O180U1907\",\"маль \":\"171P\",мам:\"0V1W0X33163O170S180K190I1L12\",\"мам \":\"0V1N0X31163F170U1803\",маме:\"0X0X160L1803\",\"маме \":\"0X0Z16171806\",ман:\"0V0K0X0P160L172W181M190X1L361M1Y\",мана:\"170L18051M1X\",манай:\"1M3I\",манда:\"180719051L27\",мар:\"0V0N0X0J160U17371813190R1L181M5F\",\"мар \":\"170A1M2M\",марг:\"1M1N\",марга:\"1M33\",мари:\"0V0C0X06160G180W1M11\",март:\"18021M0R\",мары:\"171W1802\",мас:\"0V040X0F160G171A180E19061L4J\",масы:\"1L4S\",\"масы \":\"1L2A\",масын:\"1L2N\",мат:\"0V100X12162Q173X182C191Y1L3Q1M0H\",\"мат \":\"0X04160H1747180419021L10\",мата:\"0X0F1610\",\"мата \":\"0X0F1625\",мате:\"0V0N0X0J1618180U190A1L0Q\",\"мате \":\"0V120X051618\",мати:\"0V0B0X09160D180C191N\",\"мати \":\"0V0D191B\",матт:\"1L2H\",матта:\"1L2D\",мать:\"181H\",\"мать \":\"1826\",мац:\"0V050X031609171P18061904\",\"маць \":\"171P\",мач:\"0V0L0X0K1605170O1907\",мачк:\"0V0K0X0H\",мачка:\"0V0K0X0C\",маш:\"0V0P0X2K162D171N181L191Q1L0S1M4D\",\"маш \":\"0V0J0X1J16191M3P\",маше:\"0X1I16101802\",\"маше \":\"0X1I16241802\",маши:\"0V040X031604181U191Q1M1J\",машин:\"0V070X031608183D192I1M33\",машы:\"171Y\",машын:\"172Q\",маю:\"172B182H1935\",\"маю \":\"172Q18321935\",мая:\"171Y180D\",\"мая \":\"173B180H\",має:\"195T\",\"має \":\"1942\",маємо:\"190U\",маєт:\"1911\",маєте:\"1917\",маєш:\"191E\",\"маєш \":\"191X\",мај:\"0V120X0L\",мајк:\"0V0I0X0L\",мајка:\"0V0R0X0J\",маў:\"1748\",\"маў \":\"171V\",маўл:\"174F\",маўля:\"176E\",мағ:\"1L4N\",маға:\"1L75\",маған:\"1L9T\",мақ:\"1L3U\",мақса:\"1L2R\",мақт:\"1L2X\",мақта:\"1L3N\",маң:\"1L1N\",маңы:\"1L21\",маңыз:\"1L2D\",мб:\"0V020X0216021705180419041L0D1M09\",мбө:\"1M0L\",мбөг:\"1M0P\",мв:\"1702\",мг:\"1L091M0C\",мги:\"1M0L\",мгий:\"1M0P\",мгийн:\"1M1E\",мд:\"1L561M1K\",\"мд \":\"1M3A\",мда:\"1L4Q\",мдар:\"1L5N\",\"мдар \":\"1L3K\",мдары:\"1L23\",мде:\"0V0216021L2L\",мды:\"1L43\",\"мды \":\"1L51\",мдық:\"1L26\",\"мдық \":\"1L2N\",мді:\"1L39\",\"мді \":\"1L3O\",ме:\"0V5P0X8Z165O1741189P19D51LJD1M08\",\"ме \":\"0V5V0XHC16AI170N1814192C1L1J\",меа:\"0X0D\",мее:\"0X0U1607170Z180W\",\"мее \":\"0X0J170R\",\"меет \":\"181G\",\"мееш \":\"0X0D16061710\",мей:\"160E1708180619021L4B\",мейд:\"1L3R\",мейді:\"1L4A\",мейм:\"1L26\",меймі:\"1L2U\",мек:\"0V030X03180219021L2V\",мект:\"1L36\",мекте:\"1L4K\",\"мела \":\"0V09171K1804\",мем:\"0V0F0X03160519041L41\",мемл:\"1L71\",мемле:\"1L9W\",мен:\"0V350X3R163V172X18B119ET1LPG\",\"мен \":\"0V030X0S161O180B19071LSG\",мена:\"0V130X091608170J18091902\",\"мена \":\"0V2M0X04180D1902\",менде:\"1L2K\",мене:\"0V120X2A160R170C180E1978\",\"мене \":\"0V2P0X2B161F180319A7\",мени:\"0V0Z0X0K160E18281905\",\"мени \":\"0V1A0X0B160A182H\",мент:\"0V0C0X0O16111711180X190G\",меня:\"160918A4\",\"меня \":\"18GN\",мені:\"170E19AA1L9K\",\"мені \":\"19E81L2U\",менің:\"1LAD\",мер:\"0V2Q0X5O16551726182M19A71L1Z\",мери:\"0V2O0X6S164N180L190E\",\"мери \":\"0V5D0X6Y1684\",мері:\"19AA\",\"мері \":\"19EA\",мес:\"0V150X18161B173118211L6L\",\"мес \":\"1L6C\",месе:\"0V0G0X0D160M1L3V\",\"месе \":\"1L5F\",месец:\"0V110X0A1613\",мест:\"0V0T0X10160M170C1827\",месте:\"181V\",место:\"0V0W0X0T160G1817\",месц:\"1721\",месца:\"1726\",меся:\"172Q180L\",месяц:\"173W1812\",мет:\"0V110X1K161W170N1813190M1L5C\",\"мет \":\"0V030X081606180319021L34\",мета:\"0V0E0X0I1603170C18041903\",мето:\"0X0J160V18031902\",\"мето \":\"0X0J161Q\",метт:\"1L2Q\",\"мець \":\"171R1902\",меш:\"0V0K0X0J160B170M180I190I\",мејст:\"0X0C\",мж:\"1M14\",\"мж \":\"1M0L\",мжгүй:\"1M1A\",мжи:\"1M0O\",мжт:\"1M0L\",мжтой:\"1M16\",ми:\"0V520X5D1663184K196H1L1X1M2C\",\"ми \":\"0V6H0XAL16BU185X19AB1L0X\",мил:\"0V0E0X0K160G180Q191C1L0O\",мин:\"0V0J0X1I162M1815190L1L181M5E\",мина:\"0X13161Q180D\",\"мина \":\"0X0E160W\",минал:\"0X04161X1803\",минат:\"0X0D1803\",мини:\"0V030X02160O18071L0X1M5U\",миний:\"1MB9\",миним:\"16191806\",мину:\"0V0G0X0J160E180U190O1L0O\",минул:\"190W\",минут:\"0V110X0D160S181H\",мир:\"0V0T0X0V160W18131908\",\"мира \":\"0X031612180E\",мис:\"0V4J0X53167L18081909\",мисл:\"0V5B0X6G168A1902\",мисла:\"0V070X39\",мисле:\"0V0F0X1Q161W\",мисли:\"0VC70X1W163N1902\",мисля:\"16C1\",\"мица \":\"1612\",мк:\"1604170E1807190M1L11\",мкі:\"170J1L23\",мкін:\"1L3V\",\"мкін \":\"1L2K\",мкінд:\"1L2R\",мл:\"0V090X061607170H180C190E1L1I\",мла:\"0V0I0X0E160K1806\",млад:\"0V0H0X0H160M1808\",мле:\"0V070X06170H1808190H1L3V\",млек:\"0V070X071L71\",млеке:\"1L9W\",мм:\"18081L0A\",мн:\"0V130X1R161S1735187J191E1L1F1M0J\",мна:\"0V060X0G160E171I1812190V1L0D\",мнат:\"1819190S\",мне:\"0X09160D178518AE1902\",\"мне \":\"17CY18D21902\",мни:\"0V040X0C160E180N190F\",мно:\"0V2Q0X5F1665171418491917\",мног:\"0V2R0X6V166F170T1843\",много:\"0V6616CU186L\",многу:\"0X77\",мной:\"170V1818\",\"мной \":\"171B182A\",мною:\"190W\",\"мною \":\"1802191B\",мны:\"170M180C1L2E\",мның:\"1L4F\",\"мның \":\"1L6A\",мнө:\"1M0V\",\"мнө \":\"1M0Z\",мо:\"0V9T0X6S1650174C18C519CA1L0I1M0Q\",\"мо \":\"0VAL0X3416241709180Z194Q\",мов:\"0V130X061603173W1804193H\",мова:\"0V081727190J\",\"мова \":\"0V0I1727190L\",\"мове \":\"0V0D171O\",мови:\"0V030X05190V\",мовл:\"191C\",мовля:\"191V\",\"мову \":\"0V0N171M190H\",\"мовы \":\"172A\",мог:\"0V4B0X2X163Y1721185N193I\",\"мог \":\"0V06171J1823\",мога:\"0V19162N170J180L190F\",\"мога \":\"0V0A164W170L190I\",могао:\"0V2X\",могл:\"0V0T1607181B1919\",могла:\"0V12160B180Q190W\",могли:\"0V0Q181H190U\",могн:\"0V0T0X3V161H\",могна:\"0X1U161N\",могне:\"0V200X26161H\",могт:\"191G\",могти:\"1924\",могу:\"0V2B1716183M190C\",\"могу \":\"0V4V185T190F\",мое:\"0X0A160F181P\",мож:\"0V300X9F167S174S186G1989\",можа:\"0X2R160F175M\",\"можа \":\"160G174E\",можам:\"0X2Q170W\",можаш:\"172E\",можда:\"0V21\",може:\"0V2V0X9B167U186B1952\",\"може \":\"0V3A0X3L169U193K\",можеб:\"0X1W\",можев:\"0X0M\",можел:\"0X17\",можем:\"0V0T0X0W161W181M1911\",может:\"0V1B0X03161218791915\",можеш:\"0V240X29163H1834191W\",можл:\"1910\",можли:\"191G\",можн:\"0X0R160M172K182O191D\",можна:\"173N191V\",можно:\"0X0S161A184T\",можу:\"192N\",\"можу \":\"193H\",мой:\"1605172E182L\",\"мой \":\"16061740183I\",мол:\"0V1U0X2E162E1706181K1912\",мола:\"0X1L\",молам:\"0X1O\",моли:\"0V260X19160K18041903\",\"моли \":\"0V080X0M160D\",молив:\"0X0G1609\",молим:\"0V470X06\",моло:\"18141915\",молод:\"18151914\",моля:\"161U1802\",\"моля \":\"163W\",мом:\"0V120X0I161E170L18211928\",\"мом \":\"0V13182C192F\",момич:\"161G\",монго:\"1M16\",мор:\"0V2W0X3F160T170E180O190L\",мора:\"0V2T0X3K170B1804\",\"мора \":\"0V190X15170F1804\",морам:\"0V2E0X1M\",мораш:\"0V0R0X0M\",мос:\"0V030X041607180J1910\",\"мося \":\"1915\",мот:\"0V060X0Y160M170A18261909\",\"мот \":\"0X0U\",мотр:\"182Q\",мотре:\"182C\",мотри:\"1822\",моч:\"0X021811\",мочь:\"181B\",\"мочь \":\"182G\",мош:\"0X0R\",\"мош \":\"0X0T\",моя:\"161518101918\",\"моя \":\"160E181E191F\",моят:\"160W\",моята:\"161B\",мої:\"190Z\",мој:\"0V300X17\",\"мој \":\"0V1L0X0J\",моја:\"0V0P0X0M\",\"моја \":\"0V1S0X08\",мојат:\"0X0G\",\"моје \":\"0V1N\",мојо:\"0V050X0G\",мојот:\"0X0H\",моћ:\"0V0T\",мп:\"0V090X061607170D180I190F1L0S1M08\",мр:\"0V0J0X0J16091708180219061M07\",мра:\"0V050X0W160J\",мраз:\"0X10160I\",мраза:\"0X0I\",мрази:\"0X0C160C\",мре:\"0V040X0F16041903\",мрт:\"0V0B0X0B\",мс:\"0V021602170C180G19021L0I1M0A\",\"мся \":\"17111814\",мт:\"0V021L0H1M0Y\",\"мт \":\"1M0S\",мта:\"0X031L0P1M0X\",мтай:\"1M11\",\"мтай \":\"1M22\",му:\"0V1Z0X2H160Z17391869197N1L0F1M0T\",\"му \":\"0V4A0X7Z162W177Q18B919D6\",муз:\"0V0C0X0B160W170T180F190G\",муу:\"1M22\",\"муу \":\"1M0R\",муур:\"1M15\",\"муур \":\"1M1I\",мц:\"0V0217021902\",мч:\"0X0316031M09\",\"мч \":\"1M0L\",мш:\"1L0J\",мъ:\"160J\",мы:\"172D184E1L7L1M0O\",\"мы \":\"176T187O1L0N\",мыг:\"1M10\",\"мыг \":\"1M17\",мыз:\"1L3J\",\"мыз \":\"1L4Z\",мын:\"1L741M0Q\",\"мын \":\"1LAL1M0V\",мыс:\"1706180J1L6C\",\"мыс \":\"1L5I\",мыст:\"1L2Q\",мыста:\"1L2K\",мысы:\"1L2J\",мь:\"180B1M1K\",мьд:\"18021M37\",мьда:\"1M23\",мьдар:\"1M46\",мьдр:\"1M1L\",мьдра:\"1M37\",мьт:\"1M0Q\",мэ:\"170H182J1L0C1M4D\",мэг:\"1M1Y\",мэгт:\"1M25\",мэгтэ:\"1M4A\",мэд:\"1M6L\",мэдд:\"1M15\",мэддэ:\"1M2B\",мэдн:\"1M13\",мэднэ:\"1M27\",мэдэ:\"1M4T\",мэдэх:\"1M6L\",мэдээ:\"1M1Y\",мэн:\"1M0N\",мэнд:\"1M0R\",\"мэнд \":\"1M16\",мэр:\"1716185L1L0X1M0L\",мэри:\"187J1L1L\",\"мэри \":\"18D71L1C\",мэры:\"171X\",\"мэры \":\"172U\",мээ:\"1M12\",мю:\"1702\",мя:\"160B172U1816\",\"мя \":\"1603170Q1821\",мян:\"17701803\",мяне:\"17A4\",\"мяне \":\"17EE\",мяст:\"160V\",място:\"161U\",мё:\"17061807\",мі:\"1754195M1L4S\",\"мі \":\"17BE19181L17\",міг:\"191E\",\"міг \":\"191M\",міз:\"1L38\",\"міз \":\"1L3D\",мізд:\"1L26\",мізді:\"1L2H\",мій:\"191W\",\"мій \":\"1927\",міл:\"171E190I\",мін:\"171X19141L6C\",\"мін \":\"1L8H\",мінде:\"1L2N\",мір:\"170O190F1L1W\",міс:\"170I191Y1L0F\",міст:\"170N1913\",міє:\"1910\",мј:\"0X05\",мја:\"0X0E\",мљ:\"0V0A\",мњ:\"0V03\",мғ:\"1L0C\",мү:\"1L1B1M0E\",мүм:\"1L2D\",мүмк:\"1L4D\",мүмкі:\"1L5I\",мүү:\"1M0Z\",мүүс:\"1M15\",\"мүүс \":\"1M1U\",мұ:\"1L1R\",мұн:\"1L38\",мұнд:\"1L3D\",мұнда:\"1L4Q\",\"мұны \":\"1L27\",мә:\"1L1G\",мәден:\"1L2A\",мәс:\"1L1E\",мәсе:\"1L21\",мәсел:\"1L2X\",мө:\"1L051M10\",мөн:\"1M1T\",мөнг:\"1M1T\",мөнгө:\"1M3I\",н:\"0VHV0XIL16KR17HU18NA19NQ1LMO1MNF\",\"н \":\"0V4T0X4S164F175A189D196S1LSG1MNA\",\"н-\":\"1L0B\",нi:\"1L0V\",нiң:\"1L1X\",\"нiң \":\"1L3K\",на:\"0VCU0XEQ16FM17LY18M819LE1LCA1MFX\",\"на \":\"0VGF0XM816QH17RS18L519LP1LBB1MKV\",наа:\"0X0U17051M3C\",\"наа \":\"0X0P1M1X\",\"наар \":\"1M16\",наас:\"1M11\",\"наас \":\"1M1Y\",нав:\"0V0E0X3Q161J1768181H1946\",\"нав \":\"0X18191I\",нава:\"0V030X0U1611175718041902\",навал:\"0X021608171O1802\",нават:\"17341803\",нави:\"0V0A0X251605180N190X\",навид:\"0X0E180M1919\",навис:\"0X1O1804\",навме:\"0X0E\",навош:\"171S\",наві:\"171Z1917\",навіт:\"170M190R\",навіщ:\"190W\",наг:\"0V0A0X07161T173D1806190B1M0J\",нага:\"160H174N1904\",\"нага \":\"160X176A\",наги:\"161E\",\"наги \":\"162X\",над:\"0V0X0X1T161V172Q184S192F1L281M6X\",нада:\"0V0M0X04160H170E19051L261M6Y\",\"нада \":\"0V0H0X02160B1L27\",надаа:\"1M2J\",надад:\"1MAL\",надв:\"0X0K170N1907\",надво:\"0X0J170Z1906\",наде:\"0V020X10160C181O\",надев:\"0X0Q1803\",надею:\"181G\",надо:\"0X04183J1904\",\"надо \":\"185H\",надт:\"1719190V1M0M\",надта:\"171W1M1A\",надто:\"1919\",\"нады \":\"1L2N\",надяв:\"1616\",нае:\"0V050X3M162F173H1831\",\"нае \":\"0X1G160Y1755\",наев:\"0X0O\",\"наев \":\"0X0O\",наеме:\"0X0F\",нает:\"0X021609182M\",\"нает \":\"1836\",наете:\"160G181I\",наеш:\"0X1U160Y1816\",\"наеш \":\"0X1D161L\",наеше:\"0X0L160G\",наешь:\"1827\",наз:\"0V0B0X04160Y171H1812190I1L1D\",наза:\"0V040X04160A170M180K19041L28\",назар:\"1L37\",наи:\"0X02161E1806\",наис:\"161G\",наист:\"1632\",най:\"161T177U180X192Y1L1U1M3C\",\"най \":\"176S18021L101M23\",\"най-\":\"161T\",\"най-д\":\"161A\",найз:\"1M1D\",\"найз \":\"1M1I\",найл:\"172U\",найле:\"1747\",найом:\"190X\",нак:\"0V0N0X0J160V171Y181J190D\",\"нак \":\"0V0C0X041603172118031902\",нако:\"0V060X02181L1904\",наком:\"181W\",нал:\"0V0Z0X19163T171W182Z191T1L3X\",\"нал \":\"0X0U1615182B1903\",нала:\"0V0P0X031611170M180F190O1L2A\",\"нала \":\"0V120X03160Z170I180P190V\",налат:\"1614\",нали:\"0V0A0X02161H180S190H\",\"нали \":\"0V0I162H180X190G\",нам:\"0V3R0X4R1639173Y183D19371L1N1M2V\",\"нам \":\"0V3E0X5E161Y1742183C1921\",нама:\"0V0I0X021604170F190Y1L171M32\",намаг:\"1917\",намай:\"1M5Z\",наме:\"0V0A0X0M1619170D180D1904\",намер:\"0V0L0X0C162F170E180D\",\"нами \":\"181F190S\",нан:\"0V040X06160D170S180I190D1L4X\",\"нан \":\"1L7Q\",нао:\"0V170X0B160818021903\",\"нао \":\"0V16\",нап:\"0V1Z0X45165N1728181M19161L0G\",напи:\"0V0H0X0R160M1811190S\",напис:\"0V0R160U181G190X\",напиш:\"0V0D0X0P160A180B1907\",напр:\"0V0K0X42164M170P180J1905\",напра:\"0V0V0X40168T180J\",напіс:\"171X\",нар:\"0V0N0X0R161H1733180Y19161L131M14\",\"нар \":\"0V040X021L0O1M0V\",нара:\"0V030X06160F17221905\",нарад:\"172N1902\",наро:\"0V060X08160A171J180H190U\",народ:\"0V0F0X06160C1723180R1917\",нас:\"0V2Z0X1Y161I177F183M193U1L281M14\",\"нас \":\"0V270X0Y160P1734182Z191V1M0K\",насме:\"0V0R0X0D1802\",насп:\"0X021916\",наспр:\"191P\",наст:\"0V0V0X0J160F173P181719131L0O\",наста:\"0V240X09172V18071902\",насту:\"171R180A190Z\",насц:\"174Q\",насць:\"1732\",насці:\"172Q\",насы:\"1L2T\",\"насы \":\"1L20\",нат:\"0V0X0X4F165A170W182A191W1L1W\",\"нат \":\"0V060X0R160G18071902\",ната:\"0V020X3N164W170D180719051L10\",\"ната \":\"0V060X3H169U180B1907\",нате:\"0V0L0X0H180O\",натер:\"0V0B0X0I\",нати:\"0V080X0B16091802191G\",\"нати \":\"0V0F0X041607191N\",натре:\"0X0D\",нать:\"181A\",\"нать \":\"182A\",нау:\"0V0I0X0I160O180L19041L1I\",науч:\"0V0H0X0K160R180N\",научи:\"0V0Y0X0E160W1811\",нах:\"0V030X02161W171D180S190L\",\"нах \":\"1617170O18091907\",наход:\"172B181B190M\",нац:\"0V0C0X05160D171P18061904\",нач:\"0V0T0X0R161G172I182D190P\",нача:\"0X02160F171N181P190A\",начал:\"160I171E182L1906\",начи:\"0V0L0X0Q160T180Y1904\",\"начи \":\"0V0M0X0D160F\",наш:\"0V230X16160M172I18221912\",\"наш \":\"0V130X0R170W180F190B\",наю:\"170D182M192K\",\"наю \":\"170H1836192O\",ная:\"160C175T1826\",\"ная \":\"1607179L182Z\",нає:\"192Z\",\"нає \":\"191K\",наєте:\"190V\",наєш:\"190Y\",\"наєш \":\"191D\",нај:\"0V220X36\",најд:\"0X30\",најда:\"0X0S\",најде:\"0X1H\",најдо:\"0X0W\",нағ:\"1L1B\",нб:\"1L0V\",нв:\"18021L04\",нг:\"0V090X04160B170L180I190J1L1B1M3N\",нга:\"1602170818021M1E\",нгал:\"1M0X\",нгалт:\"1M1I\",нге:\"170918041L1X\",нген:\"1L28\",\"нген \":\"1L2H\",нги:\"1M0X\",нгл:\"0V0I0X0A160Z1719180Q190V1M19\",нгли:\"0X0C1613180Z1M1H\",\"нгли \":\"1M1Q\",нглиа:\"1M1A\",нглий:\"1624181K\",нглис:\"0X0C\",нглі:\"17211910\",нглій:\"172M191A\",нго:\"180219021M1C\",\"нгүй \":\"1M16\",нгө:\"1M3C\",\"нгө \":\"1M11\",нгөр:\"1M1B\",нгөрс:\"1M1E\",нд:\"0V0B0X0F160A170O180P190O1LGR1M78\",\"нд \":\"0V020X031605180219021MDF\",нда:\"0V0G0X0T160A170S180E19071LKS1M1M\",\"нда \":\"0V0B0X0X1607170M180719061LKB\",ндаа:\"1M1N\",\"ндаа \":\"1M37\",ндай:\"1L5I\",\"ндай \":\"1L5L\",ндал:\"18021L21\",ндар:\"0X0218031L6P\",\"ндар \":\"1L2A\",ндард:\"1L27\",ндары:\"1L4A\",ндағ:\"1L5R\",ндағы:\"1L7Q\",нде:\"0X08180619021LAL\",\"нде \":\"0X0218041LBH\",ндег:\"1L2D\",ндегі:\"1L3E\",ндер:\"1L28\",ндет:\"1L2Z\",ндетт:\"1L30\",ндо:\"0V030X051607180819081M0N\",\"ндоо \":\"1M1A\",нды:\"170G18031L9S\",\"нды \":\"18051L6I\",ндыр:\"1L2M\",ндығы:\"1L2N\",ндық:\"1L6G\",\"ндық \":\"1L3X\",ндықт:\"1L59\",ндэ:\"1M0T\",ндээ:\"1M0T\",\"ндээ \":\"1M16\",нді:\"190A1L5K\",\"нді \":\"19051L3V\",ндігі:\"1L27\",ндік:\"1L2D\",\"ндік \":\"1L2N\",ндір:\"1L2D\",ндө:\"1M0O\",не:\"0VA30XD416B417GC18O819KL1LAT\",\"не \":\"0VDY0XMN16OF17SG18SF19RE1LGG\",неа:\"0X15170E\",\"неа \":\"0X1G\",неб:\"0V080X081605171N180G1910\",небуд:\"171Z190O\",нев:\"0V0J0X11160M170N1813190J\",нег:\"0V160X21161P170K182O19061L27\",\"нег \":\"0V090X05170F1815\",него:\"0V0Z0X2J161S182D\",\"него \":\"0V2D0X1W16241846\",негов:\"0X0Q161Q1802\",негі:\"1L2H\",негіз:\"1L3K\",нед:\"0V1B0X0Z160O1715181L190Y1L0P\",неда:\"171Q18071902\",неде:\"0V170X0Z160K181B\",недел:\"0X11160U182G\",недељ:\"0V33\",неділ:\"190X\",нее:\"0X0216051814\",\"нее \":\"181H\",ней:\"160J172T181P1904\",\"ней \":\"17291825\",нейш:\"171T1805\",нек:\"0V2N0X2Z160B1715180I19031L0K\",нека:\"0V0Q0X10160B171R\",\"нека \":\"0V0N0X0F160M\",некак:\"0X0I\",некал:\"171L\",неко:\"0V1S0X2W180I\",\"неко \":\"0V26\",неког:\"0V0S0X0R1803\",некол:\"0V1I0X0M\",некој:\"0X19\",нел:\"0V040X0Q1604170D180Q19031L0M\",нели:\"0X0T\",\"нели \":\"0X0U\",нем:\"0V370X6I1615171H181U19241L33\",\"нем \":\"0V1B1610171N180F1905\",нема:\"0V1O0X6R170O1802191V\",\"нема \":\"0V1X0X4X190C\",немам:\"0V1F0X10\",немаш:\"0V0A0X0Z\",немає:\"192E\",неме:\"0X1B180L1L3V\",\"неме \":\"0X1D\",немес:\"1L5F\",немно:\"1821\",немој:\"0V150X0D\",нен:\"0V0I0X0G16261732181R192M1L3I\",\"нен \":\"160H170U1806190O1L5V\",нена:\"0V0L0X0G160I171R180S191A\",ненав:\"17121815191B\",ненад:\"0V0T0X0G160V1805\",нени:\"0X0216151814190G\",нение:\"161H180W\",неп:\"0V0D0X0H160C170U180U190Z\",нер:\"0V0H0X0G160F170V180K190J1L14\",нес:\"0V0Q0X2P161T170M181V190P1L0J\",\"нес \":\"0X14161A1802\",неса:\"0X0I1609\",несам:\"0X0I\",несе:\"0V040X0J160918021902\",неско:\"181U\",несув:\"0X0G\",нет:\"0V0E0X0Y162O1709183F190U1L0G\",\"нет \":\"0X0E18401904\",нете:\"0V070X09161918081906\",\"нете \":\"0V0I0X09162O18091902\",нето:\"0X0B161H\",\"нето \":\"0X081634\",неш:\"0V1U0X38161A1713180719051L0S\",\"неш \":\"0V0C0X1E161E1904\",нешт:\"0V1V0X2K171F\",нешта:\"1724\",нешто:\"0V4R0X2O\",нещ:\"163O1906\",неща:\"16121906\",\"неща \":\"161G\",нещо:\"1635\",\"нещо \":\"166J\",\"нея \":\"160R\",\"неё \":\"1819\",нећ:\"0V1A\",неће:\"0V10\",\"неће \":\"0V1R\",нж:\"170219021L06\",нз:\"0V020X0216031802\",ни:\"0V9Q0X6T168018GM19A61L2H1M99\",\"ни \":\"0V6I0X9D169U187C195P1L0P1M0J\",ниб:\"181U\",нибу:\"182I\",нибуд:\"184M\",нив:\"0V050X1K1609180B190T1L0Y\",\"нив \":\"0X1O190J\",нивер:\"0V090X03160F180B1L2K\",ниг:\"0X0S161J181I190F\",нига:\"0X0Q1613180G1905\",\"нига \":\"0X0F161N180S1907\",\"ниги \":\"0X09161A180V1905\",\"нигу \":\"181H190B\",ние:\"0X0Z165C18531L1W\",\"ние \":\"0X10164M18661L0O\",\"нием \":\"181G\",ниет:\"0X06161H1L1I\",нието:\"0X061635\",ниж:\"0X0216031807191E\",нижк:\"191B\",нижку:\"190X\",нии:\"1602181B\",\"нии \":\"181S\",ний:\"1811196V1MI9\",\"ний \":\"181F197Z1MDQ\",нийг:\"1M8U\",\"нийг \":\"1MGA\",нийх:\"1M0T\",\"нийх \":\"1M16\",ник:\"0V3U0X4M164V186G191Z1L0P\",\"ник \":\"0V0V0X1D160V181L1919\",ника:\"0V290X0I1614181A190B1L0O\",никад:\"0V4K0X03\",никак:\"0V0F0X0C161A1818\",нико:\"0V1F0X4C163C183Y1907\",\"нико \":\"0V2T\",никог:\"0V0F0X2F1650185M\",никой:\"161X\",никот:\"0X0R\",никој:\"0X1A\",никт:\"181C\",никто:\"182H\",нил:\"0V0E0X08160E181Q190O\",ним:\"0V1F0X0N16281846192A\",\"ним \":\"0V0Y1607181P1921\",нима:\"0V0E0X0K161X183B\",нимав:\"0X05161H\",нимае:\"181P\",нимал:\"1619180N\",нимат:\"0X08160R181E\",нимаю:\"181K\",\"ними \":\"1816190X\",нин:\"0V080X0D160D180919061M0N\",нио:\"0V0Q0X12\",ниот:\"0X1E\",\"ниот \":\"0X1H\",нир:\"0V0L0X0H160H180G1M0H\",нира:\"0V0P0X0M160G\",нис:\"0V4X0X07160K180G19041L0R1M0Q\",ниса:\"0V3S\",нисам:\"0V90\",\"ниси \":\"0V1W\",нисмо:\"0V1P\",нит:\"0V1J0X19162K182J1917\",ните:\"0V1G0X1F162H180V\",\"ните \":\"0V3O0X1E164S1818\",нити:\"0V0B0X041914\",\"нити \":\"0V0P1919\",нить:\"181W1908\",\"нить \":\"182T1906\",них:\"0V0F1607180S1919\",\"них \":\"0V0J16041812191H\",ниц:\"0V1O0X1N161C181B190S\",ница:\"0V0I0X16160S180I\",\"ница \":\"0V170X0R160V180U\",ницат:\"0X0G160S\",ници:\"0V0K0X11160R\",\"ници \":\"0V130X0N160Y\",ницит:\"0X0E160L\",нич:\"0V0G0X0I160A182G1903\",ниче:\"0V040X061605182S\",ничег:\"184M\",ниш:\"0V190X1V160C18071902\",ништ:\"0V1B0X27\",ништа:\"0V2Y0X03\",ништо:\"0X21\",нищ:\"161W1902\",нищо:\"1622\",\"нищо \":\"1647\",ния:\"163Q183N1L19\",\"ния \":\"162W184N\",ният:\"161E\",\"ният \":\"1621\",ниј:\"0V5K0X0I\",нија:\"0V090X0N\",\"нија \":\"0V0K0X0K\",није:\"0V62\",\"није \":\"0VDU\",нк:\"0V060X081609171B180T191D1L08\",нка:\"0V040X0J160E1728180J190S\",\"нка \":\"0V040X0D160C172J180O190U\",нку:\"0V04171D180D1918\",\"нку \":\"0V031723180F191D\",нн:\"1608174L183A193A1L1P1M0C\",нна:\"1609171X180M190C1L1N\",ннан:\"1L23\",\"ннан \":\"1L30\",нне:\"176018071L0I\",\"нне \":\"178O1802\",\"ннем \":\"1723\",нни:\"160B180K190R1M0Q\",ннис:\"18081M0T\",\"ннис \":\"180D1M1A\",нно:\"160F183C190C\",\"нно \":\"160D18281907\",нны:\"1719182I1L1Y\",\"нные \":\"181F\",нный:\"181D\",\"нный \":\"182K\",нның:\"1L3M\",\"нның \":\"1L56\",ння:\"175P194H\",\"ння \":\"178A194W\",нні:\"172I19111L0D\",\"нні \":\"1731190S\",но:\"0V7K0X701673172S18GF199H1L121M45\",\"но \":\"0VAQ0XD916EX171P18H9199U1M3M\",нов:\"0V2R0X1F162W172L183X192I1L0P\",нова:\"0V0V0X0G160P171P181A190A\",нове:\"0V080X03160R180B1905\",новен:\"0X031615180H\",нови:\"0V0P0X0M160O180Y190Y\",\"нови \":\"0V0P0X0C160G\",\"ново \":\"0V1I0X06161A18021902\",нову:\"0V05170I18081911\",\"нову \":\"0V0C191H\",новы:\"171W180S\",\"новы \":\"171S\",ног:\"0V310X5D165Q170M185319201M14\",ного:\"0V2I166F185I1923\",\"ного \":\"0V6516CR189D1930\",ногу:\"0X6U18051902\",\"ногу \":\"0X7518091904\",ное:\"1829\",\"ное \":\"1832\",ной:\"171B183H\",\"ной \":\"171M184R\",нок:\"0V020X0B180N191E\",\"нок \":\"0X04180O191J\",ном:\"0V1I0X02160D170C181W191D1L0U1M2R\",\"ном \":\"0V1N181K190O1M1T\",номик:\"18041L23\",\"ному \":\"180R190S\",номы:\"1M0T\",номыг:\"1M16\",ноо:\"1M0T\",нос:\"0V2C0X2G1637170U183A190M\",носи:\"0V0S0X0J160U180T1907\",\"носи \":\"0V0P0X0G160Y\",ност:\"0V1R0X2316231839190C\",\"ност \":\"0V200X1C162Y\",носта:\"0V0I0X0N1803\",ности:\"0V1N0X09160J182E\",ность:\"182S\",нот:\"0X1N161L170818061902\",\"нот \":\"0X1F\",ното:\"0X0Q161Q\",\"ното \":\"0X0R163O\",нох:\"1M1H\",нохо:\"1M1P\",нохой:\"1M33\",нощ:\"160W\",ною:\"191W\",\"ною \":\"1928\",ноќ:\"0X0F\",ноў:\"171H\",нр:\"1810\",нра:\"1828\",нрав:\"1831\",нрави:\"184W\",нс:\"0V0K0X0I161U17111813190S1L121M0S\",нск:\"0V0Q0X0Z166C1728180Y\",нски:\"0V0E0X0S166O180Q\",\"нски \":\"0V0W0X0L16BP180A\",нския:\"161X\",нсо:\"180319031M0Q\",нссо:\"1M0P\",нссон:\"1M1E\",нст:\"0V0E0X0K160R170U180Z190C1L0U\",нств:\"0V0B0X0O160Q171318111906\",нстве:\"0X0K160U1817\",нськ:\"190V\",нт:\"0V0U0X0N1612171A181Z191D1L251M1L\",\"нт \":\"0V0A0X08160X1713180R190K1L0W\",нта:\"0V0G0X0P161D171S180J190F1L0M1M1C\",\"нта \":\"0V050X04160W170V180A1903\",нтай:\"1M0V\",\"нтай \":\"1M1Q\",нте:\"0V0I0X0N160Z181A190C1L0F\",нтер:\"0V0H0X0O160X181K1906\",нтере:\"0V0N0X0K161T182H\",нти:\"0V0G0X0C160N180H190E\",нтт:\"1L1M\",нтэ:\"170P1M25\",нтэй:\"1M2I\",\"нтэй \":\"1M51\",ну:\"0V230X0Q160F173C184U194N1L101M0I\",\"ну \":\"0V3C173E182Y193S1L0Y\",нув:\"0X22160D1802192K\",\"нув \":\"1910\",нува:\"0X2Q160F191G\",\"нува \":\"0X16\",нувам:\"0X0I\",нувся:\"190W\",нуж:\"0X02160W182Y\",нужда:\"161E180C\",нужн:\"0X02160B183C\",нужно:\"0X02160J184K\",нул:\"0V0H172I181Z191B\",нула:\"0V0E172O180K190M\",\"нула \":\"0V101724180L190K\",нут:\"0V100X09160C170I181Q190V\",нути:\"0V030X061609190W\",\"нути \":\"0V080X06160J190W\",\"нуть \":\"181F1903\",нуу:\"1M0V\",нууд:\"1M0P\",\"нуць \":\"172F\",ную:\"1726180Z190F\",\"ную \":\"173I181A190C\",нуў:\"171T\",нуўся:\"1720\",нф:\"0V021602170318061903\",нх:\"1M15\",нха:\"1M0V\",нхаа:\"1M0R\",нц:\"0V0J0X0E160C1711181B191Q1L0H1M0W\",\"нц \":\"1M0X\",нца:\"170Y18091M0X\",нцаа:\"1M11\",нцаар:\"1M22\",нце:\"0V0I0X0I160E180R190D\",нци:\"0V080X07160Y180I1L0M\",нцу:\"0V0S0X0Q1605170Y1818191X1L0J\",нцуз:\"171C181J19281L10\",нцузс:\"171W182S\",нцузь:\"1935\",нцус:\"0V0V0X0S\",нцуск:\"0V280X0T\",нцы:\"171E1804\",нці:\"190Y\",нч:\"0V040X031603170K180H190G\",нчы:\"171S\",нш:\"170J190H1L2T1M0H\",нша:\"170Q19021L41\",\"нша \":\"19021L7A\",нши:\"190E1M0X\",нших:\"19061M0R\",нші:\"19061L2E\",\"нші \":\"19061L3M\",нщ:\"180A\",нъ:\"1608\",ны:\"177V18631LDB1M25\",\"ны \":\"17GN184G1L771M42\",ныг:\"1M1C\",\"ныг \":\"1M1L\",ные:\"182D\",\"ные \":\"1838\",ный:\"183R\",\"ный \":\"1854\",ным:\"174318231L2Q\",\"ным \":\"175K18281L0T\",нымен:\"1L2N\",\"нымі \":\"1723\",нын:\"18021L3E\",\"нын \":\"1L2D\",нында:\"1L2R\",ныс:\"1L2M\",ныст:\"1L2D\",нысты:\"1L30\",ных:\"172K181F\",\"ных \":\"174D181Y\",ныя:\"175K\",\"ныя \":\"1798\",нық:\"1L19\",ның:\"1LI5\",\"ның \":\"1LQ9\",нь:\"1718184519221M2W\",\"нь \":\"17341868191Z1M6U\",\"ньги \":\"181P\",ньо:\"1604191T\",ньог:\"191E\",нього:\"1920\",ньше:\"181D\",\"ньше \":\"182H\",нэ:\"17051MAU\",\"нэ \":\"1MFA\",нэг:\"1M40\",\"нэг \":\"1M38\",нэгэ:\"1M13\",нэгэн:\"1M27\",нэн:\"1M15\",нэний:\"1M16\",нэр:\"1M17\",нэрий:\"1M16\",нэх:\"1M27\",нэхэ:\"1M2K\",нэхээ:\"1M55\",нээ:\"1M30\",\"нээ \":\"1M1P\",нээс:\"1M17\",\"нээс \":\"1M22\",ню:\"170L180H190R\",\"ню \":\"1603171T180V190P\",ня:\"162X174Z1862193X\",\"ня \":\"1614177B189G195S\",няв:\"161F170B190B\",нява:\"161K\",няк:\"163G17061803\",някак:\"1616\",няко:\"1633\",няког:\"162E\",някой:\"161T\",някол:\"161G\",нял:\"1603170N18151907\",ням:\"165Z172Y1802190D\",няма:\"166M173Z\",\"няма \":\"169F175P\",нямам:\"162R\",нямаш:\"161C\",нят:\"160G170S181Z191G\",няти:\"180F190Z\",нять:\"181A1904\",\"нять \":\"181Y1904\",няў:\"171J\",\"няў \":\"171U\",нѐ:\"0X05\",\"нѐ \":\"0X0J\",нё:\"1707180H\",нє:\"1905\",ні:\"178Y19DK1L7X\",\"ні \":\"176F19GR1L5J\",ніг:\"172F190B\",\"ніга \":\"171O\",нігу:\"171W1902\",\"нігу \":\"172U1903\",ніж:\"171A1916\",\"ніж \":\"1713191B\",ній:\"190X\",\"ній \":\"1911\",нік:\"1785192K1L0D\",\"нік \":\"17551902\",ніка:\"172M\",ніко:\"174D192Q\",нікол:\"174T193B\",\"нікі \":\"171T\",ніл:\"171I1903\",ніла:\"171O1902\",нім:\"170P190V1L2I\",нін:\"170Q19061L2T\",\"нін \":\"1L2J\",нінде:\"1L20\",ніс:\"170W1917\",ніст:\"170P190S\",ніх:\"171D1912\",ніхт:\"17201915\",ніхто:\"1730191O\",ніц:\"174K\",ніца:\"172G\",\"ніца \":\"1728\",\"ніцы \":\"1720\",\"ніць \":\"1726\",ніч:\"172J191J\",нічо:\"172S191C\",нічог:\"1744191Y\",ніш:\"170I191G\",ніше:\"1912\",\"ніше \":\"191K\",нің:\"1LAE\",\"нің \":\"1LH2\",нғ:\"1L0Y\",нға:\"1L2C\",нған:\"1L2A\",\"нған \":\"1L2R\",нү:\"1M0F\",нүү:\"1M0L\",нұ:\"1L06\",нә:\"1L0P\",нәрсе:\"1L2K\",нө:\"1M1Z\",\"нө \":\"1M1V\",нөө:\"1M2C\",\"нөө \":\"1M0R\",нөөд:\"1M1P\",нөөдө:\"1M37\",о:\"0VRN0XR416PW17BF18SG19SG1LB21MF9\",\"о \":\"0VPV0XLY16II17B218SG19Q41L0D1M46\",\"о-\":\"0V02160T1703181S19041L05\",\"о-д\":\"160Z1802\",\"о-до\":\"160Z\",\"о-доб\":\"1622\",\"о-н\":\"1603170A18121903\",\"о-ни\":\"181A\",\"о-ниб\":\"182E\",\"о-т\":\"1606181G\",\"о-то\":\"1603181V\",\"о-то \":\"183G\",оа:\"0X32160618021903\",\"оа \":\"0XAA\",оаѓ:\"0X0D\",оаѓа:\"0X0I\",об:\"0V3Y0X3D164A171V189J19EK1L161M09\",\"об \":\"0X0316061705181O1935\",оба:\"0V240X2E160Y170A181D195K1L0N\",\"оба \":\"0V0F0X0I1605180D1904\",обак:\"1815191B\",обака:\"180W190U\",обар:\"0V0Q0X1A\",\"обар \":\"0V1S0X0V\",обара:\"0X0I\",обат:\"0X0L1902\",обата:\"0X0L\",обач:\"16061802191J\",обачи:\"191Q\",обає:\"192L\",обаєт:\"193L\",обе:\"0V1C0X12161E1822190B\",обед:\"0V0P0X0K160L180Z\",обеди:\"0V1M0X0F160F180O\",оби:\"0V1L0X25163F181P19A0\",обив:\"0X09192G\",\"обив \":\"0X06193K\",обид:\"0X13160418071909\",обиде:\"0X0H1808\",обиду:\"0X0D\",обил:\"0V0J0X061605180J191I\",обила:\"0V0K1802191F\",обили:\"1804190S\",обир:\"0X041816\",обира:\"0X0418271902\",обит:\"0X03180B1974\",обити:\"198M\",обить:\"1806191H\",обич:\"0V0J0X0I162Y\",обича:\"0V090X031664\",обичн:\"0V150X0G\",обл:\"0V0Q0X1F161T170D181E19231L1S\",обле:\"0V0M0X1M161T170G18171918\",облем:\"0V1L0X1116301823191L\",облеч:\"0X0C160N\",облы:\"1L2Q\",облыс:\"1L3X\",\"облю \":\"190R\",обо:\"0V190X0U160Q182T193F\",обод:\"0V0E0X0K160M180M1904\",обой:\"181S\",\"обой \":\"1835\",обот:\"191R\",оботу:\"191D\",обою:\"1916\",\"обою \":\"191Q\",обр:\"0V2P0X3S164V173P18251938\",обра:\"0V0U0X131612174N1822190R\",\"обра \":\"0V0X0X0K160V174U1802190I\",обре:\"0V030X0316391807191X\",\"обре \":\"0V08166K192S\",обри:\"0V0C0X0H160P1803190N\",\"обри \":\"0V0C0X0C160L\",обро:\"0V1Z0X32160F180A190B\",\"обро \":\"0V4C0X2Z160M1804\",обры:\"171O1807\",обу:\"0V190X0F1617170K180X191I\",обува:\"0X07190U\",общ:\"160X1814\",обще:\"160D1816\",\"общо \":\"1615\",объ:\"161E180O\",обър:\"161K\",\"обър \":\"1621\",обы:\"1708184O1L0D\",\"обы \":\"17091859\",обі:\"1712195L\",\"обі \":\"194S\",обј:\"0V0C0X0B\",објас:\"0V0K0X0E\",ов:\"0V7N0X5M166V173818D419BV1L0O1M0J\",\"ов \":\"0V0V0X3F160K184519221L0P1M0Q\",ова:\"0V5F0X6E16CX17571874192X\",\"ова \":\"0V1U0X6J16CZ174D181I191F\",оваа:\"0X0R\",\"оваа \":\"0X0S\",овал:\"0V0F0X021606182T1905\",\"овал \":\"182C\",ован:\"0V0F0X03160F181G1916\",овани:\"0X02160J1818190S\",овар:\"0V0I0X0R160K170B181A1904\",овара:\"0V1A0X0R\",овари:\"181P1905\",оват:\"0V0R0X0D160N182P1902\",овата:\"0X0C16191803\",овать:\"183Z\",овај:\"0V0Z\",\"овај \":\"0V2H\",овд:\"0V250X051902\",овде:\"0V2K0X07\",\"овде \":\"0V6G0X07\",ове:\"0V2V0X37165T1711184X1929\",\"ове \":\"0V1P1612171C18071909\",овек:\"0V0Q0X11161R181V\",\"овек \":\"0V1E0X0S162Z1828\",овер:\"0V0B0X0O160S182F191O\",оверн:\"180A191Y\",оверш:\"181D\",овеч:\"0V030X07161T18081904\",овече:\"163S180D1904\",овеќ:\"0X1B\",овеќе:\"0X1E\",ови:\"0V260X2S161V1820193T\",\"ови \":\"0V0Z0X1G160I1807190D\",овие:\"0X0K\",\"овие \":\"0X0M1802\",овий:\"1919\",\"овий \":\"191T\",овин:\"0V0H0X07160J180F191P\",овине:\"0V0H1809190S\",овинн:\"190X\",овит:\"0V090X0S160B1811190C\",овите:\"0V0F0X0S160N1808\",овл:\"0X05180B1918\",овля:\"191A\",\"овме \":\"0X0F\",овн:\"0V090X0G160O180L1914\",ово:\"0V6V0X3B166E188F195I\",\"ово \":\"0V400X0P160R180O190S\",овол:\"0X17160I180X190Z\",оволе:\"0X05160C180A190W\",оволн:\"0X0W160C\",оволь:\"181D1902\",овор:\"0V2G0X1G165T187V193L\",\"овор \":\"0V190X0F160I180C\",овори:\"0V440X0G167L18B9194E\",оворя:\"1630181F1908\",овој:\"0V070X0P\",\"овој \":\"0V0I0X0Q\",овољн:\"0V1L\",овр:\"0V0K0X0W160B180F\",овре:\"0V0I0X0M180H\",овред:\"0V0W0X0L1803\",овсем:\"181D\",овт:\"0X0I16071806190F1L0D\",овтор:\"0X0G1609180F1906\",ову:\"0V141717180U1920\",\"ову \":\"0V15171J180F191K\",овы:\"173V181E\",\"овы \":\"174O180C\",\"овыя \":\"171P\",ові:\"1715195B\",\"ові \":\"190W\",\"овів \":\"190Y\",овід:\"191F\",овіда:\"190R\",овір:\"191F\",ог:\"0V510X4H1640172618BF19AT1L0P1M3I\",\"ог \":\"0V3N0X0616071718181X19091M2K\",ога:\"0V2Z0X5J167F174D181F191E\",\"ога \":\"0V1U0X2Y165Z176R180D190O\",оган:\"0X02190T\",огао:\"0V15\",\"огао \":\"0V2X\",огат:\"0V0D0X0G162B180Q\",огато:\"163S1803\",огаш:\"0X42\",\"огаш \":\"0X4A\",огд:\"185M\",огда:\"187L\",\"огда \":\"18C4\",\"огда-\":\"181L\",оги:\"0V0C0X0616051818190H1L131M0J\",огиял:\"1L23\",огл:\"0V1G0X15160S170J181P191A1M1T\",огла:\"0V0I0X0L16061819190N\",\"огла \":\"0V12160B180Q190W\",оглас:\"0X0I181F\",огле:\"0V0V0X0X160N\",оглед:\"0V260X0Z161C\",\"огли \":\"0V0Q181H190T\",огло:\"0V03180819031M25\",оглох:\"1M1E\",огн:\"0V0P0X30161C18071904\",огна:\"0X1S160S1802\",\"огна \":\"0X0B1616\",огнам:\"0X15\",огне:\"0V0S0X22160P1802\",\"огне \":\"0V0Q0X0X160L\",огнем:\"0V0T0X0L160C\",огнеш:\"0V0D0X0O160H\",ого:\"0V2W0X15166N18B119GF1M1H\",\"ого \":\"0V2G0X0S166Z18C519FP\",огов:\"0V060X071608181K190U\",огово:\"0V070X06160G182Q1916\",огод:\"0V0S0X08180F192V\",огоди:\"0V1W0X051802190J\",огодн:\"0X021937\",огоо:\"1M13\",огр:\"0V0N0X0M160M1811190Y\",огра:\"0V0D0X0A160E18111911\",огс:\"1M0N\",огт:\"180219181M0T\",\"огт \":\"1M0T\",огти:\"1802191G\",\"огти \":\"18031923\",огу:\"0V230X5A17191834190P\",\"огу \":\"0V220X6T170P183K190L\",огүй:\"1M0P\",\"огүй \":\"1M1E\",од:\"0V5E0X5V162P173P18B119AB1L0S1M2Q\",\"од \":\"0V400X70160L1722181Q19071M1O\",ода:\"0V1N0X39162M171L183E19281L1U\",\"ода \":\"0V0C0X0P160R171A18211911\",одава:\"0X051613180J1904\",одам:\"0V020X1R170I1804\",\"одам \":\"0X1P170K1803\",одар:\"0X0P16141811190H1L0V\",одаря:\"161A1805\",одат:\"0V070X0J160B18061908\",одб:\"0V0A0X0E1802\",одв:\"0V070X0C1709180A\",одг:\"0V0U0X0V16061803\",одго:\"0V0Z0X1416071804\",одгов:\"0V2G0X12\",оде:\"0V1E0X1F160X181L190D\",одек:\"0X0G\",одека:\"0X0H\",оден:\"0X0M160O1807190B\",\"оден \":\"0X0E160Y180C190B\",одз:\"0X02174F1902\",одзе:\"0X02171U\",\"одзе \":\"172A\",одзі:\"174D\",одзіц:\"174B\",оди:\"0V390X401640186N195Y\",\"оди \":\"0V0I0X1Y160U180E190K\",одив:\"191E\",одиви:\"190S\",одил:\"0V0C0X041609181O190K\",одим:\"0V030X0U160D180H1905\",одиме:\"0X0W\",один:\"0V1J0X16161U1821192J\",\"один \":\"0V091607182S1919\",одина:\"0V1W0X0B1614180A190G\",одине:\"0V1N\",одини:\"0X0V162J190H\",одит:\"0V0M0X0D160Q184M191S\",\"одит \":\"182G\",одите:\"0V140X0E161J182N1902\",одити:\"0V0I1915\",одить:\"182M191F\",одиш:\"0V0A0X0U160G18061904\",\"одиш \":\"0X0U160Q1904\",одл:\"0V0X0X0P160318041902\",одлуч:\"0V1T0X08\",одм:\"0V0V0X0G1802\",одмах:\"0V1V\",одмор:\"0V0O0X0C\",одн:\"0V0Y0X1E160K173E185R194V\",одна:\"0V040X06160417351811190P\",\"одна \":\"0V0B0X031606171I1818190W\",одне:\"0V0F0X0R1803190D\",однес:\"0X0R\",одно:\"0V0H0X0Q160A182J191C\",\"одно \":\"0V0P0X0L160A181N190I\",одног:\"180V190U\",одны:\"171P180S\",одня:\"170L182Y1905\",\"одня \":\"170L184Q1907\",одні:\"170A192J\",\"одні \":\"193D\",одо:\"0V0B0X1W160T182F194S1M44\",одоб:\"0X14160G180C193K\",одоба:\"0X031953\",одобр:\"0X13160J1807\",одог:\"1M0P\",\"одог \":\"1M16\",одож:\"180N1M1D\",\"одож \":\"1M2R\",одол:\"0X0J180W\",одолж:\"0X0D181H\",одом:\"1808190Z\",одому:\"191D\",одоо:\"1M29\",\"одоо \":\"1M42\",одр:\"0V0N0X0L160B180J190V\",одру:\"0V03180D190X\",одруж:\"18051911\",оду:\"0V0K0X081603170P181L1914\",\"оду \":\"0V091717181A190J\",одълж:\"1616\",оді:\"1924\",одів:\"1914\",одіва:\"191K\",ое:\"0X0G160U170U18541903\",\"ое \":\"0X0H160F172V185C\",оего:\"181D\",\"оего \":\"182J\",оей:\"181H\",\"оей \":\"1820\",\"оему \":\"181J\",оет:\"0X0K162R18031902\",оето:\"0X0P1631\",\"оето \":\"0X0R166B\",ож:\"0V1K0X34162J172L187619571L041M17\",\"ож \":\"0V030X021808190B1M2X\",ожа:\"0V070X2H160T174C182J1905\",\"ожа \":\"0X02160H173D18061905\",ожал:\"0X03182S\",ожалу:\"0X021845\",ожам:\"0X2M170L\",\"ожам \":\"0X2R170W\",\"ожаш \":\"172E\",ожд:\"0V0O0X05160D170L181Q\",\"ожда \":\"0V201608\",оже:\"0V2R0X7H167R18751953\",\"оже \":\"0V1C0X3G164U181U192O\",ожеб:\"0X1T\",ожеби:\"0X1W\",ожев:\"0X0M190D\",\"ожев \":\"0X0I\",ожел:\"0X1516041803\",\"ожел \":\"0X0T\",ожем:\"0V0B0X0V160W180V190Q\",\"ожем \":\"161W181M\",ожеме:\"0X0W\",ожемо:\"0V0T1911\",ожен:\"0V0A0X0E160R181L1907\",ожени:\"0V0F0X0416121829\",ожет:\"0V0I0X03160K183Z190S\",\"ожет \":\"1859\",ожете:\"0V1B0X03161718281915\",ожеш:\"0V0T0X25161N181O191A\",\"ожеш \":\"0V240X1Q162R191W\",ожеше:\"0X0J160S\",ожешь:\"1834\",ожи:\"0V0J0X0G1613181R190H\",ожли:\"1910\",ожлив:\"191G\",ожн:\"0X0N160N173R182R1925\",ожна:\"173Q1803191D\",\"ожна \":\"17441803191Z\",ожно:\"0X0R160O1834190H\",\"ожно \":\"0X0P160T184R\",ожны:\"172B180B\",\"ожны \":\"172R1803\",ожу:\"0V040X04180D192G\",\"ожу \":\"180G192E\",оз:\"0V1N0X1B161E170P182Y194C1L0P\",оза:\"0V0C0X0I1606180E19061L0D\",озб:\"0V050X0B190F\",озв:\"0V0P0X0I160Q1707181J1910\",озво:\"0V0I0X0M160R181L190X\",озвол:\"0V120X0N161M1815191B\",озвон:\"181T\",озд:\"0V050X0B160F18161906\",озе:\"0X0C1604170K18061908\",ози:\"0V0T0X0H162S1806190T\",\"ози \":\"0V0A0X0B162V1902\",озм:\"0X08180U1912\",озмо:\"0X0A18131914\",озмов:\"191M\",озмож:\"0X0B1821\",озн:\"0V190X1K161C1715180S190S\",озна:\"0V1F0X1N1617170N180V190N\",ознав:\"0V070X0P16181802\",озо:\"0V0T0X0F160F18061902\",озп:\"1916\",озпо:\"1919\",озпов:\"191G\",озу:\"18021921\",озум:\"192C\",озумі:\"192O\",ои:\"0V020X0J160O182Z\",\"ои \":\"0X0R160Z181J\",оит:\"0X0Q161D181C\",оите:\"0X0Z160H1804\",\"оите \":\"0X101610\",оито:\"1612\",\"оито \":\"1629\",\"оих \":\"1813\",ой:\"163F172X1886190M1L3S1M3T\",\"ой \":\"16AK178V18E1190G1L0Y1M5L\",ойд:\"161W170Q18131L11\",ойде:\"161O1803\",\"ойде \":\"1627\",ойдзе:\"171T\",ойл:\"1L1D1M19\",ойла:\"1L2H\",ойлг:\"1M1F\",ойлго:\"1M2V\",ойн:\"160J170H180K190L1L121M0S\",\"ойно \":\"1807190Y\",ойр:\"1M0L\",ойт:\"161718151M0H\",ойти:\"181B\",\"ойти \":\"182D\",ойто:\"161B\",\"ойто \":\"162S\",ойы:\"1L5R\",ойын:\"1L6R\",ойынш:\"1L72\",ок:\"0V1V0X1D161G170X184J194C1L0N1M08\",\"ок \":\"0V0X0X17160D170Z18271933\",ока:\"0V0S0X1816271713182N191B\",\"ока \":\"0V080X061609170J181B190B\",окаж:\"0V0A0X0K160F180F190A\",оказ:\"0V0B0X06160G181C190G\",оказа:\"0V0K160O181Z190F\",окат:\"0V020X07160S18091908\",окато:\"161F18021902\",оки:\"0V060X06160J180U1916\",\"окля \":\"1614\",око:\"0V160X1I16171828190V1L0N\",окол:\"0V060X0O160M180I19061L0X\",околу:\"0X0G\",окот:\"0X0L\",\"окот \":\"0X0L\",окр:\"0V0J0X0F160B180Q190B\",оку:\"0V100X03160L170A180M1911\",окуша:\"0V1Q\",окі:\"170N1913\",оків:\"190U\",\"оків \":\"1918\",ол:\"0V4L0X4O164D174N18CJ197Z1LES1MB9\",\"ол \":\"0V060X0X160L1711180N190I1LD21MAT\",ола:\"0V1E0X2S1623171G180K190S1L9M\",\"ола \":\"0V0L0X0W1611170E180919061L1E\",олад:\"0V030X04170H180619051L51\",олады:\"1L5Y\",олам:\"0X1Q\",\"олам \":\"0X1T1802\",олар:\"0V060X0616091709190C1L8L\",\"олар \":\"1L78\",олард:\"1L3X\",олат:\"0X0L160N170D1L1I\",олата:\"0X0K161D170F\",олг:\"0X0M180T1M0V\",олго:\"0X0M180R1M0Z\",\"олго \":\"0X0K1816\",олд:\"180519021L5H1M1V\",олда:\"180419021L3O\",олдан:\"1L2H\",олдо:\"1M13\",олдог:\"1M1A\",олды:\"1L6N\",\"олды \":\"1L8A\",оле:\"0V200X27162C172P182C1913\",олей:\"171X18021902\",\"олей \":\"172V1802\",олем:\"0X17160A\",\"олем \":\"0X0E18021902\",олема:\"0X0G\",олен:\"0X0L160M170N180K190P\",\"олен \":\"0X0I160Y180M\",олж:\"0X0I18381L0E1M0Z\",\"олж \":\"1M11\",олже:\"0X02181V\",олжен:\"183G\",олжн:\"0X02181X\",олжны:\"1820\",олзв:\"160T\",олзва:\"161Q\",оли:\"0V7Q0X2A1620181V196J1L18\",\"оли \":\"0V1O0X14160S1808195C\",олив:\"0X0I160618031908\",\"олив \":\"0X0E1907\",олик:\"0V3018061903\",олико:\"0V7D1802\",олим:\"0V380X0816061802\",\"олим \":\"0V7R160C\",олис:\"1802190Y\",олись:\"191C\",олиц:\"0V0L0X0K160B180O19081L12\",олици:\"0V0W0X0E160B180Q1L19\",олк:\"0X4F165A180F1903\",олко:\"0X06165V1803\",\"олко \":\"0X021655\",олков:\"165D1803\",олкот:\"0X02162A\",олку:\"0X581804\",\"олку \":\"0X5G18071902\",олл:\"180H1L0J1M0V\",олм:\"18021L2E\",олма:\"1L42\",олмай:\"1L2H\",олн:\"0V060X1L160U181N1M2H\",олни:\"0V060X0K160K180D\",олно:\"0X111603180K1M2S\",\"олно \":\"0X0Z18061M5C\",оло:\"0V0O0X131613184L194L1L1B1M84\",олов:\"0V080X09160B1818191B1M0M\",олові:\"1915\",олог:\"0V050X031605180B190A1L2D\",ологи:\"0V0B0X021609180E1L2R\",олод:\"181R191Z\",олодн:\"18191917\",олом:\"0V03180719071M1F\",оломж:\"1M2R\",олон:\"0V02180519041M21\",\"олон \":\"18041M3M\",олоо:\"1M2K\",\"олоо \":\"1M2V\",олос:\"180W190Z\",олох:\"1M3A\",\"олох \":\"1M3U\",олохг:\"1M1I\",олс:\"0X06160618051L111M12\",олсо:\"1M19\",олсон:\"1M2J\",олт:\"0X0418061L0M1M0V\",олу:\"0V0V0X0N160U170F181N190F1L1E\",\"олу \":\"0V0P0X0K1606170O180N1908\",олуч:\"160K181B1904\",олучи:\"160Y181R\",\"олуы \":\"1L20\",олы:\"170A18081L51\",олып:\"1L4D\",\"олып \":\"1L64\",\"олық \":\"1L27\",оль:\"178G18AH19151M0L\",ольз:\"1814\",ольк:\"177V186L190C\",олько:\"18BE\",олькі:\"17AT\",ольн:\"1728181J1906\",ольш:\"173J184S\",\"ольш \":\"1733\",ольше:\"185X\",ольшо:\"181E\",оля:\"1632170F180C190F\",\"оля \":\"161Z170P18051904\",олям:\"1612\",оляма:\"161B\",олі:\"172S1926\",\"олі \":\"173Z190X\",олғ:\"1L2Z\",олға:\"1L55\",олған:\"1L6Q\",ом:\"0VBS0XBP166O173A18KG19NT1L3W1M48\",\"ом \":\"0VIU0XQ516IO175X18OQ19PQ1L4Z1M5T\",ома:\"0V5A0X2F160Z173Q186H198V1L0W\",\"ома \":\"0V5H0X1N16031748187C198W\",омаг:\"0X0N1609190D\",омага:\"0X0O160I190J\",оме:\"0V1P0X0P161C170G181Q1920\",\"оме \":\"0V191709180W1915\",омен:\"0V0J0X0K1613180L1909\",омент:\"0X0F1615180K1908\",омер:\"0V06160B180H190W\",\"омер \":\"160G180I190U\",омж:\"1M1A\",омжгү:\"1M16\",омжто:\"1M16\",оми:\"0V0M0X0U1619180V19221L16\",омика:\"18021L23\",омил:\"0V030X09180A191B\",омин:\"0X0H180B\",омисл:\"0V0E0X071612\",омиче:\"161H1803\",омн:\"0V030X0G160M170C182719061L0W\",омна:\"0X05181A\",омнат:\"182B\",омның:\"1L23\",омо:\"0V3J0X3U162C185A194Y\",омов:\"0V161802190D\",омог:\"0V150X3V161G181G1928\",омогн:\"0V230X421633\",омогт:\"191S\",\"омой \":\"181V\",омом:\"0V0T181U192D\",\"омом \":\"0V24183F193F\",омоч:\"181C\",омочь:\"182G\",омош:\"0X0W\",\"омош \":\"0X0V\",ому:\"0V2K0X0D1716185C19C3\",\"ому \":\"0V2Z0X0E171Z187319DS\",омы:\"170F180E1M1G\",омыг:\"1M13\",\"омыг \":\"1M27\",\"омын \":\"1M1A\",омі:\"170A1915\",он:\"0V4X0X2D161I172O18EA198D1L5L1M6C\",\"он \":\"0V500X3B1611171E18C6191E1L141M6A\",она:\"0V3J0X13161B1719187O196X1L0R\",\"она \":\"0V360X0Q160Q170S189G1975\",онг:\"18021M1G\",онго:\"1M1J\",онгол:\"1M16\",онд:\"0V080X071607180719081L291M25\",\"онд \":\"1M1T\",онда:\"0V081L32\",ондай:\"1L2D\",ондо:\"0X031606180519071M0R\",ондоо:\"1M1A\",оне:\"0V180X1G1613170M1823190U\",\"оне \":\"0V0D1606170D18181905\",онеде:\"0V1N0X08160A180Q\",онес:\"0V070X11160D1802\",они:\"0V1M0X0U160Z186A193M1L0G1M1G\",\"они \":\"0V130X0C160E1859193X\",оним:\"0V04181D\",онима:\"182G\",онин:\"1M0P\",онирх:\"1M16\",оно:\"0V1J0X0O1609180X190T1L0Y1M28\",\"оно \":\"0V0N180G190D1M0X\",оног:\"0V041M11\",ономи:\"1608180C1L23\",\"онот \":\"0X0G\",онс:\"0V070X091609170K180E190C1L0N1M1O\",онсо:\"1M0V\",онсс:\"1M0P\",онссо:\"1M1E\",онт:\"0V090X0B160A180K190C\",ону:\"0V0L0X0A170H180E191K\",онув:\"0X05190V\",онува:\"0X061918\",онц:\"0V050X0C1606170V180K190D\",оны:\"170N180C1L7Q1M10\",\"оны \":\"170S180F1L4Z1M0X\",оның:\"1L86\",\"оның \":\"1LB9\",оня:\"160B18121906\",оні:\"1710191Y\",\"оні \":\"191L\",оо:\"0X09180M19081M52\",\"оо \":\"1M63\",ооб:\"0X041812190B\",ообще:\"181I\",оог:\"1M0Q\",оогү:\"1M0P\",оогүй:\"1M1E\",оод:\"0X061M0N\",\"оод \":\"1M0P\",оол:\"0X021M1C\",оон:\"1M0N\",ооп:\"0X0J18031903\",оопш:\"0X0P\",оопшт:\"0X0R\",оор:\"18021M1O\",\"оор \":\"1M1P\",оос:\"1M17\",\"оос \":\"1M15\",оп:\"0V1M0X1I1614170T183B193A1L0R\",опа:\"0V0V0X20160R1707181A190B1L11\",опад:\"0V0C0X0L16041806\",опадн:\"0X0K\",опасн:\"0V0M0X0D160M1814\",опаѓ:\"0X15\",опаѓа:\"0X18\",опи:\"0V0N0X0F161N180I190B\",опит:\"0X03161N18061903\",опита:\"16251802\",опл:\"0V080X0F160E17061809190C\",опо:\"0V0B0X091604180X193O\",опом:\"193D\",опомо:\"193W\",опр:\"0V0N0X0P160Y182P190U\",оправ:\"0V0J0X0F161A180J\",опро:\"0V081831190W\",опрос:\"0V0H184A1914\",опу:\"0V0D0X0D160D180H1909\",опушт:\"0X0C\",опш:\"0V0C0X0O\",општ:\"0V0E0X0V\",општо:\"0X0Q\",ор:\"0V4B0X4G163S172Y18AM197F1L5K1M3W\",\"ор \":\"0V170X1U160W170K181E190O1L0W1M1W\",ора:\"0V3S0X59162P173U1820192A1L1C\",\"ора \":\"0V0W0X1A161C172N180W191J\",орав:\"0V0Q0X16\",орави:\"0V1J0X0L\",орад:\"0X06171Z1802190F\",орам:\"0V0Y0X1S170B1802\",\"орам \":\"0V1Q0X1D\",ораме:\"0X0J\",оран:\"0V0G0X0V1608180H190D\",орано:\"0X0O\",ората:\"1617\",ораш:\"0V0B0X0L\",\"ораш \":\"0V0R0X0H\",орган:\"0V080X031608180A19061L23\",оре:\"0V120X1K162C1811190C\",орен:\"0V0D0X0V160V18061904\",\"орен \":\"0V060X0I160X\",орж:\"18031M0S\",\"орж \":\"1M0V\",ори:\"0V3M0X2H165K185Y19401L0E1M0J\",\"ори \":\"0V120X1B1636180D190D\",орил:\"0V0C0X071608181X190B\",\"орил \":\"0X0516081824\",\"орим \":\"0V0T161B180E1902\",орис:\"0V0O0X0R1802190T\",орист:\"0V1F0X0M18031910\",орит:\"0V0K0X04160J184C1929\",\"орит \":\"182W\",орити:\"0V0H191Z\",орить:\"184B1912\",\"ориш \":\"0V0D0X07161L190C\",орм:\"0V090X0C160I170H180S190G1L0D\",орн:\"0V0D0X0O16081710180B190H1L1S\",орно:\"0V0A0X0K18061903\",\"орно \":\"0V0L0X0I1804\",оро:\"0V0Z0X1D160R187T193O1M3R\",\"оро \":\"0V0T0X0J160M180I190B\",орог:\"1817190O\",ород:\"0V090X031604181E1906\",орой:\"180F1M1F\",\"орой \":\"180R1M1E\",ороо:\"1M17\",\"ороо \":\"1M1Q\",орот:\"0X0R180F1909\",\"орот \":\"0X0S1807\",орош:\"18391907\",ороши:\"181G1904\",орошо:\"1832\",орт:\"0V070X0E160P170B180Y190U1L2P\",орта:\"0X071607180719021L2T\",ору:\"0V0Q0X2F170C180O190Z\",орув:\"0X2X1903\",орува:\"0X331905\",оръ:\"160T\",\"орът \":\"1614\",оры:\"172K181I1L3P\",\"орые \":\"181J\",орын:\"1L46\",орынд:\"1L44\",оря:\"161L1818190F\",\"оря \":\"161E18081902\",орі:\"191O\",орғ:\"1L1N\",орға:\"1L32\",ос:\"0V4V0X3Y163O172418CB197Z1L3U1M16\",\"ос \":\"0V0C0X04160L180Y19071L0U1M15\",оса:\"0V170X0W1619170G180G19061L0W\",\"оса \":\"0V030X06160R18071902\",\"осао \":\"0V22\",осв:\"0V050X0E160G17061808190A\",осе:\"0V1B0X1I1613170D180U1905\",осет:\"0V0J0X0G160E1806\",осећа:\"0V1S\",оси:\"0V0X0X0O161C18371922\",\"оси \":\"0V0B0X0H160T18071903\",\"осив \":\"190U\",осил:\"0V040X02181X190F\",\"осил \":\"182F\",осит:\"1607181L190T\",осить:\"181S190T\",осл:\"0V1Y0X18161A1828190M\",осле:\"0V1A0X0X16171826\",\"осле \":\"0V1O0X0D160I181P\",ослед:\"0V1G0X0L16211826\",осмо:\"1815\",осмот:\"1820\",осн:\"0V070X0B160D170B180G1907\",осо:\"0V0A0X0F160D181B190K1M0S\",ост:\"0V6V0X8F1688172C18D5196B1L2J\",\"ост \":\"0V180X1J161R170D1808\",оста:\"0V3U0X53163X172M185R191I1L3I\",\"оста \":\"0V0P0X181621172N18091904\",остав:\"0V2U0X1T162Q1843190I\",остал:\"0V14181O\",остан:\"0V2R0X1V162F170W1821190R1L44\",остат:\"0V0I0X02161B1825190R\",ости:\"0V1D0X0W160T183D1908\",\"ости \":\"0V2F0X0F160X184G\",осто:\"0V1Q0X3V1616185F193U\",\"осто \":\"0X0F1620183J1926\",остон:\"0V2E0X2U183H193B\",остој:\"0V1S0X0D\",остта:\"1619\",остъ:\"160V\",остън:\"161E\",ость:\"182F\",\"ость \":\"183L\",ості:\"1915\",\"ості \":\"1912\",осы:\"1707180J1L4U\",\"осы \":\"180K1L48\",ось:\"1721182N1934\",\"ось \":\"171N183F193J\",осьці:\"1728\",ося:\"1605170S1805192A\",\"ося \":\"16041717192G\",от:\"0V2G0X78167J171318CY196A1L2K1M0R\",\"от \":\"0V0H0XCM168N170P1860190A1L0I1M0J\",ота:\"0V0U0X1X1627170Q1828190O1L16\",\"ота \":\"0V0H0X1K161U170O180R190M\",\"отам \":\"0X0C1802\",отат:\"0X0J160K180L\",отата:\"0X0I1617\",отв:\"0V0P0X13161J181N1905\",отве:\"0X041607181V\",ответ:\"182G\",отво:\"0V0P0X0R160S18051905\",отвор:\"0V1T0X0S161O18091908\",отг:\"160U1802\",отго:\"160W\",отгов:\"161U1802\",оте:\"0V0I0X0V160U184H190K\",отел:\"0V050X08160C183P1908\",\"отел \":\"0X04160B184M\",отеря:\"181D\",\"отец \":\"181G\",оти:\"0V1A0X2Z164J18201917\",\"оти \":\"0X1C160V190V\",отив:\"0V0B0X0M1616180R1903\",отива:\"161E\",отид:\"0X11162G\",отида:\"0X02161Z\",отиде:\"0X0O162O\",отидо:\"0X0D160M\",отит:\"0X07181A\",отите:\"0X081822\",отк:\"0V0L0X16162O170L181Z1908\",отка:\"0V0G0X0Y161J170H180L1902\",откаж:\"0X0H160J1803\",отказ:\"0V0M0X07161M180W\",откр:\"0V040X0A160N1819\",откры:\"181Y\",отн:\"0V040X0A161B170S18111908\",отно:\"0X04160W180R1905\",отнов:\"1611\",ото:\"0V0I0X3Q168H1850191P1L0F1M0Z\",\"ото \":\"0X3M168K18061906\",отов:\"0V070X0E160C181L190T\",отом:\"0V0218161903\",отор:\"0V030X02182Z1902\",оторо:\"181J\",оторы:\"1832\",отот:\"0X0I\",\"отот \":\"0X0J\",отп:\"0V0W0X0M160C180Q\",отр:\"0V120X0Q160B182Q193T\",отре:\"0V0S0X0J1605181M190A\",отреб:\"0V1V0X0H1608180G190F\",отри:\"1817190U\",отрим:\"18091917\",отрі:\"1936\",отріб:\"194B\",отс:\"0V020X0K160C180K\",отсе:\"0X0G\",оту:\"0V070X0E1604170H180Y191I\",\"оту \":\"0V07170T18171911\",отуку:\"0X0D\",оты:\"170X180I1L3R\",отыр:\"1L64\",\"отыр \":\"1L2A\",отыры:\"1L2U\",оті:\"193K\",отів:\"192M\",\"отів \":\"193P\",отіл:\"191A\",отіла:\"191C\",оу:\"0V030X03160218051902\",оф:\"0V050X0416091704180I190B1L07\",ох:\"0V050X02160A17071817191D1M3F\",\"ох \":\"0V06160O17081803190G1M2U\",оха:\"160A18041911\",охг:\"1M15\",охгү:\"1M1D\",охгүй:\"1M2R\",охи:\"180519141M1Y\",\"охи \":\"191A\",охин:\"1M0R\",охио:\"1M0Z\",охиол:\"1M1I\",охо:\"0V030X041606181Q190A1M20\",охой:\"18051M1J\",\"охой \":\"18091M1Q\",охы:\"1M0S\",охыг:\"1M0X\",\"охыг \":\"1M1U\",оц:\"0V070X0D1605170F180C190H1M09\",оци:\"0V030X0C160918071902\",оцн:\"0X0R170I\",оцна:\"0X0O170I\",\"оцна \":\"0X0L170H\",оч:\"0V1B0X14161C1716187U19551M09\",оча:\"0V0C0X0E160Q17291809190W\",\"очаш \":\"1726\",оче:\"0V1K0X0Y160V1898194C\",\"оче \":\"0V031802191Y\",очек:\"0V110X0Y1805190E\",очека:\"0X0E190K\",очеки:\"0V21\",очеку:\"0V0L0X0M\",очем:\"183N1909\",очему:\"186L\",очен:\"0X0418511902\",очень:\"188Y\",очет:\"0V0B0X04160F1827190X\",\"очет \":\"183G\",очете:\"160D1916\",очеш:\"181M191E\",\"очеш \":\"1920\",очешь:\"1830\",очи:\"0V1I0X1C161O18131915\",очит:\"0V0N0X0U160L180N190M\",очита:\"0V1J0X0F160R1810190Q\",очн:\"0V0C0X18161I170G181B190C\",очна:\"0X0P160Q170C1802\",\"очна \":\"0X0H160Y\",очно:\"0X0D160K181C1905\",\"очно \":\"0X0E161718211907\",\"очти \":\"1613181G\",очу:\"0X061607182N193D\",\"очу \":\"183D192R\",очь:\"181Q\",\"очь \":\"1820\",очі:\"190Y\",ош:\"0V1O0X1I160B170X1833191G1L05\",\"ош \":\"0V1I0X0Q16021802\",\"ошао \":\"0V1M\",оше:\"0V0I0X061607180X190X\",\"ошей \":\"18051914\",оши:\"0V080X0A1604181C1906\",ошл:\"0V0U0X031603181N\",ошло:\"0V0E181C\",ошо:\"0X0I160D1817\",\"ошо \":\"0X0G160C181N\",ошт:\"0V0P0X3A170U190J\",\"ошта \":\"0V0E0X03171Z\",ошто:\"0V060X3W1906\",\"ошто \":\"0V090X44\",\"ошёл \":\"181J\",\"оші \":\"190T\",ощ:\"160Y180M190E\",\"ощ \":\"160W190B\",още:\"162L180A\",\"още \":\"162T1804\",оэ:\"17021807\",ою:\"1704180V19441L051M09\",\"ою \":\"170F181H198C\",оюу:\"1M0N\",оюут:\"1M0P\",оя:\"16161702181J19181L08\",\"оя \":\"161F181I191W\",оят:\"162Y180M1904\",оята:\"1616\",\"оята \":\"162I\",оято:\"1611\",\"оято \":\"1627\",оё:\"180O1M0K\",оёр:\"1M0V\",\"оёр \":\"1M0R\",ођ:\"0V0L\",ође:\"0V15\",оє:\"1914\",\"оє \":\"1914\",\"оєму \":\"190R\",оі:\"1707\",ої:\"1932\",\"ої \":\"1933\",оїх:\"191G\",оїха:\"1916\",оїхат:\"190S\",ој:\"0V4Y0X3X\",\"ој \":\"0V4A0X7I\",оја:\"0V1P0X33\",\"оја \":\"0V1L0X17\",ојат:\"0X26\",ојата:\"0X1K\",ојатн:\"0X0M\",ојд:\"0X1U\",ојде:\"0X1K\",\"ојде \":\"0X16\",оје:\"0V2U\",\"оје \":\"0V2X\",оји:\"0V3A\",\"оји \":\"0V2I\",ојим:\"0V0W\",\"ојим \":\"0V23\",ојк:\"0V090X0L\",ојка:\"0V060X0N\",\"ојка \":\"0V0D0X0I\",ојн:\"0V030X0B\",ојо:\"0V0I0X0Z\",ојот:\"0X1A\",\"ојот \":\"0X1C\",оју:\"0V160X04\",\"оју \":\"0V1E\",ољ:\"0V10\",оље:\"0V12\",\"оље \":\"0V15\",оњ:\"0V030X02\",оћ:\"0V1O\",оће:\"0V1Y\",\"оће \":\"0V1P\",оћи:\"0V0V\",\"оћи \":\"0V0Z\",оћу:\"0V16\",\"оћу \":\"0V1F\",оќ:\"0X05\",оў:\"174D\",\"оў \":\"176B\",оўва:\"1720\",оўн:\"174G\",оўна:\"173B\",\"оўна \":\"171S\",оўны:\"171X\",оўні:\"171Y\",оўнік:\"171R\",оғ:\"1L2M\",оға:\"1L5N\",оғам:\"1L2Q\",оғамд:\"1L2N\",оған:\"1L3B\",\"оған \":\"1L4N\",оғар:\"1L2Q\",оғары:\"1L3R\",оғы:\"1L1K\",оқ:\"1L3G\",\"оқ \":\"1L48\",оқы:\"1L1J\",оң:\"1L14\",п:\"0VAP0X9B16A6178W18BR19D01L691M0G\",\"п \":\"0V060X0416041704180619051LAX\",\"п'\":\"1708190N\",\"п-\":\"1L08\",пi:\"1L05\",па:\"0V300X2X161Z17EU183M192W1L5B1M0E\",\"па \":\"0V0U0X12160J173G180C19051L16\",\"па-\":\"171U\",пав:\"0V0Y0X0C160717481803190E1L0R\",пава:\"0V150X03170U\",павя:\"1723\",павяр:\"171W\",паві:\"171V\",павін:\"172Q\",паг:\"0X02171P18021902\",пагля:\"171S\",пад:\"0V150X10160S179K180H190H1L0N\",пада:\"0V14160A176X180B1905\",\"пада \":\"0V1O160C1802\",падаб:\"176A\",падар:\"172Y\",падз:\"1720\",падзя:\"1728\",падн:\"0V050X17160K170O\",падна:\"0X0Y1610\",паеха:\"171M\",паз:\"0V070X0C160O17221806\",пазн:\"1728\",пай:\"1603171Y180319031L38\",пайд:\"170K1L3O\",пайда:\"1L4K\",пайш:\"171R\",пак:\"0V0D0X13160M175518031904\",\"пак \":\"0V040X15160J\",пака:\"1724\",пако:\"0V040X02172W1802\",пакой:\"172A\",пакул:\"171R\",пал:\"0V0M0X0G16121736181F190Z1L0S\",палто:\"0X03161K\",палі:\"17211902\",пам:\"0V0L0X0V1606174X1807190M\",\"пам \":\"0X0K\",\"пам'я\":\"1910\",пама:\"171U\",памаг:\"1720\",памет:\"0V100X0E1609\",памы:\"171O\",памыл:\"1723\",пан:\"0V0P0X0H160W171S180K190R1L201M0J\",пап:\"0V050X03171H18071905\",пар:\"0V110X1Q162D1749181H191G1L3E\",пара:\"0V0A0X06160I1731180C190L1L2J\",парат:\"0V060X021611180919091L2K\",пари:\"0V040X1H161C180A1906\",\"пари \":\"0X11161X1802\",парит:\"0X0D160R\",парт:\"0V040X03160F1728180619041L0O\",парту:\"171V\",пас:\"0V0X0X0N160O173X181M190C1L0P\",пасл:\"171Y1802\",пасля:\"1720\",пат:\"0V070X1I160A173N180V190N1L0T\",\"пат \":\"0X0N\",\"пата \":\"0X0D160F\",\"пати \":\"0X0A190S\",патр:\"173Z1802\",патрэ:\"1750\",\"пать \":\"181N\",пац:\"0V020X021604172518031904\",паца:\"171T\",пацал:\"172Q\",пач:\"0X02173S1802\",пача:\"172W\",паѓ:\"0X13\",паѓа:\"0X1G\",\"паѓа \":\"0X11\",паў:\"171N\",пв:\"1602\",пе:\"0V1N0X0Y1613173O184F194Q1L2M\",пеа:\"0X0C\",пев:\"0V0Q0X02160518051919\",пева:\"0V0W1803\",певн:\"190Z\",пее:\"0X0B160I1802\",пен:\"0V070X0C160D170C180F19051L2G\",\"пен \":\"0X0216051L48\",пер:\"0V0U0X0N160W178U185Z196K1L0P\",\"пер \":\"0V030X0317251802190J\",пера:\"0V0H0X07160A1798180J190B\",перад:\"172I\",перак:\"173B\",перам:\"1723\",перв:\"1819\",первы:\"181C\",пере:\"0V040X02184T195R\",перев:\"181H190L\",перед:\"182L191U\",перек:\"180A191E\",перем:\"18081918\",перес:\"181C190E\",перш:\"1732190Q\",перша:\"171T1904\",першы:\"172I\",\"перь \":\"181P\",пет:\"0V0Y0X0B160Z180H19071L0E\",пеш:\"0V080X0B1609170B180E\",пи:\"0V2O0X1T1623183E19461L0E\",\"пи \":\"0V0K0X0W161018031908\",пив:\"0V0B0X0M1809191C\",\"пив \":\"0X0E1916\",пие:\"0X0X160I\",пил:\"0V0H0X0A160A181H1913\",\"пил \":\"0X0716051818\",пин:\"160318081915\",пини:\"190Y\",пис:\"0V190X0K161K182C191D\",писа:\"0V0V0X03160S181O1913\",писал:\"0V08160D181D190B\",писмо:\"0V0O0X0C1613\",письм:\"181H1907\",пит:\"0V230X0F162Q181P1934\",пита:\"0V230X07161T180D191V\",\"пита \":\"0V080X02161B\",питан:\"180C191A\",питањ:\"0V1V\",пити:\"0V0616031914\",\"пити \":\"0V0D191H\",пить:\"181C190G\",\"пить \":\"182D190F\",пиш:\"0V0O0X1H1610180L190P\",пиша:\"0X0S16091909\",пишу:\"0X0M18071904\",пишув:\"0X0N\",пиј:\"0V0S0X0Y\",пија:\"0V060X15\",пк:\"0X0416031703180719041L0D\",пл:\"0V190X111611171M182719231L04\",пла:\"0V2G0X2U1637173D182K192X\",плава:\"1715180V190U\",план:\"0V0U0X13160S171V1814191D\",плани:\"0V1B0X0K160N180R1908\",плану:\"1913\",плат:\"0V0N0X0R161B170G1817190W\",плата:\"0X0A161D1805\",плати:\"0V1B0X0E160U180Z190Y\",плаче:\"0V0F0X0C160A180B1907\",плаш:\"0V0K0X0S160A\",плаши:\"0V120X0G1608\",пли:\"0V0M0X0H160618051909\",плив:\"0V0I0X0H18021905\",плива:\"0V1A0X0H18021902\",пло:\"0V080X0A160D170B18141905\",плохо:\"181E\",пн:\"0V020X04160217091807190C\",по:\"0V8J0X7A1679171Y18KF19GP1L141M0M\",\"по \":\"0V100X1C16321830190R\",\"по-\":\"163F181J1903\",\"по-д\":\"16131803\",\"по-до\":\"1623\",поб:\"0V0Y0X15160G180Z191L\",поба:\"0X0I191E\",побар:\"0X0I\",побач:\"191S\",побе:\"0V110X0Q1609180P\",побед:\"0V1S0X0K160G180X\",пов:\"0V170X2F1627181L1964\",пове:\"0V0B0X1L161O1818191T\",повер:\"0V0C0X07181A192E\",повеч:\"163C1904\",повеќ:\"0X1E\",пови:\"0V060X09160418031915\",повин:\"0V07191N\",повр:\"0V0M0X0R1803\",повре:\"0V160X0L1805\",повто:\"0X0G1609180F1906\",пові:\"193A\",повід:\"191Z\",пог:\"0V180X18160Q170F181M192A\",пога:\"1802190T\",поган:\"1915\",погл:\"0V0T0X0Q160I170O18031905\",погле:\"0V210X0P1612\",пого:\"0V080X0F1605181P191H\",погов:\"0X02160B182E1915\",погод:\"0V0H0X08180R190Y\",под:\"0V140X2O1637185L1965\",пода:\"0X0P160Z1819190V\",подар:\"0X0E160W1814190P\",подив:\"1910\",подо:\"0X1H160M181I193V\",подоб:\"0X13160V180J1955\",поді:\"1918\",подів:\"191K\",пое:\"0X0516041705181S1902\",поезд:\"181E\",поеха:\"181P\",пож:\"0V080X04160A18251907\",пожа:\"0V030X041605182M\",пожал:\"184G\",поз:\"0V250X1E1620170G182R1913\",позв:\"0V0B160T181N\",позво:\"161M182V\",позд:\"0V040X04160F1813\",позн:\"0V1B0X19160Y170O180G190E\",позна:\"0V3D0X1C1620170W180T190L\",пой:\"170G181U\",пойти:\"181T\",пок:\"0V1K0X15161B183B1925\",пока:\"0V0G0X0V16101822190T\",\"пока \":\"181S\",покаж:\"0V0M0X0H160P180O190F\",поко:\"0V030X091608181F190A\",покуш:\"0V1Q1902\",пол:\"0V130X1U1639170M185H191N1L0T\",полз:\"160X\",ползв:\"161Q\",поли:\"0V0J0X0K160K180X19041L1E\",полиц:\"0V150X0H160F18101L1G\",полн:\"0X0N181C\",поло:\"0V090X0K160I181F1906\",полож:\"0V0D0X0C160L181L\",полу:\"0V040X05160P181J1907\",получ:\"1618182G1905\",поль:\"170J18141903\",польз:\"181X\",пом:\"0V260X4V163G1709184H1951\",пома:\"0V070X0S16081802190F\",помаг:\"0X0O160I190J\",помер:\"0V0D1803190Y\",поми:\"0V060X0M160I180E191B\",помил:\"191G\",помин:\"0X0H180K\",помис:\"0V0A0X041612\",помн:\"0X05160K170C1815\",помни:\"160I181F\",помо:\"0V200X4Q162G1840192Q\",помог:\"0V2X0X421633182O1935\",помож:\"180N190S\",помоч:\"182G\",помош:\"0X0Y\",помощ:\"1617181O\",помоћ:\"0V1S\",пон:\"0V1M0X0T161D1713183E19191M1C\",понед:\"0V1M0X08160A180Q190N\",пони:\"0X06160B181P\",поним:\"182G\",поня:\"16081819\",поп:\"0V0W0X0S160V1823191C\",попр:\"0V090X0H160D181Q190X\",попра:\"0V0I0X0D160D18081903\",попро:\"182X1919\",пор:\"0V1H0X20161F170G182H191W1L18\",пора:\"0V0C0X1O1609180P190M\",порак:\"0X0E\",поран:\"0V0A0X0P180B1904\",пос:\"0V4L0X36162N170M185G1923\",посао:\"0V22\",посе:\"0V0L0X0O160J180B\",посет:\"0V0Y0X0E160S180B\",посл:\"0V240X16161B182I190C\",после:\"0V340X0X162H183V\",посмо:\"181T\",пост:\"0V1N0X1I160R1827190V\",поста:\"0V1Q0X1016071818190I\",посто:\"0V1S0X0E1608180O\",пот:\"0V1T0X1P160F170F1824193P\",потер:\"181J\",пото:\"0V030X0718181903\",потом:\"181Z\",потр:\"0V130X0Q1607180I193D\",потре:\"0V1V0X0J1608180H190F\",потрі:\"194B\",похо:\"18151904\",похож:\"181U\",поч:\"0V1B0X1M162Y1842192O\",поча:\"1604190V\",поче:\"0V0U0X0I1606183P190F\",почек:\"0X0D190I\",почем:\"186L\",почи:\"0V0D0X0C1610180L190O\",почн:\"0V0E0X1516111907\",почна:\"0X0O161G\",почти:\"1613181F\",почу:\"0X04160618061910\",почув:\"0X041608180B190X\",пої:\"191R\",поїх:\"1914\",поїха:\"191M\",поўн:\"171P\",пп:\"18051L09\",пр:\"0V7T0X7K167V17A518E619BE1L0X\",пра:\"0V2Y0X98169O17L5184L1968\",\"пра \":\"1603176H\",праб:\"173B\",праба:\"171T\",прабл:\"171Z\",прав:\"0V2N0X8Q169I1782185A1952\",права:\"0V0A0X20160S174P180M190F\",правд:\"0V070X051831193Q\",праве:\"0X0S1614170O180C190B\",прави:\"0V2W0X5G16C1183D191X\",право:\"0V1Y0X0Z161G1712180N190B\",правы:\"171O180B\",правя:\"164E1712\",праві:\"172Z1902\",праг:\"171P1902\",прад:\"171Z\",праз:\"0V090X0B160F17271809\",\"праз \":\"172W\",прап:\"171Q1902\",прапа:\"171T\",прас:\"0X021603171V18021902\",прат:\"0V0F0X0I160I170C\",прати:\"0V0R0X0C160R\",прац:\"177E1923\",праца:\"172V\",працу:\"173F\",працю:\"192T\",прач:\"171S\",праш:\"0X2V170L180F\",праша:\"0X2F\",прашу:\"0X0L\",праў:\"1751\",праўд:\"176R\",прв:\"0V0P0X0Q\",пре:\"0V7P0X8X169V184Z190J1L1T\",\"пре \":\"0V0Z0X051605\",прев:\"0V100X0L160S1808\",преве:\"0V0R0X081613\",пред:\"0V1K0X3B165B183O1906\",\"пред \":\"0V0W0X1D1619\",преда:\"0V0Y0X0G160O180A\",преди:\"0X0C163W180C\",предл:\"0V0H0X0C160P1829\",предо:\"0V060X0D1608180A\",предп:\"161D180X\",предс:\"0V0Q161K18181905\",през:\"0V090X0F161F180A19061L2F\",\"през \":\"162O\",прези:\"0V080X031608180F19091L3H\",прек:\"0V0P0X11161I180T1904\",прека:\"1617\",преки:\"0V0F0X081611\",прекр:\"0V0B0X0J160F181F1906\",прем:\"0V1H0X1Q160C1804\",према:\"0V230X0B\",преме:\"0X0H160C1803\",премн:\"0V0L0X0T\",преп:\"0V0G0X0O160H180C\",прес:\"0V1Y0X1M160S180E1903\",прест:\"0V3N0X11160M180G\",прет:\"0V0I0X1A16051804\",претп:\"0V0G0X0F\",преч:\"0V050X0L160C\",при:\"0V530X471671189Y1971\",прив:\"0V060X0A16071819190L\",прид:\"0V060X0A1608181E1906\",придё:\"181M\",прий:\"180E192J\",прийд:\"190W\",прийш:\"191D\",прил:\"0V0M0X0L160G180A\",прили:\"0V170X0K160Q1806\",прин:\"0V040X04160E1820190L\",припи:\"190S\",прис:\"0V090X0K160W180U190B\",прист:\"0V0B0X0E1613180F1904\",прите:\"161E\",прифа:\"0X0D\",прихо:\"181I190L\",прич:\"0V1Y0X0C160E180J190C\",прича:\"0V4D1802\",причи:\"0X0D160Q180T190G\",приш:\"181O\",пришл:\"181U\",прия:\"1621180I1902\",прият:\"164A180X1902\",приј:\"0V1E0X1B\",прија:\"0V3K0X1C\",про:\"0V5W0X5C167A171V18DL19BT1L0O\",\"про \":\"180A193L\",проб:\"0V1Q0X24161O1820192C\",проба:\"0V2C0X0Z190E\",пробл:\"0V1L0X1116301823191L\",пробу:\"0V0J0X07180O191D\",пров:\"0V0I0X0H160J181D190V\",прове:\"0V0W0X0F160L1813190D\",прод:\"0V0M0X0R160Z1709181G190W\",прода:\"0V1G0X0E160R1816190O\",продо:\"0X0D180X190I\",продъ:\"1616\",прои:\"0V030X06160C181V\",произ:\"0V060X06160R1827\",прос:\"0V0G0X0Z162D1723187B1937\",\"прос \":\"160X181D\",проси:\"160P184P191V\",прост:\"0V0T0X0W162O172U185V192N\",прот:\"0V0J0X0L160K180X190O\",проти:\"0V0R0X0J1611181D190L\",проче:\"16141808\",прочи:\"0V1I0X0C180I190M\",прош:\"0V0U0X08181I190P\",прошл:\"0V1I1820\",прошу:\"180J190U\",пры:\"17BI1805\",прыг:\"173J1806\",прыга:\"171L1804\",прыго:\"173I\",прые:\"1724\",прыех:\"171K\",прый:\"173N\",прыйш:\"173B\",прын:\"171S\",пс:\"0V0B0X0516051704180319031L0I\",пт:\"0V070X051603170D180819091L2Z\",пта:\"170H19081L30\",птар:\"1L28\",пте:\"0X06180219021L24\",пты:\"17061L1X\",\"пты \":\"1L2H\",пу:\"0V1U0X0N160K170T181F190Q1L10\",пуб:\"1606170D180519031L2G\",публ:\"1607170N180619041L4J\",публи:\"160F180C1L6G\",пун:\"0V1C0X0218021902\",пуно:\"0V14\",\"пуно \":\"0V2M\",пус:\"0V140X04161B171A181F190Q\",пусн:\"160X\",пусна:\"1618\",пуст:\"0V1C0X041718181F190Q\",пусти:\"0V2V0X02181A190K\",пут:\"0V1M0X041708180O1903\",пуш:\"0V0I0X1I160A\",пушт:\"0V080X1M\",пушта:\"0V0D0X0I\",пушти:\"0X13\",пц:\"17061906\",пч:\"0X03160317051904\",пш:\"0V080X06170M1L07\",\"пшая \":\"171T\",пшт:\"0V0C0X0O\",пшто:\"0X0O\",\"пшто \":\"0X0Q\",пъ:\"160U\",пъл:\"160T\",пълн:\"160R\",път:\"161Y\",\"път \":\"160W\",пътув:\"1616\",пы:\"170V180P1L0T\",пыт:\"171U1817\",пыта:\"17311818\",пытан:\"17301802\",пь:\"180D1L04\",пэ:\"170C\",пэўн:\"171U\",пэўне:\"171T\",пя:\"160C170V180L\",\"пя \":\"1612\",пят:\"1604170C1818\",\"пять \":\"181M\",пі:\"1727194G1L0X\",пів:\"1706191A\",піва:\"17091910\",під:\"192Q\",піз:\"1914\",пізн:\"191B\",\"піла \":\"171T\",піс:\"172P190R\",піса:\"172M\",піт:\"1914\",піти:\"1914\",\"піти \":\"191M\",піц:\"171R1906\",піць:\"172I\",\"піць \":\"173R\",піш:\"170P191F\",пішов:\"1912\",пј:\"0X02\",пљ:\"0V07\",пқ:\"1L06\",пә:\"1L05\",р:\"0VFH0XE516G017CI18G019HL1LIU1MGD\",\"р \":\"0V1Z0X1D1612172J181U191U1LEW1MH9\",\"р'\":\"1709\",\"р-\":\"1L0D\",рi:\"1L0X\",ра:\"0VC90XB516AS17L318HG19DH1LCD1M5O\",\"ра \":\"0V4B0X4M166X17BY184F193P1L31\",раа:\"0X0P1M4D\",\"раа \":\"0X0C1M2A\",раас:\"1M0T\",\"раас \":\"1M1I\",раат:\"0X0M\",\"раат \":\"0X0N\",раах:\"1M0R\",рааха:\"1M1A\",раб:\"0V0C0X3S163O178G183Q190C1L0G\",рабл:\"172N1809\",рабле:\"17211804\",рабо:\"0X4M163X171G184D\",работ:\"0X4U1683171T187O\",рабі:\"177I\",рабіл:\"172M\",рабіц:\"175K\",рабіў:\"172Q\",рав:\"0V3Y0X8L16AG176O186R195A\",\"рав \":\"0V020X15160C180E190Q\",рава:\"0V0M0X2C160J175O180D190I\",\"рава \":\"0V0O0X09160O173C180M190F\",равам:\"0V0A0X1L\",рават:\"0V0B0X0D160B1908\",равд:\"0V030X05181M192K\",равда:\"0X04181O190V\",равду:\"180Z190S\",равді:\"191V\",раве:\"0V060X0U160W170S1809190A\",рави:\"0V1U0X5T166Z184H191D\",\"рави \":\"0V1B0X2L1666190D\",равив:\"0X0R1905\",равил:\"0V0Z0X12162M183J1916\",равим:\"0V0K0X0R160Y1803\",равит:\"0V0K0X04160Y184N1907\",равих:\"162K\",равиш:\"0X1116271806\",раво:\"0V110X14160V170Q180E1908\",\"раво \":\"0V2H0X12161L180G1908\",\"равы \":\"171R180A\",равя:\"162J170Q180C\",\"равя \":\"163Y\",раві:\"17261903\",равіл:\"172E\",раг:\"0V0I0X0I1605172E180A19031M1R\",\"раг \":\"18031M0R\",рагд:\"1M0X\",рагда:\"1M1A\",раго:\"0V0C0X0G1604170Q1803\",\"раго \":\"0V0S0X0H\",рад:\"0V8C0X1K162R177A181H191P1L3F\",\"рад \":\"0V0H0X081608172J180I\",рада:\"0V090X0D160N1738180F190C1L0O\",\"рада \":\"0V0L0X0516141712180C190H\",радз:\"1723\",радзі:\"171X\",ради:\"0V860X0P1612180G190W\",\"ради \":\"0V6N0X091610180C190C\",радил:\"0V1Y1904\",радим:\"0V5W\",радио:\"0V3K0X03160G180A\",радит:\"0V1M\",радиш:\"0V1Y\",радо:\"0V0A0X0G160418091902\",рады:\"171A18041L5C\",\"рады \":\"170W18071L78\",рае:\"0X05160O171F1811\",раж:\"0V0W0X06160J170Z180T190G\",раз:\"0V3A0X3Y166U17BX186G193N1L0X\",\"раз \":\"0V040X051766181S1927\",раза:\"0V050X0I171G180A\",разам:\"0X0E171M\",разб:\"0V070X121629170W180O\",разбе:\"0X0616191805\",разби:\"0X0J162G180N\",разг:\"0V0G0X0S160J170D1814\",разго:\"0V110X0O160U181W\",рази:\"0V080X0H160B180F190D1L0Q\",разл:\"0V0J0X0I160G170L1808\",разли:\"0V0U0X0G160W180A\",разм:\"0V0H0X0E1609174J180A\",разма:\"175W\",разми:\"0V0Z0X0D1607\",разом:\"1808190T\",разу:\"0V120X0A16061751180T190F\",разум:\"0V2P0X07160A176F180E\",рай:\"160N171D180I19091L1Z1M1Y\",\"рай \":\"160E1715180419041L1B1M1X\",рак:\"0V0I0X13160K172Y180X190I\",рака:\"0V040X0Q1609171J180A\",\"рака \":\"0V090X0G16081808\",ракл:\"171Q\",ракла:\"172G\",рал:\"0V1B0X0R160M172B1828191P1L611M25\",\"рал \":\"0X0I1607180U1M17\",рали:\"0V0V0X051607181A190D\",ралы:\"1L7E\",\"ралы \":\"1L67\",ралық:\"1L4D\",ралі:\"171I1917\",ралії:\"191G\",рам:\"0V1Y0X47161N174W180N190H1L3B\",\"рам \":\"0V1G0X3N1614171Z18071903\",рама:\"0V040X041606172W19031L1L\",раме:\"0V040X1F160D170E\",\"раме \":\"0X1B160J\",рамы:\"17091L2Z\",рамын:\"1L2U\",ран:\"0V3X0X3H164I176C185B19451L2G1M22\",\"ран \":\"0V0Y0X0I160C170K180A19051L0V\",рана:\"0V0G0X0Y1616171A180D\",\"рана \":\"0V120X0S161X170T180H\",ране:\"0V0A0X09160M171P180K1902\",раней:\"1721\",рани:\"0V110X0O161A18131902\",рано:\"0V0E0X15160L180L190H\",\"рано \":\"0V0X0X111617180Y190M\",ранц:\"0V0Y0X0V1608171Z181T192N1L1G1M1F\",ранца:\"1M1Q\",ранцу:\"0V2C0X0U1724182W19391L1G\",раньш:\"181W\",рані:\"1720190Q\",раніц:\"1721\",раніш:\"190W\",рао:\"0V0Z\",\"рао \":\"0V14\",рап:\"0V020X07160G172F1804190W1L1O\",рас:\"0V180X23161Q176I184X190O1L30\",раси:\"0X08160Q18131905\",расив:\"161J181N1905\",раск:\"0X0I171Q1808\",раска:\"0X0D171R1804\",расн:\"0V020X0L160A170D18111905\",расп:\"0V0E0X0K171F180M\",расс:\"1709182L\",расск:\"182S\",раст:\"0V0G0X0L160P171O180Y1L17\",расы:\"18021L3O\",расын:\"1L3E\",расі:\"172H\",рат:\"0V360X3N164U172H1839192L1L3L\",\"рат \":\"0V0E0X0N1610170T180J190J1L17\",рата:\"0V0V0X1Q162A171E180A1907\",\"рата \":\"0V1Z0X0P163O170H180I190A\",ратам:\"0X0I\",ратат:\"0X0M1617\",рати:\"0V1R0X1K160I180X191R\",\"рати \":\"0V1V0X0W160J1805191R\",раты:\"170I1L26\",ратын:\"1L2K\",рать:\"181U\",\"рать \":\"182E\",рау:\"180219021L1D\",рах:\"0V02161M1711180B190N1L0F1M1J\",\"рах \":\"160R170M180919061M15\",рац:\"0V0C0X0C1604176Y1807192E1L0E\",раца:\"171X\",рацав:\"1721\",рацу:\"172A\",рацуе:\"171O\",рацы:\"1725\",раць:\"172V\",\"раць \":\"173S\",рацю:\"191X\",рацюв:\"1918\",рацює:\"1915\",раці:\"170P190U\",рач:\"0V0K0X0J1608171Z180K1906\",раш:\"0V0K0X3S160O1728180O1908\",\"раш \":\"0V0I0X1D160I\",раша:\"0X2B170J\",рашам:\"0X0J\",рашањ:\"0X12\",раше:\"0X0N16051802\",\"раше \":\"0X0N1609\",рашу:\"0X0K170B\",рашув:\"0X0L\",ращ:\"1606180L1918\",раще:\"1805190U\",\"раще \":\"1917\",рає:\"190X\",раі:\"171Z\",раін:\"1731\",раіна:\"171O\",рај:\"0V1E0X0X\",\"рај \":\"0V0G0X0W\",раќ:\"0X0C\",раќа:\"0X0G\",раў:\"174P\",раўд:\"174K\",раўды:\"172S\",рағ:\"1L1P\",раға:\"1L2M\",раған:\"1L23\",рақ:\"1L30\",\"рақ \":\"1L2Q\",рб:\"0V050X051602170F1805190F1L0R\",рба:\"0V050X0C1607170Z1L11\",рв:\"0V0N0X0K160R170F180O190F1M0L\",рва:\"0V060X0I161G170N180D19071M0L\",\"рва \":\"0V050X0G160F\",рве:\"0V0J0X0B160K170B18021902\",рви:\"0V0H0X0D160L1802\",рво:\"0V0H0X0J160G170I180A190F\",рвэ:\"1M0N\",рвээ:\"1M0R\",\"рвээ \":\"1M1E\",рг:\"0V040X071604170E180B190B1L2Y1M3P\",рга:\"0V040X071605170M180719071L0S1M3I\",\"рга \":\"19031M0P\",ргаа:\"1M1R\",ргааш:\"1M2V\",ргал:\"1M0T\",рге:\"0X02170E180419031L4M\",\"рге \":\"18021L4Z\",рген:\"18021L2V\",\"рген \":\"1L34\",ргу:\"0X02180219031M10\",ргуу:\"1M15\",ргуул:\"1M27\",ргэ:\"1M20\",ргэл:\"1M0Z\",ргэлж:\"1M1M\",ргі:\"170819051L24\",ргү:\"1M28\",ргүй:\"1M27\",\"ргүй \":\"1M46\",рд:\"0V080X08160D170B180H190G1L8Z1M1G\",рда:\"0V060X041605170918031L391M22\",\"рда \":\"16031L2Q\",рдаг:\"1M1L\",\"рдаг \":\"1M2J\",рдан:\"1L1B1M0P\",\"рдан \":\"1L1T1M1E\",рде:\"0V030X06160U180319021L4P\",\"рде \":\"160R1L4B\",\"рден \":\"1L2K\",рды:\"1LA3\",\"рды \":\"1L9A\",рдың:\"1L8N\",\"рдың \":\"1LBN\",рді:\"19021L6T\",\"рді \":\"1L73\",рдің:\"1L4J\",\"рдің \":\"1L5L\",ре:\"0V900X8D168C18BP196L1L8D\",\"ре \":\"0V210X1I164G181M191U1L1B\",реб:\"0V3X0X5Y160B1815191D\",реба:\"0V400X7C1914\",\"реба \":\"0V6A0X5R191N\",ребаа:\"0X0F\",ребал:\"0V320X0S\",ребаш:\"0X0X\",рев:\"0V160X141610181V190U\",реве:\"0V0N0X0J160J180D1903\",ревет:\"0V0V0X0C\",ред:\"0V2X0X4N165Q184P191O1L1K\",\"ред \":\"0V0O0X211615180R190J\",реда:\"0V0H0X0L160E180L1908\",реди:\"0V0R0X141620180R190D\",\"реди \":\"0V0G0X0I163P180M\",редл:\"0V070X0C160C1818\",редло:\"0V0A0X08160K1820\",редн:\"0V090X0J160A180A1904\",редно:\"0V0D0X0E16091804\",редо:\"0V060X0K1605180A\",редпо:\"1616180S\",редс:\"0V0D160T180S1904\",редст:\"0V0I0X02161H181B1905\",реді:\"1L2H\",\"реді \":\"1L3K\",рез:\"0V0D0X0H161J181E190Q1L1M\",\"рез \":\"161C180Q190F\",рези:\"0V030X051604180919061L2F\",резид:\"1607180C19061L3H\",рек:\"0V2O0X1K161P181719131L67\",\"рек \":\"1L6V\",река:\"0V1R0X07160S1804\",рекао:\"0V46\",реке:\"0V0318031L2D\",\"реки \":\"16111807\",реко:\"0V0E0X0L1807190L\",рекр:\"0V040X0I1607180T1905\",рекра:\"0V060X0F160F181F1906\",рел:\"0V0E0X0I160A1815190C\",рем:\"0V3G0X4H162Z183919141L1H\",\"рем \":\"0V070X15160418021904\",рема:\"0V0W0X0C1902\",реме:\"0V2E0X3I1632181T\",\"реме \":\"0V3O0X2P164S\",ремен:\"0V2H0X0K160C183A\",ремет:\"0X0D1613\",ремн:\"0V090X0S1802\",ремно:\"0X0O\",ремо:\"0V020X021805190X\",ремя:\"1829\",\"ремя \":\"1844\",ремін:\"1L2H\",рен:\"0V200X2I16891826190G1L14\",\"рен \":\"0V0B0X24161T180Y\",\"рена \":\"0V0J0X0D160O180F\",рени:\"0V0L0X0B160U180M\",ренс:\"1665\",ренск:\"16CB\",реп:\"0V0J0X0N160M180Q190K1L0D\",рес:\"0V290X24163O182S190U1L4X\",\"реса \":\"0X02161318021902\",ресв:\"0V02161J\",ресва:\"1639\",ресе:\"0V0A0X0D160A180B1L26\",ресей:\"1L2R\",реси:\"0V060X0H16071904\",ресир:\"0X0C\",респ:\"18031L4M\",респу:\"18041L6G\",рест:\"0V1N0X17160L181D190E\",реста:\"0V3L0X0W160818101908\",ресто:\"0V0I0X0D160L180S1909\",рет:\"0V0T0X1Q160U181U190H1L2Q\",ретпо:\"0V0D0X0C\",реть:\"18131902\",\"реть \":\"181H\",ретін:\"1L2K\",реч:\"0V120X1S160Z180Z1910\",рече:\"0V0G0X1L160G1806190G\",\"рече \":\"0V0B0X161804\",речи:\"0V0I0X0K160A1808\",реш:\"0V110X1O162Q181L190U\",реши:\"0V0C0X0L16151815\",\"реши \":\"0X091613\",решил:\"0X031607181H\",решк:\"0V0C0X0G160P\",решно:\"0V0F0X0C\",рещ:\"161I1805\",рећ:\"0V1L\",реќ:\"0X1A\",реќа:\"0X0K\",\"реќа \":\"0X0G\",реќе:\"0X0N\",реќен:\"0X0O\",рж:\"0V0C0X09160A1705180L19041L091M0W\",\"рж \":\"1M22\",ржа:\"0V0D0X0C160O170H180I1903\",ржи:\"0V0D0X0B160D180G1905\",рз:\"0V0G0X0C160B180219021L0E\",рза:\"0V040X0F160J\",рзо:\"0V0L0X0H160K\",\"рзо \":\"0V0O0X0M160M\",ри:\"0V6I0X5G166918CY198W1L2R1M3P\",\"ри \":\"0V5A0X92169Q187X192A1L111M0H\",риб:\"0V0A0X0D160T180E190X\",рив:\"0V0L0X0Q160A181P191F\",риг:\"0V0A0X05160A180S190K1M0S\",рид:\"0V0E0X09160C181D190L1L0D\",ридёт:\"181G\",рие:\"0X0I160V180S\",риж:\"0V030X0Q160C18081906\",рижен:\"0X0C\",риз:\"0V0B0X0H1614180M190D\",рий:\"1608180E19321M35\",\"рий \":\"18041912\",рийг:\"1M1J\",\"рийг \":\"1M2J\",рийн:\"190C1M25\",\"рийн \":\"1M37\",рийнх:\"1M16\",рийш:\"190Y\",рийшо:\"190S\",рик:\"0V0B0X0I160X180Z190M1L0E\",рика:\"0V060X0J160P180K19091L0Q\",рил:\"0V120X0T160U182C190K1M0V\",\"рил \":\"0X0A1608181O\",рили:\"0V0M0X0J160F180R190A\",рилич:\"0V0K0X0C160P1804\",рим:\"0V120X0J1612180Z191Y1M0H\",\"рим \":\"0V0H160S180F1906\",рима:\"0V060X0316061916\",рин:\"0V0T0X0A1618181X1913\",рио:\"0V0W0X0C160E1806\",\"рио \":\"0V12\",рип:\"0V0C0X0B16031809190P\",рипин:\"190S\",рир:\"0V060X0D160B180A1904\",рис:\"0V130X1B161A181B191A1L0J\",рист:\"0V0U0X12160S180L19101L0V\",ристи:\"0V1D0X0M161718071905\",рит:\"0V100X10162D185119331L0F\",\"рит \":\"0X021820\",рите:\"0V0M0X1116251816190A\",\"рите \":\"0V1K0X12162L181S190D\",ритес:\"1612\",рити:\"0V0H0X05160818041924\",\"рити \":\"0V0P192P\",рить:\"183C190Y\",\"рить \":\"185W191D\",риу:\"0X031M0Z\",риул:\"1M0V\",рих:\"0V0B160L180M190F1L1O1M0V\",\"рих \":\"0V05160F19021L0T1M0R\",риход:\"181G190G\",рич:\"0V1Q0X0H160Q180Q190M\",рича:\"0V1Q160A18051906\",ричин:\"0X0D160Q180T190G\",риш:\"0V0R0X0F160Z181M190D\",\"риш \":\"0V070X0D1610190D\",рия:\"1634181019021L1X\",\"рия \":\"160Y180V1L1E\",рият:\"162M180I\",рияте:\"163M1803\",риј:\"0V2I0X1T\",рија:\"0V210X2C\",\"рија \":\"0V150X0O\",ријат:\"0V390X1H\",рй:\"1904\",рк:\"0V0H0X0F160F1715180R190Y1L1G\",рка:\"0V0A0X0T160V171R180A190H\",\"рка \":\"0V080X0L160I171Q1806190A\",рки:\"0V040X0B160818081909\",ркі:\"170L1L18\",рл:\"0V060X051606170B180719071L4Y1M1K\",рла:\"0V040X041603170E180619071L3H1M1O\",рлал:\"1M0R\",рлала:\"1M1I\",рлама:\"1L27\",рлар:\"1L21\",рле:\"16031L3F\",рлер:\"1L3Z\",\"рлер \":\"1L27\",рлері:\"1L27\",рлы:\"1L4M\",рлық:\"1L5P\",\"рлық \":\"1L6Q\",рлэ:\"1M1H\",рлі:\"170B19021L2E\",рлік:\"1L23\",рм:\"0V070X091608170L180N190D1L2V1M0B\",рма:\"0V0A0X0N160P1713180S190D1L351M0J\",рме:\"0V030X021708180419021L3F\",рмен:\"1L2H\",\"рмен \":\"1L34\",рн:\"0V0V0X0N160U171F181N19211L1J1M0L\",рна:\"0V0B0X0E161Q171J180D190O1L29\",\"рна \":\"0V0C0X0B161J170F1803190L\",рнал:\"1603180619041L2T\",рне:\"0V080X0D160F170C1807190K1L0O\",рни:\"0V0B0X0H160O180B190Q\",\"рний \":\"190T\",рно:\"0V1J0X15160S1812190N\",\"рно \":\"0V1M0X1C160J180H190H\",рну:\"0V05171J180Z1916\",рнэ:\"17091M0V\",\"рнэ \":\"1M0X\",ро:\"0V4T0X3W1638175018EM19H71L1I1M1W\",\"ро \":\"0V2K0X2S1613170C181K193J\",роб:\"0V1L0X1W161Q171R181V19DE1L0E\",роба:\"0V0X0X0Y170A190C\",роби:\"0X03180219B1\",робив:\"193J\",робил:\"1924\",робит:\"19A1\",робл:\"0V0M0X0Z161F170H18141921\",робле:\"0V1L0X111630170O1823191T\",роблю:\"190R\",робо:\"0X06180D191R\",робот:\"0X021802192I\",робу:\"0V080X07180D190Z\",робув:\"0X07190R\",ров:\"0V1D0X131612170O1844191J1L0F\",рова:\"0V0V0X02160G170I181X190A\",роват:\"0V1L1819\",рог:\"0V0C0X091607170V181O191C\",род:\"0V1M0X1N1625172U183Z1928\",рода:\"0V0M0X0G160I170V1815190J\",роден:\"0X0D160W\",роди:\"0V0R0X0F160O181F190X\",родит:\"0V100X091613181N\",родо:\"0V040X0J180Q190D\",родол:\"0X0D180X\",родъл:\"1616\",рож:\"0V021606170P181D190I\",роз:\"0V0Q0X0H160J171M180E196D\",розм:\"1918\",розмо:\"191M\",розп:\"191D\",розпо:\"191T\",розу:\"192D\",розум:\"193E\",рои:\"0V030X07160H181Q\",роиз:\"0V020X06160C1817\",роизо:\"181D\",рой:\"1608170I180X19081M17\",\"рой \":\"1606170P180U19021M0P\",рок:\"0V090X0E160N170W18121927\",рокля:\"16171802\",рокі:\"190U\",років:\"1918\",рол:\"0V0A0X08160E1707180L190F1L0K1M0L\",ром:\"0V140X0L160N170C182F19141L0D\",\"ром \":\"0V090X03181Z190E\",роо:\"1M15\",\"роо \":\"1M0Z\",роп:\"0V070X0E1608170G180U190W1L0S\",рос:\"0V0O0X0V1629171P186T193D\",роси:\"160C1833191A\",росив:\"190T\",росил:\"1839190I\",росит:\"181Y190D\",рост:\"0V0H0X0X161D1726183N1921\",роста:\"0X04172M18091905\",рости:\"0V0P0X061607181K1906\",росто:\"0V070X0K1620183U1929\",рот:\"0V0I0X23160U170H1815190W\",\"рот \":\"0X1U1807\",роти:\"0V0B0X0I160H180R190G\",ротив:\"0V0Q0X0J1611181C\",рох:\"170H180919181M0N\",рохи:\"191A\",\"рохи \":\"191W\",рочит:\"0V1K0X0C180F190M\",рош:\"0V0W0X0D171I183I1924\",роше:\"0V030X07180K190W\",рошей:\"18051914\",рошло:\"0V0R181I\",рошо:\"181N\",\"рошо \":\"1832\",\"рошы \":\"171T\",роші:\"190T\",\"роші \":\"1917\",роятн:\"1614180M\",рој:\"0V0N0X0S\",роја:\"0V030X0N\",ројат:\"0X0N\",роў:\"172Y\",рп:\"0V040X0316041707180A19091L09\",рр:\"18031L05\",рс:\"0V090X0C160C170L180J190D1L2A1M28\",рса:\"1M22\",рсан:\"1M2E\",\"рсан \":\"1M4A\",рсе:\"1602170818041L2Q\",рсет:\"1L2J\",рсите:\"160I180A19061L2D\",рск:\"0V080X0R160A170P1809\",рска:\"0X0R1603170I\",\"рска \":\"0X0R\",рст:\"0V0C0X0E1605170C180F1905\",рсы:\"1L1O\",рсэ:\"1M1O\",рсэн:\"1M1Z\",\"рсэн \":\"1M3M\",рсө:\"1M1A\",рсөн:\"1M1J\",\"рсөн \":\"1M2Z\",рт:\"0V0G0X0I160P1714181H191N1L5D1M44\",\"рт \":\"0V090X07160E170L180J190M1L1Y1M1Q\",рта:\"0V080X0D160T171F180D190G1L2U1M61\",ртай:\"19031M6J\",\"ртай \":\"1MC5\",рте:\"0V050X06180619041L2G\",ртең:\"1L2F\",\"ртең \":\"1L37\",рти:\"0V0A0X0G160W180W190M\",рто:\"0V020X0C1606180B190I\",ртт:\"0X0316031L27\",рты:\"170H18051L22\",ртэ:\"1M1V\",ртэл:\"1M0P\",\"ртэл \":\"1M1E\",ртээ:\"1M19\",\"ртээ \":\"1M2J\",ру:\"0V2E0X1V1612173E184Q193N1L411M10\",\"ру \":\"0V1617341811191F1L43\",рув:\"0X3J160I190C\",рува:\"0X4N160K190E\",\"рува \":\"0X1B160X\",руваа:\"0X0D\",рувам:\"0X1I\",руваш:\"0X0X\",руг:\"0V1K0X1H1624170M182Y190V1L0W\",\"руг \":\"0V040X0J160N1818190E\",руга:\"0V0C0X0G160F180R190A\",\"руге \":\"0V0L180319021L2D\",руги:\"0V0H0X0F160S180P1902\",руго:\"0V0L0X0J160L170B18121906\",\"руго \":\"0V100X0K1614\",руд:\"0V0A0X0B160U170I180X19091L1G\",руж:\"0V0J0X0H16041718180T1918\",ружи:\"0V0A0X08180I190X\",ружин:\"190U\",рук:\"0V0O0X0317171816190V\",рус:\"0V040X0516091728180N1907\",руск:\"171Z\",руу:\"1M2A\",\"руу \":\"1M1T\",руч:\"0V0X0X0F170V180B190S\",ручек:\"0X0D\",руј:\"0V0Y0X02\",руғ:\"1L19\",руға:\"1L2D\",\"руға \":\"1L3E\",рф:\"16021702\",рх:\"0V0216021704180519021M1P\",рха:\"1M0Q\",\"рхан \":\"1M16\",рхи:\"18021M0S\",рхо:\"1M0X\",рц:\"0V070X041602170H18021904\",рч:\"0V0A0X051603170318041M18\",\"рч \":\"1M1G\",рчи:\"0V0A0X04160618041M0X\",рш:\"0V0F0X0G160D170Q180G190L1L0P1M0F\",рше:\"0V070X0E1608180K1908\",ршен:\"0V080X0I1608180I\",рши:\"0V0S0X0Y160Y180B190H\",\"рши \":\"0V040X0O160K\",ршы:\"171D\",ръ:\"1618\",ръг:\"1616\",ръгва:\"1619\",\"рът \":\"160V\",ры:\"17AE182F1LB81M0M\",\"ры \":\"178O18131L73\",рыв:\"171R180P\",рыг:\"172D18051M0N\",\"рыг \":\"1M0R\",рыго:\"172H\",рыгож:\"173C\",рыеха:\"171K\",рызна:\"171L\",рый:\"172E180N\",рыйш:\"1728\",рыйшл:\"171S\",рыйшо:\"171L\",рыл:\"171U180H1L3J\",рыла:\"171Z18051L1B\",рылас:\"171S1803\",рылы:\"1L28\",рым:\"173L18071L2R\",рыма:\"173M\",рымал:\"171M\",рын:\"172718031LAM1M0Z\",\"рын \":\"1L781M13\",рына:\"17191L3K\",\"рына \":\"17131L3K\",рынд:\"1L4S\",рында:\"1L61\",рыны:\"1L4J\",рының:\"1L64\",рып:\"170F1L25\",\"рып \":\"1L3V\",рыс:\"172T18021L30\",\"рыс \":\"1L2D\",рыст:\"172P1L0V\",рыста:\"1723\",рых:\"171M1807\",\"рыху \":\"171T\",рыц:\"172W\",рыць:\"173D\",\"рыць \":\"174Y\",рыя:\"172A\",\"рыя \":\"172F\",рық:\"1L1I\",рыңыз:\"1L27\",рь:\"181119031M1S\",\"рь \":\"181K\",рьд:\"1M1J\",рьда:\"1M1N\",рьдаг:\"1M37\",рьж:\"1M1J\",\"рьж \":\"1M1T\",рьс:\"1M0T\",рьса:\"1M0R\",рьсан:\"1M1I\",рэ:\"174A1M4K\",рэб:\"174F\",рэба:\"1748\",\"рэба \":\"1767\",рэбн:\"172X\",рэбна:\"1726\",рэбны:\"172B\",рэв:\"170X1M0S\",\"рэв \":\"1M0X\",рэг:\"17051M51\",\"рэг \":\"1M13\",рэггү:\"1M16\",рэгт:\"1M3V\",рэгтэ:\"1M7F\",рэй:\"170N1M0X\",\"рэй \":\"170A1M13\",рэс:\"171I\",рэх:\"1M1M\",\"рэх \":\"1M1B\",рэч:\"171K\",рээ:\"1M2M\",\"рээ \":\"1M17\",рээн:\"1M0V\",\"рээн \":\"1M1I\",рю:\"180F190H\",ря:\"162T18221911\",\"ря \":\"162X180O1909\",ряб:\"1671\",рябв:\"167V\",рябва:\"16FE\",рят:\"160N1812190O\",рё:\"180D\",рі:\"199A1L8G\",\"рі \":\"19AO1L6J\",ріб:\"192M\",рібн:\"192S\",рібна:\"190Z\",рібно:\"192A\",рів:\"1916\",\"рів \":\"190V\",рік:\"19061L1M\",ріл:\"190G1L1W\",рім:\"19081L2F\",рін:\"19081L74\",\"рін \":\"1L4S\",ріне:\"19031L2Q\",\"ріне \":\"1L2K\",рінші:\"1L2D\",ріні:\"1L2T\",рінің:\"1L3E\",ріп:\"1L1R\",\"ріп \":\"1L23\",ріс:\"19071L1E\",ріш:\"1914\",ріңіз:\"1L2H\",рљ:\"0V02\",рғ:\"1L31\",рға:\"1L66\",\"рға \":\"1L5C\",рған:\"1L3B\",\"рған \":\"1L2H\",рғы:\"1L28\",рқ:\"1L11\",рқы:\"1L1T\",рқылы:\"1L2K\",рү:\"1M0G\",рүү:\"1M15\",рө:\"1M17\",рөө:\"1M2H\",\"рөө \":\"1M1D\",\"р‐\":\"1L04\",с:\"0VIG0XG216I017C618JD19G41LFS1MAU\",\"с \":\"0V280X191635172A188C19381L7G1M5E\",\"с-\":\"1L08\",сi:\"1L0O\",са:\"0VAS0X44162Q175G183619291L9B1MBD\",\"са \":\"0V3X0X0W166F171K1810190H1L1Y\",саа:\"0X071M0Z\",\"саа \":\"1M0P\",саб:\"0X06173E1L0J\",саба:\"0X05172A1L0T\",сабак:\"173A\",\"сабе \":\"172G\",сад:\"0V1H0X0E170Y180J190A1L14\",сада:\"0V170X03\",\"сада \":\"0V300X021802\",\"сады \":\"1L27\",сай:\"170B180619031L2P1M5N\",сайн:\"1M4C\",\"сайн \":\"1M7X\",сайх:\"1M23\",сайха:\"1M46\",сайын:\"1L23\",сак:\"0V0E0X861606170K1802\",сака:\"0XAG170D\",\"сака \":\"0X2G\",сакаа:\"0X0E\",сакав:\"0X0N\",сакал:\"0X1G\",сакам:\"0X48\",сакаш:\"0X2Q\",сал:\"0V080X04160A1716180Q190A1L4V1M0T\",сала:\"0V070X031604170S180719081L2T\",салы:\"1L26\",сам:\"0VIT0X4I1631176T1838192O1L14\",\"сам \":\"0VJY0X1M160S1728180R190I1L0O\",сама:\"0V0F0X04160G173S180K190A\",\"сама \":\"0V110X03160X173K180N190F\",\"саме \":\"1912\",само:\"0V260X3Y16201716181T190M\",\"само \":\"0V510X3X163A18031908\",самі:\"173I190W\",\"самі \":\"17521919\",сан:\"0V0J0X04160S170U180F19081L2G1MI8\",\"сан \":\"0V0F160818021L0V1MH7\",сана:\"1605170H1L141M30\",санаа:\"1M2V\",санд:\"1603170B18021L171M1T\",\"санд \":\"1M2N\",сао:\"0V17\",\"сао \":\"0V1C\",сап:\"0X02171Q1L12\",сапр:\"172R\",сапра:\"1744\",сар:\"0V030X02170J180219021L131M0T\",сат:\"0V0R0X0H160Q180J190C1L3D\",сата:\"0V0A0X0F160R\",\"сата \":\"0V0Q0X0F161M\",саты:\"1L44\",сатып:\"1L2K\",сау:\"1L2A\",сая:\"1L0X1M0Q\",\"сая \":\"1M0R\",сағ:\"1L2G\",саға:\"1L3R\",саған:\"1L3H\",сақ:\"1L19\",сақта:\"1L2N\",сб:\"16021702180719031L04\",св:\"0V3D0X0X161I1736183B192R1M09\",сва:\"0V1A0X04162H176V18081903\",\"сва \":\"0V06161D\",свабо:\"172A\",\"свае \":\"171W\",свайг:\"171S\",свак:\"0V14\",сваю:\"172C\",\"сваю \":\"173C\",сваё:\"172U\",сваёй:\"172O\",сваі:\"172J\",сваім:\"172F\",све:\"0V370X17161C172M180X1904\",\"све \":\"0V2A\",свет:\"0V0U0X0U160Y172F180R1903\",свеце:\"171O\",сви:\"0V2H0X0F160M180C1905\",\"сви \":\"0V19\",свиђ:\"0V0W\",свиђа:\"0V29\",сво:\"0V2N0X1I16101716185J193K\",свобо:\"161B18161906\",свого:\"190S\",свое:\"0X0A1603181Z\",своей:\"181X\",свои:\"0X0K16051826\",\"свои \":\"0X04181O\",своит:\"0X0G160A\",свой:\"1603171S1811\",\"свой \":\"172F181V\",свою:\"18181915\",\"свою \":\"182A191N\",своє:\"190Y\",свої:\"191J\",\"свої \":\"190S\",свој:\"0V2O0X16\",своја:\"0V0D0X0Q\",своје:\"0V25\",својо:\"0V0M0X0F\",свъ:\"1614\",свър:\"1619\",свърш:\"1625\",сві:\"170B191Z\",свій:\"190U\",\"свій \":\"1917\",світ:\"190X\",сг:\"16031M0R\",сга:\"1M0X\",сгү:\"1M0N\",сгүй:\"1M0R\",\"сгүй \":\"1M1A\",сд:\"18241M0M\",сде:\"184C\",сдел:\"185S\",сдела:\"18AC\",се:\"0V8I0X9O167G171N187H19341L7A\",\"се \":\"0VGZ0XLL16J1173E182U192Z1L3Q\",себ:\"0V0J0X0K160E1829190P1L0N\",себе:\"0V0C0X0M160F181B190T1L0V\",\"себе \":\"0V0W0X0H160X182F1916\",себя:\"181U\",\"себя \":\"183F\",сег:\"0X25161J183X1L0G\",сега:\"0X2U161P\",\"сега \":\"0X2Y163J\",сегд:\"181U\",сегда:\"183F\",сего:\"183M\",\"сего \":\"181U\",сегод:\"184X\",сед:\"0V140X1A161P170A180G1L0G\",седм:\"0V05160R\",седми:\"0V0E161M\",сей:\"1603181R19041L19\",сейч:\"1825\",сейча:\"1840\",сек:\"0V040X2D161G180F190C1L0T\",секи:\"0X0A161D\",\"секи \":\"162V\",секо:\"0X281802\",секог:\"0X1E\",секој:\"0X0U\",сел:\"0V0G0X0I160A170K180N190G1L1K\",селе:\"0X041603180819021L2F\",сем:\"0V050X0O160X170H181Z19061L0T\",\"сем \":\"0V050X0A160H170I1819\",семеј:\"0X0D\",сен:\"0V060X0S160T170F180S190A1L6R\",\"сен \":\"0X0R160O180D1L3Z\",сенб:\"1L26\",сені:\"19021L55\",\"сені \":\"1L2H\",сенім:\"1L2H\",сенің:\"1L2K\",сер:\"0V020X09160F170F181219191L1X\",сестр:\"0V0U0X0E161I181C190Y\",сет:\"0V1C0X17161S18071L1K\",\"сет \":\"0V0R0X0P1618\",сећ:\"0V11\",сећа:\"0V15\",си:\"0V3I0X4P166J1848192T1L1L1M0B\",\"си \":\"0V5O0XAR16H3180H190K1L0I\",сив:\"0V040X06160P180P190X\",\"сив \":\"0X0216051802190W\",сиг:\"0V0P0X1716211804\",сигу:\"0V0T0X1K162A\",сигур:\"0V230X1N164S\",сил:\"0V0O0X0G160P182V1916\",\"сил \":\"181N\",сильн:\"181D190S\",син:\"0V0L0X0J160M180C190T\",сир:\"0V0C0X0H1607180419051L0I\",сит:\"0V0G0X2K160Q181Y19171L0Y\",сите:\"0V050X37160K180L19061L1N\",\"сите \":\"0V0B0X3B160O180K1903\",ситет:\"160F180A19061L2D\",сить:\"1816190P\",\"сить \":\"1821190Y\",сич:\"163I\",сичк:\"163U\",сички:\"164K\",сичко:\"163N\",ск:\"0V270X1T164C175I188H195C1L1I\",ска:\"0V0N0X22168O17AQ188B197L\",\"ска \":\"0V0H0X1C162B174818081926\",скаж:\"0X0D171L182D1910\",скажи:\"0X03182U190M\",сказ:\"1760187O195F\",сказа:\"177218CK197Q\",скай:\"1606173918021902\",\"скай \":\"160A174R1802\",скал:\"0X051611170B180C\",\"скал \":\"161F180A\",скам:\"162P1803\",\"скам \":\"165B\",скат:\"0X0C16191809\",ската:\"0X0C1617\",скаш:\"0X02162G\",\"скаш \":\"1643\",скаше:\"1614\",ская:\"171Y180H\",\"ская \":\"172W180W\",ске:\"0V0G0X0216031706180819051L39\",скер:\"1L2H\",ски:\"0V1X0X27167P183N1903\",\"ски \":\"0V1Q0X24167C181M1902\",ский:\"181Z\",\"ский \":\"183N\",скио:\"0X0G\",скиот:\"0X0H\",ския:\"161B\",\"ския \":\"161G\",ският:\"161D\",склад:\"171L1803190Y\",ско:\"0V1U0X151615171E185D190T\",скол:\"183J\",сколь:\"186G\",сконч:\"171T1803\",скор:\"0V0U0X0N160O1817190L\",скоро:\"0V1S0X0J161D1818190H\",скр:\"0V0I0X0R1609170O180Q1908\",ску:\"0V0Q0X0E1605173O1810190B\",\"ску \":\"0V0C0X02172V18061907\",скую:\"172W1809\",\"скую \":\"174B180H\",скі:\"172Z191R1L0P\",\"скі \":\"171W1L12\",скіл:\"191S\",скіль:\"192L\",\"скія \":\"171O\",сл:\"0V3N0X32163H1729186A192F1M0O\",сла:\"0V1H0X31160W1720180W190M1M19\",слам:\"0X2W170P\",\"слам \":\"0X30170T\",сле:\"0V1U0X2T163V170I183D\",слев:\"0X11\",\"слев \":\"0X13\",след:\"0V160X1J1636170K1833\",\"след \":\"16231802\",следв:\"1623\",следе:\"0V1B0X0D\",следн:\"0X0T161A181V\",следу:\"182H\",слех:\"160S\",\"слех \":\"161L\",сли:\"0V4V0X1V161N183Z190W\",\"сли \":\"0V0T0X0H160K183U\",слив:\"0X051802190S\",слик:\"0V0L0X0J\",слика:\"0V0T0X0F\",слим:\"0V2P0X03\",\"слим \":\"0V6M\",слиш:\"0V0L0X12160L181H\",\"слиш \":\"0V1I0X141619\",слишк:\"182R\",сло:\"0V130X0T16131722182I1910\",слоб:\"0V0F0X0I\",слобо:\"0V120X0J\",слов:\"0V080X06160A17291820190X\",слова:\"1723181T190G\",слож:\"0V0B0X05160U180M\",сложи:\"0V0P16181806\",слу:\"0V1A0X351629171O182I1910\",слух:\"17281806190T\",слуха:\"172Y1912\",случ:\"0V0B0X1X161D181O\",случа:\"0V0T0X0C160O181E\",случи:\"0X1A161K181R\",случу:\"0X0E\",слуш:\"0V0O0X1L160K1815\",слуша:\"0V1N0X1216161820\",слушн:\"0X0L1802\",слы:\"1706181A\",слыш:\"181L\",слыша:\"182C\",сля:\"165F170Y190E\",\"сля \":\"165U171C190F\",слі:\"171C191F\",слід:\"191D\",\"слід \":\"191J\",см:\"0V200X18160V170W1826190W1L07\",сме:\"0V190X3O1620171H181A190B\",\"сме \":\"0V030X1Y1615\",смее:\"0X1016051802\",\"смее \":\"0X0H\",смееш:\"0X0E16071802\",смет:\"0V040X0M160J\",смета:\"0V0A0X0G\",смо:\"0V3C0X09160H18321902\",\"смо \":\"0V3Z0X071609\",смот:\"0X041609182Q\",смотр:\"1851\",смі:\"170F1910\",сн:\"0V170X14161K171T182O191Y1M0C\",сна:\"0V0G0X11161L171Q180N190A\",\"сна \":\"0V0C0X0R1614171018081908\",сне:\"0V0I0X0D160Z1713180N1905\",сни:\"0V190X0W1616180W190Y\",\"сни \":\"0V0A0X0O160I18051903\",сно:\"0V140X1T1625170K182B1918\",\"сно \":\"0V0Y0X1T161U181D1913\",сня:\"1613170G180D1904\",снява:\"161J\",сні:\"1714190X\",со:\"0V0Y0X3W160K170X1861192H1L2W1M39\",\"со \":\"0V050X7N1605181H1905\",соб:\"0V140X1F160K170B183B1924\",соба:\"0V090X0Y1818191F\",\"соба \":\"0V0K0X0C1903\",собак:\"1824191W\",собат:\"0X0L\",соби:\"0V070X0618161906\",собир:\"0X041825\",сов:\"0V0D0X0U160G182W1909\",сове:\"0V030X0F1605181J\",совер:\"181D\",совет:\"0X0C181C\",совсе:\"181D\",согла:\"0X0E181J\",сож:\"18081M0N\",\"сож \":\"1M0R\",сок:\"0V090X0N160L170C180N190F\",сол:\"0V040X06160A1705180U190P1L1B\",сон:\"0V060X0N1717180A190M1L1W1M5W\",\"сон \":\"0V050X07170P180819061M36\",сонд:\"1L23\",сонда:\"1L2H\",сони:\"0X021M17\",сонин:\"1M16\",сонир:\"1M16\",сонс:\"1M1Z\",сонсо:\"1M1Q\",сонсс:\"1M1E\",соп:\"0V070X0B170F1804\",сос:\"0X0Y180X\",сосе:\"0X0K180D\",сосем:\"0X0F\",сост:\"0X0L180Q\",соста:\"0X0H180F\",сот:\"0X0O1708180D19041L0P\",\"сот \":\"0X0U18041L0O\",соғ:\"1L1C\",соғы:\"1L21\",соғыс:\"1L2H\",соң:\"1L19\",сп:\"0V200X1K161C173R1844194F1L2R1M07\",спа:\"0V1J0X0O160Q175N181U19141L2I\",спав:\"0V1517091907\",спава:\"0V2W\",спад:\"0X0416031739\",спада:\"172J\",спадз:\"171T\",спазн:\"171L\",спе:\"0V140X0S1611171Y181B190N1L11\",спи:\"0V0C0X1A1610180T190P\",спие:\"0X0O\",спл:\"0V070X0C170F180A1905\",спо:\"0V0Y0X17161D170C182X192M1L0Z\",спод:\"0V0A0X0716081809191Q\",сподо:\"190W\",споді:\"191J\",споко:\"0X06160F181X190A\",спорт:\"0V0A0X05160U180X190K1L2H\",спр:\"0V1E0X1H16121730181W192V\",спра:\"0V0G0X0Q160I174K1810192C\",спраб:\"171W\",справ:\"0V0N0X0H160Y173G18161937\",спре:\"0V120X0Z160C1802\",спрем:\"0V1X0X0T\",спро:\"0X08181A190X\",спроб:\"191B\",спрос:\"1828\",спу:\"0V0B0X07170C180C19031L2I\",спуб:\"170E18021L4J\",спубл:\"170L18041L6G\",спя:\"160R171E1803\",спява:\"1720\",спі:\"170K191V1L0T\",спів:\"1916\",співа:\"191G\",ср:\"0V0T0X0N160I1704180J\",сра:\"0V040X0D160A180K\",сре:\"0V1P0X1R161P180G\",срещ:\"161C\",среща:\"1617\",срещн:\"1618\",срећ:\"0V1B\",среќ:\"0X1N\",среќа:\"0X0K\",среќе:\"0X0O\",среќн:\"0X0F\",сс:\"1705181T19071L0R1M0O\",сск:\"181E\",сска:\"181J\",ссказ:\"1821\",ссо:\"18081M0S\",ссон:\"1M0V\",\"ссон \":\"1M1A\",ссэ:\"1M0N\",ссэн:\"1M0R\",\"ссэн \":\"1M1E\",ст:\"0V9K0X731688178O18JO19BM1LE51M1T\",\"ст \":\"0V1O0X25162R171H180W190O1M0J\",ста:\"0V8U0X80167W17ES18B9195Q1LH91M12\",\"ста \":\"0V150X1O161D173R182V190S1L2A\",став:\"0V2M0X30162P171Z183S191G\",става:\"0V0C0X0K1631171A18111908\",стави:\"0V4E0X1L161I1833190T\",ставл:\"181T1905\",ставн:\"0V0W0X0D1902\",ставу:\"0X0H\",стад:\"0V0518021L26\",стады:\"1L30\",стай:\"170I1L141M0T\",\"стай \":\"170I1M1I\",стал:\"0V0X0X02173X182X190R1L28\",\"стал \":\"1820\",стала:\"0V0P1726180T190A\",сталі:\"171V\",\"стам \":\"0X0C1L1C\",стан:\"0V3P0X43162S1734182H19181LGX\",\"стан \":\"0V0W0X071606170O18021LAT\",стана:\"0V0L0X1P1637170R18091L3N\",станд:\"1L7Z\",стане:\"0V2P0X0Z161Q171G180T190E\",стани:\"0V4E0X0N160A\",станн:\"190R1L2X\",стано:\"0V0D0X0G160E170O18251904\",стану:\"0V0E0X0H180D1902\",\"стао \":\"0V1M\",стап:\"0X0M1L1U\",\"стап \":\"0X021L2D\",стар:\"0V0T0X0V160O1743181Z19151L4Q\",стара:\"0V0H0X07160D172B1818190A\",стары:\"171E180K1L3E\",стат:\"0V090X0F160U170S181V1916\",стати:\"0V0E0X031807190U\",статъ:\"161B\",стать:\"181W\",стая:\"160Z17151806\",стаят:\"1614\",стаў:\"1743\",\"стаў \":\"1724\",стаўн:\"172O\",ств:\"0V2R0X2X164Q172L186M190P\",ства:\"0V2A0X0M161P173L18141905\",\"ства \":\"0V0I0X0A1617173Z181X1907\",ствар:\"0V5B0X0A170W\",стве:\"0V060X0T1612182A1902\",ствен:\"0V0G0X0V1629183D\",стви:\"0X02160P181R\",ствит:\"0X021609181R\",ство:\"0V0Q0X1G161X170B182W190H\",\"ство \":\"0V1B0X1316211839190F\",ствов:\"0V0B181R\",ствот:\"0X0F1621\",ству:\"0V060X121604181B\",ствув:\"0X141608\",сте:\"0V310X19162Y182E190V1L4U\",\"сте \":\"0V370X0J161Z181419051L0O\",стен:\"0V030X0E160Y180K19021L0O\",\"стен \":\"0X0416131808\",стер:\"0X06180C190D1L2X\",сти:\"0V4X0X4I16541855193C1L1K\",\"сти \":\"0V200X17160Z183U1920\",стиг:\"0V0T0X15161K18051906\",стигн:\"0V0N0X10162E18021904\",стин:\"0V0P0X2I1625180E1908\",стина:\"0V0T0X2A164018031904\",стл:\"1612180K\",стли:\"1617180S\",стлив:\"162J181G\",стн:\"160X1816\",сто:\"0V480X5Z164W172U189E19671L0G1M2K\",\"сто \":\"0V1V0X2A162K170C183N192S\",стои:\"0X0A160C181F\",стоит:\"1820\",стой:\"1608170C180E1M2K\",\"стой \":\"1608180I1M51\",стол:\"0V0E0X08160C171A181Q190N\",стон:\"0V0Z0X2P181X192C\",\"стон \":\"0V130X2U181M190C\",стона:\"0V09180E191B\",стоне:\"181K\",стоні:\"191Q\",стор:\"0V0G0X0U160Q1716181V190P\",стори:\"0V0J0X0G16121813\",сторо:\"181T1903\",сторы:\"171O\",стот:\"0V020X0H160E18021902\",стоя:\"160L181N1904\",стој:\"0V120X0O\",стоја:\"0V0A0X0C\",стоји:\"0V1O\",стр:\"0V2E0X26164A175I186N193Z1L16\",стра:\"0V1N0X1Q1638174J183W19241L0Q\",\"стра \":\"0V0A0X0C1618171D180R190K\",страл:\"0V150X0316071712181D191P\",стран:\"0V1R0X0L162Y1838\",страх:\"161X170L180D1905\",стре:\"0V050X0D1608182D1904\",стрет:\"181D\",стреч:\"181I\",стро:\"0V080X0D160H17131829190C\",стрэ:\"171Y\",стрі:\"191F\",стріч:\"190T\",\"стта \":\"161J\",сту:\"0V140X0G160Z172F181T191R1L0J\",студ:\"0V0G0X0A1610170R180G190I1L0T\",студе:\"0V0P0X05161W180M190M1L15\",ступ:\"0V04172C1819190Z\",ступн:\"1726180A1911\",стъ:\"161E\",\"стън \":\"161E\",сты:\"1724180L1L8U\",\"сты \":\"171418081L66\",стыр:\"1L3V\",стыру:\"1L27\",стық:\"1L42\",\"стық \":\"1L4K\",сть:\"186D191K\",\"сть \":\"187P191S\",сті:\"19251L5Q\",\"сті \":\"19101L2H\",стік:\"1L48\",\"стік \":\"1L40\",су:\"0V2Y0X1Y160F172F181H191V1L2E1M25\",\"су \":\"0V5F171F180C19141L1N\",сув:\"0X0L160K190F\",сува:\"0X0Q160M190G\",сум:\"0V0A0X5G1604171H180D190R\",\"сум \":\"0X73\",суп:\"0V0H0X071605171D1808190A\",супра:\"171Z\",сур:\"0V020X051604170J180319021L0M1M22\",сург:\"1M15\",сургу:\"1M22\",сус:\"0V090X04171S1802190A\",суст:\"0V040X041723\",сустр:\"1733\",сутр:\"0V0V160R\",сутра:\"0V29\",сутри:\"161M\",суу:\"1M39\",сууд:\"1M1P\",сууда:\"1M2J\",суул:\"1M0Z\",суулт:\"1M1U\",суш:\"0V020X0F160318021L0F\",сушно:\"0X0E\",суы:\"1L1B\",сф:\"0X051802\",сфа:\"0X0F\",сх:\"0V040X02170B180F190F\",сц:\"0V02174T1802190A\",сць:\"1763\",\"сць \":\"179Z\",сця:\"171F1904\",сці:\"176R1907\",\"сці \":\"178Z1908\",сч:\"0X0316021703180Y1M0K\",\"сч \":\"1M19\",счас:\"1816\",счаст:\"1827\",счит:\"16041814\",счита:\"1608181R\",сш:\"18051L0I\",съ:\"163V1808\",съжал:\"1614\",съм:\"168T\",\"съм \":\"169O\",със:\"161H\",\"със \":\"160Y\",същ:\"1619\",сы:\"170P180X1LE21M09\",\"сы \":\"170W180W1LC8\",сыз:\"1L42\",\"сыз \":\"1L6E\",сыл:\"18031L1W\",сым:\"1L2L\",сын:\"170O180I1LE1\",\"сын \":\"170H180A1L5P\",сына:\"170G18071L5K\",\"сына \":\"170K180D1L4W\",сынд:\"1L9S\",сында:\"1LCY\",сыны:\"1L7C\",сының:\"1L8Y\",сыр:\"170B18051L2T\",сың:\"1L22\",\"сың \":\"1L2Z\",сь:\"171618601953\",\"сь \":\"171X18C0195Z\",ськ:\"192V\",сько:\"191D\",ською:\"191A\",\"ську \":\"190Y\",сьо:\"16031928\",сьог:\"192E\",сього:\"193H\",сьц:\"171U\",сьці:\"172Y\",\"сьці \":\"174E\",сэ:\"170D1M5J\",сэж:\"1M0X\",\"сэж \":\"1M13\",сэл:\"1M0X\",сэн:\"170B1M9A\",\"сэн \":\"1MA1\",сэх:\"1M0V\",сэхг:\"1M0P\",сэхгү:\"1M1E\",сээ:\"1M0O\",сю:\"170C180I190B\",\"сюда \":\"181T\",ся:\"160D177T18A719C4\",\"ся \":\"160J17I118IV19LM\",сяб:\"172W\",\"сябе \":\"172A\",сябр:\"1737\",сябра:\"171L\",сябро:\"172Q\",\"сяка \":\"1611\",сястр:\"171M\",сяц:\"1722180F190E\",сѐ:\"0X0L\",\"сѐ \":\"0X28\",сё:\"171Y181U\",\"сё \":\"173K183P\",сёд:\"171D\",сёды:\"172B\",\"сёды \":\"173G\",сён:\"171W\",сённ:\"1737\",сёння:\"174R\",сі:\"172P192Q1L8H\",\"сі \":\"1711192Y1L2R\",сіз:\"1LAG\",\"сіз \":\"1LBU\",сізг:\"1L21\",сізге:\"1L2X\",сізд:\"1L5R\",сізді:\"1L6J\",сім:\"1722190T1L1G\",\"сім \":\"172P190M\",сін:\"171019031L49\",сіп:\"170A1L1D\",\"сіць \":\"171R\",сің:\"1L1P\",\"сің \":\"1L2A\",сқ:\"1L25\",сқа:\"1L5E\",\"сқа \":\"1L57\",сқан:\"1L21\",\"сқан \":\"1L2K\",сқар:\"1L26\",сү:\"1L0R1M0C\",сүй:\"1L18\",сұ:\"1L0O\",сә:\"1L0W\",сө:\"1L1O1M18\",сөз:\"1L28\",сөй:\"1L24\",сөйл:\"1L3V\",сөйле:\"1L5I\",сөн:\"1M2M\",\"сөн \":\"1M2W\",т:\"0VIX0XL716N017CH18PL19O81LKY1MEB\",\"т \":\"0V2F0X6X167H173F18HV193C1L6A1M3N\",\"т-\":\"170218021L06\",тi:\"1L2F\",\"тi \":\"1L1K\",тiк:\"1L1N\",\"тiк \":\"1L2H\",тiл:\"1L1D\",та:\"0V9O0X9P16B017HO18D719AG1LLU1MBT\",\"та \":\"0V9H0XGV16NY17KF185R194Y1L5E1M4Q\",таа:\"0X2V1M1T\",\"таа \":\"0X3L1M0M\",таала:\"1M16\",таб:\"0V041745180419031L2K\",табе:\"175N\",\"табе \":\"178B\",табы:\"1L2J\",табыл:\"1L27\",тав:\"0V2F0X2K162G172V182S191V1M10\",\"тав \":\"0V040X081914\",тава:\"0V060X0Q161I173N180K1905\",\"тава \":\"0V070X09162B\",тавац:\"171V\",тави:\"0V1Q0X1I160P181N190K\",\"тави \":\"0V1D0X0Y160R\",тавил:\"0V0E0X04181O1905\",тавув:\"0X0H\",таг:\"0X021734\",тага:\"1734\",\"тага \":\"174M\",таго:\"171Y\",\"таго \":\"172I\",тад:\"0V09170T18021L2W1M0O\",тады:\"17161L4J\",\"тады \":\"171O1L64\",тае:\"0X021725181O\",\"тае \":\"172F1802\",тает:\"181T\",\"тает \":\"182L\",таз:\"16381L0N\",тази:\"163N\",\"тази \":\"167I\",тай:\"160T172W180K190L1L2X1MCJ\",\"тай \":\"160D173Q180619091L2F1MDN\",так:\"0V2J0X1Q1621178H18721968\",\"так \":\"0V0L176U185F193O\",така:\"0V070X1C161G170W180M190O\",\"така \":\"0X1E162Y190Y\",таки:\"16091815191E\",такий:\"191E\",тако:\"0V1N0X051607171T1828190Q\",\"тако \":\"0V3E\",такой:\"170M181X\",такс:\"0V060X041606172418071907\",такса:\"172R\",такі:\"1732190C\",\"такі \":\"1728190H\",тал:\"0V1O0X0K160S173M1843191I1L6A1M1V\",\"тал \":\"0X051604181W\",тала:\"0V0P1603172A180W190M1L2V1M1H\",\"тала \":\"0V1R172W1812190N\",талаа:\"1M2R\",талд:\"1L2A\",талды:\"1L34\",тался:\"181F\",талі:\"171U190C\",талғ:\"1L28\",талға:\"1L37\",там:\"0V1X0X3316201752181M19141L43\",\"там \":\"0V0M0X2E161Z174N181W19151L14\",тама:\"0X03170Q1L4S\",тамас:\"1L2H\",тамақ:\"1L2A\",тамо:\"0V1I\",\"тамо \":\"0V3T\",таму:\"0X1I1726\",\"таму \":\"0X1L1738\",тан:\"0V3K0X3G162X174H182I192J1LED1M59\",\"тан \":\"0V0T0X091604170I180519031LB41M15\",тана:\"0V090X1P161K170P18081L3D\",\"тана \":\"0X0R161V170L1805\",танам:\"0X0H\",танд:\"1L6R1M19\",\"танд \":\"1M2J\",танда:\"1L2K\",танды:\"1L7B\",тане:\"0V120X0Y160U1711180G190B\",\"тане \":\"0V0Y0X0H160W171718021905\",тани:\"0V1S0X0N1608180819021L0Q\",\"тани \":\"0V290X0I160A1902\",танн:\"173C1802191C1L26\",танне:\"172Z\",танны:\"18031L2H\",тання:\"170S191A\",тано:\"0V060X0G1607170H18171904\",танов:\"0V09160E170E18261904\",тану:\"0V060X0H18071902\",танув:\"0X0H\",таны:\"18031L3O1M27\",\"таны \":\"18051M3U\",тао:\"0V16\",\"тао \":\"0V1E\",тап:\"0V030X0J17061L51\",\"тап \":\"0X021L4S\",тапт:\"1L28\",тапты:\"1L23\",тар:\"0V100X1316111760181W191J1LG91M0S\",\"тар \":\"0V080X0H1606171M180219031L7Q\",тара:\"0V0B0X0C160C1734180Q19081L2V\",тард:\"1L4S\",тарды:\"1L61\",тари:\"0V0G0X0C160A180D190B1L36\",тарих:\"1L4D\",тарт:\"1L23\",тары:\"172F180B1LAW\",\"тары \":\"171W1L6M\",тарын:\"1L7H\",тас:\"0V020X05170N180319021L3O1M0J\",таст:\"0X05180419031L3O\",таста:\"1L2K\",тасты:\"1L2U\",тат:\"0V0O0X2F162U171D183119281L1E1M0X\",тата:\"0V070X1U161W170W18041904\",\"тата \":\"0V090X1Y1640170I18021903\",тати:\"0V0B0X0516041804191H\",\"тати \":\"0V0R1805191K\",татк:\"0X0M1603170D1803\",татко:\"0X0L1606170I\",татъч:\"1617\",тать:\"182L\",\"тать \":\"183D\",тау:\"1L3J\",\"тау \":\"1L28\",тац:\"0V0F0X021604172418031902\",таць:\"1724\",\"таць \":\"1736\",тая:\"1612172F180C\",\"тая \":\"160O1735180D\",таята:\"1614\",тај:\"0V2B0X0H\",\"тај \":\"0V1H0X08\",тањ:\"0V0V0X03\",таў:\"173S\",\"таў \":\"173H\",таўн:\"171S\",таўні:\"172N\",тағ:\"1L2X\",тағы:\"1L3K\",\"тағы \":\"1L47\",таң:\"1L22\",таңда:\"1L27\",тб:\"16041705180519081L0C\",тв:\"0V1Y0X1O162A171Y18501920\",тва:\"0V220X0P162H175C180W190I\",\"тва \":\"0V090X0C160R173G18121907\",\"твам \":\"0X03161A1802\",твар:\"0V280X0B160E1722190E\",твари:\"0V2J0X06190L\",тварн:\"0V260X03\",\"твая \":\"171T\",тве:\"0V060X0Q1614170A18391908\",твен:\"0V070X0W1616181T\",твени:\"0V080X0I160Y\",твенн:\"183A\",твет:\"181B\",тви:\"0X0C160W181B1903\",твите:\"0X03160A181P\",тво:\"0V2Q0X3K164A171C184M192Q\",\"тво \":\"0V0L0X13160Y181R190E\",твова:\"0V0C181U\",\"твой \":\"1721181E\",твор:\"0V180X1H161K170O180F190E\",творе:\"0V0R0X0G161318061902\",твори:\"0V200X0N161G180B1906\",твот:\"0X0H160Z\",твото:\"0X0I1622\",твоя:\"160Y180L190S\",\"твоя \":\"160J18131914\",твоят:\"161H\",твој:\"0V130X15\",твоја:\"0V0M0X0P\",твојо:\"0X0E\",тву:\"0V070X0T16031705180Z1902\",твув:\"0X121604\",твува:\"0X151608\",твъ:\"160Z\",твър:\"1611\",твърд:\"161Y\",твій:\"190T\",\"твій \":\"1917\",тг:\"16071M25\",тга:\"1M1E\",тги:\"1M10\",тгий:\"1M17\",\"тгий \":\"1M2F\",тго:\"160U\",тгов:\"160V\",тгово:\"161O1802\",тгэ:\"1M2M\",\"тгэж \":\"1M16\",тгэл:\"1M1F\",тгэлт:\"1M22\",тд:\"160318081M0A\",те:\"0V8M0X7Y169I18G3199A1LD71M0M\",\"те \":\"0VFK0XG716M618CM198Q1L4O\",теб:\"0V0N0X1V161L1883193H1L0F\",\"теб \":\"1619\",тебе:\"0V0K0X2G160K18671942\",\"тебе \":\"0V1G0X2L161618B1195U\",тебя:\"185A\",\"тебя \":\"189I\",тег:\"0X05160A180419021L23\",тед:\"0X021L1C\",теді:\"1L2D\",\"теді \":\"1L30\",тез:\"16151L0P\",тези:\"1619\",\"тези \":\"162O\",тей:\"180Q190H1L1C\",тек:\"0V0E0X0M160C180I19091L1T\",тел:\"0V160X2M165Z188F192O1L2V\",\"тел \":\"0X0T1616182L\",теле:\"0V0U0X0Z1616182519281L2T\",телеф:\"0V1I0X0H1614181D1927\",тели:\"0V040X0T161L18151904\",\"тели \":\"0X0L161R1823\",телит:\"0X08161H\",телн:\"0X0B161P\",телно:\"0X081629\",тель:\"184P190J\",\"тель \":\"181O190K\",тельн:\"18651903\",тем:\"0V0F0X0I160F1817190J1L20\",тен:\"0V0L0X271620180Z190I1L2I1M0O\",\"тен \":\"0V050X1P161418071L3F\",тени:\"0V090X0I160L180B\",тенн:\"18091M0T\",тенни:\"180F1M1M\",теп:\"0V040X081602180X190N1L1D\",тепер:\"181Q190R\",тер:\"0V150X1X161D183P191R1LAN\",\"тер \":\"0V050X0B1603180M190G1L4M\",тера:\"0V0A0X0T18071906\",терд:\"1L3I\",терді:\"1L3A\",тере:\"0V0B0X0N160V181H19041L1U\",терес:\"0V0N0X0K161S182H\",тері:\"190B1L6I\",\"тері \":\"19061L2N\",терім:\"1L23\",терін:\"1L3U\",тес:\"0V080X0C160P181H190Z1L1X\",тесь:\"181O1904\",\"тесь \":\"18341906\",теся:\"190W\",\"теся \":\"191B\",тет:\"0V0F0X0Q160L180B19061L1S\",теті:\"19021L2A\",тетін:\"1L2A\",теу:\"1L1O\",теш:\"0V0F0X0W160B1809\",тешк:\"0V0I0X0U\",тешко:\"0V130X0Q\",тељ:\"0V1N\",тең:\"1L35\",\"тең \":\"1L3D\",ти:\"0V7R0X6B165V188N19N81L2A1M0Y\",\"ти \":\"0VBG0XBN16BR187X19SG\",тив:\"0V0N0X1H1619180Y19121L0I\",\"тив \":\"0V080X0Y160E180J190P\",тиг:\"0V0P0X0V161F18051907\",тигн:\"0V090X0Y16151903\",тигна:\"0X0O161O\",тид:\"0V040X0R16271802\",тида:\"0X02160Y\",\"тида \":\"1620\",тиде:\"0X0M16191802\",\"тиде \":\"0X0L161C\",тие:\"0X0N160D180B\",\"тие \":\"0X0U160A180D\",тий:\"180519121M25\",\"тий \":\"18061919\",тийм:\"1M1N\",\"тийм \":\"1M2J\",тик:\"0V0A0X0C160I180T190J1L0R\",тил:\"0V0R0X0L160B1820190P\",\"тил \":\"0X0G1604181E\",тим:\"0V1G0X0Q160F1818192B\",\"тим \":\"0V130X04160C181C190K\",тиме:\"0V030X0Q1802191B\",\"тиме \":\"0V060X0R1917\",\"тиму \":\"190R\",тин:\"0V0V0X2A162E180S190Z1L0I\",тина:\"0V0F0X2C16231806190F\",\"тина \":\"0V130X22163O180A190L\",тинат:\"0X0D160N\",тио:\"0V180X05\",\"тио \":\"0V1G\",тир:\"0V0H0X0P160F180M190D\",тира:\"0V0C0X0Q160B18091902\",тис:\"0V070X04160D18071950\",тися:\"195B\",\"тися \":\"197E\",тит:\"0V150X0Z161E1836190Q1L0S\",тите:\"0V0O0X0Z1618181S\",\"тите \":\"0V1O0X0Z162G182Z\",тить:\"181O1909\",\"тить \":\"182H190C\",тич:\"0V0I0X0F160N180M190H\",тиш:\"0V0Z0X10160D18081903\",\"тиш \":\"0V090X10160A\",тиі:\"1L1G\",\"тиіс \":\"1L2D\",тиј:\"0V0B0X0M\",тија:\"0V030X0T\",\"тија \":\"0V080X0I\",тк:\"0V0I0X0R160T171L181H190Z1L2F\",тка:\"0V0M0X1D161Z172X180S190K\",\"тка \":\"0V0A0X0O160L1733180F190L\",ткаж:\"0X0G1609\",тказ:\"0V090X06160R180H\",тказа:\"0V0A1617180L\",тке:\"0V04180319021L3J\",ткен:\"1L3X\",\"ткен \":\"1L4K\",тки:\"0V030X0B1609180I190G\",тко:\"0V090X0U160I170E1809190C\",\"тко \":\"0V080X0V160518031904\",\"тку \":\"0V08171W180F190N\",ткі:\"171H19041L2Z\",\"ткі \":\"1723\",ткіз:\"1L3D\",тл:\"0V040X04160F170C180M1907\",тли:\"0X08161G18101903\",тлив:\"0X061619180W1902\",\"тлив \":\"0X03161D180G\",тм:\"16021804\",тн:\"0V0V0X0L16141711181X19151L041M08\",тна:\"0V0B0X0I1615171P180E1909\",\"тна \":\"0V060X0D160R170P18041907\",тни:\"0V0L0X0L1610180K190I\",тно:\"0V1B0X10162K1827190C\",\"тно \":\"0V1C0X15161Y181I1909\",тново:\"1611\",то:\"0VFB0XJI16G717AP18SA19NY1L5H1M63\",\"то \":\"0VG20XL716M717JL18RY199B\",\"то-\":\"1708181Y1902\",\"то-ни\":\"181S\",\"то-т\":\"181O\",\"то-то\":\"1834\",тоа:\"0X9Z160O18031905\",\"тоа \":\"0XCS\",тоб:\"0V0S0X06160N170I1851194R1L0K\",тобо:\"0V0H1815190W\",тобой:\"1823\",тобою:\"191B\",тобус:\"0V180X09161J171B1814190Q\",тобы:\"1857\",\"тобы \":\"189D\",тобі:\"1949\",\"тобі \":\"1964\",тов:\"0V0V0X0W16A6170P182F191H\",\"тов \":\"0X0I1605181B\",това:\"0V0N0X0316AI170I180N190G\",\"това \":\"0V0816JG1808190C\",тог:\"0V0V0X0A160B183N191A1M2H\",\"тога \":\"0V1X\",тогл:\"1M21\",тогло:\"1M42\",того:\"0V04184019121M0V\",\"того \":\"187A191J\",тое:\"0X061606171J18051902\",\"тое \":\"172M1806\",тоже:\"1814\",\"тоже \":\"1820\",тоз:\"162H\",този:\"162T\",\"този \":\"165V\",тои:\"0X08160B1811\",\"тоит \":\"181T\",той:\"167X1719181N190E1M40\",\"той \":\"168R171Y1823190G1M4L\",ток:\"0V0G0X0J160X1709180N190J1L0D\",тол:\"0V0U0X21162L173V183P190O1L1X1M0L\",толк:\"0X26162K1809\",толко:\"165D1802\",толку:\"0X291803\",толь:\"175M183G\",тольк:\"17841866\",том:\"0VK00XQ516IQ177218OJ19S01L6Q1M5K\",\"том \":\"0VH40XSD16KA177Q18O719PT1L8Z1M52\",тома:\"0V3X0X051605173D18631982\",\"тома \":\"0V9E174H18AP19BA\",томе:\"0V0V0X0218071914\",\"томе \":\"0V290X02180D191M\",томны:\"1L23\",томо:\"0V2916051821192N\",томов:\"0V2W1909\",томом:\"0V241839193D\",тому:\"0V2X170R185C195G\",\"тому \":\"0V7B1715189L197S\",томы:\"1M0R\",тон:\"0V0W0X291606170I181P19271L111M0J\",\"тон \":\"0V0G0X2S180X190A\",тона:\"0V030X021809190W\",\"тона \":\"0V09180E191B\",\"тоне \":\"181L\",тоні:\"1919\",\"тоні \":\"191S\",топ:\"0V0D0X0H160D180619071L0S\",тор:\"0V0Z0X1N161L171Q184U191J1L1G\",тори:\"0V0B0X0M160U180U1906\",тория:\"1617180E\",торно:\"0X0C\",торо:\"0X0618281906\",торы:\"1724181Q1L0Q\",торые:\"181J\",\"тось \":\"190Y\",тосьц:\"171R\",тот:\"0V020X27160V1705182D1902\",\"тот \":\"0X241835\",тото:\"0X0G160W\",\"тото \":\"0X0H161X\",тотук:\"0X0D\",тох:\"16031M0O\",тохи:\"1M0R\",тохио:\"1M1A\",точ:\"0X0L160M1817190B\",точн:\"0X0G160L18181907\",точно:\"0X0D160Y181W1907\",тоя:\"160N18171904\",тој:\"0V100X38\",\"тој \":\"0V070X3P\",тоў:\"171D\",тп:\"0V0D0X091603180C1L16\",тпа:\"0X021L1J\",тпе:\"0X021L1K\",тпо:\"0V050X0C\",тр:\"0V4D0X3D1649174T187919701L10\",тра:\"0V3O0X1R163D175P1857194E1L0Y\",\"тра \":\"0V1D0X0D160N17321827191L\",траж:\"0V0Z0X0518021906\",тражи:\"0V26\",трал:\"0V0G0X031604170T180S1917\",трали:\"0V160X031607181D\",тралі:\"170P191P\",тран:\"0V0Q0X0L161J170G181U19021L0T\",трана:\"0V070X0A161A180H\",трап:\"170J190U\",трапи:\"1914\",трах:\"160W170E18081904\",трг:\"0V020X0D\",тре:\"0V4O0X761626183P191I\",\"тре \":\"0V040X0Y161B1807\",треб:\"0V4M0X7K1604180J191E\",треба:\"0V9S0X7O191N\",трет:\"0X07181O1905\",трети:\"0X05181G\",треть:\"181N1902\",три:\"0V1K0X17162U182W1938\",\"три \":\"0V140X0Z161B181V1917\",трим:\"16051805191I\",трима:\"160A191N\",трин:\"0V030X03160W18041904\",\"трин \":\"1615\",тро:\"0V0X0X10160Y171L182X191V1L0I\",трох:\"170N191A\",трохи:\"191W\",тру:\"0V0V0X0J161C170W1819190K\",труд:\"0V0B0X0E160W1812\",трудн:\"161A181F\",тръ:\"1617\",тръг:\"1619\",тръгв:\"1619\",тръгн:\"161G\",тры:\"174P1808\",\"тры \":\"172F1807\",трым:\"173J\",трыма:\"1748\",трэ:\"175O\",трэб:\"1778\",трэба:\"1769\",трэбн:\"1748\",тря:\"1672180E1905\",тряб:\"167V\",трябв:\"16FE\",трі:\"19431L0D\",тріб:\"192Z\",трібн:\"193Z\",тс:\"0V040X091605184U19031L0A\",тсе:\"0X0E\",тст:\"0V030X0D160A180T\",тся:\"1894\",\"тся \":\"18C4\",тт:\"0X0416081803190O1L9J1M0F\",ттi:\"1L24\",ттiк:\"1L28\",\"ттiк \":\"1L37\",тта:\"0X05160V1L5H1M0Z\",\"тта \":\"0X05160Y1L1Z\",ттай:\"1M13\",\"ттай \":\"1M22\",ттар:\"1L5A\",\"ттар \":\"1L23\",ттары:\"1L3H\",тте:\"1L5B\",ттер:\"1L5A\",\"ттер \":\"1L20\",ттері:\"1L3A\",тты:\"1L7R\",\"тты \":\"1L6P\",ттық:\"1L46\",\"ттық \":\"1L56\",ттың:\"1L2H\",\"ттың \":\"1L3E\",ття:\"1919\",\"ття \":\"191E\",тті:\"19051L79\",\"тті \":\"19051L7M\",ттік:\"1L3O\",\"ттік \":\"1L4T\",\"ттің \":\"1L23\",ту:\"0V1I0X1H1617173Y183K194F1L4E1M1L\",\"ту \":\"0V2E173C183619241L2J\",тув:\"0X0Y160K1915\",тува:\"0X1A160N191C\",тувам:\"0X0D160A\",туват:\"190V\",туд:\"0V0D0X08160W170S1815190U1L1N\",туда:\"1815\",\"туда \":\"1824\",туде:\"0V0A0X04160W180C190F1L17\",туден:\"0V0P0X03161W180M190M1L19\",тук:\"0X38162Y170818061902\",\"тук \":\"16381804\",тука:\"0X3Q160418021902\",\"тука \":\"0X3X16081802\",туку:\"0X0M\",\"туку \":\"0X0K\",\"туль \":\"171M\",туп:\"0V04171G1810190V\",тур:\"0V0D0X0H160G171P180K190W1L3H1M0J\",тура:\"0V040X071609170M180819051L57\",турал:\"170E18021L5Y\",тус:\"1M1W\",туса:\"1M0R\",тусал:\"1M1A\",тусл:\"1M17\",тусла:\"1M2F\",тут:\"172J180U192L\",\"тут \":\"17461813192Z\",тух:\"1M0Q\",туха:\"1M0V\",тухай:\"1M1Q\",\"тую \":\"172218081904\",туғ:\"1L1E\",туға:\"1L2F\",тф:\"1702\",тх:\"0X02\",тц:\"18071902\",тч:\"170518051902\",тш:\"1L0E\",тъ:\"1618\",тър:\"161L\",тът:\"160V\",\"тът \":\"160Z\",тъчно:\"1615\",ты:\"1791188N1LHU1M0D\",\"ты \":\"17K518FY1LE1\",тыл:\"170918061L2D\",тым:\"173S180A1L2I\",\"тым \":\"175X180A1L2A\",тын:\"170A18031LAA\",\"тын \":\"1L94\",тына:\"1L2X\",тынд:\"1L4H\",тында:\"1L4W\",тыны:\"1L34\",тып:\"1L33\",\"тып \":\"1L5K\",тыр:\"170N180B1L9E\",\"тыр \":\"1L3M\",тыра:\"1L2T\",тырды:\"1L23\",тыру:\"1L2M\",тыры:\"170O1L4Z\",тырып:\"1L27\",тырыс:\"1L2K\",тыс:\"170F180A1L2K\",тыя:\"171X\",\"тыя \":\"1739\",тығ:\"1L1G\",тығы:\"1L23\",тық:\"1L5M\",\"тық \":\"1L86\",тың:\"1L51\",\"тың \":\"1L7M\",ть:\"18IB19B0\",\"ть \":\"18R519E4\",тьк:\"191H\",\"тько \":\"190W\",тьс:\"185D198B\",ться:\"1878199N\",\"ться \":\"18CR19DF\",тэ:\"171X1ME2\",тэг:\"1M0X\",тэгэ:\"1M0T\",тэд:\"1M2C\",\"тэд \":\"1M23\",тэй:\"1MAZ\",\"тэй \":\"1MBR\",тэйг:\"1M0P\",тэл:\"17231M0L\",\"тэл \":\"1M0P\",тэле:\"1734\",тэлеф:\"1736\",тэн:\"170G1M23\",\"тэн \":\"1M11\",тэнд:\"1M0R\",\"тэнд \":\"1M1I\",тэр:\"171Z1MH7\",\"тэр \":\"170I1MIP\",тээ:\"1M1V\",\"тээ \":\"1M1P\",тю:\"18051907\",тя:\"161I180R1912\",\"тя \":\"165B180B191E\",тё:\"1809\",ті:\"19481LCH\",\"ті \":\"192R1LBC\",тів:\"192Z\",\"тів \":\"1938\",тіг:\"1L1E\",тік:\"19051L59\",\"тік \":\"19021L6X\",тіл:\"19221L4U\",тіла:\"190Z\",\"тіла \":\"191E\",тілд:\"1L26\",тільк:\"1910\",тілі:\"1L3Z\",тілін:\"1L30\",тін:\"19061L5R\",\"тін \":\"1L57\",тінде:\"1L23\",тіп:\"1L1Z\",\"тіп \":\"1L2Q\",тір:\"19031L2D\",тің:\"1L2U\",\"тің \":\"1L4M\",тљ:\"0V02\",тњ:\"0V02\",тқ:\"1L1M\",тқа:\"1L3B\",тқан:\"1L34\",\"тқан \":\"1L30\",тү:\"1L321M3U\",түр:\"1L2X\",түрде:\"1L2H\",түс:\"1L3S\",түст:\"1L2Q\",түсті:\"1L3N\",түсі:\"1L2H\",түсін:\"1L2D\",түү:\"1M8P\",түүн:\"1M9R\",түүнд:\"1M51\",түүни:\"1MBF\",түүнт:\"1M2R\",тұ:\"1L2Z\",тұр:\"1L5X\",тұра:\"1L3R\",тұрғ:\"1L2O\",тұрғы:\"1L2K\",тә:\"1L0V\",тө:\"1L101M1L\",төг:\"1M0O\",төл:\"1L0O1M1C\",төлө:\"1M1H\",төлөв:\"1M16\",төлөө:\"1M1M\",төр:\"1L111M12\",у:\"0VF10X9A165Q17A718CT19GG1L741MC6\",\"у \":\"0VFL0X5E160Z17FN18IJ19LG1L741M7P\",\"у-\":\"160317021803\",уi:\"1L07\",уа:\"0V030X0416031709180819061L28\",уақ:\"1L28\",уақы:\"1L44\",уақыт:\"1L5V\",уб:\"0V0Y0X12160J170S181A190L1L11\",уба:\"0V0G0X1B160M170R18091902\",убав:\"0V0B0X1F160K\",убаво:\"0X0Q160K\",убе:\"0V090X0Q160E180K\",уби:\"0V1C0X1B1610180U190M\",\"уби \":\"0V050X0G160C1905\",убл:\"1606170M180619051L2L\",убли:\"160718071L4M\",ублик:\"160B180B1L6G\",убо:\"0V070X0J170A180A1904\",убов:\"0X0I\",ув:\"0V0Q0X4I1619170I181I196L1M0I\",\"ув \":\"0X081950\",ува:\"0V0I0XDZ163W171C1807198M\",\"ува \":\"0V040X63161J\",уваа:\"0X1N\",уваат:\"0X1F\",ував:\"0X0Z192T\",\"ував \":\"0X0T193N\",увал:\"0X0J160F1927\",\"увал \":\"0X0F160N\",увала:\"1607191Q\",ували:\"1918\",увам:\"0V030X52160W\",\"увам \":\"0X4B161M\",уваме:\"0X14160C\",уват:\"0X05160C193K\",увати:\"1952\",уваш:\"0X3G160C\",\"уваш \":\"0X2D160K\",уваше:\"0X1C\",увај:\"0V050X1H\",\"увај \":\"0X1F\",увањ:\"0X17\",ување:\"0X14\",уве:\"0V1E0X051607170D18111904\",увек:\"0V1D\",\"увек \":\"0V3G\",увер:\"0V060X0516031817\",увере:\"0V080X031826\",увид:\"1817\",увиде:\"181Q\",увс:\"0X0X160T180V190J\",увст:\"0X17160X1817\",увств:\"0X19161Z1827\",\"увся \":\"190W\",уг:\"0V130X0H160J170G181V190N1L161M1G\",\"уг \":\"0V060X0F160K180W190D1M0Q\",уга:\"0V0L0X0I160F170R1811190C1M1W\",угаа:\"1M1F\",угац:\"1M0R\",угаца:\"1M1I\",уге:\"0V0818021L38\",\"уге \":\"0V0A18021L5X\",уги:\"0V0F0X0C160P180J1902\",уго:\"0V180X0F160L170G1816190F\",\"уго \":\"0V130X0J160J\",уд:\"0V290X0R160V172V185T194L1L3D1M39\",\"уд \":\"0V040X0416061708180319051M1E\",уда:\"0V0U0X0I160D170Z183019081L3M1M54\",\"уда \":\"0V080X041605182S19021L2V\",удаа:\"1M1F\",\"удаа \":\"1M1U\",удал:\"0V060X06180F1M2M\",\"удал \":\"1M1Y\",удалд:\"1M2B\",удах:\"1M0T\",удахг:\"1M1I\",уде:\"0V1U0X0J161D183M192J1L1P\",\"уде \":\"0V0U191Y1L21\",уден:\"0V0A0X0F1619180C190F1L10\",удет:\"0V0518391906\",\"удет \":\"185B\",удз:\"174S\",удзе:\"1754\",\"удзе \":\"174Y\",удзь:\"172F\",\"удзь \":\"1733\",уди:\"0V2N0X0P160H18121923\",\"уди \":\"0V1Z0X0J160818041911\",удин:\"1915\",удино:\"1910\",удл:\"0X021M10\",удла:\"1M0V\",удлаа:\"1M1Q\",удн:\"0V0B0X0B160K170J180N190F\",уду:\"0V080X05171R181G190R\",\"уду \":\"0V03171Q181A190M\",уды:\"171O1L33\",\"уды \":\"17211L36\",удың:\"1L21\",\"удың \":\"1L2U\",удь:\"182M1931\",\"удь \":\"1832192Y\",уе:\"1602170W18161L0G\",\"уе \":\"0X0216021723\",ует:\"181O\",\"ует \":\"181P\",уж:\"0V0P0X0E160G1713183Y192V\",ужа:\"0V0E0X0D160J1715180I1902\",\"ужда \":\"1612\",уже:\"0V0A0X041603183F1953\",\"уже \":\"0V06183R195L\",ужи:\"0V0S0X0K16051810190V\",ужива:\"0V110X0E180C\",ужн:\"0V090X02160A1706182H\",ужно:\"0V060X021609182H\",\"ужно \":\"0V080X02160J184I\",ужо:\"171I1802\",уз:\"0V0R0X05160A170R181F191K1L0B\",узи:\"0V0E0X0C160F1803190F\",узс:\"170Q1813\",узск:\"1719181H\",узски:\"1827\",узь:\"180E191W\",узьк:\"1928\",узько:\"191V\",узьку:\"1911\",уи:\"160218021L05\",уй:\"170K1814190L1M0J\",\"уй \":\"1717180B190M1M0L\",уйс:\"181M1904\",уйст:\"1825\",уйста:\"183Z\",ук:\"0V0W0X19160Y171B1818191D1L05\",\"ук \":\"0V080X051631170G180A1906\",ука:\"0V0J0X3D160H1726180J1912\",\"ука \":\"0V0B0X42160E18081909\",уку:\"0V0N0X0I170F180C190C\",\"уку \":\"0V0H0X0J170N180C190A\",ул:\"0V0M0X0B160C172V181Z19441L1E1M3D\",\"ул \":\"0X0216051705180W1M0L\",ула:\"0V0O0X0D1604172F180J192R1L191M25\",\"ула \":\"0V0K0X04171R180E192Y\",улаа:\"1M13\",улася:\"171L190C\",улз:\"1M1M\",улза:\"1M19\",улзса:\"1M16\",ули:\"0V0G0X0A160G180W191O\",\"ули \":\"0V080X021807191J\",уло:\"0V060X03160A18061933\",\"уло \":\"0V0318021934\",улс:\"180I1M0O\",улт:\"0V0B0X0A16071M0X\",улы:\"170F180C1L1B\",уль:\"173R180K190E1M0V\",\"уль \":\"172Y1803\",ульн:\"171U\",уля:\"16041722180E190N\",улі:\"171J19021L0E\",ум:\"0V140X26160P172F183O193M1L0T\",\"ум \":\"0V050X5V1605170A18071903\",ума:\"0V050X06160T173H1858193T1L0M\",умав:\"170F190V\",\"умав \":\"1919\",умае:\"170V181O\",умает:\"181M\",умаеш:\"170T181H\",умал:\"170K181V190H\",\"умал \":\"182R\",умаю:\"1716182J191T\",\"умаю \":\"171K184I192J\",умає:\"1916\",умаєш:\"190T\",уме:\"0V1C0X0K160I172L181M190A1L0T\",\"умку \":\"170M1806190U\",умо:\"0V0C0X0E160F17081805190B\",умр:\"0V0E0X0I160E1804\",умре:\"0V050X0K1603\",умі:\"191P\",ун:\"0V130X0B1609170M180I190Q1L0J1M1R\",\"ун \":\"0V080X0516031708180219061M0X\",уна:\"0V0M0X06160A170O18051M0N\",унд:\"0X041603180519031M0N\",\"унд \":\"1M0P\",уни:\"0V0K0X0D160D180B19071L12\",униве:\"0V090X03160F180B1L2K\",уно:\"0V0Y0X021802190C\",\"уно \":\"0V11\",унт:\"180219031M0X\",унта:\"1M0P\",унш:\"1M15\",унши:\"1M11\",унших:\"1M1I\",уо:\"0V0J\",\"уо \":\"0V11\",уп:\"0V1M0X0U160P171F1824191Y\",упа:\"0V0L0X11160I170R180W190A\",\"упам \":\"0X0G\",упи:\"0V1N0X13160Y181U192G\",\"упи \":\"0V0F0X0P160E18021904\",упив:\"0X0C190U\",\"упив \":\"0X0B1917\",упил:\"0V0C0X051605181H190J\",\"упил \":\"0X051607181U\",упини:\"190R\",упити:\"0V06190X\",упить:\"181G\",упрац:\"171Z\",упі:\"171G1905\",ур:\"0V260X0R160T171I181A19171L2U1M5E\",\"ур \":\"0X03180219021M1C\",ура:\"0V4H0X0B160K171C180J19071L3K1M1L\",урад:\"0V4M\",уради:\"0VB7\",урал:\"170B1L46\",уралы:\"1L5Y\",ург:\"16041706180319031M2X\",урга:\"1M0P\",ургу:\"1M15\",ургуу:\"1M27\",ургү:\"1M1F\",ургүй:\"1M2V\",урд:\"1M0V\",урда:\"1M0V\",урдан:\"1M1E\",уре:\"0V050X0W160Y180619061L0J\",урен:\"0X12161118031904\",\"урен \":\"0X131625\",ури:\"0V0F0X0H1606180H190A1L0D\",урн:\"0V0G0X0K1615170M1809190E1L0S\",\"урна \":\"0V0B0X02161G1902\",урно:\"0V0A0X0L160D1803\",\"урно \":\"0V0N0X0L160B1802\",урт:\"180319031M4D\",урта:\"1M4R\",уртай:\"1M9A\",уру:\"0V04170D180419041L161M0N\",уруу:\"1M0R\",ус:\"0V230X0R1616173K182U192P1L0N1M24\",\"ус \":\"0V0B0X0A160E170Q180F190D1M0V\",уса:\"0V07160E170C180619041M1L\",усан:\"1M0T\",усг:\"1M0V\",усга:\"1M0Z\",усе:\"0V050X021605171Q1808190D\",\"усе \":\"172E1808190E\",уск:\"0V170X0O160O171F180G1906\",уски:\"0V0K0X0T\",\"уски \":\"0V1C0X0Q\",усл:\"0V050X061604180H1M15\",усла:\"1M1D\",услах:\"1M16\",усн:\"0V070X06160Z1707180C1902\",усп:\"0V0Y0X0N1612180M1909\",успе:\"0V0U0X0O160J180P\",уст:\"0V2C0X0J160I172F1828191K\",усти:\"0V150X02180Q190E\",устр:\"0V0J0X021724180D1913\",устрэ:\"172K\",устрі:\"191J\",усё:\"171M\",\"усё \":\"172K\",усі:\"172W1917\",\"усі \":\"170H190T\",усім:\"172E1905\",\"усім \":\"173C1906\",ут:\"0V250X0O160O171Q183819421L0B1M13\",\"ут \":\"0V0W0X06172I182T192K\",ута:\"0V130X0B1606170V180819031M1C\",\"ута \":\"0V0Z0X071604170A1802\",утг:\"1M0N\",утга:\"1M0R\",уте:\"0V070X0B180D1905\",ути:\"0V0O0X0P160L180C192Q\",\"ути \":\"0V090X0D160A1807192P\",\"утка \":\"0V080X0217241806\",уто:\"0V190X031603180A1903\",утр:\"0V1C0X0Q161Q170A180V1902\",утра:\"0V14180A\",\"утра \":\"0V2T180C\",утре:\"0X0N16151802\",\"утре \":\"0X0O162E\",утри:\"160R1804\",утрин:\"161M\",уть:\"18151921\",\"уть \":\"1818192B\",уу:\"1MB7\",\"уу \":\"1MBQ\",ууг:\"1M17\",ууга:\"1M0T\",уугаа:\"1M1M\",ууд:\"1M4D\",\"ууд \":\"1M1H\",ууда:\"1M2M\",уудал:\"1M2R\",уул:\"1M59\",уула:\"1M19\",уулз:\"1M1X\",уулза:\"1M2J\",уулзс:\"1M16\",уулт:\"1M0X\",ууль:\"1M11\",уун:\"1M0X\",\"уун \":\"1M0P\",уур:\"1M28\",\"уур \":\"1M1B\",уус:\"1M1H\",уусг:\"1M0X\",уусга:\"1M1U\",уух:\"1M0Z\",ууч:\"1M0Z\",уучл:\"1M0X\",уучла:\"1M1U\",уф:\"1702\",ух:\"0V0C0X02160D170R180O190M1L091M11\",\"ух \":\"0V0A0X051612170D180D1902\",уха:\"0V081604171H1806190U1L0O1M1Y\",ухаа:\"1M0X\",ухаан:\"1M16\",ухай:\"170E19071M0X\",\"ухай \":\"19041M1U\",уц:\"0V09171G19021L071M0J\",уца:\"0V0B0X021M14\",уцаж:\"1M0X\",\"уцаж \":\"1M1U\",уць:\"1744\",\"уць \":\"176X\",уч:\"0V210X1G161N171P183E19151M0O\",уча:\"0V110X0O161M171X181N1909\",\"уча \":\"160Y\",\"учам \":\"0V090X0D\",уче:\"0V1J0X1F161D180F190F\",\"уче \":\"0V110X08160C\",учен:\"0V0E0X0G160E180G190G\",учи:\"0V2N0X2J163Q1838190N\",\"учи \":\"0V0J0X1T161E18041905\",учил:\"0V0D0X0O161E181S1902\",учили:\"0V0C0X081623180E1902\",учило:\"0X0C160F181B\",учит:\"0V0O0X0A160S1829190G\",учите:\"0V1I0X0A161N181B190E\",учить:\"181U1906\",учл:\"1M0S\",учла:\"1M0X\",учлаа:\"1M1I\",учора:\"171T190F\",учр:\"1M0L\",учра:\"1M0P\",учраа:\"1M1E\",учу:\"0V030X0D1806\",учув:\"0X0H\",учува:\"0X0I\",учш:\"181R\",учше:\"181Y\",\"учше \":\"1839\",учы:\"172I\",уш:\"0V100X1Q160E170Q181I190I1L1E\",уша:\"0V190X0X160R170I180Y1902\",уше:\"0V090X0E1606180A1908\",уши:\"0V0G0X0E160J180E1904\",ушк:\"0V0C0X04170I18131903\",ушн:\"0X0R170918041904\",ушна:\"0X0K\",ушнос:\"0X0F\",ушт:\"0V0G0X3V1902\",ушта:\"0V060X0I\",уште:\"0V060X3J\",\"уште \":\"0X3G\",ушти:\"0X13\",\"ушти \":\"0X0N\",ушы:\"170I1L2K\",ушыл:\"1L2A\",ушыла:\"1L2D\",ущ:\"180G\",уы:\"1L58\",\"уы \":\"1L3R\",уыл:\"1L1C\",уын:\"1L3E\",уына:\"1L3D\",\"уына \":\"1L4G\",уыр:\"1L1C\",ую:\"172H18211918\",\"ую \":\"1787183D191U\",\"ують \":\"190X\",\"уюць \":\"171L\",уя:\"160217021904\",уђ:\"0V06\",уѓ:\"0X09\",уѓе:\"0X0W\",\"уѓе \":\"0X0N\",уѓет:\"0X0I\",уѓето:\"0X0J\",ує:\"191T\",\"ує \":\"1928\",уі:\"1L1H\",уј:\"0V1E0X03\",ује:\"0V2W\",\"ује \":\"0V1D\",ујем:\"0V1F\",\"ујем \":\"0V34\",уљ:\"0V03\",уњ:\"0V02\",ућ:\"0V12\",\"уће \":\"0V0X\",ући:\"0V1C\",\"ући \":\"0V1H\",уќ:\"0X06\",уќа:\"0X0L\",уќата:\"0X0F\",уў:\"170L\",\"уўся \":\"1724\",уғ:\"1L2Q\",уға:\"1L77\",\"уға \":\"1LBF\",уқ:\"1L09\",ф:\"0V0P0X0U1619170N180T19131L0F1M0A\",\"ф \":\"0V020X021602170318031903\",фа:\"0V060X0S1607170W180B190C1L07\",фадзі:\"171M\",фал:\"0V030X0J\",\"фала \":\"0X0D\",фат:\"0X1L170B\",фате:\"0X0W\",фатен:\"0X0W\",фати:\"0X0Z\",\"фати \":\"0X0G\",фаќ:\"0X0C\",фаќа:\"0X0H\",фе:\"0V080X0816091709180J19071L0C1M07\",фи:\"0V0B0X0A160B180R1L0G\",фил:\"0V0B0X0B160G180I\",фл:\"0V02170318041902\",фо:\"0V0C0X08160E170D180U19151L0C\",фон:\"0V0K0X0E160J170J180O191D\",фону:\"18051915\",фонув:\"190X\",фр:\"0V0C0X0A161D170F180Q19121L0C1M0I\",фра:\"0V0S0X0O16081719181D19241L0S1M17\",фран:\"0V0X0X0U16081721181S192F1L1G1M1F\",франц:\"0V2C0X0V160F172Y1839193G1L231M2V\",фре:\"165I\",френ:\"1665\",френс:\"16CB\",фт:\"18021902\",фу:\"0V060X02160317051807190B\",фі:\"170I190N\",х:\"0V2C0X0B163J173A183O194N1L101MG9\",\"х \":\"0V2C0X03163E173X1850192S1L061M9Z\",ха:\"0V0D0X03161J1749181C19291L2W1M9E\",\"ха \":\"0V09163B170D180C1908\",хаа:\"1M59\",\"хаа \":\"1M11\",хаан:\"1M2Y\",хаана:\"1M42\",хаар:\"1M0V\",хаб:\"1L1J\",хабар:\"1L2K\",хав:\"170O19141M0O\",\"хав \":\"1915\",хад:\"170X1M0O\",\"хад \":\"1M0R\",хай:\"160P170S190E1M2C\",\"хай \":\"170X19091M15\",хайде:\"161I\",хайр:\"1M1B\",хайрт:\"1M1I\",хал:\"17281814190S1L2V1M1E\",хала:\"17281809190J\",\"хала \":\"171X180G190Q\",халу:\"1M0M\",халуу:\"1M1A\",халы:\"1L4B\",халық:\"1L61\",хам:\"1602170H18021M27\",хама:\"1M11\",хамаа:\"1M1Y\",хамг:\"1M0P\",хамги:\"1M1A\",хамт:\"1M0T\",\"хамт \":\"1M1A\",хан:\"0V0217131804190D1L271M4W\",\"хан \":\"1M4G\",хана:\"19031L2O\",ханг:\"1M0X\",ханга:\"1M1U\",хар:\"0X051628170I180919061M6Q\",хара:\"170C18071M2W\",хараа:\"1M27\",хараг:\"1M1Q\",харе:\"161W\",харес:\"1640\",харж:\"1M0V\",\"харж \":\"1M1Q\",хари:\"1M1P\",хариу:\"1M27\",харс:\"1M19\",харса:\"1M2J\",хат:\"170W180X19151L1C\",хати:\"191B\",\"хати \":\"191N\",хать:\"1819\",\"хать \":\"182C\",хац:\"173J\",хаце:\"1745\",хацел:\"172W\",хацеў:\"172I\",\"хаць \":\"1724\",хач:\"171U\",хачу:\"1734\",\"хачу \":\"174M\",хаў:\"171K\",\"хаў \":\"1720\",хв:\"0V0I160A170N180E190M\",хва:\"0V1G160Q1713180V1903\",хват:\"0V0V1811\",хвати:\"0V1R1813\",хвърл:\"1619\",хвілі:\"1723\",хг:\"1M3O\",хгү:\"1M8W\",хгүй:\"1MAB\",\"хгүй \":\"1MIE\",хд:\"1M0U\",хда:\"1M0O\",хдэ:\"1M0T\",хдээ:\"1M0V\",\"хдээ \":\"1M1M\",хе:\"0V0416021803\",хи:\"0V060X031606180D190W1L0F1M5Z\",\"хи \":\"16071807191G1L0G1M0H\",хиа:\"1M15\",хиад:\"1M0P\",\"хиад \":\"1M1E\",хий:\"19021M9F\",\"хий \":\"19021M17\",хийг:\"1M2I\",\"хийг \":\"1M4I\",хийдэ:\"1M16\",хийж:\"1M23\",\"хийж \":\"1M46\",хийн:\"1M0R\",хийс:\"1M1F\",хийсэ:\"1M2N\",хийх:\"1M2S\",\"хийх \":\"1M46\",хин:\"1M1H\",\"хин \":\"1M1F\",хио:\"1M0T\",хиол:\"1M0R\",хиолд:\"1M1A\",хичээ:\"1M16\",хл:\"0V081603170K1808190K1M0H\",хлоп:\"171Q1805190X\",хм:\"160H1707180319021L0D\",хме:\"16201L0F\",\"хме \":\"1629\",хн:\"0V0316071708180B190D1L091M0E\",хо:\"0V1E0X0816121723188219651M3T\",ход:\"0V0E0X0A1624173W184G1924\",ходз:\"174N\",ходзі:\"174U\",ходи:\"161M184J191M\",\"ходи \":\"1616180K1902\",ходил:\"160D181O1907\",ходит:\"160B185C191O\",хой:\"18051M1Y\",\"хой \":\"18071M0Z\",хол:\"0V040X0416051706180N190I1M0S\",хон:\"18021M1V\",\"хон \":\"1M0T\",хоно:\"1M15\",хоног:\"1M22\",хоо:\"1M1M\",хоол:\"1M1B\",\"хоол \":\"1M16\",хор:\"1616182H190A\",хора:\"161B\",\"хора \":\"161Q\",хорат:\"1613\",хоро:\"183C190B\",хорош:\"185Y1909\",хот:\"0V040X0A160N184B19341M10\",хоте:\"0V050X05160E183J\",хотел:\"0V0D0X05160P186G\",хоти:\"181E\",хотит:\"1823\",хоті:\"193M\",хотів:\"193H\",хотіл:\"191U\",хоч:\"172518511968\",хоча:\"173F1903\",\"хоча \":\"171L1905\",хочаш:\"1726\",хоче:\"183P194D\",\"хоче \":\"192T\",хочет:\"183Z191C\",хочеш:\"18301920\",хочу:\"183D192Y\",\"хочу \":\"1865193Y\",хоё:\"1M14\",хоёр:\"1M11\",\"хоёр \":\"1M1I\",хоћ:\"0V2X\",хоће:\"0V2A\",\"хоће \":\"0V46\",хоћу:\"0V1B\",\"хоћу \":\"0V3C\",хр:\"0V0B0X061606170518091904\",хра:\"0V0R0X0N160L1705180E1902\",хран:\"0V0L0X0N160N180E\",храна:\"0V0I0X0K160S\",хс:\"170518021M0J\",хса:\"1M0L\",хсан:\"1M0P\",\"хсан \":\"1M1E\",\"хсэн \":\"1M16\",хт:\"0V0C16081717191S1M09\",хте:\"0V0W1610\",\"хте \":\"1613\",\"хтео \":\"0V1P\",хто:\"1744193R\",\"хто \":\"176D193Q\",хтось:\"170O190Y\",ху:\"1609170T180B190F1M1X\",\"ху \":\"0V031609171E18051909\",хубав:\"1617\",хуг:\"1M0N\",хуга:\"1M0R\",хугац:\"1M1I\",худ:\"180919061M1O\",худа:\"1M19\",худал:\"1M2J\",худл:\"1M0R\",худла:\"1M1I\",хур:\"1M0T\",хурд:\"1M0P\",хурда:\"1M1E\",хутка:\"1723\",хуу:\"1M0Z\",хш:\"1L04\",хы:\"1M1B\",хыг:\"1M32\",\"хыг \":\"1M3J\",хэ:\"1MAS\",хэв:\"1M0L\",хэд:\"1M3R\",\"хэд \":\"1M21\",хэди:\"1M0T\",хэдий:\"1M1M\",хэдэ:\"1M19\",хэдэн:\"1M2J\",хэз:\"1M1O\",хэзэ:\"1M1Z\",хэзээ:\"1M3Y\",хэл:\"1M7N\",\"хэл \":\"1M1D\",хэлд:\"1M0P\",хэлдэ:\"1M16\",\"хэлж \":\"1M16\",хэлс:\"1M2W\",хэлсэ:\"1M5O\",хэлэ:\"1M2U\",хэлэх:\"1M2J\",хэлээ:\"1M2J\",хэн:\"1M4F\",\"хэн \":\"1M42\",хэр:\"1M61\",\"хэр \":\"1M0R\",хэрвэ:\"1M1A\",хэрэ:\"1M58\",хэрэв:\"1M1A\",хэрэг:\"1M8W\",хэц:\"1M0L\",хэцү:\"1M0P\",хэцүү:\"1M1E\",хээ:\"1M3I\",\"хээ \":\"1M0P\",хээр:\"1M32\",\"хээр \":\"1M63\",хя:\"1M0B\",хятад:\"1M1A\",хі:\"170H1914\",хіб:\"170F191K\",хіба:\"170P191U\",\"хіба \":\"1712192O\",хү:\"1M5V\",хүл:\"1M1L\",хүлэ:\"1M1V\",хүлээ:\"1M3M\",хүм:\"1M0Z\",хүмү:\"1M15\",хүмүү:\"1M2B\",хүн:\"1M3Z\",\"хүн \":\"1M3J\",хүр:\"1M1G\",хүртэ:\"1M16\",хүс:\"1M42\",хүсс:\"1M0R\",хүссэ:\"1M1I\",хүсч:\"1M1F\",\"хүсч \":\"1M2R\",хүсэ:\"1M23\",хүсэж:\"1M22\",хүсэх:\"1M1A\",хүү:\"1M2P\",\"хүү \":\"1M0R\",хүүх:\"1M1N\",хүүхд:\"1M1I\",хүүхэ:\"1M1U\",хө:\"1M1V\",хөг:\"1M0Z\",хөгж:\"1M0V\",хөгжи:\"1M1M\",хөн:\"1M1A\",\"хөн \":\"1M1H\",хөө:\"1M0Z\",ц:\"0V2C0X1K161H179R181K195P1L0G1M29\",\"ц \":\"0V0M0X081606170M180R1M0O\",ца:\"0V180X0V160X176K181A19021M3M\",\"ца \":\"0V2R0X1R162D17G8181I\",цаа:\"1M2A\",цаар:\"1M11\",\"цаар \":\"1M1M\",цаг:\"1M3Z\",\"цаг \":\"1M23\",цага:\"1M0V\",цагаа:\"1M1M\",цагт:\"1M11\",\"цагт \":\"1M1U\",цаж:\"1M0T\",\"цаж \":\"1M0Z\",цал:\"0V031722\",цала:\"172C\",цалав:\"173E\",цат:\"0X19161E1810\",цата:\"0X1N161K\",\"цата \":\"0X1R163C\",\"цать \":\"181O\",\"цаць \":\"171V\",цв:\"0V040X0316051708180A\",цг:\"1M0C\",цга:\"1M0O\",цгаа:\"1M0T\",це:\"0V180X0R160K1746181T19941L08\",\"це \":\"0V1S0X0D160D17A8181419G0\",цей:\"170Q180A191M\",\"цей \":\"17101808191S\",цел:\"0V0J0X10160K171F180R\",цела:\"0V090X0H171Q\",\"цела \":\"0X081723\",цен:\"0V0L0X0J160T170B180X190C\",\"цеся \":\"171T\",цет:\"0X0J160H\",цето:\"0X0I160F\",\"цето \":\"0X0J160V\",\"цеў \":\"171Z\",ци:\"0V1L0X121619181F190O1L1I\",\"ци \":\"0V1T0X1D161G\",\"ции \":\"0X0816071813\",цим:\"0V0B0X02190X\",\"цим \":\"1912\",цит:\"0V0A0X0T160Y\",ците:\"0V0A0X121610\",\"ците \":\"0V0P0X141625\",ция:\"161R180O1L3F\",\"ция \":\"1619180V1L1I\",цията:\"161L\",циј:\"0V0Z0X0X\",ција:\"0V0K0X18\",\"ција \":\"0V1B0X0Q\",цијат:\"0X0H\",цк:\"0V02170G1805\",цн:\"0X071707\",цна:\"0X0I170A\",\"цна \":\"0X0L170B\",цо:\"0V020X04170718091M0M\",цор:\"1M0L\",цот:\"0X0E\",\"цот \":\"0X0I\",цр:\"0V0A0X07\",цс:\"1M07\",цт:\"17061902\",цу:\"0V0O0X071713180V19131L091M0F\",\"цу \":\"0V15171F180Q1904\",цуз:\"170S1814191X1L0J\",цузс:\"1719181H\",цузск:\"171W182S\",цузь:\"1926\",цузьк:\"1936\",цус:\"0V0Q0X0L\",цуск:\"0V0V0X0S\",цуски:\"0V1D0X0T\",цц:\"1750\",цца:\"17EQ\",\"цца \":\"17KW\",ццаць:\"171V\",ццё:\"171L\",\"ццё \":\"172D\",цъ:\"1602\",цы:\"1733180D\",\"цы \":\"174Y180S\",\"цыю \":\"1725\",цыя:\"172H\",\"цыя \":\"171S\",цыі:\"171P\",\"цыі \":\"172W\",ць:\"17D6192D\",\"ць \":\"17SG191I\",цьк:\"171J190D\",\"цька \":\"171M1904\",цьо:\"193C\",цьог:\"193B\",цього:\"194R\",цьому:\"190X\",цэ:\"170E1M0M\",цю:\"170A191I\",\"цю \":\"170X1919\",цюв:\"190Z\",цюва:\"1916\",цюват:\"1913\",ця:\"16051736191J\",\"ця \":\"171K1924\",цяб:\"173Q\",цябе:\"1769\",\"цябе \":\"1795\",цяг:\"1723\",цягн:\"172I\",цягні:\"172N\",цяжка:\"171R\",цяп:\"171E\",цяпе:\"1728\",цяпер:\"173C\",\"цять \":\"190V\",цё:\"170R\",\"цё \":\"171I\",ці:\"175E194B\",\"ці \":\"17DK193Q\",цік:\"17141919\",ціка:\"171W191H\",цікав:\"172N1926\",\"ціць \":\"171S\",\"цію \":\"190U\",\"ції \":\"190U\",цү:\"1M08\",цүү:\"1M0L\",\"цүү \":\"1M0P\",ч:\"0V410X3J166J174U1884196S1L021M69\",\"ч \":\"0V090X041604170P180A190M1M4S\",ча:\"0V1X0X11162G177E184N193O1M4G\",\"ча \":\"0V0K0X0B162I171O180E190F\",чаго:\"171S\",\"чаго \":\"172B\",чад:\"0X0416051M5A\",чада:\"1M3R\",чадах:\"1M74\",чадд:\"1M0V\",чадда:\"1M1Q\",чадн:\"1M1B\",чадна:\"1M2N\",чай:\"160J171O180O190Z\",чайна:\"171Z\",чак:\"0V0U0X04161M172D\",чака:\"0V06161D173I\",чакам:\"1611\",чал:\"0V0B0X03160C173S181P190I\",чала:\"0V07174X180M1908\",чалав:\"1767\",чам:\"0V0H0X0P1610172H18021M5I\",\"чам \":\"0V0E0X0U1613170A1802\",чама:\"1M2O\",чамай:\"1M4L\",чамд:\"1M2W\",\"чамд \":\"1M5R\",чамт:\"1M0Z\",чамта:\"1M1Y\",чаму:\"173R\",\"чаму \":\"1759\",чан:\"0V0G0X03160C171G18061903\",чар:\"0V0G0X0C1609172018071909\",час:\"0V0J0X0O161K176W184M193A\",\"час \":\"0V040X09160E173C182F191G\",часлі:\"172A\",част:\"160J171Q182T1916\",часта:\"171V\",частл:\"181G\",часто:\"181T191A\",\"часу \":\"0V06172A18021915\",чат:\"0V050X0B1611171218161912\",\"чать \":\"181G1903\",чац:\"0V02171L\",\"чаць \":\"1724\",чаш:\"0V090X0B160T170V18061907\",чај:\"0V0X0X0K\",чв:\"16081706\",чва:\"1611170M\",че:\"0V2Q0X2I166F189V194O1L07\",\"че \":\"0V1P0X1T16FW180D1926\",чев:\"0V070X0E160A18061907\",чег:\"0V07182Y\",чего:\"1841\",\"чего \":\"186W\",чек:\"0V200X2516031806191S\",чека:\"0V1E0X1U1920\",чекам:\"0V130X0V\",чекат:\"190Z\",чекив:\"0V21\",чеку:\"0V080X0L\",чекув:\"0X0M\",чел:\"0V090X09160P181L\",чело:\"0X061823\",челов:\"183U\",чем:\"0V0D0X031859190D1L0F\",\"чем \":\"0V05183A1902\",чему:\"0V09183S\",\"чему \":\"0V0O186U\",чен:\"0V0P0X1F161Y184U191L\",\"чен \":\"0X0Y160O1806\",чени:\"0V0L0X0M16151811190H\",чение:\"161C180V\",чениц:\"0V110X0F160A\",ченн:\"1806190X\",чення:\"1916\",чень:\"18511903\",\"чень \":\"188W1905\",чер:\"0V0K0X17162R1831191Z\",чера:\"0V0H0X121619181K\",\"чера \":\"0X0Z162N182Q\",\"чері \":\"190S\",чес:\"0V0W0X0S161L181V190A\",ческ:\"160F181F\",чески:\"160F181I\",чест:\"0V110X0X161D1814\",често:\"0V2A0X0P161L\",чет:\"0V0L0X0R162U1827190W\",\"чет \":\"1821\",чета:\"0V03160W1802\",\"чета \":\"161E\",чете:\"160S190T\",\"чете \":\"16101917\",чето:\"0X0O1616\",\"чето \":\"0X0M1629\",чеш:\"0V050X0F160918181917\",\"чеш \":\"0V030X041604191E\",\"чеше \":\"0X0E1608\",чешь:\"181N\",\"чешь \":\"1832\",чи:\"0V2Q0X241625184R196E1M7R\",\"чи \":\"0V1H0X2R162L180U192Y1M9Z\",чив:\"0X08160B180L1924\",\"чив \":\"0X071803191Z\",чиг:\"0V030X071M1R\",чигд:\"1M1T\",чигдө:\"1M3I\",чиж:\"1M0Q\",\"чиж \":\"1M0V\",чил:\"0V0F0X0P161M181Y191H1M0H\",чила:\"0V090X06160A180D1911\",\"чила \":\"0V0O0X04160C180D1918\",чили:\"0V060X081611180F190L\",чилищ:\"1623\",\"чило \":\"0X0C160F1802\",чилос:\"181H1904\",чин:\"0V130X131614181F192A1M40\",чина:\"0V030X0J160K180V190W\",чини:\"0V0T0X0D1607180A190M1M38\",\"чини \":\"0V0T0X0C190C\",чиний:\"1M6E\",\"чинь \":\"1M1A\",чис:\"0V0A0X0L160F180K190E\",чист:\"0V0C0X0M160F180F1907\",чит:\"0V210X1C161P184F193T\",чита:\"0V1G0X0Y160L182H191G\",чите:\"0V0R0X0N161C180X190P\",\"чите \":\"0V100X0D160V180A1907\",чител:\"0X0B1620181E190T\",чити:\"0V08191W\",\"чити \":\"0V0H1922\",чить:\"181I190K\",\"чить \":\"181X190M\",чих:\"160J18021M27\",чихл:\"1M0T\",чихс:\"1M19\",чихса:\"1M1E\",чиш:\"0V090X0D160E18051908\",\"чиш \":\"0V090X0H160G1908\",чињ:\"0V0C0X0F\",чиња:\"0X0K\",\"чиња \":\"0X0F\",чк:\"0V0J0X0M1610170L180P190L\",чка:\"0V0H0X11160O170X180I190F\",\"чка \":\"0V0I0X0V160I1715180K190H\",чката:\"0X0F160G\",чки:\"0V0C0X0S1626180G190B\",\"чки \":\"0V0C0X0V1622180M190C\",чко:\"0V0B0X0H161K18051904\",\"чко \":\"0V040X0K161P1902\",чл:\"180219041M0J\",чла:\"0V031M0T\",члаа:\"1M0R\",члаар:\"1M1I\",чн:\"0V0X0X0X160S171Q181P191A\",чна:\"0V060X0S160V172Y1809190A\",\"чна \":\"0V080X0R160N171Z1802190C\",чни:\"0V0M0X0M160O1805190T\",\"чний \":\"190V\",чно:\"0V1M0X1P161P182G190V\",\"чно \":\"0V1O0X20161P182J190Q\",чны:\"1728180R\",\"чныя \":\"171K\",чо:\"0V0A0X0E160M170Z1803193Q1M0B\",чов:\"0V0N0X0Y161X1903\",чове:\"0V0S0X1916251902\",човек:\"0V1T0X13163P\",чог:\"171M191W\",чога:\"172R\",\"чога \":\"1744\",чого:\"1928\",\"чого \":\"1933\",чолов:\"1912\",чом:\"1803193X\",чому:\"194K\",\"чому \":\"196J\",чон:\"1M0S\",чоно:\"1M0X\",\"чоно \":\"1M1E\",чор:\"0X03160E171T191F\",чора:\"0X04160G1721191C\",\"чора \":\"1732191W\",чр:\"1M08\",чра:\"1M0L\",чраа:\"1M0P\",чраас:\"1M1E\",чс:\"1M07\",чт:\"160518AY19021M08\",что:\"18KH\",\"что \":\"18LT\",\"что-\":\"181T\",\"что-т\":\"1827\",чтоб:\"185A\",чтобы:\"189D\",\"чтэй \":\"1M16\",чу:\"0V0O0X0T160W171L1821192W1M0E\",\"чу \":\"0V060X05160317311830192Y\",чув:\"0V070X1Y161C170Q180V191F\",чува:\"0V090X17160L17181911\",\"чува \":\"0X0L\",чувс:\"0X17160X1817\",чувст:\"0X1A161Z1827\",чуд:\"0V0C0X0J160J1806190J\",чудов:\"1802190W\",чух:\"160Z\",\"чух \":\"1612\",чц:\"1703\",чч:\"17031905\",чш:\"180S\",чше:\"181F\",\"чше \":\"181R\",чы:\"176N\",\"чы \":\"174D\",чыл:\"1721\",чыла:\"172A\",\"чыла \":\"172V\",чым:\"1735\",\"чым \":\"172P\",чыма:\"1720\",\"чыма \":\"1726\",чын:\"1754\",чына:\"1730\",\"чына \":\"1720\",\"чыны \":\"171O\",чыт:\"171U\",чыта:\"1734\",чыц:\"1741\",чыцца:\"171W\",чыць:\"174W\",\"чыць \":\"1777\",чыў:\"171Y\",\"чыў \":\"172P\",чь:\"1810\",\"чь \":\"181Q\",чэ:\"171G1M0C\",\"чэ \":\"172S\",чэнн:\"171R\",чээ:\"1M0V\",чя:\"1902\",чё:\"180T\",чі:\"1919\",\"чі \":\"191J\",чү:\"1M07\",ш:\"0V6K0X8D164C174V184M19531L5P1M35\",\"ш \":\"0V4J0X66164F1739180F194G1L1E1M3F\",шi:\"1L0L\",ша:\"0V1V0X1E160O172Q1824191A1L6A1M0S\",\"ша \":\"0V0Z0X101613171P180T19191L6E\",шаа:\"0X031M0Z\",шав:\"0V0K0X0C160A1903\",шага:\"171Q1802\",\"шага \":\"172K\",шай:\"1602171F180A1906\",\"шай \":\"172818081902\",шал:\"0V0G0X0B170D181219031L0G1M0J\",шам:\"0V050X141606170A18021L0D\",\"шам \":\"0V050X181605\",шан:\"0V0D0X0G1609170T180919081L27\",\"шан \":\"0V060X021L3B\",шанса:\"0X0C1802\",шао:\"0V1U\",\"шао \":\"0V28\",шар:\"0V050X051705180419021L2W\",шат:\"0V030X0E160M180N19071L0M\",\"шата \":\"0X0C1611\",\"шать \":\"181C\",шаш:\"0V030X0C160417061L0E\",шая:\"171H180N\",\"шая \":\"172I180V\",шањ:\"0V030X0S\",шање:\"0X0T\",\"шање \":\"0X0F\",шањет:\"0X0G\",шақ:\"1L1W\",шақыр:\"1L23\",шв:\"160317031802190E\",швид:\"190W\",швидк:\"1910\",ше:\"0V1Y0X47162V184O19351L3C\",\"ше \":\"0V3I0XCE169H185B194U1L2L\",шек:\"18071L1J\",шен:\"0V0E0X0X1619181K190Y\",\"шен \":\"0V080X0M160E1803\",шени:\"0X08160P18181906\",шення:\"190T\",шет:\"0V0A0X0C160D180619021L0M\",шеш:\"0V080X0616061L1G\",ши:\"0V190X0W160V183A192I1L0A1M3L\",\"ши \":\"0V0V0X1G161N180U190B\",шиг:\"1M2D\",\"шиг \":\"1M21\",ший:\"180Q190Y1M0V\",\"ший \":\"180Z1913\",шийд:\"1M0Z\",шин:\"0V060X061607181M191L1M3P\",\"шин \":\"18021M21\",\"шину \":\"181J1914\",шинэ:\"1M13\",\"шинэ \":\"1M27\",шир:\"0V0D0X07180419041M0Q\",ширэ:\"1M0T\",ширээ:\"1M1M\",ших:\"0V03160I180E190C1M0N\",шиш:\"0V050X0F160C1803\",шк:\"0V0R0X0K1609170U181W191E1L10\",шка:\"0V0H0X0P160P1719180X190N\",\"шка \":\"0V070X0N160J170S1812190A\",шки:\"0V040X0G160D180I190D\",шко:\"0V170X0X160317151829191M\",\"шко \":\"0V0E0X0R\",школ:\"0V0W0X0D171K18191913\",школи:\"0V0F190U\",школо:\"0X0C\",шком:\"181O\",\"шком \":\"1833\",шкі:\"170D19051L1H\",\"шкім \":\"1L27\",шл:\"0V0I0X031602170T181J190S\",шла:\"0V0H0X06171F180S190S\",\"шла \":\"0V0L0X04172D1812190X\",шло:\"0V0C1706181F1905\",шм:\"170P\",шма:\"172L1903\",шмат:\"174C1903\",\"шмат \":\"1762\",шн:\"0V060X0I1608170M180K190G\",шна:\"0V020X0N1607170H1902\",шно:\"0V0C0X0W160K180E1906\",\"шно \":\"0V0C0X0R160D180C1906\",шност:\"0X0F1804\",шо:\"0V060X0A1607170M180W191J1L0C\",\"шо \":\"0X0C160C1817\",шов:\"191W\",\"шов \":\"1924\",шол:\"0X0F\",шоў:\"1722\",\"шоў \":\"173C\",шп:\"0V0217031L0C\",шс:\"1708190D\",\"шся \":\"171I190Y\",шт:\"0V4R0X6917621805190Q1L1E\",шта:\"0V5Q0X0W1728180519071L0X\",\"шта \":\"0V670X0C172P\",ште:\"0V0X0X3I1L14\",\"ште \":\"0V0M0X3M\",шти:\"0V0H0X1C\",\"шти \":\"0V070X0V\",што:\"0V630XFV17HN1802190C\",\"што \":\"0V720XJD17OA\",штоту:\"0X0D\",шу:\"0V0A0X0C170V180Q19131L0D1M0J\",\"шу \":\"0V0C1718180T190Z\",шув:\"0X0Z19061M0J\",шува:\"0X1B1907\",\"шува \":\"0X0C\",шувам:\"0X0H\",шувуу:\"1M1A\",шука:\"171S190M\",шуу:\"1M0L\",шц:\"1705\",шч:\"171P\",шча:\"1726\",шчас:\"172F\",шчасл:\"1728\",шчэ:\"1730\",\"шчэ \":\"174P\",шъ:\"1602\",шы:\"172X1L5N\",\"шы \":\"174H1L2L\",шыл:\"170N1L3W\",шыла:\"170X1L3T\",шылар:\"1L4W\",шылы:\"1L2Q\",шылық:\"1L2K\",шын:\"171V1L2A\",шығ:\"1L2K\",шыға:\"1L2V\",шығар:\"1L30\",шық:\"1L1O\",шықты:\"1L2A\",шь:\"184D\",\"шь \":\"188N\",шься:\"1816\",\"шься \":\"1827\",шэ:\"170H\",шё:\"180V\",шёл:\"181T\",\"шёл \":\"182F\",ші:\"190W1L4O\",\"ші \":\"191G1L3E\",шіл:\"1L2A\",шілі:\"1L2T\",шілік:\"1L34\",шін:\"1L4P\",\"шін \":\"1L68\",шљ:\"0V08\",шњ:\"0V06\",шћ:\"0V04\",шқ:\"1L0W\",шқа:\"1L1R\",шқаша:\"1L2A\",шү:\"1M0H\",шүү:\"1M0S\",\"шүү \":\"1M0R\",шұ:\"1L04\",шө:\"1M0G\",шөө:\"1M0Q\",щ:\"163J1819194A\",\"щ \":\"16091905\",ща:\"161I180W190O\",\"ща \":\"162K18021908\",щас:\"16181910\",щасли:\"1912\",щаст:\"161E190C\",щастл:\"162J\",щат:\"161H180B1902\",щата:\"161I\",\"щата \":\"1637\",ще:\"163A181O191T\",\"ще \":\"16BV180U193O\",ществ:\"160X181H\",\"щето \":\"1615\",щи:\"160I181D190E\",\"щи \":\"161G180M\",щн:\"16071802\",що:\"162019BK\",\"що \":\"167M19ID\",щоб:\"1933\",\"щоб \":\"193L\",щойно:\"190Y\",щос:\"191B\",щось:\"191J\",\"щось \":\"1929\",щото:\"160R\",\"щото \":\"161M\",щт:\"1602\",щу:\"160218071903\",щь:\"1807\",щя:\"1602\",щё:\"181C\",\"щё \":\"182W\",щі:\"1904\",ъ:\"166R1805\",ъб:\"1608\",ъв:\"160L\",\"ъв \":\"161K\",ъг:\"160H\",ъд:\"161I\",ъде:\"164Y\",\"ъде \":\"1643\",ъе:\"180B\",ъж:\"160M\",ъз:\"160J\",ъзмож:\"161C\",ък:\"160I\",\"ък \":\"1619\",ъл:\"1612\",ълг:\"160W\",\"ълго \":\"1611\",ълж:\"160U\",ълн:\"160Y\",ъм:\"162E\",\"ъм \":\"169C\",ън:\"160I\",\"ън \":\"1613\",ъо:\"1602\",ъп:\"160M\",ъпр:\"161K\",ъпро:\"1613\",ъпрос:\"162A\",ър:\"162Y\",\"ър \":\"161E\",ърв:\"161H\",ърд:\"1616\",ърде:\"160T\",\"ърде \":\"161M\",ърж:\"1619\",ържа:\"160R\",ърз:\"161B\",\"ързо \":\"161C\",ърн:\"161A\",ърна:\"160W\",\"ърна \":\"161C\",ърш:\"161I\",ърши:\"1613\",\"ърши \":\"1618\",ъс:\"160X\",\"ъс \":\"160V\",ъсн:\"161H\",\"ъсно \":\"1613\",ъст:\"160Y\",ът:\"161M\",\"ът \":\"165F\",ътува:\"1616\",ъц:\"1603\",ъч:\"1608\",\"ъчно \":\"1616\",ъщ:\"160T\",ъща:\"161E\",ъщата:\"1618\",ъщи:\"1613\",\"ъщи \":\"1615\",ъя:\"180A\",ы:\"17D8189R1LOM1M25\",\"ы \":\"17KO18JX1LRA1M1M\",ыб:\"170L180L1L09\",ыв:\"1722181S\",ыва:\"172J183M\",ывае:\"1715181O\",ывает:\"182O\",ывать:\"181U\",ыве:\"171C1802\",ыву:\"1721\",ывуч:\"1720\",ывуча:\"171W\",ыг:\"170Z180E1M38\",\"ыг \":\"1M7U\",ыгляд:\"171Z181A\",ыго:\"171H1802\",ыгож:\"1728\",ыгожа:\"171O\",ыгожы:\"171M\",ыд:\"170G18061L0N\",ыда:\"170I18041L1B\",ые:\"170F181W\",\"ые \":\"1845\",ыж:\"17041804\",ыз:\"170H18061L7I\",\"ыз \":\"1LBK\",ызд:\"1L3C\",ызда:\"1L28\",ызды:\"1L42\",\"ызды \":\"1L44\",ызм:\"17091L2G\",ызме:\"1L4J\",ызмет:\"1L6G\",ызы:\"170618031L1G\",ыи:\"1806\",ый:\"1711183A1L0F\",\"ый \":\"170O186Y\",ыйш:\"171U\",ыйшл:\"171T\",ыйшла:\"171R\",ыйшоў:\"171M\",ык:\"171Z180X\",\"ык \":\"171M180M\",ыка:\"172M180H\",ыл:\"173K18541LAY\",\"ыл \":\"184H1L2L\",ыла:\"176918211L6N\",\"ыла \":\"1780182O\",ылад:\"1L32\",ылады:\"1L4D\",ылар:\"1L4D\",ылары:\"1L27\",ылас:\"17241802\",ылася:\"1733\",ылд:\"1L66\",ылда:\"1L5P\",ылдан:\"1L2K\",ылдар:\"1L2N\",ылды:\"1L5Z\",\"ылды \":\"1L5L\",ылдың:\"1L20\",ыли:\"181H\",\"ыли \":\"181Z\",ылм:\"1L1W\",ылмыс:\"1L27\",ыло:\"173F183E\",\"ыло \":\"175L184K\",ылу:\"1L19\",ылы:\"1L9P\",\"ылы \":\"1L6A\",ылым:\"1L2V\",ылыми:\"1L27\",ылығ:\"1L21\",ылығы:\"1L2U\",ылық:\"1L3T\",\"ылық \":\"1L37\",ылі:\"172N\",\"ылі \":\"173G\",ылғ:\"1L3C\",ылға:\"1L55\",ылған:\"1L5V\",ым:\"174N181N1L8O\",\"ым \":\"17A7182R1L91\",ыма:\"173N1L1S\",ымд:\"1L4F\",ымда:\"1L4Q\",ымдар:\"1L3A\",ымды:\"1L3M\",\"ымды \":\"1L44\",ыме:\"170B1L3C\",ымен:\"1L64\",\"ымен \":\"1L8M\",ымы:\"1L39\",ымыз:\"1L2V\",\"ымыз \":\"1L23\",ымын:\"1L2F\",ымі:\"171V\",\"ымі \":\"172O\",ын:\"173A180G1LLI1M1V\",\"ын \":\"170N18081LL91M4A\",ына:\"173T18051LCJ\",\"ына \":\"173718071LED\",ынан:\"1L53\",\"ынан \":\"1L78\",ынд:\"1LGA\",ында:\"1LMX\",\"ында \":\"1LKL\",ындал:\"1L2A\",ындар:\"1L3U\",ындағ:\"1L78\",ынды:\"1L53\",\"ынды \":\"1L2X\",ынш:\"1L36\",ынша:\"1L5C\",\"ынша \":\"1L7K\",ыны:\"170Y1LBI\",ының:\"1LF1\",\"ының \":\"1LJT\",ыня:\"171F\",ыні:\"171G\",ып:\"170J180E1L59\",\"ып \":\"1LC5\",ыр:\"171Z180G1L8V\",\"ыр \":\"172718021L3Q\",ыра:\"172F180A1L4P\",ырады:\"1L2R\",ырашы:\"1723\",ырд:\"1L22\",ырды:\"1L39\",\"ырды \":\"1L2N\",ырм:\"1L1T\",ырма:\"1L2D\",ыру:\"170M18021L2W\",\"ыру \":\"170W1L2J\",ыруға:\"1L23\",ыры:\"17141L5S\",ырыл:\"1L2Z\",ырып:\"1L2D\",\"ырып \":\"1L3A\",ырыс:\"1L2A\",ырғ:\"1L1N\",ырға:\"1L28\",ырған:\"1L23\",ыс:\"171P18141L8K\",\"ыс \":\"1L6V\",ыса:\"17081L19\",ыст:\"172F180Y1L6E\",ыста:\"172318031L4U\",\"ыста \":\"1L23\",ыстар:\"1L34\",ыстр:\"1814\",ысты:\"170I1L78\",\"ысты \":\"1L59\",ыстық:\"1L2D\",ысы:\"1L6Z\",\"ысы \":\"1L5A\",ысын:\"1L5A\",ысынд:\"1L2D\",ысқ:\"1L1M\",ысқа:\"1L2T\",\"ысқа \":\"1L2D\",ыт:\"171M181W1L2K\",ыта:\"174B18121L13\",ытан:\"172J\",ытанн:\"1736\",ытт:\"1L1K\",ытта:\"1L23\",ыты:\"170D18081L1Z\",ыть:\"182B\",\"ыть \":\"1833\",ыу:\"1803\",ых:\"1723181D\",\"ых \":\"175A182A\",ыход:\"1721180U\",ыходз:\"172O\",ыц:\"173O\",ыцц:\"1741\",ыцца:\"1730\",\"ыцца \":\"172U\",ыццё:\"172F\",\"ыццё \":\"1734\",ыць:\"177V\",\"ыць \":\"17CQ\",ыч:\"170Z180C\",ычай:\"171P1803\",ычайн:\"17281805\",ычн:\"171J180I\",ыш:\"170K18111L15\",\"ышал \":\"181E\",ыю:\"170G\",\"ыю \":\"171P\",ыя:\"17461802\",\"ыя \":\"17CA\",ыё:\"1703\",ыі:\"170P\",\"ыі \":\"172M\",ыў:\"1722\",\"ыў \":\"1765\",\"ыўся \":\"171R\",ығ:\"1L4A\",ыға:\"1L2Z\",ығар:\"1L23\",ығы:\"1L87\",\"ығы \":\"1L6A\",ығын:\"1L68\",\"ығын \":\"1L40\",ығына:\"1L2N\",ық:\"1LCS\",\"ық \":\"1LJY\",ықар:\"1L21\",ықара:\"1L2X\",ықт:\"1LAC\",ықта:\"1LBQ\",ықтан:\"1L2A\",ықтар:\"1LA1\",ықты:\"1L7O\",\"ықты \":\"1L6Q\",ықтың:\"1L27\",ыққ:\"1L19\",ыққа:\"1L2D\",\"ыққа \":\"1L2D\",ың:\"1LDJ\",\"ың \":\"1LP1\",ыңд:\"1L19\",ыңы:\"1L4U\",ыңыз:\"1L8N\",\"ыңыз \":\"1L90\",ыңызд:\"1L27\",ь:\"1602175K18AJ197W1L071M2G\",\"ь \":\"17F018P319CA1L051M3E\",\"ь-\":\"18021907\",ьб:\"17051806\",ьв:\"1706\",ьг:\"1705180C\",ьд:\"170218031L061M27\",\"ьд \":\"1M0Q\",ьда:\"1M3H\",ьдаг:\"1M1T\",\"ьдаг \":\"1M33\",ьдар:\"1M23\",ьдард:\"1M2J\",ьдарч:\"1M16\",ьдр:\"1M1C\",ьдра:\"1M1L\",ьдрал:\"1M1Y\",ьдрах:\"1M1A\",ье:\"180L1M0A\",\"ье \":\"180S1M0L\",ьж:\"1M0M\",\"ьж \":\"1M1J\",ьз:\"1703180K\",ьи:\"1803\",ьй:\"1902\",ьк:\"1725182H194Q\",ька:\"171Z1806191V\",\"ька \":\"171X18021920\",ьки:\"180D1934\",\"ьки \":\"1802192W\",ько:\"1708184V193C\",\"ько \":\"186G190W\",ькою:\"1924\",\"ькою \":\"1932\",ьку:\"170D1804191L\",\"ьку \":\"170K1804191U\",ькі:\"175L190K\",\"ькі \":\"1794190A\",ьм:\"171I180U190H\",ьмі:\"174E1904\",\"ьмі \":\"177B\",ьн:\"17211830191P\",ьна:\"172T180H190D\",\"ьна \":\"171P1808190F\",ьни:\"180Z191E\",\"ьний \":\"1913\",ьно:\"183K1913\",\"ьно \":\"183G190X\",ьны:\"171W181I\",\"ьный \":\"181I\",ьні:\"1721190L\",ьо:\"1604193M\",ьог:\"195U\",ього:\"196S\",\"ього \":\"196U\",ьогод:\"1937\",ьому:\"190W\",\"ьому \":\"191B\",ьп:\"1702\",ьс:\"170E183819451M0D\",ьса:\"1M0N\",ьсан:\"1M0R\",\"ьсан \":\"1M1I\",ься:\"1867198C\",\"ься \":\"188D199O\",ьт:\"1706180M190D1M0C\",ьф:\"170218021902\",ьц:\"170O18041903\",ьці:\"171Q1903\",\"ьці \":\"172Y1903\",ьч:\"17021807\",ьш:\"170L18241912\",ьше:\"183I191S\",\"ьше \":\"184N1923\",ью:\"180W19021L05\",\"ью \":\"181L\",ья:\"1702180Q\",ьё:\"180B\",э:\"174D183E1L0D1MOK\",\"э \":\"170W1MEH\",эа:\"1707\",эб:\"17191802\",эба:\"172L1802\",\"эба \":\"174A1803\",эбн:\"171Q\",эв:\"17091M17\",\"эв \":\"1M1E\",эвэ:\"1M0Q\",эг:\"17031M8G\",\"эг \":\"1M8Z\",эгг:\"1M15\",эггү:\"1M1D\",эггүй:\"1M2R\",эгт:\"1M6D\",\"эгт \":\"1M1H\",эгтэ:\"1M65\",эгтэй:\"1MB9\",эгч:\"1M0N\",эгэ:\"1M1Q\",эгэн:\"1M13\",\"эгэн \":\"1M22\",эгү:\"1M1Q\",эгүй:\"1M21\",\"эгүй \":\"1M3U\",эд:\"170B1M6V\",\"эд \":\"1M4Y\",эдг:\"1M1E\",эдги:\"1M0X\",эдгий:\"1M1U\",эдгээ:\"1M1A\",эдд:\"1M0Z\",эддэ:\"1M15\",эддэг:\"1M2B\",эди:\"1M0O\",эдий:\"1M0T\",эдийн:\"1M1A\",эдн:\"170B1M1C\",эднэ:\"1M13\",\"эднэ \":\"1M27\",эдэ:\"1M7K\",эдэг:\"1M2U\",\"эдэг \":\"1M3F\",эдэгт:\"1M22\",эдэн:\"1M1L\",\"эдэн \":\"1M2J\",эдэх:\"1M3C\",\"эдэх \":\"1M2F\",эдэхг:\"1M3I\",эдээ:\"1M11\",эе:\"1702\",эж:\"17021M44\",\"эж \":\"1M9C\",эз:\"170A1M0Q\",эзэ:\"1M1V\",эзээ:\"1M1Z\",\"эзээ \":\"1M3U\",эй:\"170T18021M52\",\"эй \":\"171818031MAX\",эйг:\"1M0N\",эк:\"170P18091L0L\",эконо:\"180B1L23\",эл:\"171918051L091M6J\",\"эл \":\"1M3K\",элд:\"1M0X\",элдэ:\"1M0X\",эле:\"172B18081L0E\",элеф:\"1724\",элефа:\"1726\",элж:\"1M20\",\"элж \":\"1M21\",элс:\"1M2M\",элсэ:\"1M30\",элсэн:\"1M5V\",элт:\"1M1G\",элтэ:\"1M19\",элтэй:\"1M27\",элх:\"1M0S\",элхи:\"1M0X\",элхий:\"1M1U\",элэ:\"1M47\",элэг:\"1M0P\",элэн:\"1M13\",\"элэн \":\"1M1M\",элэх:\"1M1F\",\"элэх \":\"1M1A\",элээ:\"1M1L\",элээр:\"1M1I\",эм:\"170B18021M1X\",эмж:\"1M0N\",эмч:\"1M0O\",\"эмч \":\"1M0P\",эмэ:\"1M2C\",эмэг:\"1M29\",эмэгт:\"1M4A\",эн:\"171O18041L081MEP\",\"эн \":\"170G18021MFN\",энд:\"1M67\",\"энд \":\"1M6E\",эндэ:\"1M0R\",эндээ:\"1M1I\",эни:\"1M1G\",эний:\"1M1P\",энийг:\"1M2J\",энн:\"1731\",энне:\"1723\",\"энне \":\"172Z\",\"эння \":\"172B\",энт:\"17121M0X\",энтэ:\"1M11\",энтэй:\"1M22\",энэ:\"1MDH\",\"энэ \":\"1MES\",эо:\"1702\",эп:\"1706\",эр:\"171B182M1L0C1MFD\",\"эр \":\"170E1MLS\",эрв:\"170A1M0L\",эрвэ:\"1M0P\",эрвээ:\"1M1E\",эрг:\"1M1C\",эргэ:\"1M0X\",эри:\"185K1L0U1M1H\",\"эри \":\"187I1L0X\",эрий:\"1M1F\",эрийг:\"1M1Q\",эрийн:\"1M16\",эрл:\"1M1H\",эрлэ:\"1M1H\",эрт:\"1M22\",\"эрт \":\"1M11\",эртэ:\"1M1D\",эртээ:\"1M2J\",эрх:\"1M1G\",эры:\"171L\",\"эры \":\"1724\",эрэ:\"1M7C\",эрэв:\"1M0P\",\"эрэв \":\"1M1E\",эрэг:\"1M5M\",\"эрэг \":\"1M1Y\",эрэгг:\"1M16\",эрэгт:\"1M7I\",\"эрэй \":\"1M1A\",эрээ:\"1M1J\",\"эрээ \":\"1M22\",эс:\"170S18031M2D\",\"эс \":\"1M2H\",эсэ:\"1M2N\",эсэн:\"1M1Z\",\"эсэн \":\"1M3M\",эт:\"177M18B41M0L\",эта:\"17HZ1815\",\"эта \":\"17MA181E\",этаг:\"172V\",этага:\"1749\",этай:\"1724\",\"этай \":\"1736\",\"этая \":\"172B\",этг:\"1M0L\",эти:\"181Q\",\"этим \":\"181T\",это:\"18J4\",\"это \":\"18IC\",этог:\"182V\",этого:\"185A\",этой:\"1818\",\"этой \":\"182A\",этом:\"183R\",\"этом \":\"185E\",этому:\"181N\",этот:\"182H\",\"этот \":\"184K\",эту:\"17231813\",\"эту \":\"171L181I\",\"этую \":\"171K\",эты:\"175Z\",\"эты \":\"175N\",этым:\"172O\",\"этым \":\"173Y\",\"этыя \":\"1727\",этэ:\"1M0L\",эф:\"1702\",эх:\"17021M5N\",\"эх \":\"1M4V\",эхг:\"1M34\",эхгү:\"1M3N\",эхгүй:\"1M77\",эхд:\"1M0O\",эхдэ:\"1M0T\",эхдээ:\"1M1I\",эхи:\"1M14\",эхий:\"1M1B\",эхийг:\"1M2F\",эхэ:\"1M44\",эхэд:\"1M0T\",\"эхэд \":\"1M1M\",эхээ:\"1M3D\",эхээр:\"1M5V\",эц:\"170B1M0H\",эцү:\"1M0L\",эцүү:\"1M0P\",\"эцүү \":\"1M1E\",эч:\"170G\",эш:\"1707\",ээ:\"1MBV\",\"ээ \":\"1MC0\",ээг:\"1M20\",ээгү:\"1M21\",ээгүй:\"1M42\",ээд:\"1M1E\",\"ээд \":\"1M1F\",ээж:\"1M1O\",\"ээж \":\"1M1J\",ээл:\"1M1G\",ээн:\"1M1J\",\"ээн \":\"1M13\",ээр:\"1M7O\",\"ээр \":\"1M7J\",ээрэ:\"1M1H\",ээрэй:\"1M1A\",ээрээ:\"1M1I\",ээс:\"1M37\",\"ээс \":\"1M2S\",ээсэ:\"1M0Z\",эя:\"1703\",эі:\"1702\",эў:\"170H\",эўнен:\"171T\",ю:\"160E172S183E195G1L061M20\",\"ю \":\"176S188819BF\",\"ю-\":\"1802\",юб:\"16081715181P191D\",юби:\"160D181V191B\",юбит:\"181B1911\",\"юбит \":\"181S\",юбить:\"1809191A\",юбл:\"1719180Y191I\",юблю:\"17231813190X\",\"юблю \":\"17341821191D\",юбі:\"171V\",юбіц:\"171Z\",юбіць:\"172R\",юв:\"190T\",юва:\"191R\",юват:\"1914\",ювати:\"191M\",юд:\"170T1811190Z\",юдз:\"172A\",юдзей:\"172B\",юдзі:\"171Z\",\"юдзі \":\"172W\",юди:\"180M191K\",\"юди \":\"180V1912\",юдина:\"190U\",юе:\"1702\",юз:\"17021802\",юй:\"17021903\",юк:\"170318021903\",юл:\"17041802\",юм:\"1602180319021M2I\",\"юм \":\"180219021M61\",юн:\"170218021902\",юр:\"170418061903\",юс:\"170K180Y19121L04\",юсь:\"181Z1907\",\"юсь \":\"182Q1909\",юся:\"171N191Z\",\"юся \":\"172S192B\",ют:\"16031706181Q191P1L06\",\"ют \":\"182O\",ются:\"1815\",\"ются \":\"1824\",ють:\"1938\",\"ють \":\"192U\",ютьс:\"1910\",ються:\"191G\",юу:\"1M3G\",\"юу \":\"1M7E\",юут:\"1M0L\",юх:\"1903\",юц:\"171F\",юцца:\"1728\",\"юцца \":\"173C\",юць:\"173Y\",\"юць \":\"176M\",юч:\"160B170M180G190H\",ючы:\"171N\",\"ючы \":\"171X\",юш:\"1703\",ющ:\"180K\",юю:\"17021802190D\",ює:\"190M\",я:\"168T17CZ18BD19DP1L1H1M35\",\"я \":\"168417M418RD19QN1L1B1M0K\",\"я-\":\"1802\",яа:\"1M18\",яаг:\"1M1A\",яага:\"1M1J\",яагаа:\"1M33\",яаж:\"1M0T\",\"яаж \":\"1M0Z\",яб:\"161R171Y18081906\",ябв:\"1671\",ябва:\"167V\",\"ябва \":\"16E7\",ябваш:\"1614\",ябе:\"174L\",\"ябе \":\"177L\",яблык:\"171V\",ябр:\"171V1806\",ябро:\"171T\",яброў:\"172O\",яв:\"1611170R180F190T1M29\",\"яв \":\"190X\",ява:\"163T171Q1M2X\",\"ява \":\"1611\",явам:\"161K\",\"явам \":\"162V\",явах:\"16041M30\",\"явах \":\"1M3Y\",явж:\"1M0N\",\"явж \":\"1M0R\",явс:\"19081M0X\",явса:\"1M11\",явсан:\"1M22\",яг:\"1605172Q1804190M1M0J\",\"яг \":\"1604190B1M0Z\",ягн:\"171N190F\",ягні:\"171R\",ягнік:\"172N\",яго:\"177B1906\",\"яго \":\"17BF\",яд:\"160I172C180U190R1L0L1M0B\",яда:\"1607171T1802190P1L121M0J\",ядз:\"1745\",ядзе:\"1748\",ядзел:\"172G\",ядзец:\"171T\",ядзі:\"172D\",\"ядзі \":\"171M\",ядом:\"171R180C\",яе:\"1726180M\",\"яе \":\"1769\",яет:\"1814\",яецца:\"172B\",яж:\"170H18091904\",яз:\"1606170J180Z190I\",язы:\"181A\",язык:\"181N\",яй:\"1605170G18081907\",\"яй \":\"160F171F18061905\",як:\"1613174718071954\",\"як \":\"17741802194U\",яка:\"1615171R1803190Y\",якакв:\"1613\",\"якая \":\"172G\",\"якби \":\"190R\",яки:\"18041912\",який:\"1803190V\",\"який \":\"18061914\",яко:\"1634171S1805190S\",яког:\"1614170V1908\",якога:\"1622171A\",якой:\"160U1712\",\"якой \":\"161T171H1802\",яколк:\"161G\",яку:\"171D1912\",якщ:\"1917\",якщо:\"191F\",\"якщо \":\"1922\",які:\"173M190W\",\"які \":\"172M190Q\",\"якія \":\"1723\",ял:\"160F171X181C190G1L1H1M0D\",\"ял \":\"160T181H\",яла:\"160K1719180I190G1L1B1M0H\",ялы:\"1L2Q\",ялық:\"1L4Q\",\"ялық \":\"1L6J\",ялё:\"171J\",ялён:\"172K\",ялёны:\"172A\",ялі:\"172U\",ялік:\"172H\",ялікі:\"1726\",ям:\"161S171Q180Q190J1M0Y\",\"ям \":\"160U1709180M190N\",яма:\"166E172F1M27\",\"яма \":\"1653173W\",ямам:\"161B\",\"ямам \":\"162L\",ямар:\"1M2K\",\"ямар \":\"1M4L\",ямаше:\"1611\",яму:\"171S1902\",\"яму \":\"1731\",ян:\"16081761180T190P1L0R1M0K\",\"ян \":\"1607170918041M0Z\",яна:\"1604178U18021903\",\"яна \":\"160517DB18021903\",яне:\"1604176P1803\",\"яне \":\"17AG1802\",яны:\"174418041L18\",\"яны \":\"176S1L0O\",\"яның \":\"1L2A\",яп:\"1604170S180B19091M0J\",япер:\"1728\",\"япер \":\"1736\",япо:\"160J1714180I190J1M1C\",япон:\"160L171V180P190N1M1L\",\"япон \":\"1M16\",яр:\"160C171T180419071M2F\",ярв:\"160Z\",ярва:\"1613\",яри:\"19061M1C\",ярих:\"1M0R\",ярл:\"1M0S\",ярла:\"1M0X\",ярлал:\"1M1I\",ярн:\"160B171M18041905\",ярну:\"171Z\",ярт:\"17091M0N\",ярта:\"170F1M0P\",яртай:\"1M1E\",ярь:\"1M30\",ярьд:\"1M1J\",ярьда:\"1M33\",ярьж:\"1M1F\",\"ярьж \":\"1M2V\",яс:\"160E1712180L190B1L0Y\",ясто:\"160V\",\"ясто \":\"161B\",ясы:\"1L20\",ят:\"16361710183U192Z1L0B1M08\",\"ят \":\"16651708182A1904\",ята:\"16471714180C190Q1M0J\",\"ята \":\"164L17091807190B\",яте:\"161N18091902\",ятел:\"161P180A\",ятели:\"161I\",яти:\"180T1924\",\"яти \":\"180E191F\",\"ятно \":\"1619180X\",ято:\"16121808190B\",\"ято \":\"161418021902\",\"ятся \":\"181K\",ять:\"1839192C\",\"ять \":\"183Q192J\",яу:\"1L06\",ях:\"160Y170B18091905\",\"ях \":\"162Q170L180J1908\",яха:\"160V170E\",\"яха \":\"160Z\",яц:\"172318071907\",\"яцца \":\"1721\",яць:\"173S1905\",\"яць \":\"17641906\",яч:\"170I180A190E\",яш:\"1602171118021902\",яшч:\"1735\",яшчэ:\"174T\",\"яшчэ \":\"176X\",ящ:\"180D\",яю:\"170J180B190B\",яя:\"17061803\",яє:\"190J\",яў:\"171C\",\"яў \":\"172A\",яўчын:\"1727\",яғ:\"1L0F\",яқ:\"1L0G\",ѐ:\"0X0B\",\"ѐ \":\"0X0Q\",ё:\"172D182N1M0I\",\"ё \":\"171S1855\",ёв:\"17041802\",ёг:\"17041804\",ёд:\"170E1803\",ёды:\"171D\",\"ёды \":\"172C\",ёж:\"1802\",ёз:\"17051808\",ёй:\"170V\",\"ёй \":\"17391802\",ёк:\"17091803\",ёл:\"170A1815\",\"ёл \":\"170A1829\",ём:\"170F1817\",\"ём \":\"170H182E\",ён:\"174B180T\",\"ён \":\"17BH180K\",ённ:\"1725180H\",ёння:\"1737\",\"ёння \":\"174O\",ёп:\"17031802\",ёр:\"170D180E1M0C\",\"ёр \":\"170C18051M0N\",ёс:\"171418061M10\",ёст:\"18031M25\",ёсто:\"1M2I\",ёстой:\"1M51\",ёсц:\"173L\",ёсць:\"175M\",\"ёсць \":\"1789\",ёт:\"17071825\",\"ёт \":\"17071835\",\"ётся \":\"1820\",ёх:\"1803\",ёш:\"180C\",ёў:\"1705\",ђ:\"0V0U\",ђа:\"0V0K\",ђе:\"0V0Z\",\"ђе \":\"0V0X\",ђен:\"0V0X\",ђи:\"0V09\",ђу:\"0V0A\",ѓ:\"0X0D\",ѓа:\"0X0J\",\"ѓа \":\"0X12\",ѓе:\"0X09\",\"ѓе \":\"0X0H\",ѓет:\"0X0D\",ѓето:\"0X0I\",\"ѓето \":\"0X0J\",ѓу:\"0X03\",є:\"194E\",\"є \":\"197H\",єв:\"1905\",єд:\"1909\",єм:\"191B\",ємо:\"1921\",\"ємо \":\"1921\",єн:\"1905\",єт:\"193R\",єте:\"192R\",\"єте \":\"192W\",єть:\"195D\",єтьс:\"1969\",ється:\"198W\",єц:\"1902\",єш:\"1922\",\"єш \":\"1940\",\"єшся \":\"190T\",єю:\"190B\",єї:\"190D\",ѕ:\"0X02\",ѕв:\"0X03\",ѕи:\"0X02\",і:\"17DV19JW1LJD\",\"і \":\"17LD19LO1LLA\",\"і-\":\"17021903\",іа:\"1703190D\",іб:\"170D19291L0J\",іба:\"170G191M\",\"іба \":\"170P191W\",ібн:\"192I\",\"ібна \":\"1910\",ібно:\"191M\",\"ібно \":\"192A\",ів:\"171C195O\",\"ів \":\"197R\",іва:\"1735191Y\",іваю:\"170B190X\",іваюс:\"1918\",івчин:\"1915\",іг:\"170X191C1L28\",\"іг \":\"170A191T\",\"ігу \":\"171W1902\",ігі:\"170O19051L4Z\",\"ігі \":\"170L1L2H\",ігін:\"1L4S\",\"ігін \":\"1L3R\",ід:\"1716197A1L0A\",\"ід \":\"1708193O\",іда:\"1710191D\",іде:\"19101L0I\",ідк:\"1913\",ідн:\"191B\",ідо:\"1911\",ідом:\"190T\",ідп:\"191N\",ідпо:\"1919\",ідпов:\"191L\",іе:\"1704\",іж:\"170L190Y\",\"іж \":\"1715191E\",із:\"170V192G1LA9\",\"із \":\"191M1LDC\",іза:\"171G1909\",ізг:\"1L2Z\",ізге:\"1L4J\",\"ізге \":\"1L5Y\",ізд:\"190B1L8E\",ізде:\"1L4F\",\"ізде \":\"1L2D\",ізді:\"1LB8\",\"ізді \":\"1L5I\",іздің:\"1L9I\",ізн:\"170D191V\",ізі:\"17061L1Y\",ій:\"170G1940\",\"ій \":\"1708195J\",ійн:\"1910\",ійс:\"171B191M\",ійск:\"1728\",ійску:\"171T\",ійсь:\"191A\",ійськ:\"191V\",ік:\"173M19371L6U\",\"ік \":\"173J190W1LAH\",іка:\"17461928\",ікав:\"171W191H\",ікава:\"171L1905\",ікаво:\"191E\",іко:\"172O192I\",ікол:\"173B192A\",іколи:\"193B\",іколі:\"174T\",ікт:\"170919021L5W\",ікте:\"1L5G\",іктер:\"1L3U\",ікті:\"1L5N\",\"ікті \":\"1L56\",іктің:\"1L27\",ікі:\"172A19031L0U\",\"ікі \":\"172S\",іл:\"1741195I1L7N\",\"іл \":\"170A190A1L1G\",іла:\"176O191E\",\"іла \":\"177M191K\",ілас:\"173B\",ілася:\"174G\",ілг:\"1L1M\",ілге:\"1L2T\",ілген:\"1L3H\",ілд:\"1L43\",ілді:\"1L5K\",\"ілді \":\"1L4T\",іле:\"170J19071L4J\",іледі:\"1L23\",ілер:\"1L23\",іли:\"190Z\",ілме:\"1L2A\",ілмей:\"1L2K\",іль:\"172M196T\",ільк:\"1935\",ілька:\"190W\",ільки:\"193H\",ільн:\"171W191M\",ільни:\"1912\",ільш:\"192O\",ільше:\"1931\",ілі:\"174A190B1L7X\",\"ілі \":\"173F19071L26\",ілігі:\"1L2R\",ілік:\"1L55\",\"ілік \":\"1L3R\",ілікт:\"1L3H\",ілім:\"1L2A\",\"ілім \":\"1L2R\",ілін:\"171E1L2Q\",іліся:\"171V\",ім:\"172T191V1L7D\",\"ім \":\"176Q19131L8D\",\"ім'я \":\"190T\",імд:\"1L3W\",імде:\"19021L2J\",імді:\"1L4S\",\"імді \":\"1L4T\",іме:\"1705190K1L33\",імен:\"19061L36\",\"імен \":\"1L4D\",імна:\"190U\",імнат:\"1915\",імі:\"171719041L3W\",\"імі \":\"171P1L1B\",іміз:\"1L3R\",\"іміз \":\"1L27\",імізд:\"1L2H\",ін:\"1753196Z1LFW\",\"ін \":\"172H198S1LJT\",іна:\"1745190C\",\"іна \":\"172X1905\",інд:\"170M19061L8S\",інде:\"1LC7\",\"інде \":\"1LBY\",індег:\"1L30\",індет:\"1L2R\",інді:\"19031L3Z\",індік:\"1L2N\",іне:\"171J19081L7F\",\"іне \":\"171F1L94\",інен:\"170U1L3I\",\"інен \":\"17191L4Z\",іну:\"172M1908\",інчи:\"190U\",інш:\"171J190T1L2G\",інші:\"19071L3X\",\"інші \":\"19091L4Z\",\"іны \":\"1725\",іні:\"170W19091L61\",інің:\"1L7S\",\"інің \":\"1LAQ\",іо:\"190I\",іп:\"170819071L37\",\"іп \":\"1L64\",іпт:\"1L1E\",\"іпті \":\"1L23\",ір:\"171619231L8X\",\"ір \":\"1706190T1L69\",іра:\"172F19051L12\",\"ірақ \":\"1L2D\",ірг:\"1L20\",ірге:\"1L28\",\"ірге \":\"1L2A\",ірд:\"1L25\",ірді:\"1L2D\",\"ірді \":\"1L2A\",іре:\"1L2D\",ірл:\"19031L1G\",ірі:\"19021L6F\",ірім:\"1L23\",ірін:\"1L3I\",ірінш:\"1L2H\",іс:\"173I193H1L48\",\"іс \":\"170V190P1L2I\",іса:\"171V1905\",іст:\"173W193H1L4A\",істе:\"19041L5E\",істей:\"1L2A\",істор:\"171L190H\",ість:\"191B\",\"ість \":\"191W\",істі:\"19081L2D\",\"ісці \":\"171P190B\",іся:\"172W190F\",\"іся \":\"174V\",ісі:\"1709190C1L3F\",\"ісі \":\"19071L28\",іт:\"171H19471L1K\",іта:\"173219151L1P\",ітап:\"1L2T\",іти:\"192H\",\"іти \":\"192E\",іть:\"192J\",\"іть \":\"192O\",іф:\"17031902\",іх:\"1721190W\",\"іх \":\"175C190H\",іхт:\"17161910\",іхто:\"17201915\",\"іхто \":\"1730191O\",іц:\"175F190L\",іца:\"171V\",\"іца \":\"1721\",іце:\"171O1905\",\"іце \":\"172H\",іцц:\"172O\",іцца:\"1748\",\"іцца \":\"1769\",іцы:\"1729\",\"іцы \":\"172E\",іць:\"17AA\",\"іць \":\"17GA\",іч:\"171F191F\",ічо:\"171N1915\",ічог:\"172R191C\",ічога:\"1744\",ічого:\"191Y\",іш:\"170Z19281L19\",іше:\"191F\",\"іше \":\"191B\",іши:\"1910\",\"ішов \":\"1914\",іші:\"19021L1N\",іщ:\"190A\",ію:\"170C1912\",\"ію \":\"17191924\",ія:\"171Q190Z\",\"ія \":\"174F191M\",іё:\"1704\",іє:\"1912\",іі:\"170O\",\"іі \":\"172I\",ії:\"191F\",\"ії \":\"1933\",іў:\"1720\",\"іў \":\"174Q\",іўс:\"171N\",іўся:\"172T\",\"іўся \":\"1747\",ің:\"1L9B\",\"ің \":\"1LJ4\",іңі:\"1L39\",іңіз:\"1L5T\",\"іңіз \":\"1L5P\",ї:\"192T\",\"ї \":\"194E\",їв:\"190A\",їд:\"190E\",їж:\"190B\",їз:\"1909\",їй:\"190H\",\"їй \":\"1912\",їл:\"1905\",їм:\"190M\",\"їм \":\"1914\",їн:\"190C\",їс:\"190J\",їст:\"1914\",їсти:\"190W\",\"їсти \":\"1917\",їт:\"1905\",їх:\"191F\",\"їх \":\"1913\",їха:\"191V\",\"їхав \":\"1915\",їхат:\"190V\",їхати:\"1919\",її:\"190Y\",\"її \":\"1921\",ј:\"0VCA0X5Q\",\"ј \":\"0V3A0X3L\",ја:\"0V4N0X6Q\",\"ја \":\"0V800XCE\",јав:\"0V0I0X1N\",јава:\"0X0O\",јавам:\"0X0I\",јави:\"0V0G0X17\",\"јави \":\"0V060X0N\",јад:\"0V020X1G\",јадам:\"0X0C\",јаде:\"0X19\",\"јаде \":\"0X0G\",јаз:\"0X0C\",јам:\"0V070X0Q\",\"јам \":\"0V050X0W\",јан:\"0V0C0X0L\",јас:\"0V0E0X2F\",\"јас \":\"0X2K\",јасн:\"0V0F0X0L\",јат:\"0V160X3W\",јата:\"0X32\",\"јата \":\"0X37\",јате:\"0V170X13\",јател:\"0X13\",јатељ:\"0V30\",јатн:\"0X0O\",јатно:\"0X0O\",јб:\"0V06\",јв:\"0V040X03\",јд:\"0V040X1D\",јда:\"0X0U\",јдам:\"0X0Z\",\"јдам \":\"0X11\",јде:\"0V0A0X35\",\"јде \":\"0V0A0X2V\",јдем:\"0X0L\",јдеме:\"0X0N\",јдеш:\"0X0L\",\"јдеш \":\"0X0L\",јдо:\"0X0W\",јдоб:\"0X0H\",јдобр:\"0X0G\",јдов:\"0X0K\",\"јдов \":\"0X0G\",је:\"0VG40X04\",\"је \":\"0VR90X08\",јед:\"0V3U\",један:\"0V20\",једе:\"0V11\",једн:\"0V25\",једно:\"0V3F\",јез:\"0V0T\",јези:\"0V0W\",језик:\"0V23\",јем:\"0V24\",\"јем \":\"0V29\",јес:\"0V0X\",јз:\"0V020X02\",ји:\"0V1M\",\"ји \":\"0V340X03\",јк:\"0V090X0B\",јка:\"0V0F0X0Y\",\"јка \":\"0V0G0X10\",јл:\"0V020X04\",јле:\"0V020X0C\",јм:\"0V060X04\",јн:\"0V080X0A\",јна:\"0V020X0E\",јно:\"0V090X0C\",јо:\"0V0V0X0D\",јот:\"0X18\",\"јот \":\"0X1L\",још:\"0V1F\",\"још \":\"0V1P\",јс:\"0V050X05\",јст:\"0X0C\",јство:\"0X0C\",јт:\"0V0P0X03\",јте:\"0V1V0X09\",\"јте \":\"0V280X0B\",ју:\"0V2D0X05\",\"ју \":\"0V4V\",\"јуче \":\"0V20\",јц:\"0V020X05\",јца:\"0X0I\",јцата:\"0X0E\",јч:\"0V030X02\",јќ:\"0X02\",љ:\"0V200X05\",\"љ \":\"0V07\",ља:\"0V0Y\",\"ља \":\"0V11\",ље:\"0V19\",\"ље \":\"0V28\",љи:\"0V0T\",\"љи \":\"0V0T\",љив:\"0V0X\",љк:\"0V05\",љн:\"0V09\",љо:\"0V02\",љс:\"0V02\",љу:\"0V1B0X0B\",љуб:\"0V0O0X13\",љубо:\"0X0O\",љубов:\"0X0J\",људ:\"0V15\",људи:\"0V15\",\"људи \":\"0V2N\",њ:\"0V1R0X0J\",ња:\"0V0W0X0C\",\"ња \":\"0V1R0X0U\",њат:\"0X0C\",\"њата \":\"0X0H\",ње:\"0V240X0V\",\"ње \":\"0V320X26\",њег:\"0V1K\",њего:\"0V1I\",његов:\"0V3U\",њет:\"0X11\",њето:\"0X1D\",\"њето \":\"0X1G\",њи:\"0V0V\",њиг:\"0V14\",њо:\"0V03\",њу:\"0V0D\",\"њу \":\"0V0V\",ћ:\"0V3C\",\"ћ \":\"0V0Q\",ћа:\"0V0X\",\"ћа \":\"0V10\",ће:\"0V3F\",\"ће \":\"0V6F\",\"ћемо \":\"0V1Y\",\"ћете \":\"0V22\",ћеш:\"0V17\",\"ћеш \":\"0V1G\",ћи:\"0V1C\",\"ћи \":\"0V3A\",ћн:\"0V09\",ћо:\"0V02\",ћу:\"0V1N\",\"ћу \":\"0V4H\",ќ:\"0X22\",\"ќ \":\"0X03\",ќа:\"0X0L\",\"ќа \":\"0X0V\",ќам:\"0X0C\",ќат:\"0X0F\",ќата:\"0X0J\",\"ќата \":\"0X0K\",ќе:\"0X3W\",\"ќе \":\"0XCI\",ќен:\"0X0I\",\"ќен \":\"0X0O\",ќи:\"0X05\",\"ќи \":\"0X0D\",ќн:\"0X03\",ѝ:\"0X081604\",\"ѝ \":\"0X0K1608\",ў:\"176L\",\"ў \":\"17DW\",ўб:\"1707\",ўв:\"170P\",ўва:\"1722\",ўг:\"170C\",ўд:\"1711\",\"ўды \":\"171W\",ўж:\"170O\",ўжо:\"171W\",\"ўжо \":\"1737\",ўз:\"170E\",ўк:\"170M\",ўл:\"171G\",ўля:\"173S\",ўляе:\"172M\",ўляец:\"1721\",ўляць:\"171M\",ўм:\"170A\",ўн:\"172N\",ўна:\"173H\",\"ўна \":\"172O\",ўны:\"171T\",ўні:\"172V\",ўнік:\"172O\",\"ўнік \":\"1728\",ўп:\"170C\",ўр:\"170C\",ўс:\"173R\",\"ўсе \":\"171S\",ўст:\"171H\",ўся:\"1762\",\"ўся \":\"179J\",ўсё:\"173K\",\"ўсё \":\"173I\",ўсёд:\"172B\",ўсёды:\"173G\",ўт:\"170W\",ўтра:\"171P\",\"ўтра \":\"172I\",ўц:\"1705\",ўч:\"170M\",ўчын:\"171Q\",ўш:\"170D\",ўя:\"1704\",џ:\"0V040X04\",џе:\"0V040X04\",џи:\"0V02\",џо:\"0V030X03\",ғ:\"1L6T\",ға:\"1LHC\",\"ға \":\"1LG4\",ғал:\"1L3D\",ғам:\"1L22\",ған:\"1LJR\",\"ған \":\"1LOH\",ғана:\"1L2J\",\"ғана \":\"1L3K\",ғанд:\"1L48\",ғанда:\"1L37\",ғанды:\"1L30\",ғаны:\"1L36\",ғар:\"1L3J\",ғары:\"1L4D\",\"ғары \":\"1L3A\",ғд:\"1L10\",ғда:\"1L2Q\",ғдай:\"1L39\",ғдайд:\"1L2D\",ғи:\"1L08\",ғу:\"1L0B\",ғы:\"1L9U\",\"ғы \":\"1LAU\",ғыз:\"1L1O\",ғыл:\"1L2F\",ғылы:\"1L2H\",ғылым:\"1L2X\",ғым:\"1L2M\",\"ғым \":\"1L2D\",ғын:\"1L67\",\"ғын \":\"1L46\",ғына:\"1L3B\",\"ғына \":\"1L30\",ғынд:\"1L2M\",ғында:\"1L34\",ғыс:\"1L29\",қ:\"1LDN\",\"қ \":\"1LBY\",\"қ-\":\"1L09\",қа:\"1LIY\",\"қа \":\"1L63\",қаб:\"1L2E\",қабы:\"1L2O\",қабыл:\"1L2N\",қаж:\"1L1K\",қаже:\"1L2Q\",қажет:\"1L3X\",қаз:\"1L9P\",қаза:\"1LDP\",қазан:\"1L20\",қазақ:\"1LGG\",қазі:\"1L32\",қазір:\"1L4D\",қай:\"1L51\",қайд:\"1L2F\",қайда:\"1L3H\",қайт:\"1L2X\",қайта:\"1L2K\",қал:\"1L80\",қала:\"1L84\",қалай:\"1L2U\",қалас:\"1L30\",қалд:\"1L2H\",қалды:\"1L3H\",қалы:\"1L26\",қам:\"1L1N\",қан:\"1L69\",\"қан \":\"1L4U\",қанд:\"1L2Z\",қанда:\"1L3K\",қар:\"1LAA\",қара:\"1LA9\",қарай:\"1L2K\",қарал:\"1L3K\",қару:\"1L21\",қары:\"1L21\",қас:\"1L1G\",қат:\"1L50\",қатар:\"1L2D\",қатты:\"1L2A\",қаты:\"1L4J\",қатын:\"1L2D\",қатыс:\"1L3X\",қау:\"1L1Y\",қауіп:\"1L27\",қаш:\"1L28\",қаша:\"1L3K\",қашан:\"1L4N\",қи:\"1L0X\",қм:\"1L04\",қо:\"1L59\",қозға:\"1L27\",қой:\"1L22\",қол:\"1L3C\",қолд:\"1L2M\",қолда:\"1L3N\",қор:\"1L3E\",қорғ:\"1L2Q\",қорға:\"1L3X\",қос:\"1L23\",қоғ:\"1L1E\",қоға:\"1L2M\",қоғам:\"1L3R\",қп:\"1L0X\",қпа:\"1L1S\",қр:\"1L09\",қс:\"1L3V\",қса:\"1L1X\",қсат:\"1L23\",қст:\"1L5K\",қста:\"1LA0\",қстан:\"1LDT\",қсы:\"1L36\",\"қсы \":\"1L51\",қт:\"1L6U\",қта:\"1LBI\",қтал:\"1L26\",қтан:\"1L2X\",\"қтан \":\"1L2N\",қтар:\"1L94\",\"қтар \":\"1L3H\",қтард:\"1L2K\",қтары:\"1L72\",қты:\"1L6Z\",\"қты \":\"1L7I\",қтың:\"1L2F\",\"қтың \":\"1L3H\",қу:\"1L0V\",қш:\"1L0R\",қша:\"1L1D\",қы:\"1L95\",қыз:\"1L4T\",қызм:\"1L4J\",қызме:\"1L6G\",қызы:\"1L23\",қыл:\"1L4A\",қылмы:\"1L27\",қылы:\"1L3T\",\"қылы \":\"1L4Z\",қын:\"1L2P\",қыр:\"1L2V\",қыс:\"1L1B\",қыт:\"1L3K\",қығ:\"1L28\",қығы:\"1L3K\",\"қығы \":\"1L40\",қық:\"1L1Z\",қықт:\"1L32\",қықта:\"1L3X\",ққ:\"1L0V\",ққа:\"1L29\",\"ққа \":\"1L39\",құ:\"1L4L\",құр:\"1L3S\",құра:\"1L2X\",құрам:\"1L2N\",құрыл:\"1L2N\",құқ:\"1L41\",құқы:\"1L7C\",құқығ:\"1L4N\",құқық:\"1L4Q\",ң:\"1L7F\",\"ң \":\"1LJF\",ңа:\"1L11\",\"ңа \":\"1L1X\",ңб:\"1L0M\",ңг:\"1L0S\",ңге:\"1L1D\",ңд:\"1L1U\",ңда:\"1L2M\",ңе:\"1L0R\",ңк:\"1L07\",ңм:\"1L0A\",\"ңмен \":\"1L23\",ңн:\"1L08\",ңс:\"1L05\",ңт:\"1L0B\",ңы:\"1L2W\",ңыз:\"1L6I\",\"ңыз \":\"1L80\",ңызд:\"1L32\",ңызды:\"1L37\",ңі:\"1L27\",ңіз:\"1L3S\",\"ңіз \":\"1L4Q\",ңғ:\"1L0T\",ңғы:\"1L1H\",ү:\"1L3T1MDJ\",\"ү \":\"1M3E\",үг:\"1L0V1M1R\",\"үг \":\"1M0O\",үгд:\"1M19\",\"үгд \":\"1M0V\",үгэ:\"1M17\",үгээ:\"1M15\",үгээр:\"1M1M\",үгі:\"1L23\",үгін:\"1L3O\",\"үгін \":\"1L47\",үгү:\"1M0X\",үгүй:\"1M13\",\"үгүй \":\"1M27\",үд:\"1L081M1K\",\"үд \":\"1M1V\",үдэ:\"1M14\",үдээ:\"1M0P\",үе:\"1M0G\",үед:\"1M0V\",\"үед \":\"1M0Z\",үз:\"1L0Y1M0W\",үзе:\"1L1C\",үзеге:\"1L2K\",үзэ:\"1M1C\",үзэх:\"1M0P\",үй:\"1L2W1MA4\",\"үй \":\"1L0R1MJ2\",үйд:\"1L1B\",үйе:\"1L20\",үйл:\"1L0P1M30\",\"үйл \":\"1M2M\",үйт:\"1M0L\",үйі:\"1L1J\",үк:\"1L0U\",үл:\"1L1G1M1U\",үлк:\"1L1N\",үлке:\"1L28\",үлкен:\"1L34\",үлэ:\"1M20\",үлээ:\"1M1V\",үлээж:\"1M16\",үм:\"1L121M0I\",үмк:\"1L2D\",үмкі:\"1L3V\",үмкін:\"1L5I\",үмү:\"1M0Z\",үмүү:\"1M15\",үмүүс:\"1M2B\",үн:\"1L2D1M84\",\"үн \":\"1L1M1M3C\",үнд:\"1L0Z1M2Z\",\"үнд \":\"1M36\",үни:\"1L111M98\",үний:\"1MAO\",\"үний \":\"1M7T\",үнийг:\"1MD7\",үнт:\"1M19\",үнтэ:\"1M1H\",үнтэй:\"1M2Z\",үнэ:\"1M48\",үнэн:\"1M1B\",үнэни:\"1M16\",үнэх:\"1M2K\",үнэхэ:\"1M55\",үнээс:\"1M1A\",үні:\"1L2F\",\"үні \":\"1L3D\",үр:\"1L2V1M1T\",\"үр \":\"1L0N1M1E\",үрг:\"1L181M17\",үргэ:\"1M1D\",үргэл:\"1M1M\",үрд:\"1L1B\",үрде:\"1L21\",\"үрде \":\"1L2H\",үре:\"1L1J\",үрт:\"1M0L\",үртэл:\"1M16\",үрэ:\"1M0T\",үс:\"1L1J1M29\",\"үс \":\"1M0T\",үсс:\"1M0N\",үссэ:\"1M0R\",үссэн:\"1M1I\",үст:\"1L1X\",үсті:\"1L2X\",үсч:\"1M17\",\"үсч \":\"1M1D\",үсэ:\"1M1V\",үсэж:\"1M11\",\"үсэж \":\"1M22\",үсэхг:\"1M1A\",үсі:\"1L1D\",үт:\"1L0K1M0B\",үтэ:\"1M0O\",үх:\"1M1I\",\"үх \":\"1M0Z\",үхд:\"1M0N\",үхэ:\"1M1J\",үхэд:\"1M0T\",үш:\"1L2C\",\"үш \":\"1L18\",үші:\"1L3O\",үшін:\"1L6L\",\"үшін \":\"1L8J\",үү:\"1MB6\",\"үү \":\"1M87\",үүг:\"1M0S\",үүд:\"1M2I\",\"үүд \":\"1M1X\",үүл:\"1M1Y\",үүн:\"1MCJ\",үүнд:\"1M2Y\",\"үүнд \":\"1M5V\",үүни:\"1MA8\",үүний:\"1MIJ\",үүнт:\"1M1D\",үүнтэ:\"1M2R\",үүнээ:\"1M1A\",үүр:\"1M0N\",үүс:\"1M12\",\"үүс \":\"1M0Z\",үүх:\"1M1M\",үүхд:\"1M0R\",үүхэ:\"1M11\",үүхэд:\"1M1M\",ұ:\"1L4N\",ұд:\"1L0A\",ұж:\"1L09\",ұз:\"1L0R\",ұй:\"1L0V\",ұйы:\"1L1W\",ұйым:\"1L23\",ұйымд:\"1L27\",ұл:\"1L4Z\",\"ұл \":\"1L8T\",ұлт:\"1L2E\",ұлтт:\"1L39\",ұлтты:\"1L40\",ұм:\"1L2G\",ұмы:\"1L58\",ұмыс:\"1L82\",\"ұмыс \":\"1L6Q\",ұмыст:\"1L2N\",ұн:\"1L1U\",ұна:\"1L1N\",ұнд:\"1L24\",ұнда:\"1L3F\",\"ұнда \":\"1L2U\",ұны:\"1L1E\",ұр:\"1L52\",ұра:\"1L4U\",ұрады:\"1L27\",ұрам:\"1L2J\",ұрамы:\"1L2K\",ұры:\"1L3D\",ұрылы:\"1L23\",ұрғ:\"1L1S\",ұрғы:\"1L21\",ұс:\"1L14\",ұст:\"1L1M\",ұста:\"1L2M\",ұт:\"1L0L\",ұш:\"1L0P\",ұя:\"1L09\",ұғ:\"1L0E\",ұқ:\"1L22\",ұқы:\"1L4G\",ұқығ:\"1L3D\",ұқығы:\"1L4T\",ұқық:\"1L3O\",ұқықт:\"1L4D\",ұң:\"1L06\",ә:\"1L3E\",әб:\"1L04\",әд:\"1L0X\",әде:\"1L22\",әдени:\"1L2A\",әж:\"1L08\",әз:\"1L0D\",әй:\"1L0Y\",әйе:\"1L1J\",әйел:\"1L2Q\",әк:\"1L0I\",әл:\"1L1X\",әле:\"1L2R\",әлем:\"1L3R\",әлемд:\"1L27\",әлі:\"1L1I\",әм:\"1L06\",ән:\"1L3W\",әне:\"1L98\",\"әне \":\"1LFS\",әр:\"1L3P\",\"әр \":\"1L1T\",әрі:\"1L2Z\",\"әрі \":\"1L26\",әс:\"1L1R\",әсе:\"1L1Z\",әсел:\"1L21\",әселе:\"1L2X\",әт:\"1L0F\",әу:\"1L0P\",әң:\"1L0A\",ө:\"1L431M9G\",\"ө \":\"1M3A\",өб:\"1L0C\",өв:\"1M1Q\",\"өв \":\"1M19\",өвл:\"1M0S\",өвлө:\"1M0X\",өвлөг:\"1M16\",өвх:\"1M0T\",өвхө:\"1M0Z\",өвхөн:\"1M1Y\",өг:\"1M3F\",\"өг \":\"1M1C\",өгж:\"1M0Q\",өгжи:\"1M0T\",өгл:\"1M0Z\",өглө:\"1M13\",өглөө:\"1M27\",өгн:\"1M0S\",өгнө:\"1M0V\",\"өгнө \":\"1M1Q\",өгс:\"1M0Z\",өгсө:\"1M0Z\",өгсөн:\"1M1Y\",өгө:\"1M28\",өгөө:\"1M1P\",\"өгөө \":\"1M16\",өд:\"1M1L\",өдө:\"1M2Z\",өдөр:\"1M2Y\",\"өдөр \":\"1M5O\",өж:\"1M0C\",\"өж \":\"1M0T\",өз:\"1L4A\",\"өз \":\"1L3K\",өзг:\"1L19\",өзге:\"1L2A\",өзгер:\"1L27\",өзд:\"1L1M\",өзде:\"1L2F\",өздер:\"1L2A\",өзі:\"1L3Y\",өзін:\"1L42\",өзіні:\"1L23\",өй:\"1L0W\",өйл:\"1L2E\",өйле:\"1L4D\",өйлей:\"1L20\",өк:\"1L0Q\",өл:\"1L1Y1M1I\",өлд:\"1M0L\",өлі:\"1L1U\",өлө:\"1M1T\",өлөө:\"1M1B\",\"өлөө \":\"1M1Q\",өм:\"1L191M0Q\",өмб:\"1M0L\",өмбө:\"1M0P\",өмбөг:\"1M1E\",өме:\"1L1O\",өмек:\"1L28\",өмект:\"1L2A\",өмн:\"1M0V\",өмнө:\"1M11\",\"өмнө \":\"1M1Y\",өмі:\"1L1I\",өмір:\"1L2T\",\"өмір \":\"1L2A\",өн:\"1L1A1M4Q\",\"өн \":\"1M4G\",өнг:\"1M3C\",өнгө:\"1M3R\",\"өнгө \":\"1M22\",өнгөр:\"1M2N\",өнд:\"1L161M14\",өндір:\"1L2H\",өндө:\"1M0T\",өндөр:\"1M16\",өні:\"1L1D\",өнө:\"1M2N\",өнөө:\"1M2M\",\"өнөө \":\"1M1I\",өнөөд:\"1M3F\",өп:\"1L15\",\"өп \":\"1L1U\",өр:\"1L381M5S\",\"өр \":\"1M6F\",өре:\"1L1Y\",өри:\"1M15\",өрий:\"1M1D\",өрийн:\"1M1Y\",өрс:\"1L1G1M1J\",өрсе:\"1L2O\",өрсет:\"1L3K\",өрсө:\"1M1J\",өрсөн:\"1M33\",өрч:\"1M0Q\",өрө:\"1M2K\",өрөө:\"1M2I\",\"өрөө \":\"1M2R\",өс:\"1L0D1M0F\",өсө:\"1M0L\",өт:\"1L2W1M0C\",өте:\"1L38\",\"өте \":\"1L3R\",өтк:\"1L2C\",өткен:\"1L2H\",өткі:\"1L2F\",өткіз:\"1L30\",\"өтті \":\"1L2R\",өтэ:\"1M0N\",өтэй:\"1M0R\",\"өтэй \":\"1M1E\",өті:\"1L1B\",өх:\"1M0K\",өч:\"1M0O\",өчи:\"1M1J\",өчиг:\"1M1R\",өчигд:\"1M3I\",өш:\"1L0J\",өң:\"1L0H\",өө:\"1M6C\",\"өө \":\"1M5K\",өөг:\"1M14\",өөгөө:\"1M16\",өөд:\"1M1T\",өөдө:\"1M1V\",өөдөр:\"1M33\",өөн:\"1M10\",өөр:\"1M5F\",\"өөр \":\"1M1X\",өөри:\"1M17\",өөрий:\"1M2F\",өөрч:\"1M0R\",өөрө:\"1M19\",өөрөө:\"1M27\",өөс:\"1M0O\",\"ִ\":\"1H0N\",\"ִד\":\"1H0S\",\"ִדיש\":\"1H1L\",\"ִק\":\"1H05\",\"ִש\":\"1H06\",\"ַ\":\"1HIQ\",\"ַ \":\"1H9G\",\"ַב\":\"1H0V\",\"ַג\":\"1H0G\",\"ַד\":\"1H0Q\",\"ַה\":\"1H08\",\"ַו\":\"1H0S\",\"ַוו\":\"1H1I\",\"ַווע\":\"1H1D\",\"ַוועק\":\"1H0U\",\"ַז\":\"1H2M\",\"ַז \":\"1H2Q\",\"ַזו\":\"1H1S\",\"ַזוי\":\"1H36\",\"ַזוי \":\"1H39\",\"ַט\":\"1H3J\",\"ַט \":\"1H35\",\"ַטע\":\"1H1A\",\"ַי\":\"1H09\",\"ַך\":\"1H15\",\"ַך \":\"1H2A\",\"ַכ\":\"1H1J\",\"ַכט\":\"1H1L\",\"ַכט \":\"1H2Q\",\"ַכן\":\"1H0Z\",\"ַכן \":\"1H1W\",\"ַל\":\"1H41\",\"ַלט\":\"1H1A\",\"ַלט \":\"1H18\",\"ַלי\":\"1H1T\",\"ַלע\":\"1H24\",\"ַלע \":\"1H2H\",\"ַלץ \":\"1H1K\",\"ַם\":\"1H07\",\"ַמ\":\"1H1O\",\"ַמי\":\"1H1A\",\"ַמי \":\"1H24\",\"ַמע\":\"1H1D\",\"ַן\":\"1H4X\",\"ַן \":\"1H9N\",\"ַנ\":\"1H65\",\"ַנג\":\"1H13\",\"ַנגע\":\"1H1F\",\"ַנד\":\"1H1U\",\"ַנד \":\"1H1O\",\"ַנדע\":\"1H1E\",\"ַנדער\":\"1H15\",\"ַנט\":\"1H2W\",\"ַנט \":\"1H32\",\"ַני\":\"1H11\",\"ַנע\":\"1H2M\",\"ַנע \":\"1H1S\",\"ַנען\":\"1H1Z\",\"ַנען \":\"1H25\",\"ַנער \":\"1H0U\",\"ַנצ\":\"1H1A\",\"ַנצי\":\"1H17\",\"ַנציי\":\"1H15\",\"ַנק\":\"1H10\",\"ַנק \":\"1H18\",\"ַס\":\"1H10\",\"ַסער \":\"1H0W\",\"ַע\":\"1H0T\",\"ַער\":\"1H1B\",\"ַער \":\"1H20\",\"ַפ\":\"1H14\",\"ַפּ\":\"1H0Z\",\"ַפֿ\":\"1H1C\",\"ַץ\":\"1H0M\",\"ַץ \":\"1H19\",\"ַצ\":\"1H0H\",\"ַק\":\"1H13\",\"ַר\":\"1H7N\",\"ַר \":\"1H2J\",\"ַרא\":\"1H1K\",\"ַראַ\":\"1H21\",\"ַראַן\":\"1H0X\",\"ַרב\":\"1H1B\",\"ַרבע\":\"1H1E\",\"ַרבעט\":\"1H1C\",\"ַרו\":\"1H1H\",\"ַרוו\":\"1H1I\",\"ַרווא\":\"1H1G\",\"ַרויס\":\"1H0W\",\"ַרט\":\"1H10\",\"ַרי\":\"1H11\",\"ַרפֿ\":\"1H1B\",\"ַרק\":\"1H0Y\",\"ַרש\":\"1H1C\",\"ַרשט\":\"1H22\",\"ַרשטי\":\"1H1F\",\"ַש\":\"1H0O\",\"ָ\":\"1HFM\",\"ָ \":\"1H1I\",\"ָב\":\"1H4A\",\"ָב \":\"1H4U\",\"ָבן\":\"1H2Q\",\"ָבן \":\"1H5B\",\"ָבער \":\"1H15\",\"ָג\":\"1H1I\",\"ָגט\":\"1H1E\",\"ָגט \":\"1H2P\",\"ָד\":\"1H0E\",\"ָו\":\"1H07\",\"ָז\":\"1H0N\",\"ָט\":\"1H5Z\",\"ָט \":\"1HAJ\",\"ָך\":\"1H0O\",\"ָך \":\"1H1D\",\"ָכ\":\"1H0B\",\"ָל\":\"1H30\",\"ָל \":\"1H20\",\"ָלט\":\"1H1F\",\"ָלט \":\"1H2H\",\"ָם\":\"1H59\",\"ָם \":\"1HAA\",\"ָמ\":\"1H1Y\",\"ָמיר \":\"1H0W\",\"ָמס \":\"1H18\",\"ָמע\":\"1H1N\",\"ָמען\":\"1H33\",\"ָמען \":\"1H3D\",\"ָן\":\"1H1E\",\"ָן \":\"1H2U\",\"ָנ\":\"1H1I\",\"ָס\":\"1H6G\",\"ָס \":\"1HAA\",\"ָסט\":\"1H22\",\"ָסט \":\"1H1H\",\"ָסטאָ\":\"1H15\",\"ָסטו \":\"1H1B\",\"ָע\":\"1H07\",\"ָף\":\"1H05\",\"ָפ\":\"1H1O\",\"ָפּ\":\"1H2B\",\"ָפּ \":\"1H1I\",\"ָפּגע\":\"1H12\",\"ָפֿ\":\"1H13\",\"ָצ\":\"1H05\",\"ָק\":\"1H0I\",\"ָר\":\"1H3T\",\"ָר \":\"1H1M\",\"ָרט\":\"1H1D\",\"ָרט \":\"1H1X\",\"ָרן\":\"1H1K\",\"ָרן \":\"1H2Z\",\"ָרניש\":\"1H0Z\",\"ָש\":\"1H04\",\"ּ\":\"1H4N\",\"ּ \":\"1H13\",\"ּא\":\"1H1W\",\"ּאַ\":\"1H28\",\"ּאַס\":\"1H1A\",\"ּאָ\":\"1H1N\",\"ּאָלי\":\"1H14\",\"ּג\":\"1H09\",\"ּה\":\"1H06\",\"ּו\":\"1H0P\",\"ּח\":\"1H0C\",\"ּט\":\"1H0D\",\"ּי\":\"1H1A\",\"ּל\":\"1H0T\",\"ּמ\":\"1H08\",\"ּנ\":\"1H0F\",\"ּס\":\"1H08\",\"ּע\":\"1H14\",\"ּעס \":\"1H18\",\"ּער\":\"1H0V\",\"ּר\":\"1H1O\",\"ּרא\":\"1H1Y\",\"ּראַ\":\"1H2I\",\"ּראַך\":\"1H1R\",\"ּראַכ\":\"1H0W\",\"ּראָ\":\"1H1C\",\"ּש\":\"1H07\",\"־\":\"1H1J\",\"־א\":\"1H0A\",\"־ב\":\"1H04\",\"־ג\":\"1H04\",\"־ה\":\"1H09\",\"־ט\":\"1H05\",\"־י\":\"1H0A\",\"־מ\":\"1H07\",\"־ע\":\"1H04\",\"־פ\":\"1H06\",\"־ק\":\"1H04\",\"־ש\":\"1H07\",\"־⁠\":\"1H11\",\"ֿ\":\"1H6Y\",\"ֿ \":\"1H0E\",\"ֿא\":\"1H51\",\"ֿאַ\":\"1H8E\",\"ֿאַר\":\"1HDX\",\"ֿאַר \":\"1H4C\",\"ֿאַרא\":\"1H1F\",\"ֿאַרב\":\"1H12\",\"ֿאַרו\":\"1H1M\",\"ֿאַרל\":\"1H0X\",\"ֿאַרש\":\"1H2Q\",\"ֿאָ\":\"1H1S\",\"ֿאָר\":\"1H1T\",\"ֿה\":\"1H06\",\"ֿו\":\"1H2M\",\"ֿון\":\"1H3Q\",\"ֿון \":\"1H75\",\"ֿונעם\":\"1H13\",\"ֿט\":\"1H0V\",\"ֿט \":\"1H1C\",\"ֿי\":\"1H1N\",\"ֿיל\":\"1H10\",\"ֿל\":\"1H0O\",\"ֿן\":\"1H11\",\"ֿן \":\"1H24\",\"ֿע\":\"1H18\",\"ֿר\":\"1H24\",\"ֿרא\":\"1H11\",\"ֿראַ\":\"1H1X\",\"ֿראַנ\":\"1H1R\",\"ֿרי\":\"1H13\",\"ֿש\":\"1H05\",\"ֿײ\":\"1H0I\",\"ֿײַ\":\"1H0Z\",\"ֿײַנ\":\"1H1O\",\"ֿײַנט\":\"1H1O\",\"ׂ\":\"1H0A\",\"ׂר\":\"1H0A\",\"ׂראל \":\"1H10\",א:\"1HSG\",\"א \":\"1H0T\",אַ:\"1HQX\",\"אַ \":\"1HG5\",אַביל:\"1H0V\",אַד:\"1H12\",אַו:\"1H1I\",אַוו:\"1H2R\",אַווע:\"1H1H\",אַז:\"1H4Q\",\"אַז \":\"1H4M\",אַזו:\"1H3I\",אַזוי:\"1H3G\",אַט:\"1H4B\",\"אַט \":\"1H2O\",אַטע:\"1H22\",\"אַטע \":\"1H13\",אַך:\"1H19\",\"אַך \":\"1H2D\",אַכ:\"1H2S\",אַכט:\"1H2Y\",\"אַכט \":\"1H2U\",אַכן:\"1H1S\",\"אַכן \":\"1H1X\",אַל:\"1H7P\",אַלט:\"1H2I\",\"אַלט \":\"1H1C\",אַלי:\"1H3K\",אַליי:\"1H0X\",אַליע:\"1H0Y\",אַלע:\"1H3W\",\"אַלע \":\"1H2K\",אַלץ:\"1H1K\",\"אַלץ \":\"1H1P\",אַמ:\"1H3E\",אַמי:\"1H2K\",\"אַמי \":\"1H2A\",אַמע:\"1H2P\",אַמער:\"1H0U\",אַן:\"1H3K\",\"אַן \":\"1H6U\",אַנ:\"1H8U\",אַנאַ:\"1H0Y\",אַנג:\"1H1H\",אַנגע:\"1H0U\",אַנד:\"1H3E\",\"אַנד \":\"1H1P\",אַנדע:\"1H1I\",אַנט:\"1H3A\",אַנטי:\"1H0V\",אַני:\"1H1Y\",אַניש:\"1H10\",אַנע:\"1H1W\",אַנצ:\"1H2H\",אַנצי:\"1H1A\",אַנק:\"1H1X\",\"אַנק \":\"1H1C\",אַס:\"1H1M\",אַסער:\"1H0U\",אַפ:\"1H29\",אַפּ:\"1H1W\",אַפֿ:\"1H2K\",אַץ:\"1H18\",\"אַץ \":\"1H2F\",אַצ:\"1H0Z\",אַק:\"1H22\",אַר:\"1HEH\",\"אַר \":\"1H4X\",אַרא:\"1H31\",אַראַ:\"1H27\",אַרב:\"1H2K\",אַרבע:\"1H1I\",אַרו:\"1H2W\",אַרוו:\"1H1N\",אַרוי:\"1H13\",אַרט:\"1H1Z\",אַרי:\"1H21\",אַריש:\"1H15\",\"אַרף \":\"1H13\",אַרפ:\"1H1E\",אַרפֿ:\"1H1F\",אַרק:\"1H1W\",אַרש:\"1H2N\",אַרשט:\"1H29\",אַרײ:\"1H1C\",אַרײַ:\"1H1B\",אַש:\"1H1C\",אָ:\"1HQU\",\"אָ \":\"1H32\",אָב:\"1H8H\",\"אָב \":\"1H98\",אָבן:\"1H5B\",\"אָבן \":\"1H5R\",אָבע:\"1H1C\",אָבער:\"1H17\",אָג:\"1H32\",\"אָג \":\"1H1H\",אָגט:\"1H2R\",\"אָגט \":\"1H2X\",\"אָגן \":\"1H18\",אָז:\"1H1B\",אָט:\"1HBL\",\"אָט \":\"1HIM\",אָך:\"1H1D\",\"אָך \":\"1H2P\",אָל:\"1H60\",\"אָל \":\"1H3X\",אָלט:\"1H2T\",\"אָלט \":\"1H2P\",אָלי:\"1H1I\",אָם:\"1HAA\",\"אָם \":\"1HI8\",אָמ:\"1H3Z\",אָמי:\"1H1E\",אָמיר:\"1H0W\",אָמס:\"1H18\",\"אָמס \":\"1H1C\",אָמע:\"1H38\",אָמען:\"1H3D\",אָמפּ:\"1H1A\",אָן:\"1H2V\",\"אָן \":\"1H5I\",אָנ:\"1H33\",אָנגע:\"1H0U\",אָס:\"1HCG\",\"אָס \":\"1HI9\",אָסט:\"1H42\",\"אָסט \":\"1H1L\",אָסטא:\"1H16\",אָסטו:\"1H1B\",אָפ:\"1H3E\",אָפּ:\"1H4J\",\"אָפּ \":\"1H1N\",אָפּג:\"1H12\",אָפֿ:\"1H26\",אָפֿן:\"1H0T\",אָק:\"1H11\",אָר:\"1H7M\",\"אָר \":\"1H37\",אָרט:\"1H2Q\",\"אָרט \":\"1H23\",אָרן:\"1H31\",\"אָרן \":\"1H38\",אָרני:\"1H11\",\"א־\":\"1H04\",אב:\"1H0D\",אג:\"1H04\",אה:\"1H04\",או:\"1H6B\",אוי:\"1H6H\",\"אויך \":\"1H0W\",אויס:\"1H4M\",\"אויס \":\"1H1Y\",אויסג:\"1H1R\",אויף:\"1H47\",\"אויף \":\"1H4K\",אויפ:\"1H1U\",אויפֿ:\"1H1X\",אומ:\"1H0W\",און:\"1H30\",\"און \":\"1H5T\",אונ:\"1H26\",אונד:\"1H2I\",אונדז:\"1H2P\",אז:\"1H06\",אט:\"1H0C\",אי:\"1HLM\",איב:\"1H0X\",איבע:\"1H1U\",איבער:\"1H1Z\",איז:\"1HLD\",\"איז \":\"1HSG\",איי:\"1H1S\",איינ:\"1H1I\",איך:\"1HCK\",\"איך \":\"1HLG\",אים:\"1H10\",\"אים \":\"1H1Z\",אין:\"1H5J\",\"אין \":\"1HAF\",אינ:\"1H13\",אינטע:\"1H11\",\"איצט \":\"1H0U\",איר:\"1H4P\",\"איר \":\"1H8B\",אכ:\"1H05\",אל:\"1H0M\",אם:\"1H07\",אמ:\"1H0I\",\"אמת \":\"1H1H\",אן:\"1H05\",אנ:\"1H07\",אס:\"1H0K\",אפ:\"1H08\",אר:\"1H0N\",אױ:\"1H0C\",אײ:\"1H14\",אײַ:\"1H24\",אײַך:\"1H1E\",\"אײַך \":\"1H1I\",אײַע:\"1H1V\",אײַער:\"1H20\",ב:\"1H9X\",\"ב \":\"1H4I\",בֿ:\"1H1L\",בֿר:\"1H11\",בא:\"1H2S\",באַ:\"1H40\",באַוו:\"1H0V\",באַש:\"1H18\",באָ:\"1H1A\",באָסט:\"1H15\",בו:\"1H0V\",בט:\"1H0N\",\"בט \":\"1H14\",בי:\"1H57\",בין:\"1H4X\",\"בין \":\"1H9E\",ביס:\"1H2I\",ביסט:\"1H4B\",\"ביסט \":\"1H38\",ביסטו:\"1H1I\",בל:\"1H0U\",בן:\"1H2R\",\"בן \":\"1H5F\",בנ:\"1H05\",בס:\"1H05\",בע:\"1H2P\",בעט:\"1H0Y\",בעסער:\"1H0Y\",בער:\"1H2H\",\"בער \":\"1H22\",בר:\"1H1B\",ברע:\"1H0W\",בײ:\"1H0P\",בײַ:\"1H1G\",\"בײַ \":\"1H19\",ג:\"1HAL\",\"ג \":\"1H20\",גא:\"1H1X\",גאַ:\"1H1Y\",גאַנ:\"1H2G\",גאַנג:\"1H0Y\",גאָ:\"1H1S\",גאָט:\"1H19\",\"גאָט \":\"1H1A\",גאָר:\"1H1F\",גאָרנ:\"1H0Z\",גו:\"1H19\",גוט:\"1H21\",\"גוט \":\"1H27\",גז:\"1H05\",גט:\"1H19\",\"גט \":\"1H2I\",גי:\"1H1G\",גיי:\"1H1C\",\"גיין \":\"1H11\",גל:\"1H1L\",גלי:\"1H1I\",גליי:\"1H1J\",גלייב:\"1H1L\",גן:\"1H1F\",\"גן \":\"1H2U\",גנ:\"1H0K\",גס:\"1H05\",גע:\"1HCB\",געב:\"1H1H\",\"געבן \":\"1H14\",געג:\"1H1H\",געגע:\"1H1I\",געה:\"1H1I\",געהא:\"1H23\",געהאַ:\"1H21\",געו:\"1H5Q\",געוו:\"1HAS\",געווא:\"1H3A\",געווע:\"1H7Y\",געז:\"1H29\",געזא:\"1H1Z\",געזאָ:\"1H20\",געזע:\"1H1O\",געזען:\"1H16\",געט:\"1H1K\",געטאָ:\"1H0W\",געטר:\"1H1B\",געל:\"1H1S\",\"געלט \":\"1H17\",געמאַ:\"1H0W\",גען:\"1H0W\",\"גען \":\"1H1R\",גענ:\"1H1H\",גענו:\"1H18\",\"געסן \":\"1H0X\",געפ:\"1H1K\",געפֿ:\"1H2K\",געפֿע:\"1H0Y\",געק:\"1H15\",געקו:\"1H1B\",געקומ:\"1H0X\",גער:\"1H1Y\",געש:\"1H1O\",גר:\"1H15\",גרויס:\"1H12\",גײ:\"1H05\",ד:\"1HC2\",\"ד \":\"1H2L\",דא:\"1H5I\",דאַ:\"1H1U\",דאַנק:\"1H0W\",דאַר:\"1H24\",דאַרף:\"1H10\",דאַרפ:\"1H14\",דאָ:\"1H8Q\",\"דאָ \":\"1H2B\",דאָס:\"1HC8\",\"דאָס \":\"1HD5\",דו:\"1H2D\",\"דו \":\"1H3K\",דז:\"1H12\",דזער:\"1H18\",\"דזער \":\"1H14\",דט:\"1H0M\",\"דט \":\"1H1A\",די:\"1H71\",\"די \":\"1H7M\",דיק:\"1H2O\",\"דיק \":\"1H2T\",דיקע:\"1H1A\",\"דיקע \":\"1H0W\",דיר:\"1H16\",\"דיר \":\"1H1T\",דיש:\"1H14\",דל:\"1H0D\",דן:\"1H0Z\",\"דן \":\"1H20\",דנ:\"1H06\",דס:\"1H06\",דע:\"1H7D\",דעם:\"1H2R\",\"דעם \":\"1H5E\",דער:\"1HA2\",\"דער \":\"1HE9\",דר:\"1H0T\",דש:\"1H05\",דײ:\"1H0Y\",דײַ:\"1H1Y\",דײַטש:\"1H0Y\",דײַן:\"1H2G\",\"דײַן \":\"1H2O\",ה:\"1H7G\",\"ה \":\"1H1S\",\"ה־\":\"1H05\",הא:\"1HA8\",האַ:\"1H2J\",האַט:\"1H1L\",\"האַט \":\"1H1P\",האַל:\"1H1L\",האַלט:\"1H1F\",האָ:\"1HGC\",האָב:\"1HDC\",\"האָב \":\"1H9S\",האָבן:\"1H5K\",האָט:\"1HGN\",\"האָט \":\"1HHP\",האָס:\"1H2D\",האָסט:\"1H2K\",הב:\"1H05\",הד:\"1H05\",הו:\"1H0Z\",הונ:\"1H0V\",הונט:\"1H19\",\"הונט \":\"1H1D\",הי:\"1H1P\",היי:\"1H1T\",הנ:\"1H04\",הע:\"1H18\",העברע:\"1H0X\",הער:\"1H13\",\"הערט \":\"1H12\",הר:\"1H09\",הש:\"1H04\",הײ:\"1H0A\",הײַנט:\"1H0U\",ו:\"1HMD\",\"ו \":\"1H5K\",וּ:\"1H0T\",\"ו־\":\"1H04\",וא:\"1H4R\",ואַ:\"1H2H\",ואָ:\"1H6A\",ואָל:\"1H2K\",ואָלט:\"1H2C\",ואָס:\"1H6Z\",\"ואָס \":\"1H7E\",ואָר:\"1H2J\",ואָרן:\"1H21\",וב:\"1H0F\",וג:\"1H0T\",וד:\"1H0X\",וה:\"1H04\",וו:\"1HFD\",ווּ:\"1H16\",ווא:\"1H95\",וואַ:\"1H4K\",וואַל:\"1H0U\",וואַר:\"1H16\",וואָ:\"1HBR\",וואָל:\"1H2R\",וואָס:\"1H7K\",וואָר:\"1H2Q\",ווו:\"1H1W\",וווּ:\"1H2B\",\"וווּ \":\"1H1A\",וווי:\"1H1F\",וווינ:\"1H16\",ווי:\"1H85\",\"ווי \":\"1H3S\",וויי:\"1H3E\",\"וויי \":\"1H12\",ווייס:\"1H1L\",וויל:\"1H3U\",\"וויל \":\"1H2O\",ווינ:\"1H1P\",ווינט:\"1H0V\",ווע:\"1HBU\",וועג:\"1H29\",וועגן:\"1H1I\",וועט:\"1H2S\",\"וועט \":\"1H2P\",וועל:\"1H3S\",\"וועל \":\"1H1D\",וועלט:\"1H1J\",וועלן:\"1H0X\",ווען:\"1H8P\",\"ווען \":\"1H9E\",ווער:\"1H4H\",\"ווער \":\"1H1W\",ווערט:\"1H1G\",ווערן:\"1H10\",ווײ:\"1H10\",ווײַ:\"1H1Z\",וז:\"1H0D\",וח:\"1H0B\",וט:\"1H1Q\",\"וט \":\"1H1W\",וטע:\"1H0X\",\"וטער \":\"1H0V\",וי:\"1HAU\",\"וי \":\"1H40\",ויז:\"1H0Y\",\"ויז \":\"1H17\",ויט:\"1H14\",\"ויט \":\"1H1B\",ויי:\"1H1Q\",וייס:\"1H1H\",\"וייס \":\"1H13\",ויל:\"1H2A\",\"ויל \":\"1H2P\",וין:\"1H0X\",\"וין \":\"1H1S\",וינ:\"1H16\",\"וינט \":\"1H0X\",וינען:\"1H0U\",ויס:\"1H3R\",\"ויס \":\"1H2N\",ויסג:\"1H1Z\",ויסגע:\"1H22\",ויף:\"1H2E\",\"ויף \":\"1H4O\",ויפ:\"1H1Y\",ויפֿ:\"1H3B\",ויפֿן:\"1H1I\",וך:\"1H0E\",וכ:\"1H0D\",ול:\"1H0Z\",ום:\"1H0P\",\"ום \":\"1H17\",ומ:\"1H1S\",ומע:\"1H1Y\",ומען:\"1H2Z\",\"ומען \":\"1H38\",ון:\"1H3W\",\"ון \":\"1H7K\",ונ:\"1H3G\",ונג:\"1H21\",\"ונג \":\"1H2C\",ונד:\"1H1K\",ונדז:\"1H2I\",\"ונדז \":\"1H1F\",ונדזע:\"1H1C\",ונט:\"1H1E\",\"ונט \":\"1H1U\",\"ונעם \":\"1H14\",וס:\"1H0Q\",וע:\"1H6B\",ועג:\"1H15\",ועגן:\"1H1E\",\"ועגן \":\"1H1I\",ועט:\"1H1F\",\"ועט \":\"1H2H\",ועל:\"1H24\",\"ועל \":\"1H1D\",ועלט:\"1H1F\",\"ועלט \":\"1H18\",\"ועלן \":\"1H0Y\",וען:\"1H4O\",\"וען \":\"1H8W\",וער:\"1H2B\",\"וער \":\"1H1S\",וערט:\"1H1C\",\"וערט \":\"1H0X\",\"וערן \":\"1H10\",וף:\"1H07\",ופ:\"1H0I\",וצ:\"1H0C\",וק:\"1H0I\",ור:\"1H1D\",וש:\"1H0E\",ות:\"1H0X\",\"ות \":\"1H1F\",וײ:\"1H0H\",וײַ:\"1H10\",ז:\"1HDX\",\"ז \":\"1HE5\",זא:\"1H27\",זאַ:\"1H1B\",זאָ:\"1H2Z\",זאָג:\"1H3I\",זאָגט:\"1H2L\",זאָל:\"1H1Z\",\"זאָל \":\"1H18\",זו:\"1H1J\",זוי:\"1H1S\",\"זוי \":\"1H35\",זט:\"1H06\",זי:\"1H7C\",\"זי \":\"1H2Q\",זיי:\"1H3N\",\"זיי \":\"1H3G\",זייע:\"1H2Z\",זייער:\"1H37\",זיך:\"1H5O\",\"זיך \":\"1HAN\",זיכער:\"1H0U\",זיש:\"1H12\",\"זיש \":\"1H1T\",זל:\"1H06\",זם:\"1H0A\",זן:\"1H0A\",זע:\"1H4X\",\"זעט \":\"1H17\",\"זען \":\"1H1O\",זענ:\"1H6A\",זענט:\"1H2H\",\"זענט \":\"1H2N\",זענע:\"1H9P\",זענען:\"1HAG\",זער:\"1H0Y\",\"זער \":\"1H1F\",זר:\"1H04\",זש:\"1H0N\",זײ:\"1H2B\",זײַ:\"1H47\",זײַט:\"1H1R\",\"זײַט \":\"1H1P\",זײַן:\"1H42\",\"זײַן \":\"1H4E\",זײַנ:\"1H1T\",זײַנע:\"1H1X\",ח:\"1H19\",\"ח \":\"1H0C\",חב:\"1H0F\",חבֿר:\"1H1J\",חה:\"1H0A\",חו:\"1H0D\",חי:\"1H0D\",חל:\"1H08\",חמ:\"1H05\",חש:\"1H05\",ט:\"1HM5\",\"ט \":\"1HPI\",\"ט־\":\"1H0B\",טא:\"1H9R\",טאַ:\"1H3K\",טאַט:\"1H29\",טאַטע:\"1H15\",טאָ:\"1HF1\",\"טאָ \":\"1H1S\",\"טאָט \":\"1H0U\",טאָם:\"1HI4\",\"טאָם \":\"1HJ9\",טאָמ:\"1H3N\",טאָמס:\"1H1C\",טאָמע:\"1H2L\",טאָן:\"1H2U\",\"טאָן \":\"1H32\",טה:\"1H04\",טו:\"1H2U\",\"טו \":\"1H2S\",טי:\"1H3K\",טיי:\"1H1D\",טיק:\"1H2D\",\"טיק \":\"1H2E\",טיש:\"1H0Y\",טל:\"1H0T\",טן:\"1H20\",\"טן \":\"1H40\",טס:\"1H06\",טע:\"1H5F\",\"טע \":\"1H2L\",טעל:\"1H13\",טער:\"1H5F\",\"טער \":\"1H6H\",טפ:\"1H06\",טק:\"1H08\",טר:\"1H1U\",טרא:\"1H1W\",טראַ:\"1H1X\",טראָ:\"1H1R\",טש:\"1H1Q\",\"טש \":\"1H12\",טשן:\"1H11\",\"טשן \":\"1H21\",טײ:\"1H0D\",י:\"1HSG\",\"י \":\"1HBE\",יִ:\"1H1F\",יִד:\"1H1M\",יִדי:\"1H1L\",יִדיש:\"1H1Q\",\"יִדן \":\"1H0W\",\"י־\":\"1H06\",יא:\"1H1T\",יאַ:\"1H1C\",יאָ:\"1H1X\",יב:\"1H3D\",\"יב \":\"1H3G\",\"יבן \":\"1H1C\",יבע:\"1H1I\",יבער:\"1H2B\",יג:\"1H1M\",\"יגן \":\"1H1M\",יד:\"1H1L\",\"יד \":\"1H17\",ידע:\"1H0V\",יה:\"1H07\",יו:\"1H14\",יז:\"1HD5\",\"יז \":\"1HLS\",יזי:\"1H0X\",\"יזיש \":\"1H11\",יט:\"1H52\",\"יט \":\"1H6N\",\"יטן \":\"1H1E\",יי:\"1HC8\",\"יי \":\"1H3B\",ייִ:\"1H1T\",ייִד:\"1H33\",ייִדי:\"1H1Q\",ייִדן:\"1H0V\",ייב:\"1H1H\",\"ייבט \":\"1H0U\",ייג:\"1H0W\",ייד:\"1H0Y\",ייזיש:\"1H15\",ייט:\"1H2J\",\"ייט \":\"1H3W\",יין:\"1H75\",\"יין \":\"1HD3\",יינ:\"1H2V\",יינע:\"1H2Y\",\"יינע \":\"1H0V\",יינער:\"1H1H\",ייס:\"1H1H\",\"ייס \":\"1H1D\",ייסט:\"1H17\",\"ייסט \":\"1H11\",ייע:\"1H29\",ייער:\"1H37\",\"ייער \":\"1H37\",יך:\"1HA2\",\"יך \":\"1HIE\",יכ:\"1H1F\",יכט:\"1H10\",יכטיק:\"1H18\",יכע:\"1H0Z\",יכער:\"1H1P\",\"יכער \":\"1H1E\",יל:\"1H34\",\"יל \":\"1H28\",ילי:\"1H0X\",\"ילן \":\"1H19\",ים:\"1H1T\",\"ים \":\"1H3H\",ימ:\"1H0Y\",ין:\"1H9M\",\"ין \":\"1HHM\",ינ:\"1H57\",ינג:\"1H14\",ינד:\"1H1E\",ינדער:\"1H0Y\",ינט:\"1H20\",\"ינט \":\"1H28\",ינטע:\"1H1B\",ינטער:\"1H12\",יני:\"1H0V\",ינע:\"1H36\",\"ינע \":\"1H1F\",\"ינעם \":\"1H11\",ינען:\"1H1Q\",\"ינען \":\"1H1V\",ינער:\"1H1R\",\"ינער \":\"1H1Q\",יס:\"1H5E\",\"יס \":\"1H2U\",יסג:\"1H10\",יסגע:\"1H1W\",יסט:\"1H52\",\"יסט \":\"1H5G\",יסטו:\"1H1O\",\"יסטו \":\"1H1S\",יע:\"1H3L\",\"יע \":\"1H29\",יעדער:\"1H0W\",יענ:\"1H0Y\",יער:\"1H21\",\"יער \":\"1H37\",יף:\"1H1B\",\"יף \":\"1H2N\",יפ:\"1H1K\",יפּ:\"1H0V\",יפֿ:\"1H27\",יפֿן:\"1H1G\",\"יפֿן \":\"1H1K\",יץ:\"1H04\",יצ:\"1H13\",\"יצט \":\"1H1F\",יק:\"1H4Q\",\"יק \":\"1H4N\",יקט:\"1H0W\",\"יקט \":\"1H1E\",יקע:\"1H29\",\"יקע \":\"1H2D\",יקער:\"1H1S\",\"יקער \":\"1H1N\",יר:\"1H7Z\",\"יר \":\"1HB9\",ירט:\"1H1O\",\"ירט \":\"1H2Z\",ירן:\"1H16\",\"ירן \":\"1H29\",יש:\"1HA9\",\"יש \":\"1H4V\",ישׂרא:\"1H15\",ישט:\"1HCS\",\"ישט \":\"1HKW\",ישטאָ:\"1H15\",ישע:\"1H23\",\"ישע \":\"1H2P\",ישער:\"1H1B\",\"ישער \":\"1H1A\",ית:\"1H06\",ך:\"1H65\",\"ך \":\"1HCZ\",\"ך־\":\"1H05\",כ:\"1H3P\",\"כ'\":\"1H0C\",כּ:\"1H11\",כא:\"1H0B\",כג:\"1H04\",כה:\"1H04\",כו:\"1H04\",כט:\"1H25\",\"כט \":\"1H2O\",כטיק:\"1H1G\",\"כטיק \":\"1H12\",כי:\"1H0C\",כל:\"1H0C\",כן:\"1H0U\",\"כן \":\"1H1Q\",כנ:\"1H04\",כס:\"1H05\",כע:\"1H15\",כער:\"1H1E\",\"כער \":\"1H26\",\"כ׳\":\"1H1D\",\"כ׳ב\":\"1H1J\",\"כ׳בי\":\"1H31\",\"כ׳בין\":\"1H3A\",\"כ׳ה\":\"1H0X\",\"כ׳הא\":\"1H1S\",\"כ׳האָ\":\"1H1X\",ל:\"1HC9\",\"ל \":\"1H5J\",\"ל־\":\"1H0B\",לא:\"1H30\",לאַ:\"1H2N\",לאַנ:\"1H2H\",לאַנד:\"1H1L\",לאָ:\"1H34\",לאָז:\"1H1T\",לאָמ:\"1H17\",לאָמי:\"1H15\",לב:\"1H0A\",לד:\"1H0Q\",לה:\"1H04\",לו:\"1H1I\",לח:\"1H06\",לט:\"1H2X\",\"לט \":\"1H4A\",לי:\"1H6A\",ליב:\"1H33\",\"ליב \":\"1H4T\",ליג:\"1H0Z\",ליי:\"1H2Z\",לייב:\"1H1T\",\"לייב \":\"1H0U\",לך:\"1H04\",לכ:\"1H04\",לל:\"1H04\",לם:\"1H06\",למ:\"1H09\",לן:\"1H0Z\",\"לן \":\"1H20\",לס:\"1H0C\",לע:\"1H5J\",\"לע \":\"1H26\",לעב:\"1H1C\",לעבן:\"1H1V\",\"לעבן \":\"1H1X\",לעך:\"1H1O\",\"לעך \":\"1H3A\",לעכ:\"1H17\",\"לעכע \":\"1H0Y\",לער:\"1H23\",לערנ:\"1H1U\",לערנט:\"1H0Y\",לערנע:\"1H0Z\",לף:\"1H06\",לפ:\"1H0C\",לץ:\"1H0G\",\"לץ \":\"1H0X\",לק:\"1H0B\",לש:\"1H0D\",לײ:\"1H0T\",לײַ:\"1H1H\",ם:\"1H4T\",\"ם \":\"1HA8\",\"ם־\":\"1H0A\",מ:\"1HAJ\",מא:\"1H3P\",מאַ:\"1H47\",מאַכ:\"1H2P\",מאַכט:\"1H1X\",\"מאַן \":\"1H0X\",מאָ:\"1H2X\",מאָל:\"1H2V\",\"מאָל \":\"1H2N\",מב:\"1H06\",מג:\"1H06\",מד:\"1H09\",מה:\"1H0A\",מו:\"1H14\",מז:\"1H06\",מח:\"1H04\",מט:\"1H0J\",\"מט \":\"1H11\",מי:\"1H7J\",\"מי \":\"1H13\",מיד:\"1H0V\",\"מיד \":\"1H1I\",מיט:\"1H3L\",\"מיט \":\"1H5J\",מיי:\"1H0Z\",מיך:\"1H1D\",\"מיך \":\"1H2O\",מיר:\"1H61\",\"מיר \":\"1HB7\",מל:\"1H0O\",מס:\"1H0L\",מע:\"1H6C\",\"מע \":\"1H14\",מען:\"1H4K\",\"מען \":\"1H8P\",מענ:\"1H2N\",מענט:\"1H3U\",מענטש:\"1H3S\",מער:\"1H2Y\",\"מער \":\"1H1S\",מערי:\"1H39\",\"מערי \":\"1H1X\",מפ:\"1H0J\",מפּ:\"1H0Z\",מצ:\"1H05\",מר:\"1H04\",מש:\"1H0Q\",משוגע:\"1H0V\",משפּח:\"1H0Z\",מת:\"1H0I\",מײ:\"1H1X\",מײַ:\"1H3R\",מײַן:\"1H5S\",\"מײַן \":\"1H69\",מײַנ:\"1H18\",מײַנע:\"1H14\",ן:\"1HHC\",\"ן \":\"1HRW\",\"ן־\":\"1H0H\",נ:\"1HEY\",נא:\"1H35\",נאַ:\"1H2E\",נאַר:\"1H1O\",נאָ:\"1H3J\",נאָך:\"1H2G\",\"נאָך \":\"1H2N\",נאָר:\"1H1Z\",\"נאָר \":\"1H1T\",נב:\"1H0C\",נג:\"1H2T\",\"נג \":\"1H1T\",נגע:\"1H26\",נגען:\"1H1N\",\"נגען \":\"1H1S\",נד:\"1H2Y\",\"נד \":\"1H1A\",נדז:\"1H1D\",\"נדז \":\"1H1B\",נדזע:\"1H18\",נדזער:\"1H1C\",נדי:\"1H11\",נדיק:\"1H1B\",\"נדיק \":\"1H0X\",נדע:\"1H1S\",נדער:\"1H2U\",\"נדער \":\"1H1K\",נה:\"1H0I\",נו:\"1H17\",נומע:\"1H19\",נומען:\"1H19\",נז:\"1H04\",נט:\"1H5Y\",\"נט \":\"1H6U\",נטע:\"1H1B\",נטער:\"1H1U\",נטש:\"1H1W\",\"נטש \":\"1H18\",נטשן:\"1H1W\",\"נטשן \":\"1H21\",ני:\"1H9B\",ניט:\"1H13\",\"ניט \":\"1H1U\",ניק:\"1H0V\",ניש:\"1HDD\",\"ניש \":\"1H19\",נישט:\"1HLK\",\"נישט \":\"1HLY\",נישטא:\"1H16\",נל:\"1H04\",נמ:\"1H05\",נס:\"1H15\",\"נס \":\"1H10\",נע:\"1H7T\",\"נע \":\"1H2F\",נעם:\"1H1E\",\"נעם \":\"1H2Q\",נען:\"1H83\",\"נען \":\"1HET\",נער:\"1H2P\",\"נער \":\"1H4H\",נפ:\"1H08\",נץ:\"1H07\",נצ:\"1H0X\",נצי:\"1H0W\",נצייז:\"1H15\",נק:\"1H18\",\"נק \":\"1H0X\",נש:\"1H08\",נת:\"1H05\",נײ:\"1H09\",ס:\"1HAO\",\"ס \":\"1HAE\",\"ס'\":\"1H08\",\"ס'איז\":\"1H0W\",סא:\"1H14\",סאַ:\"1H1K\",סאַמ:\"1H28\",סאַמי:\"1H2D\",סב:\"1H05\",סג:\"1H0J\",סגע:\"1H10\",סו:\"1H0E\",סט:\"1H65\",\"סט \":\"1H5M\",סטא:\"1H0V\",סטאָן:\"1H16\",סטו:\"1H2Y\",\"סטו \":\"1H57\",סטי:\"1H11\",סטע:\"1H1C\",סטער:\"1H1J\",\"סטער \":\"1H19\",סי:\"1H11\",סך:\"1H0F\",סכ:\"1H06\",סל:\"1H0D\",סמ:\"1H07\",סן:\"1H0Z\",\"סן \":\"1H1Z\",סנ:\"1H04\",סע:\"1H1C\",סער:\"1H1K\",\"סער \":\"1H2E\",ספ:\"1H0E\",סק:\"1H0B\",סת:\"1H09\",\"ס׳\":\"1H18\",\"ס׳א\":\"1H1V\",\"ס׳אי\":\"1H3I\",\"ס׳איז\":\"1H3T\",ע:\"1HQ4\",\"ע \":\"1H92\",\"ע־\":\"1H06\",עא:\"1H0C\",עב:\"1H1W\",עבן:\"1H1H\",\"עבן \":\"1H2T\",עג:\"1H25\",עגאַנ:\"1H0Z\",עגן:\"1H0Z\",\"עגן \":\"1H1W\",עד:\"1H25\",עדט:\"1H10\",\"עדט \":\"1H1Z\",עדן:\"1H0W\",\"עדן \":\"1H1R\",עה:\"1H0X\",עהא:\"1H12\",עהאַ:\"1H1V\",עהאַט:\"1H1P\",עו:\"1H3F\",עוו:\"1H6D\",עווא:\"1H37\",עוואָ:\"1H2U\",עווע:\"1H7T\",עווען:\"1H7Z\",עז:\"1H1L\",עזא:\"1H10\",עזאָ:\"1H1V\",עזאָג:\"1H1Y\",עזע:\"1H10\",\"עזען \":\"1H16\",עט:\"1H3F\",\"עט \":\"1H48\",עטאָן:\"1H0W\",עי:\"1H0G\",עך:\"1H0V\",\"עך \":\"1H1R\",עכ:\"1H1E\",עכט:\"1H1H\",\"עכט \":\"1H1P\",על:\"1H4F\",\"על \":\"1H15\",עלט:\"1H28\",\"עלט \":\"1H36\",עלי:\"1H13\",עלן:\"1H0V\",\"עלן \":\"1H1Q\",עלע:\"1H1O\",עם:\"1H2D\",\"עם \":\"1H4S\",עמ:\"1H1M\",עמאַכ:\"1H0V\",עמע:\"1H16\",\"עמען \":\"1H18\",ען:\"1HAN\",\"ען \":\"1HJ9\",ענ:\"1H88\",ענג:\"1H11\",ענו:\"1H0W\",ענט:\"1H52\",\"ענט \":\"1H56\",ענטש:\"1H3K\",\"ענטש \":\"1H1C\",ענטשן:\"1H21\",ענע:\"1H76\",ענען:\"1HAW\",\"ענען \":\"1HBP\",ענער:\"1H1P\",\"ענער \":\"1H1L\",עס:\"1H44\",\"עס \":\"1H4I\",עסט:\"1H1M\",עסן:\"1H0Z\",\"עסן \":\"1H1Y\",עסער:\"1H1G\",\"עסער \":\"1H12\",עע:\"1H05\",עפ:\"1H1P\",עפּ:\"1H1A\",עפֿ:\"1H1Z\",עפֿעל:\"1H0U\",עץ:\"1H0F\",עצ:\"1H0S\",עק:\"1H23\",עקומע:\"1H0W\",עקס:\"1H0V\",ער:\"1HJH\",\"ער \":\"1HN6\",ערט:\"1H26\",\"ערט \":\"1H3D\",ערי:\"1H3A\",\"ערי \":\"1H1T\",ערין:\"1H1W\",\"ערין \":\"1H22\",ערן:\"1H1Y\",\"ערן \":\"1H3R\",ערנ:\"1H1G\",\"ערנט \":\"1H0Y\",ערנע:\"1H1C\",ערנען:\"1H0Z\",ערס:\"1H0W\",\"ערס \":\"1H1B\",ערע:\"1H2B\",\"ערע \":\"1H1P\",ערער:\"1H17\",\"ערער \":\"1H12\",ערש:\"1H0W\",ערשט:\"1H1A\",עש:\"1H11\",עװ:\"1H0A\",ף:\"1H11\",\"ף \":\"1H29\",פ:\"1H9X\",פּ:\"1H7W\",\"פּ \":\"1H1F\",פּא:\"1H3T\",פּאַ:\"1H4D\",פּאַנ:\"1H0V\",פּאַס:\"1H1E\",פּאָ:\"1H38\",פּאָל:\"1H17\",פּי:\"1H24\",פּל:\"1H19\",פּע:\"1H22\",\"פּעס \":\"1H0W\",פּער:\"1H1P\",פּר:\"1H31\",פּרא:\"1H3T\",פּראַ:\"1H2Q\",פּראָ:\"1H1G\",פֿ:\"1HDI\",פֿא:\"1H9W\",פֿאַ:\"1HFB\",פֿאַל:\"1H0V\",פֿאַר:\"1HEW\",פֿאָ:\"1H3I\",פֿאָר:\"1H1Y\",פֿו:\"1H51\",פֿון:\"1H77\",\"פֿון \":\"1H7Q\",פֿונ:\"1H1G\",פֿונע:\"1H18\",פֿט:\"1H1O\",\"פֿט \":\"1H2N\",פֿי:\"1H31\",פֿיל:\"1H1Z\",\"פֿיל \":\"1H0U\",פֿיר:\"1H1E\",פֿל:\"1H1C\",פֿן:\"1H24\",\"פֿן \":\"1H44\",פֿע:\"1H29\",פֿעל:\"1H1I\",פֿער:\"1H1C\",פֿר:\"1H3C\",פֿרא:\"1H20\",פֿראַ:\"1H23\",פֿרוי:\"1H10\",פֿרי:\"1H1H\",פֿרײַ:\"1H15\",פֿײ:\"1H10\",פֿײַ:\"1H1Y\",פֿײַנ:\"1H1T\",פא:\"1H0D\",פו:\"1H07\",פי:\"1H05\",פע:\"1H04\",פר:\"1H06\",ץ:\"1H0X\",\"ץ \":\"1H20\",צ:\"1H4H\",צא:\"1H06\",צו:\"1H3C\",\"צו \":\"1H3Z\",צוויי:\"1H0V\",צט:\"1H0Q\",\"צט \":\"1H19\",צי:\"1H3Y\",\"צי \":\"1H46\",ציי:\"1H0W\",צייזי:\"1H15\",צל:\"1H09\",צן:\"1H0I\",\"צן \":\"1H10\",צע:\"1H0U\",צײ:\"1H09\",ק:\"1H99\",\"ק \":\"1H3S\",קא:\"1H2W\",קאַ:\"1H3D\",קאַבי:\"1H0U\",קאַץ:\"1H1P\",\"קאַץ \":\"1H1U\",קאָ:\"1H2F\",קג:\"1H05\",קו:\"1H1Z\",קויפֿ:\"1H0Z\",קומ:\"1H1D\",קומע:\"1H1W\",קומען:\"1H1X\",קט:\"1H1D\",\"קט \":\"1H1R\",קי:\"1H3Y\",קיי:\"1H66\",קייט:\"1H1J\",\"קייט \":\"1H1H\",קיין:\"1H8X\",\"קיין \":\"1H9K\",קיינ:\"1H1F\",קיינע:\"1H16\",קינ:\"1H0X\",קינד:\"1H1I\",קינדע:\"1H0W\",קל:\"1H17\",קן:\"1H0H\",\"קן \":\"1H0Z\",קנ:\"1H04\",קס:\"1H0Q\",קע:\"1H4M\",\"קע \":\"1H2I\",קען:\"1H23\",\"קען \":\"1H41\",קענ:\"1H1D\",\"קענט \":\"1H14\",קענסט:\"1H0X\",\"קעץ \":\"1H1B\",קער:\"1H1I\",\"קער \":\"1H25\",קצ:\"1H05\",קר:\"1H0U\",קײ:\"1H0C\",ר:\"1HKR\",\"ר \":\"1HJE\",\"ר־\":\"1H0C\",רא:\"1H5B\",ראַ:\"1H68\",ראַך:\"1H1O\",\"ראַך \":\"1H1Q\",ראַכ:\"1H1E\",ראַכן:\"1H0U\",\"ראַן \":\"1H16\",ראַנ:\"1H3N\",ראַנצ:\"1H1N\",ראַנק:\"1H0V\",ראָ:\"1H3G\",ראָפ:\"1H1B\",ראָפּ:\"1H10\",רב:\"1H12\",רבעט:\"1H1B\",\"רבעט \":\"1H0Y\",רג:\"1H0Y\",רגע:\"1H14\",רד:\"1H0T\",רה:\"1H0C\",רו:\"1H3O\",רוו:\"1H1A\",רווא:\"1H1P\",רוואָ:\"1H1D\",רוי:\"1H2H\",רויס:\"1H22\",\"רויס \":\"1H0V\",רז:\"1H06\",רח:\"1H04\",רט:\"1H34\",\"רט \":\"1H4G\",רי:\"1H5C\",\"רי \":\"1H17\",ריי:\"1H1C\",רין:\"1H15\",\"רין \":\"1H2A\",ריק:\"1H1A\",ריש:\"1H12\",רך:\"1H07\",רכ:\"1H0A\",רל:\"1H0J\",רמ:\"1H0K\",רן:\"1H2I\",\"רן \":\"1H4X\",רנ:\"1H17\",רנישט:\"1H12\",\"רנען \":\"1H0Z\",רס:\"1H0L\",רע:\"1H4U\",\"רע \":\"1H16\",רעד:\"1H2L\",רעדט:\"1H1Z\",\"רעדט \":\"1H25\",רעדן:\"1H1F\",\"רעדן \":\"1H1K\",רעכ:\"1H0Y\",רעכט:\"1H1I\",\"רעכט \":\"1H1A\",רער:\"1H0V\",\"רער \":\"1H1B\",רף:\"1H0B\",רפ:\"1H0O\",רפֿ:\"1H15\",רץ:\"1H07\",רצ:\"1H0E\",רק:\"1H0V\",רש:\"1H19\",רשט:\"1H1T\",רשטי:\"1H1I\",רשטיי:\"1H1H\",רײ:\"1H1I\",רײַ:\"1H2Y\",\"רײַ \":\"1H1D\",ש:\"1HAC\",\"ש \":\"1H3I\",\"ש־\":\"1H05\",שׂ:\"1H0M\",שׂראל:\"1H15\",שא:\"1H0W\",שאַ:\"1H12\",שאַפֿ:\"1H0X\",שב:\"1H05\",שו:\"1H1X\",שוו:\"1H18\",שווע:\"1H1B\",שווער:\"1H0U\",שוין:\"1H1F\",\"שוין \":\"1H1J\",שט:\"1H97\",\"שט \":\"1HCI\",שטא:\"1H2D\",שטאַ:\"1H27\",שטאָ:\"1H2E\",\"שטאָ \":\"1H15\",שטאָט:\"1H0U\",שטי:\"1H1I\",שטיי:\"1H1Y\",שטע:\"1H17\",שי:\"1H1H\",\"שיין \":\"1H0U\",של:\"1H10\",שמ:\"1H0F\",שן:\"1H0Q\",\"שן \":\"1H1I\",שנ:\"1H07\",שע:\"1H1U\",\"שע \":\"1H1K\",שער:\"1H10\",\"שער \":\"1H1K\",שפ:\"1H1P\",שפּ:\"1H37\",שפּחה:\"1H0Y\",שפּי:\"1H1O\",שפּר:\"1H2S\",שפּרא:\"1H2N\",שק:\"1H0F\",שר:\"1H0P\",שרײַב:\"1H0Y\",שײ:\"1H04\",ת:\"1H17\",\"ת \":\"1H1B\",תּ:\"1H0T\",\"ת־\":\"1H08\",תד:\"1H05\",װ:\"1H0O\",װא:\"1H0F\",\"װאָס \":\"1H0Z\",װי:\"1H09\",װע:\"1H0K\",װײ:\"1H06\",ױ:\"1H0A\",ױס:\"1H05\",ױף:\"1H04\",ײ:\"1H53\",\"ײ \":\"1H0A\",ײַ:\"1HA0\",\"ײַ \":\"1H21\",ײַב:\"1H0Z\",ײַט:\"1H2Z\",\"ײַט \":\"1H3K\",ײַך:\"1H13\",\"ײַך \":\"1H26\",ײַן:\"1H6K\",\"ײַן \":\"1HC8\",ײַנ:\"1H3Q\",ײַנט:\"1H2H\",\"ײַנט \":\"1H2L\",ײַנע:\"1H3B\",\"ײַנע \":\"1H1V\",ײַנען:\"1H1J\",ײַע:\"1H1M\",ײַער:\"1H2K\",\"ײַער \":\"1H26\",ײט:\"1H08\",ײן:\"1H09\",ײנ:\"1H05\",ײע:\"1H06\",\"׳\":\"1H17\",\"׳א\":\"1H0X\",\"׳אי\":\"1H1T\",\"׳איז\":\"1H3J\",\"׳איז \":\"1H3T\",\"׳ב\":\"1H0R\",\"׳בי\":\"1H1J\",\"׳בין\":\"1H31\",\"׳בין \":\"1H3A\",\"׳ה\":\"1H0J\",\"׳הא\":\"1H12\",\"׳האָ\":\"1H22\",\"׳האָב\":\"1H1W\",\"׳ו\":\"1H06\",\"״\":\"1H0B\",\"״ \":\"1H0N\",ḍ:\"0332\",\"ḍ \":\"034C\",\"ḍ-\":\"030I\",ḍa:\"030R\",ḍe:\"031N\",ḍen:\"031Z\",\"ḍen \":\"031M\",ḍf:\"0305\",ḍi:\"030H\",ḍl:\"0304\",ḍm:\"0307\",ḍn:\"0303\",ḍr:\"0308\",ḍs:\"0304\",ḍt:\"030H\",\"ḍt \":\"031E\",ḍu:\"030A\",ḍḍ:\"030H\",ḥ:\"0322\",\"ḥ \":\"0313\",\"ḥ-\":\"0303\",ḥa:\"030U\",ḥal:\"031I\",ḥb:\"0304\",ḥe:\"0322\",ḥem:\"032W\",ḥemm:\"032R\",ḥemml:\"033U\",ḥi:\"0308\",ḥk:\"0303\",ḥm:\"0304\",ḥr:\"0303\",ḥs:\"0307\",ḥu:\"0309\",ḥw:\"0318\",ḥwa:\"0343\",ḥwaj:\"0347\",\"ḥwaj \":\"0343\",ḥwaje:\"035G\",ṛ:\"031O\",\"ṛ \":\"030H\",ṛa:\"031B\",ṛe:\"030M\",ṛh:\"0303\",ṛi:\"0307\",ṛj:\"0305\",ṛt:\"0306\",ṛu:\"031G\",ṛuḥ:\"032W\",ṛw:\"0303\",ṛṛ:\"030N\",ṛṛu:\"031F\",ṣ:\"030D\",\"ṣ \":\"0302\",ṣa:\"0307\",ṣe:\"030F\",ṣu:\"0303\",ṣṣ:\"0307\",ṭ:\"031D\",\"ṭ \":\"030C\",ṭa:\"031E\",ṭas:\"032O\",\"ṭas \":\"032T\",ṭe:\"030F\",ṭf:\"0303\",ṭi:\"030C\",ṭu:\"030J\",ṭṭ:\"0314\",ẓ:\"0314\",\"ẓ \":\"0305\",ẓa:\"030G\",ẓe:\"030L\",ẓi:\"030A\",ẓr:\"0316\",ẓri:\"0327\",ẓu:\"0308\",ẓw:\"0302\",ẓẓ:\"030B\",\"​\":\"06070Z02\",\"​de\":\"0Z02\",\"​​\":\"0Z04\",\"​​d\":\"0Z02\",\"‎\":\"1H03\",\"‎ \":\"1H05\",\"‐\":\"1L04\",\"‑\":\"0303\",\"‟\":\"1H02\",\"‟ \":\"1H05\",\"⁠\":\"1H0H\",\"⁠ה\":\"1H05\",一:\"06H5\",一下:\"061B\",\"一下 \":\"064J\",一个:\"063T\",一个人:\"063W\",一些:\"060V\",一個:\"062Z\",\"一杯咖啡 \":\"063H\",\"一样 \":\"062M\",一次:\"060U\",一点:\"060X\",一直:\"060S\",一起:\"0618\",三:\"061I\",上:\"067D\",\"上 \":\"061K\",下:\"064L\",\"下 \":\"0611\",\"下雨 \":\"0631\",\"下雨了 \":\"068U\",不:\"06I1\",不会:\"061A\",不可能:\"062X\",\"不可能的 \":\"065Y\",不喜:\"0612\",不喜欢:\"065C\",不喜歡:\"063Q\",\"不好 \":\"062S\",不好意思:\"06CH\",\"不好意思 \":\"06C2\",不想:\"0616\",不是:\"063L\",\"不是吗 \":\"06BV\",\"不是嗎 \":\"06AP\",不是我的:\"06A7\",\"不是真的 \":\"064B\",不會:\"060Z\",不知:\"061T\",不知道:\"06DC\",\"不知道 \":\"06CC\",不知道为什:\"063H\",不知道他:\"06DF\",不知道如何:\"063A\",不知道怎么:\"0644\",不知道玛丽:\"063X\",不能:\"061U\",不要:\"0625\",世:\"0617\",世界:\"0618\",世界上:\"062X\",世界上最:\"0690\",东西:\"060V\",\"东西 \":\"0642\",个:\"067X\",个人:\"0611\",\"个问题 \":\"0697\",中:\"0639\",中国:\"060U\",为:\"063R\",为什:\"0617\",为什么:\"069R\",为什么不:\"068B\",为什么你:\"068U\",丽:\"061I\",么:\"065X\",\"么 \":\"061Z\",么时候:\"064P\",么时候开始:\"063H\",\"么样 \":\"0631\",之:\"061O\",也:\"062K\",也不:\"060Z\",书:\"061J\",\"书 \":\"060X\",了:\"06N1\",\"了 \":\"06I3\",了一:\"0636\",了一个:\"063T\",了一個:\"063O\",\"了一整天 \":\"063A\",了什么:\"063B\",\"了什么 \":\"06FW\",\"了什麼 \":\"068O\",\"了什麼事 \":\"063X\",了他:\"061A\",了他的:\"064S\",了吗:\"060X\",\"了吗 \":\"067N\",\"了嗎 \":\"065D\",了很多:\"0638\",了我:\"061L\",了我的:\"064U\",\"了这本书 \":\"063A\",事:\"063J\",\"事 \":\"061X\",于:\"061A\",些:\"062F\",人:\"06AJ\",\"人 \":\"0643\",人的:\"060U\",人都:\"060X\",什:\"065K\",什么:\"065R\",\"什么 \":\"06E0\",\"什么名字 \":\"063H\",\"什么呢 \":\"068B\",\"什么意思 \":\"064J\",什么时:\"064Y\",什么时候:\"06Q1\",\"什么时候 \":\"063A\",什么时候回:\"063X\",什么时候开:\"065C\",什么都:\"0635\",什么都不:\"067M\",什么都知道:\"063A\",什麼:\"062O\",\"什麼 \":\"066Y\",\"什麼名字 \":\"063H\",什麼時候:\"06GV\",今:\"062B\",今天:\"062H\",今天下午:\"06AD\",今天早上:\"06E1\",从:\"061C\",他:\"06JJ\",\"他 \":\"061O\",他不:\"0613\",他们:\"0639\",他们的:\"062Z\",他們:\"0625\",他在:\"0612\",他是:\"061I\",他的:\"064G\",他的名字:\"0690\",\"他的名字 \":\"066C\",以:\"064M\",们:\"068I\",们的:\"061D\",件:\"061B\",任:\"0614\",任何:\"0613\",\"任何東西 \":\"063H\",\"休息一下 \":\"063A\",会:\"064Y\",\"会说法语 \":\"063H\",但:\"061T\",但是:\"0612\",住:\"061L\",住在:\"0615\",何:\"0618\",作:\"062W\",\"作 \":\"061O\",你:\"06K8\",\"你 \":\"0626\",你不:\"061J\",你为什么:\"06H9\",你为什么不:\"063H\",你什么时:\"06A7\",你什么时候:\"06AU\",你什麼時候:\"066K\",你们:\"061A\",你可:\"060S\",你可以:\"065R\",你在:\"0614\",你想:\"060Y\",你應該:\"062U\",你是:\"0612\",你最喜欢的:\"063P\",你最好不要:\"063H\",你有:\"0614\",你為什麼:\"06EH\",你為什麼不:\"0644\",你的:\"064G\",你知道:\"064S\",你能:\"060U\",來:\"063I\",\"來 \":\"061J\",俗話又說:\"06AV\",\"俗話又說:\":\"06BK\",\"俗話說:\":\"06B7\",信:\"061Y\",個:\"065L\",\"個問題 \":\"068I\",們:\"065Y\",們的:\"060X\",候:\"062E\",\"候 \":\"0615\",做:\"064D\",\"做 \":\"0614\",\"做了什么 \":\"064J\",做什么:\"063P\",\"做什么 \":\"06J9\",\"做什麼 \":\"06DV\",做的:\"060T\",\"做的 \":\"062O\",\"做的事 \":\"067S\",\"做那件事 \":\"063X\",像:\"061A\",儿:\"061R\",\"儿 \":\"060U\",全:\"061B\",公:\"061O\",再:\"061M\",出:\"0638\",分:\"061K\",利:\"0613\",别:\"0617\",到:\"067G\",\"到 \":\"060T\",到了:\"0622\",\"到了 \":\"0642\",前:\"062B\",力:\"061E\",加:\"0615\",\"加拿大人 \":\"064B\",\"努力工作 \":\"064B\",十:\"061T\",去:\"0670\",\"去 \":\"061F\",\"去世了 \":\"067Y\",去了:\"0614\",\"去了 \":\"0639\",友:\"061R\",\"友 \":\"0612\",发:\"061N\",发生了什么:\"0683\",受:\"0611\",只:\"0621\",叫什么名字:\"063H\",叫什麼名字:\"063H\",可:\"064L\",可以:\"063C\",可俗話又:\"06AP\",可俗話又說:\"06BD\",可能:\"061S\",史密斯先生:\"063X\",吃:\"062Y\",同:\"061G\",名:\"061G\",名字:\"060S\",\"名字 \":\"063U\",后:\"0618\",吗:\"064U\",\"吗 \":\"0675\",吧:\"061R\",\"吧 \":\"062L\",告:\"061L\",告訴:\"060S\",告訴我:\"0636\",告诉:\"0615\",告诉我:\"064H\",\"呢 \":\"061H\",和:\"064G\",和玛丽:\"0641\",\"咖啡 \":\"062X\",哪:\"0623\",\"哪裡 \":\"0637\",\"哪里 \":\"0637\",\"啊 \":\"0615\",問題:\"060S\",\"問題 \":\"0646\",喜:\"063K\",喜欢:\"0630\",喜歡:\"0626\",喝:\"0611\",嗎:\"063W\",\"嗎 \":\"065T\",回:\"0624\",回家:\"060U\",\"回家 \":\"063U\",因:\"061J\",因为:\"0612\",国:\"0628\",國:\"061B\",在:\"06FQ\",在一:\"060X\",在一起:\"062S\",\"在一起 \":\"06CH\",\"在做什么 \":\"065K\",在哪:\"061E\",\"在哪儿 \":\"068O\",在哪裡:\"0637\",\"在哪裡 \":\"06FR\",在哪里:\"063Y\",\"在哪里 \":\"06HN\",在我:\"060S\",在波士顿:\"067S\",\"在说什么 \":\"063P\",在这:\"0614\",在这里:\"0640\",\"在这里 \":\"06A1\",在這:\"060Y\",在這裡:\"063K\",\"在這裡 \":\"0697\",地:\"063B\",地方:\"060U\",\"地方 \":\"063U\",外:\"0619\",多:\"0653\",\"多 \":\"060W\",多少:\"060Z\",\"多少钱 \":\"068B\",大:\"064R\",大的:\"060U\",天:\"0677\",\"天 \":\"060S\",天早上:\"0644\",太:\"0620\",女:\"061R\",她:\"069M\",\"她 \":\"060U\",她的:\"0621\",好:\"066O\",\"好 \":\"062R\",\"好了 \":\"064K\",\"好意思 \":\"06BD\",好的:\"0619\",\"好的朋友 \":\"0644\",如:\"0626\",如果:\"061Z\",如果你:\"0667\",如果我:\"062Z\",姆:\"0684\",\"姆 \":\"060V\",姆不:\"060T\",姆不知道:\"069V\",姆和玛:\"063N\",姆和玛丽:\"06ME\",姆和玛丽说:\"063H\",始:\"0613\",子:\"0667\",\"子 \":\"0637\",字:\"061B\",学:\"062X\",学习:\"060U\",\"学习 \":\"062M\",孩:\"0620\",孩子:\"061K\",\"孩子 \":\"063V\",學:\"061X\",它:\"061N\",完:\"061E\",定:\"061P\",家:\"064D\",\"家 \":\"061S\",对:\"062E\",\"对不起 \":\"06A7\",对我来说:\"067Y\",對:\"061M\",小:\"062W\",少:\"061B\",就:\"0651\",\"就好了 \":\"068B\",就是:\"061I\",工:\"062C\",工作:\"062R\",\"工作 \":\"06C6\",己:\"061Q\",己的:\"060W\",已:\"061Y\",已經:\"0616\",已经:\"061B\",希望:\"0614\",常:\"062F\",年:\"062V\",年轻的时候:\"063P\",应:\"0611\",应该:\"0616\",开:\"0622\",开始:\"060Y\",很:\"068S\",很多:\"061Z\",很好:\"0616\",\"很好 \":\"066D\",很快就:\"062U\",\"很感兴趣 \":\"063A\",\"很有意思 \":\"065R\",\"很漂亮 \":\"068U\",\"很重要 \":\"067S\",得:\"065G\",得很:\"060Z\",得很好:\"062N\",\"得很好 \":\"06GV\",\"得很開心 \":\"063X\",從:\"0612\",心:\"0627\",\"心 \":\"0615\",必:\"061C\",必须:\"060T\",快:\"061R\",怎:\"061X\",怎么:\"061P\",怎么样:\"0639\",\"怎么样 \":\"06J1\",怎麼:\"060X\",\"怎麼樣 \":\"06A1\",您:\"061Z\",情:\"061F\",想:\"0662\",想要:\"0616\",意:\"062R\",意思:\"060T\",\"意思 \":\"0651\",感:\"061L\",\"感兴趣 \":\"06B1\",應該:\"0611\",成:\"062I\",我:\"06SG\",\"我 \":\"0626\",我一:\"061G\",我不:\"064E\",我不喜:\"0640\",我不喜欢:\"06G6\",我不喜歡:\"06CN\",我不想:\"064C\",我不知:\"066L\",我不知道:\"06SG\",\"我不知道 \":\"063P\",我不知道他:\"068A\",我不知道你:\"065C\",我不知道我:\"065R\",我不能:\"0637\",我什么都不:\"0644\",我今天:\"063W\",我今天早上:\"064Q\",我们:\"067C\",我们在:\"062P\",我们应该:\"068O\",我们必须:\"067Y\",我们的:\"066M\",我会:\"060S\",我們:\"065L\",我們的:\"0654\",我可以:\"064S\",我喜:\"060X\",我喜欢:\"064Q\",我喜歡:\"0632\",我在:\"061Z\",我希望:\"064P\",我希望你:\"068O\",我很:\"0617\",我從來沒有:\"063H\",我想:\"062R\",我想知道:\"067S\",我想要:\"063L\",\"我打电话 \":\"0644\",我昨天:\"062U\",我是:\"061E\",我最喜欢的:\"063H\",我最喜歡的:\"0644\",我有:\"0614\",我每天早上:\"063A\",我没有:\"062X\",我的:\"066P\",我的朋友:\"06D4\",\"我的朋友 \":\"066R\",我看:\"060V\",我知道:\"066A\",我知道你:\"06C0\",我知道汤姆:\"063P\",我要:\"0617\",我覺得:\"062M\",我觉得:\"064C\",我觉得汤姆:\"063H\",我需要:\"063L\",房:\"061V\",房子:\"060Z\",\"房子 \":\"062X\",所:\"062G\",所以:\"060Z\",所有:\"061B\",所有人都:\"068B\",所有的:\"064S\",手:\"061N\",打:\"062F\",打电话:\"062U\",\"打电话 \":\"06A1\",\"打網球 \":\"067S\",打高爾夫球:\"063A\",找:\"0616\",把:\"063X\",放:\"0614\",教:\"0613\",文:\"061G\",新:\"061G\",方:\"061L\",无:\"0615\",日:\"0627\",日本:\"0619\",早:\"061L\",时:\"063J\",时候:\"0625\",\"时候 \":\"0669\",时间:\"0615\",\"时间 \":\"063C\",明:\"062F\",明天:\"061M\",星期:\"060U\",昨:\"061E\",昨天:\"061K\",是:\"06JR\",是一:\"062U\",是一个:\"065Y\",是一個:\"065S\",是不:\"0615\",是不可能的:\"065Y\",是不是:\"063G\",是世界上:\"068O\",是世界上最:\"067X\",是个:\"061C\",是什:\"060Y\",是什么:\"065I\",\"是什么 \":\"06IA\",是什么意思:\"063P\",是什么时候:\"065K\",是什麼:\"062M\",\"是什麼 \":\"068O\",是你:\"0610\",是你的:\"0642\",是加拿大人:\"064B\",是我:\"062V\",是我最喜歡:\"063A\",是我的:\"067S\",\"是我的 \":\"06B7\",是我的朋友:\"064Q\",\"是日本人 \":\"064Q\",\"是最好的 \":\"063A\",\"是正確的 \":\"063H\",\"是白色的 \":\"064J\",是真的:\"062M\",\"是真的 \":\"06CY\",\"是黑色的 \":\"0644\",時:\"062K\",時候:\"061C\",\"時候 \":\"0630\",晚:\"061Y\",更:\"0618\",書:\"0616\",最:\"062M\",最喜欢的:\"067Y\",最好:\"060T\",最好的:\"0638\",最好的朋友:\"065C\",會:\"063T\",有:\"06E7\",有一:\"061Z\",有一个:\"062U\",有一個:\"062M\",有人:\"061E\",有什么:\"064J\",有很:\"060V\",有很多:\"0664\",有很多朋友:\"063H\",有的:\"060S\",朋:\"061I\",朋友:\"0629\",\"朋友 \":\"068B\",望:\"0616\",期:\"0613\",本:\"062R\",\"本书 \":\"062Q\",来:\"064Y\",\"来 \":\"061X\",\"来了 \":\"0650\",\"来的 \":\"062P\",東西:\"060T\",\"東西 \":\"063P\",果:\"0625\",样:\"061M\",\"样 \":\"060U\",次:\"061C\",欢:\"0625\",歡:\"061J\",正:\"061Q\",正在:\"0614\",死:\"0615\",\"死了 \":\"063Z\",母:\"0616\",每:\"061O\",每个人都:\"06BV\",每個人都:\"06AD\",每天:\"060X\",每天早上:\"06BJ\",每天早上都:\"063X\",比:\"0627\",水:\"061B\",汤:\"065E\",汤姆:\"067V\",\"汤姆 \":\"064A\",汤姆不:\"064U\",汤姆不喜欢:\"063X\",汤姆不知道:\"066Y\",汤姆告诉我:\"0644\",汤姆和:\"064I\",汤姆和玛:\"06MI\",汤姆和玛丽:\"06ND\",汤姆在:\"0638\",汤姆是:\"063Q\",汤姆没有:\"067Y\",汤姆的:\"063J\",汤姆说:\"062O\",汤姆说他:\"0697\",沒:\"062V\",沒有:\"062P\",没:\"064A\",没有:\"063E\",没有什么:\"068I\",没有任何:\"067Y\",法:\"062R\",波士顿:\"062M\",\"波士顿 \":\"068U\",活:\"0618\",\"游泳 \":\"0630\",湯:\"0631\",湯姆:\"064G\",\"湯姆 \":\"062V\",湯姆不知道:\"0644\",湯姆和瑪麗:\"067J\",澳大利亚:\"0690\",\"澳大利亚 \":\"063P\",火:\"0616\",点:\"062F\",為:\"062A\",為什麼:\"064S\",然:\"061J\",爱:\"0614\",父:\"0618\",物:\"061M\",\"物 \":\"060Z\",玛:\"061E\",玛丽:\"0621\",玩得很開心:\"063H\",现:\"061J\",现在:\"061I\",現:\"0612\",現在:\"0611\",球:\"061D\",理:\"0617\",瑪麗:\"060U\",甚麼:\"060X\",生:\"065A\",\"生 \":\"061C\",\"生了什么 \":\"0655\",生了什麼事:\"063X\",生活:\"0612\",\"生活 \":\"0630\",用:\"062Y\",电:\"061E\",男:\"0617\",發生了什麼:\"065Y\",的:\"06S3\",\"的 \":\"069E\",的一:\"0610\",的东西:\"0634\",\"的东西 \":\"06EH\",的事:\"061C\",\"的事 \":\"0659\",的事情:\"062V\",\"的事情 \":\"06AJ\",的人:\"062D\",\"的人 \":\"068Q\",的名字:\"0651\",\"的名字 \":\"06GV\",\"的吗 \":\"062Q\",\"的問題 \":\"06A1\",的地方:\"063T\",\"的地方 \":\"06H4\",的孩子:\"062Q\",的工作:\"064A\",\"的工作 \":\"06FM\",\"的想法 \":\"06A1\",\"的意思 \":\"069V\",的房:\"060W\",的房子:\"0637\",\"的房子 \":\"069V\",\"的故事 \":\"067S\",的时:\"061H\",的时候:\"06A5\",\"的时候 \":\"06RL\",\"的是什么 \":\"063H\",的時:\"0611\",的時候:\"066S\",\"的時候 \":\"06HN\",的朋友:\"065Y\",\"的朋友 \":\"06JI\",\"的東西 \":\"06AJ\",的生活:\"062M\",\"的生活 \":\"068U\",的电话号码:\"063P\",\"的話 \":\"062O\",的话:\"060X\",\"的话 \":\"0654\",\"的问题 \":\"06AJ\",的電話號碼:\"063P\",相:\"061N\",相信:\"060X\",看:\"0657\",看到:\"060Z\",看起來:\"062U\",看起來很:\"067S\",看起来:\"0630\",真:\"062C\",真的:\"061A\",着:\"0621\",睡:\"0616\",知:\"063O\",知道:\"064O\",\"知道 \":\"064D\",知道为什么:\"0665\",知道他:\"0648\",知道他的名:\"063A\",知道你:\"063I\",知道我:\"0633\",知道汤姆:\"068O\",\"知道真相 \":\"063A\",等:\"0617\",給:\"061K\",給我:\"060X\",經:\"0614\",经:\"061K\",给:\"0626\",给我:\"061C\",给我打电话:\"064Y\",美:\"061Q\",老:\"061T\",而:\"061I\",能:\"065M\",自:\"063B\",自己:\"062J\",自己的:\"067D\",\"自行车 \":\"0685\",色:\"0613\",\"色的 \":\"062R\",花:\"0619\",英:\"061R\",英語:\"060S\",著:\"0619\",行:\"0627\",被:\"0625\",裡:\"0627\",\"裡 \":\"0618\",西:\"061V\",\"西 \":\"060X\",西班牙:\"062V\",\"西班牙語 \":\"063X\",要:\"068S\",要的:\"060S\",见:\"061H\",觉:\"061C\",觉得:\"0612\",解:\"0611\",言:\"0615\",話:\"061K\",\"話 \":\"060Z\",\"話又說:\":\"06B1\",該:\"0611\",語:\"061K\",說:\"062T\",請:\"0614\",认:\"0615\",认为:\"060T\",让:\"061C\",让我:\"060X\",话:\"0620\",\"话 \":\"061J\",该:\"061D\",\"该做什么 \":\"063X\",语:\"062G\",\"语 \":\"0619\",说:\"063Y\",\"说 \":\"060W\",\"说什么 \":\"06AJ\",请:\"061G\",走:\"061M\",\"走了 \":\"063H\",起:\"063B\",起来:\"060Y\",跟:\"061M\",車:\"061O\",\"車 \":\"060V\",车:\"0622\",\"车 \":\"060Z\",过:\"062I\",还:\"061S\",还是:\"060V\",这:\"068O\",这个:\"062Z\",这个问题:\"06C6\",\"这个问题 \":\"065R\",这是:\"061E\",这是我:\"062U\",这是我的:\"068B\",这本书:\"063S\",\"这本书 \":\"0690\",这里:\"0612\",這:\"066J\",這個:\"062B\",這個問題:\"069P\",\"這個問題 \":\"066C\",這是:\"060Y\",這本書:\"062V\",這裡:\"060V\",過:\"061S\",道:\"063W\",\"道 \":\"060U\",道他的名字:\"063A\",還:\"0614\",那:\"0669\",那个:\"0615\",那么:\"060S\",都:\"064S\",都是:\"060Y\",里:\"063H\",\"里 \":\"061G\",重:\"0619\",重要:\"060S\",\"重要 \":\"062S\",重要的:\"0637\",開:\"061J\",間:\"0618\",问:\"061F\",问题:\"0614\",\"问题 \":\"0654\",间:\"061K\",阿尔及利亚:\"0655\",電:\"0614\",\"電話給我 \":\"063H\",需:\"061D\",需要:\"061Y\",非:\"061C\",非常:\"061K\",面:\"061P\",音:\"0612\",高:\"061M\",\"高爾夫球 \":\"063A\",麼:\"063H\",\"麼 \":\"0614\",麼時候:\"063C\",點:\"061N\",\";可俗話\":\"06AD\",\";可俗話又\":\"06B1\"},uniques:{\" 'ac\":\"1q\",\" 'am\":\"1q\",\" 'apl\":\"1q\",\" 'ar\":\"1q\",\" 'as\":\"1q\",\" 'el\":\"1q\",\" 'ep\":\"1q\",\" 'esp\":\"1q\",\" 'f\":\"m\",\" 'g\":\"m\",\" 'h\":\"m\",\" 'irn\":\"1q\",\" 'ita\":\"1q\",\" 'iv\":\"1q\",\" 'k\":\"1o\",\" 'op\":\"1q\",\" 'r\":\"m\",\" 'ul \":\"1q\",\" 'w\":\"m\",\" -h\":\"m\",\" -v\":11,\" -w\":\"m\",\" -д\":\"1l\",\" aam\":11,\" aanb\":\"r\",\" aank\":\"r\",\" aant\":\"r\",\" aast\":\"1c\",\" aba \":4,\" abag\":4,\" abav\":4,\" abii\":\"t\",\" abue\":\"o\",\" abw\":\"n\",\" acea\":15,\" acep\":\"o\",\" acho\":\"p\",\" acop\":15,\" acue\":\"o\",\" acá\":\"o\",\" adev\":15,\" adiu\":\"t\",\" aduc\":15,\" ady\":\"1n\",\" adı\":\"1f\",\" aed\":\"t\",\" aem\":\"t\",\" aet\":\"t\",\" afis\":4,\" afsa\":13,\" aftu\":13,\" afw\":\"r\",\" ag \":\"s\",\" aggi\":\"q\",\" agyr\":\"1n\",\" ahat\":3,\" aho \":4,\" ahí\":\"o\",\" aia\":15,\" aige\":\"s\",\" aika\":11,\" aiko\":11,\" aina\":11,\" aind\":\"p\",\" aino\":11,\" ains\":\"l\",\" aio\":11,\" aith\":\"s\",\" aiu\":\"q\",\" aiv\":11,\" aiz\":\"1d\",\" ajat\":11,\" ajed\":\"o\",\" ajn\":\"1o\",\" ajt\":14,\" ajud\":\"p\",\" ajut\":15,\" ak-\":3,\" akaz\":4,\" aker\":3,\" akh\":\"b\",\" akk \":3,\" akka\":3,\" akke\":3,\" akon\":\"d\",\" aku \":\"b\",\" akvo\":\"1o\",\" aká \":\"y\",\" aké\":\"y\",\" akú\":\"y\",\" aký\":\"y\",\" alcu\":\"q\",\" aldo\":\"1o\",\" aldy\":\"1n\",\" allv\":10,\" allá\":\"o\",\" allé\":\"l\",\" aloi\":11,\" alor\":\"l\",\" alst\":\"r\",\" altı\":\"1f\",\" alwa\":\"m\",\" além\":\"p\",\" alý\":\"1n\",\" am-\":3,\" amay\":3,\" amee\":\"1c\",\" amek\":3,\" amez\":3,\" amie\":\"l\",\" amā\":\"t\",\" amž\":\"1b\",\" an-\":\"s\",\" ang \":\"d\",\" angg\":\"b\",\" anji\":\"b\",\" anny\":14,\" anoc\":\"o\",\" anos\":\"p\",\" any \":\"m\",\" anya\":14,\" anyb\":\"m\",\" anym\":\"m\",\" anyt\":\"m\",\" aon \":\"s\",\" aos\":\"p\",\" apa-\":\"b\",\" apak\":\"b\",\" apg\":\"1b\",\" apie\":\"1b\",\" apsi\":\"1b\",\" aqe\":3,\" aql\":3,\" araw\":\"d\",\" arbr\":\"l\",\" arga\":3,\" arou\":\"m\",\" arst\":\"1c\",\" artı\":\"1f\",\" arí\":\"s\",\" arī\":\"1d\",\" arı\":\"1f\",\" asak\":3,\" ascu\":15,\" asef\":3,\" asel\":3,\" asio\":11,\" asj\":\"1c\",\" ask \":\"m\",\" asly\":\"1n\",\" aso \":\"d\",\" ass-\":3,\" astf\":15,\" asup\":15,\" asz\":14,\" así\":\"o\",\" atau\":\"b\",\" atb\":\"1d\",\" atc\":\"1d\",\" atee\":\"1c\",\" ateg\":4,\" atid\":\"1b\",\" atkl\":\"1d\",\" atne\":\"1b\",\" atsi\":\"1b\",\" att \":10,\" atua\":\"p\",\" atun\":15,\" atá\":\"s\",\" até\":\"p\",\" auch\":\"n\",\" aucu\":\"l\",\" auf \":\"n\",\" aufs\":\"n\",\" augs\":\"1d\",\" auj\":\"l\",\" aup\":\"l\",\" aus \":\"n\",\" autr\":\"l\",\" aux \":\"l\",\" auz\":15,\" avb\":10,\" avet\":\"q\",\" avez\":\"l\",\" avre\":\"q\",\" avó\":\"p\",\" ayah\":\"b\",\" ayde\":3,\" aydi\":3,\" ayen\":3,\" ayer\":\"o\",\" azek\":3,\" azi \":15,\" azok\":14,\" azon\":14,\" azt \":14,\" aztá\":14,\" azé\":14,\" aí\":\"p\",\" aï\":\"l\",\" aña\":\"o\",\" aú\":\"o\",\" ağa\":\"1f\",\" aň\":\"1n\",\" aş \":15,\" aşak\":\"1n\",\" aşı\":\"1f\",\" aš\":\"1b\",\" ať\":\"u\",\" baan\":\"r\",\" bahw\":\"b\",\" bao \":\"a\",\" barv\":\"u\",\" bará\":14,\" baum\":\"n\",\" bawi\":\"1a\",\" be'\":\"1q\",\" becs\":14,\" bekk\":13,\" bem \":\"p\",\" berä\":10,\" besu\":\"n\",\" beş\":\"1f\",\" bg\":3,\" bhe\":\"s\",\" bian\":\"q\",\" biez\":\"1d\",\" bij \":\"r\",\" bik \":\"1k\",\" biq\":\"1q\",\" bizt\":14,\" biş\":\"1n\",\" bje\":\"z\",\" bjø\":\"z\",\" bk\":\"1o\",\" ble \":12,\" blei\":\"n\",\" blij\":\"r\",\" bly \":1,\" bló\":13,\" bn\":3,\" boa \":\"p\",\" bolm\":\"1n\",\" book\":\"m\",\" bosi\":\"1p\",\" boty\":\"u\",\" bp\":\"s\",\" brea\":\"m\",\" broj\":\"v\",\" brâ\":15,\" brý\":\"u\",\" bt\":\"r\",\" bucu\":15,\" buma\":\"d\",\" buna\":\"1f\",\" bunu\":\"1f\",\" busy\":\"m\",\" busz\":14,\" butu\":\"b\",\" buu\":\"r\",\" bv\":\"1o\",\" bw\":4,\" bylo\":\"u\",\" bym\":\"1a\",\" bys \":\"u\",\" bárm\":14,\" bás \":\"s\",\" bã\":\"a\",\" bære\":\"z\",\" bè\":\"a\",\" bé \":\"a\",\" béi\":\"o\",\" bê \":\"a\",\" bí \":\"a\",\" bíli\":13,\" bír\":14,\" bò\":\"a\",\" bó \":\"a\",\" bón\":\"a\",\" böd\":\"1p\",\" bös\":\"n\",\" bù\":\"a\",\" búr\":\"y\",\" bür \":\"1p\",\" bą\":\"1a\",\" bē\":\"1d\",\" bę\":\"1a\",\" bı\":\"1f\",\" būs \":\"1d\",\" cad \":\"s\",\" cael\":\"t\",\" camm\":\"q\",\" can'\":\"m\",\" cao \":\"a\",\" cauz\":15,\" cce\":3,\" cci\":3,\" ce-\":15,\" cea \":15,\" cean\":\"s\",\" cee\":15,\" cei \":15,\" ceis\":\"s\",\" cepa\":\"b\",\" ces \":\"l\",\" cet \":\"l\",\" cett\":\"l\",\" ceu\":\"l\",\" cez \":\"y\",\" cha \":\"a\",\" chaw\":\"1q\",\" chez\":\"l\",\" chli\":\"y\",\" cho \":\"a\",\" chot\":\"1q\",\" choď\":\"y\",\" cht\":\"u\",\" chui\":\"s\",\" chuv\":\"p\",\" chw\":\"1a\",\" chá \":\"p\",\" chéi\":\"s\",\" chí\":\"a\",\" chó \":\"a\",\" chý\":\"y\",\" cida\":\"p\",\" cieb\":\"1a\",\" cies\":\"1a\",\" cif \":\"1p\",\" cik \":\"1d\",\" cil \":\"1p\",\" cile\":\"q\",\" citt\":\"q\",\" citu\":\"1d\",\" clea\":\"m\",\" clé\":\"l\",\" coci\":\"o\",\" coj\":\"o\",\" colt\":\"q\",\" cozi\":\"p\",\" cp\":\"m\",\" crec\":\"o\",\" cs\":14,\" cu \":15,\" cuad\":\"o\",\" cual\":\"o\",\" cuar\":\"o\",\" cuat\":\"o\",\" cuer\":\"o\",\" cues\":\"o\",\" cuj\":\"p\",\" cuno\":15,\" cur \":\"t\",\" cuy\":\"o\",\" các\":\"a\",\" cái\":\"a\",\" cám \":\"a\",\" cáma\":\"o\",\" cè\":\"l\",\" cé \":\"s\",\" cén \":\"s\",\" céu\":\"p\",\" cò\":\"a\",\" có \":\"a\",\" cóm\":\"o\",\" cô \":\"a\",\" cúr\":\"s\",\" cü\":\"1f\",\" cē\":\"t\",\" cī\":\"1d\",\" cū\":\"t\",\" d-a\":3,\" d-i\":3,\" d-n\":3,\" d-s\":3,\" d-t\":3,\" d-ye\":3,\" daan\":\"d\",\" dab \":\"1q\",\" dabe\":\"n\",\" dagh\":\"1q\",\" dah \":\"1q\",\" daja\":\"1q\",\" dakk\":3,\" daly\":\"1b\",\" damu\":\"1q\",\" daqa\":\"1q\",\" darf\":\"n\",\" dary\":\"1b\",\" daso\":\"1q\",\" dass\":\"n\",\" datl\":\"1q\",\" dau \":15,\" daud\":\"1d\",\" davo\":\"n\",\" daw \":\"d\",\" days\":\"m\",\" dazu\":\"n\",\" daş\":\"1n\",\" dce\":\"u\",\" ddan\":3,\" dde\":3,\" ddi\":3,\" ddu\":3,\" de-a\":15,\" dead\":\"m\",\" deat\":\"m\",\" dej \":\"u\",\" dez \":\"p\",\" dezi\":\"1o\",\" deč\":\"v\",\" dhe\":\"s\",\" dhá\":\"s\",\" dhé\":\"s\",\" dic \":\"t\",\" did \":\"m\",\" diem\":\"t\",\" dieu\":\"l\",\" dije\":\"o\",\" dijo\":\"o\",\" dios\":\"o\",\" dirb\":\"1b\",\" dis-\":\"l\",\" diu \":\"t\",\" dix \":\"l\",\" diye\":\"1f\",\" diê\":\"a\",\" dla \":\"1a\",\" dlat\":\"1a\",\" dled\":\"1p\",\" dlin\":\"1p\",\" dlo\":\"u\",\" dlí\":\"s\",\" dm\":\"m\",\" dnia\":\"1a\",\" dnu\":\"y\",\" dny\":\"u\",\" do'\":\"1q\",\" doba\":\"v\",\" dobu\":\"u\",\" does\":\"m\",\" dogl\":\"1n\",\" dogt\":1,\" dogu\":\"1n\",\" doin\":\"m\",\" doit\":\"l\",\" dok \":\"v\",\" dont\":\"l\",\" doq \":\"1q\",\" dotl\":\"1q\",\" dotr\":\"1a\",\" dova\":\"1b\",\" dovn\":\"u\",\" dovu\":\"q\",\" dowa\":\"1n\",\" doyi\":\"1q\",\" draa\":\"r\",\" drej\":\"z\",\" dric\":10,\" dro \":12,\" droe\":\"r\",\" droi\":\"l\",\" dræ\":\"z\",\" drže\":\"u\",\" dt\":\"s\",\" duc \":15,\" dudu\":\"b\",\" duj \":\"1q\",\" dulu\":\"b\",\" duni\":\"b\",\" durd\":\"1f\",\" dusa\":\"1q\",\" duu\":\"r\",\" dux\":\"t\",\" dver\":\"y\",\" dvi\":\"1b\",\" dvoc\":\"y\",\" dwa \":\"1a\",\" dwie\":\"1a\",\" dwor\":\"1a\",\" dya\":\"d\",\" dyb\":\"z\",\" dyi\":\"m\",\" dyp \":12,\" dze\":\"1d\",\" dzim\":\"1d\",\" dzw\":\"1a\",\" dál\":\"u\",\" dát \":\"u\",\" dân\":\"a\",\" dã \":\"a\",\" dä \":\"1k\",\" däl\":\"1n\",\" där \":10,\" dég\":\"l\",\" dér \":\"z\",\" dés\":\"l\",\" dét\":\"l\",\" día\":\"o\",\" dík\":\"u\",\" dít\":\"u\",\" dî\":\"l\",\" dò\":\"a\",\" dón\":\"o\",\" dô\":\"y\",\" död\":10,\" dör \":10,\" dā\":\"1d\",\" dı\":\"1f\",\" dō\":\"t\",\" eac\":\"m\",\" ead\":\"t\",\" eam\":\"t\",\" earl\":\"m\",\" eart\":\"m\",\" eas \":\"t\",\" eat\":\"m\",\" ebl\":\"1o\",\" echa\":\"o\",\" echi\":15,\" edde\":\"z\",\" edec\":\"1f\",\" edzi\":\"1o\",\" edzo\":\"1o\",\" eens\":\"r\",\" eerd\":\"r\",\" eerl\":\"r\",\" ees \":\"1c\",\" eest\":\"1c\",\" ef \":13,\" efid\":\"1p\",\" efo\":15,\" efti\":13,\" ege \":\"1o\",\" egy \":14,\" ehr\":\"n\",\" eic\":\"n\",\" eie \":1,\" eiga\":13,\" eigi\":13,\" eigu\":13,\" eine\":\"n\",\" eing\":\"n\",\" einz\":\"n\",\" eir\":\"1d\",\" eiti\":\"1b\",\" eitt\":13,\" eiu\":\"t\",\" eiv\":11,\" ejes\":\"1n\",\" eju\":\"t\",\" ek'\":1,\" eka\":\"1o\",\" ekb\":\"1o\",\" ekd\":\"1o\",\" ekh\":\"1o\",\" ekke\":13,\" ekp\":\"1o\",\" elam\":\"1c\",\" elda\":13,\" elha\":14,\" elir\":\"1o\",\" elu \":\"1c\",\" elä\":11,\" ema \":\"1c\",\" enir\":\"1o\",\" enni\":14,\" enou\":\"m\",\" ens \":10,\" ents\":\"n\",\" eo \":\"t\",\" eod\":\"t\",\" eor\":\"t\",\" eos\":\"t\",\" eple\":12,\" epli\":13,\" erat\":\"t\",\" erau\":15,\" erav\":\"q\",\" erfo\":\"n\",\" erg \":\"r\",\" ersc\":\"n\",\" erti\":\"1n\",\" ertu\":13,\" eru \":13,\" erum\":13,\" erwa\":\"n\",\" es-\":\"l\",\" esa \":\"o\",\" ese \":\"o\",\" eset\":14,\" esis\":\"q\",\" esmu\":\"1d\",\" eso \":\"o\",\" esos\":\"o\",\" est-\":\"l\",\" esu \":\"1b\",\" esur\":\"t\",\" esz\":14,\" esä\":\"1p\",\" etia\":\"t\",\" etj\":\"1n\",\" etki\":\"1f\",\" etti\":\"1f\",\" etuv\":\"1p\",\" etwa\":\"n\",\" eua\":\"p\",\" eum\":\"t\",\" eun\":\"t\",\" ev \":\"1f\",\" evd\":\"1f\",\" evin\":\"1f\",\" evl\":\"1f\",\" evn\":12,\" exat\":\"p\",\" eyes\":\"m\",\" ez \":14,\" ezek\":14,\" ezen\":14,\" ezt\":14,\" ezze\":14,\" eé\":\"r\",\" eó\":\"o\",\" eč\":3,\" eşid\":\"1n\",\" eš\":\"y\",\" ež\":\"1b\",\" facc\":\"q\",\" fao\":\"s\",\" fato\":\"p\",\" fd\":\"m\",\" few\":\"m\",\" fez\":\"p\",\" ff\":3,\" fha\":\"s\",\" fhei\":\"s\",\" fho\":\"s\",\" fica\":\"p\",\" fii \":15,\" fiin\":15,\" fik \":\"z\",\" fiq\":\"p\",\" fiú\":14,\" fjel\":12,\" fjä\":10,\" fk\":3,\" fleu\":\"l\",\" floo\":\"m\",\" fn\":\"z\",\" folo\":15,\" fop\":\"1p\",\" fot \":\"1p\",\" frio\":\"p\",\" fryk\":12,\" frét\":13,\" frön\":13,\" fue \":\"o\",\" fuh\":\"n\",\" fun \":\"m\",\" funz\":\"q\",\" fuo\":\"q\",\" fute\":\"p\",\" fyre\":\"z\",\" fá \":13,\" fâ\":\"l\",\" fè\":\"l\",\" féi\":\"s\",\" fél \":14,\" fót\":13,\" fög\":\"1p\",\" följ\":10,\" för \":10,\" före\":10,\" förl\":10,\" fün\":\"n\",\" für \":\"n\",\" gab \":\"n\",\" gade\":\"z\",\" gads\":\"1d\",\" gadu\":\"1d\",\" gah\":\"1n\",\" gak\":\"b\",\" galm\":\"1n\",\" gany\":\"d\",\" garo\":\"p\",\" gatv\":\"1b\",\" gawi\":\"d\",\" gaç\":\"1n\",\" gc\":\"s\",\" gde\":\"v\",\" gece\":\"1f\",\" gefu\":\"n\",\" gefä\":\"n\",\" gek \":\"r\",\" gely\":1,\" gesu\":\"n\",\" gets\":\"m\",\" gg\":3,\" ghah\":\"1q\",\" ghaj\":\"1q\",\" ghen\":\"a\",\" ghi \":\"a\",\" ghit\":\"1q\",\" ghl\":\"s\",\" ghor\":\"1q\",\" ghu\":\"1q\",\" gia \":\"a\",\" gib \":\"n\",\" gic\":10,\" gid \":\"z\",\" gih\":4,\" gije\":\"1n\",\" gik \":\"z\",\" gina\":\"d\",\" gior\":\"q\",\" giss\":10,\" gitu\":4,\" gius\":\"q\",\" givo\":\"1p\",\" giy\":\"1f\",\" giá\":\"a\",\" gió\":\"a\",\" gje\":12,\" gjö\":13,\" gler\":13,\" gli \":\"q\",\" glo \":1,\" goc\":\"q\",\" gone\":\"m\",\" gora\":\"1n\",\" got \":\"m\",\" gou \":1,\" goud\":\"r\",\" gowy\":\"1n\",\" gra \":\"1a\",\" grí\":13,\" gs\":\"r\",\" gudi\":\"1p\",\" gues\":\"m\",\" guh\":4,\" guk\":4,\" gule\":\"z\",\" guma\":\"d\",\" gunu\":\"b\",\" gur \":\"s\",\" guro\":\"d\",\" guso\":4,\" gusu\":4,\" guv\":15,\" guy\":\"m\",\" gv\":\"1o\",\" gya\":14,\" gyd\":\"1b\",\" gyo\":14,\" gys\":\"1n\",\" gyv\":\"1b\",\" gyz\":\"1n\",\" gz\":3,\" gái\":\"a\",\" gán\":\"a\",\" gás\":\"p\",\" gân\":15,\" gã\":\"a\",\" gåe\":\"z\",\" géné\":\"l\",\" gì\":\"a\",\" gí\":13,\" gór\":\"1a\",\" gös\":\"1f\",\" gā\":\"1d\",\" gă\":15,\" gę\":\"1a\",\" ha-t\":3,\" haal\":\"r\",\" habu\":\"t\",\" habé\":\"o\",\" hac \":\"t\",\" hafa\":13,\" hago\":\"o\",\" haig\":\"1c\",\" hair\":\"m\",\" haky\":\"1n\",\" hapo\":\"d\",\" harg\":\"b\",\" haro\":\"1o\",\" hará\":\"o\",\" haré\":\"o\",\" hasn\":\"m\",\" hasz\":14,\" hatá\":14,\" hazu\":14,\" haça\":\"1n\",\" hea \":\"1c\",\" heal\":\"m\",\" hear\":\"m\",\" heen\":\"r\",\" heet\":\"r\",\" hef \":13,\" hehe\":4,\" heka\":\"1n\",\" heml\":10,\" hems\":10,\" heni\":\"1n\",\" henü\":\"1f\",\" heto\":\"1p\",\" heur\":\"l\",\" heut\":\"n\",\" hic \":\"t\",\" hice\":\"o\",\" hiin\":\"1c\",\" hij \":\"r\",\" hils\":\"z\",\" him \":\"m\",\" hin \":\"n\",\" hini\":\"d\",\" hiq\":\"1q\",\" hiu\":11,\" hizo\":\"o\",\" hju\":\"z\",\" hjä\":10,\" hlak\":13,\" hlau\":13,\" hled\":\"u\",\" hli\":13,\" hlo\":\"u\",\" hlus\":13,\" hlý\":13,\" hned\":\"u\",\" hoa \":\"a\",\" hoan\":\"a\",\" hoc \":\"t\",\" hoci\":\"y\",\" hode\":12,\" hodn\":\"u\",\" hoed\":\"r\",\" hoel\":\"r\",\" hogh\":\"1q\",\" hom \":1,\" hon \":10,\" honu\":13,\" hoss\":14,\" hour\":\"m\",\" how \":\"m\",\" hoy\":\"o\",\" hoz\":14,\" hoć\":\"v\",\" hraj\":\"u\",\" hrat\":13,\" hrdá\":\"y\",\" hre\":13,\" hrin\":13,\" hte\":\"v\",\" huc \":\"t\",\" huel\":\"o\",\" huja\":\"b\",\" huo\":11,\" hva \":12,\" hvad\":\"z\",\" hven\":13,\" hvit\":12,\" hví\":13,\" há \":\"p\",\" háde\":13,\" hán\":14,\" hás\":13,\" háv\":13,\" hâl\":\"1f\",\" häls\":10,\" hämt\":10,\" hääl\":\"1c\",\" hæt\":13,\" héi\":\"s\",\" hér \":13,\" hérn\":13,\" hê\":1,\" hír\":14,\" hóna\":14,\" hög\":10,\" hölg\":14,\" hörd\":10,\" hō\":\"t\",\" hū\":\"t\",\" i'\":\"m\",\" i-a\":15,\" ia-\":15,\" iac\":\"t\",\" iad \":\"s\",\" ianu\":\"t\",\" iap\":\"t\",\" iar \":15,\" iarn\":15,\" iarr\":\"s\",\" iau\":15,\" ibig\":\"d\",\" ibik\":4,\" ibir\":4,\" ibla\":10,\" ibu \":\"b\",\" ici \":\"l\",\" ico \":4,\" icum\":4,\" idad\":\"p\",\" idri\":3,\" idzi\":\"1a\",\" iedo\":\"1d\",\" ief\":15,\" ieg\":\"1d\",\" iei\":15,\" iek\":\"1d\",\" iel\":\"1o\",\" iep\":\"1d\",\" iera\":\"1d\",\" iesp\":\"1d\",\" iet \":\"1d\",\" iev\":\"1d\",\" ieş\":15,\" ieš\":\"1b\",\" ife\":3,\" igal\":\"1c\",\" igaz\":14,\" iger\":3,\" igj\":12,\" igre\":\"p\",\" ihje\":\"z\",\" ihre\":\"n\",\" iht\":\"1f\",\" iit\":\"t\",\" ijs\":\"r\",\" ik \":\"r\",\" ikad\":\"v\",\" ikaw\":\"d\",\" ikku\":11,\" ikna\":\"1f\",\" ikä\":11,\" ilde\":\"z\",\" ilem\":3,\" ilga\":\"1b\",\" ilk \":\"1f\",\" ilog\":\"d\",\" ils \":\"l\",\" ilta\":11,\" ily\":14,\" ime \":\"v\",\" imea\":\"s\",\" imek\":3,\" imi \":3,\" imir\":3,\" imod\":\"z\",\" imot\":12,\" imsu\":3,\" imv\":4,\" ind \":\"z\",\" indb\":\"z\",\" indk\":\"z\",\" indt\":\"z\",\" ingh\":\"q\",\" ini-\":3,\" inii\":\"d\",\" innb\":12,\" inns\":12,\" inny\":\"1a\",\" ins \":\"n\",\" inya\":4,\" inyu\":4,\" inzu\":4,\" iné \":\"y\",\" iní\":\"p\",\" iný\":\"y\",\" ioa\":\"t\",\" ioc\":\"t\",\" iom\":\"1o\",\" ion \":\"1o\",\" iona\":\"s\",\" iont\":\"s\",\" ios\":\"t\",\" iov\":\"t\",\" ips\":\"t\",\" irei\":\"p\",\" irge\":\"n\",\" irgi\":\"1b\",\" iria\":\"p\",\" irka\":3,\" iryo\":4,\" iré\":\"o\",\" isel\":3,\" isem\":3,\" isin\":\"d\",\" isip\":\"d\",\" isso\":\"p\",\" ist \":\"n\",\" isté\":\"y\",\" istý\":\"y\",\" it'\":\"m\",\" ita \":\"t\",\" ithe\":\"s\",\" itk\":11,\" iton\":\"d\",\" its \":\"m\",\" itt \":14,\" itu \":\"b\",\" iu \":\"1o\",\" iuc\":\"t\",\" iud\":\"t\",\" iuj\":\"1o\",\" ium\":\"t\",\" iun \":\"1o\",\" iup\":\"t\",\" iur\":\"t\",\" iust\":\"t\",\" iuv\":\"t\",\" ivya\":4,\" iwe\":3,\" ix\":3,\" iyan\":\"d\",\" iyon\":\"d\",\" ize\":3,\" izle\":\"1f\",\" izp\":\"1d\",\" izs\":\"1d\",\" iä\":11,\" iā\":\"t\",\" ić\":\"v\",\" iň\":\"1n\",\" işin\":\"1f\",\" iš \":\"1b\",\" iše\":\"1b\",\" išt\":\"1b\",\" iс\":\"1l\",\" j'\":\"l\",\" jaf\":13,\" jag \":10,\" jagh\":\"1q\",\" jaki\":\"1a\",\" jaké\":\"u\",\" jant\":\"p\",\" jatu\":\"b\",\" jd\":\"u\",\" jec\":\"1a\",\" jedz\":\"1a\",\" jego\":\"1a\",\" jei \":\"1b\",\" jeit\":\"p\",\" jema\":\"n\",\" jep\":\"b\",\" jesz\":\"1a\",\" jev\":\"1p\",\" jezd\":\"u\",\" jibo\":\"1q\",\" jido\":\"1q\",\" jie \":\"1b\",\" jiem\":\"1b\",\" jih \":\"1q\",\" jih'\":\"1q\",\" jihe\":\"1q\",\" jiht\":\"1q\",\" jij \":\"r\",\" jik\":\"b\",\" jime\":\"1q\",\" jipa\":\"1q\",\" jis \":\"1b\",\" jisa\":\"1q\",\" jist\":\"u\",\" jitl\":\"1q\",\" jiv\":\"1q\",\" jiy\":\"1q\",\" jj\":3,\" jmen\":\"u\",\" joj \":\"v\",\" joka\":11,\" jony\":\"1n\",\" joon\":\"1c\",\" jote\":11,\" jr\":\"m\",\" jse\":\"u\",\" jsi\":\"u\",\" jst\":\"u\",\" juba\":\"1c\",\" jue\":\"o\",\" juh \":\"1q\",\" juis\":\"r\",\" juj\":\"b\",\" juk \":\"1b\",\" junu\":\"1o\",\" jup \":\"1q\",\" jupw\":\"1q\",\" jy \":1,\" jár\":14,\" ját\":14,\" jäl\":11,\" jæ\":\"z\",\" jí\":\"u\",\" jól \":14,\" jón \":13,\" jön \":14,\" jör\":13,\" jöt\":14,\" jø\":\"z\",\" jün\":\"n\",\" ję\":\"1a\",\" k'\":4,\" k-i\":3,\" kaga\":\"d\",\" kage\":\"z\",\" kaha\":\"d\",\" kaik\":11,\" kaim\":\"1b\",\" kait\":\"1c\",\" kaj \":\"1o\",\" kakv\":\"v\",\" kao \":\"v\",\" kau \":\"b\",\" kaum\":\"n\",\" kdo \":\"u\",\" kdy\":\"u\",\" kece\":\"b\",\" keci\":\"b\",\" ked \":\"z\",\" kedi\":\"1f\",\" kedy\":\"y\",\" keek\":\"r\",\" keit\":11,\" kela\":\"b\",\" kelu\":\"b\",\" kemb\":\"b\",\" kems\":13,\" ken-\":3,\" kenw\":3,\" kesa\":\"b\",\" kesi\":\"1f\",\" keve\":14,\" kew\":\"b\",\" keyp\":13,\" kez \":\"1f\",\" kezd\":14,\" keze\":14,\" khai\":\"a\",\" khen\":\"a\",\" khi\":\"a\",\" kho\":\"a\",\" khu\":\"a\",\" khá\":\"a\",\" kiam\":\"1o\",\" kie \":\"1o\",\" kied\":\"1a\",\" kiek\":\"1b\",\" kig \":\"z\",\" kiki\":\"1p\",\" kil \":\"1p\",\" kio \":\"1o\",\" kiom\":\"1o\",\" kion\":\"1o\",\" kiu \":\"1o\",\" kje\":12,\" kl \":\"z\",\" klid\":\"u\",\" klár\":13,\" klær\":12,\" knew\":\"m\",\" kny\":\"1b\",\" knä\":10,\" ko'\":\"d\",\" kod \":\"v\",\" kogo\":\"1a\",\" koha\":\"1c\",\" koje\":\"v\",\" komt\":\"r\",\" korá\":14,\" kose\":12,\" kosk\":11,\" koy\":\"1f\",\" kra \":3,\" kref\":12,\" kriv\":\"v\",\" kry \":1,\" kryd\":\"z\",\" krz\":\"1a\",\" król\":\"1a\",\" kter\":\"u\",\" ktor\":\"y\",\" któ\":\"1a\",\" kubi\":4,\" kue\":\"b\",\" kuff\":\"z\",\" kuhu\":\"1c\",\" kui \":\"1c\",\" kulp\":\"1o\",\" kume\":4,\" kuo \":\"1b\",\" kurl\":\"1d\",\" kuty\":14,\" kuum\":11,\" kuza\":4,\" kvel\":12,\" kvet\":\"y\",\" kwo\":4,\" kwu\":4,\" kyk \":1,\" kym\":11,\" kyn \":\"1n\",\" käe\":\"1c\",\" käi\":\"1c\",\" kän \":\"1n\",\" käns\":10,\" kå\":12,\" köme\":\"1n\",\" köv\":14,\" kün\":\"n\",\" ký \":\"a\",\" ką \":\"1b\",\" kū\":\"1b\",\" l'a \":\"l\",\" l-\":15,\" laas\":1,\" labs\":\"1d\",\" laca\":\"1o\",\" laen\":\"1c\",\" lahk\":\"1c\",\" lala\":\"d\",\" lalu\":\"b\",\" latl\":\"1q\",\" lb\":3,\" ld\":3,\" le-\":15,\" lear\":\"m\",\" leav\":\"m\",\" leds\":10,\" leef\":\"r\",\" left\":\"m\",\" lehe\":14,\" leic\":\"n\",\" leig\":13,\" leje\":\"z\",\" lena\":\"s\",\" leps\":\"1a\",\" lert\":\"1o\",\" lesz\":14,\" let'\":\"m\",\" lety\":\"u\",\" leur\":\"l\",\" leut\":\"n\",\" leys\":13,\" lf\":3,\" lhe \":\"p\",\" lhes\":\"p\",\" li-\":\"1p\",\" lian\":\"1o\",\" lids\":\"u\",\" lidt\":\"z\",\" lidé\":\"u\",\" liel\":\"1d\",\" lif \":\"1p\",\" lifa\":13,\" life\":\"m\",\" lifo\":\"1p\",\" liig\":\"1c\",\" liom\":\"s\",\" litl\":13,\" lix\":\"p\",\" liç\":\"p\",\" lič\":\"v\",\" ljus\":10,\" ljut\":\"v\",\" ljö\":10,\" llav\":\"o\",\" lleg\":\"o\",\" llen\":\"o\",\" llev\":\"o\",\" lli\":3,\" llor\":\"o\",\" llov\":\"o\",\" llue\":\"o\",\" lluv\":\"o\",\" lm\":3,\" lo'\":\"1q\",\" loa\":\"m\",\" loc \":15,\" lodv\":\"1q\",\" logr\":\"o\",\" loin\":\"l\",\" loks\":13,\" lopu\":11,\" lor \":15,\" lors\":\"l\",\" low\":\"m\",\" lq\":3,\" lt\":\"m\",\" luat\":15,\" lub \":\"1a\",\" luck\":\"m\",\" lueg\":\"o\",\" lugh\":\"1q\",\" luk \":\"z\",\" luns\":12,\" luon\":11,\" luot\":11,\" lupt\":15,\" lupu\":\"t\",\" lurt\":12,\" luu\":11,\" lwi\":3,\" lx\":3,\" lyde\":\"z\",\" lyk \":1,\" lyss\":10,\" lái\":\"a\",\" lán \":\"s\",\" lána\":13,\" lány\":14,\" láta\":13,\" látn\":14,\" lân\":15,\" lão\":\"a\",\" lär \":10,\" läse\":10,\" läss\":\"n\",\" lät \":10,\" låt\":10,\" læg\":\"z\",\" læt\":\"t\",\" léi\":\"s\",\" léka\":\"u\",\" lét \":13,\" lík\":13,\" líta\":13,\" líti\":13,\" lítu\":13,\" líš\":\"y\",\" lò\":\"a\",\" lô\":\"a\",\" löd\":\"1p\",\" lör\":10,\" lør\":\"z\",\" lü \":\"1p\",\" lüg\":\"n\",\" lý \":\"a\",\" lā\":\"t\",\" lē\":\"t\",\" līb\":\"t\",\" lž\":\"u\",\" m'a \":\"l\",\" m'o\":\"l\",\" m-a\":15,\" maba\":\"d\",\" mabi\":\"d\",\" magb\":\"d\",\" mah \":\"1q\",\" mahd\":11,\" mahi\":\"d\",\" majk\":\"v\",\" mave\":\"z\",\" maž\":\"1b\",\" mbei\":\"s\",\" mber\":4,\" mbi\":4,\" mbé\":\"s\",\" me'\":\"1q\",\" meam\":\"t\",\" mean\":\"m\",\" mebp\":\"1q\",\" mee \":\"r\",\" megf\":14,\" megi\":14,\" megj\":14,\" megn\":14,\" meia\":\"p\",\" meie\":\"1c\",\" meir\":13,\" mej \":\"1q\",\" meja\":\"b\",\" mejb\":\"1n\",\" mejo\":\"o\",\" mekd\":\"1n\",\" mekt\":\"1f\",\" meky\":3,\" meln\":\"1d\",\" mely\":14,\" mem \":\"1o\",\" memn\":\"1f\",\" meo \":\"t\",\" meq \":\"1q\",\" mezi\":\"u\",\" mezz\":\"q\",\" meň\":\"1n\",\" mfi\":4,\" mha\":\"s\",\" mhá\":\"s\",\" mi'\":\"1q\",\" mi-a\":15,\" miat\":14,\" micu\":15,\" mida\":\"1c\",\" mieg\":\"1b\",\" mij \":\"r\",\" mikl\":13,\" mim \":\"p\",\" mip\":\"1q\",\" miw\":\"1q\",\" miyi\":\"1f\",\" mlie\":\"y\",\" mlu\":\"u\",\" mlé\":\"u\",\" mnie\":\"1a\",\" mnom\":\"v\",\" moc \":\"u\",\" modt\":\"z\",\" moen\":1,\" mog \":\"v\",\" moga\":\"v\",\" mogu\":\"v\",\" mohu\":\"u\",\" moky\":\"1b\",\" mpa\":4,\" mpe\":4,\" mpo\":4,\" muga\":\"1n\",\" muja\":\"1q\",\" muje\":\"o\",\" mune\":\"t\",\" muns\":4,\" muy \":\"o\",\" mv\":4,\" mw\":4,\" myas\":3,\" mye \":12,\" mynd\":13,\" myse\":\"m\",\" mái \":\"a\",\" máli\":13,\" máma\":\"u\",\" mát \":\"a\",\" mã \":\"a\",\" mä \":11,\" mäl\":\"1c\",\" män \":10,\" mäns\":10,\" mäs\":\"y\",\" mér \":13,\" mét \":\"a\",\" mì\":\"a\",\" mín \":13,\" mína\":13,\" mít \":\"u\",\" mò\":\"a\",\" mó \":\"s\",\" móg\":\"1a\",\" món \":\"a\",\" mór\":\"s\",\" mót\":13,\" möd\":\"1p\",\" möj\":10,\" mörk\":10,\" möt\":10,\" mē \":\"t\",\" mę\":\"1a\",\" mı\":\"1f\",\" mūs \":\"1d\",\" n'a \":\"l\",\" n'ar\":\"l\",\" n'au\":\"l\",\" n'av\":\"l\",\" n'en\":\"l\",\" n-am\":15,\" naas\":\"r\",\" nae\":\"1c\",\" nagd\":\"d\",\" nagy\":14,\" nako\":\"u\",\" nang\":\"d\",\" nanj\":4,\" naq \":\"1q\",\" narg\":\"1q\",\" nasz\":\"1a\",\" nası\":\"1f\",\" naty\":\"1a\",\" nawa\":\"d\",\" nayl\":3,\" naç\":\"p\",\" nc\":3,\" nda\":4,\" nde \":4,\" ndea\":\"s\",\" ndi \":4,\" ndib\":4,\" ndik\":4,\" ndip\":4,\" ndw\":4,\" ndá\":\"s\",\" ne-a\":15,\" neca\":\"t\",\" nedz\":\"1d\",\" neh \":\"1q\",\" nehm\":\"n\",\" nekk\":3,\" nel \":\"q\",\" nen \":\"1p\",\" neni\":\"1o\",\" není\":\"u\",\" nequ\":\"t\",\" ner \":10,\" nes \":\"1b\",\" neud\":\"u\",\" neuž\":\"1b\",\" nevn\":12,\" nezi\":\"1d\",\" nezv\":\"u\",\" ng \":\"d\",\" ngas\":\"1q\",\" ngev\":\"1q\",\" ngg\":\"b\",\" ngh\":\"a\",\" ngir\":4,\" ngo \":4,\" ngo'\":\"1q\",\" ngoa\":\"a\",\" ngog\":\"1q\",\" ngon\":\"a\",\" ngr\":\"s\",\" ngu \":\"a\",\" nguy\":\"a\",\" ngá\":\"a\",\" ngâ\":\"a\",\" ngó\":\"a\",\" nha\":\"a\",\" nho\":\"a\",\" nhu\":\"a\",\" nhá\":\"a\",\" nhé\":\"a\",\" nhó\":\"a\",\" niaj\":\"1o\",\" nian\":\"1o\",\" nici\":15,\" nieč\":\"y\",\" nigh\":\"m\",\" nihi\":\"t\",\" niin\":11,\" nimm\":\"n\",\" nimu\":4,\" nin \":\"1o\",\" ninc\":14,\" nind\":4,\" niny\":\"d\",\" niq \":\"1q\",\" nism\":\"v\",\" nito\":\"d\",\" niw\":4,\" niya\":\"d\",\" niê\":\"a\",\" niñ\":\"o\",\" nią\":\"1a\",\" niče\":\"u\",\" niš\":\"v\",\" njen\":\"v\",\" nji\":\"v\",\" njo\":\"v\",\" nk'\":4,\" nka\":4,\" nko\":4,\" nku\":4,\" nl\":3,\" nm\":3,\" nn\":3,\" noas\":15,\" nob \":\"1q\",\" nobo\":\"m\",\" noen\":12,\" nogl\":\"z\",\" noir\":\"l\",\" noli\":\"t\",\" nond\":\"t\",\" nopi\":\"1d\",\" noss\":\"p\",\" nowe\":\"1a\",\" nowy\":\"1a\",\" nox\":\"t\",\" nq\":3,\" nsh\":4,\" nta \":4,\" ntac\":4,\" ntar\":4,\" nti\":4,\" ntu\":4,\" nuai\":\"s\",\" nugh\":\"1q\",\" nuit\":\"l\",\" nukk\":11,\" numb\":\"m\",\" nuos\":\"1b\",\" nupi\":\"1b\",\" nuq \":\"1q\",\" nusi\":\"1b\",\" nusp\":\"1b\",\" nust\":\"1b\",\" nw\":3,\" nx\":3,\" nyd\":\"z\",\" nyel\":14,\" nyen\":4,\" nyer\":14,\" nyin\":4,\" nyok\":4,\" nza\":4,\" nzi\":4,\" nzo\":4,\" nzu\":4,\" nái\":\"s\",\" nák\":\"u\",\" nâ\":\"a\",\" näc\":\"n\",\" nädi\":\"1n\",\" nähn\":11,\" nälk\":11,\" när \":10,\" näst\":10,\" néc\":\"l\",\" néh\":14,\" nél\":14,\" ném \":\"a\",\" néme\":14,\" nê\":\"a\",\" níli\":\"s\",\" nív\":\"p\",\" nós\":\"p\",\" nöd\":10,\" nú \":13,\" núi\":\"a\",\" nún\":13,\" nút\":\"a\",\" năm\":\"a\",\" nū\":\"t\",\" o'c\":\"m\",\" oam\":15,\" obai\":\"s\",\" obb\":\"q\",\" obi \":\"1p\",\" obia\":\"1a\",\" obic\":15,\" obik\":\"1p\",\" obin\":\"1p\",\" obos\":15,\" obri\":\"p\",\" obs \":\"1p\",\" obá\":\"u\",\" occh\":\"q\",\" ochi\":15,\" ock\":10,\" oco\":\"p\",\" ocra\":\"s\",\" ocur\":\"o\",\" odda\":\"1a\",\" odel\":\"1p\",\" odem\":\"v\",\" odot\":11,\" odw\":\"1a\",\" odí\":\"y\",\" oef\":\"r\",\" ofe \":\"1p\",\" off \":\"m\",\" ofi \":\"1p\",\" ofik\":\"1p\",\" ogen\":\"r\",\" ogg\":\"q\",\" ogla\":\"1n\",\" ogu\":\"1n\",\" ogó\":\"1a\",\" ohne\":\"n\",\" oib\":\"s\",\" oik\":11,\" oil\":\"m\",\" oit\":\"p\",\" ojal\":\"o\",\" ojc\":\"1a\",\" ojo\":\"o\",\" okad\":\"1n\",\" okc\":\"1o\",\" okd\":\"1o\",\" okik\":\"1p\",\" okku\":13,\" okum\":\"1f\",\" okup\":\"1o\",\" olab\":\"1f\",\" olac\":\"1f\",\" oled\":\"1c\",\" oleh\":\"b\",\" olha\":\"p\",\" olho\":\"p\",\" olid\":\"1c\",\" olis\":11,\" olit\":11,\" olje\":12,\" olle\":11,\" ollu\":11,\" olm\":\"1f\",\" oln\":\"1c\",\" ols\":\"1f\",\" olur\":\"1f\",\" olva\":14,\" olvi\":\"o\",\" olya\":14,\" olá\":\"p\",\" omda\":\"r\",\" ome \":\"1p\",\" omf\":\"z\",\" omi \":\"1p\",\" omik\":\"1p\",\" omlu\":\"u\",\" omne\":\"t\",\" oms \":\"1p\",\" omul\":15,\" onbe\":\"r\",\" ondt\":\"z\",\" onko\":11,\" onmi\":\"r\",\" onne\":11,\" onts\":\"r\",\" ontv\":\"r\",\" onun\":\"1f\",\" onv\":\"r\",\" ood\":\"1c\",\" oog\":\"r\",\" ooi\":\"r\",\" oop \":1,\" oorl\":\"r\",\" oos\":\"r\",\" oota\":\"1c\",\" opil\":\"u\",\" oplo\":\"r\",\" opna\":13,\" opow\":\"1a\",\" opp \":12,\" oppl\":12,\" oppn\":12,\" opps\":12,\" oppt\":12,\" opç\":\"p\",\" oray\":\"1f\",\" ori \":15,\" oric\":15,\" oroa\":10,\" orsz\":14,\" osem\":\"y\",\" ospe\":\"q\",\" oszt\":14,\" osó\":\"1a\",\" otca\":\"y\",\" otce\":\"u\",\" otev\":\"u\",\" otg\":\"1p\",\" oth\":\"m\",\" otiš\":\"v\",\" otk\":\"v\",\" otly\":\"1n\",\" otsi\":\"1c\",\" ott \":14,\" otth\":14,\" otuv\":\"1p\",\" oty\":\"1n\",\" oub\":\"l\",\" oud \":\"r\",\" oude\":\"r\",\" ouer\":1,\" oug\":\"m\",\" oui \":\"l\",\" our \":\"m\",\" ouro\":\"p\",\" out \":\"m\",\" outs\":\"m\",\" ouvi\":\"p\",\" ovaj\":\"v\",\" ovd\":\"v\",\" ove \":\"v\",\" ovos\":\"p\",\" ovu \":\"v\",\" owe\":\"m\",\" own\":\"m\",\" oye\":\"o\",\" oza\":\"1n\",\" oä\":10,\" oí\":\"o\",\" oñ\":\"1n\",\" oň\":\"1n\",\" pa'\":\"1q\",\" paan\":\"d\",\" paf\":\"1o\",\" pai \":\"p\",\" paye\":\"l\",\" pač\":\"1b\",\" pe \":15,\" pe'\":\"1q\",\" pead\":\"1c\",\" peam\":\"1c\",\" pegh\":\"1q\",\" peke\":\"b\",\" peld\":\"1d\",\" pelk\":11,\" pema\":\"b\",\" peny\":\"b\",\" peu \":\"l\",\" peva\":\"v\",\" pewi\":\"1a\",\" pfe\":\"n\",\" phi \":\"a\",\" phu\":\"a\",\" piis\":\"1c\",\" pios\":\"1a\",\" piš\":\"v\",\" plin\":15,\" plán\":\"u\",\" plā\":\"1d\",\" pm\":\"m\",\" podv\":\"u\",\" pohl\":\"u\",\" poi \":\"q\",\" pomá\":\"u\",\" poná\":\"y\",\" pord\":\"1o\",\" pouz\":\"u\",\" pov \":\"1q\",\" pra \":\"p\",\" praw\":\"1a\",\" preč\":\"y\",\" próp\":\"p\",\" psá\":\"u\",\" ptak\":\"1a\",\" ptá\":\"u\",\" puel\":\"t\",\" puik\":\"1b\",\" pulk\":\"1d\",\" puma\":\"d\",\" pumu\":\"d\",\" pupu\":\"d\",\" puw\":\"d\",\" puš\":\"v\",\" pw\":\"d\",\" pái\":\"s\",\" páss\":\"p\",\" päe\":\"1c\",\" päri\":\"1c\",\" pääs\":11,\" pæ\":\"z\",\" pé \":\"p\",\" póst\":13,\" pø\":\"z\",\" pük\":\"1p\",\" pý\":\"y\",\" pē\":\"1d\",\" pę\":\"1a\",\" pše\":\"y\",\" qabd\":\"1q\",\" qac\":\"1q\",\" qam\":\"1q\",\" qan \":\"1q\",\" qaq\":\"1q\",\" qas \":\"1q\",\" qb\":3,\" qech\":\"1q\",\" qel \":\"1q\",\" qen\":\"1q\",\" qesw\":\"1q\",\" qin\":\"1q\",\" qit \":\"1q\",\" ql\":3,\" qq\":3,\" qr\":3,\" qu'v\":\"1q\",\" quam\":\"t\",\" quc\":\"1q\",\" quia\":\"t\",\" quib\":\"t\",\" quid\":\"t\",\" quié\":\"o\",\" qun\":\"1q\",\" quoi\":\"l\",\" quon\":\"t\",\" quos\":\"t\",\" qus\":\"1q\",\" qué \":\"o\",\" raco\":\"l\",\" rae\":\"t\",\" rahu\":\"1c\",\" rahv\":\"1c\",\" raib\":\"s\",\" raks\":\"1d\",\" ramt\":\"z\",\" rasd\":\"1q\",\" raud\":\"1b\",\" razg\":\"v\",\" razó\":\"o\",\" rač\":\"v\",\" raň\":\"y\",\" raš\":\"1b\",\" read\":\"m\",\" reas\":\"m\",\" rebb\":3,\" redz\":\"1d\",\" reic\":\"n\",\" reid\":\"1p\",\" rejs\":\"z\",\" rem \":\"t\",\" remp\":\"l\",\" rep \":\"1q\",\" reru\":\"t\",\" rey \":\"o\",\" reë\":1,\" reče\":\"v\",\" reči\":\"v\",\" rf\":3,\" ricc\":\"q\",\" riek\":\"y\",\" rifi\":\"q\",\" rig \":\"z\",\" rign\":13,\" rigt\":\"z\",\" riig\":\"1c\",\" rij\":\"r\",\" rike\":12,\" rikk\":11,\" risp\":\"q\",\" rius\":\"q\",\" rivs\":\"1q\",\" riy\":\"d\",\" riê\":\"a\",\" rn\":3,\" robí\":\"y\",\" rog \":15,\" rood\":\"r\",\" roon\":\"d\",\" rož\":\"1b\",\" rr\":3,\" rs\":3,\" rua \":\"p\",\" ruan\":\"b\",\" ruce\":\"u\",\" rud \":\"s\",\" ruhá\":14,\" rur \":\"1q\",\" ruže\":\"y\",\" rv\":\"m\",\" rx\":3,\" ry'\":4,\" rych\":\"u\",\" ryi\":4,\" rym\":10,\" ryto\":\"1b\",\" rze\":\"1a\",\" rzuc\":\"1a\",\" rà\":\"a\",\" ráda\":\"u\",\" rám \":14,\" rân\":15,\" rääk\":\"1c\",\" råde\":\"z\",\" råk\":10,\" rè\":\"l\",\" réf\":\"l\",\" réve\":\"l\",\" rê\":\"l\",\" rík\":13,\" ról\":14,\" röke\":10,\" rör\":10,\" røv\":\"z\",\" rüc\":\"n\",\" rých\":\"y\",\" răm\":15,\" rē\":\"t\",\" rę\":\"1a\",\" s-a\":15,\" s-o\":15,\" s-r\":\"1o\",\" sa'\":\"1q\",\" said\":\"m\",\" sak \":10,\" saky\":\"1b\",\" sari\":\"d\",\" sauv\":\"l\",\" says\":\"m\",\" saí\":\"p\",\" sañ\":\"1n\",\" sba\":\"q\",\" sbr\":\"q\",\" scii\":\"1o\",\" scip\":\"1o\",\" scit\":\"t\",\" scrí\":\"s\",\" scuo\":\"q\",\" scus\":\"q\",\" sda\":3,\" sdr\":\"q\",\" sead\":\"1c\",\" sebi\":\"v\",\" sebu\":\"b\",\" seha\":\"b\",\" sehe\":\"n\",\" seid\":\"n\",\" sekv\":\"1o\",\" selt\":\"n\",\" semn\":15,\" seo \":\"s\",\" seor\":\"b\",\" serc\":\"1a\",\" serí\":\"o\",\" seun\":1,\" seur\":11,\" seus\":\"p\",\" señ \":\"1n\",\" sfat\":15,\" sfo\":\"q\",\" sgr\":\"q\",\" shar\":\"m\",\" she \":\"m\",\" shou\":\"m\",\" shv\":\"v\",\" shy\":\"m\",\" siaj\":\"1o\",\" sic \":\"t\",\" sick\":\"m\",\" sidd\":\"z\",\" siit\":11,\" silt\":11,\" simt\":15,\" sinh\":\"a\",\" sios\":\"1a\",\" sird\":\"1d\",\" sisk\":11,\" sivy\":4,\" siye\":\"d\",\" siyu\":\"d\",\" sjan\":12,\" sjel\":12,\" sju \":10,\" sjá\":13,\" sjä\":10,\" ska \":10,\" skab\":\"z\",\" skau\":\"1b\",\" ske \":\"z\",\" skic\":10,\" skoo\":1,\" skov\":\"z\",\" skrä\":10,\" skyt\":12,\" skä\":10,\" skú\":\"y\",\" ský\":13,\" slec\":\"r\",\" sleg\":1,\" sleu\":\"r\",\" slib\":\"u\",\" sln\":\"y\",\" slo \":12,\" sluk\":\"z\",\" slä\":10,\" slík\":13,\" sme \":\"y\",\" smed\":\"z\",\" smia\":\"y\",\" smo \":\"v\",\" smuk\":\"z\",\" smy\":\"u\",\" snad\":\"u\",\" sne \":\"z\",\" snä\":10,\" soh'\":\"1q\",\" soht\":\"1q\",\" soj \":\"1q\",\" solb\":\"z\",\" soms\":\"r\",\" sont\":\"l\",\" soon\":\"m\",\" sopo\":\"o\",\" soru\":\"1f\",\" sosd\":\"1q\",\" spaa\":\"r\",\" spea\":\"m\",\" spej\":\"z\",\" spev\":\"y\",\" spod\":\"1a\",\" spus\":15,\" srin\":3,\" ssar\":3,\" sse\":3,\" ssi\":3,\" ssn\":3,\" ssu\":3,\" stay\":\"m\",\" stej\":\"u\",\" stes\":\"q\",\" stia\":\"q\",\" stja\":\"z\",\" stræ\":13,\" strí\":13,\" strā\":\"1d\",\" stva\":\"v\",\" styg\":12,\" styk\":\"z\",\" stâ\":15,\" stô\":\"y\",\" stú\":13,\" stā\":\"1d\",\" suel\":\"o\",\" suer\":\"o\",\" suiv\":\"l\",\" sumn\":\"v\",\" suon\":\"q\",\" suy \":\"a\",\" svak\":\"v\",\" sve \":\"v\",\" svez\":\"q\",\" svi \":\"v\",\" svo \":13,\" svon\":13,\" sví\":\"u\",\" swim\":\"m\",\" syk \":12,\" sykl\":12,\" szc\":\"1a\",\" szem\":14,\" szko\":\"1a\",\" szp\":\"1a\",\" szuk\":\"1a\",\" szó \":14,\" sà\":\"a\",\" sá \":13,\" sáng\":\"a\",\" sást\":13,\" sát \":\"a\",\" sä \":11,\" säke\":10,\" säl\":10,\" sér \":13,\" són\":\"a\",\" sô\":\"a\",\" sög\":13,\" sömn\":10,\" sún\":\"a\",\" süg\":\"1c\",\" są \":\"1a\",\" sē\":\"t\",\" sę\":\"1a\",\" sī\":\"t\",\" sın\":\"1f\",\" sť\":\"y\",\" t-t\":3,\" t-ye\":3,\" ta'\":\"1q\",\" tafa\":3,\" talt\":\"z\",\" talá\":14,\" tamv\":\"1q\",\" taná\":14,\" taní\":14,\" tanı\":\"1f\",\" taqb\":3,\" taru\":3,\" tarv\":11,\" tasf\":3,\" tasn\":3,\" tay \":\"a\",\" tayo\":\"d\",\" tba\":3,\" tbe\":3,\" tce\":3,\" td\":3,\" te-\":15,\" tead\":\"1c\",\" teba\":\"y\",\" tecu\":\"t\",\" teed\":\"1c\",\" teft\":3,\" tegr\":3,\" teha\":\"1c\",\" teid\":11,\" telj\":14,\" temd\":3,\" tené\":\"o\",\" tení\":\"o\",\" tepa\":\"b\",\" tesn\":3,\" tesr\":3,\" tesz\":14,\" teus\":\"p\",\" tev \":\"1d\",\" tew\":3,\" tf\":3,\" tg\":3,\" th \":\"m\",\" tha \":\"a\",\" that\":\"m\",\" thei\":\"m\",\" thi \":\"a\",\" thin\":\"m\",\" this\":\"m\",\" thos\":\"m\",\" thou\":\"m\",\" thu \":\"a\",\" thua\":\"a\",\" thé\":\"l\",\" thí\":\"a\",\" tial\":\"1o\",\" tiam\":\"1o\",\" tiko\":\"1p\",\" timp\":15,\" tiom\":\"1o\",\" tis \":3,\" tisc\":\"n\",\" tise\":3,\" tism\":3,\" tit \":\"z\",\" tiu \":\"1o\",\" tiun\":\"1o\",\" tive\":\"p\",\" tjek\":\"z\",\" tjä\":10,\" tke\":3,\" tla \":3,\" tlam\":3,\" tlem\":3,\" tli\":3,\" tmar\":3,\" tmaz\":3,\" tme\":3,\" tmi\":3,\" tmu\":3,\" tn\":3,\" toat\":15,\" toga\":\"v\",\" toh \":\"1q\",\" tohi\":\"1c\",\" tohl\":\"u\",\" tois\":11,\" tomd\":\"1n\",\" tomy\":\"1n\",\" tomó\":\"o\",\" too \":\"m\",\" tood\":\"1p\",\" toom\":\"1c\",\" tous\":\"l\",\" town\":\"m\",\" tp\":3,\" tq\":3,\" trae\":\"o\",\" trao\":\"a\",\" trpe\":\"y\",\" truy\":\"a\",\" try \":\"m\",\" trà\":\"a\",\" trác\":\"a\",\" træ \":\"z\",\" trò\":\"a\",\" trăm\":\"a\",\" tsaa\":\"d\",\" tso\":\"d\",\" tt-\":3,\" tta\":3,\" tte\":3,\" tti\":3,\" ttm\":3,\" ttn\":3,\" ttu\":3,\" tuam\":\"t\",\" tud \":14,\" tude\":3,\" tudn\":14,\" tugh\":\"1q\",\" tuin\":\"r\",\" tuir\":\"s\",\" tun \":\"n\",\" tunt\":11,\" tuoi\":\"q\",\" tuoj\":\"1b\",\" tuot\":11,\" tup \":\"1q\",\" tus \":\"o\",\" tuus\":\"t\",\" tuve\":\"o\",\" tuvi\":\"o\",\" tuvo\":\"o\",\" tuzo\":4,\" tveg\":13,\" tvo \":13,\" tvær\":13,\" tvé\":\"u\",\" twal\":3,\" two \":\"m\",\" tyck\":10,\" tyd \":1,\" tyle\":\"1a\",\" tym\":\"1a\",\" tynd\":\"z\",\" tyrk\":\"z\",\" tyst\":10,\" tyto\":\"u\",\" tz\":3,\" tà\":\"a\",\" tách\":\"a\",\" tám \":\"a\",\" täht\":11,\" täi\":\"1c\",\" täna\":\"1c\",\" tänk\":10,\" tär\":11,\" tè\":\"q\",\" tég\":14,\" télé\":\"l\",\" tì\":\"a\",\" tía\":\"o\",\" tíc\":\"a\",\" tím \":\"u\",\" tín \":\"a\",\" tò\":\"a\",\" tók\":13,\" tóm \":\"a\",\" tõe\":\"1c\",\" töb\":14,\" töle\":\"1n\",\" tört\":14,\" töö\":\"1c\",\" tørs\":\"z\",\" tù\":\"a\",\" túc\":\"a\",\" túi\":\"a\",\" túl\":14,\" tüm\":\"1f\",\" tých\":\"y\",\" tā\":\"1d\",\" tč\":3,\" tē \":\"t\",\" tę \":\"1a\",\" uaf\":\"z\",\" uai\":\"s\",\" uang\":\"b\",\" ubi \":\"t\",\" ubu \":4,\" ubw\":4,\" ucie\":\"1a\",\" ud \":\"z\",\" udb\":\"z\",\" ude \":\"z\",\" uden\":\"z\",\" udg\":\"z\",\" udn\":\"z\",\" udst\":\"z\",\" udt\":\"z\",\" uend\":12,\" ufor\":\"z\",\" ugar\":3,\" uge \":\"z\",\" ugur\":3,\" ugy\":14,\" uhu \":3,\" uile\":\"s\",\" uis\":\"s\",\" uita\":15,\" uke \":12,\" ukli\":\"u\",\" uko \":4,\" ukse\":\"1c\",\" ukus\":\"v\",\" ulac\":3,\" ulag\":\"1n\",\" ulik\":12,\" ulk\":11,\" ulos\":11,\" uly \":\"1n\",\" umah\":3,\" umi \":3,\" umie\":\"1a\",\" umii\":\"d\",\" umo \":\"1p\",\" umuh\":4,\" umuk\":4,\" umun\":4,\" umuy\":\"1f\",\" umí\":\"u\",\" un'\":\"q\",\" und \":\"n\",\" unds\":\"z\",\" unii\":15,\" unti\":\"m\",\" uom\":\"q\",\" uopš\":\"v\",\" uov\":\"q\",\" up \":\"m\",\" upps\":10,\" ups\":\"m\",\" uqb\":3,\" urab\":4,\" urad\":\"v\",\" uraf\":4,\" uras\":4,\" urbo\":\"1o\",\" urbs\":\"t\",\" uret\":\"z\",\" urod\":\"1a\",\" uruş\":\"1n\",\" usak\":3,\" usc\":\"q\",\" usen\":3,\" usha\":4,\" usky\":\"z\",\" uson\":\"1o\",\" uspe\":\"v\",\" usq\":\"t\",\" utaz\":14,\" utb\":10,\" utda\":12,\" utie\":\"y\",\" utol\":14,\" utom\":10,\" utse\":12,\" utta\":10,\" utá\":14,\" uul\":\"d\",\" uur\":\"r\",\" uus \":\"1c\",\" uusi\":11,\" uut\":11,\" uver\":\"y\",\" uvu\":4,\" uw \":\"r\",\" uwag\":\"1a\",\" uxo\":\"t\",\" uyan\":\"1f\",\" uygu\":\"1f\",\" uyo\":4,\" uzi \":\"1o\",\" uzsk\":\"1d\",\" uzt\":\"1d\",\" uzyn\":\"1n\",\" uí\":\"p\",\" učil\":\"u\",\" v'\":\"q\",\" v-\":15,\" vaba\":\"1c\",\" vack\":10,\" vacs\":14,\" vaim\":11,\" vakk\":12,\" valk\":11,\" vam \":\"v\",\" vami\":\"y\",\" vapa\":11,\" varf\":10,\" vaut\":\"l\",\" vav\":\"1q\",\" vax\":\"1p\",\" vaya\":\"o\",\" vaši\":\"u\",\" vaší\":\"u\",\" vd\":\"u\",\" vec \":\"y\",\" vece\":\"o\",\" vegn\":13,\" vej \":\"z\",\" vejo\":\"p\",\" velj\":11,\" vell\":\"t\",\" velm\":\"u\",\" vels\":\"z\",\" velü\":14,\" venh\":\"p\",\" venl\":\"z\",\" veo \":\"o\",\" very\":\"m\",\" ves \":\"o\",\" vety\":\"y\",\" veu\":\"l\",\" veči\":\"y\",\" vg\":\"o\",\" vi'\":\"1q\",\" viac\":\"y\",\" vicc\":14,\" vich\":\"1q\",\" vid \":10,\" vids\":\"z\",\" viei\":\"l\",\" vigh\":\"1q\",\" vigt\":\"z\",\" vigy\":14,\" vii \":15,\" vije\":\"1q\",\" viku\":13,\" vima\":\"1q\",\" vimu\":\"1q\",\" vio \":\"o\",\" visn\":\"t\",\" viu \":\"p\",\" viza\":\"1o\",\" vj\":\"1o\",\" vlu\":\"r\",\" vo \":\"y\",\" vobo\":\"1p\",\" vode\":\"v\",\" voir\":\"l\",\" voja\":\"1o\",\" vojo\":\"1o\",\" vonk\":\"y\",\" vop\":15,\" vors\":\"n\",\" voso\":\"o\",\" vou \":\"p\",\" voud\":\"l\",\" vous\":\"l\",\" voy \":\"o\",\" vozi\":\"v\",\" vrag\":\"r\",\" vrai\":\"l\",\" vrat\":\"v\",\" vrea\":15,\" vrei\":15,\" vtá\":\"y\",\" vua \":\"a\",\" vui \":\"a\",\" vum\":\"1q\",\" vuon\":11,\" vut\":\"1q\",\" vuu\":\"r\",\" vya\":4,\" vybe\":\"y\",\" vyi\":4,\" vyl\":\"u\",\" vá \":\"p\",\" válk\":\"u\",\" vámi\":\"u\",\" váno\":\"u\",\" vári\":\"p\",\" vän\":10,\" væg\":\"z\",\" vé \":\"a\",\" véle\":14,\" véri\":\"l\",\" vì\":\"a\",\" vím\":\"u\",\" víte\":\"u\",\" víz\":14,\" vò\":\"a\",\" vós\":\"p\",\" vô \":\"a\",\" vú\":\"a\",\" vā\":\"1d\",\" vēs\":\"1d\",\" wa'\":\"1q\",\" wab \":\"1q\",\" wait\":\"m\",\" waku\":3,\" wans\":3,\" wasn\":\"m\",\" wav\":\"m\",\" wawe\":4,\" waya\":3,\" waye\":3,\" wb\":\"1a\",\" wd\":\"1a\",\" wea\":\"m\",\" weil\":\"n\",\" weit\":\"n\",\" wej \":\"1q\",\" wejh\":\"1q\",\" weli\":\"1n\",\" wert\":\"n\",\" wewe\":4,\" whe\":\"m\",\" wia\":\"1a\",\" wib \":\"1q\",\" wid \":3,\" wigh\":\"1q\",\" wij \":\"r\",\" wir \":\"n\",\" wish\":\"m\",\" with\":\"m\",\" wiw\":4,\" wk\":\"1a\",\" wnis\":3,\" wo \":\"n\",\" woll\":\"n\",\" woma\":\"m\",\" wone\":\"r\",\" woor\":\"r\",\" work\":\"m\",\" wp\":\"1a\",\" wron\":\"m\",\" ws\":\"1a\",\" wted\":\"1a\",\" wys\":\"1a\",\" wz\":\"1a\",\" wü\":\"n\",\" xa \":\"a\",\" xb\":\"m\",\" xe \":\"a\",\" xed\":3,\" xem \":\"a\",\" xin \":\"a\",\" xinh\":\"a\",\" xir\":3,\" xon\":\"a\",\" xs\":3,\" xu \":\"a\",\" xun\":\"a\",\" xy\":\"m\",\" xá\":\"a\",\" xã\":\"a\",\" xō\":\"o\",\" y'i\":4,\" yaki\":\"b\",\" yakl\":\"1f\",\" yal \":3,\" yala\":\"1f\",\" yaln\":\"1f\",\" yami\":3,\" yapa\":\"1f\",\" yari\":4,\" yaza\":\"1f\",\" yaş\":\"1f\",\" yde\":\"z\",\" yeb\":3,\" yec\":3,\" yedd\":3,\" yedi\":\"1f\",\" yef\":3,\" yeg \":3,\" yek\":3,\" yer \":\"1f\",\" yere\":\"1f\",\" yeri\":\"1f\",\" yess\":3,\" yet \":\"m\",\" yete\":\"1f\",\" yew\":3,\" yez\":3,\" yf\":13,\" yh\":11,\" yif\":3,\" yige\":3,\" yilo\":\"1q\",\" yims\":3,\" yin \":\"1q\",\" ying\":\"1q\",\" yip\":\"1q\",\" yise\":3,\" yiso\":\"1q\",\" yiv\":\"1q\",\" yiz\":3,\" yks\":11,\" yla\":\"1n\",\" yle\":11,\" ylg\":\"1n\",\" yli\":11,\" yll\":11,\" ymm\":11,\" ymp\":11,\" yna\":\"1n\",\" yok \":\"1f\",\" yolu\":\"1f\",\" yorg\":\"1f\",\" yp\":\"1b\",\" yra\":\"1b\",\" yri\":11,\" yst\":11,\" yuch\":\"1q\",\" yufa\":3,\" yuni\":\"1p\",\" yz\":\"1n\",\" yü\":\"1f\",\" zabo\":\"v\",\" zabu\":\"y\",\" zag \":\"r\",\" zais\":\"v\",\" zaje\":\"v\",\" zal \":\"r\",\" zale\":\"1a\",\" zase\":\"u\",\" zatl\":\"1n\",\" zaw\":\"1a\",\" zbi\":\"1a\",\" zbra\":\"u\",\" zdan\":\"1a\",\" zde \":\"u\",\" zdj\":\"1a\",\" zdo\":\"1a\",\" zece\":15,\" zeer\":\"r\",\" zeg \":\"r\",\" zega\":\"1a\",\" zegt\":\"r\",\" zei \":\"r\",\" zeit\":\"n\",\" zeke\":\"r\",\" zelf\":\"r\",\" zemr\":3,\" zeng\":\"1f\",\" zept\":\"u\",\" zes \":\"r\",\" zesz\":\"1a\",\" zet \":\"r\",\" zeve\":\"r\",\" zgad\":\"1a\",\" zgod\":\"1a\",\" zgu\":\"1a\",\" zgâ\":15,\" zi \":15,\" zib\":4,\" zich\":\"r\",\" ziek\":\"r\",\" zien\":\"r\",\" zif \":\"1p\",\" zii\":\"q\",\" zij\":\"r\",\" zik\":3,\" zile\":15,\" zimn\":\"1a\",\" zin \":\"r\",\" zinu\":\"1d\",\" zis \":15,\" zit \":\"r\",\" ziu\":15,\" ziy\":\"1f\",\" zja\":\"1a\",\" zji\":\"u\",\" zk\":\"u\",\" zle \":\"y\",\" zmar\":\"1a\",\" zmen\":\"y\",\" zmie\":\"1a\",\" zmir\":3,\" znac\":\"1a\",\" znač\":\"v\",\" zne\":\"u\",\" zná \":\"u\",\" znát\":\"u\",\" zo'\":\"r\",\" zoa\":\"r\",\" zoba\":\"1a\",\" zobr\":\"y\",\" zoe\":\"r\",\" zoi\":\"r\",\" zon \":\"r\",\" zor \":\"1f\",\" zoru\":\"1f\",\" zou \":\"r\",\" zow\":\"r\",\" zp\":\"u\",\" zt\":\"u\",\" zu \":\"n\",\" zue\":\"n\",\" zuf\":\"n\",\" zug \":\"n\",\" zui\":\"r\",\" zuk\":\"n\",\" zult\":\"r\",\" zum \":\"n\",\" zupe\":\"1a\",\" zus \":\"r\",\" zusa\":\"n\",\" zuv\":\"n\",\" zvi\":\"y\",\" zwis\":\"n\",\" zza\":3,\" závi\":\"u\",\" zâ\":15,\" zä\":\"n\",\" zít\":\"u\",\" zą\":\"1a\",\" zę\":\"1a\",\" ° \":\"q\",\" ½\":\"n\",\" ác \":\"a\",\" áhr\":13,\" áhu\":13,\" ái\":\"s\",\" ák\":13,\" áll\":14,\" áng\":\"o\",\" ánh\":\"a\",\" áno\":\"y\",\" áo\":\"a\",\" áp \":\"a\",\" ári \":13,\" át \":14,\" átta\":13,\" áttu\":13,\" áu\":\"p\",\" ân \":\"a\",\" âu\":\"a\",\" äbi\":\"1p\",\" äd\":\"1p\",\" äfi\":\"1p\",\" äger\":10,\" ägi\":\"1p\",\" ähl\":\"1n\",\" ähn\":\"n\",\" äi\":11,\" äka\":\"1p\",\" äla\":\"1p\",\" äld\":10,\" äli\":\"1p\",\" älo\":\"1p\",\" äls\":10,\" ält\":\"n\",\" älä\":11,\" än \":10,\" äne\":\"1p\",\" änn\":10,\" äno\":\"1p\",\" äpe\":\"1p\",\" äpp\":10,\" är \":10,\" ärl\":10,\" äsa\":\"1p\",\" äse\":\"1p\",\" äsp\":\"1p\",\" äsä\":\"1p\",\" ät \":10,\" äta\":10,\" äte\":10,\" ätit\":10,\" äu\":\"n\",\" äve\":10,\" ävi\":\"1p\",\" ää\":11,\" åb\":\"z\",\" åk\":10,\" ånd\":\"z\",\" åp\":12,\" ås\":10,\" åt \":10,\" åte\":10,\" åtte\":12,\" æ \":13,\" æde\":\"z\",\" æf\":13,\" æg \":\"z\",\" ægt\":\"z\",\" æl\":\"z\",\" æn\":\"z\",\" ætt\":13,\" ça \":\"l\",\" çalt\":\"1n\",\" çenl\":\"1n\",\" ço\":\"1f\",\" çy\":\"1n\",\" çü\":\"1f\",\" è \":\"q\",\" éa\":\"s\",\" éco\":\"l\",\" édes\":14,\" éga\":\"l\",\" éh\":14,\" éi\":\"s\",\" ém\":\"l\",\" éq\":\"l\",\" érd\":14,\" érez\":14,\" ért\":14,\" ést\":\"o\",\" ét \":\"z\",\" éta\":\"l\",\" éto\":\"l\",\" étra\":\"l\",\" étu\":\"l\",\" été\":\"l\",\" éves\":14,\" éx\":\"o\",\" éé\":\"r\",\" ía\":\"p\",\" ích\":\"a\",\" íg\":14,\" ír\":14,\" ít \":\"a\",\" íz\":14,\" îm\":15,\" în\":15,\" ñ\":\"o\",\" ób\":\"p\",\" óg\":13,\" ól \":\"s\",\" óla\":\"s\",\" ósk\":13,\" óti\":\"p\",\" óx\":\"o\",\" ôm\":\"a\",\" ôs\":\"y\",\" ôt\":\"l\",\" õ\":\"1c\",\" ö \":10,\" ödem\":\"1f\",\" öe\":\"1c\",\" öff\":\"n\",\" ögo\":10,\" öll\":13,\" ölü\":\"1f\",\" önc\":\"1f\",\" önem\":\"1f\",\" öner\":\"1f\",\" önsk\":10,\" önü\":\"1f\",\" öpp\":10,\" öreg\":14,\" öron\":10,\" öru\":13,\" örä\":\"1n\",\" öss\":14,\" ötle\":14,\" över\":10,\" öw\":\"1n\",\" öyl\":\"1f\",\" öze\":\"1f\",\" özi\":\"1n\",\" özüm\":\"1n\",\" öç\":\"1k\",\" öö\":\"1c\",\" ø \":\"z\",\" øe\":\"z\",\" øre\":\"z\",\" úc \":\"a\",\" úd\":\"u\",\" úg\":14,\" új\":14,\" úk\":\"u\",\" úlo\":\"y\",\" úsá\":\"s\",\" úti \":13,\" übr\":\"n\",\" üg\":14,\" üh\":\"1c\",\" üks\":\"1c\",\" üle\":\"1c\",\" ülk\":\"1f\",\" üll\":\"1c\",\" üns\":\"1n\",\" üri\":\"1c\",\" ütl\":\"1c\",\" ý \":\"a\",\" ýa\":\"1n\",\" ā \":\"t\",\" āb\":\"1d\",\" ām\":\"t\",\" ār\":\"1d\",\" āt\":\"1d\",\" ăn\":\"a\",\" ą\":\"1b\",\" čaka\":\"y\",\" čem \":\"u\",\" čern\":\"u\",\" četr\":\"1d\",\" čia \":\"1b\",\" čit\":\"v\",\" čov\":\"v\",\" čr\":\"y\",\" čt\":\"u\",\" čuj\":\"v\",\" čuč\":\"y\",\" čít\":\"y\",\" ďa\":\"y\",\" đa \":\"a\",\" đan\":\"a\",\" đe\":\"a\",\" đi\":\"a\",\" đu\":\"a\",\" ē \":\"t\",\" ēm\":\"t\",\" ēst\":\"1d\",\" ğ\":\"1k\",\" īn\":\"t\",\" īp\":\"1d\",\" īr\":\"t\",\" īsti\":\"1d\",\" īv\":\"t\",\" ı\":\"1f\",\" ł\":\"1a\",\" ň\":\"y\",\" œ\":\"l\",\" şan\":\"1f\",\" şar\":\"1f\",\" şc\":15,\" şek\":\"1f\",\" şi \":15,\" şim\":\"1f\",\" şon\":\"1n\",\" şt\":15,\" šaj\":\"1d\",\" šali\":\"1b\",\" šeit\":\"1d\",\" šel\":\"u\",\" ši \":\"1b\",\" šies\":\"y\",\" šil\":\"1b\",\" šim\":\"1b\",\" šio\":\"1b\",\" šit\":\"1b\",\" šli \":\"u\",\" šn\":\"1b\",\" šo \":\"1d\",\" špat\":\"u\",\" šta \":\"v\",\" što\":\"v\",\" štu\":\"y\",\" štv\":\"y\",\" šty\":\"y\",\" štá\":\"y\",\" ší\":\"u\",\" ť\":\"y\",\" ūd\":\"1d\",\" ūk\":\"1b\",\" ŭ\":\"1o\",\" žad\":\"1b\",\" želi\":\"v\",\" žem\":\"1b\",\" židl\":\"u\",\" žin\":\"1b\",\" žo\":\"1b\",\" ží\":\"u\",\" аа\":\"1m\",\" аб \":17,\" абав\":17,\" абар\":17,\" авах\":\"1m\",\" авы\":\"1k\",\" адд\":17,\" адз\":17,\" ади\":\"1m\",\" адк\":17,\" адн\":17,\" адп\":17,\" адра\":17,\" адч\":17,\" аерм\":\"1k\",\" ажи\":\"1m\",\" ажл\":\"1m\",\" азам\":\"1l\",\" азат\":\"1k\",\" айн\":\"1l\",\" айт\":\"1l\",\" ала \":\"1k\",\" алай\":\"1k\",\" аль \":\"1m\",\" амал\":17,\" амар\":\"1m\",\" ан \":16,\" аны \":\"1k\",\" аның\":\"1k\",\" ані \":19,\" апош\":17,\" апта\":\"1l\",\" арна\":\"1l\",\" артт\":\"1k\",\" аспа\":\"1l\",\" асу\":\"1m\",\" асыр\":\"1l\",\" атн\":\"1k\",\" атры\":17,\" атын\":\"1l\",\" ауда\":\"1l\",\" аус\":\"v\",\" ачу\":\"1k\",\" ачы\":\"1k\",\" аша\":\"1k\",\" ашыл\":\"1l\",\" аэ\":18,\" аяк\":\"1k\",\" ај\":\"x\",\" аңа\":\"1k\",\" бай \":\"1k\",\" байн\":\"1m\",\" байс\":\"1m\",\" басп\":\"1l\",\" бать\":19,\" бачи\":19,\" баян\":\"1m\",\" бев\":\"x\",\" бейб\":\"1l\",\" бекі\":\"1l\",\" бер \":\"1k\",\" бера\":\"1k\",\" берк\":\"1k\",\" берс\":\"1k\",\" берт\":\"1k\",\" бес \":\"1l\",\" бетк\":\"1k\",\" беті\":\"1l\",\" бигр\":\"1k\",\" биде\":\"x\",\" биди\":\"x\",\" бидн\":\"1m\",\" бик \":\"1k\",\" бир \":\"1k\",\" бира\":16,\" бит \":\"1k\",\" биц\":\"v\",\" бич\":\"1m\",\" бодо\":\"1m\",\" боз\":\"1k\",\" бои\":18,\" бол \":\"1m\",\" болк\":\"x\",\" болу\":\"1l\",\" боры\":\"1k\",\" бреш\":19,\" брой\":16,\" брос\":18,\" бу \":\"1k\",\" був\":19,\" буды\":17,\" буе\":\"1k\",\" бул \":\"1k\",\" бума\":18,\" буры\":\"1k\",\" буц\":\"1m\",\" бъ\":16,\" быс\":18,\" быт\":18,\" бэ \":\"1m\",\" бяг\":16,\" біль\":19,\" бір\":\"1l\",\" бүр \":\"1m\",\" бүре\":\"1k\",\" вайн\":17,\" вата\":\"1k\",\" вбив\":19,\" ве \":\"x\",\" вери\":18,\" вети\":\"x\",\" веча\":17,\" вещ\":18,\" вж\":19,\" виг\":19,\" вий\":19,\" викн\":\"x\",\" вико\":19,\" вим\":19,\" вих\":19,\" више\":\"v\",\" вона\":19,\" вони\":19,\" воно\":19,\" воп\":18,\" воск\":18,\" вот\":18,\" воч\":17,\" врш\":\"x\",\" врят\":19,\" всем\":18,\" встр\":18,\" втом\":19,\" втра\":19,\" вули\":19,\" вуч\":17,\" вчи\":19,\" вчо\":19,\" выба\":17,\" вышл\":18,\" вэ\":\"1m\",\" вяд\":17,\" вяс\":17,\" від \":19,\" віда\":17,\" віз\":19,\" віль\":19,\" вір\":19,\" га \":\"v\",\" гаде\":\"1k\",\" гае\":\"1k\",\" гат\":17,\" гафу\":\"1k\",\" гај\":\"x\",\" гел \":\"1k\",\" глыб\":17,\" голя\":16,\" грат\":19,\" граю\":19,\" гуль\":17,\" гъ\":16,\" гы\":\"1k\",\" даа\":\"1m\",\" дабр\":17,\" даве\":17,\" даг\":17,\" данд\":\"1m\",\" дао\":\"v\",\" дап\":17,\" дау\":\"1l\",\" девя\":18,\" деге\":\"1l\",\" дено\":\"x\",\" денс\":\"1l\",\" дечк\":\"x\",\" дең\":\"1l\",\" джак\":16,\" дзя\":17,\" дзі\":17,\" ди \":\"1k\",\" диви\":19,\" дити\":19,\" дла\":\"x\",\" дли\":18,\" днес\":16,\" док \":\"v\",\" доме\":18,\" донь\":19,\" дори\":16,\" дошм\":\"1k\",\" дощ\":19,\" дуго\":\"v\",\" думи\":16,\" дус\":\"1k\",\" дъ\":16,\" ды \":17,\" дык \":17,\" дэл\":\"1m\",\" дәл\":\"1l\",\" дәст\":\"1l\",\" еве\":\"x\",\" еге \":19,\" егет\":\"1k\",\" его \":18,\" еден\":\"x\",\" еді\":\"1l\",\" ее\":18,\" езди\":18,\" ези\":16,\" еке\":\"1l\",\" екі\":\"1l\",\" елг\":\"1k\",\" елде\":\"1l\",\" елл\":\"1k\",\" еме\":\"1l\",\" ему\":18,\" енд\":\"1l\",\" епа\":\"x\",\" епт\":\"x\",\" ера\":\"1k\",\" ерек\":\"1l\",\" ерк\":\"1l\",\" ерте\":\"1l\",\" ері\":\"1l\",\" еск\":\"1l\",\" если\":18,\" есть\":18,\" есті\":\"1l\",\" есі\":\"1l\",\" ета\":16,\" ето\":16,\" ету\":\"1l\",\" еті\":\"1l\",\" еу\":\"1l\",\" ех\":18,\" еш \":\"1k\",\" ешк\":\"1l\",\" ешт\":\"1l\",\" ещ\":18,\" еј\":\"x\",\" ең\":\"1l\",\" жабы\":\"1l\",\" жаз\":\"1l\",\" жай\":\"1l\",\" жал \":\"x\",\" жас \":\"1l\",\" жаса\":\"1l\",\" жаст\":\"1l\",\" жасы\":\"1l\",\" жаты\":\"1l\",\" жах\":19,\" жд\":18,\" жей\":\"1l\",\" жек\":\"1l\",\" жели\":\"v\",\" жер \":\"1l\",\" жері\":\"1l\",\" жет\":\"1l\",\" жин\":\"1l\",\" жить\":18,\" жоба\":\"1l\",\" жов\":19,\" жонк\":17,\" жыла\":\"1l\",\" зает\":16,\" зайн\":19,\" зар \":\"v\",\" зби\":19,\" збр\":19,\" збір\":17,\" зви\":19,\" звы\":17,\" звя\":17,\" зві\":19,\" згу\":17,\" здае\":17,\" здар\":17,\" здес\":18,\" зема\":\"x\",\" земи\":\"x\",\" зерт\":\"1l\",\" злам\":19,\" зле \":16,\" змог\":19,\" змож\":19,\" зму\":19,\" змян\":17,\" змі\":19,\" зна \":\"v\",\" знаш\":\"v\",\" знов\":19,\" зог\":\"1m\",\" зорк\":17,\" зох\":\"1m\",\" зраб\":17,\" зуп\":19,\" зуст\":19,\" зъ\":16,\" зэ\":\"1m\",\" зял\":17,\" зям\":17,\" зі \":19,\" зү\":\"1m\",\" идв\":16,\" идең\":\"1k\",\" идн\":\"x\",\" ие \":\"1l\",\" иза\":\"v\",\" изе\":\"x\",\" изк\":16,\" изч\":16,\" ий\":\"1m\",\" ике \":\"1k\",\" икен\":\"1k\",\" ил \":\"1k\",\" иле\":\"1k\",\" илү\":\"1m\",\" имав\":\"x\",\" имею\":18,\" иног\":18,\" ире\":\"1k\",\" ирн\":\"1m\",\" ирс\":\"1m\",\" ирт\":\"1k\",\" исем\":\"1k\",\" итег\":\"1k\",\" ител\":\"1k\",\" итм\":\"1k\",\" итт\":\"1k\",\" ихт\":\"1k\",\" ич\":\"1k\",\" ише\":\"1k\",\" ищ\":18,\" ия\":\"1k\",\" йд\":19,\" йм\":19,\" йт\":19,\" йш\":19,\" к \":18,\" кабу\":\"1k\",\" кави\":19,\" каго\":17,\" кад \":\"v\",\" казв\":16,\" кайб\":\"1k\",\" кайд\":\"1k\",\" кайс\":\"1k\",\" кайт\":\"1k\",\" калу\":\"1k\",\" калы\":\"1k\",\" каля\":17,\" као\":\"v\",\" кар \":\"1k\",\" кат \":\"1k\",\" катн\":\"1k\",\" каты\":\"1k\",\" ках\":17,\" кая\":\"1k\",\" кај \":\"x\",\" кеб\":\"1k\",\" келе\":\"1l\",\" келт\":\"1l\",\" керг\":\"1k\",\" керт\":\"1k\",\" кете\":\"1l\",\" кетк\":\"1l\",\" кешк\":\"1l\",\" кием\":\"1k\",\" ките\":\"1k\",\" кичк\":\"1k\",\" кні\":17,\" коиш\":\"x\",\" койт\":16,\" колі\":19,\" кон \":\"x\",\" кох\":19,\" кошк\":18,\" коя \":16,\" коят\":16,\" кој \":\"x\",\" кращ\":19,\" кроз\":\"v\",\" кт\":18,\" куда\":18,\" куды\":17,\" куй\":\"1k\",\" кул \":\"1k\",\" кулы\":\"1k\",\" кучи\":\"x\",\" къ\":16,\" кыр\":\"1k\",\" кіл\":19,\" кішк\":19,\" күрд\":\"1k\",\" күрм\":\"1k\",\" көрг\":\"1l\",\" лг\":18,\" лепо\":\"v\",\" лж\":18,\" липс\":16,\" лут\":\"x\",\" луч\":18,\" любі\":17,\" лят\":16,\" ліж\":19,\" ліка\":19,\" ліст\":17,\" м'\":19,\" ма \":\"1l\",\" мав \":19,\" магу\":17,\" маеш\":17,\" маж\":\"x\",\" мары\":17,\" мати\":19,\" мату\":\"1k\",\" маус\":\"1l\",\" маці\":17,\" маш \":\"1m\",\" мени\":\"v\",\" мень\":18,\" меня\":18,\" мең\":\"1k\",\" мин \":\"1k\",\" мля\":16,\" мном\":\"v\",\" мове\":17,\" мови\":19,\" мовы\":17,\" мого\":19,\" можд\":\"v\",\" моим\":18,\" мола\":\"x\",\" мома\":17,\" монн\":\"1k\",\" моны\":\"1k\",\" мушк\":\"v\",\" мъ\":16,\" мэн\":\"1m\",\" мян\":17,\" міс\":19,\" мү\":\"1l\",\" наем\":16,\" найк\":19,\" найт\":18,\" нанс\":16,\" нар \":\"1m\",\" нахо\":18,\" нашы\":17,\" невя\":17,\" неге\":\"1l\",\" ней \":18,\" нейк\":17,\" нейн\":16,\" немн\":18,\" немс\":16,\" нет \":18,\" нея \":16,\" нив\":\"x\",\" ниса\":\"v\",\" ниси\":\"v\",\" нито\":16,\" ниј\":\"v\",\" нозе\":\"x\",\" ном \":\"1m\",\" номы\":\"1m\",\" нох\":\"1m\",\" ноч \":17,\" нощ\":16,\" нр\":18,\" нык\":\"1k\",\" ныс\":\"1l\",\" нь \":\"1m\",\" няк\":16,\" нё\":18,\" нім\":19,\" нү\":\"1m\",\" обав\":\"v\",\" обач\":16,\" обн\":18,\" обы\":18,\" обі\":19,\" овак\":\"v\",\" ове \":\"v\",\" овие\":\"x\",\" ово \":\"v\",\" ову\":\"v\",\" одам\":\"x\",\" одан\":\"1l\",\" оде \":\"v\",\" одеж\":18,\" одем\":\"v\",\" оди \":\"x\",\" одим\":\"x\",\" одиш\":\"x\",\" одру\":19,\" одя\":19,\" ое\":\"1k\",\" озак\":\"1k\",\" озы\":\"1k\",\" ойн\":\"1l\",\" оказ\":18,\" окн\":18,\" ол \":\"1l\",\" олар\":\"1l\",\" олк\":\"x\",\" олон\":\"1m\",\" олы\":\"1k\",\" омил\":\"x\",\" онез\":16,\" онз\":16,\" оны \":\"1l\",\" оның\":\"1l\",\" опет\":\"v\",\" опит\":16,\" опоз\":18,\" општ\":\"x\",\" орж\":\"1m\",\" орн\":\"1l\",\" орой\":\"1m\",\" орта\":\"1l\",\" орын\":\"1l\",\" осем\":16,\" осто\":18,\" осы \":\"1l\",\" отан\":\"1l\",\" отве\":18,\" отив\":16,\" отку\":18,\" отц\":18,\" отыр\":\"1l\",\" охи\":\"1m\",\" очак\":16,\" очен\":18,\" оши\":18,\" още\":16,\" ою\":\"1m\",\" оя\":\"1k\",\" оң\":\"1l\",\" пава\":17,\" паво\":17,\" пага\":17,\" пад \":17,\" падо\":17,\" паду\":17,\" пады\":17,\" пае\":17,\" пайс\":17,\" пако\":17,\" памё\":17,\" папр\":17,\" пат \":\"x\",\" пату\":\"x\",\" пе \":\"1l\",\" пева\":\"v\",\" пен \":\"1l\",\" пити\":19,\" пить\":18,\" пия\":16,\" пор \":18,\" поты\":17,\" поце\":18,\" пра \":17,\" праш\":\"x\",\" пре \":\"v\",\" пры \":17,\" прыз\":17,\" прыс\":17,\" птах\":19,\" птуш\":17,\" пушт\":\"x\",\" пц\":\"x\",\" пь\":18,\" пішк\":19,\" рабі\":17,\" разк\":16,\" рань\":18,\" раце\":\"x\",\" раці\":19,\" рачу\":\"v\",\" реб\":18,\" ресе\":\"1l\",\" рет \":\"1l\",\" реци\":\"v\",\" ризы\":\"1k\",\" робл\":19,\" розв\":19,\" розк\":19,\" розр\":19,\" роки\":19,\" рокл\":16,\" року\":19,\" рус \":\"1k\",\" рі\":19,\" сi\":\"1l\",\" саа\":\"x\",\" сае\":\"1k\",\" сака\":\"x\",\" салк\":\"1k\",\" саны\":\"1k\",\" сары\":\"1k\",\" сая \":\"1m\",\" саяс\":\"1l\",\" седу\":\"x\",\" сезн\":\"1k\",\" сека\":\"x\",\" секи\":\"x\",\" секо\":\"x\",\" сен \":\"1l\",\" сені\":\"1l\",\" сиз\":\"1k\",\" сите\":\"x\",\" скі\":19,\" слиш\":18,\" слы\":18,\" сля\":16,\" слі\":19,\" смо \":\"v\",\" смот\":18,\" смі\":19,\" снов\":18,\" сні\":19,\" собу\":\"v\",\" сонс\":\"1m\",\" соны\":\"1l\",\" спац\":17,\" спеч\":16,\" спы\":17,\" срет\":\"x\",\" стап\":\"x\",\" сті\":19,\" сусі\":19,\" сча\":18,\" счу\":16,\" съе\":18,\" сырт\":\"1l\",\" сюды\":17,\" сяк\":16,\" сям\":17,\" сён\":17,\" тi\":\"1l\",\" таа \":\"x\",\" табе\":17,\" табо\":17,\" тавы\":\"1k\",\" тады\":17,\" тази\":16,\" таке\":19,\" танд\":\"1m\",\" таст\":\"1l\",\" тај \":\"v\",\" тв \":\"v\",\" твая\":17,\" теж \":19,\" тежк\":16,\" тез \":\"1l\",\" телл\":\"1k\",\" тем \":18,\" тешл\":\"1k\",\" тең\":\"1l\",\" тив\":\"x\",\" тие \":\"x\",\" тиж\":19,\" тиз\":\"1k\",\" тий\":\"1m\",\" тик \":\"1k\",\" тич\":16,\" тия\":16,\" тоал\":16,\" тое \":17,\" тоел\":\"1k\",\" толи\":\"v\",\" толы\":\"1l\",\" томы\":\"1m\",\" тора\":\"1k\",\" торд\":\"1k\",\" тору\":\"1k\",\" торы\":\"1k\",\" тотк\":\"1k\",\" тоты\":\"1k\",\" тох\":\"1m\",\" тоя\":16,\" траж\":\"v\",\" трие\":\"x\",\" трий\":16,\" трп\":\"x\",\" тры\":17,\" туга\":\"1k\",\" туда\":18,\" туди\":19,\" тук \":16,\" тукт\":\"1k\",\" туку\":\"x\",\" туса\":\"1m\",\" туха\":\"1m\",\" туы\":\"1l\",\" тъ\":16,\" тым \":17,\" тэл\":17,\" тэр \":\"1m\",\" тя \":16,\" тях\":16,\" тіл \":\"1l\",\" уап\":\"x\",\" увек\":\"v\",\" уви\":18,\" удал\":18,\" удах\":\"1m\",\" удри\":\"x\",\" уен\":\"1k\",\" уж \":18,\" ужин\":18,\" ужо\":17,\" уйн\":\"1k\",\" уйт\":18,\" ук \":\"1k\",\" ул \":\"1k\",\" улю\":19,\" умер\":18,\" унт\":\"1m\",\" урам\":\"1k\",\" урм\":\"1k\",\" урна\":\"1k\",\" урт\":\"1k\",\" уры\":\"1k\",\" услы\":18,\" усі \":19,\" утг\":\"1m\",\" уты\":\"1k\",\" уу\":\"1m\",\" ухо\":18,\" уча \":16,\" учам\":\"x\",\" ушт\":\"x\",\" уј\":\"v\",\" фала\":\"x\",\" френ\":16,\" хакл\":\"1k\",\" халк\":\"1k\",\" ханг\":\"1m\",\" хват\":18,\" хий\":\"1m\",\" хис\":\"1k\",\" хич\":\"1m\",\" хлус\":17,\" хой\":\"1m\",\" хопі\":17,\" хора\":16,\" хот \":\"1m\",\" хоть\":18,\" хте\":\"v\",\" хуг\":\"1m\",\" хур\":\"1m\",\" хъ\":16,\" хы\":\"1k\",\" цай\":\"1m\",\" цал\":17,\" цвя\":16,\" це \":19,\" цей\":19,\" цо\":\"1m\",\" ць\":19,\" цю \":19,\" ця \":19,\" цял\":16,\" ціл\":19,\" цін\":19,\" чада\":\"1m\",\" чала\":17,\" часы\":18,\" чаты\":17,\" че \":16,\" чев\":\"x\",\" чем \":18,\" чета\":16,\" чете\":16,\" чинь\":\"1m\",\" чит \":\"1k\",\" чог\":19,\" чом\":19,\" чон\":\"1m\",\" чт\":18,\" чуть\":18,\" чуя\":16,\" чык\":\"1k\",\" чым\":17,\" чынб\":\"1k\",\" чынн\":\"1k\",\" чэ\":17,\" шару\":\"1l\",\" шатл\":\"1k\",\" шеше\":\"1l\",\" шеші\":\"1l\",\" ший\":\"1m\",\" шта \":\"v\",\" штос\":17,\" шув\":\"1m\",\" шул\":\"1k\",\" шч\":17,\" шын\":\"1l\",\" ші\":19,\" шү\":\"1m\",\" щеш\":16,\" щом\":16,\" ъ\":16,\" ын\":\"1l\",\" ыш\":\"1k\",\" эз\":\"1k\",\" эй\":18,\" эмэ\":\"1m\",\" эт \":\"1k\",\" эта\":18,\" эту\":18,\" эч\":\"1k\",\" эш\":\"1k\",\" югар\":\"1k\",\" юк \":\"1k\",\" юм \":\"1m\",\" явах\":\"1m\",\" явл\":18,\" явс\":\"1m\",\" яг \":\"1m\",\" яде \":16,\" ядем\":16,\" яден\":16,\" ядеш\":16,\" яе\":17,\" яж\":16,\" язмы\":\"1k\",\" яка \":19,\" якая\":17,\" яке \":19,\" яки \":\"1k\",\" який\":19,\" якл\":\"1k\",\" якое\":17,\" якой\":17,\" яку \":19,\" якую\":17,\" якіс\":19,\" ял \":\"1k\",\" ям \":16,\" яман\":\"1k\",\" яно \":17,\" яны \":17,\" янын\":\"1k\",\" яра\":\"1k\",\" яри\":\"1m\",\" ярлы\":\"1k\",\" ярты\":\"1k\",\" яса\":\"1k\",\" ят\":\"1k\",\" яу\":\"1k\",\" яше\":\"1k\",\" яши\":\"1k\",\" ёй\":17,\" ён\":17,\" ёст\":\"1m\",\" іде\":19,\" ідз\":17,\" іе\":17,\" із \":19,\" ізд\":\"1l\",\" ім \":17,\" іно\":19,\" ірі\":\"1l\",\" істе\":\"1l\",\" істо\":19,\" ісц\":17,\" іх\":17,\" іші\":\"1l\",\" јад\":\"x\",\" јапа\":\"v\",\" је \":\"v\",\" јут\":\"v\",\" људ\":\"v\",\" ње\":\"v\",\" њи\":\"v\",\" њо\":\"v\",\" үд\":\"1m\",\" үе\":\"1m\",\" үзе\":\"1k\",\" үй\":\"1l\",\" үле\":\"1k\",\" үрг\":\"1m\",\" үт\":\"1k\",\" үш\":\"1l\",\" әде\":\"1l\",\" әке\":\"1l\",\" әм\":\"1k\",\" әр \":\"1l\",\" әре\":\"1l\",\" әрк\":\"1l\",\" әсе\":\"1l\",\" әск\":\"1l\",\" әт\":\"1k\",\" әң\":\"1l\",\" өг\":\"1m\",\" өз \":\"1l\",\" өзг\":\"1l\",\" өй\":\"1k\",\" өк\":\"1l\",\" өме\":\"1k\",\" өнг\":\"1m\",\" өт\":\"1l\",\" אַחו\":\"1h\",\" אַלק\":\"1h\",\" אָנש\":\"1h\",\" אד\":\"1g\",\" או \":\"1g\",\" אויג\":\"1h\",\" אומא\":\"1h\",\" אומב\":\"1h\",\" אומז\":\"1h\",\" און\":\"1h\",\" אונד\":\"1h\",\" אונז\":\"1h\",\" אזוי\":\"1h\",\" אי \":\"1g\",\" אידע\":\"1h\",\" איטא\":\"1h\",\" אייע\":\"1h\",\" אייר\":\"1h\",\" אים\":\"1h\",\" אינה\":\"1g\",\" איר \":\"1h\",\" איש\":\"1g\",\" אכל\":\"1g\",\" אל \":\"1g\",\" אלא\":\"1g\",\" אלע \":\"1h\",\" אם\":\"1g\",\" אמא\":\"1g\",\" אמש \":\"1g\",\" אמתע\":\"1h\",\" אנא\":\"1g\",\" אנג\":\"1g\",\" אש\":\"1g\",\" באנג\":\"1g\",\" באר\":\"1g\",\" בה\":\"1g\",\" בווד\":\"1g\",\" בוי\":\"1h\",\" בוך\":\"1h\",\" בולש\":\"1h\",\" בז\":\"1g\",\" בחוד\":\"1g\",\" בחוץ\":\"1g\",\" בטלו\":\"1g\",\" ביד\":\"1g\",\" ביי \":\"1h\",\" בייג\":\"1h\",\" בייד\":\"1h\",\" בימי\":\"1g\",\" ביצי\":\"1g\",\" ביק\":\"1g\",\" ביר \":\"1h\",\" בירג\":\"1h\",\" בירה\":\"1g\",\" בית\":\"1g\",\" בכית\":\"1g\",\" בליל\":\"1g\",\" בלעד\":\"1g\",\" בן \":\"1g\",\" בני־\":\"1h\",\" בס\":\"1g\",\" בעב\":\"1g\",\" בעל \":\"1g\",\" בענג\":\"1h\",\" בעני\":\"1g\",\" בענק\":\"1h\",\" בערך\":\"1g\",\" בק\":\"1g\",\" ברגע\":\"1g\",\" ברוי\":\"1h\",\" ברור\":\"1g\",\" ברחו\":\"1g\",\" בשע\":\"1g\",\" בשקט\":\"1g\",\" בשר \":\"1g\",\" בת\":\"1g\",\" גאט \":\"1h\",\" גד\":\"1g\",\" גולם\":\"1h\",\" גולף\":\"1g\",\" גורם\":\"1g\",\" גיב \":\"1h\",\" גייע\":\"1h\",\" גיך \":\"1h\",\" געג\":\"1h\",\" געה\":\"1h\",\" געו\":\"1h\",\" געי\":\"1h\",\" געכא\":\"1h\",\" גענג\":\"1h\",\" גענו\":\"1h\",\" געש\":\"1h\",\" גר \":\"1g\",\" גרה \":\"1g\",\" גרם \":\"1g\",\" דאס\":\"1h\",\" דולר\":\"1g\",\" דיב\":\"1g\",\" דיין\":\"1h\",\" דיך\":\"1h\",\" דיר \":\"1h\",\" דריי\":\"1h\",\" האהו\":\"1g\",\" האר\":\"1g\",\" הב\":\"1g\",\" הד\":\"1g\",\" הוד\":\"1g\",\" הט\":\"1g\",\" היח\":\"1g\",\" היטל\":\"1h\",\" היכן\":\"1g\",\" הילף\":\"1h\",\" הימל\":\"1h\",\" המד\":\"1g\",\" המח\":\"1g\",\" המט\":\"1g\",\" המל\":\"1g\",\" המס\":\"1g\",\" המע\":\"1g\",\" המק\":\"1g\",\" המת\":\"1g\",\" הנו\":\"1g\",\" הני\":\"1g\",\" הנע\":\"1g\",\" העלד\":\"1h\",\" העני\":\"1g\",\" העסק\":\"1g\",\" הרחו\":\"1g\",\" הרעי\":\"1g\",\" השו\":\"1g\",\" השמש\":\"1g\",\" השע\":\"1g\",\" וא\":\"1g\",\" וה\":\"1g\",\" ווי \":\"1h\",\" ווע\":\"1h\",\" ול\":\"1g\",\" זוכן\":\"1h\",\" זון\":\"1h\",\" זי \":\"1h\",\" זייף\":\"1h\",\" חבר\":\"1g\",\" חד\":\"1g\",\" חודש\":\"1g\",\" חום \":\"1g\",\" חוץ \":\"1g\",\" חורב\":\"1h\",\" חזק\":\"1g\",\" חיי\":\"1g\",\" חלק \":\"1g\",\" חמיש\":\"1g\",\" חמש \":\"1g\",\" חסר\":\"1g\",\" טוב\":\"1g\",\" טוט\":\"1h\",\" טוי\":\"1h\",\" טום\":\"1g\",\" טיף \":\"1h\",\" טיר \":\"1h\",\" טיש \":\"1h\",\" טניס\":\"1g\",\" טעג \":\"1h\",\" טער\":\"1h\",\" טרוס\":\"1h\",\" יגיע\":\"1g\",\" יד\":\"1g\",\" יה\":\"1g\",\" יום\":\"1g\",\" יות\":\"1g\",\" יחד \":\"1g\",\" יין \":\"1g\",\" יל\":\"1g\",\" ימי\":\"1g\",\" יעדן\":\"1h\",\" יענץ\":\"1h\",\" יעקב\":\"1h\",\" יקר\":\"1g\",\" ירד \":\"1g\",\" יש \":\"1g\",\" ישן \":\"1g\",\" ך\":\"1g\",\" כּ\":\"1h\",\" כאב \":\"1g\",\" כאיל\":\"1g\",\" כו\":\"1g\",\" כיף \":\"1g\",\" כל\":\"1g\",\" כמע\":\"1g\",\" כן \":\"1g\",\" כס\":\"1g\",\" כעת \":\"1g\",\" כש\":\"1g\",\" לא \":\"1g\",\" לאו\":\"1g\",\" לאט \":\"1g\",\" לאי\":\"1g\",\" לאן \":\"1g\",\" לאר\":\"1g\",\" לבדו\":\"1g\",\" לבין\":\"1g\",\" לבלו\":\"1g\",\" לבן \":\"1g\",\" לבק\":\"1g\",\" לג\":\"1g\",\" לד\":\"1g\",\" לה\":\"1g\",\" לו \":\"1g\",\" לוי\":\"1h\",\" לז\":\"1g\",\" לח\":\"1g\",\" לט\":\"1g\",\" ליב \":\"1h\",\" ליג\":\"1h\",\" לידע\":\"1h\",\" ליום\":\"1g\",\" ליטו\":\"1h\",\" לילד\":\"1g\",\" ליש\":\"1g\",\" לך\":\"1g\",\" לכא\":\"1g\",\" לכן \":\"1g\",\" לל\":\"1g\",\" למטה\":\"1g\",\" למי\":\"1g\",\" למסי\":\"1g\",\" למע\":\"1g\",\" למש\":\"1g\",\" לנהו\":\"1g\",\" לנס\":\"1g\",\" לנצח\":\"1g\",\" לס\":\"1g\",\" לעו\":\"1g\",\" לעזב\":\"1h\",\" לעי\":\"1g\",\" לענו\":\"1g\",\" לעש\":\"1g\",\" לעת\":\"1g\",\" לפע\":\"1g\",\" לצפו\":\"1g\",\" לק\":\"1g\",\" לר\":\"1g\",\" לשא\":\"1g\",\" לשי\":\"1g\",\" לשל\":\"1g\",\" לשם\":\"1g\",\" לשנו\":\"1g\",\" ם\":\"1g\",\" מאז \":\"1g\",\" מאל \":\"1h\",\" מאש\":\"1g\",\" מבוג\":\"1g\",\" מגי\":\"1g\",\" מה\":\"1g\",\" מוזן\":\"1h\",\" מות\":\"1g\",\" מזל \":\"1g\",\" מחיר\":\"1g\",\" מט\":\"1g\",\" מי \":\"1g\",\" מידע\":\"1g\",\" מיט \":\"1h\",\" מיטל\":\"1h\",\" מיין\":\"1h\",\" מיך\":\"1h\",\" מילך\":\"1h\",\" מים\":\"1g\",\" מיסט\":\"1h\",\" מיר \":\"1h\",\" מכל \":\"1g\",\" ממה \":\"1g\",\" מניח\":\"1g\",\" מסוב\":\"1g\",\" מסוי\":\"1g\",\" מע \":\"1h\",\" מעג \":\"1h\",\" מעט \":\"1g\",\" מעל \":\"1g\",\" מען\":\"1h\",\" מעני\":\"1g\",\" מעשׂ\":\"1h\",\" מצוי\":\"1g\",\" מצטע\":\"1g\",\" מצי\":\"1g\",\" מק\":\"1g\",\" מר\":\"1g\",\" משום\":\"1g\",\" משק\":\"1g\",\" מתאי\":\"1g\",\" מתע\":\"1g\",\" ן\":\"1g\",\" נאה \":\"1g\",\" נה\":\"1g\",\" נולד\":\"1g\",\" נוס\":\"1g\",\" נוצן\":\"1h\",\" נורא\":\"1g\",\" נות\":\"1g\",\" נידע\":\"1h\",\" ניט\":\"1h\",\" נייט\":\"1h\",\" ניין\":\"1h\",\" ניס\":\"1g\",\" נלך \":\"1g\",\" נר\":\"1g\",\" נשא\":\"1g\",\" נתן \":\"1g\",\" סגור\":\"1g\",\" סוף \":\"1g\",\" סליח\":\"1g\",\" עבר\":\"1g\",\" עד\":\"1g\",\" עז\":\"1g\",\" עיי\":\"1g\",\" על \":\"1g\",\" עלו\":\"1g\",\" עם\":\"1g\",\" עמד \":\"1g\",\" ענג\":\"1h\",\" ענלע\":\"1h\",\" עס \":\"1h\",\" עסו\":\"1g\",\" עש\":\"1g\",\" ף\":\"1g\",\" פּ\":\"1h\",\" פאר \":\"1h\",\" פון\":\"1h\",\" פועל\":\"1g\",\" פופו\":\"1g\",\" פע\":\"1g\",\" צוג\":\"1h\",\" צוז\":\"1h\",\" צום\":\"1h\",\" צונו\":\"1h\",\" צורך\":\"1g\",\" צי \":\"1h\",\" ציל \":\"1h\",\" צלצל\":\"1g\",\" צעב\":\"1h\",\" צעי\":\"1g\",\" צרי\":\"1g\",\" קודם\":\"1g\",\" קוי\":\"1h\",\" קונה\":\"1g\",\" קוק \":\"1h\",\" קורד\":\"1h\",\" קורץ\":\"1h\",\" קטן \":\"1g\",\" קטנה\":\"1g\",\" קיב\":\"1g\",\" קעז \":\"1h\",\" קריג\":\"1h\",\" קריס\":\"1h\",\" קש\":\"1g\",\" ראי\":\"1g\",\" ראש\":\"1g\",\" רב \":\"1g\",\" רג\":\"1g\",\" רוי\":\"1h\",\" רומע\":\"1h\",\" רוסל\":\"1h\",\" רוף \":\"1h\",\" רושם\":\"1g\",\" ריזי\":\"1h\",\" רעב \":\"1g\",\" רעד \":\"1h\",\" רעי\":\"1g\",\" רצי\":\"1g\",\" רק\":\"1g\",\" שׂ\":\"1h\",\" שה\":\"1g\",\" שוב\":\"1g\",\" שוי\":\"1h\",\" שול \":\"1h\",\" שולע\":\"1h\",\" שומע\":\"1g\",\" שונה\":\"1g\",\" שטוב\":\"1h\",\" שטום\":\"1g\",\" שייך\":\"1g\",\" שיך \":\"1h\",\" שיסל\":\"1h\",\" שיצן\":\"1h\",\" שיקר\":\"1g\",\" שיש\":\"1g\",\" של \":\"1g\",\" שלג \":\"1g\",\" שלח \":\"1g\",\" שם\":\"1g\",\" שמה \":\"1g\",\" שמח\":\"1g\",\" שמי \":\"1g\",\" שמעק\":\"1h\",\" שעב\":\"1g\",\" שעו\":\"1g\",\" שעשי\":\"1g\",\" שקט \":\"1g\",\" שרע\":\"1h\",\" תדאג\":\"1g\",\" תו\":\"1g\",\" תי\":\"1g\",\" תן \":\"1g\",\" תני \":\"1g\",\" תע\":\"1g\",\" آ \":\"h\",\" آئی\":\"h\",\" آب\":\"1j\",\" آتش\":\"1j\",\" آخری\":\"1j\",\" آرزو\":\"1j\",\" آسف \":\"1i\",\" آسم\":\"1j\",\" آلود\":\"1j\",\" آماد\":\"1j\",\" آمل \":\"1i\",\" آنقد\":\"1j\",\" أت\":\"1i\",\" أس\":\"1i\",\" أل\":\"1i\",\" أم\":\"1i\",\" اب \":\"h\",\" ابتس\":\"1i\",\" ابر\":\"1j\",\" ابن\":\"1i\",\" ابو\":\"h\",\" اتا\":\"1j\",\" اتص\":\"1i\",\" اتف\":\"1j\",\" اتن\":\"h\",\" اتو\":\"1j\",\" اجا\":\"1j\",\" احتا\":\"1i\",\" احتم\":\"1j\",\" اختب\":\"1i\",\" اختف\":\"1i\",\" ارتب\":\"1j\",\" ارتد\":\"1i\",\" ارز\":\"1j\",\" اروپ\":\"1j\",\" از \":\"1j\",\" اس \":\"h\",\" اساس\":\"1j\",\" اسب \":\"1j\",\" استف\":\"1j\",\" اسمه\":\"1i\",\" اسی\":\"h\",\" اش \":\"1j\",\" اصل\":\"1j\",\" اضاف\":\"1j\",\" اطلا\":\"1j\",\" اعتم\":\"1j\",\" افر\":\"1j\",\" اقتر\":\"1i\",\" الات\":\"1i\",\" الاح\":\"1i\",\" الاس\":\"1i\",\" الاع\":\"1i\",\" الاق\":\"1i\",\" الام\":\"1i\",\" البا\":\"1i\",\" البد\":\"1i\",\" البس\":\"1i\",\" البش\":\"1i\",\" البط\":\"1i\",\" البع\":\"1i\",\" البو\":\"1i\",\" الت\":\"1i\",\" الد\":\"1i\",\" الس\":\"1i\",\" الش\":\"1i\",\" الص\":\"1i\",\" العج\":\"1i\",\" العص\":\"1i\",\" العق\":\"1i\",\" العو\":\"1i\",\" الغ\":\"1i\",\" الفت\":\"1i\",\" الفس\":\"1i\",\" الفو\":\"1i\",\" المؤ\":\"1i\",\" المب\":\"1i\",\" المض\":\"1i\",\" المه\":\"1i\",\" الن\":\"1i\",\" الهج\":\"1i\",\" الهن\":\"1i\",\" الهو\":\"1i\",\" الو\":\"1i\",\" ام \":\"1j\",\" اما\":\"1j\",\" انا\":\"1i\",\" انت \":\"1i\",\" انتب\":\"1i\",\" اندک\":\"1j\",\" انظر\":\"1i\",\" انه\":\"1i\",\" انگر\":\"h\",\" اور \":\"h\",\" اوست\":\"1j\",\" اوقا\":\"1j\",\" اول \":\"1j\",\" اون \":\"1j\",\" اپ\":\"h\",\" اچ\":\"h\",\" اکی\":\"h\",\" ایک\":\"h\",\" با \":\"1j\",\" بات \":\"h\",\" باد\":\"1j\",\" بار \":\"1j\",\" بارا\":\"1j\",\" بارش\":\"h\",\" باش\":\"1j\",\" باعث\":\"1j\",\" باغ \":\"1j\",\" بالب\":\"1i\",\" بالد\":\"1i\",\" بالص\":\"1i\",\" بالغ\":\"1i\",\" بانک\":\"1j\",\" ببر\":\"1j\",\" ببند\":\"1j\",\" بتوا\":\"1j\",\" بحا\":\"1i\",\" بدان\":\"1j\",\" بر \":\"1j\",\" برد \":\"1j\",\" برو \":\"1j\",\" برود\":\"1j\",\" بسب\":\"1i\",\" بسته\":\"1j\",\" بطاق\":\"1i\",\" بعدا\":\"1j\",\" بعضی\":\"1j\",\" بلا \":\"1i\",\" بلن\":\"1j\",\" بمار\":\"1i\",\" بمفر\":\"1i\",\" بنف\":\"1i\",\" بها \":\"1i\",\" بهار\":\"1j\",\" بوب \":\"1i\",\" بوسط\":\"1i\",\" بوسع\":\"1i\",\" بی \":\"1j\",\" تأت\":\"1i\",\" تا \":\"1j\",\" تابس\":\"1j\",\" تان \":\"1j\",\" تبحث\":\"1i\",\" تت\":\"1i\",\" تجاه\":\"1i\",\" تحاو\":\"1i\",\" تحسی\":\"1j\",\" تحصی\":\"1j\",\" تحف\":\"h\",\" تخبر\":\"1i\",\" تخت \":\"1j\",\" تخرج\":\"1i\",\" تدرس\":\"1i\",\" تر \":\"1j\",\" ترتد\":\"1i\",\" ترس \":\"1j\",\" تز\":\"1i\",\" تشعر\":\"1i\",\" تصاد\":\"1j\",\" تصبح\":\"1i\",\" تصوی\":\"1j\",\" تعت\":\"1i\",\" تعرض\":\"1i\",\" تعری\":\"1j\",\" تفهم\":\"1i\",\" تقع \":\"1i\",\" تقل\":\"1i\",\" تلا\":\"1j\",\" تلق\":\"1i\",\" تمل\":\"1i\",\" تنا\":\"1i\",\" تنتظ\":\"1i\",\" تنها\":\"1j\",\" توسط\":\"1j\",\" توصی\":\"1j\",\" توضی\":\"1j\",\" توکی\":\"1j\",\" تک \":\"h\",\" تین\":\"h\",\" ثل\":\"1i\",\" جائی\":\"1j\",\" جات\":\"h\",\" جالب\":\"1j\",\" جالس\":\"1i\",\" جان \":\"1j\",\" جانا\":\"h\",\" جاهز\":\"1i\",\" جب \":\"h\",\" جرم\":\"h\",\" جستج\":\"1j\",\" جعبه\":\"1j\",\" جلو\":\"1j\",\" جما\":\"1i\",\" جو \":\"h\",\" جون\":\"1i\",\" حاس\":\"1i\",\" حافظ\":\"1j\",\" حذاء\":\"1i\",\" حرف\":\"1j\",\" حقا\":\"1i\",\" حی\":\"1j\",\" خائ\":\"1i\",\" خاطر\":\"1j\",\" خالی\":\"1j\",\" خامو\":\"1j\",\" خانو\":\"1j\",\" خت\":\"h\",\" خدا\":\"1j\",\" خراب\":\"1j\",\" خرجت\":\"1i\",\" خطرن\":\"1j\",\" خلال\":\"1i\",\" خلف \":\"1i\",\" خمس\":\"1i\",\" خوا\":\"1j\",\" خور\":\"1j\",\" خوشا\":\"1j\",\" خوشح\":\"1j\",\" داد\":\"1j\",\" دارو\":\"1j\",\" داس\":\"1j\",\" دان \":\"1i\",\" در \":\"1j\",\" درب\":\"1j\",\" دروس\":\"1i\",\" درک \":\"1j\",\" دری\":\"1j\",\" دس \":\"h\",\" دست\":\"1j\",\" دش\":\"1j\",\" دلار\":\"1j\",\" دن \":\"h\",\" ده \":\"1j\",\" دهم\":\"1j\",\" دولا\":\"1i\",\" دون \":\"1i\",\" دی \":\"h\",\" دیا\":\"h\",\" ذات \":\"1i\",\" ذاه\":\"1i\",\" رأس\":\"1i\",\" رئیس\":\"1j\",\" را \":\"1j\",\" رائ\":\"1i\",\" رات \":\"h\",\" راج\":\"1j\",\" راحت\":\"1j\",\" رانن\":\"1j\",\" راه\":\"1j\",\" ربم\":\"1i\",\" رج\":\"1i\",\" رسائ\":\"1i\",\" رسال\":\"1i\",\" رشد \":\"1j\",\" رفت\":\"1j\",\" رفض \":\"1i\",\" رقم \":\"1i\",\" رمض\":\"1i\",\" رنج\":\"1j\",\" رها \":\"1j\",\" رو \":\"1j\",\" روح \":\"1j\",\" رود\":\"1j\",\" ري\":\"1i\",\" ریا\":\"1j\",\" زد\":\"1j\",\" زما\":\"1j\",\" زمست\":\"1j\",\" زن \":\"1j\",\" زنان\":\"1j\",\" زنگ \":\"1j\",\" زي\":\"1i\",\" سأل\":\"1i\",\" ساده\":\"1j\",\" ساعا\":\"1i\",\" سافر\":\"1i\",\" سب \":\"h\",\" ستار\":\"1j\",\" سر \":\"1j\",\" سرعت\":\"1j\",\" سرق\":\"1i\",\" سرما\":\"1j\",\" سفر \":\"1j\",\" سفید\":\"1j\",\" سمح\":\"1i\",\" سنو\":\"1i\",\" سه \":\"1j\",\" سوار\":\"1j\",\" سوف\":\"1i\",\" سي\":\"1i\",\" سیاس\":\"1j\",\" سیب\":\"1j\",\" سیک\":\"h\",\" شان\":\"1j\",\" شب \":\"1j\",\" شخصا\":\"1i\",\" شخصی\":\"1j\",\" شد \":\"1j\",\" شدی\":\"1j\",\" شعرت\":\"1i\",\" شعره\":\"1i\",\" شمار\":\"1j\",\" شوم \":\"1j\",\" شکل \":\"1j\",\" شی\":\"1j\",\" صبا\":\"1i\",\" صبحا\":\"1j\",\" صبر\":\"1j\",\" صدا \":\"1j\",\" صلح\":\"1j\",\" صندل\":\"1j\",\" صوت\":\"1i\",\" طال\":\"1i\",\" طبق \":\"1j\",\" طوا\":\"1i\",\" ظاهر\":\"1j\",\" ظننت\":\"1i\",\" عائ\":\"1i\",\" عاش \":\"1i\",\" عاقل\":\"1j\",\" عالی\":\"1j\",\" عبر\":\"1i\",\" عجله\":\"1j\",\" عشق\":\"1j\",\" عصبا\":\"1j\",\" عصر \":\"1j\",\" عقید\":\"1j\",\" علت \":\"1j\",\" عمره\":\"1i\",\" عملت\":\"1i\",\" عمي \":\"1i\",\" عنه\":\"1i\",\" عور\":\"h\",\" عوض \":\"1j\",\" غاض\":\"1i\",\" غد\":\"1i\",\" غري\":\"1i\",\" غی\":\"1j\",\" فتا\":\"1i\",\" فحسب\":\"1i\",\" فراو\":\"1j\",\" فرزن\":\"1j\",\" فرصت\":\"1j\",\" فرو\":\"1j\",\" فهمت\":\"1i\",\" فی\":\"1j\",\" قال\":\"1i\",\" قام\":\"1i\",\" قبلا\":\"1j\",\" قبلت\":\"1i\",\" قبول\":\"1j\",\" قدرت\":\"1j\",\" قرأت\":\"1i\",\" قرر \":\"1i\",\" قرمز\":\"1j\",\" قط \":\"1i\",\" قفز \":\"1i\",\" قلت\":\"1i\",\" قمت \":\"1i\",\" قيد \":\"1i\",\" كا\":\"1i\",\" كر\":\"1i\",\" لئ\":\"h\",\" لا \":\"1i\",\" لاح\":\"1i\",\" لازم\":\"1j\",\" لبا\":\"1j\",\" لبخن\":\"1j\",\" لت\":\"1i\",\" لحظه\":\"1j\",\" لد\":\"1i\",\" لذت \":\"1j\",\" لس\":\"1i\",\" لق\":\"1i\",\" لل\":\"1i\",\" لم \":\"1i\",\" لما\":\"1i\",\" لمب\":\"h\",\" لن \":\"1i\",\" لنفس\":\"1i\",\" له \":\"1i\",\" لها\":\"1i\",\" لو \":\"1i\",\" لي\":\"1i\",\" لگ\":\"h\",\" لیا\":\"h\",\" لیک\":\"h\",\" مات\":\"1i\",\" ماری\":\"1j\",\" مالا\":\"1i\",\" ماله\":\"1i\",\" مان\":\"1j\",\" ماه \":\"1j\",\" مت \":\"h\",\" متاس\":\"1j\",\" متفا\":\"1j\",\" متقا\":\"1j\",\" مجنو\":\"1i\",\" محام\":\"1i\",\" محظو\":\"1i\",\" مخال\":\"1j\",\" مدت\":\"1j\",\" مدد\":\"h\",\" مرا \":\"1j\",\" مرات\":\"1i\",\" مراق\":\"1j\",\" مرحب\":\"1i\",\" مرد\":\"1j\",\" مرغ \":\"1j\",\" مسئل\":\"1j\",\" مستع\":\"1i\",\" مستو\":\"1i\",\" مشاه\":\"1i\",\" مشرو\":\"1i\",\" مصر \":\"1i\",\" مضطر\":\"1i\",\" مطال\":\"1j\",\" مطمئ\":\"1j\",\" مع \":\"1i\",\" معجب\":\"1i\",\" معه\":\"1i\",\" مفتا\":\"1i\",\" مفتو\":\"1i\",\" مقدا\":\"1j\",\" ملک\":\"h\",\" مما \":\"1i\",\" ممت\":\"1i\",\" منظو\":\"1j\",\" منه\":\"1i\",\" مهرب\":\"1j\",\" مواط\":\"1i\",\" مواظ\":\"1j\",\" مور\":\"1j\",\" موعد\":\"1i\",\" موه\":\"1j\",\" می \":\"1j\",\" میا\":\"1j\",\" میخو\":\"1j\",\" میری\":\"h\",\" میوه\":\"1j\",\" میک\":\"1j\",\" نائم\":\"1i\",\" نارا\":\"1j\",\" نامی\":\"1j\",\" نان \":\"1j\",\" ناها\":\"1j\",\" نبو\":\"1j\",\" نتو\":\"1j\",\" نتیج\":\"1j\",\" نحب \":\"1i\",\" نحتا\":\"1i\",\" نحو \":\"1i\",\" ندا\":\"1j\",\" نشد\":\"1j\",\" نظار\":\"1i\",\" نظرت\":\"1i\",\" نع\":\"1i\",\" نقش\":\"1j\",\" نما\":\"1j\",\" نه \":\"1j\",\" نه؟ \":\"1j\",\" نور \":\"1j\",\" نگ\":\"1j\",\" نیا\":\"1j\",\" نیز \":\"1j\",\" هات\":\"1i\",\" هدف \":\"1j\",\" هر \":\"1j\",\" هزار\":\"1j\",\" هل \":\"1i\",\" هلا \":\"1i\",\" همر\":\"1j\",\" همسا\":\"1j\",\" همه\":\"1j\",\" هنر\":\"1j\",\" هنو\":\"1j\",\" هو \":\"1i\",\" هوا \":\"1j\",\" هواپ\":\"1j\",\" هي\":\"1i\",\" واجب\":\"1i\",\" واح\":\"1i\",\" وارد\":\"1j\",\" وافق\":\"1i\",\" واقع\":\"1j\",\" واقف\":\"1i\",\" والا\":\"h\",\" والت\":\"1i\",\" والم\":\"1i\",\" واپ\":\"h\",\" وجهه\":\"1i\",\" وصل\":\"1i\",\" وضعت\":\"1i\",\" وقتا\":\"1i\",\" ولا\":\"1i\",\" ولد\":\"1i\",\" ولی\":\"1j\",\" ومار\":\"1i\",\" يا\":\"1i\",\" يب\":\"1i\",\" يت\":\"1i\",\" يد\":\"1i\",\" ير\":\"1i\",\" يز\":\"1i\",\" يس\":\"1i\",\" يش\":\"1i\",\" يم\":\"1i\",\" ين\":\"1i\",\" پائی\":\"1j\",\" پارس\":\"1j\",\" پت\":\"h\",\" پس \":\"1j\",\" پسن\":\"h\",\" پن\":\"1j\",\" پور\":\"h\",\" پک\":\"h\",\" چوب \":\"1j\",\" کا \":\"h\",\" کار \":\"1j\",\" کارت\":\"1j\",\" کاره\":\"1j\",\" کاغذ\":\"1j\",\" کدا\":\"1j\",\" کرو\":\"h\",\" کلی\":\"1j\",\" کن\":\"1j\",\" کو \":\"h\",\" کون\":\"h\",\" کوه \":\"1j\",\" کیک \":\"1j\",\" گرسن\":\"1j\",\" گری\":\"1j\",\" گل\":\"1j\",\" گو\":\"1j\",\" یادگ\":\"1j\",\" یک\":\"1j\",\" ।\":\"g\",\" ‌\":\"1j\",\" ―\":18,\" №\":18,\" 「君\":5,\" 「彼\":5,\" 「月」\":5,\" 」「一\":5,\" 」「時\":5,\" 」「違\":5,\" 一人\":5,\" 一個\":6,\" 一切\":6,\" 一定\":6,\" 一方\":5,\" 一日\":5,\" 一杯\":5,\" 一生\":5,\" 一行\":5,\" 一週\":5,\" 一部\":5,\" 万一\":5,\" 万事\":5,\" 三日\":5,\" 上司\":5,\" 上帝\":6,\" 上海\":6,\" 不 \":6,\" 不幸的\":6,\" 不然\":6,\" 不用\":6,\" 不管\":6,\" 世紀\":5,\" 世間\":5,\" 中学\":5,\" 主人\":5,\" 予\":5,\" 交通\":5,\" 今何\":5,\" 今年的\":6,\" 今後\":5,\" 今日私\":5,\" 今月\":5,\" 他人\":5,\" 他以\":6,\" 他住\":6,\" 他只\":6,\" 他可\":6,\" 他向\":6,\" 他告\":6,\" 他和\":6,\" 他喜\":6,\" 他因\":6,\" 他完全\":6,\" 他就\":6,\" 他常\":6,\" 他昨\":6,\" 他最\":6,\" 他来\":6,\" 他正\":6,\" 他比\":6,\" 他没\":6,\" 他為\":6,\" 他用\":6,\" 他給\":6,\" 他肯定\":6,\" 他能\":6,\" 他被\":6,\" 他要\":6,\" 他雖然\":6,\" 他非\":6,\" 以下\":5,\" 以前 \":5,\" 休憩\":5,\" 佐藤\":5,\" 体\":5,\" 何事\":5,\" 何人\":5,\" 何故\":5,\" 何時\":5,\" 例\":5,\" 個人\":5,\" 偶然\":5,\" 元\":5,\" 兄\":5,\" 入\":5,\" 全部\":5,\" 公平\":5,\" 出席\":5,\" 出来\":5,\" 列\":5,\" 初\":5,\" 劇場\":5,\" 勉\":5,\" 動物\":5,\" 勘定\":5,\" 勝\":5,\" 北海\":5,\" 医師\":5,\" 十分\":5,\" 午\":5,\" 博物館\":5,\" 即使\":6,\" 原子\":5,\" 古代\":5,\" 只\":6,\" 可愛\":5,\" 同時\":5,\" 同社\":5,\" 名古屋\":5,\" 君\":5,\" 告訴\":6,\" 哦 \":6,\" 商品\":5,\" 因\":6,\" 国民\":5,\" 地下\":5,\" 地球上\":5,\" 地震\":5,\" 基本\":5,\" 夕\":5,\" 外出\":5,\" 夜中\":5,\" 大人\":5,\" 大多数\":6,\" 大学\":5,\" 大家\":6,\" 大抵\":5,\" 大阪\":5,\" 大雪\":5,\" 天空\":6,\" 太郎\":5,\" 太阳\":6,\" 失敗\":5,\" 奈良\":5,\" 女性\":5,\" 女王\":5,\" 好久不\":6,\" 如\":6,\" 妹\":5,\" 妻\":5,\" 委員\":5,\" 子\":5,\" 安全\":5,\" 完全\":5,\" 完璧\":5,\" 宗教\":5,\" 家庭\":5,\" 宿\":5,\" 富士\":5,\" 寒\":5,\" 将来\":5,\" 小学\":5,\" 少年\":5,\" 就像\":6,\" 就算\":6,\" 尽管\":6,\" 山田\":5,\" 川\":5,\" 市場\":5,\" 市長\":5,\" 帽子\":5,\" 年 \":5,\" 年前\":5,\" 年月\":5,\" 幸運\":5,\" 幽霊\":5,\" 弟\":5,\" 強盗\":5,\" 当地\":5,\" 当然 \":6,\" 当社\":5,\" 彼 \":5,\" 彼等\":5,\" 心臓\":5,\" 必要\":5,\" 忍耐\":5,\" 思\":5,\" 急\":5,\" 恋愛\":5,\" 息\":5,\" 患者\":5,\" 意味\":5,\" 意識\":5,\" 感謝\":5,\" 成功\":5,\" 我上\":6,\" 我下\":6,\" 我仍然\":6,\" 我住\":6,\" 我保證\":6,\" 我再\":6,\" 我出\":6,\" 我十\":6,\" 我叔\":6,\" 我受\":6,\" 我叫\":6,\" 我回\":6,\" 我妹\":6,\" 我完\":6,\" 我家\":6,\" 我寧願\":6,\" 我将\":6,\" 我常\":6,\" 我幾\":6,\" 我弟\":6,\" 我得\":6,\" 我必\":6,\" 我忘\":6,\" 我怀\":6,\" 我愛\":6,\" 我感\":6,\" 我明年\":6,\" 我更\":6,\" 我期待\":6,\" 我本\":6,\" 我正\":6,\" 我母\":6,\" 我比\":6,\" 我永\":6,\" 我決定\":6,\" 我為\":6,\" 我無\":6,\" 我現\":6,\" 我用\":6,\" 我相\":6,\" 我確定\":6,\" 我等\":6,\" 我給\":6,\" 我老婆\":6,\" 我肯定\":6,\" 我被\":6,\" 我討厭\":6,\" 我記\":6,\" 我認\":6,\" 我請\":6,\" 我買\":6,\" 我身上\":6,\" 我通\":6,\" 我還\":6,\" 我都\":6,\" 我非\":6,\" 手術\":5,\" 把\":6,\" 据我所\":6,\" 授\":5,\" 放課\":5,\" 政治\":5,\" 教室\":5,\" 教師\":5,\" 教授\":5,\" 教育\":5,\" 数人\":5,\" 数年\":5,\" 数日\":5,\" 料\":5,\" 新聞\":5,\" 新鮮\":5,\" 旅行\":5,\" 日本食\":5,\" 明後\":5,\" 映\":5,\" 是的\":6,\" 是非\":5,\" 時刻表\":5,\" 普\":5,\" 暗\":5,\" 最初\":5,\" 最近何\":5,\" 月日\":5,\" 有名\":5,\" 有時\":6,\" 朝\":5,\" 期待\":5,\" 未成年\":5,\" 未来\":5,\" 本日\":5,\" 村人\":5,\" 椅子\":5,\" 植物\":5,\" 次\":5,\" 正午\":5,\" 正確\":5,\" 残\":5,\" 民主\":5,\" 決\":5,\" 汽車\":5,\" 没\":6,\" 洋子\":5,\" 洪水\":5,\" 海岸\":5,\" 湯\":6,\" 準備\":5,\" 漢字\":5,\" 無論\":6,\" 然後\":6,\" 熱\":5,\" 物事\":5,\" 物理\":5,\" 特別\":5,\" 犯人\":5,\" 犯罪\":5,\" 率直\":5,\" 現代\":5,\" 現金\":5,\" 理由\":5,\" 理解\":5,\" 理論\":5,\" 生物\":5,\" 田中\":5,\" 男子\":5,\" 疲\":5,\" 皆\":5,\" 目的\":5,\" 眠\":5,\" 眼鏡\":5,\" 睡眠\":5,\" 知識\":5,\" 石油\":5,\" 研究\":5,\" 確\":5,\" 祖\":5,\" 禁煙\":5,\" 私\":5,\" 秘密\":5,\" 空腹\":5,\" 笑\":5,\" 素\":5,\" 結果\":5,\" 綺麗\":5,\" 緊急\":5,\" 美味\":5,\" 美術\":5,\" 聞\":5,\" 背中\":5,\" 自然\":5,\" 良\":5,\" 虽然\":6,\" 裁判\":5,\" 要不\":6,\" 見\":5,\" 規則\":5,\" 親\":5,\" 言\":5,\" 話\":5,\" 誤解\":5,\" 請\":6,\" 講演者\":5,\" 謝謝\":6,\" 貧\":5,\" 責任\":5,\" 貴\":5,\" 買\":5,\" 費用\":5,\" 赤\":5,\" 軍隊\":5,\" 退職\":5,\" 這\":6,\" 週\":5,\" 運\":5,\" 遠\":5,\" 選手\":5,\" 那\":6,\" 部\":5,\" 都市\":5,\" 野\":5,\" 鈴木\":5,\" 鉛筆\":5,\" 銀行\":5,\" 間\":5,\" 雖然\":6,\" 電子\":5,\" 非常感\":6,\" 靴\":5,\" 頭\":5,\" 飛行\":5,\" 食料\":5,\" 飲\":5,\" 首先 \":6,\" 首相\":5,\" 魚\":5,\" 鳥\":5,\" 麻煩\":6,\" 갑\":7,\" 갖\":7,\" 걔\":7,\" 걱\":7,\" 검\":7,\" 겁\":7,\" 겨\":7,\" 겪\":7,\" 곧\":7,\" 골\":7,\" 곱\":7,\" 괜\":7,\" 괴\":7,\" 굴\":7,\" 궁\":7,\" 귀\":7,\" 규\":7,\" 극\":7,\" 글\":7,\" 긴\":7,\" 깊\":7,\" 깨\":7,\" 꺼\":7,\" 꽃\":7,\" 꽤\":7,\" 꾸\":7,\" 꿈\":7,\" 끔\":7,\" 끝\":7,\" 낭\":7,\" 낮\":7,\" 냄\":7,\" 냉\":7,\" 널\":7,\" 넘\":7,\" 녹\":7,\" 논\":7,\" 놀\":7,\" 농\":7,\" 높\":7,\" 놓\":7,\" 뉴\":7,\" 늙\":7,\" 늦\":7,\" 닫\":7,\" 담\":7,\" 덥\":7,\" 됐\":7,\" 뒤\":7,\" 듣\":7,\" 딱\":7,\" 딸\":7,\" 떡\":7,\" 떨\":7,\" 똑\":7,\" 뛰\":7,\" 뜻\":7,\" 막\":7,\" 맛\":7,\" 맞\":7,\" 맡\":7,\" 맥\":7,\" 먼\":7,\" 멀\":7,\" 멈\":7,\" 멋\":7,\" 멍\":7,\" 몸\":7,\" 뭔\":7,\" 뭘\":7,\" 민\":7,\" 밀\":7,\" 및\":7,\" 박\":7,\" 밖\":7,\" 벌\":7,\" 범\":7,\" 벗\":7,\" 베\":7,\" 변\":7,\" 병\":7,\" 볼\":7,\" 봉\":7,\" 북\":7,\" 브\":7,\" 빌\":7,\" 빵\":7,\" 빼\":7,\" 뻔\":7,\" 뿐\":7,\" 삶\":7,\" 삼\":7,\" 샀\":7,\" 셔\":7,\" 솔\":7,\" 숙\":7,\" 순\":7,\" 술\":7,\" 숨\":7,\" 쉬\":7,\" 쉽\":7,\" 슈\":7,\" 슬\":7,\" 승\":7,\" 싸\":7,\" 써\":7,\" 썼\":7,\" 쓴\":7,\" 쓸\":7,\" 씨\":7,\" 씻\":7,\" 앉\":7,\" 앞\":7,\" 얘\":7,\" 억\":7,\" 얻\":7,\" 옆\":7,\" 온\":7,\" 옷\":7,\" 완\":7,\" 응\":7,\" 익\":7,\" 잃\":7,\" 잊\":7,\" 잔\":7,\" 잡\":7,\" 졸\":7,\" 좁\":7,\" 죄\":7,\" 준\":7,\" 줬\":7,\" 즐\":7,\" 창\":7,\" 채\":7,\" 척\":7,\" 천\":7,\" 쳐\":7,\" 쳤\":7,\" 초\":7,\" 총\":7,\" 추\":7,\" 축\":7,\" 출\":7,\" 춤\":7,\" 춥\":7,\" 충\":7,\" 취\":7,\" 층\":7,\" 칠\":7,\" 캐\":7,\" 커\":7,\" 컴\":7,\" 큰\":7,\" 탈\":7,\" 탐\":7,\" 탔\":7,\" 태\":7,\" 택\":7,\" 텐\":7,\" 텔\":7,\" 투\":7,\" 특\":7,\" 틀\":7,\" 팔\":7,\" 평\":7,\" 포\":7,\" 폭\":7,\" 표\":7,\" 풀\":7,\" 향\":7,\" 허\":7,\" 헤\":7,\" 현\":7,\" 형\":7,\" 환\":7,\" 훨\":7,\" 휴\":7,\" 흔\":7,\" 흥\":7,\" 힘\":7,\" -\":\"n\",\" ufo\":5,\"''e\":\"1q\",\"''h\":\"r\",\"''i\":\"r\",\"''k\":\"1b\",\"''o\":\"1q\",\"''t\":\"1b\",\"''w\":\"r\",\"'a'\":\"1q\",\"'a-\":\"l\",\"'abi\":\"q\",\"'ador\":\"l\",\"'ae\":\"q\",\"'ai \":\"l\",\"'aide\":\"l\",\"'aim\":\"l\",\"'air\":\"l\",\"'aiu\":\"q\",\"'aj\":\"l\",\"'altr\":\"q\",\"'angl\":\"l\",\"'aoi\":\"s\",\"'aplo\":\"1q\",\"'as \":\"l\",\"'as-\":\"l\",\"'asr\":\"1q\",\"'aul\":\"q\",\"'aura\":\"l\",\"'avai\":\"l\",\"'avez\":\"l\",\"'avoi\":\"l\",\"'avon\":\"l\",\"'avv\":\"q\",\"'azi\":\"q\",\"'aé\":\"l\",\"'aš\":\"1b\",\"'ba\":\"1q\",\"'be'\":\"1q\",\"'bej\":\"1q\",\"'bo\":\"1q\",\"'ca\":\"m\",\"'cho\":\"1q\",\"'chu\":\"1q\",\"'cl\":\"m\",\"'co\":\"m\",\"'d \":\"m\",\"'da \":\"1f\",\"'daj\":\"1q\",\"'dan\":\"1f\",\"'daq\":\"1q\",\"'de \":\"1f\",\"'degh\":\"1q\",\"'den\":\"1f\",\"'di'\":\"1q\",\"'dib\":\"1q\",\"'dic\":\"1q\",\"'e \":\"1f\",\"'e'\":\"1q\",\"'e-\":\"q\",\"'ea\":\"l\",\"'ecc\":\"q\",\"'eco\":\"q\",\"'edi\":\"q\",\"'egh\":\"1q\",\"'ej\":\"1q\",\"'el \":\"1q\",\"'ele\":\"q\",\"'ell\":\"l\",\"'emb\":\"l\",\"'emp\":\"l\",\"'enf\":\"l\",\"'ente\":\"l\",\"'env\":\"l\",\"'epo\":\"q\",\"'equ\":\"q\",\"'era\":\"q\",\"'erb\":\"q\",\"'ero\":\"q\",\"'es \":\"l\",\"'esa\":\"q\",\"'ese\":\"q\",\"'esi\":\"q\",\"'essa\":\"l\",\"'est-\":\"l\",\"'exp\":\"l\",\"'ey\":\"1q\",\"'fb\":\"q\",\"'fh\":\"s\",\"'gh\":\"1q\",\"'go\":\"m\",\"'hy\":\"l\",\"'hé\":\"l\",\"'hô\":\"l\",\"'ibi\":4,\"'ici\":\"l\",\"'igi\":4,\"'ih\":\"1q\",\"'ijo\":4,\"'ika\":4,\"'iki\":4,\"'ils\":\"l\",\"'iman\":4,\"'ingl\":\"q\",\"'inté\":\"l\",\"'io \":\"q\",\"'iq\":\"1q\",\"'irne\":\"1q\",\"'isa\":4,\"'ish\":4,\"'itan\":4,\"'iv \":\"1q\",\"'ivy\":4,\"'iw\":\"1q\",\"'ja\":\"1q\",\"'ji\":\"1q\",\"'la \":\"1f\",\"'lah\":\"1q\",\"'law\":\"1q\",\"'les\":\"1q\",\"'li'\":\"1q\",\"'lij\":\"1q\",\"'ll\":\"m\",\"'lo\":\"1q\",\"'lu'\":\"1q\",\"'mah\":\"1q\",\"'me\":\"1q\",\"'miy\":\"1q\",\"'mo'\":\"1q\",\"'moh\":\"1q\",\"'nal\":\"1q\",\"'nd\":\"1f\",\"'nga\":\"1q\",\"'ni'\":\"1q\",\"'nin\":\"1f\",\"'nis\":\"1q\",\"'nu\":\"1f\",\"'ny\":\"d\",\"'nı\":\"1f\",\"'oce\":\"q\",\"'ogg\":\"q\",\"'oh\":\"1q\",\"'oi\":\"l\",\"'oj\":\"1q\",\"'ont\":\"l\",\"'op \":\"1q\",\"'ope\":\"q\",\"'oq\":\"1q\",\"'ora \":\"q\",\"'oro\":\"q\",\"'osp\":\"q\",\"'ott\":\"q\",\"'ou\":\"l\",\"'ov\":\"q\",\"'ox\":\"l\",\"'oy\":\"1q\",\"'oz\":\"q\",\"'pa\":\"1q\",\"'pu\":\"1q\",\"'q\":\"1q\",\"'ra\":\"1q\",\"'ri\":\"1q\",\"'ro\":\"1q\",\"'ru\":\"1q\",\"'s-\":\"m\",\"'sa\":\"1q\",\"'st\":\"m\",\"'t'\":\"m\",\"'t-\":\"d\",\"'ta'\":\"1q\",\"'tah\":\"1q\",\"'th\":\"m\",\"'tl\":\"1q\",\"'tw\":\"m\",\"'u'\":\"1q\",\"'ubu\":4,\"'ucc\":\"q\",\"'ud\":\"q\",\"'uf\":\"q\",\"'uj\":\"1q\",\"'uku\":4,\"'ult\":\"q\",\"'uma\":\"q\",\"'umo\":\"q\",\"'umu\":4,\"'umw\":4,\"'une\":\"l\",\"'ung\":\"q\",\"'unic\":\"q\",\"'uno\":\"q\",\"'uo\":\"q\",\"'up\":\"1q\",\"'uq\":\"1q\",\"'uv\":\"q\",\"'uy\":\"1q\",\"'va\":\"1q\",\"'ve \":\"m\",\"'vet\":\"1q\",\"'vil \":\"1q\",\"'vin\":\"1q\",\"'vo\":\"1q\",\"'wh\":\"m\",\"'wi\":\"1q\",\"'ya \":\"1f\",\"'yan\":\"d\",\"'ye \":\"1f\",\"'yi\":\"1f\",\"'yl\":\"1f\",\"'yı\":\"1f\",\"'à\":\"l\",\"'á\":\"p\",\"'â\":\"l\",\"'è \":\"q\",\"'èr\":\"l\",\"'éb\":\"l\",\"'éc\":\"l\",\"'éd\":\"l\",\"'ég\":\"l\",\"'éi\":\"s\",\"'él\":\"l\",\"'ém\":\"l\",\"'én\":\"l\",\"'ép\":\"l\",\"'éq\":\"l\",\"'ér\":\"l\",\"'ét\":\"l\",\"'év\":\"l\",\"'ê\":\"l\",\"'î\":\"l\",\"'ô\":\"l\",\"'ü\":\"1f\",\"'ı\":\"1f\",\"'œ\":\"l\",\"'ε\":\"w\",\"'π\":\"w\",\"'е\":17,\"'р\":\"x\",\"'юте\":19,\"'яз\":19,\"'яс\":19,\"'ята\":19,\"'ять\":19,\"'яч\":19,\"'ё\":17,\"'і\":17,\"'אי\":\"1h\",\"'בי\":\"1h\",\"'הא\":\"1h\",\"'ו\":\"1g\",\"'ז\":\"1g\",\"'י\":\"1g\",\"'ל\":\"1g\",\"'מ\":\"1g\",\"'נ\":\"1g\",\"'ס\":\"1g\",\"'ק\":\"1g\",\"'ר\":\"1g\",\"(-)\":\"1o\",\"(an\":\"m\",\"(as\":\"m\",\"(fo\":\"m\",\"(id\":\"t\",\"(ka\":\"1o\",\"(la\":\"1o\",\"(mi\":\"1o\",\"(ne\":\"1o\",\"(no\":\"m\",\"(og\":\"1n\",\"(or\":\"m\",\"(q\":\"p\",\"(r\":\"p\",\"(so\":\"q\",\"(th\":\"m\",\"(wh\":\"m\",\"(y\":\"o\",\"(z\":\"n\",\"(а\":18,\"(б\":18,\"(в\":18,\"(д\":18,\"(и\":18,\"(к\":18,\"(м\":18,\"(н\":18,\"(о\":18,\"(п\":18,\"(р\":18,\"(с\":18,\"(т\":18,\"(ا\":\"1j\",\"(ب\":\"1j\",\"(ف\":\"1j\",\"(م\":\"1j\",\"-$\":\"1g\",\"-'\":\"1f\",\"--a\":\"m\",\"-aal\":\"d\",\"-aar\":\"d\",\"-abo\":\"d\",\"-ade\":15,\"-ai \":15,\"-ak \":3,\"-aken\":3,\"-akh\":\"b\",\"-al \":15,\"-ane\":3,\"-apa \":\"b\",\"-ar \":15,\"-aral\":\"d\",\"-araw\":\"d\",\"-ari\":\"d\",\"-as-\":3,\"-asa\":\"d\",\"-asen\":3,\"-atas\":\"1n\",\"-au \":15,\"-awe\":3,\"-ayo\":\"d\",\"-bai\":\"b\",\"-bas \":\"l\",\"-bena\":\"b\",\"-bino\":\"1p\",\"-bir\":\"1n\",\"-bua\":\"b\",\"-buk\":\"b\",\"-by\":\"m\",\"-ce \":\"l\",\"-chu\":\"p\",\"-ci \":\"l\",\"-cô\":\"a\",\"-d-a\":3,\"-d-s\":3,\"-d-t\":3,\"-d-ye\":3,\"-da \":\"1n\",\"-dag\":\"d\",\"-dah\":\"d\",\"-dd\":3,\"-dé\":\"l\",\"-ea\":\"m\",\"-ee\":\"d\",\"-ef\":\"m\",\"-eh\":\"d\",\"-ek\":\"1o\",\"-ell\":\"l\",\"-ev\":\"m\",\"-ey\":\"m\",\"-fei\":\"p\",\"-ff\":3,\"-fk\":3,\"-gg\":3,\"-gv\":\"1o\",\"-ia\":\"p\",\"-ibi\":\"d\",\"-id \":3,\"-id-\":3,\"-if\":3,\"-ih\":3,\"-ii\":\"d\",\"-ik \":3,\"-ike\":3,\"-il \":\"l\",\"-ils\":\"l\",\"-im \":3,\"-ine\":3,\"-ing\":\"d\",\"-inu\":3,\"-ip\":\"d\",\"-iq\":3,\"-is \":3,\"-isa \":\"d\",\"-ise\":3,\"-isi\":\"d\",\"-it \":3,\"-ite\":3,\"-itt\":3,\"-iw \":3,\"-ix\":3,\"-iy\":3,\"-iz\":3,\"-jal\":\"b\",\"-je \":\"l\",\"-jj\":3,\"-k \":3,\"-k-\":3,\"-kad\":\"b\",\"-kam\":\"d\",\"-kano\":\"1p\",\"-kat\":\"b\",\"-kem\":3,\"-ken\":3,\"-kk\":3,\"-kn\":\"m\",\"-kup\":\"b\",\"-kur\":\"b\",\"-kv\":\"1o\",\"-l \":15,\"-lab\":\"1p\",\"-laki\":\"b\",\"-lhe\":\"p\",\"-lo \":\"p\",\"-log\":\"1p\",\"-los \":\"p\",\"-là\":\"l\",\"-lö\":\"1p\",\"-m'\":\"l\",\"-me \":\"p\",\"-mi \":15,\"-mid\":\"l\",\"-ml\":3,\"-mm\":3,\"-moi\":\"l\",\"-mu \":\"b\",\"-mè\":\"l\",\"-mê\":\"l\",\"-ne \":15,\"-nj\":\"1n\",\"-nk\":3,\"-nn\":3,\"-no \":\"p\",\"-noi\":\"p\",\"-nok\":\"1o\",\"-nolo\":\"1p\",\"-nos \":\"p\",\"-nou\":\"l\",\"-ns\":3,\"-nt\":3,\"-nw\":3,\"-ob\":\"1o\",\"-oc\":\"m\",\"-of\":\"m\",\"-oh\":11,\"-oj\":\"1o\",\"-ok\":\"1o\",\"-ow\":\"m\",\"-qe\":3,\"-qq\":3,\"-rn\":3,\"-ro \":\"1o\",\"-rr\":3,\"-sab\":\"d\",\"-sat\":\"b\",\"-sen \":3,\"-sf\":3,\"-sia\":\"b\",\"-sn\":3,\"-ss\":3,\"-t'\":\"l\",\"-t-a\":3,\"-t-e\":\"l\",\"-taf\":3,\"-tao\":\"d\",\"-taw\":3,\"-tb\":3,\"-tef\":3,\"-ten \":3,\"-ten-\":3,\"-tenn\":3,\"-teq\":3,\"-tess\":3,\"-tet\":3,\"-tf\":3,\"-tg\":3,\"-tib\":\"b\",\"-tik\":\"1p\",\"-tini\":3,\"-tk\":3,\"-tl\":3,\"-tn\":3,\"-toi\":\"l\",\"-tq\":3,\"-tse\":3,\"-tso\":\"d\",\"-tt\":3,\"-tu \":\"l\",\"-tz\":3,\"-tê\":\"l\",\"-u \":\"v\",\"-ub\":\"d\",\"-uf\":3,\"-ul \":15,\"-uu\":\"d\",\"-uw\":3,\"-vr\":\"r\",\"-vu\":11,\"-vă\":15,\"-w \":3,\"-wh\":\"m\",\"-wr\":\"m\",\"-ww\":3,\"-xe\":3,\"-y \":\"l\",\"-yef\":3,\"-yeg\":3,\"-yenn\":3,\"-yer\":3,\"-yes\":3,\"-yet\":3,\"-yi\":3,\"-yu\":3,\"-à\":\"l\",\"-á \":\"p\",\"-â\":\"l\",\"-ã\":\"p\",\"-ä\":\"1p\",\"-å\":\"z\",\"-ê\":\"l\",\"-í\":\"p\",\"-ó\":14,\"-ö\":14,\"-č\":3,\"-ı\":\"1f\",\"-ş\":15,\"-ε\":3,\"-берс\":\"1k\",\"-бъ\":16,\"-вис\":16,\"-голя\":16,\"-дъ\":16,\"-ке\":\"1l\",\"-къ\":16,\"-кы\":\"1k\",\"-ли\":18,\"-ло\":16,\"-малк\":16,\"-мл\":16,\"-мн\":16,\"-мое\":18,\"-нак\":16,\"-ни\":18,\"-ран\":16,\"-ско\":16,\"-тү\":\"1l\",\"-ум\":16,\"-ц\":18,\"-чт\":18,\"-ы\":18,\"-ю\":18,\"-як\":19,\"-і\":19,\"-ү\":\"1k\",\"-ә\":\"1k\",\"-ө\":\"1k\",\"-א\":\"1g\",\"-ב\":\"1g\",\"-ג\":\"1g\",\"-ד\":\"1g\",\"-ה\":\"1g\",\"-ז\":\"1g\",\"-ח\":\"1g\",\"-ט\":\"1g\",\"-י\":\"1g\",\"-כ\":\"1g\",\"-ל\":\"1g\",\"-מ\":\"1g\",\"-נ\":\"1g\",\"-ס\":\"1g\",\"-ע\":\"1g\",\"-פ\":\"1g\",\"-ק\":\"1g\",\"-ר\":\"1g\",\"-ש\":\"1g\",\"-ת\":\"1g\",\"a''\":\"1q\",\"a'b\":\"1q\",\"a'c\":\"1q\",\"a'di\":\"1q\",\"a'e\":\"1q\",\"a'h\":\"1q\",\"a'la\":\"1q\",\"a'le\":\"1q\",\"a'm\":\"1q\",\"a'ng\":\"1q\",\"a'ni\":\"1q\",\"a'o\":\"1q\",\"a'p\":\"1q\",\"a'r\":\"1q\",\"a't \":\"d\",\"a'ta\":\"1q\",\"a'v\":\"1q\",\"a'w\":\"1q\",\"a'y \":\"d\",\"a'ya\":\"1f\",\"a-ap\":\"b\",\"a-as \":3,\"a-ch\":\"p\",\"a-d \":3,\"a-fe\":\"p\",\"a-i \":15,\"a-ib\":\"d\",\"a-me\":\"p\",\"a-no\":\"p\",\"a-o \":\"p\",\"a-pu\":\"b\",\"a-s \":3,\"a-se \":\"p\",\"a-ten\":3,\"aa-\":11,aaal:\"d\",aaar:\"d\",aabo:\"d\",aabu:\"d\",aae:11,aaga:\"d\",aagd:\"r\",aagt:\"r\",aaid:\"r\",aaie:\"r\",aait:\"r\",aakt:\"r\",aalal:\"d\",aald:\"r\",aalf:\"r\",aall:11,aalse:\"1c\",aamd:\"r\",aamu:11,\"aang \":\"d\",aanny:\"b\",\"aano \":\"d\",aansa:11,aanse:\"r\",aanud:\"1c\",aanw:\"r\",aapan:\"1c\",aapt:\"r\",aapu:11,\"aard \":\"r\",aarda:\"r\",aardb:\"r\",aarde:\"r\",aarhe:\"r\",aarl:\"r\",aaroo:1,\"aars \":\"r\",aarto:\"r\",aarz:\"r\",\"aasa \":\"1c\",aasap:\"r\",\"aast \":\"r\",\"aats \":\"r\",aatst:\"r\",aatta:11,aau:\"1b\",aaw:\"d\",aayo:\"d\",aaş:\"1f\",\"aba-\":3,abae:\"d\",abage:4,\"abah \":\"1f\",\"abai \":\"1b\",abair:\"s\",abaja:\"o\",abajo:\"o\",abany:4,abavy:4,abaye:4,abbas:\"q\",abbia:\"q\",abbt:10,abea:\"t\",abeb:\"t\",abejo:\"1b\",abemu:\"t\",abeo:\"t\",aberk:3,abesn:\"t\",abeza:\"o\",abf:\"n\",abg:\"n\",abib:\"d\",abica:\"t\",abicu:\"y\",abih:\"d\",abish:4,abizi:4,abka:\"b\",ablah:\"y\",ablak:14,ablar:\"o\",ably:\"m\",\"abob \":\"1p\",aboj:\"1o\",\"abom \":\"1p\",abony:4,abov:\"m\",\"abrá \":\"o\",abub:\"d\",abuh:\"d\",abui:\"t\",aburr:\"o\",\"abut \":3,abye:\"z\",abyst:\"u\",abzu:\"n\",abã:\"p\",abäl:\"1p\",abè:\"l\",abéi:\"o\",abíd:\"u\",abók:13,abö:\"1p\",abý:\"u\",abā:\"1d\",abă:15,abē:\"t\",abū:\"1b\",acchi:\"q\",aceas:15,acee:15,\"acej \":\"y\",acela:15,acev:\"q\",achow:\"1a\",achri:\"n\",achuc:\"p\",achè:\"l\",acii:\"1o\",acir:3,ación:\"o\",acj:\"1a\",ackad:10,ackt:\"n\",acoj:\"1o\",acope:15,acow:\"1a\",acsor:14,acui:\"t\",aculu:\"t\",acv:\"1o\",acz:\"1a\",acã:\"p\",acía:\"o\",acò:\"q\",acă:15,acą:\"1a\",acē:\"t\",acī:\"1d\",acı:\"1f\",\"ad's\":\"m\",\"ad-n\":3,adah:\"b\",adaki:\"1f\",adaku:\"b\",adamu:\"b\",adamy:\"1n\",adany:\"b\",adary:\"1b\",adaş:\"1f\",adei:\"p\",\"adek \":\"1a\",adeo:\"t\",adero:\"o\",\"adev \":\"1q\",adhu:\"t\",adigv:\"z\",adió:\"o\",adiš:\"v\",\"adl \":\"u\",\"adni \":14,adnie:\"1a\",\"adol \":\"y\",adomo:\"1a\",adong:\"d\",adsa:\"y\",adsm:\"1d\",adsu:\"t\",\"adta \":14,\"adta'\":\"1q\",adtah:\"1q\",adtam:14,aduse:\"1c\",adust:\"1c\",advar:\"z\",adyg:\"1n\",adyk:\"1n\",adyl:\"1n\",adym:\"1n\",adyn:\"1n\",adzie:\"1a\",adzw:\"1a\",adás:14,adáš:\"u\",adâ:15,adã:\"p\",adú:\"o\",adā:\"1d\",adę:\"1a\",adī:\"1d\",adım:\"1f\",adır:\"1f\",adž:\"1b\",aeb:\"t\",\"aec \":\"t\",aeca:\"t\",aece:\"t\",aeci:\"t\",aecu:\"t\",aede:\"t\",aef:\"t\",aega:\"1c\",aege:\"t\",aegl:\"1c\",aegn:\"t\",aegr:\"t\",aegu:\"1c\",aegy:\"t\",aeh:11,aeil:\"s\",aelu:\"t\",aeng:\"d\",aeni:\"t\",aep:\"t\",aeq:\"t\",aerat:\"1c\",\"aese \":\"q\",aeso:\"t\",aesta:\"t\",aeti:\"t\",aetu:\"t\",\"af-\":3,afab:\"1o\",\"afag \":3,afash:4,afbr:\"z\",afea:15,afej:\"1o\",afero:\"1o\",affar:\"q\",affee:\"n\",afft:\"n\",afgel:\"r\",afija:\"1d\",\"afis \":\"1o\",afise:4,afj:3,afna:13,afni:13,afrai:\"m\",afsc:\"r\",afsk:\"z\",afste:\"z\",aftl:\"n\",afue:\"o\",afí:\"o\",afó:\"o\",afür:\"n\",\"ag-e\":\"d\",agaa:\"d\",agaga:\"d\",agaid:\"1d\",agaim:\"b\",agalb:\"1b\",agawi:\"d\",\"agay \":\"d\",agazz:\"q\",agbe:\"d\",agede:\"z\",ageza:4,aggia:\"q\",aggio:\"q\",aggiu:\"q\",\"agha'\":\"1q\",aghah:\"d\",aghaj:\"1q\",agho:\"1q\",aginn:13,agiy:4,agiz:4,agka:\"d\",agki:\"d\",agku:\"d\",aglak:\"d\",aglal:\"d\",\"agli \":\"q\",aglia:\"q\",agnam:\"t\",agnum:\"t\",agogh:\"q\",agoj:\"1o\",agoms:\"1p\",agong:\"d\",agpa:\"d\",agpu:\"d\",agrab:\"1o\",agree:\"m\",agsak:\"d\",agsal:\"d\",agsas:\"d\",agsi:\"d\",\"agst \":\"n\",agsu:\"d\",agtan:\"d\",agtat:\"d\",agtig:\"z\",agts:\"d\",agtu:\"d\",agty:\"1n\",aguas:\"o\",agula:\"d\",aguru:4,agynd:\"1n\",agyob:14,agyt:14,agát:14,agã:\"p\",\"agé \":\"l\",agê:\"p\",agì:\"q\",\"agó \":\"o\",agön:\"1p\",agü:\"o\",agā:\"1d\",agă:15,agę:\"1a\",\"ah-\":\"b\",\"ahab \":\"1c\",\"ahad \":\"1c\",ahang:\"d\",ahans:11,ahapo:\"d\",aharl:\"1n\",ahary:\"1n\",ahasa:\"b\",ahav:\"1c\",\"ahay \":\"d\",ahbe:\"1q\",ahbo:\"1q\",ahde:11,ahdo:11,ahea:\"m\",ahera:4,ahet:\"1c\",ahg:\"1q\",ahig:\"d\",ahih:\"d\",ahip:\"1f\",ahiri:4,ahiw:\"d\",ahkan:\"b\",\"ahl \":\"n\",ahlah:\"1q\",\"ahm \":\"n\",ahmeh:\"1q\",ahnis:\"1q\",ahnu:\"n\",ahny:\"b\",\"ahon \":\"d\",ahoy:\"d\",ahož:\"y\",ahq:\"1q\",\"ahr \":\"n\",ahrad:\"u\",\"ahre \":\"n\",ahse:\"1f\",ahtn:\"1c\",ahts:\"1c\",ahtu:11,ahub:\"d\",ahui:\"b\",ahum:\"b\",\"ahun \":\"b\",ahur:4,ahvad:\"1q\",\"ahve \":\"1f\",ahvia:11,ahyr:\"1n\",\"ahí \":\"o\",ahý:\"u\",ahă:15,\"ai-j\":\"l\",aial:\"q\",aibh:\"s\",aibi:\"d\",aider:\"l\",aidro:\"1d\",aidą:\"1b\",aient:\"l\",aigd:\"d\",\"aigh \":\"s\",aigt:\"1b\",aigz:\"1d\",aiht:11,aiin:\"d\",\"aik-\":\"b\",aikal:11,aikea:11,aiken:11,aikki:11,aikro:\"1b\",\"aiks \":\"1d\",aikt:\"1b\",aikut:11,aiky:\"1b\",aiką:\"1b\",\"aill \":\"s\",ailí:\"s\",aimis:11,aimy:\"1b\",aimé:\"l\",ainci:\"s\",ainda:\"p\",ained:\"m\",aing:\"d\",ainh:\"p\",\"ainn \":\"s\",ainne:\"s\",ainoa:11,ainsi:\"l\",ainul:\"1c\",ainuo:\"1b\",ainya:\"b\",\"aip \":\"1b\",aipn:\"1d\",airde:\"s\",airg:\"s\",airp:\"m\",airr:\"p\",\"airt \":\"s\",airuo:\"1b\",airí:\"s\",\"ais-\":\"l\",aisai:\"l\",aisel:11,aiset:11,aisir:\"l\",aisn:\"1d\",aisse:\"l\",aissé:\"l\",aiste:11,aisv:\"1b\",\"ait-\":\"l\",aithe:\"s\",aitn:\"s\",aitta:11,aity:\"1b\",aitä:\"1c\",\"aiu \":\"p\",aiut:\"q\",aixa:\"p\",aixo:\"p\",aiya:\"d\",aizv:\"1d\",aiç:\"p\",aič:\"1b\",aiš:\"1b\",aiž:\"1b\",\"aj'\":\"1q\",\"aja'\":\"1q\",\"ajab \":\"1c\",\"ajag \":\"1d\",ajbe:\"1q\",\"ajd \":14,ajemn:\"1a\",ajiem:\"1d\",ajina:\"y\",\"ajme \":\"y\",\"ajn \":\"1o\",ajoi:11,ajq:\"1q\",ajti:\"1o\",ajuda:\"p\",\"ajul \":15,ajung:15,ajute:15,ajyk:\"1n\",aján:14,aját:14,ajä:11,ajé:\"o\",ajím:\"u\",\"ajít \":\"u\",ajö:14,ają:\"1a\",ajči:\"y\",aję:\"1a\",ajš:\"y\",\"ak-d\":3,\"ak-h\":\"b\",akaba:\"d\",\"akah \":\"b\",akain:\"d\",akaka:\"d\",akaki:\"d\",akamr:3,akany:4,akarj:14,akaw:\"d\",akazi:4,akdy:\"1n\",akeel:\"1c\",akhi:\"b\",akiau:\"1b\",\"akie \":\"1a\",akieg:\"1a\",akika:\"1f\",akila:\"d\",akipa:\"d\",akkl:13,akkur:12,aklak:\"d\",aklau:\"1b\",aklik:1,aknad:10,aknya:\"b\",\"ako'\":\"d\",akome:4,akong:\"d\",akora:4,\"akou \":\"u\",akové:\"u\",akoze:4,akrát:\"u\",aksaa:11,akud:3,akuh:\"d\",akuka:\"b\",akund:4,akuru:4,\"akut \":\"b\",akvie:\"1b\",akwi:4,akyan:\"d\",\"akyk \":\"1b\",akyky:\"1n\",akyl:\"1n\",akyn:\"1n\",akys:\"1b\",akyt:\"1b\",akáv:\"y\",akä:11,akę:\"1b\",\"al-i\":3,\"al-n\":3,alaca:\"1f\",aladı:\"1f\",alae:\"t\",alagi:\"d\",alapi:\"d\",aları:\"1f\",albon:\"1o\",albos:\"1b\",\"albu \":\"1b\",aldaj:\"1q\",aldet:\"z\",aldie:\"1d\",aldon:\"1o\",\"alds \":13,aldur:13,\"aldy \":\"1n\",aldym:\"1n\",aldyr:\"1n\",\"aldı \":\"1f\",aldım:\"1f\",aldır:\"1f\",alebo:\"y\",alege:15,alegh:\"1q\",aleh:11,aleid:\"1b\",alemá:\"o\",aleur:\"l\",alfer:\"1o\",alfru:\"1o\",\"alge \":\"1c\",\"algt \":\"z\",algum:\"p\",algué:\"p\",algy:\"1b\",\"alha \":\"p\",alhar:\"p\",alhel:\"1o\",alheu:\"l\",\"alho \":\"p\",aliit:\"d\",alijo:\"1b\",alimu:\"d\",aliq:\"t\",\"alit-\":3,\"aliu \":\"1b\",aliwa:\"d\",alizz:\"q\",alió:\"o\",\"alje \":\"v\",aljun:\"1o\",\"all'i\":\"q\",allai:\"l\",alleb:\"r\",allei:\"n\",allga:14,\"allá \":\"o\",allí:\"o\",almag:\"1n\",almay:\"1f\",almul:\"1o\",alnie:\"1a\",\"alny \":\"1a\",aloda:\"1d\",alodu:\"1d\",aloit:11,\"aloj \":\"1o\",\"alom \":14,alors:\"l\",alpu:\"1o\",alque:\"p\",alrea:\"m\",alsat:\"1o\",alsc:\"n\",alstu:\"r\",\"alt-\":3,altid:\"z\",altij:\"r\",altyd:1,\"altı \":\"1f\",aluan:11,\"alud \":\"o\",aludt:14,aluse:\"1c\",alveg:13,alvez:\"p\",alvf:\"z\",alym:\"1n\",alyn:\"1n\",alyv:\"1b\",aláb:14,alád:14,alál:14,alã:\"p\",alädi:\"1p\",\"além \":\"p\",alê:\"p\",\"alí \":\"o\",alò:\"q\",alós:14,alô:\"p\",alā:\"1d\",\"alą \":\"1b\",alč:\"1b\",alī:\"1d\",\"alı \":\"1f\",alıy:\"1f\",alň:\"1n\",\"am-d\":3,amady:\"1n\",amagy:\"1n\",amahe:4,amahi:3,amaly:\"1n\",amax:\"t\",\"amay \":\"d\",amayn:3,ambro:\"1o\",ambé:\"p\",amci:3,amdam:\"d\",ameer:\"1c\",ameq:3,amery:\"1a\",ameň:\"y\",amhet:10,amhá:\"s\",amich:\"q\",amicu:\"t\",amiki:\"1o\",amilj:10,aminh:\"p\",\"amio \":\"1o\",amleg:13,amly:\"1n\",ammá:13,amny:\"b\",\"amo-\":\"p\",\"amou \":\"p\",amoy:\"d\",amqu:\"t\",amsy:\"1n\",amtid:10,amub:4,amurt:3,amvad:\"1q\",amwe:4,\"amwo \":4,\"amye \":4,amyz:\"1n\",amzu:3,\"am \":\"1o\",amál:13,amára:\"s\",amâ:15,amã:\"p\",amät:\"y\",amå:10,amè:\"l\",amíl:\"p\",amò:\"q\",\"amó \":\"o\",amül:\"1p\",amē:\"1d\",amę:\"1a\",\"amı \":\"1f\",amın:\"1f\",amıy:\"1f\",amış:\"1f\",\"an't\":\"m\",\"an-i\":3,\"an-j\":\"b\",\"an-n\":3,anaca:\"1f\",\"anak-\":\"b\",anang:\"d\",anchm:\"n\",anciá:14,anció:\"o\",andhe:\"z\",andiu:\"t\",andą:\"1b\",anect:3,aneze:4,anfan:\"n\",anfö:10,\"ang-a\":\"d\",angei:\"p\",angso:\"z\",\"anh \":\"a\",\"anho \":\"p\",\"ani'\":\"1q\",aniem:\"1a\",anije:\"v\",animu:\"t\",\"anir \":13,\"aniu \":\"1a\",anjem:\"v\",anjer:\"o\",anjin:\"b\",anjon:\"1o\",ankv:\"1o\",anlad:\"1f\",anlah:\"b\",anlam:\"1f\",anlat:\"1f\",anlay:\"1f\",anled:10,anlän:10,anlı:\"1f\",anmad:\"1f\",anmag:\"1n\",anmak:\"1f\",anmay:\"1f\",\"anmu \":\"b\",annai:\"s\",annak:14,annf:13,annh:12,annsy:12,\"annt \":\"n\",annte:\"n\",annut:11,annya:\"b\",annyi:14,anné:\"l\",\"anob \":\"1p\",anobs:\"1p\",\"anoj \":\"1o\",anoms:\"1p\",anong:\"d\",anoon:\"d\",anow:\"1a\",ansd:\"1o\",anseo:\"s\",anski:\"v\",anssi:11,ansuz:\"1n\",answ:\"m\",ansän:\"1p\",antoo:\"r\",anuam:\"t\",\"anud \":\"1c\",anult:14,\"anur \":13,anusi:\"b\",\"anwa \":3,anybo:\"m\",\"anye \":4,anyna:\"1n\",anyny:\"1n\",anyp:\"1n\",\"anz \":\"n\",anzat:\"q\",anzen:\"n\",anzia:\"q\",\"anzo \":\"q\",anzó:\"o\",anzö:\"n\",anã:\"p\",anæ:\"t\",anê:\"p\",anā:\"1d\",ană:15,anču:\"1d\",anī:\"1d\",anım:\"1f\",anū:\"1b\",\"ao'y\":\"d\",aoc:\"v\",aoh:\"m\",aoin:\"s\",aoir:\"s\",\"aois \":\"s\",aoj:\"1o\",aoks:\"1c\",\"aol \":\"s\",aond:\"p\",aone:\"t\",aong:\"d\",aoni:\"t\",aonn:\"s\",aono:\"1o\",aont:\"s\",\"aor \":\"s\",aota:\"1c\",aoz:\"y\",aoč:\"v\",\"ap-\":\"d\",apaca:\"1f\",apaix:\"p\",apang:\"d\",apapu:\"b\",apbe:\"1q\",\"apet \":12,apeva:\"q\",apfu:4,apga:\"1b\",aphan:\"1n\",apisc:\"q\",apiy:\"d\",apja:14,apmad:\"1f\",apmak:\"1f\",apmam:\"1f\",apman:\"1f\",apmas:\"1f\",apmay:\"1f\",apnis:\"1d\",\"apoi \":15,apome:\"u\",appon:\"q\",appri:\"l\",appé:\"l\",apraw:\"1a\",aproa:15,apsal:\"u\",apw:\"d\",apyn:\"1n\",\"apá \":\"o\",apán:14,apäe:\"1c\",apäl:\"1p\",apís:\"y\",apön:13,apā:\"1d\",apą:\"1b\",apš:\"1b\",aqen:3,aqh:\"1q\",aqm:\"1q\",aqn:\"1q\",aqo:\"1q\",aqqal:3,aqqay:\"1q\",aqr:3,aquam:\"t\",\"aqui \":\"p\",aquí:\"o\",aqw:\"1q\",\"ar-b\":\"b\",\"ar-m\":\"p\",\"ar-se\":\"p\",\"ar-t\":\"p\",aracc:\"q\",aradt:14,araku:4,aranč:\"y\",arapy:\"1n\",arary:\"1n\",arasy:\"1n\",araya:\"1f\",araşa:\"1n\",araşm:\"1n\",arbre:\"l\",arché:\"l\",ardim:\"p\",ardz:\"1a\",ardı:\"1f\",arebb:\"q\",arecí:\"o\",arefu:\"m\",areiz:\"1d\",aremp:11,arfoi:\"l\",\"arft \":13,arfö:10,\"argh \":\"1q\",ariau:\"1b\",aridu:\"1c\",ariji:\"v\",arili:\"d\",aripa:\"b\",aritu:\"t\",ariya:4,arié:\"l\",\"arje \":10,\"arly \":\"m\",arlé:\"l\",armag:\"1n\",arnar:13,arned:\"m\",arnin:\"m\",arnos:\"o\",arnya:\"b\",arocc:\"q\",arode:\"y\",arody:\"1b\",\"aroj \":\"1o\",\"arok \":14,arolo:\"1o\",aroor:1,aroze:\"u\",arraw:3,arsy:\"1n\",\"arsz \":14,artwi:\"1a\",arua:\"d\",arusn:\"b\",arvad:\"1c\",arvit:11,aryj:\"1b\",aryma:\"1n\",aryny:\"1n\",aryp:\"1n\",arzy:\"1a\",arà:\"q\",aræ:\"t\",arè:\"l\",arì:\"q\",arík:13,arò:\"q\",arü:\"n\",\"arā \":\"1d\",ară:15,arče:\"y\",arē:\"1d\",\"arī \":\"1d\",arış:\"1f\",aršo:\"1d\",arū:\"1b\",arž:\"1b\",\"as-n\":3,\"as-te\":3,asafa:3,asany:\"b\",asapp:\"r\",asaru:3,asbuk:\"1p\",\"asc \":\"s\",ascia:\"q\",ascol:\"q\",ascor:\"q\",asegg:3,aselk:3,aselm:3,\"asen-\":3,asesi:\"o\",asew:3,asfo:\"q\",ashak:4,\"ashe \":4,ashik:4,ashit:4,\"asid \":\"1c\",asigi:\"1o\",\"asih \":\"b\",asiru:\"1b\",asiw:3,asió:\"o\",asji:\"b\",asks:\"m\",askt:12,\"asla \":\"1f\",asled:\"y\",aslou:\"u\",aslyn:\"1n\",asnas:3,asnij:\"v\",asoj:\"1o\",aspen:3,aspic:\"t\",assei:\"p\",asst:\"n\",assz:14,\"assé \":\"l\",astea:15,astne:\"y\",astā:\"1d\",astę:\"1a\",asub:\"1c\",\"asuk \":\"b\",asuu:11,\"asyn \":\"1n\",asynd:\"1n\",asyny:\"1n\",aszt:14,asä:11,asög:10,asă:15,asč:\"1b\",asę:\"1a\",asī:\"1d\",asına:\"1f\",asť:\"y\",\"at'l\":\"m\",\"at-o\":15,atade:10,\"ataj \":\"1o\",atao:\"d\",atapo:\"d\",atasy:\"1n\",atatu:4,ataw:\"d\",atda:\"1n\",atege:4,ateic:\"1d\",ateit:\"1b\",\"atej \":\"y\",ateka:4,atelj:\"v\",ately:\"m\",atemi:\"q\",atevi:\"q\",atgr:\"1d\",athai:\"s\",\"atid \":\"d\",atink:\"1b\",atinn:13,atiw:\"d\",\"atki \":\"1a\",atkus:11,atlei:\"1b\",atlon:\"d\",\"atn \":13,atneš:\"1b\",\"atno \":\"v\",atnya:\"b\",atní:\"u\",\"atoj \":\"1o\",\"atot \":14,atott:14,atpak:\"1d\",atqu:\"t\",atrab:\"d\",atroj:\"1o\",atrum:\"t\",\"ats-\":\"l\",atsar:\"1b\",\"atse \":4,atser:10,atsik:\"1b\",atsip:\"1b\",atsis:\"1b\",atsit:\"1b\",atste:\"r\",attiv:\"q\",attn:10,attom:11,attuo:\"t\",attut:\"q\",atud:\"1c\",atuke:\"1c\",\"atul \":15,atutu:\"d\",atuur:\"r\",atuw:\"d\",atvy:\"1b\",atwo:\"1a\",atych:\"1a\",atyn:\"1n\",atyt:\"1b\",\"atz \":\"n\",atze:\"n\",atâ:15,atæ:\"t\",atè:\"l\",atím:\"u\",atín:\"o\",atô:\"p\",atø:\"z\",atül:\"1p\",atās:\"1d\",ată:15,atč:\"u\",atī:\"1d\",\"atı \":\"1f\",atıl:\"1f\",atır:\"1f\",atıy:\"1f\",aual:\"1c\",\"aub \":\"n\",auben:\"n\",aubs:\"n\",aubt:\"n\",aubu:\"d\",\"auc \":\"1d\",\"auch \":\"n\",aucht:\"n\",aucou:\"l\",aucun:\"l\",audad:\"p\",audoj:\"1b\",audon:\"1b\",audz:\"1d\",audá:\"p\",audž:\"1b\",\"aue \":\"n\",auen:\"n\",aufen:\"n\",aufg:\"n\",aufm:\"n\",auft:\"n\",augai:\"1b\",augas:\"1b\",augen:\"n\",augia:\"1b\",augo:\"1b\",\"augs \":\"1d\",augst:\"1d\",augun:13,\"auh \":\"b\",aui:\"n\",auji:\"1b\",auju:\"1b\",aují:\"y\",aują:\"1b\",\"auk \":\"1b\",aukin:\"1b\",aukk:11,aukse:11,aukti:\"1b\",aukum:\"1d\",aulj:\"1c\",auly:\"1b\",aunqu:\"o\",auns:\"1d\",auo:11,auq:\"l\",aurai:\"l\",aurin:11,ausf:\"n\",ausg:\"n\",ausim:\"1b\",ausol:\"q\",ausr:\"n\",ausw:\"n\",ausy:\"1b\",auszu:\"n\",autre:\"l\",autt:11,auty:\"m\",autā:\"1d\",auvai:\"l\",auvre:\"l\",\"auw \":\"r\",auwi:\"d\",auza:15,auš:\"1b\",auž:\"1b\",\"av'\":\"1q\",\"ava-\":\"p\",avao:\"v\",\"avau \":\"1b\",avdaj:\"1q\",avdep:\"y\",avea:15,aveb:\"1o\",avelm:\"p\",averu:\"t\",aveu:\"l\",avev:\"q\",\"avez \":\"l\",avf:10,avhe:12,avib:\"t\",aviem:\"1d\",aviu:\"t\",aviš:\"v\",avnen:\"z\",avno:\"v\",\"avné \":\"y\",avní:\"u\",avoa:15,avod:\"y\",avog:\"1b\",avoir:\"l\",avond:\"r\",avons:\"l\",avp:\"1o\",\"avra \":\"p\",avras:\"p\",avrei:\"q\",\"avs \":\"1d\",avsk:10,avuze:4,avve:\"q\",avvi:\"q\",avvo:\"q\",avyi:4,avyk:\"1b\",avyu:4,avæ:\"z\",avél:13,avò:\"q\",avô:\"p\",avā:\"1d\",avă:15,avē:\"1d\",\"aw' \":\"1q\",awab:\"b\",awang:\"d\",awaw:\"d\",\"awda \":\"1a\",\"awdi'\":\"1q\",awdo:\"1a\",awel:3,awen:3,awh:\"m\",awia:\"1a\",awie:\"1a\",\"awla \":3,awlan:3,awlen:3,\"awn \":\"m\",\"awo \":\"1a\",awp:\"1q\",\"aws \":\"m\",awsa:3,awsi:3,\"awt \":3,\"awy \":\"1a\",axos:\"t\",axp:\"m\",axr:3,axx:3,axy:\"m\",axz:3,\"ay' \":\"1q\",\"ay's\":\"m\",\"ay-r\":\"d\",ayabi:\"1f\",ayac:\"1f\",\"ayah \":\"b\",ayap:\"d\",ayari:\"d\",\"ayaw \":\"d\",\"aybe \":\"m\",aybet:\"1f\",\"ayel \":3,ayenn:3,aying:\"m\",ayj:\"m\",aylit:3,aynu:3,ayong:\"d\",ayop:\"d\",ayq:\"1q\",ayroo:\"d\",aysk:\"d\",aytan:\"1q\",ayud:\"o\",ayuh:\"d\",ayus:\"d\",ayv:\"1f\",ayz:3,ayá:\"o\",\"ayé \":\"l\",ayó:\"o\",ayú:\"o\",ayın:\"1f\",ayır:\"1f\",azdag:14,azekk:3,azew:3,azj:\"1a\",\"azla \":\"1f\",azlik:\"v\",azly:\"1n\",azoj:\"1o\",aztán:14,azum:\"v\",azér:14,azón:\"o\",azú:\"o\",aã:\"p\",aä:11,aças:\"p\",açon:\"l\",açu:\"p\",açy:\"1n\",açı:\"1f\",aè:\"l\",aíc:\"o\",aío:\"s\",aî:\"l\",aïd:\"l\",añad:\"o\",añan:\"o\",añar:\"o\",añas:\"o\",añe:\"o\",añi:\"o\",año:\"o\",\"aó \":\"p\",aón:\"o\",aö:14,\"aú \":\"p\",aúl:\"o\",aún:\"o\",aý:\"1n\",\"ać \":\"1a\",ačiat:\"y\",\"ačin \":\"v\",ačno:\"v\",ačun:\"v\",ađ:\"v\",ağım:\"1f\",ağını:\"1f\",ağır:\"1f\",ağız:\"1f\",aı:\"1l\",ał:\"1a\",ań:\"1a\",aşad:\"1f\",aşd:\"1n\",aşgal:\"1n\",aşk:\"1f\",aşlar:\"1f\",aşte:15,\"aşı \":\"1f\",aşın:\"1f\",aŭ:\"1o\",ažad:\"1b\",ažas:\"1b\",ažem:\"v\",ažeš:\"v\",ažia:\"1b\",\"ažil \":\"u\",ažin:\"1b\",ažka:\"1b\",ažké:\"y\",ažno:\"v\",ažt:\"u\",ažus:\"1b\",\"aží \":\"u\",á:\"a\",ã:\"a\",aγ:3,aε:3,\"b' \":\"n\",\"b'a\":\"1q\",\"b'e\":\"1q\",\"b-d\":3,\"b-i\":3,\"b-l\":\"1p\",\"b-n\":3,babaj:4,babam:\"1f\",babar:4,badik:\"1p\",badus:\"1c\",baen:\"d\",bagai:\"b\",bagay:\"d\",bagen:4,\"bagi \":\"b\",bagir:4,bagla:\"1n\",bagli:\"q\",\"bago \":\"d\",bagon:\"d\",bahas:\"b\",bahir:4,bahk:\"b\",bahme:\"1q\",baho:\"d\",bahs:\"1f\",bahwa:\"b\",\"bair \":\"s\",bairt:\"s\",baix:\"p\",bajad:\"o\",bajan:\"o\",bajar:\"o\",bajó:\"o\",bakom:10,balha:\"p\",balho:\"p\",balid:\"1p\",baly:\"1n\",bambi:\"q\",bamu:\"t\",banch:\"q\",bandy:\"1b\",banh:\"p\",banii:15,banje:4,bansa:\"d\",banza:4,bapa:\"b\",barab:4,barad:\"1n\",barir:4,barmy:\"1n\",\"baru \":\"b\",barát:14,barý:\"1n\",basha:4,bası:\"1f\",batk:\"b\",baue:\"n\",\"baum \":\"n\",bavye:4,bawah:\"b\",bayb:\"d\",bayel:3,bayli:3,bañ:\"o\",bağı:\"1f\",başg:\"1n\",başı:\"1f\",baš:\"v\",baž:\"1b\",bbai:\"q\",bbast:\"q\",bbd:3,\"bbe'\":\"1q\",bbero:\"q\",\"bbia \":\"q\",bbiam:\"q\",bbiat:\"q\",bbio:\"q\",bblic:\"q\",\"bbo \":\"q\",bbogh:\"1q\",bbric:\"q\",bci:\"1a\",bcy:\"1a\",\"bdaj \":\"1q\",bds:\"m\",bdy:\"1b\",\"be'l\":\"1q\",\"be'n\":\"1q\",\"be't\":\"1q\",bebat:\"t\",becam:\"m\",becau:\"m\",becom:\"m\",bedn:\"v\",bedst:\"z\",beei:\"n\",beel:\"r\",begen:\"1n\",begit:\"b\",beids:12,beijo:\"p\",beim:\"n\",being:\"m\",beite:\"n\",\"bej \":\"1q\",bejd:\"z\",bejer:\"1n\",bejta:\"1q\",beloo:\"r\",belum:\"b\",belän:\"1k\",bemus:\"t\",benar:\"b\",bence:\"1f\",benne:14,benod:1,benut:\"n\",berap:\"b\",berik:\"b\",berip:\"1n\",berit:\"b\",berje:\"1n\",berpi:\"b\",berät:10,berí:\"o\",berý:\"1n\",besig:1,beske:\"z\",beskj:12,beslo:\"r\",besne:\"t\",besva:\"z\",besvi:10,besz:14,beteg:14,betj:\"z\",betwe:\"m\",beure:\"r\",bevei:\"1b\",bevin:\"r\",bevu:\"q\",beyy:3,\"beza \":\"o\",bezah:\"n\",bezbe:\"v\",bezon:\"1o\",beä:\"n\",beç:\"p\",beë:\"r\",beï:\"r\",beć:\"v\",\"beş \":\"1f\",beža:\"y\",beží:\"y\",bfa:\"n\",\"bg \":3,bgl:\"n\",\"bha'\":\"1q\",bhai:\"s\",bhar:\"s\",bhea:\"s\",bhf:\"s\",bhi:\"t\",bhl:\"s\",bhr:\"s\",bhua:\"s\",bhur:\"s\",bhá:\"s\",bhä:\"n\",bhí:\"s\",\"bi' \":\"1q\",\"biad \":\"1a\",biare:\"q\",biark:\"b\",biasa:\"b\",biato:\"q\",biau:\"1b\",biay:\"b\",bibon:4,bibu:\"t\",bicam:\"t\",bicc:\"q\",bicei:15,\"bicu \":\"y\",bicul:\"t\",biect:15,biega:\"1a\",biell:\"1c\",bielu:\"1c\",biend:\"o\",biern:\"o\",bierz:\"1a\",bietj:1,bieza:\"1d\",biež:\"1d\",bifa:4,bigan:\"d\",bigay:\"d\",bigg:\"m\",bigh:\"1q\",bigir:4,bigli:\"q\",bigy:\"d\",bihi:\"d\",biit:\"t\",bijat:\"1q\",biji:\"1d\",bijn:\"r\",bijt:\"r\",biju:\"1d\",bikor:4,bikun:4,bildo:\"1o\",bilg:\"1f\",biliy:\"1f\",bilk:\"b\",bilmi:\"1f\",bilý:\"1n\",bimu:\"t\",binab:\"d\",binig:\"d\",bink:\"1b\",binob:\"1p\",binol:\"1p\",binom:\"1p\",binos:\"1p\",bintu:4,binö:\"1p\",bior:\"1a\",\"biq \":\"1q\",biqa:\"1q\",\"bir-\":\"1n\",birab:4,birah:4,birak:4,birb:\"1f\",birdo:\"1o\",birli:\"1f\",birot:\"t\",birou:15,birre:\"q\",bisak:\"b\",bissc:\"n\",\"bist \":\"n\",bisy:\"d\",\"bisz \":\"1a\",bitac:\"o\",biteg:4,bith:\"s\",bitir:\"1f\",bitā:\"t\",bium:\"t\",bizim:\"1f\",biè:\"l\",bién:\"o\",biê:\"a\",bië:\"r\",\"bió \":\"o\",bią:\"1a\",\"bić \":\"1a\",bičn:\"v\",bişi:\"1n\",bişn:15,bjas:\"v\",bjer:\"z\",bjud:10,bjó:13,bkü:\"n\",bkę:\"1a\",blaho:\"y\",blaj:\"1o\",\"blar \":\"o\",blb:\"u\",bleef:\"r\",blern:\"z\",bleu:\"l\",\"bli'\":\"1q\",blib:\"1p\",blieb:\"n\",blitt:12,\"bliv \":\"z\",blive:\"z\",blié:\"l\",blj:\"v\",blká:\"y\",blodi:\"1p\",blods:\"1p\",bloe:\"r\",bloga:\"1b\",bloj:\"1o\",\"blon \":\"1o\",blov:\"1o\",blow:\"m\",blua:\"1o\",blum:\"n\",blâ:\"l\",bläg:\"1p\",blåse:12,blæ:\"z\",blíb:\"u\",blò:\"q\",blóm:13,blöv:\"1p\",blø:\"z\",blü:\"n\",blý:13,blē:\"1d\",blī:\"t\",bmo:\"1q\",bmy:\"1a\",bnu:3,\"bo'\":\"1q\",boal:15,bobs:\"1p\",bocs:14,\"bodd \":12,\"bodi \":\"1p\",boede:\"z\",\"boet \":\"z\",\"bof \":\"1p\",\"bogh \":\"1q\",bogs:\"z\",\"boh \":\"y\",boho:\"b\",boir:\"l\",bojn:\"1o\",bojím:\"u\",boldy:\"1n\",boleh:\"b\",bolja:\"1n\",bolje:\"v\",\"boll \":10,bolsu:\"1n\",bolup:\"1n\",boms:\"1p\",bonaj:\"1o\",boneg:\"1o\",bonum:\"t\",bonv:\"1o\",bood:\"r\",\"boos \":\"r\",bopbo:\"1q\",boras:\"1o\",\"born \":\"m\",borp:\"1o\",borâ:15,bosan:\"b\",\"bose \":4,\"bosi \":\"1p\",bosit:15,both:\"m\",botó:\"o\",bouc:\"l\",bovat:\"u\",boven:\"r\",bovo:\"1o\",bowa:\"1a\",\"boye \":4,boys:\"m\",boyu:\"1f\",bozk:\"y\",božňu:\"y\",bpl:\"1o\",bpu:\"1q\",bq:\"1q\",bracc:\"q\",bragt:\"z\",bratr:\"u\",braç:\"p\",brať:\"y\",break:\"m\",brech:\"n\",bredv:10,brekk:12,brey:13,\"briu \":\"p\",brió:\"o\",brj:13,broa:\"m\",broli:\"1b\",brore:12,brott:10,broug:\"m\",brude:\"n\",bruge:\"z\",brugt:\"z\",bruka:10,bruke:12,brukt:12,\"brum \":\"t\",bruo:\"1o\",brutt:\"q\",bryd:\"z\",bryl:\"z\",brym:\"1a\",brys:\"z\",bryte:12,brze:\"1a\",bráni:\"u\",brân:15,brå:10,bræn:\"z\",brè:\"l\",bréf:13,brì:\"q\",brí:\"o\",brò:\"q\",bröd:10,\"bröt \":10,\"brú \":\"y\",brüc:\"n\",brā:\"1d\",bră:15,brą:\"1a\",brī:\"1d\",brō:\"t\",bsch:\"n\",bsic:\"n\",bsik:\"1p\",bsp:\"n\",bsq:\"t\",\"bst \":\"n\",bsö:\"1p\",\"bt'\":\"n\",\"bt-\":3,btf:\"m\",btl:\"m\",btq:\"m\",bts:\"m\",btw:\"r\",buac:\"s\",buah:\"b\",buat:\"b\",bucc:\"q\",\"buch \":\"n\",bucn:15,bucur:15,\"budi \":\"v\",budl:\"y\",budn:\"y\",budol:\"y\",budou:\"u\",budt:\"z\",budz:\"1a\",buel:\"o\",\"buen \":\"o\",buena:\"o\",bugh:\"d\",bugi:\"q\",buie:15,buil:\"m\",buio:\"q\",buji:\"u\",\"buju \":\"u\",bukas:\"d\",bulak:\"d\",bumil:\"d\",\"buna \":\"1f\",\"bune \":15,buni:15,bunl:\"1f\",\"bunu \":\"1f\",bunuh:\"b\",bunun:\"1f\",buol:\"1b\",buona:\"q\",buono:\"q\",burad:\"1f\",buray:\"1f\",bursd:12,burtu:13,buruk:\"b\",buryo:4,\"buss \":10,butk:\"b\",butn:\"b\",buur:\"r\",buvau:\"1b\",\"buvo \":\"1b\",buw:\"d\",\"buy \":\"m\",buyi:\"m\",buí:\"p\",buý:\"a\",buči:\"1b\",buž:\"1b\",\"bv \":\"1o\",bvy:\"u\",bx:3,bych:\"u\",byde:\"z\",bydl:\"u\",\"byer \":\"z\",\"byl \":\"u\",byla:\"u\",\"bylo \":\"u\",byls:\"z\",byly:\"u\",\"bym \":\"1a\",byo:\"d\",byp:\"m\",byrg:13,byrj:13,byste:\"u\",byta:10,byw:\"1a\",byx:10,byč:\"u\",byť:\"y\",bza:3,bà:\"a\",\"bác \":\"a\",bánh:\"a\",báo:\"a\",bâi:\"l\",bât:\"l\",bây:\"a\",bäb:\"1n\",bäg:10,bäld:\"1p\",bäli:\"1p\",bäp:\"1n\",bäri:\"1n\",bäs:10,bätk:\"y\",bätt:10,bäu:\"n\",bäv:10,bäş:\"1n\",\"båd \":\"z\",båda:10,båg:10,bån:\"z\",bæk:13,bæn:\"z\",bæt:13,bèr:\"l\",béar:\"s\",bée:\"l\",bék:14,bém:\"p\",béo:\"a\",\"bê-\":\"p\",bì:\"a\",\"bía \":\"o\",bían:\"o\",bías:\"o\",bíb:\"p\",bíj:\"u\",\"bíl \":13,bíll:13,bío:\"s\",bís:\"o\",\"bít \":\"u\",bíte:\"y\",bíz:14,bî:\"l\",bóg:\"1a\",bój:\"1a\",\"bók \":13,bóka:13,bóki:13,bóng:\"a\",\"bô \":\"p\",bôs:\"p\",böck:10,\"böd \":\"1p\",\"bör \":10,börj:10,börn:13,böse:\"n\",böy:\"1f\",bød:\"z\",bøg:\"z\",bøk:12,bøl:\"z\",bøn:\"z\",børn:\"z\",børs:\"z\",bøs:\"z\",\"bù \":\"q\",búa:13,búf:\"o\",búh:\"o\",búi:13,bún:13,\"bús \":\"o\",\"bút \":\"a\",bû:\"l\",büc:\"n\",büh:\"n\",bürg:\"n\",büti:\"1n\",býr:13,být:\"u\",býval:\"u\",\"bā \":\"1d\",bās:\"t\",bāt:\"t\",\"bă \":15,bča:\"u\",bči:\"y\",bēs:\"t\",bēt:\"1d\",bīs:\"t\",\"bı \":\"1f\",bıl:\"1f\",bım:\"1f\",bın:\"1f\",bır:\"1f\",bıç:\"1f\",bł:\"1a\",bō:\"t\",bœ:\"l\",bšt:\"1b\",būd:\"1b\",būk:\"1b\",būn:\"1b\",būr:\"1b\",būti:\"1b\",bž:\"1b\",bγ:3,bε:3,\"c'er\":\"q\",\"c'es\":\"l\",\"c'i\":4,\"c's\":\"m\",\"c'u\":4,\"c'è\":\"q\",\"c'é\":\"l\",\"c-a\":3,\"c-e\":\"l\",\"c-i\":3,\"c-n\":3,\"c-s\":\"m\",cabal:\"o\",cabez:\"o\",cabou:\"p\",cabó:\"o\",cacc:\"q\",cació:\"o\",cadou:15,caec:\"t\",caelo:\"t\",caeru:\"t\",caha:\"b\",cahk:\"b\",\"cail \":\"s\",caint:\"s\",cait:\"s\",caiu:\"p\",caix:\"p\",cajn:\"1o\",cakl:\"1f\",caks:\"1f\",\"call \":\"m\",calç:\"p\",cammi:\"q\",camn:\"t\",canci:\"o\",canem:\"t\",canke:4,canzo:\"q\",canç:\"p\",capir:\"q\",capis:\"q\",caput:\"t\",carea:15,cared:\"m\",caref:\"m\",cark:\"b\",\"carr \":\"s\",caru:\"t\",cash:\"m\",casó:\"o\",\"cat-\":15,catc:\"m\",caug:\"m\",caun:15,caup:\"t\",\"cawe \":4,cazu:15,cazz:\"q\",caç:\"p\",cañ:\"o\",cać:\"1a\",cağı:\"1f\",cbi:3,\"cc-\":3,ccato:\"q\",ccb:3,ccee:\"m\",ccez:\"q\",cche:\"q\",\"cchi \":\"q\",cchia:\"q\",cchie:\"q\",ccia:\"q\",ccip:\"t\",cció:\"o\",ccog:\"q\",ccola:\"q\",ccon:\"q\",ccro:\"l\",ccupé:\"l\",ccè:\"l\",ccé:\"l\",ccò:\"q\",ccū:\"t\",\"ce)\":\"m\",\"ce-a\":15,ceai:15,ceann:\"s\",ceast:15,ceasu:15,ceat:\"t\",cebeu:\"p\",cecid:\"t\",ceea:15,ceed:\"m\",ceer:\"r\",cegl:\"q\",ceir:\"p\",ceist:\"s\",ceita:\"p\",ceiu:15,ceiv:\"m\",\"cejo \":\"1o\",ceks:\"1f\",celú:\"y\",cemma:3,cenç:\"p\",cepat:\"b\",\"cepe \":15,cepu:15,ceq:3,\"cerc \":15,cerus:\"t\",cerut:15,cesis:\"1o\",cesz:\"1a\",cetn:\"t\",cetta:\"q\",cetu:\"t\",cevis:\"1o\",cezi:\"q\",ceái:\"s\",ceç:\"p\",ceñ:\"o\",ceč:3,cfa:3,cfe:3,cfr:\"1o\",cfu:3,cg:3,\"ch'i\":\"q\",\"cha'\":\"1q\",chaa:\"r\",\"chab \":\"1q\",chack:10,chaid:\"s\",chail:\"s\",chath:\"s\",chatl:\"1q\",chay:\"1q\",chaz:\"o\",chde:\"n\",chean:\"s\",chear:\"s\",chega:\"p\",cheh:\"n\",chein:\"n\",cheté:\"l\",\"chez \":\"l\",chg:\"n\",chii:15,chius:\"q\",chk:\"n\",\"chlo \":\"y\",chmal:\"n\",chmer:\"n\",chnel:\"n\",chny:\"u\",choen:\"r\",choh:\"1q\",chois:\"l\",\"chom \":\"u\",chona:\"s\",choon:\"r\",chorg:\"1q\",chowa:\"1a\",\"chra \":\"t\",chree:\"r\",chrei:\"n\",chric:\"n\",chrie:\"n\",chrik:\"r\",chsc:\"n\",chse:\"n\",chtu:\"n\",\"chu'\":\"1q\",chuh:\"n\",chuid:\"s\",chuir:\"s\",\"chur \":\"s\",chuva:\"p\",chuw:\"r\",chuy:\"a\",chvet:\"1q\",chvíl:\"u\",chyby:\"u\",chád:\"y\",\"chám \":\"u\",chã:\"p\",chä:\"n\",\"chí \":\"a\",chód:\"1a\",chóna:\"s\",chö:\"n\",chú:\"a\",chü:\"n\",chýb:\"y\",chă:\"a\",ciaj:\"1o\",ciast:\"1a\",cibu:\"t\",\"cic \":3,cidd:\"1f\",cided:\"m\",cidé:\"l\",cieba:\"t\",ciebi:\"1a\",\"ciec \":\"1a\",cieg:\"o\",ciek:\"1a\",ciela:\"1a\",ciele:\"1a\",ciero:\"o\",ciesz:\"1a\",cieu:\"l\",cieš:\"1d\",ciig:\"1o\",cije:\"v\",cijn:\"r\",cijo:\"1b\",ciler:\"1f\",cilv:\"1d\",cimie:\"o\",cimit:\"q\",cimm:\"q\",cimu:\"t\",cinci:15,cinet:\"t\",cinev:15,cinwa:3,cinā:\"1d\",cioa:15,ciod:15,cioj:\"1o\",cipt:\"b\",cipu:\"t\",cisar:\"p\",cisav:\"p\",cisto:\"1o\",cisu:\"t\",cith:\"t\",\"cité \":\"l\",ciug:\"q\",\"ciun \":15,ciunt:\"t\",ciur:\"1o\",ciut:\"q\",ciè:\"l\",cién:\"o\",ciét:\"l\",ciê:\"p\",cië:\"r\",ciú:\"p\",ciā:\"t\",cią:\"1a\",cić:\"1a\",ciń:\"1a\",cje:\"1a\",cji:\"1a\",cjo:\"1a\",cją:\"1a\",cję:\"1a\",\"ckan \":10,\"ckar \":10,\"ckas \":10,cked:\"m\",ckej:\"y\",ckge:\"n\",ckk:\"n\",cklar:10,cklic:\"n\",ckly:\"m\",ckra:10,ckz:\"n\",\"cký \":\"u\",clase:\"o\",clean:\"m\",clot:\"m\",cló:\"o\",clô:\"l\",clā:\"t\",cmai:15,cml:\"t\",cmo:\"1o\",cmu:3,cnit:15,cnost:\"u\",cnu:3,cná:\"u\",cný:\"u\",cobri:\"p\",cocin:\"o\",codz:\"1a\",coel:\"p\",coep:\"t\",coga:\"t\",coge:\"o\",cogl:\"q\",coia:\"q\",coinn:\"s\",cois:\"p\",coit:\"p\",\"coj \":\"1o\",cojn:\"1o\",colaz:\"q\",cold:\"m\",colha:\"p\",colpa:\"q\",\"com'\":\"q\",comie:\"o\",comig:\"p\",compt:\"l\",comum:\"p\",conas:\"s\",conh:\"p\",conmi:\"o\",connu:\"l\",conoc:\"o\",conoz:\"o\",copii:15,coram:\"t\",corec:15,corg:\"q\",corso:\"q\",\"cos'\":\"q\",cosas:\"o\",cosc:\"q\",costr:\"q\",coule:\"l\",coupe:\"l\",coute:\"l\",couz:\"u\",\"cov \":\"y\",covat:\"u\",cozia:\"q\",cozin:\"p\",cozz:\"q\",coç:\"p\",coí:\"o\",coï:\"l\",coñ:\"o\",coó:\"p\",což:\"u\",cpe:\"1o\",cqa:3,cqi:3,\"cqua \":\"q\",\"cr \":\"m\",creer:\"o\",crees:\"o\",creid:\"s\",\"creo \":\"o\",crezu:15,crii:15,crips:\"t\",crir:\"l\",criso:15,\"crit \":\"l\",critt:\"q\",critó:\"p\",criu:15,crk:\"v\",crn:\"v\",croir:\"l\",crow:\"m\",croy:\"l\",crt:\"v\",cruri:15,crv:\"v\",\"cry \":\"m\",cryi:\"m\",crú:\"o\",crā:\"t\",cră:15,crē:\"t\",crī:\"t\",csa:14,csi:14,csk:14,csu:14,csá:14,csé:14,csó:14,csö:14,csú:14,csü:14,\"ct'\":\"m\",\"ct-a\":3,ctae:\"t\",ctame:\"o\",cted:\"m\",cteme:\"l\",ctf:\"m\",\"ctie \":\"r\",ctin:\"m\",\"ctis \":\"t\",\"ctiv \":15,ctly:\"m\",ctn:\"m\",\"ctu \":\"t\",ctul:15,ctum:\"t\",cturu:\"t\",ctut:\"t\",ctvo:\"y\",ctw:\"1a\",ctá:\"o\",ctæ:\"t\",ctè:\"l\",ctú:\"o\",ctā:\"t\",ctă:15,ctū:\"t\",\"cu-\":3,cualq:\"o\",cuan:\"o\",cuart:\"o\",cuatr:\"o\",cubri:\"o\",cuch:\"o\",cucin:\"q\",cudzi:\"y\",cuel:\"o\",cuen:\"o\",cuerd:\"o\",cuest:\"o\",cug:\"q\",cuh:3,cuia:15,cuie:15,cuiu:\"t\",cuji:\"u\",\"cuk \":\"1f\",cuka:\"b\",cukl:\"1f\",cukup:\"b\",cukur:\"1d\",culc:15,culd:\"p\",\"culi \":\"t\",cului:15,\"cumi \":4,cumpe:15,cumpl:\"o\",cumq:\"t\",cunct:\"t\",cundu:\"t\",cung:\"a\",cunh:\"p\",cunia:\"t\",\"cuno \":\"q\",cunos:15,\"cunt \":\"t\",cuoc:\"q\",cuol:\"q\",cuor:\"q\",\"cupé \":\"l\",curaj:15,curg:15,curk:\"b\",cusku:\"1a\",\"cut-\":15,cutr:15,cutus:\"t\",cuvi:15,cuvâ:15,cuze:15,cuá:\"o\",cuí:\"o\",cuñ:\"o\",cvat:15,cvo:\"1o\",cw:3,cych:\"1a\",cyd:\"1a\",cyj:\"1a\",cykle:\"z\",cyz:\"1a\",\"cz \":\"1a\",\"cza \":\"1a\",czaj:\"1a\",czarn:\"1a\",czas:\"1a\",czb:\"1a\",czc:\"1a\",\"cze \":\"1a\",czeg:\"1a\",czej:\"1a\",czek:\"1a\",czem:\"1a\",czen:\"1a\",czer:\"1a\",czes:\"1a\",czk:\"1a\",czm:\"1a\",czn:\"1a\",czo:\"1a\",czt:\"1a\",czu:\"1a\",czw:\"1a\",czy:\"1a\",czó:\"1a\",czą:\"1a\",czę:\"1a\",cà:\"a\",\"cá-\":\"p\",\"các \":\"a\",cách:\"a\",\"cái \":\"a\",cánh:\"a\",cáo:\"a\",cárc:\"o\",câb:\"l\",câi:15,câl:\"l\",câm:\"p\",\"cân \":\"a\",cânc:\"p\",cât:15,câu:\"a\",cây:\"a\",câş:15,cão:\"p\",cæ:\"t\",cç:\"p\",cèr:\"l\",céal:\"s\",céar:\"s\",céi:\"o\",\"céra \":\"y\",céru:\"y\",\"céu \":\"p\",\"cê \":\"p\",\"cê-\":\"p\",cên:\"p\",cì:\"q\",cían:\"o\",cías:\"o\",\"cích \":\"u\",cíci:\"p\",cídi:\"p\",cíh:\"u\",cío:\"o\",cípi:\"p\",cís:\"o\",cítim:\"y\",cív:\"p\",\"cò \":\"q\",cóca:\"s\",cóg:\"o\",cóna:\"s\",côm:\"p\",cõ:\"p\",cù:\"a\",cúa:\"o\",cúc:\"o\",cúl:\"o\",\"cúm \":\"a\",cúp:\"o\",cús:\"o\",cúz:\"y\",\"cü \":\"1f\",cük:\"1f\",cüm:\"1f\",cüz:\"1f\",cār:\"t\",cāt:\"t\",cāv:\"t\",\"că \":15,căm:15,căn:\"a\",cč:3,\"cē \":\"t\",cēl:\"t\",cēn:\"t\",cēp:\"t\",cēr:\"t\",cēs:\"t\",cēt:\"1d\",cę:\"1a\",\"cī \":\"t\",cīb:\"1d\",cīg:\"1d\",cīm:\"t\",cīr:\"t\",cīs:\"t\",cīt:\"1d\",\"cı \":\"1f\",cıd:\"1f\",cıl:\"1f\",cım:\"1f\",cın:\"1f\",cıs:\"1f\",cıy:\"1f\",cł:\"1a\",cō:\"t\",cť:\"y\",cūn:\"t\",cūr:\"t\",cūs:\"t\",cūt:\"t\",cūz:\"1b\",cε:3,\"d'ab\":\"l\",\"d'all\":\"l\",\"d'avo\":\"l\",\"d'en\":\"l\",\"d'ex\":\"l\",\"d'f\":\"s\",\"d'h\":\"l\",\"d'ic\":\"l\",\"d'v\":\"m\",\"d'è\":\"q\",\"d)\":\"m\",\"d-d \":3,\"d-i \":3,\"d-is\":3,\"d-q\":3,\"d-ta\":3,\"d-ts\":3,\"d-tu\":3,\"d-we\":3,\"d-ya\":3,\"da-c\":\"p\",\"da-f\":\"p\",daag:\"r\",dabar:\"1b\",dabei:\"n\",dabin:\"1p\",dabu:3,dader:\"o\",dady:\"1n\",daer:\"b\",dafis:4,dafü:\"n\",dagar:10,dager:12,dagha:\"1q\",dagur:13,\"daha \":\"1f\",dahan:\"d\",dahj:\"1q\",dahk:\"b\",dahu:\"b\",dainu:\"1b\",dait:\"l\",dajat:\"1q\",dajda:\"1q\",dajn:\"1o\",daju:\"v\",dají:\"u\",dakel:3,daken:4,dakik:\"1f\",dakke:3,\"daku \":\"b\",dakun:4,dakw:4,daky:\"1n\",dalah:\"b\",dalaw:\"d\",daleg:\"1q\",dalej:\"1a\",dalj:\"v\",\"dalk \":1,\"dall'\":\"q\",dalyk:\"1b\",dalš:\"u\",\"damu \":\"b\",damá:13,danam:\"1n\",daneh:\"1q\",danh:\"a\",danko:\"1o\",\"dann \":\"n\",danto:\"1o\",danud:\"1c\",danç:\"p\",\"dap \":\"b\",dapu:\"b\",\"daq \":\"1q\",daque:\"p\",daqui:\"p\",darbo:\"1b\",\"darf \":\"n\",dargh:\"1q\",daryk:\"1b\",darys:\"1b\",daryt:\"1b\",daré:\"o\",darč:\"y\",darī:\"1d\",dasb:\"1p\",dasha:4,dasov:\"1q\",\"dass \":\"n\",dası:\"1f\",\"data'\":\"1q\",datam:12,\"datu \":4,datç:\"1n\",daue:\"n\",\"daug \":\"1b\",daugh:\"m\",daugi:\"1b\",davon:\"n\",davv:\"q\",davé:13,daví:\"o\",\"day'\":\"m\",daye:3,\"days \":\"m\",\"dazi \":4,\"dazu \":\"n\",daç:\"p\",dañ:\"o\",daşl:\"1f\",daşı:\"1f\",daš:\"v\",dať:\"y\",dažn:\"1b\",\"dbe' \":\"1q\",dbev:\"r\",dbog:\"z\",dbol:\"z\",dbru:\"z\",dbä:10,dbæ:\"z\",dbø:\"z\",\"dc \":\"m\",dcer:\"u\",dche:\"n\",dcir:\"t\",dcu:\"m\",dcz:\"1a\",dcé:\"y\",dcă:15,\"dd-\":3,ddak:3,\"ddan \":3,ddant:3,ddart:3,ddb:3,ddem:3,ddim:3,ddio:\"q\",ddm:3,ddn:3,\"ddo \":\"q\",ddor:\"q\",ddos:\"q\",ddq:3,dduc:\"t\",ddud:3,ddum:3,ddun:3,deach:\"s\",deann:\"s\",dearg:\"s\",death:\"m\",debam:\"t\",deber:\"o\",debí:\"o\",deciz:15,decy:\"1a\",decâ:15,decí:\"o\",deea:15,deerd:\"r\",deff:3,\"deg-\":3,dehbe:3,dehol:\"z\",dehor:\"l\",deia:\"p\",deid:\"1p\",\"dein \":\"n\",deine:\"n\",deio:\"p\",deiro:\"p\",dejad:\"o\",dejar:\"o\",dejl:\"z\",dejte:\"u\",dejun:15,dejí:\"u\",\"dek-\":\"1o\",dekat:\"b\",dekel:14,\"deki \":\"1f\",dekj:\"1o\",dekst:\"1o\",delar:10,delij:\"r\",\"dell'\":\"q\",deloc:15,\"demt \":3,demá:\"o\",denfo:\"z\",\"deng \":\"d\",\"denn \":\"n\",denok:\"1n\",denov:\"1o\",\"denu \":\"1p\",deoa:15,depan:\"b\",depd:\"1n\",\"derd \":\"r\",derea:15,deree:\"r\",derim:\"1f\",derov:\"z\",derwy:1,desej:\"p\",desia:\"y\",desmi:\"1d\",despu:\"o\",dessu:\"l\",destu:15,desá:\"u\",detto:\"q\",detí:\"y\",\"deu \":\"p\",deum:\"t\",deute:\"n\",devem:\"p\",devez:\"l\",devie:\"l\",deya:\"d\",deys:\"1f\",dezam:15,dezb:15,\"deze \":\"r\",dezir:\"1o\",deç:\"p\",deñ:\"o\",deć:\"v\",deča:\"v\",\"deň \":\"y\",deşi:\"1f\",deşl:\"1f\",deša:\"v\",deše:\"u\",deši:\"1b\",dešl:\"u\",dešt:\"u\",dež:\"u\",\"df \":\"m\",dfat:\"m\",dfö:10,dfø:\"z\",dgang:\"z\",dgm:\"m\",dgov:\"v\",\"dgå \":\"z\",dgåe:\"z\",dgår:10,dgü:\"n\",\"dh \":\"s\",dhat:14,dhb:\"s\",dhol:\"z\",dhom:\"1q\",dhuc:\"t\",dhui:\"s\",\"dhá \":\"s\",\"di-n\":3,diah:\"b\",dibah:\"1q\",dicho:\"o\",dicis:\"t\",dicus:\"t\",didel:\"1b\",didic:\"t\",didit:\"t\",didn:\"m\",didy:\"t\",diebu:\"t\",\"died \":\"m\",\"diel \":\"y\",dieno:\"1b\",diep:\"r\",diero:\"o\",dietr:\"q\",\"dieu \":\"l\",diful:12,digd:\"r\",digim:\"1n\",\"dih \":\"b\",dihan:\"d\",dihn:15,diit:\"t\",dijer:\"o\",dikka:\"1f\",diks:\"d\",dikum:\"1p\",dikw:\"r\",dikün:\"1p\",dildi:\"1f\",dileg:13,dimą:\"1b\",dinem:\"t\",dinh:\"p\",diniz:\"1f\",dinl:\"1f\",\"dinn \":13,\"dint \":3,dintr:15,dinā:\"1d\",dioj:\"1o\",diper:\"b\",dirba:\"1b\",dirc:\"q\",diru:\"1o\",dirv:\"q\",diré:\"o\",dirí:\"o\",dispi:\"q\",dites:\"l\",diun:\"t\",diur:\"t\",diut:\"t\",diuv:\"t\",divit:\"t\",dixe:\"t\",\"dixi \":\"t\",dixis:\"t\",dixit:\"t\",\"diye \":\"1f\",dizem:\"p\",dizen:\"p\",dizio:\"q\",diár:\"p\",diä:\"n\",dië:\"r\",\"diñ \":\"1n\",dić:\"v\",diče:\"u\",dičia:\"y\",diň:\"1n\",dişe:\"1f\",\"diš \":\"v\",diši:\"y\",dišl:\"y\",diū:\"t\",djes:\"r\",djie:1,djup:10,\"djur \":10,djá:14,djæ:\"z\",djí:\"u\",dją:\"1a\",dję:\"1a\",dkia:\"y\",dkom:\"z\",dkv:\"1o\",dkä:10,\"dké \":\"y\",dkó:\"1a\",dkø:\"z\",dką:\"1a\",dkę:\"1a\",dlac:\"1a\",dlate:\"1a\",dledo:\"1p\",dlh:\"y\",dlic:\"n\",dlino:\"1p\",dlis:3,dlj:\"v\",dln:\"u\",dlok:\"1o\",dlou:\"u\",dlus:\"1c\",dluč:\"v\",dlæ:\"z\",\"dlí \":\"u\",dlö:10,dlø:\"z\",dlň:\"y\",dlž:\"y\",\"dm \":\"u\",dmæ:\"z\",dmü:\"n\",\"dn'\":\"m\",dneg:\"1a\",\"dni'\":\"1q\",dniek:\"1d\",dnite:\"y\",\"dniu \":\"1a\",dnj:\"v\",dnog:\"v\",dnou:\"u\",dnud:\"1c\",dnya:\"b\",dnym:\"1a\",dnú:\"y\",dną:\"1a\",\"do-o\":\"p\",\"dob \":\"1p\",dobar:\"v\",dobbi:\"q\",dobij:\"v\",\"dobs \":\"1p\",\"dobu \":\"u\",docc:\"q\",docel:\"u\",dochm:\"1q\",dochv:\"1q\",docui:\"t\",dodi:\"q\",doek:\"r\",doel:\"r\",doent:\"p\",\"does \":\"m\",doet:\"r\",\"dof \":\"1p\",dogi:\"1p\",dogla:\"1n\",dogod:\"v\",dogr:\"1n\",dogte:1,\"doh \":\"b\",\"doi \":15,doia:15,doie:15,doing:\"m\",\"doit \":\"l\",doiv:\"l\",dojn:\"1o\",\"dol-\":\"1p\",dolaz:\"v\",dolgo:14,dolko:14,dolli:11,\"doly \":\"1n\",domha:\"s\",domnu:15,domoi:\"1p\",domon:\"1o\",domum:\"t\",domý:\"y\",\"don'\":\"m\",\"donc \":\"l\",donis:\"1o\",donné:\"l\",\"donu \":\"1o\",doon:\"d\",dopis:\"u\",\"dopo \":\"q\",dorea:15,dorp:\"r\",dotie:\"1d\",\"dott \":14,doucn:\"u\",douf:\"u\",doul:\"l\",doun:\"o\",doute:\"l\",\"dov \":\"y\",dovan:\"1b\",dovat:\"u\",dovet:\"q\",dovev:\"q\",dovni:\"u\",dovre:\"q\",dovs:\"y\",dovut:\"q\",\"dow \":\"m\",dowam:\"1n\",dowan:\"1a\",dowie:\"1a\",\"down \":\"m\",dowo:\"1a\",\"doy \":\"o\",\"doy'\":\"1q\",doyic:\"1q\",dozvo:\"v\",doá:\"p\",doç:\"p\",doć:\"v\",doša:\"v\",\"dp \":\"m\",dph:\"m\",dpil:\"1o\",dpove:\"y\",dpow:\"1a\",dqe:3,dqi:3,dqo:\"1q\",draag:\"r\",drack:10,drade:10,\"drak \":\"z\",drakk:12,drann:\"q\",dratt:12,draum:13,draž:\"u\",dream:\"m\",dreh:\"n\",dreje:\"z\",drek:13,drepe:12,drete:\"q\",drick:10,drij:\"r\",\"drik \":\"z\",drim:3,droeg:\"r\",droit:\"l\",dronn:\"z\",droši:\"1d\",\"dru \":15,drugo:\"v\",drv:\"v\",drze:\"1a\",drzw:\"1a\",drà:\"q\",drå:\"z\",drí:\"o\",drò:\"q\",dröm:10,drü:\"n\",dră:15,drą:\"1b\",drę:\"1a\",drī:\"1d\",drš:\"v\",drži:\"v\",dsag:\"z\",dsby:\"z\",dsede:\"z\",dsels:\"z\",\"dser \":\"z\",dsfo:\"z\",dshi:\"m\",\"dsid \":\"1c\",dsim:\"1d\",\"dsin \":\"1c\",dsj:10,\"dsk \":\"z\",dskab:\"z\",dskap:12,dske:\"z\",dskyl:\"z\",dsmit:\"1d\",dsn:\"r\",dspun:\"z\",dstaw:\"1a\",dstef:\"z\",dstem:\"z\",dsty:\"z\",\"dsud \":\"u\",dsw:\"r\",dsy:\"z\",\"dsz \":14,dsá:14,dsä:\"n\",dsæ:\"z\",dsö:13,dsø:\"z\",dtg:\"z\",dtz:\"n\",dtá:14,dtæ:\"z\",dtý:\"y\",\"du' \":\"1q\",\"du-s\":15,\"du-t\":15,\"dub \":\"1c\",dube:\"1o\",ducc:\"o\",ducir:\"o\",duco:\"q\",\"dud \":3,dudek:\"1o\",duduk:\"b\",duerm:\"o\",dufi:4,dufo:\"1o\",dugy:\"1n\",duid:\"r\",duine:\"s\",duir:\"l\",duiz:\"r\",dujda:\"1q\",dukal:3,duki:\"1o\",duko:\"1o\",\"dulu \":\"b\",dumat:\"d\",dumne:15,dunia:\"b\",dunit:3,dunob:\"1p\",dunom:\"1p\",duode:\"t\",duot:\"1b\",dupa:\"b\",dupn:\"b\",durch:\"n\",durdu:\"1f\",durdy:\"1n\",duris:\"1b\",durk:\"b\",durt:3,durvi:\"1d\",dusel:\"1c\",dush:4,dusj:12,\"dux \":\"t\",duxe:\"t\",duxi:\"t\",duyd:\"1f\",duyu:\"1f\",duzc:\"o\",duç:\"p\",duí:\"p\",duý:\"1n\",duć:\"v\",duşu:\"1n\",dvac:\"u\",dvanl:\"z\",dvere:\"y\",dveď:\"y\",\"dvi \":\"1b\",dvih:\"y\",dvl:\"r\",dvoch:\"y\",dvog:\"p\",dvy:\"1b\",dvä:10,dvæ:\"z\",dvē:\"t\",dwaa:\"r\",\"dwi \":4,dwied:\"1a\",dwu:\"1a\",dx:3,\"dy-\":\"m\",dyak:\"d\",\"dyb \":\"z\",dygt:\"z\",dygy:\"1n\",dykla:\"1n\",dyla:\"1n\",\"dyma \":\"1n\",dyme:\"t\",dymi:\"t\",\"dymo \":\"t\",dymus:\"t\",dymy:\"1n\",dyrd:\"1n\",dyrk:\"z\",dyrm:\"1n\",dyru:13,dyry:\"1n\",dyti:\"1b\",dyw:\"1a\",dyz:\"1n\",dyň:\"1n\",dyž:\"u\",dzay:3,\"dze \":\"1a\",dzer:\"1d\",dzia:\"1a\",dzic:\"1a\",\"dzie \":\"1a\",dziel:\"1a\",dziem:\"1a\",dzien:\"1a\",dzil:\"1a\",dzinę:\"1a\",dzir:\"1d\",dzis:\"1a\",dziw:\"1a\",dzj:\"r\",dzk:\"1a\",dzm:\"1a\",dzoj:\"1o\",dzot:\"1d\",dzte:\"y\",\"dzu \":\"1d\",dzwo:\"1a\",dzy:\"1a\",dzą:\"1a\",dzę:\"1a\",\"dà \":\"q\",\"dá-\":\"p\",dáf:\"o\",dáir:\"s\",\"dál \":\"u\",dáre:\"u\",\"dáva \":\"y\",dává:\"u\",dáž:\"y\",\"dân \":\"a\",dây:\"a\",dão:\"p\",\"däki \":\"1n\",\"däl \":\"1n\",däld:\"1n\",däna:\"1p\",däs:11,dät:11,dää:11,\"då \":10,dål:10,dås:\"z\",\"dæ \":\"t\",dæk:\"z\",dæm:13,dè:\"l\",déan:\"s\",déba:\"l\",déco:\"l\",\"dée \":\"l\",déh:\"u\",déis:\"o\",déja:\"o\",dék:14,déo:\"l\",dép:\"l\",déq:\"l\",déra:\"l\",déso:\"l\",déte:\"l\",dê:\"p\",dì:\"q\",\"día \":\"o\",días:\"o\",díb:\"o\",díd:\"y\",díf:\"o\",díky:\"u\",dính:\"a\",díol:\"s\",díva:\"u\",dívi:\"p\",dîm:\"l\",dîn:\"l\",\"dò \":\"q\",\"dói \":\"p\",\"dón \":\"o\",dôl:\"y\",dôn:\"p\",dôs:\"y\",dôv:\"y\",dõ:\"p\",döda:10,dönd:\"1f\",dönt:14,döre:\"1n\",dörr:10,döw:\"1n\",døds:\"z\",døg:\"z\",\"dør \":\"z\",døt:\"z\",døve:\"z\",dù:\"a\",dúci:\"y\",dúf:\"y\",dúi:\"s\",dúv:\"p\",dû:\"l\",\"dü \":\"1f\",\"dün \":\"1f\",\"dür \":\"1f\",düze:\"1f\",dýa:\"1n\",dým:\"u\",dýn:\"u\",dýr:13,\"dā \":\"1d\",dām:\"1d\",dār:\"1d\",dāt:\"1d\",dāv:\"1d\",dă:15,\"dē \":\"t\",dēr:\"t\",dēs:\"t\",dēti:\"1d\",dęs:\"1b\",\"dī \":\"t\",dīc:\"t\",dīg:\"1d\",dīm:\"t\",dīs:\"1d\",dīt:\"1d\",dīvi:\"t\",dıl:\"1f\",dın:\"1f\",dız:\"1f\",dış:\"1f\",dł:\"1a\",dň:\"y\",dšej:\"y\",dūm:\"1b\",dūr:\"1b\",dūs:\"1b\",džia:\"1b\",džio:\"1b\",dε:3,\"e''\":\"1q\",\"e'b\":\"1q\",\"e'c\":\"1q\",\"e'h\":\"1q\",\"e'm\":\"1q\",\"e'na\":\"1q\",\"e'p\":\"1q\",\"e're\":\"m\",\"e'vi\":\"1q\",\"e'w\":\"1q\",\"e-ai\":15,\"e-al\":15,\"e-am \":15,\"e-ata\":\"1n\",\"e-de \":\"1n\",\"e-i \":15,\"e-j\":\"m\",\"e-se \":\"p\",\"e-t-\":\"l\",\"e-y\":\"m\",\"e-z\":\"l\",\"e-á\":\"p\",\"ea-\":\"m\",\"eaa \":11,\"eab \":\"1c\",eabh:\"s\",eace:\"m\",eadi:\"m\",eads:\"m\",eadu:\"1c\",eady:\"m\",eae:\"t\",\"eag \":\"s\",eagla:\"s\",eaju:15,eake:\"m\",eakin:\"m\",eally:\"m\",ealth:\"m\",eamn:15,eanga:\"s\",\"eann \":\"s\",eanna:\"s\",\"eap \":\"m\",eapa:\"s\",eapá:\"s\",\"eara \":15,eard:\"m\",\"earg \":\"s\",earin:\"m\",early:\"m\",\"earn \":\"m\",earna:\"s\",\"earr \":\"s\",\"ears \":\"m\",earu:\"t\",earí:\"o\",easa:\"m\",easc:15,\"ease \":\"m\",easo:\"m\",\"east \":\"m\",eastr:15,easul:15,easy:\"m\",eaua:15,eauco:\"l\",eaun:15,eauti:\"m\",eavad:\"1c\",eave:\"m\",eaw:\"m\",eay:\"o\",\"eaz \":15,eazi:\"q\",eaç:\"p\",eañ:\"o\",\"eb-\":3,\"ebad \":\"z\",ebaga:\"b\",ebah:\"b\",ebaik:\"b\",ebaj:\"o\",ebalo:\"v\",ebatu:\"t\",ebbu:3,ebda:3,ebdu:3,\"ebei \":\"r\",ebens:\"n\",\"ebeu \":\"p\",ebg:3,\"ebie \":\"1a\",ebih:\"b\",ebile:\"1f\",ebió:\"o\",ebm:\"1q\",ebno:\"v\",ebné:\"y\",\"ebog \":\"z\",ebojí:\"u\",ebok:12,ebolo:\"y\",ebrok:\"r\",ebudu:\"u\",\"ebui \":15,ebuia:15,ebuju:\"u\",ebuv:\"1b\",ebv:\"1q\",ebyl:\"u\",ebå:\"z\",ebæ:\"z\",ebè:\"q\",ebê:\"p\",ebía:\"o\",ebön:\"1p\",ebø:\"z\",ebă:15,ecah:\"b\",ecaj:\"1o\",ecara:\"b\",ecaus:\"m\",ecchi:\"q\",eccl:\"t\",ecco:\"q\",eceb:\"p\",ecek:\"1f\",ecend:\"p\",eceu:\"p\",ecew:\"b\",ecf:3,echat:\"u\",echen:\"n\",echip:15,echs:\"n\",echó:\"o\",ecibi:\"o\",ecii:15,ecino:\"o\",ecir:\"o\",\"ecit \":\"t\",eciu:15,eciw:\"1a\",eció:\"o\",ecj:\"1a\",eckan:10,eckie:\"1a\",eckor:10,\"eckt \":\"n\",ecm:3,\"econ \":\"1o\",ecov:\"m\",ectl:\"m\",ecuer:\"o\",ecuni:\"t\",ecuno:15,\"ecut \":15,ecv:15,ecze:\"1a\",ecê:\"p\",\"ecía \":\"o\",ecò:\"q\",ecā:\"1d\",ecă:15,ecī:\"1d\",ecū:\"t\",\"ed-d\":3,edagi:\"1c\",edang:\"b\",\"edao \":\"v\",\"eddu \":3,edduk:3,eddur:3,\"edea \":15,edeam:15,edeba:\"t\",edebi:\"1f\",ededo:\"o\",edelj:\"v\",edell:11,edeng:\"d\",edeno:\"1n\",edeut:\"n\",edey:\"1f\",edicu:\"t\",edih:\"b\",\"edil \":\"1n\",edild:\"1f\",edilm:\"1f\",\"edin \":\"1f\",edink:1,edive:\"z\",edix:\"t\",ediy:\"1f\",ediñ:\"1n\",edió:\"o\",\"edl \":\"u\",edmej:\"y\",edny:\"1a\",edná:\"u\",ednéh:\"y\",ední:\"u\",edný:\"y\",edobs:\"1p\",edoc:\"n\",\"edod \":\"1d\",edoj:\"1o\",edoká:\"u\",edq:3,edrø:\"z\",edsen:10,edss:\"z\",\"edst \":\"z\",edste:\"z\",edtí:\"u\",eduno:\"1p\",edunt:\"t\",edux:\"t\",edyk:\"1a\",edyo:\"d\",edyr:\"z\",edzie:\"1a\",\"edzo \":\"1o\",\"edä \":11,edå:\"z\",edés:14,\"edó \":\"o\",\"edön \":\"1p\",edø:\"z\",edül:14,edý:\"1n\",edē:\"1d\",edę:\"1b\",edž:\"1b\",\"eea \":15,eeaz:15,\"eeb \":\"1c\",eeded:\"m\",eedi:\"m\",eedz:\"1o\",eeft:\"r\",eegi:\"1c\",eejo:\"1o\",eekor:\"b\",eeksi:11,eekt:\"r\",\"eeld \":\"r\",eelde:\"r\",eeles:\"1c\",eelli:11,eelm:\"1c\",eemd:\"r\",eemed:\"m\",eems:\"m\",eemt:\"r\",\"eeni \":11,eensa:11,eepi:\"m\",eeps:\"m\",eepy:\"m\",eerde:\"r\",eerik:\"1c\",eerli:\"r\",eesee:11,\"eesi \":11,eesmu:\"1d\",eess:11,eetj:\"r\",eets:\"m\",eeuw:\"r\",eex:\"u\",eeë:\"r\",\"efar \":\"z\",\"efde \":\"r\",efeit:\"p\",effay:3,effir:3,efido:\"1p\",efier:\"o\",efiku:\"1p\",efki:3,efna:13,efni:13,efnu:13,\"efo \":\"1o\",eftir:13,\"efur \":13,efuz:15,efäl:\"n\",efän:\"n\",efæ:\"z\",\"eg-s\":3,egave:\"z\",egavi:\"t\",egaz:\"q\",egc:14,\"egd \":\"r\",egea:15,egebe:\"n\",\"egee \":1,egeko:4,egeo:\"t\",\"eger-\":\"1n\",eggas:3,eggia:\"q\",eggio:\"q\",eggj:13,egha:14,eghd:\"1q\",eghl:\"1q\",eghni:\"1q\",\"egim \":\"1n\",egimi:\"1n\",egine:\"1n\",egini:\"1n\",\"egit \":\"t\",egiş:\"1n\",\"egja \":13,egjo:14,eglia:\"q\",eglio:\"q\",eglát:14,egned:\"z\",egold:14,egom:\"1o\",egou:\"p\",egov:\"v\",egozi:\"q\",egp:14,egrib:\"1d\",egrij:\"r\",egrot:\"t\",egræ:\"z\",egta:14,egtig:1,eguei:\"p\",\"egur \":13,egué:\"o\",eguí:\"o\",egym:14,egynd:\"z\",egys:14,egzaw:3,egård:\"z\",egé:14,egê:\"p\",egíte:14,\"egó \":\"o\",egóc:\"p\",egö:14,egún:\"o\",egā:\"1d\",egă:15,\"eh'a\":\"1q\",eharu:\"b\",ehau:\"n\",ehee:\"r\",ehej:\"1o\",ehete:14,ehets:14,ehg:\"n\",ehid:\"b\",ehj:\"z\",ehka:\"b\",ehkä:11,ehler:\"n\",\"ehn \":\"n\",ehnt:\"n\",ehny:11,ehora:\"t\",ehq:\"1q\",\"ehr \":\"n\",ehs:\"n\",\"eht \":\"n\",ehti:11,ehör:\"n\",ehø:\"z\",\"ei-m\":\"p\",\"eia-\":\"p\",eias:\"p\",eiat:15,\"eib \":\"n\",eibt:\"n\",eici:\"s\",eiddi:13,\"eido \":\"1b\",eidun:\"n\",eidus:\"1c\",eidz:\"1d\",eife:\"n\",eight:\"m\",\"eigu \":\"1b\",eigub:13,eihn:\"n\",\"eii \":15,eikal:\"1b\",eikar:13,eikia:\"1b\",eikka:11,eikni:13,eikum:\"1d\",eikur:13,eikä:11,eild:13,eilik:1,eillé:\"l\",eimil:13,eimsk:13,eimu:13,einb:\"n\",\"eing \":\"m\",einge:\"n\",einli:\"n\",\"einn \":13,einsa:\"n\",einud:\"1c\",einum:13,einzi:\"n\",\"eio-\":\"p\",eion:15,eios:\"p\",eird:\"m\",eirt:\"s\",\"eisi \":\"1b\",eisie:1,eisiu:\"1b\",eisj:\"r\",\"eisk \":\"1b\",eislu:13,eisus:\"1b\",eitai:\"1b\",\"eith \":\"s\",eitir:13,\"eits \":\"n\",\"eitt \":13,eitth:13,eiul:15,eius:\"t\",eix:\"p\",\"eizi \":\"1d\",eiä:11,eiç:\"p\",eič:\"1b\",eiš:\"1b\",\"ej'\":\"1q\",\"ejak \":\"b\",ejaké:\"y\",ejdet:\"z\",ejds:\"z\",ejegi:\"1n\",ejei:\"p\",ejesi:\"1n\",ejich:\"u\",\"ejl \":\"z\",ejlep:\"u\",ejlig:\"z\",ejmah:\"1q\",\"ejon \":\"1o\",ejor:\"o\",ejpa:\"1o\",\"ejr \":\"z\",ejret:\"z\",ejsp:\"u\",\"ejte \":\"u\",ejtet:14,\"ejto \":\"y\",ejwe:4,ejza:\"1o\",ejä:11,\"ejí \":\"u\",ejít:\"u\",ejó:\"o\",ejö:14,eją:\"1a\",eję:\"1a\",ekao:\"v\",ekaw:\"1a\",ekbr:\"1o\",ekedy:\"y\",\"ekee \":11,ekeje:\"1n\",\"ekek \":14,\"ekem \":14,ekenh:\"r\",ekerj:\"b\",ekeye:4,ekg:\"1o\",ekiem:\"1a\",ekild:\"1f\",ekinn:13,\"ekir \":\"1f\",ekisk:10,ekiy:\"1f\",ekje:\"r\",ekkat:3,ekkje:12,ekkni:3,ekkt:13,\"ekl \":\"u\",ekley:\"1f\",ekliy:\"1f\",\"ekmi \":\"1n\",ekog:\"v\",ekoho:\"y\",\"ekol \":\"y\",ekoli:\"v\",ekoop:1,ekou:\"u\",ekpl:\"1o\",ekrás:\"y\",ektoj:\"1o\",ektó:\"1a\",ekua:\"b\",ekvie:\"1b\",ekvo:\"1o\",ekvu:\"1o\",ekyu:3,ekz:\"1o\",ekám:\"u\",\"ekár \":\"y\",ekárk:\"y\",ekáro:\"y\",ekáv:\"u\",ekæ:\"z\",eké:14,eköm:\"1p\",ekø:\"z\",\"el'h\":\"q\",\"el-d\":3,\"el-i\":3,\"elab \":\"1c\",\"elah \":\"b\",\"elaj \":\"1o\",elaku:\"b\",elama:\"b\",elaw:\"b\",elaç:\"p\",elbia:\"1a\",elbs:\"n\",\"eldi'\":\"1q\",eldib:\"1c\",eldri:13,eldur:13,\"elee \":11,eleho:\"t\",elejt:14,elell:11,\"eleo \":\"v\",elesa:\"b\",elfog:14,elfs:\"r\",\"elg \":12,\"elho \":\"p\",elhos:\"p\",eligr:\"o\",eligt:\"z\",eliha:\"b\",eliki:\"v\",elior:\"t\",eliq:\"t\",elisk:\"1d\",eliy:\"1f\",\"eliš \":\"v\",\"elju \":\"v\",eljä:11,elkee:1,elkez:14,elky:\"u\",\"elká \":\"u\",\"ell'i\":\"q\",\"ell-a\":3,ellal:3,ellee:11,ellom:12,elmy:\"1n\",\"elob \":\"1p\",\"eloc \":15,\"elok \":\"y\",\"elol \":\"1p\",\"elpi \":\"1o\",elpt:\"r\",elqu:\"l\",elsda:\"z\",elset:\"z\",elski:\"1a\",elsku:\"1a\",eltj:\"r\",eltä:11,elté:14,eluar:\"b\",eluh:\"b\",\"elul \":15,elup:\"b\",elvm:\"z\",elvs:12,elyet:14,elyg:\"1b\",elyke:1,elyze:14,elà:\"l\",\"elám \":\"y\",elã:\"p\",\"elä \":11,eläm:11,elæ:\"z\",elç:\"1f\",eléc:\"o\",eléf:\"o\",elíb:\"u\",elò:\"q\",elógi:\"p\",elø:\"z\",\"elú \":\"y\",elā:\"1d\",elą:\"1b\",elīb:\"1d\",elš:\"u\",\"em-d\":3,\"em-t\":3,emaal:\"r\",emaan:11,emaga:\"1c\",emaka:\"b\",emakk:\"r\",emals:\"n\",emask:\"z\",emass:11,emačk:\"v\",emban:\"b\",embun:\"b\",embut:\"b\",\"emea \":15,emeck:\"y\",emegi:\"1n\",emeie:15,emein:\"n\",emej:\"o\",emey:\"1f\",\"emez \":\"1f\",emigo:\"o\",emiy:\"1f\",\"emiz \":\"1f\",emiñ:\"1n\",emişe:\"1n\",emlig:10,emlu:\"u\",emlé:14,\"emm \":3,emmem:3,\"emmi-\":3,emml:3,\"emmo \":\"q\",emmut:3,emnu:\"1f\",\"emob \":\"1p\",emohu:\"u\",\"emok \":\"1n\",\"emol \":\"1p\",emom:\"1p\",\"emot \":10,emoz:\"q\",empez:\"o\",empra:\"o\",emps:\"l\",empua:\"b\",empus:\"t\",emqu:\"t\",emren:3,emsal:3,\"emti \":3,emts:\"1d\",\"emua \":\"b\",emud:\"b\",emui:\"b\",emuka:\"b\",emán:\"o\",\"emás \":\"o\",emã:\"p\",emæ:\"z\",emè:\"l\",emél:14,emén:14,emön:\"1p\",emø:\"z\",emý:\"u\",emā:\"1d\",emą:\"1b\",emę:\"1b\",\"en't\":\"m\",\"en-i\":3,\"en-te\":3,enait:\"l\",\"enak \":\"b\",\"enar-\":\"b\",enawi:\"1a\",encas:\"1o\",\"ench \":\"m\",enció:\"o\",encs:14,encue:\"o\",endn:\"z\",endrá:\"o\",endw:\"n\",\"ene-\":\"1n\",enebl:\"1o\",enech:\"u\",\"enee \":11,eneem:1,enemu:\"b\",enex:\"t\",\"enez \":\"l\",enfan:\"l\",engaj:\"b\",engap:\"b\",engde:12,engga:\"b\",engha:\"b\",engig:12,engme:\"1q\",\"engs \":12,engse:12,enhed:\"z\",\"enho \":\"p\",enhum:\"p\",eniai:\"1b\",eniaz:\"y\",enih:\"v\",\"enii \":15,enima:\"1b\",eniml:\"1f\",eniy:\"1f\",eniñ:\"1n\",enią:\"1a\",enjad:\"b\",\"enje \":\"v\",enlij:\"r\",enly:\"m\",enmad:\"z\",\"enna-\":3,ennir:13,ennyi:14,ennyt:11,\"ennä \":11,enné:14,enník:\"y\",\"enob \":\"1p\",enoem:\"r\",\"enok \":\"1n\",enoo:\"r\",enori:\"1b\",ensez:\"l\",ensim:11,ensiy:\"d\",ensí:\"p\",ensó:\"o\",entap:\"1p\",entg:\"n\",entib:\"t\",entsc:\"n\",\"entó \":\"o\",entô:\"l\",\"enud \":\"1c\",enudo:\"o\",\"enug \":\"n\",enuje:\"u\",\"enul \":15,enuli:\"b\",\"enum \":\"t\",enuru:\"b\",\"enut \":11,enuto:\"q\",enuw:\"r\",envoy:\"l\",\"enwi \":3,enx:\"p\",enyuk:\"b\",enyul:3,enzó:\"o\",enã:\"p\",enäo:\"1c\",enær:13,enéi:\"o\",enê:\"l\",enía:\"o\",enô:\"p\",enön:\"1p\",\"enül \":14,enā:\"1d\",enă:15,eną:\"1b\",eoar:15,eoch:\"s\",eoe:\"r\",eogt:\"z\",eoil:\"s\",\"eoj \":\"1o\",eojn:\"1o\",eoma:\"v\",eomr:\"s\",eono:\"1o\",eoo:\"r\",eopg:\"z\",eopl:\"m\",eoru:\"t\",eorí:\"o\",eose:15,\"eou \":\"p\",eous:\"m\",eow:\"m\",eoz:\"q\",epang:\"b\",epap:\"1b\",epasi:\"1b\",\"epat \":\"b\",epatr:\"1o\",epav:\"1b\",epaz:\"1d\",epaž:\"1b\",epea:\"m\",epeda:\"b\",epild:\"1d\",epimi:\"1f\",\"epit \":\"t\",eply:\"m\",epodo:\"y\",epoi:\"p\",eppn:13,epria:\"y\",eprí:\"y\",eptal:\"u\",epty:\"1b\",epui:\"l\",epulu:\"b\",epük:\"1p\",epül:14,\"eq-\":3,eqb:3,eqq:3,eqran:3,eqs:3,eqw:3,\"er-de\":\"1n\",eraar:\"r\",\"erae \":\"t\",eraet:12,\"erah \":\"b\",erakh:\"b\",eranj:15,eranç:\"p\",erapa:\"b\",erasa:\"b\",eratá:\"y\",\"erau \":15,eraus:\"n\",eraw:\"b\",eraç:\"p\",ercay:\"b\",ercí:\"p\",erdif:12,\"erdt \":12,erdw:\"r\",erdz:\"1a\",erdó:\"o\",erebb:\"q\",ereki:\"1f\",erenç:\"p\",eresz:14,eretn:14,erewe:4,erfah:\"n\",erfü:\"n\",ergad:\"r\",ergai:\"1b\",erhov:\"z\",eriau:\"1b\",eriez:\"l\",erigg:\"q\",\"erij \":\"r\",erije:\"r\",eriou:\"m\",erioz:\"1o\",erisk:\"z\",eriyo:\"1f\",eriê:\"p\",eriñ:\"1n\",erjad:\"b\",erjal:\"b\",erkau:\"n\",erkk:11,erkso:12,erkän:10,erlal:\"b\",erlam:\"b\",\"erlu \":\"b\",ermey:\"1f\",ernej:\"1o\",erniu:\"1b\",ernse:\"n\",ernsy:\"z\",ernt:\"n\",\"eroj \":\"1o\",\"erok \":\"y\",eroor:\"r\",\"erop \":\"r\",erous:\"m\",erow:\"1a\",\"erp \":\"r\",\"erpo \":\"o\",\"erra-\":3,erreu:\"l\",erriè:\"l\",erró:\"o\",erseb:\"b\",ersiw:3,erske:\"z\",ersoa:15,ersár:\"p\",ertui:\"r\",\"erul \":15,erung:\"n\",erwij:\"r\",eryb:\"m\",eryny:\"1n\",eryon:\"m\",eryth:\"m\",eryu:3,erzy:\"1a\",erà:\"q\",eráv:\"p\",eráš:\"y\",erâ:\"p\",erår:\"z\",eræ:\"z\",eréi:\"o\",erê:\"p\",erì:\"q\",\"ería \":\"o\",erík:13,erím:\"y\",erò:\"q\",\"eró \":\"o\",erói:\"p\",erød:\"z\",erømt:\"z\",erù:\"q\",erült:14,\"erý \":\"u\",erā:\"t\",eră:15,erć:\"1a\",erči:\"1b\",erē:\"t\",\"erī \":\"t\",erō:\"t\",erš:\"1b\",erū:\"1b\",erž:\"1b\",\"es-t\":\"l\",\"es-v\":\"l\",esago:\"1p\",esagt:\"n\",esaik:\"b\",esala:\"b\",esatt:\"q\",esaw:\"b\",esay:\"o\",\"esc \":15,eschl:\"n\",eschw:\"n\",escre:\"p\",esebb:14,esehe:\"n\",eseň:\"y\",\"esha \":4,esiat:\"y\",esich:\"n\",\"esid \":\"1c\",esiel:12,esió:\"o\",esią:\"1a\",eskab:\"z\",eskju:13,eskry:1,eskw:\"d\",eslay:3,eslis:\"r\",eslot:\"r\",esly:\"u\",\"esma \":\"p\",esmie:\"y\",esmí:\"u\",esnic:\"u\",esná:\"u\",esoa:15,esoe:1,esoi:\"l\",esoj:\"1o\",esok:\"b\",\"eson \":\"1o\",esoru:15,espē:\"1d\",esri:3,essv:12,essá:\"p\",essä:11,\"est-c\":\"l\",estef:12,estev:\"p\",estj:\"r\",estno:\"y\",estoy:\"o\",esuch:\"n\",esund:\"n\",esuri:\"t\",esved:\"y\",esvær:\"z\",eszc:\"1a\",eszi:14,\"es \":\"l\",esát:\"u\",esã:\"p\",eså:\"z\",esæ:\"z\",esê:1,esía:\"o\",\"esó \":\"o\",esök:10,esā:\"1d\",esă:15,esą:\"1b\",esť:\"y\",\"et-i\":3,etaan:11,etae:\"t\",etahu:\"b\",etaja:\"1c\",\"etap \":\"b\",etapi:\"b\",etci:\"y\",etda:\"1n\",etde:\"1n\",etdi:\"1n\",\"eteg \":14,\"etej \":\"y\",ether:\"m\",ethin:\"m\",ethv:\"z\",etiam:\"t\",etiek:\"1d\",etja:13,etji:1,etkil:\"1f\",etky:\"y\",etký:\"y\",\"etl \":\"u\",etler:\"1f\",etmeg:\"1n\",etmem:\"1f\",etmen:\"1f\",etmey:\"1f\",etmä:\"1n\",etnek:14,etnu:\"y\",etné:14,etob:\"1p\",etoms:\"1p\",\"etop \":\"z\",\"etov \":\"y\",etož:\"y\",etq:3,etræ:\"z\",etso:\"d\",etsz:14,ettm:3,ettna:3,ettom:11,ettop:12,että:11,etug:\"b\",\"etul \":15,etuse:\"1c\",etwas:\"n\",etwee:\"m\",etyr:12,\"etz \":\"n\",etzen:\"n\",\"etzt \":\"n\",etzte:\"n\",etzu:\"n\",età:\"q\",\"etä \":11,etå:\"z\",etæ:\"z\",etç:\"1f\",etê:\"p\",etò:\"q\",etø:\"z\",etý:\"u\",etā:\"1d\",etă:15,\"eu-s\":\"p\",\"eua \":\"p\",euch:\"n\",euen:\"n\",euer:\"n\",eufe:\"n\",\"eug \":\"n\",eugd:\"r\",euil:\"l\",\"euk \":\"r\",euken:\"r\",eulem:\"l\",eumí:\"u\",eupl:\"l\",eurd:\"r\",eureu:\"l\",eusem:\"l\",\"eut-\":\"l\",euts:\"n\",eutä:\"1p\",euven:\"l\",\"euw \":\"r\",euwd:\"r\",euwe:\"r\",euws:\"r\",eux:\"l\",\"ev'\":\"q\",evaar:\"r\",\"evad \":\"1c\",evaja:\"1d\",evalg:\"1b\",evano:\"q\",evaru:\"1d\",evb:\"1q\",evc:\"1f\",evdi:\"1f\",\"eve-\":\"p\",eveer:\"r\",eveik:\"1b\",every:\"m\",\"evez \":\"l\",evg:\"1f\",\"evie \":\"y\",eviem:\"y\",evieš:\"y\",evif:\"1p\",evim:\"1f\",evini:\"1f\",eviy:\"1f\",eviš:\"v\",evle:\"1f\",evob:\"1p\",evoie:15,evoir:\"l\",evojk:\"v\",evom:\"1p\",evond:\"r\",evons:\"l\",\"evor \":\"n\",evp:\"1q\",evrai:\"l\",evt:\"1q\",\"evus \":\"1o\",evut:\"q\",evät:11,evå:\"z\",evæ:\"z\",evím:\"u\",evò:\"q\",\"evó \":\"o\",evö:\"n\",evø:\"z\",evā:\"1d\",evă:15,evč:\"y\",evē:\"1d\",evš:\"u\",\"ew'\":\"m\",ewaa:\"r\",ewb:\"m\",ewees:\"r\",eweld:\"r\",ewese:\"n\",ewf:\"m\",ewien:\"1a\",ewig:\"n\",ewij:\"r\",ewj:3,ewla:3,ewni:\"1a\",ewond:\"r\",ewp:\"m\",ewsp:\"m\",ewv:\"1q\",eww:3,ewz:3,ewü:\"n\",exata:\"p\",exb:3,exii:\"t\",exir:\"t\",exl:3,exus:\"t\",exx:3,exá:\"o\",exã:\"p\",exí:\"p\",\"ey'v\":\"m\",eyad:\"d\",eydaj:\"1q\",eyec:\"1f\",eyend:\"o\",eyfa:13,eyim:\"1f\",\"eyin \":\"1f\",eyj:13,\"eyk \":\"d\",eyki:13,\"eyla \":\"1f\",\"eyla'\":\"1f\",eyler:\"1f\",eylij:\"1q\",\"eyma \":13,eymd:13,eynd:13,eyol:\"d\",eypt:13,eyq:\"1q\",\"eyra \":13,eyrt:13,\"eyse \":\"1f\",eyst:13,\"eytt \":13,eyvet:\"1q\",eywij:\"1q\",eyz:\"1f\",eyó:\"o\",\"ez-m\":\"l\",ezabu:\"y\",ezapo:\"u\",ezba:15,ezca:\"o\",ezdet:14,ezdí:\"u\",ezelf:\"r\",ezere:4,ezf:3,\"ezig \":\"r\",ezii:15,ezinu:\"1d\",ezira:\"1o\",ezmir:3,eznam:\"u\",\"ezni \":14,ezná:\"u\",ezoc:\"r\",ezoe:\"r\",ezog:\"n\",ezoj:\"1o\",ezolv:15,ezono:\"1o\",ezpi:\"1a\",ezq:\"o\",ezri:3,ezte:14,ezur:\"1o\",\"ezut \":15,\"ezwa \":4,ezwar:3,ezzay:3,ezzel:14,ezzo:\"q\",ezä:\"n\",ezé:14,ezó:\"o\",ezę:\"1a\",\"eá \":\"s\",eã:\"p\",\"eä \":11,eäk:11,eäl:11,eäm:11,eät:11,eää:11,eå:\"z\",\"eæ \":\"t\",\"eç \":\"1f\",eça:\"p\",\"eço \":\"p\",\"eçu \":\"l\",\"eé \":\"o\",eéi:\"o\",eén:\"r\",eés:\"o\",eël:1,eën:\"r\",\"eí \":\"o\",eía:\"o\",eíb:\"o\",eíc:\"p\",eíd:\"o\",eím:\"o\",\"eír \":\"o\",eî:15,eïn:\"r\",eïr:\"r\",eïs:\"r\",eña:\"o\",eñe:\"o\",eño:\"o\",eò:\"q\",eón:\"o\",eõ:\"p\",eöf:\"n\",eúd:\"p\",eû:\"l\",eüb:\"n\",eüp:\"r\",eüti:\"1p\",eý:\"1n\",eā:\"t\",ečl:\"u\",ečo:\"y\",ečt:\"u\",eďa:\"y\",eđ:\"v\",eē:\"1d\",eğ:\"1f\",eī:\"t\",eı:\"1l\",eł:\"1a\",eń:\"1a\",eňa:\"y\",eō:\"t\",eşd:\"1n\",eşed:15,eşek:\"1f\",eşikl:\"1n\",eşim:\"1f\",eşin:\"1f\",eşip:\"1n\",eşk:\"1f\",eşle:\"1f\",eşy:\"1f\",ešo:\"1b\",ešp:\"1b\",ešv:\"1b\",\"eť \":\"y\",eťa:\"y\",eŭ:\"1o\",ežb:\"v\",ežd:\"1b\",ežl:\"u\",ežn:\"v\",ežs:\"1d\",ežt:\"1b\",eγ:3,eε:3,eн:\"1l\",\"e‘\":\"n\",\"f-b\":\"m\",\"f-e\":\"m\",\"f-f\":\"m\",\"f-g\":\"m\",\"f-h\":\"m\",\"f-k\":\"m\",\"f-li \":\"1p\",\"f-m\":\"m\",\"f-n\":3,\"f-o\":\"m\",\"f-p\":\"m\",\"f-r\":\"m\",\"f-s\":\"m\",\"f-t\":\"m\",\"f-w\":\"m\",\"fa'\":\"q\",fabb:\"q\",facen:\"q\",\"fach \":\"n\",\"faci \":15,facie:\"t\",facis:\"t\",facit:\"t\",facta:\"t\",fadı:\"1f\",\"fai \":\"q\",faid:\"s\",\"faim \":\"l\",\"fais \":\"l\",faisa:\"l\",\"fait \":\"l\",faite:\"l\",fajč:\"y\",fakat:\"1f\",fako:\"1o\",falam:\"p\",\"fald \":\"z\",faldt:\"z\",falei:\"p\",falou:\"p\",famik:\"1p\",famm:\"q\",famí:\"p\",fandt:\"z\",fangi:13,fanno:\"q\",fanoj:\"1o\",faoi:\"s\",fap:15,farbr:10,farge:12,farit:\"1o\",\"fark \":\"1f\",farkl:\"1f\",farlo:\"q\",faros:\"1o\",faru:\"1o\",farve:\"z\",fasha:4,fashe:4,fath:\"m\",fatto:\"q\",faut:\"l\",fazem:\"p\",fazer:\"p\",fazla:\"1f\",\"faça \":\"p\",\"faço \":\"p\",fać:\"1a\",fch:\"n\",\"fd \":\"r\",fda:\"r\",fdb:\"r\",fdd:\"r\",fdh:\"r\",fdi:\"r\",fdl:\"r\",fdp:\"r\",fds:\"r\",fdz:\"r\",\"fe'\":\"m\",feam:\"t\",fearr:\"s\",feat:\"m\",feau:15,febb:\"q\",\"fece \":\"q\",fecis:\"t\",fecit:\"t\",feel:\"m\",feest:\"r\",fehl:\"n\",fehér:14,feic:\"s\",feie:\"n\",feio:\"p\",feira:\"p\",feito:\"p\",fejez:14,fejo:\"1o\",feket:14,felad:14,feldi:12,felej:14,felel:14,\"fell-\":3,felul:15,felé:14,femei:15,femme:\"l\",fems:\"z\",fenc:\"m\",fengi:13,fengs:12,fenst:\"n\",feq:3,ferai:\"l\",ferea:15,ferki:3,fermé:\"l\",feroj:\"1o\",\"feu \":\"l\",feue:\"n\",feui:\"l\",\"few \":\"m\",fex:3,feç:\"p\",\"ff'\":\"m\",ffh:\"m\",ffn:\"n\",ffy:\"m\",ffø:\"z\",fgab:\"n\",fgelo:\"r\",fgå:\"z\",fhea:\"s\",fhio:\"s\",fhá:\"s\",fhä:\"n\",fhæ:\"z\",fhé:\"s\",fhö:\"n\",fiap:\"z\",ficiu:\"t\",ficou:\"p\",fidol:\"1p\",fidom:\"1p\",fidö:\"1p\",fiec:15,\"fied \":\"m\",fiest:\"o\",fiets:\"r\",figh:\"m\",figl:\"q\",figy:14,fijn:\"r\",fiju:\"1d\",fikir:\"1f\",fikk:12,fikri:\"1f\",fikul:\"1p\",filha:\"p\",filho:\"p\",filii:\"t\",filiu:\"t\",fils:\"l\",fimm:13,finf:\"1o\",fior:\"q\",fip:\"1o\",firo:\"p\",first:\"m\",fish:\"m\",\"fitt \":13,\"fiu \":15,\"fiul \":15,fium:\"q\",fiut:\"q\",five:\"m\",fiw:3,\"fiz \":\"p\",fizet:14,fiè:\"l\",fja:13,fjell:12,fjen:\"z\",\"fjor \":12,fjá:13,fjär:10,fjó:13,fjö:13,\"fk \":3,\"fk-\":3,\"fl \":\"m\",fleir:13,fleni:\"1p\",flens:\"1p\",flera:10,fleur:\"l\",flich:\"n\",flj:13,\"flod \":\"z\",flol:\"1p\",floro:\"1o\",flow:\"m\",flua:\"1o\",fluki:\"1p\",flum:\"t\",fluv:\"t\",flyde:\"z\",flyi:\"m\",flyr:12,flys:\"z\",flyte:12,flyv:\"z\",flå:\"z\",flé:\"l\",flød:\"z\",flý:13,fme:\"n\",fmu:\"n\",fmæ:13,\"fn \":13,fnd:13,fnv:13,foame:15,foar:15,\"fob \":\"1p\",fobs:\"1p\",\"foc \":15,\"fod \":\"z\",fodb:\"z\",fodre:\"z\",fods:\"z\",foed:\"t\",\"fof \":\"1p\",foghl:\"s\",fogla:14,fogom:14,foh:\"n\",fois:\"l\",\"foj \":\"1o\",foje:\"1o\",fojn:\"1o\",fojo:\"1o\",folge:\"n\",folha:\"p\",follo:\"m\",folos:15,foly:14,\"fom \":\"1p\",\"fome \":\"p\",fomo:\"p\",foms:\"1p\",fonc:\"l\",fonul:15,fool:\"m\",foram:\"p\",forbu:\"z\",forir:\"1o\",\"fost \":15,fott:\"q\",foun:\"m\",fq:3,\"fr \":\"u\",fragt:\"n\",fraid:\"m\",framf:10,franč:\"1d\",frasi:\"q\",frati:\"1o\",frato:\"1o\",fratr:\"t\",\"frau \":\"n\",frazo:\"1o\",frecu:\"o\",fredd:\"q\",fredi:\"1p\",freds:\"z\",\"free \":\"m\",freka:13,frenc:\"m\",freun:\"n\",\"frio \":\"p\",frj:13,froh:\"n\",froi:\"l\",\"from \":\"m\",frua:\"1o\",\"frue \":\"1o\",frugt:\"z\",fruko:10,frumo:15,fruo:\"1o\",fryg:\"z\",frykt:12,\"frá \":13,fráb:13,frâ:15,främ:10,frå:10,fræ:13,frè:\"l\",frì:\"q\",fría:\"o\",fröns:13,frø:\"z\",frú:13,frü:\"n\",frā:\"t\",fsak:13,fsb:\"n\",fsky:\"z\",fsted:\"z\",fsz:\"n\",fsö:13,ftede:\"z\",ftens:\"z\",ftha:\"z\",ftij:\"r\",ftm:\"n\",ftr:\"n\",ftul:15,ftur:13,fty:\"m\",fuai:\"s\",fueg:\"o\",fueri:\"t\",fuero:\"o\",fuert:\"o\",fuerz:\"o\",fuf:3,fugg:\"q\",fuil:\"s\",fuim:\"o\",fuiss:\"t\",\"fuld \":\"z\",fulds:\"z\",funzi:\"q\",funç:\"p\",fuoc:\"q\",fuor:\"q\",furtu:15,fuu:11,\"fuye \":4,fué:\"o\",fvi:\"z\",fvo:\"r\",fx:3,fyld:\"z\",fylg:13,fylt:12,fyra:10,fyren:12,fyri:13,fyrs:13,fyy:11,fzi:\"n\",fà:\"q\",fáj:14,fám:\"u\",fár:14,fáth:\"s\",fân:\"p\",fâr:15,fã:\"p\",fäc:\"n\",fäh:\"n\",fällt:\"n\",\"fär \":10,färd:10,fären:10,färg:10,fåe:\"z\",fåg:10,fån:10,fås:\"z\",fædd:13,fæl:\"z\",fæn:\"z\",færi:13,fætt:\"z\",fç:\"1f\",\"fè \":\"q\",fèr:\"l\",féa:\"s\",féc:\"l\",féd:\"l\",fée:\"l\",fékk:13,féla:13,féle:14,féll:13,féren:\"l\",férf:14,féria:\"p\",féré:\"l\",fév:\"l\",fêm:\"p\",fía:\"o\",fíce:\"p\",fíe:\"o\",fíj:\"o\",fím:\"o\",fî:\"l\",fò:\"q\",\"fó \":\"o\",fól:13,\"fór \":13,\"fós \":\"s\",fô:\"p\",född:10,födel:10,föge:\"1p\",föld:14,följe:10,föll:10,föns:10,förb:10,föred:10,föres:10,föret:10,förf:10,förk:10,förlo:10,förn:10,förr:10,förs:10,fört:10,förv:10,förä:10,fødd:\"z\",føde:\"z\",fún:\"o\",fútb:\"o\",fû:\"l\",füh:\"n\",fürc:\"n\",fā:\"t\",fă:15,fą:\"1b\",fč:3,fē:\"t\",fę:\"1a\",fī:\"t\",fı:\"1f\",fœ:\"t\",fş:\"1f\",fū:\"t\",fε:3,\"g)\":\"m\",\"g-aa\":\"d\",\"g-al\":\"d\",\"g-an\":\"d\",\"g-ar\":\"d\",\"g-ay\":\"d\",\"g-c\":\"m\",\"g-da\":\"d\",\"g-hi\":\"d\",\"g-ib\":\"d\",\"g-ma\":\"d\",\"g-n\":3,\"g-r\":\"m\",\"g-s \":3,\"g-us\":\"d\",\"ga-m\":\"p\",gaano:\"d\",gaar:\"r\",gaat:\"r\",\"gabi \":\"d\",\"gabo \":4,gaby:\"1n\",gadsi:\"1d\",gadz:\"1a\",gaei:\"s\",gagaw:\"d\",gagl:\"q\",gagne:\"l\",\"gah \":\"b\",gainn:\"s\",gains:\"m\",gaism:\"1d\",gajn:\"1o\",gako:\"d\",gaku:\"b\",galbo:\"1b\",galdy:\"1n\",galim:\"1b\",galiu:\"1b\",galvo:\"1b\",galy:\"1n\",gamal:13,gamit:\"d\",ganas:\"o\",gandr:\"1d\",ganh:\"p\",ganir:4,ganmu:\"b\",ganoo:\"d\",ganpu:\"1q\",ganum:13,ganze:\"n\",ganó:\"o\",\"gao \":\"v\",\"gapa \":\"b\",gapy:\"1n\",gaq:\"1q\",garaş:\"1n\",gardé:\"l\",garot:\"p\",garp:\"b\",garry:\"1n\",garuk:4,garş:\"1n\",garš:\"1d\",\"gasi \":\"1c\",gatak:\"b\",gatav:\"1d\",gatk:\"b\",\"gau \":\"1b\",gaude:\"t\",gaut:\"1b\",gavit:\"t\",\"gaye \":4,gayo:\"d\",gazda:14,gazza:\"q\",gazzi:\"q\",gazá:14,gañ:\"o\",gać:\"1a\",gač:\"v\",gaž:\"1b\",gbab:\"d\",gbag:\"d\",\"gban \":14,gbas:\"d\",gbay:\"d\",gbeb:\"d\",gbib:\"d\",gbig:\"d\",gbin:\"d\",gbiy:\"d\",gbt:\"m\",gbub:\"d\",gca:\"s\",gce:\"s\",gch:\"1q\",gco:\"s\",gcr:\"s\",gcs:14,gcó:\"s\",gdag:\"d\",\"gdaj \":\"1q\",gdaq:\"1q\",gdes:\"d\",gdig:\"d\",gdp:\"m\",gdy:\"1a\",gdz:\"1a\",\"gead \":\"s\",geai:\"l\",geben:\"n\",gebn:\"n\",gebou:\"r\",gebä:\"n\",gebö:\"1p\",geca:\"b\",\"gece \":\"1f\",gedaa:\"r\",geed:\"1o\",geef:\"r\",geel:\"r\",\"gefa \":13,gefah:\"n\",gefal:\"n\",gefun:\"n\",gefü:\"n\",gegeb:\"n\",gegee:1,gegen:\"n\",geges:\"n\",geget:\"r\",gegev:\"r\",\"gegn \":13,\"gehe \":\"n\",gehen:\"n\",geht:\"n\",gehö:\"n\",geiro:\"p\",gekau:\"n\",\"geko \":4,gelec:\"1f\",geled:\"r\",gelez:\"r\",gelj:\"1n\",gelop:\"r\",gelov:\"r\",gelyk:1,gelý:\"1n\",gemac:\"n\",gemak:\"r\",gemei:\"n\",gemp:\"b\",genau:\"n\",genel:\"1f\",gengu:13,geniä:\"1p\",genug:\"n\",genç:\"1f\",genü:\"n\",gepat:\"1o\",gepü:\"1p\",gerag:4,gerra:3,gerä:\"n\",gerç:\"1f\",gerą:\"1b\",geseh:\"n\",gesic:\"n\",gesim:\"t\",gesis:\"1o\",gesla:\"r\",gesun:\"n\",getah:\"b\",getan:\"n\",getol:\"1p\",\"gets \":\"m\",getum:13,getur:13,geval:\"r\",gevee:\"r\",geven:\"r\",gevon:\"r\",gewel:\"r\",gewes:\"n\",gewin:\"n\",\"geza \":4,\"geze \":4,gezek:\"1n\",gezon:\"r\",geâ:\"l\",geä:\"n\",geë:\"r\",geï:\"r\",geó:\"p\",geö:\"n\",geň:\"1n\",geş:\"1n\",gfy:\"z\",gfä:\"n\",ggm:3,ggp:\"m\",ggs:\"m\",ggz:3,ggì:\"q\",ggó:14,\"gh'\":\"1q\",\"gh-\":\"m\",\"gha' \":\"1q\",ghac:\"1q\",\"ghah \":\"1q\",ghaha:\"d\",\"ghaj \":\"1q\",ghajb:\"1q\",ghaw:\"d\",ghay:\"1q\",ghbe:\"1q\",ghc:\"1q\",ghdi:\"1q\",gheds:\"z\",\"ghen \":\"a\",ghh:\"1q\",ghie:\"q\",ghij:\"1q\",ghilt:\"q\",ghiq:\"1q\",ghitl:\"1q\",ghiw:\"d\",ghj:\"1q\",ghly:\"m\",ghm:\"1q\",ghnis:\"1q\",ghob:\"1q\",ghog:\"1q\",ghoj:\"1q\",ghom:\"1q\",ghop:\"1q\",ghorg:\"1q\",\"ghos \":\"1q\",ghot:\"1q\",ghp:\"1q\",ghq:\"1q\",ghro:\"1q\",ghta:\"1q\",ghte:\"m\",ghti:\"m\",ghtl:\"m\",ghts:\"m\",\"ghu'\":\"1q\",ghun:\"1q\",ghv:\"1q\",ghwi:\"1q\",ghè:\"a\",ghé:\"a\",ghê:\"a\",giac:\"q\",giaj:\"1o\",giao:\"a\",giap:\"q\",giard:\"q\",giare:\"q\",giau:\"1b\",\"gibi \":\"1f\",gibt:\"n\",gibu:\"t\",gidec:\"1f\",gidiy:\"1f\",gidu:\"t\",giel:\"1a\",giets:1,gifa:4,gifi:4,giha:\"d\",gihe:4,gihu:4,\"gij \":\"r\",gijo:\"1b\",gijä:\"1n\",giki:4,gikk:12,giliz:\"1f\",ginag:\"d\",ginaw:\"d\",gingo:4,gioc:\"q\",giol:\"q\",giorn:\"q\",giov:\"q\",gipi:\"d\",giqu:\"l\",gisay:\"1f\",gisd:\"d\",gisha:4,gitaj:\"1o\",gitj:\"1n\",gitmi:\"1f\",gitn:\"d\",\"gitt \":12,gitto:\"q\",\"gitu \":\"b\",gitum:4,giud:\"q\",giug:\"q\",giun:\"q\",giuo:\"1b\",giur:\"q\",giust:\"q\",\"giv \":\"z\",givi:\"m\",givol:\"1p\",givom:\"1p\",\"giá \":\"a\",giç:\"1n\",gië:\"r\",giñ:\"1n\",gión:\"o\",giö:\"n\",giú:\"a\",gič:\"v\",giň:\"1n\",giš:\"1b\",gjem:12,gjer:12,gjet:12,gjob:14,gjum:13,gjur:13,gjus:13,gjá:14,gjä:\"n\",gjör:13,gjø:12,gkab:\"d\",gkad:\"d\",gkah:\"d\",gkai:\"d\",gkak:\"d\",gkam:\"d\",\"gkan \":\"b\",gkay:\"d\",\"gke \":\"d\",gkei:\"n\",gkh:\"b\",gkir:\"b\",gkit:\"d\",gkol:\"d\",gkot:\"d\",\"gku \":\"b\",gkuk:\"d\",gké:14,gkö:14,glag:\"d\",glai:\"l\",glaka:\"d\",glann:11,glany:\"1n\",gleda:\"v\",glei:\"n\",glesk:\"v\",gleti:\"1p\",gley:13,gleza:15,gliam:\"q\",gliat:\"q\",glica:\"t\",glice:\"t\",glich:\"n\",gliel:\"q\",gliet:\"q\",gliml:\"r\",glior:\"q\",glios:\"q\",glisc:\"n\",gliš:\"1b\",glj:10,glug:13,gluj:\"1o\",glul:\"d\",glup:\"v\",glê:\"p\",glí:\"o\",glöm:10,glø:\"z\",glü:\"n\",glā:\"1d\",glą:\"1a\",glę:\"1a\",\"gm \":\"m\",gmad:\"d\",gmama:\"d\",\"gmey \":\"1q\",gmez:\"1o\",gmis:\"1c\",gmul:\"d\",gmum:\"d\",gmy:13,gnae:\"t\",gnaf:3,\"gnak \":14,\"gnam \":\"t\",gnap:14,\"gnar \":10,gnato:\"q\",gnay:\"d\",gneb:\"z\",gnede:\"z\",gnifa:\"1o\",gnm:\"m\",gnoj:\"1o\",gnov:\"t\",gnp:\"m\",gnv:\"z\",\"gnya \":\"b\",\"gné \":\"l\",gnü:\"n\",gnā:\"t\",gną:\"1a\",gnę:\"1a\",goan:\"a\",goat:\"m\",\"gob \":\"1p\",gobi:\"o\",gobs:\"1p\",gocc:\"q\",goco:\"1o\",godil:\"v\",godin:\"v\",godz:\"1a\",goede:\"r\",goes:\"m\",\"gof \":\"1p\",goga:4,gogl:\"q\",goh:\"1o\",going:\"m\",\"goj \":\"1o\",gojn:\"1o\",gokat:14,golol:\"1p\",gomw:4,gonb:10,gonen:10,gonh:\"p\",gonsi:10,gonst:10,gonti:10,good:\"m\",gooi:\"r\",goq:\"1q\",goran:4,gork:\"1n\",gorą:\"1a\",\"goti \":\"1b\",gotio:\"t\",\"gov \":\"v\",govar:\"v\",govo:\"v\",gowu:\"1n\",\"goy \":\"d\",goye:4,\"gozi \":\"q\",goá:\"a\",goş:\"1n\",\"gp \":\"m\",gpah:\"d\",gpak:\"d\",gpal:\"d\",gpap:\"d\",gpas:\"d\",gpat:\"d\",gpit:\"d\",gpua:\"d\",gq:\"1q\",grabl:\"1o\",grae:\"t\",graç:\"p\",graž:\"1b\",great:\"m\",gredo:\"p\",\"gree \":\"m\",gregl:13,greie:12,grein:13,greja:\"p\",greu:15,greş:15,greš:\"v\",gribu:\"1d\",griji:15,grijo:15,grine:\"z\",grj:13,grl:\"v\",groso:\"o\",grota:\"t\",grow:\"m\",grz:\"1a\",\"grá \":\"s\",gráta:13,gráv:\"p\",gräns:10,gråd:12,grè:\"l\",gréc:\"p\",gría:\"o\",\"gró \":\"o\",grā:\"1d\",gră:15,grč:\"v\",grūt:\"1d\",\"gs'\":\"m\",\"gs-\":\"n\",gsá:14,gsæ:\"z\",gsé:14,\"gtah \":\"1q\",gtata:\"d\",gtd:\"1n\",gtede:\"z\",gtf:\"z\",gth:\"m\",gtige:\"z\",gtigt:\"z\",gtit:\"d\",gtl:\"1n\",gtn:\"z\",gtog:\"d\",gtra:\"d\",gtre:\"z\",gtsa:\"d\",gtui:\"r\",gtul:\"d\",gtut:\"d\",gtv:10,\"gty \":\"1n\",gtym:\"1n\",gtyny:\"1n\",gtyv:\"z\",gtö:14,\"gu'\":\"1q\",\"gu-\":3,guaj:\"o\",\"guam \":\"t\",gubb:10,gubí:13,guca:\"b\",gudik:\"1p\",\"guei \":\"p\",gufa:4,\"guh \":\"b\",guhe:4,\"guia \":\"p\",guien:\"o\",\"guis \":\"t\",guiu:\"p\",guko:4,guku:4,guldy:\"1n\",guleg:13,gulho:\"p\",gullo:\"o\",gulv:\"z\",gumag:\"d\",gumaw:\"d\",gumá:13,gunak:\"b\",gunas:\"o\",gunj:\"b\",guno:\"o\",guntó:\"o\",\"gup \":\"b\",gupi:\"d\",gurl:\"1n\",gurn:\"v\",guruk:4,\"gusa \":4,gusav:4,guse:\"1c\",gusom:4,gusub:4,gusum:4,gutar:\"1n\",\"gutt \":12,gutu:4,guve:15,guw:\"d\",guye:4,guys:\"m\",guá:\"o\",guç:\"p\",guía:\"o\",guñ:\"o\",guć:\"v\",guš:\"v\",guž:\"1b\",gvá:14,gvæ:\"z\",gwei:\"n\",gwr:\"m\",gyak:14,gyay:\"d\",gydy:\"1b\",gye:14,gyh:14,gyi:14,gymy:\"1n\",gynan:\"1n\",gynda:\"1n\",gynde:\"z\",gynn:12,gynt:12,gyny:\"1n\",\"gyo \":\"d\",gyok:14,gyon:14,gyor:14,gyry:\"1n\",gysg:\"1n\",gysz:14,gyta:14,gyu:14,\"gyz \":\"1n\",gyza:\"1n\",gyzy:\"1n\",gyá:14,gyé:14,gyó:14,gyö:14,gyü:14,gyň:\"1n\",gzn:\"1d\",gzt:\"1b\",\"g \":\"n\",gà:\"a\",\"gá-\":\"p\",gáf:13,\"gái \":\"a\",\"gát \":14,gáy:\"a\",\"gân \":\"a\",gând:15,gâte:\"l\",gây:\"a\",\"gã \":\"a\",gão:\"p\",\"gä \":\"1k\",gäb:\"n\",gäh:\"n\",gäll:10,gärn:10,gät:11,gäv:10,gåen:\"z\",gån:10,gårs:\"z\",gåv:10,gæl:\"z\",gæn:\"z\",gær:13,gæs:\"z\",gæti:13,gæv:\"z\",gè:\"l\",gée:\"l\",géo:\"l\",gép:14,gérie:\"l\",gért:14,\"gê-\":\"p\",gêm:\"p\",\"gí \":\"o\",gía:\"o\",gíp:\"p\",gív:\"p\",gî:\"l\",gò:\"q\",góci:\"p\",gód:14,góp:\"a\",gô:\"a\",gõe:\"p\",gömu:13,\"gön \":\"1p\",gönde:\"1f\",göng:13,\"göre \":\"1f\",görmä:\"1n\",göst:\"1f\",götu:13,göw:\"1n\",gø:\"z\",gù:\"q\",\"gún \":\"o\",gúr:\"o\",güc:\"1f\",güj:\"1n\",güli:\"1n\",güne:\"1f\",güni:\"1n\",gürr:\"1n\",güv:\"1f\",güz:\"1f\",güç:\"1f\",\"gā \":\"1d\",gāt:\"1d\",gāv:\"t\",\"gă \":15,găm:15,găn:\"a\",gąs:\"1b\",gč:\"1b\",gē:\"t\",gī:\"t\",gı:\"1f\",gł:\"1a\",gō:\"t\",gş:\"1n\",gša:\"1b\",gūn:\"1b\",gūs:\"1b\",gž:\"1b\",g̃:\"d\",\"h'eg\":\"1q\",\"h'io\":\"q\",\"h)\":\"n\",\"h-b\":\"m\",\"h-c\":\"m\",\"h-e\":\"m\",\"h-o\":\"m\",\"h-p\":\"m\",\"h-q\":\"m\",\"h-t\":\"m\",\"ha'l\":\"1q\",\"ha-t-\":3,\"haa \":11,\"habe \":\"n\",habem:\"t\",habh:\"s\",habis:\"b\",habla:\"o\",habli:\"1q\",hablo:\"o\",habr:\"o\",habt:\"n\",habí:\"o\",hace:\"o\",haci:\"o\",hacu:\"l\",hací:\"o\",hadle:\"y\",hadra:\"s\",haec:\"t\",haer:\"t\",\"hafa \":13,hafte:\"n\",\"haga \":\"o\",hagas:\"o\",hagh:\"1q\",hagia:\"b\",hagy:14,hahan:\"d\",haht:\"1q\",hahv:\"1q\",haige:\"1c\",haigh:\"s\",haint:\"s\",hairt:\"s\",haith:\"s\",hajde:\"v\",haje:4,hajte:\"y\",\"hak-\":\"b\",hakd:\"1n\",hakyk:\"1n\",haldi:13,halds:13,halos:\"d\",halua:11,halus:11,halá:14,hamad:\"p\",hamn:10,hamw:4,hanad:\"1n\",hanap:\"d\",hanb:\"y\",\"hanc \":\"t\",hangg:\"d\",hanh:\"a\",\"hano \":\"1o\",hansa:11,hanso:\"l\",hanz:4,haoi:\"s\",haon:\"s\",hapon:\"d\",hapé:\"p\",\"haq \":\"1q\",hardt:12,harfa:\"s\",harga:\"b\",harid:\"1c\",harik:\"1f\",harly:\"1n\",haroj:\"1o\",\"harr \":\"s\",harus:\"b\",\"haré \":\"o\",harí:\"o\",hasha:4,hasil:\"b\",hatha:\"s\",haty:\"1n\",határ:14,ható:14,hatı:\"1f\",haue:\"n\",\"haus \":\"n\",hause:\"n\",\"hav \":\"z\",havd:\"z\",havia:\"p\",havis:\"1o\",\"haw'\":\"1q\",hawak:\"d\",\"hay'\":\"1q\",hayal:\"1f\",hayat:\"1f\",hayo:\"d\",hayt:\"1q\",hazud:14,haçan:\"1n\",haï:\"l\",hać:\"1a\",hať:\"y\",\"hb \":\"s\",\"hbe'\":\"1q\",hbej:\"1q\",hbey:3,hbl:\"n\",hbog:\"1q\",hbor:\"m\",hbä:\"n\",hca:\"m\",hcel:\"y\",\"hcem \":\"y\",hces:\"1a\",hcho:\"1q\",hchu:\"1q\",\"hci \":\"u\",hcia:\"1a\",hco:\"m\",hcr:\"m\",hcú:\"y\",hcą:\"1a\",hdaj:\"1q\",hdaq:\"1q\",hday:\"m\",hdek:11,hdes:11,\"hdi'\":\"1q\",hdist:11,hdol:11,hdot:11,hdä:11,hdö:11,\"he'l\":\"m\",\"he's \":\"m\",heac:\"s\",heag:\"s\",healt:\"m\",heann:\"s\",heap:\"m\",\"hear \":\"m\",hebb:\"r\",hecem:\"p\",\"hech \":\"1q\",hecid:\"p\",\"hede \":1,heef:\"r\",heep:\"m\",hefu:13,hegar:\"p\",hegh:\"1q\",hego:\"p\",hegu:\"p\",heic:\"s\",heie:15,heint:\"n\",heio:\"p\",\"heir \":\"m\",heiro:\"p\",heith:\"s\",heje:4,hejme:\"1o\",hejw:4,helad:\"o\",helbr:\"z\",heldu:13,helem:\"r\",helfe:\"n\",heln:\"n\",helpa:\"1o\",helse:12,helye:14,helyz:14,hemli:10,hemsk:10,heniz:\"1n\",henmo:\"1q\",heny:\"d\",\"heo \":\"a\",heoi:\"s\",hepd:\"1n\",hepi:\"1f\",heps:\"1f\",\"her'\":\"m\",\"here'\":\"m\",herek:\"1n\",hergh:\"1q\",herid:\"o\",herný:\"y\",heru:\"n\",herä:11,heró:\"p\",hetek:14,hethe:\"m\",hetk:11,hetom:\"1p\",hetu:15,\"heté \":\"l\",\"heur \":\"l\",heute:\"n\",heva:\"l\",heveu:\"l\",\"hey'\":\"m\",heyr:13,heza:15,\"heze \":4,hezk:\"u\",heä:11,heç:\"p\",heï:\"r\",heň:\"u\",hfaca:\"s\",hfid:\"s\",hfr:\"n\",hfui:\"s\",hge:\"n\",hgh:\"1q\",hgü:\"n\",\"hha'\":\"1q\",hhh:\"m\",hhm:3,hhö:\"n\",hiac:\"q\",hiam:\"q\",\"hiar \":15,hiav:\"q\",hibá:14,hicht:\"n\",hici:\"o\",\"hico \":\"o\",hicum:\"t\",hideg:14,hidu:\"b\",hiedo:\"q\",\"hiel \":\"1p\",hielt:\"n\",hierd:1,hiev:\"m\",hifo:\"q\",hige:\"n\",hihi:\"d\",\"hii \":15,hiina:\"1c\",\"hija \":\"o\",hije:4,hijo:\"o\",\"hil-\":3,hildr:\"m\",hilf:\"n\",hilte:\"q\",hims:\"m\",hinah:\"d\",\"hinc \":\"t\",\"hind \":\"m\",hingg:\"b\",hings:\"m\",\"hinh \":\"a\",\"hink \":\"m\",hinks:\"m\",hinob:\"1q\",hinz:\"n\",\"hiq \":\"1q\",\"hir-\":\"b\",hirah:4,hirap:\"d\",hiriz:4,hirk:\"b\",hirty:\"m\",hisze:14,\"hiu \":\"a\",hiud:\"q\",hiul:15,hiun:\"q\",hiya:\"d\",hiyo:\"d\",hizi:15,\"hizo \":\"o\",hiá:14,hiä:11,hié:\"l\",hiê:\"a\",hië:\"r\",hiń:\"1a\",hjaj:\"1q\",\"hjel \":\"z\",hjern:\"z\",hji:11,hjá:13,hjäl:10,hjär:10,hjæ:\"z\",hjó:13,hjø:\"z\",\"hkah \":\"b\",hkeit:\"n\",\"hkem \":\"1c\",\"hku \":\"b\",hkup:\"y\",hky:11,hké:\"u\",hlado:\"u\",hlaf:\"n\",hlag:\"n\",\"hlah'\":\"1q\",hlai:\"s\",hlakk:13,\"hlan \":\"1q\",hlaup:13,hlaw:\"1q\",hlb:\"n\",hlec:\"n\",hleda:\"u\",\"hler \":\"n\",hlg:\"n\",hlh:\"n\",\"hli'\":\"1q\",hlic:\"n\",hlij:\"1q\",hlik:\"1f\",hlj:13,hlk:\"n\",hll:\"n\",hlos:\"n\",hlou:\"u\",hlr:\"n\",hls:\"n\",hlt:\"n\",\"hlu'\":\"1q\",hlug:\"n\",hlust:13,hlut:13,hlz:\"n\",hlä:\"n\",hlú:\"y\",hlü:\"n\",hlýt:13,\"hmah \":\"1q\",hmec:\"n\",hmerz:\"n\",hmey:\"1q\",hmia:\"1a\",hmise:11,hmisi:11,hmit:\"n\",hml:\"n\",hmm:\"m\",\"hmo'\":\"1q\",hmoh:\"1q\",hmt:\"n\",\"hmu \":\"b\",hmü:\"n\",hnac:\"n\",hnb:\"n\",hnc:\"n\",\"hned \":\"u\",hnei:\"n\",hnell:\"n\",hner:\"n\",hnet:\"n\",hnev:\"y\",hnh:\"n\",hnit:\"n\",hnl:\"n\",hnm:\"n\",\"hno \":\"u\",hnou:\"u\",hnte:\"n\",hnun:\"n\",hnya:\"b\",hnyt:11,hnz:\"n\",hní:\"u\",hnú:\"y\",hnü:\"n\",hną:\"1a\",hnę:\"1a\",\"ho' \":\"1q\",\"ho's\":\"m\",hoai:\"a\",hoang:\"a\",\"hobe'\":\"1q\",hobor:4,hobu:\"1c\",hodet:12,hodia:\"1o\",hodie:\"t\",hodit:\"u\",hodz:\"1a\",hoef:\"r\",hoeko:1,hoene:\"r\",hoffe:\"n\",\"hogh \":\"1q\",hogy:14,\"hoh \":\"1q\",hohe:\"n\",hohm:\"1q\",hohp:\"1q\",hoht:\"1q\",hoia:\"1c\",hoic:\"m\",\"hoil \":\"s\",hoisi:\"l\",\"hoje \":\"p\",hojme:\"1q\",hokl:10,holam:\"t\",holn:14,homb:\"o\",homda:\"1q\",homha:\"s\",homoj:\"1o\",hompu:\"1q\",homv:\"1q\",homái:\"s\",honde:\"r\",honge:\"r\",hood:\"m\",hoog:\"r\",hook:\"m\",hoord:\"r\",hoos:\"m\",hopd:\"1q\",hopil:\"u\",hopy:\"d\",horf:13,horgh:\"1q\",horoj:\"1o\",horol:\"t\",horto:\"t\",horú:\"y\",horší:\"u\",hoses:\"l\",houd:\"r\",houg:\"m\",hours:\"m\",houv:\"p\",hovat:\"u\",hovn:\"u\",hován:\"u\",howe:\"m\",howp:\"1n\",\"hoz \":14,hozz:14,hoá:\"a\",hoã:\"a\",\"hoş \":\"1f\",hože:\"y\",hpi:\"m\",hpr:\"n\",hqa:\"1q\",hqo:\"1q\",\"hqu'\":\"1q\",hrade:\"y\",hrae:\"t\",hraje:\"u\",\"hral \":\"y\",hrali:\"y\",hratt:13,hraí:\"s\",hrať:\"y\",hrb:\"n\",hrec:\"n\",hrer:\"n\",hrev:\"r\",hrew:\"m\",hrey:13,hrf:\"n\",hrg:\"n\",hrh:\"n\",hrich:\"n\",hrieb:\"n\",hrij:\"r\",hring:13,hrio:\"t\",hrk:\"n\",hrl:\"n\",hrm:\"n\",\"hro'\":\"1q\",hroo:\"m\",hrou:\"m\",hrow:\"m\",hrp:\"n\",hrr:\"n\",hrs:\"n\",hrt:\"n\",hrung:\"n\",hrw:\"n\",\"hrá \":\"y\",hrál:\"u\",hrám:\"y\",hrát:\"u\",hræ:13,hré:\"l\",hrí:\"s\",hsl:\"n\",hsp:\"n\",\"hst \":\"n\",hste:\"n\",\"hta'\":\"1q\",htaa:11,htah:\"1q\",htet:\"n\",htiy:\"1f\",htly:\"m\",\"htne \":\"1c\",htnu:\"1c\",htsal:\"1c\",htte:\"r\",htud:\"1c\",htui:11,htul:\"1c\",htus:\"1c\",htá:\"s\",htä:11,htí:\"u\",htö:11,htú:\"s\",\"hu' \":\"1q\",huai:\"s\",hubi:\"o\",\"hubo \":\"o\",hubu:\"b\",huco:\"p\",hudo:\"y\",huev:\"o\",hugav:13,huge:\"m\",hugh:\"1q\",hugsa:13,hugu:4,huhe:\"n\",huic:\"t\",huig:\"s\",huine:\"s\",huiu:\"t\",huiz:\"r\",\"huka \":4,hukb:\"d\",\"huko \":4,\"hule \":\"n\",huli:\"d\",\"huma \":\"p\",humai:\"l\",\"hun-\":\"b\",hundo:\"1o\",hundu:13,hungu:4,huol:11,huom:11,huon:11,\"huq \":\"1q\",hurgh:\"1q\",huru:\"b\",husb:\"m\",hustr:\"z\",hutl:\"1q\",\"huu \":11,\"huva \":\"p\",huvu:10,huwa:\"d\",\"huya \":\"a\",hué:\"o\",huê:\"a\",huí:\"o\",huž:\"u\",hvala:\"v\",hvam:\"1q\",hvar:13,hvati:\"v\",hvera:12,hverj:13,hverk:\"z\",hvern:13,hvers:13,hvid:\"z\",hvie:\"y\",hvite:12,hvorn:\"z\",hvort:13,hvus:\"1c\",hvá:\"u\",hvé:\"o\",\"hví \":13,hvít:13,hwer:\"n\",hwh:\"m\",hwie:\"n\",hwij:\"1q\",hwil:\"1a\",hwim:\"n\",hwin:\"n\",hwy:\"1a\",hwü:\"n\",\"hy'\":\"m\",\"hy-\":\"m\",\"hyby \":\"u\",hybí:\"u\",hyi:11,hyk:11,hyu:3,hyv:11,hyy:11,hyö:11,hzei:\"n\",hzel:\"r\",hzu:\"n\",hà:\"a\",\"há-\":\"p\",\"hác \":\"a\",\"hách \":\"a\",háin:\"s\",háir:\"s\",hálf:13,\"hán \":\"a\",háng:\"a\",hány:14,háo:\"a\",\"háp \":\"a\",háro:14,hásk:13,háu:\"a\",háy:\"a\",háza:14,háze:\"u\",háš:\"u\",hân:\"a\",hâr:15,hât:\"l\",hâu:\"a\",\"hã \":\"p\",hão:\"p\",häli:\"1n\",hält:\"n\",\"häm \":\"1k\",\"hän \":11,häne:11,häo:\"n\",häp:11,\"här \":10,häri:10,hästi:\"1c\",hätte:\"n\",häu:\"n\",häz:\"1n\",håb:\"z\",håg:10,hål:10,håp:12,hårt:10,\"hæ \":\"t\",hæc:\"t\",hæg:13,hæl:\"z\",hæn:\"z\",hæv:\"z\",hç:\"1f\",hèn:\"l\",hèr:\"l\",héana:\"s\",héd:\"l\",hée:\"l\",héh:\"u\",hélt:13,héo:\"l\",\"hép \":\"a\",hérna:13,héz:14,hêm:\"a\",hên:\"l\",hì:\"a\",hích:\"a\",hính:\"a\",hío:\"s\",hís:\"o\",hív:14,hò:\"a\",hóa:\"a\",\"hód \":\"1a\",\"hói \":\"a\",hóm:\"a\",hónap:14,hóng:\"a\",\"hô \":\"a\",hôn:\"a\",hôt:\"l\",hõe:\"p\",höc:\"n\",höh:\"n\",höj:10,hök:\"1n\",hölgy:14,\"höll \":10,hönd:13,höne:\"n\",höre:\"n\",hörte:\"n\",höv:10,höy:11,høf:\"z\",høn:\"z\",\"hør \":\"z\",høres:12,høv:\"z\",hù:\"a\",húa:\"a\",húc:\"a\",húg:14,húi:\"s\",\"hún \":13,húsi:13,hút:\"a\",húz:14,hüb:\"n\",hüg:\"n\",hüh:\"n\",hük:\"1f\",hüle:\"n\",hüp:\"n\",hütt:\"n\",hým:\"u\",hā:\"t\",hăm:\"a\",hăn:\"a\",hą:\"1a\",hč:\"u\",hę:\"1a\",hī:\"t\",hı:\"1f\",hł:\"1a\",hōc:\"t\",hş:\"1f\",hš:\"y\",\"h‘\":\"n\",\"i''\":\"1q\",\"i'a\":\"1q\",\"i'b\":\"1q\",\"i'c\":\"1q\",\"i'e\":\"1q\",\"i'h\":\"1q\",\"i'i\":\"1q\",\"i'o\":\"1q\",\"i'p\":\"1q\",\"i'r\":\"1q\",\"i't\":\"1q\",\"i'u\":\"1q\",\"i'w\":\"1q\",\"i-ai\":15,\"i-au\":15,\"i-bi\":\"1p\",\"i-d \":3,\"i-d-\":3,\"i-ja\":\"1o\",\"i-je\":\"l\",\"i-kan\":\"1p\",\"i-lak\":\"b\",\"i-me\":\"p\",\"i-s \":3,\"i-sev\":\"1p\",\"i-ve\":\"1o\",\"i-vil\":\"1p\",\"i-w\":3,\"i-y\":3,\"ia-s\":\"p\",\"iaa \":11,iaans:\"r\",iacc:\"q\",iacq:\"q\",iadan:\"1a\",iadku:\"y\",iadne:\"y\",iadom:\"1a\",iae:\"t\",iagem:\"p\",iagg:\"q\",\"iain \":\"s\",iaio:\"q\",\"iaje \":\"o\",iajn:\"1o\",iakov:\"y\",iaky:\"y\",ialn:\"1a\",iamar:\"q\",iamq:\"t\",iamu:\"t\",iange:\"q\",\"ians \":\"m\",iansk:\"y\",ianua:\"t\",iaop:\"1o\",\"iap \":\"b\",iapo:\"t\",iarna:15,iarra:\"s\",\"iasa \":\"b\",iasd:\"1b\",iassa:11,iasto:\"1a\",iatal:14,iatej:\"y\",\"iatt \":14,iaug:\"1b\",iauj:\"1b\",iauk:\"1b\",iaus:\"1b\",\"iave \":\"q\",iaza:15,iaze:\"y\",iazz:\"q\",iaç:\"p\",iać:\"1a\",iať:\"y\",iaž:\"1b\",\"ib-\":3,ibagi:4,\"ibah \":\"1q\",ibay:\"d\",ibaz:4,\"ibh \":\"s\",\"ibi'\":\"1q\",ibiga:\"d\",ibih:4,\"ibik \":\"1p\",\"ibil \":15,iblan:10,iblod:\"1p\",ibly:\"m\",ibogh:\"1q\",ibong:\"d\",ibroj:\"1o\",ibrum:\"t\",ibst:\"n\",\"ibuk \":\"b\",\"ibum \":\"t\",ibz:3,\"ibí \":\"o\",ibù:\"q\",ibă:15,ibē:\"1d\",\"ic'\":\"m\",icae:\"t\",icavi:\"t\",icay:4,icch:\"q\",\"icei \":15,icej:\"1o\",\"icem \":\"t\",ichaw:\"1q\",icheg:\"1q\",ichh:\"n\",ichla:\"1q\",icib:\"t\",icisc:\"t\",icium:\"t\",ició:\"o\",\"icka \":10,ickad:10,ickan:10,ickt:\"n\",ickv:10,icm:\"1o\",\"icol \":15,\"icou \":\"p\",icp:\"1o\",icq:\"t\",\"icul \":15,icumi:4,icun:\"t\",icura:\"q\",icuro:\"q\",\"icut \":\"t\",icv:\"1o\",icz:\"1a\",icâ:15,icía:\"o\",icíd:\"p\",icò:\"q\",icā:\"t\",ică:15,icī:\"1d\",\"id-i\":3,\"id-n\":3,\"idab \":\"1q\",idae:\"t\",idagi:\"1c\",idaj:\"1o\",idanu:\"1c\",idary:\"1b\",idau:\"1b\",idc:\"t\",iddl:\"m\",ideac:\"s\",ideba:\"t\",\"idie \":\"t\",idiri:4,\"idiu \":\"p\",idiyo:\"1f\",\"idió \":\"o\",idk:\"1o\",\"idla \":\"u\",idnin:10,idof:\"1p\",idoj:\"1o\",\"idom \":\"1p\",idou:\"p\",idp:\"1o\",idqu:\"t\",idsa:\"y\",idspu:\"z\",idste:\"z\",iduc:\"q\",\"idum \":\"t\",idung:\"n\",idup:\"b\",\"idur \":\"b\",idym:\"t\",\"idz \":\"1d\",idzie:\"1a\",idã:\"p\",idä:11,idæ:\"t\",idò:\"q\",idön:\"1p\",idý:\"1n\",idā:\"1d\",idē:\"t\",idę:\"1a\",idī:\"1d\",idū:\"1b\",idž:\"1b\",iebam:\"t\",iebat:\"t\",\"iebe \":\"n\",ieben:\"n\",iebez:\"1a\",iebie:\"1a\",iebs:\"n\",iebt:\"n\",iebus:\"t\",iecar:15,iecki:\"1a\",iecko:\"1a\",\"iect \":15,\"iedi \":\"q\",iedj:\"r\",iedk:\"y\",iedme:\"y\",iedn:\"1a\",iedod:\"1d\",iedy:\"1a\",\"iedz \":\"1a\",iedzi:\"1a\",iedä:11,iegh:\"q\",\"ieh \":\"n\",\"ieho \":\"y\",ieil:\"l\",\"iej \":\"1a\",\"ieje \":\"1a\",iejs:\"1a\",iekv:\"1b\",iely:\"y\",ielä:11,iembr:\"o\",iemi:\"1a\",ieml:\"n\",iemn:\"1a\",iempo:\"o\",iemy:\"1a\",ienaw:\"1a\",ienco:\"1o\",iendr:\"l\",ienky:\"y\",ienni:\"1a\",ienso:\"o\",ieo:\"1a\",\"iep \":\"r\",ierda:\"o\",ierdi:1,ierdu:15,\"ierf \":\"r\",ierno:\"o\",ierok:\"y\",ierza:\"1a\",iesco:\"q\",iesem:\"n\",iestn:\"y\",\"iesz \":\"1a\",ieszk:\"1a\",ietik:\"1p\",ietwa:\"r\",ietä:11,ieurs:\"l\",ieuse:\"l\",iewa:\"1a\",iewc:\"1a\",\"iez-\":\"l\",iezen:\"r\",iezg:\"1d\",iezu:15,ieë:\"r\",ieć:\"1a\",ieči:\"1b\",ieşi:15,iešt:\"1b\",ieť:\"y\",\"iež \":\"y\",ieža:\"1b\",\"ieži \":\"1d\",\"if-\":3,ifass:3,iffé:\"l\",ifise:4,ifiu:\"q\",ifk:3,ifoj:\"1o\",ifom:\"1p\",\"ifta \":10,ifto:\"1o\",\"iful \":\"m\",ifuz:\"1o\",ifæ:13,ifè:\"l\",ifön:\"1p\",ifø:\"z\",igai:\"1b\",\"igal \":\"1c\",igao:\"v\",igard:\"1o\",igast:10,\"igay \":\"d\",\"igaz \":14,igaza:14,igazs:14,igaç:\"p\",\"igd \":\"r\",igdo:\"z\",igene:\"n\",igerr:3,\"igge \":\"z\",ighaj:\"1q\",ighbo:\"m\",ighit:\"1q\",igho:\"1q\",ighr:\"1q\",igic:4,igiet:1,igif:4,igih:4,igik:4,igimi:\"1n\",\"igis \":\"1o\",igish:4,igió:\"o\",igje:12,igke:\"n\",iglia:\"q\",iglie:\"q\",iglio:\"q\",ignum:\"t\",igoni:\"1b\",igp:\"d\",igrej:\"p\",\"igum \":13,igung:\"n\",igust:\"1c\",igyan:\"d\",igå:10,igê:\"p\",igă:15,igą:\"1b\",igę:\"1b\",ihaa:11,ihbe:\"1q\",ihc:\"1q\",ihh:\"1q\",\"ihil \":\"t\",ihint:\"d\",ihiy:\"d\",ihjel:\"z\",\"ihm \":\"n\",ihmi:11,\"ihn \":\"n\",ihna:\"n\",ihnen:\"n\",ihop:10,ihp:\"1q\",ihq:\"1q\",\"ihr \":\"n\",\"ihre \":\"n\",ihrem:\"n\",ihren:\"n\",ihtn:\"1c\",ihts:\"1c\",ihug:4,ihvad:\"1q\",ihä:11,ihå:10,\"iia \":\"1c\",iib:\"d\",iic:15,iide:11,iigo:\"1o\",iih:11,\"iik \":\"1c\",iika:11,iikk:11,\"iile \":15,iilor:15,iime:11,iimt:\"1b\",iinn:11,iinom:\"d\",iinti:\"d\",iinä:11,iires:\"1c\",iirus:\"1c\",iisav:\"1c\",\"iisi \":11,iisip:\"d\",iitt:11,iitä:11,iiw:\"d\",iiy:\"d\",iiä:11,\"ij'\":\"1q\",\"ija'\":\"1q\",\"ijd \":\"r\",ijden:\"r\",ijds:\"r\",ijf:\"r\",ijge:\"r\",\"ijis \":\"1d\",\"ijk \":\"r\",ijke:\"r\",\"ijl \":\"r\",ijlo:15,\"ijn \":\"r\",ijna:\"r\",ijne:\"r\",ijnl:\"r\",ijns:\"r\",ijoj:\"1b\",ijora:15,ijoro:4,ijpe:\"r\",ijq:\"1q\",ijst:\"r\",\"ijt \":\"r\",ijve:\"r\",ijy:11,ijz:\"r\",ijí:\"u\",ijú:\"y\",\"ik-b\":\"b\",\"ika-\":\"d\",\"ikad \":\"v\",ikalb:\"1b\",ikall:11,ikang:\"d\",\"ikau \":\"1b\",\"ikaw \":\"d\",ikaye:\"1f\",ikdo:\"u\",ikein:11,ikely:\"m\",\"ikem \":3,ikese:\"1c\",ikeu:11,ikev:12,ikib:4,ikiem:\"1a\",ikig:\"1o\",ikinn:13,ikiu:\"1b\",ikj:\"r\",ikkun:11,iklau:\"1b\",\"ikna \":\"1f\",ikny:\"b\",ikob:\"1p\",ikodo:\"1p\",ikogo:\"1a\",ikoi:11,\"ikoj \":\"1o\",\"ikol \":\"1p\",ikoll:11,ikols:\"1p\",\"ikor \":14,ikora:4,ikore:4,ikrai:\"1b\",ikras:\"1b\",ikria:\"1b\",ikrát:\"u\",\"iktu \":\"1d\",ikud:\"1c\",ikumu:\"1d\",ikuo:\"1b\",\"ikur \":13,ikutt:11,ikva:\"1o\",ikys:\"1b\",\"ikä \":11,ikç:\"1f\",\"ikön \":\"1p\",\"ikün \":\"1p\",iký:\"u\",\"iką \":\"1b\",\"ila'\":\"d\",\"ilad \":\"1q\",ilae:\"t\",ilais:11,ilaq:3,ilbag:\"z\",ilbak:12,ilbra:\"z\",ilbú:13,ildir:\"1f\",ilece:\"1f\",ilegh:\"1q\",ilegt:13,ileir:\"p\",ilell:3,\"ilfe \":\"n\",ilft:\"n\",ilgai:\"1b\",ilgav:\"z\",\"ilha \":\"p\",ilhas:\"p\",\"ilho \":\"p\",ilhos:\"p\",iliam:\"t\",\"ilif \":3,\"ilih \":\"b\",\"ilii \":\"t\",ilior:\"t\",\"ilir \":\"1f\",iliri:\"1f\",ilirs:\"1f\",ility:\"m\",ilium:\"t\",ilizc:\"1f\",ilizz:\"q\",ilič:\"v\",iljeg:\"1n\",iljek:\"1n\",illba:10,illbr:10,illeu:\"l\",illna:10,illr:10,illsa:10,illó:\"o\",ilmä:11,\"ilo'\":\"1q\",\"ilob \":\"1p\",ilobs:\"1p\",\"ilof \":\"1p\",\"ilog \":\"d\",iloj:\"1o\",\"ilol \":\"1p\",iloms:\"1p\",ilsin:\"1f\",ilsu:13,\"iltu \":13,iltä:11,ilugh:\"1q\",ilup:\"q\",iluz:\"1o\",ilye:14,ilà:\"l\",ilágo:14,ilã:\"p\",ilç:\"1f\",ilê:\"p\",\"ilín \":\"s\",ilò:\"q\",ilô:\"p\",\"ilý \":\"u\",ilū:\"t\",ilž:\"1b\",\"ima's\":\"m\",imae:\"t\",imaju:\"v\",imalu:\"1c\",\"iman-\":3,imao:\"v\",imarc:\"q\",imaš:\"v\",\"imdi \":\"1f\",imedd:3,imeir:\"p\",\"imej \":\"1q\",imese:\"1c\",imfi:4,imish:4,imiň:\"1n\",\"imle \":\"1f\",imler:\"1f\",\"imma \":10,immar:10,imms:\"n\",immä:11,immé:\"l\",\"imod \":\"z\",imorg:10,\"imot \":12,\"imse \":\"1f\",imta:\"1b\",\"imti \":\"1b\",imush:\"1q\",\"imwe \":4,imwo:4,imyn:\"1b\",imã:\"p\",imç:\"1n\",imô:\"p\",imö:\"1p\",imā:\"t\",imē:\"t\",imī:\"1d\",imš:\"1b\",\"in-i\":3,\"in-n\":3,inae:\"t\",inaha:\"d\",inang:\"d\",inapa:\"d\",inasa:\"d\",\"inau \":\"1b\",inaç:\"p\",incs:14,incí:\"p\",indab:4,\"indt \":\"r\",indti:\"z\",indw:4,\"ineh \":\"1q\",ineva:15,infö:10,ingai:\"1b\",ingde:10,inggo:\"d\",inggu:\"b\",inghi:\"q\",ingj:13,inglä:\"1p\",ingna:\"d\",ingvo:\"1o\",ingú:\"o\",ingü:\"o\",\"inha \":\"p\",inham:\"p\",inhas:\"p\",\"inho \":\"p\",inhv:13,iniai:\"1b\",inibu:\"t\",iniw:\"d\",\"iniz \":\"1f\",iniñ:\"1n\",inió:\"o\",injam:\"b\",inkur:4,inká:14,\"inle \":\"1f\",inlic:\"n\",inlik:\"1f\",inly:\"m\",inmal:\"n\",\"inmi \":\"1n\",innea:\"s\",inniu:\"s\",innr:12,innur:13,inobs:\"1p\",\"inoj \":\"1o\",inojo:\"1b\",inols:\"1p\",inome:\"1b\",inoms:\"1p\",\"inon-\":\"1p\",inong:\"d\",inoo:\"d\",\"inos-\":\"1p\",inote:\"1b\",inoti:\"1b\",\"insa \":11,insha:4,inshi:4,insiu:\"1b\",inska:10,intay:\"d\",inteo:\"s\",intha:14,inuga:\"1c\",inuh:\"d\",inull:11,\"inun \":11,inuoj:\"1b\",inup:\"d\",\"inur \":13,inxi:\"t\",inyam:4,\"inyo \":\"d\",inys:\"1b\",inzig:\"n\",inál:14,\"inä \":11,inéh:\"u\",inê:\"p\",iníc:\"p\",\"inó \":\"o\",inô:\"p\",inön:\"1p\",\"inút \":\"y\",inās:\"1d\",ină:15,inč:\"1b\",inē:\"t\",inş:\"1f\",inū:\"1d\",inž:\"1b\",\"io)\":\"1o\",ioad:15,ioar:15,ioas:15,iocc:\"q\",iodat:15,\"iog \":\"1b\",iogg:\"q\",ioh:\"t\",ioia:\"q\",ioie:\"q\",ioit:11,\"ioj \":\"1o\",ioja:\"1b\",ioje:\"1b\",iojn:\"1o\",iojo:\"1b\",iomá:\"s\",ionea:15,ionné:\"l\",iony:\"1a\",ionár:\"p\",iooni:\"1c\",iorem:\"t\",ioria:\"p\",iorna:\"q\",iorno:\"q\",iorq:\"p\",iorum:\"t\",iosu:\"t\",ioul:15,ious:\"m\",iovu:\"q\",ioza:\"1o\",ioze:\"1o\",\"io \":\"1o\",ioè:\"q\",ipap:\"d\",ipaw:\"1q\",ipaž:\"1b\",ipd:\"1n\",ipec:\"b\",ipfu:4,ipirk:\"1b\",ipiu:\"t\",ipob:\"1p\",\"ipom \":\"1p\",ipoq:\"1q\",iposm:\"1q\",ipov:\"1o\",ipoz:\"1o\",ipv:\"1o\",ipw:\"m\",ipä:11,ipön:\"1p\",ipū:\"1b\",iqaw:\"1q\",iqo:\"1q\",iqr:3,iqubb:\"1q\",iquc:\"1q\",iquei:\"p\",\"ir-b\":\"1n\",irao:\"v\",\"irap \":\"d\",irash:4,iratl:\"1q\",iraç:\"p\",\"irba \":\"1b\",irbir:\"1f\",irds:\"m\",\"irea \":15,ireac:\"s\",iread:\"s\",irean:\"s\",irej:\"1o\",irfi:\"s\",irgea:\"s\",irgef:13,\"irgi \":\"1b\",irgid:\"s\",irgl:\"q\",irhe:11,\"iri' \":\"1q\",irigh:\"s\",irih:4,irimb:4,irink:\"1b\",irino:\"1o\",irith:\"s\",iriwe:4,iriyo:\"1f\",\"iriz \":\"1f\",iriñ:\"1n\",irjan:11,irje:11,irjo:11,irju:\"1c\",irkan:\"b\",irkau:\"1b\",\"irki \":\"1n\",irkil:13,irkli:\"n\",irkti:\"1b\",\"irl \":\"m\",irlik:\"1f\",irls:\"m\",irly:\"m\",irmd:\"1d\",irnar:13,irneh:\"1q\",irnir:13,irny:\"b\",irnä:\"1n\",iroj:\"1o\",irong:4,iroul:15,irrt:\"n\",irseb:\"z\",irsin:\"1f\",irth:\"m\",\"irty \":\"m\",\"irum \":\"t\",iruot:\"1b\",\"iryo \":4,irà:\"q\",irâ:\"p\",\"irä \":\"1n\",irç:\"1f\",irè:\"l\",\"irí \":\"s\",\"iría \":\"o\",irír:\"s\",irò:\"q\",\"iró \":\"o\",irý:\"1n\",irā:\"1d\",iră:15,irč:\"1b\",irę:\"1b\",irī:\"1d\",irš:\"1b\",irū:\"1b\",irž:\"1b\",\"is-j\":\"l\",isaga:4,isait:\"l\",isao:\"v\",isaya:\"1f\",iscul:\"o\",iscum:\"t\",\"isda \":\"d\",iseen:11,isegg:3,isegi:\"1c\",iselm:3,\"isem-\":3,isfru:\"o\",ishir:4,isiaj:\"1a\",\"isid \":\"1c\",isiin:11,isink:11,\"isip \":\"d\",\"isir \":\"l\",isiun:15,isiä:11,isió:\"o\",isiš:\"1b\",isje:\"r\",isjon:12,\"iskt \":10,iską:\"1b\",islil:\"v\",isly:12,ismer:14,\"isne \":\"t\",isoar:15,\"isov \":\"1q\",ispaa:\"1c\",ispia:\"q\",ispit:\"v\",issez:\"l\",issly:10,issta:10,issz:14,issä:11,istea:\"s\",istm:\"m\",istna:\"1o\",\"ists \":\"m\",istui:11,istâ:\"p\",istök:13,isuch:\"1q\",isuom:\"1b\",isuu:11,isyk:\"1b\",isyu:\"d\",iszem:14,iszo:14,iszte:14,\"is \":\"1o\",isâ:\"l\",isã:\"p\",isä:11,isæ:\"z\",isçe:\"1n\",isø:\"z\",isă:15,isą:\"1b\",isč:\"1b\",isę:\"1b\",isū:\"1b\",\"it'l\":\"m\",\"it's\":\"m\",\"it-a \":3,\"it-n\":3,\"it-ta\":3,\"itab \":\"1c\",itaby:\"1n\",itae:\"t\",itanj:\"v\",itanu:4,itao:\"v\",itaph:\"1n\",itaq:\"t\",\"itav \":\"1c\",itaz:\"q\",itaç:\"p\",itaš:\"v\",itdi:\"1n\",\"iteb \":\"1q\",itebh:\"1q\",itege:4,itelj:\"v\",itelm:11,\"ites-\":\"l\",itev:\"q\",ithn:\"s\",ithou:\"m\",itibe:\"z\",itié:\"l\",itió:\"o\",itjek:\"1n\",itkä:11,itmeg:\"1n\",itmem:\"1f\",itmey:\"1f\",itmä:\"1n\",\"itne \":\"t\",itob:\"1p\",itong:\"d\",itorn:\"q\",itqu:\"t\",itsc:\"n\",itsee:11,itsla:\"r\",ittn:10,ittä:11,\"itu'\":\"1q\",\"itud \":\"o\",ituk:11,ituma:4,ituru:\"t\",ituw:\"d\",ituz:\"q\",itwar:4,itzt:\"n\",itzu:\"n\",\"it \":\"l\",ità:\"q\",itáv:\"p\",itâ:\"p\",\"itä \":11,itäi:11,itè:\"l\",ités:\"l\",itê:\"p\",itò:\"q\",itór:\"p\",itô:\"l\",itù:\"q\",\"itā \":\"1d\",itāte:\"1d\",ită:15,itę:\"1b\",itū:\"t\",\"iu-s\":\"p\",\"iua \":15,iubes:15,iubi:15,iucu:\"t\",\"iud \":\"t\",iuf:\"1o\",iuga:\"q\",iugn:\"q\",iuh:\"1o\",iui:\"1b\",\"iuj \":\"1o\",iuja:\"1o\",iujn:\"1o\",iuliu:\"t\",iulo:\"1o\",iului:15,iunc:\"t\",iunda:\"t\",iundu:\"t\",iune:15,\"iuni \":15,iunil:15,iuns:\"q\",\"iunt \":\"t\",iunu:15,\"iuo \":\"1b\",iuoj:\"1b\",iuos:\"1b\",iuot:\"1b\",iupp:\"t\",iurn:\"t\",iusci:\"q\",iusd:\"t\",iusq:\"t\",iuss:\"t\",iusto:\"q\",\"iut \":15,\"iuta \":\"q\",iutag:\"1o\",iutar:\"q\",iutt:\"q\",iuu:\"d\",iuw:\"d\",iux:\"t\",iuč:\"1b\",iuš:\"1b\",\"iv'\":\"1q\",ivaa:11,\"ivad \":\"1c\",ivang:\"1q\",ivbo:10,\"ived \":\"m\",ivemo:\"p\",iveu:\"p\",ivev:\"q\",\"ivi'\":\"1q\",ivig:\"1o\",\"ivim \":\"v\",iving:\"m\",\"ivir \":\"o\",iviu:\"t\",ivj:\"1q\",\"ivl \":\"z\",ivno:\"v\",ivní:\"u\",ivob:\"1p\",\"ivom \":\"1p\",\"ivro \":\"p\",ivros:\"p\",\"ivso'\":\"1q\",ivuz:4,ivv:\"1q\",iväg:10,iväl:11,ivän:11,ivät:11,ivê:\"p\",ivía:\"o\",ivò:\"q\",ivö:\"1p\",ivā:\"1d\",ivă:15,ivē:\"1d\",\"iw-\":3,iwant:3,iwas:\"d\",iwel:3,iwen:3,iwet:3,iwg:3,iwie:\"1a\",iwin:3,iwk:\"1a\",iwl:3,iwt:3,iwv:\"1q\",iww:3,iwy:\"1a\",iwá:\"o\",ixr:3,ixu:3,ixx:3,ixá:\"p\",ixã:\"p\",ixé:\"l\",\"iy'\":\"1q\",\"iy-\":3,iyac:\"1f\",iyaj:\"1q\",\"iyak \":\"d\",iyat:\"1f\",iydi:\"1f\",iyec:\"1f\",iyeg:\"d\",iyeti:\"1f\",iyh:11,iyim:\"1f\",iyiz:\"1f\",iyl:\"1f\",iym:\"1f\",iyong:\"d\",iyor:\"1f\",iyos:\"d\",iyuda:\"d\",iyv:\"1q\",iyy:3,iyá:\"d\",iyä:\"1p\",iyó:\"d\",\"iz-\":\"p\",\"izat \":15,\"izbe \":\"y\",\"izbu \":\"y\",izby:\"y\",izce:\"1f\",izdar:\"1d\",izdu:\"1b\",izea:15,izez:15,izgl:\"v\",izgub:\"v\",iziat:\"q\",\"izim \":\"1f\",izina:4,iziti:\"1o\",izj:\"1a\",izlem:\"1f\",izman:\"1d\",iznen:\"v\",izoj:\"1o\",izony:14,izori:\"1b\",izou:\"p\",izq:\"o\",izsk:\"1d\",izto:14,izvi:\"v\",izzo:\"q\",\"izá \":\"o\",izí:\"u\",\"izó \":\"o\",\"iá-\":\"p\",iába:14,iác:\"a\",\"iáng \":\"a\",iáo:\"a\",iári:\"p\",iáu:14,iáve:\"p\",iân:\"p\",iã:\"p\",iäi:11,iäk:11,iäm:11,iän:11,iäs:11,iäv:11,iää:11,\"iæ \":\"t\",iça:\"p\",içer:\"1f\",\"için \":\"1f\",içind:\"1f\",içk:\"1f\",içme:\"1f\",iço:\"p\",ièm:\"l\",iée:\"l\",\"ién \":\"o\",iénd:\"o\",\"iért \":14,iété:\"l\",iêm:\"a\",iêu:\"a\",iël:\"r\",iën:\"r\",\"ií \":\"u\",\"iñi \":\"1n\",iñiz:\"1n\",iñl:\"1n\",iño:\"o\",iò:\"q\",iô:\"p\",iõ:\"p\",\"iö \":11,iöj:11,iöp:\"1p\",iöt:11,iù:\"q\",iúi:\"s\",iúl:\"s\",iúm:\"p\",iúnt:\"s\",iúp:\"a\",\"iúr \":\"s\",iüp:\"1p\",iý:\"1n\",\"iā \":\"t\",iāl:\"1d\",iān:\"t\",iās:\"t\",\"iča \":\"v\",ičaj:\"v\",ičam:\"v\",ično:\"v\",ičo:\"y\",\"ičí \":\"u\",iď:\"u\",iđ:\"v\",iē:\"t\",ię:\"1a\",iī:\"t\",ił:\"1a\",iňt:\"u\",iō:\"t\",işa:\"1f\",işd:\"1n\",işel:\"1f\",işk:\"1f\",işm:\"1f\",işnu:15,işti:\"1f\",išei:\"1b\",išel:\"u\",išem:\"v\",išie:\"y\",iške:\"1b\",iški:\"1b\",išku:\"1b\",išp:\"1b\",išr:\"1b\",išs:\"1b\",išv:\"1b\",išš:\"1b\",iť:\"y\",\"iū \":\"1b\",iūd:\"1b\",iūl:\"1b\",iūr:\"1b\",iūt:\"1b\",\"iž \":\"u\",ižni:\"y\",í:\"a\",iγ:3,iε:3,iб:19,iв:19,iг:\"1l\",iд:19,iз:\"1l\",iй:19,\"iк \":\"1l\",iкт:\"1l\",iлi:\"1l\",iлг:\"1l\",iлд:\"1l\",iле:\"1l\",iлм:\"1l\",\"iм \":\"1l\",iме:\"1l\",iмн:\"1l\",iнi:\"1l\",iнд:\"1l\",iне:\"1l\",iп:\"1l\",iр:\"1l\",iсi:\"1l\",iт:19,iш:\"1l\",iң:\"1l\",\"j' \":\"1o\",\"j'h\":\"l\",\"j'i\":\"l\",\"j'o\":\"l\",\"j'u\":\"l\",\"j'y\":\"l\",\"j'é\":\"l\",\"j)\":\"1o\",\"j-i\":3,\"j-n\":3,\"ja' \":\"1q\",\"jaa \":11,jaap:\"1c\",jaard:\"r\",jacie:\"1a\",jació:\"1a\",jacó:\"p\",\"jadi \":\"b\",jadr:\"y\",jadw:\"b\",jadz:\"1d\",jae:11,jagy:\"1n\",jahr:\"n\",jajv:\"1q\",jakb:\"1a\",jakd:\"1n\",\"jaki \":\"1a\",jakie:\"1a\",jakou:\"u\",\"jaks \":\"1c\",jaká:\"u\",jaký:\"u\",jaką:\"1a\",jald:13,jalg:\"1c\",jalk:11,jalp:\"z\",jalut:\"1c\",jalá:\"o\",jamk:\"b\",jamá:\"o\",janel:\"p\",janga:\"b\",janse:12,\"jao \":\"v\",jaok:\"1c\",japun:3,japá:14,japó:\"o\",japü:\"1p\",jarc:\"1o\",jardí:\"o\",jaren:\"r\",\"jari \":\"b\",jaroj:\"1o\",jasni:\"v\",\"jast \":13,jatk:11,jatl:\"1q\",jatt:11,jaud:\"1b\",jauč:\"1b\",jawa:\"b\",\"jay'\":\"1q\",jayo:4,jazer:\"y\",jač:\"v\",jaň:\"1n\",jaš:\"v\",jať:\"y\",\"jbe'\":\"1q\",jbi:3,jbogh:\"1q\",jbol:\"v\",jbur:\"1n\",jbă:15,\"jca \":\"1a\",jch:\"1q\",jcie:\"1a\",jcu:\"1a\",jcz:\"1a\",jdb:\"r\",jdd:\"r\",jdj:\"r\",jdl:\"r\",jdn:14,jdp:\"r\",jdt:\"r\",jdv:\"r\",jdz:\"1a\",jdę:\"1a\",\"je'\":\"1q\",jeal:\"m\",jeaz:15,jeba:\"b\",jebk:\"1d\",jeda:\"v\",\"jedd \":12,jeder:\"n\",jedia:\"y\",jedlo:\"y\",jedol:\"y\",jedr:\"o\",jedy:\"1a\",jedzi:\"1a\",jegin:\"1n\",jegy:14,jeig:\"1b\",jeito:\"p\",jeje:10,jeji:\"u\",její:\"u\",jekd:\"1n\",jekm:\"1n\",jelas:\"b\",jeld:12,\"jell \":12,jelli:12,jelp:12,jeman:\"n\",jemni:\"1a\",\"jemo \":\"v\",jempe:12,jemy:\"1a\",jenge:12,jenj:\"v\",jenno:12,jenom:\"u\",\"jeo \":\"v\",jepa:\"b\",jerc:\"o\",jerd:\"z\",\"jere \":\"z\",jerg:\"z\",jerm:\"b\",jerns:\"z\",jestl:\"u\",jestv:\"y\",\"jesz \":\"1a\",jetz:\"n\",\"jeu \":\"l\",jeun:\"l\",jeva:\"1p\",\"jewe \":4,jezik:\"v\",jeä:11,jeç:\"p\",jeó:\"o\",ješt:\"u\",\"jf \":\"r\",jfa:\"1o\",jfd:\"r\",jfh:\"r\",jfi:\"1o\",jfo:\"1o\",jfp:\"r\",jfs:\"r\",jft:\"r\",\"jg \":\"r\",jgen:\"r\",jgt:\"r\",\"jha'\":\"1q\",\"jho \":\"y\",jiblo:\"1p\",jibog:\"1q\",jiche:\"1q\",jiel:\"1p\",\"jiem \":\"1d\",jiems:\"1b\",jies:\"1d\",jiet:\"1d\",jigh:\"1q\",\"jigu \":\"v\",jihta:\"1q\",jihv:\"1q\",jija:\"1q\",jika:\"b\",jimas:\"1b\",jimat:\"1p\",jimej:\"1q\",jimą:\"1b\",\"jina \":\"y\",jins:\"y\",jiny:\"y\",jiné:\"u\",jiný:\"u\",jiq:\"1q\",\"jira \":4,jison:\"1p\",jiste:\"o\",jisti:\"u\",jistý:\"u\",\"jiv \":\"v\",jivo:\"v\",jiwa:\"b\",jiz:\"v\",jiä:11,jió:\"o\",již:\"u\",jji:3,jjm:3,jju:3,jjy:3,jkb:\"r\",jkd:\"r\",jker:\"r\",jkh:\"r\",jkj:\"r\",jks:\"r\",jkt:\"r\",jku:\"v\",jkv:10,jky:\"y\",jkę:\"1a\",jlah:\"1q\",jleps:\"1a\",\"jlo \":\"1o\",jloc:15,jlp:\"r\",jls:\"r\",jlu:\"1q\",\"jm \":\"r\",\"jmah \":\"1q\",jmb:\"1o\",jmeh:\"1q\",jmenu:\"u\",\"jmey \":\"1q\",jmit:\"1q\",jmn:\"1a\",\"jmo'\":\"1q\",jmoh:\"1q\",jmr:\"1o\",jms:\"1o\",jmt:\"1o\",jmuj:\"1a\",jmv:\"1o\",jmy:\"1a\",jmé:\"u\",jnas:\"1o\",jnd:\"r\",\"jnen \":\"r\",jnene:\"z\",jnf:\"1o\",jnh:\"r\",jnk:\"1o\",jnlij:\"r\",jnoj:\"1o\",jnon:\"1o\",jnt:\"r\",\"jny \":\"1a\",jną:\"1a\",\"jo'\":\"1q\",\"jo)\":\"1o\",joac:15,\"joc \":15,jocu:15,jof:\"1o\",jogab:\"1n\",jogad:\"p\",jogar:\"p\",joht:11,jois:11,joit:11,\"joje \":\"1b\",jojn:\"1o\",\"joka \":11,jokai:11,joku:11,\"jole \":\"z\",jolen:12,joli:\"l\",\"jome \":\"1b\",jonen:12,jonge:\"r\",jonk:11,jooks:\"1c\",jopro:\"1d\",joq:\"1q\",jords:\"z\",jorta:10,jossa:11,jota:11,joten:11,jotk:11,joue:\"l\",jouk:11,jourd:\"l\",jours:\"l\",\"jov \":\"z\",jovem:\"p\",jovt:\"z\",jow:\"1a\",još:\"v\",\"jp \":\"r\",jpar:\"1o\",jpen:\"r\",jpl:\"1o\",jpt:\"r\",jqa:\"1q\",jqo:\"1q\",jqu:\"1q\",jrb:\"1o\",jro:\"1o\",jrz:\"1a\",jsc:\"1a\",\"jse \":\"z\",jsem:\"u\",jsen:\"z\",jser:\"z\",jsh:\"r\",jsj:\"r\",jsl:\"r\",jsm:\"u\",jso:\"u\",jspí:\"u\",jss:\"r\",jstr:\"1o\",jsu:\"1o\",jsv:\"r\",jsze:\"1a\",jsá:14,jsť:\"y\",\"jta' \":\"1q\",jtah:\"1q\",\"jtas \":\"1o\",jtett:14,jtg:\"r\",jtoj:\"1o\",jton:\"1o\",jtra:\"y\",jts:14,jtó:14,\"ju-\":3,jual:\"b\",jubav:\"v\",juca:15,judar:\"p\",judec:15,judet:10,judg:\"m\",\"judi \":\"v\",judá:\"p\",jueg:\"o\",juhd:\"1q\",juht:\"1c\",juist:\"r\",juju:\"b\",jukd:10,jukh:10,julle:1,julli:\"r\",julp:\"z\",julu:15,\"juma \":\"1d\",jumal:11,\"jumi \":\"1d\",juml:\"b\",jumu:\"1d\",juns:15,junul:\"1o\",juoki:\"1b\",juoks:11,\"juos \":\"1b\",jupp:\"1q\",jurk:\"r\",jusa:13,juse:10,jusq:\"l\",jutas:\"1c\",jutat:15,\"jute \":15,jutk:\"b\",jutor:15,juua:\"1c\",juuk:\"1c\",juurd:\"1c\",juuri:11,jux:\"t\",juz:\"o\",juí:\"p\",juć:\"v\",juč:\"v\",juš:\"1d\",\"jvad \":\"1q\",jvam:\"1q\",jven:\"r\",jver:\"r\",jví:\"u\",\"jwe \":4,\"jwij \":\"1q\",jwo:\"r\",jwy:\"1a\",jya:3,\"jyk \":\"1n\",jyr:11,jys:11,jyv:11,jyä:11,jze:\"r\",\"j \":\"1o\",jà:\"l\",\"já-\":\"p\",jáb:14,jád:\"u\",jálf:13,jálp:13,jáls:13,jára:14,járt:14,\"ját \":14,jáu:13,jã:\"p\",jäk:11,\"jäl \":10,jälk:11,jälv:10,jäna:10,jäns:10,järg:\"1c\",järil:10,järn:10,järt:10,jätte:10,jäv:10,jäy:11,jåf:12,\"jæ \":\"t\",jæg:\"z\",jæl:\"z\",jær:12,jæv:\"z\",\"jé \":\"o\",jém:\"o\",jés:\"l\",jía:\"o\",jíc:\"u\",jíd:\"u\",jín:\"o\",jís:\"u\",jíz:\"u\",jíš:\"u\",jíž:\"u\",jóa:13,jóla:13,jóli:13,jóp:13,\"jór \":13,jórn:13,jóst:13,\"jóta \":13,jótt:13,jóve:\"o\",jõ:\"1c\",jöd:10,jöf:13,jölk:10,jöls:13,jöni:\"1p\",jönn:14,jös:14,jött:14,jöv:14,jød:\"z\",jøe:12,jøk:12,jøl:12,jøn:12,jøt:12,júc:\"y\",júg:13,júk:13,júr:\"p\",jük:14,jüng:\"n\",jā:\"1d\",jă:15,jąk:\"1a\",jča:\"u\",jď:\"u\",jē:\"1d\",jęs:\"1b\",jı:\"1f\",jša:\"v\",jši:\"y\",jūr:\"1b\",jūt:\"1d\",\"k't\":\"1f\",\"k(\":3,\"k-ana\":\"b\",\"k-d-\":3,\"k-r\":3,\"k-ye\":3,\"ka- \":\"d\",\"kaa \":11,\"kaar \":\"r\",kaasa:\"1c\",kabs:\"z\",\"kach \":\"1a\",kadad:10,kadar:\"1f\",kades:10,kady:\"1n\",kadı:\"1f\",kaffa:10,kaffi:13,kafij:\"1d\",kafo:\"1o\",kahap:\"d\",kahd:11,kahek:\"1c\",kahit:\"d\",kahve:\"1f\",kahvi:11,kaib:\"d\",kaidr:\"1d\",kaike:11,kaiki:11,kaikk:11,kaine:11,kaits:\"1c\",kajn:\"1o\",kajte:\"y\",kají:\"u\",kajú:\"y\",kakai:\"d\",kakap:\"d\",\"kake \":12,kakel:1,\"kako \":\"v\",kaksi:11,\"kal-\":3,kalac:\"1f\",kalba:\"1b\",kalbu:\"1b\",kaldı:\"1f\",kalia:\"b\",\"kall \":10,kallt:10,kalı:\"1f\",kamai:\"1b\",kanil:\"d\",kanje:4,kanmu:\"b\",kanny:\"b\",kanob:\"1p\",kanol:\"1p\",kanom:\"1p\",kanss:11,kanye:4,kanı:\"1f\",kapab:\"1o\",kapc:14,kapet:12,kapti:\"1o\",karde:\"1f\",kardy:\"1n\",karod:14,karok:14,karom:14,karoo:\"d\",karsz:14,\"karu \":\"1c\",karz:\"1a\",karā:\"1d\",karą:\"1b\",karī:\"1d\",karı:\"1f\",karş:\"1f\",karš:\"1b\",kasal:\"d\",kasam:\"d\",kasd:\"1b\",kasih:\"b\",kasj:12,kasn:\"v\",kasut:\"1c\",kasva:11,\"kasy \":\"1n\",kasyn:\"1n\",kası:\"1f\",katap:\"d\",katie:\"1d\",katir:\"d\",katru:\"1d\",katso:11,katul:\"d\",katz:\"n\",katā:\"1d\",katı:\"1f\",\"kaua \":\"1c\",kauan:11,kauf:\"n\",\"kaum \":\"n\",kauni:11,kaunt:\"d\",kaupu:11,\"kav \":\"v\",kawy:\"1a\",kayb:\"1f\",kayo:\"d\",kazis:\"1o\",kazo:\"1o\",kaç:\"1f\",kać:\"1a\",kaş:\"1f\",kať:\"y\",kaže:\"v\",kbaa:\"r\",\"kban \":14,\"kbo \":\"d\",kby:\"1a\",kbó:14,kcesa:\"1o\",kcesi:\"1o\",kceso:\"1o\",kcia:\"1o\",kcid:\"1o\",kcii:\"1o\",kcj:\"1a\",kco:\"1o\",kcy:\"1a\",\"kd-\":\"1o\",\"kdan \":\"1n\",kdebe:\"1n\",kdebi:\"1n\",kdek:\"1o\",kdep:\"1n\",kdig:\"1n\",kdik:\"1n\",kdor:\"1o\",kdyb:\"u\",kdyg:\"1n\",kdym:\"1n\",kdys:\"u\",keaa:11,kead:\"b\",keas:11,kebb:3,kebu:\"b\",keby:\"y\",kecil:\"b\",kecu:\"b\",kedag:\"1c\",kedu:\"b\",kedv:14,\"kedy \":\"y\",keeg:\"1c\",\"keek \":\"r\",keele:\"1c\",keelt:\"1c\",keep:\"m\",keffa:3,kehus:12,\"keje \":\"1n\",kejo:\"1o\",keju:\"b\",keku:\"b\",kelas:\"b\",kelio:\"1b\",\"kely \":\"m\",\"kem-\":3,kemar:\"b\",kemba:\"b\",kemis:11,kemmt:13,kemst:13,kemur:13,kemä:11,kenal:\"b\",kenap:\"b\",kendt:\"z\",kenew:4,keney:4,kenhu:\"r\",kennt:\"n\",\"kent-\":3,kenč:\"1b\",kepad:\"b\",kepal:\"b\",keppe:10,\"kept \":\"m\",kerja:\"b\",kerro:11,kerto:11,kesal:\"b\",kesin:\"1f\",kesku:11,keso:\"d\",kesu:\"b\",kesä:11,ketik:\"b\",ketur:\"1b\",keuke:\"r\",keun:\"b\",keur:\"r\",keuz:\"r\",kevel:12,keyk:\"d\",keyr:13,keys:\"m\",kezet:14,keä:11,keč:3,keď:\"y\",keşe:\"1k\",\"kf \":3,kfas:\"m\",kfoj:\"1o\",kgl:\"1o\",\"khai \":\"a\",khav:\"1o\",khaw:\"b\",khd:\"m\",kheid:\"r\",\"khen \":\"a\",\"khi \":\"a\",khir:\"b\",khl:\"u\",\"kho \":\"a\",khoa:\"a\",khor:\"1o\",\"khu \":\"a\",khus:10,khuy:\"a\",\"khá \":\"a\",khác:\"a\",khán:\"a\",khát:\"a\",khå:10,khí:\"a\",khó:\"a\",khô:\"a\",khă:\"a\",\"ki-la\":\"b\",\"kiai \":\"1b\",kiaj:\"1o\",\"kial \":\"1o\",\"kiam \":\"1o\",\"kiau \":\"1b\",kibet:\"z\",\"kich \":\"1a\",kicka:10,kics:14,\"kida \":\"1c\",kids:\"m\",kidt:\"z\",kiego:\"1a\",\"kiek \":\"1b\",\"kiel \":\"1o\",kiele:11,kielt:11,kiez:\"r\",kiež:\"y\",kift:\"z\",kigg:\"z\",kigi:\"1o\",\"kih \":\"v\",kiit:11,kijk:\"r\",\"kika \":\"1f\",kikit:\"d\",kikod:\"1p\",kilal:\"d\",kilk:\"1a\",killn:10,kilv:13,kimas:\"1b\",kims:\"1f\",kimw:4,kimą:\"1b\",kinak:\"d\",kinek:14,kinh:\"a\",kinia:\"1b\",kiniu:\"1b\",kinji:\"1n\",kinud:\"1c\",kinä:11,kinę:\"1b\",\"kiom \":\"1o\",\"kios \":\"1b\",kipet:12,kipta:13,kipti:13,kirc:\"n\",kissa:11,kisto:\"1o\",kitc:\"m\",kitą:\"1b\",kiuj:\"1o\",kium:\"t\",kiun:\"1o\",kiuo:\"1b\",kiyo:\"1f\",kiä:11,kiçi:\"1n\",kiê:\"a\",kië:\"r\",kią:\"1b\",kiša:\"v\",kjan:13,kjed:12,kjef:12,kjel:12,kjem:12,kjen:12,kjer:12,kjes:\"r\",kjul:\"z\",kjut:10,kjál:13,kjæ:12,kjö:13,kjø:12,kkatl:\"1f\",kkau:11,\"kked \":3,kkede:\"z\",kkia:11,kkja:13,kkk:\"m\",\"kkni \":3,\"kkor \":14,kkra:13,kkru:13,kkse:3,\"kkt \":13,kktu:13,kkuma:11,kkuna:11,\"kkur \":13,kkurn:13,kkv:\"1o\",kky:11,kkü:\"1f\",klaga:10,klai:\"1b\",\"klak \":\"d\",klary:\"1n\",kları:\"1f\",\"klat \":\"d\",klaş:\"1f\",kledd:12,kleme:\"1f\",kleu:\"r\",klia:\"1b\",klich:\"n\",klidn:\"u\",kligt:10,klike:1,klj:\"v\",kloc:10,klog:\"z\",kloje:\"1b\",klud:\"1o\",klug:\"n\",klukk:13,\"klum \":13,kluz:\"1o\",klyg:\"1n\",klys:\"1b\",klád:\"u\",klára:13,kläde:10,klänn:10,\"klær \":12,klære:\"z\",klöd:\"1p\",klø:\"z\",klý:\"u\",klā:\"1d\",\"klą \":\"1b\",klē:\"1d\",klī:\"1d\",klı:\"1f\",kmany:\"1n\",\"kmer \":\"y\",\"kmu \":\"b\",\"kmy \":\"1n\",kmę:\"1b\",kmı:\"1f\",\"kn \":13,knabi:\"1o\",knabo:\"1o\",\"knak \":14,knek:14,\"knew \":\"m\",\"knih \":\"u\",\"knir \":13,knj:\"v\",knou:\"u\",know:\"m\",\"knum \":13,knyg:\"1b\",\"kná \":\"y\",knæ:\"z\",kníh:\"y\",knö:\"n\",knü:\"n\",kną:\"1a\",knę:\"1a\",\"koa \":11,kobi:\"1a\",kobs:\"1p\",kobw:4,kocha:\"1a\",kocs:14,kodus:\"1c\",\"koer \":\"1c\",koera:\"1c\",\"kof \":\"1p\",\"kofe \":\"1n\",\"kog \":\"v\",\"koga \":\"v\",\"kogo \":\"1a\",\"kogu \":\"1c\",\"kohe \":\"1c\",kohv:\"1c\",koir:11,kois:11,kokia:\"1b\",kokio:\"1b\",\"koks \":\"1b\",\"kol-\":\"1p\",koldt:\"z\",kolem:\"u\",kolin:\"1b\",koliv:\"u\",\"kolm \":\"1c\",kolme:11,kolw:\"1a\",komd:13,\"koms \":\"1p\",konec:\"u\",konsc:\"1o\",konud:\"1f\",kooli:\"1c\",kopj:\"r\",koram:\"1o\",korer:4,korpo:\"1o\",korwa:4,korz:\"1a\",koska:11,kotii:11,kots:\"d\",koud:\"r\",koulu:11,koup:\"u\",koven:\"z\",kovl:\"z\",kovéh:\"u\",kový:\"u\",kowa:\"1a\",kowi:\"1a\",koyd:\"1f\",\"koze \":4,kozt:14,koç:\"1f\",koć:\"v\",kočk:\"u\",koş:\"1f\",kpak:\"d\",kplo:\"1o\",kpá:14,\"kr \":\"u\",\"krai \":\"1b\",krang:12,kratt:10,kravu:\"y\",kraš:\"1b\",kreda:\"1o\",kreeg:\"r\",kreek:\"1c\",kreft:12,krege:\"r\",kresk:\"1o\",kriau:\"1b\",kriba:\"1o\",kribi:\"1o\",krifa:13,\"krik \":1,krič:\"y\",krk:\"u\",krm:\"u\",\"krom \":\"1o\",\"kroz \":\"v\",krs:\"v\",krui:\"r\",\"krum \":13,krw:\"1a\",kryf:1,krzy:\"1a\",král:\"u\",krå:10,kræ:\"z\",krót:\"1a\",krø:\"z\",krü:\"n\",krā:\"1d\",krē:\"1d\",krę:\"1a\",krī:\"1d\",krš:\"v\",krū:\"1b\",\"ks'\":\"m\",\"ks-\":\"1o\",\"ksaa \":11,ksady:\"1n\",ksci:\"1o\",ksee:11,\"ksek \":\"1f\",ksene:12,ksesi:11,ksest:11,\"ksid \":\"1c\",ksima:\"1o\",ksins:13,ksio:\"1o\",ksiu:\"1b\",ksiä:11,ksią:\"1a\",ksj:12,kss:\"n\",\"ksta \":\"1b\",\"ksti \":\"1b\",ksud:\"b\",\"ksum \":3,ksyo:\"d\",ksä:11,kså:10,ksé:14,ksó:\"1a\",ksā:\"1d\",ksč:\"1b\",ksı:\"1f\",\"ktai \":\"1b\",ktaj:\"1o\",ktb:\"r\",ktd:\"1o\",která:\"u\",které:\"u\",ktesk:12,ktib:\"d\",ktige:12,ktigs:12,ktigt:10,\"ktir \":\"1f\",ktm:\"1o\",\"ktoj \":\"1o\",ktorá:\"y\",ktorí:\"y\",ktuv:\"1b\",ktv:\"n\",któr:\"1a\",ktø:\"z\",ktą:\"1b\",ktī:\"1d\",ktı:\"1f\",\"ku-b\":\"b\",\"kua \":11,kubig:4,kubik:4,kubw:4,kuci:\"b\",kudr:\"1o\",kudt:\"z\",kuga:4,kugen:4,kugi:4,kugle:\"z\",kugu:4,kuha:\"d\",\"kuhu \":\"1c\",kuid:\"1c\",kuin:11,kuir:\"1o\",kuji:\"u\",kukub:4,kulay:\"d\",kulik:\"1p\",kuloj:\"1o\",kulv:\"1o\",kumai:\"d\",kumw:4,\"kune \":\"1o\",kunv:\"1o\",kunz:4,kuol:11,kuom:\"1b\",kuria:\"1b\",kurik:4,kurls:\"1d\",kusil:\"u\",kusne:\"v\",kusta:11,kutim:\"1o\",kutn:\"b\",kutta:11,kuule:11,kuuli:11,kuun:11,kuut:11,kuvan:11,kuvi:11,kuvu:4,kuvy:4,kuwar:\"d\",kuwe:\"d\",kuyo:\"1f\",kuzo:\"1o\",kuć:\"v\",kuş:\"1f\",kuša:\"v\",kuše:\"u\",kvai:\"1b\",kvaj:\"1o\",kvan:\"1o\",kvas:\"1o\",kvaz:\"1o\",kvef:13,kveto:\"y\",kvety:\"y\",kvid:\"1o\",kvien:\"1b\",kvil:\"1o\",\"kvin \":\"1o\",kvis:\"1o\",kvon:\"1o\",kvä:10,kvô:\"y\",kvö:13,\"kw'\":4,kwam:\"r\",kwel:\"d\",kwez:4,kwia:\"1a\",kwig:4,kwij:\"r\",kwir:4,kwiy:4,kwiz:4,kwü:\"n\",\"ky'\":\"m\",\"ky-\":\"m\",\"kyan \":\"d\",kyat:\"d\",kyc:10,kydd:10,kyde:\"z\",kyer:\"z\",kyg:\"z\",kyh:11,kyka:\"1n\",kyki:\"1b\",kykl:\"1b\",kylm:11,kymm:11,\"kyp \":\"1n\",kysy:11,kytic:\"y\",kytis:\"1b\",kyto:\"1b\",kyusa:3,kyv:11,kyä:11,kyü:\"1f\",kyč:\"1b\",kyň:\"y\",kzak:\"1o\",kzam:\"1o\",kzer:\"1o\",kzis:\"1o\",kzo:\"1o\",kzu:\"n\",káb:14,kád:14,kái:14,káj:14,kárni:\"y\",kás:14,\"kát \":14,káš:\"u\",kâ:\"1f\",käes:\"1c\",käg:10,käh:11,käk:11,kämt:10,känd:10,känna:10,känne:10,känt:10,käri:11,kärl:10,käsi:11,käu:\"n\",käv:11,käw:\"1n\",käy:11,kää:11,kåd:10,kåp:10,kår:\"z\",kåt:12,kæd:\"z\",kæf:\"z\",kæg:\"z\",kæl:\"z\",kæm:\"z\",kæn:\"z\",kære:\"z\",kærl:\"z\",kça:\"1f\",kçe:\"1f\",kçy:\"1n\",kçı:\"1f\",kél:14,kén:14,kéo:\"a\",kép:14,kér:14,kés:14,két:14,kéz:14,kê:\"a\",kì:\"a\",\"kí \":\"y\",kính:\"a\",kís:14,kít:14,kív:14,kóg:13,kóla:13,kô:\"y\",kõ:\"1c\",\"kö \":11,köa:11,köj:11,költ:14,kömeg:\"1n\",kömo:\"1p\",kömön:\"1p\",köne:\"1n\",köni:\"n\",könne:\"n\",köny:14,köpa:10,köpek:\"1f\",köper:10,köpl:\"1n\",körde:10,körp:\"n\",köve:14,köw:\"1n\",köz:14,köö:11,\"kø \":\"z\",køb:\"z\",kød:\"z\",køe:\"z\",køk:\"z\",køl:\"z\",køn:\"z\",kør:\"z\",kúp:\"y\",kúse:\"y\",kúsi:\"y\",kû:\"1f\",\"kü \":\"1f\",küc:\"n\",küh:\"n\",künk:14,küsi:\"1c\",küss:\"n\",küç:\"1f\",kýa:\"1n\",kýr:13,kā:\"1d\",kč:\"1b\",kęs:\"1b\",kı:\"1f\",kł:\"1a\",kō:\"n\",kş:\"1f\",\"kš \":\"1d\",kše:\"v\",kšl:\"1b\",kšt:\"1b\",kšu:\"1d\",kūd:\"1b\",kūn:\"1b\",kūr:\"1b\",\"l'ec\":\"q\",\"l'ed\":\"q\",\"l'el\":\"q\",\"l'ep\":\"q\",\"l'eq\":\"q\",\"l'f\":\"q\",\"l'ha \":\"q\",\"l'hai\":\"q\",\"l'he\":\"l\",\"l'ho \":\"q\",\"l'hom\":\"l\",\"l'on \":\"l\",\"l'uc\":\"q\",\"l'ul\":\"q\",\"l'um\":\"q\",\"l'y\":\"l\",\"l'é\":\"l\",\"l-g\":\"m\",\"l-j\":\"m\",\"l-r\":\"m\",\"l-u\":\"m\",\"l-v\":\"1o\",\"laa \":11,laag:\"r\",laats:\"r\",labai:\"1b\",labh:\"s\",labob:\"1p\",labol:\"1p\",labom:\"1p\",\"labs \":\"1d\",\"labu \":\"1d\",lacak:\"1f\",lacc:\"q\",lació:\"o\",ladný:\"y\",ladse:\"z\",laet:\"t\",lagay:\"d\",lagd:\"z\",lahch:\"1q\",lahir:\"b\",lahj:11,lahn:\"b\",lahr:\"b\",laiko:\"1b\",laiks:\"1d\",laina:11,laio:\"q\",laiss:\"l\",laitt:11,lajn:\"1o\",lajr:\"1o\",lají:\"u\",lakem:\"u\",\"laki-\":\"b\",lakuk:\"b\",lalak:\"d\",lalaş:\"1n\",lalim:\"d\",\"lalu \":\"b\",lamag:\"1n\",lamaz:\"1f\",lamn:\"b\",\"lamt \":3,lamus:\"t\",lamó:\"o\",lamı:\"1f\",landy:\"1n\",lanej:\"p\",langr:\"r\",lanle:12,lanum:13,lanyn:\"1n\",lanē:\"1d\",lanı:\"1f\",lapit:\"d\",\"laq \":3,larak:\"1f\",lardy:\"1n\",larig:\"1o\",larmy:\"1n\",larym:\"1n\",lasci:\"q\",lasel:\"1c\",lases:\"o\",lasj:12,laszo:14,lası:\"1f\",lateg:\"1a\",latik:\"1p\",latse:10,latus:\"t\",latz:\"n\",laub:\"n\",lauf:\"n\",laugh:\"m\",lauki:\"1b\",laukt:\"1b\",laula:11,laupa:13,lavné:\"y\",lawy:\"m\",layam:\"1f\",\"layt \":3,layu:\"d\",\"lazi \":\"v\",laí:\"s\",laï:\"l\",\"lañ \":\"1n\",laň:\"1n\",laşt:\"1f\",laşı:\"1f\",laši:\"v\",lať:\"y\",laže:\"v\",lbă:15,lbą:\"1b\",lbū:\"1b\",lcei:\"t\",lceo:\"t\",lchr:\"t\",lchug:\"1q\",lcom:\"m\",lcos:\"q\",lcs:14,lcun:\"q\",lcz:\"1a\",lcã:\"p\",lcă:15,ldá:14,ldē:\"1d\",ldī:\"1d\",ldž:\"1b\",\"le's\":\"m\",learn:\"m\",lease:\"m\",lebei:\"r\",\"lebo \":\"y\",lebt:\"n\",lecat:15,lecci:\"o\",ledam:\"v\",ledao:\"v\",ledg:\"m\",ledne:\"u\",ledom:\"1p\",ledse:10,ledá:\"u\",\"leef \":\"r\",leerd:\"r\",lefoo:\"r\",legav:\"z\",\"legg \":12,\"legh \":\"1q\",legj:14,legy:14,lehet:14,lehr:\"n\",leia:\"p\",leibe:\"n\",leich:\"n\",leido:\"1b\",leigu:13,leikk:11,leiku:13,\"leil \":\"l\",leili:12,leiro:\"p\",leith:\"s\",leitt:13,lejed:\"z\",\"leji \":\"u\",lekag:\"z\",\"leks \":\"1c\",leká:\"y\",lembr:\"p\",\"lemo \":\"1o\",lemob:\"1p\",lemoj:\"1o\",lemok:\"1n\",lemé:14,lengs:12,lengv:\"1b\",lenme:\"1f\",lenok:\"1n\",lensé:14,\"lenç \":\"1n\",\"lení \":\"u\",lenül:14,leor:\"s\",lepie:\"1a\",\"lepo \":\"v\",leraa:\"r\",lerni:\"1o\",lerø:\"z\",lesai:\"b\",leski:\"v\",\"less \":\"m\",\"lesz \":14,lesze:14,lesé:14,\"let's\":\"m\",letom:\"1p\",letz:\"n\",letą:\"1b\",leuv:\"l\",levó:\"o\",\"lewe \":1,leya:\"d\",leyeb:\"1f\",leyf:13,leyi:\"1f\",leyl:\"1f\",\"lez-\":\"l\",leä:11,leñ:\"o\",lečn:\"u\",leşt:\"1f\",\"lf'\":\"m\",\"lf-\":\"m\",lfb:\"r\",lfd:\"r\",lfv:\"r\",lfw:\"m\",lfz:\"r\",lfæ:\"z\",lfí:\"o\",lfø:\"z\",lgaj:\"1o\",lgau:\"1b\",\"lgav \":\"z\",lgb:\"m\",lgens:\"r\",lgh:\"q\",lgil:\"1f\",lgisa:\"1f\",lgiv:\"z\",lgj:13,lgoz:14,lgui:\"o\",\"lgum \":\"p\",lguna:\"o\",lgyt:\"1b\",lgå:10,lgó:\"o\",lgú:\"o\",lgą:\"1b\",\"lh \":\"1q\",\"lh'\":\"1q\",\"lha'\":\"1q\",lhad:\"p\",lhand:\"p\",lhaq:\"1q\",\"lhar \":\"p\",\"lhas \":\"p\",lhat:14,lhb:\"1q\",lhc:\"1q\",lhd:\"1q\",lheg:\"1q\",\"lhej \":\"1q\",lhere:\"p\",\"lhes \":\"p\",lheur:\"l\",lhey:13,lhh:\"1q\",lhich:\"1q\",lhing:\"1q\",lhl:\"1q\",lhm:\"1q\",lhn:\"1q\",\"lho'\":\"1q\",lhor:\"p\",\"lhou \":\"p\",lhoy:\"1q\",lhp:\"1q\",lhq:\"1q\",lht:\"1q\",lhv:\"1q\",lhw:\"1q\",lhã:\"p\",\"lhé \":\"y\",lhí:14,lhý:\"y\",\"li' \":\"1q\",\"li-b\":\"1p\",\"li-o\":\"1p\",\"li-v\":\"1p\",liain:\"s\",liaj:\"1o\",liamo:\"q\",liau:\"1b\",libik:\"1p\",libru:\"t\",libum:\"t\",libus:\"t\",licet:\"t\",\"lich \":\"n\",licka:10,lidem:\"u\",\"lidé \":\"u\",lidí:\"u\",liebe:\"n\",lieci:\"1d\",lieft:\"r\",liei:15,lieko:\"y\",lienk:\"y\",ligis:\"1o\",ligro:\"o\",lihat:\"b\",lihi:\"d\",liia:11,liik:11,liil:15,\"liis \":\"t\",liisi:11,\"liit \":\"d\",lijap:\"1p\",lijk:\"r\",lijn:\"r\",lijv:\"r\",liją:\"1b\",likd:\"1n\",\"likk \":12,likna:10,likrá:\"u\",\"lile \":15,lilob:\"1p\",lilä:\"1p\",lilön:\"1p\",limla:\"r\",limpa:\"p\",limt:3,limut:\"d\",\"lin-\":3,lingg:\"d\",\"linh \":\"a\",linha:\"p\",linol:\"1p\",linö:\"1p\",lioa:15,\"liom \":\"s\",lioms:\"s\",lipom:\"1p\",lirdi:\"1f\",lirim:\"1f\",liriz:\"1f\",lirsi:\"1f\",liru:\"1o\",lisla:3,lisu:11,\"lisz \":\"1a\",lisç:\"1n\",\"lit-t\":3,litir:\"s\",littl:\"m\",\"lity \":\"m\",lité:\"l\",liul:\"1o\",livat:11,lived:\"m\",livin:\"m\",livro:\"p\",\"liwe \":\"1a\",liwo:\"1a\",lixo:\"p\",liyd:\"1f\",liyet:\"1f\",liyo:\"1f\",liæ:\"t\",liè:\"l\",\"lié \":\"l\",liê:\"a\",lië:\"r\",liñ:\"o\",liö:11,liā:\"t\",lią:\"1b\",\"lić \":\"1a\",liči:\"v\",ličn:\"v\",liň:\"1n\",liş:\"1f\",liū:\"1b\",ljav:\"v\",ljde:10,ljegi:\"1n\",ljeno:\"v\",\"ljer \":10,ljese:14,\"lji \":\"v\",ljiv:\"v\",ljk:\"v\",ljn:\"v\",ljoe:\"r\",ljs:\"v\",ljub:\"v\",ljudi:\"v\",ljug:10,ljuna:\"1o\",ljy:11,ljá:14,ljó:13,ljög:10,ljø:\"z\",ljú:13,ljü:14,ljš:\"v\",\"lk-\":\"m\",lkaar:\"r\",lkaj:\"1o\",lkein:11,lkf:\"1o\",lkinj:\"1n\",lkj:\"1o\",lkk:11,lkoi:11,lkou:\"u\",lkoz:14,\"lks \":\"m\",lkste:\"1d\",lkyn:\"u\",lkä:11,\"lké \":\"u\",lkül:14,lký:\"u\",lką:\"1a\",lkę:\"1a\",\"ll'a\":\"q\",\"ll'h\":\"q\",\"ll'o\":\"q\",\"ll'u\":\"q\",\"ll-as\":3,\"ll-aw\":3,\"ll-i \":3,llaa:11,llae:\"t\",llait:\"l\",llall:11,llamt:3,lları:\"1f\",llave:\"o\",llbak:10,\"llde \":10,lldel:10,\"lle-\":\"l\",lleic:\"n\",llein:\"n\",\"llen-\":3,llerk:\"z\",llfä:10,llgat:14,\"lli-\":3,lliu:\"t\",llnin:10,llogh:\"1q\",lloin:11,lloso:\"o\",llq:3,llsam:10,llsc:\"n\",llsk:10,\"llst \":\"n\",lltaf:13,lltes:\"n\",lltin:10,llup:\"z\",\"llur \":13,llvar:10,llx:3,llyk:\"z\",llym:\"1n\",llz:\"n\",llâ:\"l\",\"llä \":11,llät:11,llå:10,llæ:\"t\",llée:\"l\",llés:\"l\",\"llí \":\"o\",llít:14,llò:\"q\",llô:\"l\",llø:\"z\",llī:\"t\",llı:\"1f\",lmm:\"m\",lmã:\"p\",lmæ:\"z\",lmò:\"q\",lmą:\"1b\",lnad:10,lnak:14,lnap:14,lnas:\"1b\",lnav:15,lnd:\"n\",lneg:\"1a\",lnek:14,lnir:15,lnk:\"y\",lnov:\"1o\",lnud:\"1c\",lnum:13,lnya:\"b\",lní:\"u\",lnö:14,lnø:\"z\",lnī:\"1d\",lnı:\"1f\",\"lo' \":\"1q\",\"lo'l\":\"1q\",\"loa \":11,loai:15,loar:15,\"lobs \":\"1p\",locc:\"q\",loce:\"q\",locui:15,locul:15,lodho:\"1q\",lodn:\"1q\",lodpu:\"1q\",\"lods \":\"1p\",lodt:\"z\",\"lodu \":\"1d\",loed:\"r\",loeg:\"r\",loei:\"r\",loem:\"r\",loer:\"r\",lofa:13,logai:\"1b\",\"logh \":\"1q\",logom:\"1p\",logy:\"m\",\"loje \":\"1b\",lojn:\"1o\",lokuv:11,lols:\"1p\",\"lom-\":\"1p\",lommo:10,\"loms \":\"1p\",loob:\"d\",looki:\"m\",looks:\"m\",looma:\"1c\",\"loos \":\"r\",lopet:11,loppu:11,\"loq \":\"1q\",loquo:\"t\",loroj:\"1o\",loron:\"1o\",lorum:\"t\",louh:\"u\",loul:15,louž:\"u\",\"love \":\"m\",lovek:\"y\",lovl:\"z\",\"lová \":\"y\",lowl:\"m\",lows:\"m\",lox:\"q\",ločn:\"y\",loše:\"v\",lped:\"m\",\"lpet \":\"z\",lpev:\"q\",\"lpis \":\"1o\",lpm:\"r\",lpn:\"1b\",lpp:11,lprok:\"1o\",\"lpte \":10,\"lpu \":\"1o\",lpur:\"1o\",lpy:11,lpz:\"r\",lpé:\"o\",lpó:\"o\",lqi:3,lqo:\"1q\",lrap:\"1o\",lread:\"m\",lred:\"o\",lreiz:\"1d\",lrä:10,\"ls'\":\"m\",lsady:\"1n\",lsamm:10,lsap:\"r\",lsdag:\"z\",lsil:\"o\",lsim:\"1o\",lsj:\"r\",lskad:10,lsked:\"z\",\"lski \":\"1a\",lskie:\"1a\",lskyl:13,lsn:\"r\",lsof:\"r\",lspil:12,lstub:\"r\",lsuk:\"1o\",lsw:\"n\",\"lsz \":14,lsöd:\"1p\",lsą:\"1b\",lsē:\"1d\",ltc:15,ltd:\"m\",ltà:\"q\",ltè:\"l\",ltò:\"q\",ltā:\"t\",ltă:15,ltą:\"1b\",ltū:\"1b\",\"lu' \":\"1q\",luais:11,luaj:\"1o\",luatk:11,lubio:\"1a\",lubis:\"1a\",ludas:\"1o\",ludio:\"t\",luds:\"z\",ludz:\"1a\",luego:\"o\",luev:\"o\",lufte:\"z\",\"lugh \":\"1q\",lugn:10,lugz:\"n\",\"luh \":\"b\",\"lui-\":\"l\",lujb:15,luji:\"u\",lukka:13,lukku:13,lukm:\"1n\",lulut:\"d\",luly:\"z\",lumea:15,lunce:\"u\",luned:\"q\",lunos:\"p\",luog:\"q\",lupw:\"1q\",lurer:12,lusj:12,\"luss \":\"n\",lusy:\"d\",lutse:12,\"lutt \":12,lutô:\"l\",luul:11,luun:11,luve:\"1o\",luvil:\"u\",luvit:\"u\",luvo:\"1o\",luwa:\"d\",luyo:\"1f\",luza:\"1o\",luâ:\"a\",luç:\"p\",lué:\"l\",luê:\"p\",luíd:\"p\",luča:\"v\",luči:\"v\",luň:\"1n\",luş:\"1f\",luša:\"v\",lvd:\"z\",\"lveg \":13,lveni:\"1o\",lveno:\"1o\",lveu:\"p\",\"lvez \":\"p\",lvl:\"r\",lvoja:\"1b\",lvoji:\"1b\",lvoju:\"1b\",lvom:\"z\",lvä:11,lvæg:13,lví:\"o\",lvò:\"q\",lvē:\"1d\",lwie:\"1a\",lwiz:3,lxa:3,lxe:3,lxi:3,lxx:\"t\",lyck:10,lyden:\"z\",lyder:\"z\",lydy:\"1n\",\"lyes \":14,lygi:\"1b\",lygt:\"z\",lygy:\"1n\",lyik:14,lyin:\"m\",lyj:\"1b\",lykd:\"1n\",\"lyke \":1,lykla:\"1n\",lykte:12,\"lym \":\"1n\",lymy:\"1n\",lynda:\"1n\",lyny:\"1n\",\"lyo \":\"d\",\"lyp \":\"1n\",\"lyr \":12,lysy:\"1n\",lyten:12,\"lyve \":\"z\",lyver:\"z\",lyy:11,lyzet:14,lyá:14,lyä:11,lyé:14,lyó:14,lyň:\"1n\",lyži:\"y\",\"lz \":\"n\",lzat:\"q\",lzt:\"n\",\"lá-\":\"p\",lában:14,lálk:14,lált:14,lánu:\"u\",láto:14,látta:14,láx:\"p\",\"láš \":\"u\",\"lâ \":\"1f\",lâmp:\"p\",lând:\"p\",lâng:15,lâns:15,lât:\"l\",lâu:\"a\",\"lã \":\"p\",läb:\"1c\",läck:10,läder:10,lädik:\"1p\",läf:\"n\",lägi:\"1p\",läht:11,läi:11,läka:10,läl:11,lämo:\"1n\",lämä:11,läna:\"1p\",länni:10,läno:\"1n\",lära:10,lärde:10,lärdi:\"1n\",läsa:10,läu:\"n\",läv:11,läx:10,lää:11,låd:10,låe:\"z\",\"lås \":\"z\",låte:10,lått:12,\"læ \":\"t\",læd:\"z\",\"læg \":\"z\",lækk:\"z\",lækni:13,læm:13,læn:\"z\",læp:13,læse:\"z\",\"læst \":\"z\",lçe:\"1f\",lçi:\"1f\",lço:\"p\",lçü:\"1f\",lè:\"l\",léam:\"s\",léch:\"l\",léct:\"o\",\"lée \":\"l\",léfo:\"o\",\"lég \":14,\"lého \":\"u\",\"léi \":\"s\",léin:\"s\",léo:\"l\",\"lépe \":\"u\",lévi:\"l\",\"lê \":\"p\",\"lê-\":\"p\",lì:\"q\",lía:\"o\",líbe:\"u\",líbit:\"u\",lícu:\"o\",líe:\"o\",líg:\"o\",líka:13,líkl:13,líne:\"o\",líng:\"p\",lío:\"o\",\"líta \":13,líč:\"u\",lî:\"1f\",lñ:\"1n\",\"lò \":\"q\",lógio:\"p\",lóid:\"s\",lój:14,lók:14,lót:14,lôt:\"l\",lõe:\"p\",\"lö \":11,löc:\"n\",lödö:\"1p\",lögn:10,lögr:13,löh:\"n\",löj:10,lökk:13,lömd:10,lömi:\"1p\",lömm:10,lömt:10,löng:13,lörd:10,lösa:10,lösk:13,löts:10,löva:\"1p\",löw:\"n\",löy:11,løb:\"z\",\"lød \":\"z\",løde:\"z\",løre:\"z\",løve:\"z\",lù:\"a\",\"lúc \":\"a\",lúd:\"o\",lúm:\"o\",lúp:\"y\",lúv:\"p\",lúž:\"y\",lû:\"l\",lüd:\"1f\",lüf:\"n\",lüge:\"n\",lüh:\"n\",lünk:14,lüsse:\"n\",\"lýan \":\"1n\",lýand:\"1n\",lýc:\"u\",lým:\"u\",lýs:13,lýta:13,lār:\"t\",lās:\"t\",lāv:\"t\",lă:15,lča:\"y\",lče:\"u\",\"lē \":\"1d\",lēd:\"1d\",lēm:\"1d\",lēn:\"1d\",lēp:\"1d\",lēs:\"t\",lğ:\"1k\",\"lī \":\"t\",līd:\"1d\",līg:\"1d\",līn:\"t\",lıd:\"1f\",lıl:\"1f\",lım:\"1f\",lın:\"1f\",lıs:\"1f\",lıyd:\"1f\",lıyo:\"1f\",\"lığı \":\"1f\",lığın:\"1f\",lış:\"1f\",lō:\"t\",lši:\"y\",lšt:\"u\",lší:\"u\",lūk:\"1b\",lūn:\"t\",lūž:\"1b\",lže:\"u\",lžo:\"u\",lε:3,\"m'ai\":\"l\",\"m'ap\":\"l\",\"m'as\":\"l\",\"m'av\":\"l\",\"m'd\":\"1f\",\"m'en\":\"l\",\"m'er\":\"q\",\"m'la\":\"1f\",\"m'n\":\"r\",\"m'u\":\"1f\",\"m'y\":\"l\",\"m'è\":\"q\",\"m'é\":\"l\",\"m-ai\":15,\"m-ar\":15,\"m-au\":15,\"m-d \":3,\"m-f\":3,\"m-h\":\"m\",\"m-i\":3,\"m-li\":\"1p\",\"m-me\":\"p\",\"m-no\":\"p\",\"m-se \":\"p\",\"m-v\":\"p\",\"m-y\":3,\"ma' \":\"1q\",\"ma)\":\"1o\",maaa:\"d\",maab:\"d\",maaf:\"b\",maay:\"d\",mabut:\"d\",macch:\"q\",mació:\"o\",macs:14,madv:\"t\",madı:\"1f\",\"mag-\":\"d\",magag:\"d\",magal:\"d\",magaw:\"d\",magba:\"d\",magk:\"d\",magsa:\"d\",magur:4,\"magy \":\"1n\",magyn:\"1n\",magá:14,maher:4,mahir:\"d\",mahu:\"d\",mahva:\"1q\",maidi:\"s\",maii:\"d\",maiso:\"l\",maits:\"1c\",majd:14,majka:\"v\",majn:\"1o\",\"maju \":\"v\",mají:\"u\",majú:\"y\",makak:\"d\",makda:\"1n\",makee:\"1c\",maken:\"r\",makes:\"m\",makit:\"d\",makli:1,makly:\"1n\",\"maks \":\"1c\",makta:\"1f\",makte:12,makç:\"1n\",malbo:\"1o\",malfe:\"1o\",malii:\"d\",malju:\"1o\",malke:\"z\",malko:\"1o\",malmu:\"1o\",malpl:\"1o\",malr:\"1o\",malyd:\"1n\",malä:\"1p\",\"malé \":\"u\",malı:\"1f\",mamy:\"1a\",\"mamá \":\"o\",mamı:\"1f\",mandy:\"1n\",manei:\"p\",manim:\"1b\",manje:\"v\",manjo:\"1o\",manoj:\"1o\",manqu:\"l\",manę:\"1b\",manı:\"1f\",maoi:\"s\",mapo:\"1o\",marna:10,marun:\"d\",marád:\"u\",marát:\"y\",marī:\"t\",marı:\"1f\",masar:\"d\",masih:\"b\",masjo:12,masok:\"d\",masuk:\"b\",masyn:\"1n\",\"masz \":\"1a\",ması:\"1f\",matau:\"1b\",matay:\"d\",mateg:4,matre:\"t\",matuj:\"u\",mauso:\"q\",mauv:\"l\",maux:\"l\",\"mawa \":\"d\",mawl:3,maxo:\"t\",mayb:\"m\",mayr:\"d\",\"mazi \":4,mazio:\"q\",mazli:\"1d\",maí:\"o\",maú:\"o\",mačia:\"1b\",mačky:\"y\",maď:\"u\",maň:\"1n\",maşg:\"1n\",maşi:15,\"maš \":\"v\",mať:\"y\",maža:\"1b\",maži:\"1b\",mbac:\"b\",mbali:\"b\",mbary:\"1b\",mbaye:4,mbeid:\"s\",mbf:\"m\",mbii:15,mbiz:\"q\",mbié:\"o\",mbió:\"o\",mbora:\"p\",mbreu:\"l\",mbron:\"1o\",mbua:\"b\",mbum:\"t\",mbw:4,mby:3,\"mbé \":\"l\",mbê:\"l\",mbù:\"q\",mbă:15,mcic:3,mcm:\"t\",mco:\"u\",mcz:\"1a\",mcı:\"1f\",mdaq:\"1q\",mdc:\"t\",mdele:12,mdin:3,mdiu:\"t\",mdz:\"1a\",mdı:\"1f\",\"me'r\":\"1q\",meal:\"m\",\"meam \":\"t\",mearg:15,meat:\"m\",meaz:15,mebo:\"m\",mebpa:\"1q\",mecu:\"t\",medad:\"o\",medan:10,medda:3,meddu:3,medig:\"1n\",medz:\"y\",meeg:\"r\",meeld:\"1c\",meele:\"1c\",meeri:\"1c\",\"mees \":\"1c\",megb:14,\"megh \":\"1q\",megim:\"1n\",megk:14,megle:14,meglá:14,megol:14,megs:14,megt:14,megv:14,megy:14,meinu:\"n\",meio:\"p\",meiri:13,meiro:\"p\",meite:\"1d\",mejbu:\"1n\",mejeg:\"1n\",mejek:\"1n\",mekde:\"1n\",mekte:\"1f\",mekç:\"1n\",melak:\"b\",meleg:14,melho:\"p\",melih:\"b\",melio:\"t\",meliu:\"t\",melko:11,melm:3,meluo:\"1b\",melyi:14,memak:\"b\",meman:\"b\",memba:\"b\",membu:\"b\",\"memi \":\"1f\",memil:\"b\",memiz:\"1f\",memmi:3,memob:\"1p\",mempe:\"b\",memt:3,\"men-\":3,mengd:12,mengg:\"b\",mengh:\"b\",menii:15,menik:\"b\",\"menj \":14,mennä:11,menol:\"b\",mensc:\"n\",menud:\"o\",menun:\"b\",menur:\"b\",menyu:\"b\",meone:\"m\",meqr:3,merae:12,merah:\"b\",merak:\"1f\",mereu:15,\"merg \":15,merok:\"b\",meryk:\"1a\",meryn:\"1n\",mesec:\"v\",mesed:\"1c\",mesia:\"y\",mesla:3,mesmo:\"p\",messo:\"q\",mesur:\"l\",methi:\"m\",metsä:11,mettr:\"l\",meum:\"t\",\"mev \":\"1q\",mewh:\"m\",mewo:\"m\",mexe:\"p\",meyi:\"1f\",meyli:\"1q\",meyva:\"1q\",meywi:\"1q\",mezc:\"o\",\"mezi \":\"u\",mezo:\"1o\",mezr:3,mezs:\"1f\",mezw:3,meä:11,meæ:\"t\",\"meñ \":\"1n\",meć:\"v\",meči:\"1b\",\"meš \":\"v\",meša:\"v\",mež:\"1d\",mfö:10,\"mga \":\"d\",mgh:\"1q\",mgr:\"1o\",mgå:10,\"mh \":\"s\",mhad:\"s\",mhai:\"s\",mhc:\"s\",mhed:\"z\",mhl:\"u\",mhn:\"s\",mhr:\"s\",mhv:13,mhái:\"s\",mhát:\"s\",mhä:10,mhó:\"s\",\"mi-am\":15,\"mi-e\":15,miaj:\"1o\",miak:\"y\",miatt:14,miaz:15,mibo:\"1p\",\"mich \":\"n\",miciz:\"q\",micul:15,micum:\"t\",micus:\"t\",mieb:\"t\",miec:\"1a\",miedo:\"o\",miega:\"1b\",mieh:11,miei:\"q\",mielt:11,mient:\"o\",mierz:\"1a\",miesz:\"1a\",mieu:\"l\",mieš:\"y\",mife:\"q\",might:\"m\",migl:\"q\",mijn:\"r\",mikil:13,miklu:13,mikoj:\"1o\",mikor:14,mikä:11,\"milj \":10,mimp:\"b\",mimu:\"t\",minak:14,minea:15,mingg:\"b\",minha:\"p\",minho:\"p\",\"minn \":13,minni:13,minth:14,minug:\"1c\",minä:11,minút:\"y\",mipa:\"d\",mirst:\"1d\",\"mirt \":3,misee:11,misli:\"v\",missc:\"r\",mitg:\"n\",miun:\"t\",mivel:14,mivi:\"t\",\"miy \":\"1q\",miyo:\"1f\",mizle:\"1f\",mizo:\"1o\",\"mi \":\"1o\",miä:11,miè:\"l\",miért:14,\"miñ \":\"1n\",\"mió \":\"o\",mión:\"o\",miö:11,mić:\"1a\",mič:\"v\",\"miş \":\"1f\",mişt:\"1f\",mišl:\"v\",mjó:13,mjög:13,mjöl:10,mkei:\"n\",mkni:\"1a\",mkü:\"1f\",mlac:\"r\",mlary:\"1n\",mlega:13,mleri:\"1f\",mlic:\"n\",mliek:\"y\",mligh:10,mlj:\"v\",mlou:\"u\",mluv:\"u\",mlx:\"t\",mlyk:\"1n\",mlø:\"z\",mlč:\"u\",mlı:\"1f\",\"mma-\":3,mmade:10,mmans:10,mmb:\"n\",mmd:3,mmede:\"z\",mmeno:\"q\",\"mmey \":\"1q\",mmh:\"n\",mmime:3,mmina:\"q\",mmirt:3,mmk:\"n\",mmlem:3,mmlen:3,\"mmor \":10,mmst:\"n\",mmtil:13,mmur:3,\"mmut \":3,mmál:13,mmäm:\"1n\",mmän:11,mmär:11,mmè:\"l\",mnad:10,mnak:14,mnd:10,mnea:15,mneze:15,mnib:\"t\",mniu:\"t\",mnj:\"v\",mnl:\"m\",mnog:\"v\",\"mnom \":\"v\",mnul:15,mnum:\"t\",mnya:\"b\",mnó:\"1a\",mnă:15,mną:\"1a\",mnē:\"t\",mnę:\"1a\",\"mo' \":\"1q\",moar:15,moas:15,mocho:\"1a\",mochó:\"1a\",moct:\"u\",mocy:\"1a\",mods:\"z\",\"moe \":\"r\",moede:\"r\",moeni:1,moest:\"r\",moete:\"r\",\"mof \":\"1p\",mogla:\"v\",mogn:\"v\",\"mogu \":\"v\",mogus:\"1b\",mogą:\"1a\",\"moh \":\"1q\",mohbe:\"1q\",\"mohl \":\"u\",mohlo:\"u\",mohol:\"y\",mohp:\"1q\",moht:\"1q\",\"mohu \":\"u\",moic:\"1a\",moim:\"1a\",moins:\"l\",\"mois \":\"l\",mojeg:\"1a\",mojn:\"1o\",\"mojí \":\"u\",mojím:\"y\",moją:\"1a\",\"moka \":\"1b\",mokd:\"1n\",molem:11,molim:\"v\",molot:\"1a\",molti:\"q\",molto:\"q\",mondj:14,mondt:14,money:\"m\",monon:\"1o\",month:\"m\",mood:\"m\",moont:1,moord:\"r\",morfa:10,morni:\"m\",morâ:15,moshi:4,moth:\"m\",motl:\"1q\",\"mots \":\"l\",mowa:\"1a\",mox:\"t\",\"moy \":\"d\",moye:\"l\",moys:\"t\",mozr:\"y\",moç:\"p\",moñ:\"o\",moć:\"v\",možd:\"v\",može:\"v\",mpaa:11,mpah:\"b\",mpay:\"d\",mpaz:\"q\",mpb:\"m\",mpeg:\"q\",mpfe:\"n\",mpiez:\"o\",mpió:\"o\",mpj:\"r\",\"mplu \":15,mply:\"m\",mpm:\"1o\",mpoc:\"o\",mpoj:\"1o\",mpok:\"b\",mprat:\"q\",mpree:\"p\",mpreg:\"p\",mpreu:15,mprou:\"p\",\"mpré \":\"o\",\"mpró \":\"o\",mpty:\"m\",mpuz:4,mpä:11,mpê:\"l\",mpú:\"o\",mpý:\"1n\",mqo:\"1q\",mqua:\"t\",mque:\"t\",mqui:\"t\",mraw:3,\"mred \":3,mrel:\"y\",mrem:3,\"mren \":3,mrent:3,mrer:\"z\",mrie:\"y\",mrkv:\"y\",mrl:\"v\",mrs:\"m\",mrtv:\"u\",mrzi:\"v\",mrš:\"v\",msalt:3,mself:\"m\",mselv:\"m\",msey:\"1f\",msh:\"m\",msn:\"z\",msuj:3,msul:3,msyk:\"1n\",msz:14,msø:\"z\",msı:\"1f\",\"mt'\":\"n\",\"mt-\":3,mtah:\"1q\",mtile:13,mtl:\"n\",\"mts \":\"1d\",mtí:13,\"mu'\":\"1q\",muak:\"b\",muan:\"b\",muba:4,mubw:4,mucho:\"o\",mudah:\"b\",mudug:4,muert:\"o\",mues:\"o\",muev:\"o\",mufa:4,mugab:4,mugal:\"1n\",mugh:\"1q\",mugo:4,muht:\"1f\",muhu:4,\"muid \":\"s\",muist:11,muito:\"p\",mujer:\"o\",muke:4,mukh:\"d\",mukt:\"z\",mukun:4,mulhe:\"p\",mumn:\"b\",mumo:\"1o\",munce:15,munci:15,mungk:\"b\",munh:\"p\",munka:14,munsi:4,muntu:4,muoi:\"q\",muor:\"q\",muos:\"1b\",mupo:\"d\",mupu:\"d\",murak:4,muraz:4,\"murt \":3,\"murt-\":3,murya:4,mushi:4,musig:\"1p\",musis:\"1a\",\"muss \":\"n\",musst:\"n\",musé:\"l\",mutim:4,mutom:\"1p\",mutta:11,muut:11,muw:\"d\",mux:3,muyo:\"1f\",muzy:\"1a\",muç:\"p\",muň:\"1n\",\"muş \":\"1f\",muška:\"v\",mvr:\"r\",mvu:4,mvy:4,mvä:10,\"mw'\":4,mwu:4,\"my'\":\"m\",myak:4,myb:\"1b\",myck:10,myda:\"1n\",mydl:\"y\",\"mynd \":13,mynda:13,myndi:13,\"myt \":\"1n\",myu:3,myw:\"1a\",myy:11,myza:\"1n\",myzy:\"1n\",myö:11,myň:\"1n\",mzok:\"1n\",\"mzun \":3,mà:\"a\",\"má-\":\"p\",máb:14,máint:\"s\",máir:\"s\",\"málo \":\"u\",\"máma \":\"u\",\"már \":14,máriu:\"y\",mási:14,máso:14,mást:14,mátt:13,máu:\"a\",máy:\"a\",mâi:15,\"mân \":15,mâna:15,mânc:15,mând:15,mâne:15,mây:\"a\",mão:\"p\",mäc:\"n\",mäg:\"1n\",mäi:11,mäk:11,mämi:\"1n\",mänd:\"1n\",mäne:\"1n\",mängi:\"1c\",männi:10,mäp:11,märke:10,märr:11,mäso:\"y\",mäu:\"n\",mäy:11,mää:11,måd:\"z\",måg:10,måk:\"z\",målen:12,månd:10,mår:10,måsk:\"z\",måst:10,måte:12,\"mæ \":\"t\",mæli:13,mæn:\"z\",mær:\"z\",mæs:\"z\",mæt:13,mçe:\"1n\",\"mè \":\"q\",mèn:\"l\",mèr:\"l\",méa:\"l\",méc:\"l\",méde:\"l\",mée:\"l\",méf:\"l\",\"még \":14,mého:\"u\",méle:14,mély:14,méno:\"u\",mép:\"l\",\"mê \":\"a\",mêm:\"l\",mên:\"p\",mía:\"o\",míd:\"p\",míg:14,mím:\"u\",\"mína \":13,\"mínu \":13,míná:\"u\",místo:\"u\",mítl:\"u\",mív:\"u\",míč:\"u\",míš:\"u\",móf:\"o\",mój:\"1a\",móm:\"o\",\"mór \":\"s\",móti:13,móve:\"p\",móvi:\"o\",\"mô \":\"a\",môr:1,mõe:\"p\",\"mö \":11,möc:\"n\",mögl:\"n\",\"mör \":10,möte:10,möö:\"1c\",møb:\"z\",mød:\"z\",møg:\"z\",møl:\"z\",møn:\"z\",møt:12,mù:\"a\",múi:\"s\",\"múlt \":14,mún:\"o\",mút:\"p\",mû:\"l\",\"mü \":\"1f\",müde:\"n\",müss:\"n\",müz:\"1f\",müş:\"1f\",mýc:\"u\",mým:\"u\",mýt:\"u\",māc:\"1d\",māl:\"t\",mān:\"t\",mār:\"t\",\"mās \":\"t\",\"māte \":\"1d\",mă:15,mąs:\"1b\",mēn:\"t\",mēr:\"1d\",mēs:\"1d\",męs:\"1b\",\"mī \":\"t\",mīc:\"t\",mīg:\"1d\",mīn:\"1d\",mīr:\"t\",mīs:\"t\",mım:\"1f\",mıs:\"1f\",mız:\"1f\",mł:\"1a\",mň:\"y\",mō:\"t\",mş:\"1f\",mša:\"1d\",mši:\"v\",mšt:\"1b\",mūz:\"1d\",mūž:\"1d\",mε:3,\"n'ai\":\"l\",\"n'alt\":\"q\",\"n'arr\":\"l\",\"n'aur\":\"l\",\"n'aut\":\"q\",\"n'ava\":\"l\",\"n'ave\":\"l\",\"n'avo\":\"l\",\"n'd\":\"1f\",\"n'en \":\"l\",\"n'h\":\"l\",\"n'ib\":4,\"n'id\":\"q\",\"n'ig\":4,\"n'it\":4,\"n'iv\":4,\"n'oc\":\"q\",\"n'op\":\"q\",\"n'or\":\"q\",\"n'ot\":\"q\",\"n't \":\"m\",\"n'uk\":4,\"n'um\":4,\"n'y\":\"l\",\"n'è\":\"q\",\"n'é\":\"l\",\"n-as\":3,\"n-d \":3,\"n-d-\":3,\"n-i \":3,\"n-id\":3,\"n-ik\":3,\"n-is\":3,\"n-iw\":3,\"n-li \":\"1p\",\"n-t \":3,\"na' \":\"1q\",\"na-d\":3,\"naa \":11,naaa:\"d\",naab:\"d\",naand:1,\"naby \":1,nabí:\"u\",nachr:\"n\",nació:\"o\",nacq:\"q\",nadev:\"1q\",nadz:\"1a\",nafa:3,\"nag-\":\"d\",nagaw:\"d\",nagb:\"d\",nagha:\"d\",naghi:\"d\",nagk:\"d\",naglu:\"d\",nagma:\"d\",nagn:\"d\",nags:\"d\",nagta:\"d\",\"nagu \":\"1c\",nagw:\"d\",\"nagy \":14,nahe:\"n\",nahi:\"d\",nahn:\"y\",nahon:\"d\",naib:15,naic:\"s\",naigh:\"s\",naimi:11,naio:\"q\",naiy:\"d\",najbo:\"v\",najde:\"u\",naju:\"v\",najw:\"1a\",nají:\"u\",\"nak-a\":\"b\",nakab:\"d\",nakai:\"d\",nakak:\"d\",nakap:\"d\",nakas:\"d\",nakat:\"d\",nakik:\"d\",\"nakk \":12,nalda:\"1q\",nalj:\"1c\",nally:\"m\",nalwi:\"1q\",namn:10,namq:\"t\",namuo:\"1b\",namą:\"1b\",nanay:\"d\",nandy:\"1n\",nangg:\"d\",nangy:\"d\",\"nann \":\"s\",nanto:\"1o\",nanı:\"1f\",napak:\"d\",napü:\"1p\",nargh:\"1q\",naroz:\"u\",nasaa:\"d\",nasab:\"d\",nasco:\"q\",nasj:12,nask:\"1o\",nasle:\"y\",nasze:\"1a\",natil:\"d\",natus:\"t\",natut:\"d\",natā:\"t\",nauc:\"1a\",nauda:\"1d\",naudo:\"1b\",nauj:\"1b\",naum:\"t\",nauu:\"d\",nauw:\"r\",navon:\"r\",\"nawe \":4,nawid:\"1a\",nayo:\"d\",nazw:\"1a\",nazy:\"1a\",\"naí \":\"s\",nači:\"v\",naď:\"u\",naň:\"y\",\"naš \":\"v\",našie:\"y\",našt:\"u\",našu:\"1b\",naší:\"u\",nať:\"y\",\"nban \":14,nbj:10,nboe:\"r\",nbok:10,\"nc-\":\"1o\",ncj:\"1a\",ncâ:15,ncè:\"l\",ncò:\"q\",ncô:\"p\",ncú:\"y\",ncü:\"1f\",ncă:15,ncı:\"1f\",ncū:\"1b\",ndae:\"t\",ndaf:4,ndaq:\"1q\",\"ndd \":14,ndeho:\"z\",ndeng:\"b\",\"ndez-\":\"l\",ndgå:\"z\",ndhed:\"z\",ndiba:4,ndih:\"d\",ndinu:13,ndiç:\"p\",ndió:\"o\",ndiş:\"1f\",ndja:14,ndlar:10,ndly:\"m\",ndmo:\"m\",ndnu:\"z\",ndoe:\"r\",\"ndoj \":\"1o\",ndolk:14,ndolt:14,ndonn:\"l\",ndose:\"o\",ndrar:10,ndrun:13,\"ndrá \":\"o\",ndrø:\"z\",\"nds-\":\"l\",ndsh:\"m\",ndsky:\"z\",\"ndst \":\"z\",\"ndta \":14,ndtam:14,ndtil:\"z\",ndurn:13,ndyg:\"1n\",ndykl:\"1n\",ndyr:\"1n\",ndái:\"s\",ndár:\"p\",ndâ:\"p\",\"ndä \":\"1k\",ndå:10,\"ndí \":\"o\",ndía:\"o\",ndò:\"q\",ndø:\"z\",ndüm:\"1f\",ndý:\"u\",ndē:\"t\",\"ndı \":\"1f\",\"ndım \":\"1f\",ndır:\"1f\",ndığı:\"1f\",ndō:\"t\",ndži:\"1b\",\"ne's\":\"m\",\"ne)\":\"m\",\"ne-a \":15,\"ne-am\":15,\"ne-at\":\"1n\",\"ne-i\":15,neac:\"s\",neats:\"1b\",neav:15,neaz:15,\"neb \":\"1c\",nebog:\"z\",nebol:\"y\",nebun:15,neby:\"u\",\"nect-\":3,necu:15,nedd:3,nedok:\"u\",nedol:\"1p\",nedä:\"1p\",needs:\"m\",neeu:\"r\",negga:3,negoz:\"q\",\"negu \":\"1b\",\"neh'\":\"1q\",nehbe:\"1q\",nehch:\"1q\",nehme:\"n\",nehod:\"u\",nehol:12,nehov:\"y\",nehé:14,neigh:\"m\",neile:\"1c\",neira:\"p\",neitt:13,nejak:\"y\",nejle:\"u\",nejs:\"u\",nejv:\"u\",nejš:\"y\",neked:14,nekem:14,neken:\"1b\",\"nekk \":3,nekol:\"v\",nekün:14,neler:\"1f\",nelig:12,nelj:11,\"nell'\":\"q\",nelp:\"b\",nelí:\"u\",nemam:\"v\",nemec:\"y\",nemmä:11,nemoj:\"v\",nemti:3,nemuk:\"b\",nenhu:\"p\",nenia:\"1o\",nenie:\"1o\",nenio:\"1o\",neniu:\"1o\",nensi:\"t\",\"nená \":\"y\",nený:\"y\",neob:\"u\",nepad:\"1b\",nepak:\"1b\",nepas:\"1b\",nepie:\"1d\",nepij:\"u\",nepos:\"u\",nepp:\"q\",nepá:\"y\",neque:\"t\",nerey:\"1f\",nerkj:12,\"nern \":\"n\",nerob:\"y\",nesak:\"1b\",nesap:\"1d\",neskj:13,nesú:\"y\",netij:\"1n\",netop:\"z\",neue:\"n\",neuvo:11,nevaj:\"1d\",nevet:14,nevoi:15,nevz:\"u\",neví:\"u\",\"newe \":4,next:\"m\",neyi:\"1f\",\"nez-\":\"l\",nezap:\"u\",nezin:\"1d\",nezme:3,neñ:\"1k\",neó:\"o\",neú:\"u\",neć:\"v\",neček:\"u\",nečne:\"y\",neď:\"y\",neši:\"1b\",nešto:\"v\",nežin:\"1b\",nfac:\"n\",nfada:\"o\",nfano:\"1o\",nfh:\"n\",nft:\"n\",nfz:\"n\",nfä:\"n\",nfæ:13,nfí:\"o\",\"nför \":10,\"ng-i\":\"d\",ngac:\"b\",ngade:10,ngahe:4,ngany:4,ngapa:\"b\",ngark:\"b\",ngaz:4,\"ngbe'\":\"1q\",ngdaj:\"1q\",ngdu:13,ngeir:\"p\",ngej:\"b\",ngelm:11,ngeve:\"r\",nggr:\"b\",ngiar:\"q\",ngiat:\"q\",ngik:\"b\",ngili:\"1f\",nginn:13,ngju:13,ngke:\"d\",nglez:15,ngly:\"m\",ngmey:\"1q\",ngmu:\"b\",ngnan:\"d\",ngny:\"b\",\"ngo' \":\"1q\",ngogh:\"1q\",ngoj:\"1o\",ngono:\"q\",ngry:\"m\",ngslø:12,ngsom:\"z\",ngtah:\"1q\",nguam:\"t\",ngub:\"b\",\"ngun \":\"b\",\"nguy \":\"a\",\"ngvo \":\"1o\",ngvoj:\"1o\",ngvon:\"1o\",\"ngwa \":4,ngwij:\"1q\",ngwo:\"1q\",ngyar:\"d\",ngã:\"a\",\"ngå \":12,\"ngé \":\"l\",ngê:\"p\",ngón:\"a\",ngún:\"o\",ngą:\"1b\",ngę:\"1b\",ngū:\"1b\",nhad:\"p\",nhap:\"m\",\"nhe \":\"p\",nhec:\"p\",\"nhed \":\"z\",nheid:\"r\",nheir:\"p\",nhemp:11,nheu:\"l\",nhia:\"p\",nhl:\"u\",nhs:\"m\",nhui:\"r\",nhát:\"a\",nhâ:\"a\",\"nhé \":\"a\",nhóc:\"a\",\"ni' \":\"1q\",\"ni's\":\"m\",niada:\"1a\",\"niai \":\"1b\",\"niau \":\"1b\",nibe:\"d\",niciu:15,\"nicy \":\"1a\",niebe:\"1a\",niebi:\"1a\",niech:\"1a\",niei:15,niej:\"1a\",nieka:\"1b\",nieke:\"y\",nieks:\"1d\",niena:\"1a\",niene:\"1a\",nieni:\"1a\",niep:\"1a\",niert:\"n\",niesz:\"1a\",niets:\"r\",niev:\"o\",niew:\"1a\",nieš:\"1d\",nifas:\"1o\",nifos:\"1p\",nigde:\"r\",night:\"m\",\"nigi \":\"1o\",nigie:1,nigis:\"1o\",nigy:\"d\",niho:\"u\",\"niin \":11,\"nije \":\"v\",\"niji \":\"v\",nijo:\"1b\",niją:\"1b\",nikah:\"b\",nikm:\"b\",\"nikt \":\"1a\",nikto:\"y\",nileg:13,\"nill \":12,nilor:15,nimig:\"p\",nimle:\"1f\",nimw:4,nimą:\"1b\",ningg:\"b\",ninl:\"1f\",\"ninn \":13,ninyo:\"d\",niow:\"1a\",nipon:\"1q\",nired:\"1n\",niris:\"1o\",niru:\"1o\",nirä:\"1n\",\"nis'a\":\"1q\",nisam:\"v\",nish:\"m\",nisu:\"v\",\"nit-\":3,niteb:\"1q\",\"nity \":\"m\",nité:\"l\",nitön:\"1p\",niuka:\"1b\",\"niun \":\"1o\",niur:\"t\",nivi:\"t\",nivy:4,niyan:\"d\",\"niyo \":\"d\",nizem:\"1n\",nizia:\"q\",nizz:\"q\",niäl:\"1p\",niæ:\"t\",niè:\"l\",nië:\"r\",\"niñ \":\"1n\",niña:\"o\",\"nión \":\"o\",niā:\"t\",nić:\"1a\",\"nič \":\"y\",ničí:\"u\",niň:\"1n\",ništ:\"v\",nižn:\"y\",njadi:\"b\",njang:\"b\",njaw:\"b\",njb:3,njeg:\"v\",njel:\"b\",njero:\"o\",njez:15,njig:\"v\",njih:\"v\",njir:4,njor:\"1o\",njs:\"v\",njó:13,njü:14,\"nk'u\":4,nkaj:\"1o\",nkent:3,nkg:\"n\",nkhe:\"n\",nkiel:11,nklik:1,nkni:12,nkp:\"1o\",nkrig:\"z\",nkrij:\"r\",nksm:\"1b\",nksti:\"1b\",nkvi:\"1o\",nkyt:\"1b\",\"nkä \":11,nkš:\"1b\",nll:\"o\",nlâ:\"p\",nlæ:\"z\",\"nm \":\"s\",nmy:11,nmó:\"o\",nmö:\"n\",nmē:\"1d\",nmı:\"1f\",nnå:12,nnê:\"l\",nną:\"1a\",\"no)\":\"1o\",\"no-li\":\"1p\",noap:15,noar:15,nobis:\"t\",nobod:\"m\",\"nobs \":\"1p\",noby:\"d\",nock:\"m\",nocte:\"t\",\"nof \":\"1p\",\"nof-\":\"1p\",nofs:\"1p\",noget:\"z\",nogle:\"z\",nogo:\"v\",nogur:\"1d\",nohd:11,nohe:\"u\",noin:11,noio:\"q\",noite:\"p\",nojn:\"1o\",nokd:\"1n\",nokku:13,nokla:\"1n\",nokte:\"1o\",nokto:\"1o\",\"nol-\":\"1p\",nolit:\"t\",nolof:\"1p\",nolol:\"1p\",nolom:\"1p\",\"nom-\":\"1p\",nomon:\"1o\",nomy:\"m\",nomí:\"o\",nondu:\"t\",\"nong \":\"d\",nonto:\"b\",noong:\"d\",\"noor \":\"1c\",noore:\"1c\",nopea:11,nopir:\"1d\",noriu:\"1b\",noroc:15,norta:\"1n\",norum:\"t\",noscu:15,nosk:\"1o\",nosot:\"o\",nosso:\"p\",noth:\"m\",notik:\"1d\",notí:\"p\",noug:\"m\",noul:15,nouv:\"l\",novaj:\"1o\",novc:\"v\",novia:\"o\",novj:\"1o\",novou:\"u\",novum:\"t\",\"now \":\"m\",nowl:\"m\",\"nown \":\"m\",\"nows \":\"m\",nowu:\"1a\",\"nox \":\"t\",nozc:\"o\",\"no \":\"1o\",noç:\"p\",noë:\"l\",noć:\"v\",noč:\"u\",\"np \":\"m\",npag:\"1o\",npet:\"1o\",npf:\"n\",npor:\"1o\",npä:11,npö:11,\"nq \":\"l\",nqa:3,nqe:3,nqi:3,nrh:\"l\",nruf:\"n\",nrí:\"o\",nrø:12,nră:15,nrı:\"1f\",\"ns)\":\"m\",\"ns-n\":\"l\",nsaba:\"o\",nsaje:\"o\",nsaml:13,nsanl:\"1f\",nsatt:12,nsavo:\"q\",nsaz:\"q\",nsaç:\"p\",\"nsch \":\"n\",nschl:\"n\",nseam:15,nsede:\"z\",nsegn:\"q\",nseh:\"n\",\"nsei \":\"p\",nseil:\"l\",nsemb:\"l\",nseñ:\"o\",nsiem:\"q\",nsigl:\"q\",nsigt:\"z\",nsimm:11,nsina:\"p\",nsino:\"p\",nsipp:12,\"nsit-\":3,\"nsiu \":\"1b\",nsiya:\"d\",nsió:\"o\",\"nsj \":12,nsje:12,nskab:\"z\",nskar:10,nsked:\"z\",nskj:12,nskli:10,nskyl:12,nsmad:\"z\",nsob:\"t\",nsog:\"1o\",nsoj:\"1o\",\"nssa \":11,nstl:\"n\",nstne:\"z\",nsya:\"d\",nsyne:\"z\",nsynl:12,nsáv:\"p\",nsã:\"p\",\"nsä \":11,\"nså \":12,\"nsó \":\"o\",nsă:15,nsą:\"1b\",nsę:\"1a\",nsı:\"1f\",\"nt'a\":\"q\",\"nt-a\":3,\"nt-ye\":3,\"nta' \":\"1q\",ntaba:\"o\",ntaco:4,\"ntay \":\"d\",ntaç:\"p\",nteco:\"1o\",ntede:\"z\",nteek:11,\"ntei \":\"p\",nteir:\"p\",nteoi:\"s\",ntfe:\"n\",\"ntha \":14,nths:\"m\",ntió:\"o\",ntlic:\"n\",ntlik:1,ntly:\"m\",ntoe:1,ntofi:15,\"ntoj \":\"1o\",ntonc:\"o\",\"ntou \":\"p\",ntq:\"t\",ntrò:\"q\",\"ntró \":\"o\",ntsn:\"r\",ntsu:\"1c\",\"nt \":\"l\",ntà:\"q\",\"ntä \":11,ntè:\"l\",ntì:\"q\",\"ntí \":\"o\",ntía:\"o\",ntò:\"q\",ntù:\"q\",ntā:\"t\",ntă:15,ntą:\"1b\",ntē:\"t\",ntę:\"1b\",ntī:\"t\",ntı:\"1f\",\"nu-m\":15,nuaf:\"1o\",nuaj:\"1o\",nubo:\"1o\",nudag:13,nued:\"m\",nuest:\"o\",nuev:\"o\",nufo:\"1o\",\"nuga \":\"1c\",nuhi:\"b\",nuhn:\"b\",nuig:\"1o\",nujo:\"1o\",nuju:\"b\",nukku:11,nulik:\"1p\",nullu:\"t\",nuln:14,nului:15,numai:15,numbe:\"m\",numel:15,numq:\"t\",numé:\"l\",nunat:15,nunga:\"d\",nungg:\"b\",nunj:\"b\",\"nunk \":14,nunni:13,nunqu:\"t\",nunti:\"t\",nuoja:\"1b\",nuom:\"1b\",nuor:11,nuost:\"1b\",nuova:\"q\",nuove:\"q\",nupir:\"1b\",nuqd:\"1q\",nurut:\"b\",nusip:\"1b\",nusq:\"t\",\"nust \":\"1c\",nuter:10,nutma:\"1f\",nutoj:\"1o\",nutz:\"n\",nuté:\"y\",\"nutí \":\"u\",\"nuv \":\"1q\",nuwa:\"r\",\"nuwe \":1,nuç:\"1f\",nué:\"l\",nuí:\"p\",nuñ:\"1n\",nuč:\"1b\",nuň:\"1n\",nuş:\"1f\",nuš:\"1b\",nuť:\"y\",nuž:\"1b\",\"nvar \":10,nvarp:13,nvec:\"q\",\"nvel \":13,nvida:\"p\",nvl:\"r\",nvou:\"r\",nvy:\"m\",nvän:10,nvå:10,nvă:15,nvē:\"t\",nvī:\"t\",nwh:\"m\",nwr:\"m\",nxa:\"p\",nyaa:\"b\",nyap:\"b\",nyata:\"b\",nyck:10,nyde:\"z\",nyek:14,\"nyen \":14,nyene:4,nyesh:4,nyga:\"1b\",nygo:\"1b\",nyhed:\"z\",nyim:\"b\",nyira:14,nyire:14,nyit:14,nyje:\"1b\",nyle:14,\"nymi \":\"1a\",nymo:\"m\",nymy:\"1n\",\"nyna \":\"1n\",nynd:\"1n\",\"nyny \":\"1n\",nyoko:4,nyom:14,nyone:\"m\",nyong:\"d\",\"nyp \":\"1n\",\"nys \":\"1b\",nysg:\"z\",nyss:10,nyth:\"m\",nyug:14,nyuma:4,nyv:14,\"nywa \":4,nyy:11,nyz:14,nyá:14,nyé:14,nyú:14,nyč:\"1b\",nyň:\"1n\",\"nz'\":\"q\",nzad:\"o\",nzio:\"q\",nzir:4,nziz:4,nzob:4,nzok:4,nzus:\"n\",nzä:\"n\",nzös:\"n\",\"n­\":\"n\",nà:\"a\",\"ná-\":\"p\",náct:\"u\",nádr:\"u\",nág:13,nájd:\"y\",nálo:14,nált:14,nání:\"u\",nário:\"p\",nátt:13,näda:\"1c\",nädip:\"1n\",nägi:\"1c\",nähe:\"n\",nähi:\"1n\",\"näin \":11,näinu:\"1c\",näk:11,nälla:10,näme:\"1n\",näna:\"1p\",nära:10,närm:10,näy:11,nää:11,näç:\"1n\",nåe:\"z\",någ:10,nål:10,nån:10,nåt:10,nægt:\"z\",nære:\"z\",nærr:13,næse:\"z\",næsta:13,næstu:13,næv:\"z\",nçad:\"p\",nçai:\"l\",nçar:\"p\",nças:\"p\",nçi:\"1n\",nçl:\"1f\",nçu:\"l\",nçy:\"1n\",nçä:\"1n\",nè:\"l\",néa:\"l\",néce:\"l\",née:\"l\",nék:14,\"nél \":14,német:14,néo:\"l\",néra:\"l\",néz:14,nì:\"q\",\"nía \":\"o\",nían:\"o\",nías:\"o\",níb:\"o\",ních:\"u\",nída:\"u\",níko:\"y\",\"níl \":\"s\",nímk:\"y\",nío:\"s\",níve:\"p\",níz:\"u\",níš:\"u\",níž:\"u\",nò:\"q\",nóf:\"o\",nói:\"a\",nóng:\"a\",\"nós \":\"p\",nótt:13,\"nô \":\"a\",nôm:\"p\",nôt:\"l\",nõ:\"1c\",nöa:10,nöj:10,nöm:14,nöp:\"n\",nöti:\"n\",nöy:11,nöö:11,\"nø \":12,\"nød \":\"z\",nødt:\"z\",nøe:12,nøg:\"z\",nøk:12,nør:\"z\",nøt:12,nù:\"q\",núa:\"o\",\"núi \":\"a\",núna:13,nútr:\"y\",nútu:13,nüb:\"n\",nüc:\"n\",nüdi:\"1p\",nüge:\"n\",\"nüm \":\"1f\",nünk:14,nüz:\"1f\",nüş:\"1f\",nýa:\"1n\",nýj:13,nýl:13,nýr:13,nýt:13,nāc:\"1d\",nāl:\"1d\",nām:\"1d\",nān:\"1d\",nār:\"t\",nāta:\"t\",nātu:\"t\",nāv:\"t\",\"nă \":15,năn:\"a\",nča:\"v\",nčia:\"1b\",\"nčil \":\"u\",nčin:\"y\",nčit:\"u\",\"nču \":\"1d\",nď:\"u\",nēm:\"t\",nēr:\"t\",nēs:\"t\",nēt:\"1d\",nęs:\"1b\",nğ:\"1k\",\"nī \":\"t\",nīb:\"1d\",nīc:\"1d\",nīg:\"1d\",nıd:\"1f\",nıl:\"1f\",\"nım \":\"1f\",nımı:\"1f\",\"nın \":\"1f\",nınd:\"1f\",nını:\"1f\",nır:\"1f\",nıt:\"1f\",nıy:\"1f\",nız:\"1f\",nış:\"1f\",nō:\"t\",nœ:\"l\",nşa:\"1f\",nšt:\"u\",nší:\"u\",nūk:\"1b\",nūl:\"t\",nūs:\"1b\",nži:\"1b\",nε:3,\"n‘\":\"n\",\"o'b\":\"1q\",\"o'deg\":\"1q\",\"o'h\":\"1q\",\"o'la\":\"1q\",\"o'm\":\"1q\",\"o'n \":\"r\",\"o'p\":\"1q\",\"o't \":\"d\",\"o'w\":\"1q\",\"o'y \":\"d\",\"o-li \":\"1p\",\"o-me\":\"p\",\"o-o \":\"p\",\"o-se\":\"p\",\"o-y\":\"m\",oaa:11,oace:15,oado:\"p\",oaf:\"m\",\"oai \":\"a\",oaia:15,oaie:15,oamn:15,\"oane \":15,\"oang \":\"a\",oanh:\"a\",oanne:\"t\",oao:\"1o\",oape:15,oapt:15,oarc:15,\"oare \":15,oarea:15,oarel:15,oarm:15,oarte:15,oasp:15,oastr:15,oats:\"m\",oax:\"m\",oay:\"a\",oazi:\"q\",oaç:\"p\",\"ob-\":\"1p\",obad:\"o\",obair:\"s\",obaja:\"y\",\"obe' \":\"1q\",\"obh \":\"s\",obiad:\"1a\",obice:15,obino:\"1p\",obisc:\"t\",obisz:\"1a\",obić:\"1a\",obič:\"v\",obiş:15,oblí:\"u\",obm:\"1q\",obob:\"1p\",obody:\"m\",obosi:15,obou:\"u\",oboy:4,obp:\"1q\",obrir:\"p\",obry:\"1a\",obrz:\"1a\",obrú:\"y\",obsi:\"1p\",obuo:\"1b\",obuzu:15,obwa:4,obwo:\"n\",obye:\"d\",obím:\"y\",\"obó \":\"o\",obô:\"p\",obö:\"1p\",obú:\"o\",obü:\"1f\",obą:\"1a\",obč:\"u\",obę:\"1a\",ocaa:\"r\",ocato:\"q\",ocatu:\"t\",oceb:\"t\",ocela:\"u\",oceru:\"t\",\"ocet \":\"t\",ochai:\"l\",ocham:\"1a\",ochlo:\"1q\",ochme:\"1q\",\"ocho \":\"o\",ochod:\"1a\",ochop:\"u\",ochta:\"s\",ochva:\"1q\",ociu:\"t\",ocié:\"l\",oció:\"o\",ocj:\"1a\",ocm:15,ocok:\"b\",ocou:\"p\",ocru:\"t\",\"oct \":\"u\",\"octe \":\"t\",ocuk:\"1f\",oculo:\"t\",\"ocum \":\"t\",ocutu:\"t\",\"ocy \":\"1a\",ocz:\"1a\",ocè:\"l\",ocê:\"p\",ocía:\"o\",ocò:\"q\",\"ocó \":\"o\",ocú:\"o\",ocā:\"t\",ocą:\"1a\",ocū:\"t\",\"oday \":\"m\",odei:\"p\",odeni:\"y\",odgo:\"v\",odih:15,odite:\"v\",\"odl \":\"u\",odliv:\"y\",odlu:\"v\",odmah:\"v\",odmí:\"u\",odnie:\"1a\",odniu:\"1a\",\"odno \":\"v\",odny:\"1a\",odní:\"u\",odoba:\"1a\",odoh:\"b\",\"odol \":\"y\",odota:11,odow:\"1a\",odpol:\"u\",odsud:\"u\",odti:\"y\",odtr:\"z\",odui:\"l\",\"odul \":15,oduno:\"1p\",odvi:\"y\",odyt:\"1b\",odze:\"1a\",\"odzi \":\"1a\",odzie:\"1a\",odzin:\"1a\",odã:\"p\",odéi:\"o\",odín:\"y\",odís:\"y\",odív:\"u\",odā:\"1d\",odę:\"1a\",odō:\"t\",odž:\"1b\",\"oe-\":\"p\",oeden:\"r\",oedk:\"r\",oeds:\"r\",oedu:\"t\",\"oef \":\"r\",oefe:\"r\",oeft:\"r\",oege:\"r\",oeid:\"r\",oeien:\"r\",oeir:\"p\",oeit:\"r\",\"oeke \":1,oeken:\"r\",oekj:\"r\",oekt:\"r\",oelan:\"r\",oelen:\"r\",oelt:\"r\",oemd:\"r\",oeme:\"r\",oemo:\"1o\",oenen:\"r\",oenie:1,oenç:\"p\",oepi:\"t\",\"oera \":\"1c\",oerd:\"r\",oesn:\"m\",\"oest \":\"r\",oetb:\"r\",oeten:\"r\",oeto:\"1o\",oeva:\"r\",oew:\"r\",oey:\"m\",\"of-li\":\"1p\",ofae:\"z\",ofd:\"r\",ofect:\"t\",ofere:\"p\",offan:10,offee:\"m\",ofice:\"1o\",ofii:15,\"ofik \":\"1p\",ofle:\"z\",ofn:13,oftet:\"z\",ofum:\"q\",ofw:\"r\",ofz:\"r\",ofü:\"n\",\"og'\":\"m\",ogao:\"v\",ogap:\"1n\",ogau:\"1b\",ogavi:\"t\",ogeli:\"r\",ogeth:\"m\",oghe:\"q\",oghla:\"s\",ogir:4,ogiu:\"t\",ogiz:\"m\",ogió:\"o\",ogj:14,\"ogla \":\"v\",oglal:14,oglan:\"1n\",oglia:\"q\",oglie:\"q\",oglio:\"q\",oglu:\"1n\",\"ogn \":\"z\",ognem:\"v\",\"ogno \":\"q\",ognu:\"q\",ogob:\"1p\",ogodi:\"v\",ogoj:\"1o\",ogok:14,\"ogol \":\"1p\",ogolo:\"1p\",ogou:\"p\",ogrud:\"1n\",\"ogry \":\"1n\",ogsta:\"z\",ogter:1,ogtr:\"z\",ogty:\"z\",ogya:14,ogã:\"p\",ogê:\"p\",ogól:\"1a\",ogö:\"1p\",ogā:\"t\",ogę:\"1a\",\"oh'a\":\"1q\",ohal:\"1c\",ohano:\"1o\",ohc:\"1q\",ohiy:\"d\",ohkem:\"1c\",ohlah:\"1q\",ohled:\"u\",\"ohlo \":\"u\",ohlu:\"1q\",ohme:\"1q\",ohmo:\"1q\",\"ohne \":\"n\",ohnu:\"n\",ohong:\"b\",ohoto:\"u\",ohou:\"u\",ohpu:\"1q\",ohq:\"1q\",ohvad:\"1q\",ohvi:\"1c\",ohw:\"1q\",ohí:\"o\",oial:15,oiat:\"q\",oibr:\"s\",\"oice \":\"m\",\"oich \":\"1a\",oidea:\"s\",oiec:15,oient:\"l\",oigh:\"s\",oign:\"l\",oih:11,oii:15,oij:11,oika:11,oike:11,oill:11,oimm:11,oindr:\"l\",oinen:11,oinko:11,oinne:\"s\",oinu:11,oinv:\"q\",oip:11,oiq:\"l\",oirse:\"s\",oisas:\"p\",oisen:11,\"oiss \":\"1c\",oisso:\"l\",oitk:11,oitt:11,oiu:15,oivat:11,oiven:\"l\",oivon:11,oix:\"l\",\"oj-\":\"1o\",ojai:\"1b\",ojati:\"1p\",ojau:\"1b\",ojca:\"1a\",ojci:\"1a\",ojech:\"1a\",ojego:\"1a\",ojený:\"u\",ojf:\"1o\",ojh:\"y\",ojich:\"y\",ojie:\"1d\",ojig:\"1o\",\"ojim \":\"v\",ojken:10,ojmi:\"1q\",ojmo:\"1q\",\"ojn \":\"1o\",ojný:\"y\",ojq:\"1q\",ojum:\"1d\",ojw:\"1q\",ojä:11,ojæ:\"t\",ojé:\"o\",\"okap \":\"1n\",okary:\"1n\",okazi:\"1o\",okde:\"1o\",okdu:\"1n\",\"oked \":\"m\",okel:\"b\",okkal:14,okkar:13,okkur:13,okmy:\"1n\",okoji:\"u\",okoju:\"1a\",okone:11,okora:4,\"okov \":\"y\",okrem:\"y\",okser:\"z\",\"oksi \":11,oksim:\"1o\",\"okst \":12,\"okt \":\"r\",\"okto \":\"1o\",\"oktu \":\"1f\",\"okud \":\"u\",okuld:\"1f\",okulo:\"1o\",okuma:\"1f\",okupa:\"1o\",okuva:11,okuw:\"1n\",okuy:\"1f\",okyk:\"1b\",okyt:\"1b\",okáza:\"u\",okä:11,okö:\"1p\",okš:\"1b\",\"ol-li\":\"1p\",olae:\"t\",olah:\"b\",olany:\"1n\",olaró:\"1a\",olay:\"1f\",olce:\"q\",olche:\"n\",oldal:14,\"oldi \":\"q\",oldog:14,\"oldu \":\"1f\",olduk:\"1f\",oleba:\"t\",oledn:\"u\",\"oleh \":\"b\",olehk:\"b\",oleil:\"l\",oletk:11,olevo:\"q\",oleč:\"u\",olgd:\"r\",olgok:14,olhe:\"p\",olhi:\"p\",olhos:\"p\",olicj:\"1a\",olicí:\"o\",oliev:\"y\",oliis:11,olity:\"1a\",\"oliv \":\"u\",oličk:\"y\",oliš:\"v\",\"olje \":\"v\",olji:\"v\",\"olju \":\"v\",ollee:11,ollow:\"m\",ollte:\"n\",olny:\"1a\",olob:\"1p\",oloco:\"p\",\"olof \":\"1p\",\"olol \":\"1p\",oloms:\"1p\",olpi:\"q\",\"ols-\":\"1p\",oltak:14,oltou:\"p\",oltá:14,oluo:\"1o\",\"olur \":\"1f\",oluy:\"1f\",oluz:\"q\",oluži:\"y\",olvet:10,olyan:14,oláb:14,olã:\"p\",\"olé \":\"l\",olée:\"l\",olê:\"p\",olíb:\"u\",olíc:\"p\",olò:\"q\",olô:\"p\",olö:\"1p\",olü:\"1f\",olý:\"1n\",olā:\"t\",olē:\"t\",\"om's \":\"m\",omade:\"t\",omae:\"t\",omaga:\"1a\",\"omai \":\"1b\",omase:\"1p\",omaso:\"1o\",ombé:\"l\",omdan:\"1n\",omdat:\"r\",omdu:13,omeb:\"m\",omenn:11,omenz:\"o\",omeon:\"m\",ometh:\"m\",omeu:\"p\",omew:\"m\",omey:4,omeň:\"u\",omfa:\"z\",omge:\"r\",omhet:12,omigo:\"p\",ominc:\"q\",ominn:13,ominu:\"t\",omió:\"o\",\"omm \":\"n\",ommal:14,ommar:10,\"ommi \":11,ommig:\"r\",ommik:\"1c\",omms:\"n\",ommt:\"n\",\"omn \":15,omnem:\"t\",omnes:\"t\",omnis:\"t\",\"omno \":\"t\",omoho:\"y\",\"omoi \":\"1p\",\"omoj \":\"1o\",omow:\"1a\",ompró:\"o\",ompy:\"d\",ompé:\"l\",omq:\"1q\",\"omsa \":\"s\",omui:\"1b\",\"omul \":15,omvam:\"1q\",omwe:4,omye:4,omáin:\"s\",omè:\"l\",omê:\"p\",omóc:\"1a\",omô:\"y\",omöj:10,omú:\"o\",omā:\"1d\",omą:\"1b\",omī:\"t\",omš:\"v\",\"on'a\":\"1f\",\"on's\":\"m\",\"onaj \":\"1o\",onaš:\"v\",onct:\"l\",ondd:14,ondhe:\"r\",ondta:14,onduk:\"1o\",\"oned \":\"m\",oneen:11,onees:11,onene:12,ongme:\"1q\",ongé:\"l\",\"onho \":\"p\",onigh:\"m\",onkb:\"r\",onken:\"r\",\"onku \":\"y\",onlar:\"1f\",onlij:\"r\",only:\"m\",onmig:\"o\",onnt:\"n\",\"onné \":\"l\",onoce:\"o\",onoci:\"o\",onocí:\"o\",\"onoj \":\"1o\",\"onou \":\"p\",onovo:\"v\",onow:\"1a\",\"ons-\":\"l\",\"onsa \":11,onsei:\"l\",onsej:\"o\",\"onta'\":\"1q\",ontbi:\"r\",\"onth \":\"m\",ontk:\"r\",ontli:1,ontró:\"o\",onuda:\"1f\",\"onun \":\"1f\",onund:\"1f\",onunl:\"1f\",onye:4,onáh:\"y\",onári:\"p\",onå:10,\"onés \":\"o\",onê:\"p\",onía:\"o\",onív:\"p\",onô:\"p\",onā:\"1d\",onă:15,\"oo'\":\"m\",ooda:\"1c\",ooe:\"m\",\"oog \":\"r\",oogs:\"r\",oogt:\"r\",ooh:\"m\",ooid:\"r\",ooie:\"r\",ooke:\"m\",ookt:\"r\",oola:\"1c\",\"ooli \":\"1c\",\"oolt \":\"1c\",oomad:\"1c\",oone:\"m\",\"oong \":\"d\",\"oont \":\"r\",oontl:1,oopt:\"r\",oora:\"r\",oorbi:\"r\",oorda:\"r\",oorlo:\"r\",oorn:\"r\",ooru:\"r\",oorz:\"r\",ootam:\"1c\",ootv:\"r\",oou:\"p\",oovi:\"1c\",opbog:\"1q\",opend:\"r\",\"opet \":\"v\",opett:11,opfa:\"z\",opfe:\"n\",opfu:\"z\",opfø:\"z\",opirk:\"1d\",opisk:11,opje:\"r\",opka:\"z\",\"ople \":\"m\",oppar:10,oppd:12,oppfa:12,oppg:12,opph:12,oppid:\"t\",oppnå:12,\"oppo \":\"q\",oppta:12,oppv:12,opraw:\"1a\",oprio:\"q\",oprvé:\"u\",opse:15,opue:\"o\",opulu:\"t\",opyah:\"1q\",opán:\"y\",opæ:\"z\",opô:\"p\",opü:\"1f\",opý:\"y\",opā:\"1d\",opą:\"1b\",opę:\"1a\",oqa:\"1q\",oqb:\"1q\",oqc:\"1q\",oqd:\"1q\",oqe:\"1q\",oqh:\"1q\",oql:\"1q\",oqm:\"1q\",oqn:\"1q\",oqo:\"1q\",oqqar:\"1q\",oqt:\"1q\",oquor:\"t\",oqw:\"1q\",\"or's\":\"m\",oragg:\"q\",oragl:\"1n\",oragy:\"1n\",oraya:\"1f\",orazó:\"o\",oraç:\"p\",oraş:15,orbud:\"z\",\"ordt \":\"r\",ordum:\"1f\",ordí:14,orect:15,\"orej \":\"y\",orené:\"y\",oresh:4,oress:\"q\",\"orfa \":13,orfar:10,\"orgh \":\"1q\",orgog:\"q\",oribu:\"t\",oried:\"y\",\"oril \":\"y\",\"orir \":\"o\",oriri:\"1o\",\"oriu \":\"1b\",orked:\"m\",orkia:3,orkj:12,\"orks \":\"m\",orlar:\"1f\",orlas:\"1o\",orlun:10,orms:\"m\",ormå:\"z\",ormí:\"o\",ornou:\"p\",\"oroj \":\"1o\",\"oror \":\"t\",\"orou \":\"p\",orozm:\"1a\",\"orp \":\"r\",orreb:\"q\",orsig:\"z\",orskj:12,\"orth \":\"m\",ortoj:\"1o\",\"orun \":\"1f\",orund:\"1f\",orunu:\"1f\",orut:12,\"oruz \":\"1f\",orveš:\"v\",\"orwa \":4,orwag:\"1q\",orzy:\"1a\",\"or \":\"1o\",orât:15,orä:10,orå:\"z\",oræ:\"z\",orè:\"l\",orém:\"p\",orê:\"l\",orì:\"q\",oría:\"o\",orím:\"y\",oríte:\"y\",orò:\"q\",\"oró \":\"o\",orö:10,orü:\"n\",orý:\"y\",oră:15,orę:\"1a\",orō:\"t\",\"os'h\":\"q\",\"os)\":\"p\",osaa:11,osabb:14,osag:\"1p\",osao:\"v\",\"osc \":15,oscen:\"q\",osciu:\"q\",oscul:\"t\",oscut:15,\"osed \":\"m\",\"osiu \":\"1b\",osiz:\"q\",osiç:\"p\",oskab:\"1c\",oskor:\"y\",oslou:\"u\",osoc:\"t\",ospra:\"y\",ossas:\"p\",ossia:\"q\",osson:\"q\",ossos:\"p\",ossun:\"t\",ossz:14,ossí:\"p\",ostaw:\"1a\",osue:\"t\",osuit:\"t\",osus:\"t\",oswi:\"1q\",oszed:\"1a\",osã:\"p\",osú:\"s\",osą:\"1a\",osę:\"1a\",osť:\"y\",otaan:11,\"otac \":\"v\",otagy:\"1n\",otain:11,otaki:11,otbo:10,\"otca \":\"y\",\"otce \":\"u\",otde:15,oted:\"m\",oteik:\"1d\",otelo:\"1o\",otesn:\"t\",otete:\"q\",oteva:\"q\",\"oth \":\"m\",\"oti'\":\"1q\",otiek:\"1d\",otiin:11,otios:\"t\",otiu:\"t\",otizi:\"q\",otob:\"1f\",otoh:\"d\",\"otoo \":\"d\",otow:\"1a\",otož:\"u\",otpun:\"v\",otq:\"1q\",\"otra \":\"o\",otras:\"o\",otrau:\"1b\",\"otre \":\"l\",otrei:\"q\",otriv:15,\"otro \":\"o\",otros:\"o\",otrà:\"q\",otrò:\"q\",otsu:\"1c\",ottho:14,ottig:\"q\",otui:\"t\",\"otul \":15,otury:\"1n\",otuvo:\"1p\",otwa:\"1a\",otwo:\"1a\",otyk:\"1a\",otyr:\"1n\",otä:11,otå:10,otê:\"p\",otíc:\"p\",otò:\"q\",otý:\"u\",otă:15,\"ou'\":\"m\",\"ou-m\":\"p\",\"ou-s\":\"p\",ouat:15,oubt:\"m\",ouchá:\"u\",\"ouco \":\"p\",oudra:\"l\",oudt:\"r\",\"oue \":\"l\",\"ouer \":\"l\",ouers:1,oufá:\"u\",ouge:\"l\",ough:\"m\",ouha:\"l\",ouhl:\"u\",ouho:\"u\",oujo:\"l\",oukk:11,oulai:\"l\",ould:\"m\",ouleu:\"l\",oulus:11,ounc:\"m\",oupit:\"u\",oupí:\"u\",oureu:\"l\",ourir:\"l\",\"ouro \":\"p\",ourq:\"l\",ourr:\"l\",ously:\"m\",ousq:\"t\",outh:\"m\",outro:\"p\",outsi:\"m\",ouu:11,ouvai:\"l\",ouvel:\"l\",\"ouvi \":\"p\",ouvie:\"l\",ouvir:\"p\",ouviu:\"p\",ouvoi:\"l\",ouvon:\"l\",ouw:\"r\",ouxe:\"p\",ouzs:\"u\",ouç:\"p\",oué:\"l\",ouï:\"l\",ouč:\"u\",ouš:\"u\",\"ov-\":\"1o\",ovade:10,ovane:\"q\",ovao:\"v\",ovare:\"q\",ovarl:\"q\",ovast:11,ovbe:\"1q\",ovde:\"v\",oveel:\"r\",\"ovej \":\"y\",oveu:\"p\",oveď:\"y\",ovg:\"1o\",ovh:\"z\",\"ovin \":11,ovins:\"y\",oviny:\"u\",ovjo:\"1o\",\"ovna \":\"u\",ovnak:\"y\",ovoci:\"y\",ovog:\"v\",ovom:\"v\",ovore:\"v\",\"ovre \":\"z\",ovrei:\"q\",ovres:\"q\",ovri:\"1o\",ovro:\"1o\",\"ovt \":\"z\",\"ovum \":\"t\",ovv:\"q\",\"ovy \":\"u\",\"ován \":\"u\",ovíd:\"u\",ovò:\"q\",ovô:\"p\",ovú:\"y\",ovü:\"1p\",ovă:15,ovč:\"v\",\"ow'\":\"m\",\"ow-\":\"m\",owal:\"1a\",\"owam \":\"1n\",owana:\"1a\",owane:\"1a\",owani:\"1a\",owany:\"1a\",owd:\"m\",owed:\"m\",oweg:\"1a\",owej:\"1a\",owev:\"m\",owf:\"m\",owh:\"m\",\"owi \":\"1a\",owia:\"1a\",owied:\"1a\",owing:\"m\",owini:\"1a\",owinn:\"1a\",owj:\"n\",owm:\"m\",\"owo \":\"1a\",owod:\"1a\",owol:\"1a\",\"owu \":\"1a\",owuk:\"1n\",oxí:\"o\",\"oy' \":\"1q\",oyai:\"l\",oydu:\"1f\",oyec:\"o\",oyed:\"m\",oyez:\"l\",oyf:\"m\",oyin:\"m\",oylah:\"1q\",oyn:\"1f\",oyp:\"1q\",\"oys \":\"m\",oyse:\"t\",oysi:\"t\",oyuf:\"1p\",oyun:\"1f\",oyé:\"l\",oyó:\"o\",ozav:15,ozeni:\"u\",ozera:\"y\",\"ozia \":\"q\",ozig:\"1o\",ozik:14,ozmaw:\"1a\",oznam:\"y\",oznat:\"v\",\"ozni \":14,oznát:\"y\",oznáš:\"y\",ozoj:\"1o\",ozom:14,ozot:14,ozprá:\"y\",ozre:\"y\",ozri:\"y\",oztam:14,oztat:14,ozume:\"y\",ozvol:\"v\",ozw:\"1a\",ozze:\"q\",ozzi:\"q\",ozá:14,\"o e\":\"1o\",\"o l\":\"1o\",\"o p\":\"1o\",oà:\"a\",\"oá \":\"a\",\"oá-\":\"p\",\"oác \":\"a\",oái:\"a\",oán:\"a\",oát:\"a\",oáv:\"p\",oäi:11,oän:10,oå:10,oça:\"p\",oço:\"p\",\"oè \":\"q\",oèm:\"l\",oés:\"l\",oê:\"l\",\"oí \":\"o\",oíc:\"s\",oím:\"o\",oír:\"o\",oî:\"l\",\"oñ \":\"1n\",oño:\"o\",oól:\"p\",où:\"l\",oû:\"l\",oý:\"1n\",oă:\"a\",\"oč \":\"u\",očak:\"y\",očar:\"v\",\"očka \":\"u\",očkat:\"u\",očke:\"u\",\"očku \":\"u\",očky:\"u\",\"očne \":\"y\",očno:\"y\",očné:\"y\",oční:\"u\",očný:\"y\",oču:\"y\",oďm:\"y\",ođ:\"v\",oğ:\"1f\",oł:\"1a\",oń:\"1a\",oňk:\"1n\",oňu:\"1n\",oşl:\"1f\",oşt:\"1f\",\"oš \":\"v\",ošan:\"1d\",\"oše \":\"v\",ošle:\"v\",\"ošu \":\"1d\",oť:\"u\",oŭ:\"1o\",ožda:\"v\",ožela:\"y\",ožet:\"v\",ožeš:\"v\",ožia:\"y\",\"ožno \":\"y\",ožo:\"u\",ožp:\"u\",ožu:\"v\",ó:\"a\",\"o₂\":\"n\",\"p'a\":\"1q\",\"p'e\":\"1q\",\"p's\":\"m\",\"p-b\":\"m\",\"p-d\":\"m\",\"p-f\":\"m\",\"p-j\":\"1o\",\"p-o\":\"m\",\"p-t\":\"m\",\"p-u\":\"d\",\"p-w\":\"m\",\"pa' \":\"1q\",\"pa-a\":\"b\",paai:\"1b\",paam:11,paano:\"d\",paard:\"r\",pabb:13,pabla:\"1o\",pabo:\"d\",\"pac \":15,pacak:\"1f\",pacc:\"q\",padak:\"b\",padek:\"1a\",padku:\"1a\",padom:\"1d\",padá:\"u\",\"pae \":\"t\",paeg:\"t\",paen:\"t\",paes:\"q\",pafi:\"1o\",\"pag \":\"d\",\"pag-\":\"d\",pagb:\"d\",pagd:\"d\",\"pagh \":\"1q\",pagk:\"d\",pags:\"d\",pagt:\"d\",pagó:\"o\",paht:11,\"paid \":\"m\",paikk:11,paint:\"m\",paio:\"q\",\"paj \":\"1o\",pakei:\"1b\",pakp:\"d\",pakv:\"1b\",paldi:\"1d\",paljo:11,palju:\"1c\",palun:\"1c\",pamb:\"d\",pamil:\"d\",pamä:\"y\",pamā:\"1d\",panah:\"d\",panga:\"d\",panh:\"p\",papra:\"1b\",\"paq \":\"1q\",paray:\"1f\",pardu:\"1b\",pareh:\"d\",parfa:\"l\",parfo:\"l\",parim:\"1c\",parva:\"t\",parvu:\"t\",pasak:\"1b\",pasid:\"1b\",pasir:\"1b\",pasn:\"v\",pasok:\"d\",pasq:\"q\",passé:\"l\",pasé:\"o\",pasó:\"o\",patay:\"d\",patid:\"d\",patné:\"u\",pauc:\"t\",paulu:\"t\",paupe:\"t\",paur:\"q\",pauv:\"l\",pavar:\"1b\",paven:\"q\",pavy:\"1b\",pawdi:\"1q\",pax:\"t\",payi:\"m\",payu:\"b\",pazz:\"q\",paço:\"p\",pañ:\"o\",pać:\"1a\",pači:\"1b\",\"paši \":\"1d\",pašt:\"1b\",pať:\"y\",paža:\"1b\",paži:\"1b\",\"pbe'\":\"1q\",pbogh:\"1q\",pbu:\"d\",pciu:15,pción:\"o\",pcj:\"1a\",pcs:14,pcy:\"1a\",pcz:\"1a\",pcó:\"1a\",\"pdaj \":\"1q\",\"pde \":\"1n\",pded:\"1n\",pdek:\"1o\",\"pdi \":\"1n\",pdo:\"1o\",pdu:\"1q\",pdy:\"1n\",peac:\"m\",\"pead \":\"1c\",\"peak \":\"m\",peame:\"1c\",peann:\"s\",peast:11,peau:\"l\",peav:\"1c\",pecun:\"t\",pediu:\"p\",pedra:\"p\",peed:\"m\",peeks:11,peeld:\"r\",peelt:\"r\",peggi:\"q\",pegn:\"q\",peidu:\"1c\",pejl:\"z\",pejz:\"1o\",peker:\"b\",peko:\"1o\",pelig:\"o\",pelob:\"1p\",pelom:\"1p\",pelí:\"o\",pemu:\"b\",penia:\"y\",penom:\"1p\",penuh:\"b\",penyu:3,\"pení \":\"u\",penö:\"1p\",pený:\"y\",peop:\"m\",peor:\"o\",perdr:\"l\",perek:\"1c\",pergu:\"p\",perlu:\"b\",persk:\"1b\",perä:11,perī:\"t\",pesie:12,pesm:\"v\",pesy:\"d\",petaj:\"1c\",peup:\"l\",\"peur \":\"l\",\"peut \":\"l\",peuv:\"l\",pevo:\"q\",pevá:\"y\",pewie:\"1a\",pewn:\"1a\",pex:\"t\",pezar:\"o\",pezli:\"y\",peä:11,peço:\"p\",peé:\"o\",peñ:\"o\",peó:\"o\",peć:\"v\",\"pečí \":\"u\",peň:\"y\",peş:\"1f\",\"pf \":\"n\",pfen:\"n\",pfh:\"n\",pfl:\"n\",pfs:\"n\",pft:\"n\",pfuy:4,pfuz:4,pfw:\"n\",pfä:\"n\",pgeg:\"r\",pgel:\"r\",pges:\"r\",pgift:10,pgu:\"1o\",pgö:13,phd:\"m\",phicu:\"t\",phim:\"a\",phl:\"m\",phn:\"m\",phong:\"a\",phonu:\"t\",phs:\"m\",phá:\"a\",phâ:\"a\",phä:\"n\",phè:\"l\",phép:\"a\",phê:\"a\",phí:\"a\",phó:\"a\",phô:\"a\",phú:\"a\",phœ:\"t\",\"pi'\":\"1q\",piace:\"q\",piag:\"q\",piang:\"q\",piaz:\"q\",pibu:\"t\",picco:\"q\",pidad:\"1c\",pidió:\"o\",pieci:\"1d\",piega:\"q\",piej:\"1a\",pielt:\"n\",piepi:\"1d\",piern:\"o\",piesz:\"1a\",pieti:\"1d\",pieva:\"y\",piew:\"1a\",pieza:\"o\",pieš:\"1b\",piii:15,piisa:\"1c\",pijn:\"r\",pijt:\"r\",pikku:11,pikol:\"1p\",pikön:\"1p\",pilip:\"d\",pilna:\"1b\",pilte:12,pilý:\"u\",\"pima \":\"1c\",pimiz:\"1f\",pinag:\"d\",pinak:\"d\",pinap:\"d\",pinh:\"p\",pinig:\"1b\",\"pinn \":13,\"pinu \":13,pinā:\"1d\",piog:\"q\",piose:\"1a\",piov:\"q\",pirko:\"1b\",pirms:\"1d\",pisic:15,pistu:\"t\",pitk:11,piun:\"t\",pius:\"t\",piute:\"1b\",\"piz \":\"o\",piä:11,piè:\"l\",pië:\"r\",piñ:\"o\",\"pió \":\"o\",piö:11,pią:\"1a\",\"pić \":\"1a\",pişik:\"1n\",piše:\"v\",\"pja \":14,pji:\"1q\",pjá:14,\"pk \":\"1b\",\"pku \":\"b\",pkę:\"1a\",plaan:\"1c\",plaas:1,plaat:\"r\",\"plac \":15,plads:\"z\",plais:\"l\",plava:\"u\",playi:\"m\",pleas:\"m\",\"plec \":15,plece:15,plee:\"r\",plenç:\"1n\",pleu:\"l\",pley:\"d\",plezu:\"1o\",pleş:\"1n\",plib:\"1o\",plict:15,plii:\"1o\",pliw:\"1a\",plj:\"v\",plne:\"y\",ploua:15,pluie:\"l\",plusi:\"l\",pluts:12,plyen:12,plys:\"z\",pláv:\"y\",plân:15,plå:10,plæ:\"z\",plê:\"p\",plô:\"l\",pløs:12,plū:\"1b\",\"pm \":\"m\",pmä:10,pmı:\"1f\",pnad:10,pnya:\"b\",\"po-\":\"1o\",poar:15,poat:15,\"pob \":\"1p\",pobe:\"v\",poboz:\"y\",pocu:\"t\",\"pode \":\"p\",podia:\"p\",podró:\"1a\",podé:\"o\",poeg:\"1c\",poft:15,pogle:\"v\",pogre:\"v\",\"poh \":\"1q\",pohon:\"b\",poia:\"p\",poik:11,poir:\"l\",pojec:\"1a\",pojk:10,pojn:\"1o\",pokud:\"u\",pokó:\"1a\",poled:\"u\",polii:11,polnu:\"1c\",pomin:\"1a\",pomy:\"1a\",pomó:\"1a\",ponez:15,pongd:\"1q\",pongl:\"1q\",ponh:\"p\",ponii:\"1a\",ponij:\"1b\",ponov:\"v\",poné:\"o\",poob:\"y\",poole:\"1c\",poolt:\"1c\",poprv:\"u\",\"poq \":\"1q\",pordo:\"1o\",pored:\"v\",poria:\"y\",porté:\"l\",posat:\"q\",poslu:\"v\",posmo:\"1q\",posui:\"t\",posze:\"1a\",posé:\"l\",potev:\"q\",potp:\"v\",potri:15,pouco:\"p\",poule:\"l\",pouq:\"p\",pouss:\"l\",poust:\"u\",pouv:\"l\",pouze:\"u\",povas:\"1o\",povat:\"u\",poves:15,povie:\"y\",povis:\"1o\",povre:\"v\",povus:\"1o\",poví:\"u\",powa:\"1a\",powi:\"1a\",powo:\"1a\",powr:\"1a\",pows:\"1a\",\"poy \":\"d\",pozer:\"y\",pozr:\"y\",pozy:\"1a\",poä:10,poç:\"p\",poè:\"l\",poë:\"r\",poď:\"y\",poň:\"u\",ppad:10,ppag:\"q\",\"ppar \":10,ppc:\"n\",ppda:12,ppear:\"m\",\"pped \":\"m\",ppede:\"z\",ppelé:\"l\",ppena:\"q\",ppfø:12,ppga:12,ppgif:10,ppidu:\"t\",pplen:10,pply:\"m\",ppme:12,ppna:10,ppog:\"q\",ppot:\"q\",ppris:\"l\",ppré:\"l\",ppsk:10,pptag:10,pptat:12,pptek:13,ppva:12,ppáh:13,ppä:11,ppí:13,pq:\"1q\",\"pr \":\"m\",pracy:\"1a\",praes:\"t\",praet:\"t\",praia:\"p\",prale:\"1b\",prans:\"d\",prasi:\"1b\",prasz:\"1a\",prawa:\"1a\",prawi:\"1a\",prd:\"u\",\"prea \":15,predt:\"y\",preek:\"r\",preen:\"p\",preis:\"n\",preke:\"r\",preko:\"v\",prekv:\"y\",prelo:\"y\",presq:\"l\",presv:\"y\",preun:15,prezz:\"q\",\"preč \":\"y\",preş:15,priec:\"1d\",prieš:\"1b\",prijs:\"r\",prikl:\"1b\",\"prin \":15,prine:\"y\",prini:\"y\",pripe:\"1o\",prix:\"l\",prič:\"v\",priš:\"y\",prl:\"v\",proas:15,prodá:\"u\",\"prog \":\"z\",proks:\"1o\",proml:\"u\",proov:\"1c\",prosj:12,prosz:\"1a\",\"prot \":\"1d\",\"prou \":\"p\",prowa:\"1a\",prue:\"o\",prum:15,pruv:\"1o\",pruw:\"d\",prvi:\"v\",prvn:\"u\",\"prvé \":\"u\",prz:\"1a\",prà:\"q\",právu:\"u\",prâ:15,präc:\"n\",præt:\"t\",prè:\"l\",préc:\"l\",préf:\"l\",prép:\"l\",prì:\"q\",príb:\"y\",príd:\"y\",príj:\"y\",prík:\"y\",príl:\"y\",prís:\"y\",prò:\"q\",prófi:13,prý:\"u\",prā:\"1d\",pră:15,prą:\"1a\",prī:\"t\",prō:\"t\",prša:\"y\",prše:\"u\",\"prší \":\"u\",\"ps-\":\"l\",\"psal \":\"u\",\"psat \":\"u\",psh:\"m\",pska:10,psl:\"r\",psn:\"1b\",\"psov \":\"y\",pstv:\"v\",pstā:\"1d\",psum:\"t\",psát:\"u\",psä:11,psă:15,psē:\"1d\",\"pt'\":\"m\",\"pta' \":\"1q\",ptah:\"1q\",ptate:15,ptatt:12,ptc:\"m\",ptea:15,pteki:13,ptf:\"n\",ptii:\"t\",ptoj:\"1o\",ptori:\"t\",ptul:15,ptum:\"t\",\"pty \":\"m\",ptyn:\"1b\",ptä:10,ptè:\"l\",ptô:\"l\",ptă:15,ptı:\"1f\",\"pu'\":\"1q\",\"pu-\":\"b\",pubb:\"q\",pudie:\"o\",\"pudo \":\"o\",pueb:\"o\",pued:\"o\",puell:\"t\",\"puer \":\"t\",pueri:\"t\",puero:\"t\",puest:\"o\",\"puh \":\"1q\",puhe:11,puhu:11,\"puis \":\"l\",puiss:\"l\",\"puk \":\"b\",pukul:\"b\",pulch:\"t\",pulum:\"t\",pulus:\"t\",pumas:\"d\",pumun:\"d\",punde:15,pungi:11,punh:\"p\",punki:11,punsu:15,puny:\"b\",puod:\"1b\",puoi:\"q\",puole:11,pupo:\"1o\",pupun:\"d\",puq:\"1q\",purga:\"t\",purig:\"1o\",purni:13,purte:12,\"pusa \":\"d\",push:\"m\",pusr:\"1b\",putea:15,putem:15,putil:\"1o\",putut:15,putā:\"t\",puud:\"1c\",puun:11,puut:11,puwe:\"d\",pux:\"p\",pués:\"o\",puñ:\"o\",puč:\"1b\",pvas:\"z\",pwe:\"d\",pwr:\"m\",\"py-\":\"m\",pyk:\"1b\",pynd:\"1n\",pyny:\"1n\",pyp:\"1n\",pyst:11,pysy:11,pyta:\"1a\",pyu:\"d\",pyy:11,pyä:11,pyö:11,pyš:\"u\",pza:\"r\",pzio:\"q\",pzo:\"r\",pà:\"q\",páha:13,páin:\"s\",pám:14,páč:\"y\",pâi:15,pâl:\"l\",pând:15,pât:\"l\",pã:\"p\",\"pä \":11,päc:\"n\",päik:\"1c\",päin:11,päk:11,päm:11,päo:11,pära:\"1c\",\"pät \":\"n\",päv:11,päy:11,pääl:11,pääst:11,påg:10,pål:10,pår:10,påsk:\"z\",pæd:\"z\",pæi:\"z\",pæn:\"z\",pær:\"z\",pço:\"l\",pè:\"l\",pée:\"l\",péf:\"l\",pég:\"o\",pép:\"l\",pérd:\"o\",périe:\"l\",péu:\"p\",pên:\"p\",pì:\"q\",píd:\"o\",pím:\"u\",písa:\"y\",pív:\"u\",píšt:\"y\",pò:\"q\",pój:\"1a\",\"pón \":\"o\",póq:\"o\",pôd:\"p\",pôl:\"l\",pôr:\"p\",pôt:\"l\",põe:\"p\",\"pö \":11,pöh:11,pöj:11,\"pön \":\"1p\",pöns:13,pöy:11,pøg:\"z\",pøk:12,\"pú \":\"o\",púa:\"o\",pû:\"l\",püh:\"1c\",püka:\"1p\",püko:\"1p\",\"pý \":\"u\",pýt:\"y\",\"pā \":\"1d\",pār:\"1d\",pă:15,pč:\"1b\",pēc:\"1d\",pēd:\"1d\",pēl:\"1d\",pēt:\"1d\",pīr:\"1d\",pı:\"1f\",pł:\"1a\",pō:\"t\",pœ:\"t\",pş:\"1f\",pšen:\"y\",pšie:\"y\",pšte:\"v\",pūd:\"1b\",pūs:\"1b\",pūt:\"1b\",pž:\"1b\",\"q'\":\"1q\",\"q-a\":3,\"q-i\":3,\"q-n\":3,\"qa'\":\"1q\",qach:\"1q\",qag:\"1q\",\"qah \":\"1q\",qaj:\"1q\",qali:3,qang:\"1q\",qap:\"1q\",\"qar'\":\"1q\",qare:3,qasp:\"1q\",qast:\"1q\",qatl:\"1q\",qav:\"1q\",qba:3,qbi:3,qbo:\"1q\",qbu:3,qca:3,qce:3,qch:\"1q\",qci:3,\"qdaj \":\"1q\",qdaq:\"1q\",qde:3,qdu:3,\"qe'\":\"1q\",qef:3,qell:3,qend:3,qep:\"1q\",qer:3,qeswi:\"1q\",qev:\"1q\",qew:3,qf:3,qg:\"1q\",\"qha'\":\"1q\",qho:\"1q\",\"qi'\":\"1q\",qib:\"1q\",qih:\"1q\",qij:\"1q\",qime:3,qiq:3,qir:3,qiv:\"1q\",qji:\"1q\",qju:3,\"ql-\":3,qlo:\"1q\",qmey:\"1q\",qmo:\"1q\",\"qo'\":\"1q\",qob:\"1q\",qoc:\"1q\",qod:\"1q\",qog:\"1q\",qoh:\"1q\",qoj:\"1q\",qol:\"1q\",qom:\"1q\",qon:\"1q\",qop:\"1q\",qoq:\"1q\",qor:\"1q\",qos:\"1q\",qot:\"1q\",qov:\"1q\",qoyl:\"1q\",qp:\"1q\",\"qq \":3,qqe:3,qqi:3,qql:3,qqn:3,qqo:\"1q\",qqr:3,qqs:3,qre:3,qri:3,qse:3,qsi:3,\"qt \":3,\"qt-\":3,qtah:\"1q\",qti:\"1q\",\"qu' \":\"1q\",\"qu'i\":\"l\",\"qu'o\":\"l\",qualq:\"p\",\"quam \":\"t\",\"quan \":\"a\",\"quas \":\"t\",quay:\"a\",\"qub \":\"1q\",qubbe:\"1q\",quch:\"1q\",qud:3,queg:\"q\",quej:\"o\",quela:\"p\",quena:\"p\",queno:\"p\",quien:\"o\",quitu:\"t\",quoc:\"t\",quod:\"t\",\"quoi \":\"l\",quom:\"t\",\"quos \":\"t\",\"quot \":\"t\",quou:\"t\",qup:\"1q\",quq:3,quu:\"t\",quv:\"1q\",quy:\"a\",quán:\"a\",\"quí \":\"o\",quý:\"a\",quā:\"t\",qv:\"1q\",qwi:\"1q\",qä:\"1k\",qç:\"1k\",qû:\"l\",qı:\"1k\",qε:3,\"r'd\":\"1f\",\"r'o\":\"q\",\"r-a \":3,\"r-ad\":15,\"r-ben\":\"b\",\"r-bi\":\"1n\",\"r-d \":3,\"r-de \":\"1n\",\"r-i \":3,\"r-j\":\"1o\",\"r-me\":\"p\",\"r-o \":15,\"r-s \":3,\"r-se \":\"p\",\"r-sen\":3,\"r-te\":\"p\",\"r-un\":15,\"r-we\":3,\"r-y\":\"m\",\"ra' \":\"1q\",\"ra-n\":3,raad:\"r\",\"raam \":\"r\",\"raar \":\"r\",rabah:\"d\",racch:\"q\",ració:\"o\",radui:\"l\",raduk:\"1o\",radz:\"1a\",radı:\"1f\",radše:\"y\",raec:\"t\",raeg:\"1c\",raer:\"o\",\"raff \":12,ragaz:\"q\",ragla:\"1n\",rahk:\"b\",rahva:\"1c\",rahvu:\"1c\",\"raia \":\"p\",\"raid \":\"m\",raie:\"l\",raiso:\"l\",raite:\"l\",rajno:\"1o\",rají:\"u\",\"rakk \":12,rakm:\"1f\",rakst:\"1d\",ralei:\"1b\",ralio:\"1o\",\"ralt \":\"z\",ramik:\"1o\",ramti:10,ramı:\"1f\",rancé:\"o\",\"rang-\":\"b\",rangt:13,ranho:\"p\",ranij:\"v\",ransu:\"1n\",ranı:\"1f\",rarea:15,rarna:10,raroj:\"1o\",rarse:\"o\",raryn:\"1n\",raré:\"o\",rasch:\"n\",rasda:\"1q\",rasf:\"q\",rasha:4,rasj:12,rasyn:\"1n\",rasza:\"1a\",\"rası \":\"1f\",rasın:\"1f\",ratoj:\"1o\",\"ratr \":\"u\",\"ratá \":\"y\",raub:\"n\",rauch:\"n\",raudo:\"1b\",raue:\"n\",rauf:\"n\",rauga:\"1b\",raugs:\"1d\",rauha:11,rauj:\"1b\",rauki:\"1b\",\"raum \":\"n\",raur:\"n\",ravai:\"l\",ravuj:\"u\",ravv:\"q\",\"rawa \":\"1a\",rawd:\"1a\",rawo:\"1a\",razer:\"p\",razio:\"q\",razli:\"v\",razlo:\"v\",razm:\"v\",razv:\"v\",raço:\"p\",raím:\"s\",raña:\"o\",raú:\"o\",rači:\"1b\",račk:\"u\",raňa:\"y\",raşan:\"1n\",\"raš \":\"v\",raša:\"1b\",rašo:\"1b\",ražd:\"u\",ražu:\"1b\",rbaha:\"b\",rbaik:\"b\",\"rbe'\":\"1q\",rbeas:15,rbeit:\"n\",rbets:10,rbeş:15,rbh:\"s\",rbica:\"b\",rbij:\"r\",rbim:15,rbisk:\"z\",rbj:10,rboj:\"1o\",\"rbol \":\"o\",\"rbre \":\"l\",rbryt:12,rbti:\"1b\",rbua:\"b\",\"rbum \":\"t\",rbè:\"l\",rbò:\"q\",rbú:13,rbă:15,rbą:\"1b\",rbč:\"y\",rbš:\"1b\",rbū:\"1b\",\"rc-\":\"l\",\"rcat \":15,rcav:\"q\",rceb:\"p\",rcht:\"n\",rcih:\"1f\",rciz:\"q\",rcoj:\"1o\",rcyk:\"z\",rcz:\"1a\",rcè:\"l\",rcíc:\"p\",rcò:\"q\",rcó:\"o\",rcă:15,rcı:\"1f\",\"rdad \":\"o\",rdaq:\"1q\",\"rdat \":\"r\",rdato:\"q\",rdee:\"r\",rdeke:14,rdeş:\"1f\",rdifu:12,rdió:\"o\",rdk:\"n\",rdloo:1,rdly:\"m\",rdnu:\"n\",rdoa:\"p\",rdoj:\"1o\",rdonn:\"l\",rdsk:\"z\",rdyg:\"1n\",rdyl:\"1n\",rdym:\"1n\",rdyr:\"1n\",rdzi:\"1a\",rdzo:\"1a\",rdã:\"p\",rdín:\"o\",rdít:14,rdò:\"q\",rdón:\"o\",rdø:\"z\",rdą:\"1b\",rdē:\"1d\",rdę:\"1b\",\"rdı \":\"1f\",rdım:\"1f\",rdır:\"1f\",rdž:\"1b\",\"re's\":\"m\",\"read \":\"m\",reall:\"m\",rebal:\"v\",rebao:\"v\",rebar:15,rebil:\"1f\",rebov:\"y\",rebuj:\"y\",rechn:\"n\",rechá:\"y\",reciz:\"1o\",recun:15,recut:15,recía:\"o\",redal:\"y\",redas:\"1o\",redea:15,redip:\"1n\",redra:10,redá:\"y\",\"reeg \":\"r\",reeka:\"1c\",reend:\"p\",reeu:\"r\",refie:\"o\",reful:\"m\",regj:12,reglu:13,regol:\"q\",regra:\"p\",regti:1,reia:\"p\",reido:\"1p\",reih:\"n\",reiki:\"1b\",reip:\"1b\",reits:\"n\",rejn:\"1o\",rejst:\"z\",rekar:13,rekek:14,rekey:4,rekir:\"1f\",\"rekk \":12,rekkj:12,rekrá:\"y\",rekva:\"y\",relož:\"y\",rely:\"m\",reló:\"p\",remea:15,remmo:\"q\",rempl:\"l\",rempu:\"b\",\"ren'\":\"m\",\"ren-\":3,rench:\"m\",renis:\"1o\",renko:\"1o\",renot:\"q\",rentr:\"l\",\"renu \":\"1o\",renut:\"v\",rença:\"p\",\"rené \":\"y\",rený:\"1n\",reod:15,repte:12,repär:\"1c\",repü:14,repš:\"1b\",rerne:\"z\",rert:12,rerum:\"t\",\"resk \":12,reska:\"1o\",resuj:\"1a\",retou:\"l\",rettf:12,reue:\"n\",reum:\"t\",reund:\"n\",reveu:\"p\",\"rewe \":4,reyt:13,rezc:\"o\",rezec:15,rezut:15,rezw:4,rezy:\"1a\",reä:11,reçu:\"l\",reí:\"o\",reñ:\"o\",reó:\"o\",reć:\"v\",rečen:\"v\",\"reči \":\"v\",rečí:\"y\",reň:\"y\",reşe:15,reşt:15,reše:\"v\",reši:\"v\",rešn:\"v\",rfg:\"r\",rfæ:\"z\",rfí:\"p\",rgaa:\"r\",rgait:\"1b\",\"rgaz \":3,rgd:\"r\",rgead:\"s\",rgf:\"n\",rghe:\"q\",\"rgid \":\"s\",rginu:13,rgmi:\"1c\",rgoj:\"1o\",rgom:\"q\",rgsm:\"z\",rgull:\"o\",rgâ:\"p\",rgã:\"p\",rgår:\"z\",rgæ:\"z\",rgê:\"p\",rgā:\"1d\",rgă:15,rgę:\"1b\",rgš:\"1b\",\"rh \":\"u\",\"rha'\":\"1q\",rhaal:\"r\",rhad:\"b\",rhap:\"m\",rhav:\"1o\",rheid:\"r\",rhent:\"b\",rhj:\"z\",rhl:\"u\",rhove:\"z\",rhui:\"r\",rhv:\"z\",rhá:14,rhån:\"z\",rhø:\"z\",rhü:\"n\",\"ri's\":\"m\",riadk:\"y\",riaj:\"1o\",rianç:\"p\",\"riau \":\"1b\",ribir:\"o\",ribí:\"o\",ricka:10,ricl:\"t\",ricon:\"q\",ridt:\"z\",ridus:\"1c\",riebe:\"n\",riede:\"n\",rieur:\"l\",\"riez \":\"l\",\"rieš \":\"1b\",riež:\"1b\",\"righ \":\"s\",rigk:\"n\",rigni:13,rigti:\"z\",rihed:\"z\",riil:15,rijd:\"r\",rijh:\"r\",rijk:\"r\",rijn:\"r\",rijv:\"r\",riją:\"1b\",rikir:4,\"rikk \":12,rikka:11,rikla:\"1b\",rikä:\"1p\",rilat:\"1o\",rilha:\"p\",rilor:15,rimei:\"p\",rimk:\"b\",\"rimt \":3,rimum:\"t\",rimw:4,rinh:\"p\",rinig:\"d\",riniz:\"1f\",rinmi:\"1n\",\"rinn \":13,rinob:\"1p\",rinoj:\"1o\",rinya:\"b\",rinā:\"1d\",rioa:15,rions:\"l\",ripsi:\"t\",rirg:13,riris:\"1o\",rirod:\"v\",riru:\"1o\",rirí:\"o\",rised:\"m\",risim:\"1b\",risoa:15,rispe:\"q\",rispo:\"q\",ristn:\"1o\",ritah:\"b\",\"rith \":\"s\",\"rity \":\"m\",\"rité \":\"l\",riuk:\"1b\",\"riul \":15,riuo:\"1b\",rivb:10,rivso:\"1q\",\"rivé \":\"l\",\"riwe \":4,riwi:3,\"riy \":\"1q\",rizw:4,riâ:\"p\",riæ:\"t\",rië:\"r\",\"riñ \":\"1n\",\"rió \":\"o\",riň:\"1n\",\"riš \":\"v\",riši:\"y\",rišl:\"y\",rjaar:\"r\",rjade:10,rjadi:\"b\",rjas:11,rjest:11,rjime:\"1n\",rjoi:11,\"rju \":13,rjua:\"b\",rjuta:\"1c\",rjó:13,rkade:10,rkase:3,\"rkau \":\"1b\",rkek:\"1f\",rkena:\"b\",rkert:\"z\",rkf:\"m\",rkg:\"r\",rkje:12,rkki:11,rklic:\"n\",rklig:10,rklä:\"n\",rkoi:11,rkoo:\"r\",rkopp:\"z\",\"rkti \":\"1b\",rkvu:\"y\",rkæ:\"z\",rkø:\"z\",rkš:\"1b\",rkū:\"1b\",rladt:\"z\",rlady:\"1n\",rlalu:\"b\",rlamb:\"b\",rlare:\"q\",rlary:\"1n\",rları:\"1f\",rlasi:\"1o\",rlde:10,rleb:\"n\",rlega:13,rlf:\"m\",rliec:\"1d\",rlih:\"b\",rlij:\"r\",rlikt:\"1f\",rlj:\"v\",rlod:\"z\",\"rlog \":\"r\",rlora:10,rlosi:1,rlp:\"m\",rluka:\"b\",rlund:10,\"rläp \":\"1n\",rlå:10,\"rlé \":\"l\",rlò:\"q\",rlø:\"z\",rlü:\"1f\",\"rm'\":\"m\",rmagy:\"1n\",rmaj:\"1o\",rmao:\"1o\",rmaq:\"1q\",rmasj:12,rmay:\"1f\",rmaç:\"p\",rmdi:\"1d\",rmeda:\"o\",rmeo:\"1o\",\"rmey \":\"1q\",rmeye:\"1f\",rmk:\"1o\",rmoe:\"r\",rmoo:\"r\",rmum:\"1o\",rmâ:\"p\",rmã:\"p\",rmål:\"z\",rmæ:\"z\",rmê:\"p\",rmì:\"q\",rmò:\"q\",rmī:\"t\",rnc:\"n\",rng:\"n\",rnh:\"n\",rnj:\"v\",rnz:\"n\",rnå:\"z\",rnæ:\"z\",rnā:\"t\",rnă:15,\"ro-m\":\"p\",\"road \":\"m\",roap:15,robar:\"o\",\"robí \":\"y\",robíš:\"y\",rochá:\"u\",rodic:\"v\",rodk:\"1a\",rodz:\"1a\",rodáv:\"u\",roef:\"r\",roei:\"r\",roek:\"r\",rogav:\"t\",\"roh \":\"n\",roig:\"1o\",roire:\"l\",\"rois \":\"l\",rojat:\"1p\",rojn:\"1o\",rokke:\"r\",rokok:\"b\",rokov:\"y\",romiň:\"u\",romlu:\"u\",rongo:4,ronke:\"r\",ropio:\"o\",roppo:\"q\",ropt:\"t\",ropya:\"1q\",rorer:4,roru:\"t\",rosje:12,roui:\"l\",\"roul \":15,roun:\"m\",roupa:\"p\",rouve:\"l\",rovos:\"1o\",rovre:\"z\",\"rovu \":\"1o\",\"row \":\"m\",rowad:\"1a\",rowie:\"1a\",rowy:\"1a\",rozor:\"v\",\"ro \":\"1o\",roç:\"p\",ročit:\"v\",rpak:\"b\",rpee:11,rpf:\"n\",rpik:\"b\",rpinu:13,rpj:\"r\",rpom:\"1o\",rpp:11,rpä:11,rpí:\"u\",rqe:3,rqo:\"1q\",rquo:\"l\",rquê:\"p\",\"rr-\":3,rrf:3,rrl:\"n\",rrz:3,rrà:\"q\",rrâ:\"p\",rræ:\"t\",rrò:\"q\",rrö:\"n\",rrā:\"t\",\"rs)\":\"m\",rsq:\"l\",rsã:\"p\",rså:10,rsă:15,rsą:\"1b\",rsı:\"1f\",\"rt-n\":3,\"rta-\":\"p\",rtae:\"t\",rtaf:\"q\",\"rtah \":\"1q\",rtany:\"b\",\"rtea \":15,rteir:\"p\",rteld:\"r\",rtfar:10,rthd:\"m\",rthá:\"s\",rtiny:\"b\",rtió:\"o\",rtoa:11,rtoe:\"r\",\"rtoj \":\"1o\",rtott:14,\"rtou \":\"p\",rtout:\"l\",rtrek:\"r\",rtræ:\"z\",rtsä:10,rtuu:\"t\",rtuv:\"1b\",rtyg:10,rtyt:1,rtà:\"q\",rtáv:\"p\",rtâ:\"p\",rtè:\"l\",rtê:\"p\",rtì:\"q\",rtò:\"q\",rtø:\"z\",rtù:\"q\",rtă:15,rtō:\"t\",\"ru-b\":\"b\",ruad:\"1o\",rudno:\"1a\",ruds:\"z\",rudt:\"z\",rueba:\"o\",ruger:\"z\",rugsa:\"1n\",rugte:\"z\",ruhi:\"n\",ruhuk:4,ruia:15,ruiu:\"p\",rujem:\"v\",rujo:\"1o\",rukad:10,rukar:10,ruker:12,ruki:4,rukne:\"z\",rukos:10,rukto:\"1o\",rului:15,rumah:\"b\",rumos:15,rumqu:\"t\",rumut:15,runar:13,runge:\"n\",runy:\"b\",ruoka:11,ruol:\"q\",ruon:\"1o\",ruput:\"1b\",ruril:15,rusah:\"b\",ruseb:\"z\",rusit:3,rusky:\"u\",rutk:\"b\",rutse:4,ruvo:\"1o\",ruwe:\"d\",ruyo:\"1f\",ruzk:\"y\",ruï:\"r\",ruñ:\"o\",ruć:\"v\",ruča:\"v\",rušky:\"y\",\"ruže \":\"y\",rvl:\"r\",rvt:\"n\",rvã:\"p\",rvä:10,rvå:10,rvæ:\"z\",rvì:\"q\",rvò:\"q\",rvý:\"y\",rvī:\"1d\",\"rw \":\"1a\",rwagh:\"1q\",rwart:\"n\",rwaye:4,rweis:\"n\",rwh:\"m\",rwow:\"1a\",rws:\"1a\",rwt:\"r\",rwys:1,rwü:\"n\",rxa:3,\"ry'n\":\"1f\",ryam:4,ryar:4,ryaw:4,rybo:\"m\",\"rych \":\"1a\",ryde:\"z\",\"ryf \":1,ryge:\"z\",rygn:\"z\",rygt:\"z\",ryhe:1,ryiw:4,ryje:\"1b\",ryka:\"1a\",rymy:\"1n\",\"ryna \":\"1n\",rynd:\"1n\",ryone:\"m\",\"ryp \":\"1n\",ryste:\"z\",ryter:12,ryti:\"1b\",rytą:\"1b\",rywa:\"1a\",ryy:11,ryä:11,ryö:11,ryči:\"1b\",ryň:\"1n\",ryš:\"1b\",ryž:\"1b\",rzaa:\"r\",rzeb:\"1a\",rzec:\"1a\",rzei:\"n\",rzej:\"1a\",rzep:\"1a\",rzeu:\"n\",rzew:\"1a\",rzez:\"1a\",rzeć:\"1a\",rzg:\"n\",rzh:\"n\",rzio:\"q\",rziu:15,rzoe:\"r\",rzt:\"n\",\"rzwi \":\"1a\",rzyk:\"1a\",rzym:\"1a\",rzyn:\"1a\",rzyp:\"1a\",rzä:\"n\",rzé:14,rzü:\"n\",rzą:\"1a\",rzę:\"1a\",rzı:\"1f\",\"r­\":\"n\",\"rá-\":\"p\",ráca:\"y\",ráce:\"u\",ráct:\"o\",\"ráda \":\"u\",\"rádi \":\"u\",\"rái \":\"a\",ráku:13,ránh:\"a\",rári:\"p\",ráth:\"s\",rátom:14,rátí:\"u\",rávaj:\"y\",\"ráš \":\"y\",râd:15,râl:\"l\",\"rân \":15,rând:15,râng:15,râs:15,\"rât \":15,râz:15,rã:\"p\",räb:\"n\",räck:10,rädet:10,räff:10,räg:\"n\",räld:10,räne:\"n\",ränk:\"n\",rär:\"n\",räu:\"n\",räy:11,räz:\"n\",rääki:\"1c\",råb:\"z\",råg:10,råka:10,rån:10,råre:\"z\",rårs:\"z\",rått:10,rædd:13,ræde:\"z\",ræf:\"z\",ræi:\"z\",rækk:\"z\",ræl:\"z\",rænde:\"z\",rændt:\"z\",ræp:\"t\",\"rær \":12,ræsi:\"z\",\"ræt \":\"z\",rætt:\"z\",ræv:\"z\",rçad:\"p\",rçe:\"1f\",\"rço \":\"p\",\"rçon \":\"l\",rçu:\"l\",\"rè \":\"q\",rèn:\"l\",rèr:\"l\",réal:\"l\",récie:\"l\",\"rée \":\"l\",\"réf \":13,réir:\"s\",réis:\"o\",rék:14,réo:\"l\",répo:\"l\",réq:\"l\",rési:\"l\",réso:\"l\",rétt:13,réus:\"l\",révei:\"l\",réé:\"l\",\"rê \":\"p\",rían:\"o\",rías:\"o\",ríde:\"y\",ríje:\"y\",ríkl:\"y\",ríku:13,ríle:\"y\",ríliš:\"y\",\"rím \":\"y\",\"ríme \":\"y\",ríoc:\"s\",ríp:\"y\",ríre:\"s\",\"ríte \":\"y\",rív:\"p\",ríš:\"y\",ríž:\"y\",róbo:\"1a\",róbu:\"1a\",róci:\"1a\",rópe:\"y\",róu:13,\"rô \":\"p\",rôl:\"l\",rôt:\"l\",rõe:\"p\",röda:10,rög:14,röj:10,röka:10,rönsk:13,rörd:10,\"röst \":10,rösta:10,rødd:\"z\",røf:\"z\",røg:\"z\",røk:\"z\",rønt:\"z\",røre:\"z\",rørt:\"z\",røt:12,\"rù \":\"q\",rúc:\"y\",rúi:13,rúl:13,rúm:13,rúng:\"a\",rúč:\"y\",rû:\"l\",\"rü \":\"1f\",rüber:\"n\",rüf:\"n\",rüher:\"n\",rüj:\"1n\",\"rül \":14,\"rült \":14,rünü:\"1f\",rür:\"1f\",rüz:\"1f\",rüş:\"1f\",rýa:\"1n\",rýk:\"y\",rýl:\"u\",rýt:13,rýž:\"u\",rāb:\"t\",rāc:\"t\",rād:\"1d\",rār:\"t\",\"rās \":\"t\",rātu:\"t\",rāv:\"t\",\"ră \":15,rąs:\"1b\",\"rć \":\"1a\",rča:\"v\",rček:\"y\",rčia:\"1b\",rčite:\"y\",rčk:\"v\",\"rē \":\"t\",rēc:\"t\",rēd:\"t\",rēg:\"t\",rēm:\"t\",rēt:\"1d\",ręs:\"1b\",rğ:\"1k\",rīc:\"t\",rīg:\"1d\",rīm:\"t\",rīn:\"1d\",rīp:\"t\",rīr:\"t\",\"rīs \":\"1d\",rīt:\"1d\",rīv:\"1d\",rıd:\"1f\",rıl:\"1f\",rım:\"1f\",rına:\"1f\",rını:\"1f\",rır:\"1f\",rıy:\"1f\",rız:\"1f\",rł:\"1a\",rōs:\"t\",rœ:\"t\",rşit:15,rşy:\"1n\",\"rşı \":\"1f\",ršau:\"1b\",ršet:\"u\",ršio:\"v\",rški:\"1b\",ršta:\"1b\",ršu:\"1b\",rūd:\"1b\",rūk:\"1b\",rūm:\"1b\",rūn:\"1b\",rūs:\"1b\",\"rūti \":\"1d\",rūš:\"1b\",\"rž \":\"u\",ržav:\"v\",ržu:\"u\",rε:3,s$:\"p\",\"s'ag\":\"l\",\"s'ap\":\"l\",\"s'en\":\"l\",\"s'es\":\"l\",\"s'ho\":\"q\",\"s'il\":\"l\",\"s'o\":\"l\",\"s's\":\"m\",\"s't\":\"1f\",\"s'y\":\"l\",\"s'è\":\"q\",\"s'é\":\"l\",\"s--\":\"m\",\"s-au\":15,\"s-d \":3,\"s-d-\":3,\"s-li\":\"1p\",\"s-mi\":\"l\",\"s-mo\":\"l\",\"s-no\":\"l\",\"s-o \":15,\"s-un\":\"l\",\"s-vo\":\"l\",\"s-ye\":3,\"sa't\":\"d\",saab:\"1c\",\"saad \":\"1c\",saah:\"d\",\"saam \":1,saav:11,\"sab-\":3,sabah:\"1f\",\"sabb \":14,saby:\"1n\",sabé:\"o\",saccu:\"t\",sacó:\"o\",sadec:\"1f\",\"sae \":\"t\",safag:3,sagat:\"1n\",sagd:\"z\",saggi:\"q\",sagol:\"1p\",sags:\"n\",sagte:\"n\",sagö:\"1p\",saia:\"p\",saie:\"l\",\"sair \":\"p\",saira:11,saiu:\"p\",\"saja \":\"b\",sajab:\"1c\",\"saje \":\"o\",sajná:14,saju:15,sajá:14,sakah:\"b\",sakei:\"1b\",sakia:\"1b\",sakte:12,sakya:\"d\",sakyk:\"1b\",sakym:\"1b\",salud:\"o\",salí:\"o\",samhe:10,samio:\"1o\",samoc:\"1a\",samol:\"1a\",sanni:10,sannl:13,sanns:12,sanoa:11,sanoi:11,sanot:11,santé:\"l\",sanı:\"1f\",saoi:\"s\",saor:\"s\",sapet:\"q\",sapev:\"q\",sapik:\"1p\",sappi:\"q\",sapro:\"1d\",\"saq \":\"1q\",saqda:\"1q\",sareb:\"q\",sasab:\"d\",sasak:\"d\",sasal:\"d\",sasj:12,\"sasy \":\"1n\",satee:11,satik:\"1d\",sattu:11,satz:\"n\",satı:\"1f\",savez:\"l\",savoi:\"l\",savye:4,sawal:3,sawat:\"b\",sawl:3,\"say'\":\"1q\",sayar:\"1f\",sayd:\"1f\",sayer:\"l\",\"says \":\"m\",sayun:\"o\",sayé:\"l\",\"saz \":\"1n\",sazi:\"q\",\"saí \":\"p\",saíd:\"p\",saú:\"p\",sač:\"v\",saď:\"u\",saň:\"1n\",sať:\"y\",sbag:\"q\",\"sbe'\":\"1q\",sbog:\"1q\",sbye:\"z\",sbí:\"u\",sbü:\"n\",scau:15,sceb:\"t\",sceg:\"q\",scelt:\"q\",scenz:\"q\",sceu:\"p\",scev:\"q\",schap:\"r\",schic:\"n\",schid:15,schij:\"r\",schla:\"n\",schle:\"n\",schli:\"n\",schlo:\"n\",schlu:\"n\",schme:\"n\",schne:\"n\",schoe:\"r\",scht:\"n\",schwi:\"n\",sciar:\"q\",scieb:\"t\",sciis:\"1o\",scipo:\"1o\",\"scis \":\"t\",scisn:\"t\",\"scit \":\"t\",scitu:\"t\",sclu:\"q\",scobr:\"p\",scoil:\"s\",scors:\"q\",scoz:\"q\",screv:\"p\",scrie:15,scuc:\"o\",scump:15,scurt:15,scusa:\"q\",\"scut \":15,scuz:15,\"scy \":\"1a\",scâ:\"p\",scú:\"o\",scā:\"t\",scă:15,scī:\"t\",sdaj:\"1q\",sdaq:\"1q\",sday:\"m\",sdek:\"1o\",sdeš:\"1b\",sdj:10,sdon:\"1o\",sdy:\"z\",seac:\"s\",seara:15,seaz:15,\"seba \":\"y\",sebad:\"z\",sebag:\"b\",\"sebb \":14,sebel:\"b\",seben:\"b\",\"sebi \":\"v\",sebli:1,sebua:\"b\",sebut:\"b\",sebä:\"1n\",sedag:10,sedz:\"1o\",\"seem \":\"m\",seeme:\"m\",seerd:\"r\",sefra:3,sefru:3,\"seg-\":3,seger:\"b\",segga:3,segir:13,segj:13,segz:3,segít:14,segú:\"o\",sehar:\"b\",sehat:\"b\",seie:\"n\",seig:\"l\",seinn:13,seint:13,seio:\"p\",seite:\"n\",sejr:\"z\",seju:\"b\",seker:1,sekm:\"1b\",sekol:\"b\",sekur:\"1o\",sekva:\"1o\",selal:\"b\",selho:\"p\",selij:\"r\",selki:3,selma:3,selsd:\"z\",selve:\"m\",selvo:\"z\",semai:\"l\",semaj:\"1o\",semua:\"b\",semä:11,\"sen-n\":3,senia:\"1b\",senç:\"p\",seom:\"s\",seora:\"b\",seped:\"b\",serad:10,sería:\"o\",sesd:\"1o\",seseo:\"b\",seser:\"1b\",sesua:\"b\",setia:\"b\",setj:13,setka:\"u\",setz:\"n\",\"seu \":\"p\",\"seul \":\"l\",seule:\"l\",\"seun \":1,seura:11,sevd:\"1f\",\"sevi \":\"1d\",sevm:\"1f\",sevo:\"1p\",sewl:3,sexa:\"t\",\"sez-\":\"l\",seá:\"o\",seä:11,seí:\"o\",seó:\"o\",seć:\"v\",sež:\"u\",sfec:\"o\",sfue:\"o\",sfy:\"m\",sfâ:15,sfæ:\"z\",sgeh:\"n\",sgh:\"1q\",sgv:\"1o\",sgá:14,sgó:\"o\",\"sh-\":\"m\",\"sha'\":\"1q\",shad:\"m\",shaka:4,shap:\"m\",shash:4,shats:4,shb:\"m\",shc:\"m\",\"she'\":\"m\",shed:\"m\",shee:\"m\",shej:4,shes:\"m\",shf:\"m\",shg:\"m\",shh:\"m\",shie:\"m\",shij:4,shira:4,shn:\"m\",\"sho \":4,shob:4,shoe:\"m\",shoul:\"m\",shur:4,shush:4,shut:\"m\",shva:\"v\",\"shy \":\"m\",shä:\"n\",shå:10,siaan:11,siac:\"y\",siamo:\"q\",siang:\"b\",siap:\"b\",siau:\"1b\",sibh:\"s\",\"sibi \":\"t\",sibuk:\"b\",\"sich \":\"n\",sicht:\"n\",\"sick \":\"m\",sicur:\"q\",sicut:\"t\",sidis:\"1o\",sidl:\"1o\",sids:\"z\",siebi:\"1a\",siedz:\"1a\",sief:\"r\",sieh:\"n\",siemp:\"o\",siend:\"o\",sieu:\"l\",sievi:\"1d\",sigh:\"m\",sigis:\"1o\",sigli:\"q\",sigue:\"o\",sigui:\"o\",sihk:\"b\",siia:\"1c\",\"sikk \":12,siliu:\"t\",silma:\"1c\",silon:\"1o\",\"simy \":\"1a\",simą:\"1b\",sinab:\"d\",\"sinh \":\"a\",siniz:\"1f\",sinj:\"1o\",sinl:\"1f\",sinsh:4,sinud:\"1c\",sinug:\"1c\",sinut:11,sinz:4,sinä:11,siog:\"1b\",sioi:11,sioj:\"1o\",sionn:\"l\",sioo:\"1c\",sior:\"t\",sipir:\"1b\",sipra:\"1b\",siruo:\"1b\",sisy:\"d\",\"sisz \":\"1a\",\"sit-t\":3,sitik:\"1b\",sitk:11,sitz:\"n\",\"siun \":\"b\",sivai:\"1b\",siwa:3,siwe:3,siwi:3,sixt:\"m\",\"siya \":\"d\",siyan:\"d\",\"siye \":\"1f\",siyud:\"d\",\"siä \":11,siè:\"l\",siê:\"a\",sië:\"r\",\"siñ \":\"1n\",siñi:\"1n\",sión:\"o\",siú:\"s\",sić:\"1a\",siň:\"1n\",siška:\"1b\",siū:\"1b\",siž:\"1b\",sjak:12,sjans:12,sjeb:\"r\",sjef:12,sjek:12,\"sjen \":12,sjes:\"r\",sjid:\"b\",sjok:12,\"sjon \":12,sjone:12,sjons:12,sjt:\"r\",sjuk:10,sjun:10,\"sjá \":13,sjál:13,själ:10,sjå:12,sjæ:\"z\",sjó:13,\"sjö \":13,sjön:10,sjø:12,sjú:13,sję:\"1a\",skaan:11,skabe:\"z\",skabt:\"z\",\"skad \":10,skada:10,skaid:\"1d\",skais:\"1d\",skait:\"1b\",skaj:\"1o\",skaps:12,skapt:12,skato:\"1o\",skaud:\"1b\",skeh:\"z\",\"skej \":\"y\",skent:11,skepp:10,skerm:1,skern:\"z\",skete:\"z\",skibe:\"z\",skick:10,\"skie \":\"1a\",skieg:\"1a\",skila:13,skili:13,skipe:12,skipt:13,skite:\"1b\",skja:13,skje:12,skjá:13,skk:\"z\",sklam:\"y\",sklen:\"u\",sklig:10,sklær:\"z\",skm:10,skoli:\"1b\",skolu:\"1d\",skolá:14,skool:1,skorn:10,skrat:10,skrib:\"1o\",skrá:13,skräm:10,skult:\"1o\",skulu:13,skuw:\"d\",skve:\"y\",skwe:\"d\",skáld:13,skäl:10,skär:10,skæ:\"z\",skí:13,skól:13,sköt:10,skø:\"z\",skús:\"y\",\"sl \":\"u\",slaha:\"1n\",slape:\"r\",slapt:\"1b\",slaž:\"v\",sledk:\"u\",slegs:1,\"sli'\":\"1q\",sliek:\"1d\",slio:\"v\",sliss:\"r\",sliv:\"y\",sliš:\"v\",sloe:\"r\",sloo:\"r\",\"slu'\":\"1q\",sluj:15,sluna:13,sluta:10,slute:10,sluč:\"v\",slyk:12,slynd:\"1n\",slys:13,slyš:\"u\",slâ:\"p\",slã:\"p\",släk:10,släm:\"1n\",släp:10,slär:\"1n\",slíb:\"u\",slök:13,slør:\"z\",slú:\"y\",slý:\"u\",slā:\"1d\",slą:\"1b\",slē:\"1d\",slı:\"1f\",\"sm'\":\"m\",smaal:\"1c\",smage:\"z\",smaj:\"1o\",smaka:10,smali:\"1p\",small:\"m\",smao:\"s\",smaq:3,smatr:\"v\",smere:14,smeš:\"v\",smj:13,smoh:\"1q\",\"smuk \":\"z\",smukk:\"z\",smule:\"z\",smys:\"u\",\"smá \":13,smæ:\"z\",smör:10,smą:\"1b\",smę:\"1b\",smī:\"1d\",\"sn'\":\"m\",snab:10,snadn:\"u\",\"snar \":10,\"snat \":3,\"snel \":\"r\",\"sner \":\"z\",snesk:13,snež:\"y\",sng:\"d\",snied:\"1d\",snije:\"v\",snill:12,snim:\"v\",snj:13,snov:\"v\",\"sná \":\"u\",snám:\"s\",snáš:\"u\",snäl:10,snå:10,sníd:\"u\",sníh:\"u\",snö:10,snød:12,snú:13,\"sný \":\"u\",sną:\"1a\",snī:\"1d\",soane:15,soas:\"p\",sobie:\"1a\",soek:1,soep:\"r\",\"sof \":\"r\",soffa:10,sofor:\"n\",\"sog \":\"d\",sogg:\"q\",sogi:\"1o\",sogna:\"q\",sogno:\"q\",sogo:\"1o\",sogr:\"p\",\"soh \":\"1q\",soha:14,sohn:\"n\",soho:4,sohta:\"1q\",soir:\"l\",sojn:\"1o\",sokat:14,solch:\"n\",\"soll \":\"n\",sollt:\"n\",solé:\"l\",solí:\"o\",someo:\"m\",somy:4,sonh:\"p\",sonoj:\"1o\",sonri:\"o\",sonst:\"n\",sonun:\"1f\",sonur:13,soor:\"r\",soos:1,soov:\"1c\",\"sop \":\"1q\",sopbe:\"1q\",soppu:\"1q\",sops:\"v\",sopta:\"1q\",sorad:\"1n\",sorag:\"1n\",sorun:\"1f\",sosda:\"1q\",sosem:14,sosit:15,sosw:\"1q\",sotr:\"o\",sotsi:\"1c\",sotto:\"q\",soube:\"p\",soun:\"m\",\"sous \":\"l\",souse:\"u\",souvi:\"l\",sovb:\"1q\",sovch:\"1q\",sowan:\"1a\",sowu:\"1n\",soye:\"l\",sozin:\"p\",soä:11,soña:\"o\",soň:\"1n\",soš:\"v\",spalv:\"1b\",spava:\"v\",spave:\"q\",spaç:\"p\",spb:\"m\",speak:\"m\",speit:\"p\",spela:10,spelo:\"1p\",spem:\"t\",speny:3,spett:\"q\",sphe:\"m\",spiac:\"q\",spiev:\"y\",spij:\"r\",spila:13,spils:\"1d\",spodz:\"1a\",spoe:\"r\",spog:\"q\",sposó:\"1a\",spotk:\"1a\",sprac:\"n\",sprak:\"r\",\"spre \":15,sprek:\"r\",spric:\"n\",sproc:\"n\",sprok:\"r\",sprä:\"n\",spró:\"1a\",sprę:\"1b\",sps:\"m\",spt:\"r\",spub:\"1o\",spue:\"o\",spug:\"q\",\"spui \":15,spund:15,spune:15,spuns:15,spurg:\"z\",spurn:13,spurt:12,\"spus \":15,spué:\"o\",spát:\"u\",spâ:15,spät:\"n\",spå:10,spíš:\"u\",spô:\"y\",\"spør \":12,spørr:12,spørs:12,spü:\"n\",spý:\"y\",spę:\"1a\",spū:\"1b\",sqe:3,sqo:\"1q\",squec:\"p\",sral:\"1q\",srb:\"y\",src:\"v\",srid:3,srim:3,\"srin \":3,srint:3,sry:\"1b\",sræ:13,\"ss-a\":3,ssaan:11,ssait:\"l\",ssani:11,ssaw:3,ssaye:\"l\",ssche:\"n\",sseq:3,ssew:3,ssfu:\"m\",ssiw:3,ssoa:\"p\",ssono:\"q\",ssora:\"p\",\"ssou \":\"p\",sss:\"n\",sstag:10,\"ssy \":\"m\",\"ssz \":14,ssza:14,ssze:14,sszon:14,ssà:\"q\",ssã:\"p\",\"ssä \":11,ssæ:\"t\",ssó:\"p\",\"st'a\":\"q\",\"st'o\":\"q\",\"st'u\":\"q\",\"st-n\":3,stadt:\"n\",stahv:\"1q\",staig:\"1b\",\"staj \":\"1o\",stao:\"v\",stary:\"1a\",stavl:\"v\",staví:\"u\",stawi:\"1a\",\"stay \":\"m\",staye:\"m\",stazi:\"q\",staç:\"p\",steac:\"s\",steck:\"n\",stedi:\"1f\",stehe:\"n\",stejn:\"u\",steke:\"r\",steld:\"r\",sterb:\"n\",sterv:\"r\",stfel:15,stign:\"v\",stinn:13,stiq:\"l\",stiyo:\"1f\",stió:\"o\",stič:\"v\",stjä:10,stjö:13,stkie:\"1a\",stkim:\"1a\",\"stko \":\"1a\",stlal:\"y\",\"stli \":\"u\",stly:\"m\",stmis:\"r\",stnad:10,stnas:\"1o\",stner:\"z\",stofu:13,stoir:\"l\",\"stoj \":\"1o\",stoji:\"v\",stonb:14,stong:\"d\",stood:\"m\",stopt:\"r\",stoup:\"u\",stq:\"t\",straa:\"r\",strák:13,strâ:15,strò:\"q\",strī:\"1d\",stuse:\"1c\",stuvo:\"o\",stvar:\"v\",stven:\"v\",stvi:\"1o\",\"stwa \":\"1a\",\"stwo \":\"1a\",styi:11,styre:\"z\",stà:\"q\",stává:\"u\",\"stä \":11,stäl:10,stär:\"n\",stè:\"l\",stê:\"p\",stì:\"q\",stò:\"q\",\"stó \":\"o\",stóra:13,stõe:\"p\",\"stök \":13,\"stú \":\"y\",stúl:13,stüc:\"n\",stüt:\"n\",stās:\"1d\",stă:15,stē:\"1d\",stū:\"1b\",\"su-\":3,suai:\"b\",suall:\"m\",\"suam \":\"t\",suara:\"b\",suat:\"b\",\"suc \":15,suco:\"p\",sudah:\"b\",suelo:\"o\",suen:\"o\",suert:\"o\",sugr:\"1b\",\"suje \":\"1a\",sują:\"1a\",sumba:4,sunat:15,sunod:\"d\",sunuz:\"1f\",suoi:\"q\",suona:\"q\",\"suos \":\"t\",suosi:11,\"suot \":\"d\",supoz:\"1o\",surha:\"1o\",surnu:\"1c\",susir:\"1b\",sutik:\"1b\",suto:\"q\",sutra:\"v\",sutre:3,\"suu \":11,suuda:\"1c\",suum:\"t\",suun:11,\"suur \":\"1c\",suuri:11,suut:11,\"suw \":\"1n\",suwe:\"d\",suá:\"p\",suç:\"1f\",suí:\"p\",suý:\"a\",suā:\"t\",suč:\"1b\",suši:\"y\",suž:\"1b\",svaj:\"1b\",svaki:\"v\",svako:\"v\",\"svam \":\"1q\",svarb:\"1b\",sverr:12,svezi:\"q\",svig:\"z\",svik:10,svimo:\"1p\",\"svin \":\"z\",svine:\"z\",sviz:\"q\",svob:\"u\",\"svog \":\"v\",svojí:\"u\",svolí:13,svou:\"u\",svy:\"1b\",svär:10,svå:10,\"své \":\"u\",svéh:\"u\",svém:\"u\",svö:13,svý:\"u\",svē:\"1d\",swee:\"m\",\"swer \":\"m\",\"swij \":\"1q\",\"swim \":\"m\",swy:\"1a\",swü:\"n\",sx:3,\"sy-\":\"m\",syad:\"d\",syar:\"b\",syb:\"1b\",syem:\"d\",syf:10,\"syg \":\"z\",sygd:\"z\",syge:\"z\",sykd:12,syke:12,sykk:12,symy:11,synan:\"1n\",synet:\"z\",\"syo \":\"d\",\"syr \":\"y\",syra:\"t\",systi:13,systu:13,syti:\"1b\",syun:\"d\",syw:\"1a\",syy:11,syz:\"1n\",syä:11,syö:11,syň:\"1n\",szab:14,szak:14,szav:14,szego:\"1a\",\"szej \":\"1a\",szemb:14,szeme:14,\"szen \":14,\"szer \":14,szeri:14,szik:14,szint:14,\"szni \":14,szná:14,szob:14,szol:14,szom:14,szr:14,szs:14,sztal:14,sztet:14,sztot:14,sztá:14,szuka:\"1a\",szy:\"1a\",szá:14,szé:14,szí:14,szú:14,szük:14,szül:14,szą:\"1a\",szę:\"1a\",\"s­\":\"n\",\"sà \":\"q\",\"sá-\":\"p\",sábi:\"p\",sách:\"a\",ságo:14,sáid:\"s\",sák:14,sánh:\"a\",sári:\"p\",sáro:14,sáu:\"a\",sáve:\"p\",sâmb:15,\"sân \":\"a\",sâng:15,sât:\"l\",sâu:\"a\",säc:\"n\",\"säg \":10,säga:10,säger:10,säi:11,säker:10,säko:\"1p\",sälj:10,sämi:\"1n\",säna:\"1p\",\"säng \":10,säni:11,säp:11,särs:10,sätte:10,säu:\"n\",säv:11,säy:11,sää:11,såf:\"z\",såg:10,såh:10,sål:10,sånt:12,sås:10,såv:10,\"sæ \":\"t\",sæd:\"z\",sæp:\"t\",\"sæt \":\"z\",sæti:13,sætt:\"z\",sæv:\"t\",sè:\"l\",séa:\"l\",sée:\"l\",ség:14,sék:14,sério:\"p\",séu:13,sên:\"p\",sì:\"q\",\"sía \":\"o\",síd:\"p\",síg:\"o\",síma:13,\"sín \":13,sína:13,síns:13,sínu:13,sío:\"s\",síq:\"o\",sív:\"p\",sò:\"q\",\"sóc \":\"a\",sólin:13,sólo:\"o\",sóng:\"a\",sõe:\"p\",\"sö \":11,sögo:10,söh:\"n\",söka:10,söker:10,sökte:10,söku:13,sömu:13,söw:\"1n\",söö:\"1c\",\"sø \":\"z\",sød:\"z\",søe:\"z\",søg:\"z\",søk:12,søl:\"z\",søm:\"z\",søt:12,sù:\"q\",súh:\"y\",súi:\"s\",súk:13,súl:14,súng:\"a\",sû:\"l\",\"sü \":\"1f\",süb:\"n\",süko:\"1p\",süp:\"1f\",süre:\"1f\",sýn:13,sýr:\"u\",\"sā \":\"1d\",sāl:\"1d\",sās:\"t\",sāt:\"1d\",\"să \":15,sči:\"1b\",sēd:\"1d\",sēr:\"t\",sēt:\"1d\",\"sī \":\"t\",sīb:\"1d\",sīd:\"t\",sīt:\"1d\",sīv:\"t\",sıd:\"1f\",sıl:\"1f\",sım:\"1f\",sınd:\"1f\",sını:\"1f\",sır:\"1f\",sıt:\"1f\",sızc:\"1f\",sł:\"1a\",sň:\"u\",sō:\"t\",sœ:\"l\",sťa:\"y\",sťo:\"y\",sūm:\"t\",sūn:\"1b\",sūr:\"1b\",sūs:\"1b\",sūt:\"1d\",sε:3,\"t'ai\":\"l\",\"t'an\":\"q\",\"t'd\":\"m\",\"t'en\":\"l\",\"t'h\":\"l\",\"t'or\":\"q\",\"t'r\":\"m\",\"t'v\":\"m\",\"t'y\":\"l\",\"t'è\":\"q\",\"t'é\":\"l\",\"t-an \":3,\"t-as\":3,\"t-d \":3,\"t-d-\":3,\"t-i \":3,\"t-id\":3,\"t-iw\":3,\"t-o \":15,\"t-on \":\"l\",\"t-x\":3,\"ta-f\":\"p\",\"ta-m\":\"p\",\"taa \":11,taart:\"r\",tabh:\"s\",tabt:\"z\",\"taby \":\"1n\",tació:\"o\",tacka:10,tadab:3,tadd:3,tadie:\"1b\",\"tadt \":\"n\",\"tady \":\"u\",tadı:\"1f\",taed:\"t\",tafat:3,tafu:3,\"taga-\":\"d\",tagh:\"1q\",tagit:10,tagyn:\"1n\",\"tah'\":\"1q\",tahab:\"1c\",tahad:\"1c\",tahak:\"1c\",tahuk:\"b\",tahun:\"b\",taien:\"l\",taigh:\"s\",taisy:\"1b\",taith:\"s\",tajte:\"y\",tajú:\"y\",takai:11,takam:3,takh:\"u\",takia:11,takie:\"1a\",takme:\"y\",takot:\"d\",takov:\"u\",\"taky \":\"u\",taká:\"y\",taký:\"y\",\"talk \":\"m\",talki:\"m\",talop:\"1p\",talı:\"1f\",\"tam'\":\"1q\",tamam:\"1f\",tambi:\"o\",tamez:3,tamur:3,tamva:\"1q\",tannl:12,tanno:\"q\",tanpa:\"b\",tanud:\"1c\",tanul:14,tanut:11,tanár:14,tanít:14,\"tao'\":\"d\",\"taon \":\"d\",tapaa:11,tapah:11,tapd:\"1n\",tapha:\"1n\",\"tapi \":\"b\",tapma:\"1n\",tapü:\"1p\",taqe:3,tarap:\"1n\",tarim:\"1b\",tarko:11,\"tarp \":\"1b\",tarpe:11,tarsz:\"1a\",tartı:\"1f\",tarı:\"1f\",tasid:\"1c\",tasiu:\"b\",tasj:12,taske:\"z\",tasko:\"1o\",tasna:3,tasp:3,tası:\"1f\",\"tat-\":15,tatay:\"d\",tatea:15,tatlo:\"d\",tatok:14,taub:\"n\",tauh:\"d\",tavad:\"1c\",tavio:\"v\",tavn:\"v\",tavoj:\"1d\",tavsi:\"1f\",tawag:\"d\",taww:3,\"tayo \":\"d\",tayon:\"d\",tayr:3,taí:\"s\",taï:\"l\",tañ:\"o\",taú:\"o\",tačn:\"v\",taşı:\"1f\",tať:\"y\",tbh:3,tbij:\"r\",tby:10,tcad:\"r\",tcev:15,tched:\"m\",tchin:\"m\",tcl:\"m\",tcr:\"m\",tcy:\"m\",tcá:14,\"td \":\"m\",tdh:3,tdy:\"1n\",tdz:3,teadn:\"1c\",teal:\"m\",teang:\"s\",teapt:15,teaz:15,\"teba \":\"y\",tebd:3,tebol:\"p\",tecen:\"p\",\"teco \":\"1o\",tecum:\"t\",tedda:3,teddu:3,tedim:\"1f\",teeb:\"1c\",teeds:\"r\",teej:\"1o\",teeks:11,teell:11,teerd:\"r\",\"teet \":11,teff:3,tefti:3,tefu:\"m\",tegas:\"1o\",\"tegn \":\"z\",\"teha \":\"1c\",\"tehe \":\"n\",tehet:14,teica:\"1d\",\"teie \":\"1c\",teiku:\"1d\",teiro:\"p\",teisu:\"1b\",teita:11,tejné:\"u\",tejto:\"y\",tekee:11,tekem:11,tekka:3,tekur:13,telah:\"b\",telee:11,telja:\"v\",tellt:\"n\",telon:\"1o\",temag:\"1c\",temed:\"1f\",temiz:\"1f\",temsu:3,tenca:\"1o\",tenfo:12,\"teng \":\"d\",tenid:\"o\",tenii:15,tenir:\"l\",tenkt:12,\"teno \":\"1o\",tensm:\"z\",tenç:\"p\",teod:15,teoir:\"s\",tepat:\"b\",\"tept \":15,tepta:15,tepu:\"b\",terji:\"1n\",terq:\"t\",terur:\"1o\",terå:\"z\",terç:\"p\",terý:\"u\",tesna:3,tessn:3,tesso:\"q\",tesw:3,\"tesz \":14,tetap:\"b\",tetle:14,tettb:3,tettg:3,tettn:3,tettr:3,tetté:14,\"teu \":\"p\",teue:\"n\",teuf:\"n\",teum:\"t\",\"tez-\":\"l\",tezm:3,teä:11,teñ:\"o\",teú:\"p\",teć:\"v\",teď:\"u\",teş:\"1f\",teško:\"v\",tež:\"v\",tfæ:\"z\",tfö:10,tgj:\"z\",tgl:\"n\",tgä:10,tgå:10,tgö:10,\"th-\":\"m\",thair:\"s\",thang:\"a\",thank:\"m\",thao:\"a\",\"thar \":\"s\",tharl:\"s\",\"thas \":\"s\",\"that'\":\"m\",thavn:\"z\",thay:\"a\",thb:\"m\",thc:\"m\",thda:\"m\",thean:\"s\",thec:\"t\",their:\"m\",there:\"m\",thers:\"m\",\"they \":\"m\",thfi:\"s\",thh:\"m\",thic:\"m\",thing:\"m\",think:\"m\",thirt:\"m\",\"this \":\"m\",thne:\"s\",thoi:\"s\",thomá:\"s\",those:\"m\",thout:\"m\",thp:\"m\",thq:\"m\",thre:\"m\",tht:\"m\",\"thua \":\"a\",thuis:\"r\",thuy:\"a\",thva:13,thve:\"z\",thw:\"m\",thác:\"a\",\"thái \":\"a\",thán:\"a\",thâ:\"a\",thæ:\"t\",\"thé \":\"l\",thê:\"a\",thíc:\"a\",thó:\"a\",thô:\"a\",thă:\"a\",thō:\"t\",\"ti' \":\"1q\",tiaj:\"1o\",tiamo:\"q\",tiap:\"b\",tiav:\"t\",\"tiba \":\"b\",\"tibi \":\"t\",tibus:\"t\",\"ticu \":\"y\",tidan:\"1p\",tidet:3,tidn:10,tidsp:\"z\",tidur:\"b\",tieda:\"1p\",\"tiem \":\"1d\",tiemp:\"o\",tierr:\"o\",tiert:\"n\",tiesa:\"1b\",tiev:\"r\",tiez:\"l\",tieš:\"1d\",tiež:\"y\",tiful:\"m\",tigis:\"1o\",tigk:\"n\",tigué:\"l\",tiht:\"1c\",tijd:\"r\",tijn:\"r\",tikim:\"1b\",\"tikk \":12,tikri:\"1b\",tikv:\"1o\",tilfe:12,tillb:10,tillf:10,tilon:\"1o\",tilv:13,timmt:\"n\",\"timp \":15,timpu:15,timsu:3,tindo:\"p\",tingn:\"d\",\"tinh \":\"a\",tinha:\"p\",tinj:\"v\",\"tinn \":13,tinni:13,tinā:\"1d\",\"tiom \":\"1o\",tior:\"t\",tiou:\"m\",\"tiq \":\"1q\",tired:\"m\",tiró:\"o\",tiskt:10,tisq:\"t\",tisto:\"1o\",tisz:14,titaj:\"1o\",titia:\"t\",tiuj:\"1o\",\"tiun \":\"1o\",\"tius \":\"t\",tix:3,tiä:11,tiæ:\"t\",tiç:\"p\",tiè:\"l\",\"tié \":\"l\",tiê:\"a\",tië:\"r\",tiñ:\"o\",\"tió \":\"o\",tión:\"o\",tiö:11,tiú:\"s\",tiā:\"t\",tić:\"v\",tičn:\"v\",tiň:\"1n\",tiş:\"1f\",tiša:\"v\",tiška:\"1b\",tjak:\"1n\",tjal:\"z\",tjar:\"1o\",tjegi:\"1n\",\"tjek \":\"1n\",tjekk:\"z\",tjent:\"z\",tjes:\"r\",tjie:1,tjo:10,tjue:12,tjug:10,tjuv:10,tjän:10,tjär:10,tjæ:\"z\",tjó:13,tjör:13,tkah:\"b\",tkais:11,tkani:\"1a\",tkez:14,tkic:\"1a\",\"tkie \":\"1a\",tkow:\"1a\",tkust:11,tkv:\"1o\",\"tkä \":11,tkých:\"y\",tkým:\"y\",tką:\"1a\",tkę:\"1a\",tlary:\"1n\",tları:\"1f\",tlaus:13,tlayt:3,\"tleb \":\"1c\",tlh:\"1q\",tlj:\"v\",tlog:\"d\",tlong:\"d\",tlt:3,tlyk:\"1n\",tlâ:\"p\",tlå:10,tlø:\"z\",tmady:\"1n\",tmagy:\"1n\",tmaha:3,tmaly:\"1n\",tmara:3,tmay:\"1f\",tmazi:3,tmej:\"1n\",tmiy:\"1f\",tmm:3,\"tmu \":\"b\",tmur:3,tmän:\"1n\",tmı:\"1f\",\"tn'\":\"m\",tnj:\"v\",tnú:\"y\",tnā:\"1d\",tną:\"1a\",\"to)\":\"1o\",toar:15,toate:15,\"tob \":\"1p\",tobom:\"v\",tobs:\"1p\",tobuz:15,tocc:\"q\",\"toch \":\"r\",today:\"m\",todel:11,toeg:\"r\",toek:\"r\",toel:\"r\",toet:\"r\",toev:\"r\",\"toga \":\"v\",togal:\"q\",togat:14,togh:\"q\",togl:\"q\",\"tohi \":\"1c\",tohot:\"u\",toimi:11,toist:11,toiv:11,tojas:\"1b\",toju:\"1b\",\"toks \":\"1b\",tolič:\"y\",tomai:\"1b\",tomda:\"1n\",tomig:\"1c\",tomit:14,tomna:14,tomor:\"m\",tomot:14,tomus:\"1n\",tomuu:11,\"tomó \":\"o\",tom不:6,tom和:6,tom在:6,tom的:6,tonce:\"o\",tonig:\"m\",took:\"m\",tooma:\"1c\",toor:\"r\",\"topt \":\"r\",topá:\"y\",torac:\"1o\",torej:\"y\",torul:15,\"torá \":\"y\",toré:\"y\",\"torí \":\"y\",torú:\"y\",tosan:14,tossa:11,totoo:\"d\",\"tott \":14,totul:15,toug:\"m\",touj:\"l\",toupi:\"u\",toute:\"l\",towan:\"1a\",towy:\"1a\",toá:\"a\",toñ:\"o\",točn:\"y\",\"tq \":\"m\",tqe:3,tqo:\"1q\",\"tr-\":15,traat:\"r\",tramb:\"q\",tranj:\"o\",trasz:\"1a\",tratt:\"q\",travl:\"z\",trañ:\"o\",traž:\"v\",\"treb \":15,trecu:15,trela:\"p\",tretn:\"y\",trevl:10,trezi:15,treš:\"v\",trg:\"v\",trh:\"u\",trids:\"y\",triva:15,troed:\"z\",trois:\"l\",trokk:\"r\",\"trop \":\"l\",tropp:\"q\",trouv:\"l\",troux:\"p\",trpez:\"y\",\"true \":\"m\",trupu:\"1b\",trw:\"1a\",tryck:10,tryi:\"m\",\"tryk \":\"z\",trz:\"1a\",trách:\"a\",träde:10,träng:10,tråd:\"z\",tråk:10,træn:\"z\",trær:12,trée:\"l\",trì:\"a\",trön:13,tröt:10,trù:\"a\",trúa:13,trún:\"a\",trē:\"t\",trę:\"1a\",trīs:\"1d\",trū:\"1b\",tsaky:\"1b\",tsalt:\"1c\",tsarg:\"1b\",\"tsch \":\"n\",tsche:\"n\",tschl:\"n\",\"tsid \":\"1c\",tside:\"m\",tsio:\"1c\",tslan:\"r\",tslig:10,tsr:\"n\",tsty:12,tstā:\"1d\",tsyi:\"1p\",\"tsz \":14,tsá:14,tsæ:\"z\",tsé:14,tsı:\"1f\",\"tt-a\":3,\"tt-i\":3,\"tt-t\":3,ttaa:11,ttba:3,tthon:14,tthv:13,ttii:11,ttme:3,ttni:10,ttob:\"q\",ttomu:11,ttopp:12,ttost:\"q\",ttov:\"q\",ttq:3,ttrap:\"l\",ttryk:12,ttui:11,ttuu:11,ttwa:3,ttà:\"q\",ttá:14,\"ttä \":11,ttäi:11,ttäm:11,ttän:11,ttè:\"q\",tték:14,ttél:14,ttò:\"q\",ttó:14,ttöm:11,ttú:13,ttün:14,ttı:\"1f\",\"tu'l\":\"1q\",\"tu-s\":\"b\",tuall:\"m\",tuaz:\"q\",tubig:\"d\",tubl:\"r\",tubw:4,tuck:\"m\",tudar:\"p\",tudj:14,tudná:14,tudok:14,tudt:14,tuduj:\"u\",\"tudy \":\"m\",tufi:3,\"tugh \":\"1q\",tugt:\"d\",\"tugu \":13,\"tuh \":\"b\",tuhle:\"u\",tuia:15,tuješ:\"u\",tuji:\"u\",tujo:\"1o\",\"tuke \":\"1c\",tukm:\"b\",tukse:11,tulee:11,tulev:11,tulog:\"d\",tului:15,tulun:\"d\",tumaw:\"d\",tumbr:\"o\",tumq:\"t\",tunay:\"d\",tunci:15,tungk:\"d\",tunj:\"b\",\"tunk \":14,tunti:11,tunud:\"1c\",tunut:11,tunz:4,\"tuoi \":\"q\",tuoja:\"1b\",tuoll:11,tuoma:11,tuomo:11,\"tuor \":\"t\",tupak:11,turak:4,turch:\"q\",turiu:\"1b\",\"tuse \":\"1c\",tusq:\"t\",tutki:11,tutto:\"q\",\"tuu \":11,tuul:11,tuurd:\"r\",tuurl:\"r\",tuvie:\"o\",tuvol:\"1p\",tuvom:\"1p\",tuwa:\"d\",tux:\"m\",\"tuy \":\"a\",tué:\"l\",tuí:\"p\",tuā:\"1d\",\"tv-a\":\"z\",tvad:\"r\",tvai:\"1d\",tvaný:\"u\",tvari:\"v\",tvarn:\"v\",tvegg:13,tvei:13,tvik:12,\"tvil \":12,tvir:\"1b\",\"tvis \":10,tvl:\"r\",\"tvor \":\"y\",tvyk:\"1b\",tvár:\"y\",tvä:10,två:10,\"tvær \":13,\"tvé \":\"u\",tví:\"u\",tvö:13,tvý:\"u\",tvē:\"1d\",\"tw \":\"1a\",twaa:\"r\",twala:3,twali:3,twara:4,twarz:\"1a\",tweed:\"r\",tween:\"m\",twes:4,twh:\"m\",twie:\"1a\",twy:\"1a\",tx:3,\"ty-\":\"m\",\"tych \":\"1a\",tyf:\"r\",tyga:10,tygo:\"1a\",tyhl:\"u\",tyis:11,tyks:11,tylk:\"1a\",tynda:\"1n\",\"tyny \":\"1n\",tyrd:\"1n\",\"tyri \":\"y\",tyrt:\"z\",tyska:10,\"tyst \":10,tytj:1,\"tyto \":\"u\",tytt:11,\"tyv \":\"z\",tyve:\"z\",tyw:\"1a\",tyy:11,tyz:\"1a\",tyá:14,tyä:11,työn:11,työs:11,tyč:\"1b\",tyň:\"1n\",tzb:\"n\",tzc:\"n\",tzd:\"n\",tzg:\"n\",tzk:\"n\",tzl:\"n\",tzn:\"n\",tzp:\"n\",tzw:\"n\",tzü:\"n\",\"tà \":\"q\",\"tá-\":\"p\",\"tác \":\"a\",\"tái \":\"a\",táim:\"s\",táis:\"o\",táo:\"a\",tário:\"p\",társa:14,\"táva \":\"y\",távam:\"p\",táx:\"p\",táš:\"u\",tâi:15,tâl:15,tâmp:15,tânc:\"p\",tând:15,tâni:\"p\",târ:15,\"tât \":15,tây:\"a\",tã:\"p\",täb:\"n\",täc:10,täda:10,täe:11,täg:\"n\",\"täh \":\"1c\",tähe:\"1c\",täin:11,\"täk \":\"1n\",täkä:11,tämä:11,\"täna \":\"1c\",täng:10,täni:11,tänka:10,tänke:10,tänkt:10,tänn:11,tänä:11,täp:11,täsir:\"1n\",täst:11,täu:\"n\",tävi:11,täy:11,täz:\"1n\",tää:11,tåget:10,tån:10,tåre:\"z\",\"tæ \":\"t\",tæk:13,tæl:\"z\",tæn:\"z\",tæp:\"z\",tærk:\"z\",tæt:\"z\",tçi:\"1f\",tçy:\"1n\",tçı:\"1f\",\"tè \":\"q\",tèm:\"l\",tèr:\"l\",tée:\"l\",\"tého \":\"u\",\"ték \":14,\"tél \":14,téne:14,téo:\"l\",téres:\"l\",térie:\"l\",tése:14,\"tést \":14,\"tét \":14,tév:14,\"tê \":\"p\",\"tê-\":\"p\",têm:\"p\",\"tì \":\"q\",\"tía \":\"o\",tíb:\"o\",tích:\"a\",tíh:\"u\",tík:\"u\",tíma:13,\"tími \":13,tíz:14,tíš:\"u\",tíž:\"u\",tî:\"l\",\"tò \":\"q\",\"tóc \":\"a\",\"tól \":14,tóq:\"p\",\"tór \":13,tóre:\"1a\",\"tót \":14,tóz:14,tôl:\"y\",tôt:\"l\",tõen:\"1c\",\"tö \":11,töc:\"n\",töf:13,töj:11,töku:13,tölt:14,tölv:13,töte:\"n\",tötte:14,töw:\"1n\",töy:11,töz:14,\"töö \":\"1c\",tööt:\"1c\",tød:\"z\",tøm:\"z\",tøn:\"z\",\"tør \":\"z\",tøv:\"z\",\"túc \":\"a\",\"túi \":\"a\",túir:\"s\",\"túl \":14,\"túr \":13,tút:\"y\",\"tü \":\"1f\",tühi:\"1c\",\"tün \":\"1f\",tünk:14,tüp:\"1f\",türg:\"1c\",týa:\"1n\",týd:\"u\",týn:13,týž:\"y\",tāb:\"t\",tād:\"1d\",tāl:\"1d\",tām:\"1d\",tār:\"t\",\"tă \":15,tăm:15,tăn:\"a\",tči:3,tēm:\"1d\",tēr:\"1d\",tēs:\"t\",tēv:\"1d\",\"tī \":\"t\",tīb:\"1d\",tīg:\"1d\",tīn:\"t\",tīs:\"1d\",tīti:\"1d\",tīv:\"1d\",tıd:\"1f\",tıla:\"1f\",\"tım \":\"1f\",\"tın \":\"1f\",tınd:\"1f\",tını:\"1f\",\"tır \":\"1f\",tırl:\"1f\",tırm:\"1f\",tıs:\"1f\",tıyo:\"1f\",tığı:\"1f\",tış:\"1f\",tł:\"1a\",tōs:\"t\",tōt:\"t\",tša:\"1b\",tši:\"u\",tší:\"u\",\"tū \":\"t\",tūk:\"1b\",tūs:\"1b\",tūž:\"1b\",tž:\"1b\",tε:3,\"t‘\":\"n\",\"u''\":\"1q\",\"u'a\":\"l\",\"u'b\":\"1q\",\"u'c\":\"1q\",\"u'di\":\"1q\",\"u'es\":\"l\",\"u'g\":\"1q\",\"u'il\":\"l\",\"u'j\":\"1q\",\"u'la\":\"1q\",\"u'li\":\"1q\",\"u'lu\":\"1q\",\"u'm\":\"1q\",\"u'on\":\"l\",\"u'p\":\"1q\",\"u're\":\"m\",\"u't\":\"1q\",\"u'u\":\"l\",\"u'w\":\"1q\",\"u'é\":\"l\",\"u- \":\"1o\",\"u-bu\":\"b\",\"u-f\":\"l\",\"u-i \":15,\"u-j\":\"1o\",\"u-ku\":\"b\",\"u-me\":\"p\",\"u-o\":\"p\",\"u-p\":\"l\",\"u-sa\":\"b\",\"ua-\":\"p\",uaa:11,uach:\"s\",uació:\"o\",uae:\"t\",uafo:\"1o\",uagg:\"q\",uagi:\"t\",uaia:\"q\",uaig:\"s\",uaim:\"s\",\"uaj \":\"1o\",uaje:\"o\",uajn:\"1o\",\"uak \":\"b\",uaku:\"b\",ualc:\"q\",ually:\"m\",ualu:\"q\",uamd:\"t\",uami:\"b\",uamq:\"t\",\"uand \":\"l\",uanga:\"b\",uanh:\"a\",uann:\"b\",uany:\"b\",uap:\"o\",uaq:\"t\",uarg:\"b\",uaru:\"t\",uasa:\"b\",uase:\"p\",uasj:12,uath:\"s\",uatko:11,uatm:\"b\",uatn:\"b\",uatre:\"l\",uattu:\"t\",\"uatu \":\"b\",uazi:\"q\",uaç:\"p\",\"ubah \":\"b\",ubahi:4,ubaza:4,ubibo:4,ubicu:\"t\",ubij:\"v\",ubiko:4,ubime:4,ubion:\"1a\",ubisz:\"1a\",ubiv:4,ublí:\"u\",uboj:\"1o\",ubona:4,ubou:\"p\",ubsk:\"1o\",ubuje:\"y\",ubuka:\"d\",ubuz:4,ubíl:13,ubò:\"q\",ubą:\"1b\",\"uc-\":3,ucap:\"b\",ucaz:\"q\",ucb:3,ucced:\"q\",uccid:\"q\",uccis:\"q\",\"ucem \":\"t\",ucf:3,uchos:\"o\",uchí:\"o\",\"ucir \":\"o\",ució:\"o\",ucj:\"1a\",uckt:\"n\",ucky:\"m\",ucni:15,ucoup:\"l\",ucrai:\"q\",ucrez:15,\"ucru \":15,ucrur:15,uctus:\"t\",ucune:\"l\",\"ucur \":15,ucv:\"1o\",ucz:\"1a\",ucó:\"o\",ucā:\"t\",ucă:15,udae:\"t\",\"udah \":\"b\",udbr:\"z\",udenf:\"z\",\"udeo \":\"t\",udga:\"z\",udii:\"t\",udij:\"1b\",udiko:\"1p\",udiku:\"1p\",\"udil \":\"u\",udivi:\"t\",udja:14,\"udla \":\"y\",udobn:\"y\",udod:14,\"udol \":\"y\",udouc:\"u\",udp:\"1o\",udq:\"1q\",udrai:\"l\",udsel:\"z\",udsi:\"z\",udsta:10,udsz:14,udtr:\"z\",uduga:4,udvi:\"z\",udyi:\"m\",udyo:\"d\",udyt:\"1b\",\"udz \":\"1d\",\"udzi \":\"1a\",udzie:\"1a\",udáv:\"p\",udö:\"1p\",udø:\"z\",udú:\"y\",udý:\"u\",udā:\"1d\",udē:\"1d\",udę:\"1b\",udī:\"t\",udži:\"1b\",ueblo:\"o\",\"ueci \":\"p\",\"ued \":\"m\",uedan:\"o\",uedar:\"o\",uede:\"o\",uedé:\"o\",uedó:\"o\",uegl:\"q\",ueij:\"p\",ueim:\"p\",ueir:\"p\",\"uell'\":\"q\",uelq:\"l\",uelta:\"o\",uelto:\"o\",uelv:\"o\",uentr:\"o\",ueq:\"o\",\"ueri \":\"t\",ueria:\"p\",ueris:\"t\",uerpo:\"o\",uerta:\"o\",uerzo:\"o\",ueré:\"o\",\"uest'\":\"q\",uetu:\"t\",ueur:\"l\",ueva:\"o\",ueve:\"o\",uevo:\"o\",uey:\"o\",ueç:\"p\",ueñ:\"o\",\"ufa-\":3,\"ufan \":3,ufash:4,ufb:\"n\",ufga:\"n\",ufh:\"n\",ufig:\"n\",ufis:4,ufn:\"n\",ufob:\"1p\",ufoj:\"1o\",ufom:\"1p\",ufp:\"n\",ufst:\"n\",ufter:\"z\",ufth:\"z\",ufus:3,ufw:\"n\",ufz:\"n\",ufä:\"n\",ufön:\"1p\",ufü:\"n\",ugall:\"1n\",ugana:4,ugave:13,ugeh:\"n\",ugev:\"1c\",uggan:13,uggl:\"m\",ughos:\"1q\",ught:\"m\",ugler:12,ugoro:4,\"ugsa \":13,ugsat:\"1n\",ugstp:\"1d\",uguru:4,uguê:\"p\",ugw:4,ugya:14,ugyn:\"1n\",ugze:\"n\",ugé:\"l\",ugí:\"o\",ugü:\"1f\",ugă:15,uhag:4,uhai:\"l\",uhay:\"d\",uheli:11,uhez:4,\"uhi \":\"b\",uhig:\"n\",uhim:4,\"uhin \":\"d\",uhir:4,uhj:11,\"uhle \":\"u\",uhny:\"b\",uhok:\"d\",uhom:4,\"uhr \":\"n\",uhtem:\"1f\",uhtu:\"1c\",uhua:11,uhui:11,uhuko:4,uhung:4,uhur:4,uhut:11,uhuu:11,uhw:\"1q\",uhy:\"u\",uhé:\"u\",uhö:\"n\",uhø:\"z\",uhý:\"u\",uibu:\"t\",\"uic \":\"t\",uicu:\"t\",uidn:\"t\",uidq:\"t\",uiero:\"o\",\"uig \":\"r\",uiga:\"1o\",uigd:\"r\",uigea:\"s\",uigim:\"s\",uih:11,uii:\"q\",uike:\"r\",uiki:\"1b\",uikt:\"r\",uildi:\"m\",uilen:\"r\",uimu:\"t\",uindi:\"q\",uink:11,uinqu:\"t\",uiny:\"b\",uipo:\"o\",\"uis-\":\"l\",uisd:\"r\",uisw:\"r\",uitc:\"m\",uitst:\"r\",uitur:\"t\",uitv:\"r\",\"uiu \":\"p\",uius:\"t\",uivat:11,uize:\"r\",uizá:\"o\",uiá:\"o\",uiç:\"p\",uiè:\"l\",uién:\"o\",uiñ:\"o\",uió:\"o\",ujba:15,ujere:\"o\",ujesz:\"1a\",ujl:\"1q\",\"ujn \":\"1o\",ujon:\"1o\",ujour:\"l\",ujq:\"1q\",ujua:\"b\",ujud:\"1c\",ujuh:\"b\",ujuk:\"b\",ujur:\"b\",ujv:\"1q\",ujw:\"1q\",ujé:\"o\",\"ují \":\"u\",ujím:\"y\",ujó:\"o\",ujú:\"y\",uję:\"1a\",ukade:10,ukana:11,ukbo:\"d\",ukdom:10,\"ukha \":\"d\",ukhan:\"d\",ukhu:10,ukia:\"1b\",ukira:4,ukked:\"z\",ukkum:11,uklar:\"1f\",uklid:\"u\",ukny:\"b\",ukora:4,ukp:\"1o\",uksen:11,ukser:\"z\",ukset:11,uksia:11,uktig:10,ukubo:4,ukuh:\"d\",\"ukul \":\"b\",ukund:4,\"ukup \":\"b\",ukuri:4,ukusn:\"v\",ukwi:4,ukç:\"1f\",ukü:\"n\",ukš:\"1b\",ukū:\"1b\",\"ul-i\":3,\"ulac \":3,\"ulad \":\"d\",ulae:\"t\",ulagy:\"1n\",\"ulah \":\"b\",ulait:\"l\",ulany:\"1n\",uları:\"1f\",\"ulay \":\"d\",\"ulay-\":\"d\",ulaç:\"p\",ulaş:\"1f\",ulche:\"t\",\"uld'\":\"m\",uldad:\"p\",uldt:\"z\",\"uldu \":\"1f\",\"uleb \":\"1c\",\"ulee \":11,ulegt:13,uleik:13,uleme:\"l\",uleur:\"l\",ulez:\"l\",ulher:\"p\",\"ulho \":\"p\",ulici:\"u\",\"ulig \":12,uligt:\"z\",ulike:12,ulks:\"1d\",ullut:11,ully:\"m\",ulni:14,\"ulog \":\"d\",\"uloj \":\"1o\",ulong:\"d\",uloy:\"d\",ulpl:\"1n\",\"ult-\":3,ultae:\"t\",ultaj:\"1o\",ulton:\"1o\",ulug:\"d\",uluto:\"d\",uluu:11,ulâ:\"p\",ulò:\"q\",ulā:\"t\",ulą:\"1b\",ulē:\"1d\",ulı:\"1k\",umaga:\"d\",\"umah \":\"b\",umahk:\"b\",\"umai \":15,umaso:\"d\",\"umda \":\"1f\",umele:15,umeny:4,umj:\"1o\",umnez:15,umoa:15,\"umul \":15,umuns:4,umup:\"d\",umury:4,umuv:4,umva:4,umvir:4,\"umwe \":4,umyt:\"1n\",\"umál \":13,umér:\"l\",umò:\"q\",umö:10,umø:\"z\",umý:\"u\",umā:\"1d\",umą:\"1b\",\"un'i\":\"q\",\"un'o\":\"q\",unae:\"t\",unagi:\"1c\",\"unaj \":\"1o\",unaka:\"b\",\"unam \":\"t\",\"unc \":\"t\",uncl:\"m\",uncta:\"t\",undoj:\"1o\",\"une-\":15,\"unea \":15,unee:11,unele:15,uneo:15,uneze:4,unggu:\"b\",ungki:\"b\",ungko:\"d\",ungt:\"1b\",unguj:\"u\",ungum:13,ungw:\"1q\",unib:\"d\",\"unik \":\"1p\",unile:15,uninn:13,unito:\"q\",unjuk:\"b\",unjun:\"b\",unká:14,\"unla \":\"1f\",unlar:\"1f\",unmat:13,\"unn \":12,unnar:13,unng:12,unnl:12,unns:12,unnud:13,unoa:15,\"unob \":\"1p\",unog:\"d\",unoh:11,unol:\"1p\",unong:\"d\",unsj:12,unstn:\"z\",untn:\"t\",untuk:\"b\",\"untó \":\"o\",unua:\"1o\",\"unud \":\"1c\",unue:\"1o\",\"unui \":15,\"unul \":15,unulo:\"1o\",\"unun \":\"1f\",unust:\"1c\",unutm:\"1f\",\"unuz \":\"1f\",\"uny \":\"1n\",unye:4,unywa:4,\"unze \":4,unä:\"n\",unó:\"o\",unö:\"1p\",unü:\"n\",unā:\"1d\",ună:15,uną:\"1a\",unč:\"1b\",\"uo-\":\"1o\",uoa:11,uobl:\"1o\",uobu:\"t\",uoce:\"q\",uoco:\"q\",uocu:\"t\",uoden:11,uogo:\"q\",uoh:11,uoio:\"q\",uoji:\"1b\",uojn:\"1o\",uoju:\"1b\",\"uok \":\"1b\",uokse:11,\"uol \":\"q\",uolem:11,uoles:11,uolla:11,uonee:11,\"uong \":\"d\",uonn:11,uopšt:\"v\",uoq:\"t\",uorum:\"t\",\"uose \":\"1b\",uotar:\"q\",uotr:\"1b\",uott:11,uotuv:\"1b\",\"uou \":\"p\",uow:\"1a\",uoz:\"1o\",uoš:\"1b\",uož:\"1b\",upato:\"q\",upaz:\"q\",upaç:\"p\",upf:\"n\",upg:\"m\",upirk:\"1b\",upić:\"1a\",upj:\"1b\",upm:\"1q\",upny:\"b\",upoj:\"1o\",uppfa:10,uppgi:10,uppta:10,uppu:\"1q\",uppá:13,upren:\"1o\",upse:\"m\",upst:\"m\",upua:\"d\",upue:\"o\",upung:11,upunt:\"d\",upwi:\"1q\",upä:11,upó:\"o\",upý:\"u\",\"uq-\":3,uqda:\"1q\",uqh:\"1q\",uqm:\"1q\",uqn:\"1q\",uqo:\"1q\",uqr:3,uqta:\"1q\",uqw:\"1q\",uraa:11,urae:\"t\",urafi:4,urait:\"l\",\"uraj \":\"1o\",urako:4,urash:4,uraya:\"1f\",urbem:\"t\",\"urd'\":\"l\",urdur:\"1f\",urep:\"1c\",ureus:\"l\",urgt:\"z\",urib:\"t\",urigi:\"1o\",urile:15,urime:\"1b\",urind:4,urinn:13,\"urir \":\"l\",urira:4,\"uriu \":\"1b\",urió:\"o\",urią:\"1b\",\"urm \":\"n\",urmag:\"1n\",urnar:13,urned:\"m\",urnud:\"1c\",urny:\"b\",urné:\"l\",urob:\"y\",urond:4,uronk:4,urrai:\"l\",urrid:\"o\",ursel:\"m\",ursä:10,urth:\"m\",urtig:\"z\",\"urtu \":13,uruge:4,uruhu:4,uruka:4,urung:\"b\",urvis:\"1d\",uryan:4,urye:\"d\",\"uryo \":4,urâ:15,uræ:\"t\",urò:\"q\",urü:\"n\",ură:15,urē:\"1d\",urı:\"1k\",urš:\"1d\",urū:\"1b\",usae:\"t\",usaka:3,usap:\"d\",usaq:\"1q\",usavy:4,usaw:3,usaz:4,\"usc \":15,usdr:\"n\",useba:\"z\",useg:3,usene:12,usens:3,\"usha \":4,ushak:4,\"ushe \":4,ushik:4,usiai:\"1b\",\"usic \":\"m\",usimy:\"1a\",usind:\"z\",usipi:\"1b\",usiqu:\"l\",usisz:\"1a\",\"usit-\":3,usiu:\"1b\",usió:\"o\",usiš:\"1b\",usjon:12,uskie:\"1a\",uskor:\"v\",uskyl:\"z\",uslik:\"1c\",\"usly \":\"m\",usnul:\"u\",usog:\"d\",usoj:\"1o\",usona:\"1o\",usono:\"1o\",usou:\"p\",\"usst \":\"n\",usste:\"n\",\"ust'\":\"m\",ustru:\"z\",ustv:\"v\",usubi:4,usuh:\"b\",usumb:4,usuno:\"d\",usunu:\"1f\",usuo:\"d\",usyo:\"d\",uszc:\"1a\",uszt:14,\"us \":\"l\",usã:\"p\",usä:\"n\",usê:\"p\",\"usó \":\"o\",usă:15,usą:\"1b\",usē:\"1d\",usę:\"1b\",usī:\"1d\",usť:\"u\",\"ut-n\":3,\"utab \":\"1c\",utade:10,utae:\"t\",utaha:4,utdan:12,\"utea \":15,utebo:\"p\",uteka:4,utenf:12,uteč:\"u\",utho:\"m\",utiek:\"y\",utifu:\"m\",utime:\"1o\",utje:\"r\",utlu:\"1f\",utmey:\"1q\",utoa:11,utoci:\"t\",\"utoj \":\"1o\",utoml:10,utoru:15,utott:14,utres:\"l\",utrum:\"t\",utsch:\"n\",\"utse \":4,utsel:12,utsid:\"m\",uttal:10,\"utto \":\"q\",uttos:\"q\",uttug:13,utug:\"d\",utuh:\"b\",\"utui \":11,utuw:\"d\",utvi:12,utze:\"n\",utzt:\"n\",utän:\"1p\",utå:\"z\",utê:\"p\",utì:\"q\",utò:\"q\",utö:10,utú:13,ută:15,utō:\"t\",\"uua \":\"1c\",uub:\"d\",\"uud \":\"1c\",uude:11,uue:\"1c\",uug:\"r\",\"uul \":\"1c\",uull:11,uuls:\"1c\",uunn:11,\"uusi \":11,uuss:11,uuta:11,uute:11,uuti:11,uutt:11,uuv:11,uuw:\"d\",\"uv'\":\"1q\",\"uvad \":\"1c\",\"uvan \":11,\"uvau \":\"1b\",uvb:\"1q\",uvc:\"1q\",uvea:\"l\",uvek:\"v\",uvell:\"l\",uvez:\"l\",uvg:\"1o\",uvh:\"1q\",uvido:\"p\",uvier:\"o\",\"uvil \":\"u\",\"uvir \":\"p\",\"uviu \":\"p\",uvl:\"1q\",uvob:\"1p\",uvoir:\"l\",\"uvom \":\"1p\",uvons:\"l\",uvp:\"1q\",uvri:\"l\",uvs:\"1o\",uvud:10,uvye:4,uvyi:4,uvân:15,uvæ:\"z\",uvé:\"l\",uví:\"u\",uvö:\"1p\",uvā:\"t\",uvč:\"u\",\"uw-\":\"r\",uwad:\"d\",\"uwag \":\"d\",uwah:\"d\",\"uwan \":\"d\",uwb:\"r\",\"uwd \":\"r\",uwde:\"r\",uweb:\"d\",uwede:\"d\",\"uwen \":\"r\",uwent:\"d\",uwg:\"r\",uwie:\"1a\",uwj:\"r\",uwk:\"r\",uwm:\"r\",\"uwo \":4,uwp:\"r\",\"uws \":\"r\",\"uwt \":\"r\",uwu:4,uwv:\"r\",uww:\"r\",\"uwy \":\"1n\",\"ux-t\":\"l\",uxit:\"t\",uxor:\"t\",uxq:\"l\",uxta:\"t\",uxx:3,uxí:\"p\",uxō:\"t\",\"uy-\":3,uydu:\"1f\",uyk:\"1f\",uym:\"1f\",uyn:3,uyor:\"1f\",uyr:\"1f\",\"uys \":\"m\",uyt:3,uyum:\"1f\",uyuy:\"1f\",uyé:\"l\",uyó:\"o\",uzec:15,uzes:\"p\",uzet:\"v\",uzic:15,uzid:\"p\",uziek:\"r\",uzii:\"1o\",uzir:\"p\",\"uzis \":\"1o\",\"uzit \":15,uziu:\"p\",uziv:\"1o\",uzj:\"1a\",uzob:4,uzog:4,uzoj:\"1o\",uzon:\"1o\",uzp:\"1o\",uzsky:\"u\",uzti:\"1d\",\"uzul \":15,uzv:\"1d\",uzyk:\"1a\",uzó:\"o\",uzš:\"u\",uà:\"a\",\"uá \":\"a\",uái:\"a\",\"uál \":\"o\",uále:\"o\",uánd:\"o\",uánt:\"o\",uári:\"p\",\"uân \":\"a\",uã:\"p\",uä:\"n\",uæ:\"t\",\"uç \":\"1f\",uçk:\"1n\",uçl:\"1f\",uço:\"p\",uè:\"l\",uéc:\"p\",uée:\"l\",uél:\"o\",\"uém \":\"p\",uév:\"o\",uë:\"l\",uì:\"q\",uíc:\"p\",uíe:\"o\",uír:\"p\",uít:\"o\",uív:\"p\",uíz:\"p\",uî:\"l\",uïe:\"l\",uïn:\"r\",\"uñ \":\"1n\",uña:\"o\",uñe:\"o\",uño:\"o\",uò:\"q\",uó:\"o\",uô:\"a\",\"uý \":\"a\",uýd:\"1n\",uýt:\"a\",\"uā \":\"t\",uāl:\"t\",uās:\"t\",uă:15,\"uć \":\"1a\",učaj:\"v\",\"uče \":\"v\",učia:\"1b\",učim:\"v\",\"učit \":\"u\",učk:\"v\",učt:\"1b\",uđ:\"v\",uē:\"t\",uī:\"t\",uı:\"1k\",uł:\"1a\",uń:\"1a\",\"uň \":\"1n\",uō:\"t\",uşe:\"1n\",uşl:\"1f\",uşm:\"1f\",uşo:15,uşt:\"1f\",uşuş:\"1n\",uşy:\"1n\",ušie:\"y\",ušil:\"u\",ušin:\"1b\",uškar:\"v\",\"ušku \":\"u\",ušte:\"v\",užd:\"1b\",užim:\"1b\",užin:\"1b\",užl:\"1b\",užn:\"v\",užp:\"1b\",užr:\"1b\",užt:\"1b\",ú:\"a\",ũ:\"a\",uγ:3,uε:3,\"v' \":\"1o\",\"v'a\":\"1q\",\"v's\":\"m\",\"v'è\":\"q\",\"v-g\":\"1o\",\"v-j\":\"1o\",\"v-k\":\"r\",\"v-z\":\"1o\",\"va-s\":\"p\",\"vaa \":11,\"vaak \":\"r\",vaan:11,vaara:11,vaard:\"r\",vaata:\"1c\",\"vab \":\"1c\",vabad:\"1c\",vabä:\"1p\",\"vac \":\"v\",vacac:\"o\",vacet:\"u\",vacke:10,vacso:14,vads:\"y\",vagg:\"q\",\"vagh \":\"1q\",vagt:\"z\",\"vagy \":14,vahe:\"1c\",vaie:\"l\",vaih:11,vaika:\"1b\",vaikk:11,vaimo:11,vainc:\"l\",vairs:\"1d\",vairu:\"1b\",vaizd:\"1b\",vajad:\"1d\",vajag:\"1d\",vajn:\"1o\",vajte:\"y\",\"vaju \":\"v\",vají:\"u\",vajú:\"y\",\"vaki \":\"v\",\"vako \":\"v\",vakre:12,valah:14,valak:14,valgi:\"1b\",valko:11,valod:\"1d\",valta:11,való:14,\"vam'\":\"1q\",vamik:\"1p\",vanav:\"r\",\"vand \":\"z\",vandt:\"z\",vanem:\"1c\",vanha:11,vanj:\"v\",vansa:11,vanur:13,vanw:\"r\",\"vap \":\"1f\",vapaa:11,varad:10,varbu:\"1b\",vared:\"z\",varje:10,\"varu \":\"1d\",varī:\"1d\",\"vas-\":\"l\",vasp:\"1d\",vater:\"n\",vatni:13,vatno:\"v\",\"vaut \":\"l\",vave:\"p\",vaxe:\"1p\",vaxi:13,\"vay'\":\"1q\",vaç:\"p\",vaí:\"p\",vać:\"v\",vaş:\"1f\",vašu:\"y\",vať:\"y\",važi:\"1b\",važn:\"v\",\"vbe'\":\"1q\",vbor:10,vca:\"v\",vcr:\"m\",vdo:\"u\",vdy:\"u\",vdá:\"u\",veaz:15,vebl:\"1o\",vecc:\"q\",veces:\"o\",vechi:15,veck:10,veco:\"1o\",vedav:\"y\",vedea:15,vedie:\"y\",vedk:\"z\",vedle:\"u\",vedom:\"y\",\"vedz \":\"y\",vedzt:\"y\",vedö:\"1p\",vedč:\"y\",\"veer \":\"r\",vegia:\"q\",vegl:\"q\",vegna:13,vegy:14,veie:12,veika:\"1b\",veiku:13,veint:\"o\",veio:\"p\",veiti:13,vejen:\"z\",vejer:\"z\",vejr:\"z\",vejte:\"u\",\"vekk \":12,velge:12,velha:\"p\",velho:\"p\",velic:\"u\",velká:\"u\",velme:\"p\",velmi:\"u\",vems:10,\"ven'\":\"m\",vendt:\"z\",\"veng \":\"1q\",venha:\"p\",\"venn \":12,vennl:12,venos:\"1o\",venut:\"q\",venæ:13,veom:\"v\",veq:\"1q\",verdt:12,verim:\"1f\",verič:\"y\",veroo:\"r\",veruj:\"v\",verum:\"t\",\"very \":\"m\",veryo:\"m\",veryt:\"m\",verä:\"n\",\"verí \":\"y\",verč:\"1b\",vesen:14,vesni:\"u\",veso:\"y\",vesz:14,vetke:14,veui:\"l\",veul:\"l\",veut:\"l\",veva:\"q\",vevi:\"q\",vevo:\"q\",vew:\"m\",vexi:\"t\",\"vez-\":\"l\",vezet:14,vezia:\"q\",veá:\"o\",veä:11,veç:\"1f\",veü:\"1p\",već:\"v\",\"veď \":\"y\",vešt:\"v\",vfa:10,vfe:\"z\",vge:\"1o\",vgj:12,vgr:\"1o\",vgu:\"1o\",vgå:10,vhen:12,vho:\"u\",vhu:\"z\",\"vi' \":\"1q\",\"vi-\":\"p\",\"viac \":\"y\",viace:\"y\",viadi:\"1o\",viage:\"p\",\"viaj \":\"1o\",viau:\"1b\",vibu:\"t\",vidla:\"u\",vidst:\"z\",vidó:\"o\",vieg:\"1d\",viejo:\"o\",viell:\"n\",vieme:\"y\",vienk:\"1d\",viern:\"o\",viero:\"o\",vieu:\"l\",viezd:\"y\",\"vieš \":\"y\",vifik:\"1p\",vigha:\"1q\",vigin:\"t\",vigti:\"z\",vihka:\"1c\",vihm:\"1c\",vihn:\"y\",viik:11,viima:\"1c\",viisi:11,viito:15,vijah:\"1q\",vijat:\"1q\",\"viku \":13,vilad:\"1q\",vilc:\"1d\",vilij:\"1q\",vilob:\"1p\",vilof:\"1p\",vilol:\"1p\",vilom:\"1p\",\"vilt \":13,viltu:13,vilá:14,\"vima \":\"v\",vinb:\"1o\",vindt:\"r\",vineh:\"1q\",vingt:\"l\",vinh:\"p\",vinov:15,vinsa:13,vinsk:\"y\",vintr:\"1o\",vintu:\"1o\",vinur:13,\"viny \":\"u\",vions:\"l\",vipar:\"1q\",viq:\"1q\",viriz:4,virum:\"t\",visag:\"l\",visel:14,viska:\"1b\",visne:\"t\",visov:\"1q\",visuo:\"1b\",visz:14,\"vita'\":\"1q\",vitiv:\"1q\",vitul:\"1q\",vium:\"t\",vius:\"t\",vivie:\"o\",vivir:\"o\",vivla:10,viw:\"1q\",\"vix \":\"t\",vixi:\"t\",viyo:\"1f\",vizin:\"p\",vizz:\"q\",viä:11,viè:\"l\",viê:\"a\",vië:\"r\",viñ:\"o\",vió:\"o\",viö:11,viú:\"p\",vić:\"v\",viň:\"u\",\"viš \":\"v\",više:\"v\",\"vk \":\"1f\",vlako:\"y\",vlee:\"r\",\"vlig \":10,vlj:\"v\",vlk:\"u\",vlt:\"z\",vluc:\"r\",vly:10,vládn:\"u\",vlä:10,vlé:\"u\",\"vmey \":\"1q\",vmi:\"1f\",vmoh:\"1q\",vned:\"z\",vnie:\"1d\",vnit:\"u\",\"vní \":\"u\",vnú:\"y\",\"vo'\":\"1q\",voas:15,\"vob \":\"1p\",\"vobi \":\"1p\",vobis:\"t\",vobod:\"u\",vobom:\"1p\",vobs:\"1p\",vocav:\"t\",\"voch \":\"y\",\"vode \":\"v\",vodl:\"y\",voeg:\"r\",voeld:\"r\",voer:\"r\",voet:\"r\",\"vof \":\"1p\",vogl:\"q\",vogn:\"z\",voh:\"1o\",voia:15,voim:11,\"voin \":11,voink:11,\"vois \":\"l\",vojej:\"y\",vojic:\"y\",vojon:\"1o\",\"vojí \":\"u\",vojím:\"y\",vokie:\"1b\",vokst:12,volas:\"1o\",volev:\"q\",volil:\"u\",volim:\"v\",volj:\"v\",\"voll \":\"n\",volna:14,volp:\"q\",volus:\"1o\",volé:\"l\",vomb:\"1o\",voms:\"1p\",\"vona \":13,vonat:14,\"vond \":\"r\",vonde:\"r\",vondt:12,vonku:\"y\",\"vono \":\"q\",\"vons \":\"l\",voodi:\"1c\",voorb:\"r\",vops:15,vorie:\"r\",vorto:\"1o\",vorí:\"y\",vosot:\"o\",vostr:\"q\",votr:\"l\",voudr:\"l\",voul:\"l\",vow:\"m\",vox:\"t\",voye:\"l\",voë:1,voć:\"v\",voš:\"1d\",vož:\"v\",vpe:\"1o\",vpr:\"1o\",vpu:\"1q\",vq:\"1q\",\"vr \":\"m\",vraa:\"r\",vraim:\"l\",vrais:\"l\",vrait:\"l\",vrap:\"q\",vrati:\"v\",vrav:\"y\",vraž:\"u\",vrc:\"u\",\"vrea \":15,vreb:\"q\",\"vred \":\"z\",vreem:\"r\",vreo:15,vrest:\"q\",vrij:\"r\",vrio:\"l\",vrir:\"l\",vrl:\"v\",\"vrou \":1,vrs:\"v\",vruc:\"r\",vrut:15,vry:1,vrà:\"q\",vrä:10,vré:\"l\",vrò:\"q\",vró:13,vrø:\"z\",vrć:\"v\",vrš:\"v\",vsiy:\"1f\",vsm:10,vsn:10,vsp:10,vstv:\"y\",vstú:\"y\",vsu:\"z\",vted:\"y\",vtr:\"z\",vtác:\"y\",vub:4,\"vud \":10,vude:10,vuds:10,\"vue \":\"l\",vuel:\"o\",vuest:\"o\",vug:4,vulo:\"1o\",vulti:\"t\",vunc:\"t\",vundi:\"1o\",vunt:\"t\",\"vuo \":\"1o\",vuod:11,vuoi:\"q\",vuol:\"q\",vuor:11,vuos:11,vuse:\"1c\",vustr:\"1f\",vuto:\"q\",vuur:\"r\",vux:10,vuye:4,\"vuze \":4,vué:\"o\",vuč:\"v\",vven:\"q\",vver:\"q\",vvia:\"q\",vvic:\"q\",vvio:\"q\",vvis:\"q\",vviv:\"q\",vvoc:\"q\",vvy:\"m\",vw:\"1q\",\"vy'\":4,\"vy-\":\"m\",vyab:4,vyan:4,vyc:\"u\",vyer:4,vyey:4,vyiy:4,vyiz:4,vykle:\"u\",\"vyko \":\"1b\",vyks:\"1b\",vykt:\"1b\",vyo:4,vypa:\"u\",vyprá:\"u\",vyre:\"1b\",vysá:\"y\",vyum:4,vyv:\"u\",vyy:11,vyze:\"y\",vyö:11,\"vzal \":\"u\",vzb:\"u\",vzdá:\"u\",vze:\"1o\",vzh:\"u\",vzp:\"u\",vzt:\"u\",vzí:\"u\",và:\"a\",\"vá-\":\"p\",váb:14,vág:14,vái:\"o\",vála:14,vált:14,\"vámi \":\"u\",vária:\"p\",vário:\"p\",váro:14,váve:\"p\",váč:\"y\",vâm:\"l\",vând:15,vâng:\"a\",vânt:15,vâr:15,vão:\"p\",\"vä \":11,väc:10,väd:10,väe:11,\"väg \":10,\"väga \":\"1c\",väge:10,väik:\"1c\",väk:11,\"väl \":10,väld:10,välk:10,välli:11,vänd:10,väni:11,vänl:10,vänä:11,värd:10,värl:10,värr:10,värt:10,värv:\"1c\",väsin:\"1c\",väsk:10,\"vät \":11,väu:11,väx:10,väz:\"y\",\"vå \":10,våb:\"z\",våd:\"z\",våge:\"z\",våk:12,vål:10,vån:10,\"våre \":12,\"væ \":\"t\",væd:\"z\",\"væg \":\"z\",væk:\"z\",væl:\"z\",væm:13,væren:\"z\",væri:13,værk:\"z\",værr:\"z\",værs:\"z\",væs:\"z\",væv:\"z\",vè:\"l\",vée:\"l\",vége:14,vélin:13,vélo:\"l\",vému:\"u\",vérem:14,vérit:\"l\",\"vét \":14,\"vê \":\"p\",\"vê-\":\"p\",vêm:\"p\",vên:\"p\",\"vía \":\"o\",víb:\"o\",\"víc \":\"u\",více:\"u\",víe:\"o\",vík:\"u\",\"víli \":\"u\",víme:\"u\",vío:\"o\",vísi:13,\"víte \":\"u\",víč:\"u\",víš:\"u\",vî:\"l\",\"vò \":\"q\",\"vós \":\"p\",vóó:\"r\",vôt:\"l\",\"vö \":13,vöda:\"1p\",vög:\"n\",\"völd \":13,vöru:13,\"vø \":\"z\",vù:\"a\",vüş:\"1f\",výl:\"u\",\"vým \":\"u\",vými:\"u\",výr:\"u\",výt:\"u\",výz:\"u\",výš:\"u\",\"vā \":\"1d\",vāb:\"t\",vāc:\"1d\",vās:\"1d\",vāt:\"1d\",\"vă \":15,văn:\"a\",vą:\"1b\",\"vča \":\"y\",včí:\"u\",vď:\"y\",vēl:\"1d\",vēn:\"t\",vēst:\"1d\",vēt:\"1d\",vę:\"1b\",\"vī \":\"t\",vīb:\"1d\",vīc:\"t\",vīd:\"t\",vīm:\"1d\",vīr:\"1d\",vīs:\"t\",vīt:\"t\",vīv:\"t\",vı:\"1f\",vō:\"t\",vœ:\"l\",vş:\"1f\",\"vše \":\"u\",všem:\"u\",všet:\"y\",všu:\"u\",vší:\"u\",vū:\"1b\",\"w''\":\"1q\",\"w'b\":\"1q\",\"w'c\":\"1q\",\"w'd\":\"m\",\"w'i\":4,\"w'l\":\"1q\",\"w'm\":\"1q\",\"w'p\":\"1q\",\"w'r\":\"m\",\"w's\":\"m\",\"w't\":\"1q\",\"w'u\":4,\"w'w\":\"1q\",\"w-ar\":\"d\",\"w-b\":\"m\",\"w-c\":\"m\",\"w-l\":\"m\",\"w-m\":\"m\",\"w-n\":3,\"w-p\":\"m\",\"w-t\":\"m\",\"w-w\":\"m\",\"w-z\":\"r\",\"wa' \":\"1q\",\"wa'l\":\"1q\",waai:\"r\",waal:\"r\",waars:\"r\",wabo:4,wachs:\"n\",wacul:3,wadan:\"1n\",wadz:\"1a\",\"wagh \":\"1q\",wahl:\"n\",waiti:\"m\",wajen:3,waji:\"b\",\"waka \":4,wakt:\"b\",\"wal-\":3,walim:3,\"walk \":\"m\",walke:\"m\",wama:3,wania:\"1a\",wanie:\"1a\",wanj:4,\"wann \":\"n\",wansi:3,wants:\"m\",\"wany \":\"1a\",wanyu:4,wape:\"r\",warum:\"n\",warut:3,wasc:\"n\",\"wass \":3,wasy:\"d\",wasz:\"1a\",watc:\"m\",wave:\"m\",\"wawe \":4,\"waya \":3,\"waye \":4,wayen:3,ways:\"m\",wać:\"1a\",waş:\"1n\",wci:\"1a\",wco:\"m\",wcy:\"1a\",wcz:\"1a\",wcó:\"1a\",wcą:\"1a\",wdr:\"m\",wds:\"m\",wdz:\"1a\",wdą:\"1a\",wdę:\"1a\",\"we'\":\"m\",weak:\"m\",weal:\"m\",weap:\"m\",wear:\"m\",weba:\"d\",wech:\"n\",weck:\"n\",weeg:\"r\",weest:\"r\",wego:\"1a\",\"weh \":\"n\",weif:\"n\",weih:\"n\",\"weil \":\"n\",\"wein \":\"n\",weini:\"r\",weir:\"m\",weise:\"n\",\"weit \":\"n\",weite:\"n\",wejha:\"1q\",wejma:\"1q\",weke:\"r\",wela:\"d\",welch:\"n\",welij:\"r\",welik:1,welin:\"1n\",weme:4,wemme:\"r\",\"wen-\":3,wenew:4,weni:\"n\",\"wenn \":\"n\",\"went-\":3,wenye:4,\"wese \":4,wesen:\"n\",weten:\"r\",\"wewe \":4,wex:3,weze:\"r\",\"wezi \":4,wezna:3,wfl:\"m\",wfo:\"m\",wgo:\"r\",\"what \":\"m\",\"what'\":\"m\",when:\"m\",wher:\"m\",whet:\"m\",whic:\"m\",whil:\"m\",\"who'\":\"m\",whol:\"m\",whom:\"m\",whos:\"m\",why:\"m\",\"wi'\":\"1q\",\"wi-d\":3,\"wia \":\"1a\",wiad:\"1a\",wiaj:\"1a\",wiam:\"1a\",wiat:\"1a\",wiba:4,widz:\"1a\",wiec:\"1a\",wiede:\"n\",wiedz:\"1a\",wieg:\"n\",wiek:\"1a\",wielb:\"1a\",wielk:\"1a\",wielu:\"1a\",wiem:\"1a\",wieni:\"1a\",wieri:\"n\",wierz:\"1a\",wiesz:\"1a\",wiet:\"1a\",wife:\"m\",wiga:4,wigha:\"1q\",wijda:\"1q\",wijl:\"r\",wijn:\"r\",wijs:\"r\",wijt:\"r\",wika:\"d\",wikk:\"r\",\"wili \":\"1a\",wineh:\"1q\",winie:\"1a\",winj:4,wio:\"1a\",\"wira \":4,wird:\"n\",wiriz:4,wirk:\"n\",wirs:\"n\",wisa:\"b\",wisch:\"n\",\"wish \":\"m\",wiso:\"1q\",wisz:\"1a\",\"with \":\"m\",witho:\"m\",wiwe:4,wix:\"m\",\"wiye \":4,wiyu:4,wió:\"1a\",wią:\"1a\",wić:\"1a\",wič:3,\"wk \":\"m\",wke:\"r\",wko:\"1a\",wkr:\"1a\",wks:\"m\",wku:\"1a\",wkw:\"m\",wką:\"1a\",wkę:\"1a\",wlaf:3,\"wlan-\":3,wls:\"m\",wly:\"m\",wmy:\"1a\",\"wn-\":\"m\",wnf:\"m\",wnh:\"m\",\"wnie \":\"1a\",wnik:\"1a\",wnisa:3,wnm:\"m\",wno:\"1a\",wnp:\"m\",wnr:\"m\",wnt:\"m\",wnw:\"m\",wną:\"1a\",wnę:\"1a\",\"wo'\":\"1q\",\"wo-\":\"m\",woa:\"n\",woba:4,woche:\"n\",\"wodu \":\"1a\",wody:\"1a\",wof:\"n\",woh:\"n\",woi:\"1a\",woj:\"1a\",woke:\"m\",woli:\"1a\",wollt:\"n\",woln:\"1a\",wolon:\"1a\",woman:\"m\",wome:\"m\",\"won'\":\"m\",wonen:\"r\",woond:\"r\",woont:\"r\",woq:\"1q\",words:\"m\",wordt:\"r\",worke:\"m\",worki:\"m\",works:\"m\",worr:\"m\",\"wort \":\"n\",worz:\"1a\",wose:4,wot:\"1a\",woul:\"m\",woun:\"m\",wovmo:\"1q\",wowa:\"1a\",wpl:\"1n\",wpr:\"1a\",wq:3,wraca:\"1a\",wran:\"d\",wreni:\"1n\",writ:\"m\",wrong:\"m\",wry:\"m\",wrz:\"1a\",wró:\"1a\",wrę:\"1a\",wsc:\"1a\",wsg:\"r\",wsh:\"m\",wsu:\"m\",wsy:\"m\",wsz:\"1a\",\"wt-\":3,wtedy:\"1a\",wth:\"m\",wtj:\"r\",\"wto \":\"d\",wtob:\"1n\",wtu:3,wtó:\"1a\",\"wu-\":3,wub:4,wuf:3,wuh:\"m\",wuje:\"1a\",\"wul-\":3,wumv:4,wund:\"n\",wuq:\"1q\",wurd:\"n\",wurt:3,wusst:\"n\",wust:\"r\",wuv:\"1q\",wuz:3,wuč:3,wve:\"1q\",wwa:3,wwe:3,wwl:3,wwt:3,wwu:3,www:\"q\",wya:3,wyb:\"1a\",wyc:\"1a\",wyd:\"1a\",wyer:\"m\",wyg:\"1a\",wyj:\"1a\",wyk:\"1a\",wyl:\"1a\",wym:\"1a\",\"wyn \":1,wyni:\"1a\",wyo:\"1a\",wyp:\"1a\",wyr:\"1a\",wyse:1,wyso:\"1a\",wyst:\"1a\",wysz:\"1a\",wyt:\"1a\",wyw:\"1a\",wyz:\"1a\",wzd:\"1a\",wze:3,wzg:\"1a\",wzr:\"1a\",wái:\"o\",wán:\"o\",wä:\"n\",wç:\"1n\",wê:1,wó:\"1a\",wö:\"n\",wün:\"n\",wür:\"n\",wüs:\"n\",wüt:\"n\",wüş:\"1n\",wą:\"1a\",wč:3,wę:\"1a\",wı:\"1k\",wł:\"1a\",wε:3,\"x's\":\"m\",\"x-b\":\"m\",\"x-g\":\"m\",\"x-l\":\"l\",\"x-r\":\"m\",\"x-tu\":\"l\",\"x-w\":\"m\",\"xa-\":\"p\",xactl:\"m\",xad:\"p\",xae:\"t\",\"xam-\":3,xamt:3,xanh:\"a\",xara:\"p\",xatam:\"p\",xav:\"p\",xaz:3,xba:3,xbo:\"m\",xcet:\"p\",xch:\"m\",xco:\"o\",xcè:\"l\",xd:3,\"xe-\":\"p\",xea:\"o\",xeb:3,xedd:3,xedr:\"t\",xef:3,xei:\"p\",xemm:3,xempe:10,xeni:\"1p\",xeru:\"t\",xey:3,xg:\"n\",xiit:\"t\",\"xil-\":3,xill:\"t\",\"xinh \":\"a\",\"xir \":3,xiss:\"t\",xistu:\"u\",xiu:15,xiè:\"l\",xió:\"o\",xk:\"n\",xlu:3,xn:3,xoa:\"a\",xona:\"p\",xong:\"a\",xopt:\"t\",xore:\"t\",xori:\"t\",xost:\"t\",xou:\"p\",xpla:\"m\",xpé:\"l\",xre:3,\"xs \":3,xsa:3,xse:3,xsp:\"t\",xst:\"t\",xsu:\"t\",\"xta-\":\"p\",xtb:\"m\",xth:\"m\",xtran:\"o\",xts:\"m\",xty:\"m\",xté:\"l\",xuc:3,xud:\"m\",xung:\"a\",xuâ:\"a\",xw:3,xxa:3,xxu:3,xyd:\"l\",xyl:\"m\",xza:3,xà:\"a\",\"xá-\":\"p\",xác:\"a\",xám:\"o\",xâ:\"a\",\"xã \":\"a\",xão:\"p\",xä:\"1k\",\"xé \":\"l\",xéc:\"l\",xér:\"p\",xét:\"a\",xíc:\"p\",xíg:\"o\",xíl:\"p\",xív:\"p\",xóc:\"o\",xóm:\"a\",xô:\"a\",xõ:\"p\",xú:\"a\",xă:\"a\",xē:\"t\",xı:\"1k\",xōc:\"o\",xş:\"1k\",\"y''\":\"1q\",\"y'ab\":4,\"y'am\":4,\"y'b\":\"1q\",\"y'c\":\"1q\",\"y'de\":\"1f\",\"y'im\":4,\"y'is\":4,\"y'm\":\"1q\",\"y'ni\":\"1f\",\"y'r\":\"m\",\"y't\":\"1q\",\"y'u\":4,\"y've\":\"m\",\"y'w\":\"1q\",\"y'y\":\"1f\",\"y-ab\":\"d\",\"y-ar\":\"d\",\"y-c\":\"m\",\"y-f\":\"m\",\"y-g\":\"m\",\"y-h\":\"m\",\"y-i\":3,\"y-l\":\"m\",\"y-o\":\"m\",\"y-ro\":\"d\",\"y-ts\":\"d\",\"y-u\":\"d\",\"y-w\":\"m\",\"y-y\":\"m\",\"ya' \":\"1q\",yabil:\"1f\",yabu:4,yaca:\"1f\",yacu:4,yadon:\"d\",yahan:\"d\",yahe:\"d\",yahk:\"b\",yahm:\"b\",yahv:\"o\",yakal:\"1f\",yakla:\"1f\",yakra:14,yalan:\"1f\",yamin:3,yamu:4,yanj:4,yanl:\"1f\",yanyi:\"b\",yanyu:4,yanı:\"1f\",yaon:\"d\",yapab:\"1f\",yapam:\"1f\",yapar:\"1f\",yapma:\"1f\",yapt:\"1f\",yaret:\"1f\",yary:\"d\",yarı:\"1f\",yash:4,yatu:4,yatı:\"1f\",yawa:\"d\",\"yawe \":4,yazd:\"1f\",yaç:\"1f\",yaşa:\"1f\",yaşl:\"1f\",yaşı:\"1f\",ybay:\"d\",ybc:\"1a\",ybett:\"1f\",ybk:\"1a\",ybod:\"m\",ybt:\"z\",ybym:\"1a\",ybys:\"u\",\"ybí \":\"u\",\"yc \":\"1a\",ychl:\"u\",ychm:\"1a\",ychod:\"1a\",ychom:\"u\",yci:\"1a\",ycj:\"1a\",ycka:10,ycke:10,yckl:10,yckt:10,ycy:\"1a\",ycz:\"1a\",ycé:\"l\",\"ydaj \":\"1q\",ydaje:\"1a\",\"ydde \":10,ydeg:3,\"ydi-\":3,ydim:\"1f\",ydk:\"1a\",ydlig:10,ydlí:\"u\",ydow:\"1a\",yds:\"z\",ydt:\"z\",\"ydu \":\"1f\",ydum:\"1f\",ydyg:\"1n\",ydym:\"1n\",ydyr:\"1n\",ydyto:\"1b\",ydz:\"1a\",ydä:11,ydí:\"u\",ydü:\"1f\",ydı:\"1f\",ydž:\"1b\",yea:\"m\",yebd:3,yebi:\"1f\",yece:\"1f\",yedda:3,yeddu:3,yeff:3,yeh:3,yej:3,yeles:\"b\",yelha:3,yella:3,yelv:14,yemek:\"1f\",yemma:3,yemmu:3,yendo:\"o\",yenni:3,yeny:\"b\",yeq:3,yerin:\"1f\",yerna:3,yernu:3,yerr:3,yesr:3,yessa:3,yesse:3,yessi:3,yessu:3,yeter:\"1f\",yetta:3,yettb:3,yettn:3,yettu:3,yeu:\"l\",yex:3,yezm:3,yezr:3,yeč:3,yeş:\"1f\",yfl:\"m\",yfr:\"m\",ygas:\"1b\",ygdo:\"z\",\"yge \":\"z\",ygeh:\"z\",ygep:\"z\",ygga:10,yggi:13,yggj:13,yggn:10,ygh:\"m\",ygod:\"1a\",ygos:\"1b\",ygoto:\"1a\",ygp:10,ygs:\"z\",\"ygt \":\"z\",ygte:\"z\",ygti:\"z\",\"ygy \":\"1n\",ygym:\"1n\",ygyna:\"1n\",ygą:\"1b\",yhd:11,yhj:11,yhk:11,yhm:11,yht:11,yhy:11,yhä:11,\"yi'\":\"1q\",\"yi-\":3,yiap:\"b\",yich:\"1q\",\"yid-\":3,yife:3,yigh:\"1q\",yijat:\"1q\",yima:3,yimp:\"b\",yimsu:3,\"ying \":\"m\",yingu:\"1q\",yinsh:4,yiny:\"b\",yinä:\"1p\",yio:\"l\",\"yira \":14,\"yire \":14,yiseg:3,yitl:\"1q\",\"yiwe \":4,yix:3,yiyo:\"1f\",yiyum:4,\"yiz \":\"1f\",yjac:\"1a\",yjc:\"1a\",yjec:\"1a\",yjem:\"1a\",yjm:\"1a\",yjn:\"1a\",yjr:\"1a\",yjs:\"1a\",yjy:\"1n\",yjä:11,yjí:\"u\",yją:\"1a\",yję:\"1a\",ykar:\"1n\",ykat:\"1n\",ykda:\"1n\",ykdo:12,\"ykdy \":\"1n\",ykeh:12,\"yker \":12,\"yki \":\"1a\",ykie:\"1a\",ykim:\"1b\",yking:13,ykir:13,ykite:\"1b\",ykj:13,\"ykk \":12,ykka:13,ykked:\"z\",ykku:13,ykkä:11,yklan:\"1n\",ykler:\"z\",ykloj:\"1b\",ykly:\"1n\",yklą:\"1b\",ykma:\"1n\",ykmi:\"y\",\"ykov \":\"y\",ykr:\"1a\",ykse:11,ykst:\"1b\",\"ykte \":12,ykti:\"1b\",ykyp:\"1n\",ykä:11,yké:14,ykó:\"1a\",ykš:\"1b\",\"ylda \":\"1n\",ylder:\"z\",yldt:\"z\",yldu:13,yldy:\"1n\",yleg:14,yley:\"1f\",ylga:\"1n\",yliu:\"1b\",ylj:11,ylko:\"1a\",yllu:\"z\",yllä:11,ylmä:11,ylp:11,\"ylt \":12,ylyg:\"1n\",ylyk:\"1n\",ylö:11,ylü:\"1f\",ylý:\"1n\",ylı:\"1f\",\"ymas \":\"1b\",ymda:\"1n\",ymdi:13,ymmä:11,ymor:\"m\",ymt:10,ymum:\"t\",ymyz:\"1n\",ymá:14,ymä:11,ymą:\"1b\",ynaj:\"1a\",yndan:\"1n\",yndar:13,yndav:13,yndel:\"z\",ynder:\"z\",\"yndi \":13,yndin:13,yndir:13,yndl:\"z\",yndt:\"z\",yndu:13,yndy:\"1n\",ynene:12,yngj:13,yngri:13,ynie:\"1a\",ynil:\"d\",ynla:\"1n\",ynner:12,\"yno \":\"1b\",ynp:11,\"ynte \":12,ynty:11,ynut:3,ynyt:11,ynç:\"1n\",yní:\"u\",ynó:\"1a\",ynı:\"1f\",\"yo-\":\"m\",\"yobb \":14,yof:\"m\",yoh:\"1q\",yoks:\"1f\",yoktu:\"1f\",\"yone \":\"m\",\"yong \":\"d\",\"yop \":\"d\",yordu:\"1f\",yorgu:\"1f\",yorl:\"1f\",yorum:\"1f\",yoruz:\"1f\",yorí:\"o\",yose:4,your:\"m\",yov:\"m\",ypd:\"1n\",ypä:11,yqu:\"1q\",yras:\"1b\",yrde:\"z\",yrdy:\"1n\",yrer:\"z\",yrir:13,yrja:13,yrl:\"1n\",yrma:\"1n\",yrn:13,yroon:\"d\",\"yrr \":13,yrra:13,yrre:\"z\",yrst:13,yrun:13,\"yry \":\"1n\",yryn:\"1n\",yryp:\"1n\",yrz:\"1a\",yrý:\"1n\",yrą:\"1b\",yrę:\"1b\",yrı:\"1f\",\"ys'\":\"m\",\"ys-\":\"l\",ysay:\"d\",ysb:\"d\",yscy:\"1a\",yself:\"m\",ysga:\"1n\",ysge:\"z\",ysh:\"z\",ysiu:\"1b\",ysj:11,\"yske \":\"z\",yssed:\"z\",yssn:10,ysst:10,ystk:\"1a\",ystä:11,ysve:\"y\",ysym:11,yszed:\"1a\",yszer:14,ysáv:\"y\",ysä:11,\"yt-\":3,ytaj:\"1a\",ytani:\"1a\",\"ytas \":\"1b\",ytd:\"1b\",ytels:12,ytend:12,ythi:\"m\",\"yti \":\"1b\",yticu:\"y\",\"ytis \":\"1b\",ytji:1,ytm:3,ytoj:\"1b\",ytta:10,ytted:\"z\",ytten:\"z\",\"ytti \":11,yttu:13,yttä:11,ytum:\"1b\",ytv:\"u\",ytä:11,ytå:\"z\",ytí:\"u\",ytö:11,ytę:\"1a\",\"yu'\":\"1q\",\"yuch \":\"1q\",yudar:\"o\",yudó:\"o\",yufan:3,yufo:\"1p\",yufö:\"1p\",yukai:\"b\",yuli:3,yumv:4,yunc:\"1f\",yunik:\"1p\",yunk:14,yuno:\"o\",\"yusa \":3,yuw:3,yuyo:\"1f\",yuč:\"u\",yuž:\"u\",yvam:\"1q\",yvan:\"1f\",yvena:\"1b\",yveno:\"1b\",yvent:\"1b\",\"yvet \":14,yvin:11,yvu:\"1b\",yvär:10,\"yw \":\"1a\",ywd:\"1a\",ywh:\"m\",\"ywij \":\"1q\",ywn:\"1a\",ywy:\"1a\",\"yx \":\"m\",yxo:10,\"yya \":3,yyf:3,yyh:11,yyi:3,yyk:11,yym:11,yyp:11,yys:11,yyt:11,yyu:3,yyv:11,yzb:\"1f\",yzj:\"1a\",yzk:\"u\",yzl:\"1n\",yzv:\"u\",yzw:\"1a\",yád:14,yáj:14,yál:14,\"yám \":14,yár:14,yás:14,yát:14,yáz:14,yâ:\"1f\",yäk:11,yäna:\"1p\",yää:11,yäş:\"1k\",yè:\"l\",yée:\"l\",yék:14,yél:14,yém:14,yér:14,yét:14,yê:\"a\",yí:14,yñ:\"1n\",yóg:14,yô:\"l\",\"yö \":11,yöa:11,yöh:11,yöj:11,yöp:11,yörä:11,yösk:11,yöv:11,yúd:\"o\",yúj:14,yús:\"o\",yüd:\"1f\",yür:\"1f\",yüş:\"1f\",yý:\"1n\",yā:\"1o\",yć:\"1a\",\"yč \":\"u\",yča:\"y\",yčia:\"1b\",yğ:\"1k\",\"yı \":\"1f\",yıd:\"1f\",\"yıl \":\"1f\",yıld:\"1f\",yım:\"1f\",\"yın \":\"1f\",yıp:\"1f\",yıs:\"1f\",yız:\"1f\",ył:\"1a\",\"yň \":\"1n\",yňa:\"1n\",yō:\"n\",yş:\"1n\",yše:\"u\",yšk:\"1b\",yšlen:\"u\",yšli:\"y\",yší:\"u\",yū:\"n\",\"yž \":\"u\",ý:\"a\",yε:3,\"z'a\":\"q\",\"z'n\":\"r\",\"z'o\":\"q\",\"z's\":\"m\",\"z-a\":3,\"z-i\":3,\"z-le\":\"l\",\"z-mo\":\"l\",\"z-s\":\"p\",\"z-v\":\"l\",\"z-y\":\"l\",\"zaak \":\"r\",zaam:\"r\",zabad:14,zabav:\"v\",zabaw:\"1a\",zabla:\"y\",zabor:\"v\",zabud:\"y\",zabí:\"u\",zady:\"1n\",zadz:\"1a\",zagr:\"1a\",zahle:\"n\",zaist:\"v\",zajed:\"v\",zajtr:\"y\",zají:\"u\",\"zal-\":3,\"zala \":\"u\",zamia:\"1a\",zanie:\"1a\",zanje:4,zanz:\"q\",zapat:\"o\",zapro:\"1a\",zapy:\"1a\",zaraz:\"1a\",\"zase \":\"u\",zasie:\"1a\",zask:\"1a\",zaslo:\"u\",zasu:\"1a\",zatí:\"u\",zauz:\"v\",\"zav \":15,zaws:\"1a\",zaye:3,zayr:3,zayt:3,zaç:\"p\",zañ:\"o\",zašt:\"v\",zať:\"y\",\"zban \":14,zbat:15,zben:14,zbog:\"v\",zboi:15,zbur:15,\"zbyt \":\"1a\",zbý:\"u\",zbę:\"1a\",zcl:\"o\",zco:\"o\",zcz:\"1a\",zcá:\"o\",zdani:\"1a\",zdarz:\"1a\",zdec:\"1a\",zdne:\"y\",zdov:\"y\",zdt:14,zdvi:\"y\",zdym:\"1n\",zdz:\"1a\",zdálo:\"u\",\"zdí \":\"u\",zdı:\"1f\",zdž:\"1b\",zeaz:15,\"zeba \":\"1a\",zebl:\"1o\",zebu:\"1a\",zeco:\"1o\",\"zeer \":\"r\",zegar:\"1a\",zegd:\"r\",\"zego \":\"1a\",\"zegt \":\"r\",zehn:\"n\",zeic:\"n\",zeig:\"n\",zeker:\"r\",zekka:3,zeko:\"1a\",\"zele \":15,\"zelf \":\"r\",zemia:\"y\",zemmu:3,zemos:\"p\",zemu:\"1a\",zemé:14,zengi:\"1f\",zenia:\"1a\",zenu:\"r\",zepra:\"1a\",zepro:\"1a\",zeq:3,zeral:\"y\",zeram:\"p\",zerc:\"1o\",zerew:4,\"zeru \":\"1d\",zerwo:\"1a\",\"zerá \":\"y\",zesta:\"1a\",zeto:\"1o\",\"zett \":14,\"zeu \":15,zeug:\"n\",zeven:\"r\",zewa:\"1a\",zewo:\"1a\",\"zeć \":\"1a\",zeň:\"u\",zeš:\"u\",zgen:3,zgle:\"v\",zgn:\"1a\",zgom:15,zgov:\"v\",zgü:\"1f\",zgā:\"1d\",zhl:\"u\",zhodo:\"y\",\"ziat \":15,ziato:\"q\",\"zic \":15,\"zich \":\"r\",zichz:\"r\",ziec:\"1a\",zieh:\"n\",\"ziek \":\"r\",zieke:\"r\",zienn:\"1a\",ziesi:\"1a\",ziet:\"r\",ziew:\"1a\",\"zij \":\"r\",zijd:\"r\",zijn:\"r\",zijt:\"r\",\"zile \":15,zilel:15,ziml:\"1f\",zimno:\"1a\",zinh:\"p\",\"zinu \":\"1d\",ziny:\"1a\",zinā:\"1d\",\"zinę \":\"1a\",ziot:\"q\",ziras:\"1o\",\"ziri'\":\"m\",ziro:\"1o\",ziru:\"1o\",zisia:\"1a\",\"zisz \":\"1a\",\"zit-\":3,zitis:\"1o\",ziua:15,ziwn:\"1a\",ziya:\"1f\",ziza:4,ziè:\"l\",zië:\"r\",ziñ:\"1n\",zią:\"1a\",zić:\"1a\",zič:\"v\",ziň:\"1n\",\"ziš \":\"v\",ziška:\"1b\",zjad:\"1a\",zjedo:\"y\",\"zji \":\"1a\",zjis:\"u\",zję:\"1a\",zký:\"u\",zką:\"1a\",zkę:\"1a\",\"zl \":\"u\",zlary:\"1n\",zlich:\"n\",zlie:\"1d\",zliv:\"y\",zlob:\"u\",zlog:\"v\",zlož:\"y\",zlyg:\"1n\",zlyk:\"1n\",\"zlı \":\"1f\",zmawi:\"1a\",zmer:3,zmia:\"1a\",zmien:\"1a\",zmire:3,zmirs:\"1d\",zmiš:\"v\",zml:\"u\",zmn:\"1a\",zmyse:\"y\",zmí:\"u\",zmę:\"1a\",\"zn \":\"1a\",znale:\"1a\",znao:\"v\",znas:\"1a\",znaš:\"v\",znek:14,znovu:\"u\",znow:\"1a\",\"zny \":\"1a\",znych:\"1a\",znál:14,zní:\"u\",zný:\"u\",zną:\"1a\",znę:\"1a\",\"zo'n\":\"r\",\"zo-\":\"1o\",zoal:\"r\",zobac:\"1a\",zobe:\"y\",zobi:4,zobra:\"y\",zobu:\"y\",zobá:14,zoch:\"r\",zodpo:\"u\",zodr:\"r\",zoek:\"r\",zoen:\"r\",zoet:\"r\",zogu:4,zoh:4,zoie:\"r\",\"zoj \":\"1o\",zojn:\"1o\",zome:\"r\",zomr:\"y\",zond:\"r\",zoon:\"r\",zoraj:\"1a\",zorem:\"1a\",zorun:\"1f\",zostá:\"y\",zott:14,zoud:\"r\",zout:\"r\",zovee:\"r\",zoza:4,zozna:\"y\",zoá:\"p\",zoč:\"v\",zpí:\"u\",zqu:\"o\",zraw:3,zrc:\"u\",zrej:\"y\",zrie:\"y\",\"zrin \":3,zrk:\"y\",zrob:\"1a\",zroz:\"1a\",zruš:\"u\",zrz:\"1a\",zsg:14,zska:\"1d\",zsá:14,zsé:14,zsą:\"1a\",zsı:\"1f\",zté:14,ztę:\"1a\",zua:\"n\",zuby:\"u\",zuci:\"1a\",zuer:\"n\",zuid:\"r\",zull:\"r\",\"zult \":\"r\",zumel:\"y\",zumia:\"1a\",zumí:\"u\",zung:\"n\",zunk:14,zupp:\"q\",zurr:\"q\",zusam:\"n\",zusc:\"n\",zuse:\"n\",zuu:\"r\",\"zuw \":\"1n\",zux:3,zuć:\"1a\",zvai:\"1d\",zvar:\"1d\",zveda:\"y\",zvie:\"y\",zvin:\"v\",zvlád:\"u\",zvykl:\"u\",zví:\"u\",zvă:15,zvē:\"1d\",zwaa:\"r\",zwaru:3,\"zwe \":4,zwee:\"r\",zwei:\"n\",zwem:\"r\",zwier:\"1a\",zwina:3,zwisc:\"n\",zwon:\"1a\",zwy:\"1a\",zyb:\"1a\",zych:\"1a\",zyd:\"1a\",zyg:\"1a\",zyj:\"1a\",zyki:\"1a\",zykla:\"1n\",zykm:\"y\",zykom:\"y\",\"zym \":\"1a\",zyma:\"1a\",zymy:\"1a\",\"zyny \":\"1a\",zyo:\"1f\",zypa:\"1a\",zypo:\"1a\",zyr:\"1a\",zys:\"1a\",zyt:\"1a\",zyw:\"1a\",zyz:\"1a\",zyň:\"1n\",\"zz'\":\"q\",zzav:\"q\",zzaz:\"q\",zzes:\"q\",zzf:3,zzh:3,zzia:\"q\",zzic:\"q\",zzm:3,\"zzo \":\"q\",zzol:\"q\",zzur:\"q\",zzá:14,zzì:\"q\",\"zá-\":\"p\",zág:14,záhr:\"y\",záll:14,zámo:14,zát:14,záu:\"y\",zâm:15,zã:\"p\",zäh:\"n\",zän:\"1n\",zär:\"n\",zç:\"1n\",zè:\"l\",zéd:14,zék:14,\"zél \":14,zélt:14,\"zép \":14,zért:14,zét:14,zê:\"p\",zím:\"u\",zíte:14,zítr:\"u\",zíš:\"u\",zò:\"q\",zól:14,zót:14,zô:\"p\",zõ:\"p\",zöl:14,zör:14,zösi:\"n\",zöt:14,\"zú \":14,zúc:\"o\",zúč:\"u\",\"zü \":\"1f\",züks:14,zümi:\"1n\",zünk:14,zýv:\"u\",zā:\"1d\",ză:15,ząs:\"1a\",zč:\"u\",zē:\"1d\",zęs:\"1a\",zī:\"1d\",\"zı \":\"1f\",zım:\"1f\",zın:\"1f\",zır:\"1f\",zıy:\"1f\",zł:\"1a\",zť:\"y\",zε:3,\"{\":\"1q\",\"|\":\"g\",\"}\":\"1q\",\" =\":\"n\",\" b\":\"l\",\" es\":\"1o\",\" fa\":\"l\",\" i\":\"n\",\" k\":\"1o\",\" ma\":\"1o\",\" mi\":\"1o\",\" o\":\"p\",\" pa\":\"l\",\" q\":\"l\",\" u\":\"n\",\" vi\":\"1o\",\" w\":\"1a\",\" z\":\"1a\",\"¨\":\"u\",ª:\"p\",\"­ \":\"t\",\"­b\":\"n\",\"­d\":\"n\",\"­s\":\"n\",\"°с\":18,\"²'\":\"1f\",\"· \":\"w\",\"·​\":\"t\",ºc:\"o\",\"½ \":\"n\",ß:\"n\",\"à-\":\"l\",ài:\"a\",àm:\"a\",àn:\"a\",ào:\"a\",àq:\"p\",às:\"p\",àu:\"a\",ày:\"a\",\"à \":\"l\",\"á'\":14,\"á-l\":\"p\",\"á-m\":\"p\",áan:13,\"ába \":14,\"ában \":14,ább:14,ábh:\"s\",ábio:\"p\",ábä:\"y\",ábæ:13,ábó:14,\"áca \":\"y\",ácii:\"y\",ácio:\"p\",ács:14,\"áct \":\"u\",\"ácu \":\"y\",ácí:\"u\",ádal:\"u\",ádeg:13,ádku:\"u\",ádm:\"o\",ádno:\"u\",\"ádná \":\"u\",ádné:\"u\",ádný:\"u\",ády:\"u\",ádz:\"y\",\"ádá \":\"u\",ádí:\"u\",áem:\"o\",áet:\"o\",áfra:13,\"ág \":14,ágb:14,ágot:14,ágt:14,água:\"p\",ágy:14,ágá:14,áhald:13,áhe:\"u\",áhl:\"u\",áhn:\"u\",áhra:\"y\",áhri:13,áhug:13,áhy:13,áhá:\"u\",áil:\"s\",\"áj \":14,\"ája \":14,ájar:\"o\",ájde:\"y\",áje:\"u\",ájs:\"y\",áju:14,ájá:14,ákv:13,áky:\"u\",álai:\"s\",álas:14,álco:\"p\",álds:13,áles:\"o\",\"álf \":13,álfa:13,álft:13,álfu:13,álh:14,\"ális \":14,álj:14,álko:14,\"áll \":14,állo:14,állt:14,állí:14,álni:14,álom:14,\"álp \":13,álpa:13,álsk:\"y\",\"ált \":14,álta:14,álto:14,álá:14,álæ:13,álí:\"u\",áló:14,ámar:\"o\",\"ámat \":14,ámá:14,ámí:14,ámý:\"u\",ának:14,\"ándo \":\"o\",ándé:14,ánge:\"o\",\"ánh \":\"a\",ánic:\"o\",ánit:\"u\",\"ánk \":14,ánl:14,ánsky:\"y\",ántas:\"o\",\"ánto \":\"o\",ántos:\"o\",\"ánu \":\"u\",ányo:14,ánæ:13,\"ání \":\"u\",áním:\"u\",\"áo \":\"a\",ápis:\"p\",ápiz:\"o\",áps:\"o\",ápu:\"u\",árac:\"s\",árad:14,árbo:\"o\",árce:\"o\",árek:\"u\",árh:14,árias:\"p\",árii:\"y\",\"ário \":\"p\",ários:\"p\",\"áriu \":\"y\",árj:14,árol:14,árom:14,áros:14,\"árt \":14,árum:13,árvo:\"p\",árá:14,áró:14,ásb:14,ásh:14,ásik:14,áskó:13,ásl:\"u\",\"ásna \":\"y\",ásnak:14,ásne:\"y\",ásné:\"u\",ások:14,ásr:14,ással:14,ássar:\"p\",ássi:\"p\",ász:14,ásá:14,ásť:\"y\",áteli:\"u\",átelé:\"u\",\"áth \":\"s\",áthai:\"s\",átim:\"y\",átit:\"u\",átj:14,átky:\"u\",átl:14,\"áto \":\"y\",átoga:14,átok:14,\"átom \":14,áts:14,\"átt \":13,áttam:14,átti:13,\"áttu \":13,átá:14,átæ:13,\"átím \":\"u\",átó:14,\"áu \":\"a\",áud:\"p\",áuj:\"y\",áum:13,\"ávaj \":\"y\",\"ávam \":\"y\",ávamo:\"p\",ávan:\"y\",\"ávat \":\"u\",ávax:13,\"áve \":\"y\",ávei:\"p\",ávej:\"u\",ável:\"p\",\"ávil \":\"u\",ávne:\"y\",ávni:\"y\",ávr:\"u\",ávám:\"u\",ávé:14,áví:\"u\",ávš:\"u\",\"áxi \":\"p\",\"áy \":\"a\",áya:\"o\",\"áz \":14,\"ázal \":\"u\",ázas:14,ázb:14,\"ázni \":14,ázs:14,ázt:14,ázz:14,ází:\"u\",áá:14,áæ:13,áé:14,áí:14,áñ:\"o\",áó:14,áú:14,áü:14,áča:\"y\",áči:\"y\",áčka:\"y\",áčo:\"y\",áčt:\"y\",áň:\"y\",áša:\"y\",áše:\"u\",áší:\"u\",áť:\"y\",áža:\"y\",\"áže \":\"u\",ážu:\"u\",áží:\"u\",âbl:\"l\",âc:\"l\",\"âd \":15,\"âde \":15,âf:\"1f\",âg:\"l\",âh:\"1f\",\"âi \":15,âil:\"l\",âin:15,âk:\"1f\",âln:15,âlâ:\"1f\",\"âm \":\"a\",âma:\"p\",âmbe:15,âmi:\"p\",âmpa:\"p\",âmpl:15,ânat:15,\"ânc \":15,ânca:15,\"ânci \":15,ância:\"p\",\"ând \":15,ândes:15,ândit:15,ândo:15,ândr:15,ânge:15,ângâ:15,ânic:\"p\",\"âns \":15,\"ânt \":15,ânte:15,ânti:\"p\",ântu:15,ânul:15,ânz:15,ână:15,âp:\"l\",âq:\"l\",ârf:15,ârs:15,ârt:15,ârz:15,ârş:15,\"âs \":15,âta:\"l\",âtea:\"l\",âteo:15,âtev:15,âti:\"l\",âto:\"l\",âtr:\"l\",âts:\"l\",âtu:\"l\",âté:\"l\",âul:15,\"ây \":\"a\",âğ:\"1f\",âşt:15,ấ:\"a\",\"ã-\":\"p\",ãe:\"p\",ãi:\"a\",ãn:\"a\",\"ão-\":\"p\",ãos:\"p\",ãoz:\"p\",ãs:\"p\",ãy:\"a\",ãz:\"p\",\"ä-\":11,äa:11,äbc:\"n\",\"äbi \":\"1c\",äbin:\"1p\",äch:\"n\",äcka:10,äckl:10,äckte:10,\"äd \":10,ädb:10,ädc:\"n\",ädd:10,ädg:10,ädj:10,ädl:\"n\",ädn:\"y\",ädo:\"1p\",ädr:10,ädt:\"n\",ädu:\"1p\",ädy:11,ädö:\"1p\",äed:\"1c\",äel:11,äem:11,äet:11,äev:\"1c\",äfe:\"n\",äffa:10,äfid:\"1p\",äfr:\"n\",äfs:\"n\",\"äft \":\"n\",äfti:\"n\",äfu:\"1p\",äfö:\"1p\",ägar:10,ägd:10,ägem:\"1c\",ägenh:10,ägg:10,\"ägi \":\"1c\",ägib:\"1c\",ägid:\"1c\",ägik:\"1p\",ägim:\"1c\",ägin:\"1c\",ägit:\"1c\",ägiv:\"1p\",ägl:\"n\",ägn:10,ägo:\"1p\",ägr:10,\"ägs \":10,ägt:\"n\",ägu:\"n\",ägy:\"n\",ägä:\"1k\",äha:\"1c\",ähd:11,äheb:\"1c\",ähed:\"1c\",ähet:11,ähig:\"n\",ähil:\"1n\",ähk:11,ähle:\"n\",ähm:\"n\",ähny:11,ähr:\"n\",ähti:11,ähu:11,ähy:11,ähä:11,äib:\"1c\",äie:\"1c\",äih:11,äij:11,äil:11,äim:11,äip:11,äir:11,äiv:11,äj:11,äkan:\"1p\",äkar:10,\"äker \":10,äkid:\"1c\",äkim:\"1c\",äkinu:\"1c\",äkk:11,äkn:10,äkob:\"1p\",äkol:\"1p\",äkr:10,\"äks \":\"1c\",\"äksi \":11,äksin:\"1c\",äksy:11,äkt:10,äku:11,äky:11,äkär:11,äköm:\"1p\",älab:\"1p\",äldr:10,älem:\"1p\",älet:\"1c\",älik:\"1p\",älit:11,äljan:\"1c\",äljer:10,älke:11,älko:10,\"äll \":10,\"älla \":10,ällan:10,älld:10,ället:10,ällis:11,älln:10,ällä:11,älm:\"1n\",älog:\"1p\",älp:10,älsa:10,älsk:10,ältä:11,älu:11,\"älv \":10,äly:11,\"älä \":11,älöf:\"1p\",äma:11,ämd:10,ämf:10,\"ämi \":\"1n\",ämin:11,ämiz:\"1n\",ämma:10,ämn:10,ämok:\"1n\",ämpa:10,ämr:10,ämta:10,ämu:11,ämy:11,\"ämä \":11,ämän:11,ämö:11,änap:\"1p\",änar:10,\"änd \":10,ända:10,ändik:\"1n\",ändir:\"1n\",ändr:10,änds:10,äned:\"1p\",änel:11,änes:11,änet:11,änga:10,ängd:10,ängr:10,änh:11,\"änik \":\"1p\",\"änka \":10,änker:10,änli:10,änm:11,ännu:10,änol:\"1p\",änp:11,änsk:10,änst:10,änsä:11,\"änt \":10,\"änta \":10,äntad:10,äntar:10,äntä:11,änv:11,äny:11,änz:\"n\",\"änä \":11,änç:\"1n\",äoi:11,äoli:\"1c\",äon:11,äos:11,äpen:\"1p\",äpf:\"n\",äpi:11,äpl:\"1n\",\"äpp \":10,äppl:10,äpu:11,äpä:11,äpü:\"1p\",äq:\"n\",\"är'\":\"n\",ärar:10,äras:\"1c\",ärb:\"n\",ärc:\"n\",\"ärd \":10,\"ärdi \":\"1n\",ärdig:10,ärdim:\"1n\",\"ärg \":10,\"ärge \":\"1c\",ärgi:\"1c\",ärh:10,ärif:10,\"ärik \":\"1n\",ärj:11,ärld:10,ärma:10,ärmi:\"1n\",ärna:10,äro:10,\"ärr \":10,ärrä:11,ärsk:10,ärta:10,ärtä:11,äru:\"n\",äry:11,ärz:\"n\",ärö:11,\"äsa \":10,äsag:\"1p\",äsc:\"n\",\"äsi \":11,äsid:\"n\",äsinu:\"1c\",äsit:11,äska:10,äsl:\"1p\",äsm:11,\"äso \":\"y\",äsr:11,ässt:\"n\",ässä:11,ästa:10,ästy:11,ästä:11,äsu:11,äsy:11,\"äta \":10,ätig:\"n\",ätik:\"1p\",\"ätko \":\"y\",\"ätt \":10,ätta:10,\"ätti \":11,ättn:10,ättra:10,ättre:10,ättä:11,äty:11,ätz:\"n\",ätá:\"y\",ätä:11,ätö:11,äub:\"n\",äuc:\"n\",äud:\"n\",äue:\"n\",äuf:\"n\",äug:\"n\",äul:\"n\",äum:\"n\",äur:\"n\",äut:\"n\",\"äv \":10,ävd:10,ävel:11,äver:10,ävl:10,ävn:10,ävo:\"1p\",ävu:11,ävy:11,ävä:11,ävö:11,äwa:\"1n\",äxa:10,äxl:10,äxo:10,äxt:10,äyd:11,äyh:11,äyk:11,äym:11,äyn:11,äyr:11,äys:11,äytt:11,äyty:11,äyu:\"1p\",äyv:11,\"äze \":\"1n\",äzed:\"1n\",äzen:\"y\",äzir:\"1n\",\"ää \":11,ääg:\"1c\",ääh:11,ääo:11,ääp:11,äät:11,ääv:11,äçe:\"1n\",\"äñ \":\"1n\",äö:11,äý:\"1n\",äč:\"y\",äğ:\"1k\",äň:\"1n\",äť:\"y\",åa:10,\"åb \":\"z\",åbe:\"z\",åbn:\"z\",åbt:\"z\",\"åda \":10,ådde:10,åded:\"z\",åden:\"z\",ådi:12,ådn:\"z\",ådt:\"z\",åed:\"z\",ået:\"z\",åfr:\"z\",åfø:12,\"åg \":10,åga:10,ågel:10,ågl:10,ågn:\"z\",ågo:10,ågr:10,ågs:10,ågå:10,åhä:10,åki:10,åkt:10,åkø:\"z\",åla:10,åld:10,ålene:12,ålig:10,åll:10,åm:10,åna:10,ånb:10,ånda:10,åndk:\"z\",ånds:\"z\",åndt:\"z\",åner:\"z\",ång:10,åni:10,ånn:12,ånte:\"z\",ånv:10,\"åp \":10,åpn:12,åra:10,årdt:\"z\",\"åren \":10,årene:12,årer:\"z\",årf:\"z\",årh:\"z\",årr:10,\"års \":\"z\",årsag:\"z\",årsak:12,åsa:10,åsi:10,åso:10,åss:10,åta:10,\"åte \":12,åtg:10,åti:10,åtm:10,åts:10,åtta:10,åva:10,åve:10,åvi:12,æa:\"t\",æb:\"z\",\"æc \":\"t\",æce:\"t\",æcis:\"z\",æcu:\"t\",\"æd \":\"z\",æda:\"t\",ædb:\"z\",\"ædd \":13,ædde:\"z\",æddi:13,æddu:13,\"æde \":\"z\",ædel:\"z\",æder:\"z\",ædet:\"z\",ædn:\"z\",ædr:\"z\",ædt:\"z\",ædv:\"z\",æe:\"z\",æfa:13,æff:\"z\",æfi:13,æft:\"z\",æga:13,æge:\"z\",ægg:\"z\",ægi:13,ægj:13,ægte:\"z\",ægu:13,ægy:\"z\",\"æi \":\"t\",æis:\"z\",æj:13,\"æk \":\"z\",æke:\"z\",æki:13,ækj:13,ække:\"z\",æknir:13,ækt:13,æku:13,\"æl \":\"z\",æla:13,æld:\"z\",æle:\"z\",ælg:\"z\",ælk:\"z\",ælo:\"t\",ælp:\"z\",ælu:\"t\",ælv:\"z\",\"æm \":13,æma:13,æmm:\"z\",æmp:\"z\",æmt:13,æna:13,æne:\"z\",æng:\"z\",æns:\"z\",ænt:13,ænu:13,æo:\"t\",æpe:\"t\",æpp:\"z\",æpu:13,æq:\"t\",æra:13,ærb:\"z\",ærd:\"z\",æred:\"z\",ærel:\"z\",ærg:\"z\",ærhed:\"z\",ærhet:12,\"æri \":13,\"ærk \":\"z\",ærke:\"z\",ærkt:\"z\",ærkv:13,ærne:12,ærre:\"z\",ærri:13,ærst:\"z\",\"æs \":\"z\",æsa:\"t\",\"æse \":\"z\",æser:\"z\",æsid:\"z\",æsk:\"z\",æsl:\"z\",æsn:\"z\",æso:\"t\",æsp:\"z\",æss:\"z\",\"æsta \":13,æste:\"z\",æstum:13,\"æta \":13,æte:\"t\",æth:\"t\",\"æti \":13,ætir:13,ætl:13,ætn:\"z\",\"ætt \":13,ætta:13,ætte:\"z\",ætti:13,ættu:13,ætu:13,ætó:13,æu:\"t\",\"æv \":\"z\",æva:\"t\",æve:\"z\",ævn:\"z\",ævu:\"t\",\"ç'\":\"1f\",\"ç-\":\"1f\",\"ça-\":\"p\",çado:\"p\",çag:\"1n\",çala:\"1f\",\"çalt \":\"1n\",çaly:\"1n\",çalı:\"1f\",çamo:\"p\",çando:\"p\",çary:\"1n\",\"ças \":\"p\",çat:\"1f\",çay:\"1f\",çb:\"1f\",çd:\"1n\",çec:\"1f\",çed:\"1f\",çeki:\"1f\",çekl:\"1f\",çekt:\"1f\",çem:\"1f\",çenli:\"1n\",çeri:\"1f\",çes:\"1f\",çev:\"1f\",çeş:\"1f\",çg:\"1f\",çif:\"1f\",çik:\"1f\",çilim:\"1n\",çim:\"1f\",çinde:\"1f\",çiy:\"1f\",çiz:\"1f\",çiç:\"1f\",çka:\"1n\",çki:\"1f\",çlary:\"1n\",çları:\"1f\",çle:\"1f\",çlu:\"1f\",çly:\"1n\",çlü:\"1f\",çlı:\"1f\",çmi:\"1f\",\"ço-\":\"p\",çoa:\"p\",çoc:\"1f\",çoe:\"p\",çok:\"1f\",çoo:\"p\",ços:\"p\",çou:\"p\",çs:\"1f\",çt:\"1f\",çue:\"l\",çus:\"l\",çut:\"l\",\"çy \":\"1n\",çyk:\"1n\",çyl:\"1n\",çyn:\"1n\",çyr:\"1n\",çà:\"l\",çá:\"p\",çã:\"p\",çç:\"1f\",çó:\"p\",çõ:\"p\",çöp:\"1f\",çú:\"p\",çük:\"1f\",çüm:\"1f\",çün:\"1f\",çý:\"1n\",çım:\"1f\",çır:\"1f\",èb:\"l\",èc:\"l\",èd:\"l\",èf:\"l\",èg:\"l\",èl:\"l\",\"èm \":\"a\",èmes:\"l\",\"èn \":\"a\",\"ène \":\"l\",èo:\"a\",èq:\"l\",èrem:\"l\",èren:\"l\",ères:\"l\",ès:\"l\",èt:\"l\",èv:\"l\",\"è \":\"q\",\"é'\":14,\"éa \":\"l\",éab:\"l\",éad:\"s\",éai:\"l\",éat:\"l\",éau:\"l\",ében:14,ébl:\"l\",ébu:\"l\",ébé:\"l\",écd:\"o\",éces:\"l\",éche:\"l\",échi:\"l\",écid:\"l\",écis:\"l\",écl:\"l\",écon:\"l\",écou:\"l\",écr:\"l\",éctr:\"o\",écur:\"l\",écè:\"l\",\"éd \":14,édec:\"l\",\"édio \":\"p\",éem:\"o\",ées:\"l\",éfl:\"l\",éfono:\"o\",éfr:\"l\",éfu:\"l\",éfè:\"l\",éfé:\"l\",égb:14,\"ége \":14,éged:14,égem:14,éges:14,éget:14,égg:14,égli:\"l\",égo:\"l\",\"égre \":14,\"égy \":14,égâ:\"l\",égü:14,éhi:\"l\",éhl:\"u\",éhá:14,éia:\"p\",éid:\"s\",éil:\"s\",éjam:\"o\",éjeu:\"l\",éji:\"o\",éjj:14,éjo:\"l\",éjs:14,éju:\"l\",éke:14,\"ékk \":13,\"éko \":\"u\",ékp:14,éks:14,éky:\"u\",élags:13,éld:14,élec:\"l\",élek:14,élem:14,élet:14,élev:\"l\",élj:14,élk:14,éln:14,\"élo \":\"l\",élr:14,éls:14,élte:14,élye:14,élép:\"l\",\"ém-\":\"p\",émy:\"u\",émá:14,énag:\"l\",éndo:\"o\",ének:14,énf:\"o\",éng:\"o\",énk:14,\"éno \":\"u\",\"ént \":14,énta:\"o\",ény:14,énz:14,énér:\"l\",éoc:\"l\",éog:\"l\",éom:\"l\",éon:\"l\",éop:\"l\",éor:\"l\",éos:\"l\",épar:\"l\",épes:14,épho:\"l\",épj:14,épon:\"l\",épou:\"l\",épp:14,éps:14,épu:\"l\",épz:14,épê:\"l\",épí:14,épü:14,éran:\"l\",érat:\"l\",érdé:14,\"ére \":14,\"érek \":14,\"érem \":14,érenc:\"l\",érent:\"l\",érer:\"l\",éress:\"l\",érfi:14,érh:14,érias:\"p\",érien:\"l\",érieu:\"l\",\"ério \":\"p\",ériq:\"l\",érité:\"l\",érj:14,érk:14,érl:14,\"érna \":13,\"éro \":\"l\",érté:14,\"éru \":\"y\",érz:14,\"éré \":\"l\",érê:\"l\",érü:14,ésent:\"l\",éser:\"l\",ésid:\"l\",ésir:\"l\",ésn:14,ésol:\"l\",ésor:\"l\",ésr:14,ésul:\"l\",ész:14,étai:\"l\",étei:\"l\",étel:14,étend:\"l\",étest:\"l\",étf:14,étie:\"l\",étio:\"l\",étl:14,\"éto \":\"u\",étran:\"l\",éts:14,\"étt \":13,étta:13,étti:13,éttu:13,étud:\"l\",étv:14,\"été \":\"l\",éun:\"l\",éuss:\"l\",\"év \":14,\"éva \":14,éveil:\"l\",\"ével \":14,\"éves \":14,évis:\"l\",évit:\"l\",évu:\"l\",évá:14,\"éz \":14,ézd:14,éze:14,ézn:14,ézz:14,\"é \":\"l\",éâ:\"l\",éç:\"l\",\"éé \":\"l\",één:\"r\",éñ:\"o\",éü:14,éč:\"u\",éš:\"u\",éž:\"u\",\"ê-l\":\"p\",\"ê-m\":\"p\",\"ê-s\":\"p\",êb:\"p\",êc:\"l\",êl:\"l\",\"ême \":\"l\",êmi:\"p\",\"ên \":\"a\",ênc:\"p\",ênd:\"p\",êng:\"a\",êni:\"p\",ênt:\"p\",ênu:\"p\",ênç:\"p\",êné:\"l\",êp:\"l\",êq:\"l\",êr:1,ês:\"p\",êt:\"l\",\"êu \":\"a\",êv:\"l\",êx:\"p\",ế:\"a\",ëe:\"r\",ëi:\"r\",ële:\"r\",ëls:1,\"ën \":\"r\",ënt:\"r\",ër:\"r\",ëz:\"r\",ìa:\"a\",ìm:\"a\",ìn:\"a\",\"í-\":\"p\",íad:\"p\",íai:\"o\",íbeh:\"y\",íben:\"u\",íbil:\"u\",\"íbit \":\"u\",íble:\"o\",íbo:\"o\",íbí:\"u\",íbú:13,ícar:\"p\",\"íce \":\"u\",ícei:\"p\",\"íci \":\"u\",ícia:\"p\",ície:\"p\",ício:\"p\",\"íct \":\"u\",ící:\"u\",ídd:13,\"íde \":\"y\",ídem:\"y\",ídeš:\"y\",ídio:\"p\",ídit:\"u\",ídk:\"u\",ídl:\"u\",ídu:\"p\",ídy:\"u\",ídá:\"u\",ídí:\"u\",\"íe \":\"o\",íei:\"p\",íem:\"o\",íen:\"o\",íes:\"o\",\"íf \":13,ífa:13,\"ífi \":13,ífl:13,ífo:\"o\",ífr:\"o\",ífs:13,ífu:13,\"íg \":14,ígl:\"o\",ígo:\"o\",ígr:\"o\",így:14,ígé:14,íha:\"u\",íhk:\"y\",ího:\"u\",íjm:\"u\",íjn:\"u\",íkal:\"u\",íkar:13,\"íkat \":\"u\",\"íkem \":\"u\",íki:13,íkj:13,íkle:13,íkt:13,íkur:13,íká:\"u\",íld:\"o\",ílim:\"s\",ílin:13,ílli:13,íls:13,ílé:\"u\",ímalo:\"u\",íman:13,ímc:\"u\",ímn:\"u\",ímt:\"u\",\"ímá \":\"u\",ínar:13,íngu:\"p\",\"ính \":\"a\",ínio:\"p\",ínir:13,ínk:\"u\",\"íns \":13,ínum:13,\"íná \":\"u\",ínám:\"u\",ínú:13,\"ío \":\"o\",íob:\"s\",íoch:\"s\",íom:\"s\",\"íon \":\"s\",íonn:\"s\",íor:\"s\",ípc:\"p\",ípio:\"p\",írg:\"p\",írj:14,írm:\"o\",író:14,ísal:\"y\",ísim:\"o\",ísin:13,ísla:13,ísn:\"u\",ísp:\"o\",ísq:\"p\",íss:\"p\",\"íst \":\"u\",ístn:\"u\",\"ísto \":\"u\",ísé:14,ísť:\"y\",ítaj:\"y\",ítani:14,ítar:13,ítea:\"s\",\"ítel \":\"u\",ítelk:\"u\",íteni:14,ítet:14,íth:14,\"ítim \":\"y\",ítj:14,ítn:\"u\",ítot:14,ítra:\"u\",íts:14,ítur:13,ítv:14,ítás:14,íté:14,ítí:\"u\",ító:14,íu:13,íval:\"u\",\"ívat \":\"u\",ívei:\"p\",ívej:\"u\",\"ível \":\"p\",íves:14,ívid:\"p\",ívit:\"u\",ívj:14,ívk:\"u\",ívn:14,ívt:14,\"ívá \":\"u\",ívám:\"u\",íví:\"u\",ívü:14,íç:\"p\",íó:13,\"íč \":\"u\",íče:\"u\",íči:\"u\",íď:\"y\",íň:\"u\",íšem:\"y\",íšk:\"y\",íšte:\"y\",íští:\"u\",íšu:\"u\",\"íž \":\"u\",ížd:\"u\",íže:\"u\",ížk:\"u\",ížn:\"u\",íží:\"u\",îc:\"l\",îi:15,\"îl \":15,île:\"l\",îmb:15,îmi:15,împ:15,îmé:\"l\",\"în \":15,înc:15,înd:15,înf:15,îng:15,înl:15,înn:15,înr:15,îns:15,înt:15,înv:15,îné:\"l\",înă:15,ît:\"l\",îş:15,\"ï-\":\"l\",ïa:\"l\",ïc:\"l\",\"ïe \":\"l\",ïef:\"r\",ïeu:\"l\",ïf:\"l\",ïg:\"l\",ïl:\"l\",\"ïn \":\"r\",ïnc:\"l\",ïns:\"r\",ïnt:\"r\",ïnv:\"r\",ïq:\"l\",ïro:\"r\",ïrr:\"r\",\"ïs \":\"l\",ïso:\"r\",ïss:\"l\",ïv:\"l\",ïw:\"l\",ð:13,ñg:\"1k\",ñk:\"1n\",ñm:\"1n\",ñn:\"1k\",ñr:\"1k\",ñs:\"1n\",ñu:\"o\",ñy:\"1n\",ñz:\"1n\",ñá:\"o\",ñé:\"o\",ñí:\"o\",ñó:\"o\",ñü:\"1n\",ñğ:\"1k\",òa:\"a\",òi:\"a\",òn:\"a\",\"ó-\":14,\"óa \":\"a\",óan:14,\"ób \":\"1a\",óbb:14,óbm:\"1a\",óbv:\"p\",óbá:14,ócai:\"s\",ócio:\"p\",óct:\"o\",ócu:\"p\",ócz:\"1a\",ódio:\"p\",ódj:14,ódk:\"1a\",ódm:\"1a\",ódý:13,óe:14,ófin:13,óge:\"o\",ógy:14,ógé:14,\"óir \":\"s\",\"óis \":\"p\",\"ój \":\"1a\",ójd:\"1a\",óji:\"o\",ójk:\"1a\",ójr:\"1a\",ójs:\"1a\",ójá:14,\"ókin \":13,ókina:13,ókinn:13,óko:14,óks:13,óký:13,ólan:13,\"óle \":\"1a\",ólf:13,\"ólin \":13,ólinn:13,ólk:13,\"ólo \":\"o\",\"ómo \":\"o\",ómp:\"o\",óms:13,ómö:13,ónaí:\"s\",ónd:\"o\",ónl:13,óns:\"y\",ónu:13,ónv:13,óo:14,\"ópe \":\"y\",ópr:\"p\",óqui:\"p\",\"óre \":\"1a\",órej:\"1a\",órf:\"p\",órh:14,ório:\"p\",órk:\"1a\",órr:\"o\",\"órum \":13,óry:\"1a\",órz:\"1a\",órá:14,órą:\"1a\",órę:\"1a\",ósz:14,ósá:14,ótb:13,ótc:\"1a\",ótg:13,\"óti \":13,ótim:\"p\",\"ótt \":13,ótta:13,ótti:13,ótá:14,óun:13,\"óval \":14,óvel:\"p\",óven:\"o\",óvil:\"o\",ów:\"1a\",óá:14,óé:14,óí:14,óór:\"r\",óć:\"1a\",ół:\"1a\",\"ô-\":\"a\",ôb:\"y\",ôc:\"y\",ôi:\"a\",ôj:\"y\",ôk:\"y\",\"ôl \":\"y\",ôla:\"l\",\"ôle \":\"l\",ôlež:\"y\",ôli:\"y\",ôlé:\"l\",\"ôm \":\"a\",ômi:\"p\",ômo:\"p\",ômé:\"l\",\"ôn \":\"a\",ông:\"a\",ôni:\"p\",ôno:\"p\",ôp:\"l\",ôq:\"p\",ôre:1,\"ôs \":\"p\",ôsm:\"y\",ôso:\"y\",ôss:\"p\",\"ôt \":\"l\",ôti:\"l\",ôtr:\"l\",ôts:\"l\",ôtu:\"l\",ôté:\"l\",ôvero:\"y\",ôvo:\"y\",ôň:\"y\",ôž:\"y\",ố:\"a\",\"õ \":\"a\",õb:\"1c\",õd:\"1c\",õg:\"1c\",õh:\"1c\",õi:\"1c\",õl:\"1c\",õn:\"1c\",õp:\"1c\",õr:\"1c\",õs:\"1c\",õt:\"1c\",õu:\"1c\",õv:\"1c\",õõ:\"1c\",\"öa \":10,öal:11,öar:10,öas:11,öau:11,öbb:14,öch:\"n\",öcs:14,\"öda \":10,ödad:10,ödas:\"1p\",ödde:10,ödels:10,ödeme:\"1f\",\"ödi \":\"1p\",ödiko:\"1p\",ödo:\"1p\",ödy:11,ödä:11,ödön:\"1p\",ödü:\"1f\",öel:\"1c\",öfi:\"1p\",öfk:\"1f\",öfn:13,öfo:\"1p\",öfu:13,öga:10,ögen:\"n\",ögeto:\"1p\",ögli:\"n\",ögon:10,ögreg:13,ögu:13,ögö:14,öha:11,öhk:11,öhl:\"n\",öhn:\"n\",öht:\"n\",öhu:\"n\",öhä:11,öi:11,öja:10,öjd:10,öjl:10,öju:11,öjä:11,\"öka \":10,\"öker \":10,ökma:\"1n\",\"ökt \":10,ökum:13,ökä:11,öké:14,ölc:14,öldma:13,öleg:\"1n\",ölja:10,öljd:10,öljer:10,\"ölk \":10,öllu:13,ölsk:13,ölu:13,ölva:13,ölvu:13,ölz:\"n\",ölä:11,ölç:\"1f\",ölüm:\"1f\",ömde:10,ömegi:\"1n\",ömek:\"1n\",ömib:\"1p\",ömma:10,ömmer:10,ömob:\"1p\",ömol:\"1p\",ömom:\"1p\",öms:10,\"ömu \":13,ömul:13,ömy:11,ömä:11,önb:14,önce:\"1f\",önda:10,öndi:13,öndu:13,öneml:\"1f\",öngu:13,önig:\"n\",önik:\"1p\",önnek:14,önnen:\"n\",önni:14,önnt:\"n\",önnu:13,önny:14,önska:10,önsku:13,önstr:10,önä:11,önö:14,öo:11,\"öpa \":10,öpf:\"n\",öplen:\"1n\",öpm:\"1f\",\"öpo \":\"1p\",öppn:10,\"öpt \":10,öpy:11,öpä:11,öra:10,örbi:10,örda:10,ördi:\"1n\",öredr:10,öreta:10,\"örg \":13,örja:10,örkez:\"1n\",örkl:10,örky:10,örlor:10,örnu:13,\"örr \":10,örra:10,örrä:10,örsik:10,örsla:10,örsta:10,örsto:10,örstå:10,örsv:10,örsök:10,örter:\"n\",örtj:10,örté:14,örug:13,örum:13,örut:10,öry:11,örö:14,örý:\"1n\",\"ösa \":10,ösc:\"n\",\"öse \":\"n\",ösis:\"n\",öske:11,ösku:13,össz:14,ösu:\"n\",ösz:14,ötab:\"1c\",ötc:\"n\",ötlet:14,ötsli:10,öttem:14,öttu:13,ötz:\"n\",ötä:11,öté:14,ötü:\"1f\",\"öva \":10,övab:\"1p\",\"övde \":10,övere:10,överl:10,överr:10,övers:10,övert:10,övet:14,övl:10,övr:10,övy:11,övä:11,övé:14,övö:14,öwd:\"1n\",öwl:\"1n\",öwn:\"1n\",öwr:\"1n\",öwü:\"1n\",öx:13,öyh:11,öyle:\"1f\",öys:11,öyt:11,özt:14,özé:14,özö:14,öä:11,öçe:\"1k\",öñ:\"1n\",ööd:\"1c\",öög:\"1c\",öök:\"1c\",ööl:\"1c\",öön:11,öör:11,öös:\"1c\",öý:\"1n\",öğ:\"1f\",öň:\"1n\",öşe:\"1f\",\"øb \":\"z\",øbe:\"z\",øbl:\"z\",øbs:\"z\",øbt:\"z\",\"ødde \":12,ødder:\"z\",ødele:12,øden:\"z\",øder:\"z\",ødes:\"z\",ødet:\"z\",ødev:\"z\",ødi:\"z\",ødm:\"z\",\"ødre \":\"z\",ødte:\"z\",ødvi:\"z\",øed:\"z\",øer:\"z\",øfli:\"z\",\"øg \":\"z\",øge:\"z\",øgg:\"z\",øgl:\"z\",øgt:\"z\",øj:\"z\",\"øk \":12,\"øke \":12,økel:12,økene:12,øker:12,økkel:12,økol:\"z\",økt:12,ølet:\"z\",ølger:\"z\",øll:\"z\",øls:\"z\",ølv:\"z\",ømmed:\"z\",ømn:\"z\",ømr:\"z\",\"øn \":\"z\",ønde:\"z\",øne:\"z\",ønh:\"z\",ønl:\"z\",\"ønn \":12,ønns:12,\"øns \":\"z\",ønse:\"z\",\"ønt \":\"z\",ønte:\"z\",ønts:\"z\",øp:12,øra:12,ørd:\"z\",ørek:\"z\",øret:\"z\",\"ørg \":\"z\",ørge:\"z\",ørgs:\"z\",øri:12,ørkl:\"z\",\"ørn \":\"z\",ørnen:\"z\",ørsm:12,øræ:\"z\",øsk:\"z\",øss:\"z\",østen:12,østr:\"z\",\"øt \":12,øte:12,øtr:\"z\",\"øtt \":12,øvd:12,øved:\"z\",øvet:\"z\",øvh:\"z\",øvl:\"z\",\"øvn \":\"z\",øvr:\"z\",øvs:\"z\",øy:12,ùa:\"a\",ùi:\"a\",ùm:\"a\",ùn:\"a\",ùy:\"a\",\"ú-\":14,úar:13,úas:\"o\",úbil:\"y\",úbr:\"o\",\"úca \":\"y\",úce:\"y\",úch:\"o\",\"úci \":\"y\",úco:\"y\",úct:\"y\",údi:\"p\",úe:\"o\",úfam:\"y\",úgo:14,úgy:14,úhl:\"y\",úho:\"o\",úil:\"s\",úinn:13,úint:\"s\",úirt:\"s\",\"új \":14,úje:\"o\",újr:14,újs:14,újt:14,úkl:13,úkr:13,úlka:13,úloh:\"y\",úly:14,úmb:\"o\",úmu:\"p\",úmy:\"u\",\"úna \":13,únc:\"p\",\"úng \":\"a\",únm:\"o\",\"únta \":\"s\",úo:\"o\",\"úp \":\"a\",úpil:\"y\",úpr:\"y\",úre:\"o\",úrk:\"y\",úru:13,úsen:\"y\",úsin:13,úspe:\"y\",úsq:\"o\",ússi:\"p\",ússn:13,úsun:13,úsz:14,úsái:\"s\",úta:13,útbo:\"o\",\"úto \":\"y\",útri:\"y\",úts:13,útur:13,úvaj:\"y\",úvi:\"p\",úy:\"o\",úzsk:\"y\",úzš:\"y\",\"úč \":\"y\",\"úče \":\"y\",účk:\"y\",úš:\"y\",úť:\"y\",úži:\"y\",\"û \":\"l\",ûc:\"l\",ûl:\"l\",ûn:\"l\",ûr:\"l\",ût:\"l\",\"ü'\":\"1f\",\"üa \":\"1c\",\"über \":\"n\",überl:\"n\",überr:\"n\",übers:\"n\",übl:\"n\",übri:\"n\",übs:\"n\",übt:\"n\",übu:\"n\",üca:\"1f\",üch:\"n\",ück:\"n\",ücr:\"1f\",ücü:\"1f\",\"üd \":\"1c\",üdik:\"1p\",üdl:\"n\",üdr:\"1c\",\"üe \":\"o\",üed:\"o\",üen:\"o\",üer:\"o\",ües:\"o\",üey:\"o\",üeñ:\"o\",üff:\"n\",üfun:\"n\",ügb:\"n\",ügg:14,ügl:\"n\",ügn:\"n\",ügs:\"n\",ügt:\"n\",ügu:\"n\",ügy:14,\"üh \":\"n\",ühj:\"n\",ühl:\"n\",ühm:\"n\",ühn:\"n\",ühr:\"n\",ühs:\"n\",ühu:\"n\",üin:\"o\",üis:\"o\",üji:\"1n\",üjü:\"1n\",üki:\"1p\",ükli:\"1n\",ükob:\"1p\",ükof:\"1p\",ükol:\"1p\",ükom:\"1p\",ükse:\"1f\",üksi:\"1c\",üksk:\"1c\",ükt:\"1f\",ükü:\"1f\",ülds:\"1c\",ülei:14,ület:14,ülj:14,üllt:\"n\",\"ülm \":\"1c\",üln:14,üly:14,ülé:14,ülö:14,üma:\"1f\",\"ümi \":\"1n\",ümki:\"1n\",ümle:\"1f\",ümn:\"1c\",ümp:\"n\",üms:\"1f\",ümü:\"1f\",\"ündi \":\"1n\",ündir:\"1n\",ünemo:\"1n\",ünf:\"n\",\"üni \":\"1n\",ünik:\"1p\",ünip:\"1n\",üniñ:\"1n\",\"ünk \":14,üno:\"1n\",\"üns \":\"1n\",ünsc:\"n\",ünst:\"n\",üny:\"1f\",ünz:\"n\",ünä:\"1n\",\"ünü \":\"1f\",ünüm:\"1f\",ünün:\"1f\",üný:\"1n\",üpd:\"r\",üpe:\"1f\",üpf:\"n\",üph:\"1f\",ürch:\"n\",üred:\"1f\",üreg:\"1n\",ürf:\"n\",ürgi:\"1c\",ürit:\"1c\",ürleş:\"1n\",ürli:\"n\",ürlä:\"1n\",ürp:\"1f\",ürz:\"n\",\"üs \":\"1f\",üsc:\"n\",\"üsi \":\"1c\",üsim:\"1c\",üsis:\"1c\",üssel:\"n\",üssen:\"n\",üsst:\"n\",üsz:14,üsü:\"1f\",ütf:\"1f\",\"ütik \":\"1p\",ütin:\"1n\",\"ütt \":14,ütz:\"n\",ütö:14,ütü:\"1f\",üven:\"1f\",üw:\"1n\",üy:\"1f\",\"üzel \":\"1f\",üzer:\"1f\",üzg:\"1f\",üzün:\"1f\",üçi:\"1n\",üçl:\"1f\",üçü:\"1f\",üé:\"o\",üí:\"o\",\"üñ \":\"1n\",üü:\"1c\",üý:\"1n\",üğ:\"1f\",üň:\"1n\",\"üş \":\"1f\",üşm:\"1f\",üşt:\"1f\",\"ýa \":\"1n\",\"ýa-\":\"1n\",ýad:\"1n\",ýag:\"1n\",ýah:\"1n\",ýak:\"1n\",ýal:\"1n\",ýam:\"1n\",ýap:\"1n\",ýar:\"1n\",ýas:\"1n\",ýat:\"1n\",ýaz:\"1n\",ýañ:\"1n\",ýaň:\"1n\",ýaş:\"1n\",\"ýba \":\"y\",ýbe:\"y\",\"ýc \":\"u\",ýchl:\"y\",ýda:\"1n\",\"ýde \":\"1n\",ýdem:\"1n\",ýden:\"u\",ýdi:\"1n\",ýdn:\"u\",ýdu:\"1n\",ýdy:\"1n\",ýdý:\"1n\",ýe:\"1n\",ýg:\"1n\",ýho:\"u\",ýi:\"1n\",ýja:13,ýje:\"1n\",\"ýji \":\"1n\",ýju:13,ýká:\"u\",ýla:\"1n\",ýlen:\"1n\",ýly:\"1n\",ýlä:\"1n\",ýlí:\"u\",ýme:\"1n\",ýmu:\"u\",ýnap:\"1n\",ýnd:13,ýne:\"1n\",ýni:13,ýo:\"1n\",ýri:13,ýro:\"u\",ýrt:13,\"ýs \":13,ýse:\"1n\",ýsi:13,ýska:13,ýsku:13,ýsy:\"1n\",\"ýta \":13,ýtaj:\"y\",ýtal:\"y\",ýtd:\"1n\",ýtg:\"1n\",ýti:13,ýtj:\"1n\",ýtm:\"1n\",ýtt:13,ýtu:13,ýu:\"1n\",\"ýva \":\"y\",\"ýval \":\"u\",ývam:\"y\",ývá:\"u\",ýw:\"1n\",ýy:\"1n\",ýzn:\"u\",ýä:\"1n\",ýó:13,ýö:\"1n\",ýü:\"1n\",ýý:\"1n\",ýş:\"1n\",ýše:\"u\",ýšl:\"u\",ýžd:\"y\",þ:13,āa:\"1d\",āba:\"t\",ābi:\"t\",ābo:\"1d\",ābu:\"t\",\"āc \":\"1d\",āca:\"1d\",āci:\"1d\",āct:\"t\",ācā:\"1d\",ācī:\"1d\",āda:\"1d\",\"ādi \":\"1d\",ādr:\"1d\",āds:\"1d\",ādu:\"1d\",ādā:\"1d\",ādē:\"1d\",ādī:\"1d\",āe:\"t\",āf:\"1d\",āg:\"t\",āi:\"1d\",āj:\"1d\",āk:\"1d\",\"āla \":\"t\",āle:\"t\",\"āli \":\"1d\",ālij:\"1d\",āls:\"1d\",\"ālu \":\"1d\",ālā:\"1d\",ālē:\"t\",ālī:\"t\",\"ām \":\"1d\",āma:\"1d\",āmi:\"1d\",āmu:\"t\",āmī:\"t\",āna:\"1d\",āne:\"t\",\"āni \":\"1d\",āno:\"1d\",\"āns \":\"1d\",ānsi:\"t\",\"ānu \":\"1d\",āp:\"1d\",ārd:\"1d\",āre:\"t\",ārg:\"1d\",ārl:\"1d\",ārp:\"1d\",ārs:\"1d\",ārt:\"1d\",āru:\"t\",ārz:\"1d\",ārā:\"1d\",ārš:\"1d\",āsa:\"1d\",āsi:\"1d\",āsn:\"t\",āst:\"1d\",\"āt \":\"1d\",āts:\"1d\",ātā:\"1d\",ātū:\"t\",\"āv \":\"1d\",āva:\"1d\",āvi:\"t\",āvī:\"t\",āz:\"1d\",āš:\"1d\",\"ă-\":15,ăb:15,ăc:15,ăd:15,ăg:15,ăi:15,ăj:15,ăl:15,ăma:15,ămi:15,ămâ:15,\"ăn \":\"a\",ăne:15,ăng:\"a\",ăni:15,ănu:15,ănâ:15,ănă:15,ăp:15,ăr:15,ăs:15,ăt:15,ău:15,ăv:15,ăz:15,ąb:\"1a\",ąc:\"1a\",ąd:\"1a\",ąg:\"1a\",ąj:\"1b\",ąl:\"1b\",ąm:\"1b\",ąn:\"1b\",ąp:\"1a\",ąr:\"1b\",ąt:\"1a\",ąz:\"1a\",ąć:\"1a\",ął:\"1a\",ąž:\"1b\",ća:\"v\",ćb:\"1a\",ćc:\"1a\",ćd:\"1a\",će:\"v\",ći:\"v\",ćm:\"1a\",ćn:\"v\",ćo:\"v\",ćs:\"1a\",ću:\"v\",ćw:\"1a\",\"ć \":\"1a\",ĉ:\"1o\",\"č-\":3,\"ča-\":3,čad:3,čajne:\"y\",\"čak \":\"v\",čakaj:\"y\",čakal:\"y\",čaká:\"y\",čao:\"v\",časi:\"y\",časí:\"u\",čatá:\"y\",čav:\"v\",čaw:3,čać:\"v\",\"čaš \":\"v\",čať:\"y\",čc:\"u\",čed:3,čeg:\"v\",čeh:\"u\",čej:\"u\",čeká:\"u\",čenic:\"v\",čenie:\"y\",čenj:\"v\",čení:\"u\",čeo:\"v\",čeru:\"y\",često:\"v\",četi:\"v\",četl:\"u\",čev:\"v\",čew:3,\"či-\":3,čiai:\"1b\",čiam:\"1b\",čias:\"1b\",čiatk:\"y\",čiau:\"1b\",čiav:\"1b\",čie:\"y\",čig:\"v\",čik:3,činj:\"v\",čioj:\"1b\",čita:\"v\",čiti:\"v\",čiu:\"1b\",čiz:3,čią:\"1b\",čić:\"v\",\"čiš \":\"v\",čiū:\"1b\",čkaj:\"y\",\"čkat \":\"u\",čkej:\"u\",čki:\"v\",čla:\"v\",čli:\"u\",člove:\"y\",čna:\"v\",\"čni \":\"v\",\"čno \":\"v\",čnu:\"v\",\"ční \":\"u\",\"čo \":\"y\",čoh:\"y\",čom:\"y\",čor:\"y\",čos:\"y\",\"čov \":\"y\",čove:\"v\",čs:\"u\",čtv:\"u\",čty:\"u\",čud:\"v\",\"čul \":\"y\",čuna:\"v\",čuo:\"v\",čur:3,čuv:\"v\",čuť:\"y\",čv:\"v\",čw:3,čx:3,čy:\"1b\",čá:\"u\",číc:\"u\",\"čína \":\"y\",číná:\"u\",čír:\"u\",číst:\"u\",čív:\"u\",čú:\"y\",čč:3,čš:\"y\",ďak:\"y\",ďal:\"y\",ďan:\"u\",ďar:\"u\",ďá:\"u\",đaj:\"v\",đal:\"v\",đam:\"v\",\"đan \":\"a\",đang:\"a\",đao:\"v\",đau:\"a\",đav:\"v\",đeo:\"a\",đet:\"v\",đeš:\"v\",đit:\"v\",điv:\"v\",điê:\"a\",đo:\"a\",\"đu \":\"v\",đua:\"a\",đuj:\"v\",đà:\"a\",đá:\"a\",đâ:\"a\",đã:\"a\",đè:\"a\",đé:\"a\",đê:\"a\",đì:\"a\",đí:\"a\",đò:\"a\",đó:\"a\",đô:\"a\",đù:\"a\",đú:\"a\",đă:\"a\",ēb:\"t\",\"ēc \":\"1d\",ēci:\"t\",ēct:\"t\",\"ēd \":\"1d\",ēde:\"t\",ēdie:\"1d\",ēdit:\"t\",\"ēdu \":\"1d\",ēdz:\"1d\",ēdō:\"t\",ēga:\"1d\",ēgi:\"t\",ēgt:\"1d\",ēj:\"1d\",ēk:\"1d\",\"ēl \":\"1d\",ēla:\"1d\",ēli:\"1d\",ēlo:\"1d\",ēlr:\"1d\",ēls:\"1d\",ēlu:\"1d\",\"ēm \":\"1d\",ēma:\"1d\",ēmi:\"t\",ēnd:\"t\",ēnis:\"t\",ēpi:\"t\",\"ēr \":\"1d\",ēra:\"1d\",ēre:\"t\",ērij:\"1d\",ērn:\"1d\",ēro:\"1d\",ērs:\"1d\",ērt:\"1d\",ēru:\"t\",ērō:\"t\",\"ēst \":\"1d\",ēstu:\"1d\",ēsu:\"t\",\"ēt \":\"1d\",ētas:\"1d\",ētie:\"1d\",ēts:\"1d\",\"ētu \":\"1d\",ētā:\"1d\",ēvs:\"1d\",ēx:\"t\",ēš:\"1d\",ė:\"1b\",ęb:\"1a\",ęc:\"1a\",ęd:\"1a\",ęg:\"1a\",ęk:\"1a\",ęl:\"1a\",ęp:\"1a\",\"ęs \":\"1b\",ęsa:\"1a\",ęso:\"1a\",ęsti:\"1b\",ęsto:\"1a\",ęt:\"1a\",ęz:\"1a\",\"ę \":\"1a\",ęć:\"1a\",ęł:\"1a\",ęž:\"1b\",ě:\"u\",ĝ:\"1o\",\"ğ \":\"1f\",\"ğ'\":\"1f\",ğc:\"1f\",ğd:\"1f\",ğe:\"1f\",ği:\"1f\",ğl:\"1f\",ğm:\"1f\",ğn:\"1f\",ğo:\"1f\",ğr:\"1f\",ğs:\"1f\",ğu:\"1f\",ğz:\"1f\",ğä:\"1k\",ğü:\"1f\",ģ:\"1d\",ĥ:\"1o\",ĩ:\"a\",īa:\"t\",ība:\"1d\",ībe:\"t\",ībi:\"t\",ību:\"1d\",ībā:\"1d\",\"īc \":\"t\",īca:\"t\",īce:\"t\",īcit:\"t\",īcu:\"t\",īcā:\"t\",īcī:\"t\",\"īd \":\"1d\",īde:\"t\",īdi:\"t\",īdz:\"1d\",īdē:\"1d\",īga:\"1d\",īgi:\"1d\",īgs:\"1d\",īgu:\"1d\",īgā:\"1d\",īj:\"1d\",īk:\"1d\",īlu:\"1d\",\"īm \":\"1d\",īme:\"1d\",īmi:\"t\",īmu:\"t\",īmē:\"1d\",īmī:\"t\",īne:\"t\",īni:\"1d\",īns:\"t\",īnu:\"1d\",īnā:\"t\",īpa:\"1d\",īps:\"t\",īq:\"t\",īra:\"1d\",īre:\"t\",īri:\"1d\",īrs:\"1d\",īrā:\"t\",īsc:\"t\",īsie:\"1d\",īsis:\"t\",īsn:\"t\",īsta:\"1d\",\"īsti \":\"1d\",\"īt \":\"1d\",īte:\"t\",\"īti \":\"1d\",ītie:\"1d\",īto:\"1d\",īts:\"1d\",\"ītu \":\"1d\",ītā:\"1d\",īva:\"1d\",īvn:\"1d\",īvo:\"1d\",īvs:\"1d\",īvī:\"t\",īx:\"t\",īz:\"1d\",īš:\"1d\",į:\"1b\",\"ı'\":\"1f\",\"ı-\":\"1f\",ıc:\"1f\",ıf:\"1f\",ıh:\"1f\",ıi:\"1f\",ık:\"1f\",ıq:\"1k\",ıu:\"1f\",ıv:\"1f\",ıñ:\"1k\",ıı:\"1f\",ĵ:\"1o\",ķ:\"1d\",ĺ:\"y\",ļ:\"1d\",ľ:\"y\",\"ł \":\"1a\",ła:\"1a\",łb:\"1a\",łc:\"1a\",łd:\"1a\",łe:\"1a\",łg:\"1a\",łk:\"1a\",łl:\"1a\",łm:\"1a\",łn:\"1a\",ło:\"1a\",łp:\"1a\",łs:\"1a\",łt:\"1a\",łu:\"1a\",łw:\"1a\",ły:\"1a\",łz:\"1a\",łó:\"1a\",łą:\"1a\",łę:\"1a\",ńc:\"1a\",ńk:\"1a\",ńm:\"1a\",ńs:\"1a\",ņ:\"1d\",ňd:\"1n\",ňe:\"1n\",ňh:\"y\",ňi:\"1n\",ňl:\"1n\",ňm:\"1n\",ňr:\"1n\",ňy:\"1n\",ňz:\"1n\",ňç:\"1n\",ňü:\"1n\",ōbī:\"t\",\"ōc \":\"t\",ōch:\"o\",ōd:\"t\",ōg:\"n\",ōk:\"n\",ōl:\"t\",ōm:\"t\",ōn:\"t\",ōr:\"t\",\"ōs \":\"t\",ōsc:\"t\",ōsu:\"t\",ōti:\"t\",ōto:\"n\",ōv:\"t\",ő:14,œb:\"t\",œd:\"t\",œi:\"l\",œl:\"t\",œn:\"t\",œp:\"t\",œs:\"l\",œt:\"t\",œu:\"l\",ŕ:\"y\",ř:\"u\",ś:\"1a\",ŝ:\"1o\",\"ş'\":\"1f\",\"ş-\":\"1f\",şab:\"1f\",şac:\"1f\",şady:\"1n\",şadı:\"1f\",şag:\"1n\",şal:\"1f\",şans:\"1f\",şany:\"1n\",şap:\"1f\",şara:\"1f\",şark:\"1f\",şary:\"1n\",şarı:\"1f\",şay:\"1f\",şaş:\"1f\",şb:\"1f\",şco:15,şda:\"1n\",şde:\"1n\",şdi:\"1n\",şdy:\"1n\",şec:\"1f\",şeh:\"1f\",şeki:\"1f\",şekk:\"1f\",şem:\"1f\",şenb:\"1n\",şey:\"1f\",şf:\"1f\",\"şga \":\"1n\",şgala:\"1n\",\"şgul \":\"1f\",şh:\"1f\",\"şi-\":15,şig:\"1n\",şii:\"1f\",şil:\"1f\",şimd:\"1f\",\"şip \":\"1n\",şis:\"1f\",şiy:\"1f\",şiň:\"1n\",şiş:\"1f\",şj:\"1n\",\"şk \":\"1f\",şka:\"1f\",şke:\"1f\",şki:\"1f\",şlady:\"1n\",şladı:\"1f\",şlan:\"1f\",şlary:\"1n\",şları:\"1f\",şly:\"1n\",şlı:\"1f\",\"şma \":\"1f\",şmaly:\"1n\",şmam:\"1f\",şmay:\"1f\",şmu:\"1f\",şmä:\"1n\",şmı:\"1f\",şnui:15,şok:\"1f\",şol:\"1n\",şonu:\"1n\",şony:\"1n\",\"şor \":15,şp:\"1f\",şq:\"1k\",şr:\"1f\",şsi:\"1f\",şta:\"1f\",ştu:\"1f\",ştü:\"1f\",ştı:\"1f\",şular:\"1f\",şum:\"1f\",şuny:\"1n\",şur:\"1f\",şuy:\"1f\",şv:\"1f\",\"şy \":\"1n\",şya:\"1f\",şyg:\"1n\",şyk:\"1n\",şyl:\"1n\",şym:\"1n\",şyn:\"1n\",şyp:\"1n\",şyr:\"1n\",şyň:\"1n\",şäh:\"1n\",şç:\"1f\",şö:\"1f\",şük:\"1f\",şündi:\"1n\",şüni:\"1n\",şünü:\"1f\",şüp:\"1f\",şý:\"1n\",şıd:\"1f\",şıl:\"1f\",şım:\"1f\",şına:\"1f\",şınd:\"1f\",şını:\"1f\",şır:\"1f\",şıs:\"1f\",şıy:\"1f\",şş:\"1f\",\"š-\":\"u\",šai:\"1b\",šalt:\"1b\",šana:\"1d\",šanc:\"u\",šano:\"1d\",šanu:\"1d\",šao:\"v\",\"šau \":\"1b\",šaub:\"1d\",šauk:\"1b\",šav:\"v\",šać:\"v\",šač:\"v\",šaš:\"v\",šať:\"y\",šb:\"1b\",šc:\"u\",šd:\"1b\",šec:\"u\",šed:\"u\",šef:\"v\",šeg:\"v\",šeh:\"u\",šeim:\"1b\",\"šeit \":\"1d\",šeiti:\"1b\",\"šej \":\"y\",\"šel \":\"u\",šenic:\"y\",šenj:\"v\",šení:\"u\",\"šet \":\"u\",šetc:\"y\",šetk:\"y\",šev:\"v\",šeć:\"v\",\"šeš \":\"v\",šešt:\"1b\",šg:\"1b\",šial:\"y\",šian:\"1b\",šiau:\"1b\",šic:\"u\",šiek:\"1b\",šiel:\"y\",šiem:\"1d\",šiest:\"y\",ših:\"v\",šij:\"v\",šik:\"1b\",\"šil \":\"u\",šilt:\"1b\",\"šim \":\"v\",šimt:\"1b\",šini:\"1b\",šiną:\"1b\",šioj:\"1b\",šird:\"1b\",\"šit \":\"u\",šita:\"1b\",šito:\"1b\",šitą:\"1b\",šiu:\"1b\",šią:\"1b\",šj:\"1b\",\"šk \":\"1b\",škai:\"1b\",škas:\"1b\",škia:\"1b\",škin:\"1b\",škv:\"1b\",šką:\"1b\",škę:\"1b\",\"šle \":\"v\",šlien:\"y\",šlj:\"v\",šlí:\"u\",šm:\"1b\",šnj:\"v\",šny:\"1b\",šný:\"u\",šob:\"v\",šod:\"1d\",šoj:\"v\",šol:\"v\",šor:\"1b\",\"šos \":\"1d\",šot:\"1b\",špani:\"y\",špe:\"u\",špl:\"1b\",špr:\"1b\",šra:\"1b\",šre:\"1b\",šri:\"1b\",\"šs \":\"1d\",šsa:\"1b\",šsi:\"1b\",šsp:\"1b\",štai:\"1b\",štaj:\"v\",štas:\"1b\",šten:\"v\",štis:\"1b\",štní:\"u\",štud:\"y\",štuo:\"1b\",štva:\"u\",štyr:\"y\",štát:\"y\",\"ští \":\"u\",štą:\"1b\",štę:\"1b\",šud:\"u\",šul:\"1b\",šun:\"1b\",šuo:\"1b\",šus:\"1b\",šut:\"1b\",švar:\"1b\",švaž:\"1b\",šven:\"1b\",švie:\"1b\",švih:\"y\",švy:\"1b\",šy:\"1b\",šé:\"u\",šíh:\"u\",šíl:\"u\",šíš:\"u\",šā:\"1d\",šą:\"1b\",šć:\"v\",šč:\"1b\",šę:\"1b\",šī:\"1d\",šší:\"u\",\"šť \":\"u\",šū:\"1b\",ţ:15,ťd:\"y\",ťá:\"u\",ũ:\"a\",ūc:\"t\",ūdn:\"1b\",ūdo:\"1b\",ūdu:\"1b\",ūdz:\"1d\",ūdē:\"t\",ūdę:\"1b\",ūg:\"1b\",\"ūk \":\"1b\",ūka:\"1b\",ūke:\"1b\",ūki:\"1b\",ūkl:\"1b\",ūko:\"1b\",ūku:\"1b\",ūky:\"1b\",ūll:\"t\",ūlu:\"1b\",ūly:\"1b\",ūmp:\"t\",\"ūna \":\"1b\",ūne:\"t\",ūnia:\"t\",ūno:\"1b\",ūnu:\"1b\",ūną:\"1b\",ūnę:\"1b\",ūpe:\"1b\",ūpi:\"1b\",\"ūr \":\"t\",ūram:\"t\",ūras:\"1d\",ūri:\"1b\",ūro:\"1b\",ūru:\"t\",ūry:\"1b\",ūrą:\"1b\",ūsi:\"1b\",\"ūst \":\"1d\",ūsu:\"1d\",ūsā:\"t\",ūte:\"1b\",ūtin:\"1b\",\"ūtu \":\"1d\",ūtā:\"t\",ūtī:\"1d\",ūza:\"1b\",ūzik:\"1d\",ūziš:\"1b\",ūč:\"1b\",ūši:\"1b\",ūžo:\"1b\",\"ŭ \":\"1o\",\"ŭ-\":\"1o\",ŭa:\"1o\",ŭb:\"1o\",ŭc:\"1o\",ŭd:\"1o\",ŭe:\"1o\",ŭf:\"1o\",ŭg:\"1o\",ŭh:\"1o\",ŭi:\"1o\",ŭj:\"1o\",ŭk:\"1o\",ŭl:\"1o\",ŭm:\"1o\",ŭn:\"1o\",ŭo:\"1o\",ŭp:\"1o\",ŭr:\"1o\",ŭs:\"1o\",ŭt:\"1o\",ŭu:\"1o\",ŭv:\"1o\",ŭz:\"1o\",ů:\"u\",ű:14,ų:\"1b\",ź:\"1a\",ż:\"1a\",žai:\"1b\",žaj:\"v\",žak:\"v\",\"žal \":\"y\",\"žan \":\"v\",žao:\"v\",žar:\"v\",žast:\"1b\",žat:\"v\",žau:\"1b\",žava:\"v\",žať:\"y\",žbe:\"v\",žc:\"u\",\"žda \":\"v\",ždar:\"1b\",ždeň:\"y\",ždn:\"y\",ždo:\"u\",žduo:\"1b\",\"ždé \":\"u\",ždí:\"u\",ždž:\"1b\",žeb:\"u\",žeh:\"u\",žei:\"1b\",\"žel \":\"u\",želeo:\"v\",želim:\"v\",želiš:\"v\",želá:\"y\",žemo:\"v\",ženat:\"u\",\"žet \":\"u\",žg:\"1b\",žiad:\"y\",žiai:\"1b\",žiak:\"y\",žiam:\"1b\",žiar:\"y\",žiau:\"1b\",žiav:\"1b\",žib:\"1b\",žic:\"y\",žie:\"1b\",\"žim \":\"v\",žina:\"1b\",žini:\"1b\",žino:\"1b\",žioj:\"1b\",žis:\"1b\",\"žit \":\"u\",žiu:\"1b\",žive:\"v\",živi:\"v\",žią:\"1b\",žić:\"v\",žič:\"y\",žiš:\"v\",žiū:\"1b\",\"žk \":\"1b\",žkas:\"1b\",žki:\"1b\",žkl:\"1b\",\"žku \":\"u\",žky:\"u\",žký:\"u\",žką:\"1b\",žlj:\"v\",žlt:\"y\",žm:\"1b\",žnai:\"1b\",žne:\"y\",žnj:\"v\",žnost:\"u\",žny:\"1b\",žná:\"u\",žní:\"u\",žný:\"u\",\"žo \":\"1b\",žod:\"1b\",žol:\"1b\",žos:\"1b\",žou:\"u\",žpi:\"1b\",žrt:\"v\",\"žs \":\"1d\",žsa:\"1b\",žsi:\"1b\",žta:\"1b\",žti:\"1b\",žtr:\"1b\",žtv:\"1b\",žud:\"1b\",žuo:\"1b\",žuri:\"v\",\"žus \":\"1b\",žuv:\"1b\",žv:\"1b\",žy:\"1b\",žá:\"u\",žíc:\"u\",žít:\"u\",žíz:\"u\",žā:\"1d\",žą:\"1b\",žč:\"1b\",žď:\"y\",žē:\"1d\",žę:\"1b\",žī:\"1d\",žňuje:\"y\",žši:\"y\",žší:\"u\",žū:\"1b\",ơ:\"a\",ư:\"a\",ǔ:\"1o\",ǧ:3,ǵ:\"1l\",ș:15,ț:15,ɑ:\"c\",ɛ:3,ɣ:3,ʷ:3,ʼ:17,\"̀\":\"a\",\"́c\":\"a\",\"́i\":\"a\",\"́n\":\"a\",\"́o\":\"a\",\"́p\":\"a\",\"́t\":\"a\",\"́u\":\"a\",\"́б\":18,\"́в\":18,\"́г\":18,\"́д\":18,\"́е\":18,\"́з\":18,\"́и\":18,\"́й\":18,\"́к\":18,\"́л\":18,\"́м\":18,\"́н\":18,\"́р\":18,\"́с\":18,\"́т\":18,\"́х\":18,\"́ч\":18,\"́ю\":18,\"́я\":18,\"̃a\":\"d\",\"̃n\":\"a\",\"̇b\":\"1f\",\"̇d\":\"1f\",\"̇f\":\"1f\",\"̇h\":\"1f\",\"̇k\":\"1f\",\"̇l\":\"1f\",\"̇m\":\"1f\",\"̇n\":\"1f\",\"̇p\":\"1f\",\"̇r\":\"1f\",\"̇sp\":\"1f\",\"̇st\":\"1f\",\"̇sv\":\"1f\",\"̇t\":\"1f\",\"̇v\":\"1f\",\"̇y\":\"1f\",\"̇z\":\"1f\",\"̇ç\":\"1f\",\"̇ğ\":\"1f\",\"̇ş\":\"1f\",\"̉\":\"a\",\"̣\":\"a\",\"΄\":\"w\",ΐ:\"w\",ά:\"w\",έ:\"w\",ή:\"w\",ί:\"w\",α:\"w\",β:\"w\",\"γ \":3,\"γ-\":3,γa:3,γe:3,γi:3,γl:3,γr:3,γu:3,γγ:\"w\",γε:\"w\",δ:\"w\",\"ε-\":3,εa:3,εb:3,εc:3,εd:3,εe:3,εf:3,εi:3,εj:3,εl:3,εm:3,εn:3,εq:3,εr:3,εt:3,εu:3,εw:3,εy:3,εz:3,εγ:\"w\",εε:3,επ:\"w\",ζ:\"w\",η:\"w\",θ:\"w\",ι:\"w\",κ:\"w\",λ:\"w\",μ:\"w\",ν:\"w\",ξ:\"w\",ο:\"w\",\"π'\":\"w\",πε:\"w\",ππ:\"w\",ρ:\"w\",ς:\"w\",σ:\"w\",τ:\"w\",υ:\"w\",φ:\"w\",χ:\"w\",ψ:\"w\",ω:\"w\",ϊ:\"w\",ό:\"w\",ύ:\"w\",ώ:\"w\",\"а)\":18,\"а-анг\":17,ааб:17,аав:\"1m\",ааг:\"1m\",аад:\"1m\",аан:\"1m\",аас:\"1m\",аах:\"1m\",ааш:\"1m\",аая:\"1m\",\"аб'\":17,абаг:19,абае:17,абара:17,абарл:\"1l\",абај:\"x\",абеля:16,\"абиб \":\"1k\",абиг:\"1k\",абм:17,абод:17,аболк:\"x\",абрз:\"x\",абув:19,абук:\"v\",\"абул \":\"1k\",абут:19,абушк:18,абх:17,абъ:16,абя:17,абіла:17,абілі:17,абіц:17,аваль:17,авалі:17,авана:17,аване:16,аваны:17,авап:\"1k\",авары:17,авац:17,аведа:17,\"авек \":17,авека:17,аверн:18,авето:16,авж:19,авих:16,авляв:16,авме:\"x\",аволь:17,аворы:17,авош:17,авп:19,авса:\"1m\",ався:19,авув:\"x\",авуч:17,авча:19,авъ:16,авын:\"1k\",авыр:\"1k\",авь:18,\"авя \":16,авяд:17,авязк:17,авяр:17,авіл:17,авін:17,авіц:17,авј:\"x\",агавс:19,агалі:19,агати:19,агато:19,агач:\"1k\",\"агаш \":\"x\",агг:\"1m\",агий:\"1m\",\"аглі \":17,агри:\"x\",агт:\"1m\",агуль:17,агч:17,агш:\"1m\",агы:\"1k\",агэ:17,агү:\"1m\",адаа:\"1m\",адамн:\"1l\",адг:17,адеме:\"x\",адерл:\"1k\",адею:18,адзе:17,адзя:17,адзі:17,адкр:17,адот:\"x\",\"адох \":16,адраз:17,адста:17,\"адта \":17,адто:19,адчу:17,адъ:16,адэ:17,\"адя \":16,адяс:16,адәр:\"1k\",\"аел \":\"x\",\"аеме \":\"x\",аеп:\"1k\",аерма:\"1k\",аеры:\"1k\",аесе:\"x\",аета:16,аетес:18,аетс:18,\"аех \":16,аеце:17,аешся:17,аеј:\"x\",аењ:\"x\",ажава:16,ажб:\"x\",аждо:18,ажды:18,ажко:19,ажув:\"x\",\"ажы \":17,ажэ:17,ажі:19,азае:16,азалі:17,азама:\"1l\",азати:19,азац:17,\"азва \":16,\"азве \":18,азвол:17,\"азд \":19,азик:\"x\",азказ:16,азп:16,азт:16,азх:16,\"азя \":16,азяв:16,\"азі \":19,\"азір \":\"1l\",аисти:16,аиц:\"x\",\"ай-д\":16,\"ай-л\":16,айдуж:19,айдың:\"1l\",аймат:19,аймын:\"1l\",айня:19,айом:19,айсе:16,\"айсы \":\"1k\",айсыз:\"1l\",\"айце \":17,айча:\"1k\",айшин:\"1m\",айы:\"1l\",акара:16,акаше:\"x\",акај:\"x\",акван:16,акз:17,акие:18,акий:19,\"акка \":\"1k\",аклар:\"1k\",аклу:\"x\",аклы:\"1k\",акна:\"x\",акога:17,акоми:18,аконе:18,акот:\"x\",акох:19,акрая:16,аксат:\"1k\",\"акто \":16,акую:18,акч:\"1k\",акът:16,акы:\"1k\",алаа:\"1m\",алав:17,алану:\"1l\",аларн:\"1k\",алау:\"1l\",алача:\"1k\",алган:\"1k\",алдан:\"1k\",алежи:19,алече:16,алиа:16,алиша:19,алиши:19,алкам:17,\"алма \":\"1k\",алмай:\"1l\",алмаш:\"1k\",алмы:\"1k\",алод:17,алпы:\"1l\",\"алт \":\"1m\",алтай:\"1m\",\"алто \":16,алтыр:\"1k\",алуй:18,алуын:\"1l\",алык:\"1k\",алькі:17,альше:18,алёка:17,аліц:17,\"ам'\":19,амаа:\"1m\",амады:\"1k\",амеря:16,амети:18,амж:\"1m\",амио:\"x\",\"амна \":\"x\",амое:18,\"амом \":18,амъ:16,амылк:17,\"амын \":\"1l\",амыт:\"1l\",амьд:\"1m\",амьт:\"1m\",амята:17,амәл:\"1k\",анава:17,ангал:\"1m\",анган:\"1k\",анеме:\"x\",ании:18,аният:16,анија:\"x\",анм:\"1k\",аноко:\"x\",анот:\"x\",анф:17,\"анц \":\"1m\",анша:\"1l\",анъ:16,анынд:\"1l\",\"анып \":\"1k\",аныр:\"1k\",аныс:\"1l\",аныч:\"1k\",\"анят \":18,аніц:17,аніш:19,апази:16,апамо:17,апелю:19,апило:19,аплац:17,апон:\"x\",апочв:16,апсы:\"1l\",апуш:\"x\",апіс:17,\"арав \":\"x\",\"араг \":\"1m\",арага:\"1k\",арадж:17,аралы:\"1l\",араня:16,арані:17,арапт:\"1l\",аратт:\"1l\",арбат:17,аргал:\"1m\",\"аред \":16,ареса:16,аресв:16,ареш:19,\"арж \":\"1m\",арива:18,арии:18,арихи:\"1l\",арича:16,ариял:\"1l\",арлык:\"1k\",армы:\"1k\",арнал:\"1l\",арний:19,арні:19,\"аров \":18,ародж:19,\"арот \":\"x\",арсан:\"1m\",\"арсы \":\"1l\",артит:16,\"арто \":19,артуг:17,аруно:19,аруск:17,\"арча \":\"1k\",\"аршы \":\"1k\",арыб:\"1k\",арызн:17,арыла:17,\"арым-\":\"1l\",арыме:\"1l\",арыр:\"1k\",арыст:17,арыц:17,арэ:17,арі:19,асаа:\"1m\",асаб:17,асады:\"1l\",асау:\"1l\",асиет:\"1l\",асип:\"x\",аскаж:\"x\",асказ:17,аслив:19,асля:17,асмуч:19,\"асов \":18,асопі:17,\"асот \":\"x\",аспан:\"1l\",ассе:18,ассың:\"1k\",астад:\"1l\",астам:\"1l\",аства:16,асті:19,асх:18,асць:17,асця:17,асъ:16,асыры:\"1l\",асэ:17,атаму:\"x\",атап:\"1l\",атасы:\"1k\",атвар:16,атель:18,атени:\"x\",\"атий \":19,атиму:19,\"атит \":18,атија:\"x\",аткан:\"1k\",атлы:\"1k\",атмы:\"1k\",атот:\"x\",атрым:17,аттан:\"1l\",\"атур \":\"1k\",атъ:16,атына:\"1l\",атынд:\"1l\",атыры:17,атыс:\"1l\",атька:19,атэл:17,аті:19,ауап:\"1l\",аудар:\"1l\",ауды:\"1l\",аурух:\"1l\",\"ауто \":\"v\",аутом:\"v\",\"ауча \":16,аушы:\"1l\",ауы:\"1l\",\"ахан \":\"1m\",аханн:17,ахг:\"1m\",ахиа:\"1m\",ахмет:\"1l\",ахотн:16,ацав:17,ацал:17,ацела:17,ацет:\"x\",ацо:17,ацр:\"x\",\"ацу \":17,ацуе:17,ацц:17,ацы:17,\"аць \":17,ацькі:17,ацю:19,ачава:16,ачака:17,\"ачал \":18,\"ачар \":\"1k\",ачатк:17,\"ачив \":19,\"ачит \":18,ачити:19,ачих:16,ачун:\"v\",ачц:17,ачык:\"1k\",ачын:17,ачэ:17,ашав:\"x\",ашан:\"1l\",ашаш:\"x\",ашај:\"x\",ашањ:\"x\",ашей:18,ашкал:\"1k\",ашкан:\"1k\",ашкар:\"1k\",ашлан:\"1k\",ашнот:16,ашого:19,ашол:\"x\",ашп:17,ашув:\"x\",ашыла:17,ашылы:\"1l\",ашына:17,ашыну:17,\"ашып \":\"1k\",аші:19,ащам:16,аэк:17,аэр:18,аэт:17,аюц:17,аючи:19,ающ:18,\"ая-\":18,аярл:\"1m\",аярта:\"1m\",\"аяси \":\"1l\",\"аят \":16,аята:16,аяу:\"1l\",аяча:\"1k\",\"аё \":17,аёй:17,аёт:18,аі:17,аје:\"v\",аји:\"v\",ајо:\"x\",ајч:\"x\",аља:\"v\",аљуб:\"x\",ањи:\"v\",ању:\"v\",аџ:\"x\",аңг:\"1k\",аңд:\"1l\",аңм:\"1l\",бiл:\"1l\",баа:\"x\",бабуш:18,бават:\"x\",баву:\"x\",бавяз:17,бади:16,бадя:16,баец:17,баж:19,байга:\"1m\",байда:\"1m\",байду:19,байна:\"1m\",байса:\"1m\",байш:\"1m\",бакн:\"x\",балак:19,балос:19,баме:\"x\",бао:\"v\",барав:\"x\",бараг:\"1m\",барас:\"1k\",барг:\"1k\",барды:\"1k\",барла:\"1l\",барон:17,барып:\"1k\",баспа:\"1l\",баста:\"1l\",басш:\"1l\",басын:\"1l\",батьк:19,баць:17,\"баче \":16,бачен:19,бачив:19,бачы:17,\"баше \":\"x\",башл:\"1k\",башта:\"1k\",башы:\"1k\",бащ:16,\"баян \":\"1m\",баяр:\"1m\",бањ:\"x\",\"ббат \":\"1l\",ббо:18,\"бва \":16,бват:16,бваш:16,беа:\"x\",\"бев \":\"x\",бевм:\"x\",бедам:\"x\",бежа:18,безку:16,безне:\"1k\",белге:\"1k\",белем:\"1k\",белм:\"1k\",бео:\"v\",\"бер-\":\"1k\",\"бера \":16,бераз:\"1k\",берді:\"1l\",беред:\"1l\",берен:\"1k\",берка:\"1k\",берке:\"1k\",берсе:\"1k\",\"бері \":\"1l\",бете:\"1k\",бетте:\"1k\",бещал:18,беј:\"v\",бж:18,бзи:\"v\",бига:\"1k\",\"бид \":\"1m\",бида:\"x\",бидем:\"x\",бидеш:\"x\",\"биди \":\"x\",бидни:\"1m\",бидо:\"x\",бикн:16,билг:\"1k\",бимат:16,бими:16,\"бимо \":19,\"био \":\"v\",бире:\"1k\",бирм:\"1k\",бихт:16,бичи:\"1m\",бијам:\"x\",блека:\"x\",блык:17,блысы:\"1l\",бль:18,бліят:17,бний:19,\"бні \":19,бовт:\"x\",бое:18,болад:\"1l\",болай:\"1k\",болго:\"1m\",болды:\"1l\",болм:\"1l\",болох:\"1m\",болса:\"1l\",борув:\"x\",борын:\"1k\",ботаю:18,\"ботя \":16,боюся:19,бояд:16,боја:\"x\",бп:19,брави:16,брах:16,бреха:19,брж:\"v\",брий:19,брин:\"v\",бриш:\"x\",брия:16,брк:\"x\",брн:\"x\",броси:18,брі:19,бсъ:16,\"був \":19,будз:17,будин:19,\"буе \":\"1k\",буен:\"1k\",булач:\"1k\",булг:\"1k\",були:19,\"було \":19,булс:\"1k\",булу:\"1k\",булы:\"1k\",буне:\"x\",буру:\"1m\",бурыч:\"1k\",\"бути \":19,бутил:16,буть:19,буца:\"1m\",бхі:19,бч:18,бща:18,\"бще \":18,бщи:18,бщо:16,бъд:16,бъе:18,бъл:16,бър:16,быз:\"1k\",\"был \":18,былда:\"1l\",быст:18,быц:17,быч:18,быш:\"1k\",бь:18,бэл:\"1m\",бэр:\"1m\",бяв:16,бяга:16,бяд:16,бяза:18,бял:16,бяр:17,бясн:16,бят:18,бях:16,бяц:17,біг:19,бід:19,біж:19,\"біз \":\"1l\",бізд:\"1l\",бій:19,біля:19,біре:\"1l\",бірі:\"1l\",біця:19,біш:17,бљу:\"x\",бүк:\"1l\",бүл:\"1k\",бәй:\"1k\",бәл:\"1k\",бән:\"1k\",бәт:\"1k\",бөг:\"1m\",бөл:\"1l\",бөт:\"1k\",\"в'\":19,\"в)\":18,вi:19,\"ваа \":\"x\",ваат:\"x\",вабо:17,вавм:\"x\",вавс:19,вадб:\"x\",вает:18,ваец:17,важк:19,важл:19,вайк:16,вайц:17,\"вако \":\"v\",валс:18,вамат:16,\"вамі \":17,ванет:16,\"вани \":16,вао:\"v\",\"вап \":\"1k\",варин:19,ватае:18,ватан:\"1k\",вател:18,ватис:19,вать:18,ваха:16,вахм:16,\"вац \":\"v\",\"ваши \":18,ващ:16,ваюся:19,ваё:17,вајц:\"x\",вва:19,ввеч:19,вві:19,вга:19,\"вго \":19,вгү:\"1m\",вдиг:16,вдом:19,вдя:19,вді:19,веа:\"x\",ведь:18,вежда:16,векот:\"x\",велат:\"x\",венн:18,вео:\"v\",верба:\"x\",верит:18,верно:18,верој:\"x\",верув:\"x\",верь:18,верят:18,вері:19,\"вети \":\"x\",ветит:18,веткі:17,\"вето \":16,ветст:18,веты:18,\"ветя \":16,\"веце \":17,вець:19,вешк:16,вещи:18,\"вея \":16,вењ:\"x\",вжд:19,вже:19,вжи:19,вжн:19,вжу:19,взаг:19,взг:18,взе:16,взима:16,взр:18,взу:19,виба:19,вивс:19,вивчи:19,вигр:19,видж:19,видк:19,видум:\"x\",виет:16,\"виж \":16,вижд:16,вижу:18,визия:16,визн:19,вии:18,викл:19,викор:19,вилин:19,вилс:18,виме:\"x\",виняв:16,\"вио \":\"v\",виот:\"x\",вип:19,витис:19,витс:18,виха:16,вихо:19,вичай:19,\"више \":\"v\",вият:16,\"вија \":\"x\",вке:18,вклу:\"x\",вкъ:16,\"влак \":16,влака:16,влег:\"x\",влиз:16,влюбе:16,влява:16,вляти:19,влё:18,влі:19,\"вме \":\"x\",вмі:19,внат:\"x\",вны:18,вні:19,вовал:18,воват:18,\"вог \":\"v\",водз:17,воды:18,возь:18,воим:18,волео:\"v\",\"вона \":19,\"воно \":19,вооп:\"x\",вопр:18,ворет:16,ворио:\"v\",ворыц:17,вотъ:16,вочы:17,вошт:17,вощ:18,воят:16,воё:18,војн:\"x\",впев:19,впі:19,враб:\"x\",врач:18,вращ:18,врв:\"x\",врз:\"x\",врл:\"v\",врн:\"x\",врск:\"x\",врте:\"x\",врти:\"x\",врх:\"v\",всан:\"1m\",всег:18,всек:16,всех:18,вси:16,всп:18,встре:18,всу:\"x\",всъ:16,всь:19,всё:18,всі:19,втин:16,втн:19,втоми:19,втомл:19,втрак:18,втрат:19,\"втың \":\"1l\",вті:19,\"вува \":\"x\",вувам:\"x\",вуват:19,вуваш:\"x\",вуе:18,вулиц:19,вулі:17,\"вут \":18,вуть:19,вуу:\"1m\",вучы:17,вушк:18,вуј:\"x\",вци:\"x\",вці:19,\"вч \":\"1m\",вчати:19,вчед:16,вчит:19,вчор:19,въз:16,въл:16,вън:16,вър:16,вът:16,выбо:18,выву:17,вые:18,выж:18,\"вый \":18,\"выр \":\"1k\",\"выя \":17,\"вь \":18,вьт:18,вью:18,вья:18,\"вэ \":\"1m\",вэл:\"1m\",вэр:\"1m\",вяв:16,вядо:17,вяй:16,вям:16,вярно:16,вярну:17,вятс:18,вях:16,вяц:17,вёз:18,\"вёл \":18,вём:18,вёт:18,вів:19,віза:17,вій:19,\"вік \":19,вілін:17,вім:19,\"він \":19,віна:17,віне:17,вінн:17,вірн:19,віст:19,\"віт \":19,віцц:17,вја:\"x\",вје:\"x\",вју:\"x\",вља:\"v\",вљу:\"x\",вџ:\"x\",вә:\"1k\",вө:\"1k\",\"г-д\":\"x\",гi:\"1l\",\"гаа \":\"1m\",гаар:\"1m\",гавар:17,гаво:17,гадел:\"1k\",гадз:17,\"гады \":17,гает:18,газар:\"1m\",гаил:\"1k\",галта:\"1m\",\"галі \":19,ганц:\"1m\",ганчы:\"1k\",ганын:\"1k\",гао:\"v\",гараз:19,гарат:16,гарб:17,гарна:19,гарод:17,гасан:\"1m\",гаспа:17,гасы:\"1k\",\"гафу \":\"1k\",гаца:\"1m\",\"гај \":\"x\",\"гва \":16,гвам:16,ггү:\"1m\",\"гд \":\"1m\",\"гда \":18,гдаж:\"1m\",гдс:\"1m\",гдэ:\"1m\",гез:\"1k\",геле:\"1k\",гең:\"1k\",гж:\"1m\",гиб:18,гие:18,гии:18,гийн:\"1m\",гира:\"x\",гиял:\"1l\",глаз:18,глеж:16,глес:\"v\",глиа:\"1m\",глиз:\"1k\",глиск:\"x\",глэ:\"1m\",гнам:\"x\",гнах:16,гнеме:\"x\",гнува:\"x\",гнік:17,гоа:\"x\",\"гова \":\"v\",говия:16,годз:17,годні:19,гожа:17,\"гой \":18,голям:16,горад:17,\"гось \":19,\"гот \":\"x\",готва:\"x\",\"гото \":16,готу:19,\"грак \":\"1k\",\"грал \":18,грати:19,грб:\"x\",грд:\"x\",гриже:\"x\",грм:\"x\",грн:\"x\",грц:\"x\",грэ:17,гря:18,грі:19,\"гт \":\"1m\",гта:\"1m\",гтэ:\"1m\",губі:17,\"гува \":\"x\",гуж:\"x\",гуй:\"1m\",гук:17,гульн:17,гуран:\"v\",\"гут \":18,гуу:\"1m\",гуц:17,гуј:\"v\",\"гч \":\"1m\",гчы:17,\"гш \":\"1m\",гър:16,\"гы \":\"1k\",гый:\"1k\",гыл:\"1k\",гым:\"1k\",гын:\"1k\",гып:\"1k\",гыр:\"1k\",гыч:\"1k\",гыш:\"1k\",гыя:\"1k\",гың:\"1k\",гэв:\"1m\",гэд:\"1m\",гэж:\"1m\",гэл:\"1m\",\"гэн \":\"1m\",гэр:\"1m\",гэс:\"1m\",гэт:17,гэх:\"1m\",гю:18,гё:18,гів:19,гід:19,гіз:\"1l\",гій:19,гілі:\"1l\",гіме:\"1l\",\"гін \":\"1l\",гінде:\"1l\",гіне:\"1l\",гір:19,гісто:17,гүз:\"1k\",гүй:\"1m\",гүл:\"1l\",гә:\"1k\",гөр:\"1m\",\"дi \":\"1l\",дiк:\"1l\",\"да-\":18,даат:\"x\",даба:17,дабра:17,давед:17,даво:17,\"даг \":\"1m\",\"дад \":\"1m\",дадам:\"x\",дадем:\"x\",дадов:\"x\",дадох:16,\"дады \":\"1l\",дает:18,даец:17,\"даеш \":17,даз:17,дайд:\"1l\",дайце:17,дакла:17,далда:\"1m\",дальш:18,дамда:\"1l\",дамны:\"1l\",данас:\"v\",данда:\"1m\",данды:\"1l\",данне:17,\"дао \":\"v\",дапа:17,дараа:\"1m\",дарды:\"1l\",дарл:\"1l\",дарог:17,дарыл:17,дарын:\"1l\",даста:17,дасты:\"1l\",дать:18,\"дау \":\"1l\",дахи:\"1m\",даць:17,даё:18,\"дба \":\"x\",\"дби \":\"x\",дбу:19,дбы:17,двам:16,дване:16,дваш:16,двај:\"x\",дві:19,дги:\"1m\",дгэ:\"1m\",дгү:\"1m\",ддаг:\"1m\",ддз:17,ддр:\"x\",ддъ:16,ддэ:\"1m\",\"де-\":18,\"деа \":\"x\",девам:\"x\",деву:18,деген:\"1l\",дегі:\"1l\",\"дек \":\"1k\",\"дека \":\"x\",делае:18,делг:\"1l\",дельн:18,\"делю \":18,демал:\"1l\",\"деме \":\"x\",денд:\"x\",\"дене \":16,денес:\"x\",деня:16,\"деп \":\"1l\",дерді:\"1l\",дері:\"1l\",деси:\"v\",\"дет \":18,детт:\"1l\",\"деть \":18,деу:\"1l\",деча:\"v\",дечки:\"x\",дечко:\"x\",деще:16,дењ:\"x\",джв:17,джоб:16,джэ:17,дзве:17,\"дзе \":17,дзей:17,дзел:17,\"дзем \":17,дзен:17,дзец:17,дзеш:17,дзь:17,дзё:17,дзіл:17,дзін:17,диа:18,дивив:19,дивис:19,дивс:19,диде:\"1k\",дии:18,\"дийн \":\"1m\",дилс:18,диме:\"x\",динни:19,\"дип \":\"1k\",дитин:19,дитс:18,\"дија \":\"x\",дказа:17,дкри:19,дкуль:17,длаа:\"1m\",длаб:\"x\",длен:18,длин:18,длук:\"x\",дль:19,дмах:\"v\",дмица:16,дмови:19,дмі:19,днаго:17,\"днае \":17,днах:16,днаш:\"x\",днее:18,дней:18,\"днес \":16,днеса:\"x\",днесе:\"x\",днесу:\"x\",днин:\"x\",днио:\"x\",дния:16,днъ:16,дный:18,днэ:\"1m\",доа:\"x\",добал:19,добед:16,добъ:16,довал:18,довеч:16,довм:\"x\",дові:19,догод:\"v\",додо:19,дое:18,\"дож \":\"1m\",дожда:18,дозн:\"x\",\"дой \":18,дойда:16,доньк:19,\"доо \":\"1m\",допом:19,досан:16,досі:19,дохм:16,доц:\"x\",доша:\"v\",дошма:\"1k\",дошт:\"x\",\"дощ \":19,дој:\"x\",дпа:17,дпов:19,дпуст:19,дпі:17,драве:16,драни:16,драх:\"1m\",дрех:16,држу:\"x\",дролы:\"1l\",друзе:18,дрш:\"x\",дрэ:17,дрі:19,дсан:\"1m\",дси:19,дср:\"v\",дсь:19,дсэ:\"1m\",дтай:\"1m\",дти:18,дты:\"1l\",дтэ:\"1m\",\"дува \":\"x\",дувам:\"x\",дуваш:\"x\",\"дуго \":\"v\",\"думи \":16,дург:\"1m\",\"дури \":\"x\",дурт:\"1m\",\"дут \":18,дуц:17,дущ:18,дуј:\"v\",дца:18,дце:18,дця:19,дчы:17,дъл:16,дън:16,дър:16,дът:16,дыла:\"1k\",дылы:\"1l\",\"дын \":\"1m\",дыц:17,дыя:17,\"дь-\":19,дьб:18,дэг:\"1m\",дэж:\"1m\",дэк:17,дэм:17,дэнд:\"1m\",дэр:17,дэх:\"1m\",дэя:17,дяв:16,дягн:19,дядо:16,дяк:19,дял:16,дясн:16,дять:19,дящ:18,дё:18,діа:19,діб:19,дів:19,діг:\"1l\",дід:19,діз:19,дій:19,дік:\"1l\",діло:19,дірі:\"1l\",діт:19,дію:19,дія:19,дј:\"v\",дљ:\"v\",дњ:\"v\",дүн:\"1l\",дүр:\"1k\",дәм:\"1k\",дән:\"1k\",\"дәр \":\"1k\",дәт:\"1k\",дөг:\"1m\",дөн:\"1k\",дөре:\"1k\",\"е-д\":\"x\",\"е-к\":18,\"е-то\":18,\"е-ч\":18,е́:18,еав:\"x\",еам:\"x\",\"еат \":\"x\",еај:\"x\",ебаш:\"x\",\"ебез \":\"1k\",ебезн:\"1k\",ебезп:19,\"ебек \":\"1k\",ебот:\"x\",ебудь:19,\"ебя \":18,ебё:18,евит:\"x\",евиш:\"v\",евли:\"x\",евме:\"x\",евнен:19,евоч:18,евте:\"x\",евти:16,евуш:18,евъ:16,евь:18,евіл:19,егда:18,\"егер \":\"1l\",еглот:16,егод:18,егув:\"x\",егч:18,егъ:16,\"егі \":\"1l\",егін:\"1l\",едi:\"1l\",едаа:\"x\",\"едае \":17,едаме:\"x\",едао:\"v\",едац:17,едаше:\"x\",едель:18,еделю:18,едеше:\"x\",едзе:17,едио:\"v\",едить:18,едиј:\"x\",едле:18,еднаг:16,еднал:16,едобе:16,едова:18,\"едот \":\"x\",едув:\"x\",едуе:18,едую:18,едц:\"x\",едш:18,еділ:19,едім:\"1l\",ееј:\"x\",еењ:\"x\",ежава:16,\"ежал \":18,еждаш:16,\"ежде \":18,ежы:17,\"езд \":18,ездес:\"1l\",ездр:\"x\",еземе:\"x\",езең:\"1l\",езжа:18,езле:\"1k\",\"езме \":\"1k\",\"езне \":\"1k\",езпе:19,езін:\"1l\",ейбі:\"1l\",\"ейде \":\"1l\",ейді:\"1l\",еймі:\"1l\",ейтін:\"1l\",ейч:18,ейшы:17,екаде:\"x\",екак:\"x\",екале:16,екаль:17,екаме:\"x\",екао:\"v\",екати:19,екато:17,екаш:\"x\",екз:19,екив:\"v\",екир:\"x\",екна:\"x\",екнув:\"x\",\"екое \":\"x\",екои:\"x\",\"екол \":\"x\",еколи:\"v\",еколк:\"x\",екона:19,\"екот \":\"x\",екој:\"x\",ектеп:\"1l\",ектер:\"1l\",ектес:\"1l\",екті:\"1l\",екув:\"x\",екш:\"1l\",екъ:16,елi:\"1l\",елай:18,елал:18,\"елат \":\"x\",елга:\"1k\",елда:\"1k\",\"елде \":\"1k\",елеві:19,елеге:\"1k\",елед:\"1l\",еленд:\"1k\",\"елео \":\"v\",\"елеп \":\"1k\",\"елер \":\"1l\",елерг:\"1k\",елми:\"1k\",елове:18,елось:18,\"елот \":\"x\",елув:\"x\",елун:16,ельз:18,ельны:18,ельст:18,еляз:16,елё:18,елікт:\"1l\",елім:\"1l\",еліп:\"1l\",елү:\"1k\",емаа:\"x\",емав:\"x\",емаме:\"x\",емаше:\"x\",емг:\"1k\",емеј:\"x\",емире:\"x\",\"емот \":\"x\",емски:16,емъ:16,емь:18,\"емя \":18,еміз:\"1l\",\"емін \":\"1l\",енаві:17,енгл:\"v\",енег:18,\"енес \":\"x\",ением:18,ении:18,ениот:\"x\",енить:18,еният:16,енија:\"x\",енм:\"1k\",енная:18,еннос:18,енным:18,енут:\"v\",\"енча \":\"1k\",\"енче \":\"1k\",енщ:18,еняв:16,енім:\"1l\",енін:\"1l\",еніс:19,\"еома \":\"v\",еоч:\"x\",епак:\"x\",\"епер \":19,епша:17,епшы:17,\"ер-б\":\"1k\",ерi:\"1l\",ерден:\"1l\",\"ерді \":\"1l\",ереке:\"1l\",еренч:\"1k\",ержат:18,еринк:18,ерить:18,\"ерле \":\"1k\",ерот:\"x\",ероја:\"x\",\"ерсе \":\"1k\",ерсен:\"1k\",ертт:\"1l\",еруге:\"1l\",ерці:17,ершы:17,ерыц:17,\"ерь \":18,ерява:16,\"ерял \":18,ерять:18,ерік:\"1l\",еріл:\"1l\",ерім:\"1l\",ерін:\"1l\",еріс:\"1l\",ерү:\"1k\",есва:16,есей:\"1l\",есеп:\"1l\",есеш:\"x\",есило:\"v\",есир:\"x\",есич:16,еспі:\"1l\",естот:\"x\",есца:17,есці:17,есч:18,есё:18,есік:\"1l\",есім:\"1l\",есін:\"1l\",етi:\"1l\",етаа:\"x\",етаж:16,еташ:\"x\",етд:16,етед:\"1l\",етей:18,етесь:18,етио:\"v\",етищ:16,\"еткі \":17,\"етле \":\"1k\",етм:\"1k\",етнат:16,етот:\"x\",етпе:\"1l\",етста:\"x\",етств:18,еттер:\"1l\",етув:\"x\",етход:\"x\",етъ:16,етыр:18,етята:16,етін:\"1l\",\"еу \":\"1l\",еуш:\"1l\",ефана:17,ехм:16,ецу:\"v\",ецц:17,ецьк:19,еця:17,\"ечам \":\"x\",ечар:17,ечели:16,ечерв:\"x\",ечерт:16,ечето:16,ечеш:\"x\",ечин:\"x\",ечч:19,ечы:17,ешам:\"x\",ешеле:\"1k\",ешене:\"1k\",ешер:\"1k\",ешить:18,еших:16,ешкі:\"1l\",\"ешле \":\"1k\",ешм:\"1k\",ешті:19,ешь:18,ешү:\"1k\",ещн:16,еэ:18,еюс:18,еют:18,\"еят \":16,её:18,\"еі \":17,еје:\"v\",ејл:\"v\",ејн:\"x\",ејо:\"x\",ејт:\"x\",еју:\"v\",еља:\"v\",ењу:\"v\",еңг:\"1l\",еңм:\"1k\",еңн:\"1k\",\"ж-\":18,жаа:\"x\",жаваш:16,жада:17,жает:18,жазы:\"1l\",жалп:\"1l\",жаляв:16,жанч:17,жао:\"v\",жап:\"1l\",жарга:\"1m\",жария:\"1l\",жасад:\"1l\",жасай:\"1l\",жасал:\"1l\",жаста:\"1l\",жатыр:\"1l\",жау:\"1l\",жахл:19,жац:17,жаш:17,жаң:\"1l\",жби:16,жгү:\"1m\",ждь:18,ждя:18,жеа:\"x\",жеби:\"x\",\"жев \":\"x\",жевм:\"x\",жеві:19,жеж:19,жеке:\"1l\",\"жел \":\"x\",желео:\"v\",желер:\"1l\",желим:\"v\",желиш:\"v\",\"жеме \":\"x\",ження:19,жерг:\"1l\",жерд:\"1l\",жетк:\"1l\",жетс:18,жеті:\"1l\",жех:16,жең:\"1l\",жида:18,жиз:18,жилл:\"1m\",жилт:\"1m\",\"жио \":\"v\",\"жит \":18,житт:19,жиј:\"x\",жм:18,\"жня \":19,жовт:19,жод:19,\"жол \":\"1l\",жолда:\"1l\",жолы:\"1l\",жонка:17,жос:\"1l\",жот:\"x\",жрт:\"x\",жс:18,жто:\"1m\",\"жува \":\"x\",жувам:\"x\",жуваш:\"x\",жувај:\"x\",жуй:19,жуть:19,жуц:17,жуы:\"1l\",жуј:\"v\",жчин:18,жчы:17,жъ:16,жыв:17,\"жыл \":\"1l\",жылда:\"1l\",жылды:\"1l\",жылы:\"1l\",жын:17,\"жыр \":17,\"жыру \":17,жыры:17,жых:17,жыц:17,жыя:17,жь:18,жэй:17,жэн:17,жю:18,жё:18,\"жі \":19,жіб:\"1l\",жіг:\"1l\",жін:19,жіт:19,жј:\"x\",жљ:\"v\",жњ:\"v\",жү:\"1l\",жә:\"1l\",жө:\"1l\",зi:\"1l\",забот:18,забул:19,забі:17,завд:19,завий:16,завин:16,загал:19,зазви:19,заках:17,закъ:16,закі:19,залиш:19,залс:18,замат:\"1l\",замет:18,замі:19,запаз:16,запит:19,започ:16,зарем:\"x\",засму:19,затва:16,\"зати \":19,затов:16,зать:18,зауз:\"v\",зафа:\"x\",захар:16,заць:17,зачек:19,зачем:18,зачин:19,зашто:\"v\",защо:16,зањ:\"x\",заң:\"1l\",\"збен \":\"1l\",\"због \":\"v\",зборо:\"x\",збору:\"x\",збри:\"x\",збун:\"x\",збяг:16,збіра:17,звай:16,звам:16,\"зват \":16,зваш:16,зверы:17,звич:19,звола:\"x\",зврши:\"x\",звъ:16,звё:18,звід:19,звіл:19,зган:\"1k\",згер:\"1l\",здани:18,\"здар \":\"1l\",здаро:17,здары:17,здво:19,\"здер \":\"1l\",здесу:\"1l\",здесь:18,здз:17,здн:18,здрж:\"x\",здру:\"x\",здъ:16,\"здың \":\"1l\",\"зеге \":\"1l\",зед:\"x\",зез:\"x\",\"зела \":17,\"зема \":16,земам:\"x\",земет:16,земя:16,зео:\"v\",зес:17,зех:16,зець:17,зеят:16,зеі:17,зже:18,зимат:16,зих:16,зичи:19,зият:16,зија:\"x\",зкар:16,зкат:16,зклю:16,зкур:16,зкус:16,злаз:\"v\",злама:19,злар:\"1k\",злеге:\"1k\",злегу:\"x\",злек:\"1k\",злиз:16,злык:\"1k\",зляз:16,\"змет \":\"1l\",зметк:\"1l\",змъ:16,змін:19,знаа:\"x\",знайд:19,знако:18,знао:\"v\",зната:\"x\",\"знаш \":\"v\",знову:19,\"зның \":\"1k\",знь:18,зобщ:16,зоват:18,зогс:\"1m\",зой:18,\"зот \":\"x\",зохи:\"1m\",зошл:18,зошт:\"x\",зпеч:19,зпи:16,зпов:19,зпол:16,зпра:16,зрабі:17,зразу:17,зреч:16,зроби:19,зроз:19,зрю:19,зря:18,зрі:19,зса:\"1m\",зски:18,зсъ:16,зта:19,зте:16,зто:16,зтр:16,зуе:18,зумец:17,зупи:19,\"зур \":\"1k\",зура:\"1m\",зург:\"1m\",зустр:19,зусі:17,зуу:\"1m\",зуча:18,зуш:\"1l\",зуј:\"v\",зхв:16,зхо:16,зчак:16,зчез:16,зші:\"1l\",зывае:18,зывал:18,зываю:18,\"зын \":\"1k\",зьк:19,зьц:17,зья:18,зэх:\"1m\",зяк:17,\"зял \":18,зямл:17,зяр:17,зять:18,зяц:17,зяч:17,зяю:17,зіб:19,зіг:19,зід:17,зік:17,зіла:17,зіль:17,зінд:\"1l\",зіні:\"1l\",зіц:17,зј:\"x\",зүг:\"1m\",зүй:\"1m\",зә:\"1k\",зө:\"1m\",\"и)\":18,\"и-не\":19,и́:18,\"иад \":\"1m\",иалн:16,иальн:18,\"иар \":\"1m\",ибар:\"1k\",ибач:19,\"ибез \":\"1k\",ибк:18,\"ибо \":18,ибудь:18,ибы:18,ибі:19,ибәр:\"1k\",ивае:18,\"ивал \":18,ивая:18,ивея:16,ивий:19,ивись:19,ивити:19,ивм:\"x\",ивото:\"x\",ився:19,ивча:19,ивы:18,ивё:18,иві:19,игав:\"x\",иглас:18,игнав:\"x\",игъ:\"1k\",игы:\"1k\",\"идам \":\"x\",идеме:\"x\",идесе:\"v\",идеть:18,иджу:19,\"идит \":18,идить:19,\"идко \":19,идот:\"x\",идох:16,идт:18,идув:\"x\",\"идум \":\"x\",идш:19,идъ:16,идэ:\"1m\",идях:16,\"ие-\":18,иез:18,ией:18,иема:16,\"иеме \":\"x\",иене:16,иесе:\"x\",иеті:\"1l\",иех:18,иеше:\"x\",иеј:\"x\",иењ:\"x\",\"ижам \":\"x\",ижда:16,ижден:19,ижня:19,ижо:19,ижч:19,\"из-\":18,избя:16,изге:\"1k\",изкл:16,излег:\"x\",изля:16,изная:16,\"изни \":18,изош:18,изп:16,изс:16,изт:16,изуч:18,изх:16,изча:16,изче:16,изяд:16,ийг:\"1m\",ийж:\"1m\",ийш:19,иказн:\"x\",икел:\"1k\",икер:\"1k\",\"иков \":18,икори:19,\"икот \":\"x\",икој:\"x\",икто:18,\"икът \":16,икі:19,илася:19,илге:\"1k\",илде:\"1k\",илика:\"x\",илича:16,илиш:\"x\",иллах:\"1m\",илося:19,илц:\"1m\",илы:18,\"ильм \":18,ильны:18,илі:19,имаа:\"x\",имае:18,ималн:16,имамо:\"v\",имах:16,имее:18,именн:18,имся:18,имы:18,имя:18,имі:19,инаги:16,инает:18,иналы:\"1l\",ингл:\"1k\",\"инд \":\"1m\",\"инив \":19,инні:19,иной:18,иною:19,\"ины \":18,инэ:\"1m\",инял:18,инять:18,инё:18,ині:19,иов:\"x\",ипин:19,\"ир-\":\"1k\",ираа:\"x\",ирае:18,ирао:\"v\",\"ират \":16,ирање:\"x\",ирд:\"1k\",ирер:\"1k\",ириса:\"x\",ирле:\"1k\",ирова:18,ируе:18,ирх:\"1m\",ирэ:\"1m\",ирі:19,\"исам \":\"v\",исах:16,исеме:\"1k\",исең:\"1k\",искаш:16,ислев:\"x\",ислих:16,\"исля \":16,испл:\"x\",исф:\"x\",исъ:16,исј:\"x\",итае:18,итао:\"v\",итап:\"1k\",итати:19,итах:16,итвам:16,итг:\"1m\",итеге:\"1k\",итеж:16,ителк:16,итеп:\"1k\",итесн:16,итесь:18,итий:19,итим:19,итина:19,итми:\"1k\",итот:\"x\",иття:19,итъ:16,иты:18,иті:19,итү:\"1k\",итәр:\"1k\",иул:\"1m\",иуш:\"x\",ифат:\"x\",ихм:16,ихна:16,ихш:\"1l\",ихэ:\"1m\",ихі:19,ицей:18,ицик:\"v\",ицц:18,ицы:18,ицю:19,иця:19,иці:19,ичс:\"1m\",ичч:19,ичэ:\"1m\",\"ишал \":\"x\",ишам:\"x\",ишан:\"x\",ишити:19,ишко:18,ишло:18,ишол:\"x\",ишс:19,иштет:\"x\",\"ишто \":\"x\",ишь:18,иші:19,иъ:16,иы:\"1l\",иэ:18,ияв:19,ияг:\"1k\",иям:18,ияр:\"1k\",иях:18,иё:18,иі:\"1l\",\"ијан \":\"x\",ијач:\"x\",ије:\"v\",ији:\"v\",ијо:\"v\",ијс:\"v\",ијт:\"v\",ију:\"v\",иљ:\"v\",иње:\"v\",ињу:\"v\",иң:\"1k\",\"й)\":18,\"й-а\":\"1l\",\"й-в\":16,\"й-г\":16,\"й-до\":16,\"й-м\":16,\"й-на\":16,\"й-с\":16,\"й-т\":18,йа:18,йбе:\"1k\",йбл:19,йбы:\"1k\",\"йв \":\"1m\",\"йг \":\"1m\",йгаа:\"1m\",\"йге \":\"1l\",йго:17,йгы:\"1k\",йгэ:\"1m\",йдi:\"1l\",йдз:17,йдэ:\"1m\",йек:\"1l\",йел:\"1l\",йес:\"1l\",\"йж \":\"1m\",йже:19,\"йз \":\"1m\",йзб:16,йи:18,йката:16,йкес:\"1l\",йкр:19,йкі:17,йлаа:\"1m\",йланы:\"1l\",йлап:\"1k\",\"йлар \":\"1k\",йлг:\"1m\",йлей:\"1l\",йлеп:17,йлес:\"1l\",йлый:\"1k\",ймм:\"1k\",ймэ:\"1m\",ймё:18,йнал:\"1l\",йнат:16,йнд:\"1m\",йния:16,йнот:16,йнх:\"1m\",йнэ:\"1m\",йнят:19,\"його \":19,йоз:19,йокл:\"1k\",йол:\"1k\",йоми:19,йому:19,йорт:\"1k\",йрен:\"1l\",йрт:\"1m\",йсан:\"1m\",йсет:16,йскай:17,йско:18,\"йску \":17,йсн:19,\"йста \":18,йсц:17,йсь:19,йсэ:\"1m\",йсі:\"1l\",йтк:\"1k\",йтп:\"1l\",йтэ:\"1m\",йу:19,йх:\"1m\",йця:19,йці:19,\"йча \":\"1k\",йчан:\"1k\",йчас:18,йчы:17,йше:18,йщ:18,\"йы \":\"1l\",йыл:\"1l\",йым:\"1l\",йын:\"1l\",йып:\"1l\",йыр:\"1l\",йя:18,йі:\"1l\",йә:\"1k\",йө:\"1k\",кe:\"1l\",\"кi \":\"1l\",кiл:\"1l\",кiм:\"1l\",кiн:\"1l\",каа:\"x\",\"каб \":17,кабат:\"1k\",кабул:\"1k\",\"каво \":19,\"кавы \":17,кага:17,\"каде \":\"x\",кадер:\"1k\",кажав:\"x\",кажал:\"x\",кажам:\"x\",кажд:18,кажы:17,кайда:\"1k\",кайсы:\"1k\",кайта:\"1k\",кайты:\"1k\",кайч:\"1k\",какая:18,каки:18,какое:18,какой:18,както:16,какъ:16,калар:\"1k\",калг:\"1k\",калды:\"1k\",калм:\"1k\",\"калі \":17,каліс:17,камол:\"x\",\"камі \":17,каның:\"1l\",карад:\"1k\",карай:16,карап:\"1k\",карар:\"1k\",карах:16,карв:16,карш:\"1k\",карыз:17,карый:\"1k\",карыс:17,касц:17,\"касы \":\"1k\",\"като \":16,каха:17,каць:17,качв:16,кби:19,квах:16,квет:17,квот:16,кві:19,кг:18,кебе:\"1k\",кез:\"1l\",келг:\"1l\",келей:\"1l\",келес:\"1l\",келле:\"1k\",келм:\"1l\",келі:\"1l\",кеме:\"1l\",кемн:\"1k\",кенч:\"1k\",кені:\"1l\",керек:\"1l\",кереп:\"1k\",кери:\"1l\",керле:\"1l\",кесі:\"1l\",кетт:\"1l\",кеу:\"1l\",кеч:\"1k\",кешег:\"1k\",кешел:\"1k\",кешен:\"1k\",кеші:\"1l\",кең:\"1l\",кж:18,кибет:\"1k\",\"кива \":16,\"кие \":18,килг:\"1k\",киле:\"1k\",килм:\"1k\",кимия:\"1k\",кинл:\"1k\",\"киот \":\"x\",кире:\"1k\",китар:16,китер:\"1k\",китк:\"1k\",китт:\"1k\",киче:\"1k\",киша:\"v\",\"кият \":16,кињ:\"v\",\"ккан \":\"1k\",\"кке \":\"1l\",\"клав \":19,\"клап \":\"1k\",\"клар \":\"1k\",клары:\"1k\",клуч:\"x\",\"клый \":\"1k\",\"клык \":\"1k\",кму:\"x\",кмы:\"1k\",\"кнам \":\"x\",кнат:\"x\",кнува:\"x\",кны:\"1k\",кніг:17,кніж:17,\"ког \":\"v\",когат:16,когаш:\"x\",коет:16,кожно:19,кожны:17,колел:16,колер:17,колик:\"v\",колис:19,колку:\"x\",колн:\"x\",комн:18,конат:19,конец:18,кончи:18,кордо:19,котор:18,котр:19,коха:19,кошту:19,която:16,коі:17,кпе:\"1l\",крадн:16,крак:16,кращи:19,крена:\"x\",крих:16,крија:\"x\",\"кроз \":\"v\",кроме:18,крп:\"x\",крс:\"x\",крш:\"x\",\"крыл \":18,крых:17,крэ:17,крі:19,ксам:17,ксез:\"1k\",ксъ:16,ктi:\"1l\",ктя:18,\"кува \":\"x\",кувам:\"x\",куват:19,куваш:\"x\",куди:19,\"куды \":17,кулл:\"1k\",\"куль \":17,куна:\"1k\",купам:\"x\",купіц:17,курык:\"1k\",куфа:16,кф:18,кција:\"x\",кцы:17,кці:19,кча:\"1k\",кші:\"1l\",кщ:19,къл:16,кър:16,\"кы \":\"1k\",кыг:\"1k\",кыз:\"1k\",кый:\"1k\",кыл:\"1k\",кым:\"1k\",кын:\"1k\",кып:\"1k\",\"кыр \":\"1k\",кыры:\"1k\",кыс:\"1k\",кыт:\"1k\",кыч:\"1k\",кыш:\"1k\",кэ:18,кю:18,кё:18,ків:19,кіз:\"1l\",кій:19,кіль:19,кімн:19,\"кін \":\"1l\",кінд:\"1l\",кіну:17,кінш:\"1l\",кірі:\"1l\",\"кіт \":19,кітай:17,кіх:17,кія:17,кљ:\"v\",књ:\"v\",күз:\"1k\",күй:\"1l\",күк:\"1k\",\"күн \":\"1l\",күнд:\"1l\",күрг:\"1k\",күрде:\"1k\",күре:\"1k\",күтәр:\"1k\",күш:\"1l\",кәй:\"1k\",кәл:\"1k\",кәм:\"1k\",кән:\"1k\",кәр:\"1k\",кәт:\"1k\",көб:\"1l\",көм:\"1l\",\"көн \":\"1k\",көне:\"1k\",көп:\"1l\",көрд:\"1l\",көре:\"1l\",көрм:\"1l\",көрс:\"1l\",көтер:\"1l\",көч:\"1k\",көш:\"1l\",\"л'\":\"v\",\"л)\":18,лiк:\"1l\",лiм:\"1l\",лаар:\"1m\",лабок:\"x\",лавек:17,лаган:\"1k\",ладз:17,ладым:\"1k\",лает:18,лаеш:18,лажем:\"v\",\"лаза \":18,\"лази \":\"v\",лайд:\"1l\",лаймы:\"1l\",лакв:16,лакъ:16,\"лал \":18,ламый:\"1k\",ламын:\"1l\",ланга:\"1k\",ланып:\"1k\",ланың:\"1l\",ларг:\"1k\",ларды:\"1l\",ларны:\"1k\",ларым:\"1k\",ласил:18,ласц:17,ласың:\"1k\",лать:18,\"латя \":16,лаці:17,лачак:\"1k\",лашы:\"1k\",лаща:16,лаю:18,лаң:\"1l\",лбит:16,лбок:16,лгы:\"1k\",лгэ:\"1m\",лгі:\"1l\",\"лд \":\"1m\",лдi:\"1l\",лдаа:\"1m\",лдаж:\"1m\",лдар:\"1l\",лдау:\"1l\",лдерд:\"1l\",лдог:\"1m\",лдыра:\"1k\",лдэ:\"1m\",лді:\"1l\",ледай:16,ледва:16,ледз:17,ледоб:16,ледов:18,ледъ:16,леді:\"1l\",\"лее \":18,лежд:16,лекет:\"1l\",лекк:\"1k\",лекле:\"1k\",лекне:\"1k\",лемот:\"x\",ленге:\"1l\",ления:18,ленно:18,\"лені \":19,лепей:17,лерд:\"1l\",лері:\"1l\",лески:\"v\",лесті:\"1l\",лесі:\"1l\",летті:\"1l\",леуме:\"1l\",лефа:17,\"лех \":16,\"леш \":\"1k\",леј:\"x\",лењ:\"x\",\"лж \":\"1m\",лжы:17,лзв:16,лзи:\"x\",лзс:\"1m\",\"ли-н\":19,ливим:19,лизам:16,лизаш:16,\"лизо \":16,лии:18,лийн:\"1m\",\"лиме \":\"x\",лиски:\"x\",лися:19,\"лича \":16,\"личи \":\"x\",лишив:19,лишк:18,лищет:16,лию:18,лињ:\"x\",лкав:\"x\",\"лкен \":\"1l\",лкн:18,лкы:\"1k\",лланы:\"1k\",лмаг:\"1k\",лмайм:\"1l\",лмайс:\"1l\",лман:\"1k\",лмаса:\"1k\",лмей:\"1l\",лмим:\"1k\",лмъ:16,лмый:\"1k\",лмыс:\"1l\",лнув:16,лнц:18,\"лның \":\"1k\",ловек:18,лові:19,лодни:19,лодш:19,лое:18,ложих:16,ложно:18,\"лой \":18,\"лоо \":\"1m\",лопчи:19,лопчы:17,лохо:18,лоц:\"x\",лсан:\"1m\",лси:\"x\",\"лсон \":\"1m\",лстви:16,лсэ:\"1m\",лся:18,лсі:\"1l\",лтанд:\"1m\",лтг:\"1m\",лтта:\"1m\",лтыра:\"1k\",лтэ:\"1m\",лті:\"1l\",луваш:\"x\",лужав:16,луза:16,луйс:18,\"лут \":\"x\",лути:\"x\",луу:\"1m\",луц:\"x\",лучо:\"x\",лушат:18,\"луын \":\"1k\",луј:\"v\",лха:\"1m\",лхий:\"1m\",лце:\"x\",лшы:\"1l\",лщ:18,лъ:16,лые:18,лыж:18,лыйс:\"1k\",лыкл:\"1k\",лыкн:\"1k\",лылар:\"1k\",лымда:\"1l\",\"лыми-\":\"1l\",лыр:\"1k\",\"лыс \":\"1l\",лыст:\"1l\",\"лысы \":\"1l\",лыша:18,лышы:\"1k\",лыя:17,\"лько \":18,\"лькі \":17,льл:\"1k\",льнай:17,льнас:17,льч:18,лью:18,лэг:\"1m\",лэн:\"1m\",лэх:\"1m\",\"лява \":16,ляво:16,\"ляза \":16,лязо:16,ляка:19,\"ляко \":16,лямо:16,ляць:17,\"лёны \":17,ліб:19,лівай:17,\"лігі \":\"1l\",\"лід \":19,ліжк:19,\"лім \":\"1l\",лімі:\"1l\",лінде:\"1l\",ліне:\"1l\",\"ліп \":\"1l\",лір:19,лісь:17,ліся:17,літак:19,літар:17,лј:\"x\",лә:\"1k\",лө:\"1m\",\"м)\":18,мiн:\"1l\",маар:\"1m\",маат:\"x\",мабу:19,мабіл:17,мавай:16,мавы:\"1k\",магав:19,магад:\"1m\",магам:\"x\",магат:19,магаю:19,маглі:17,мает:18,\"маеш \":17,\"маж \":\"x\",маи:\"x\",майд:\"1l\",майсы:\"1l\",макса:\"1k\",малад:17,малка:16,малко:16,малку:\"x\",мална:16,мамыр:\"1l\",манай:\"1m\",\"мант \":17,мао:\"v\",масыз:\"1l\",матт:\"1l\",мать:18,маусы:\"1l\",махаб:\"1l\",маць:17,\"маці \":17,мачи:\"x\",машно:16,машы:17,маё:17,мањ:\"v\",маң:\"1l\",мвр:\"x\",мга:\"1k\",мге:\"1l\",мги:\"1m\",мгы:\"1k\",\"мд \":\"1m\",мдар:\"1l\",мдас:\"1l\",\"мде \":\"1l\",мды:\"1l\",мді:\"1l\",меа:\"x\",медл:18,меет:18,мейд:\"1l\",мейм:\"1l\",мект:\"1l\",мелер:\"1l\",мемл:\"1l\",менув:\"x\",\"меня \":18,мерек:\"1l\",мерзі:\"1l\",мерих:16,мерык:17,\"меря \":16,мері:19,\"мес \":\"1l\",\"месе \":\"1l\",месп:\"1l\",месте:18,месц:17,месі:\"1l\",метке:\"1l\",метт:\"1l\",меті:\"1l\",меу:\"1l\",мея:18,меја:\"v\",мејс:\"x\",\"мең \":\"1k\",\"мж \":\"1m\",мжг:\"1m\",мжи:\"1m\",мжт:\"1m\",мз:18,мивс:19,миж:\"x\",милк:19,\"мио \":\"v\",миот:\"x\",мислу:\"x\",мисля:16,михн:16,\"мица \":16,мици:16,\"миче \":16,миялы:\"1l\",мија:\"x\",мињ:\"x\",мкин:\"1k\",\"мкі \":17,мкін:\"1l\",млеке:\"1l\",млы:\"1k\",мліва:17,\"ммен \":\"1l\",мнi:\"1l\",мнар:\"1k\",мнате:18,мню:18,мнәр:\"1k\",мобі:19,мовив:19,мовл:19,\"мовы \":17,могти:19,можат:\"x\",можда:\"v\",можу:19,молам:\"x\",\"моля \":16,моман:17,моми:16,монд:\"1k\",монна:\"1k\",моның:\"1k\",морав:\"x\",морат:\"v\",мося:19,мотр:18,моцн:17,\"мош \":\"x\",\"мощ \":16,мощи:18,моят:16,моё:18,моң:\"1k\",мпю:16,мраза:\"x\",мрзи:\"v\",мрл:\"v\",мрс:\"x\",мрто:\"x\",мрэ:17,\"мря \":16,мрял:16,мрі:19,мсі:\"1l\",\"мт \":\"1m\",мтай:\"1m\",мтама:\"1l\",\"му-\":18,муси:19,мусі:17,муу:\"1m\",мушка:\"v\",мущ:18,муы:\"1l\",мфр:\"x\",мх:18,мци:\"v\",\"мч \":\"1m\",мчета:16,\"мша \":\"1l\",мші:\"1l\",мщ:18,мъл:16,мър:16,мът:16,мыв:18,мые:18,мыз:\"1l\",мыйс:\"1k\",мына:\"1l\",мыст:\"1l\",мысы:\"1l\",\"мыш \":\"1k\",мышта:\"1k\",мышы:\"1k\",мыя:17,мың:\"1l\",\"мь \":18,мьда:\"1m\",мье:18,мья:18,мэд:\"1m\",мэнд:\"1m\",мэры:17,мяж:17,мяні:17,мяр:17,мяст:16,\"мята \":16,мях:16,мяц:17,мяш:17,мяя:17,мёт:18,мів:19,міг:19,\"міз \":\"1l\",мізд:\"1l\",мій:19,міліц:17,мінд:\"1l\",місц:19,міся:19,міш:19,мію:19,мія:19,мј:\"x\",мљ:\"v\",мњ:\"v\",мүл:\"1l\",мүм:\"1l\",мүш:\"1l\",мәдем:\"1k\",мәк:\"1k\",мәсел:\"1l\",мәт:\"1k\",мәң:\"1k\",мөг:\"1k\",мөм:\"1k\",мөнг:\"1m\",мөр:\"1m\",\"н)\":18,наам:\"x\",наар:\"1m\",наат:\"x\",навер:18,навчи:19,\"наги \":16,надам:\"v\",надес:16,надзв:19,\"надо \":18,наді:19,наев:\"x\",наеме:\"x\",\"нает \":18,\"нази \":16,назия:16,наис:16,\"най-\":16,найды:\"1l\",найле:17,найо:19,накар:16,наком:18,налар:\"1k\",налат:16,налды:\"1l\",налия:16,налот:16,наляв:16,намаг:19,намай:\"1m\",\"намі \":17,\"нао \":\"v\",наран:16,нарга:\"1k\",нарда:\"1k\",нарич:16,наруж:18,\"нары \":\"1k\",нарын:\"1k\",наскі:19,наспр:19,насц:17,нася:16,натат:\"x\",натре:\"x\",нать:18,\"наха \":16,нахт:16,начар:\"1k\",начы:17,\"наши \":18,нашка:\"1k\",најд:\"x\",нањ:\"v\",нбарл:\"1k\",\"нбер \":\"1k\",нбі:\"1l\",\"нган \":\"1k\",нген:\"1l\",нглис:\"x\",нгы:\"1k\",нгэ:\"1m\",нгі:\"1l\",нгү:\"1m\",ндаа:\"1m\",ндаг:\"1k\",ндай:\"1l\",\"ндар \":\"1l\",ндард:\"1l\",ндары:\"1l\",ндау:\"1l\",ндег:\"1l\",ндет:\"1l\",ндоо:\"1m\",ндый:\"1k\",ндэ:\"1m\",ндір:\"1l\",\"неа \":\"x\",\"неге \":\"1l\",\"неді \":\"1l\",\"нее \":18,\"неже \":16,\"нези \":16,нейна:16,нейни:16,некал:17,некат:17,\"неки \":\"v\",\"неко \":\"v\",некот:18,\"неме \":\"x\",немец:18,немно:18,немск:16,немі:\"1l\",\"нени \":16,ненне:17,\"неп \":\"1k\",несам:\"x\",неско:18,несув:\"x\",нетьс:19,нець:19,\"неща \":16,нещат:16,\"нещо \":16,неј:\"x\",нең:\"1k\",нибу:18,нивн:\"x\",нивс:19,ниед:\"x\",\"нико \":\"v\",ников:18,никот:\"x\",никт:18,никъ:16,нилс:18,нимаю:18,нимка:16,нинди:\"1k\",\"нио \":\"v\",\"ниот \":\"x\",ниру:18,нисам:\"v\",\"ниси \":\"v\",нисм:\"v\",нису:\"v\",\"нит \":18,ничег:18,ничек:\"1k\",ништо:\"x\",нищо:16,нию:18,нията:16,\"нкі \":17,нле:\"1k\",нлы:\"1k\",нма:\"1k\",нмы:\"1k\",ннар:\"1k\",\"ннен \":\"1l\",нния:16,нной:18,нный:18,нных:18,ннь:19,нням:19,ннік:17,ннәр:\"1k\",новий:19,новц:\"v\",ное:18,нокот:\"x\",нохо:\"1m\",ношт:\"x\",\"нощ \":16,нощи:16,нсау:\"1l\",нскай:17,\"нско \":\"x\",\"нску \":17,нскі:17,нсс:\"1m\",нськ:19,нсі:19,нтi:\"1l\",нтай:\"1m\",нталн:\"x\",нтот:\"x\",нтт:\"1l\",нтъ:16,нтым:\"1l\",\"нува \":\"x\",нувам:\"x\",нуват:19,нуваш:\"x\",нувај:\"x\",нувс:19,нуже:18,нужна:18,\"нул \":18,нулог:19,нулс:18,нулі:17,нуо:\"v\",нутис:19,нуу:\"1m\",нуц:17,нуј:\"v\",\"нх \":\"1m\",нхэ:\"1m\",\"нции \":18,нцэ:17,нцю:19,нця:19,нці:19,нчесе:\"1k\",нчын:17,ншо:19,нщин:18,нът:16,ные:18,\"нык \":\"1k\",ныме:\"1l\",ными:18,ныса:\"1l\",ныст:\"1l\",\"ныч \":\"1k\",нышт:\"1l\",ныя:17,ньг:18,нье:18,ньш:18,ньяны:\"1k\",\"нэ \":\"1m\",нэг:\"1m\",нэр:\"1m\",нэх:\"1m\",нюв:19,нява:16,\"няг \":16,няд:17,\"нял \":18,няп:17,няс:17,\"няти \":19,нятис:19,няц:17,нён:18,нёс:18,нёт:18,ніга:17,ніда:19,ній:19,нікам:17,\"ніку \":17,нікі:17,нілас:17,\"нін \":\"1l\",нінд:\"1l\",ніне:\"1l\",\"ніп \":\"1l\",ніца:17,ніцу:17,\"ніч \":19,ніча:17,нј:\"x\",нџ:\"x\",нүд:\"1m\",нәк:\"1k\",нән:\"1k\",\"нәр \":\"1k\",нәре:\"1k\",нәрсе:\"1l\",нәс:\"1k\",нө:\"1m\",\"о)\":18,\"о-а\":18,\"о-доб\":16,\"о-мо\":18,\"о-ск\":16,\"о-то \":18,\"о-ф\":18,о́:18,\"оа \":\"x\",оале:16,обад:16,обара:\"x\",обата:\"x\",обезк:16,обидв:19,обик:16,обити:19,\"обиш \":19,\"облю \":19,обова:18,обожн:19,обой:18,оботи:19,оботу:19,обращ:18,обрз:\"x\",обяз:18,обяс:16,\"обі \":19,обіл:19,обіт:19,оваа:\"x\",\"овай \":17,\"овал \":18,овало:18,оватн:\"v\",овај:\"v\",овањ:\"v\",овг:19,оверу:\"x\",оверш:18,овете:16,овж:19,овио:\"x\",овити:19,овлят:19,овой:18,оволі:19,овос:18,овою:19,оврш:\"x\",овсе:18,овув:19,овут:18,овъ:16,овый:18,овыя:17,овь:18,овяр:16,овё:18,\"ові \":19,овід:19,овік:19,овіль:19,овір:19,овіс:19,огава:16,огано:19,огать:18,\"огаш \":\"x\",огд:18,огось:19,огото:16,огут:18,огъ:16,огү:\"1m\",одару:19,\"одат \":\"x\",одежд:18,одека:\"x\",оджен:19,оджу:19,одзі:17,\"одив \":19,одиви:19,\"одит \":18,одной:18,\"одні \":19,\"одог \":\"1m\",одожд:18,одой:18,одоо:\"1m\",\"одот \":\"x\",одран:16,одст:18,одт:18,одход:18,одч:18,оді:19,\"ое-\":18,оев:18,оег:18,оей:18,оем:18,оес:18,оех:18,ожале:18,ожах:16,ождж:17,ожеб:\"x\",ожеле:\"x\",ожело:\"x\",ожеме:\"x\",\"ожет \":18,ожид:18,ожить:18,\"ожиш \":16,ожл:19,ожню:19,ожут:19,ожы:17,ожі:19,\"озак \":\"1k\",озбо:\"x\",озвон:18,озж:18,озич:19,озмов:19,ознай:19,ознак:18,ознај:\"v\",ознем:\"x\",озп:19,озс:19,озт:19,озум:19,озч:19,озын:\"1k\",озьм:18,озя:18,озі:19,оиг:18,оизо:18,оил:18,оими:18,оисх:18,\"оит \":18,оито:16,оитс:18,оить:18,оих:18,оишт:\"x\",\"ой-\":18,\"ойда \":16,ойдо:16,ойду:18,ойды:\"1l\",ойла:\"1l\",ойто:16,ойш:19,ойы:\"1l\",оказв:16,\"окля \":16,окно:18,околу:\"x\",\"окот \":\"x\",окрај:\"x\",\"оку-\":16,окук:\"1k\",окуля:19,окы:\"1k\",олады:\"1l\",олази:\"v\",олард:\"1l\",олаты:\"1l\",олдан:\"1l\",\"олды \":\"1l\",олдыз:\"1k\",оледа:16,олее:18,олема:\"x\",олемо:\"x\",\"олео \":\"v\",\"олер \":17,олжна:18,олжны:18,\"оли-\":19,олиме:\"x\",\"олио \":\"v\",олих:16,олмай:\"1l\",олоо:\"1m\",\"олот \":\"x\",\"олса \":\"1l\",олсо:\"1m\",олсы:\"1l\",олуы:\"1l\",олып:\"1l\",ольз:18,олько:18,олькі:17,\"ольш \":17,ольше:18,ольши:18,ольшо:18,олява:16,\"олям \":16,оляма:16,олё:18,оліт:19,оліц:19,\"ом'\":19,омв:\"x\",омг:\"1k\",омив:19,омиле:\"x\",омиля:19,омити:19,омк:18,омнат:18,\"омня \":16,\"омог \":18,омой:18,омоч:18,омош:\"x\",\"омп'\":19,омъ:16,омын:\"1m\",оназ:16,онати:19,онеді:19,онеже:16,\"онии \":18,\"онил \":18,онима:18,онин:\"1m\",ониј:\"x\",оннан:\"1k\",оново:\"v\",\"онот \":\"x\",оној:\"x\",онра:18,ончил:18,ончит:18,ончы:17,онъ:16,оным:\"1l\",оныт:\"1k\",оняк:16,онял:18,онять:18,\"оні \":19,ообщ:18,ообі:19,оог:\"1m\",\"оод \":\"1m\",\"оол \":\"1m\",оопшт:\"x\",\"оор \":\"1m\",\"оос \":\"1m\",опадн:\"x\",\"опет \":\"v\",опозд:18,опози:19,опома:19,опомо:19,опону:19,опроб:18,опуш:\"x\",опчик:19,опчык:17,опы:18,опя:18,\"ор'\":17,\"орав \":\"x\",орака:\"x\",ораме:\"x\",орау:\"1k\",орете:16,ореца:16,орещ:16,\"орио \":\"v\",\"орит \":18,орих:16,орият:16,ороде:18,ороо:\"1m\",ортал:\"1l\",\"орую \":18,\"орый \":18,орынд:\"1l\",орыр:\"1k\",орь:18,орі:19,\"осан \":16,осві:19,\"осил \":18,осити:19,осмот:18,осмі:19,осот:\"x\",оспі:19,осси:18,осся:19,остап:\"x\",ость:18,ості:19,осува:19,осъ:16,осын:\"1l\",\"осі \":19,осј:\"x\",отае:18,отал:18,отвеч:18,отели:18,отеш:\"x\",отому:18,отору:18,оторы:18,\"отот \":\"x\",отрел:18,отрет:18,\"отри \":18,отрит:18,отря:18,отрі:19,отуку:\"x\",\"отым \":17,\"отыр \":\"1l\",отырм:\"1l\",отыры:\"1l\",оті:19,оуз:\"x\",\"офе \":18,офир:16,офн:\"x\",\"охаю \":19,охг:\"1m\",охин:\"1m\",\"охо \":18,охож:18,охы:\"1m\",оценя:16,\"оци \":\"x\",оцни:\"x\",оцо:\"1m\",оць:17,оці:19,очав:19,очатк:19,очац:17,очаш:17,очеки:\"v\",очемо:19,очему:18,очень:18,\"очеш \":19,очр:\"1k\",очува:19,очуть:19,очч:17,\"очы \":17,ошав:16,\"ошай \":17,\"ошая \":18,\"оше \":\"v\",ошиб:18,ошман:\"1k\",ошні:17,ошол:\"x\",\"ошы \":17,оші:19,оэт:18,ояш:\"1k\",оящ:18,\"оё \":18,оём:18,оёр:\"1m\",оёт:18,\"оі \":17,ојан:\"x\",ојат:\"x\",ојаш:\"x\",ојб:\"x\",ојд:\"x\",оје:\"v\",оји:\"v\",ојм:\"v\",ојна:\"x\",ојни:\"x\",ојс:\"x\",ојт:\"v\",ојц:\"x\",оља:\"v\",оња:\"v\",оње:\"x\",оњи:\"x\",оњо:\"x\",оңг:\"1k\",оңы:\"1l\",\"п'я\":19,\"па-\":17,паба:17,павед:17,павя:17,паві:17,пагл:17,падаб:17,падар:17,падз:17,падоб:17,паех:17,пазн:17,пазыч:17,пайда:\"1l\",пайш:17,пака:17,пакл:17,пакой:17,пакул:17,пакі:17,\"пал \":18,пама:17,памог:17,памы:17,памёр:17,памі:17,пао:\"v\",папра:17,паспр:17,патув:\"x\",пать:18,патэ:17,паць:17,пача:17,пачу:17,пачы:17,пањ:\"x\",пв:16,пд:18,пеа:\"x\",певен:19,певн:19,пег:\"x\",пез:\"x\",пейд:\"1l\",пео:\"v\",перад:17,перак:17,перас:17,перв:18,перши:19,перь:18,песна:\"x\",петь:18,пець:19,пеці:19,печел:16,пея:16,пеј:\"x\",пж:18,пиме:\"x\",\"пио \":\"v\",пирк:16,\"писа \":16,питав:19,питаш:16,питањ:\"v\",питв:16,\"пих \":16,пишув:\"x\",пищ:18,пиян:16,пијам:\"x\",пкр:\"x\",пкы:\"1k\",плад:\"x\",\"плаж \":16,плаша:\"x\",плох:18,плув:16,пм:\"1k\",\"по-до\":16,побар:\"x\",побач:19,побъ:16,пові:19,поган:19,подде:18,подив:19,подня:18,подхо:18,поед:18,позда:18,пойм:18,пойт:18,\"пока \":18,\"поки \":19,полі:19,помі:19,понеж:16,поним:18,понов:\"v\",понр:18,понуд:\"x\",порак:\"x\",порач:\"x\",посак:\"x\",посмо:18,потом:18,потпу:\"v\",потым:17,поцел:18,почал:19,почат:19,почем:18,почут:19,пошл:18,пошн:17,пощат:16,поэ:18,поё:18,прабл:17,прабу:17,прагр:17,прада:17,\"праз \":17,прапа:17,праша:\"x\",прашу:\"x\",пращ:16,\"прв \":\"x\",\"први \":\"v\",\"през \":16,преку:\"x\",препр:\"x\",претс:\"x\",прж:\"x\",пригл:18,прийн:19,приф:\"x\",проще:18,прый:17,прым:17,прын:17,прых:17,прэ:17,\"пря \":16,прі:19,псв:16,псыр:\"1l\",псі:\"1l\",птар:\"1l\",птас:\"1l\",птег:\"1l\",\"птен \":\"x\",птест:\"1l\",птушк:17,пуло:16,пуно:\"v\",пусн:16,\"пут \":\"v\",\"пута \":\"v\",путеш:18,путу:\"v\",пуј:\"v\",пф:18,пцу:\"x\",пці:19,\"пш \":17,пшая:17,\"пште \":\"v\",пшто:\"x\",\"пшы \":17,пъ:16,пытал:18,пыч:\"1k\",пье:18,пья:18,пют:16,пяв:17,пяк:17,пяр:17,пять:18,пяц:17,пяш:17,пё:18,піа:19,під:19,піз:19,пій:19,пікі:\"1l\",піла:17,\"пін \":\"1l\",\"піс \":17,піса:17,пісн:19,піт:19,піх:19,пішо:19,пљу:\"v\",\"р-бе\":\"1k\",\"р-бір\":\"1l\",\"рi \":\"1l\",рiл:\"1l\",рiн:\"1l\",раар:\"1m\",раат:\"x\",рабав:17,рабач:17,рабіл:17,равет:16,радв:16,радз:17,радий:19,радим:\"v\",радиш:\"v\",радна:16,раді:19,рает:18,\"раеш \":16,ражав:16,разві:17,разка:16,разч:16,разя:16,разі:19,райды:\"1l\",ралс:18,\"ралі \":17,рамад:17,раман:17,\"рамо \":\"v\",рамый:\"1k\",рамын:\"1l\",раней:17,раниј:\"v\",ранны:18,\"раня \":16,\"рао \":\"v\",рапил:19,расны:18,расол:19,расты:\"1l\",расың:\"1k\",расі:17,ратын:\"1l\",рать:18,\"ратя \":16,рахот:16,\"рац \":\"v\",раца:17,раць:17,рачы:17,\"раша \":\"x\",рашам:\"x\",рашив:18,рашыл:17,\"раще \":19,ращий:19,раэ:17,раюсь:18,рбув:19,рвак:\"1k\",рвам:16,рваш:16,рвио:\"x\",рвия:16,рвп:\"x\",рвт:\"x\",рвц:\"x\",рвы:18,рвэ:\"1m\",рвј:\"x\",ргаа:\"1m\",ргна:\"x\",ргы:\"1k\",ргэ:\"1m\",\"ргі \":\"1l\",ргү:\"1m\",рдi:\"1l\",рдей:\"1l\",рдем:\"1k\",рдз:17,рдц:18,рдың:\"1l\",рдэ:17,рдім:\"1l\",\"реа \":\"x\",реге:\"1k\",режд:18,резем:\"x\",рекле:\"1k\",\"реко \":\"v\",рекол:\"x\",релг:\"1k\",ремог:19,ремож:19,ремя:18,ремін:\"1l\",ренс:16,ренче:\"1k\",рерг:\"1k\",ресув:16,ретил:18,ретст:\"x\",ретте:\"1l\",ретх:\"x\",\"реть \":18,\"реща \":16,рещо:16,рещу:16,ржать:18,ржд:18,ржл:\"x\",ржув:\"x\",ржы:\"1l\",\"рза \":\"x\",рзай:16,рзу:\"x\",рзім:\"1l\",ригла:18,ридес:\"v\",рижам:\"x\",ризат:16,рийд:19,рийм:19,\"рийн \":\"1m\",рийня:19,рийсе:16,римав:19,римат:19,риним:18,ринта:16,риня:18,рисув:16,рифа:\"x\",\"рихи \":\"1l\",ричам:\"v\",ричај:\"v\",ришл:18,\"рию \":18,рияла:\"1l\",риян:\"1k\",\"рият \":16,рията:16,рй:19,ркi:\"1l\",ркасы:\"1k\",ркем:\"1k\",ркы:\"1k\",\"ркі \":17,рлал:\"1m\",рлама:\"1l\",рлары:\"1k\",рлек:\"1k\",\"рлер \":\"1l\",рлес:\"1l\",\"рлык \":\"1k\",рлэ:\"1m\",\"рлі \":\"1l\",рлігі:\"1l\",рлік:\"1l\",рмасы:\"1l\",рмый:\"1k\",рмыш:\"1k\",рнах:16,рнашк:\"1k\",рнеть:19,рнин:\"1k\",рнути:19,рнуть:18,\"рный \":18,рнын:\"1l\",рның:\"1k\",рнё:18,рнәр:\"1k\",робач:19,робв:16,\"роби \":19,робиш:19,роблю:19,робля:19,робіц:17,рові:19,родот:\"x\",родъ:16,\"рое \":18,розб:19,розл:19,розм:19,роис:18,рокі:19,\"роме \":18,\"роны \":18,\"роо \":\"1m\",ропоз:19,росы:18,росі:19,\"роти \":19,\"рохи \":19,рошая:18,\"рошо \":18,рошы:17,рпі:19,\"рсан \":\"1m\",рсет:\"1l\",\"рсең \":\"1k\",рсь:19,рсэ:\"1m\",\"ртай \":\"1m\",рталы:\"1l\",ртең:\"1l\",ртито:16,ртл:\"1k\",ртм:\"1k\",ртот:\"x\",ртъ:16,\"ртык \":\"1k\",ртын:\"1k\",ртэ:\"1m\",рувам:\"x\",руваш:\"x\",рувај:\"x\",ружин:19,рузей:18,рузь:18,рунок:19,русия:\"1k\",руска:17,рускі:17,руу:\"1m\",рухан:\"1l\",рфект:16,\"рхан \":\"1m\",рць:17,\"рч \":\"1m\",рчих:\"1m\",рчк:\"x\",рчы:\"1k\",ршам:\"x\",ршв:16,ршенн:18,ршио:\"v\",ршыню:17,ръ:16,рывае:18,рыго:17,рыем:17,рыех:17,рылды:\"1l\",рымац:17,рынан:\"1l\",рынн:\"1k\",рыня:17,рыста:17,рысто:17,рыход:17,рышы:\"1k\",рыю:17,рыя:17,рьд:\"1m\",рьм:18,рьо:19,рьса:\"1m\",рью:18,\"рэ \":17,рэб:17,рэва:17,\"рэг \":\"1m\",рэд:17,рэз:17,рэк:17,рэл:17,рэм:17,рэнн:17,рэс:17,рэт:17,рэх:\"1m\",рэц:17,рэч:17,рэш:17,рюв:19,рюю:19,\"рява \":16,рядом:18,ряе:18,ряж:18,\"рята \":16,\"ряти \":19,ряту:19,рё:18,ріа:19,ріб:19,рів:19,рід:19,різ:19,рій:19,ріп:\"1l\",ріт:19,річ:19,ріш:19,рію:19,рія:19,рљ:\"v\",рњ:\"v\",\"рү \":\"1k\",рә:\"1k\",\"р‐\":\"1l\",саат:\"x\",сабак:17,сабе:17,сабы:\"1k\",саен:\"1k\",сазн:\"v\",сайн:\"1m\",сакав:\"x\",сакал:\"x\",сакам:\"x\",сакаш:\"x\",сакл:\"1k\",салын:\"1l\",\"саме \":19,самый:18,санаа:\"1m\",\"санд \":\"1m\",саный:\"1k\",сао:\"v\",сапа:\"1l\",сапр:17,саст:\"v\",сатыл:\"1l\",сатын:\"1l\",сать:18,саул:\"1l\",саць:17,саче:\"v\",саяси:\"1l\",сањ:\"v\",\"саң \":\"1k\",сбе:18,сбъ:16,сваб:17,свае:17,свай:17,свак:\"v\",свам:16,\"сват \":16,сваш:16,сваю:17,\"све \":\"v\",свец:17,\"сви \":\"v\",свик:16,свим:\"v\",свого:19,своет:\"x\",свр:\"x\",сву:\"v\",свъ:16,связ:18,святл:17,свід:19,світ:19,сга:\"1m\",сгра:16,сгре:16,сгү:\"1m\",сда:18,сде:18,себя:18,сего:18,седем:16,седеш:\"x\",седум:\"x\",\"сез \":\"1k\",сезг:\"1k\",сезл:\"1k\",сезм:\"1k\",сезне:\"1k\",\"секи \":16,семле:\"1k\",сенб:\"1l\",серь:18,\"сето \":\"x\",\"сех \":18,сечи:\"x\",\"сеш \":\"x\",сж:18,сз:18,сибо:18,сиде:18,сиді:19,сии:18,симн:\"x\",\"сине \":\"1k\",\"сит \":18,\"сих \":18,сича:16,сички:16,сичко:16,сию:18,сияд:\"1k\",\"скам \":16,\"скат \":16,скаше:16,скен:\"1l\",скер:\"1l\",ские:18,ский:18,скио:\"x\",ския:16,склу:\"x\",ского:18,ское:18,ской:18,скок:\"x\",скол:18,сконт:\"x\",скоре:18,скрес:18,скъ:16,скіл:19,скім:17,\"сл \":18,слар:\"1k\",\"слев \":\"x\",следв:16,следу:18,слех:16,слеш:\"x\",сливи:19,\"слим \":\"v\",слио:\"v\",словы:17,сложн:18,слома:18,слув:\"x\",случу:\"x\",слыш:18,слід:19,смев:\"x\",\"смее \":\"x\",смерц:17,смеј:\"v\",смих:16,смог:18,смож:18,смъ:16,смыс:18,смята:16,снам:\"x\",снем:\"x\",\"снеш \":16,сний:19,сниј:\"v\",снош:\"x\",снощ:16,сный:18,сняв:16,сняг:16,сніг:19,снід:19,собат:\"x\",собі:19,совер:18,совс:18,сое:18,\"сож \":\"1m\",сокот:\"x\",солн:18,сольк:19,сонд:\"1l\",сонир:\"1m\",сонсо:\"1m\",сонца:17,сосем:\"x\",спава:\"v\",спарл:\"1l\",спати:19,спие:\"x\",спить:19,спиј:\"x\",споль:18,споме:16,спраб:17,\"спре \":16,\"спри \":16,спрос:18,спуш:\"x\",спын:17,\"спя \":16,спях:16,співа:19,спін:\"1l\",спіш:19,сраз:18,срб:\"v\",сретн:\"x\",срещ:16,сри:16,сря:16,\"сс \":18,сск:18,ссл:18,ссм:18,\"ссон \":\"1m\",сст:18,ссу:18,ссч:18,ссэ:\"1m\",ставі:17,стады:\"1l\",\"стае \":17,\"стал \":18,сталі:17,стамі:17,статн:19,стај:\"v\",\"стве \":18,стны:18,стоне:18,\"стот \":\"x\",стрет:18,\"стро \":18,стрі:19,стт:16,стъ:16,стынд:\"1k\",стыру:\"1l\",стыры:\"1l\",\"стың \":\"1l\",стэ:17,стік:\"1l\",стіл:19,стү:\"1l\",сувам:\"x\",суж:18,\"сум \":\"x\",супра:17,сура:\"1m\",сург:\"1m\",сурет:\"1l\",сустр:17,сутра:\"v\",сутри:16,суу:\"1m\",сушн:\"x\",сущ:18,суј:\"v\",сфат:\"x\",схр:\"x\",\"сца \":17,сцр:\"v\",сцы:17,сцю:17,\"сч \":\"1m\",счас:18,счуп:16,сше:18,сшы:\"1l\",сщ:18,съд:16,съз:16,съл:16,сън:16,сър:16,сът:16,сыв:18,сызл:\"1k\",сызм:\"1k\",сыма:\"1k\",сынан:\"1l\",сынна:\"1k\",сырыл:\"1l\",ський:19,сько:19,ську:19,ські:19,\"сьмо \":18,сьц:17,сэж:\"1m\",сэл:\"1m\",\"сэн \":\"1m\",сэт:\"1m\",сэх:\"1m\",сюди:19,\"сюды \":17,сюл:17,сяб:17,сяв:16,сял:17,сяр:17,сяс:17,сёд:17,сём:18,сіб:19,сів:19,сід:19,сіз:\"1l\",\"сін \":\"1l\",сінд:\"1l\",сіне:\"1l\",\"сіп \":\"1l\",сіц:17,сіш:17,сүз:\"1k\",сүй:\"1l\",сүр:\"1l\",сәб:\"1k\",сән:\"1k\",сәт:\"1k\",сәң:\"1k\",сөз:\"1l\",сөйле:\"1l\",сөйли:\"1k\",сөн:\"1m\",сөт:\"1k\",\"т)\":18,\"тi \":\"1l\",тiк:\"1l\",тiл:\"1l\",тiн:\"1l\",таал:\"1m\",таат:\"x\",\"табе \":17,табиб:\"1k\",табой:17,тавам:\"x\",тавыш:\"1k\",таго:17,тает:18,таза:\"1l\",\"тази \":16,тайды:\"1l\",\"таке \":19,такив:16,\"тако \":\"v\",такса:17,такъ:16,талап:\"1l\",талар:\"1k\",талды:\"1l\",талс:18,талу:\"1l\",тамас:\"1l\",\"тамо \":\"v\",тамын:\"1l\",танад:\"1l\",\"танд \":\"1m\",танды:\"1l\",танне:17,танок:\"x\",танув:\"x\",\"тао \":\"v\",тапи:\"x\",тапс:\"1l\",тапта:\"1l\",тараф:\"1k\",тард:\"1l\",тарлы:\"1l\",тарше:18,тарын:\"1l\",\"тас \":\"1l\",таста:\"1l\",тасты:\"1l\",тасың:\"1k\",тать:18,\"тац \":\"v\",таць:17,тачн:\"v\",таше:\"x\",ташл:\"1k\",таё:18,тајна:\"x\",тања:\"v\",тбас:\"1l\",твары:17,тваря:16,тваш:16,твет:18,твеча:18,\"твор \":\"x\",твојо:\"x\",твую:18,твъ:16,\"твя \":16,твё:18,тві:19,тги:\"1m\",тгэ:\"1m\",тдесе:16,тди:\"1k\",тдо:18,\"теб \":16,тебя:18,теген:\"1l\",теді:\"1l\",тежав:16,тежо:\"x\",\"тези \":16,текн:\"x\",телг:\"1k\",телей:18,телим:\"1k\",телос:18,телот:\"x\",тельс:18,телям:18,темі:\"1l\",тенл:\"1k\",тені:19,\"тео \":\"v\",тепа:\"x\",терге:\"1l\",терді:\"1l\",теря:18,тесті:\"1l\",теся:19,теу:\"1l\",\"тех \":18,\"тец \":18,тењ:\"x\",тивк:\"x\",тидем:16,тидов:\"x\",тиет:16,тиеш:\"1k\",\"тиз \":\"1k\",тийм:\"1m\",тимал:\"1k\",тимеш:19,\"тиму \":19,\"тио \":\"v\",тиот:\"x\",тирам:\"x\",тися:19,\"тито \":16,тиша:\"v\",тишо:\"x\",тище:16,тият:16,тињ:\"v\",тказв:16,ткакт:16,\"ткан \":\"1k\",ткен:\"1l\",ткер:\"1l\",ткра:16,ткры:18,ткуд:18,ткъ:16,тлар:\"1k\",тлык:\"1k\",\"тми \":\"1k\",тмый:\"1k\",тния:16,тнов:16,тный:18,тнь:19,\"тні \":19,\"то-т\":18,тобом:\"v\",тобы:18,тобі:19,товий:19,товче:16,\"тога \":\"v\",тогав:16,тогаш:\"x\",тогл:\"1m\",тоже:18,този:16,тоит:18,токм:\"x\",тоні:19,торды:\"1k\",тормы:\"1k\",торож:18,торой:18,торую:18,торый:18,\"тось \":19,тотка:\"1k\",тотук:\"x\",тофа:16,тохи:\"1m\",тпай:\"1l\",тпра:18,тпун:\"v\",тпуш:\"x\",трае:\"x\",трапи:19,трв:\"v\",трга:\"x\",тргн:\"x\",\"трел \":18,треч:18,триде:\"v\",триес:\"x\",триму:19,\"трин \":16,тринт:16,трите:18,трк:\"x\",трл:\"1l\",трохи:19,трпе:\"x\",\"трча \":\"x\",трчи:\"v\",трэ:17,тріл:19,тсек:\"x\",тсп:\"x\",тстве:18,тсъ:16,тсь:19,тсю:18,тся:18,ттi:\"1l\",ттай:\"1m\",ттар:\"1l\",ттем:\"1k\",ттерд:\"1l\",ттері:\"1l\",ттук:\"x\",\"ттым \":\"1k\",ттың:\"1l\",\"ття \":19,ттік:\"1l\",туват:19,туваш:\"x\",туган:\"1k\",туге:\"1l\",\"туе \":17,тукта:\"1k\",тулы:\"1k\",\"туль \":17,тусал:\"1m\",тусла:\"1m\",тухай:\"1m\",тучы:\"1k\",туј:\"v\",тфр:\"x\",тходн:\"x\",тца:18,тцо:18,тці:19,тча:18,тчэ:17,тшы:\"1l\",тші:\"1l\",тщ:18,тъл:16,тън:16,тър:16,тът:16,тылды:\"1l\",тыма:\"1l\",тынас:\"1l\",тынды:\"1l\",тынна:\"1k\",тынын:\"1l\",\"тыра \":\"1k\",тырат:\"1k\",\"тыры \":17,тысты:\"1l\",тысу:\"1l\",тыт:17,тычн:17,\"тыя \":17,тьд:18,тье:18,тьки:19,тько:19,тьо:19,тью:18,тья:18,тэг:\"1m\",тэд:\"1m\",тэй:\"1m\",тэк:17,\"тэл \":\"1m\",тэле:17,тэм:17,\"тэн \":\"1m\",тэнд:\"1m\",тэт:17,тэц:17,тюр:18,тяб:18,тял:16,тё:18,\"ті-\":19,тів:19,тіг:\"1l\",тій:19,тіла:19,тіль:19,тілі:\"1l\",тінд:\"1l\",тіне:\"1l\",тіп:\"1l\",тірі:\"1l\",тіт:19,тіш:19,тљ:\"v\",тњ:\"v\",\"тү \":\"1k\",түг:\"1k\",түе:\"1k\",түй:\"1l\",түн:\"1l\",түрд:\"1l\",түс:\"1l\",тәб:\"1k\",тәк:\"1k\",тәл:\"1k\",тәм:\"1k\",тән:\"1k\",тәс:\"1k\",тәң:\"1k\",төз:\"1k\",төле:\"1l\",төн:\"1k\",төп:\"1k\",төс:\"1k\",төш:\"1k\",\"у-т\":18,\"у-щ\":16,уi:\"1l\",у́:18,уаб:\"x\",уаны:\"1l\",уапс:\"x\",убб:18,убез:\"x\",убио:\"v\",убих:16,убија:\"x\",убовн:\"x\",убре:\"x\",уваа:\"x\",ували:19,уване:16,уванн:19,\"уват \":16,увати:19,увах:16,увачк:\"x\",уваше:\"x\",уваю:19,\"увај \":\"x\",увањ:\"x\",\"увек \":\"v\",увид:18,увк:16,увся:19,уву:\"1m\",уві:19,угаа:\"1m\",угац:\"1m\",угой:18,угы:\"1k\",удаа:\"1m\",\"удал \":\"1m\",удало:18,удзе:17,удиви:18,удивл:18,удинк:19,удино:19,удла:\"1m\",\"удри \":\"x\",удт:18,удың:\"1l\",удэ:17,уез:18,уенч:\"1k\",ует:18,уех:18,уец:17,ужава:16,\"ужен \":18,ужны:18,\"ужо \":17,ужов:17,ужчи:18,ужы:17,узг:\"1k\",узет:\"v\",узм:\"v\",узна:18,узр:\"v\",узско:18,узі:19,уик:16,уйды:\"1k\",уйл:\"1k\",уйна:\"1k\",уйст:18,уйти:18,уйц:17,укац:17,уклар:\"1k\",укна:\"x\",укы:\"1k\",улаа:\"1m\",улай:\"1k\",\"улар \":\"1k\",улат:\"x\",улача:\"1k\",улган:\"1k\",улды:\"1k\",улз:\"1m\",улице:18,улкад:\"1k\",улла:\"1k\",улм:\"1k\",улове:16,улого:19,улса:\"1k\",улсы:\"1k\",улуы:\"1k\",улыб:18,улып:\"1k\",улыш:\"1k\",ульна:17,улюб:19,уліц:17,\"умал \":18,умем:\"v\",\"умер \":18,умець:17,умні:19,умот:\"x\",\"умре \":\"x\",умря:16,умі:19,унет:\"x\",унш:\"1m\",\"уның \":\"1k\",\"уо \":\"v\",уоп:\"v\",\"упам \":\"x\",упин:19,упио:\"v\",упих:16,упоз:\"v\",упон:16,упп:18,\"упя \":16,упіл:17,\"ур'\":17,урад:\"v\",уража:16,уралы:\"1l\",урбу:19,урдан:\"1m\",урла:\"1k\",урнаш:\"1k\",уропа:\"1l\",уруп:\"1k\",уруха:\"1l\",урф:\"x\",урын:\"1k\",урэ:17,урі:19,усг:\"1m\",усив:19,\"усия \":\"1k\",усиян:\"1k\",услах:\"1m\",усми:16,усот:\"x\",успя:16,успі:19,усс:18,устал:18,\"усть \":18,усц:17,усъ:16,усё:17,утга:\"1m\",утеше:18,утилк:16,утия:16,утија:\"x\",утоб:\"v\",утомо:\"v\",утрин:16,утром:18,утс:18,уття:19,утыр:\"1k\",утэ:17,уті:19,\"уу \":\"1m\",ууг:\"1m\",ууд:\"1m\",уул:\"1m\",уун:\"1m\",уур:\"1m\",уус:\"1m\",уух:\"1m\",ууч:\"1m\",уфар:16,ухана:\"1l\",уход:18,уцц:17,уць:17,учак:\"v\",учать:18,учв:16,учеви:\"x\",учета:16,учињ:\"x\",учла:\"1m\",учот:\"x\",учра:\"1m\",учш:18,ушать:18,ушкар:\"v\",ушнос:\"x\",ушти:\"x\",ушыла:\"1l\",ущес:18,уыл:\"1l\",уында:\"1l\",уыр:\"1l\",уыс:\"1l\",уыт:\"1l\",уэ:18,уюц:17,ующ:18,уяв:19,уян:\"1k\",уё:18,уі:\"1l\",\"уј \":\"v\",ује:\"v\",ујк:\"x\",ујн:\"x\",ујт:\"v\",ују:\"v\",уљ:\"v\",уњ:\"v\",уң:\"1k\",уә:\"1k\",\"ф-\":18,фадз:17,файд:\"1k\",\"фала \":\"x\",фанав:17,фатам:\"x\",фате:\"x\",\"фати \":\"x\",фатив:\"x\",фг:18,феа:\"x\",фез:\"x\",феј:\"v\",фии:18,фике:\"1k\",филми:16,фию:18,фли:18,фм:18,фни:\"x\",фонув:19,фоњ:\"x\",фрк:\"x\",фрл:\"x\",фув:19,фул:\"x\",фус:\"x\",фч:18,фш:18,фъ:16,фьо:16,фэ:18,фю:18,фё:18,фію:19,фә:\"1k\",\"х-\":18,хаа:\"1m\",хабб:\"1l\",хава:17,\"хад \":\"1m\",хадз:17,хайва:\"1k\",хайд:16,хаки:\"1k\",хакт:\"1k\",\"хал \":18,халу:\"1m\",\"халі \":17,хама:\"1m\",хамг:\"1m\",ханад:\"1l\",ханга:\"1m\",ханне:17,хараа:\"1m\",хараг:\"1m\",харж:\"1m\",хариу:\"1m\",харс:\"1m\",хати:19,\"хаты \":17,хатын:\"1k\",хать:18,хац:17,хач:17,хая:18,хај:\"v\",хб:18,хван:16,хви:19,хвъ:16,хвіл:17,хгү:\"1m\",хда:\"1m\",хдэ:\"1m\",хез:\"1k\",хетл:\"1k\",хеј:\"v\",хз:18,хиад:\"1m\",хийд:\"1m\",хийс:\"1m\",\"хин \":\"1m\",хио:\"1m\",хиј:\"x\",хињ:\"v\",хлив:19,хлусі:17,хлэ:\"1m\",\"хме \":16,\"хмет \":\"1l\",\"хна \":16,хову:19,ходз:17,ходны:18,хожда:16,хожу:18,хоз:18,хоку:\"1k\",\"хон \":\"1m\",хоно:\"1m\",хоо:\"1m\",хопіц:17,\"хора \":16,хорат:16,хоти:18,\"хоть \":18,хотя:18,\"хоче \":19,хочем:19,хоё:\"1m\",хп:18,хса:\"1m\",хсэ:\"1m\",хтел:\"v\",хтео:\"v\",хтима:\"1k\",хуб:16,\"хува \":16,хувам:16,хуга:\"1m\",худал:\"1m\",худл:\"1m\",хуж:18,хум:\"x\",хурд:\"1m\",хутка:17,хуу:\"1m\",хч:18,\"хшы \":\"1k\",хшыр:\"1k\",хът:16,хыг:\"1m\",хыя:\"1k\",хэв:\"1m\",хэд:\"1m\",хэз:\"1m\",\"хэл \":\"1m\",хэн:\"1m\",хэр:\"1m\",хэц:\"1m\",хя:\"1m\",хё:18,\"хі \":17,хів:19,хід:19,хіл:17,хү:\"1m\",хә:\"1k\",хөг:\"1m\",хөк:\"1k\",хөн:\"1m\",хөр:\"1k\",\"ц-\":18,цi:19,цаа:\"1m\",цаг:\"1m\",цаж:\"1m\",\"цай \":17,цао:\"v\",цас:\"1m\",цать:18,цац:17,цач:\"x\",цањ:\"v\",цб:18,цветя:16,цвр:\"x\",цвят:16,цга:\"1m\",целов:18,цео:\"v\",цеся:17,цењ:\"v\",цз:18,\"цим \":19,цима:\"v\",цих:19,цию:18,циялы:\"1l\",цият:16,цко:18,цкі:17,цл:18,цм:17,\"цни \":\"x\",цну:\"v\",\"цо \":18,цот:\"x\",цре:\"x\",цуд:17,\"цуе \":17,цузь:19,ццам:17,цця:17,цці:17,цъ:16,цый:17,цыю:17,цыя:17,цьм:17,цьо:19,цэл:17,цэн:17,цюв:19,цюю:19,цяб:17,цяв:19,цяг:17,цяж:17,\"цял \":16,цяло:16,цяп:17,цяр:17,цят:19,цяц:17,цяч:17,цё:17,ціа:19,ців:19,цій:19,цілу:19,ціс:17,ціх:17,ціц:17,ціш:17,цію:19,ція:19,цү:\"1m\",чаа:\"x\",чаб:\"1k\",чаго:17,чадах:\"1m\",чадд:\"1m\",чадн:\"1m\",чадо:\"x\",чает:18,чакам:16,чаках:16,чакаш:16,чакв:16,чакта:\"1k\",чамай:\"1m\",чамта:\"1m\",чаму:17,чао:\"v\",часлі:17,часна:17,часно:19,часот:\"x\",\"част \":16,часта:17,частл:18,часц:17,чатис:19,чатыр:17,чаць:17,чащ:18,чањ:\"v\",чвам:16,чвр:\"v\",чеа:\"x\",чевл:\"x\",чего:18,чекай:19,чекат:19,чекаю:19,челек:\"1k\",челов:18,\"чемо \":19,чення:19,чео:\"v\",черас:\"v\",черва:\"x\",черво:19,черин:18,черо:18,чері:19,\"чесе \":\"1k\",\"чет \":18,четат:16,четеш:16,четс:18,четы:18,чж:18,чивк:16,чивс:19,\"чиж \":\"1m\",чилищ:16,чилс:18,чиме:\"x\",чиний:\"1m\",\"чинь \":\"1m\",чио:\"v\",чиси:\"x\",читис:19,читс:18,чиф:16,чихл:\"1m\",чихс:\"1m\",чичо:16,чија:\"x\",чиња:\"x\",чкр:\"x\",чкы:\"1k\",\"чкі \":17,члаа:\"1m\",члы:\"1k\",\"чнай \":17,чнах:16,чний:19,чнув:\"x\",чный:18,чнё:18,\"чні \":19,чога:17,чого:19,чол:19,чому:19,\"чот \":\"x\",чп:18,чраа:\"1m\",чрак:\"1k\",чсэ:\"1m\",что:18,чтэ:\"1m\",\"чува \":\"x\",чудя:16,чужб:16,чуо:\"v\",чутт:19,чуу:\"1m\",чух:16,чце:17,чці:19,ччи:19,ччу:17,чше:18,чъ:16,чыга:\"1k\",\"чыла \":17,чылар:\"1k\",\"чым \":17,чыма:17,чына:17,чынба:\"1k\",чынна:\"1k\",\"чыны \":17,чып:\"1k\",чырв:17,чыт:17,чыц:17,чыш:17,чыя:17,чь:18,\"чэ \":17,чэй:17,чэн:17,чэр:17,чю:19,чя:19,чё:18,чі:19,чњ:\"x\",чә:\"1k\",чө:\"1k\",шi:\"1l\",\"шае \":17,шает:18,шалты:\"1k\",шаме:\"x\",шао:\"v\",шарга:\"1k\",шаруа:\"1l\",шања:\"x\",шање:\"x\",шб:\"1k\",шви:19,шг:\"1k\",шего:18,\"шее \":18,шекар:\"1l\",шект:\"1l\",\"шене \":\"1k\",шення:19,\"шеп \":\"1k\",шесть:18,шива:18,\"шиг \":\"1m\",шие:18,шийд:\"1m\",шике:\"1k\",шиме:\"x\",\"шине \":18,\"шини \":19,\"шио \":\"v\",шиот:\"x\",шитис:19,шиц:\"v\",шия:16,шкад:17,шкала:\"1k\",\"шкан \":\"1k\",шкит:\"x\",шкл:17,шкода:19,школі:19,шком:18,шкім:\"1l\",шлад:\"1k\",шлар:\"1k\",шлос:18,шлі:17,\"шмат \":17,шнав:\"x\",шнал:\"x\",шния:16,шоб:\"v\",\"шов \":19,шое:18,шой:18,\"шол \":\"x\",\"шот \":\"x\",шофи:16,шофь:16,шою:19,шој:\"v\",шпе:\"1l\",шпо:\"x\",шсе:\"1k\",\"штам \":\"x\",\"штан \":\"1k\",штес:\"x\",штето:\"x\",штин:\"x\",штиш:\"x\",штол:\"x\",штом:\"x\",штось:17,штот:\"x\",штыр:\"1k\",\"шул \":\"1k\",шун:\"1k\",шуп:\"x\",шуу:\"1m\",шуф:17,шце:17,шча:17,шчэ:17,шъ:16,шыг:\"1k\",шый:\"1k\",шык:\"1k\",\"шыла \":17,шылар:\"1l\",\"шысы \":\"1l\",шых:17,шыц:17,шыя:17,шьс:18,шэ:17,шю:18,шё:18,шій:19,шік:\"1l\",шіл:\"1l\",шім:\"1l\",шін:\"1l\",шір:\"1l\",шіс:19,шіт:19,шј:\"x\",шљ:\"v\",шњ:\"v\",\"шү \":\"1k\",шә:\"1k\",щава:16,щае:18,щасли:19,щастл:16,щата:16,щать:18,щаш:16,щая:18,щег:18,щее:18,щей:18,щения:18,щеря:16,щето:16,щеше:16,щие:18,щищ:18,щия:16,\"щна \":16,щнах:16,щне:16,щоб:19,щод:19,щой:19,\"щом \":16,щор:19,щос:19,щот:16,щр:18,щт:16,щь:18,щя:16,щё:18,щі:19,ъб:16,ъв:16,ъг:16,ъж:16,ък:16,ъм:16,ъо:16,ъп:16,ъс:16,ъх:16,ъц:16,ъч:16,ъщ:16,ъя:18,ъё:18,ы́:18,ыби:18,ыбн:18,ыбор:18,ыбі:17,\"ыв \":18,ывай:18,\"ывал \":18,ыват:18,\"ываю \":18,ывуч:17,ыві:17,\"ыг \":\"1m\",\"ыган \":\"1k\",ыгар:\"1k\",ыгн:18,ыгож:17,ыгы:\"1k\",ыдз:17,\"ые \":18,ыел:\"1k\",ыен:\"1k\",ыжи:18,ызб:\"1l\",\"ызга \":\"1k\",ыздар:\"1l\",\"ызды \":\"1l\",ызлы:\"1k\",ызме:\"1l\",ызмы:\"1k\",ызна:17,ызны:\"1k\",ызык:\"1k\",ыи:18,ыйб:\"1k\",ыйк:\"1k\",ыйла:\"1k\",ыйм:\"1k\",ыйсы:\"1k\",ыйт:18,ыйч:\"1k\",ыйш:17,ыйы:\"1l\",ыкары:17,ыке:18,ыки:18,ыкк:\"1k\",ыклар:\"1k\",ыклы:\"1k\",ыкм:\"1k\",ыко:18,ыкс:\"1k\",ыкт:\"1k\",ыкі:17,ылад:\"1l\",\"ылай \":\"1l\",ылард:\"1l\",ыларн:\"1k\",ылася:17,ылаты:\"1l\",ылг:\"1k\",ылдың:\"1l\",ыле:18,ыли:18,ылл:\"1k\",ылмай:\"1l\",\"ылуы \":\"1l\",ылш:\"1l\",ылык:\"1k\",ылым:\"1l\",ылыс:\"1l\",ылі:17,ымал:17,\"ыман \":\"1k\",ымен:\"1l\",\"ымны \":\"1k\",ымш:\"1l\",\"ымы \":\"1k\",\"ымын \":\"1l\",ымі:17,\"ын-\":\"1k\",ынг:\"1k\",ынл:\"1k\",ынм:\"1k\",ынт:\"1l\",ынц:17,ынш:\"1l\",ыні:17,\"ып-\":\"1l\",ыпадк:17,ыпи:18,ыпо:18,ыпт:\"1l\",ыпу:18,ыпы:17,ыпі:17,ырад:\"1l\",ырак:\"1k\",\"ырау \":\"1l\",ыраш:17,ырвон:17,ырг:\"1k\",ырда:\"1k\",ыре:18,ырлар:\"1k\",\"ырлы \":\"1l\",ырлык:\"1k\",ырыр:\"1k\",ырыс:\"1l\",ырыш:\"1k\",ысан:\"1l\",ысн:17,\"ыста \":\"1l\",ыстан:\"1l\",ыстар:\"1l\",ыстр:18,\"ысты \":\"1l\",ыстыр:\"1l\",ыстың:\"1l\",ысц:17,ысынд:\"1l\",ысыны:\"1l\",\"ыся \":17,ытанн:17,ытац:17,ыти:18,ытм:\"1k\",ытп:\"1l\",ыть:18,ыу:18,ыф:\"1k\",ыходи:18,ыходн:18,ыхт:17,ыху:17,\"ыце \":17,ыцц:17,ыцы:17,ыць:17,ычл:\"1k\",ычно:18,ычр:\"1k\",ыше:18,ыши:18,ышм:\"1k\",ыщ:18,ыэ:17,ыяй:17,ыяльн:17,ыяс:18,ыят:\"1k\",ыё:17,ыі:17,ыңм:\"1k\",ыңн:\"1k\",ыңы:\"1l\",\"ь)\":18,\"ь-я\":19,ьбу:18,ьги:18,ьдаг:\"1m\",ьдар:\"1m\",ьде:18,ьдр:\"1m\",ьев:18,ьег:18,ьем:18,ьер:18,ьж:\"1m\",ьзо:18,ьзу:18,ьзя:18,ьи:18,ьй:19,ькою:19,ьле:\"1k\",ьмы:18,\"ьмі \":17,\"ьнай \":17,ьной:18,ьный:18,ьнік:17,ьніц:17,\"ьо \":19,ьог:19,ьом:19,ьох:19,ьсан:\"1m\",ьсь:19,ьтд:\"1m\",ьх:18,ьчи:18,ьшы:17,ьші:19,ьяд:\"1k\",ьям:18,ьё:18,ьә:\"1k\",\"э-\":18,э́:18,эа:17,эбн:17,\"эв \":\"1m\",эвч:\"1m\",эвы:17,эвэ:\"1m\",эгг:\"1m\",эгд:\"1m\",эгт:\"1m\",эгч:\"1m\",эгэ:\"1m\",эгү:\"1m\",\"эд \":\"1m\",эдг:\"1m\",эдд:\"1m\",эдз:17,эдий:\"1m\",эдэ:\"1m\",эе:17,\"эж \":\"1m\",эза:17,эзл:\"1k\",эзэ:\"1m\",эзі:17,эйг:\"1m\",эйш:17,эка:17,экз:18,экл:17,экт:17,элд:\"1m\",элеві:17,\"элек \":\"1k\",элеф:17,элж:\"1m\",элн:\"1m\",элс:\"1m\",элт:\"1m\",элх:\"1m\",элэ:\"1m\",элі:17,эмж:\"1m\",эмч:\"1m\",эмэг:\"1m\",\"энд \":\"1m\",эни:\"1m\",энне:17,эння:17,энтэ:\"1m\",энэ:\"1m\",эні:17,эрг:\"1m\",эрий:\"1m\",эрл:\"1m\",эрн:17,эро:18,эрт:\"1m\",эрх:\"1m\",эрц:17,эрэ:\"1m\",эса:17,эсл:17,эсц:17,эсэн:\"1m\",этаг:17,этай:17,этая:17,этг:\"1m\",эти:18,этк:17,это:18,этул:17,этую:17,этым:17,\"этых \":17,этыя:17,этэ:\"1m\",эхг:\"1m\",эхд:\"1m\",эхи:\"1m\",эхэ:\"1m\",эце:17,эцэ:\"1m\",эці:17,эча:17,эче:\"1k\",эчн:17,эчы:17,\"эш \":\"1k\",эше:\"1k\",эшк:\"1k\",эшл:\"1k\",эшн:\"1k\",эшц:17,ээ:\"1m\",\"эя \":17,эі:17,ю́:18,юбв:18,\"юбит \":18,\"юбиш \":19,юбя:18,юбё:17,юбіц:17,юва:19,югал:\"1k\",югары:\"1k\",юда:18,юдз:17,юдина:19,юи:18,юкк:\"1k\",\"юл \":\"1k\",юлы:\"1k\",юрь:18,юрі:19,\"ют \":18,ютс:18,ютъ:16,ють:19,юу:\"1m\",юцц:17,юць:17,ючв:16,ючов:16,ючы:17,ющий:18,юы:\"1k\",юё:18,\"я)\":18,\"я-т\":18,я́:18,яа:\"1m\",\"яб \":16,яба:17,ябв:16,\"ябе \":17,ябло:18,яблу:19,яблы:17,ябра:17,ябро:17,ябъ:16,ябы:\"1k\",явай:16,явам:16,яване:16,яват:16,\"явах \":\"1m\",яваш:16,явж:\"1m\",\"яво \":16,явса:\"1m\",ягв:17,\"яго \":17,ягы:\"1k\",ядае:17,ядар:\"1m\",ядв:16,ядене:16,\"ядеш \":16,ядз:17,ядис:16,ядит:18,\"ядо \":16,\"ядом \":18,ядома:17,ядос:16,ядох:16,ядрол:\"1l\",ядя:18,\"яе \":17,яет:18,яец:17,яжы:17,язате:18,язык:18,языл:\"1k\",якак:16,якаш:16,якб:19,якла:\"1k\",якои:16,якол:16,якт:\"1k\",якуй:17,якъ:16,якы:\"1k\",якім:17,ялат:16,ялг:\"1k\",ялот:16,ялс:18,ялю:17,ялё:17,ялі:17,\"ям'\":17,ямам:16,ямар:\"1m\",ямат:16,ямаш:16,ямн:17,ямі:17,яналь:17,яо:18,япер:17,япр:17,япу:18,ярат:\"1k\",ярв:16,ярж:17,ярих:\"1m\",ярла:\"1m\",ярп:17,яртай:\"1m\",ярь:\"1m\",ярэ:17,ясп:17,ясто:16,ясц:17,\"ясы \":\"1l\",ясь:18,ясі:17,ятр:17,ятъ:16,ятэ:17,яті:19,яф:\"1k\",\"яха \":16,яхм:16,яхш:\"1k\",яцц:17,яця:19,ячы:17,ячэ:17,яша:17,\"яши \":\"1k\",яшм:17,яшч:17,яшь:\"1k\",яща:18,яюц:17,яющ:18,яң:\"1k\",яү:\"1k\",ѐ:\"x\",ёб:18,\"ёд \":18,ёды:17,ёж:18,\"ёз \":18,ёзд:18,ёмс:18,ёмы:17,ёмі:17,ёнк:18,ёно:18,ёрн:18,ёсц:17,ёте:18,ётс:18,ёх:18,ёч:18,ёш:18,ёщ:18,ђ:\"v\",ѓ:\"x\",є:19,ѕ:\"x\",\"і-р\":19,іал:19,іан:19,\"іб \":19,\"ібен \":19,іберд:\"1l\",іби:19,іблія:17,ібн:19,ібр:19,ібы:17,\"ів \":19,івае:17,іват:19,іваюс:19,івк:19,івл:19,івн:19,івс:19,івц:19,івч:19,івы:17,\"іга \":17,іге:\"1l\",ігн:19,ігт:19,ігін:\"1l\",\"ідав \":19,ідан:19,ідат:19,ідб:19,ідв:19,ідд:19,\"іде \":19,ідея:19,ідзе:17,іди:19,ідк:19,ідл:19,ідм:19,ідн:19,ідо:19,ідп:19,ідр:19,ідс:19,ідт:19,ідх:19,ідч:19,ідь:19,ідэ:17,іді:19,ізар:17,ізб:\"1l\",ізв:19,ізг:\"1l\",іздв:19,ізде:\"1l\",ізді:\"1l\",ізи:19,ізна:19,ізни:19,ізно:19,ізні:19,ізо:19,ізш:\"1l\",ізь:19,ізіл:\"1l\",ійд:19,ійк:19,ійм:19,ійн:19,ійск:17,ійт:19,ійц:19,ійш:19,ікави:19,ікаво:19,\"ікам \":17,ікар:19,іки:19,ікк:\"1l\",ікн:19,ікого:19,іколи:19,іколі:17,ікте:\"1l\",ікті:\"1l\",ікув:19,\"ікі \":17,ікір:\"1l\",ілг:\"1l\",ілд:\"1l\",ілед:\"1l\",ілемі:\"1l\",ілер:\"1l\",ілес:\"1l\",ілеті:\"1l\",іли:19,ілк:19,ілл:19,ілм:\"1l\",ілок:19,ілув:19,ілы:17,ільк:19,ільни:19,ільно:19,ільш:19,ілю:19,\"іля \":19,іліг:\"1l\",ілік:\"1l\",ілім:\"1l\",ілінд:\"1l\",іліс:17,\"ім'\":19,імг:\"1l\",імдер:\"1l\",\"імен \":\"1l\",імет:\"1l\",імец:19,імна:19,\"імо \":19,імш:\"1l\",імя:17,іміз:\"1l\",імін:\"1l\",інава:17,інб:\"1l\",іни:19,інка:19,іння:19,інск:17,інтэ:17,інул:17,інц:19,інч:19,інши:19,іншы:17,іны:17,іню:19,іо:19,іпт:\"1l\",\"ір-\":\"1l\",ірг:\"1l\",ірд:\"1l\",іри:19,ірку:19,ірле:\"1l\",ірно:19,ірш:19,іры:17,ірю:19,іря:19,ірік:\"1l\",іріл:\"1l\",ірім:\"1l\",ісац:17,ісе:19,іси:19,іске:\"1l\",ісля:19,істей:\"1l\",істи:19,\"істо \":19,істы:17,ість:19,істю:19,ісу:19,ісце:19,\"іся \":17,ісяц:19,ісін:\"1l\",ітайс:17,ітап:\"1l\",іте:19,іти:19,ітк:19,ітл:19,іто:19,іты:17,іть:19,ітэ:17,іу:19,іху:19,іцай:17,\"іце \":17,іцт:17,іцца:17,іцы:17,іць:17,іці:19,іче:19,ічи:19,ічл:19,ічы:17,іше:19,іши:19,ішке:\"1l\",ішки:19,ішл:19,ішов:19,ішс:17,ішу:19,ішч:17,ішы:17,іщ:19,іют:19,іяй:17,іё:17,іі:17,ің:\"1l\",ї:19,јабо:\"x\",јабу:\"v\",јава:\"x\",јавиш:\"x\",јаву:\"x\",јаг:\"x\",јада:\"x\",јаде:\"x\",јади:\"x\",јае:\"x\",јаж:\"x\",јаз:\"x\",јано:\"x\",јао:\"v\",јапан:\"v\",јапо:\"x\",јар:\"x\",\"јас \":\"x\",\"јат \":\"x\",јата:\"x\",јател:\"x\",јатн:\"x\",јах:\"v\",јац:\"x\",јачк:\"x\",јашт:\"x\",јајц:\"x\",јба:\"x\",јбл:\"x\",јбо:\"v\",јвер:\"x\",јг:\"x\",јда:\"x\",јдем:\"x\",јден:\"x\",јдеш:\"x\",јди:\"x\",јдо:\"x\",јеб:\"v\",јев:\"v\",јед:\"v\",јез:\"v\",јел:\"v\",јем:\"v\",јео:\"v\",јер:\"v\",јес:\"v\",јете:\"v\",јето:\"x\",јеф:\"v\",јеш:\"v\",јзб:\"v\",јзи:\"x\",јим:\"v\",јио:\"v\",јих:\"v\",јиц:\"v\",јиш:\"v\",\"јк \":\"x\",јкат:\"x\",јке:\"v\",јки:\"x\",јку:\"v\",\"јл \":\"v\",\"јле \":\"x\",јло:\"x\",јмн:\"x\",јмо:\"v\",јму:\"x\",јнат:\"x\",\"јни \":\"x\",јну:\"v\",јов:\"x\",јод:\"x\",јом:\"v\",јор:\"x\",јот:\"x\",још:\"v\",јој:\"v\",јпо:\"x\",јпр:\"x\",јср:\"v\",јст:\"x\",јта:\"x\",\"ју \":\"v\",јуб:\"x\",јув:\"x\",јул:\"x\",јур:\"v\",јутр:\"v\",јуч:\"v\",јца:\"x\",јце:\"x\",јче:\"x\",јш:\"x\",јџ:\"x\",\"љ \":\"v\",\"ља \":\"v\",љав:\"v\",љад:\"v\",љак:\"v\",љал:\"v\",љам:\"v\",љан:\"v\",љао:\"v\",љај:\"v\",љањ:\"v\",ље:\"v\",љи:\"v\",љк:\"v\",љн:\"v\",љо:\"v\",љс:\"v\",\"љу \":\"v\",љубав:\"v\",љубе:\"x\",љубо:\"x\",људи:\"v\",љут:\"v\",ључ:\"v\",љуј:\"v\",њам:\"v\",њао:\"v\",њар:\"x\",њат:\"x\",њај:\"v\",њег:\"v\",њем:\"v\",њен:\"v\",њер:\"x\",њет:\"x\",њењ:\"v\",њив:\"v\",њиг:\"v\",њим:\"v\",њир:\"v\",њит:\"x\",њих:\"v\",њом:\"v\",њот:\"x\",њој:\"v\",њс:\"v\",\"њу \":\"v\",њуј:\"v\",ћ:\"v\",ќ:\"x\",ў:17,џа:\"x\",џв:\"x\",џеб:\"x\",џем:\"x\",џер:\"x\",џеј:\"x\",џим:\"v\",џин:\"x\",џиј:\"x\",џог:\"x\",џу:\"x\",ѣ:18,ґ:19,ғ:\"1l\",җ:\"1k\",қ:\"1l\",ңадан:\"1k\",ңар:\"1k\",ңб:\"1l\",ңга:\"1k\",ңгей:\"1l\",ңгы:\"1k\",ңгі:\"1l\",ңды:\"1l\",ңді:\"1l\",\"ңе \":\"1l\",ңел:\"1k\",ңес:\"1l\",ңке:\"1l\",ңл:\"1k\",\"ңме \":\"1k\",ңмен:\"1l\",ңмы:\"1k\",ңне:\"1k\",ңны:\"1k\",ңр:\"1k\",ңс:\"1l\",ңт:\"1l\",ңч:\"1k\",ңыз:\"1l\",ңыр:\"1l\",ңыш:\"1k\",ңі:\"1l\",ңү:\"1k\",ңә:\"1k\",үб:\"1k\",\"үг \":\"1m\",үгд:\"1m\",үге:\"1k\",үгэ:\"1m\",үгі:\"1l\",үгү:\"1m\",\"үд \":\"1m\",үди:\"1m\",үдэ:\"1m\",\"үе \":\"1k\",үед:\"1m\",үен:\"1k\",\"үз \":\"1k\",үзг:\"1k\",\"үзе \":\"1k\",үзем:\"1k\",үзен:\"1k\",үзең:\"1k\",үзл:\"1k\",үзэ:\"1m\",үзі:\"1l\",үйг:\"1l\",үйд:\"1l\",үйе:\"1l\",үйр:\"1l\",үйт:\"1m\",\"үк \":\"1k\",үкі:\"1l\",үлем:\"1k\",үлк:\"1l\",үлм:\"1k\",үлэ:\"1m\",үлі:\"1l\",үмк:\"1l\",үмі:\"1l\",үмү:\"1m\",\"үнд \":\"1m\",үне:\"1k\",үние:\"1l\",үний:\"1m\",үнт:\"1m\",үнэ:\"1m\",үні:\"1l\",үп:\"1k\",үргі:\"1l\",\"үрде \":\"1l\",үрен:\"1k\",үрк:\"1l\",үрл:\"1l\",үрс:\"1k\",үру:\"1l\",үрэ:\"1m\",үрі:\"1l\",\"үс \":\"1m\",үсд:\"1m\",үсе:\"1k\",үсс:\"1m\",үсті:\"1l\",үсч:\"1m\",үсэ:\"1m\",үсі:\"1l\",үтк:\"1k\",үтэ:\"1m\",үті:\"1l\",үх:\"1m\",үч:\"1k\",\"үш \":\"1l\",үше:\"1l\",үшт:\"1l\",үші:\"1l\",үң:\"1k\",үү:\"1m\",ұ:\"1l\",һ:\"1k\",\"ә \":\"1k\",\"ә-\":\"1k\",әбб:\"1k\",әбе:\"1k\",әби:\"1k\",әв:\"1k\",әг:\"1k\",\"әде \":\"1k\",әден:\"1l\",әді:\"1l\",әе:\"1k\",әж:\"1l\",әзе:\"1k\",әзі:\"1l\",\"әй \":\"1k\",әйб:\"1k\",әйд:\"1k\",әйк:\"1l\",әйл:\"1k\",әйр:\"1k\",әйт:\"1k\",\"әк \":\"1k\",әки:\"1k\",әкк:\"1k\",әкл:\"1k\",әкм:\"1k\",әкр:\"1k\",әкт:\"1k\",әкъ:\"1k\",әкі:\"1l\",әла:\"1k\",әлд:\"1k\",\"әле \":\"1k\",әлем:\"1l\",әлеум:\"1l\",әли:\"1k\",әлк:\"1k\",әлл:\"1k\",әлі:\"1l\",\"әм \":\"1k\",әма:\"1k\",әмг:\"1k\",әме:\"1k\",әми:\"1k\",әмл:\"1k\",әмм:\"1k\",\"ән \":\"1k\",әнб:\"1k\",әнг:\"1k\",әнд:\"1k\",әнем:\"1k\",әнен:\"1k\",әнеп:\"1k\",әнерг:\"1k\",әни:\"1k\",әнл:\"1k\",әнм:\"1k\",әнн:\"1k\",әнч:\"1k\",әні:\"1l\",әнү:\"1k\",әп:\"1k\",әрi:\"1l\",әрв:\"1k\",әрг:\"1k\",\"әре \":\"1k\",әрек:\"1l\",әрел:\"1k\",әрем:\"1k\",әрен:\"1k\",әрең:\"1k\",әрл:\"1k\",әрм:\"1k\",әрн:\"1k\",\"әрсе \":\"1l\",әрі:\"1l\",\"әс \":\"1k\",әсi:\"1l\",\"әсе \":\"1k\",әсез:\"1k\",әсем:\"1k\",әсен:\"1k\",әсең:\"1k\",әске:\"1l\",әсл:\"1k\",әсі:\"1l\",\"әт \":\"1k\",әте:\"1k\",әтк:\"1k\",әтл:\"1k\",әтт:\"1k\",әтч:\"1k\",әу:\"1l\",әф:\"1k\",әх:\"1k\",әч:\"1k\",әш:\"1k\",әэ:\"1k\",әя:\"1k\",\"әң \":\"1k\",әү:\"1k\",\"ө \":\"1m\",өбі:\"1l\",өв:\"1m\",\"өг \":\"1m\",өга:\"1k\",өге:\"1k\",өгл:\"1m\",өгн:\"1m\",өгс:\"1m\",өд:\"1m\",өе:\"1k\",өж:\"1m\",өзд:\"1l\",өзі:\"1l\",\"өй \":\"1k\",өйг:\"1k\",өйд:\"1k\",өйр:\"1k\",өке:\"1k\",өкі:\"1l\",өлд:\"1m\",өлк:\"1k\",өлм:\"1l\",өлт:\"1l\",өлш:\"1l\",өлі:\"1l\",өмб:\"1m\",өмек:\"1l\",өмет:\"1k\",өмк:\"1k\",өмл:\"1k\",өмн:\"1m\",өмі:\"1l\",өнді:\"1l\",\"өне \":\"1k\",өни:\"1m\",өнк:\"1k\",өнл:\"1k\",өнн:\"1k\",өнь:\"1k\",өні:\"1l\",өпт:\"1l\",\"өр \":\"1m\",өрді:\"1l\",өреді:\"1l\",өрем:\"1l\",өрес:\"1k\",\"өри \":\"1k\",өрий:\"1m\",өрк:\"1k\",өрл:\"1k\",өрме:\"1l\",өрсе:\"1l\",\"өрт \":\"1l\",өрч:\"1m\",өрі:\"1l\",өст:\"1k\",өтк:\"1l\",өтт:\"1l\",өтэ:\"1m\",өті:\"1l\",\"өх \":\"1m\",\"өч \":\"1k\",өче:\"1k\",өчи:\"1m\",өчл:\"1k\",өшт:\"1k\",өю:\"1k\",өя:\"1k\",өң:\"1l\",өө:\"1m\",\"՛\":\"1e\",\"՜\":\"1e\",\"՝\":\"1e\",\"՞\":\"1e\",ա:\"1e\",բ:\"1e\",գ:\"1e\",դ:\"1e\",ե:\"1e\",զ:\"1e\",է:\"1e\",ը:\"1e\",թ:\"1e\",ժ:\"1e\",ի:\"1e\",լ:\"1e\",խ:\"1e\",ծ:\"1e\",կ:\"1e\",հ:\"1e\",ձ:\"1e\",ղ:\"1e\",ճ:\"1e\",մ:\"1e\",յ:\"1e\",ն:\"1e\",շ:\"1e\",ո:\"1e\",չ:\"1e\",պ:\"1e\",ջ:\"1e\",ռ:\"1e\",ս:\"1e\",վ:\"1e\",տ:\"1e\",ր:\"1e\",ց:\"1e\",ւ:\"1e\",փ:\"1e\",ք:\"1e\",օ:\"1e\",ֆ:\"1e\",և:\"1e\",\"։\":\"1e\",\"ְ\":\"1g\",\"ֱ\":\"1g\",\"ֲ\":\"1g\",\"ִּ\":\"1g\",\"ִב\":\"1g\",\"ִד \":\"1h\",\"ִדי\":\"1h\",\"ִדן\":\"1h\",\"ִו\":\"1h\",\"ִי\":\"1g\",\"ִכ\":\"1g\",\"ִל\":\"1g\",\"ִם\":\"1g\",\"ִמ\":\"1g\",\"ִס\":\"1h\",\"ִע\":\"1h\",\"ִפ\":\"1g\",\"ִקייט\":\"1h\",\"ִר\":\"1g\",\"ִש \":\"1h\",\"ִת\":\"1g\",\"ֵ\":\"1g\",\"ֶ\":\"1g\",\"ַּ\":\"1g\",\"ַ־\":\"1h\",\"ַב \":\"1h\",\"ַבט\":\"1h\",\"ַבי\":\"1h\",\"ַבן\":\"1h\",\"ַבער \":\"1h\",\"ַג\":\"1h\",\"ַד \":\"1h\",\"ַדי\":\"1h\",\"ַדע\":\"1h\",\"ַהיי\":\"1h\",\"ַו\":\"1h\",\"ַז \":\"1h\",\"ַזו\":\"1h\",\"ַחוץ \":\"1h\",\"ַט\":\"1h\",\"ַיִנע\":\"1h\",\"ַיא\":\"1h\",\"ַך\":\"1h\",\"ַכט\":\"1h\",\"ַכן\":\"1h\",\"ַכע\":\"1h\",\"ַלא\":\"1h\",\"ַלד\":\"1h\",\"ַלט\":\"1h\",\"ַלי\":\"1h\",\"ַלן\":\"1h\",\"ַלע\":\"1h\",\"ַלץ\":\"1h\",\"ַם\":\"1h\",\"ַמט \":\"1h\",\"ַמי\":\"1h\",\"ַמע\":\"1h\",\"ַנא\":\"1h\",\"ַנג\":\"1h\",\"ַנד\":\"1h\",\"ַנט\":\"1h\",\"ַני\":\"1h\",\"ַנס\":\"1h\",\"ַנע\":\"1h\",\"ַנץ\":\"1h\",\"ַנצוי\":\"1h\",\"ַנצי\":\"1h\",\"ַנק\":\"1h\",\"ַס\":\"1h\",\"ַער\":\"1h\",\"ַף\":\"1h\",\"ַפּ\":\"1h\",\"ַץ\":\"1h\",\"ַצי\":\"1h\",\"ַק\":\"1h\",\"ַרא\":\"1h\",\"ַרב\":\"1h\",\"ַרג\":\"1h\",\"ַרד\":\"1h\",\"ַרו\":\"1h\",\"ַרט\":\"1h\",\"ַרי\":\"1h\",\"ַרל\":\"1h\",\"ַרמא\":\"1h\",\"ַרן\":\"1h\",\"ַרנו\":\"1h\",\"ַרע\":\"1h\",\"ַרף\":\"1h\",\"ַרץ \":\"1h\",\"ַרצי\":\"1h\",\"ַרצן \":\"1h\",\"ַרק\":\"1h\",\"ַרש\":\"1h\",\"ַשי\":\"1h\",\"ַשלוס\":\"1h\",\"ַת\":\"1g\",\"ָּ\":\"1g\",\"ָ־\":\"1h\",\"ָב \":\"1h\",\"ָביש \":\"1h\",\"ָבל\":\"1h\",\"ָבן\":\"1h\",\"ָבע\":\"1h\",\"ָג\":\"1h\",\"ָדע\":\"1h\",\"ָו\":\"1h\",\"ָז\":\"1h\",\"ָט\":\"1h\",\"ָך\":\"1h\",\"ָכן\":\"1h\",\"ָל \":\"1h\",\"ָלא\":\"1h\",\"ָלט\":\"1h\",\"ָלי\":\"1h\",\"ָלן \":\"1h\",\"ָלסט\":\"1h\",\"ָלע\":\"1h\",\"ָלק\":\"1h\",\"ָמא\":\"1h\",\"ָמי\":\"1h\",\"ָמס\":\"1h\",\"ָמע\":\"1h\",\"ָנא\":\"1h\",\"ָנג\":\"1h\",\"ָנהיי\":\"1h\",\"ָנט\":\"1h\",\"ָני\":\"1h\",\"ָנע\":\"1h\",\"ָס\":\"1h\",\"ָע\":\"1h\",\"ָף\":\"1h\",\"ָפּ\":\"1h\",\"ָצ\":\"1h\",\"ָק\":\"1h\",\"ָר \":\"1h\",\"ָרבן\":\"1h\",\"ָרג\":\"1h\",\"ָרד\":\"1h\",\"ָרט\":\"1h\",\"ָרי\":\"1h\",\"ָרמא\":\"1h\",\"ָרן\":\"1h\",\"ָרני\":\"1h\",\"ָרע\":\"1h\",\"ָשקע\":\"1h\",\"ָת\":\"1g\",\"ֹ\":\"1g\",\"ֻ\":\"1g\",\"ּאַ\":\"1h\",\"ּאָ\":\"1h\",\"ּגע\":\"1h\",\"ּוו\":\"1h\",\"ּוח \":\"1h\",\"ּונקט\":\"1h\",\"ּחה\":\"1h\",\"ּטימי\":\"1h\",\"ּיג\":\"1h\",\"ּיט\":\"1h\",\"ּיל\":\"1h\",\"ּיסק \":\"1h\",\"ּיצע \":\"1h\",\"ּיר\":\"1h\",\"ּישו\":\"1h\",\"ּך\":\"1g\",\"ּלא\":\"1h\",\"ּליצי\":\"1h\",\"ּלמיד\":\"1h\",\"ּם\":\"1g\",\"ּמיד\":\"1h\",\"ּמעט \":\"1h\",\"ּנד\":\"1h\",\"ּניהו\":\"1h\",\"ּנים \":\"1h\",\"ּסט \":\"1h\",\"ּעס\":\"1h\",\"ּער\":\"1h\",\"ּק\":\"1g\",\"ּרא\":\"1h\",\"ּרוּ\":\"1h\",\"ּרי\":\"1h\",\"ּרעזי\":\"1h\",\"ּשוט\":\"1h\",\"ּת\":\"1g\",\"ֽ\":\"1g\",\"־א\":\"1h\",\"־ב\":\"1h\",\"־ג\":\"1h\",\"־ד\":\"1h\",\"־הבית\":\"1h\",\"־ו\":\"1h\",\"־ז\":\"1h\",\"־ט\":\"1h\",\"־י\":\"1h\",\"־כ\":\"1h\",\"־ל\":\"1h\",\"־מ\":\"1h\",\"־נ\":\"1h\",\"־ע\":\"1h\",\"־פ\":\"1h\",\"־ק\":\"1h\",\"־ר\":\"1h\",\"־ש\":\"1h\",\"ֿ\":\"1h\",\"ׁ\":\"1g\",\"ׂה\":\"1h\",\"ׂו\":\"1h\",\"ׂי\":\"1h\",\"ׂכ\":\"1h\",\"ׂם\":\"1h\",\"ׂר\":\"1h\",\"א'\":\"1g\",\"א-\":\"1g\",אִ:\"1g\",\"אַ \":\"1h\",אַב:\"1h\",אַד:\"1h\",אַה:\"1h\",אַז:\"1h\",אַחוץ:\"1h\",אַי:\"1h\",אַכס:\"1h\",\"אַל \":\"1h\",אַלז:\"1h\",אַלקא:\"1h\",\"אַלש \":\"1h\",אַמא:\"1h\",אַמט:\"1h\",אַן:\"1h\",אַנצו:\"1h\",אַצן:\"1h\",אַר:\"1h\",אַש:\"1h\",\"אָ \":\"1h\",אָב:\"1h\",אָד:\"1h\",אָל:\"1h\",אָם:\"1h\",אָן:\"1h\",אָנה:\"1h\",אָנס:\"1h\",אָנשט:\"1h\",אָר:\"1h\",אָש:\"1h\",\"א־\":\"1h\",אא:\"1g\",אבי:\"1g\",אבל:\"1g\",\"אד \":\"1g\",אדם:\"1g\",אהב:\"1g\",\"אהוב \":\"1g\",אוד:\"1g\",אוה:\"1g\",אווי:\"1g\",אוטו:\"1g\",אויט:\"1h\",אויס:\"1h\",אויף:\"1h\",אול:\"1g\",אומג:\"1h\",אומזי:\"1h\",אומצו:\"1h\",אונג:\"1h\",אונה:\"1g\",אונט:\"1h\",אוניב:\"1g\",אוסטר:\"1g\",אופן:\"1g\",אושר:\"1g\",אות:\"1g\",\"אזוי \":\"1h\",אח:\"1g\",\"איז \":\"1h\",אייב:\"1h\",אייג:\"1h\",איין:\"1h\",אייער:\"1h\",איירא:\"1h\",אילו:\"1g\",אינדא:\"1h\",\"אינה \":\"1g\",אינו:\"1g\",אינטר:\"1g\",איסלא:\"1h\",אירא:\"1h\",אית:\"1g\",\"אלא \":\"1g\",אלה:\"1g\",\"אלו \":\"1g\",אלוהי:\"1g\",\"אלות \":\"1g\",\"אמא \":\"1g\",אמי:\"1g\",אמר:\"1g\",\"אנא \":\"1g\",אנגל:\"1g\",אנו:\"1g\",אני:\"1g\",אנש:\"1g\",אע:\"1g\",אף:\"1g\",אפיל:\"1g\",אצ:\"1g\",ארבע:\"1g\",ארוח:\"1g\",\"ארץ \":\"1g\",אשו:\"1g\",אשר:\"1g\",את:\"1g\",\"ב'\":\"1g\",\"ב-\":\"1g\",בִ:\"1g\",בַ:\"1g\",בָ:\"1g\",בּ:\"1g\",\"בא \":\"1g\",באַ:\"1h\",באָ:\"1h\",\"באה \":\"1g\",באו:\"1g\",באי:\"1g\",באמצע:\"1g\",בב:\"1g\",בג:\"1g\",\"בד \":\"1g\",\"בדוק \":\"1g\",\"בדות \":\"1g\",בדי:\"1g\",\"בו \":\"1g\",בוא:\"1g\",\"בוגר \":\"1g\",\"בוד \":\"1g\",בודה:\"1g\",בוודא:\"1g\",בויר:\"1h\",\"בוכה \":\"1g\",\"בול \":\"1g\",בולגא:\"1h\",בולשי:\"1h\",בוס:\"1g\",בוע:\"1g\",בוק:\"1g\",\"בור \":\"1g\",בורים:\"1g\",בות:\"1g\",בחודש:\"1g\",\"בחוץ \":\"1g\",בחי:\"1g\",בטו:\"1g\",בטיח:\"1g\",\"בי \":\"1g\",\"ביא \":\"1g\",\"ביב \":\"1g\",ביו:\"1g\",\"ביז \":\"1h\",ביידע:\"1h\",\"ביל \":\"1g\",\"בילה \":\"1g\",ביליש:\"1h\",\"בילך \":\"1g\",בים:\"1g\",\"בינה \":\"1g\",ביסט:\"1h\",ביסל:\"1h\",ביקש:\"1g\",בירגע:\"1h\",\"בירה \":\"1g\",בך:\"1g\",בכל:\"1g\",\"בל \":\"1g\",בלוי:\"1h\",\"בלות \":\"1g\",\"בלים \":\"1g\",בלעדי:\"1g\",בם:\"1g\",במ:\"1g\",בנו:\"1g\",\"בני \":\"1g\",\"בנים \":\"1g\",\"בעה \":\"1g\",בעו:\"1g\",בעי:\"1g\",\"בעלי־\":\"1h\",בערבע:\"1h\",\"בערך \":\"1g\",בפ:\"1g\",בץ:\"1g\",בצ:\"1g\",בקר:\"1g\",בקש:\"1g\",\"ברגע \":\"1g\",ברה:\"1g\",ברוג:\"1h\",ברוד:\"1h\",\"ברור \":\"1g\",\"ברות \":\"1g\",ברחוב:\"1g\",בריא:\"1g\",ברים:\"1g\",ברסיט:\"1g\",ברעי:\"1h\",ברת:\"1g\",בשב:\"1g\",\"בשקט \":\"1g\",בתי:\"1g\",\"ג'\":\"1g\",גַ:\"1g\",\"ג־\":\"1h\",גאַ:\"1h\",גאָ:\"1h\",גג:\"1g\",גדו:\"1g\",גה:\"1g\",גוט:\"1h\",\"גולם \":\"1h\",\"גולף \":\"1g\",\"גורם \":\"1g\",\"גות \":\"1g\",גח:\"1g\",\"גט \":\"1h\",גיד:\"1g\",\"גיט \":\"1h\",\"גיי \":\"1h\",גייט:\"1h\",גיין:\"1h\",גיל:\"1g\",\"גים \":\"1g\",\"גינה \":\"1g\",\"גיעה \":\"1g\",גיעזע:\"1h\",גיש:\"1g\",גלויב:\"1h\",\"גליד \":\"1h\",\"גלים \":\"1g\",גליק:\"1h\",גליש:\"1h\",\"גלל \":\"1g\",גלע:\"1h\",גם:\"1g\",גמ:\"1g\",\"גנער \":\"1h\",גסט:\"1h\",געב:\"1h\",געד:\"1h\",געוו:\"1h\",געז:\"1h\",געט:\"1h\",געל:\"1h\",געמי:\"1h\",גען:\"1h\",גענגס:\"1h\",גענוג:\"1h\",געני:\"1h\",גענע:\"1h\",געס:\"1h\",געק:\"1h\",\"גער \":\"1h\",גערי:\"1h\",גערע:\"1h\",געשו:\"1h\",געשע:\"1h\",געשר:\"1h\",גף:\"1g\",גפ:\"1g\",גרוי:\"1h\",\"גרום \":\"1g\",\"גרים \":\"1g\",גרין:\"1h\",גש:\"1g\",גת:\"1g\",\"ג׳\":\"1g\",\"ד'\":\"1g\",\"ד-\":\"1g\",דִ:\"1g\",דַ:\"1g\",דָ:\"1g\",\"ד־\":\"1h\",דאַ:\"1h\",דאָ:\"1h\",\"דאוג \":\"1g\",\"דאס \":\"1h\",דב:\"1g\",דג:\"1g\",דד:\"1g\",\"דואר \":\"1g\",דובר:\"1g\",\"דול \":\"1g\",דולדי:\"1h\",\"דולר \":\"1g\",\"דון \":\"1g\",\"דוע \":\"1g\",\"דור \":\"1g\",דורך:\"1h\",דז:\"1h\",דח:\"1g\",דט:\"1h\",דיבר:\"1g\",דידות:\"1g\",דיו:\"1g\",\"דיים \":\"1g\",\"דינט \":\"1h\",\"דיף \":\"1g\",\"דיקט \":\"1h\",\"דיקן \":\"1h\",\"דישן \":\"1h\",דישע:\"1h\",דך:\"1g\",דכ:\"1g\",דלע:\"1h\",דמ:\"1g\",דנטים:\"1g\",דסט:\"1h\",דעם:\"1h\",דענק:\"1h\",דער:\"1h\",דעת:\"1g\",דף:\"1g\",דפ:\"1g\",דצ:\"1g\",דק:\"1g\",\"דר \":\"1g\",דריקט:\"1h\",\"דרך \":\"1g\",דרע:\"1h\",\"דשה \":\"1g\",\"דשות \":\"1g\",דת:\"1g\",\"ד״\":\"1h\",\"ה'\":\"1g\",\"ה-\":\"1g\",הִ:\"1g\",הַ:\"1g\",הָ:\"1g\",הּ:\"1g\",\"ה־\":\"1h\",האַ:\"1h\",האָ:\"1h\",האהוב:\"1g\",האו:\"1g\",\"האט \":\"1h\",האי:\"1g\",האל:\"1g\",האם:\"1g\",האמת:\"1g\",\"הב \":\"1g\",הבת:\"1g\",הג:\"1g\",הה:\"1g\",הוא:\"1g\",הויז:\"1h\",הול:\"1g\",הונט:\"1h\",הוציא:\"1g\",הור:\"1g\",הז:\"1g\",הח:\"1g\",היא:\"1g\",היה:\"1g\",היו:\"1g\",הייב:\"1h\",הייט:\"1h\",הייל:\"1h\",היים:\"1h\",היימי:\"1h\",הייס:\"1h\",\"היכן \":\"1g\",הילד:\"1g\",\"הילף \":\"1h\",\"הים \":\"1g\",\"הימל \":\"1h\",\"הין \":\"1h\",הינדי:\"1h\",הינט:\"1h\",היר:\"1g\",הית:\"1g\",הך:\"1g\",הכ:\"1g\",הל:\"1g\",הם:\"1g\",המו:\"1g\",המי:\"1g\",הממשל:\"1g\",המש:\"1g\",הנה:\"1g\",הס:\"1g\",העו:\"1g\",העי:\"1g\",\"העלד \":\"1h\",\"הער \":\"1h\",הערב:\"1g\",הפ:\"1g\",הץ:\"1g\",הצ:\"1g\",הק:\"1g\",\"הר \":\"1g\",הרא:\"1g\",הרב:\"1g\",\"הרגע \":\"1g\",הרו:\"1g\",הרחוב:\"1g\",הרי:\"1g\",השא:\"1g\",השי:\"1g\",\"השמש \":\"1g\",השני:\"1g\",הת:\"1g\",\"ה׳\":\"1g\",\"ו'\":\"1g\",\"ו-\":\"1g\",וַ:\"1g\",וָ:\"1g\",וּו:\"1h\",וּסט:\"1h\",\"ו־\":\"1h\",\"וא \":\"1g\",ואַ:\"1h\",ואָ:\"1h\",ואי:\"1g\",ובד:\"1g\",ובה:\"1g\",ובו:\"1g\",\"ובע \":\"1g\",\"ובר \":\"1g\",\"וגל \":\"1g\",\"ודה \":\"1g\",ודות:\"1g\",\"ודי \":\"1g\",\"ודים \":\"1g\",\"ודיע \":\"1g\",ודיק:\"1h\",ודיר:\"1h\",ודנטי:\"1g\",ודניא:\"1h\",\"ודנע \":\"1h\",\"ודע \":\"1g\",\"ודעה \":\"1g\",ודרני:\"1g\",\"וה \":\"1g\",והב:\"1g\",ווּ:\"1h\",וואוי:\"1h\",וואס:\"1h\",ווה:\"1g\",ווו:\"1h\",\"וויי \":\"1h\",ווייט:\"1h\",ווילט:\"1h\",\"ווים \":\"1g\",\"וויר \":\"1g\",וויש:\"1h\",\"וונה \":\"1g\",וועג:\"1h\",וועט:\"1h\",וועל:\"1h\",ווען:\"1h\",וועס:\"1h\",וועק:\"1h\",ווער:\"1h\",וות:\"1g\",\"וזיק \":\"1h\",\"וחה \":\"1g\",\"וחל \":\"1h\",וחת:\"1g\",וטוב:\"1g\",\"וטים \":\"1g\",\"וטין \":\"1g\",\"וטן \":\"1h\",\"וטע \":\"1h\",וטער:\"1h\",ויגן:\"1h\",ויות:\"1g\",\"ויז \":\"1h\",\"ויט \":\"1h\",ויטא:\"1h\",\"ויים \":\"1g\",ויינט:\"1h\",וייס:\"1h\",ויך:\"1h\",\"וילט \":\"1h\",וילן:\"1h\",וילס:\"1h\",וימיש:\"1h\",וינט:\"1h\",\"ויס \":\"1h\",ויסג:\"1h\",ויסט:\"1h\",ויסן:\"1h\",ויסנש:\"1h\",ויסע:\"1h\",ויער:\"1h\",\"וישן \":\"1h\",וכל:\"1g\",ולה:\"1g\",ומגע:\"1h\",ומד:\"1g\",\"ומה \":\"1g\",ומות:\"1g\",ומי:\"1g\",\"ומן \":\"1g\",ומען:\"1h\",ונגע:\"1h\",ונדע:\"1h\",ונהדי:\"1h\",ונויף:\"1h\",ונות:\"1g\",\"ונט \":\"1h\",ונטע:\"1h\",\"וני \":\"1g\",וניבר:\"1g\",וניוו:\"1h\",וניי:\"1g\",ונים:\"1g\",\"ונקט \":\"1h\",ונקע:\"1h\",וסטו:\"1g\",וסטרל:\"1g\",\"וסיף \":\"1g\",\"ועה \":\"1g\",\"ועות \":\"1g\",ופּ:\"1h\",\"ופא \":\"1g\",ופי:\"1g\",\"ופן \":\"1g\",וצה:\"1g\",\"וציא \":\"1g\",\"וציק \":\"1h\",וקדם:\"1g\",וקולד:\"1g\",וקי:\"1g\",\"וקר \":\"1g\",וראים:\"1g\",\"ורה \":\"1g\",ורות:\"1g\",\"ורי \":\"1g\",\"וריק \":\"1h\",וריקג:\"1h\",ורכג:\"1h\",ושב:\"1g\",ושה:\"1g\",ושי:\"1g\",ותדי:\"1h\",ותו:\"1g\",ותי:\"1g\",\"ז'\":\"1g\",זאַ:\"1h\",זאָ:\"1h\",זג:\"1g\",זד:\"1g\",זה:\"1g\",\"זו \":\"1g\",\"זוב \":\"1g\",\"זוכן \":\"1h\",זונט:\"1h\",זור:\"1g\",זז:\"1g\",זח:\"1g\",זט:\"1h\",\"זיה \":\"1g\",\"זיי \":\"1h\",זיידע:\"1h\",זיין:\"1h\",זייע:\"1h\",זיך:\"1h\",\"זים \":\"1g\",זינג:\"1h\",זיס:\"1h\",זירט:\"1h\",זיש:\"1h\",זכ:\"1g\",זמ:\"1g\",זעט:\"1h\",זעל:\"1h\",זען:\"1h\",זענע:\"1h\",זער:\"1h\",זף:\"1g\",זפ:\"1g\",זצ:\"1g\",זקוק:\"1g\",\"זר \":\"1g\",\"זרה \":\"1g\",\"זרים \":\"1g\",זשא:\"1h\",זשי:\"1h\",זשע:\"1h\",זת:\"1g\",חִ:\"1g\",חַ:\"1g\",חָ:\"1g\",\"ח־\":\"1h\",חא:\"1g\",\"חבר \":\"1g\",חברי:\"1g\",חג:\"1g\",חדר:\"1g\",חדש:\"1g\",חודשי:\"1g\",חול:\"1g\",\"חוסר \":\"1g\",\"חוף \":\"1g\",חוק:\"1g\",חורי:\"1g\",\"חורף \":\"1g\",חוש:\"1g\",חח:\"1g\",חט:\"1g\",\"חי \":\"1g\",\"חידי \":\"1g\",חייב:\"1g\",חיים:\"1g\",\"חיל \":\"1g\",\"חילה \":\"1g\",חים:\"1g\",\"חינה \":\"1g\",חירות:\"1g\",חך:\"1g\",\"חכות \":\"1g\",חלוטי:\"1g\",\"חלום \":\"1g\",\"חלטה \":\"1g\",\"חליט \":\"1g\",\"חליף \":\"1g\",חם:\"1g\",חנו:\"1g\",\"חסר \":\"1g\",חף:\"1g\",חפ:\"1g\",חץ:\"1g\",חצ:\"1g\",\"חק \":\"1g\",\"חר \":\"1g\",\"חרות \":\"1g\",חרי:\"1g\",חשבת:\"1g\",חתו:\"1g\",חתי:\"1g\",\"ט־\":\"1h\",טאַ:\"1h\",טאָ:\"1h\",טאם:\"1h\",\"טב \":\"1g\",טד:\"1g\",טואבה:\"1g\",טודי:\"1h\",טודנט:\"1g\",טודע:\"1h\",טוח:\"1g\",טויט:\"1h\",טון:\"1g\",טח:\"1g\",טט:\"1g\",טיוו:\"1h\",\"טיול \":\"1g\",\"טיזם \":\"1h\",\"טיי \":\"1h\",טייט:\"1h\",\"טיקט \":\"1h\",טיקל:\"1h\",טיקן:\"1h\",טירט:\"1h\",טישע:\"1h\",טכ:\"1g\",טלוו:\"1g\",טלע:\"1h\",טלפו:\"1g\",טם:\"1g\",\"טניס \":\"1g\",טעוו:\"1h\",\"טעות \":\"1g\",טעט:\"1h\",טעל:\"1h\",טעס:\"1h\",טערע:\"1h\",טף:\"1g\",טצ:\"1g\",טקע:\"1h\",\"טרה \":\"1g\",טרוי:\"1h\",טרונק:\"1h\",\"טרים \":\"1g\",\"טרנט \":\"1g\",טרע:\"1h\",טשט:\"1h\",טשל:\"1h\",טשן:\"1h\",טשע:\"1h\",טשקע:\"1h\",טת:\"1g\",\"י-\":\"1g\",יִד:\"1h\",יִנגל:\"1h\",\"יִנע \":\"1h\",יִק:\"1h\",יִש:\"1h\",יַ:\"1g\",יָ:\"1g\",יּ:\"1g\",יאַ:\"1h\",יאָ:\"1h\",\"יאה \":\"1g\",\"יאוס \":\"1h\",\"יבה \":\"1g\",יבן:\"1h\",יבע:\"1h\",יברסי:\"1g\",\"יבת \":\"1g\",יגט:\"1h\",יגיעז:\"1h\",\"יגל \":\"1h\",\"יגנס \":\"1h\",יגנער:\"1h\",יגער:\"1h\",ידה:\"1g\",יהי:\"1g\",\"יו \":\"1g\",יוד:\"1g\",\"יוון \":\"1g\",יווע:\"1h\",\"יוחד \":\"1g\",יון:\"1g\",יונג:\"1h\",יוניז:\"1h\",יוק:\"1g\",יזיה:\"1g\",\"יזן \":\"1h\",\"יחה \":\"1g\",\"יחות \":\"1g\",יחיד:\"1g\",\"יטה \":\"1g\",יטווי:\"1h\",\"יטיק \":\"1h\",יטיש:\"1h\",יטן:\"1h\",יטע:\"1h\",ייִ:\"1h\",ייבט:\"1h\",ייביק:\"1h\",ייגל:\"1h\",\"ייגן \":\"1h\",ייגע:\"1h\",יידיק:\"1h\",יידל:\"1h\",ייה:\"1g\",ייזי:\"1h\",ייטיק:\"1h\",ייליק:\"1h\",\"יילן \":\"1h\",יימל:\"1h\",\"יימת \":\"1g\",\"יינט \":\"1h\",יינטל:\"1h\",יינים:\"1g\",יינס:\"1h\",ייסט:\"1h\",\"ייסן \":\"1h\",\"ייער \":\"1h\",יית:\"1g\",יכה:\"1g\",יכו:\"1g\",יכט:\"1h\",יכע:\"1h\",ילע:\"1h\",ימה:\"1g\",\"ימות \":\"1g\",ימים:\"1g\",ימע:\"1h\",ינגע:\"1h\",\"ינד \":\"1h\",\"ינדי \":\"1h\",ינדע:\"1h\",\"ינו \":\"1g\",\"ינוי \":\"1g\",\"ינוק \":\"1g\",ינות:\"1g\",\"ינטל \":\"1h\",ינטע:\"1h\",\"יני \":\"1g\",יניי:\"1g\",יניק:\"1h\",\"יניש \":\"1h\",ינמא:\"1h\",ינע:\"1h\",ינצי:\"1h\",\"ינקט \":\"1h\",ינקע:\"1h\",\"ינת־\":\"1h\",יסטור:\"1g\",\"יסיק \":\"1h\",יסנשא:\"1h\",יסער:\"1h\",\"יעדן \":\"1h\",יעו:\"1g\",יעזוס:\"1h\",יען:\"1h\",יענע:\"1h\",\"יענץ \":\"1h\",יעס:\"1h\",יפּ:\"1h\",יפו:\"1g\",\"יפן \":\"1g\",\"יציי \":\"1h\",יקונג:\"1h\",\"יקטע \":\"1h\",יקיי:\"1h\",יקע:\"1h\",\"ירט \":\"1h\",\"יריע \":\"1h\",ירן:\"1h\",ירער:\"1h\",ישׂ:\"1h\",ישה:\"1g\",ישון:\"1g\",\"ישוף \":\"1h\",\"ישט \":\"1h\",ישי:\"1g\",\"ישע \":\"1h\",ישער:\"1h\",ישקי:\"1h\",יתו:\"1g\",יתי:\"1g\",\"יתן \":\"1g\",\"ך-\":\"1g\",ךָ:\"1g\",\"ך־\":\"1h\",\"כ \":\"1g\",\"כ'\":\"1h\",\"כ-\":\"1g\",כִ:\"1g\",כַ:\"1g\",כָ:\"1g\",כּו:\"1h\",כּי:\"1h\",כּל:\"1h\",כאַ:\"1h\",כאן:\"1g\",כב:\"1g\",כד:\"1g\",כוו:\"1g\",כול:\"1g\",כון:\"1g\",כז:\"1g\",כח:\"1g\",\"כט \":\"1h\",כטי:\"1h\",כטן:\"1h\",כטע:\"1h\",\"כי \":\"1g\",כיוון:\"1g\",כים:\"1g\",\"כין \":\"1g\",כיר:\"1g\",כך:\"1g\",ככ:\"1g\",כלב:\"1g\",כלי:\"1g\",כלל:\"1g\",כמה:\"1g\",כמו:\"1g\",כמעט:\"1g\",\"כנה \":\"1g\",\"כנות \":\"1g\",כני:\"1g\",כנס:\"1g\",\"כנע \":\"1g\",כסט:\"1h\",\"כע \":\"1h\",כער:\"1h\",כף:\"1g\",כפ:\"1g\",כקייט:\"1h\",כר:\"1g\",כשי:\"1g\",כת:\"1g\",\"כ׳\":\"1h\",\"ל-\":\"1g\",לִ:\"1g\",לַ:\"1g\",לָ:\"1g\",לאַ:\"1h\",לאָ:\"1h\",לאכו:\"1g\",\"לב \":\"1g\",לבו:\"1g\",\"לבין \":\"1g\",לבית:\"1g\",\"לבער \":\"1h\",להי:\"1g\",להש:\"1g\",לווי:\"1g\",לוטין:\"1g\",לון:\"1g\",לונג:\"1h\",לונדו:\"1g\",לוש:\"1g\",\"לי \":\"1g\",ליבט:\"1h\",ליבסט:\"1h\",ליגי:\"1h\",ליגן:\"1h\",ליה:\"1g\",\"ליום \":\"1g\",ליטוו:\"1h\",\"ליי \":\"1g\",לייב:\"1h\",לייג:\"1h\",ליידי:\"1h\",\"לייט \":\"1h\",\"ליים \":\"1g\",לייע:\"1h\",\"לייש \":\"1h\",ליך:\"1g\",לילדי:\"1g\",לילה:\"1g\",לינו:\"1g\",ליסיק:\"1h\",\"ליע \":\"1h\",ליציי:\"1h\",ליציר:\"1h\",ליקלע:\"1h\",לישע:\"1h\",לית:\"1g\",\"לכּה \":\"1h\",לכל:\"1g\",לכם:\"1g\",למד:\"1g\",למה:\"1g\",למו:\"1g\",\"למטה \":\"1g\",למצו:\"1g\",למר:\"1g\",לנהוג:\"1g\",לנו:\"1g\",לנסו:\"1g\",\"לנצח \":\"1g\",לעבט:\"1h\",לעבנס:\"1h\",לעול:\"1g\",לעך:\"1h\",לעכקי:\"1h\",לעם:\"1h\",לען:\"1h\",לענות:\"1g\",\"לער \":\"1h\",לערע:\"1h\",לעשו:\"1g\",לפון:\"1g\",לרא:\"1g\",\"לשם \":\"1g\",לת:\"1g\",\"ם-\":\"1g\",\"ם־\":\"1h\",\"מ \":\"1g\",\"מ-\":\"1g\",מִ:\"1g\",מַ:\"1g\",מָ:\"1g\",מאַ:\"1h\",מאָ:\"1h\",מאד:\"1g\",מאו:\"1g\",מבוגר:\"1g\",מבי:\"1g\",מגיע:\"1g\",מדו:\"1g\",\"מדי \":\"1g\",\"מדים \":\"1g\",מהר:\"1g\",\"מו \":\"1g\",\"מובן \":\"1g\",מוד:\"1g\",\"מוז \":\"1h\",\"מוזן \":\"1h\",\"מוך \":\"1g\",מוכן:\"1g\",מול:\"1g\",\"מון \":\"1g\",מונה:\"1g\",מוסו:\"1h\",מועדו:\"1g\",מוציק:\"1h\",מוק:\"1g\",\"מור \":\"1g\",מורא:\"1h\",מורה:\"1g\",מורים:\"1g\",מוש:\"1g\",מזווד:\"1g\",\"מזון \":\"1g\",\"מחיר \":\"1g\",מחר:\"1g\",מיאוס:\"1h\",מידים:\"1g\",\"מידע \":\"1g\",מיו:\"1g\",\"מיים \":\"1g\",מיינט:\"1h\",מילה:\"1g\",מילו:\"1g\",מילים:\"1g\",\"מילך \":\"1h\",\"מינה \":\"1g\",מינים:\"1g\",מך:\"1g\",מכו:\"1g\",מכי:\"1g\",\"מלא \":\"1g\",מלכּה:\"1h\",מם:\"1g\",ממני:\"1g\",\"מנה \":\"1g\",מנו:\"1g\",\"מני \":\"1g\",\"מניח \":\"1g\",מנים:\"1g\",מסיב:\"1g\",מסעדה:\"1g\",מעדיק:\"1h\",מעו:\"1g\",מענהא:\"1h\",מענע:\"1h\",\"מער \":\"1h\",\"מערי \":\"1h\",מפּ:\"1h\",מץ:\"1g\",מצא:\"1g\",\"מצב \":\"1g\",מצטער:\"1g\",מקו:\"1g\",\"מר \":\"1g\",מרו:\"1g\",מרי:\"1g\",מרת:\"1g\",משה:\"1g\",\"משום \":\"1g\",משטר:\"1g\",משי:\"1g\",משפט:\"1g\",\"משרד \":\"1g\",מתי:\"1g\",מתמטי:\"1g\",\"מ׳\":\"1h\",\"ן־\":\"1h\",\"ן‎\":\"1h\",\"נ \":\"1g\",נִ:\"1g\",נַ:\"1g\",נָ:\"1g\",נּ:\"1g\",נאַ:\"1h\",נאָ:\"1h\",נגא:\"1h\",\"נגד \":\"1g\",\"נגלט \":\"1h\",נגעהו:\"1h\",נגער:\"1h\",נדיק:\"1h\",\"נדיש \":\"1h\",\"נוגע \":\"1g\",נודנע:\"1h\",\"נויף \":\"1h\",נומע:\"1h\",נונג:\"1h\",\"נוע \":\"1g\",\"נוצן \":\"1h\",\"נורא \":\"1g\",\"נושא \":\"1g\",נח:\"1g\",נטא:\"1h\",\"נטים \":\"1g\",נטיסע:\"1h\",נטן:\"1h\",\"נטע \":\"1h\",נטער:\"1h\",נטרנט:\"1g\",ניברס:\"1g\",\"ניה \":\"1g\",\"ניהו \":\"1h\",ניות:\"1g\",נייטי:\"1h\",ניים:\"1g\",\"נייר \":\"1g\",ניקט:\"1h\",נישט:\"1h\",נישע:\"1h\",נית:\"1g\",נך:\"1g\",נכ:\"1g\",נם:\"1g\",נן:\"1g\",ננ:\"1g\",\"נסוע \":\"1g\",\"נסט \":\"1h\",נסטו:\"1h\",נסיעה:\"1g\",נעזי:\"1h\",נעט:\"1h\",נעם:\"1h\",נען:\"1h\",נף:\"1g\",נצטער:\"1h\",נציי:\"1h\",\"נציק \":\"1h\",נצן:\"1h\",נצע:\"1h\",נקייט:\"1h\",נרא:\"1g\",נשי:\"1g\",נשמע:\"1g\",\"נת \":\"1g\",נתי:\"1g\",\"ס'\":\"1h\",סִ:\"1g\",סַ:\"1g\",\"ס־\":\"1h\",סאַ:\"1h\",סאָ:\"1h\",סביב:\"1g\",סביר:\"1g\",\"סגור \":\"1g\",סגע:\"1h\",\"סה \":\"1g\",סוג:\"1g\",סוכן:\"1g\",סולמע:\"1h\",\"סופו \":\"1g\",\"סוק \":\"1g\",\"סור \":\"1g\",\"סות \":\"1g\",סח:\"1g\",\"סטו \":\"1h\",סטווע:\"1h\",סטיר:\"1h\",סטיש:\"1h\",סטע:\"1h\",סטרא:\"1h\",סיבה:\"1g\",\"סיוו \":\"1h\",\"סיים \":\"1g\",סיימת:\"1g\",\"סייע \":\"1g\",סיכיא:\"1h\",\"סים \":\"1g\",סיסט:\"1h\",\"סיעה \":\"1g\",סירט:\"1h\",סיש:\"1h\",סכּ:\"1h\",סם:\"1g\",סס:\"1g\",\"סעדה \":\"1g\",סעמי:\"1h\",סעק:\"1h\",סף:\"1g\",ספּ:\"1h\",ספי:\"1g\",ספר:\"1g\",\"סתיר \":\"1g\",\"ס׳\":\"1h\",\"ע-\":\"1g\",עִ:\"1g\",עַ:\"1g\",עָ:\"1g\",\"ע־\":\"1h\",עא:\"1h\",עבוד:\"1g\",עבוי:\"1h\",עבור:\"1g\",\"עבט \":\"1h\",\"עביר \":\"1g\",עבליב:\"1h\",עבן:\"1h\",עבע:\"1h\",\"עבר \":\"1g\",עברא:\"1h\",עברע:\"1h\",עגא:\"1h\",עגט:\"1h\",עגן:\"1h\",עגנב:\"1h\",עדא:\"1h\",עדס:\"1h\",עדע:\"1h\",עהא:\"1h\",עהויב:\"1h\",עהע:\"1h\",עוב:\"1g\",עוד:\"1g\",עוואר:\"1h\",עווד:\"1h\",עוויי:\"1h\",עווע:\"1h\",\"עון \":\"1g\",עוני:\"1g\",עור:\"1g\",עוש:\"1g\",עזר:\"1g\",עח:\"1h\",עטא:\"1h\",עטן:\"1h\",עטע:\"1h\",עטר:\"1h\",עיִ:\"1h\",\"עיה \":\"1g\",עיו:\"1g\",\"עיל \":\"1g\",עים:\"1g\",עיני:\"1g\",עיר:\"1g\",עכט:\"1h\",\"עכן \":\"1h\",עכע:\"1h\",עכקיי:\"1h\",עכש:\"1g\",\"על־\":\"1h\",\"עלבע \":\"1h\",\"עלה \":\"1g\",עלול:\"1g\",עלט:\"1h\",עליג:\"1h\",עליים:\"1g\",\"עלים \":\"1g\",עלן:\"1h\",עלע:\"1h\",עלשא:\"1h\",עמא:\"1h\",עמט:\"1h\",עמיט:\"1h\",עמים:\"1g\",עמע:\"1h\",ענא:\"1h\",ענגל:\"1h\",ענגע:\"1h\",ענד:\"1h\",\"ענות \":\"1g\",ענט:\"1h\",עניי:\"1g\",ענס:\"1h\",\"ענע \":\"1h\",ענער:\"1h\",\"ענקט \":\"1h\",עסוק:\"1g\",עסט:\"1h\",עסן:\"1h\",עסע:\"1h\",עע:\"1h\",עפּ:\"1h\",עצט:\"1h\",\"עצן \":\"1h\",עצע:\"1h\",עקוי:\"1h\",עקט:\"1h\",עקל:\"1h\",עקס:\"1h\",ערא:\"1h\",\"ערב \":\"1g\",ערבער:\"1h\",ערג:\"1h\",ערד:\"1h\",\"ערה \":\"1g\",ערוו:\"1h\",\"ערות \":\"1g\",ערז:\"1h\",ערט:\"1h\",\"ערים \":\"1g\",ערין:\"1h\",עריס:\"1h\",\"עריע \":\"1h\",עריק:\"1h\",עריש:\"1h\",ערל:\"1h\",ערמא:\"1h\",ערן:\"1h\",ערנא:\"1h\",ערנט:\"1h\",ערס:\"1h\",\"ערע \":\"1h\",ערעד:\"1h\",\"ערער \":\"1h\",ערק:\"1h\",ערש:\"1h\",עשה:\"1g\",עשט:\"1h\",עתי:\"1g\",\"ע״\":\"1h\",\"ף-\":\"1g\",\"ף־\":\"1h\",\"פ \":\"1g\",פִ:\"1g\",פַ:\"1g\",פָ:\"1g\",\"פּ \":\"1h\",פּא:\"1h\",פּג:\"1h\",פּו:\"1h\",פּח:\"1h\",פּט:\"1h\",פּי:\"1h\",פּל:\"1h\",פּס:\"1h\",פּע:\"1h\",פּר:\"1h\",פּש:\"1h\",פארוו:\"1h\",\"פארק \":\"1g\",פב:\"1g\",פג:\"1g\",פד:\"1g\",פה:\"1g\",פול:\"1g\",\"פועל \":\"1g\",פור:\"1g\",פות:\"1g\",פז:\"1g\",פח:\"1g\",\"פטים \":\"1g\",\"פטר \":\"1g\",\"פי \":\"1g\",\"פיים \":\"1g\",פילו:\"1g\",פים:\"1g\",\"פינה \":\"1g\",\"פיק \":\"1g\",פירוש:\"1g\",פך:\"1g\",פכ:\"1g\",פם:\"1g\",פמ:\"1g\",פנ:\"1g\",פס:\"1g\",פעם:\"1g\",פף:\"1g\",פפ:\"1g\",פץ:\"1g\",פצ:\"1g\",פק:\"1g\",\"פר \":\"1g\",\"פריז \":\"1g\",פרים:\"1g\",פרנטו:\"1g\",פש:\"1g\",פת:\"1g\",\"ץ'\":\"1g\",\"ץ־\":\"1h\",\"צ \":\"1g\",\"צ'\":\"1g\",צִ:\"1g\",צָ:\"1g\",\"צא \":\"1g\",\"צאה \":\"1g\",\"צאים \":\"1g\",צג:\"1g\",צוגע:\"1h\",צווי:\"1h\",צוזא:\"1h\",צונג:\"1h\",צונוי:\"1h\",\"צור \":\"1g\",צוריק:\"1h\",\"צורך \":\"1g\",\"צות \":\"1g\",\"צט \":\"1h\",\"צטרך \":\"1g\",\"צטרף \":\"1g\",צייז:\"1h\",צים:\"1g\",צירט:\"1h\",צך:\"1g\",\"צלחה \":\"1g\",\"צלצל \":\"1g\",צם:\"1g\",צמ:\"1g\",צעבר:\"1h\",צעל:\"1h\",צף:\"1g\",צץ:\"1g\",צצ:\"1g\",צק:\"1g\",צת:\"1g\",קִ:\"1g\",קַ:\"1g\",קָ:\"1g\",\"ק־\":\"1h\",קאַ:\"1h\",קאָ:\"1h\",קבל:\"1g\",קגע:\"1h\",\"קדם \":\"1g\",קה:\"1g\",\"קו \":\"1g\",\"קודם \":\"1g\",קודני:\"1h\",\"קול \":\"1g\",\"קולד \":\"1g\",קומט:\"1h\",קומע:\"1h\",\"קונה \":\"1g\",\"קוקט \":\"1h\",קורא:\"1g\",קורדי:\"1h\",קורה:\"1g\",\"קורץ \":\"1h\",קות:\"1g\",קז:\"1g\",קח:\"1g\",קטיש:\"1h\",\"קטנה \":\"1g\",קטער:\"1h\",\"קיים \":\"1g\",קיין:\"1h\",קיכל:\"1h\",קים:\"1g\",קינד:\"1h\",קיניג:\"1h\",קך:\"1g\",קלוג:\"1h\",\"קלות \":\"1g\",קליי:\"1h\",קם:\"1g\",\"קנה \":\"1g\",קנות:\"1g\",\"קנים \":\"1g\",קסועל:\"1h\",קסיס:\"1h\",קעג:\"1h\",קעט:\"1h\",קען:\"1h\",קענע:\"1h\",קעס:\"1h\",קעץ:\"1h\",קעצל:\"1h\",\"קער \":\"1h\",קף:\"1g\",קץ:\"1g\",קק:\"1g\",\"קרא \":\"1g\",קרה:\"1g\",קרוב:\"1g\",\"קרות \":\"1g\",קריטי:\"1h\",\"קרים \":\"1g\",קריסט:\"1h\",קרענק:\"1h\",קשה:\"1g\",קת:\"1g\",\"ר'\":\"1h\",\"ר-\":\"1g\",רִ:\"1g\",רַ:\"1g\",רָ:\"1g\",\"ר־\":\"1h\",ראַ:\"1h\",ראָ:\"1h\",ראה:\"1g\",ראו:\"1g\",\"ראש \":\"1g\",רבה:\"1g\",רבעט:\"1h\",רבערי:\"1h\",רברע:\"1h\",רגל:\"1g\",רדינט:\"1h\",\"רדיק \":\"1h\",רדענו:\"1h\",רהרג:\"1h\",\"רו \":\"1g\",רוא:\"1g\",\"רוב \":\"1g\",רודע:\"1h\",רוויח:\"1g\",רווע:\"1h\",\"רוח \":\"1g\",רוחות:\"1g\",רויט:\"1h\",רויס:\"1h\",רויע:\"1h\",\"רוך \":\"1g\",רון:\"1g\",רונג:\"1h\",רונה:\"1g\",רוסלא:\"1h\",\"רוע \":\"1g\",רופא:\"1g\",רוצי:\"1g\",\"רושם \":\"1g\",\"רחוב \":\"1g\",רטוגע:\"1h\",\"רטים \":\"1g\",\"רטיס \":\"1g\",רטיק:\"1h\",רטע:\"1h\",\"ריגן \":\"1h\",רידן:\"1h\",ריה:\"1g\",ריוו:\"1h\",\"ריות \":\"1g\",ריזיק:\"1h\",\"רייד \":\"1h\",רייט:\"1h\",ריים:\"1g\",ריך:\"1g\",ריכיש:\"1h\",רינג:\"1h\",רינק:\"1h\",ריסטן:\"1h\",\"ריקט \":\"1h\",ריקני:\"1g\",רישע:\"1h\",\"רית \":\"1g\",רלא:\"1h\",רלויר:\"1h\",רלע:\"1h\",רמני:\"1g\",\"רנו \":\"1g\",\"רנטו \":\"1g\",רניש:\"1h\",רנע:\"1h\",רעג:\"1h\",רעדן:\"1h\",רעזיד:\"1h\",רעמדע:\"1h\",רענג:\"1h\",רענע:\"1h\",\"רענק \":\"1h\",רעס:\"1h\",רעק:\"1h\",רצה:\"1g\",\"רצון \":\"1g\",רציק:\"1h\",רצית:\"1g\",רקא:\"1h\",\"רשות \":\"1g\",רשט:\"1h\",\"רת \":\"1g\",רתי:\"1g\",\"ר׳\":\"1h\",\"ש-\":\"1g\",שִ:\"1g\",שַ:\"1g\",שָ:\"1g\",\"ש־\":\"1h\",שאַ:\"1h\",שאָ:\"1h\",שאי:\"1g\",שאל:\"1g\",שאר:\"1g\",\"שב \":\"1g\",שבי:\"1g\",\"שבת \":\"1g\",שג:\"1g\",שהו:\"1g\",שהי:\"1g\",\"שוב \":\"1g\",שווע:\"1h\",שוין:\"1h\",שולד:\"1h\",שולח:\"1g\",\"שומע \":\"1g\",שונא:\"1g\",\"שונה \":\"1g\",שונהד:\"1h\",שז:\"1g\",שח:\"1g\",שטא:\"1h\",\"שטוב \":\"1h\",שטוד:\"1h\",\"שטום \":\"1g\",שטייס:\"1h\",שטיק:\"1h\",שטער:\"1h\",שטרה:\"1g\",שיב:\"1g\",שיו:\"1g\",\"שייך \":\"1g\",שיין:\"1h\",שיכּ:\"1h\",שים:\"1g\",\"שינה \":\"1g\",שינוי:\"1g\",שיני:\"1g\",\"שיסט \":\"1h\",שיסטן:\"1h\",שיע:\"1g\",\"שיצן \":\"1h\",\"שיקט \":\"1h\",\"שיר \":\"1g\",\"שירה \":\"1g\",שירות:\"1g\",שיריע:\"1h\",\"שיש \":\"1g\",שית:\"1g\",שך:\"1g\",שכּנז:\"1h\",שכונה:\"1g\",שכנע:\"1g\",\"שלא \":\"1g\",שלה:\"1g\",\"שלו \":\"1g\",\"שלוח \":\"1g\",שלינג:\"1h\",שלך:\"1g\",\"שלם \":\"1g\",שמוע:\"1g\",שמוצי:\"1h\",שמור:\"1g\",\"שמח \":\"1g\",\"שמים \":\"1g\",\"שמע \":\"1g\",שמעת:\"1g\",שנה:\"1g\",\"שנות \":\"1g\",\"שני \":\"1g\",שנים:\"1g\",שס:\"1g\",שעבר:\"1g\",שעה:\"1g\",שף:\"1g\",שפּ:\"1h\",\"שפט \":\"1g\",שפטים:\"1g\",שצ:\"1g\",שקייט:\"1h\",\"שרה \":\"1g\",\"שרות \":\"1g\",שריב:\"1h\",שרים:\"1g\",שש:\"1g\",שת:\"1g\",\"ת'\":\"1g\",\"ת-\":\"1g\",תִ:\"1g\",תַ:\"1g\",תָ:\"1g\",תּ:\"1h\",תאו:\"1g\",\"תאים \":\"1g\",תב:\"1g\",תג:\"1g\",תדיק:\"1h\",תה:\"1g\",\"תו \":\"1g\",תום:\"1g\",תז:\"1g\",תח:\"1g\",תט:\"1g\",\"תי \":\"1g\",תיי:\"1g\",תית:\"1g\",תך:\"1g\",תכ:\"1g\",תל:\"1g\",תם:\"1g\",תמו:\"1g\",תמטיק:\"1g\",תמי:\"1g\",\"תמש \":\"1g\",תנה:\"1g\",תנו:\"1g\",תס:\"1g\",תף:\"1g\",תפ:\"1g\",תץ:\"1g\",תצ:\"1g\",תק:\"1g\",תר:\"1g\",תש:\"1g\",תת:\"1g\",װ:\"1h\",ױ:\"1h\",ײ:\"1h\",\"׳ \":\"1g\",\"׳א\":\"1h\",\"׳ב\":\"1h\",\"׳ה\":\"1h\",\"׳וו\":\"1h\",\"׳ז\":\"1h\",\"׳י\":\"1g\",\"׳ע\":\"1h\",\"׳ק\":\"1h\",\"׳ר\":\"1h\",\"ء؟\":\"1i\",ءا:\"1i\",ءة:\"1i\",\"آب \":\"1j\",آج:\"h\",آخرین:\"1j\",آدم:\"1j\",آرام:\"1j\",\"آزاد \":\"1j\",آسما:\"1j\",آش:\"1j\",آغ:\"1j\",آف:\"1j\",آق:\"1j\",آلمان:\"1j\",آمد:\"1j\",آمریک:\"1j\",آمو:\"1j\",آنج:\"1j\",آنه:\"1j\",آنچ:\"1j\",آو:\"1j\",\"آپ \":\"h\",آید:\"1j\",آین:\"1j\",\"أ \":\"1i\",أب:\"1i\",أة:\"1i\",أتي:\"1i\",أث:\"1i\",أج:\"1i\",أح:\"1i\",أخ:\"1i\",أد:\"1i\",أذ:\"1i\",أر:\"1i\",أز:\"1i\",أسا:\"1i\",أست:\"1i\",أسر:\"1i\",أش:\"1i\",أص:\"1i\",أض:\"1i\",أط:\"1i\",أظ:\"1i\",أع:\"1i\",أغ:\"1i\",أف:\"1i\",أق:\"1i\",أك:\"1i\",ألم:\"1i\",ألي:\"1i\",أما:\"1i\",أمر:\"1i\",أمس:\"1i\",أن:\"1i\",أه:\"1i\",أو:\"1i\",أى:\"1i\",أي:\"1i\",أَ:\"1i\",أُ:\"1i\",أپ:\"h\",أی:\"1j\",ؤل:\"1i\",ؤم:\"1i\",ؤو:\"1i\",ؤي:\"1i\",ؤی:\"1j\",إ:\"1i\",\"ئا \":\"1i\",\"ئاً \":\"1i\",ئة:\"1i\",ئت:\"1i\",ئح:\"1i\",ئر:\"1i\",ئع:\"1i\",ئف:\"1i\",ئق:\"1i\",ئك:\"1i\",\"ئما \":\"1i\",\"ئماً \":\"1i\",\"ئو \":\"h\",ئي:\"1i\",ئید:\"1j\",ائماً:\"1i\",\"اباً \":\"1i\",ابتسم:\"1i\",\"ابر \":\"1j\",ابستا:\"1j\",\"ابسه \":\"1i\",\"ابو \":\"h\",\"ابی \":\"1j\",اة:\"1i\",اتاق:\"1j\",\"اتف \":\"1i\",اتنی:\"h\",\"اته \":\"1i\",اتها:\"1i\",اتي:\"1i\",اجبات:\"1i\",احتما:\"1j\",احد:\"1i\",احس:\"1j\",احمق:\"1j\",\"اخت \":\"1j\",اخته:\"1j\",ادام:\"1j\",\"ادرا \":\"1i\",\"ادرت \":\"1i\",\"ادرش \":\"1j\",\"ادن \":\"1j\",ادي:\"1i\",اذا:\"1i\",\"ارات \":\"1i\",اراحت:\"1j\",اران:\"1j\",ارتبا:\"1j\",ارح:\"1i\",\"ارم \":\"1j\",اروپا:\"1j\",اري:\"1i\",ارک:\"1j\",ارید:\"1j\",اریم:\"1j\",ازه:\"1j\",ازي:\"1i\",ازی:\"1j\",\"است \":\"1j\",استا:\"1j\",استعا:\"1i\",استقل:\"1i\",استما:\"1i\",استمت:\"1i\",اسخ:\"1j\",\"اسمه \":\"1i\",اسوب:\"1i\",اسي:\"1i\",اسپ:\"1j\",\"اشت \":\"1j\",اشتب:\"1j\",اشتر:\"1i\",اشتم:\"1j\",اشته:\"1j\",اشد:\"1j\",اشق:\"1j\",اشی:\"1j\",اصم:\"1i\",اضافه:\"1j\",اضل:\"1i\",اضی:\"1j\",اطلاع:\"1j\",\"اعت \":\"1j\",اعترف:\"1i\",اعتقد:\"1i\",اعدن:\"1i\",اغلب:\"1j\",\"افات \":\"1i\",افتا:\"1j\",افرا:\"1j\",\"اقبت \":\"1j\",اقعا:\"1j\",اقوا:\"h\",اقی:\"1j\",اك:\"1i\",الآخ:\"1i\",\"الآن؟\":\"1i\",الاج:\"1i\",الاحت:\"1i\",الاقت:\"1i\",الانج:\"1i\",البح:\"1i\",البست:\"1i\",البشر:\"1i\",البق:\"1i\",البن:\"1i\",التا:\"1i\",التح:\"1i\",التد:\"1i\",التع:\"1i\",التف:\"1i\",التل:\"1i\",الث:\"1i\",الج:\"1i\",الح:\"1i\",الخ:\"1i\",الدر:\"1i\",الدو:\"1i\",الذ:\"1i\",الر:\"1i\",الز:\"1i\",السر:\"1i\",السف:\"1i\",السم:\"1i\",السن:\"1i\",الشم:\"1i\",الصب:\"1i\",الصح:\"1i\",الصو:\"1i\",الط:\"1i\",العش:\"1i\",العه:\"1j\",الغا:\"1i\",الفتا:\"1i\",الفل:\"1i\",الفن:\"1i\",الق:\"1i\",الل:\"1i\",المبا:\"1i\",المج:\"1i\",المخ:\"1i\",المز:\"1i\",المس:\"1i\",المص:\"1i\",المغ:\"1i\",المق:\"1i\",المم:\"1i\",النس:\"1i\",النه:\"1i\",النو:\"1i\",\"الها \":\"1i\",الهات:\"1i\",الهوا:\"1i\",الوا:\"1i\",الول:\"1i\",الي:\"1i\",\"الیا \":\"1j\",امرو:\"1j\",امری:\"h\",املاً:\"1j\",امي:\"1i\",امید:\"1j\",انتبا:\"1i\",انتظر:\"1i\",انجا:\"1j\",\"اند \":\"1j\",اندان:\"h\",\"اندم \":\"1j\",اندن:\"1j\",انده:\"1j\",اندکی:\"1j\",اندی:\"1j\",انستن:\"1j\",\"انسه \":\"1j\",انسو:\"1j\",انشجو:\"1j\",\"انظر \":\"1i\",انم:\"1j\",\"انوا \":\"1i\",انواد:\"1j\",اني:\"1i\",انگیز:\"1j\",انیا:\"1j\",\"اهش \":\"1j\",اهند:\"1j\",اوت:\"1j\",\"اوست \":\"1j\",اوقات:\"1j\",اولت:\"1i\",اولین:\"1j\",اُس:\"h\",اِس:\"h\",اپس:\"h\",\"اک \":\"1j\",اکن:\"1j\",اکیل:\"h\",اگل:\"h\",\"ای \":\"1j\",ایان:\"1j\",ایت:\"1j\",اید:\"1j\",ایر:\"1j\",ایش:\"1j\",ایل:\"1j\",\"ایم \":\"1j\",این:\"1j\",\"ب؟\":\"1i\",بأ:\"1i\",بائل:\"1i\",\"بائی \":\"1j\",باح:\"1i\",\"باره \":\"1j\",باری:\"1j\",باز:\"1j\",\"باش \":\"1j\",باشم:\"1j\",\"باعث \":\"1j\",\"بالا \":\"1j\",بالت:\"1i\",بالس:\"1i\",بالع:\"1i\",بالف:\"1i\",بالم:\"1i\",بالن:\"1i\",\"بانک \":\"1j\",باو:\"1j\",بای:\"1j\",ببی:\"1j\",بة:\"1i\",\"بتا \":\"h\",بتائ:\"h\",\"بتسم \":\"1i\",\"بتها \":\"1i\",\"بحت \":\"1i\",بخش:\"1j\",بخو:\"1j\",\"بدا \":\"1i\",\"بداً \":\"1i\",بده:\"1j\",\"بدو \":\"1i\",بدی:\"1j\",برائ:\"h\",براب:\"1j\",براد:\"1j\",برتقا:\"1i\",برخ:\"1j\",بردا:\"1j\",\"برف \":\"1j\",\"برود \":\"1j\",بروم:\"1j\",بري:\"1i\",بری:\"1j\",بزر:\"1j\",بزن:\"1j\",بسبب:\"1i\",\"بسته \":\"1j\",بسر:\"1i\",بسی:\"1j\",بصور:\"h\",بض:\"1i\",\"بعضی \":\"1j\",بغی:\"h\",بقي:\"1i\",بك:\"1i\",بلند:\"1j\",بلک:\"1j\",\"بما \":\"1i\",بمان:\"1j\",بمفرد:\"1i\",\"بنا \":\"1i\",بنفس:\"1i\",بني:\"1i\",\"بهار \":\"1j\",بهت:\"1j\",\"بواب \":\"1i\",بود:\"1j\",\"بوس \":\"1j\",بوسطن:\"1i\",بوع:\"1i\",بولت:\"h\",\"بي \":\"1i\",بيب:\"1i\",بيت:\"1i\",بير:\"1i\",بين:\"1i\",بَ:\"1i\",بِ:\"1i\",بّ:\"1i\",بپ:\"1j\",بک:\"1j\",بگ:\"1j\",بیا:\"1j\",بید:\"1j\",بیر:\"1j\",بیش:\"1j\",\"بین \":\"1j\",بینی:\"1j\",ب‌:\"1j\",\"ة،\":\"1i\",\"ة؟\":\"1i\",ةً:\"1i\",\"ت؛\":\"1j\",تاباً:\"1i\",تابست:\"1j\",\"تاجه \":\"1i\",تاده:\"1j\",تاری:\"1j\",\"تام \":\"1j\",\"تانی \":\"1j\",تایا:\"h\",تباها:\"1j\",\"تبحث \":\"1i\",تبدو:\"1i\",تة:\"1i\",\"تجاه \":\"1i\",تجاهل:\"1i\",تجاوز:\"1i\",تجربه:\"1j\",تحب:\"1i\",تحتا:\"1i\",تحد:\"1i\",تحسین:\"1j\",تحصیل:\"1j\",\"تخاب \":\"1j\",تخدم:\"1i\",\"تخرج \":\"1i\",تدخين:\"1i\",\"تدرس \":\"1i\",تذ:\"1i\",تراحت:\"1j\",\"ترجم \":\"1i\",ترجمه:\"1j\",تري:\"1i\",ترک:\"1j\",تری:\"1j\",تزو:\"1i\",تسا:\"1i\",تست:\"1i\",تشاجر:\"1i\",\"تشعر \":\"1i\",تشف:\"1i\",تشک:\"1j\",تصادف:\"1j\",\"تصبح \":\"1i\",\"تصرف \":\"1i\",تصل:\"1i\",تصم:\"1j\",تصویر:\"1j\",تظاهر:\"1i\",تعال:\"1i\",تعجبن:\"1i\",\"تعد \":\"1i\",\"تعرض \":\"1i\",تعرف:\"1i\",تعلم:\"1i\",تعمل:\"1i\",تغی:\"1j\",تفاح:\"1i\",تفاد:\"1j\",تفاق:\"1j\",تفع:\"1i\",\"تقاد \":\"1j\",تقبل:\"1i\",تقری:\"1j\",تقول:\"1i\",تك:\"1i\",تلاش:\"1j\",تلفن:\"1j\",\"تم، \":\"1j\",\"تماس \":\"1j\",تمالا:\"1j\",تماما:\"1i\",\"تمان \":\"1j\",\"تمتع \":\"1i\",تمع:\"1i\",تناو:\"1i\",تنتظر:\"1i\",\"تند \":\"1j\",تنس:\"1i\",تني:\"1i\",توان:\"1j\",\"توب \":\"1i\",توبو:\"1j\",توضیح:\"1j\",\"توقع \":\"1i\",توقفت:\"1i\",تولد:\"1j\",\"توم \":\"1i\",\"توم؟\":\"1i\",تومبی:\"1j\",توکیو:\"1j\",تى:\"1i\",\"تي \":\"1i\",تين:\"1i\",تَ:\"1i\",تُ:\"1i\",تپ:\"1j\",تگ:\"1j\",تیاج:\"1j\",تید:\"1j\",تیرا:\"h\",تیم:\"1j\",ت‌:\"1j\",ثانوي:\"1i\",ثة:\"1i\",ثت:\"1i\",ثروت:\"1j\",ثق:\"1i\",ثلا:\"1i\",ثو:\"1i\",ثي:\"1i\",ثّ:\"1i\",ثی:\"1j\",\"ج،\":\"1j\",جأ:\"1i\",\"جاء \":\"1i\",\"جائی \":\"1j\",جاتی:\"h\",\"جار \":\"1i\",جاست:\"1j\",\"جال \":\"1i\",\"جام \":\"1j\",\"جانب \":\"1i\",جانت:\"h\",جاپ:\"h\",جای:\"1j\",جبور:\"1j\",جة:\"1i\",\"جته \":\"1i\",\"جد \":\"1i\",جداً:\"1i\",جددا:\"1i\",جدي:\"1i\",جدی:\"1j\",جري:\"1i\",\"جس \":\"h\",جستجو:\"1j\",جش:\"1j\",\"جعبه \":\"1j\",جعل:\"1i\",جغ:\"1j\",\"جل \":\"1i\",جلدی:\"h\",\"جلس \":\"1i\",جلي:\"1i\",جمال:\"1i\",\"جمل \":\"1i\",جمله:\"1j\",جمي:\"1i\",\"جنون \":\"1i\",جنگ:\"1j\",\"جهاز \":\"1i\",جهان:\"1j\",جوان:\"1j\",\"جون \":\"1i\",جوی:\"1j\",جي:\"1i\",جّ:\"1i\",جک:\"1j\",جیت:\"h\",\"جیح \":\"1j\",جیس:\"h\",\"ح؟\":\"1i\",حاج:\"1i\",حاسو:\"1i\",حافل:\"1i\",\"حالا \":\"1j\",\"حانه \":\"1j\",حاول:\"1i\",\"حبت \":\"1j\",\"حبها \":\"1i\",حبون:\"1i\",حتاج:\"1i\",\"حتمل \":\"1i\",حتی:\"1j\",حج:\"1i\",\"حدا \":\"1i\",\"حداً \":\"1i\",حدث:\"1i\",\"حدهم \":\"1i\",حدي:\"1i\",\"حرب \":\"1i\",\"حرف \":\"1j\",حز:\"1i\",\"حساس \":\"1j\",\"حسن \":\"1i\",\"حسین \":\"1j\",حشرات:\"1i\",حصل:\"1i\",\"حصول \":\"1i\",حضر:\"1i\",حط:\"1i\",\"حقا \":\"1i\",حقاً:\"1i\",حقي:\"1i\",حقی:\"1j\",حك:\"1i\",\"حن \":\"1i\",\"حول \":\"1i\",حي:\"1i\",حَ:\"1i\",حک:\"1j\",ح‌:\"1j\",\"خالی \":\"1j\",خاند:\"h\",خانه:\"1j\",خانوا:\"1j\",خبار:\"1i\",خبرن:\"1i\",ختی:\"1j\",\"خدا \":\"1j\",خذ:\"1i\",\"خرجت \":\"1i\",\"خروج \":\"1i\",\"خرین \":\"1j\",خست:\"1j\",\"خطاء \":\"1i\",خطرنا:\"1j\",\"خلال \":\"1i\",خند:\"1j\",خنران:\"1j\",خه:\"1j\",خواب:\"1j\",خواس:\"1j\",خواه:\"1j\",\"خوب \":\"1j\",خورد:\"1j\",خوری:\"1j\",خوشحا:\"1j\",خير:\"1i\",خّ:\"1i\",\"خی \":\"1j\",خیل:\"1j\",خ‌:\"1j\",\"د)\":\"1j\",\"د؛\":\"1j\",دأ:\"1i\",دئ:\"1i\",\"داء \":\"1i\",داخت:\"1j\",دادم:\"1j\",دادن:\"1j\",داده:\"1j\",دارد:\"1j\",دارم:\"1j\",دارن:\"1j\",داری:\"1j\",داز:\"1j\",داست:\"1j\",داش:\"1j\",\"دامه \":\"1j\",داند:\"1j\",دانس:\"1j\",دانشج:\"1j\",دانی:\"1j\",دای:\"1j\",دة:\"1i\",\"دتان \":\"1j\",دتر:\"1j\",دته:\"1i\",\"دث \":\"1i\",دخت:\"1j\",دخل:\"1i\",\"دخين \":\"1i\",\"ددا \":\"1i\",دراج:\"1i\",دراس:\"1i\",درخ:\"1j\",درد:\"1j\",درسه:\"1j\",درم:\"1j\",دریا:\"1j\",دز:\"1j\",\"دست \":\"1j\",\"دش \":\"1j\",\"دعوت \":\"1j\",\"دفع \":\"1i\",\"دق \":\"1i\",دقا:\"1i\",دقی:\"1j\",دك:\"1i\",\"دلار \":\"1j\",دلی:\"1j\",\"دم،\":\"1j\",\"دما \":\"1i\",\"دنا \":\"1i\",دنب:\"1j\",دند:\"1j\",دني:\"1i\",دهد:\"1j\",دهند:\"1j\",دواج:\"1j\",دوب:\"1j\",دولار:\"1i\",دونو:\"h\",دى:\"1i\",\"دي \":\"1i\",ديد:\"1i\",ديم:\"1i\",دين:\"1i\",ديه:\"1i\",دً:\"1i\",دَ:\"1i\",دُ:\"1i\",دپ:\"1j\",دگا:\"1j\",\"دیا \":\"h\",دید:\"1j\",دیم:\"1j\",دیو:\"1j\",\"دیک \":\"1j\",\"ذا؟ \":\"1i\",ذاش:\"1j\",ذة:\"1i\",ذش:\"1j\",ذك:\"1i\",ذل:\"1i\",ذن:\"1i\",\"ذه \":\"1i\",ذها:\"1i\",ذهب:\"1i\",ذي:\"1i\",ذک:\"1j\",ذی:\"1j\",\"ر)\":\"1j\",راء:\"1i\",رابر:\"1j\",\"راحة \":\"1i\",\"راحت \":\"1j\",رادر:\"1j\",\"راز \":\"1j\",رافات:\"1i\",رامو:\"1j\",رانسه:\"1j\",رانسی:\"h\",\"رانه \":\"1j\",رانی:\"1j\",راوان:\"1j\",رای:\"1j\",ربار:\"1j\",ربما:\"1i\",ربي:\"1i\",رة:\"1i\",\"رتا \":\"h\",رتان:\"1j\",رتباط:\"1j\",رته:\"1i\",رجل:\"1i\",رجی:\"1j\",\"رحة \":\"1i\",رخو:\"1j\",\"رد،\":\"1j\",\"رد؟\":\"1j\",ردار:\"1j\",ردان:\"1j\",\"ردت \":\"1i\",ردم:\"1j\",\"ردن \":\"1j\",ردی:\"1j\",رسائل:\"1i\",رستان:\"1j\",رسد:\"1j\",\"رسل \":\"1i\",\"رسه \":\"1j\",رسی:\"1j\",\"رع \":\"1i\",رفتا:\"1j\",رفتن:\"1j\",رفون:\"1i\",\"رقص \":\"1i\",رك:\"1i\",\"رم، \":\"1j\",\"رمان \":\"1j\",رمضا:\"1i\",رند:\"1j\",رنس:\"1i\",رني:\"1i\",\"رنگ \":\"1j\",\"روا \":\"1i\",رواز:\"1j\",روتمن:\"1j\",رورت:\"h\",\"روز \":\"1j\",روش:\"1j\",روغ:\"1j\",\"روم \":\"1j\",روی:\"1j\",رى:\"1i\",ريا:\"1i\",ريب:\"1i\",ريد:\"1i\",ريم:\"1i\",رين:\"1i\",رً:\"1i\",رَ:\"1i\",رُ:\"1i\",رپ:\"1j\",رچ:\"1j\",رکت:\"1j\",رگ:\"1j\",\"ری، \":\"1j\",\"ریا \":\"1j\",ریاض:\"1j\",ریخ:\"1j\",\"رید \":\"1j\",ریس:\"1j\",ر‌:\"1j\",\"ز،\":\"1j\",زائ:\"1i\",زال:\"1i\",زة:\"1i\",زخ:\"1j\",\"زد \":\"1j\",زدو:\"1j\",زدی:\"1j\",زرافا:\"1i\",زش:\"1j\",زظ:\"1j\",زع:\"1i\",زف:\"1i\",\"زله \":\"1i\",زمان:\"1j\",زمستا:\"1j\",زمی:\"1j\",\"زنان \":\"1j\",\"زند \":\"1j\",زندان:\"1j\",زنده:\"1j\",زنی:\"1j\",\"زواج \":\"1i\",زوجت:\"1i\",زود:\"1j\",زير:\"1i\",زّ:\"1i\",زک:\"1j\",زگ:\"1j\",زیب:\"1j\",زیر:\"1j\",\"س؟\":\"1i\",\"سأل \":\"1i\",ساء:\"1i\",ساخت:\"1j\",\"ساده \":\"1j\",ساز:\"1j\",ساعات:\"1i\",ساعد:\"1i\",\"سافر \":\"1i\",\"ساله \":\"1j\",سامح:\"1i\",سانها:\"1j\",سای:\"1j\",\"سبح \":\"1i\",\"سبق \":\"1i\",سبو:\"1i\",سة:\"1i\",\"ست،\":\"1j\",\"ست؟\":\"1j\",ستاد:\"1j\",ستانی:\"1j\",ستحق:\"1i\",ستط:\"1i\",ستعار:\"1i\",ستفا:\"1j\",\"ستم \":\"1j\",ستمتع:\"1i\",ستمر:\"1i\",ستي:\"1i\",ستی:\"1j\",سج:\"1i\",سخت:\"1j\",سخن:\"1j\",سرد:\"1j\",\"سرعت \":\"1j\",سری:\"1j\",سز:\"1j\",سش:\"1j\",\"سفید \":\"1j\",سك:\"1i\",سلامت:\"1j\",\"سلم \":\"1i\",سمان:\"1j\",سمج:\"h\",سمع:\"1i\",\"سمها \":\"1i\",\"سنا \":\"1i\",سنوا:\"1i\",سنگ:\"1j\",سوال:\"1j\",\"سوق \":\"1i\",سوچ:\"h\",سوی:\"1j\",سى:\"1i\",\"سي \":\"1i\",سيا:\"1i\",سَ:\"1i\",سُ:\"1i\",سّ:\"1i\",سپانی:\"1j\",سپر:\"1j\",سچ:\"h\",سکت:\"h\",سکول:\"h\",سگ:\"1j\",سیار:\"1j\",سید:\"1j\",سیسی:\"h\",سیقی:\"1j\",س‌:\"1j\",\"ش،\":\"1j\",شأ:\"1i\",شئ:\"1i\",\"شاء \":\"1i\",\"شامل \":\"h\",\"شاهد \":\"1i\",شای:\"1j\",شبخت:\"1j\",شة:\"1i\",\"شتاق \":\"1i\",شتبا:\"1j\",\"شتر \":\"1j\",\"شترت \":\"1i\",شتن:\"1j\",\"شته \":\"1j\",شتی:\"1j\",شجار:\"1i\",\"شحال \":\"1j\",\"شخصا \":\"1i\",\"شد،\":\"1j\",شدم:\"1j\",شدن:\"1j\",شده:\"1j\",\"شرات \":\"1i\",شرب:\"1i\",شس:\"1j\",شص:\"1j\",\"شعرت \":\"1i\",شغولا:\"1i\",شك:\"1i\",\"شما \":\"1j\",شماره:\"1j\",شمن:\"1j\",\"شن \":\"1j\",شنا:\"1j\",شنبه:\"1j\",شنی:\"1j\",\"شه \":\"1j\",\"شوار \":\"1j\",شود:\"1j\",\"شور \":\"1j\",شوی:\"1j\",شي:\"1i\",شّ:\"1i\",شپ:\"1j\",\"شک \":\"1j\",شکا:\"1j\",\"شکر \":\"1j\",شکری:\"h\",شکس:\"1j\",شگ:\"1j\",شید:\"1j\",شیر:\"1j\",شیم:\"1j\",شین:\"1j\",ش‌:\"1j\",\"صائب \":\"1i\",\"صادف \":\"1j\",صبحان:\"1j\",صة:\"1i\",صحب:\"1j\",\"صحیح \":\"1j\",صدق:\"1i\",صدي:\"1i\",صط:\"1i\",صع:\"1i\",صغ:\"1i\",\"صلاً \":\"1j\",صلت:\"1i\",صمی:\"1j\",صندوق:\"1i\",\"صنع \":\"1i\",\"صوت \":\"1i\",صي:\"1i\",صّ:\"1i\",\"ضاء \":\"1i\",\"ضافه \":\"1j\",\"ضان \":\"1i\",ضة:\"1i\",ضت:\"1i\",\"ضل \":\"1i\",ضن:\"1i\",ضى:\"1i\",ضي:\"1i\",ضّ:\"1i\",طأ:\"1i\",طئ:\"1i\",\"طابق \":\"1i\",طاول:\"1i\",\"طبخ \":\"1i\",طبي:\"1i\",طة:\"1i\",طت:\"1i\",طري:\"1i\",طط:\"1i\",طعام:\"1i\",طفاً:\"1j\",طفل:\"1i\",طلاعا:\"1j\",طلاق:\"1i\",\"طلق \":\"1i\",\"طمئن \":\"1j\",\"طني \":\"1i\",طوال:\"1i\",\"طوری \":\"1j\",طولا:\"1j\",طوي:\"1i\",طي:\"1i\",طّ:\"1i\",طی:\"1j\",\"ظ،\":\"1j\",ظارات:\"1i\",ظب:\"1j\",ظة:\"1i\",ظف:\"1i\",ظل:\"1i\",ظي:\"1i\",ظّ:\"1i\",ظی:\"1j\",عائل:\"1i\",\"عاد \":\"1i\",\"عالی \":\"1j\",\"عامل \":\"1i\",\"عب \":\"1i\",\"عبر \":\"1i\",عة:\"1i\",\"عتاد \":\"1i\",عتبر:\"1i\",\"عترف \":\"1i\",\"عتقد \":\"1i\",\"عتمد \":\"1i\",عتن:\"1i\",\"عته \":\"1i\",\"عجله \":\"1j\",عدت:\"1i\",عدي:\"1i\",\"عرف \":\"1i\",\"عرفت \":\"1i\",عرفني:\"1i\",عرفه:\"1i\",عشاء:\"1i\",عشر:\"1i\",\"عشق \":\"1j\",عصبان:\"1j\",\"عض \":\"1i\",عك:\"1i\",علاقه:\"1j\",عله:\"1i\",\"علوي \":\"1i\",علي:\"1i\",\"عم \":\"1i\",\"عملت \":\"1i\",عمله:\"1i\",عمول:\"1j\",\"عن \":\"1i\",\"عنا \":\"1i\",عند:\"1i\",عنصري:\"1i\",\"عنه \":\"1i\",عني:\"1i\",\"عنی \":\"1j\",\"عها \":\"1i\",عود:\"1i\",عورت:\"h\",\"عون \":\"1i\",عى:\"1i\",عي:\"1i\",عَ:\"1i\",عُ:\"1i\",عک:\"1j\",\"عی \":\"1j\",عیت:\"1j\",ع‌:\"1j\",غاب:\"1i\",غاد:\"1i\",غاضب:\"1i\",غب:\"1i\",غة:\"1i\",غدا:\"1i\",\"غذا \":\"1j\",\"غذاء \":\"1i\",غرف:\"1i\",غس:\"1i\",غض:\"1i\",غط:\"1i\",غلق:\"1i\",غني:\"1i\",غي:\"1i\",غگ:\"1j\",غ‌:\"1j\",ـ:\"1i\",فأ:\"1i\",\"فاحة \":\"1i\",فاده:\"1j\",فاز:\"1i\",فاض:\"1i\",فال:\"1i\",فة:\"1i\",فتاد:\"1j\",فتار:\"1j\",فتح:\"1i\",فتقد:\"1i\",فتم:\"1j\",\"فتن \":\"1j\",فج:\"1i\",\"فحسب \":\"1i\",فخ:\"1i\",فذ:\"1i\",\"فراد \":\"1j\",فرام:\"1j\",فراوا:\"1j\",فردا:\"1j\",فرم:\"1j\",فري:\"1i\",فری:\"1j\",فستا:\"1i\",فسه:\"1i\",فصال:\"1i\",فضل:\"1i\",فط:\"1i\",\"فعل \":\"1i\",فعلت:\"1i\",\"فقد \":\"1i\",فقدت:\"1i\",فقی:\"1j\",فك:\"1i\",فلا:\"1i\",فلسط:\"1i\",\"فها \":\"1i\",\"فورا \":\"1i\",فوراً:\"1j\",فى:\"1i\",في:\"1i\",فَ:\"1i\",فِ:\"1i\",فّ:\"1i\",فک:\"1j\",فیل:\"1j\",ف‌:\"1j\",\"ق؟\":\"1i\",قاء:\"1i\",قابلت:\"1i\",قادرا:\"1i\",قادم:\"1i\",قالت:\"1i\",قاهر:\"1i\",قای:\"1j\",قبائ:\"1i\",قة:\"1i\",\"قته \":\"1i\",قتی:\"1j\",\"قدرت \":\"1j\",قدی:\"1j\",قذ:\"1i\",\"قرآن \":\"1i\",\"قراص \":\"1i\",\"قرمز \":\"1j\",قري:\"1i\",\"قسم \":\"1i\",قظ:\"1i\",قعاً:\"1j\",قعی:\"1j\",قك:\"1i\",\"قلت \":\"1i\",\"قلق \":\"1i\",قلي:\"1i\",قوام:\"h\",\"قود \":\"1i\",قوله:\"1i\",\"قوم \":\"1i\",قومی:\"h\",قى:\"1i\",\"قي \":\"1i\",قيا:\"1i\",\"قيت \":\"1i\",قَ:\"1i\",قُ:\"1i\",قِ:\"1i\",قّ:\"1i\",قک:\"1j\",قیق:\"1j\",قیمت:\"1j\",قین:\"h\",ق‌:\"1j\",\"ك \":\"1i\",\"ك،\":\"1i\",\"ك؟\":\"1i\",كأ:\"1i\",\"كا \":\"1i\",كان:\"1i\",كب:\"1i\",كة:\"1i\",كت:\"1i\",كث:\"1i\",كح:\"1i\",كد:\"1i\",كذ:\"1i\",\"كر \":\"1i\",كرا:\"1i\",كره:\"1i\",كس:\"1i\",كش:\"1i\",كض:\"1i\",كع:\"1i\",كف:\"1i\",كل:\"1i\",كم:\"1i\",\"كن \":\"1i\",\"كنا \":\"1i\",كنت:\"1i\",كنن:\"1i\",\"كنه \":\"1i\",\"كنها \":\"1i\",كو:\"1i\",كي:\"1i\",كَ:\"1i\",كُ:\"1i\",كِ:\"1i\",كّ:\"1i\",كی:\"1k\",\"ل؟\":\"1i\",لآخر:\"1i\",\"لآن؟ \":\"1i\",لأ:\"1i\",لئی:\"h\",لابس:\"1i\",لاث:\"1i\",لاجتم:\"1i\",\"لاد \":\"1i\",\"لازم \":\"1j\",\"لاش \":\"1j\",لاعات:\"1j\",\"لاقه \":\"1j\",لانت:\"1i\",لانف:\"1i\",لانی:\"1j\",لباب:\"1i\",لبار:\"1i\",\"لبت \":\"1i\",\"لبحث \":\"1i\",لبحر:\"1i\",لبر:\"1i\",\"لبشر \":\"1i\",لبل:\"1i\",لبي:\"1i\",لة:\"1i\",لتق:\"1i\",لتن:\"1i\",لته:\"1i\",لتو:\"1i\",لتي:\"1i\",\"لثلج \":\"1i\",لجام:\"1i\",لجد:\"1i\",لجز:\"1i\",\"لجسر \":\"1i\",لجلوس:\"1i\",لجم:\"1i\",\"لجنس \":\"1i\",\"لجو \":\"1i\",لحا:\"1i\",لحد:\"1i\",لحر:\"1i\",لحصول:\"1i\",لحفل:\"1i\",لحق:\"1i\",لحم:\"1i\",\"لحوض \":\"1i\",لخا:\"1i\",\"لخبز \":\"1i\",لخروج:\"1i\",لخط:\"1i\",لدي:\"1i\",لذه:\"1i\",لرج:\"1i\",لرسال:\"1i\",لري:\"1i\",لزراف:\"1i\",لزواج:\"1i\",لسا:\"1i\",لسب:\"1i\",لسي:\"1i\",لشا:\"1i\",\"لشخص \":\"1i\",لشر:\"1i\",لشمس:\"1i\",\"لشهر \":\"1i\",لض:\"1i\",لطا:\"1i\",لطر:\"1i\",لطفا:\"1j\",\"لطقس \":\"1i\",لظ:\"1i\",لعاص:\"1i\",لعال:\"1i\",لعام:\"1i\",لعب:\"1i\",لعد:\"1i\",لعر:\"1i\",لعشا:\"1i\",لعل:\"1i\",لعم:\"1i\",\"لغات \":\"1i\",لغاي:\"1i\",لغذاء:\"1i\",لغر:\"1i\",لفا:\"1i\",لفر:\"1i\",لقب:\"1i\",لقد:\"1i\",لقر:\"1i\",لقط:\"1i\",لقي:\"1i\",لك:\"1i\",للت:\"1i\",للح:\"1i\",للع:\"1i\",للغ:\"1i\",للم:\"1i\",لله:\"1i\",للي:\"1i\",\"لما \":\"1i\",لماض:\"1i\",لمال:\"1i\",لمت:\"1i\",لمح:\"1i\",لمد:\"1i\",لمر:\"1i\",لمزي:\"1i\",لمسا:\"1i\",لمست:\"1i\",لمسل:\"1i\",لمش:\"1i\",لمط:\"1i\",لمع:\"1i\",لمغرب:\"1i\",لمف:\"1i\",لملا:\"1i\",لمن:\"1i\",لمو:\"1i\",لمي:\"1i\",لنا:\"1i\",\"لند \":\"1j\",\"لنهر \":\"1i\",لنوم:\"1i\",\"لني \":\"1i\",\"لهم \":\"1i\",\"لوا \":\"1i\",لوح:\"1i\",لوصول:\"1i\",لوق:\"1i\",لولا:\"1i\",\"لولد \":\"1i\",لومات:\"1i\",لون:\"1i\",لوگ:\"h\",لوی:\"1j\",لى:\"1i\",\"لي \":\"1i\",ليا:\"1i\",ليز:\"1i\",ليس:\"1i\",لين:\"1i\",ليه:\"1i\",لَ:\"1i\",لُ:\"1i\",لّ:\"1i\",لپ:\"1j\",\"لکل \":\"h\",\"لگ \":\"h\",لگا:\"h\",لگت:\"h\",لیس:\"1j\",لیل:\"1j\",لیکن:\"h\",ل‌:\"1j\",\"م؛\":\"1j\",ماء:\"1i\",\"مادر \":\"1j\",ماده:\"1j\",ماذ:\"1i\",\"مارس \":\"1i\",ماز:\"1i\",ماست:\"1j\",ماش:\"1j\",\"ماع \":\"1i\",\"مالا \":\"1i\",\"ماله \":\"1i\",\"ماما \":\"1i\",مانن:\"1j\",مانی:\"1j\",مای:\"1j\",مباشر:\"1i\",\"مبیل \":\"1j\",مة:\"1i\",متاسف:\"1j\",\"متجر \":\"1i\",\"متر \":\"1j\",متفاو:\"1j\",\"متها \":\"1i\",متوجه:\"1j\",متوقف:\"1j\",مجبو:\"1j\",\"مجرد \":\"1i\",مجنون:\"1i\",محظوظ:\"1i\",مخالف:\"1j\",\"مدد \":\"h\",\"مدرس \":\"1i\",مدرست:\"1i\",مدي:\"1i\",\"مرآة \":\"1i\",\"مرات \":\"1i\",\"مراه \":\"1j\",مرحبا:\"1i\",\"مرد \":\"1j\",مروز:\"1j\",مري:\"1i\",\"مری \":\"1j\",مریم:\"h\",مزيد:\"1i\",مسئله:\"1j\",مساع:\"1i\",مسافر:\"1j\",مستان:\"1j\",مستش:\"1i\",مستقب:\"1i\",مشاهد:\"1i\",مشروع:\"1i\",\"مشکل \":\"1j\",مضان:\"1i\",مطار:\"1i\",مطر:\"1i\",مطمئن:\"1j\",\"معا \":\"1i\",معاش:\"h\",\"معت \":\"1i\",معتاد:\"1i\",معمو:\"1j\",\"مغرب \":\"1i\",مفات:\"1i\",مفتاح:\"1i\",مفتوح:\"1i\",مفرده:\"1i\",مقدار:\"1j\",مك:\"1i\",ملاب:\"1i\",ملاق:\"1j\",\"ملها \":\"1i\",\"ملک \":\"h\",ممکن:\"1j\",\"منا \":\"1i\",منتظ:\"1j\",\"مند \":\"1j\",\"منه \":\"1i\",مني:\"1i\",مهربا:\"1j\",مواطن:\"1i\",\"موت \":\"1i\",مورد:\"1j\",موش:\"1j\",\"موعد \":\"1i\",موف:\"1j\",مولاً:\"1j\",مى:\"1i\",\"مياه \":\"1i\",مين:\"1i\",مً:\"1i\",مپ:\"1j\",مچ:\"1j\",\"مک \":\"1j\",مکا:\"1j\",\"مکن \":\"1j\",میت:\"1j\",میخوا:\"1j\",\"مید \":\"1j\",میدو:\"1j\",میرا:\"h\",\"میری \":\"h\",میز:\"1j\",میم:\"1j\",م‌:\"1j\",\"ن)\":\"1j\",نئ:\"h\",\"نا؟ \":\"1i\",ناء:\"1i\",ناراح:\"1j\",\"ناسم \":\"1j\",\"ناسی \":\"1j\",نامه:\"1j\",ناهار:\"1j\",ناول:\"1i\",ناک:\"1j\",نای:\"1j\",نبال:\"1j\",نة:\"1i\",نتباه:\"1i\",\"نتبه \":\"1i\",نتقاد:\"1j\",نتقل:\"1i\",\"نتم \":\"1i\",نتوا:\"1j\",\"نتِ \":\"1i\",نتیجه:\"1j\",\"نجا \":\"1j\",نجام:\"1j\",\"نجره \":\"1j\",نجل:\"1i\",نحن:\"1i\",نخو:\"1j\",\"ند،\":\"1j\",\"ند؟\":\"1j\",\"ندا \":\"1i\",ندار:\"1j\",ندما:\"1i\",\"ندها \":\"1i\",\"ندوق \":\"1i\",ندي:\"1i\",\"ندکی \":\"1j\",\"ندی \":\"1j\",نذ:\"1i\",نزد:\"1j\",نزله:\"1i\",نسانه:\"1j\",نسبت:\"1j\",\"نست \":\"1j\",نستم:\"1j\",نسي:\"1i\",نسیس:\"h\",\"نش \":\"1j\",نشان:\"1j\",نض:\"1i\",\"نطور \":\"1j\",نظارا:\"1i\",\"نظام \":\"1i\",\"نظرت \":\"1i\",نغ:\"1i\",نفر:\"1j\",نفص:\"1i\",نقدر:\"1j\",نك:\"1i\",\"نم،\":\"1j\",\"نم؟\":\"1j\",نمی:\"1j\",ننا:\"1i\",نند:\"1j\",نني:\"1i\",نهاد:\"1j\",\"نهار \":\"1i\",\"نهان \":\"1j\",نهاي:\"1i\",نهم:\"1i\",نوات:\"1i\",نواده:\"1j\",نوز:\"1j\",نوش:\"1j\",نوی:\"1j\",نى:\"1i\",نيا:\"1i\",نين:\"1i\",نَ:\"1i\",نُ:\"1i\",نّ:\"1i\",نپ:\"1j\",\"نچ \":\"h\",نکر:\"1j\",نکل:\"h\",نکن:\"1j\",نگل:\"1j\",\"نی، \":\"1j\",نید:\"1j\",نیس:\"1j\",نیم:\"1j\",نین:\"1j\",ن‌:\"1j\",\"ه)\":\"1j\",\"ها؟ \":\"1i\",\"هائی \":\"1j\",هاب:\"1i\",هاتف:\"1i\",\"هانی \":\"1j\",های:\"1j\",\"هب \":\"1i\",هبت:\"1i\",هة:\"1i\",هتر:\"1j\",هتم:\"1i\",هذ:\"1i\",هربان:\"1j\",هس:\"1j\",هف:\"1j\",هك:\"1i\",\"هما \":\"1i\",همان:\"1j\",همرا:\"1j\",همی:\"1j\",هنا:\"1i\",هنگ:\"1j\",هواپی:\"1j\",هوه:\"1j\",هى:\"1i\",\"هي \":\"1i\",هُ:\"1i\",هِ:\"1i\",هک:\"1j\",هی:\"1j\",ه‌:\"1j\",وأ:\"1i\",\"وئ \":\"h\",\"واء \":\"1i\",\"وات \":\"1i\",واجبا:\"1i\",\"واده \":\"1j\",واست:\"1j\",واص:\"1i\",واعد:\"1i\",\"والا \":\"h\",والدت:\"1i\",والدی:\"1j\",واند:\"1j\",وانس:\"1j\",وانن:\"1j\",\"وانه \":\"1j\",وانی:\"1j\",واهد:\"1j\",واهر:\"1j\",واهم:\"1j\",واهن:\"1j\",\"وبا \":\"1i\",وباره:\"1j\",وبص:\"h\",وبوس:\"1j\",وبی:\"1j\",وة:\"1i\",وتاه:\"1j\",وجته:\"1i\",وجدت:\"1i\",\"وجها \":\"1i\",\"وحة \":\"1i\",\"وحده \":\"1i\",\"ود،\":\"1j\",ودت:\"1j\",ودخان:\"1j\",ودش:\"1j\",ودم:\"1j\",ودن:\"1j\",ودک:\"1j\",ودی:\"1j\",\"وراق \":\"1i\",وران:\"1j\",\"وراً \":\"1j\",وردن:\"1j\",ورده:\"1j\",ورم:\"1j\",وري:\"1i\",وزه:\"1j\",وزی:\"1j\",وستا:\"1j\",وسر:\"h\",\"وسطن \":\"1i\",وسم:\"h\",وسي:\"1i\",وسی:\"1j\",وشب:\"1j\",وشت:\"1j\",وشحال:\"1j\",وشن:\"1j\",\"وصل \":\"1i\",\"وصول \":\"1i\",\"وضیح \":\"1j\",\"وغ \":\"1j\",\"وقتا \":\"1i\",\"وقعت \":\"1i\",\"وقفت \":\"1i\",وك:\"1i\",ولاد:\"1i\",ولان:\"1j\",ولاي:\"1i\",ولتا:\"h\",ولي:\"1i\",\"ولی \":\"1j\",\"وما \":\"1i\",\"ومات \":\"1i\",ومبیل:\"1j\",\"ونا \":\"1i\",وند:\"1j\",ونها:\"1i\",وني:\"1i\",ونک:\"h\",ونی:\"1j\",وى:\"1i\",وّ:\"1i\",وچک:\"1j\",\"وکیو \":\"1j\",\"وگ \":\"h\",وگو:\"h\",وید:\"1j\",ویزی:\"1j\",ویس:\"1j\",ویم:\"1j\",\"ى؟\":\"1i\",\"ي،\":\"1i\",\"ي؟\":\"1i\",يء:\"1i\",يأ:\"1i\",يؤ:\"1i\",يئ:\"1i\",\"يا \":\"1i\",ياء:\"1i\",ياب:\"1i\",يات:\"1i\",ياد:\"1i\",يار:\"1i\",يام:\"1i\",يان:\"1i\",\"يب \":\"1i\",يبا:\"1i\",يبد:\"1i\",ية:\"1i\",يته:\"1i\",يث:\"1i\",يج:\"1i\",يح:\"1i\",يخ:\"1i\",يدا:\"1i\",يدي:\"1i\",يذ:\"1i\",\"ير \":\"1i\",يرا:\"1i\",يري:\"1i\",يزي:\"1i\",\"يس \":\"1i\",يص:\"1i\",يض:\"1i\",يط:\"1i\",يظ:\"1i\",يع:\"1i\",يغ:\"1i\",يف:\"1i\",يق:\"1i\",يك:\"1i\",يل:\"1i\",يما:\"1i\",ينا:\"1i\",ينب:\"1i\",ينت:\"1i\",يني:\"1i\",يها:\"1i\",\"يهم \":\"1i\",يو:\"1i\",يي:\"1i\",يَ:\"1i\",يُ:\"1i\",يّ:\"1i\",يک:\"1j\",ي‌:\"1j\",\"ًا\":\"1i\",\"ٌ\":\"1i\",\"ٍ\":\"1i\",\"َ \":\"1i\",\"َا\":\"1i\",\"َب\":\"1i\",\"َت\":\"1i\",\"َع\":\"1i\",\"َق\":\"1i\",\"َك\":\"1i\",\"َل\":\"1i\",\"َم\":\"1i\",\"َن\":\"1i\",\"َه\":\"1i\",\"َي\":\"1i\",\"َّ\":\"1i\",\"ُ \":\"1i\",\"ُح\":\"1i\",\"ُد\":\"1i\",\"ُس \":\"h\",\"ُع\":\"1i\",\"ُق\":\"1i\",\"ُك\":\"1i\",\"ُل\":\"1i\",\"ُم\":\"1i\",\"ُن\":\"1i\",\"ُّ\":\"1i\",\"ِب\":\"1i\",\"ِد\":\"1i\",\"ِر\":\"1i\",\"ِس \":\"h\",\"ِك\":\"1i\",\"ِل\":\"1i\",\"ِم\":\"1i\",\"ِن\":\"1i\",\"ِه\":\"1i\",\"ِي\":\"1i\",\"ِّ\":\"1i\",\"ِی\":\"1j\",\"ّ \":\"1i\",\"ّا \":\"1i\",\"ّاد\":\"1i\",\"ّار\":\"1i\",\"ّب\":\"1i\",\"ّة\":\"1i\",\"ّت\":\"1i\",\"ّث\":\"1i\",\"ّج\":\"1i\",\"ّح\":\"1i\",\"ّخ\":\"1i\",\"ّد\":\"1i\",\"ّر\":\"1i\",\"ّس\":\"1i\",\"ّص\":\"1i\",\"ّض\":\"1i\",\"ّع\":\"1i\",\"ّغ\":\"1i\",\"ّف\":\"1i\",\"ّق\":\"1i\",\"ّك\":\"1i\",\"ّل\":\"1i\",\"ّم\":\"1i\",\"ّن\":\"1i\",\"ّه \":\"1i\",\"ّها \":\"1i\",\"ّو\":\"1i\",\"ّى\":\"1i\",\"ّي\":\"1i\",\"ْ\":\"1i\",\"ٔ\":\"1j\",\"٠\":\"1i\",\"١\":\"1i\",\"٩\":\"1i\",\"٪\":\"1j\",ٱ:\"1i\",ٴ:\"h\",ٹ:\"h\",\"پاس \":\"h\",\"پانی \":\"h\",پای:\"1j\",پخ:\"1j\",پد:\"1j\",پذ:\"1j\",پرا:\"1j\",پرد:\"1j\",پرس:\"1j\",پرن:\"1j\",پرو:\"1j\",پز:\"1j\",پسر:\"1j\",پش:\"1j\",پل:\"1j\",پنج:\"1j\",په:\"1j\",پورا:\"h\",پوری:\"h\",پوش:\"1j\",پول:\"1j\",پي:\"1j\",پچ:\"h\",پیاده:\"1j\",پیار:\"h\",پیر:\"1j\",پیس:\"h\",پیشنه:\"1j\",پین:\"h\",پیوتر:\"1j\",\"چا \":\"h\",چائ:\"h\",چت:\"1j\",چر:\"1j\",چس:\"1j\",چش:\"1j\",چط:\"1j\",چق:\"1j\",چل:\"h\",چم:\"1j\",چن:\"1j\",چه:\"1j\",چون:\"1j\",چي:\"1j\",چپ:\"1j\",\"چک \":\"1j\",چکس:\"1j\",چگ:\"1j\",\"چیز \":\"1j\",چیزی:\"1j\",چیس:\"1j\",چ‌:\"1j\",ڈ:\"h\",ڑ:\"h\",ژ:\"1j\",\"ک،\":\"1j\",کئ:\"h\",کارها:\"1j\",کاری:\"1j\",\"کام \":\"h\",کامل:\"1j\",\"کان \":\"1j\",\"کت \":\"1j\",\"کتا \":\"h\",کتر:\"1j\",کتن:\"h\",کتی:\"h\",کث:\"1j\",کج:\"1j\",کدام:\"1j\",کرت:\"h\",کرد:\"1j\",کرن:\"h\",\"کرو \":\"h\",کز:\"1j\",کسانی:\"1j\",کست:\"1j\",کش:\"1j\",کف:\"1j\",کلا:\"1j\",کلم:\"1j\",کمتر:\"1j\",کمک:\"1j\",کمی:\"1j\",کنا:\"1j\",کند:\"1j\",کنم:\"1j\",کنن:\"1j\",کنو:\"1j\",کنی:\"1j\",که:\"1j\",کوئ:\"h\",کوت:\"1j\",کود:\"1j\",کوشش:\"h\",\"کول \":\"h\",\"کون \":\"h\",کوچ:\"1j\",کِ:\"1j\",کپ:\"1j\",کچ:\"h\",کیا:\"h\",ک‌:\"1j\",ڭ:\"1k\",\"گ،\":\"1j\",گئ:\"h\",\"گا \":\"h\",گار:\"1j\",گام:\"1j\",گان:\"1j\",گاه:\"1j\",گتا:\"h\",گد:\"1j\",گذ:\"1j\",گرا:\"1j\",گرب:\"1j\",گرد:\"1j\",گرف:\"1j\",\"گرم \":\"1j\",\"گری \":\"1j\",\"گز \":\"1j\",گس:\"1j\",گش:\"1j\",گف:\"1j\",\"گل \":\"1j\",گلی:\"1j\",گم:\"1j\",گناه:\"1j\",گه:\"1j\",گوش:\"1j\",گون:\"1j\",گوی:\"1j\",گي:\"1j\",گپ:\"1j\",\"گیا \":\"h\",گیر:\"1j\",گ‌:\"1j\",ں:\"h\",ھ:\"h\",ۀ:\"1j\",ہ:\"h\",\"ی)\":\"1j\",\"ی؟\":\"1j\",یئ:\"h\",\"یا؟\":\"h\",یاب:\"1j\",یات:\"1j\",\"یاج \":\"1j\",\"یاد \":\"1j\",\"یاده \":\"1j\",یادی:\"1j\",یاری:\"1j\",یاز:\"1j\",یاف:\"1j\",\"یال \":\"h\",یاموز:\"1j\",\"یان \":\"1j\",یاه:\"1j\",یای:\"1j\",یبا:\"1j\",\"یتان \":\"1j\",\"ید،\":\"1j\",\"ید؟\":\"1j\",یدار:\"1j\",یدم:\"1j\",یدن:\"1j\",یده:\"1j\",یدوار:\"1j\",یدی:\"1j\",یران:\"1j\",یرد:\"1j\",یرم:\"1j\",یرو:\"1j\",یزه:\"1j\",یزیو:\"1j\",یست:\"1j\",\"یش \":\"1j\",یشان:\"1j\",یشت:\"1j\",یشنها:\"1j\",یشه:\"1j\",یص:\"1j\",یض:\"1j\",یط:\"1j\",یظ:\"1j\",\"یع \":\"1j\",یغ:\"1j\",یف:\"1j\",\"یق \":\"1j\",یقت:\"1j\",یقه:\"1j\",\"یقی \":\"1j\",\"یلات \":\"1j\",\"یلم \":\"1j\",\"یم،\":\"1j\",\"یم؟ \":\"1j\",\"یمار \":\"1j\",یمان:\"1j\",یمی:\"1j\",ینج:\"1j\",یند:\"1j\",ینم:\"1j\",ینه:\"1j\",یه:\"1j\",یوا:\"1j\",یون:\"1j\",یِ:\"1j\",یپ:\"1j\",\"یچ \":\"1j\",یچک:\"1j\",یکا:\"1j\",یکی:\"1j\",یگ:\"1j\",یی:\"1j\",ی‌:\"1j\",ے:\"h\",\"۔\":\"h\",\"۰۰\":\"1j\",\"۱۰\":\"h\",\"۲\":\"1j\",\"۳\":\"1j\",\"۵\":\"1j\",\"۶\":\"1j\",\"۸\":\"1j\",\"۹\":\"1j\",\"ँ\":\"g\",\"ं\":\"g\",\"ः\":\"g\",अ:\"g\",आ:\"g\",इ:\"g\",ई:\"g\",उ:\"g\",ऊ:\"g\",ए:\"g\",ऐ:\"g\",ऑ:\"g\",ओ:\"g\",औ:\"g\",क:\"g\",ख:\"g\",ग:\"g\",घ:\"g\",च:\"g\",छ:\"g\",ज:\"g\",झ:\"g\",ञ:\"g\",ट:\"g\",ठ:\"g\",ड:\"g\",ढ:\"g\",ण:\"g\",त:\"g\",थ:\"g\",द:\"g\",ध:\"g\",न:\"g\",प:\"g\",फ:\"g\",ब:\"g\",भ:\"g\",म:\"g\",य:\"g\",र:\"g\",ल:\"g\",व:\"g\",श:\"g\",ष:\"g\",स:\"g\",ह:\"g\",\"़\":\"g\",\"ा\":\"g\",\"ि\":\"g\",\"ी\":\"g\",\"ु\":\"g\",\"ू\":\"g\",\"ृ\":\"g\",\"ॅ\":\"g\",\"े\":\"g\",\"ै\":\"g\",\"ॉ\":\"g\",\"ो\":\"g\",\"ौ\":\"g\",\"्\":\"g\",क़:\"g\",ज़:\"g\",\"०\":\"g\",\"१\":\"g\",\"२\":\"g\",\"३\":\"g\",\"४\":\"g\",\"५\":\"g\",\"६\":\"g\",\"७\":\"g\",\"८\":\"g\",\"९\":\"g\",\"ঁ\":\"e\",\"ং\":\"e\",\"ঃ\":\"e\",অ:\"e\",আ:\"e\",ই:\"e\",ঈ:\"e\",উ:\"e\",ঋ:\"e\",এ:\"e\",ঐ:\"e\",ও:\"e\",ঔ:\"e\",ক:\"e\",খ:\"e\",গ:\"e\",ঘ:\"e\",ঙ:\"e\",চ:\"e\",ছ:\"e\",জ:\"e\",ঝ:\"e\",ঞ:\"e\",ট:\"e\",ঠ:\"e\",ড:\"e\",ঢ:\"e\",ণ:\"e\",ত:\"e\",থ:\"e\",দ:\"e\",ধ:\"e\",ন:\"e\",প:\"e\",ফ:\"e\",ব:\"e\",ভ:\"e\",ম:\"e\",য:\"e\",র:\"e\",ল:\"e\",শ:\"e\",ষ:\"e\",স:\"e\",হ:\"e\",\"়\":\"e\",\"া\":\"e\",\"ি\":\"e\",\"ী\":\"e\",\"ু\":\"e\",\"ূ\":\"e\",\"ৃ\":\"e\",\"ে\":\"e\",\"ৈ\":\"e\",\"ো\":\"e\",\"ৌ\":\"e\",\"্\":\"e\",\"ৎ\":\"e\",\"০\":\"e\",\"১\":\"e\",\"২\":\"e\",\"৩\":\"e\",\"৪\":\"e\",\"৫\":\"e\",\"৬\":\"e\",\"৭\":\"e\",\"৮\":\"e\",\"৯\":\"e\",\"ં\":\"i\",અ:\"i\",આ:\"i\",ઇ:\"i\",ઈ:\"i\",ઉ:\"i\",એ:\"i\",ઓ:\"i\",ક:\"i\",ખ:\"i\",ગ:\"i\",ઘ:\"i\",ચ:\"i\",છ:\"i\",જ:\"i\",ટ:\"i\",ઠ:\"i\",ડ:\"i\",ણ:\"i\",ત:\"i\",થ:\"i\",દ:\"i\",ધ:\"i\",ન:\"i\",પ:\"i\",ફ:\"i\",બ:\"i\",ભ:\"i\",મ:\"i\",ય:\"i\",ર:\"i\",લ:\"i\",ળ:\"i\",વ:\"i\",શ:\"i\",ષ:\"i\",સ:\"i\",હ:\"i\",\"ા\":\"i\",\"િ\":\"i\",\"ી\":\"i\",\"ુ\":\"i\",\"ૂ\":\"i\",\"ૃ\":\"i\",\"ે\":\"i\",\"ો\":\"i\",\"્\":\"i\",அ:\"f\",ஆ:\"f\",இ:\"f\",உ:\"f\",எ:\"f\",ஏ:\"f\",ஒ:\"f\",ஓ:\"f\",க:\"f\",ங:\"f\",ச:\"f\",ஜ:\"f\",ட:\"f\",ண:\"f\",த:\"f\",ந:\"f\",ன:\"f\",ப:\"f\",ம:\"f\",ய:\"f\",ர:\"f\",ற:\"f\",ல:\"f\",ள:\"f\",ழ:\"f\",வ:\"f\",\"ா\":\"f\",\"ி\":\"f\",\"ீ\":\"f\",\"ு\":\"f\",\"ூ\":\"f\",\"ெ\":\"f\",\"ே\":\"f\",\"ை\":\"f\",\"ொ\":\"f\",\"ோ\":\"f\",\"்\":\"f\",\"ం\":\"k\",అ:\"k\",ఆ:\"k\",ఇ:\"k\",ఈ:\"k\",ఉ:\"k\",ఎ:\"k\",ఏ:\"k\",ఒ:\"k\",క:\"k\",గ:\"k\",చ:\"k\",ఛ:\"k\",జ:\"k\",ట:\"k\",డ:\"k\",ణ:\"k\",త:\"k\",థ:\"k\",ద:\"k\",ధ:\"k\",న:\"k\",ప:\"k\",ఫ:\"k\",బ:\"k\",భ:\"k\",మ:\"k\",య:\"k\",ర:\"k\",ల:\"k\",ళ:\"k\",వ:\"k\",శ:\"k\",ష:\"k\",స:\"k\",హ:\"k\",\"ా\":\"k\",\"ి\":\"k\",\"ీ\":\"k\",\"ు\":\"k\",\"ూ\":\"k\",\"ృ\":\"k\",\"ె\":\"k\",\"ే\":\"k\",\"ై\":\"k\",\"ొ\":\"k\",\"ో\":\"k\",\"ౌ\":\"k\",\"్\":\"k\",\"ಂ\":\"j\",ಅ:\"j\",ಆ:\"j\",ಇ:\"j\",ಈ:\"j\",ಉ:\"j\",ಎ:\"j\",ಏ:\"j\",ಒ:\"j\",ಕ:\"j\",ಖ:\"j\",ಗ:\"j\",ಘ:\"j\",ಚ:\"j\",ಜ:\"j\",ಟ:\"j\",ಡ:\"j\",ಣ:\"j\",ತ:\"j\",ಥ:\"j\",ದ:\"j\",ಧ:\"j\",ನ:\"j\",ಪ:\"j\",ಬ:\"j\",ಭ:\"j\",ಮ:\"j\",ಯ:\"j\",ರ:\"j\",ಲ:\"j\",ಳ:\"j\",ವ:\"j\",ಶ:\"j\",ಷ:\"j\",ಸ:\"j\",ಹ:\"j\",\"ಾ\":\"j\",\"ಿ\":\"j\",\"ೀ\":\"j\",\"ು\":\"j\",\"ೂ\":\"j\",\"ೃ\":\"j\",\"ೆ\":\"j\",\"ೇ\":\"j\",\"ೈ\":\"j\",\"ೊ\":\"j\",\"ೋ\":\"j\",\"ೌ\":\"j\",\"್\":\"j\",ก:9,ข:9,ค:9,ฆ:9,ง:9,จ:9,ฉ:9,ช:9,ซ:9,ญ:9,ฎ:9,ฏ:9,ฐ:9,ณ:9,ด:9,ต:9,ถ:9,ท:9,ธ:9,น:9,บ:9,ป:9,ผ:9,ฝ:9,พ:9,ฟ:9,ภ:9,ม:9,ย:9,ร:9,ฤ:9,ล:9,ว:9,ศ:9,ษ:9,ส:9,ห:9,ฬ:9,อ:9,ฮ:9,ะ:9,\"ั\":9,า:9,ำ:9,\"ิ\":9,\"ี\":9,\"ึ\":9,\"ื\":9,\"ุ\":9,\"ู\":9,เ:9,แ:9,โ:9,ใ:9,ไ:9,ๆ:9,\"็\":9,\"่\":9,\"้\":9,\"๊\":9,\"๋\":9,\"์\":9,\"ํ\":9,က:8,ခ:8,ဂ:8,င:8,စ:8,ဆ:8,ဇ:8,ဉ:8,ည:8,ဏ:8,တ:8,ထ:8,ဒ:8,န:8,ပ:8,ဖ:8,ဗ:8,ဘ:8,မ:8,ယ:8,ရ:8,လ:8,ဝ:8,သ:8,ဟ:8,အ:8,ဥ:8,ဦ:8,\"ါ\":8,\"ာ\":8,\"ိ\":8,\"ီ\":8,\"ု\":8,\"ူ\":8,\"ေ\":8,\"ဲ\":8,\"ံ\":8,\"့\":8,\"း\":8,\"္\":8,\"်\":8,\"ျ\":8,\"ြ\":8,\"ွ\":8,\"ှ\":8,\"၊\":8,\"။\":8,\"၌\":8,\"၍\":8,\"၏\":8,ሁ:2,ሃ:2,ሄ:2,ህ:2,ሆ:2,ለ:2,ሉ:2,ሊ:2,ላ:2,ል:2,ሎ:2,ሐ:2,ሕ:2,መ:2,ሙ:2,ሚ:2,ማ:2,ሜ:2,ም:2,ሞ:2,ሥ:2,ረ:2,ሩ:2,ሪ:2,ራ:2,ር:2,ሮ:2,ሰ:2,ሱ:2,ሳ:2,ሴ:2,ስ:2,ሽ:2,ቀ:2,ቃ:2,ቅ:2,ቋ:2,በ:2,ቡ:2,ቢ:2,ባ:2,ቤ:2,ብ:2,ተ:2,ቱ:2,ታ:2,ት:2,ቶ:2,ቸ:2,ቻ:2,ች:2,ኀ:2,ነ:2,ኑ:2,ና:2,ኔ:2,ን:2,ኖ:2,ኘ:2,ኛ:2,ኝ:2,አ:2,እ:2,ከ:2,ኩ:2,ካ:2,ክ:2,ወ:2,ዊ:2,ዋ:2,ው:2,ዎ:2,ዓ:2,ዘ:2,ዚ:2,ዜ:2,ዝ:2,የ:2,ዩ:2,ያ:2,ይ:2,ደ:2,ዱ:2,ዲ:2,ዳ:2,ድ:2,ጀ:2,ጃ:2,ጅ:2,ጆ:2,ገ:2,ጉ:2,ጊ:2,ጋ:2,ግ:2,ጠ:2,ጣ:2,ጥ:2,ጸ:2,ጻ:2,ጽ:2,ፈ:2,ፍ:2,\"፡\":2,\"።\":2,\"ᜀ\":\"d\",\"ᜅ\":\"d\",\"ᜈ\":\"d\",\"ᜋ\":\"d\",\"ᜎ\":\"d\",\"ᜒ\":\"d\",\"ᜓ\":\"d\",\"᜔\":\"d\",ក:\"c\",ខ:\"c\",គ:\"c\",ឃ:\"c\",ង:\"c\",ច:\"c\",ឆ:\"c\",ជ:\"c\",ឈ:\"c\",ញ:\"c\",ដ:\"c\",ឋ:\"c\",ឌ:\"c\",ណ:\"c\",ត:\"c\",ថ:\"c\",ទ:\"c\",ធ:\"c\",ន:\"c\",ប:\"c\",ផ:\"c\",ព:\"c\",ភ:\"c\",ម:\"c\",យ:\"c\",រ:\"c\",ល:\"c\",វ:\"c\",ស:\"c\",ហ:\"c\",ឡ:\"c\",អ:\"c\",ឥ:\"c\",ឬ:\"c\",ឮ:\"c\",ឯ:\"c\",ឱ:\"c\",ឲ:\"c\",\"ា\":\"c\",\"ិ\":\"c\",\"ី\":\"c\",\"ឹ\":\"c\",\"ឺ\":\"c\",\"ុ\":\"c\",\"ូ\":\"c\",\"ួ\":\"c\",\"ើ\":\"c\",\"ឿ\":\"c\",\"ៀ\":\"c\",\"េ\":\"c\",\"ែ\":\"c\",\"ៃ\":\"c\",\"ោ\":\"c\",\"ៅ\":\"c\",\"ំ\":\"c\",\"ះ\":\"c\",\"ៈ\":\"c\",\"៉\":\"c\",\"៊\":\"c\",\"់\":\"c\",\"៌\":\"c\",\"៍\":\"c\",\"៎\":\"c\",\"៏\":\"c\",\"័\":\"c\",\"្\":\"c\",\"។\":\"c\",\"ៗ\":\"c\",ḅ:3,ḍ:3,ḥ:3,ḳ:3,ḷ:3,ṃ:3,ṛ:3,ṣ:3,ṭ:3,ẓ:3,ạ:\"a\",ả:\"a\",ấ:\"a\",ầ:\"a\",ẩ:\"a\",ẫ:\"a\",ậ:\"a\",ắ:\"a\",ằ:\"a\",ẳ:\"a\",ẵ:\"a\",ặ:\"a\",ẹ:\"a\",ẻ:\"a\",ẽ:\"a\",ế:\"a\",ề:\"a\",ể:\"a\",ễ:\"a\",ệ:\"a\",ỉ:\"a\",ị:\"a\",ọ:\"a\",ỏ:\"a\",ố:\"a\",ồ:\"a\",ổ:\"a\",ỗ:\"a\",ộ:\"a\",ớ:\"a\",ờ:\"a\",ở:\"a\",ỡ:\"a\",ợ:\"a\",ụ:\"a\",ủ:\"a\",ứ:\"a\",ừ:\"a\",ử:\"a\",ữ:\"a\",ự:\"a\",ỳ:\"a\",ỷ:\"a\",ỹ:\"a\",ὰ:\"w\",ὸ:\"w\",\"​a\":\"z\",\"​b\":\"1f\",\"​d\":\"z\",\"​e\":\"r\",\"​g\":\"1f\",\"​h\":\"z\",\"​k\":\"1f\",\"​m\":\"z\",\"​n\":\"1f\",\"​o\":\"1f\",\"​sl\":\"r\",\"​v\":\"r\",\"​y\":\"1f\",\"‌ \":\"1j\",\"‌آ\":\"1j\",\"‌ا\":\"1j\",\"‌ب\":\"1j\",\"‌ت\":\"1j\",\"‌ج\":\"1j\",\"‌ح\":\"1j\",\"‌خ\":\"1j\",\"‌د\":\"1j\",\"‌ر\":\"1j\",\"‌ز\":\"1j\",\"‌س\":\"1j\",\"‌ش\":\"1j\",\"‌ص\":\"1j\",\"‌ط\":\"1j\",\"‌ع\":\"1j\",\"‌ف\":\"1j\",\"‌ق\":\"1j\",\"‌م\":\"1j\",\"‌ن\":\"1j\",\"‌ه\":\"1j\",\"‌و\":\"1j\",\"‌پ\":\"1j\",\"‌چ\":\"1j\",\"‌ک\":\"1j\",\"‌گ\":\"1j\",\"‌ی\":\"1j\",\"‌‌\":\"1j\",\"‑\":3,\"― \":18,\"‘ \":\"n\",\"‘k\":\"1o\",\"‘m\":\"1o\",\"‘s\":\"r\",\"‚\":\"n\",\"‟\":\"1h\",\"․\":\"1e\",\"‮\":\"1i\",\" °\":\"n\",\"⁠\":\"1h\",\"№ \":18,\"−\":\"n\",\"ⴰ\":3,\"ⴱ\":3,\"ⴳ\":3,\"ⴷ\":3,\"ⴹ\":3,\"ⴻ\":3,\"ⴼ\":3,\"ⴽ\":3,\"ⵉ\":3,\"ⵍ\":3,\"ⵎ\":3,\"ⵏ\":3,\"ⵓ\":3,\"ⵔ\":3,\"ⵖ\":3,\"ⵙ\":3,\"ⵛ\":3,\"ⵜ\":3,\"ⵡ\":3,\"ⵢ\":3,\"ⵣ\":3,々:5,\"「今日\":5,\"「何\":5,\"「私\":5,\"『\":5,\"』\":5,ぁ:5,あ:5,い:5,う:5,え:5,お:5,か:5,が:5,き:5,ぎ:5,く:5,ぐ:5,け:5,げ:5,こ:5,ご:5,さ:5,ざ:5,し:5,じ:5,す:5,ず:5,せ:5,ぜ:5,そ:5,ぞ:5,た:5,だ:5,ち:5,っ:5,つ:5,づ:5,て:5,で:5,と:5,ど:5,な:5,に:5,ぬ:5,ね:5,の:5,は:5,ば:5,ぱ:5,ひ:5,び:5,ふ:5,ぶ:5,へ:5,べ:5,ほ:5,ぼ:5,ぽ:5,ま:5,み:5,む:5,め:5,も:5,ゃ:5,や:5,ゅ:5,ゆ:5,ょ:5,よ:5,ら:5,り:5,る:5,れ:5,ろ:5,わ:5,を:5,ん:5,ァ:5,ア:5,ィ:5,イ:5,ウ:5,ェ:5,エ:5,ォ:5,オ:5,カ:5,ガ:5,キ:5,ギ:5,ク:5,グ:5,ケ:5,ゲ:5,コ:5,ゴ:5,サ:5,ザ:5,シ:5,ジ:5,ス:5,ズ:5,セ:5,ゼ:5,ソ:5,タ:5,ダ:5,チ:5,ッ:5,ツ:5,テ:5,デ:5,ト:5,ド:5,ナ:5,ニ:5,ネ:5,ノ:5,ハ:5,バ:5,パ:5,ヒ:5,ビ:5,ピ:5,フ:5,ブ:5,プ:5,ヘ:5,ベ:5,ペ:5,ホ:5,ボ:5,ポ:5,マ:5,ミ:5,ム:5,メ:5,モ:5,ャ:5,ヤ:5,ュ:5,ユ:5,ョ:5,ヨ:5,ラ:5,リ:5,ル:5,レ:5,ロ:5,ワ:5,ン:5,ヶ:5,\"・\":5,ー:5,一下:6,一些:6,一人一:5,一人旅:5,一件:6,一位:6,一体:5,一個人:6,\"一切 \":6,一切都:6,\"一只猫 \":6,一周旅行:5,一天:6,一定要:6,一度:5,一時:5,一杯飲:5,一次:6,一段時間:6,一番:5,一目惚:5,一直:6,一等賞:5,一般的:5,一言:5,一起:6,一部分:6,万年筆:5,万長者:5,\"三明治 \":6,上了:6,上個月:6,\"上大学 \":6,\"上学 \":6,上床睡:6,上手:5,上有:6,上的:6,上着:5,下了:6,下午:6,下来:6,下雨:6,\"下雪 \":6,不了:6,不会:6,不到:6,不可欠:5,不同:6,不喜:6,不器用:5,不太:6,不好:6,不容易:6,不思:5,不想:6,不明白:6,不是:6,不注:5,不知:6,不能:6,\"不自在 \":6,不自由:5,不舒服:6,\"不行 \":6,不要:6,不起:6,\"不錯 \":6,不需要:6,且:6,\"世界 \":6,世界一:5,世界各地:6,世界平:5,世話:5,业:6,东:6,両:5,两:6,个:6,中古車:5,中国的:6,中学生:5,\"中心 \":6,中心部:5,中文:6,中止:5,中的:6,中華料:5,中途半端:5,丸:5,为:6,主主義:5,主張:5,\"主意 \":6,主義者:5,丽:6,\"久 \":6,么:6,义:6,之:6,乎:6,乐:6,乗:5,乘:6,也:6,习:6,书:6,买:6,\"了 \":6,了一:6,了他:6,了我:6,了自己:6,了這:6,了那:6,予定:5,予約:5,事務:5,事態:5,\"事故 \":6,事業:5,二人:5,二度:5,二時間:5,二次世:5,二酸化炭:5,于:6,亚:6,亞:6,交通渋:5,交通量:5,产:6,\"京都 \":6,亮:6,亲:6,人一人:5,人事件:5,人以上:5,人前:5,人在:6,人工衛星:5,人形:5,人是:6,人種差別:5,人達:5,人都:6,人間:5,什:6,\"今 \":5,今何時:5,今回:5,今夜:5,今天:6,今度:5,\"今日 \":5,今朝:5,今週:5,从:6,仕:5,\"他 \":6,他一:6,他不:6,他可能:6,他在:6,他把:6,他是:6,他有:6,他的:6,他自己:6,他非常:6,\"以来 \":5,们:6,仲:5,件事:6,价:6,任何:6,份:6,企業:5,休息一:6,休暇:5,\"会 \":6,会合:5,\"会来 \":6,会社:5,会話:5,会議:5,伝:5,伤:6,似合:5,但:6,住了:6,住在:6,住所:5,\"何人 \":6,何回:5,何年:5,何度:5,何時間:5,余裕:5,\"作 \":6,\"作家 \":6,作曲家:5,\"作業 \":6,你:6,來:6,供時代:5,供達:5,価:5,\"便宜 \":6,便局:5,俗話:6,保持沉默:6,\"信 \":6,信号:5,修学旅行:5,俺:5,\"個人 \":6,個問題:6,個小:6,們:6,\"候 \":6,借金:5,値:5,值:6,假:6,做:6,停留所:5,\"健康 \":6,側:5,偶然彼:5,偷:6,傾:5,働:5,僕:5,儿:6,\"元 \":6,先日:5,先月:5,先週:5,兒:6,入院:5,內:6,全体:5,全員:5,全然:5,\"全部 \":5,全部食:5,兩:6,公共汽車:6,公司:6,\"公室 \":6,兰:6,关:6,兴:6,兵士:5,其:6,具体的:5,具合:5,典型的:5,円:5,冗:5,写真:5,冰:6,决:6,准:6,几:6,処:5,出了:6,出会:5,出去:6,出席者:5,\"出来 \":6,出来事:5,出身:5,分自身:5,\"分鐘 \":6,切手:5,切符:5,划:6,列車:5,刚:6,別人的:6,别:6,\"到 \":6,到了:6,到他:6,到我:6,到的:6,到着:5,剛:6,\"力 \":6,办:6,劣:5,动:6,助言:5,努力工:6,労:5,効:5,勉強:5,\"動物 \":6,動車:5,務所:5,勤勉:5,勤務時間:5,区別:5,医生:6,医者:5,\"医院 \":6,十中八:5,十分鐘:6,午前:5,午後:5,半分:5,卒:5,单:6,卖:6,単:5,卡:6,\"印象 \":6,\"危險 \":6,危險的:6,卵:5,卻:6,历:6,厌:6,\"原因 \":6,厳:5,\"去 \":6,去了:6,去学校:6,去看:6,\"友 \":6,友人:5,友達:5,収:5,发:6,叔母:5,叔父:5,\"受了傷 \":6,变:6,句子:6,另:6,只是:6,只有:6,可以:6,\"可能 \":6,可能不:6,可能的:6,台所:5,台風:5,\"吃 \":6,吃了:6,\"同意 \":6,名前:5,\"名字 \":6,后:6,吗:6,否定:5,吧:6,听:6,呀:6,呂:5,员:6,呢:6,命勉:5,和tom:6,和他:6,和我:6,咖:6,員会:5,哥:6,哪:6,哭:6,唯一的:6,\"唱歌 \":6,啊:6,啡:6,喧嘩:5,喫:5,單:6,営:5,嗎:6,嘘:5,噂:5,四方八方:5,回家:6,回復:5,回来:6,\"回答 \":6,因為:6,団:5,园:6,囲:5,図:5,\"国 \":6,\"国人 \":6,\"国家 \":6,国語:5,国際:5,图:6,國:6,圖書館:6,圧:5,在tat:6,在一:6,在他:6,在学校:6,在家:6,在床上:6,在我:6,在日本:6,在東京:6,在這:6,在那:6,在電視上:6,\"地上 \":6,\"地址 \":6,地域:5,地平線:5,\"地方 \":6,场:6,坊:5,坏:6,坐:6,城市:6,基本的:5,報告書:5,\"場合 \":5,場所:5,塩:5,増:5,壊:5,\"士頓 \":6,\"声音 \":6,売:5,处:6,备:6,変:5,复:6,夏休:5,夕食:5,外旅行:5,\"多 \":6,多久:6,多分:5,多少人:6,多的:6,够:6,夠:6,夢中:5,\"大 \":6,大丈:5,\"大人 \":6,大切:5,大利:6,大勢:5,大好:5,大家都:6,大成功:5,大的:6,大統:5,大規模:5,大部分的:6,大都市:5,\"天 \":6,天上午:6,天候:5,天我:6,天文学:5,天早:6,天是:6,天然資:5,天的:6,天花板上:6,天都:6,\"失望 \":6,失礼:5,头:6,奇妙:5,\"奇怪 \":6,奇怪的:6,契約:5,套:6,奨学金:5,奪:5,女人:6,女子高生:5,奶:6,她:6,\"好 \":6,好主意:6,好了:6,\"好人 \":6,好像:6,好奇心:5,好的:6,如何:6,如果:6,妈:6,妹妹:6,妻子:6,姆:6,姉:5,姐:6,姿:5,\"娃娃 \":6,\"婚 \":6,婚式:5,婚記念日:5,婦人:5,媽:6,嬉:5,子上:6,子供:5,子的:6,\"字典 \":6,\"存在 \":6,\"存在的 \":6,学校的:6,\"学生 \":6,学生時:5,学生達:5,学者:5,孩:6,學:6,它:6,宅:5,宇宙旅行:5,宇宙飛:5,完全不:6,\"完成 \":6,宙飛行:5,定期的:5,实:6,実:5,家族:5,家的:6,\"容易 \":6,容疑者:5,宿題:5,寝:5,實:6,寫:6,对:6,対:5,専:5,將:6,對:6,小学校:5,小心:6,小時:6,小麦粉:5,\"少 \":6,少女:5,少年達:5,尔:6,就不:6,就是:6,尼:6,届:5,屋根:5,岁:6,嵐:5,工作:6,工場:5,\"工程師 \":6,已:6,巴:6,巻:5,市中心:6,市役所:5,师:6,\"希望 \":6,带:6,帮:6,帯:5,帰:5,帶:6,常常:6,幫:6,平和:5,年上:5,年以上:5,年間:5,并:6,\"幸福 \":6,\"幸福的 \":6,庁所在:5,広:5,应:6,延期:5,建物:5,开:6,弁:5,弟弟:6,张:6,强:6,弾:5,当時:5,彼女:5,彼氏:5,很:6,従:5,得不:6,得了:6,得到:6,得意:5,得我:6,得非常:6,從:6,御:5,德:6,徹底的:5,心理学:5,心配:5,必要以:5,忘了:6,\"忙 \":6,応:5,\"快 \":6,快就:6,怎:6,怕:6,\"思 \":6,思議:5,怠:5,怪我:5,总:6,\"息 \":6,息子:5,恵:5,您:6,悩:5,悪:5,\"情 \":6,情况下:6,情報:5,惊:6,\"想 \":6,想去:6,想法:6,想要:6,\"感冒 \":6,感到:6,感謝祭:5,愿:6,懂:6,應:6,懐中電灯:5,懸:5,成了:6,\"成功 \":6,成功的:6,成為一:6,\"成的 \":6,成長:5,\"我 \":6,我一:6,我不:6,我今:6,我以:6,我会:6,我去:6,我叔叔:6,我只:6,我可:6,我和:6,我喜:6,我在:6,我完全:6,我就:6,我希:6,我必須:6,我想:6,我慢:5,我所知:6,我打:6,我把:6,我昨:6,我是:6,我更喜:6,我最:6,我有:6,我来:6,我没:6,我父:6,我現在:6,我的:6,我看:6,我真:6,我知:6,我第一:6,我能:6,我自己:6,我要:6,我認識:6,我需:6,我非常:6,或:6,战:6,戦:5,戸:5,戻:5,房子:6,房間:6,所以:6,所在地:5,所恐怖症:5,\"所知 \":6,手紙:5,打了電話:6,\"打招呼 \":6,打算:6,打電話:6,払:5,扱:5,找:6,技術:5,把他:6,把我:6,抓:6,抜:5,报:6,\"抱怨 \":6,押:5,\"担心 \":6,拉:6,招待:5,拜:6,拿:6,指導者:5,按:6,挙:5,捜:5,捨:5,掃除:5,授業:5,掉:6,推理小:5,提案:5,援助:5,携:5,撃:5,\"撒谎 \":6,撮:5,\"擔心 \":6,支配:5,收:6,放在:6,放課後:5,政治的:5,故事:6,救急車:5,教会:5,\"教堂 \":6,教科書:5,敦:6,数年前:5,数時間:5,數:6,文句:5,文法的:5,斯:6,新婚旅行:5,新的:6,\"方式 \":6,於:6,旅行中:5,旅行者:5,无:6,日中:5,\"日子 \":6,日学校:5,日常生:5,日時間:5,\"日本 \":6,日本文:5,日本料理:5,日本的:6,日東京:5,日間:5,早上:6,时:6,昇:5,\"明 \":6,明天:6,明後日:5,明日:5,\"明白 \":6,昔:5,星期:6,映画:5,昨夜:5,昨天:6,昨年:5,昨日:5,\"是 \":6,是一:6,是不:6,是世界:6,是他:6,是個:6,是唯一:6,是在:6,是我:6,是日本:6,是最:6,是有:6,\"是的 \":6,是真:6,\"是空的 \":6,是纯素食:6,\"是誰 \":6,\"是誰的 \":6,\"是錯的 \":6,是非常:6,昼:5,時候:6,時分:5,時半:5,時計:5,時間以:5,時間前:5,時間待:5,時間後:5,時間通:5,晚:6,晩:5,普段:5,暮:5,曜:5,書類:5,曾:6,最善:5,最喜:6,最大限:5,最好:6,最終:5,\"最近 \":5,最近彼:5,最近的:6,最重要:6,最高的:6,會:6,\"有 \":6,有一:6,有些:6,有人:6,有可能:6,有名的:6,\"有問題 \":6,有多:6,有必要:6,有意思的:6,有点:6,\"有用 \":6,有的:6,有趣:6,\"有道理 \":6,朋:6,望遠鏡:5,\"朝 \":5,朝食:5,\"本人 \":6,本字典:6,本当:5,本書:6,本語:5,\"机 \":6,杀:6,来了:6,来年:5,来月:5,来的:6,来週:5,東西:6,果我:6,\"果汁 \":6,果物:5,查:6,査:5,树:6,校時代:5,校長先生:5,株式市場:5,样:6,根本不:6,案内:5,桌:6,條:6,梦:6,械:5,植民地:5,検:5,楽:5,様:5,樂:6,模型飛行:5,樣:6,権:5,機会:5,機嫌:5,欠席:5,欠点:5,\"次 \":6,次第:5,欢:6,歉:6,\"歌手 \":6,歡:6,正在:6,正直:5,正確的:6,此:6,步:6,歩:5,歯:5,歲:6,歳:5,歴:5,死了:6,残念:5,殺人事:5,殺人犯:5,\"母親 \":6,毎:5,每:6,比我:6,\"比賽 \":6,\"比赛 \":6,比較的:5,民主主:5,气:6,気:5,氣:6,\"水果 \":6,水泳:5,氷:5,永遠不:6,汚:5,汤:6,沈:5,沒:6,没有:6,\"法 \":6,\"法語 \":6,波士:6,泥棒:5,注意深:5,注文:5,\"泳 \":6,\"洗澡 \":6,洲:6,\"活 \":6,活動:5,流利的英:6,浪費時間:6,海外:5,消防士:5,涙:5,\"清楚 \":6,済:5,游:6,満:5,滞:5,满:6,滿:6,濯:5,火事:5,火車:6,\"点 \":6,点起床:6,烟:6,热:6,無事:5,無法:6,無理:5,無視:5,然資源:5,焼:5,煙草:5,照片:6,熱心:5,爱:6,\"父母 \":6,父親的:6,爸:6,爾:6,\"片 \":6,牙:6,牛乳:5,物理学:5,物語:5,犬:5,状態:5,状況:5,狗:6,玛:6,\"玩扑克 \":6,现:6,班:6,\"現在 \":5,現在在:6,\"球 \":6,球選手:5,琴:6,瑪:6,生了:6,\"生命 \":6,生徒:5,\"生日 \":6,生時代:5,生活中:6,生活水準:5,生活的:6,生活費:5,生物学:5,生的:6,産:5,用意:5,\"用的 \":6,电:6,男人:6,男性:5,町:5,界一周:5,界上:6,界中:5,留守:5,番号:5,番好:5,番組:5,畫:6,當:6,病院:5,\"痛苦 \":6,発:5,登場人物:5,發:6,百科事典:5,的一:6,的丈夫:6,的不:6,\"的主人 \":6,的事:6,的人:6,的健康:6,的兄弟:6,的原因:6,的名:6,的味道:6,的問題:6,的国家:6,的地址:6,的地方:6,的声音:6,的女:6,的字典:6,的学生:6,的家:6,的小:6,的工:6,的帽子:6,\"的建議 \":6,\"的忠告 \":6,的情况:6,的想:6,的意:6,\"的感受 \":6,的成功:6,的房:6,的手:6,的方式:6,的日子:6,的是:6,的時:6,\"的書 \":6,的母:6,的父:6,的理由:6,的生:6,的男:6,的秘密:6,的第一:6,的答案:6,的老:6,的英文:6,的英語:6,的行李:6,的衣服:6,\"的要求 \":6,的計劃:6,的話:6,\"的责任 \":6,的路上:6,\"的車 \":6,的那:6,的钥匙:6,的電話:6,的食物:6,的首都:6,皿:5,相信:6,相手:5,\"相機 \":6,相談:5,\"看 \":6,看到:6,看看:6,看護:5,看起:6,看電視:6,県庁所:5,真夜中:5,真是:6,真正的:6,真的:6,\"真相 \":6,真面目:5,\"着 \":6,睛:6,知道:6,砂:5,确:6,確認:5,礼儀正:5,\"礼物 \":6,社長:5,禮:6,离:6,私達:5,种:6,科学技:5,科学的:5,\"秘密 \":6,租:6,種類:5,積極的:5,空港:5,穿:6,\"突然 \":5,窓:5,窗:6,立場:5,立派:5,站:6,競争:5,\"笑 \":6,笔:6,\"第一名 \":6,筆記本:6,\"答案 \":6,\"篇文章 \":6,精一杯:5,精神的:5,糕:6,約束:5,紅茶:5,素敵:5,素晴:5,累:6,紹介:5,経:5,結婚記念:5,結局:5,\"結果 \":5,結構:5,給我:6,給料:5,統領:5,絵:5,絶:5,經:6,続:5,総理大臣:5,緒:5,總:6,红:6,约:6,纯素食者:6,纸:6,终:6,经:6,结:6,给:6,绝:6,统:6,缺:6,网:6,罗:6,美人:5,美国:6,美術館:5,美麗的:6,義務:5,\"習英語 \":6,翰:6,\"翻译 \":6,老師:6,\"考試 \":6,而:6,\"耐心 \":6,聊:6,聲:6,聴:5,聽:6,\"能的 \":6,脑:6,腕:5,腦:6,腳踏車:6,臆病者:5,自分:5,自動:5,\"自己 \":6,自己的:6,自己紹:5,自慢:5,自行:6,興味:5,舎:5,\"舒服 \":6,航空便:5,色的:6,\"艺术家 \":6,节:6,芸:5,若者:5,苦手:5,\"英文 \":6,\"苹果 \":6,荷物:5,\"菜 \":6,華料理:5,萨:6,蔵:5,薬:5,\"蘋果 \":6,處:6,蛋:6,衆:5,行方不:5,行機:5,\"衣服 \":6,裁判官:5,補:5,裝:6,裡:6,製品:5,\"西 \":6,要一:6,要以上:5,要去:6,要是:6,要的:6,覚:5,観:5,覺:6,见:6,观:6,视:6,觉:6,解決策:5,\"言 \":6,言葉:5,言語:5,\"計劃 \":6,計画:5,記者会見:5,訪問:5,許可:5,訳:5,訴我:6,診:5,証:5,試合:5,話番:5,該:6,詳:5,認為:6,誕生:5,誘:5,語言:6,說:6,説:5,読:5,誰一人:5,調子:5,警官:5,警察官:5,議論:5,讀:6,變:6,讓:6,计:6,认:6,讨:6,让:6,议:6,记:6,讲:6,许:6,论:6,证:6,识:6,诉:6,词:6,试:6,话:6,该:6,语:6,误:6,说:6,请:6,读:6,课:6,谁:6,谈:6,谢:6,貓:6,財布:5,貧乏:5,責任者:5,貯:5,買了:6,貸:5,\"費時間 \":6,賛:5,賢:5,質問:5,贈:5,费:6,\"走 \":6,走了:6,\"起 \":6,\"起床 \":6,起来:6,越来越:6,\"趣 \":6,趣味:5,跑:6,跟:6,\"路 \":6,\"跳舞 \":6,踊:5,車事故:5,転:5,軽:5,輕:6,輛:6,车:6,轻:6,辆:6,辞書:5,辦:6,边:6,辺:5,込:5,达:6,过:6,运:6,近所:5,返事:5,还:6,这:6,进:6,远:6,迟:6,退屈:5,选:6,途中:5,這些:6,這個:6,這是:6,這本:6,連絡:5,週間:5,遅:5,道他:6,道我:6,選択肢:5,還是:6,邊:6,那些:6,那個:6,那是:6,那里:6,邪:5,部屋:5,郵便:5,都不:6,都合:5,都在:6,都是:6,\"酒 \":6,酔:5,酸化炭素:5,醒:6,醫:6,\"里 \":6,里有:6,里的:6,\"重要 \":6,重要性:5,野球:5,野菜:5,金不足:5,金持:5,鉄:5,錢:6,\"錯誤 \":6,録:5,鍵:5,\"鑰匙 \":6,钟:6,钱:6,错:6,长:6,\"開始 \":6,\"開心 \":6,\"開車 \":6,間違:5,関:5,關:6,门:6,问:6,间:6,队:6,附:6,陌生人:6,险:6,険:5,階:5,隠:5,隣:5,隻:6,难:6,雑:5,離開:6,\"雨 \":6,電影:6,\"電視 \":6,電話給:6,電話號碼:6,電車:5,需要更:6,非常喜:6,非難:5,靠:6,\"面 \":6,面倒:5,面白:5,鞋:6,\"頂帽子 \":6,頃:5,頑:5,頼:5,顔:5,须:6,顿:6,题:6,风:6,飛行士:5,飞:6,食事:5,食料品:5,\"食物 \":6,飼:5,\"餐 \":6,饭:6,馆:6,\"首都 \":6,馬鹿:5,駄:5,駅:5,駐車:5,騒:5,験:5,马:6,體:6,\"高 \":6,高校:5,\"高興 \":6,高速道:5,髪:5,魅力的:5,鱼:6,鳴:5,麼:6,黑:6,黒:5,黙:5,點:6,齢:5,가:7,각:7,간:7,갈:7,감:7,갔:7,강:7,같:7,개:7,거:7,건:7,걸:7,것:7,게:7,겠:7,격:7,결:7,경:7,계:7,고:7,\"곤 \":7,\"곧 \":7,곳:7,공:7,과:7,관:7,괜찮:7,교:7,구:7,국:7,군:7,권:7,그:7,근:7,금:7,기:7,\"긴 \":7,길:7,까:7,께:7,\"꽤 \":7,\"끔 \":7,끔찍:7,나:7,난:7,날:7,남:7,났:7,내:7,\"낼 \":7,\"냐 \":7,\"냥 \":7,너:7,넌:7,\"널 \":7,네:7,녀:7,년:7,\"녕 \":7,노:7,농담:7,누:7,눈:7,느:7,는:7,늘:7,니:7,님:7,다:7,단:7,달:7,답:7,당:7,대:7,더:7,던:7,데:7,도:7,독:7,돈:7,돌:7,동:7,돼:7,되:7,된:7,될:7,두:7,둘:7,\"둬 \":7,드:7,든:7,들:7,등:7,디:7,따:7,때:7,떠:7,\"떤 \":7,떻:7,또:7,똑똑:7,라:7,란:7,람:7,랐:7,랑:7,래:7,러:7,런:7,\"럴 \":7,럼:7,렇:7,레:7,려:7,력:7,렸:7,로:7,록:7,루:7,르:7,른:7,를:7,름:7,리:7,린:7,릴:7,마:7,\"막 \":7,만:7,많:7,말:7,망:7,매:7,머:7,먹:7,메:7,며:7,면:7,명:7,몇:7,모:7,목:7,몰:7,못:7,무:7,문:7,물:7,뭐:7,\"뭘 \":7,미:7,믿:7,\"및 \":7,바:7,반:7,받:7,발:7,밤:7,방:7,배:7,버:7,번:7,벌써:7,법:7,별:7,보:7,복:7,본:7,\"볼 \":7,봐:7,봤:7,부:7,분:7,불:7,비:7,빠:7,빨:7,\"쁜 \":7,사:7,산:7,살:7,상:7,새:7,색:7,생:7,서:7,선:7,설:7,\"섯 \":7,성:7,세:7,\"셔 \":7,셔츠:7,셨:7,소:7,속:7,손:7,수:7,슈퍼:7,스:7,슨:7,습:7,시:7,식:7,신:7,실:7,싫:7,심:7,십:7,싶:7,\"써 \":7,쓰:7,\"씩 \":7,\"씬 \":7,아:7,악:7,안:7,않:7,알:7,았:7,애:7,야:7,약:7,양:7,어:7,언:7,얼:7,엄:7,업:7,없:7,엇:7,었:7,에:7,\"엔 \":7,여:7,역:7,연:7,열:7,였:7,영:7,예:7,오:7,\"온 \":7,올:7,와:7,완벽:7,왔:7,왜:7,외:7,요:7,용:7,우:7,운:7,울:7,움:7,웃:7,워:7,원:7,월:7,웠:7,위:7,유:7,으:7,은:7,을:7,음:7,의:7,이:7,인:7,일:7,읽:7,임:7,입:7,있:7,자:7,작:7,\"잔 \":7,잘:7,잠:7,장:7,재:7,저:7,적:7,전:7,절:7,점:7,\"접 \":7,정:7,제:7,져:7,졌:7,조:7,존:7,좀:7,종:7,좋:7,죄송:7,\"죠 \":7,주:7,죽:7,\"준 \":7,줄:7,중:7,줘:7,\"즘 \":7,증:7,지:7,직:7,진:7,질:7,집:7,짓:7,\"짜 \":7,\"찍 \":7,차:7,참:7,찾:7,책:7,처:7,\"척 \":7,천천:7,청:7,체:7,\"쳐 \":7,최:7,\"춰 \":7,치:7,친:7,\"칠 \":7,침:7,카:7,컴퓨:7,케:7,코:7,크:7,\"큰 \":7,\"큼 \":7,키:7,타:7,터:7,턴:7,테:7,토:7,톰:7,통:7,트:7,티:7,파:7,편:7,표현:7,프:7,피:7,필:7,하:7,학:7,한:7,할:7,함:7,합:7,항:7,해:7,했:7,행:7,험:7,\"혀 \":7,호:7,혼:7,화:7,확:7,회:7,후:7,훨씬:7,희:7,히:7,\"𝑥\":\"n\",\"- \":\"n\",\";\":6}};var a0=/([,,、。!¿?!?\":;()「」{}„“«»”\"“<>⋯《》*]|[.[\\]\\\\])+/,e0=/[ ]+/;function i0(a){return a.split(a0)}function n0(a){return a.split(e0)}function v(a,e,n=!0){let o=[],t=n?\" \".repeat(e-1)+a+\" \".repeat(e-1):a;for(let l=0;l1)&&r.push(t[l+i]);let O=r.join(\"\");O.trim().length>0&&O.length===e&&o.push(O)}return o}function o0(a,e,n,o){for(let t of A){let l=v(a,t);for(let r of l){if(!n.has(r))continue;let s=D(e.uniques[r]);if(!(o.only.length>0&&!o.only.includes(s)))return o.verbose&&console.log(`[Pass 1] detectUniqueGrams ${t}-grams - match '${r}' to ${s}`),s}}return\"\"}function t0(a,e,n){let o=new Map,t=A.map(i=>v(a,i)).flat();n.verbose&&console.log(\"[Pass 2] DetectPotentialGrams\",a,t);let l=new Set([...X.values()].filter(i=>n.only.length>0?n.only.includes(i)||n.only.includes(D(i)):!0));l.forEach(i=>o.set(i,0));for(let i of t){let u=R(i),d=e.multiples[u];if(!d)continue;let M=new Set(Object.keys(d)),N=[];for(let L of l)M.has(L)&&(o.set(L,(o.get(L)||0)+d[L]*u.length/4),N.push(`${L} = ${d[L]/1024*100}%`));n.verbose&&N.length>0&&console.log(`Gram '${u}'`,N)}let r=[...o.entries()];r.sort((i,u)=>u[1]-i[1]);let s=Math.max(...r.map(i=>i[1]))||1,O=r.slice(0,8).map(i=>({lang:D(i[0]),accuracy:1-g((s-i[1])/s),score:g(i[1])}));return n.verbose&&console.log(\"Result\",a,O),O}function c(a,e,n,o){let t=i0(a);t=t.map(i=>k(i)).filter(i=>!!i),t.sort((i,u)=>u.length-i.length),t=t.slice(0,7),e.verbose&&console.log(\"Analize chunks\",t);let l=0,r={};for(let i of t){let u=o0(i,n,o,e);if(u){r[u]=(r[u]||0)+1*i.length,l+=i.length;continue}let d=n0(i);for(let M of d)t0(M,n,e).forEach(L=>{r[L.lang]=(r[L.lang]||0)+L.accuracy}),l+=M.length}let s=Object.entries(r).filter(i=>i[1]>0);s.sort((i,u)=>u[1]-i[1]);let O=s.map(i=>({lang:i[0],accuracy:i[1]/l}));return e.verbose&&console.log(\"Merge Results\",O),O}var H=U,r0={uniques:Object.fromEntries(Object.entries(H.uniques).map(a=>[a[0],T[parseInt(a[1].toString(),36)]])),multiples:Object.fromEntries(Object.entries(H.multiples).map(a=>{let e=Object.fromEntries(a[1].match(/(.{1,4})/g)?.map(n=>{let[o,t]=n.match(/(.{1,2})/g);return[T[parseInt(o,36)],parseInt(t,36)]})||[]);return[a[0],e]}))},l0=new Set(Object.keys(U.uniques));function s0(a,e){let n=j(a,e);return n.length>0?n[0].lang:\"\"}function j(a,e){let n=C(e);return Z(a)?c(a,n,r0,l0):[]}0&&(module.exports={cleanString,detect,detectAll,langName,langRegion,supportedLanguages,toISO2,toISO3,validateISO2});\n{\n \"name\": \"tinyld\",\n \"description\": \"Simple and Performant Language detection library (pure JS and zero dependencies)\",\n \"version\": \"1.3.4\",\n \"license\": \"MIT\",\n \"exports\": {\n \"./light\": {\n \"require\": \"./dist/tinyld.light.node.js\",\n \"import\": \"./dist/tinyld.light.node.mjs\",\n \"browser\": \"./dist/tinyld.light.browser.js\",\n \"types\": \"./dist/tinyld.light.node.d.ts\"\n },\n \"./heavy\": {\n \"require\": \"./dist/tinyld.heavy.node.js\",\n \"import\": \"./dist/tinyld.heavy.node.mjs\",\n \"browser\": \"./dist/tinyld.heavy.browser.js\",\n \"types\": \"./dist/tinyld.heavy.node.d.ts\"\n },\n \".\": {\n \"require\": \"./dist/tinyld.normal.node.js\",\n \"import\": \"./dist/tinyld.normal.node.mjs\",\n \"browser\": \"./dist/tinyld.normal.browser.js\",\n \"types\": \"./dist/tinyld.normal.node.d.ts\"\n }\n },\n \"typesVersions\": {\n \"*\": {\n \"light\": [\n \"./dist/tinyld.light.node.d.ts\"\n ],\n \"heavy\": [\n \"./dist/tinyld.heavy.node.d.ts\"\n ],\n \"*\": [\n \"./dist/tinyld.normal.node.d.ts\"\n ]\n }\n },\n \"bin\": {\n \"tinyld\": \"./bin/tinyld.js\",\n \"tinyld-light\": \"./bin/tinyld-light.js\",\n \"tinyld-heavy\": \"./bin/tinyld-heavy.js\"\n },\n \"keywords\": [\n \"lang\",\n \"language\",\n \"language detection\",\n \"natural-language\",\n \"detect\",\n \"detector\",\n \"n-gram\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/komodojp/tinyld.git\"\n },\n \"author\": {\n \"name\": \"Kevin Destrem\",\n \"email\": \"kevin_destrem@komodo.jp\"\n },\n \"scripts\": {\n \"train\": \"run-p train:*\",\n \"train:normal\": \"cross-env TINYLD_CONFIG=normal ts-node src/train.ts\",\n \"train:light\": \"cross-env TINYLD_CONFIG=light ts-node src/train.ts\",\n \"train:heavy\": \"cross-env TINYLD_CONFIG=heavy ts-node src/train.ts\",\n \"bench\": \"run-s bench:*\",\n \"bench:tinyld\": \"cross-env TINYLD_CONFIG=normal ts-node src/benchmark/tinyld.ts\",\n \"bench:tinyld-light\": \"cross-env TINYLD_CONFIG=light ts-node src/benchmark/tinyld_light.ts\",\n \"bench:tinyld-heavy\": \"cross-env TINYLD_CONFIG=heavy ts-node src/benchmark/tinyld_heavy.ts\",\n \"bench:cld\": \"ts-node src/benchmark/cld.ts\",\n \"bench:franc\": \"ts-node src/benchmark/franc.ts\",\n \"bench:franc-all\": \"ts-node src/benchmark/franc-all.ts\",\n \"bench:franc-min\": \"ts-node src/benchmark/franc-min.ts\",\n \"bench:langdetect\": \"ts-node src/benchmark/langdetect.ts\",\n \"bench:languagedetect\": \"ts-node src/benchmark/languagedetect.ts\",\n \"build\": \"run-p build:*\",\n \"build:normal-node\": \"esbuild src/index.ts --define:process.env={\\\\\\\"TINYLD_CONFIG\\\\\\\":\\\\\\\"normal\\\\\\\"} --bundle --charset=utf8 --minify --platform=node --outfile=dist/tinyld.normal.node.js\",\n \"build:normal-node-esm\": \"esbuild src/index.ts --define:process.env={\\\\\\\"TINYLD_CONFIG\\\\\\\":\\\\\\\"normal\\\\\\\"} --bundle --charset=utf8 --minify --platform=node --format=esm --outfile=dist/tinyld.normal.node.mjs\",\n \"build:normal-web\": \"esbuild src/index.ts --define:process.env={\\\\\\\"TINYLD_CONFIG\\\\\\\":\\\\\\\"normal\\\\\\\"} --bundle --charset=utf8 --platform=browser --format=esm --outfile=dist/tinyld.normal.browser.js\",\n \"build:light-node\": \"esbuild src/index_light.ts --define:process.env={\\\\\\\"TINYLD_CONFIG\\\\\\\":\\\\\\\"light\\\\\\\"} --bundle --charset=utf8 --minify --platform=node --outfile=dist/tinyld.light.node.js\",\n \"build:light-node-esm\": \"esbuild src/index_light.ts --define:process.env={\\\\\\\"TINYLD_CONFIG\\\\\\\":\\\\\\\"light\\\\\\\"} --bundle --charset=utf8 --minify --platform=node --format=esm --outfile=dist/tinyld.light.node.mjs\",\n \"build:light-web\": \"esbuild src/index_light.ts --define:process.env={\\\\\\\"TINYLD_CONFIG\\\\\\\":\\\\\\\"light\\\\\\\"} --bundle --charset=utf8 --minify --platform=browser --format=esm --outfile=dist/tinyld.light.browser.js\",\n \"build:heavy-node\": \"esbuild src/index_heavy.ts --define:process.env={\\\\\\\"TINYLD_CONFIG\\\\\\\":\\\\\\\"heavy\\\\\\\"} --bundle --charset=utf8 --minify --platform=node --outfile=dist/tinyld.heavy.node.js\",\n \"build:heavy-node-esm\": \"esbuild src/index_heavy.ts --define:process.env={\\\\\\\"TINYLD_CONFIG\\\\\\\":\\\\\\\"heavy\\\\\\\"} --bundle --charset=utf8 --minify --platform=node --format=esm --outfile=dist/tinyld.heavy.node.mjs\",\n \"build:heavy-web\": \"esbuild src/index_heavy.ts --define:process.env={\\\\\\\"TINYLD_CONFIG\\\\\\\":\\\\\\\"heavy\\\\\\\"} --bundle --charset=utf8 --minify --platform=browser --format=esm --outfile=dist/tinyld.heavy.browser.js\",\n \"build:type\": \"run-s build:type:*\",\n \"build:type:build\": \"tsc --emitDeclarationOnly --declaration --project tsconfig.json --outDir dist\",\n \"build:type:normal\": \"mv ./dist/index.d.ts ./dist/tinyld.normal.node.d.ts && cp ./dist/tinyld.normal.node.d.ts ./dist/tinyld.normal.browser.d.ts\",\n \"build:type:light\": \"mv ./dist/index_light.d.ts ./dist/tinyld.light.node.d.ts && cp ./dist/tinyld.light.node.d.ts ./dist/tinyld.light.browser.d.ts\",\n \"build:type:heavy\": \"mv ./dist/index_heavy.d.ts ./dist/tinyld.heavy.node.d.ts && cp ./dist/tinyld.heavy.node.d.ts ./dist/tinyld.heavy.browser.d.ts\",\n \"build:post\": \"yarn gen:svg && yarn gen:mkd && yarn lint\",\n \"gen:mkd\": \"node ./utils/mkdown.js\",\n \"gen:svg\": \"node ./utils/index.js\",\n \"lint\": \"eslint --ext .js,.ts --fix ./ && prettier --config .prettierrc --ignore-path .prettierignore --write \\\"**/*.{ts,js,md}\\\"\",\n \"test\": \"run-p test:*\",\n \"test:unit\": \"uvu tests\",\n \"test:dependencies\": \"yarn audit --level high || echo \\\"Run 'yarn update' to interactively update dependencies for this project\\\"\",\n \"test:lint\": \"eslint --ext .js,.ts ./ && prettier --config .prettierrc --ignore-path .prettierignore --check \\\"**/*.{ts,js}\\\"\",\n \"test:types\": \"tsc --noEmit\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^18.0.0\",\n \"@typescript-eslint/eslint-plugin\": \"^4.28.5\",\n \"@typescript-eslint/parser\": \"^4.28.5\",\n \"chartist-svg\": \"^0.2.3\",\n \"cld\": \"^2.7.0\",\n \"cross-env\": \"^7.0.3\",\n \"esbuild\": \"^0.14.0\",\n \"eslint\": \"^7.32.0\",\n \"franc\": \"^5.0.0\",\n \"franc-all\": \"^5.0.0\",\n \"franc-min\": \"^5.0.0\",\n \"langdetect\": \"^0.2.1\",\n \"languagedetect\": \"^2.0.0\",\n \"npm-run-all\": \"^4.1.5\",\n \"p-limit\": \"3.1.0\",\n \"prettier\": \"^2.3.2\",\n \"ts-node\": \"^10.2.0\",\n \"typescript\": \"^4.3.5\",\n \"uvu\": \"^0.5.1\"\n },\n \"engines\": {\n \"node\": \">= 12.10.0\",\n \"npm\": \">= 6.12.0\",\n \"yarn\": \">= 1.20.0\"\n }\n}\nrequire.addon = require('require-addon')\n\nmodule.exports = require.addon('.', __filename)\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nconst v4Seg = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'\nconst v4Str = `(${v4Seg}[.]){3}${v4Seg}`\nconst IPv4Pattern = new RegExp(`^${v4Str}$`)\n\nconst v6Seg = '(?:[0-9a-fA-F]{1,4})'\nconst IPv6Pattern = new RegExp(\n '^(' +\n `(?:${v6Seg}:){7}(?:${v6Seg}|:)|` +\n `(?:${v6Seg}:){6}(?:${v4Str}|:${v6Seg}|:)|` +\n `(?:${v6Seg}:){5}(?::${v4Str}|(:${v6Seg}){1,2}|:)|` +\n `(?:${v6Seg}:){4}(?:(:${v6Seg}){0,1}:${v4Str}|(:${v6Seg}){1,3}|:)|` +\n `(?:${v6Seg}:){3}(?:(:${v6Seg}){0,2}:${v4Str}|(:${v6Seg}){1,4}|:)|` +\n `(?:${v6Seg}:){2}(?:(:${v6Seg}){0,3}:${v4Str}|(:${v6Seg}){1,5}|:)|` +\n `(?:${v6Seg}:){1}(?:(:${v6Seg}){0,4}:${v4Str}|(:${v6Seg}){1,6}|:)|` +\n `(?::((?::${v6Seg}){0,5}:${v4Str}|(?::${v6Seg}){1,7}|:))` +\n ')(%[0-9a-zA-Z-.:]{1,})?$'\n)\n\nconst isIPv4 = (exports.isIPv4 = function isIPv4(host) {\n return IPv4Pattern.test(host)\n})\n\nconst isIPv6 = (exports.isIPv6 = function isIPv6(host) {\n return IPv6Pattern.test(host)\n})\n\nexports.isIP = function isIP(host) {\n if (isIPv4(host)) return 4\n if (isIPv6(host)) return 6\n return 0\n}\nconst events = require('events')\nconst b4a = require('b4a')\nconst binding = require('../binding')\n\nmodule.exports = class NetworkInterfaces extends events.EventEmitter {\n constructor(udx) {\n super()\n\n this._handle = b4a.alloc(binding.sizeof_udx_napi_interface_event_t)\n this._watching = false\n this._destroying = null\n\n binding.udx_napi_interface_event_init(\n udx._handle,\n this._handle,\n this,\n this._onevent,\n this._onclose\n )\n\n this.interfaces = binding.udx_napi_interface_event_get_addrs(this._handle)\n }\n\n _onclose() {\n this.emit('close')\n }\n\n _onevent() {\n this.interfaces = binding.udx_napi_interface_event_get_addrs(this._handle)\n\n this.emit('change', this.interfaces)\n }\n\n watch() {\n if (this._watching) return this\n this._watching = true\n\n binding.udx_napi_interface_event_start(this._handle)\n\n return this\n }\n\n unwatch() {\n if (!this._watching) return this\n this._watching = false\n\n binding.udx_napi_interface_event_stop(this._handle)\n\n return this\n }\n\n async destroy() {\n if (this._destroying) return this._destroying\n this._destroying = events.once(this, 'close')\n\n binding.udx_napi_interface_event_close(this._handle)\n\n return this._destroying\n }\n\n [Symbol.iterator]() {\n return this.interfaces[Symbol.iterator]()\n }\n}\nconst events = require('events')\nconst b4a = require('b4a')\nconst binding = require('../binding')\nconst ip = require('./ip')\n\nmodule.exports = class UDXSocket extends events.EventEmitter {\n constructor(udx, opts = {}) {\n super()\n\n this.udx = udx\n\n this._handle = b4a.alloc(binding.sizeof_udx_napi_socket_t)\n this._inited = false\n this._host = null\n this._family = 0\n this._ipv6Only = opts.ipv6Only === true\n this._reuseAddress = opts.reuseAddress === true\n this._port = 0\n this._reqs = []\n this._free = []\n this._closing = null\n this._closed = false\n\n this._view64 = new BigUint64Array(\n this._handle.buffer,\n this._handle.byteOffset,\n this._handle.byteLength >> 3\n )\n\n this.streams = new Set()\n\n this.userData = null\n }\n\n get bound() {\n return this._port !== 0\n }\n\n get closing() {\n return this._closing !== null\n }\n\n get idle() {\n return this.streams.size === 0\n }\n\n get busy() {\n return this.streams.size > 0\n }\n\n get bytesTransmitted() {\n if (this._inited !== true) return 0\n return Number(this._view64[binding.offsetof_udx_socket_t_bytes_tx >> 3])\n }\n\n get packetsTransmitted() {\n if (this._inited !== true) return 0\n return Number(this._view64[binding.offsetof_udx_socket_t_packets_tx >> 3])\n }\n\n get bytesReceived() {\n if (this._inited !== true) return 0\n return Number(this._view64[binding.offsetof_udx_socket_t_bytes_rx >> 3])\n }\n\n get packetsReceived() {\n if (this._inited !== true) return 0\n return Number(this._view64[binding.offsetof_udx_socket_t_packets_rx >> 3])\n }\n\n get packetsDroppedByKernel() {\n if (this._inited !== true) return 0\n return Number(this._view64[binding.offsetof_udx_socket_t_packets_dropped_by_kernel >> 3])\n }\n\n toJSON() {\n return {\n bound: this.bound,\n closing: this.closing,\n streams: this.streams.size,\n address: this.address(),\n ipv6Only: this._ipv6Only,\n reuseAddress: this._reuseAddress,\n idle: this.idle,\n busy: this.busy\n }\n }\n\n _init() {\n if (this._inited) return\n\n binding.udx_napi_socket_init(\n this.udx._handle,\n this._handle,\n this,\n this._onsend,\n this._onmessage,\n this._onclose,\n this._reallocMessage\n )\n\n this._inited = true\n }\n\n _onsend(id, err) {\n const req = this._reqs[id]\n\n const onflush = req.onflush\n\n req.buffer = null\n req.onflush = null\n\n this._free.push(id)\n\n onflush(err >= 0)\n\n // gc the free list\n if (this._free.length >= 16 && this._free.length === this._reqs.length) {\n this._free = []\n this._reqs = []\n }\n }\n\n _onmessage(len, port, host, family) {\n this.emit('message', this.udx._consumeMessage(len), { host, family, port })\n return this.udx._buffer\n }\n\n _onclose() {\n this.emit('close')\n }\n\n _reallocMessage() {\n return this.udx._reallocMessage()\n }\n\n _onidle() {\n this.emit('idle')\n }\n\n _onbusy() {\n this.emit('busy')\n }\n\n _addStream(stream) {\n if (this.streams.has(stream)) return false\n this.streams.add(stream)\n if (this.streams.size === 1) this._onbusy()\n return true\n }\n\n _removeStream(stream) {\n if (!this.streams.has(stream)) return false\n this.streams.delete(stream)\n const closed = this._closeMaybe()\n if (this.idle && !closed) this._onidle()\n return true\n }\n\n address() {\n if (!this.bound) return null\n return { host: this._host, family: this._family, port: this._port }\n }\n\n bind(port, host) {\n if (this.bound) throw new Error('Already bound')\n if (this.closing) throw new Error('Socket is closed')\n\n if (!port) port = 0\n\n let flags = 0\n if (this._ipv6Only) flags |= binding.UV_UDP_IPV6ONLY\n if (this._reuseAddress) flags |= binding.UV_UDP_REUSEADDR\n\n let family\n\n if (host) {\n family = ip.isIP(host)\n if (!family) throw new Error(`${host} is not a valid IP address`)\n\n if (!this._inited) this._init()\n\n this._port = binding.udx_napi_socket_bind(this._handle, port, host, family, flags)\n } else {\n if (!this._inited) this._init()\n\n try {\n host = '::'\n family = 6\n this._port = binding.udx_napi_socket_bind(this._handle, port, host, family, flags)\n } catch {\n host = '0.0.0.0'\n family = 4\n this._port = binding.udx_napi_socket_bind(this._handle, port, host, family, flags)\n }\n }\n\n this._host = host\n this._family = family\n\n this.emit('listening')\n }\n\n async close() {\n if (this._closing) return this._closing\n this._closing = new Promise((resolve) => this.once('close', resolve))\n this._closeMaybe()\n return this._closing\n }\n\n _closeMaybe() {\n if (this._closed || this._closing === null) return this._closed\n\n if (!this._inited) {\n this._closed = true\n this.emit('close')\n return true\n }\n\n if (this.idle) {\n binding.udx_napi_socket_close(this._handle)\n this._closed = true\n }\n\n return this._closed\n }\n\n setTTL(ttl) {\n if (!this._inited) throw new Error('Socket not active')\n binding.udx_napi_socket_set_ttl(this._handle, ttl)\n }\n\n getRecvBufferSize() {\n if (!this._inited) throw new Error('Socket not active')\n return binding.udx_napi_socket_get_recv_buffer_size(this._handle)\n }\n\n setRecvBufferSize(size) {\n if (!this._inited) throw new Error('Socket not active')\n return binding.udx_napi_socket_set_recv_buffer_size(this._handle, size)\n }\n\n getSendBufferSize() {\n if (!this._inited) throw new Error('Socket not active')\n return binding.udx_napi_socket_get_send_buffer_size(this._handle)\n }\n\n setSendBufferSize(size) {\n if (!this._inited) throw new Error('Socket not active')\n return binding.udx_napi_socket_set_send_buffer_size(this._handle, size)\n }\n\n addMembership(group, ifaceAddress) {\n if (!this._inited) throw new Error('Socket not active')\n return binding.udx_napi_socket_set_membership(this._handle, group, ifaceAddress || '', true)\n }\n\n dropMembership(group, ifaceAddress) {\n if (!this._inited) throw new Error('Socket not active')\n return binding.udx_napi_socket_set_membership(this._handle, group, ifaceAddress || '', false)\n }\n\n async send(buffer, port, host, ttl) {\n if (this.closing) return false\n\n if (!host) host = '127.0.0.1'\n\n const family = ip.isIP(host)\n if (!family) throw new Error(`${host} is not a valid IP address`)\n\n if (!this.bound) this.bind(0)\n\n const id = this._allocSend()\n const req = this._reqs[id]\n\n req.buffer = buffer\n\n const promise = new Promise((resolve) => {\n req.onflush = resolve\n })\n\n binding.udx_napi_socket_send_ttl(\n this._handle,\n req.handle,\n id,\n buffer,\n port,\n host,\n family,\n ttl || 0\n )\n\n return promise\n }\n\n trySend(buffer, port, host, ttl) {\n if (this.closing) return\n\n if (!host) host = '127.0.0.1'\n\n const family = ip.isIP(host)\n if (!family) throw new Error(`${host} is not a valid IP address`)\n\n if (!this.bound) this.bind(0)\n\n const id = this._allocSend()\n const req = this._reqs[id]\n\n req.buffer = buffer\n req.onflush = noop\n\n binding.udx_napi_socket_send_ttl(\n this._handle,\n req.handle,\n id,\n buffer,\n port,\n host,\n family,\n ttl || 0\n )\n }\n\n _allocSend() {\n if (this._free.length > 0) return this._free.pop()\n const handle = b4a.allocUnsafe(binding.sizeof_udx_socket_send_t)\n return this._reqs.push({ handle, buffer: null, onflush: null }) - 1\n }\n}\n\nfunction noop() {}\nconst streamx = require('streamx')\nconst b4a = require('b4a')\nconst binding = require('../binding')\nconst ip = require('./ip')\n\nconst MAX_PACKET = 2048\nconst BUFFER_SIZE = 65536 + MAX_PACKET\n\nmodule.exports = class UDXStream extends streamx.Duplex {\n constructor(udx, id, opts = {}) {\n super({ mapWritable: toBuffer, eagerOpen: true })\n\n this.udx = udx\n this.socket = null\n\n this._handle = b4a.alloc(binding.sizeof_udx_napi_stream_t)\n this._view = new Uint32Array(\n this._handle.buffer,\n this._handle.byteOffset,\n this._handle.byteLength >> 2\n )\n this._view16 = new Uint16Array(\n this._handle.buffer,\n this._handle.byteOffset,\n this._handle.byteLength >> 1\n )\n this._view64 = new BigUint64Array(\n this._handle.buffer,\n this._handle.byteOffset,\n this._handle.byteLength >> 3\n )\n\n this._wreqs = []\n this._wfree = []\n\n this._sreqs = []\n this._sfree = []\n this._closed = false\n\n this._flushing = 0\n this._flushes = []\n\n this._buffer = null\n this._reallocData()\n\n this._onwrite = null\n this._ondestroy = null\n this._firewall = opts.firewall || firewallAll\n\n this._remoteChanging = null\n this._previousSocket = null\n\n this.id = id\n this.remoteId = 0\n this.remoteHost = null\n this.remoteFamily = 0\n this.remotePort = 0\n\n this.userData = null\n\n binding.udx_napi_stream_init(\n this.udx._handle,\n this._handle,\n id,\n opts.framed ? 1 : 0,\n this,\n this._ondata,\n this._onend,\n this._ondrain,\n this._onack,\n this._onsend,\n this._onmessage,\n this._onclose,\n this._onfirewall,\n this._onremotechanged,\n this._reallocData,\n this._reallocMessage\n )\n\n if (opts.seq) binding.udx_napi_stream_set_seq(this._handle, opts.seq)\n\n binding.udx_napi_stream_recv_start(this._handle, this._buffer)\n }\n\n get connected() {\n return this.socket !== null\n }\n\n get mtu() {\n return this._view16[binding.offsetof_udx_stream_t_mtu >> 1]\n }\n\n get rtt() {\n return this._view[binding.offsetof_udx_stream_t_srtt >> 2]\n }\n\n get cwnd() {\n return this._view[binding.offsetof_udx_stream_t_cwnd >> 2]\n }\n\n get rtoCount() {\n return this._view16[binding.offsetof_udx_stream_t_rto_count >> 1]\n }\n\n get retransmits() {\n return this._view16[binding.offsetof_udx_stream_t_retransmit_count >> 1]\n }\n\n get bbrState() {\n const view = new Uint8Array(\n this._handle.buffer,\n this._handle.byteOffset,\n this._handle.byteLength\n )\n return view[binding.offsetof_udx_stream_t_bbr_state]\n }\n\n get bbrBandwidth() {\n return binding.udx_napi_stream_get_bw(this._handle)\n }\n\n get fastRecoveries() {\n return this._view16[binding.offsetof_udx_stream_t_fast_recovery_count >> 1]\n }\n\n get inflight() {\n return this._view[binding.offsetof_udx_stream_t_inflight >> 2]\n }\n\n get bytesTransmitted() {\n return Number(this._view64[binding.offsetof_udx_stream_t_bytes_tx >> 3])\n }\n\n get packetsTransmitted() {\n return Number(this._view64[binding.offsetof_udx_stream_t_packets_tx >> 3])\n }\n\n get bytesReceived() {\n return Number(this._view64[binding.offsetof_udx_stream_t_bytes_rx >> 3])\n }\n\n get packetsReceived() {\n return Number(this._view64[binding.offsetof_udx_stream_t_packets_rx >> 3])\n }\n\n get localHost() {\n return this.socket ? this.socket.address().host : null\n }\n\n get localFamily() {\n return this.socket ? this.socket.address().family : 0\n }\n\n get localPort() {\n return this.socket ? this.socket.address().port : 0\n }\n\n setInteractive(bool) {\n if (!this._closed) return\n binding.udx_napi_stream_set_mode(this._handle, bool ? 0 : 1)\n }\n\n connect(socket, remoteId, port, host, opts = {}) {\n if (this._closed) return\n\n if (this.connected) throw new Error('Already connected')\n if (socket.closing) throw new Error('Socket is closed')\n\n if (typeof host === 'object') {\n opts = host\n host = null\n }\n\n if (!host) host = '127.0.0.1'\n\n const family = ip.isIP(host)\n if (!family) throw new Error(`${host} is not a valid IP address`)\n if (!(port > 0 && port < 65536)) throw new Error(`${port} is not a valid port`)\n\n if (!socket.bound) socket.bind(0)\n\n this.remoteId = remoteId\n this.remotePort = port\n this.remoteHost = host\n this.remoteFamily = family\n this.socket = socket\n\n if (opts.ack) binding.udx_napi_stream_set_ack(this._handle, opts.ack)\n\n binding.udx_napi_stream_connect(this._handle, socket._handle, remoteId, port, host, family)\n\n this.socket._addStream(this)\n\n this.emit('connect')\n }\n\n changeRemote(socket, remoteId, port, host) {\n if (this._remoteChanging) throw new Error('Remote already changing')\n\n if (!this.connected) throw new Error('Not yet connected')\n if (socket.closing) throw new Error('Socket is closed')\n\n if (this.socket.udx !== socket.udx) {\n throw new Error('Cannot change to a socket on another UDX instance')\n }\n\n if (!host) host = '127.0.0.1'\n\n const family = ip.isIP(host)\n if (!family) throw new Error(`${host} is not a valid IP address`)\n if (!(port > 0 && port < 65536)) throw new Error(`${port} is not a valid port`)\n\n if (this.socket !== socket) this._previousSocket = this.socket\n\n this.remoteId = remoteId\n this.remotePort = port\n this.remoteHost = host\n this.remoteFamily = family\n this.socket = socket\n\n this._remoteChanging = new Promise((resolve, reject) => {\n const onchanged = () => {\n this.off('close', onclose)\n resolve()\n }\n\n const onclose = () => {\n this.off('remote-changed', onchanged)\n reject(new Error('Stream is closed'))\n }\n\n this.once('remote-changed', onchanged).once('close', onclose)\n })\n\n binding.udx_napi_stream_change_remote(\n this._handle,\n socket._handle,\n remoteId,\n port,\n host,\n family\n )\n\n this.socket._addStream(this)\n\n return this._remoteChanging\n }\n\n relayTo(destination) {\n if (this._closed) return\n\n binding.udx_napi_stream_relay_to(this._handle, destination._handle)\n }\n\n async send(buffer) {\n if (!this.connected || this._closed) return false\n\n const id = this._allocSend()\n const req = this._sreqs[id]\n\n req.buffer = buffer\n\n const promise = new Promise((resolve) => {\n req.onflush = resolve\n })\n\n binding.udx_napi_stream_send(this._handle, req.handle, id, buffer)\n\n return promise\n }\n\n trySend(buffer) {\n if (!this.connected || this._closed) return\n\n const id = this._allocSend()\n const req = this._sreqs[id]\n\n req.buffer = buffer\n req.onflush = noop\n\n binding.udx_napi_stream_send(this._handle, req.handle, id, buffer)\n }\n\n async flush() {\n if ((await streamx.Writable.drained(this)) === false) return false\n if (this.destroying) return false\n\n const missing = this._wreqs.length - this._wfree.length\n if (missing === 0) return true\n\n return new Promise((resolve) => {\n this._flushes.push({ flush: this._flushing++, missing, resolve })\n })\n }\n\n toJSON() {\n return {\n id: this.id,\n connected: this.connected,\n destroying: this.destroying,\n destroyed: this.destroyed,\n remoteId: this.remoteId,\n remoteHost: this.remoteHost,\n remoteFamily: this.remoteFamily,\n remotePort: this.remotePort,\n mtu: this.mtu,\n rtt: this.rtt,\n cwnd: this.cwnd,\n inflight: this.inflight,\n socket: this.socket ? this.socket.toJSON() : null\n }\n }\n\n _read(cb) {\n cb(null)\n }\n\n _writeContinue(err) {\n if (this._onwrite === null) return\n const cb = this._onwrite\n this._onwrite = null\n cb(err)\n }\n\n _destroyContinue(err) {\n if (this._ondestroy === null) return\n const cb = this._ondestroy\n this._ondestroy = null\n cb(err)\n }\n\n _writev(buffers, cb) {\n if (!this.connected) {\n throw customError('Writing while not connected not currently supported', 'ERR_ASSERTION')\n }\n\n let drained = true\n\n if (buffers.length === 1) {\n const id = this._allocWrite(1)\n const req = this._wreqs[id]\n\n req.flush = this._flushing\n req.buffer = buffers[0]\n\n drained = binding.udx_napi_stream_write(this._handle, req.handle, id, req.buffer) !== 0\n } else {\n const id = this._allocWrite(nextBatchSize(buffers.length))\n const req = this._wreqs[id]\n\n req.flush = this._flushing\n req.buffers = buffers\n\n drained = binding.udx_napi_stream_writev(this._handle, req.handle, id, req.buffers) !== 0\n }\n\n if (drained) cb(null)\n else this._onwrite = cb\n }\n\n _final(cb) {\n const id = this._allocWrite(1)\n const req = this._wreqs[id]\n\n req.flush = this._flushes\n req.buffer = b4a.allocUnsafe(0)\n\n const drained =\n binding.udx_napi_stream_write_end(this._handle, req.handle, id, req.buffer) !== 0\n\n if (drained) cb(null)\n else this._onwrite = cb\n }\n\n _predestroy() {\n if (!this._closed) binding.udx_napi_stream_destroy(this._handle)\n this._closed = true\n this._writeContinue(null)\n }\n\n _destroy(cb) {\n if (this.connected) this._ondestroy = cb\n else cb(null)\n }\n\n _ondata(read) {\n this.push(this._consumeData(read))\n return this._buffer\n }\n\n _onend(read) {\n if (read > 0) this.push(this._consumeData(read))\n this.push(null)\n }\n\n _ondrain() {\n this._writeContinue(null)\n }\n\n _flushAck(flush) {\n for (let i = this._flushes.length - 1; i >= 0; i--) {\n const f = this._flushes[i]\n if (f.flush < flush) break\n f.missing--\n }\n\n while (this._flushes.length > 0 && this._flushes[0].missing === 0) {\n this._flushes.shift().resolve(true)\n }\n }\n\n _onack(id) {\n const req = this._wreqs[id]\n\n req.buffers = req.buffer = null\n this._wfree.push(id)\n\n if (this._flushes.length > 0) this._flushAck(req.flush)\n\n // gc the free list\n if (this._wfree.length >= 64 && this._wfree.length === this._wreqs.length) {\n this._wfree = []\n this._wreqs = []\n }\n }\n\n _onsend(id, err) {\n const req = this._sreqs[id]\n\n const onflush = req.onflush\n\n req.buffer = null\n req.onflush = null\n\n this._sfree.push(id)\n\n onflush(err >= 0)\n\n // gc the free list\n if (this._sfree.length >= 16 && this._sfree.length === this._sreqs.length) {\n this._sfree = []\n this._sreqs = []\n }\n }\n\n _onmessage(len) {\n this.emit('message', this.udx._consumeMessage(len))\n return this.udx._buffer\n }\n\n _onclose(err) {\n this._closed = true\n\n if (this.socket) {\n this.socket._removeStream(this)\n this.socket = null\n }\n\n if (this._previousSocket) {\n this._previousSocket._removeStream(this)\n this._previousSocket = null\n }\n\n // no error, we don't need to do anything\n if (!err) return this._destroyContinue(null)\n\n if (this._ondestroy === null) this.destroy(err)\n else this._destroyContinue(err)\n }\n\n _onfirewall(socket, port, host, family) {\n if (port <= 0 || port > 65535) return 1\n return this._firewall(socket, port, host, family) ? 1 : 0\n }\n\n _onremotechanged() {\n if (this._previousSocket) {\n this._previousSocket._removeStream(this)\n this._previousSocket = null\n }\n\n this._remoteChanging = null\n this.emit('remote-changed')\n }\n\n _consumeData(len) {\n const next = this._buffer.subarray(0, len)\n this._buffer = this._buffer.subarray(len)\n if (this._buffer.byteLength < MAX_PACKET) this._reallocData()\n return next\n }\n\n _reallocData() {\n this._buffer = b4a.allocUnsafe(BUFFER_SIZE)\n return this._buffer\n }\n\n _reallocMessage() {\n return this.udx._reallocMessage()\n }\n\n _allocWrite(size) {\n if (this._wfree.length === 0) {\n const handle = b4a.allocUnsafe(binding.udx_napi_stream_write_sizeof(size))\n return (\n this._wreqs.push({\n handle,\n size,\n buffers: null,\n buffer: null,\n flush: 0\n }) - 1\n )\n }\n\n const free = this._wfree.pop()\n if (size === 1) return free\n\n const next = this._wreqs[free]\n if (next.size < size) {\n next.handle = b4a.allocUnsafe(binding.udx_napi_stream_write_sizeof(size))\n next.size = size\n }\n\n return free\n }\n\n _allocSend() {\n if (this._sfree.length > 0) return this._sfree.pop()\n const handle = b4a.allocUnsafe(binding.sizeof_udx_stream_send_t)\n return this._sreqs.push({ handle, buffer: null, resolve: null, reject: null }) - 1\n }\n}\n\nfunction noop() {}\n\nfunction toBuffer(data) {\n return typeof data === 'string' ? b4a.from(data) : data\n}\n\nfunction firewallAll(socket, port, host) {\n return true\n}\n\nfunction customError(message, code) {\n const error = new Error(message)\n error.code = code\n return error\n}\n\nfunction nextBatchSize(n) {\n // try to coerce the the writevs into sameish size\n if (n === 1) return 1\n // group all < 8 to the same size, low mem overhead but save some small allocs\n if (n < 8) return 8\n if (n < 16) return 16\n if (n < 32) return 32\n if (n < 64) return 64\n return n\n}\nconst b4a = require('b4a')\nconst binding = require('../binding')\nconst ip = require('./ip')\nconst Socket = require('./socket')\nconst Stream = require('./stream')\nconst NetworkInterfaces = require('./network-interfaces')\n\nconst MAX_MESSAGE = 4096\nconst BUFFER_SIZE = 65536 + MAX_MESSAGE\n\nmodule.exports = class UDX {\n constructor() {\n this._handle = b4a.alloc(binding.sizeof_udx_napi_t)\n this._watchers = new Set()\n this._view64 = new BigUint64Array(\n this._handle.buffer,\n this._handle.byteOffset,\n this._handle.byteLength >> 3\n )\n\n this._buffer = null\n this._reallocMessage()\n\n binding.udx_napi_init(this._handle, this._buffer)\n }\n\n static isIPv4(host) {\n return ip.isIPv4(host)\n }\n\n static isIPv6(host) {\n return ip.isIPv6(host)\n }\n\n static isIP(host) {\n return ip.isIP(host)\n }\n\n get bytesTransmitted() {\n return Number(this._view64[binding.offsetof_udx_t_bytes_tx >> 3])\n }\n\n get packetsTransmitted() {\n return Number(this._view64[binding.offsetof_udx_t_packets_tx >> 3])\n }\n\n get bytesReceived() {\n return Number(this._view64[binding.offsetof_udx_t_bytes_rx >> 3])\n }\n\n get packetsReceived() {\n return Number(this._view64[binding.offsetof_udx_t_packets_rx >> 3])\n }\n\n get packetsDroppedByKernel() {\n return Number(this._view64[binding.offsetof_udx_t_packets_dropped_by_kernel >> 3])\n }\n\n _consumeMessage(len) {\n const next = this._buffer.subarray(0, len)\n this._buffer = this._buffer.subarray(len)\n if (this._buffer.byteLength < MAX_MESSAGE) this._reallocMessage()\n return next\n }\n\n _reallocMessage() {\n // TODO: move reallocation to native\n this._buffer = b4a.allocUnsafe(BUFFER_SIZE)\n return this._buffer\n }\n\n createSocket(opts) {\n return new Socket(this, opts)\n }\n\n createStream(id, opts) {\n return new Stream(this, id, opts)\n }\n\n networkInterfaces() {\n let [watcher = null] = this._watchers\n if (watcher) return watcher.interfaces\n\n watcher = new NetworkInterfaces(this)\n watcher.destroy()\n\n return watcher.interfaces\n }\n\n watchNetworkInterfaces(onchange) {\n const watcher = new NetworkInterfaces(this)\n\n this._watchers.add(watcher)\n watcher.on('close', () => {\n this._watchers.delete(watcher)\n })\n\n if (onchange) watcher.on('change', onchange)\n\n return watcher.watch()\n }\n\n async lookup(host, opts = {}) {\n const { family = 0 } = opts\n\n const req = b4a.alloc(binding.sizeof_udx_napi_lookup_t)\n const ctx = {\n req,\n resolve: null,\n reject: null\n }\n\n const promise = new Promise((resolve, reject) => {\n ctx.resolve = resolve\n ctx.reject = reject\n })\n\n binding.udx_napi_lookup(this._handle, req, host, family, ctx, onlookup)\n\n return promise\n }\n}\n\nfunction onlookup(err, host, family) {\n if (err) this.reject(err)\n else this.resolve({ host, family })\n}\n{\n \"name\": \"udx-native\",\n \"version\": \"1.20.7\",\n \"description\": \"udx is reliable, multiplexed, and congestion-controlled streams over udp\",\n \"main\": \"lib/udx.js\",\n \"files\": [\n \"lib\",\n \"prebuilds\",\n \"binding.cc\",\n \"binding.js\",\n \"CMakeLists.txt\"\n ],\n \"imports\": {\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n }\n },\n \"addon\": true,\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:node\": \"brittle-node --coverage test/*.js\",\n \"test:bare\": \"brittle-bare --coverage test/*.js\",\n \"test:all\": \"brittle test/*.js test/slow/*.js\",\n \"test:generate\": \"brittle -r test/all.js test/*.js\",\n \"bench\": \"brittle test/bench/*.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/holepunchto/udx-native.git\"\n },\n \"keywords\": [\n \"tcp\",\n \"udp\",\n \"stream\",\n \"reliable\"\n ],\n \"author\": \"Holepunch Inc.\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/udx-native/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/udx-native#readme\",\n \"engines\": {\n \"bare\": \">=1.17.4\"\n },\n \"dependencies\": {\n \"b4a\": \"^1.5.0\",\n \"bare-events\": \"^2.2.0\",\n \"require-addon\": \"^1.1.0\",\n \"streamx\": \"^2.22.0\"\n },\n \"devDependencies\": {\n \"bare-compat-napi\": \"^1.3.0\",\n \"brittle\": \"^3.1.0\",\n \"cmake-bare\": \"^1.1.10\",\n \"cmake-fetch\": \"^1.0.1\",\n \"cmake-napi\": \"^1.0.5\",\n \"is-ci\": \"^3.0.1\",\n \"lunte\": \"^1.3.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\",\n \"tiny-byte-size\": \"^1.1.0\"\n }\n}\nmodule.exports = resolve\n\nfunction parse (addr) {\n const names = addr.split(/[/\\\\]/)\n\n const r = {\n isAbsolute: false,\n names\n }\n\n // don't think this ever happens, but whatevs\n if (names.length === 0) return r\n\n if (names.length > 1 && names[0].endsWith(':')) {\n r.isAbsolute = true\n\n if (names[0].length === 2) { // windows\n r.names = names.slice(1)\n return r\n }\n\n if (names[0] === 'file:') {\n r.names = names.slice(1)\n return r\n }\n\n r.names = names.slice(3)\n return r\n }\n\n r.isAbsolute = addr.startsWith('/') || addr.startsWith('\\\\')\n\n return r\n}\n\nfunction resolve (a, b = '') {\n const ap = parse(a)\n const bp = parse(b)\n\n if (bp.isAbsolute) {\n return resolveNames([], bp.names)\n }\n\n if (!ap.isAbsolute) {\n throw new Error('One of the two paths must be absolute')\n }\n\n return resolveNames(ap.names, bp.names)\n}\n\nfunction toString (p, names) {\n for (let i = 0; i < names.length; i++) {\n if (names[i] === '') continue\n if (names[i] === '.') continue\n if (names[i] === '..') {\n if (p.length === 1) throw new Error('Path cannot be resolved, too many \\'..\\'')\n p = p.slice(0, p.lastIndexOf('/')) || '/'\n continue\n }\n p += (p.length === 1 ? names[i] : '/' + names[i])\n }\n\n return p\n}\n\nfunction resolveNames (a, b) {\n return toString(toString('/', a), b)\n}\n{\n \"name\": \"unix-path-resolve\",\n \"version\": \"1.0.2\",\n \"description\": \"Cross platform resolve that always returns a UNIX style `/` seperated path\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"brittle\": \"^2.0.1\",\n \"standard\": \"^16.0.4\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/unix-path-resolve.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/unix-path-resolve/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/unix-path-resolve\"\n}\nexports.add = add\nexports.has = has\nexports.remove = remove\nexports.swap = swap\n\nfunction add (list, item) {\n if (has(list, item)) return item\n item._index = list.length\n list.push(item)\n return item\n}\n\nfunction has (list, item) {\n return item._index < list.length && list[item._index] === item\n}\n\nfunction remove (list, item) {\n if (!has(list, item)) return null\n\n var last = list.pop()\n if (last !== item) {\n list[item._index] = last\n last._index = item._index\n }\n\n return item\n}\n\nfunction swap (list, a, b) {\n if (!has(list, a) || !has(list, b)) return\n var tmp = a._index\n a._index = b._index\n list[a._index] = a\n b._index = tmp\n list[b._index] = b\n}\n{\n \"name\": \"unordered-set\",\n \"version\": \"2.0.1\",\n \"description\": \"A couple of functions that make it easy to maintain an unordered set as an array in an efficient way\",\n \"main\": \"index.js\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"standard\": \"^6.0.4\",\n \"tape\": \"^4.4.0\"\n },\n \"scripts\": {\n \"test\": \"standard && tape test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/unordered-set.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/unordered-set/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/unordered-set\"\n}\nconst b4a = require('b4a')\n\nunslab.all = all\nunslab.is = is\n\nmodule.exports = unslab\n\nfunction unslab (buf) {\n if (buf === null || buf.buffer.byteLength === buf.byteLength) return buf\n const copy = b4a.allocUnsafeSlow(buf.byteLength)\n copy.set(buf, 0)\n return copy\n}\n\nfunction is (buf) {\n return buf.buffer.byteLength !== buf.byteLength\n}\n\nfunction all (list) {\n let size = 0\n for (let i = 0; i < list.length; i++) {\n const buf = list[i]\n size += buf === null || buf.buffer.byteLength === buf.byteLength ? 0 : buf.byteLength\n }\n\n const copy = b4a.allocUnsafeSlow(size)\n const result = new Array(list.length)\n\n let offset = 0\n for (let i = 0; i < list.length; i++) {\n let buf = list[i]\n\n if (buf !== null && buf.buffer.byteLength !== buf.byteLength) {\n copy.set(buf, offset)\n buf = copy.subarray(offset, offset += buf.byteLength)\n }\n\n result[i] = buf\n }\n\n return result\n}\n{\n \"name\": \"unslab\",\n \"version\": \"1.3.0\",\n \"description\": \"Unslab some slab'ed buffers\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"dependencies\": {\n \"b4a\": \"^1.6.6\"\n },\n \"devDependencies\": {\n \"brittle\": \"^3.5.2\",\n \"standard\": \"^17.1.0\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/unslab.git\"\n },\n \"author\": \"Holepunch\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/unslab/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/unslab\"\n}\nmodule.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\nmodule.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\nmodule.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n{\n \"name\": \"varint\",\n \"version\": \"5.0.0\",\n \"description\": \"protobuf-style varint bytes - use msb to create integer values of varying sizes\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"node test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/chrisdickinson/varint.git\"\n },\n \"keywords\": [\n \"varint\",\n \"protobuf\",\n \"encode\",\n \"decode\"\n ],\n \"author\": \"Chris Dickinson \",\n \"license\": \"MIT\",\n \"devDependencies\": {\n \"tape\": \"~2.12.3\"\n }\n}\nconst { runtime, platform, arch, version } =\n typeof Bare !== 'undefined'\n ? {\n runtime: 'bare',\n platform: global.Bare.platform,\n arch: global.Bare.arch,\n version: global.Bare.version\n }\n : typeof process !== 'undefined'\n ? {\n runtime: 'node',\n platform: global.process.platform,\n arch: global.process.arch,\n version: global.process.version\n }\n : typeof Window !== 'undefined'\n ? { runtime: 'browser', platform: 'unknown', arch: 'unknown', version: 'unknown' }\n : { runtime: 'unknown', platform: 'unknown', arch: 'unknown', version: 'unknown' }\n\nexports.runtime = runtime\nexports.version = version\nexports.platform = platform\nexports.arch = arch\nexports.isBare = runtime === 'bare'\nexports.isBareKit = exports.isBare && typeof BareKit !== 'undefined'\nexports.isPear = typeof Pear !== 'undefined'\nexports.isNode = runtime === 'node'\nexports.isBrowser = runtime === 'browser'\nexports.isWindows = platform === 'win32'\nexports.isLinux = platform === 'linux'\nexports.isMac = platform === 'darwin'\nexports.isIOS = platform === 'ios' || platform === 'ios-simulator'\nexports.isAndroid = platform === 'android'\nexports.isElectron = typeof process !== 'undefined' && !!global.process.versions?.electron\nexports.isElectronRenderer = exports.isElectron && global.process.type === 'renderer'\nexports.isElectronWorker = exports.isElectron && global.process.type === 'worker'\n{\n \"name\": \"which-runtime\",\n \"version\": \"1.4.0\",\n \"description\": \"Detect if you are in Bare or Node and which os etc\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"lint\": \"prettier --check . && lunte .\",\n \"test\": \"npm run test:node && npm run test:bare\",\n \"test:node\": \"brittle-node test.js\",\n \"test:bare\": \"brittle-bare test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/holepunchto/which-runtime.git\"\n },\n \"author\": \"Holepunch Inc.\",\n \"license\": \"Apache-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/holepunchto/which-runtime/issues\"\n },\n \"homepage\": \"https://github.com/holepunchto/which-runtime\",\n \"devDependencies\": {\n \"brittle\": \"^3.0.0\",\n \"lunte\": \"^1.4.0\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^2.0.0\"\n }\n}\nmodule.exports = class MaxCache {\n constructor({ maxSize, maxAge, createMap, ongc }) {\n this.maxSize = maxSize\n this.maxAge = maxAge\n this.ongc = ongc || null\n\n this._createMap = createMap || defaultCreateMap\n this._latest = this._createMap()\n this._oldest = this._createMap()\n this._retained = this._createMap()\n this._gced = false\n this._interval = null\n\n if (this.maxAge > 0 && this.maxAge < Infinity) {\n const tick = Math.ceil((2 / 3) * this.maxAge)\n this._interval = setInterval(this._gcAuto.bind(this), tick)\n if (this._interval.unref) this._interval.unref()\n }\n }\n\n get size() {\n return this._latest.size + this._oldest.size + this._retained.size\n }\n\n *[Symbol.iterator]() {\n for (const it of [this._latest, this._oldest, this._retained]) {\n yield* it\n }\n }\n\n *keys() {\n for (const it of [this._latest, this._oldest, this._retained]) {\n yield* it.keys()\n }\n }\n\n *values() {\n for (const it of [this._latest, this._oldest, this._retained]) {\n yield* it.values()\n }\n }\n\n destroy() {\n this.clear()\n clearInterval(this._interval)\n this._interval = null\n }\n\n clear() {\n this._gced = true\n this._latest.clear()\n this._oldest.clear()\n this._retained.clear()\n }\n\n set(k, v) {\n if (this._retained.has(k)) return this\n this._latest.set(k, v)\n this._oldest.delete(k) || this._retained.delete(k)\n if (this._latest.size >= this.maxSize) this._gc()\n return this\n }\n\n retain(k, v) {\n this._retained.set(k, v)\n this._latest.delete(k) || this._oldest.delete(k)\n return this\n }\n\n delete(k) {\n return (\n this._latest.delete(k) ||\n this._oldest.delete(k) ||\n this._retained.delete(k)\n )\n }\n\n has(k) {\n return this._latest.has(k) || this._oldest.has(k) || this._retained.has(k)\n }\n\n get(k) {\n if (this._latest.has(k)) {\n return this._latest.get(k)\n }\n\n if (this._oldest.has(k)) {\n const v = this._oldest.get(k)\n this._latest.set(k, v)\n this._oldest.delete(k)\n return v\n }\n\n if (this._retained.has(k)) {\n return this._retained.get(k)\n }\n\n return null\n }\n\n _gcAuto() {\n if (!this._gced) this._gc()\n this._gced = false\n }\n\n _gc() {\n this._gced = true\n if (this.ongc !== null && this._oldest.size > 0) this.ongc(this._oldest)\n this._oldest = this._latest\n this._latest = this._createMap()\n }\n}\n\nfunction defaultCreateMap() {\n return new Map()\n}\n{\n \"name\": \"xache\",\n \"version\": \"1.3.0\",\n \"description\": \"Yet another auto expiring, max sizable cache\",\n \"main\": \"index.js\",\n \"files\": [\n \"index.js\"\n ],\n \"devDependencies\": {\n \"brittle\": \"^3.3.2\",\n \"prettier\": \"^3.6.2\",\n \"prettier-config-holepunch\": \"^1.0.0\"\n },\n \"scripts\": {\n \"format\": \"prettier --write .\",\n \"test\": \"prettier --check . && brittle test.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/xache.git\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/xache/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/xache\"\n}\nconst b4a = require('b4a')\n\nconst ALPHABET = 'ybndrfg8ejkmcpqxot1uwisza345h769'\nconst MIN = 0x31 // 1\nconst MAX = 0x7a // z\nconst REVERSE = new Int8Array(1 + MAX - MIN)\n\nREVERSE.fill(-1)\n\nfor (let i = 0; i < ALPHABET.length; i++) {\n const v = ALPHABET.charCodeAt(i) - MIN\n REVERSE[v] = i\n}\n\nexports.encode = encode\nexports.decode = decode\nexports.ALPHABET = ALPHABET\n\nfunction decode (s, out) {\n let pb = 0\n let ps = 0\n\n const r = s.length & 7\n const q = (s.length - r) / 8\n\n if (!out) out = b4a.allocUnsafe(Math.ceil(s.length * 5 / 8))\n\n // 0 5 2 7 4 1 6 3 (+5 mod 8)\n for (let i = 0; i < q; i++) {\n const a = quintet(s, ps++)\n const b = quintet(s, ps++)\n const c = quintet(s, ps++)\n const d = quintet(s, ps++)\n const e = quintet(s, ps++)\n const f = quintet(s, ps++)\n const g = quintet(s, ps++)\n const h = quintet(s, ps++)\n\n out[pb++] = (a << 3) | (b >>> 2)\n out[pb++] = ((b & 0b11) << 6) | (c << 1) | (d >>> 4)\n out[pb++] = ((d & 0b1111) << 4) | (e >>> 1)\n out[pb++] = ((e & 0b1) << 7) | (f << 2) | (g >>> 3)\n out[pb++] = ((g & 0b111) << 5) | h\n }\n\n if (r === 0) return out.subarray(0, pb)\n\n const a = quintet(s, ps++)\n const b = quintet(s, ps++)\n\n out[pb++] = (a << 3) | (b >>> 2)\n\n if (r <= 2) return out.subarray(0, pb)\n\n const c = quintet(s, ps++)\n const d = quintet(s, ps++)\n\n out[pb++] = ((b & 0b11) << 6) | (c << 1) | (d >>> 4)\n\n if (r <= 4) return out.subarray(0, pb)\n\n const e = quintet(s, ps++)\n\n out[pb++] = ((d & 0b1111) << 4) | (e >>> 1)\n\n if (r <= 5) return out.subarray(0, pb)\n\n const f = quintet(s, ps++)\n const g = quintet(s, ps++)\n\n out[pb++] = ((e & 0b1) << 7) | (f << 2) | (g >>> 3)\n\n if (r <= 7) return out.subarray(0, pb)\n\n const h = quintet(s, ps++)\n\n out[pb++] = ((g & 0b111) << 5) | h\n\n return out.subarray(0, pb)\n}\n\nfunction encode (buf) {\n if (typeof buf === 'string') buf = b4a.from(buf)\n\n const max = buf.byteLength * 8\n\n let s = ''\n\n for (let p = 0; p < max; p += 5) {\n const i = p >>> 3\n const j = p & 7\n\n if (j <= 3) {\n s += ALPHABET[(buf[i] >>> (3 - j)) & 0b11111]\n continue\n }\n\n const of = j - 3\n const h = (buf[i] << of) & 0b11111\n const l = (i >= buf.byteLength ? 0 : buf[i + 1]) >>> (8 - of)\n\n s += ALPHABET[h | l]\n }\n\n return s\n}\n\nfunction quintet (s, i) {\n if (i > s.length) {\n return 0\n }\n\n const v = s.charCodeAt(i)\n\n if (v < MIN || v > MAX) {\n throw Error('Invalid character in base32 input: \"' + s[i] + '\" at position ' + i)\n }\n\n const bits = REVERSE[v - MIN]\n\n if (bits === -1) {\n throw Error('Invalid character in base32 input: \"' + s[i] + '\" at position ' + i)\n }\n\n return bits\n}\n{\n \"name\": \"z32\",\n \"version\": \"1.1.0\",\n \"description\": \"Encode & decode z-base32\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"b4a\": \"^1.5.3\"\n },\n \"devDependencies\": {\n \"base-x\": \"^4.0.0\",\n \"base32\": \"0.0.7\",\n \"brittle\": \"^3.1.3\",\n \"nanobench\": \"^3.0.0\",\n \"rfc4648\": \"^1.5.2\",\n \"standard\": \"^17.0.0\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mafintosh/z32.git\"\n },\n \"scripts\": {\n \"test\": \"standard && brittle test.js\",\n \"bench\": \"node benchmark.js\"\n },\n \"author\": \"Mathias Buus (@mafintosh)\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mafintosh/z32/issues\"\n },\n \"homepage\": \"https://github.com/mafintosh/z32\"\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.z = void 0;\nconst z = __importStar(require(\"./v4/classic/external.cjs\"));\nexports.z = z;\n__exportStar(require(\"./v4/classic/external.cjs\"), exports);\nexports.default = z;\nimport * as z from \"./v4/classic/external.js\";\nexport * from \"./v4/classic/external.js\";\nexport { z };\nexport default z;\n{\n \"name\": \"zod\",\n \"version\": \"4.4.3\",\n \"type\": \"module\",\n \"license\": \"MIT\",\n \"author\": \"Colin McDonnell \",\n \"description\": \"TypeScript-first schema declaration and validation library with static type inference\",\n \"homepage\": \"https://zod.dev\",\n \"llms\": \"https://zod.dev/llms.txt\",\n \"llmsFull\": \"https://zod.dev/llms-full.txt\",\n \"mcpServer\": \"https://mcp.inkeep.com/zod/mcp\",\n \"funding\": \"https://github.com/sponsors/colinhacks\",\n \"sideEffects\": false,\n \"files\": [\n \"src\",\n \"**/*.js\",\n \"**/*.mjs\",\n \"**/*.cjs\",\n \"**/*.d.ts\",\n \"**/*.d.mts\",\n \"**/*.d.cts\",\n \"**/package.json\"\n ],\n \"keywords\": [\n \"typescript\",\n \"schema\",\n \"validation\",\n \"type\",\n \"inference\"\n ],\n \"main\": \"./index.cjs\",\n \"types\": \"./index.d.cts\",\n \"module\": \"./index.js\",\n \"zshy\": {\n \"exports\": {\n \"./package.json\": \"./package.json\",\n \".\": \"./src/index.ts\",\n \"./mini\": \"./src/mini/index.ts\",\n \"./locales\": \"./src/locales/index.ts\",\n \"./v3\": \"./src/v3/index.ts\",\n \"./v4\": \"./src/v4/index.ts\",\n \"./v4-mini\": \"./src/v4-mini/index.ts\",\n \"./v4/mini\": \"./src/v4/mini/index.ts\",\n \"./v4/core\": \"./src/v4/core/index.ts\",\n \"./v4/locales\": \"./src/v4/locales/index.ts\",\n \"./v4/locales/*\": \"./src/v4/locales/*\"\n },\n \"conditions\": {\n \"@zod/source\": \"src\"\n }\n },\n \"exports\": {\n \"./package.json\": \"./package.json\",\n \".\": {\n \"@zod/source\": \"./src/index.ts\",\n \"types\": \"./index.d.cts\",\n \"import\": \"./index.js\",\n \"require\": \"./index.cjs\"\n },\n \"./mini\": {\n \"@zod/source\": \"./src/mini/index.ts\",\n \"types\": \"./mini/index.d.cts\",\n \"import\": \"./mini/index.js\",\n \"require\": \"./mini/index.cjs\"\n },\n \"./locales\": {\n \"@zod/source\": \"./src/locales/index.ts\",\n \"types\": \"./locales/index.d.cts\",\n \"import\": \"./locales/index.js\",\n \"require\": \"./locales/index.cjs\"\n },\n \"./v3\": {\n \"@zod/source\": \"./src/v3/index.ts\",\n \"types\": \"./v3/index.d.cts\",\n \"import\": \"./v3/index.js\",\n \"require\": \"./v3/index.cjs\"\n },\n \"./v4\": {\n \"@zod/source\": \"./src/v4/index.ts\",\n \"types\": \"./v4/index.d.cts\",\n \"import\": \"./v4/index.js\",\n \"require\": \"./v4/index.cjs\"\n },\n \"./v4-mini\": {\n \"@zod/source\": \"./src/v4-mini/index.ts\",\n \"types\": \"./v4-mini/index.d.cts\",\n \"import\": \"./v4-mini/index.js\",\n \"require\": \"./v4-mini/index.cjs\"\n },\n \"./v4/mini\": {\n \"@zod/source\": \"./src/v4/mini/index.ts\",\n \"types\": \"./v4/mini/index.d.cts\",\n \"import\": \"./v4/mini/index.js\",\n \"require\": \"./v4/mini/index.cjs\"\n },\n \"./v4/core\": {\n \"@zod/source\": \"./src/v4/core/index.ts\",\n \"types\": \"./v4/core/index.d.cts\",\n \"import\": \"./v4/core/index.js\",\n \"require\": \"./v4/core/index.cjs\"\n },\n \"./v4/locales\": {\n \"@zod/source\": \"./src/v4/locales/index.ts\",\n \"types\": \"./v4/locales/index.d.cts\",\n \"import\": \"./v4/locales/index.js\",\n \"require\": \"./v4/locales/index.cjs\"\n },\n \"./v4/locales/*\": {\n \"@zod/source\": \"./src/v4/locales/*\",\n \"types\": \"./v4/locales/*\",\n \"import\": \"./v4/locales/*\",\n \"require\": \"./v4/locales/*\"\n }\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/colinhacks/zod.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/colinhacks/zod/issues\"\n },\n \"support\": {\n \"backing\": {\n \"npm-funding\": true\n }\n },\n \"scripts\": {\n \"clean\": \"git clean -xdf . -e node_modules\",\n \"build\": \"zshy --project tsconfig.build.json\",\n \"postbuild\": \"tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .\",\n \"test:watch\": \"pnpm vitest\",\n \"test\": \"pnpm vitest run\",\n \"prepublishOnly\": \"tsx ../../scripts/check-versions.ts\"\n }\n}\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.slugify = exports.toUpperCase = exports.toLowerCase = exports.trim = exports.normalize = exports.overwrite = exports.mime = exports.property = exports.endsWith = exports.startsWith = exports.includes = exports.uppercase = exports.lowercase = exports.regex = exports.length = exports.minLength = exports.maxLength = exports.size = exports.minSize = exports.maxSize = exports.multipleOf = exports.nonnegative = exports.nonpositive = exports.negative = exports.positive = exports.gte = exports.gt = exports.lte = exports.lt = void 0;\nvar index_js_1 = require(\"../core/index.cjs\");\nObject.defineProperty(exports, \"lt\", { enumerable: true, get: function () { return index_js_1._lt; } });\nObject.defineProperty(exports, \"lte\", { enumerable: true, get: function () { return index_js_1._lte; } });\nObject.defineProperty(exports, \"gt\", { enumerable: true, get: function () { return index_js_1._gt; } });\nObject.defineProperty(exports, \"gte\", { enumerable: true, get: function () { return index_js_1._gte; } });\nObject.defineProperty(exports, \"positive\", { enumerable: true, get: function () { return index_js_1._positive; } });\nObject.defineProperty(exports, \"negative\", { enumerable: true, get: function () { return index_js_1._negative; } });\nObject.defineProperty(exports, \"nonpositive\", { enumerable: true, get: function () { return index_js_1._nonpositive; } });\nObject.defineProperty(exports, \"nonnegative\", { enumerable: true, get: function () { return index_js_1._nonnegative; } });\nObject.defineProperty(exports, \"multipleOf\", { enumerable: true, get: function () { return index_js_1._multipleOf; } });\nObject.defineProperty(exports, \"maxSize\", { enumerable: true, get: function () { return index_js_1._maxSize; } });\nObject.defineProperty(exports, \"minSize\", { enumerable: true, get: function () { return index_js_1._minSize; } });\nObject.defineProperty(exports, \"size\", { enumerable: true, get: function () { return index_js_1._size; } });\nObject.defineProperty(exports, \"maxLength\", { enumerable: true, get: function () { return index_js_1._maxLength; } });\nObject.defineProperty(exports, \"minLength\", { enumerable: true, get: function () { return index_js_1._minLength; } });\nObject.defineProperty(exports, \"length\", { enumerable: true, get: function () { return index_js_1._length; } });\nObject.defineProperty(exports, \"regex\", { enumerable: true, get: function () { return index_js_1._regex; } });\nObject.defineProperty(exports, \"lowercase\", { enumerable: true, get: function () { return index_js_1._lowercase; } });\nObject.defineProperty(exports, \"uppercase\", { enumerable: true, get: function () { return index_js_1._uppercase; } });\nObject.defineProperty(exports, \"includes\", { enumerable: true, get: function () { return index_js_1._includes; } });\nObject.defineProperty(exports, \"startsWith\", { enumerable: true, get: function () { return index_js_1._startsWith; } });\nObject.defineProperty(exports, \"endsWith\", { enumerable: true, get: function () { return index_js_1._endsWith; } });\nObject.defineProperty(exports, \"property\", { enumerable: true, get: function () { return index_js_1._property; } });\nObject.defineProperty(exports, \"mime\", { enumerable: true, get: function () { return index_js_1._mime; } });\nObject.defineProperty(exports, \"overwrite\", { enumerable: true, get: function () { return index_js_1._overwrite; } });\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return index_js_1._normalize; } });\nObject.defineProperty(exports, \"trim\", { enumerable: true, get: function () { return index_js_1._trim; } });\nObject.defineProperty(exports, \"toLowerCase\", { enumerable: true, get: function () { return index_js_1._toLowerCase; } });\nObject.defineProperty(exports, \"toUpperCase\", { enumerable: true, get: function () { return index_js_1._toUpperCase; } });\nObject.defineProperty(exports, \"slugify\", { enumerable: true, get: function () { return index_js_1._slugify; } });\nexport { _lt as lt, _lte as lte, _gt as gt, _gte as gte, _positive as positive, _negative as negative, _nonpositive as nonpositive, _nonnegative as nonnegative, _multipleOf as multipleOf, _maxSize as maxSize, _minSize as minSize, _size as size, _maxLength as maxLength, _minLength as minLength, _length as length, _regex as regex, _lowercase as lowercase, _uppercase as uppercase, _includes as includes, _startsWith as startsWith, _endsWith as endsWith, _property as property, _mime as mime, _overwrite as overwrite, _normalize as normalize, _trim as trim, _toLowerCase as toLowerCase, _toUpperCase as toUpperCase, _slugify as slugify, } from \"../core/index.js\";\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.string = string;\nexports.number = number;\nexports.boolean = boolean;\nexports.bigint = bigint;\nexports.date = date;\nconst core = __importStar(require(\"../core/index.cjs\"));\nconst schemas = __importStar(require(\"./schemas.cjs\"));\nfunction string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nfunction number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nfunction boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nfunction bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nfunction date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\nimport * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n\"use strict\";\n// Zod 3 compat layer\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ZodFirstPartyTypeKind = exports.config = exports.$brand = exports.ZodIssueCode = void 0;\nexports.setErrorMap = setErrorMap;\nexports.getErrorMap = getErrorMap;\nconst core = __importStar(require(\"../core/index.cjs\"));\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexports.ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nvar index_js_1 = require(\"../core/index.cjs\");\nObject.defineProperty(exports, \"$brand\", { enumerable: true, get: function () { return index_js_1.$brand; } });\nObject.defineProperty(exports, \"config\", { enumerable: true, get: function () { return index_js_1.config; } });\n/** @deprecated Use `z.config(params)` instead. */\nfunction setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nfunction getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (exports.ZodFirstPartyTypeKind = ZodFirstPartyTypeKind = {}));\n// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ZodRealError = exports.ZodError = void 0;\nconst core = __importStar(require(\"../core/index.cjs\"));\nconst index_js_1 = require(\"../core/index.cjs\");\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst initializer = (inst, issues) => {\n index_js_1.$ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexports.ZodError = core.$constructor(\"ZodError\", initializer);\nexports.ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\nimport * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.coerce = exports.iso = exports.ZodISODuration = exports.ZodISOTime = exports.ZodISODate = exports.ZodISODateTime = exports.locales = exports.fromJSONSchema = exports.toJSONSchema = exports.NEVER = exports.util = exports.TimePrecision = exports.flattenError = exports.formatError = exports.prettifyError = exports.treeifyError = exports.regexes = exports.clone = exports.$brand = exports.$input = exports.$output = exports.config = exports.registry = exports.globalRegistry = exports.core = void 0;\nexports.core = __importStar(require(\"../core/index.cjs\"));\n__exportStar(require(\"./schemas.cjs\"), exports);\n__exportStar(require(\"./checks.cjs\"), exports);\n__exportStar(require(\"./errors.cjs\"), exports);\n__exportStar(require(\"./parse.cjs\"), exports);\n__exportStar(require(\"./compat.cjs\"), exports);\n// zod-specified\nconst index_js_1 = require(\"../core/index.cjs\");\nconst en_js_1 = __importDefault(require(\"../locales/en.cjs\"));\n(0, index_js_1.config)((0, en_js_1.default)());\nvar index_js_2 = require(\"../core/index.cjs\");\nObject.defineProperty(exports, \"globalRegistry\", { enumerable: true, get: function () { return index_js_2.globalRegistry; } });\nObject.defineProperty(exports, \"registry\", { enumerable: true, get: function () { return index_js_2.registry; } });\nObject.defineProperty(exports, \"config\", { enumerable: true, get: function () { return index_js_2.config; } });\nObject.defineProperty(exports, \"$output\", { enumerable: true, get: function () { return index_js_2.$output; } });\nObject.defineProperty(exports, \"$input\", { enumerable: true, get: function () { return index_js_2.$input; } });\nObject.defineProperty(exports, \"$brand\", { enumerable: true, get: function () { return index_js_2.$brand; } });\nObject.defineProperty(exports, \"clone\", { enumerable: true, get: function () { return index_js_2.clone; } });\nObject.defineProperty(exports, \"regexes\", { enumerable: true, get: function () { return index_js_2.regexes; } });\nObject.defineProperty(exports, \"treeifyError\", { enumerable: true, get: function () { return index_js_2.treeifyError; } });\nObject.defineProperty(exports, \"prettifyError\", { enumerable: true, get: function () { return index_js_2.prettifyError; } });\nObject.defineProperty(exports, \"formatError\", { enumerable: true, get: function () { return index_js_2.formatError; } });\nObject.defineProperty(exports, \"flattenError\", { enumerable: true, get: function () { return index_js_2.flattenError; } });\nObject.defineProperty(exports, \"TimePrecision\", { enumerable: true, get: function () { return index_js_2.TimePrecision; } });\nObject.defineProperty(exports, \"util\", { enumerable: true, get: function () { return index_js_2.util; } });\nObject.defineProperty(exports, \"NEVER\", { enumerable: true, get: function () { return index_js_2.NEVER; } });\nvar json_schema_processors_js_1 = require(\"../core/json-schema-processors.cjs\");\nObject.defineProperty(exports, \"toJSONSchema\", { enumerable: true, get: function () { return json_schema_processors_js_1.toJSONSchema; } });\nvar from_json_schema_js_1 = require(\"./from-json-schema.cjs\");\nObject.defineProperty(exports, \"fromJSONSchema\", { enumerable: true, get: function () { return from_json_schema_js_1.fromJSONSchema; } });\nexports.locales = __importStar(require(\"../locales/index.cjs\"));\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nvar iso_js_1 = require(\"./iso.cjs\");\nObject.defineProperty(exports, \"ZodISODateTime\", { enumerable: true, get: function () { return iso_js_1.ZodISODateTime; } });\nObject.defineProperty(exports, \"ZodISODate\", { enumerable: true, get: function () { return iso_js_1.ZodISODate; } });\nObject.defineProperty(exports, \"ZodISOTime\", { enumerable: true, get: function () { return iso_js_1.ZodISOTime; } });\nObject.defineProperty(exports, \"ZodISODuration\", { enumerable: true, get: function () { return iso_js_1.ZodISODuration; } });\nexports.iso = __importStar(require(\"./iso.cjs\"));\nexports.coerce = __importStar(require(\"./coerce.cjs\"));\nexport * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromJSONSchema = fromJSONSchema;\nconst registries_js_1 = require(\"../core/registries.cjs\");\nconst _checks = __importStar(require(\"./checks.cjs\"));\nconst _iso = __importStar(require(\"./iso.cjs\"));\nconst _schemas = __importStar(require(\"./schemas.cjs\"));\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas,\n ..._checks,\n iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = /*@__PURE__*/ new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Apply `default` so it wraps the fully-composed schema. This ensures\n // `parse(undefined) -> default` works regardless of which branch of\n // `convertBaseSchema` produced the inner schema (enum/const/not/typed/etc.).\n if (schema.default !== undefined) {\n baseSchema = baseSchema.default(schema.default);\n }\n // Collect non-description annotation metadata into the user-supplied\n // registry. Description is handled separately below via `.describe()` to\n // preserve the contract that `schema.description` reads from globalRegistry.\n const extraMeta = {};\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n // Apply description last. `.describe()` clones the schema and sets\n // `_zod.parent` on the clone, so registry lookups on the returned reference\n // still resolve `extraMeta` via parent inheritance.\n if (schema.description) {\n baseSchema = baseSchema.describe(schema.description);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nfunction fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Normalize input via a JSON round-trip. This guarantees the converter\n // walks a plain, finite, JSON-valid object graph: cyclic inputs fail here,\n // getter/Proxy-based properties are materialized into static values, and\n // class instances collapse to plain objects.\n let normalized;\n try {\n normalized = JSON.parse(JSON.stringify(schema));\n }\n catch {\n throw new Error(\"fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas\");\n }\n const version = detectVersion(normalized, params?.defaultTarget);\n const defs = (normalized.$defs || normalized.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: normalized,\n registry: params?.registry ?? registries_js_1.globalRegistry,\n };\n return convertSchema(normalized, ctx);\n}\nimport { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas,\n ..._checks,\n iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = /*@__PURE__*/ new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Apply `default` so it wraps the fully-composed schema. This ensures\n // `parse(undefined) -> default` works regardless of which branch of\n // `convertBaseSchema` produced the inner schema (enum/const/not/typed/etc.).\n if (schema.default !== undefined) {\n baseSchema = baseSchema.default(schema.default);\n }\n // Collect non-description annotation metadata into the user-supplied\n // registry. Description is handled separately below via `.describe()` to\n // preserve the contract that `schema.description` reads from globalRegistry.\n const extraMeta = {};\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n // Apply description last. `.describe()` clones the schema and sets\n // `_zod.parent` on the clone, so registry lookups on the returned reference\n // still resolve `extraMeta` via parent inheritance.\n if (schema.description) {\n baseSchema = baseSchema.describe(schema.description);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Normalize input via a JSON round-trip. This guarantees the converter\n // walks a plain, finite, JSON-valid object graph: cyclic inputs fail here,\n // getter/Proxy-based properties are materialized into static values, and\n // class instances collapse to plain objects.\n let normalized;\n try {\n normalized = JSON.parse(JSON.stringify(schema));\n }\n catch {\n throw new Error(\"fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas\");\n }\n const version = detectVersion(normalized, params?.defaultTarget);\n const defs = (normalized.$defs || normalized.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: normalized,\n registry: params?.registry ?? globalRegistry,\n };\n return convertSchema(normalized, ctx);\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ZodISODuration = exports.ZodISOTime = exports.ZodISODate = exports.ZodISODateTime = void 0;\nexports.datetime = datetime;\nexports.date = date;\nexports.time = time;\nexports.duration = duration;\nconst core = __importStar(require(\"../core/index.cjs\"));\nconst schemas = __importStar(require(\"./schemas.cjs\"));\nexports.ZodISODateTime = core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nfunction datetime(params) {\n return core._isoDateTime(exports.ZodISODateTime, params);\n}\nexports.ZodISODate = core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nfunction date(params) {\n return core._isoDate(exports.ZodISODate, params);\n}\nexports.ZodISOTime = core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nfunction time(params) {\n return core._isoTime(exports.ZodISOTime, params);\n}\nexports.ZodISODuration = core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nfunction duration(params) {\n return core._isoDuration(exports.ZodISODuration, params);\n}\nimport * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n{ \n \"type\": \"module\",\n \"main\": \"./index.cjs\",\n \"module\": \"./index.js\",\n \"types\": \"./index.d.cts\",\n \"sideEffects\": false\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.safeDecodeAsync = exports.safeEncodeAsync = exports.safeDecode = exports.safeEncode = exports.decodeAsync = exports.encodeAsync = exports.decode = exports.encode = exports.safeParseAsync = exports.safeParse = exports.parseAsync = exports.parse = void 0;\nconst core = __importStar(require(\"../core/index.cjs\"));\nconst errors_js_1 = require(\"./errors.cjs\");\nexports.parse = core._parse(errors_js_1.ZodRealError);\nexports.parseAsync = core._parseAsync(errors_js_1.ZodRealError);\nexports.safeParse = core._safeParse(errors_js_1.ZodRealError);\nexports.safeParseAsync = core._safeParseAsync(errors_js_1.ZodRealError);\n// Codec functions\nexports.encode = core._encode(errors_js_1.ZodRealError);\nexports.decode = core._decode(errors_js_1.ZodRealError);\nexports.encodeAsync = core._encodeAsync(errors_js_1.ZodRealError);\nexports.decodeAsync = core._decodeAsync(errors_js_1.ZodRealError);\nexports.safeEncode = core._safeEncode(errors_js_1.ZodRealError);\nexports.safeDecode = core._safeDecode(errors_js_1.ZodRealError);\nexports.safeEncodeAsync = core._safeEncodeAsync(errors_js_1.ZodRealError);\nexports.safeDecodeAsync = core._safeDecodeAsync(errors_js_1.ZodRealError);\nimport * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ZodLiteral = exports.ZodEnum = exports.ZodSet = exports.ZodMap = exports.ZodRecord = exports.ZodTuple = exports.ZodIntersection = exports.ZodDiscriminatedUnion = exports.ZodXor = exports.ZodUnion = exports.ZodObject = exports.ZodArray = exports.ZodDate = exports.ZodVoid = exports.ZodNever = exports.ZodUnknown = exports.ZodAny = exports.ZodNull = exports.ZodUndefined = exports.ZodSymbol = exports.ZodBigIntFormat = exports.ZodBigInt = exports.ZodBoolean = exports.ZodNumberFormat = exports.ZodNumber = exports.ZodCustomStringFormat = exports.ZodJWT = exports.ZodE164 = exports.ZodBase64URL = exports.ZodBase64 = exports.ZodCIDRv6 = exports.ZodCIDRv4 = exports.ZodIPv6 = exports.ZodMAC = exports.ZodIPv4 = exports.ZodKSUID = exports.ZodXID = exports.ZodULID = exports.ZodCUID2 = exports.ZodCUID = exports.ZodNanoID = exports.ZodEmoji = exports.ZodURL = exports.ZodUUID = exports.ZodGUID = exports.ZodEmail = exports.ZodStringFormat = exports.ZodString = exports._ZodString = exports.ZodType = void 0;\nexports.stringbool = exports.meta = exports.describe = exports.ZodCustom = exports.ZodFunction = exports.ZodPromise = exports.ZodLazy = exports.ZodTemplateLiteral = exports.ZodReadonly = exports.ZodPreprocess = exports.ZodCodec = exports.ZodPipe = exports.ZodNaN = exports.ZodCatch = exports.ZodSuccess = exports.ZodNonOptional = exports.ZodPrefault = exports.ZodDefault = exports.ZodNullable = exports.ZodExactOptional = exports.ZodOptional = exports.ZodTransform = exports.ZodFile = void 0;\nexports.string = string;\nexports.email = email;\nexports.guid = guid;\nexports.uuid = uuid;\nexports.uuidv4 = uuidv4;\nexports.uuidv6 = uuidv6;\nexports.uuidv7 = uuidv7;\nexports.url = url;\nexports.httpUrl = httpUrl;\nexports.emoji = emoji;\nexports.nanoid = nanoid;\nexports.cuid = cuid;\nexports.cuid2 = cuid2;\nexports.ulid = ulid;\nexports.xid = xid;\nexports.ksuid = ksuid;\nexports.ipv4 = ipv4;\nexports.mac = mac;\nexports.ipv6 = ipv6;\nexports.cidrv4 = cidrv4;\nexports.cidrv6 = cidrv6;\nexports.base64 = base64;\nexports.base64url = base64url;\nexports.e164 = e164;\nexports.jwt = jwt;\nexports.stringFormat = stringFormat;\nexports.hostname = hostname;\nexports.hex = hex;\nexports.hash = hash;\nexports.number = number;\nexports.int = int;\nexports.float32 = float32;\nexports.float64 = float64;\nexports.int32 = int32;\nexports.uint32 = uint32;\nexports.boolean = boolean;\nexports.bigint = bigint;\nexports.int64 = int64;\nexports.uint64 = uint64;\nexports.symbol = symbol;\nexports.undefined = _undefined;\nexports.null = _null;\nexports.any = any;\nexports.unknown = unknown;\nexports.never = never;\nexports.void = _void;\nexports.date = date;\nexports.array = array;\nexports.keyof = keyof;\nexports.object = object;\nexports.strictObject = strictObject;\nexports.looseObject = looseObject;\nexports.union = union;\nexports.xor = xor;\nexports.discriminatedUnion = discriminatedUnion;\nexports.intersection = intersection;\nexports.tuple = tuple;\nexports.record = record;\nexports.partialRecord = partialRecord;\nexports.looseRecord = looseRecord;\nexports.map = map;\nexports.set = set;\nexports.enum = _enum;\nexports.nativeEnum = nativeEnum;\nexports.literal = literal;\nexports.file = file;\nexports.transform = transform;\nexports.optional = optional;\nexports.exactOptional = exactOptional;\nexports.nullable = nullable;\nexports.nullish = nullish;\nexports._default = _default;\nexports.prefault = prefault;\nexports.nonoptional = nonoptional;\nexports.success = success;\nexports.catch = _catch;\nexports.nan = nan;\nexports.pipe = pipe;\nexports.codec = codec;\nexports.invertCodec = invertCodec;\nexports.readonly = readonly;\nexports.templateLiteral = templateLiteral;\nexports.lazy = lazy;\nexports.promise = promise;\nexports._function = _function;\nexports.function = _function;\nexports._function = _function;\nexports.function = _function;\nexports.check = check;\nexports.custom = custom;\nexports.refine = refine;\nexports.superRefine = superRefine;\nexports.instanceof = _instanceof;\nexports.json = json;\nexports.preprocess = preprocess;\nconst core = __importStar(require(\"../core/index.cjs\"));\nconst index_js_1 = require(\"../core/index.cjs\");\nconst processors = __importStar(require(\"../core/json-schema-processors.cjs\"));\nconst to_json_schema_js_1 = require(\"../core/to-json-schema.cjs\");\nconst checks = __importStar(require(\"./checks.cjs\"));\nconst iso = __importStar(require(\"./iso.cjs\"));\nconst parse = __importStar(require(\"./parse.cjs\"));\n// Lazy-bind builder methods.\n//\n// Builder methods (`.optional`, `.array`, `.refine`, ...) live as\n// non-enumerable getters on each concrete schema constructor's\n// prototype. On first access from an instance the getter allocates\n// `fn.bind(this)` and caches it as an own property on that instance,\n// so detached usage (`const m = schema.optional; m()`) still works\n// and the per-instance allocation only happens for methods actually\n// touched.\n//\n// One install per (prototype, group), memoized by `_installedGroups`.\nconst _installedGroups = /* @__PURE__ */ new WeakMap();\nfunction _installLazyMethods(inst, group, methods) {\n const proto = Object.getPrototypeOf(inst);\n let installed = _installedGroups.get(proto);\n if (!installed) {\n installed = new Set();\n _installedGroups.set(proto, installed);\n }\n if (installed.has(group))\n return;\n installed.add(group);\n for (const key in methods) {\n const fn = methods[key];\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: false,\n get() {\n const bound = fn.bind(this);\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: bound,\n });\n return bound;\n },\n set(v) {\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: v,\n });\n },\n });\n }\n}\nexports.ZodType = core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: (0, to_json_schema_js_1.createStandardJSONSchemaMethod)(inst, \"input\"),\n output: (0, to_json_schema_js_1.createStandardJSONSchemaMethod)(inst, \"output\"),\n },\n });\n inst.toJSONSchema = (0, to_json_schema_js_1.createToJSONSchemaMethod)(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // Parse-family is intentionally kept as per-instance closures: these are\n // the hot path AND the most-detached methods (`arr.map(schema.parse)`,\n // `const { parse } = schema`, etc.). Eager closures here mean callers pay\n // ~12 closure allocations per schema but get monomorphic call sites and\n // detached usage that \"just works\".\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // All builder methods are placed on the internal prototype as lazy-bind\n // getters. On first access per-instance, a bound thunk is allocated and\n // cached as an own property; subsequent accesses skip the getter. This\n // means: no per-instance allocation for unused methods, full\n // detachability preserved (`const m = schema.optional; m()` works), and\n // shared underlying function references across all instances.\n _installLazyMethods(inst, \"ZodType\", {\n check(...chks) {\n const def = this.def;\n return this.clone(index_js_1.util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...chks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), { parent: true });\n },\n with(...chks) {\n return this.check(...chks);\n },\n clone(def, params) {\n return core.clone(this, def, params);\n },\n brand() {\n return this;\n },\n register(reg, meta) {\n reg.add(this, meta);\n return this;\n },\n refine(check, params) {\n return this.check(refine(check, params));\n },\n superRefine(refinement, params) {\n return this.check(superRefine(refinement, params));\n },\n overwrite(fn) {\n return this.check(checks.overwrite(fn));\n },\n optional() {\n return optional(this);\n },\n exactOptional() {\n return exactOptional(this);\n },\n nullable() {\n return nullable(this);\n },\n nullish() {\n return optional(nullable(this));\n },\n nonoptional(params) {\n return nonoptional(this, params);\n },\n array() {\n return array(this);\n },\n or(arg) {\n return union([this, arg]);\n },\n and(arg) {\n return intersection(this, arg);\n },\n transform(tx) {\n return pipe(this, transform(tx));\n },\n default(d) {\n return _default(this, d);\n },\n prefault(d) {\n return prefault(this, d);\n },\n catch(params) {\n return _catch(this, params);\n },\n pipe(target) {\n return pipe(this, target);\n },\n readonly() {\n return readonly(this);\n },\n describe(description) {\n const cl = this.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n },\n meta(...args) {\n // overloaded: meta() returns the registered metadata, meta(data)\n // returns a clone with `data` registered. The mapped type picks\n // up the second overload, so we accept variadic any-args and\n // return `any` to satisfy both at runtime.\n if (args.length === 0)\n return core.globalRegistry.get(this);\n const cl = this.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n },\n isOptional() {\n return this.safeParse(undefined).success;\n },\n isNullable() {\n return this.safeParse(null).success;\n },\n apply(fn) {\n return fn(this);\n },\n });\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n return inst;\n});\n/** @internal */\nexports._ZodString = core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n _installLazyMethods(inst, \"_ZodString\", {\n regex(...args) {\n return this.check(checks.regex(...args));\n },\n includes(...args) {\n return this.check(checks.includes(...args));\n },\n startsWith(...args) {\n return this.check(checks.startsWith(...args));\n },\n endsWith(...args) {\n return this.check(checks.endsWith(...args));\n },\n min(...args) {\n return this.check(checks.minLength(...args));\n },\n max(...args) {\n return this.check(checks.maxLength(...args));\n },\n length(...args) {\n return this.check(checks.length(...args));\n },\n nonempty(...args) {\n return this.check(checks.minLength(1, ...args));\n },\n lowercase(params) {\n return this.check(checks.lowercase(params));\n },\n uppercase(params) {\n return this.check(checks.uppercase(params));\n },\n trim() {\n return this.check(checks.trim());\n },\n normalize(...args) {\n return this.check(checks.normalize(...args));\n },\n toLowerCase() {\n return this.check(checks.toLowerCase());\n },\n toUpperCase() {\n return this.check(checks.toUpperCase());\n },\n slugify() {\n return this.check(checks.slugify());\n },\n });\n});\nexports.ZodString = core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n exports._ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(exports.ZodEmail, params));\n inst.url = (params) => inst.check(core._url(exports.ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(exports.ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(exports.ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(exports.ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(exports.ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(exports.ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(exports.ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(exports.ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(exports.ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(exports.ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(exports.ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(exports.ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(exports.ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(exports.ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(exports.ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(exports.ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(exports.ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(exports.ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(exports.ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(exports.ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(exports.ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(exports.ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nfunction string(params) {\n return core._string(exports.ZodString, params);\n}\nexports.ZodStringFormat = core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n exports._ZodString.init(inst, def);\n});\nexports.ZodEmail = core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction email(params) {\n return core._email(exports.ZodEmail, params);\n}\nexports.ZodGUID = core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction guid(params) {\n return core._guid(exports.ZodGUID, params);\n}\nexports.ZodUUID = core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction uuid(params) {\n return core._uuid(exports.ZodUUID, params);\n}\nfunction uuidv4(params) {\n return core._uuidv4(exports.ZodUUID, params);\n}\n// ZodUUIDv6\nfunction uuidv6(params) {\n return core._uuidv6(exports.ZodUUID, params);\n}\n// ZodUUIDv7\nfunction uuidv7(params) {\n return core._uuidv7(exports.ZodUUID, params);\n}\nexports.ZodURL = core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction url(params) {\n return core._url(exports.ZodURL, params);\n}\nfunction httpUrl(params) {\n return core._url(exports.ZodURL, {\n protocol: core.regexes.httpProtocol,\n hostname: core.regexes.domain,\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodEmoji = core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction emoji(params) {\n return core._emoji(exports.ZodEmoji, params);\n}\nexports.ZodNanoID = core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction nanoid(params) {\n return core._nanoid(exports.ZodNanoID, params);\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexports.ZodCUID = core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\n/**\n * Validates a CUID v1 string.\n *\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2 | `z.cuid2()`} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nfunction cuid(params) {\n return core._cuid(exports.ZodCUID, params);\n}\nexports.ZodCUID2 = core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction cuid2(params) {\n return core._cuid2(exports.ZodCUID2, params);\n}\nexports.ZodULID = core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction ulid(params) {\n return core._ulid(exports.ZodULID, params);\n}\nexports.ZodXID = core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction xid(params) {\n return core._xid(exports.ZodXID, params);\n}\nexports.ZodKSUID = core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction ksuid(params) {\n return core._ksuid(exports.ZodKSUID, params);\n}\nexports.ZodIPv4 = core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction ipv4(params) {\n return core._ipv4(exports.ZodIPv4, params);\n}\nexports.ZodMAC = core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction mac(params) {\n return core._mac(exports.ZodMAC, params);\n}\nexports.ZodIPv6 = core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction ipv6(params) {\n return core._ipv6(exports.ZodIPv6, params);\n}\nexports.ZodCIDRv4 = core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction cidrv4(params) {\n return core._cidrv4(exports.ZodCIDRv4, params);\n}\nexports.ZodCIDRv6 = core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction cidrv6(params) {\n return core._cidrv6(exports.ZodCIDRv6, params);\n}\nexports.ZodBase64 = core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction base64(params) {\n return core._base64(exports.ZodBase64, params);\n}\nexports.ZodBase64URL = core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction base64url(params) {\n return core._base64url(exports.ZodBase64URL, params);\n}\nexports.ZodE164 = core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction e164(params) {\n return core._e164(exports.ZodE164, params);\n}\nexports.ZodJWT = core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction jwt(params) {\n return core._jwt(exports.ZodJWT, params);\n}\nexports.ZodCustomStringFormat = core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n exports.ZodStringFormat.init(inst, def);\n});\nfunction stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(exports.ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nfunction hostname(_params) {\n return core._stringFormat(exports.ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nfunction hex(_params) {\n return core._stringFormat(exports.ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nfunction hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(exports.ZodCustomStringFormat, format, regex, params);\n}\nexports.ZodNumber = core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n _installLazyMethods(inst, \"ZodNumber\", {\n gt(value, params) {\n return this.check(checks.gt(value, params));\n },\n gte(value, params) {\n return this.check(checks.gte(value, params));\n },\n min(value, params) {\n return this.check(checks.gte(value, params));\n },\n lt(value, params) {\n return this.check(checks.lt(value, params));\n },\n lte(value, params) {\n return this.check(checks.lte(value, params));\n },\n max(value, params) {\n return this.check(checks.lte(value, params));\n },\n int(params) {\n return this.check(int(params));\n },\n safe(params) {\n return this.check(int(params));\n },\n positive(params) {\n return this.check(checks.gt(0, params));\n },\n nonnegative(params) {\n return this.check(checks.gte(0, params));\n },\n negative(params) {\n return this.check(checks.lt(0, params));\n },\n nonpositive(params) {\n return this.check(checks.lte(0, params));\n },\n multipleOf(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n step(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n finite() {\n return this;\n },\n });\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nfunction number(params) {\n return core._number(exports.ZodNumber, params);\n}\nexports.ZodNumberFormat = core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n exports.ZodNumber.init(inst, def);\n});\nfunction int(params) {\n return core._int(exports.ZodNumberFormat, params);\n}\nfunction float32(params) {\n return core._float32(exports.ZodNumberFormat, params);\n}\nfunction float64(params) {\n return core._float64(exports.ZodNumberFormat, params);\n}\nfunction int32(params) {\n return core._int32(exports.ZodNumberFormat, params);\n}\nfunction uint32(params) {\n return core._uint32(exports.ZodNumberFormat, params);\n}\nexports.ZodBoolean = core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nfunction boolean(params) {\n return core._boolean(exports.ZodBoolean, params);\n}\nexports.ZodBigInt = core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nfunction bigint(params) {\n return core._bigint(exports.ZodBigInt, params);\n}\nexports.ZodBigIntFormat = core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n exports.ZodBigInt.init(inst, def);\n});\n// int64\nfunction int64(params) {\n return core._int64(exports.ZodBigIntFormat, params);\n}\n// uint64\nfunction uint64(params) {\n return core._uint64(exports.ZodBigIntFormat, params);\n}\nexports.ZodSymbol = core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nfunction symbol(params) {\n return core._symbol(exports.ZodSymbol, params);\n}\nexports.ZodUndefined = core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(exports.ZodUndefined, params);\n}\nexports.ZodNull = core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(exports.ZodNull, params);\n}\nexports.ZodAny = core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nfunction any() {\n return core._any(exports.ZodAny);\n}\nexports.ZodUnknown = core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nfunction unknown() {\n return core._unknown(exports.ZodUnknown);\n}\nexports.ZodNever = core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nfunction never(params) {\n return core._never(exports.ZodNever, params);\n}\nexports.ZodVoid = core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(exports.ZodVoid, params);\n}\nexports.ZodDate = core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nfunction date(params) {\n return core._date(exports.ZodDate, params);\n}\nexports.ZodArray = core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n _installLazyMethods(inst, \"ZodArray\", {\n min(n, params) {\n return this.check(checks.minLength(n, params));\n },\n nonempty(params) {\n return this.check(checks.minLength(1, params));\n },\n max(n, params) {\n return this.check(checks.maxLength(n, params));\n },\n length(n, params) {\n return this.check(checks.length(n, params));\n },\n unwrap() {\n return this.element;\n },\n });\n});\nfunction array(element, params) {\n return core._array(exports.ZodArray, element, params);\n}\n// .keyof\nfunction keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexports.ZodObject = core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n index_js_1.util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n _installLazyMethods(inst, \"ZodObject\", {\n keyof() {\n return _enum(Object.keys(this._zod.def.shape));\n },\n catchall(catchall) {\n return this.clone({ ...this._zod.def, catchall: catchall });\n },\n passthrough() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n loose() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n strict() {\n return this.clone({ ...this._zod.def, catchall: never() });\n },\n strip() {\n return this.clone({ ...this._zod.def, catchall: undefined });\n },\n extend(incoming) {\n return index_js_1.util.extend(this, incoming);\n },\n safeExtend(incoming) {\n return index_js_1.util.safeExtend(this, incoming);\n },\n merge(other) {\n return index_js_1.util.merge(this, other);\n },\n pick(mask) {\n return index_js_1.util.pick(this, mask);\n },\n omit(mask) {\n return index_js_1.util.omit(this, mask);\n },\n partial(...args) {\n return index_js_1.util.partial(exports.ZodOptional, this, args[0]);\n },\n required(...args) {\n return index_js_1.util.required(exports.ZodNonOptional, this, args[0]);\n },\n });\n});\nfunction object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...index_js_1.util.normalizeParams(params),\n };\n return new exports.ZodObject(def);\n}\n// strictObject\nfunction strictObject(shape, params) {\n return new exports.ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...index_js_1.util.normalizeParams(params),\n });\n}\n// looseObject\nfunction looseObject(shape, params) {\n return new exports.ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodUnion = core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nfunction union(options, params) {\n return new exports.ZodUnion({\n type: \"union\",\n options: options,\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodXor = core.$constructor(\"ZodXor\", (inst, def) => {\n exports.ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nfunction xor(options, params) {\n return new exports.ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodDiscriminatedUnion = core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n exports.ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nfunction discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new exports.ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodIntersection = core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nfunction intersection(left, right) {\n return new exports.ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexports.ZodTuple = core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nfunction tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new exports.ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodRecord = core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nfunction record(keyType, valueType, params) {\n // v3-compat: z.record(valueType, params?) — defaults keyType to z.string()\n if (!valueType || !valueType._zod) {\n return new exports.ZodRecord({\n type: \"record\",\n keyType: string(),\n valueType: keyType,\n ...index_js_1.util.normalizeParams(valueType),\n });\n }\n return new exports.ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...index_js_1.util.normalizeParams(params),\n });\n}\n// type alksjf = core.output;\nfunction partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new exports.ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...index_js_1.util.normalizeParams(params),\n });\n}\nfunction looseRecord(keyType, valueType, params) {\n return new exports.ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodMap = core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nfunction map(keyType, valueType, params) {\n return new exports.ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodSet = core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nfunction set(valueType, params) {\n return new exports.ZodSet({\n type: \"set\",\n valueType: valueType,\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodEnum = core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new exports.ZodEnum({\n ...def,\n checks: [],\n ...index_js_1.util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new exports.ZodEnum({\n ...def,\n checks: [],\n ...index_js_1.util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new exports.ZodEnum({\n type: \"enum\",\n entries,\n ...index_js_1.util.normalizeParams(params),\n });\n}\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nfunction nativeEnum(entries, params) {\n return new exports.ZodEnum({\n type: \"enum\",\n entries,\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodLiteral = core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nfunction literal(value, params) {\n return new exports.ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodFile = core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nfunction file(params) {\n return core._file(exports.ZodFile, params);\n}\nexports.ZodTransform = core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(index_js_1.util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(index_js_1.util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n payload.fallback = true;\n return payload;\n });\n }\n payload.value = output;\n payload.fallback = true;\n return payload;\n };\n});\nfunction transform(fn) {\n return new exports.ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexports.ZodOptional = core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction optional(innerType) {\n return new exports.ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexports.ZodExactOptional = core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction exactOptional(innerType) {\n return new exports.ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexports.ZodNullable = core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction nullable(innerType) {\n return new exports.ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nfunction nullish(innerType) {\n return optional(nullable(innerType));\n}\nexports.ZodDefault = core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nfunction _default(innerType, defaultValue) {\n return new exports.ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : index_js_1.util.shallowClone(defaultValue);\n },\n });\n}\nexports.ZodPrefault = core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction prefault(innerType, defaultValue) {\n return new exports.ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : index_js_1.util.shallowClone(defaultValue);\n },\n });\n}\nexports.ZodNonOptional = core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction nonoptional(innerType, params) {\n return new exports.ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodSuccess = core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction success(innerType) {\n return new exports.ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexports.ZodCatch = core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new exports.ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexports.ZodNaN = core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nfunction nan(params) {\n return core._nan(exports.ZodNaN, params);\n}\nexports.ZodPipe = core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nfunction pipe(in_, out) {\n return new exports.ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexports.ZodCodec = core.$constructor(\"ZodCodec\", (inst, def) => {\n exports.ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nfunction codec(in_, out, params) {\n return new exports.ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nfunction invertCodec(codec) {\n const def = codec._zod.def;\n return new exports.ZodCodec({\n type: \"pipe\",\n in: def.out,\n out: def.in,\n transform: def.reverseTransform,\n reverseTransform: def.transform,\n });\n}\nexports.ZodPreprocess = core.$constructor(\"ZodPreprocess\", (inst, def) => {\n exports.ZodPipe.init(inst, def);\n core.$ZodPreprocess.init(inst, def);\n});\nexports.ZodReadonly = core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction readonly(innerType) {\n return new exports.ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexports.ZodTemplateLiteral = core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nfunction templateLiteral(parts, params) {\n return new exports.ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...index_js_1.util.normalizeParams(params),\n });\n}\nexports.ZodLazy = core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nfunction lazy(getter) {\n return new exports.ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexports.ZodPromise = core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction promise(innerType) {\n return new exports.ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexports.ZodFunction = core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nfunction _function(params) {\n return new exports.ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexports.ZodCustom = core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n exports.ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nfunction check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nfunction custom(fn, _params) {\n return core._custom(exports.ZodCustom, fn ?? (() => true), _params);\n}\nfunction refine(fn, _params = {}) {\n return core._refine(exports.ZodCustom, fn, _params);\n}\n// superRefine\nfunction superRefine(fn, params) {\n return core._superRefine(fn, params);\n}\n// Re-export describe and meta from core\nexports.describe = core.describe;\nexports.meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new exports.ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...index_js_1.util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\n// stringbool\nconst stringbool = (...args) => core._stringbool({\n Codec: exports.ZodCodec,\n Boolean: exports.ZodBoolean,\n String: exports.ZodString,\n}, ...args);\nexports.stringbool = stringbool;\nfunction json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\nfunction preprocess(fn, schema) {\n return new exports.ZodPreprocess({\n type: \"pipe\",\n in: transform(fn),\n out: schema,\n });\n}\nimport * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\n// Lazy-bind builder methods.\n//\n// Builder methods (`.optional`, `.array`, `.refine`, ...) live as\n// non-enumerable getters on each concrete schema constructor's\n// prototype. On first access from an instance the getter allocates\n// `fn.bind(this)` and caches it as an own property on that instance,\n// so detached usage (`const m = schema.optional; m()`) still works\n// and the per-instance allocation only happens for methods actually\n// touched.\n//\n// One install per (prototype, group), memoized by `_installedGroups`.\nconst _installedGroups = /* @__PURE__ */ new WeakMap();\nfunction _installLazyMethods(inst, group, methods) {\n const proto = Object.getPrototypeOf(inst);\n let installed = _installedGroups.get(proto);\n if (!installed) {\n installed = new Set();\n _installedGroups.set(proto, installed);\n }\n if (installed.has(group))\n return;\n installed.add(group);\n for (const key in methods) {\n const fn = methods[key];\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: false,\n get() {\n const bound = fn.bind(this);\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: bound,\n });\n return bound;\n },\n set(v) {\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: v,\n });\n },\n });\n }\n}\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // Parse-family is intentionally kept as per-instance closures: these are\n // the hot path AND the most-detached methods (`arr.map(schema.parse)`,\n // `const { parse } = schema`, etc.). Eager closures here mean callers pay\n // ~12 closure allocations per schema but get monomorphic call sites and\n // detached usage that \"just works\".\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // All builder methods are placed on the internal prototype as lazy-bind\n // getters. On first access per-instance, a bound thunk is allocated and\n // cached as an own property; subsequent accesses skip the getter. This\n // means: no per-instance allocation for unused methods, full\n // detachability preserved (`const m = schema.optional; m()` works), and\n // shared underlying function references across all instances.\n _installLazyMethods(inst, \"ZodType\", {\n check(...chks) {\n const def = this.def;\n return this.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...chks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), { parent: true });\n },\n with(...chks) {\n return this.check(...chks);\n },\n clone(def, params) {\n return core.clone(this, def, params);\n },\n brand() {\n return this;\n },\n register(reg, meta) {\n reg.add(this, meta);\n return this;\n },\n refine(check, params) {\n return this.check(refine(check, params));\n },\n superRefine(refinement, params) {\n return this.check(superRefine(refinement, params));\n },\n overwrite(fn) {\n return this.check(checks.overwrite(fn));\n },\n optional() {\n return optional(this);\n },\n exactOptional() {\n return exactOptional(this);\n },\n nullable() {\n return nullable(this);\n },\n nullish() {\n return optional(nullable(this));\n },\n nonoptional(params) {\n return nonoptional(this, params);\n },\n array() {\n return array(this);\n },\n or(arg) {\n return union([this, arg]);\n },\n and(arg) {\n return intersection(this, arg);\n },\n transform(tx) {\n return pipe(this, transform(tx));\n },\n default(d) {\n return _default(this, d);\n },\n prefault(d) {\n return prefault(this, d);\n },\n catch(params) {\n return _catch(this, params);\n },\n pipe(target) {\n return pipe(this, target);\n },\n readonly() {\n return readonly(this);\n },\n describe(description) {\n const cl = this.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n },\n meta(...args) {\n // overloaded: meta() returns the registered metadata, meta(data)\n // returns a clone with `data` registered. The mapped type picks\n // up the second overload, so we accept variadic any-args and\n // return `any` to satisfy both at runtime.\n if (args.length === 0)\n return core.globalRegistry.get(this);\n const cl = this.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n },\n isOptional() {\n return this.safeParse(undefined).success;\n },\n isNullable() {\n return this.safeParse(null).success;\n },\n apply(fn) {\n return fn(this);\n },\n });\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n _installLazyMethods(inst, \"_ZodString\", {\n regex(...args) {\n return this.check(checks.regex(...args));\n },\n includes(...args) {\n return this.check(checks.includes(...args));\n },\n startsWith(...args) {\n return this.check(checks.startsWith(...args));\n },\n endsWith(...args) {\n return this.check(checks.endsWith(...args));\n },\n min(...args) {\n return this.check(checks.minLength(...args));\n },\n max(...args) {\n return this.check(checks.maxLength(...args));\n },\n length(...args) {\n return this.check(checks.length(...args));\n },\n nonempty(...args) {\n return this.check(checks.minLength(1, ...args));\n },\n lowercase(params) {\n return this.check(checks.lowercase(params));\n },\n uppercase(params) {\n return this.check(checks.uppercase(params));\n },\n trim() {\n return this.check(checks.trim());\n },\n normalize(...args) {\n return this.check(checks.normalize(...args));\n },\n toLowerCase() {\n return this.check(checks.toLowerCase());\n },\n toUpperCase() {\n return this.check(checks.toUpperCase());\n },\n slugify() {\n return this.check(checks.slugify());\n },\n });\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: core.regexes.httpProtocol,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\n/**\n * Validates a CUID v1 string.\n *\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2 | `z.cuid2()`} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n _installLazyMethods(inst, \"ZodNumber\", {\n gt(value, params) {\n return this.check(checks.gt(value, params));\n },\n gte(value, params) {\n return this.check(checks.gte(value, params));\n },\n min(value, params) {\n return this.check(checks.gte(value, params));\n },\n lt(value, params) {\n return this.check(checks.lt(value, params));\n },\n lte(value, params) {\n return this.check(checks.lte(value, params));\n },\n max(value, params) {\n return this.check(checks.lte(value, params));\n },\n int(params) {\n return this.check(int(params));\n },\n safe(params) {\n return this.check(int(params));\n },\n positive(params) {\n return this.check(checks.gt(0, params));\n },\n nonnegative(params) {\n return this.check(checks.gte(0, params));\n },\n negative(params) {\n return this.check(checks.lt(0, params));\n },\n nonpositive(params) {\n return this.check(checks.lte(0, params));\n },\n multipleOf(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n step(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n finite() {\n return this;\n },\n });\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n _installLazyMethods(inst, \"ZodArray\", {\n min(n, params) {\n return this.check(checks.minLength(n, params));\n },\n nonempty(params) {\n return this.check(checks.minLength(1, params));\n },\n max(n, params) {\n return this.check(checks.maxLength(n, params));\n },\n length(n, params) {\n return this.check(checks.length(n, params));\n },\n unwrap() {\n return this.element;\n },\n });\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n _installLazyMethods(inst, \"ZodObject\", {\n keyof() {\n return _enum(Object.keys(this._zod.def.shape));\n },\n catchall(catchall) {\n return this.clone({ ...this._zod.def, catchall: catchall });\n },\n passthrough() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n loose() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n strict() {\n return this.clone({ ...this._zod.def, catchall: never() });\n },\n strip() {\n return this.clone({ ...this._zod.def, catchall: undefined });\n },\n extend(incoming) {\n return util.extend(this, incoming);\n },\n safeExtend(incoming) {\n return util.safeExtend(this, incoming);\n },\n merge(other) {\n return util.merge(this, other);\n },\n pick(mask) {\n return util.pick(this, mask);\n },\n omit(mask) {\n return util.omit(this, mask);\n },\n partial(...args) {\n return util.partial(ZodOptional, this, args[0]);\n },\n required(...args) {\n return util.required(ZodNonOptional, this, args[0]);\n },\n });\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n // v3-compat: z.record(valueType, params?) — defaults keyType to z.string()\n if (!valueType || !valueType._zod) {\n return new ZodRecord({\n type: \"record\",\n keyType: string(),\n valueType: keyType,\n ...util.normalizeParams(valueType),\n });\n }\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n payload.fallback = true;\n return payload;\n });\n }\n payload.value = output;\n payload.fallback = true;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport function invertCodec(codec) {\n const def = codec._zod.def;\n return new ZodCodec({\n type: \"pipe\",\n in: def.out,\n out: def.in,\n transform: def.reverseTransform,\n reverseTransform: def.transform,\n });\n}\nexport const ZodPreprocess = /*@__PURE__*/ core.$constructor(\"ZodPreprocess\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodPreprocess.init(inst, def);\n});\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn, params) {\n return core._superRefine(fn, params);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\nexport function preprocess(fn, schema) {\n return new ZodPreprocess({\n type: \"pipe\",\n in: transform(fn),\n out: schema,\n });\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TimePrecision = void 0;\nexports._string = _string;\nexports._coercedString = _coercedString;\nexports._email = _email;\nexports._guid = _guid;\nexports._uuid = _uuid;\nexports._uuidv4 = _uuidv4;\nexports._uuidv6 = _uuidv6;\nexports._uuidv7 = _uuidv7;\nexports._url = _url;\nexports._emoji = _emoji;\nexports._nanoid = _nanoid;\nexports._cuid = _cuid;\nexports._cuid2 = _cuid2;\nexports._ulid = _ulid;\nexports._xid = _xid;\nexports._ksuid = _ksuid;\nexports._ipv4 = _ipv4;\nexports._ipv6 = _ipv6;\nexports._mac = _mac;\nexports._cidrv4 = _cidrv4;\nexports._cidrv6 = _cidrv6;\nexports._base64 = _base64;\nexports._base64url = _base64url;\nexports._e164 = _e164;\nexports._jwt = _jwt;\nexports._isoDateTime = _isoDateTime;\nexports._isoDate = _isoDate;\nexports._isoTime = _isoTime;\nexports._isoDuration = _isoDuration;\nexports._number = _number;\nexports._coercedNumber = _coercedNumber;\nexports._int = _int;\nexports._float32 = _float32;\nexports._float64 = _float64;\nexports._int32 = _int32;\nexports._uint32 = _uint32;\nexports._boolean = _boolean;\nexports._coercedBoolean = _coercedBoolean;\nexports._bigint = _bigint;\nexports._coercedBigint = _coercedBigint;\nexports._int64 = _int64;\nexports._uint64 = _uint64;\nexports._symbol = _symbol;\nexports._undefined = _undefined;\nexports._null = _null;\nexports._any = _any;\nexports._unknown = _unknown;\nexports._never = _never;\nexports._void = _void;\nexports._date = _date;\nexports._coercedDate = _coercedDate;\nexports._nan = _nan;\nexports._lt = _lt;\nexports._lte = _lte;\nexports._max = _lte;\nexports._lte = _lte;\nexports._max = _lte;\nexports._gt = _gt;\nexports._gte = _gte;\nexports._min = _gte;\nexports._gte = _gte;\nexports._min = _gte;\nexports._positive = _positive;\nexports._negative = _negative;\nexports._nonpositive = _nonpositive;\nexports._nonnegative = _nonnegative;\nexports._multipleOf = _multipleOf;\nexports._maxSize = _maxSize;\nexports._minSize = _minSize;\nexports._size = _size;\nexports._maxLength = _maxLength;\nexports._minLength = _minLength;\nexports._length = _length;\nexports._regex = _regex;\nexports._lowercase = _lowercase;\nexports._uppercase = _uppercase;\nexports._includes = _includes;\nexports._startsWith = _startsWith;\nexports._endsWith = _endsWith;\nexports._property = _property;\nexports._mime = _mime;\nexports._overwrite = _overwrite;\nexports._normalize = _normalize;\nexports._trim = _trim;\nexports._toLowerCase = _toLowerCase;\nexports._toUpperCase = _toUpperCase;\nexports._slugify = _slugify;\nexports._array = _array;\nexports._union = _union;\nexports._xor = _xor;\nexports._discriminatedUnion = _discriminatedUnion;\nexports._intersection = _intersection;\nexports._tuple = _tuple;\nexports._record = _record;\nexports._map = _map;\nexports._set = _set;\nexports._enum = _enum;\nexports._nativeEnum = _nativeEnum;\nexports._literal = _literal;\nexports._file = _file;\nexports._transform = _transform;\nexports._optional = _optional;\nexports._nullable = _nullable;\nexports._default = _default;\nexports._nonoptional = _nonoptional;\nexports._success = _success;\nexports._catch = _catch;\nexports._pipe = _pipe;\nexports._readonly = _readonly;\nexports._templateLiteral = _templateLiteral;\nexports._lazy = _lazy;\nexports._promise = _promise;\nexports._custom = _custom;\nexports._refine = _refine;\nexports._superRefine = _superRefine;\nexports._check = _check;\nexports.describe = describe;\nexports.meta = meta;\nexports._stringbool = _stringbool;\nexports._stringFormat = _stringFormat;\nconst checks = __importStar(require(\"./checks.cjs\"));\nconst registries = __importStar(require(\"./registries.cjs\"));\nconst schemas = __importStar(require(\"./schemas.cjs\"));\nconst util = __importStar(require(\"./util.cjs\"));\n// @__NO_SIDE_EFFECTS__\nfunction _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link _cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\n// @__NO_SIDE_EFFECTS__\nfunction _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexports.TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nfunction _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nfunction _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nfunction _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nfunction _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nfunction _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nfunction _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nfunction _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nfunction _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nfunction _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nfunction _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nfunction _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nfunction _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nfunction _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nfunction _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nfunction _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nfunction _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nfunction _superRefine(fn, params) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n }, params);\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nfunction _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nfunction describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nfunction meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nfunction _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nfunction _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\nimport * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link _cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn, params) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n }, params);\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n\"use strict\";\n// import { $ZodType } from \"./schemas.js\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.$ZodCheckOverwrite = exports.$ZodCheckMimeType = exports.$ZodCheckProperty = exports.$ZodCheckEndsWith = exports.$ZodCheckStartsWith = exports.$ZodCheckIncludes = exports.$ZodCheckUpperCase = exports.$ZodCheckLowerCase = exports.$ZodCheckRegex = exports.$ZodCheckStringFormat = exports.$ZodCheckLengthEquals = exports.$ZodCheckMinLength = exports.$ZodCheckMaxLength = exports.$ZodCheckSizeEquals = exports.$ZodCheckMinSize = exports.$ZodCheckMaxSize = exports.$ZodCheckBigIntFormat = exports.$ZodCheckNumberFormat = exports.$ZodCheckMultipleOf = exports.$ZodCheckGreaterThan = exports.$ZodCheckLessThan = exports.$ZodCheck = void 0;\nconst core = __importStar(require(\"./core.cjs\"));\nconst regexes = __importStar(require(\"./regexes.cjs\"));\nconst util = __importStar(require(\"./util.cjs\"));\nexports.$ZodCheck = core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexports.$ZodCheckLessThan = core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n exports.$ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckGreaterThan = core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n exports.$ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n exports.$ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckNumberFormat = core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n exports.$ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexports.$ZodCheckBigIntFormat = core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n exports.$ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexports.$ZodCheckMaxSize = core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n exports.$ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckMinSize = core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n exports.$ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckSizeEquals = core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n exports.$ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckMaxLength = core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n exports.$ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckMinLength = core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n exports.$ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckLengthEquals = core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n exports.$ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckStringFormat = core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n exports.$ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexports.$ZodCheckRegex = core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n exports.$ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckLowerCase = core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n exports.$ZodCheckStringFormat.init(inst, def);\n});\nexports.$ZodCheckUpperCase = core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n exports.$ZodCheckStringFormat.init(inst, def);\n});\nexports.$ZodCheckIncludes = core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n exports.$ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckStartsWith = core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n exports.$ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckEndsWith = core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n exports.$ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexports.$ZodCheckProperty = core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n exports.$ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexports.$ZodCheckMimeType = core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n exports.$ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCheckOverwrite = core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n exports.$ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.globalConfig = exports.$ZodEncodeError = exports.$ZodAsyncError = exports.$brand = exports.NEVER = void 0;\nexports.$constructor = $constructor;\nexports.config = config;\n/** A special constant with type `never` */\nexports.NEVER = Object.freeze({\n status: \"aborted\",\n});\nfunction $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexports.$brand = Symbol(\"zod_brand\");\nclass $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexports.$ZodAsyncError = $ZodAsyncError;\nclass $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexports.$ZodEncodeError = $ZodEncodeError;\n(_a = globalThis).__zod_globalConfig ?? (_a.__zod_globalConfig = {});\nexports.globalConfig = globalThis.__zod_globalConfig;\nfunction config(newConfig) {\n if (newConfig)\n Object.assign(exports.globalConfig, newConfig);\n return exports.globalConfig;\n}\nvar _a;\n/** A special constant with type `never` */\nexport const NEVER = /*@__PURE__*/ Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\n(_a = globalThis).__zod_globalConfig ?? (_a.__zod_globalConfig = {});\nexport const globalConfig = globalThis.__zod_globalConfig;\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doc = void 0;\nclass Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\nexports.Doc = Doc;\nexport class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.$ZodRealError = exports.$ZodError = void 0;\nexports.flattenError = flattenError;\nexports.formatError = formatError;\nexports.treeifyError = treeifyError;\nexports.toDotPath = toDotPath;\nexports.prettifyError = prettifyError;\nconst core_js_1 = require(\"./core.cjs\");\nconst util = __importStar(require(\"./util.cjs\"));\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexports.$ZodError = (0, core_js_1.$constructor)(\"$ZodError\", initializer);\nexports.$ZodRealError = (0, core_js_1.$constructor)(\"$ZodError\", initializer, { Parent: Error });\nfunction flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nfunction formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error, path = []) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nfunction treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nfunction toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nfunction prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\nimport { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error, path = []) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONSchema = exports.JSONSchemaGenerator = exports.toJSONSchema = exports.locales = exports.regexes = exports.util = void 0;\n__exportStar(require(\"./core.cjs\"), exports);\n__exportStar(require(\"./parse.cjs\"), exports);\n__exportStar(require(\"./errors.cjs\"), exports);\n__exportStar(require(\"./schemas.cjs\"), exports);\n__exportStar(require(\"./checks.cjs\"), exports);\n__exportStar(require(\"./versions.cjs\"), exports);\nexports.util = __importStar(require(\"./util.cjs\"));\nexports.regexes = __importStar(require(\"./regexes.cjs\"));\nexports.locales = __importStar(require(\"../locales/index.cjs\"));\n__exportStar(require(\"./registries.cjs\"), exports);\n__exportStar(require(\"./doc.cjs\"), exports);\n__exportStar(require(\"./api.cjs\"), exports);\n__exportStar(require(\"./to-json-schema.cjs\"), exports);\nvar json_schema_processors_js_1 = require(\"./json-schema-processors.cjs\");\nObject.defineProperty(exports, \"toJSONSchema\", { enumerable: true, get: function () { return json_schema_processors_js_1.toJSONSchema; } });\nvar json_schema_generator_js_1 = require(\"./json-schema-generator.cjs\");\nObject.defineProperty(exports, \"JSONSchemaGenerator\", { enumerable: true, get: function () { return json_schema_generator_js_1.JSONSchemaGenerator; } });\nexports.JSONSchema = __importStar(require(\"./json-schema.cjs\"));\nexport * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport { toJSONSchema } from \"./json-schema-processors.js\";\nexport { JSONSchemaGenerator } from \"./json-schema-generator.js\";\nexport * as JSONSchema from \"./json-schema.js\";\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONSchemaGenerator = void 0;\nconst json_schema_processors_js_1 = require(\"./json-schema-processors.cjs\");\nconst to_json_schema_js_1 = require(\"./to-json-schema.cjs\");\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nclass JSONSchemaGenerator {\n /** @deprecated Access via ctx instead */\n get metadataRegistry() {\n return this.ctx.metadataRegistry;\n }\n /** @deprecated Access via ctx instead */\n get target() {\n return this.ctx.target;\n }\n /** @deprecated Access via ctx instead */\n get unrepresentable() {\n return this.ctx.unrepresentable;\n }\n /** @deprecated Access via ctx instead */\n get override() {\n return this.ctx.override;\n }\n /** @deprecated Access via ctx instead */\n get io() {\n return this.ctx.io;\n }\n /** @deprecated Access via ctx instead */\n get counter() {\n return this.ctx.counter;\n }\n set counter(value) {\n this.ctx.counter = value;\n }\n /** @deprecated Access via ctx instead */\n get seen() {\n return this.ctx.seen;\n }\n constructor(params) {\n // Normalize target for internal context\n let normalizedTarget = params?.target ?? \"draft-2020-12\";\n if (normalizedTarget === \"draft-4\")\n normalizedTarget = \"draft-04\";\n if (normalizedTarget === \"draft-7\")\n normalizedTarget = \"draft-07\";\n this.ctx = (0, to_json_schema_js_1.initializeContext)({\n processors: json_schema_processors_js_1.allProcessors,\n target: normalizedTarget,\n ...(params?.metadata && { metadata: params.metadata }),\n ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n ...(params?.override && { override: params.override }),\n ...(params?.io && { io: params.io }),\n });\n }\n /**\n * Process a schema to prepare it for JSON Schema generation.\n * This must be called before emit().\n */\n process(schema, _params = { path: [], schemaPath: [] }) {\n return (0, to_json_schema_js_1.process)(schema, this.ctx, _params);\n }\n /**\n * Emit the final JSON Schema after processing.\n * Must call process() first.\n */\n emit(schema, _params) {\n // Apply emit params to the context\n if (_params) {\n if (_params.cycles)\n this.ctx.cycles = _params.cycles;\n if (_params.reused)\n this.ctx.reused = _params.reused;\n if (_params.external)\n this.ctx.external = _params.external;\n }\n (0, to_json_schema_js_1.extractDefs)(this.ctx, schema);\n const result = (0, to_json_schema_js_1.finalize)(this.ctx, schema);\n // Strip ~standard property to match old implementation's return type\n const { \"~standard\": _, ...plainResult } = result;\n return plainResult;\n }\n}\nexports.JSONSchemaGenerator = JSONSchemaGenerator;\nimport { allProcessors } from \"./json-schema-processors.js\";\nimport { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nexport class JSONSchemaGenerator {\n /** @deprecated Access via ctx instead */\n get metadataRegistry() {\n return this.ctx.metadataRegistry;\n }\n /** @deprecated Access via ctx instead */\n get target() {\n return this.ctx.target;\n }\n /** @deprecated Access via ctx instead */\n get unrepresentable() {\n return this.ctx.unrepresentable;\n }\n /** @deprecated Access via ctx instead */\n get override() {\n return this.ctx.override;\n }\n /** @deprecated Access via ctx instead */\n get io() {\n return this.ctx.io;\n }\n /** @deprecated Access via ctx instead */\n get counter() {\n return this.ctx.counter;\n }\n set counter(value) {\n this.ctx.counter = value;\n }\n /** @deprecated Access via ctx instead */\n get seen() {\n return this.ctx.seen;\n }\n constructor(params) {\n // Normalize target for internal context\n let normalizedTarget = params?.target ?? \"draft-2020-12\";\n if (normalizedTarget === \"draft-4\")\n normalizedTarget = \"draft-04\";\n if (normalizedTarget === \"draft-7\")\n normalizedTarget = \"draft-07\";\n this.ctx = initializeContext({\n processors: allProcessors,\n target: normalizedTarget,\n ...(params?.metadata && { metadata: params.metadata }),\n ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n ...(params?.override && { override: params.override }),\n ...(params?.io && { io: params.io }),\n });\n }\n /**\n * Process a schema to prepare it for JSON Schema generation.\n * This must be called before emit().\n */\n process(schema, _params = { path: [], schemaPath: [] }) {\n return process(schema, this.ctx, _params);\n }\n /**\n * Emit the final JSON Schema after processing.\n * Must call process() first.\n */\n emit(schema, _params) {\n // Apply emit params to the context\n if (_params) {\n if (_params.cycles)\n this.ctx.cycles = _params.cycles;\n if (_params.reused)\n this.ctx.reused = _params.reused;\n if (_params.external)\n this.ctx.external = _params.external;\n }\n extractDefs(this.ctx, schema);\n const result = finalize(this.ctx, schema);\n // Strip ~standard property to match old implementation's return type\n const { \"~standard\": _, ...plainResult } = result;\n return plainResult;\n }\n}\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.allProcessors = exports.lazyProcessor = exports.optionalProcessor = exports.promiseProcessor = exports.readonlyProcessor = exports.pipeProcessor = exports.catchProcessor = exports.prefaultProcessor = exports.defaultProcessor = exports.nonoptionalProcessor = exports.nullableProcessor = exports.recordProcessor = exports.tupleProcessor = exports.intersectionProcessor = exports.unionProcessor = exports.objectProcessor = exports.arrayProcessor = exports.setProcessor = exports.mapProcessor = exports.transformProcessor = exports.functionProcessor = exports.customProcessor = exports.successProcessor = exports.fileProcessor = exports.templateLiteralProcessor = exports.nanProcessor = exports.literalProcessor = exports.enumProcessor = exports.dateProcessor = exports.unknownProcessor = exports.anyProcessor = exports.neverProcessor = exports.voidProcessor = exports.undefinedProcessor = exports.nullProcessor = exports.symbolProcessor = exports.bigintProcessor = exports.booleanProcessor = exports.numberProcessor = exports.stringProcessor = void 0;\nexports.toJSONSchema = toJSONSchema;\nconst to_json_schema_js_1 = require(\"./to-json-schema.cjs\");\nconst util_js_1 = require(\"./util.cjs\");\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nconst stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexports.stringProcessor = stringProcessor;\nconst numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n // when both minimum and exclusiveMinimum exist, pick the more restrictive one\n const exMin = typeof exclusiveMinimum === \"number\" && exclusiveMinimum >= (minimum ?? Number.NEGATIVE_INFINITY);\n const exMax = typeof exclusiveMaximum === \"number\" && exclusiveMaximum <= (maximum ?? Number.POSITIVE_INFINITY);\n const legacy = ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\";\n if (exMin) {\n if (legacy) {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n else if (typeof minimum === \"number\") {\n json.minimum = minimum;\n }\n if (exMax) {\n if (legacy) {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n else if (typeof maximum === \"number\") {\n json.maximum = maximum;\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexports.numberProcessor = numberProcessor;\nconst booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexports.booleanProcessor = booleanProcessor;\nconst bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexports.bigintProcessor = bigintProcessor;\nconst symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexports.symbolProcessor = symbolProcessor;\nconst nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexports.nullProcessor = nullProcessor;\nconst undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexports.undefinedProcessor = undefinedProcessor;\nconst voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexports.voidProcessor = voidProcessor;\nconst neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexports.neverProcessor = neverProcessor;\nconst anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexports.anyProcessor = anyProcessor;\nconst unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexports.unknownProcessor = unknownProcessor;\nconst dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexports.dateProcessor = dateProcessor;\nconst enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = (0, util_js_1.getEnumValues)(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexports.enumProcessor = enumProcessor;\nconst literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexports.literalProcessor = literalProcessor;\nconst nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexports.nanProcessor = nanProcessor;\nconst templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexports.templateLiteralProcessor = templateLiteralProcessor;\nconst fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexports.fileProcessor = fileProcessor;\nconst successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexports.successProcessor = successProcessor;\nconst customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexports.customProcessor = customProcessor;\nconst functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexports.functionProcessor = functionProcessor;\nconst transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexports.transformProcessor = transformProcessor;\nconst mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexports.mapProcessor = mapProcessor;\nconst setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\nexports.setProcessor = setProcessor;\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nconst arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = (0, to_json_schema_js_1.process)(def.element, ctx, {\n ...params,\n path: [...params.path, \"items\"],\n });\n};\nexports.arrayProcessor = arrayProcessor;\nconst objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = (0, to_json_schema_js_1.process)(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = (0, to_json_schema_js_1.process)(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexports.objectProcessor = objectProcessor;\nconst unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => (0, to_json_schema_js_1.process)(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexports.unionProcessor = unionProcessor;\nconst intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = (0, to_json_schema_js_1.process)(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = (0, to_json_schema_js_1.process)(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexports.intersectionProcessor = intersectionProcessor;\nconst tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => (0, to_json_schema_js_1.process)(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? (0, to_json_schema_js_1.process)(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexports.tupleProcessor = tupleProcessor;\nconst recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = (0, to_json_schema_js_1.process)(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = (0, to_json_schema_js_1.process)(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = (0, to_json_schema_js_1.process)(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexports.recordProcessor = recordProcessor;\nconst nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = (0, to_json_schema_js_1.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexports.nullableProcessor = nullableProcessor;\nconst nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n (0, to_json_schema_js_1.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexports.nonoptionalProcessor = nonoptionalProcessor;\nconst defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n (0, to_json_schema_js_1.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexports.defaultProcessor = defaultProcessor;\nconst prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n (0, to_json_schema_js_1.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexports.prefaultProcessor = prefaultProcessor;\nconst catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n (0, to_json_schema_js_1.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexports.catchProcessor = catchProcessor;\nconst pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const inIsTransform = def.in._zod.traits.has(\"$ZodTransform\");\n const innerType = ctx.io === \"input\" ? (inIsTransform ? def.out : def.in) : def.out;\n (0, to_json_schema_js_1.process)(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexports.pipeProcessor = pipeProcessor;\nconst readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n (0, to_json_schema_js_1.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexports.readonlyProcessor = readonlyProcessor;\nconst promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n (0, to_json_schema_js_1.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexports.promiseProcessor = promiseProcessor;\nconst optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n (0, to_json_schema_js_1.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexports.optionalProcessor = optionalProcessor;\nconst lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n (0, to_json_schema_js_1.process)(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexports.lazyProcessor = lazyProcessor;\n// ==================== ALL PROCESSORS ====================\nexports.allProcessors = {\n string: exports.stringProcessor,\n number: exports.numberProcessor,\n boolean: exports.booleanProcessor,\n bigint: exports.bigintProcessor,\n symbol: exports.symbolProcessor,\n null: exports.nullProcessor,\n undefined: exports.undefinedProcessor,\n void: exports.voidProcessor,\n never: exports.neverProcessor,\n any: exports.anyProcessor,\n unknown: exports.unknownProcessor,\n date: exports.dateProcessor,\n enum: exports.enumProcessor,\n literal: exports.literalProcessor,\n nan: exports.nanProcessor,\n template_literal: exports.templateLiteralProcessor,\n file: exports.fileProcessor,\n success: exports.successProcessor,\n custom: exports.customProcessor,\n function: exports.functionProcessor,\n transform: exports.transformProcessor,\n map: exports.mapProcessor,\n set: exports.setProcessor,\n array: exports.arrayProcessor,\n object: exports.objectProcessor,\n union: exports.unionProcessor,\n intersection: exports.intersectionProcessor,\n tuple: exports.tupleProcessor,\n record: exports.recordProcessor,\n nullable: exports.nullableProcessor,\n nonoptional: exports.nonoptionalProcessor,\n default: exports.defaultProcessor,\n prefault: exports.prefaultProcessor,\n catch: exports.catchProcessor,\n pipe: exports.pipeProcessor,\n readonly: exports.readonlyProcessor,\n promise: exports.promiseProcessor,\n optional: exports.optionalProcessor,\n lazy: exports.lazyProcessor,\n};\nfunction toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = (0, to_json_schema_js_1.initializeContext)({ ...params, processors: exports.allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n (0, to_json_schema_js_1.process)(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n (0, to_json_schema_js_1.extractDefs)(ctx, schema);\n schemas[key] = (0, to_json_schema_js_1.finalize)(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = (0, to_json_schema_js_1.initializeContext)({ ...params, processors: exports.allProcessors });\n (0, to_json_schema_js_1.process)(input, ctx);\n (0, to_json_schema_js_1.extractDefs)(ctx, input);\n return (0, to_json_schema_js_1.finalize)(ctx, input);\n}\nimport { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n // when both minimum and exclusiveMinimum exist, pick the more restrictive one\n const exMin = typeof exclusiveMinimum === \"number\" && exclusiveMinimum >= (minimum ?? Number.NEGATIVE_INFINITY);\n const exMax = typeof exclusiveMaximum === \"number\" && exclusiveMaximum <= (maximum ?? Number.POSITIVE_INFINITY);\n const legacy = ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\";\n if (exMin) {\n if (legacy) {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n else if (typeof minimum === \"number\") {\n json.minimum = minimum;\n }\n if (exMax) {\n if (legacy) {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n else if (typeof maximum === \"number\") {\n json.maximum = maximum;\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, {\n ...params,\n path: [...params.path, \"items\"],\n });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const inIsTransform = def.in._zod.traits.has(\"$ZodTransform\");\n const innerType = ctx.io === \"input\" ? (inIsTransform ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexport {};\n{ \n \"type\": \"module\",\n \"main\": \"./index.cjs\",\n \"module\": \"./index.js\",\n \"types\": \"./index.d.cts\",\n \"sideEffects\": false\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.safeDecodeAsync = exports._safeDecodeAsync = exports.safeEncodeAsync = exports._safeEncodeAsync = exports.safeDecode = exports._safeDecode = exports.safeEncode = exports._safeEncode = exports.decodeAsync = exports._decodeAsync = exports.encodeAsync = exports._encodeAsync = exports.decode = exports._decode = exports.encode = exports._encode = exports.safeParseAsync = exports._safeParseAsync = exports.safeParse = exports._safeParse = exports.parseAsync = exports._parseAsync = exports.parse = exports._parse = void 0;\nconst core = __importStar(require(\"./core.cjs\"));\nconst errors = __importStar(require(\"./errors.cjs\"));\nconst util = __importStar(require(\"./util.cjs\"));\nconst _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexports._parse = _parse;\nexports.parse = (0, exports._parse)(errors.$ZodRealError);\nconst _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexports._parseAsync = _parseAsync;\nexports.parseAsync = (0, exports._parseAsync)(errors.$ZodRealError);\nconst _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexports._safeParse = _safeParse;\nexports.safeParse = (0, exports._safeParse)(errors.$ZodRealError);\nconst _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexports._safeParseAsync = _safeParseAsync;\nexports.safeParseAsync = (0, exports._safeParseAsync)(errors.$ZodRealError);\nconst _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return (0, exports._parse)(_Err)(schema, value, ctx);\n};\nexports._encode = _encode;\nexports.encode = (0, exports._encode)(errors.$ZodRealError);\nconst _decode = (_Err) => (schema, value, _ctx) => {\n return (0, exports._parse)(_Err)(schema, value, _ctx);\n};\nexports._decode = _decode;\nexports.decode = (0, exports._decode)(errors.$ZodRealError);\nconst _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return (0, exports._parseAsync)(_Err)(schema, value, ctx);\n};\nexports._encodeAsync = _encodeAsync;\nexports.encodeAsync = (0, exports._encodeAsync)(errors.$ZodRealError);\nconst _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return (0, exports._parseAsync)(_Err)(schema, value, _ctx);\n};\nexports._decodeAsync = _decodeAsync;\nexports.decodeAsync = (0, exports._decodeAsync)(errors.$ZodRealError);\nconst _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return (0, exports._safeParse)(_Err)(schema, value, ctx);\n};\nexports._safeEncode = _safeEncode;\nexports.safeEncode = (0, exports._safeEncode)(errors.$ZodRealError);\nconst _safeDecode = (_Err) => (schema, value, _ctx) => {\n return (0, exports._safeParse)(_Err)(schema, value, _ctx);\n};\nexports._safeDecode = _safeDecode;\nexports.safeDecode = (0, exports._safeDecode)(errors.$ZodRealError);\nconst _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return (0, exports._safeParseAsync)(_Err)(schema, value, ctx);\n};\nexports._safeEncodeAsync = _safeEncodeAsync;\nexports.safeEncodeAsync = (0, exports._safeEncodeAsync)(errors.$ZodRealError);\nconst _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return (0, exports._safeParseAsync)(_Err)(schema, value, _ctx);\n};\nexports._safeDecodeAsync = _safeDecodeAsync;\nexports.safeDecodeAsync = (0, exports._safeDecodeAsync)(errors.$ZodRealError);\nimport * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha256_base64url = exports.sha256_base64 = exports.sha256_hex = exports.sha1_base64url = exports.sha1_base64 = exports.sha1_hex = exports.md5_base64url = exports.md5_base64 = exports.md5_hex = exports.hex = exports.uppercase = exports.lowercase = exports.undefined = exports.null = exports.boolean = exports.number = exports.integer = exports.bigint = exports.string = exports.date = exports.e164 = exports.httpProtocol = exports.domain = exports.hostname = exports.base64url = exports.base64 = exports.cidrv6 = exports.cidrv4 = exports.mac = exports.ipv6 = exports.ipv4 = exports.browserEmail = exports.idnEmail = exports.unicodeEmail = exports.rfc5322Email = exports.html5Email = exports.email = exports.uuid7 = exports.uuid6 = exports.uuid4 = exports.uuid = exports.guid = exports.extendedDuration = exports.duration = exports.nanoid = exports.ksuid = exports.xid = exports.ulid = exports.cuid2 = exports.cuid = void 0;\nexports.sha512_base64url = exports.sha512_base64 = exports.sha512_hex = exports.sha384_base64url = exports.sha384_base64 = exports.sha384_hex = void 0;\nexports.emoji = emoji;\nexports.time = time;\nexports.datetime = datetime;\nconst util = __importStar(require(\"./util.cjs\"));\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexports.cuid = /^[cC][0-9a-z]{6,}$/;\nexports.cuid2 = /^[0-9a-z]+$/;\nexports.ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexports.xid = /^[0-9a-vA-V]{20}$/;\nexports.ksuid = /^[A-Za-z0-9]{27}$/;\nexports.nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexports.duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexports.extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexports.guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nconst uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexports.uuid = uuid;\nexports.uuid4 = (0, exports.uuid)(4);\nexports.uuid6 = (0, exports.uuid)(6);\nexports.uuid7 = (0, exports.uuid)(7);\n/** Practical email validation */\nexports.email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexports.html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexports.rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexports.unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexports.idnEmail = exports.unicodeEmail;\nexports.browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nfunction emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexports.ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexports.ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nconst mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexports.mac = mac;\nexports.cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexports.cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexports.base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexports.base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexports.hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexports.domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\nexports.httpProtocol = /^https?$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexports.e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexports.date = new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nfunction time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nconst string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexports.string = string;\nexports.bigint = /^-?\\d+n?$/;\nexports.integer = /^-?\\d+$/;\nexports.number = /^-?\\d+(?:\\.\\d+)?$/;\nexports.boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexports.null = _null;\nconst _undefined = /^undefined$/i;\nexports.undefined = _undefined;\n// regex for string with no uppercase letters\nexports.lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexports.uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexports.hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexports.md5_hex = /^[0-9a-fA-F]{32}$/;\nexports.md5_base64 = fixedBase64(22, \"==\");\nexports.md5_base64url = fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexports.sha1_hex = /^[0-9a-fA-F]{40}$/;\nexports.sha1_base64 = fixedBase64(27, \"=\");\nexports.sha1_base64url = fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexports.sha256_hex = /^[0-9a-fA-F]{64}$/;\nexports.sha256_base64 = fixedBase64(43, \"=\");\nexports.sha256_base64url = fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexports.sha384_hex = /^[0-9a-fA-F]{96}$/;\nexports.sha384_base64 = fixedBase64(64, \"\");\nexports.sha384_base64url = fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexports.sha512_hex = /^[0-9a-fA-F]{128}$/;\nexports.sha512_base64 = fixedBase64(86, \"==\");\nexports.sha512_base64url = fixedBase64url(86);\nimport * as util from \"./util.js\";\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const cuid = /^[cC][0-9a-z]{6,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\nexport const httpProtocol = /^https?$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.globalRegistry = exports.$ZodRegistry = exports.$input = exports.$output = void 0;\nexports.registry = registry;\nexports.$output = Symbol(\"ZodOutput\");\nexports.$input = Symbol(\"ZodInput\");\nclass $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\nexports.$ZodRegistry = $ZodRegistry;\n// registries\nfunction registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexports.globalRegistry = globalThis.__zod_globalRegistry;\nvar _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.$ZodTuple = exports.$ZodIntersection = exports.$ZodDiscriminatedUnion = exports.$ZodXor = exports.$ZodUnion = exports.$ZodObjectJIT = exports.$ZodObject = exports.$ZodArray = exports.$ZodDate = exports.$ZodVoid = exports.$ZodNever = exports.$ZodUnknown = exports.$ZodAny = exports.$ZodNull = exports.$ZodUndefined = exports.$ZodSymbol = exports.$ZodBigIntFormat = exports.$ZodBigInt = exports.$ZodBoolean = exports.$ZodNumberFormat = exports.$ZodNumber = exports.$ZodCustomStringFormat = exports.$ZodJWT = exports.$ZodE164 = exports.$ZodBase64URL = exports.$ZodBase64 = exports.$ZodCIDRv6 = exports.$ZodCIDRv4 = exports.$ZodMAC = exports.$ZodIPv6 = exports.$ZodIPv4 = exports.$ZodISODuration = exports.$ZodISOTime = exports.$ZodISODate = exports.$ZodISODateTime = exports.$ZodKSUID = exports.$ZodXID = exports.$ZodULID = exports.$ZodCUID2 = exports.$ZodCUID = exports.$ZodNanoID = exports.$ZodEmoji = exports.$ZodURL = exports.$ZodEmail = exports.$ZodUUID = exports.$ZodGUID = exports.$ZodStringFormat = exports.$ZodString = exports.clone = exports.$ZodType = void 0;\nexports.$ZodCustom = exports.$ZodLazy = exports.$ZodPromise = exports.$ZodFunction = exports.$ZodTemplateLiteral = exports.$ZodReadonly = exports.$ZodPreprocess = exports.$ZodCodec = exports.$ZodPipe = exports.$ZodNaN = exports.$ZodCatch = exports.$ZodSuccess = exports.$ZodNonOptional = exports.$ZodPrefault = exports.$ZodDefault = exports.$ZodNullable = exports.$ZodExactOptional = exports.$ZodOptional = exports.$ZodTransform = exports.$ZodFile = exports.$ZodLiteral = exports.$ZodEnum = exports.$ZodSet = exports.$ZodMap = exports.$ZodRecord = void 0;\nexports.isValidBase64 = isValidBase64;\nexports.isValidBase64URL = isValidBase64URL;\nexports.isValidJWT = isValidJWT;\nconst checks = __importStar(require(\"./checks.cjs\"));\nconst core = __importStar(require(\"./core.cjs\"));\nconst doc_js_1 = require(\"./doc.cjs\");\nconst parse_js_1 = require(\"./parse.cjs\");\nconst regexes = __importStar(require(\"./regexes.cjs\"));\nconst util = __importStar(require(\"./util.cjs\"));\nconst versions_js_1 = require(\"./versions.cjs\");\nexports.$ZodType = core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = versions_js_1.version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n if (util.explicitlyAborted(payload))\n continue;\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = (0, parse_js_1.safeParse)(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return (0, parse_js_1.safeParseAsync)(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nvar util_js_1 = require(\"./util.cjs\");\nObject.defineProperty(exports, \"clone\", { enumerable: true, get: function () { return util_js_1.clone; } });\nexports.$ZodString = core.$constructor(\"$ZodString\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexports.$ZodStringFormat = core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n exports.$ZodString.init(inst, def);\n});\nexports.$ZodGUID = core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodUUID = core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodEmail = core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodURL = core.$constructor(\"$ZodURL\", (inst, def) => {\n exports.$ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // When normalize is off, require :// for http/https URLs\n // This prevents strings like \"http:example.com\" or \"https:/path\" from being silently accepted\n if (!def.normalize && def.protocol?.source === regexes.httpProtocol.source) {\n if (!/^https?:\\/\\//i.test(trimmed)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid URL format\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n return;\n }\n }\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexports.$ZodEmoji = core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodNanoID = core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n exports.$ZodStringFormat.init(inst, def);\n});\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link $ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexports.$ZodCUID = core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodCUID2 = core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodULID = core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodXID = core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodKSUID = core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodISODateTime = core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodISODate = core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodISOTime = core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodISODuration = core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodIPv4 = core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n exports.$ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexports.$ZodIPv6 = core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n exports.$ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexports.$ZodMAC = core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n exports.$ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexports.$ZodCIDRv4 = core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n exports.$ZodStringFormat.init(inst, def);\n});\nexports.$ZodCIDRv6 = core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n exports.$ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nfunction isValidBase64(data) {\n if (data === \"\")\n return true;\n // atob ignores whitespace, so reject it up front.\n if (/\\s/.test(data))\n return false;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexports.$ZodBase64 = core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n exports.$ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nfunction isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexports.$ZodBase64URL = core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n exports.$ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodE164 = core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n exports.$ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nfunction isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexports.$ZodJWT = core.$constructor(\"$ZodJWT\", (inst, def) => {\n exports.$ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodCustomStringFormat = core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n exports.$ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexports.$ZodNumber = core.$constructor(\"$ZodNumber\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexports.$ZodNumberFormat = core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n exports.$ZodNumber.init(inst, def); // no format checks\n});\nexports.$ZodBoolean = core.$constructor(\"$ZodBoolean\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexports.$ZodBigInt = core.$constructor(\"$ZodBigInt\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexports.$ZodBigIntFormat = core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n exports.$ZodBigInt.init(inst, def); // no format checks\n});\nexports.$ZodSymbol = core.$constructor(\"$ZodSymbol\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexports.$ZodUndefined = core.$constructor(\"$ZodUndefined\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexports.$ZodNull = core.$constructor(\"$ZodNull\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexports.$ZodAny = core.$constructor(\"$ZodAny\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexports.$ZodUnknown = core.$constructor(\"$ZodUnknown\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexports.$ZodNever = core.$constructor(\"$ZodNever\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexports.$ZodVoid = core.$constructor(\"$ZodVoid\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexports.$ZodDate = core.$constructor(\"$ZodDate\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexports.$ZodArray = core.$constructor(\"$ZodArray\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalIn, isOptionalOut) {\n const isPresent = key in input;\n if (result.issues.length) {\n // For optional-in/out schemas, ignore errors on absent keys.\n if (isOptionalIn && isOptionalOut && !isPresent) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (!isPresent && !isOptionalIn) {\n if (!result.issues.length) {\n final.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [key],\n });\n }\n return;\n }\n if (result.value === undefined) {\n if (isPresent) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalIn = _catchall.optin === \"optional\";\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n // skip __proto__ so it can't replace the result prototype via the\n // assignment setter on the plain {} we build into\n if (key === \"__proto__\")\n continue;\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexports.$ZodObject = core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n exports.$ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalIn = el._zod.optin === \"optional\";\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexports.$ZodObjectJIT = core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n exports.$ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new doc_js_1.Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalIn = schema?._zod?.optin === \"optional\";\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalIn && isOptionalOut) {\n // For optional-in/out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else if (!isOptionalIn) {\n doc.write(`\n const ${id}_present = ${k} in input;\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n if (!${id}_present && !${id}.issues.length) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [${k}]\n });\n }\n\n if (${id}_present) {\n if (${id}.value === undefined) {\n newResult[${k}] = undefined;\n } else {\n newResult[${k}] = ${id}.value;\n }\n }\n\n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexports.$ZodUnion = core.$constructor(\"$ZodUnion\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexports.$ZodXor = core.$constructor(\"$ZodXor\", (inst, def) => {\n exports.$ZodUnion.init(inst, def);\n def.inclusive = false;\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexports.$ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n exports.$ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n // Fall back to union matching when the fast discriminator path fails:\n // - explicitly enabled via unionFallback, or\n // - during backward direction (encode), since codec-based discriminators\n // have different values in forward vs backward directions\n if (def.unionFallback || ctx.direction === \"backward\") {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n options: Array.from(disc.value.keys()),\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexports.$ZodIntersection = core.$constructor(\"$ZodIntersection\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexports.$ZodTuple = core.$constructor(\"$ZodTuple\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const optinStart = getTupleOptStart(items, \"optin\");\n const optoutStart = getTupleOptStart(items, \"optout\");\n if (!def.rest) {\n if (input.length < optinStart) {\n payload.issues.push({\n code: \"too_small\",\n minimum: optinStart,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n if (input.length > items.length) {\n payload.issues.push({\n code: \"too_big\",\n maximum: items.length,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n }\n }\n // Run every item in parallel, collecting results into an indexed\n // array. The post-processing in `handleTupleResults` walks them in\n // order so it can decide whether an absent optional-output error can\n // truncate the tail or must be reported to preserve required output.\n const itemResults = new Array(items.length);\n for (let i = 0; i < items.length; i++) {\n const r = items[i]._zod.run({ value: input[i], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((rr) => {\n itemResults[i] = rr;\n }));\n }\n else {\n itemResults[i] = r;\n }\n }\n if (def.rest) {\n let i = items.length - 1;\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({ value: el, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((r) => handleTupleResult(r, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => handleTupleResults(itemResults, payload, items, input, optoutStart));\n }\n return handleTupleResults(itemResults, payload, items, input, optoutStart);\n };\n});\nfunction getTupleOptStart(items, key) {\n for (let i = items.length - 1; i >= 0; i--) {\n if (items[i]._zod[key] !== \"optional\")\n return i + 1;\n }\n return 0;\n}\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nfunction handleTupleResults(itemResults, final, items, input, optoutStart) {\n // Walk results in order. Mirror $ZodObject's swallow-on-absent-optional\n // rule, but only after `optoutStart`: the first index where the output\n // tuple tail can be absent.\n for (let i = 0; i < items.length; i++) {\n const r = itemResults[i];\n const isPresent = i < input.length;\n if (r.issues.length) {\n if (!isPresent && i >= optoutStart) {\n final.value.length = i;\n break;\n }\n final.issues.push(...util.prefixIssues(i, r.issues));\n }\n final.value[i] = r.value;\n }\n // Drop trailing slots that produced `undefined` for absent input\n // (the array analog of an absent optional key on an object). The\n // `i >= input.length` floor is critical: an explicit `undefined`\n // *inside* the input must be preserved even when the schema is\n // optional-out (e.g. `z.string().or(z.undefined())` accepting an\n // explicit undefined value).\n for (let i = final.value.length - 1; i >= input.length; i--) {\n if (items[i]._zod.optout === \"optional\" && final.value[i] === undefined) {\n final.value.length = i;\n }\n else {\n break;\n }\n }\n return final;\n}\nexports.$ZodRecord = core.$constructor(\"$ZodRecord\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n continue;\n }\n const outKey = keyResult.value;\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n // Reflect.ownKeys for Symbol-key support; filter non-enumerable to match z.object()\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n if (!Object.prototype.propertyIsEnumerable.call(input, key))\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexports.$ZodMap = core.$constructor(\"$ZodMap\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexports.$ZodSet = core.$constructor(\"$ZodSet\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexports.$ZodEnum = core.$constructor(\"$ZodEnum\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexports.$ZodLiteral = core.$constructor(\"$ZodLiteral\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexports.$ZodFile = core.$constructor(\"$ZodFile\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexports.$ZodTransform = core.$constructor(\"$ZodTransform\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n payload.fallback = true;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n payload.fallback = true;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (input === undefined && (result.issues.length || result.fallback)) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexports.$ZodOptional = core.$constructor(\"$ZodOptional\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const input = payload.value;\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, input));\n return handleOptionalResult(result, input);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexports.$ZodExactOptional = core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n exports.$ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexports.$ZodNullable = core.$constructor(\"$ZodNullable\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexports.$ZodDefault = core.$constructor(\"$ZodDefault\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexports.$ZodPrefault = core.$constructor(\"$ZodPrefault\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexports.$ZodNonOptional = core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexports.$ZodSuccess = core.$constructor(\"$ZodSuccess\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexports.$ZodCatch = core.$constructor(\"$ZodCatch\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\n };\n});\nexports.$ZodNaN = core.$constructor(\"$ZodNaN\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexports.$ZodPipe = core.$constructor(\"$ZodPipe\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues, fallback: left.fallback }, ctx);\n}\nexports.$ZodCodec = core.$constructor(\"$ZodCodec\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexports.$ZodPreprocess = core.$constructor(\"$ZodPreprocess\", (inst, def) => {\n exports.$ZodPipe.init(inst, def);\n});\nexports.$ZodReadonly = core.$constructor(\"$ZodReadonly\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexports.$ZodTemplateLiteral = core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexports.$ZodFunction = core.$constructor(\"$ZodFunction\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? (0, parse_js_1.parse)(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return (0, parse_js_1.parse)(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await (0, parse_js_1.parseAsync)(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await (0, parse_js_1.parseAsync)(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new exports.$ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexports.$ZodPromise = core.$constructor(\"$ZodPromise\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexports.$ZodLazy = core.$constructor(\"$ZodLazy\", (inst, def) => {\n exports.$ZodType.init(inst, def);\n // Cache the resolved inner type on the shared `def` so all clones of this\n // lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance,\n // preserving identity for cycle detection on recursive schemas.\n util.defineLazy(inst._zod, \"innerType\", () => {\n const d = def;\n if (!d._cachedInner)\n d._cachedInner = def.getter();\n return d._cachedInner;\n });\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexports.$ZodCustom = core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n exports.$ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\nimport * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n if (util.explicitlyAborted(payload))\n continue;\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // When normalize is off, require :// for http/https URLs\n // This prevents strings like \"http:example.com\" or \"https:/path\" from being silently accepted\n if (!def.normalize && def.protocol?.source === regexes.httpProtocol.source) {\n if (!/^https?:\\/\\//i.test(trimmed)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid URL format\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n return;\n }\n }\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link $ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n // atob ignores whitespace, so reject it up front.\n if (/\\s/.test(data))\n return false;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalIn, isOptionalOut) {\n const isPresent = key in input;\n if (result.issues.length) {\n // For optional-in/out schemas, ignore errors on absent keys.\n if (isOptionalIn && isOptionalOut && !isPresent) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (!isPresent && !isOptionalIn) {\n if (!result.issues.length) {\n final.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [key],\n });\n }\n return;\n }\n if (result.value === undefined) {\n if (isPresent) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalIn = _catchall.optin === \"optional\";\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n // skip __proto__ so it can't replace the result prototype via the\n // assignment setter on the plain {} we build into\n if (key === \"__proto__\")\n continue;\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalIn = el._zod.optin === \"optional\";\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalIn = schema?._zod?.optin === \"optional\";\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalIn && isOptionalOut) {\n // For optional-in/out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else if (!isOptionalIn) {\n doc.write(`\n const ${id}_present = ${k} in input;\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n if (!${id}_present && !${id}.issues.length) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [${k}]\n });\n }\n\n if (${id}_present) {\n if (${id}.value === undefined) {\n newResult[${k}] = undefined;\n } else {\n newResult[${k}] = ${id}.value;\n }\n }\n\n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n // Fall back to union matching when the fast discriminator path fails:\n // - explicitly enabled via unionFallback, or\n // - during backward direction (encode), since codec-based discriminators\n // have different values in forward vs backward directions\n if (def.unionFallback || ctx.direction === \"backward\") {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n options: Array.from(disc.value.keys()),\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const optinStart = getTupleOptStart(items, \"optin\");\n const optoutStart = getTupleOptStart(items, \"optout\");\n if (!def.rest) {\n if (input.length < optinStart) {\n payload.issues.push({\n code: \"too_small\",\n minimum: optinStart,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n if (input.length > items.length) {\n payload.issues.push({\n code: \"too_big\",\n maximum: items.length,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n }\n }\n // Run every item in parallel, collecting results into an indexed\n // array. The post-processing in `handleTupleResults` walks them in\n // order so it can decide whether an absent optional-output error can\n // truncate the tail or must be reported to preserve required output.\n const itemResults = new Array(items.length);\n for (let i = 0; i < items.length; i++) {\n const r = items[i]._zod.run({ value: input[i], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((rr) => {\n itemResults[i] = rr;\n }));\n }\n else {\n itemResults[i] = r;\n }\n }\n if (def.rest) {\n let i = items.length - 1;\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({ value: el, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((r) => handleTupleResult(r, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => handleTupleResults(itemResults, payload, items, input, optoutStart));\n }\n return handleTupleResults(itemResults, payload, items, input, optoutStart);\n };\n});\nfunction getTupleOptStart(items, key) {\n for (let i = items.length - 1; i >= 0; i--) {\n if (items[i]._zod[key] !== \"optional\")\n return i + 1;\n }\n return 0;\n}\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nfunction handleTupleResults(itemResults, final, items, input, optoutStart) {\n // Walk results in order. Mirror $ZodObject's swallow-on-absent-optional\n // rule, but only after `optoutStart`: the first index where the output\n // tuple tail can be absent.\n for (let i = 0; i < items.length; i++) {\n const r = itemResults[i];\n const isPresent = i < input.length;\n if (r.issues.length) {\n if (!isPresent && i >= optoutStart) {\n final.value.length = i;\n break;\n }\n final.issues.push(...util.prefixIssues(i, r.issues));\n }\n final.value[i] = r.value;\n }\n // Drop trailing slots that produced `undefined` for absent input\n // (the array analog of an absent optional key on an object). The\n // `i >= input.length` floor is critical: an explicit `undefined`\n // *inside* the input must be preserved even when the schema is\n // optional-out (e.g. `z.string().or(z.undefined())` accepting an\n // explicit undefined value).\n for (let i = final.value.length - 1; i >= input.length; i--) {\n if (items[i]._zod.optout === \"optional\" && final.value[i] === undefined) {\n final.value.length = i;\n }\n else {\n break;\n }\n }\n return final;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n continue;\n }\n const outKey = keyResult.value;\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n // Reflect.ownKeys for Symbol-key support; filter non-enumerable to match z.object()\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n if (!Object.prototype.propertyIsEnumerable.call(input, key))\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n payload.fallback = true;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n payload.fallback = true;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (input === undefined && (result.issues.length || result.fallback)) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const input = payload.value;\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, input));\n return handleOptionalResult(result, input);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues, fallback: left.fallback }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodPreprocess = /*@__PURE__*/ core.$constructor(\"$ZodPreprocess\", (inst, def) => {\n $ZodPipe.init(inst, def);\n});\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // Cache the resolved inner type on the shared `def` so all clones of this\n // lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance,\n // preserving identity for cycle detection on recursive schemas.\n util.defineLazy(inst._zod, \"innerType\", () => {\n const d = def;\n if (!d._cachedInner)\n d._cachedInner = def.getter();\n return d._cachedInner;\n });\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createStandardJSONSchemaMethod = exports.createToJSONSchemaMethod = void 0;\nexports.initializeContext = initializeContext;\nexports.process = process;\nexports.extractDefs = extractDefs;\nexports.finalize = finalize;\nconst registries_js_1 = require(\"./registries.cjs\");\n// function initializeContext(inputs: JSONSchemaGeneratorParams): ToJSONSchemaContext {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nfunction initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? registries_js_1.globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nfunction process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && \"_prefault\" in result.schema)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nfunction extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nfunction finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // The `id` in `.meta()` is a Zod-specific registration tag used to extract\n // schemas into $defs — it is not user-facing JSON Schema metadata. Strip it\n // from the output body where it would otherwise leak. The id is preserved\n // implicitly via the $defs key (and via $ref paths).\n const rootMetaId = ctx.metadataRegistry.get(schema)?.id;\n if (rootMetaId !== undefined && result.id === rootMetaId)\n delete result.id;\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n if (seen.def.id === seen.defId)\n delete seen.def.id;\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: (0, exports.createStandardJSONSchemaMethod)(schema, \"input\", ctx.processors),\n output: (0, exports.createStandardJSONSchemaMethod)(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n if (_schema._zod.traits.has(\"$ZodCodec\"))\n return true;\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nconst createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexports.createToJSONSchemaMethod = createToJSONSchemaMethod;\nconst createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexports.createStandardJSONSchemaMethod = createStandardJSONSchemaMethod;\nimport { globalRegistry } from \"./registries.js\";\n// function initializeContext(inputs: JSONSchemaGeneratorParams): ToJSONSchemaContext {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && \"_prefault\" in result.schema)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // The `id` in `.meta()` is a Zod-specific registration tag used to extract\n // schemas into $defs — it is not user-facing JSON Schema metadata. Strip it\n // from the output body where it would otherwise leak. The id is preserved\n // implicitly via the $defs key (and via $ref paths).\n const rootMetaId = ctx.metadataRegistry.get(schema)?.id;\n if (rootMetaId !== undefined && result.id === rootMetaId)\n delete result.id;\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n if (seen.def.id === seen.defId)\n delete seen.def.id;\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n if (_schema._zod.traits.has(\"$ZodCodec\"))\n return true;\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Class = exports.BIGINT_FORMAT_RANGES = exports.NUMBER_FORMAT_RANGES = exports.primitiveTypes = exports.propertyKeyTypes = exports.getParsedType = exports.allowsEval = exports.captureStackTrace = void 0;\nexports.assertEqual = assertEqual;\nexports.assertNotEqual = assertNotEqual;\nexports.assertIs = assertIs;\nexports.assertNever = assertNever;\nexports.assert = assert;\nexports.getEnumValues = getEnumValues;\nexports.joinValues = joinValues;\nexports.jsonStringifyReplacer = jsonStringifyReplacer;\nexports.cached = cached;\nexports.nullish = nullish;\nexports.cleanRegex = cleanRegex;\nexports.floatSafeRemainder = floatSafeRemainder;\nexports.defineLazy = defineLazy;\nexports.objectClone = objectClone;\nexports.assignProp = assignProp;\nexports.mergeDefs = mergeDefs;\nexports.cloneDef = cloneDef;\nexports.getElementAtPath = getElementAtPath;\nexports.promiseAllObject = promiseAllObject;\nexports.randomString = randomString;\nexports.esc = esc;\nexports.slugify = slugify;\nexports.isObject = isObject;\nexports.isPlainObject = isPlainObject;\nexports.shallowClone = shallowClone;\nexports.numKeys = numKeys;\nexports.escapeRegex = escapeRegex;\nexports.clone = clone;\nexports.normalizeParams = normalizeParams;\nexports.createTransparentProxy = createTransparentProxy;\nexports.stringifyPrimitive = stringifyPrimitive;\nexports.optionalKeys = optionalKeys;\nexports.pick = pick;\nexports.omit = omit;\nexports.extend = extend;\nexports.safeExtend = safeExtend;\nexports.merge = merge;\nexports.partial = partial;\nexports.required = required;\nexports.aborted = aborted;\nexports.explicitlyAborted = explicitlyAborted;\nexports.prefixIssues = prefixIssues;\nexports.unwrapMessage = unwrapMessage;\nexports.finalizeIssue = finalizeIssue;\nexports.getSizableOrigin = getSizableOrigin;\nexports.getLengthableOrigin = getLengthableOrigin;\nexports.parsedType = parsedType;\nexports.issue = issue;\nexports.cleanEnum = cleanEnum;\nexports.base64ToUint8Array = base64ToUint8Array;\nexports.uint8ArrayToBase64 = uint8ArrayToBase64;\nexports.base64urlToUint8Array = base64urlToUint8Array;\nexports.uint8ArrayToBase64url = uint8ArrayToBase64url;\nexports.hexToUint8Array = hexToUint8Array;\nexports.uint8ArrayToHex = uint8ArrayToHex;\nconst core_js_1 = require(\"./core.cjs\");\n// functions\nfunction assertEqual(val) {\n return val;\n}\nfunction assertNotEqual(val) {\n return val;\n}\nfunction assertIs(_arg) { }\nfunction assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nfunction assert(_) { }\nfunction getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nfunction joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nfunction jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nfunction cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nfunction nullish(input) {\n return input === null || input === undefined;\n}\nfunction cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nfunction floatSafeRemainder(val, step) {\n const ratio = val / step;\n const roundedRatio = Math.round(ratio);\n // Use a relative epsilon scaled to the magnitude of the result\n const tolerance = Number.EPSILON * Math.max(Math.abs(ratio), 1);\n if (Math.abs(ratio - roundedRatio) < tolerance)\n return 0;\n return ratio - roundedRatio;\n}\nconst EVALUATING = /* @__PURE__*/ Symbol(\"evaluating\");\nfunction defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nfunction objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nfunction assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nfunction mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nfunction cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nfunction getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nfunction promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nfunction randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nfunction esc(str) {\n return JSON.stringify(str);\n}\nfunction slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexports.captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nfunction isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexports.allowsEval = cached(() => {\n // Skip the probe under `jitless`: strict CSPs report the caught `new Function`\n // as a `securitypolicyviolation` even though the throw is swallowed.\n if (core_js_1.globalConfig.jitless) {\n return false;\n }\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nfunction isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nfunction shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n if (o instanceof Map)\n return new Map(o);\n if (o instanceof Set)\n return new Set(o);\n return o;\n}\nfunction numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexports.getParsedType = getParsedType;\nexports.propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexports.primitiveTypes = new Set([\n \"string\",\n \"number\",\n \"bigint\",\n \"boolean\",\n \"symbol\",\n \"undefined\",\n]);\nfunction escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nfunction clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nfunction normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nfunction createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nfunction stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nfunction optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexports.NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexports.BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nfunction pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nfunction omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nfunction extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nfunction safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nfunction merge(a, b) {\n if (a._zod.def.checks?.length) {\n throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n }\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: b._zod.def.checks ?? [],\n });\n return clone(a, def);\n}\nfunction partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nfunction required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nfunction aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\n// Checks for explicit abort (continue === false), as opposed to implicit abort (continue === undefined).\n// Used to respect `abort: true` in .refine() even for checks that have a `when` function.\nfunction explicitlyAborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue === false) {\n return true;\n }\n }\n return false;\n}\nfunction prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nfunction unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nfunction finalizeIssue(iss, ctx, config) {\n const message = iss.message\n ? iss.message\n : (unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\");\n const { inst: _inst, continue: _continue, input: _input, ...rest } = iss;\n rest.path ?? (rest.path = []);\n rest.message = message;\n if (ctx?.reportInput) {\n rest.input = _input;\n }\n return rest;\n}\nfunction getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nfunction getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nfunction parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nfunction issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nfunction cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nfunction base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nfunction uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nfunction base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nfunction uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nfunction hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nfunction uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nclass Class {\n constructor(..._args) { }\n}\nexports.Class = Class;\nimport { globalConfig } from \"./core.js\";\n// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const ratio = val / step;\n const roundedRatio = Math.round(ratio);\n // Use a relative epsilon scaled to the magnitude of the result\n const tolerance = Number.EPSILON * Math.max(Math.abs(ratio), 1);\n if (Math.abs(ratio - roundedRatio) < tolerance)\n return 0;\n return ratio - roundedRatio;\n}\nconst EVALUATING = /* @__PURE__*/ Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = /* @__PURE__*/ cached(() => {\n // Skip the probe under `jitless`: strict CSPs report the caught `new Function`\n // as a `securitypolicyviolation` even though the throw is swallowed.\n if (globalConfig.jitless) {\n return false;\n }\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n if (o instanceof Map)\n return new Map(o);\n if (o instanceof Set)\n return new Set(o);\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = /* @__PURE__*/ new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = /* @__PURE__*/ new Set([\n \"string\",\n \"number\",\n \"bigint\",\n \"boolean\",\n \"symbol\",\n \"undefined\",\n]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n if (a._zod.def.checks?.length) {\n throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n }\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: b._zod.def.checks ?? [],\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\n// Checks for explicit abort (continue === false), as opposed to implicit abort (continue === undefined).\n// Used to respect `abort: true` in .refine() even for checks that have a `when` function.\nexport function explicitlyAborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue === false) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const message = iss.message\n ? iss.message\n : (unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\");\n const { inst: _inst, continue: _continue, input: _input, ...rest } = iss;\n rest.path ?? (rest.path = []);\n rest.message = message;\n if (ctx?.reportInput) {\n rest.input = _input;\n }\n return rest;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = {\n major: 4,\n minor: 4,\n patch: 3,\n};\nexport const version = {\n major: 4,\n minor: 4,\n patch: 3,\n};\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"حرف\", verb: \"أن يحوي\" },\n file: { unit: \"بايت\", verb: \"أن يحوي\" },\n array: { unit: \"عنصر\", verb: \"أن يحوي\" },\n set: { unit: \"عنصر\", verb: \"أن يحوي\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"مدخل\",\n email: \"بريد إلكتروني\",\n url: \"رابط\",\n emoji: \"إيموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاريخ ووقت بمعيار ISO\",\n date: \"تاريخ بمعيار ISO\",\n time: \"وقت بمعيار ISO\",\n duration: \"مدة بمعيار ISO\",\n ipv4: \"عنوان IPv4\",\n ipv6: \"عنوان IPv6\",\n cidrv4: \"مدى عناوين بصيغة IPv4\",\n cidrv6: \"مدى عناوين بصيغة IPv6\",\n base64: \"نَص بترميز base64-encoded\",\n base64url: \"نَص بترميز base64url-encoded\",\n json_string: \"نَص على هيئة JSON\",\n e164: \"رقم هاتف بمعيار E.164\",\n jwt: \"JWT\",\n template_literal: \"مدخل\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `مدخلات غير مقبولة: يفترض إدخال instanceof ${issue.expected}، ولكن تم إدخال ${received}`;\n }\n return `مدخلات غير مقبولة: يفترض إدخال ${expected}، ولكن تم إدخال ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `مدخلات غير مقبولة: يفترض إدخال ${util.stringifyPrimitive(issue.values[0])}`;\n return `اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"}`;\n return `أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `نَص غير مقبول: يجب أن يبدأ بـ \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `نَص غير مقبول: يجب أن ينتهي بـ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `نَص غير مقبول: يجب أن يتضمَّن \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} غير مقبول`;\n }\n case \"not_multiple_of\":\n return `رقم غير مقبول: يجب أن يكون من مضاعفات ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `معرف${issue.keys.length > 1 ? \"ات\" : \"\"} غريب${issue.keys.length > 1 ? \"ة\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `معرف غير مقبول في ${issue.origin}`;\n case \"invalid_union\":\n return \"مدخل غير مقبول\";\n case \"invalid_element\":\n return `مدخل غير مقبول في ${issue.origin}`;\n default:\n return \"مدخل غير مقبول\";\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حرف\", verb: \"أن يحوي\" },\n file: { unit: \"بايت\", verb: \"أن يحوي\" },\n array: { unit: \"عنصر\", verb: \"أن يحوي\" },\n set: { unit: \"عنصر\", verb: \"أن يحوي\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"مدخل\",\n email: \"بريد إلكتروني\",\n url: \"رابط\",\n emoji: \"إيموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاريخ ووقت بمعيار ISO\",\n date: \"تاريخ بمعيار ISO\",\n time: \"وقت بمعيار ISO\",\n duration: \"مدة بمعيار ISO\",\n ipv4: \"عنوان IPv4\",\n ipv6: \"عنوان IPv6\",\n cidrv4: \"مدى عناوين بصيغة IPv4\",\n cidrv6: \"مدى عناوين بصيغة IPv6\",\n base64: \"نَص بترميز base64-encoded\",\n base64url: \"نَص بترميز base64url-encoded\",\n json_string: \"نَص على هيئة JSON\",\n e164: \"رقم هاتف بمعيار E.164\",\n jwt: \"JWT\",\n template_literal: \"مدخل\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `مدخلات غير مقبولة: يفترض إدخال instanceof ${issue.expected}، ولكن تم إدخال ${received}`;\n }\n return `مدخلات غير مقبولة: يفترض إدخال ${expected}، ولكن تم إدخال ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `مدخلات غير مقبولة: يفترض إدخال ${util.stringifyPrimitive(issue.values[0])}`;\n return `اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"}`;\n return `أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `نَص غير مقبول: يجب أن يبدأ بـ \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `نَص غير مقبول: يجب أن ينتهي بـ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `نَص غير مقبول: يجب أن يتضمَّن \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} غير مقبول`;\n }\n case \"not_multiple_of\":\n return `رقم غير مقبول: يجب أن يكون من مضاعفات ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `معرف${issue.keys.length > 1 ? \"ات\" : \"\"} غريب${issue.keys.length > 1 ? \"ة\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `معرف غير مقبول في ${issue.origin}`;\n case \"invalid_union\":\n return \"مدخل غير مقبول\";\n case \"invalid_element\":\n return `مدخل غير مقبول في ${issue.origin}`;\n default:\n return \"مدخل غير مقبول\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"simvol\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"element\", verb: \"olmalıdır\" },\n set: { unit: \"element\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Yanlış dəyər: gözlənilən instanceof ${issue.expected}, daxil olan ${received}`;\n }\n return `Yanlış dəyər: gözlənilən ${expected}, daxil olan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanlış dəyər: gözlənilən ${util.stringifyPrimitive(issue.values[0])}`;\n return `Yanlış seçim: aşağıdakılardan biri olmalıdır: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanlış mətn: \"${_issue.prefix}\" ilə başlamalıdır`;\n if (_issue.format === \"ends_with\")\n return `Yanlış mətn: \"${_issue.suffix}\" ilə bitməlidir`;\n if (_issue.format === \"includes\")\n return `Yanlış mətn: \"${_issue.includes}\" daxil olmalıdır`;\n if (_issue.format === \"regex\")\n return `Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;\n return `Yanlış ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanlış ədəd: ${issue.divisor} ilə bölünə bilən olmalıdır`;\n case \"unrecognized_keys\":\n return `Tanınmayan açar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilində yanlış açar`;\n case \"invalid_union\":\n return \"Yanlış dəyər\";\n case \"invalid_element\":\n return `${issue.origin} daxilində yanlış dəyər`;\n default:\n return `Yanlış dəyər`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"simvol\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"element\", verb: \"olmalıdır\" },\n set: { unit: \"element\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Yanlış dəyər: gözlənilən instanceof ${issue.expected}, daxil olan ${received}`;\n }\n return `Yanlış dəyər: gözlənilən ${expected}, daxil olan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanlış dəyər: gözlənilən ${util.stringifyPrimitive(issue.values[0])}`;\n return `Yanlış seçim: aşağıdakılardan biri olmalıdır: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanlış mətn: \"${_issue.prefix}\" ilə başlamalıdır`;\n if (_issue.format === \"ends_with\")\n return `Yanlış mətn: \"${_issue.suffix}\" ilə bitməlidir`;\n if (_issue.format === \"includes\")\n return `Yanlış mətn: \"${_issue.includes}\" daxil olmalıdır`;\n if (_issue.format === \"regex\")\n return `Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;\n return `Yanlış ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanlış ədəd: ${issue.divisor} ilə bölünə bilən olmalıdır`;\n case \"unrecognized_keys\":\n return `Tanınmayan açar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilində yanlış açar`;\n case \"invalid_union\":\n return \"Yanlış dəyər\";\n case \"invalid_element\":\n return `${issue.origin} daxilində yanlış dəyər`;\n default:\n return `Yanlış dəyər`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nfunction getBelarusianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"сімвал\",\n few: \"сімвалы\",\n many: \"сімвалаў\",\n },\n verb: \"мець\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байты\",\n many: \"байтаў\",\n },\n verb: \"мець\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"увод\",\n email: \"email адрас\",\n url: \"URL\",\n emoji: \"эмодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата і час\",\n date: \"ISO дата\",\n time: \"ISO час\",\n duration: \"ISO працягласць\",\n ipv4: \"IPv4 адрас\",\n ipv6: \"IPv6 адрас\",\n cidrv4: \"IPv4 дыяпазон\",\n cidrv6: \"IPv6 дыяпазон\",\n base64: \"радок у фармаце base64\",\n base64url: \"радок у фармаце base64url\",\n json_string: \"JSON радок\",\n e164: \"нумар E.164\",\n jwt: \"JWT\",\n template_literal: \"увод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"лік\",\n array: \"масіў\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Няправільны ўвод: чакаўся instanceof ${issue.expected}, атрымана ${received}`;\n }\n return `Няправільны ўвод: чакаўся ${expected}, атрымана ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Няправільны ўвод: чакалася ${util.stringifyPrimitive(issue.values[0])}`;\n return `Няправільны варыянт: чакаўся адзін з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна быць ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта малы: чакалася, што ${issue.origin} павінна ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Занадта малы: чакалася, што ${issue.origin} павінна быць ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Няправільны радок: павінен пачынацца з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Няправільны радок: павінен заканчвацца на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Няправільны радок: павінен змяшчаць \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`;\n return `Няправільны ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Няправільны лік: павінен быць кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспазнаны ${issue.keys.length > 1 ? \"ключы\" : \"ключ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Няправільны ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Няправільны ўвод\";\n case \"invalid_element\":\n return `Няправільнае значэнне ў ${issue.origin}`;\n default:\n return `Няправільны ўвод`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"сімвал\",\n few: \"сімвалы\",\n many: \"сімвалаў\",\n },\n verb: \"мець\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байты\",\n many: \"байтаў\",\n },\n verb: \"мець\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"увод\",\n email: \"email адрас\",\n url: \"URL\",\n emoji: \"эмодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата і час\",\n date: \"ISO дата\",\n time: \"ISO час\",\n duration: \"ISO працягласць\",\n ipv4: \"IPv4 адрас\",\n ipv6: \"IPv6 адрас\",\n cidrv4: \"IPv4 дыяпазон\",\n cidrv6: \"IPv6 дыяпазон\",\n base64: \"радок у фармаце base64\",\n base64url: \"радок у фармаце base64url\",\n json_string: \"JSON радок\",\n e164: \"нумар E.164\",\n jwt: \"JWT\",\n template_literal: \"увод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"лік\",\n array: \"масіў\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Няправільны ўвод: чакаўся instanceof ${issue.expected}, атрымана ${received}`;\n }\n return `Няправільны ўвод: чакаўся ${expected}, атрымана ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Няправільны ўвод: чакалася ${util.stringifyPrimitive(issue.values[0])}`;\n return `Няправільны варыянт: чакаўся адзін з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна быць ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта малы: чакалася, што ${issue.origin} павінна ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Занадта малы: чакалася, што ${issue.origin} павінна быць ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Няправільны радок: павінен пачынацца з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Няправільны радок: павінен заканчвацца на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Няправільны радок: павінен змяшчаць \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`;\n return `Няправільны ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Няправільны лік: павінен быць кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспазнаны ${issue.keys.length > 1 ? \"ключы\" : \"ключ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Няправільны ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Няправільны ўвод\";\n case \"invalid_element\":\n return `Няправільнае значэнне ў ${issue.origin}`;\n default:\n return `Няправільны ўвод`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"символа\", verb: \"да съдържа\" },\n file: { unit: \"байта\", verb: \"да съдържа\" },\n array: { unit: \"елемента\", verb: \"да съдържа\" },\n set: { unit: \"елемента\", verb: \"да съдържа\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вход\",\n email: \"имейл адрес\",\n url: \"URL\",\n emoji: \"емоджи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO време\",\n date: \"ISO дата\",\n time: \"ISO време\",\n duration: \"ISO продължителност\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"base64-кодиран низ\",\n base64url: \"base64url-кодиран низ\",\n json_string: \"JSON низ\",\n e164: \"E.164 номер\",\n jwt: \"JWT\",\n template_literal: \"вход\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Невалиден вход: очакван instanceof ${issue.expected}, получен ${received}`;\n }\n return `Невалиден вход: очакван ${expected}, получен ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Невалиден вход: очакван ${util.stringifyPrimitive(issue.values[0])}`;\n return `Невалидна опция: очаквано едно от ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да съдържа ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елемента\"}`;\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да бъде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Твърде малко: очаква се ${issue.origin} да съдържа ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Твърде малко: очаква се ${issue.origin} да бъде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Невалиден низ: трябва да започва с \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Невалиден низ: трябва да завършва с \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Невалиден низ: трябва да включва \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Невалиден низ: трябва да съвпада с ${_issue.pattern}`;\n let invalid_adj = \"Невалиден\";\n if (_issue.format === \"emoji\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"datetime\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"date\")\n invalid_adj = \"Невалидна\";\n if (_issue.format === \"time\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"duration\")\n invalid_adj = \"Невалидна\";\n return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Невалидно число: трябва да бъде кратно на ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Неразпознат${issue.keys.length > 1 ? \"и\" : \"\"} ключ${issue.keys.length > 1 ? \"ове\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Невалиден ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Невалиден вход\";\n case \"invalid_element\":\n return `Невалидна стойност в ${issue.origin}`;\n default:\n return `Невалиден вход`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символа\", verb: \"да съдържа\" },\n file: { unit: \"байта\", verb: \"да съдържа\" },\n array: { unit: \"елемента\", verb: \"да съдържа\" },\n set: { unit: \"елемента\", verb: \"да съдържа\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вход\",\n email: \"имейл адрес\",\n url: \"URL\",\n emoji: \"емоджи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO време\",\n date: \"ISO дата\",\n time: \"ISO време\",\n duration: \"ISO продължителност\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"base64-кодиран низ\",\n base64url: \"base64url-кодиран низ\",\n json_string: \"JSON низ\",\n e164: \"E.164 номер\",\n jwt: \"JWT\",\n template_literal: \"вход\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Невалиден вход: очакван instanceof ${issue.expected}, получен ${received}`;\n }\n return `Невалиден вход: очакван ${expected}, получен ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Невалиден вход: очакван ${util.stringifyPrimitive(issue.values[0])}`;\n return `Невалидна опция: очаквано едно от ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да съдържа ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елемента\"}`;\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да бъде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Твърде малко: очаква се ${issue.origin} да съдържа ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Твърде малко: очаква се ${issue.origin} да бъде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Невалиден низ: трябва да започва с \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Невалиден низ: трябва да завършва с \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Невалиден низ: трябва да включва \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Невалиден низ: трябва да съвпада с ${_issue.pattern}`;\n let invalid_adj = \"Невалиден\";\n if (_issue.format === \"emoji\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"datetime\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"date\")\n invalid_adj = \"Невалидна\";\n if (_issue.format === \"time\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"duration\")\n invalid_adj = \"Невалидна\";\n return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Невалидно число: трябва да бъде кратно на ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Неразпознат${issue.keys.length > 1 ? \"и\" : \"\"} ключ${issue.keys.length > 1 ? \"ове\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Невалиден ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Невалиден вход\";\n case \"invalid_element\":\n return `Невалидна стойност в ${issue.origin}`;\n default:\n return `Невалиден вход`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"caràcters\", verb: \"contenir\" },\n file: { unit: \"bytes\", verb: \"contenir\" },\n array: { unit: \"elements\", verb: \"contenir\" },\n set: { unit: \"elements\", verb: \"contenir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"adreça electrònica\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"durada ISO\",\n ipv4: \"adreça IPv4\",\n ipv6: \"adreça IPv6\",\n cidrv4: \"rang IPv4\",\n cidrv6: \"rang IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"cadena codificada en base64url\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipus invàlid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n }\n return `Tipus invàlid: s'esperava ${expected}, s'ha rebut ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor invàlid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opció invàlida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a màxim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingués ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"com a mínim\" : \"més de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingués ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Format invàlid: ha de començar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format invàlid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format invàlid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`;\n return `Format invàlid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número invàlid: ha de ser múltiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clau invàlida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada invàlida\"; // Could also be \"Tipus d'unió invàlid\" but \"Entrada invàlida\" is more general\n case \"invalid_element\":\n return `Element invàlid a ${issue.origin}`;\n default:\n return `Entrada invàlida`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caràcters\", verb: \"contenir\" },\n file: { unit: \"bytes\", verb: \"contenir\" },\n array: { unit: \"elements\", verb: \"contenir\" },\n set: { unit: \"elements\", verb: \"contenir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"adreça electrònica\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"durada ISO\",\n ipv4: \"adreça IPv4\",\n ipv6: \"adreça IPv6\",\n cidrv4: \"rang IPv4\",\n cidrv6: \"rang IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"cadena codificada en base64url\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipus invàlid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n }\n return `Tipus invàlid: s'esperava ${expected}, s'ha rebut ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor invàlid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opció invàlida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a màxim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingués ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"com a mínim\" : \"més de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingués ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Format invàlid: ha de començar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format invàlid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format invàlid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`;\n return `Format invàlid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número invàlid: ha de ser múltiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clau invàlida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada invàlida\"; // Could also be \"Tipus d'unió invàlid\" but \"Entrada invàlida\" is more general\n case \"invalid_element\":\n return `Element invàlid a ${issue.origin}`;\n default:\n return `Entrada invàlida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaků\", verb: \"mít\" },\n file: { unit: \"bajtů\", verb: \"mít\" },\n array: { unit: \"prvků\", verb: \"mít\" },\n set: { unit: \"prvků\", verb: \"mít\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regulární výraz\",\n email: \"e-mailová adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"datum a čas ve formátu ISO\",\n date: \"datum ve formátu ISO\",\n time: \"čas ve formátu ISO\",\n duration: \"doba trvání ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"řetězec zakódovaný ve formátu base64\",\n base64url: \"řetězec zakódovaný ve formátu base64url\",\n json_string: \"řetězec ve formátu JSON\",\n e164: \"číslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"číslo\",\n string: \"řetězec\",\n function: \"funkce\",\n array: \"pole\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neplatný vstup: očekáváno instanceof ${issue.expected}, obdrženo ${received}`;\n }\n return `Neplatný vstup: očekáváno ${expected}, obdrženo ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatný vstup: očekáváno ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neplatná možnost: očekávána jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatný řetězec: musí začínat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatný řetězec: musí končit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatný řetězec: musí obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`;\n return `Neplatný formát ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatné číslo: musí být násobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neznámé klíče: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatný klíč v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatný vstup\";\n case \"invalid_element\":\n return `Neplatná hodnota v ${issue.origin}`;\n default:\n return `Neplatný vstup`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaků\", verb: \"mít\" },\n file: { unit: \"bajtů\", verb: \"mít\" },\n array: { unit: \"prvků\", verb: \"mít\" },\n set: { unit: \"prvků\", verb: \"mít\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regulární výraz\",\n email: \"e-mailová adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"datum a čas ve formátu ISO\",\n date: \"datum ve formátu ISO\",\n time: \"čas ve formátu ISO\",\n duration: \"doba trvání ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"řetězec zakódovaný ve formátu base64\",\n base64url: \"řetězec zakódovaný ve formátu base64url\",\n json_string: \"řetězec ve formátu JSON\",\n e164: \"číslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"číslo\",\n string: \"řetězec\",\n function: \"funkce\",\n array: \"pole\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neplatný vstup: očekáváno instanceof ${issue.expected}, obdrženo ${received}`;\n }\n return `Neplatný vstup: očekáváno ${expected}, obdrženo ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatný vstup: očekáváno ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neplatná možnost: očekávána jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatný řetězec: musí začínat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatný řetězec: musí končit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatný řetězec: musí obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`;\n return `Neplatný formát ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatné číslo: musí být násobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neznámé klíče: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatný klíč v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatný vstup\";\n case \"invalid_element\":\n return `Neplatná hodnota v ${issue.origin}`;\n default:\n return `Neplatný vstup`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"havde\" },\n file: { unit: \"bytes\", verb: \"havde\" },\n array: { unit: \"elementer\", verb: \"indeholdt\" },\n set: { unit: \"elementer\", verb: \"indeholdt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-mailadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslæt\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslæt\",\n duration: \"ISO-varighed\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodet streng\",\n base64url: \"base64url-kodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"streng\",\n number: \"tal\",\n boolean: \"boolean\",\n array: \"liste\",\n object: \"objekt\",\n set: \"sæt\",\n file: \"fil\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n }\n return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig værdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldigt valg: forventede en af følgende ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: skal matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldigt tal: skal være deleligt med ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukendte nøgler\" : \"Ukendt nøgle\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøgle i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n case \"invalid_element\":\n return `Ugyldig værdi i ${issue.origin}`;\n default:\n return `Ugyldigt input`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"havde\" },\n file: { unit: \"bytes\", verb: \"havde\" },\n array: { unit: \"elementer\", verb: \"indeholdt\" },\n set: { unit: \"elementer\", verb: \"indeholdt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-mailadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslæt\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslæt\",\n duration: \"ISO-varighed\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodet streng\",\n base64url: \"base64url-kodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"streng\",\n number: \"tal\",\n boolean: \"boolean\",\n array: \"liste\",\n object: \"objekt\",\n set: \"sæt\",\n file: \"fil\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n }\n return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig værdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldigt valg: forventede en af følgende ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: skal matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldigt tal: skal være deleligt med ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukendte nøgler\" : \"Ukendt nøgle\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøgle i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n case \"invalid_element\":\n return `Ugyldig værdi i ${issue.origin}`;\n default:\n return `Ugyldigt input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"Zeichen\", verb: \"zu haben\" },\n file: { unit: \"Bytes\", verb: \"zu haben\" },\n array: { unit: \"Elemente\", verb: \"zu haben\" },\n set: { unit: \"Elemente\", verb: \"zu haben\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"Eingabe\",\n email: \"E-Mail-Adresse\",\n url: \"URL\",\n emoji: \"Emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-Datum und -Uhrzeit\",\n date: \"ISO-Datum\",\n time: \"ISO-Uhrzeit\",\n duration: \"ISO-Dauer\",\n ipv4: \"IPv4-Adresse\",\n ipv6: \"IPv6-Adresse\",\n cidrv4: \"IPv4-Bereich\",\n cidrv6: \"IPv6-Bereich\",\n base64: \"Base64-codierter String\",\n base64url: \"Base64-URL-codierter String\",\n json_string: \"JSON-String\",\n e164: \"E.164-Nummer\",\n jwt: \"JWT\",\n template_literal: \"Eingabe\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"Zahl\",\n array: \"Array\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ungültige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n }\n return `Ungültige Eingabe: erwartet ${expected}, erhalten ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ungültige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ungültige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n }\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ungültiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ungültiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ungültiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ungültig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ungültige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schlüssel\" : \"Unbekannter Schlüssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ungültiger Schlüssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ungültige Eingabe\";\n case \"invalid_element\":\n return `Ungültiger Wert in ${issue.origin}`;\n default:\n return `Ungültige Eingabe`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"Zeichen\", verb: \"zu haben\" },\n file: { unit: \"Bytes\", verb: \"zu haben\" },\n array: { unit: \"Elemente\", verb: \"zu haben\" },\n set: { unit: \"Elemente\", verb: \"zu haben\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"Eingabe\",\n email: \"E-Mail-Adresse\",\n url: \"URL\",\n emoji: \"Emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-Datum und -Uhrzeit\",\n date: \"ISO-Datum\",\n time: \"ISO-Uhrzeit\",\n duration: \"ISO-Dauer\",\n ipv4: \"IPv4-Adresse\",\n ipv6: \"IPv6-Adresse\",\n cidrv4: \"IPv4-Bereich\",\n cidrv6: \"IPv6-Bereich\",\n base64: \"Base64-codierter String\",\n base64url: \"Base64-URL-codierter String\",\n json_string: \"JSON-String\",\n e164: \"E.164-Nummer\",\n jwt: \"JWT\",\n template_literal: \"Eingabe\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"Zahl\",\n array: \"Array\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ungültige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n }\n return `Ungültige Eingabe: erwartet ${expected}, erhalten ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ungültige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ungültige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n }\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ungültiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ungültiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ungültiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ungültig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ungültige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schlüssel\" : \"Unbekannter Schlüssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ungültiger Schlüssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ungültige Eingabe\";\n case \"invalid_element\":\n return `Ungültiger Wert in ${issue.origin}`;\n default:\n return `Ungültige Eingabe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"χαρακτήρες\", verb: \"να έχει\" },\n file: { unit: \"bytes\", verb: \"να έχει\" },\n array: { unit: \"στοιχεία\", verb: \"να έχει\" },\n set: { unit: \"στοιχεία\", verb: \"να έχει\" },\n map: { unit: \"καταχωρήσεις\", verb: \"να έχει\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"είσοδος\",\n email: \"διεύθυνση email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO ημερομηνία και ώρα\",\n date: \"ISO ημερομηνία\",\n time: \"ISO ώρα\",\n duration: \"ISO διάρκεια\",\n ipv4: \"διεύθυνση IPv4\",\n ipv6: \"διεύθυνση IPv6\",\n mac: \"διεύθυνση MAC\",\n cidrv4: \"εύρος IPv4\",\n cidrv6: \"εύρος IPv6\",\n base64: \"συμβολοσειρά κωδικοποιημένη σε base64\",\n base64url: \"συμβολοσειρά κωδικοποιημένη σε base64url\",\n json_string: \"συμβολοσειρά JSON\",\n e164: \"αριθμός E.164\",\n jwt: \"JWT\",\n template_literal: \"είσοδος\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (typeof issue.expected === \"string\" && /^[A-Z]/.test(issue.expected)) {\n return `Μη έγκυρη είσοδος: αναμενόταν instanceof ${issue.expected}, λήφθηκε ${received}`;\n }\n return `Μη έγκυρη είσοδος: αναμενόταν ${expected}, λήφθηκε ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Μη έγκυρη είσοδος: αναμενόταν ${util.stringifyPrimitive(issue.values[0])}`;\n return `Μη έγκυρη επιλογή: αναμενόταν ένα από ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Πολύ μεγάλο: αναμενόταν ${issue.origin ?? \"τιμή\"} να έχει ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"στοιχεία\"}`;\n return `Πολύ μεγάλο: αναμενόταν ${issue.origin ?? \"τιμή\"} να είναι ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Πολύ μικρό: αναμενόταν ${issue.origin} να έχει ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Πολύ μικρό: αναμενόταν ${issue.origin} να είναι ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Μη έγκυρη συμβολοσειρά: πρέπει να ξεκινά με \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Μη έγκυρη συμβολοσειρά: πρέπει να τελειώνει με \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Μη έγκυρη συμβολοσειρά: πρέπει να περιέχει \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Μη έγκυρη συμβολοσειρά: πρέπει να ταιριάζει με το μοτίβο ${_issue.pattern}`;\n return `Μη έγκυρο: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Μη έγκυρος αριθμός: πρέπει να είναι πολλαπλάσιο του ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Άγνωστ${issue.keys.length > 1 ? \"α\" : \"ο\"} κλειδ${issue.keys.length > 1 ? \"ιά\" : \"ί\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Μη έγκυρο κλειδί στο ${issue.origin}`;\n case \"invalid_union\":\n return \"Μη έγκυρη είσοδος\";\n case \"invalid_element\":\n return `Μη έγκυρη τιμή στο ${issue.origin}`;\n default:\n return `Μη έγκυρη είσοδος`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"χαρακτήρες\", verb: \"να έχει\" },\n file: { unit: \"bytes\", verb: \"να έχει\" },\n array: { unit: \"στοιχεία\", verb: \"να έχει\" },\n set: { unit: \"στοιχεία\", verb: \"να έχει\" },\n map: { unit: \"καταχωρήσεις\", verb: \"να έχει\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"είσοδος\",\n email: \"διεύθυνση email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO ημερομηνία και ώρα\",\n date: \"ISO ημερομηνία\",\n time: \"ISO ώρα\",\n duration: \"ISO διάρκεια\",\n ipv4: \"διεύθυνση IPv4\",\n ipv6: \"διεύθυνση IPv6\",\n mac: \"διεύθυνση MAC\",\n cidrv4: \"εύρος IPv4\",\n cidrv6: \"εύρος IPv6\",\n base64: \"συμβολοσειρά κωδικοποιημένη σε base64\",\n base64url: \"συμβολοσειρά κωδικοποιημένη σε base64url\",\n json_string: \"συμβολοσειρά JSON\",\n e164: \"αριθμός E.164\",\n jwt: \"JWT\",\n template_literal: \"είσοδος\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (typeof issue.expected === \"string\" && /^[A-Z]/.test(issue.expected)) {\n return `Μη έγκυρη είσοδος: αναμενόταν instanceof ${issue.expected}, λήφθηκε ${received}`;\n }\n return `Μη έγκυρη είσοδος: αναμενόταν ${expected}, λήφθηκε ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Μη έγκυρη είσοδος: αναμενόταν ${util.stringifyPrimitive(issue.values[0])}`;\n return `Μη έγκυρη επιλογή: αναμενόταν ένα από ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Πολύ μεγάλο: αναμενόταν ${issue.origin ?? \"τιμή\"} να έχει ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"στοιχεία\"}`;\n return `Πολύ μεγάλο: αναμενόταν ${issue.origin ?? \"τιμή\"} να είναι ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Πολύ μικρό: αναμενόταν ${issue.origin} να έχει ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Πολύ μικρό: αναμενόταν ${issue.origin} να είναι ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Μη έγκυρη συμβολοσειρά: πρέπει να ξεκινά με \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Μη έγκυρη συμβολοσειρά: πρέπει να τελειώνει με \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Μη έγκυρη συμβολοσειρά: πρέπει να περιέχει \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Μη έγκυρη συμβολοσειρά: πρέπει να ταιριάζει με το μοτίβο ${_issue.pattern}`;\n return `Μη έγκυρο: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Μη έγκυρος αριθμός: πρέπει να είναι πολλαπλάσιο του ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Άγνωστ${issue.keys.length > 1 ? \"α\" : \"ο\"} κλειδ${issue.keys.length > 1 ? \"ιά\" : \"ί\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Μη έγκυρο κλειδί στο ${issue.origin}`;\n case \"invalid_union\":\n return \"Μη έγκυρη είσοδος\";\n case \"invalid_element\":\n return `Μη έγκυρη τιμή στο ${issue.origin}`;\n default:\n return `Μη έγκυρη είσοδος`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n if (issue.options && Array.isArray(issue.options) && issue.options.length > 0) {\n const opts = issue.options.map((o) => `'${o}'`).join(\" | \");\n return `Invalid discriminator value. Expected ${opts}`;\n }\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n if (issue.options && Array.isArray(issue.options) && issue.options.length > 0) {\n const opts = issue.options.map((o) => `'${o}'`).join(\" | \");\n return `Invalid discriminator value. Expected ${opts}`;\n }\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"karaktrojn\", verb: \"havi\" },\n file: { unit: \"bajtojn\", verb: \"havi\" },\n array: { unit: \"elementojn\", verb: \"havi\" },\n set: { unit: \"elementojn\", verb: \"havi\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"enigo\",\n email: \"retadreso\",\n url: \"URL\",\n emoji: \"emoĝio\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datotempo\",\n date: \"ISO-dato\",\n time: \"ISO-tempo\",\n duration: \"ISO-daŭro\",\n ipv4: \"IPv4-adreso\",\n ipv6: \"IPv6-adreso\",\n cidrv4: \"IPv4-rango\",\n cidrv6: \"IPv6-rango\",\n base64: \"64-ume kodita karaktraro\",\n base64url: \"URL-64-ume kodita karaktraro\",\n json_string: \"JSON-karaktraro\",\n e164: \"E.164-nombro\",\n jwt: \"JWT\",\n template_literal: \"enigo\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombro\",\n array: \"tabelo\",\n null: \"senvalora\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nevalida enigo: atendiĝis instanceof ${issue.expected}, riceviĝis ${received}`;\n }\n return `Nevalida enigo: atendiĝis ${expected}, riceviĝis ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nevalida enigo: atendiĝis ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nevalida opcio: atendiĝis unu el ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Tro malgranda: atendiĝis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Tro malgranda: atendiĝis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nevalida karaktraro: devas komenciĝi per \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nevalida karaktraro: devas finiĝi per \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} ŝlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nevalida ŝlosilo en ${issue.origin}`;\n case \"invalid_union\":\n return \"Nevalida enigo\";\n case \"invalid_element\":\n return `Nevalida valoro en ${issue.origin}`;\n default:\n return `Nevalida enigo`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karaktrojn\", verb: \"havi\" },\n file: { unit: \"bajtojn\", verb: \"havi\" },\n array: { unit: \"elementojn\", verb: \"havi\" },\n set: { unit: \"elementojn\", verb: \"havi\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"enigo\",\n email: \"retadreso\",\n url: \"URL\",\n emoji: \"emoĝio\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datotempo\",\n date: \"ISO-dato\",\n time: \"ISO-tempo\",\n duration: \"ISO-daŭro\",\n ipv4: \"IPv4-adreso\",\n ipv6: \"IPv6-adreso\",\n cidrv4: \"IPv4-rango\",\n cidrv6: \"IPv6-rango\",\n base64: \"64-ume kodita karaktraro\",\n base64url: \"URL-64-ume kodita karaktraro\",\n json_string: \"JSON-karaktraro\",\n e164: \"E.164-nombro\",\n jwt: \"JWT\",\n template_literal: \"enigo\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombro\",\n array: \"tabelo\",\n null: \"senvalora\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nevalida enigo: atendiĝis instanceof ${issue.expected}, riceviĝis ${received}`;\n }\n return `Nevalida enigo: atendiĝis ${expected}, riceviĝis ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nevalida enigo: atendiĝis ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nevalida opcio: atendiĝis unu el ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Tro malgranda: atendiĝis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Tro malgranda: atendiĝis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nevalida karaktraro: devas komenciĝi per \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nevalida karaktraro: devas finiĝi per \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} ŝlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nevalida ŝlosilo en ${issue.origin}`;\n case \"invalid_union\":\n return \"Nevalida enigo\";\n case \"invalid_element\":\n return `Nevalida valoro en ${issue.origin}`;\n default:\n return `Nevalida enigo`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"tener\" },\n file: { unit: \"bytes\", verb: \"tener\" },\n array: { unit: \"elementos\", verb: \"tener\" },\n set: { unit: \"elementos\", verb: \"tener\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"dirección de correo electrónico\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"fecha y hora ISO\",\n date: \"fecha ISO\",\n time: \"hora ISO\",\n duration: \"duración ISO\",\n ipv4: \"dirección IPv4\",\n ipv6: \"dirección IPv6\",\n cidrv4: \"rango IPv4\",\n cidrv6: \"rango IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"URL codificada en base64\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"texto\",\n number: \"número\",\n boolean: \"booleano\",\n array: \"arreglo\",\n object: \"objeto\",\n set: \"conjunto\",\n file: \"archivo\",\n date: \"fecha\",\n bigint: \"número grande\",\n symbol: \"símbolo\",\n undefined: \"indefinido\",\n null: \"nulo\",\n function: \"función\",\n map: \"mapa\",\n record: \"registro\",\n tuple: \"tupla\",\n enum: \"enumeración\",\n union: \"unión\",\n literal: \"literal\",\n promise: \"promesa\",\n void: \"vacío\",\n never: \"nunca\",\n unknown: \"desconocido\",\n any: \"cualquiera\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrada inválida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n }\n return `Entrada inválida: se esperaba ${expected}, recibido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opción inválida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Demasiado pequeño: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado pequeño: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cadena inválida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inválida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inválida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`;\n return `Inválido ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número inválido: debe ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Llave inválida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Entrada inválida`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"tener\" },\n file: { unit: \"bytes\", verb: \"tener\" },\n array: { unit: \"elementos\", verb: \"tener\" },\n set: { unit: \"elementos\", verb: \"tener\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"dirección de correo electrónico\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"fecha y hora ISO\",\n date: \"fecha ISO\",\n time: \"hora ISO\",\n duration: \"duración ISO\",\n ipv4: \"dirección IPv4\",\n ipv6: \"dirección IPv6\",\n cidrv4: \"rango IPv4\",\n cidrv6: \"rango IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"URL codificada en base64\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"texto\",\n number: \"número\",\n boolean: \"booleano\",\n array: \"arreglo\",\n object: \"objeto\",\n set: \"conjunto\",\n file: \"archivo\",\n date: \"fecha\",\n bigint: \"número grande\",\n symbol: \"símbolo\",\n undefined: \"indefinido\",\n null: \"nulo\",\n function: \"función\",\n map: \"mapa\",\n record: \"registro\",\n tuple: \"tupla\",\n enum: \"enumeración\",\n union: \"unión\",\n literal: \"literal\",\n promise: \"promesa\",\n void: \"vacío\",\n never: \"nunca\",\n unknown: \"desconocido\",\n any: \"cualquiera\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrada inválida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n }\n return `Entrada inválida: se esperaba ${expected}, recibido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opción inválida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Demasiado pequeño: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado pequeño: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cadena inválida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inválida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inválida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`;\n return `Inválido ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número inválido: debe ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Llave inválida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Entrada inválida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"کاراکتر\", verb: \"داشته باشد\" },\n file: { unit: \"بایت\", verb: \"داشته باشد\" },\n array: { unit: \"آیتم\", verb: \"داشته باشد\" },\n set: { unit: \"آیتم\", verb: \"داشته باشد\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودی\",\n email: \"آدرس ایمیل\",\n url: \"URL\",\n emoji: \"ایموجی\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاریخ و زمان ایزو\",\n date: \"تاریخ ایزو\",\n time: \"زمان ایزو\",\n duration: \"مدت زمان ایزو\",\n ipv4: \"IPv4 آدرس\",\n ipv6: \"IPv6 آدرس\",\n cidrv4: \"IPv4 دامنه\",\n cidrv6: \"IPv6 دامنه\",\n base64: \"base64-encoded رشته\",\n base64url: \"base64url-encoded رشته\",\n json_string: \"JSON رشته\",\n e164: \"E.164 عدد\",\n jwt: \"JWT\",\n template_literal: \"ورودی\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"آرایه\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ورودی نامعتبر: می‌بایست instanceof ${issue.expected} می‌بود، ${received} دریافت شد`;\n }\n return `ورودی نامعتبر: می‌بایست ${expected} می‌بود، ${received} دریافت شد`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ورودی نامعتبر: می‌بایست ${util.stringifyPrimitive(issue.values[0])} می‌بود`;\n }\n return `گزینه نامعتبر: می‌بایست یکی از ${util.joinValues(issue.values, \"|\")} می‌بود`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"} باشد`;\n }\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} باشد`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} باشد`;\n }\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} باشد`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `رشته نامعتبر: باید با \"${_issue.prefix}\" شروع شود`;\n }\n if (_issue.format === \"ends_with\") {\n return `رشته نامعتبر: باید با \"${_issue.suffix}\" تمام شود`;\n }\n if (_issue.format === \"includes\") {\n return `رشته نامعتبر: باید شامل \"${_issue.includes}\" باشد`;\n }\n if (_issue.format === \"regex\") {\n return `رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} نامعتبر`;\n }\n case \"not_multiple_of\":\n return `عدد نامعتبر: باید مضرب ${issue.divisor} باشد`;\n case \"unrecognized_keys\":\n return `کلید${issue.keys.length > 1 ? \"های\" : \"\"} ناشناس: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `کلید ناشناس در ${issue.origin}`;\n case \"invalid_union\":\n return `ورودی نامعتبر`;\n case \"invalid_element\":\n return `مقدار نامعتبر در ${issue.origin}`;\n default:\n return `ورودی نامعتبر`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"کاراکتر\", verb: \"داشته باشد\" },\n file: { unit: \"بایت\", verb: \"داشته باشد\" },\n array: { unit: \"آیتم\", verb: \"داشته باشد\" },\n set: { unit: \"آیتم\", verb: \"داشته باشد\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودی\",\n email: \"آدرس ایمیل\",\n url: \"URL\",\n emoji: \"ایموجی\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاریخ و زمان ایزو\",\n date: \"تاریخ ایزو\",\n time: \"زمان ایزو\",\n duration: \"مدت زمان ایزو\",\n ipv4: \"IPv4 آدرس\",\n ipv6: \"IPv6 آدرس\",\n cidrv4: \"IPv4 دامنه\",\n cidrv6: \"IPv6 دامنه\",\n base64: \"base64-encoded رشته\",\n base64url: \"base64url-encoded رشته\",\n json_string: \"JSON رشته\",\n e164: \"E.164 عدد\",\n jwt: \"JWT\",\n template_literal: \"ورودی\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"آرایه\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ورودی نامعتبر: می‌بایست instanceof ${issue.expected} می‌بود، ${received} دریافت شد`;\n }\n return `ورودی نامعتبر: می‌بایست ${expected} می‌بود، ${received} دریافت شد`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ورودی نامعتبر: می‌بایست ${util.stringifyPrimitive(issue.values[0])} می‌بود`;\n }\n return `گزینه نامعتبر: می‌بایست یکی از ${util.joinValues(issue.values, \"|\")} می‌بود`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"} باشد`;\n }\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} باشد`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} باشد`;\n }\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} باشد`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `رشته نامعتبر: باید با \"${_issue.prefix}\" شروع شود`;\n }\n if (_issue.format === \"ends_with\") {\n return `رشته نامعتبر: باید با \"${_issue.suffix}\" تمام شود`;\n }\n if (_issue.format === \"includes\") {\n return `رشته نامعتبر: باید شامل \"${_issue.includes}\" باشد`;\n }\n if (_issue.format === \"regex\") {\n return `رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} نامعتبر`;\n }\n case \"not_multiple_of\":\n return `عدد نامعتبر: باید مضرب ${issue.divisor} باشد`;\n case \"unrecognized_keys\":\n return `کلید${issue.keys.length > 1 ? \"های\" : \"\"} ناشناس: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `کلید ناشناس در ${issue.origin}`;\n case \"invalid_union\":\n return `ورودی نامعتبر`;\n case \"invalid_element\":\n return `مقدار نامعتبر در ${issue.origin}`;\n default:\n return `ورودی نامعتبر`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"merkkiä\", subject: \"merkkijonon\" },\n file: { unit: \"tavua\", subject: \"tiedoston\" },\n array: { unit: \"alkiota\", subject: \"listan\" },\n set: { unit: \"alkiota\", subject: \"joukon\" },\n number: { unit: \"\", subject: \"luvun\" },\n bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n int: { unit: \"\", subject: \"kokonaisluvun\" },\n date: { unit: \"\", subject: \"päivämäärän\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"säännöllinen lauseke\",\n email: \"sähköpostiosoite\",\n url: \"URL-osoite\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-aikaleima\",\n date: \"ISO-päivämäärä\",\n time: \"ISO-aika\",\n duration: \"ISO-kesto\",\n ipv4: \"IPv4-osoite\",\n ipv6: \"IPv6-osoite\",\n cidrv4: \"IPv4-alue\",\n cidrv6: \"IPv6-alue\",\n base64: \"base64-koodattu merkkijono\",\n base64url: \"base64url-koodattu merkkijono\",\n json_string: \"JSON-merkkijono\",\n e164: \"E.164-luku\",\n jwt: \"JWT\",\n template_literal: \"templaattimerkkijono\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n }\n return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Virheellinen syöte: täytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: täytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon täytyy olla ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon täytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen syöte: täytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen syöte: täytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen syöte: täytyy sisältää \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: täytyy olla luvun ${issue.divisor} monikerta`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Virheellinen avain tietueessa\";\n case \"invalid_union\":\n return \"Virheellinen unioni\";\n case \"invalid_element\":\n return \"Virheellinen arvo joukossa\";\n default:\n return `Virheellinen syöte`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"merkkiä\", subject: \"merkkijonon\" },\n file: { unit: \"tavua\", subject: \"tiedoston\" },\n array: { unit: \"alkiota\", subject: \"listan\" },\n set: { unit: \"alkiota\", subject: \"joukon\" },\n number: { unit: \"\", subject: \"luvun\" },\n bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n int: { unit: \"\", subject: \"kokonaisluvun\" },\n date: { unit: \"\", subject: \"päivämäärän\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"säännöllinen lauseke\",\n email: \"sähköpostiosoite\",\n url: \"URL-osoite\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-aikaleima\",\n date: \"ISO-päivämäärä\",\n time: \"ISO-aika\",\n duration: \"ISO-kesto\",\n ipv4: \"IPv4-osoite\",\n ipv6: \"IPv6-osoite\",\n cidrv4: \"IPv4-alue\",\n cidrv6: \"IPv6-alue\",\n base64: \"base64-koodattu merkkijono\",\n base64url: \"base64url-koodattu merkkijono\",\n json_string: \"JSON-merkkijono\",\n e164: \"E.164-luku\",\n jwt: \"JWT\",\n template_literal: \"templaattimerkkijono\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n }\n return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Virheellinen syöte: täytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: täytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon täytyy olla ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon täytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen syöte: täytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen syöte: täytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen syöte: täytyy sisältää \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: täytyy olla luvun ${issue.divisor} monikerta`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Virheellinen avain tietueessa\";\n case \"invalid_union\":\n return \"Virheellinen unioni\";\n case \"invalid_element\":\n return \"Virheellinen arvo joukossa\";\n default:\n return `Virheellinen syöte`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse courriel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date-heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : attendu instanceof ${issue.expected}, reçu ${received}`;\n }\n return `Entrée invalide : attendu ${expected}, reçu ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"≤\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"≥\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au motif ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse courriel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date-heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : attendu instanceof ${issue.expected}, reçu ${received}`;\n }\n return `Entrée invalide : attendu ${expected}, reçu ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"≤\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"≥\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au motif ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date et heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n string: \"chaîne\",\n number: \"nombre\",\n int: \"entier\",\n boolean: \"booléen\",\n bigint: \"grand entier\",\n symbol: \"symbole\",\n undefined: \"indéfini\",\n null: \"null\",\n never: \"jamais\",\n void: \"vide\",\n date: \"date\",\n array: \"tableau\",\n object: \"objet\",\n tuple: \"tuple\",\n record: \"enregistrement\",\n map: \"carte\",\n set: \"ensemble\",\n file: \"fichier\",\n nonoptional: \"non-optionnel\",\n nan: \"NaN\",\n function: \"fonction\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : instanceof ${issue.expected} attendu, ${received} reçu`;\n }\n return `Entrée invalide : ${expected} attendu, ${received} reçu`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"élément(s)\"}`;\n return `Trop grand : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit être ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop petit : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Trop petit : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit être ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date et heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n string: \"chaîne\",\n number: \"nombre\",\n int: \"entier\",\n boolean: \"booléen\",\n bigint: \"grand entier\",\n symbol: \"symbole\",\n undefined: \"indéfini\",\n null: \"null\",\n never: \"jamais\",\n void: \"vide\",\n date: \"date\",\n array: \"tableau\",\n object: \"objet\",\n tuple: \"tuple\",\n record: \"enregistrement\",\n map: \"carte\",\n set: \"ensemble\",\n file: \"fichier\",\n nonoptional: \"non-optionnel\",\n nan: \"NaN\",\n function: \"fonction\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : instanceof ${issue.expected} attendu, ${received} reçu`;\n }\n return `Entrée invalide : ${expected} attendu, ${received} reçu`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"élément(s)\"}`;\n return `Trop grand : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit être ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop petit : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Trop petit : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit être ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n // Hebrew labels + grammatical gender\n const TypeNames = {\n string: { label: \"מחרוזת\", gender: \"f\" },\n number: { label: \"מספר\", gender: \"m\" },\n boolean: { label: \"ערך בוליאני\", gender: \"m\" },\n bigint: { label: \"BigInt\", gender: \"m\" },\n date: { label: \"תאריך\", gender: \"m\" },\n array: { label: \"מערך\", gender: \"m\" },\n object: { label: \"אובייקט\", gender: \"m\" },\n null: { label: \"ערך ריק (null)\", gender: \"m\" },\n undefined: { label: \"ערך לא מוגדר (undefined)\", gender: \"m\" },\n symbol: { label: \"סימבול (Symbol)\", gender: \"m\" },\n function: { label: \"פונקציה\", gender: \"f\" },\n map: { label: \"מפה (Map)\", gender: \"f\" },\n set: { label: \"קבוצה (Set)\", gender: \"f\" },\n file: { label: \"קובץ\", gender: \"m\" },\n promise: { label: \"Promise\", gender: \"m\" },\n NaN: { label: \"NaN\", gender: \"m\" },\n unknown: { label: \"ערך לא ידוע\", gender: \"m\" },\n value: { label: \"ערך\", gender: \"m\" },\n };\n // Sizing units for size-related messages + localized origin labels\n const Sizable = {\n string: { unit: \"תווים\", shortLabel: \"קצר\", longLabel: \"ארוך\" },\n file: { unit: \"בייטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n array: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n set: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n number: { unit: \"\", shortLabel: \"קטן\", longLabel: \"גדול\" }, // no unit\n };\n // Helpers — labels, articles, and verbs\n const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n const typeLabel = (t) => {\n const e = typeEntry(t);\n if (e)\n return e.label;\n // fallback: show raw string if unknown\n return t ?? TypeNames.unknown.label;\n };\n const withDefinite = (t) => `ה${typeLabel(t)}`;\n const verbFor = (t) => {\n const e = typeEntry(t);\n const gender = e?.gender ?? \"m\";\n return gender === \"f\" ? \"צריכה להיות\" : \"צריך להיות\";\n };\n const getSizing = (origin) => {\n if (!origin)\n return null;\n return Sizable[origin] ?? null;\n };\n const FormatDictionary = {\n regex: { label: \"קלט\", gender: \"m\" },\n email: { label: \"כתובת אימייל\", gender: \"f\" },\n url: { label: \"כתובת רשת\", gender: \"f\" },\n emoji: { label: \"אימוג'י\", gender: \"m\" },\n uuid: { label: \"UUID\", gender: \"m\" },\n nanoid: { label: \"nanoid\", gender: \"m\" },\n guid: { label: \"GUID\", gender: \"m\" },\n cuid: { label: \"cuid\", gender: \"m\" },\n cuid2: { label: \"cuid2\", gender: \"m\" },\n ulid: { label: \"ULID\", gender: \"m\" },\n xid: { label: \"XID\", gender: \"m\" },\n ksuid: { label: \"KSUID\", gender: \"m\" },\n datetime: { label: \"תאריך וזמן ISO\", gender: \"m\" },\n date: { label: \"תאריך ISO\", gender: \"m\" },\n time: { label: \"זמן ISO\", gender: \"m\" },\n duration: { label: \"משך זמן ISO\", gender: \"m\" },\n ipv4: { label: \"כתובת IPv4\", gender: \"f\" },\n ipv6: { label: \"כתובת IPv6\", gender: \"f\" },\n cidrv4: { label: \"טווח IPv4\", gender: \"m\" },\n cidrv6: { label: \"טווח IPv6\", gender: \"m\" },\n base64: { label: \"מחרוזת בבסיס 64\", gender: \"f\" },\n base64url: { label: \"מחרוזת בבסיס 64 לכתובות רשת\", gender: \"f\" },\n json_string: { label: \"מחרוזת JSON\", gender: \"f\" },\n e164: { label: \"מספר E.164\", gender: \"m\" },\n jwt: { label: \"JWT\", gender: \"m\" },\n ends_with: { label: \"קלט\", gender: \"m\" },\n includes: { label: \"קלט\", gender: \"m\" },\n lowercase: { label: \"קלט\", gender: \"m\" },\n starts_with: { label: \"קלט\", gender: \"m\" },\n uppercase: { label: \"קלט\", gender: \"m\" },\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n // Expected type: show without definite article for clearer Hebrew\n const expectedKey = issue.expected;\n const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n // Received: show localized label if known, otherwise constructor/raw\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `קלט לא תקין: צריך להיות instanceof ${issue.expected}, התקבל ${received}`;\n }\n return `קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`;\n }\n case \"invalid_value\": {\n if (issue.values.length === 1) {\n return `ערך לא תקין: הערך חייב להיות ${util.stringifyPrimitive(issue.values[0])}`;\n }\n // Join values with proper Hebrew formatting\n const stringified = issue.values.map((v) => util.stringifyPrimitive(v));\n if (issue.values.length === 2) {\n return `ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`;\n }\n // For 3+ values: \"a\", \"b\" או \"c\"\n const lastValue = stringified[stringified.length - 1];\n const restValues = stringified.slice(0, -1).join(\", \");\n return `ערך לא תקין: האפשרויות המתאימות הן ${restValues} או ${lastValue}`;\n }\n case \"too_big\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.longLabel ?? \"ארוך\"} מדי: ${subject} צריכה להכיל ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או פחות\" : \"לכל היותר\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `קטן או שווה ל-${issue.maximum}` : `קטן מ-${issue.maximum}`;\n return `גדול מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n const comparison = issue.inclusive\n ? `${issue.maximum} ${sizing?.unit ?? \"\"} או פחות`\n : `פחות מ-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n return `גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.longLabel ?? \"גדול\"} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.shortLabel ?? \"קצר\"} מדי: ${subject} צריכה להכיל ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או יותר\" : \"לפחות\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `גדול או שווה ל-${issue.minimum}` : `גדול מ-${issue.minimum}`;\n return `קטן מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n // Special case for singular (minimum === 1)\n if (issue.minimum === 1 && issue.inclusive) {\n const singularPhrase = issue.origin === \"set\" ? \"לפחות פריט אחד\" : \"לפחות פריט אחד\";\n return `קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`;\n }\n const comparison = issue.inclusive\n ? `${issue.minimum} ${sizing?.unit ?? \"\"} או יותר`\n : `יותר מ-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n return `קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \">=\" : \">\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.shortLabel ?? \"קטן\"} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n // These apply to strings — use feminine grammar + ה׳ הידיעה\n if (_issue.format === \"starts_with\")\n return `המחרוזת חייבת להתחיל ב \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `המחרוזת חייבת להסתיים ב \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `המחרוזת חייבת לכלול \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`;\n // Handle gender agreement for formats\n const nounEntry = FormatDictionary[_issue.format];\n const noun = nounEntry?.label ?? _issue.format;\n const gender = nounEntry?.gender ?? \"m\";\n const adjective = gender === \"f\" ? \"תקינה\" : \"תקין\";\n return `${noun} לא ${adjective}`;\n }\n case \"not_multiple_of\":\n return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `מפתח${issue.keys.length > 1 ? \"ות\" : \"\"} לא מזוה${issue.keys.length > 1 ? \"ים\" : \"ה\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\": {\n return `שדה לא תקין באובייקט`;\n }\n case \"invalid_union\":\n return \"קלט לא תקין\";\n case \"invalid_element\": {\n const place = withDefinite(issue.origin ?? \"array\");\n return `ערך לא תקין ב${place}`;\n }\n default:\n return `קלט לא תקין`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n // Hebrew labels + grammatical gender\n const TypeNames = {\n string: { label: \"מחרוזת\", gender: \"f\" },\n number: { label: \"מספר\", gender: \"m\" },\n boolean: { label: \"ערך בוליאני\", gender: \"m\" },\n bigint: { label: \"BigInt\", gender: \"m\" },\n date: { label: \"תאריך\", gender: \"m\" },\n array: { label: \"מערך\", gender: \"m\" },\n object: { label: \"אובייקט\", gender: \"m\" },\n null: { label: \"ערך ריק (null)\", gender: \"m\" },\n undefined: { label: \"ערך לא מוגדר (undefined)\", gender: \"m\" },\n symbol: { label: \"סימבול (Symbol)\", gender: \"m\" },\n function: { label: \"פונקציה\", gender: \"f\" },\n map: { label: \"מפה (Map)\", gender: \"f\" },\n set: { label: \"קבוצה (Set)\", gender: \"f\" },\n file: { label: \"קובץ\", gender: \"m\" },\n promise: { label: \"Promise\", gender: \"m\" },\n NaN: { label: \"NaN\", gender: \"m\" },\n unknown: { label: \"ערך לא ידוע\", gender: \"m\" },\n value: { label: \"ערך\", gender: \"m\" },\n };\n // Sizing units for size-related messages + localized origin labels\n const Sizable = {\n string: { unit: \"תווים\", shortLabel: \"קצר\", longLabel: \"ארוך\" },\n file: { unit: \"בייטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n array: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n set: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n number: { unit: \"\", shortLabel: \"קטן\", longLabel: \"גדול\" }, // no unit\n };\n // Helpers — labels, articles, and verbs\n const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n const typeLabel = (t) => {\n const e = typeEntry(t);\n if (e)\n return e.label;\n // fallback: show raw string if unknown\n return t ?? TypeNames.unknown.label;\n };\n const withDefinite = (t) => `ה${typeLabel(t)}`;\n const verbFor = (t) => {\n const e = typeEntry(t);\n const gender = e?.gender ?? \"m\";\n return gender === \"f\" ? \"צריכה להיות\" : \"צריך להיות\";\n };\n const getSizing = (origin) => {\n if (!origin)\n return null;\n return Sizable[origin] ?? null;\n };\n const FormatDictionary = {\n regex: { label: \"קלט\", gender: \"m\" },\n email: { label: \"כתובת אימייל\", gender: \"f\" },\n url: { label: \"כתובת רשת\", gender: \"f\" },\n emoji: { label: \"אימוג'י\", gender: \"m\" },\n uuid: { label: \"UUID\", gender: \"m\" },\n nanoid: { label: \"nanoid\", gender: \"m\" },\n guid: { label: \"GUID\", gender: \"m\" },\n cuid: { label: \"cuid\", gender: \"m\" },\n cuid2: { label: \"cuid2\", gender: \"m\" },\n ulid: { label: \"ULID\", gender: \"m\" },\n xid: { label: \"XID\", gender: \"m\" },\n ksuid: { label: \"KSUID\", gender: \"m\" },\n datetime: { label: \"תאריך וזמן ISO\", gender: \"m\" },\n date: { label: \"תאריך ISO\", gender: \"m\" },\n time: { label: \"זמן ISO\", gender: \"m\" },\n duration: { label: \"משך זמן ISO\", gender: \"m\" },\n ipv4: { label: \"כתובת IPv4\", gender: \"f\" },\n ipv6: { label: \"כתובת IPv6\", gender: \"f\" },\n cidrv4: { label: \"טווח IPv4\", gender: \"m\" },\n cidrv6: { label: \"טווח IPv6\", gender: \"m\" },\n base64: { label: \"מחרוזת בבסיס 64\", gender: \"f\" },\n base64url: { label: \"מחרוזת בבסיס 64 לכתובות רשת\", gender: \"f\" },\n json_string: { label: \"מחרוזת JSON\", gender: \"f\" },\n e164: { label: \"מספר E.164\", gender: \"m\" },\n jwt: { label: \"JWT\", gender: \"m\" },\n ends_with: { label: \"קלט\", gender: \"m\" },\n includes: { label: \"קלט\", gender: \"m\" },\n lowercase: { label: \"קלט\", gender: \"m\" },\n starts_with: { label: \"קלט\", gender: \"m\" },\n uppercase: { label: \"קלט\", gender: \"m\" },\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n // Expected type: show without definite article for clearer Hebrew\n const expectedKey = issue.expected;\n const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n // Received: show localized label if known, otherwise constructor/raw\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `קלט לא תקין: צריך להיות instanceof ${issue.expected}, התקבל ${received}`;\n }\n return `קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`;\n }\n case \"invalid_value\": {\n if (issue.values.length === 1) {\n return `ערך לא תקין: הערך חייב להיות ${util.stringifyPrimitive(issue.values[0])}`;\n }\n // Join values with proper Hebrew formatting\n const stringified = issue.values.map((v) => util.stringifyPrimitive(v));\n if (issue.values.length === 2) {\n return `ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`;\n }\n // For 3+ values: \"a\", \"b\" או \"c\"\n const lastValue = stringified[stringified.length - 1];\n const restValues = stringified.slice(0, -1).join(\", \");\n return `ערך לא תקין: האפשרויות המתאימות הן ${restValues} או ${lastValue}`;\n }\n case \"too_big\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.longLabel ?? \"ארוך\"} מדי: ${subject} צריכה להכיל ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או פחות\" : \"לכל היותר\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `קטן או שווה ל-${issue.maximum}` : `קטן מ-${issue.maximum}`;\n return `גדול מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n const comparison = issue.inclusive\n ? `${issue.maximum} ${sizing?.unit ?? \"\"} או פחות`\n : `פחות מ-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n return `גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.longLabel ?? \"גדול\"} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.shortLabel ?? \"קצר\"} מדי: ${subject} צריכה להכיל ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או יותר\" : \"לפחות\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `גדול או שווה ל-${issue.minimum}` : `גדול מ-${issue.minimum}`;\n return `קטן מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n // Special case for singular (minimum === 1)\n if (issue.minimum === 1 && issue.inclusive) {\n const singularPhrase = issue.origin === \"set\" ? \"לפחות פריט אחד\" : \"לפחות פריט אחד\";\n return `קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`;\n }\n const comparison = issue.inclusive\n ? `${issue.minimum} ${sizing?.unit ?? \"\"} או יותר`\n : `יותר מ-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n return `קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \">=\" : \">\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.shortLabel ?? \"קטן\"} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n // These apply to strings — use feminine grammar + ה׳ הידיעה\n if (_issue.format === \"starts_with\")\n return `המחרוזת חייבת להתחיל ב \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `המחרוזת חייבת להסתיים ב \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `המחרוזת חייבת לכלול \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`;\n // Handle gender agreement for formats\n const nounEntry = FormatDictionary[_issue.format];\n const noun = nounEntry?.label ?? _issue.format;\n const gender = nounEntry?.gender ?? \"m\";\n const adjective = gender === \"f\" ? \"תקינה\" : \"תקין\";\n return `${noun} לא ${adjective}`;\n }\n case \"not_multiple_of\":\n return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `מפתח${issue.keys.length > 1 ? \"ות\" : \"\"} לא מזוה${issue.keys.length > 1 ? \"ים\" : \"ה\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\": {\n return `שדה לא תקין באובייקט`;\n }\n case \"invalid_union\":\n return \"קלט לא תקין\";\n case \"invalid_element\": {\n const place = withDefinite(issue.origin ?? \"array\");\n return `ערך לא תקין ב${place}`;\n }\n default:\n return `קלט לא תקין`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakova\", verb: \"imati\" },\n file: { unit: \"bajtova\", verb: \"imati\" },\n array: { unit: \"stavki\", verb: \"imati\" },\n set: { unit: \"stavki\", verb: \"imati\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"unos\",\n email: \"email adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum i vrijeme\",\n date: \"ISO datum\",\n time: \"ISO vrijeme\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"IPv4 raspon\",\n cidrv6: \"IPv6 raspon\",\n base64: \"base64 kodirani tekst\",\n base64url: \"base64url kodirani tekst\",\n json_string: \"JSON tekst\",\n e164: \"E.164 broj\",\n jwt: \"JWT\",\n template_literal: \"unos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"tekst\",\n number: \"broj\",\n boolean: \"boolean\",\n array: \"niz\",\n object: \"objekt\",\n set: \"skup\",\n file: \"datoteka\",\n date: \"datum\",\n bigint: \"bigint\",\n symbol: \"simbol\",\n undefined: \"undefined\",\n null: \"null\",\n function: \"funkcija\",\n map: \"mapa\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neispravan unos: očekuje se instanceof ${issue.expected}, a primljeno je ${received}`;\n }\n return `Neispravan unos: očekuje se ${expected}, a primljeno je ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neispravna vrijednost: očekivano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neispravna opcija: očekivano jedno od ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Preveliko: očekivano da ${origin ?? \"vrijednost\"} ima ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemenata\"}`;\n return `Preveliko: očekivano da ${origin ?? \"vrijednost\"} bude ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Premalo: očekivano da ${origin} ima ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premalo: očekivano da ${origin} bude ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neispravan tekst: mora započinjati s \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neispravan tekst: mora završavati s \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neispravan tekst: mora sadržavati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neispravan tekst: mora odgovarati uzorku ${_issue.pattern}`;\n return `Neispravna ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neispravan broj: mora biti višekratnik od ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznat${issue.keys.length > 1 ? \"i ključevi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neispravan ključ u ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Neispravan unos\";\n case \"invalid_element\":\n return `Neispravna vrijednost u ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Neispravan unos`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakova\", verb: \"imati\" },\n file: { unit: \"bajtova\", verb: \"imati\" },\n array: { unit: \"stavki\", verb: \"imati\" },\n set: { unit: \"stavki\", verb: \"imati\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"unos\",\n email: \"email adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum i vrijeme\",\n date: \"ISO datum\",\n time: \"ISO vrijeme\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"IPv4 raspon\",\n cidrv6: \"IPv6 raspon\",\n base64: \"base64 kodirani tekst\",\n base64url: \"base64url kodirani tekst\",\n json_string: \"JSON tekst\",\n e164: \"E.164 broj\",\n jwt: \"JWT\",\n template_literal: \"unos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"tekst\",\n number: \"broj\",\n boolean: \"boolean\",\n array: \"niz\",\n object: \"objekt\",\n set: \"skup\",\n file: \"datoteka\",\n date: \"datum\",\n bigint: \"bigint\",\n symbol: \"simbol\",\n undefined: \"undefined\",\n null: \"null\",\n function: \"funkcija\",\n map: \"mapa\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neispravan unos: očekuje se instanceof ${issue.expected}, a primljeno je ${received}`;\n }\n return `Neispravan unos: očekuje se ${expected}, a primljeno je ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neispravna vrijednost: očekivano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neispravna opcija: očekivano jedno od ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Preveliko: očekivano da ${origin ?? \"vrijednost\"} ima ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemenata\"}`;\n return `Preveliko: očekivano da ${origin ?? \"vrijednost\"} bude ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Premalo: očekivano da ${origin} ima ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premalo: očekivano da ${origin} bude ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neispravan tekst: mora započinjati s \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neispravan tekst: mora završavati s \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neispravan tekst: mora sadržavati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neispravan tekst: mora odgovarati uzorku ${_issue.pattern}`;\n return `Neispravna ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neispravan broj: mora biti višekratnik od ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznat${issue.keys.length > 1 ? \"i ključevi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neispravan ključ u ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Neispravan unos\";\n case \"invalid_element\":\n return `Neispravna vrijednost u ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Neispravan unos`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"legyen\" },\n file: { unit: \"byte\", verb: \"legyen\" },\n array: { unit: \"elem\", verb: \"legyen\" },\n set: { unit: \"elem\", verb: \"legyen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"bemenet\",\n email: \"email cím\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO időbélyeg\",\n date: \"ISO dátum\",\n time: \"ISO idő\",\n duration: \"ISO időintervallum\",\n ipv4: \"IPv4 cím\",\n ipv6: \"IPv6 cím\",\n cidrv4: \"IPv4 tartomány\",\n cidrv6: \"IPv6 tartomány\",\n base64: \"base64-kódolt string\",\n base64url: \"base64url-kódolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 szám\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"szám\",\n array: \"tömb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Érvénytelen bemenet: a várt érték instanceof ${issue.expected}, a kapott érték ${received}`;\n }\n return `Érvénytelen bemenet: a várt érték ${expected}, a kapott érték ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Érvénytelen bemenet: a várt érték ${util.stringifyPrimitive(issue.values[0])}`;\n return `Érvénytelen opció: valamelyik érték várt ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Túl nagy: ${issue.origin ?? \"érték\"} mérete túl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `Túl nagy: a bemeneti érték ${issue.origin ?? \"érték\"} túl nagy: ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Túl kicsi: a bemeneti érték ${issue.origin} mérete túl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Túl kicsi: a bemeneti érték ${issue.origin} túl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Érvénytelen string: \"${_issue.prefix}\" értékkel kell kezdődnie`;\n if (_issue.format === \"ends_with\")\n return `Érvénytelen string: \"${_issue.suffix}\" értékkel kell végződnie`;\n if (_issue.format === \"includes\")\n return `Érvénytelen string: \"${_issue.includes}\" értéket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`;\n return `Érvénytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Érvénytelen szám: ${issue.divisor} többszörösének kell lennie`;\n case \"unrecognized_keys\":\n return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Érvénytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"Érvénytelen bemenet\";\n case \"invalid_element\":\n return `Érvénytelen érték: ${issue.origin}`;\n default:\n return `Érvénytelen bemenet`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"legyen\" },\n file: { unit: \"byte\", verb: \"legyen\" },\n array: { unit: \"elem\", verb: \"legyen\" },\n set: { unit: \"elem\", verb: \"legyen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"bemenet\",\n email: \"email cím\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO időbélyeg\",\n date: \"ISO dátum\",\n time: \"ISO idő\",\n duration: \"ISO időintervallum\",\n ipv4: \"IPv4 cím\",\n ipv6: \"IPv6 cím\",\n cidrv4: \"IPv4 tartomány\",\n cidrv6: \"IPv6 tartomány\",\n base64: \"base64-kódolt string\",\n base64url: \"base64url-kódolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 szám\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"szám\",\n array: \"tömb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Érvénytelen bemenet: a várt érték instanceof ${issue.expected}, a kapott érték ${received}`;\n }\n return `Érvénytelen bemenet: a várt érték ${expected}, a kapott érték ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Érvénytelen bemenet: a várt érték ${util.stringifyPrimitive(issue.values[0])}`;\n return `Érvénytelen opció: valamelyik érték várt ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Túl nagy: ${issue.origin ?? \"érték\"} mérete túl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `Túl nagy: a bemeneti érték ${issue.origin ?? \"érték\"} túl nagy: ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Túl kicsi: a bemeneti érték ${issue.origin} mérete túl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Túl kicsi: a bemeneti érték ${issue.origin} túl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Érvénytelen string: \"${_issue.prefix}\" értékkel kell kezdődnie`;\n if (_issue.format === \"ends_with\")\n return `Érvénytelen string: \"${_issue.suffix}\" értékkel kell végződnie`;\n if (_issue.format === \"includes\")\n return `Érvénytelen string: \"${_issue.includes}\" értéket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`;\n return `Érvénytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Érvénytelen szám: ${issue.divisor} többszörösének kell lennie`;\n case \"unrecognized_keys\":\n return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Érvénytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"Érvénytelen bemenet\";\n case \"invalid_element\":\n return `Érvénytelen érték: ${issue.origin}`;\n default:\n return `Érvénytelen bemenet`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nfunction getArmenianPlural(count, one, many) {\n return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n if (!word)\n return \"\";\n const vowels = [\"ա\", \"ե\", \"ը\", \"ի\", \"ո\", \"ու\", \"օ\"];\n const lastChar = word[word.length - 1];\n return word + (vowels.includes(lastChar) ? \"ն\" : \"ը\");\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"նշան\",\n many: \"նշաններ\",\n },\n verb: \"ունենալ\",\n },\n file: {\n unit: {\n one: \"բայթ\",\n many: \"բայթեր\",\n },\n verb: \"ունենալ\",\n },\n array: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n set: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"մուտք\",\n email: \"էլ. հասցե\",\n url: \"URL\",\n emoji: \"էմոջի\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO ամսաթիվ և ժամ\",\n date: \"ISO ամսաթիվ\",\n time: \"ISO ժամ\",\n duration: \"ISO տևողություն\",\n ipv4: \"IPv4 հասցե\",\n ipv6: \"IPv6 հասցե\",\n cidrv4: \"IPv4 միջակայք\",\n cidrv6: \"IPv6 միջակայք\",\n base64: \"base64 ձևաչափով տող\",\n base64url: \"base64url ձևաչափով տող\",\n json_string: \"JSON տող\",\n e164: \"E.164 համար\",\n jwt: \"JWT\",\n template_literal: \"մուտք\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"թիվ\",\n array: \"զանգված\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Սխալ մուտքագրում․ սպասվում էր instanceof ${issue.expected}, ստացվել է ${received}`;\n }\n return `Սխալ մուտքագրում․ սպասվում էր ${expected}, ստացվել է ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Սխալ մուտքագրում․ սպասվում էր ${util.stringifyPrimitive(issue.values[1])}`;\n return `Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} կունենա ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} լինի ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} կունենա ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} լինի ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Սխալ տող․ պետք է սկսվի \"${_issue.prefix}\"-ով`;\n if (_issue.format === \"ends_with\")\n return `Սխալ տող․ պետք է ավարտվի \"${_issue.suffix}\"-ով`;\n if (_issue.format === \"includes\")\n return `Սխալ տող․ պետք է պարունակի \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Սխալ տող․ պետք է համապատասխանի ${_issue.pattern} ձևաչափին`;\n return `Սխալ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Սխալ թիվ․ պետք է բազմապատիկ լինի ${issue.divisor}-ի`;\n case \"unrecognized_keys\":\n return `Չճանաչված բանալի${issue.keys.length > 1 ? \"ներ\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Սխալ բանալի ${withDefiniteArticle(issue.origin)}-ում`;\n case \"invalid_union\":\n return \"Սխալ մուտքագրում\";\n case \"invalid_element\":\n return `Սխալ արժեք ${withDefiniteArticle(issue.origin)}-ում`;\n default:\n return `Սխալ մուտքագրում`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nfunction getArmenianPlural(count, one, many) {\n return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n if (!word)\n return \"\";\n const vowels = [\"ա\", \"ե\", \"ը\", \"ի\", \"ո\", \"ու\", \"օ\"];\n const lastChar = word[word.length - 1];\n return word + (vowels.includes(lastChar) ? \"ն\" : \"ը\");\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"նշան\",\n many: \"նշաններ\",\n },\n verb: \"ունենալ\",\n },\n file: {\n unit: {\n one: \"բայթ\",\n many: \"բայթեր\",\n },\n verb: \"ունենալ\",\n },\n array: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n set: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"մուտք\",\n email: \"էլ. հասցե\",\n url: \"URL\",\n emoji: \"էմոջի\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO ամսաթիվ և ժամ\",\n date: \"ISO ամսաթիվ\",\n time: \"ISO ժամ\",\n duration: \"ISO տևողություն\",\n ipv4: \"IPv4 հասցե\",\n ipv6: \"IPv6 հասցե\",\n cidrv4: \"IPv4 միջակայք\",\n cidrv6: \"IPv6 միջակայք\",\n base64: \"base64 ձևաչափով տող\",\n base64url: \"base64url ձևաչափով տող\",\n json_string: \"JSON տող\",\n e164: \"E.164 համար\",\n jwt: \"JWT\",\n template_literal: \"մուտք\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"թիվ\",\n array: \"զանգված\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Սխալ մուտքագրում․ սպասվում էր instanceof ${issue.expected}, ստացվել է ${received}`;\n }\n return `Սխալ մուտքագրում․ սպասվում էր ${expected}, ստացվել է ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Սխալ մուտքագրում․ սպասվում էր ${util.stringifyPrimitive(issue.values[1])}`;\n return `Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} կունենա ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} լինի ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} կունենա ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} լինի ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Սխալ տող․ պետք է սկսվի \"${_issue.prefix}\"-ով`;\n if (_issue.format === \"ends_with\")\n return `Սխալ տող․ պետք է ավարտվի \"${_issue.suffix}\"-ով`;\n if (_issue.format === \"includes\")\n return `Սխալ տող․ պետք է պարունակի \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Սխալ տող․ պետք է համապատասխանի ${_issue.pattern} ձևաչափին`;\n return `Սխալ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Սխալ թիվ․ պետք է բազմապատիկ լինի ${issue.divisor}-ի`;\n case \"unrecognized_keys\":\n return `Չճանաչված բանալի${issue.keys.length > 1 ? \"ներ\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Սխալ բանալի ${withDefiniteArticle(issue.origin)}-ում`;\n case \"invalid_union\":\n return \"Սխալ մուտքագրում\";\n case \"invalid_element\":\n return `Սխալ արժեք ${withDefiniteArticle(issue.origin)}-ում`;\n default:\n return `Սխալ մուտքագրում`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"memiliki\" },\n file: { unit: \"byte\", verb: \"memiliki\" },\n array: { unit: \"item\", verb: \"memiliki\" },\n set: { unit: \"item\", verb: \"memiliki\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tanggal dan waktu format ISO\",\n date: \"tanggal format ISO\",\n time: \"jam format ISO\",\n duration: \"durasi format ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"rentang alamat IPv4\",\n cidrv6: \"rentang alamat IPv6\",\n base64: \"string dengan enkode base64\",\n base64url: \"string dengan enkode base64url\",\n json_string: \"string JSON\",\n e164: \"angka E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n }\n case \"not_multiple_of\":\n return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak valid di ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak valid\";\n case \"invalid_element\":\n return `Nilai tidak valid di ${issue.origin}`;\n default:\n return `Input tidak valid`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"memiliki\" },\n file: { unit: \"byte\", verb: \"memiliki\" },\n array: { unit: \"item\", verb: \"memiliki\" },\n set: { unit: \"item\", verb: \"memiliki\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tanggal dan waktu format ISO\",\n date: \"tanggal format ISO\",\n time: \"jam format ISO\",\n duration: \"durasi format ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"rentang alamat IPv4\",\n cidrv6: \"rentang alamat IPv6\",\n base64: \"string dengan enkode base64\",\n base64url: \"string dengan enkode base64url\",\n json_string: \"string JSON\",\n e164: \"angka E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n }\n case \"not_multiple_of\":\n return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak valid di ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak valid\";\n case \"invalid_element\":\n return `Nilai tidak valid di ${issue.origin}`;\n default:\n return `Input tidak valid`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zhCN = exports.vi = exports.uz = exports.ur = exports.uk = exports.ua = exports.tr = exports.th = exports.ta = exports.sv = exports.sl = exports.ru = exports.ro = exports.pt = exports.pl = exports.ps = exports.ota = exports.no = exports.nl = exports.ms = exports.mk = exports.lt = exports.ko = exports.km = exports.kh = exports.ka = exports.ja = exports.it = exports.is = exports.id = exports.hy = exports.hu = exports.hr = exports.he = exports.frCA = exports.fr = exports.fi = exports.fa = exports.es = exports.eo = exports.en = exports.el = exports.de = exports.da = exports.cs = exports.ca = exports.bg = exports.be = exports.az = exports.ar = void 0;\nexports.yo = exports.zhTW = void 0;\nvar ar_js_1 = require(\"./ar.cjs\");\nObject.defineProperty(exports, \"ar\", { enumerable: true, get: function () { return __importDefault(ar_js_1).default; } });\nvar az_js_1 = require(\"./az.cjs\");\nObject.defineProperty(exports, \"az\", { enumerable: true, get: function () { return __importDefault(az_js_1).default; } });\nvar be_js_1 = require(\"./be.cjs\");\nObject.defineProperty(exports, \"be\", { enumerable: true, get: function () { return __importDefault(be_js_1).default; } });\nvar bg_js_1 = require(\"./bg.cjs\");\nObject.defineProperty(exports, \"bg\", { enumerable: true, get: function () { return __importDefault(bg_js_1).default; } });\nvar ca_js_1 = require(\"./ca.cjs\");\nObject.defineProperty(exports, \"ca\", { enumerable: true, get: function () { return __importDefault(ca_js_1).default; } });\nvar cs_js_1 = require(\"./cs.cjs\");\nObject.defineProperty(exports, \"cs\", { enumerable: true, get: function () { return __importDefault(cs_js_1).default; } });\nvar da_js_1 = require(\"./da.cjs\");\nObject.defineProperty(exports, \"da\", { enumerable: true, get: function () { return __importDefault(da_js_1).default; } });\nvar de_js_1 = require(\"./de.cjs\");\nObject.defineProperty(exports, \"de\", { enumerable: true, get: function () { return __importDefault(de_js_1).default; } });\nvar el_js_1 = require(\"./el.cjs\");\nObject.defineProperty(exports, \"el\", { enumerable: true, get: function () { return __importDefault(el_js_1).default; } });\nvar en_js_1 = require(\"./en.cjs\");\nObject.defineProperty(exports, \"en\", { enumerable: true, get: function () { return __importDefault(en_js_1).default; } });\nvar eo_js_1 = require(\"./eo.cjs\");\nObject.defineProperty(exports, \"eo\", { enumerable: true, get: function () { return __importDefault(eo_js_1).default; } });\nvar es_js_1 = require(\"./es.cjs\");\nObject.defineProperty(exports, \"es\", { enumerable: true, get: function () { return __importDefault(es_js_1).default; } });\nvar fa_js_1 = require(\"./fa.cjs\");\nObject.defineProperty(exports, \"fa\", { enumerable: true, get: function () { return __importDefault(fa_js_1).default; } });\nvar fi_js_1 = require(\"./fi.cjs\");\nObject.defineProperty(exports, \"fi\", { enumerable: true, get: function () { return __importDefault(fi_js_1).default; } });\nvar fr_js_1 = require(\"./fr.cjs\");\nObject.defineProperty(exports, \"fr\", { enumerable: true, get: function () { return __importDefault(fr_js_1).default; } });\nvar fr_CA_js_1 = require(\"./fr-CA.cjs\");\nObject.defineProperty(exports, \"frCA\", { enumerable: true, get: function () { return __importDefault(fr_CA_js_1).default; } });\nvar he_js_1 = require(\"./he.cjs\");\nObject.defineProperty(exports, \"he\", { enumerable: true, get: function () { return __importDefault(he_js_1).default; } });\nvar hr_js_1 = require(\"./hr.cjs\");\nObject.defineProperty(exports, \"hr\", { enumerable: true, get: function () { return __importDefault(hr_js_1).default; } });\nvar hu_js_1 = require(\"./hu.cjs\");\nObject.defineProperty(exports, \"hu\", { enumerable: true, get: function () { return __importDefault(hu_js_1).default; } });\nvar hy_js_1 = require(\"./hy.cjs\");\nObject.defineProperty(exports, \"hy\", { enumerable: true, get: function () { return __importDefault(hy_js_1).default; } });\nvar id_js_1 = require(\"./id.cjs\");\nObject.defineProperty(exports, \"id\", { enumerable: true, get: function () { return __importDefault(id_js_1).default; } });\nvar is_js_1 = require(\"./is.cjs\");\nObject.defineProperty(exports, \"is\", { enumerable: true, get: function () { return __importDefault(is_js_1).default; } });\nvar it_js_1 = require(\"./it.cjs\");\nObject.defineProperty(exports, \"it\", { enumerable: true, get: function () { return __importDefault(it_js_1).default; } });\nvar ja_js_1 = require(\"./ja.cjs\");\nObject.defineProperty(exports, \"ja\", { enumerable: true, get: function () { return __importDefault(ja_js_1).default; } });\nvar ka_js_1 = require(\"./ka.cjs\");\nObject.defineProperty(exports, \"ka\", { enumerable: true, get: function () { return __importDefault(ka_js_1).default; } });\nvar kh_js_1 = require(\"./kh.cjs\");\nObject.defineProperty(exports, \"kh\", { enumerable: true, get: function () { return __importDefault(kh_js_1).default; } });\nvar km_js_1 = require(\"./km.cjs\");\nObject.defineProperty(exports, \"km\", { enumerable: true, get: function () { return __importDefault(km_js_1).default; } });\nvar ko_js_1 = require(\"./ko.cjs\");\nObject.defineProperty(exports, \"ko\", { enumerable: true, get: function () { return __importDefault(ko_js_1).default; } });\nvar lt_js_1 = require(\"./lt.cjs\");\nObject.defineProperty(exports, \"lt\", { enumerable: true, get: function () { return __importDefault(lt_js_1).default; } });\nvar mk_js_1 = require(\"./mk.cjs\");\nObject.defineProperty(exports, \"mk\", { enumerable: true, get: function () { return __importDefault(mk_js_1).default; } });\nvar ms_js_1 = require(\"./ms.cjs\");\nObject.defineProperty(exports, \"ms\", { enumerable: true, get: function () { return __importDefault(ms_js_1).default; } });\nvar nl_js_1 = require(\"./nl.cjs\");\nObject.defineProperty(exports, \"nl\", { enumerable: true, get: function () { return __importDefault(nl_js_1).default; } });\nvar no_js_1 = require(\"./no.cjs\");\nObject.defineProperty(exports, \"no\", { enumerable: true, get: function () { return __importDefault(no_js_1).default; } });\nvar ota_js_1 = require(\"./ota.cjs\");\nObject.defineProperty(exports, \"ota\", { enumerable: true, get: function () { return __importDefault(ota_js_1).default; } });\nvar ps_js_1 = require(\"./ps.cjs\");\nObject.defineProperty(exports, \"ps\", { enumerable: true, get: function () { return __importDefault(ps_js_1).default; } });\nvar pl_js_1 = require(\"./pl.cjs\");\nObject.defineProperty(exports, \"pl\", { enumerable: true, get: function () { return __importDefault(pl_js_1).default; } });\nvar pt_js_1 = require(\"./pt.cjs\");\nObject.defineProperty(exports, \"pt\", { enumerable: true, get: function () { return __importDefault(pt_js_1).default; } });\nvar ro_js_1 = require(\"./ro.cjs\");\nObject.defineProperty(exports, \"ro\", { enumerable: true, get: function () { return __importDefault(ro_js_1).default; } });\nvar ru_js_1 = require(\"./ru.cjs\");\nObject.defineProperty(exports, \"ru\", { enumerable: true, get: function () { return __importDefault(ru_js_1).default; } });\nvar sl_js_1 = require(\"./sl.cjs\");\nObject.defineProperty(exports, \"sl\", { enumerable: true, get: function () { return __importDefault(sl_js_1).default; } });\nvar sv_js_1 = require(\"./sv.cjs\");\nObject.defineProperty(exports, \"sv\", { enumerable: true, get: function () { return __importDefault(sv_js_1).default; } });\nvar ta_js_1 = require(\"./ta.cjs\");\nObject.defineProperty(exports, \"ta\", { enumerable: true, get: function () { return __importDefault(ta_js_1).default; } });\nvar th_js_1 = require(\"./th.cjs\");\nObject.defineProperty(exports, \"th\", { enumerable: true, get: function () { return __importDefault(th_js_1).default; } });\nvar tr_js_1 = require(\"./tr.cjs\");\nObject.defineProperty(exports, \"tr\", { enumerable: true, get: function () { return __importDefault(tr_js_1).default; } });\nvar ua_js_1 = require(\"./ua.cjs\");\nObject.defineProperty(exports, \"ua\", { enumerable: true, get: function () { return __importDefault(ua_js_1).default; } });\nvar uk_js_1 = require(\"./uk.cjs\");\nObject.defineProperty(exports, \"uk\", { enumerable: true, get: function () { return __importDefault(uk_js_1).default; } });\nvar ur_js_1 = require(\"./ur.cjs\");\nObject.defineProperty(exports, \"ur\", { enumerable: true, get: function () { return __importDefault(ur_js_1).default; } });\nvar uz_js_1 = require(\"./uz.cjs\");\nObject.defineProperty(exports, \"uz\", { enumerable: true, get: function () { return __importDefault(uz_js_1).default; } });\nvar vi_js_1 = require(\"./vi.cjs\");\nObject.defineProperty(exports, \"vi\", { enumerable: true, get: function () { return __importDefault(vi_js_1).default; } });\nvar zh_CN_js_1 = require(\"./zh-CN.cjs\");\nObject.defineProperty(exports, \"zhCN\", { enumerable: true, get: function () { return __importDefault(zh_CN_js_1).default; } });\nvar zh_TW_js_1 = require(\"./zh-TW.cjs\");\nObject.defineProperty(exports, \"zhTW\", { enumerable: true, get: function () { return __importDefault(zh_TW_js_1).default; } });\nvar yo_js_1 = require(\"./yo.cjs\");\nObject.defineProperty(exports, \"yo\", { enumerable: true, get: function () { return __importDefault(yo_js_1).default; } });\nexport { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as bg } from \"./bg.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as da } from \"./da.js\";\nexport { default as de } from \"./de.js\";\nexport { default as el } from \"./el.js\";\nexport { default as en } from \"./en.js\";\nexport { default as eo } from \"./eo.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hr } from \"./hr.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as hy } from \"./hy.js\";\nexport { default as id } from \"./id.js\";\nexport { default as is } from \"./is.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as ka } from \"./ka.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as km } from \"./km.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as lt } from \"./lt.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ro } from \"./ro.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as uk } from \"./uk.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as uz } from \"./uz.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\nexport { default as yo } from \"./yo.js\";\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"stafi\", verb: \"að hafa\" },\n file: { unit: \"bæti\", verb: \"að hafa\" },\n array: { unit: \"hluti\", verb: \"að hafa\" },\n set: { unit: \"hluti\", verb: \"að hafa\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"gildi\",\n email: \"netfang\",\n url: \"vefslóð\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dagsetning og tími\",\n date: \"ISO dagsetning\",\n time: \"ISO tími\",\n duration: \"ISO tímalengd\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded strengur\",\n base64url: \"base64url-encoded strengur\",\n json_string: \"JSON strengur\",\n e164: \"E.164 tölugildi\",\n jwt: \"JWT\",\n template_literal: \"gildi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"númer\",\n array: \"fylki\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera instanceof ${issue.expected}`;\n }\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Rangt gildi: gert ráð fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ógilt val: má vera eitt af eftirfarandi ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} sé ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Of lítið: gert er ráð fyrir að ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Of lítið: gert er ráð fyrir að ${issue.origin} sé ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ógildur strengur: verður að byrja á \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ógildur strengur: verður að enda á \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ógildur strengur: verður að innihalda \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ógildur strengur: verður að fylgja mynstri ${_issue.pattern}`;\n return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Röng tala: verður að vera margfeldi af ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Óþekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Rangur lykill í ${issue.origin}`;\n case \"invalid_union\":\n return \"Rangt gildi\";\n case \"invalid_element\":\n return `Rangt gildi í ${issue.origin}`;\n default:\n return `Rangt gildi`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"stafi\", verb: \"að hafa\" },\n file: { unit: \"bæti\", verb: \"að hafa\" },\n array: { unit: \"hluti\", verb: \"að hafa\" },\n set: { unit: \"hluti\", verb: \"að hafa\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"gildi\",\n email: \"netfang\",\n url: \"vefslóð\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dagsetning og tími\",\n date: \"ISO dagsetning\",\n time: \"ISO tími\",\n duration: \"ISO tímalengd\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded strengur\",\n base64url: \"base64url-encoded strengur\",\n json_string: \"JSON strengur\",\n e164: \"E.164 tölugildi\",\n jwt: \"JWT\",\n template_literal: \"gildi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"númer\",\n array: \"fylki\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera instanceof ${issue.expected}`;\n }\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Rangt gildi: gert ráð fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ógilt val: má vera eitt af eftirfarandi ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} sé ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Of lítið: gert er ráð fyrir að ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Of lítið: gert er ráð fyrir að ${issue.origin} sé ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ógildur strengur: verður að byrja á \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ógildur strengur: verður að enda á \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ógildur strengur: verður að innihalda \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ógildur strengur: verður að fylgja mynstri ${_issue.pattern}`;\n return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Röng tala: verður að vera margfeldi af ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Óþekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Rangur lykill í ${issue.origin}`;\n case \"invalid_union\":\n return \"Rangt gildi\";\n case \"invalid_element\":\n return `Rangt gildi í ${issue.origin}`;\n default:\n return `Rangt gildi`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"caratteri\", verb: \"avere\" },\n file: { unit: \"byte\", verb: \"avere\" },\n array: { unit: \"elementi\", verb: \"avere\" },\n set: { unit: \"elementi\", verb: \"avere\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"indirizzo email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e ora ISO\",\n date: \"data ISO\",\n time: \"ora ISO\",\n duration: \"durata ISO\",\n ipv4: \"indirizzo IPv4\",\n ipv6: \"indirizzo IPv6\",\n cidrv4: \"intervallo IPv4\",\n cidrv6: \"intervallo IPv6\",\n base64: \"stringa codificata in base64\",\n base64url: \"URL codificata in base64\",\n json_string: \"stringa JSON\",\n e164: \"numero E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numero\",\n array: \"vettore\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n }\n return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n return `Input non valido: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chiave non valida in ${issue.origin}`;\n case \"invalid_union\":\n return \"Input non valido\";\n case \"invalid_element\":\n return `Valore non valido in ${issue.origin}`;\n default:\n return `Input non valido`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caratteri\", verb: \"avere\" },\n file: { unit: \"byte\", verb: \"avere\" },\n array: { unit: \"elementi\", verb: \"avere\" },\n set: { unit: \"elementi\", verb: \"avere\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"indirizzo email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e ora ISO\",\n date: \"data ISO\",\n time: \"ora ISO\",\n duration: \"durata ISO\",\n ipv4: \"indirizzo IPv4\",\n ipv6: \"indirizzo IPv6\",\n cidrv4: \"intervallo IPv4\",\n cidrv6: \"intervallo IPv6\",\n base64: \"stringa codificata in base64\",\n base64url: \"URL codificata in base64\",\n json_string: \"stringa JSON\",\n e164: \"numero E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numero\",\n array: \"vettore\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n }\n return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n return `Input non valido: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chiave non valida in ${issue.origin}`;\n case \"invalid_union\":\n return \"Input non valido\";\n case \"invalid_element\":\n return `Valore non valido in ${issue.origin}`;\n default:\n return `Input non valido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"文字\", verb: \"である\" },\n file: { unit: \"バイト\", verb: \"である\" },\n array: { unit: \"要素\", verb: \"である\" },\n set: { unit: \"要素\", verb: \"である\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"入力値\",\n email: \"メールアドレス\",\n url: \"URL\",\n emoji: \"絵文字\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日時\",\n date: \"ISO日付\",\n time: \"ISO時刻\",\n duration: \"ISO期間\",\n ipv4: \"IPv4アドレス\",\n ipv6: \"IPv6アドレス\",\n cidrv4: \"IPv4範囲\",\n cidrv6: \"IPv6範囲\",\n base64: \"base64エンコード文字列\",\n base64url: \"base64urlエンコード文字列\",\n json_string: \"JSON文字列\",\n e164: \"E.164番号\",\n jwt: \"JWT\",\n template_literal: \"入力値\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数値\",\n array: \"配列\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無効な入力: instanceof ${issue.expected}が期待されましたが、${received}が入力されました`;\n }\n return `無効な入力: ${expected}が期待されましたが、${received}が入力されました`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無効な入力: ${util.stringifyPrimitive(issue.values[0])}が期待されました`;\n return `無効な選択: ${util.joinValues(issue.values, \"、\")}のいずれかである必要があります`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"以下である\" : \"より小さい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${sizing.unit ?? \"要素\"}${adj}必要があります`;\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${adj}必要があります`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"以上である\" : \"より大きい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${sizing.unit}${adj}必要があります`;\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${adj}必要があります`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `無効な文字列: \"${_issue.prefix}\"で始まる必要があります`;\n if (_issue.format === \"ends_with\")\n return `無効な文字列: \"${_issue.suffix}\"で終わる必要があります`;\n if (_issue.format === \"includes\")\n return `無効な文字列: \"${_issue.includes}\"を含む必要があります`;\n if (_issue.format === \"regex\")\n return `無効な文字列: パターン${_issue.pattern}に一致する必要があります`;\n return `無効な${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無効な数値: ${issue.divisor}の倍数である必要があります`;\n case \"unrecognized_keys\":\n return `認識されていないキー${issue.keys.length > 1 ? \"群\" : \"\"}: ${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin}内の無効なキー`;\n case \"invalid_union\":\n return \"無効な入力\";\n case \"invalid_element\":\n return `${issue.origin}内の無効な値`;\n default:\n return `無効な入力`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"文字\", verb: \"である\" },\n file: { unit: \"バイト\", verb: \"である\" },\n array: { unit: \"要素\", verb: \"である\" },\n set: { unit: \"要素\", verb: \"である\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"入力値\",\n email: \"メールアドレス\",\n url: \"URL\",\n emoji: \"絵文字\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日時\",\n date: \"ISO日付\",\n time: \"ISO時刻\",\n duration: \"ISO期間\",\n ipv4: \"IPv4アドレス\",\n ipv6: \"IPv6アドレス\",\n cidrv4: \"IPv4範囲\",\n cidrv6: \"IPv6範囲\",\n base64: \"base64エンコード文字列\",\n base64url: \"base64urlエンコード文字列\",\n json_string: \"JSON文字列\",\n e164: \"E.164番号\",\n jwt: \"JWT\",\n template_literal: \"入力値\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数値\",\n array: \"配列\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無効な入力: instanceof ${issue.expected}が期待されましたが、${received}が入力されました`;\n }\n return `無効な入力: ${expected}が期待されましたが、${received}が入力されました`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無効な入力: ${util.stringifyPrimitive(issue.values[0])}が期待されました`;\n return `無効な選択: ${util.joinValues(issue.values, \"、\")}のいずれかである必要があります`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"以下である\" : \"より小さい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${sizing.unit ?? \"要素\"}${adj}必要があります`;\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${adj}必要があります`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"以上である\" : \"より大きい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${sizing.unit}${adj}必要があります`;\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${adj}必要があります`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `無効な文字列: \"${_issue.prefix}\"で始まる必要があります`;\n if (_issue.format === \"ends_with\")\n return `無効な文字列: \"${_issue.suffix}\"で終わる必要があります`;\n if (_issue.format === \"includes\")\n return `無効な文字列: \"${_issue.includes}\"を含む必要があります`;\n if (_issue.format === \"regex\")\n return `無効な文字列: パターン${_issue.pattern}に一致する必要があります`;\n return `無効な${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無効な数値: ${issue.divisor}の倍数である必要があります`;\n case \"unrecognized_keys\":\n return `認識されていないキー${issue.keys.length > 1 ? \"群\" : \"\"}: ${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin}内の無効なキー`;\n case \"invalid_union\":\n return \"無効な入力\";\n case \"invalid_element\":\n return `${issue.origin}内の無効な値`;\n default:\n return `無効な入力`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"სიმბოლო\", verb: \"უნდა შეიცავდეს\" },\n file: { unit: \"ბაიტი\", verb: \"უნდა შეიცავდეს\" },\n array: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n set: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"შეყვანა\",\n email: \"ელ-ფოსტის მისამართი\",\n url: \"URL\",\n emoji: \"ემოჯი\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"თარიღი-დრო\",\n date: \"თარიღი\",\n time: \"დრო\",\n duration: \"ხანგრძლივობა\",\n ipv4: \"IPv4 მისამართი\",\n ipv6: \"IPv6 მისამართი\",\n cidrv4: \"IPv4 დიაპაზონი\",\n cidrv6: \"IPv6 დიაპაზონი\",\n base64: \"base64-კოდირებული ველი\",\n base64url: \"base64url-კოდირებული ველი\",\n json_string: \"JSON ველი\",\n e164: \"E.164 ნომერი\",\n jwt: \"JWT\",\n template_literal: \"შეყვანა\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"რიცხვი\",\n string: \"ველი\",\n boolean: \"ბულეანი\",\n function: \"ფუნქცია\",\n array: \"მასივი\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `არასწორი შეყვანა: მოსალოდნელი instanceof ${issue.expected}, მიღებული ${received}`;\n }\n return `არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `არასწორი შეყვანა: მოსალოდნელი ${util.stringifyPrimitive(issue.values[0])}`;\n return `არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${util.joinValues(issue.values, \"|\")}-დან`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} იყოს ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} იყოს ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `არასწორი ველი: უნდა იწყებოდეს \"${_issue.prefix}\"-ით`;\n }\n if (_issue.format === \"ends_with\")\n return `არასწორი ველი: უნდა მთავრდებოდეს \"${_issue.suffix}\"-ით`;\n if (_issue.format === \"includes\")\n return `არასწორი ველი: უნდა შეიცავდეს \"${_issue.includes}\"-ს`;\n if (_issue.format === \"regex\")\n return `არასწორი ველი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`;\n return `არასწორი ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `არასწორი რიცხვი: უნდა იყოს ${issue.divisor}-ის ჯერადი`;\n case \"unrecognized_keys\":\n return `უცნობი გასაღებ${issue.keys.length > 1 ? \"ები\" : \"ი\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `არასწორი გასაღები ${issue.origin}-ში`;\n case \"invalid_union\":\n return \"არასწორი შეყვანა\";\n case \"invalid_element\":\n return `არასწორი მნიშვნელობა ${issue.origin}-ში`;\n default:\n return `არასწორი შეყვანა`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"სიმბოლო\", verb: \"უნდა შეიცავდეს\" },\n file: { unit: \"ბაიტი\", verb: \"უნდა შეიცავდეს\" },\n array: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n set: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"შეყვანა\",\n email: \"ელ-ფოსტის მისამართი\",\n url: \"URL\",\n emoji: \"ემოჯი\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"თარიღი-დრო\",\n date: \"თარიღი\",\n time: \"დრო\",\n duration: \"ხანგრძლივობა\",\n ipv4: \"IPv4 მისამართი\",\n ipv6: \"IPv6 მისამართი\",\n cidrv4: \"IPv4 დიაპაზონი\",\n cidrv6: \"IPv6 დიაპაზონი\",\n base64: \"base64-კოდირებული ველი\",\n base64url: \"base64url-კოდირებული ველი\",\n json_string: \"JSON ველი\",\n e164: \"E.164 ნომერი\",\n jwt: \"JWT\",\n template_literal: \"შეყვანა\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"რიცხვი\",\n string: \"ველი\",\n boolean: \"ბულეანი\",\n function: \"ფუნქცია\",\n array: \"მასივი\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `არასწორი შეყვანა: მოსალოდნელი instanceof ${issue.expected}, მიღებული ${received}`;\n }\n return `არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `არასწორი შეყვანა: მოსალოდნელი ${util.stringifyPrimitive(issue.values[0])}`;\n return `არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${util.joinValues(issue.values, \"|\")}-დან`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} იყოს ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} იყოს ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `არასწორი ველი: უნდა იწყებოდეს \"${_issue.prefix}\"-ით`;\n }\n if (_issue.format === \"ends_with\")\n return `არასწორი ველი: უნდა მთავრდებოდეს \"${_issue.suffix}\"-ით`;\n if (_issue.format === \"includes\")\n return `არასწორი ველი: უნდა შეიცავდეს \"${_issue.includes}\"-ს`;\n if (_issue.format === \"regex\")\n return `არასწორი ველი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`;\n return `არასწორი ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `არასწორი რიცხვი: უნდა იყოს ${issue.divisor}-ის ჯერადი`;\n case \"unrecognized_keys\":\n return `უცნობი გასაღებ${issue.keys.length > 1 ? \"ები\" : \"ი\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `არასწორი გასაღები ${issue.origin}-ში`;\n case \"invalid_union\":\n return \"არასწორი შეყვანა\";\n case \"invalid_element\":\n return `არასწორი მნიშვნელობა ${issue.origin}-ში`;\n default:\n return `არასწორი შეყვანა`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst km_js_1 = __importDefault(require(\"./km.cjs\"));\n/** @deprecated Use `km` instead. */\nfunction default_1() {\n return (0, km_js_1.default)();\n}\nmodule.exports = exports.default;\nimport km from \"./km.js\";\n/** @deprecated Use `km` instead. */\nexport default function () {\n return km();\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"តួអក្សរ\", verb: \"គួរមាន\" },\n file: { unit: \"បៃ\", verb: \"គួរមាន\" },\n array: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n set: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ទិន្នន័យបញ្ចូល\",\n email: \"អាសយដ្ឋានអ៊ីមែល\",\n url: \"URL\",\n emoji: \"សញ្ញាអារម្មណ៍\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"កាលបរិច្ឆេទ និងម៉ោង ISO\",\n date: \"កាលបរិច្ឆេទ ISO\",\n time: \"ម៉ោង ISO\",\n duration: \"រយៈពេល ISO\",\n ipv4: \"អាសយដ្ឋាន IPv4\",\n ipv6: \"អាសយដ្ឋាន IPv6\",\n cidrv4: \"ដែនអាសយដ្ឋាន IPv4\",\n cidrv6: \"ដែនអាសយដ្ឋាន IPv6\",\n base64: \"ខ្សែអក្សរអ៊ិកូដ base64\",\n base64url: \"ខ្សែអក្សរអ៊ិកូដ base64url\",\n json_string: \"ខ្សែអក្សរ JSON\",\n e164: \"លេខ E.164\",\n jwt: \"JWT\",\n template_literal: \"ទិន្នន័យបញ្ចូល\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"លេខ\",\n array: \"អារេ (Array)\",\n null: \"គ្មានតម្លៃ (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${issue.expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${util.stringifyPrimitive(issue.values[0])}`;\n return `ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"ធាតុ\"}`;\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;\n return `មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `រកឃើញសោមិនស្គាល់៖ ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `សោមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n case \"invalid_union\":\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n case \"invalid_element\":\n return `ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n default:\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"តួអក្សរ\", verb: \"គួរមាន\" },\n file: { unit: \"បៃ\", verb: \"គួរមាន\" },\n array: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n set: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ទិន្នន័យបញ្ចូល\",\n email: \"អាសយដ្ឋានអ៊ីមែល\",\n url: \"URL\",\n emoji: \"សញ្ញាអារម្មណ៍\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"កាលបរិច្ឆេទ និងម៉ោង ISO\",\n date: \"កាលបរិច្ឆេទ ISO\",\n time: \"ម៉ោង ISO\",\n duration: \"រយៈពេល ISO\",\n ipv4: \"អាសយដ្ឋាន IPv4\",\n ipv6: \"អាសយដ្ឋាន IPv6\",\n cidrv4: \"ដែនអាសយដ្ឋាន IPv4\",\n cidrv6: \"ដែនអាសយដ្ឋាន IPv6\",\n base64: \"ខ្សែអក្សរអ៊ិកូដ base64\",\n base64url: \"ខ្សែអក្សរអ៊ិកូដ base64url\",\n json_string: \"ខ្សែអក្សរ JSON\",\n e164: \"លេខ E.164\",\n jwt: \"JWT\",\n template_literal: \"ទិន្នន័យបញ្ចូល\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"លេខ\",\n array: \"អារេ (Array)\",\n null: \"គ្មានតម្លៃ (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${issue.expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${util.stringifyPrimitive(issue.values[0])}`;\n return `ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"ធាតុ\"}`;\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;\n return `មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `រកឃើញសោមិនស្គាល់៖ ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `សោមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n case \"invalid_union\":\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n case \"invalid_element\":\n return `ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n default:\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"문자\", verb: \"to have\" },\n file: { unit: \"바이트\", verb: \"to have\" },\n array: { unit: \"개\", verb: \"to have\" },\n set: { unit: \"개\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"입력\",\n email: \"이메일 주소\",\n url: \"URL\",\n emoji: \"이모지\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 날짜시간\",\n date: \"ISO 날짜\",\n time: \"ISO 시간\",\n duration: \"ISO 기간\",\n ipv4: \"IPv4 주소\",\n ipv6: \"IPv6 주소\",\n cidrv4: \"IPv4 범위\",\n cidrv6: \"IPv6 범위\",\n base64: \"base64 인코딩 문자열\",\n base64url: \"base64url 인코딩 문자열\",\n json_string: \"JSON 문자열\",\n e164: \"E.164 번호\",\n jwt: \"JWT\",\n template_literal: \"입력\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `잘못된 입력: 예상 타입은 instanceof ${issue.expected}, 받은 타입은 ${received}입니다`;\n }\n return `잘못된 입력: 예상 타입은 ${expected}, 받은 타입은 ${received}입니다`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `잘못된 입력: 값은 ${util.stringifyPrimitive(issue.values[0])} 이어야 합니다`;\n return `잘못된 옵션: ${util.joinValues(issue.values, \"또는 \")} 중 하나여야 합니다`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"이하\" : \"미만\";\n const suffix = adj === \"미만\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing)\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"이상\" : \"초과\";\n const suffix = adj === \"이상\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing) {\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `잘못된 문자열: \"${_issue.prefix}\"(으)로 시작해야 합니다`;\n }\n if (_issue.format === \"ends_with\")\n return `잘못된 문자열: \"${_issue.suffix}\"(으)로 끝나야 합니다`;\n if (_issue.format === \"includes\")\n return `잘못된 문자열: \"${_issue.includes}\"을(를) 포함해야 합니다`;\n if (_issue.format === \"regex\")\n return `잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;\n return `잘못된 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `잘못된 숫자: ${issue.divisor}의 배수여야 합니다`;\n case \"unrecognized_keys\":\n return `인식할 수 없는 키: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `잘못된 키: ${issue.origin}`;\n case \"invalid_union\":\n return `잘못된 입력`;\n case \"invalid_element\":\n return `잘못된 값: ${issue.origin}`;\n default:\n return `잘못된 입력`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"문자\", verb: \"to have\" },\n file: { unit: \"바이트\", verb: \"to have\" },\n array: { unit: \"개\", verb: \"to have\" },\n set: { unit: \"개\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"입력\",\n email: \"이메일 주소\",\n url: \"URL\",\n emoji: \"이모지\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 날짜시간\",\n date: \"ISO 날짜\",\n time: \"ISO 시간\",\n duration: \"ISO 기간\",\n ipv4: \"IPv4 주소\",\n ipv6: \"IPv6 주소\",\n cidrv4: \"IPv4 범위\",\n cidrv6: \"IPv6 범위\",\n base64: \"base64 인코딩 문자열\",\n base64url: \"base64url 인코딩 문자열\",\n json_string: \"JSON 문자열\",\n e164: \"E.164 번호\",\n jwt: \"JWT\",\n template_literal: \"입력\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `잘못된 입력: 예상 타입은 instanceof ${issue.expected}, 받은 타입은 ${received}입니다`;\n }\n return `잘못된 입력: 예상 타입은 ${expected}, 받은 타입은 ${received}입니다`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `잘못된 입력: 값은 ${util.stringifyPrimitive(issue.values[0])} 이어야 합니다`;\n return `잘못된 옵션: ${util.joinValues(issue.values, \"또는 \")} 중 하나여야 합니다`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"이하\" : \"미만\";\n const suffix = adj === \"미만\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing)\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"이상\" : \"초과\";\n const suffix = adj === \"이상\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing) {\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `잘못된 문자열: \"${_issue.prefix}\"(으)로 시작해야 합니다`;\n }\n if (_issue.format === \"ends_with\")\n return `잘못된 문자열: \"${_issue.suffix}\"(으)로 끝나야 합니다`;\n if (_issue.format === \"includes\")\n return `잘못된 문자열: \"${_issue.includes}\"을(를) 포함해야 합니다`;\n if (_issue.format === \"regex\")\n return `잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;\n return `잘못된 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `잘못된 숫자: ${issue.divisor}의 배수여야 합니다`;\n case \"unrecognized_keys\":\n return `인식할 수 없는 키: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `잘못된 키: ${issue.origin}`;\n case \"invalid_union\":\n return `잘못된 입력`;\n case \"invalid_element\":\n return `잘못된 값: ${issue.origin}`;\n default:\n return `잘못된 입력`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst capitalizeFirstCharacter = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n const abs = Math.abs(number);\n const last = abs % 10;\n const last2 = abs % 100;\n if ((last2 >= 11 && last2 <= 19) || last === 0)\n return \"many\";\n if (last === 1)\n return \"one\";\n return \"few\";\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"simbolis\",\n few: \"simboliai\",\n many: \"simbolių\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne ilgesnė kaip\",\n notInclusive: \"turi būti trumpesnė kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne trumpesnė kaip\",\n notInclusive: \"turi būti ilgesnė kaip\",\n },\n },\n },\n file: {\n unit: {\n one: \"baitas\",\n few: \"baitai\",\n many: \"baitų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne didesnis kaip\",\n notInclusive: \"turi būti mažesnis kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne mažesnis kaip\",\n notInclusive: \"turi būti didesnis kaip\",\n },\n },\n },\n array: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n set: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n };\n function getSizing(origin, unitType, inclusive, targetShouldBe) {\n const result = Sizable[origin] ?? null;\n if (result === null)\n return result;\n return {\n unit: result.unit[unitType],\n verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n };\n }\n const FormatDictionary = {\n regex: \"įvestis\",\n email: \"el. pašto adresas\",\n url: \"URL\",\n emoji: \"jaustukas\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO data ir laikas\",\n date: \"ISO data\",\n time: \"ISO laikas\",\n duration: \"ISO trukmė\",\n ipv4: \"IPv4 adresas\",\n ipv6: \"IPv6 adresas\",\n cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n base64: \"base64 užkoduota eilutė\",\n base64url: \"base64url užkoduota eilutė\",\n json_string: \"JSON eilutė\",\n e164: \"E.164 numeris\",\n jwt: \"JWT\",\n template_literal: \"įvestis\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"skaičius\",\n bigint: \"sveikasis skaičius\",\n string: \"eilutė\",\n boolean: \"loginė reikšmė\",\n undefined: \"neapibrėžta reikšmė\",\n function: \"funkcija\",\n symbol: \"simbolis\",\n array: \"masyvas\",\n object: \"objektas\",\n null: \"nulinė reikšmė\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Gautas tipas ${received}, o tikėtasi - instanceof ${issue.expected}`;\n }\n return `Gautas tipas ${received}, o tikėtasi - ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Privalo būti ${util.stringifyPrimitive(issue.values[0])}`;\n return `Privalo būti vienas iš ${util.joinValues(issue.values, \"|\")} pasirinkimų`;\n case \"too_big\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne didesnis kaip\" : \"mažesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n }\n case \"too_small\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne mažesnis kaip\" : \"didesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Eilutė privalo prasidėti \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Eilutė privalo pasibaigti \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Eilutė privalo įtraukti \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Eilutė privalo atitikti ${_issue.pattern}`;\n return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Skaičius privalo būti ${issue.divisor} kartotinis.`;\n case \"unrecognized_keys\":\n return `Neatpažint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Rastas klaidingas raktas\";\n case \"invalid_union\":\n return \"Klaidinga įvestis\";\n case \"invalid_element\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi klaidingą įvestį`;\n }\n default:\n return \"Klaidinga įvestis\";\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst capitalizeFirstCharacter = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n const abs = Math.abs(number);\n const last = abs % 10;\n const last2 = abs % 100;\n if ((last2 >= 11 && last2 <= 19) || last === 0)\n return \"many\";\n if (last === 1)\n return \"one\";\n return \"few\";\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"simbolis\",\n few: \"simboliai\",\n many: \"simbolių\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne ilgesnė kaip\",\n notInclusive: \"turi būti trumpesnė kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne trumpesnė kaip\",\n notInclusive: \"turi būti ilgesnė kaip\",\n },\n },\n },\n file: {\n unit: {\n one: \"baitas\",\n few: \"baitai\",\n many: \"baitų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne didesnis kaip\",\n notInclusive: \"turi būti mažesnis kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne mažesnis kaip\",\n notInclusive: \"turi būti didesnis kaip\",\n },\n },\n },\n array: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n set: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n };\n function getSizing(origin, unitType, inclusive, targetShouldBe) {\n const result = Sizable[origin] ?? null;\n if (result === null)\n return result;\n return {\n unit: result.unit[unitType],\n verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n };\n }\n const FormatDictionary = {\n regex: \"įvestis\",\n email: \"el. pašto adresas\",\n url: \"URL\",\n emoji: \"jaustukas\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO data ir laikas\",\n date: \"ISO data\",\n time: \"ISO laikas\",\n duration: \"ISO trukmė\",\n ipv4: \"IPv4 adresas\",\n ipv6: \"IPv6 adresas\",\n cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n base64: \"base64 užkoduota eilutė\",\n base64url: \"base64url užkoduota eilutė\",\n json_string: \"JSON eilutė\",\n e164: \"E.164 numeris\",\n jwt: \"JWT\",\n template_literal: \"įvestis\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"skaičius\",\n bigint: \"sveikasis skaičius\",\n string: \"eilutė\",\n boolean: \"loginė reikšmė\",\n undefined: \"neapibrėžta reikšmė\",\n function: \"funkcija\",\n symbol: \"simbolis\",\n array: \"masyvas\",\n object: \"objektas\",\n null: \"nulinė reikšmė\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Gautas tipas ${received}, o tikėtasi - instanceof ${issue.expected}`;\n }\n return `Gautas tipas ${received}, o tikėtasi - ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Privalo būti ${util.stringifyPrimitive(issue.values[0])}`;\n return `Privalo būti vienas iš ${util.joinValues(issue.values, \"|\")} pasirinkimų`;\n case \"too_big\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne didesnis kaip\" : \"mažesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n }\n case \"too_small\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne mažesnis kaip\" : \"didesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Eilutė privalo prasidėti \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Eilutė privalo pasibaigti \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Eilutė privalo įtraukti \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Eilutė privalo atitikti ${_issue.pattern}`;\n return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Skaičius privalo būti ${issue.divisor} kartotinis.`;\n case \"unrecognized_keys\":\n return `Neatpažint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Rastas klaidingas raktas\";\n case \"invalid_union\":\n return \"Klaidinga įvestis\";\n case \"invalid_element\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi klaidingą įvestį`;\n }\n default:\n return \"Klaidinga įvestis\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"знаци\", verb: \"да имаат\" },\n file: { unit: \"бајти\", verb: \"да имаат\" },\n array: { unit: \"ставки\", verb: \"да имаат\" },\n set: { unit: \"ставки\", verb: \"да имаат\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"внес\",\n email: \"адреса на е-пошта\",\n url: \"URL\",\n emoji: \"емоџи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO датум и време\",\n date: \"ISO датум\",\n time: \"ISO време\",\n duration: \"ISO времетраење\",\n ipv4: \"IPv4 адреса\",\n ipv6: \"IPv6 адреса\",\n cidrv4: \"IPv4 опсег\",\n cidrv6: \"IPv6 опсег\",\n base64: \"base64-енкодирана низа\",\n base64url: \"base64url-енкодирана низа\",\n json_string: \"JSON низа\",\n e164: \"E.164 број\",\n jwt: \"JWT\",\n template_literal: \"внес\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"број\",\n array: \"низа\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Грешен внес: се очекува instanceof ${issue.expected}, примено ${received}`;\n }\n return `Грешен внес: се очекува ${expected}, примено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Грешана опција: се очекува една ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да има ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементи\"}`;\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да биде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Премногу мал: се очекува ${issue.origin} да има ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Премногу мал: се очекува ${issue.origin} да биде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Неважечка низа: мора да започнува со \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Неважечка низа: мора да завршува со \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неважечка низа: мора да вклучува \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Грешен број: мора да биде делив со ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Непрепознаени клучеви\" : \"Непрепознаен клуч\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Грешен клуч во ${issue.origin}`;\n case \"invalid_union\":\n return \"Грешен внес\";\n case \"invalid_element\":\n return `Грешна вредност во ${issue.origin}`;\n default:\n return `Грешен внес`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"знаци\", verb: \"да имаат\" },\n file: { unit: \"бајти\", verb: \"да имаат\" },\n array: { unit: \"ставки\", verb: \"да имаат\" },\n set: { unit: \"ставки\", verb: \"да имаат\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"внес\",\n email: \"адреса на е-пошта\",\n url: \"URL\",\n emoji: \"емоџи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO датум и време\",\n date: \"ISO датум\",\n time: \"ISO време\",\n duration: \"ISO времетраење\",\n ipv4: \"IPv4 адреса\",\n ipv6: \"IPv6 адреса\",\n cidrv4: \"IPv4 опсег\",\n cidrv6: \"IPv6 опсег\",\n base64: \"base64-енкодирана низа\",\n base64url: \"base64url-енкодирана низа\",\n json_string: \"JSON низа\",\n e164: \"E.164 број\",\n jwt: \"JWT\",\n template_literal: \"внес\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"број\",\n array: \"низа\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Грешен внес: се очекува instanceof ${issue.expected}, примено ${received}`;\n }\n return `Грешен внес: се очекува ${expected}, примено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Грешана опција: се очекува една ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да има ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементи\"}`;\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да биде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Премногу мал: се очекува ${issue.origin} да има ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Премногу мал: се очекува ${issue.origin} да биде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Неважечка низа: мора да започнува со \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Неважечка низа: мора да завршува со \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неважечка низа: мора да вклучува \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Грешен број: мора да биде делив со ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Непрепознаени клучеви\" : \"Непрепознаен клуч\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Грешен клуч во ${issue.origin}`;\n case \"invalid_union\":\n return \"Грешен внес\";\n case \"invalid_element\":\n return `Грешна вредност во ${issue.origin}`;\n default:\n return `Грешен внес`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"aksara\", verb: \"mempunyai\" },\n file: { unit: \"bait\", verb: \"mempunyai\" },\n array: { unit: \"elemen\", verb: \"mempunyai\" },\n set: { unit: \"elemen\", verb: \"mempunyai\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat e-mel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tarikh masa ISO\",\n date: \"tarikh ISO\",\n time: \"masa ISO\",\n duration: \"tempoh ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"julat IPv4\",\n cidrv6: \"julat IPv6\",\n base64: \"string dikodkan base64\",\n base64url: \"string dikodkan base64url\",\n json_string: \"string JSON\",\n e164: \"nombor E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombor\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n }\n case \"not_multiple_of\":\n return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak sah dalam ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak sah\";\n case \"invalid_element\":\n return `Nilai tidak sah dalam ${issue.origin}`;\n default:\n return `Input tidak sah`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"aksara\", verb: \"mempunyai\" },\n file: { unit: \"bait\", verb: \"mempunyai\" },\n array: { unit: \"elemen\", verb: \"mempunyai\" },\n set: { unit: \"elemen\", verb: \"mempunyai\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat e-mel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tarikh masa ISO\",\n date: \"tarikh ISO\",\n time: \"masa ISO\",\n duration: \"tempoh ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"julat IPv4\",\n cidrv6: \"julat IPv6\",\n base64: \"string dikodkan base64\",\n base64url: \"string dikodkan base64url\",\n json_string: \"string JSON\",\n e164: \"nombor E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombor\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n }\n case \"not_multiple_of\":\n return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak sah dalam ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak sah\";\n case \"invalid_element\":\n return `Nilai tidak sah dalam ${issue.origin}`;\n default:\n return `Input tidak sah`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"tekens\", verb: \"heeft\" },\n file: { unit: \"bytes\", verb: \"heeft\" },\n array: { unit: \"elementen\", verb: \"heeft\" },\n set: { unit: \"elementen\", verb: \"heeft\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"invoer\",\n email: \"emailadres\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum en tijd\",\n date: \"ISO datum\",\n time: \"ISO tijd\",\n duration: \"ISO duur\",\n ipv4: \"IPv4-adres\",\n ipv6: \"IPv6-adres\",\n cidrv4: \"IPv4-bereik\",\n cidrv6: \"IPv6-bereik\",\n base64: \"base64-gecodeerde tekst\",\n base64url: \"base64 URL-gecodeerde tekst\",\n json_string: \"JSON string\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"invoer\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"getal\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n }\n return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ongeldige optie: verwacht één van ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n if (sizing)\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n if (sizing) {\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n }\n if (_issue.format === \"ends_with\")\n return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n if (_issue.format === \"includes\")\n return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n if (_issue.format === \"regex\")\n return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n case \"unrecognized_keys\":\n return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ongeldige key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ongeldige invoer\";\n case \"invalid_element\":\n return `Ongeldige waarde in ${issue.origin}`;\n default:\n return `Ongeldige invoer`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tekens\", verb: \"heeft\" },\n file: { unit: \"bytes\", verb: \"heeft\" },\n array: { unit: \"elementen\", verb: \"heeft\" },\n set: { unit: \"elementen\", verb: \"heeft\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"invoer\",\n email: \"emailadres\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum en tijd\",\n date: \"ISO datum\",\n time: \"ISO tijd\",\n duration: \"ISO duur\",\n ipv4: \"IPv4-adres\",\n ipv6: \"IPv6-adres\",\n cidrv4: \"IPv4-bereik\",\n cidrv6: \"IPv6-bereik\",\n base64: \"base64-gecodeerde tekst\",\n base64url: \"base64 URL-gecodeerde tekst\",\n json_string: \"JSON string\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"invoer\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"getal\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n }\n return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ongeldige optie: verwacht één van ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n if (sizing)\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n if (sizing) {\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n }\n if (_issue.format === \"ends_with\")\n return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n if (_issue.format === \"includes\")\n return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n if (_issue.format === \"regex\")\n return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n case \"unrecognized_keys\":\n return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ongeldige key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ongeldige invoer\";\n case \"invalid_element\":\n return `Ongeldige waarde in ${issue.origin}`;\n default:\n return `Ongeldige invoer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"å ha\" },\n file: { unit: \"bytes\", verb: \"å ha\" },\n array: { unit: \"elementer\", verb: \"å inneholde\" },\n set: { unit: \"elementer\", verb: \"å inneholde\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-postadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslett\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslett\",\n duration: \"ISO-varighet\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spekter\",\n cidrv6: \"IPv6-spekter\",\n base64: \"base64-enkodet streng\",\n base64url: \"base64url-enkodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"tall\",\n array: \"liste\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n }\n return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: må starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: må ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: må inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: må matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: må være et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente nøkler\" : \"Ukjent nøkkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøkkel i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldig input\";\n case \"invalid_element\":\n return `Ugyldig verdi i ${issue.origin}`;\n default:\n return `Ugyldig input`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"å ha\" },\n file: { unit: \"bytes\", verb: \"å ha\" },\n array: { unit: \"elementer\", verb: \"å inneholde\" },\n set: { unit: \"elementer\", verb: \"å inneholde\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-postadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslett\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslett\",\n duration: \"ISO-varighet\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spekter\",\n cidrv6: \"IPv6-spekter\",\n base64: \"base64-enkodet streng\",\n base64url: \"base64url-enkodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"tall\",\n array: \"liste\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n }\n return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: må starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: må ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: må inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: må matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: må være et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente nøkler\" : \"Ukjent nøkkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøkkel i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldig input\";\n case \"invalid_element\":\n return `Ugyldig verdi i ${issue.origin}`;\n default:\n return `Ugyldig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"harf\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"unsur\", verb: \"olmalıdır\" },\n set: { unit: \"unsur\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"giren\",\n email: \"epostagâh\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO hengâmı\",\n date: \"ISO tarihi\",\n time: \"ISO zamanı\",\n duration: \"ISO müddeti\",\n ipv4: \"IPv4 nişânı\",\n ipv6: \"IPv6 nişânı\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-şifreli metin\",\n base64url: \"base64url-şifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"giren\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numara\",\n array: \"saf\",\n null: \"gayb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Fâsit giren: umulan instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Fâsit giren: umulan ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Fâsit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Fâsit tercih: mûteberler ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmalıydı.`;\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmalıydı.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmalıydı.`;\n }\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} olmalıydı.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Fâsit metin: \"${_issue.prefix}\" ile başlamalı.`;\n if (_issue.format === \"ends_with\")\n return `Fâsit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `Fâsit metin: \"${_issue.includes}\" ihtivâ etmeli.`;\n if (_issue.format === \"regex\")\n return `Fâsit metin: ${_issue.pattern} nakşına uymalı.`;\n return `Fâsit ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Fâsit sayı: ${issue.divisor} katı olmalıydı.`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} için tanınmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tanınamadı.\";\n case \"invalid_element\":\n return `${issue.origin} için tanınmayan kıymet var.`;\n default:\n return `Kıymet tanınamadı.`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"harf\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"unsur\", verb: \"olmalıdır\" },\n set: { unit: \"unsur\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"giren\",\n email: \"epostagâh\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO hengâmı\",\n date: \"ISO tarihi\",\n time: \"ISO zamanı\",\n duration: \"ISO müddeti\",\n ipv4: \"IPv4 nişânı\",\n ipv6: \"IPv6 nişânı\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-şifreli metin\",\n base64url: \"base64url-şifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"giren\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numara\",\n array: \"saf\",\n null: \"gayb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Fâsit giren: umulan instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Fâsit giren: umulan ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Fâsit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Fâsit tercih: mûteberler ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmalıydı.`;\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmalıydı.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmalıydı.`;\n }\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} olmalıydı.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Fâsit metin: \"${_issue.prefix}\" ile başlamalı.`;\n if (_issue.format === \"ends_with\")\n return `Fâsit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `Fâsit metin: \"${_issue.includes}\" ihtivâ etmeli.`;\n if (_issue.format === \"regex\")\n return `Fâsit metin: ${_issue.pattern} nakşına uymalı.`;\n return `Fâsit ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Fâsit sayı: ${issue.divisor} katı olmalıydı.`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} için tanınmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tanınamadı.\";\n case \"invalid_element\":\n return `${issue.origin} için tanınmayan kıymet var.`;\n default:\n return `Kıymet tanınamadı.`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n{ \n \"type\": \"module\",\n \"main\": \"./index.cjs\",\n \"module\": \"./index.js\",\n \"types\": \"./index.d.cts\",\n \"sideEffects\": false\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaków\", verb: \"mieć\" },\n file: { unit: \"bajtów\", verb: \"mieć\" },\n array: { unit: \"elementów\", verb: \"mieć\" },\n set: { unit: \"elementów\", verb: \"mieć\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"wyrażenie\",\n email: \"adres email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i godzina w formacie ISO\",\n date: \"data w formacie ISO\",\n time: \"godzina w formacie ISO\",\n duration: \"czas trwania ISO\",\n ipv4: \"adres IPv4\",\n ipv6: \"adres IPv6\",\n cidrv4: \"zakres IPv4\",\n cidrv6: \"zakres IPv6\",\n base64: \"ciąg znaków zakodowany w formacie base64\",\n base64url: \"ciąg znaków zakodowany w formacie base64url\",\n json_string: \"ciąg znaków w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wejście\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"liczba\",\n array: \"tablica\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nieprawidłowe dane wejściowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n }\n return `Nieprawidłowe dane wejściowe: oczekiwano ${expected}, otrzymano ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawidłowe dane wejściowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawidłowa opcja: oczekiwano jednej z wartości ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za duża wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt duż(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za mała wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt mał(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawidłowy ciąg znaków: musi zaczynać się od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawidłowy ciąg znaków: musi kończyć się na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawidłowy ciąg znaków: musi zawierać \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`;\n return `Nieprawidłow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawidłowa liczba: musi być wielokrotnością ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nieprawidłowy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawidłowe dane wejściowe\";\n case \"invalid_element\":\n return `Nieprawidłowa wartość w ${issue.origin}`;\n default:\n return `Nieprawidłowe dane wejściowe`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaków\", verb: \"mieć\" },\n file: { unit: \"bajtów\", verb: \"mieć\" },\n array: { unit: \"elementów\", verb: \"mieć\" },\n set: { unit: \"elementów\", verb: \"mieć\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"wyrażenie\",\n email: \"adres email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i godzina w formacie ISO\",\n date: \"data w formacie ISO\",\n time: \"godzina w formacie ISO\",\n duration: \"czas trwania ISO\",\n ipv4: \"adres IPv4\",\n ipv6: \"adres IPv6\",\n cidrv4: \"zakres IPv4\",\n cidrv6: \"zakres IPv6\",\n base64: \"ciąg znaków zakodowany w formacie base64\",\n base64url: \"ciąg znaków zakodowany w formacie base64url\",\n json_string: \"ciąg znaków w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wejście\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"liczba\",\n array: \"tablica\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nieprawidłowe dane wejściowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n }\n return `Nieprawidłowe dane wejściowe: oczekiwano ${expected}, otrzymano ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawidłowe dane wejściowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawidłowa opcja: oczekiwano jednej z wartości ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za duża wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt duż(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za mała wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt mał(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawidłowy ciąg znaków: musi zaczynać się od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawidłowy ciąg znaków: musi kończyć się na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawidłowy ciąg znaków: musi zawierać \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`;\n return `Nieprawidłow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawidłowa liczba: musi być wielokrotnością ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nieprawidłowy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawidłowe dane wejściowe\";\n case \"invalid_element\":\n return `Nieprawidłowa wartość w ${issue.origin}`;\n default:\n return `Nieprawidłowe dane wejściowe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"توکي\", verb: \"ولري\" },\n file: { unit: \"بایټس\", verb: \"ولري\" },\n array: { unit: \"توکي\", verb: \"ولري\" },\n set: { unit: \"توکي\", verb: \"ولري\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودي\",\n email: \"بریښنالیک\",\n url: \"یو آر ال\",\n emoji: \"ایموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"نیټه او وخت\",\n date: \"نېټه\",\n time: \"وخت\",\n duration: \"موده\",\n ipv4: \"د IPv4 پته\",\n ipv6: \"د IPv6 پته\",\n cidrv4: \"د IPv4 ساحه\",\n cidrv6: \"د IPv6 ساحه\",\n base64: \"base64-encoded متن\",\n base64url: \"base64url-encoded متن\",\n json_string: \"JSON متن\",\n e164: \"د E.164 شمېره\",\n jwt: \"JWT\",\n template_literal: \"ورودي\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"ارې\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ناسم ورودي: باید instanceof ${issue.expected} وای, مګر ${received} ترلاسه شو`;\n }\n return `ناسم ورودي: باید ${expected} وای, مګر ${received} ترلاسه شو`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ناسم ورودي: باید ${util.stringifyPrimitive(issue.values[0])} وای`;\n }\n return `ناسم انتخاب: باید یو له ${util.joinValues(issue.values, \"|\")} څخه وای`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصرونه\"} ولري`;\n }\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} وي`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} ولري`;\n }\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} وي`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ناسم متن: باید د \"${_issue.prefix}\" سره پیل شي`;\n }\n if (_issue.format === \"ends_with\") {\n return `ناسم متن: باید د \"${_issue.suffix}\" سره پای ته ورسيږي`;\n }\n if (_issue.format === \"includes\") {\n return `ناسم متن: باید \"${_issue.includes}\" ولري`;\n }\n if (_issue.format === \"regex\") {\n return `ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} ناسم دی`;\n }\n case \"not_multiple_of\":\n return `ناسم عدد: باید د ${issue.divisor} مضرب وي`;\n case \"unrecognized_keys\":\n return `ناسم ${issue.keys.length > 1 ? \"کلیډونه\" : \"کلیډ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `ناسم کلیډ په ${issue.origin} کې`;\n case \"invalid_union\":\n return `ناسمه ورودي`;\n case \"invalid_element\":\n return `ناسم عنصر په ${issue.origin} کې`;\n default:\n return `ناسمه ورودي`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"توکي\", verb: \"ولري\" },\n file: { unit: \"بایټس\", verb: \"ولري\" },\n array: { unit: \"توکي\", verb: \"ولري\" },\n set: { unit: \"توکي\", verb: \"ولري\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودي\",\n email: \"بریښنالیک\",\n url: \"یو آر ال\",\n emoji: \"ایموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"نیټه او وخت\",\n date: \"نېټه\",\n time: \"وخت\",\n duration: \"موده\",\n ipv4: \"د IPv4 پته\",\n ipv6: \"د IPv6 پته\",\n cidrv4: \"د IPv4 ساحه\",\n cidrv6: \"د IPv6 ساحه\",\n base64: \"base64-encoded متن\",\n base64url: \"base64url-encoded متن\",\n json_string: \"JSON متن\",\n e164: \"د E.164 شمېره\",\n jwt: \"JWT\",\n template_literal: \"ورودي\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"ارې\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ناسم ورودي: باید instanceof ${issue.expected} وای, مګر ${received} ترلاسه شو`;\n }\n return `ناسم ورودي: باید ${expected} وای, مګر ${received} ترلاسه شو`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ناسم ورودي: باید ${util.stringifyPrimitive(issue.values[0])} وای`;\n }\n return `ناسم انتخاب: باید یو له ${util.joinValues(issue.values, \"|\")} څخه وای`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصرونه\"} ولري`;\n }\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} وي`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} ولري`;\n }\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} وي`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ناسم متن: باید د \"${_issue.prefix}\" سره پیل شي`;\n }\n if (_issue.format === \"ends_with\") {\n return `ناسم متن: باید د \"${_issue.suffix}\" سره پای ته ورسيږي`;\n }\n if (_issue.format === \"includes\") {\n return `ناسم متن: باید \"${_issue.includes}\" ولري`;\n }\n if (_issue.format === \"regex\") {\n return `ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} ناسم دی`;\n }\n case \"not_multiple_of\":\n return `ناسم عدد: باید د ${issue.divisor} مضرب وي`;\n case \"unrecognized_keys\":\n return `ناسم ${issue.keys.length > 1 ? \"کلیډونه\" : \"کلیډ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `ناسم کلیډ په ${issue.origin} کې`;\n case \"invalid_union\":\n return `ناسمه ورودي`;\n case \"invalid_element\":\n return `ناسم عنصر په ${issue.origin} کې`;\n default:\n return `ناسمه ورودي`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"ter\" },\n file: { unit: \"bytes\", verb: \"ter\" },\n array: { unit: \"itens\", verb: \"ter\" },\n set: { unit: \"itens\", verb: \"ter\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"padrão\",\n email: \"endereço de e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"duração ISO\",\n ipv4: \"endereço IPv4\",\n ipv6: \"endereço IPv6\",\n cidrv4: \"faixa de IPv4\",\n cidrv6: \"faixa de IPv6\",\n base64: \"texto codificado em base64\",\n base64url: \"URL codificada em base64\",\n json_string: \"texto JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"número\",\n null: \"nulo\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipo inválido: esperado instanceof ${issue.expected}, recebido ${received}`;\n }\n return `Tipo inválido: esperado ${expected}, recebido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opção inválida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Texto inválido: deve começar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inválido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inválido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inválido: deve corresponder ao padrão ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} inválido`;\n }\n case \"not_multiple_of\":\n return `Número inválido: deve ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chave inválida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido em ${issue.origin}`;\n default:\n return `Campo inválido`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"ter\" },\n file: { unit: \"bytes\", verb: \"ter\" },\n array: { unit: \"itens\", verb: \"ter\" },\n set: { unit: \"itens\", verb: \"ter\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"padrão\",\n email: \"endereço de e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"duração ISO\",\n ipv4: \"endereço IPv4\",\n ipv6: \"endereço IPv6\",\n cidrv4: \"faixa de IPv4\",\n cidrv6: \"faixa de IPv6\",\n base64: \"texto codificado em base64\",\n base64url: \"URL codificada em base64\",\n json_string: \"texto JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"número\",\n null: \"nulo\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipo inválido: esperado instanceof ${issue.expected}, recebido ${received}`;\n }\n return `Tipo inválido: esperado ${expected}, recebido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opção inválida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Texto inválido: deve começar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inválido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inválido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inválido: deve corresponder ao padrão ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} inválido`;\n }\n case \"not_multiple_of\":\n return `Número inválido: deve ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chave inválida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido em ${issue.origin}`;\n default:\n return `Campo inválido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractere\", verb: \"să aibă\" },\n file: { unit: \"octeți\", verb: \"să aibă\" },\n array: { unit: \"elemente\", verb: \"să aibă\" },\n set: { unit: \"elemente\", verb: \"să aibă\" },\n map: { unit: \"intrări\", verb: \"să aibă\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"intrare\",\n email: \"adresă de email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"dată și oră ISO\",\n date: \"dată ISO\",\n time: \"oră ISO\",\n duration: \"durată ISO\",\n ipv4: \"adresă IPv4\",\n ipv6: \"adresă IPv6\",\n mac: \"adresă MAC\",\n cidrv4: \"interval IPv4\",\n cidrv6: \"interval IPv6\",\n base64: \"șir codat base64\",\n base64url: \"șir codat base64url\",\n json_string: \"șir JSON\",\n e164: \"număr E.164\",\n jwt: \"JWT\",\n template_literal: \"intrare\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"șir\",\n number: \"număr\",\n boolean: \"boolean\",\n function: \"funcție\",\n array: \"matrice\",\n object: \"obiect\",\n undefined: \"nedefinit\",\n symbol: \"simbol\",\n bigint: \"număr mare\",\n void: \"void\",\n never: \"never\",\n map: \"hartă\",\n set: \"set\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Intrare invalidă: așteptat ${expected}, primit ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Intrare invalidă: așteptat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opțiune invalidă: așteptat una dintre ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Prea mare: așteptat ca ${issue.origin ?? \"valoarea\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemente\"}`;\n return `Prea mare: așteptat ca ${issue.origin ?? \"valoarea\"} să fie ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Prea mic: așteptat ca ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Prea mic: așteptat ca ${issue.origin} să fie ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Șir invalid: trebuie să înceapă cu \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Șir invalid: trebuie să se termine cu \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Șir invalid: trebuie să includă \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Șir invalid: trebuie să se potrivească cu modelul ${_issue.pattern}`;\n return `Format invalid: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Număr invalid: trebuie să fie multiplu de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chei nerecunoscute: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Cheie invalidă în ${issue.origin}`;\n case \"invalid_union\":\n return \"Intrare invalidă\";\n case \"invalid_element\":\n return `Valoare invalidă în ${issue.origin}`;\n default:\n return `Intrare invalidă`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractere\", verb: \"să aibă\" },\n file: { unit: \"octeți\", verb: \"să aibă\" },\n array: { unit: \"elemente\", verb: \"să aibă\" },\n set: { unit: \"elemente\", verb: \"să aibă\" },\n map: { unit: \"intrări\", verb: \"să aibă\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"intrare\",\n email: \"adresă de email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"dată și oră ISO\",\n date: \"dată ISO\",\n time: \"oră ISO\",\n duration: \"durată ISO\",\n ipv4: \"adresă IPv4\",\n ipv6: \"adresă IPv6\",\n mac: \"adresă MAC\",\n cidrv4: \"interval IPv4\",\n cidrv6: \"interval IPv6\",\n base64: \"șir codat base64\",\n base64url: \"șir codat base64url\",\n json_string: \"șir JSON\",\n e164: \"număr E.164\",\n jwt: \"JWT\",\n template_literal: \"intrare\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"șir\",\n number: \"număr\",\n boolean: \"boolean\",\n function: \"funcție\",\n array: \"matrice\",\n object: \"obiect\",\n undefined: \"nedefinit\",\n symbol: \"simbol\",\n bigint: \"număr mare\",\n void: \"void\",\n never: \"never\",\n map: \"hartă\",\n set: \"set\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Intrare invalidă: așteptat ${expected}, primit ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Intrare invalidă: așteptat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opțiune invalidă: așteptat una dintre ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Prea mare: așteptat ca ${issue.origin ?? \"valoarea\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemente\"}`;\n return `Prea mare: așteptat ca ${issue.origin ?? \"valoarea\"} să fie ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Prea mic: așteptat ca ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Prea mic: așteptat ca ${issue.origin} să fie ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Șir invalid: trebuie să înceapă cu \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Șir invalid: trebuie să se termine cu \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Șir invalid: trebuie să includă \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Șir invalid: trebuie să se potrivească cu modelul ${_issue.pattern}`;\n return `Format invalid: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Număr invalid: trebuie să fie multiplu de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chei nerecunoscute: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Cheie invalidă în ${issue.origin}`;\n case \"invalid_union\":\n return \"Intrare invalidă\";\n case \"invalid_element\":\n return `Valoare invalidă în ${issue.origin}`;\n default:\n return `Intrare invalidă`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nfunction getRussianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"символ\",\n few: \"символа\",\n many: \"символов\",\n },\n verb: \"иметь\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байта\",\n many: \"байт\",\n },\n verb: \"иметь\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ввод\",\n email: \"email адрес\",\n url: \"URL\",\n emoji: \"эмодзи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата и время\",\n date: \"ISO дата\",\n time: \"ISO время\",\n duration: \"ISO длительность\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"строка в формате base64\",\n base64url: \"строка в формате base64url\",\n json_string: \"JSON строка\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"ввод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"массив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неверный ввод: ожидалось instanceof ${issue.expected}, получено ${received}`;\n }\n return `Неверный ввод: ожидалось ${expected}, получено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неверный ввод: ожидалось ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неверный вариант: ожидалось одно из ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет иметь ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет иметь ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неверная строка: должна начинаться с \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неверная строка: должна заканчиваться на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неверная строка: должна содержать \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неверная строка: должна соответствовать шаблону ${_issue.pattern}`;\n return `Неверный ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неверное число: должно быть кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспознанн${issue.keys.length > 1 ? \"ые\" : \"ый\"} ключ${issue.keys.length > 1 ? \"и\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неверный ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Неверные входные данные\";\n case \"invalid_element\":\n return `Неверное значение в ${issue.origin}`;\n default:\n return `Неверные входные данные`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"символ\",\n few: \"символа\",\n many: \"символов\",\n },\n verb: \"иметь\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байта\",\n many: \"байт\",\n },\n verb: \"иметь\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ввод\",\n email: \"email адрес\",\n url: \"URL\",\n emoji: \"эмодзи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата и время\",\n date: \"ISO дата\",\n time: \"ISO время\",\n duration: \"ISO длительность\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"строка в формате base64\",\n base64url: \"строка в формате base64url\",\n json_string: \"JSON строка\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"ввод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"массив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неверный ввод: ожидалось instanceof ${issue.expected}, получено ${received}`;\n }\n return `Неверный ввод: ожидалось ${expected}, получено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неверный ввод: ожидалось ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неверный вариант: ожидалось одно из ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет иметь ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет иметь ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неверная строка: должна начинаться с \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неверная строка: должна заканчиваться на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неверная строка: должна содержать \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неверная строка: должна соответствовать шаблону ${_issue.pattern}`;\n return `Неверный ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неверное число: должно быть кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспознанн${issue.keys.length > 1 ? \"ые\" : \"ый\"} ключ${issue.keys.length > 1 ? \"и\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неверный ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Неверные входные данные\";\n case \"invalid_element\":\n return `Неверное значение в ${issue.origin}`;\n default:\n return `Неверные входные данные`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakov\", verb: \"imeti\" },\n file: { unit: \"bajtov\", verb: \"imeti\" },\n array: { unit: \"elementov\", verb: \"imeti\" },\n set: { unit: \"elementov\", verb: \"imeti\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"vnos\",\n email: \"e-poštni naslov\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum in čas\",\n date: \"ISO datum\",\n time: \"ISO čas\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 naslov\",\n ipv6: \"IPv6 naslov\",\n cidrv4: \"obseg IPv4\",\n cidrv6: \"obseg IPv6\",\n base64: \"base64 kodiran niz\",\n base64url: \"base64url kodiran niz\",\n json_string: \"JSON niz\",\n e164: \"E.164 številka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"število\",\n array: \"tabela\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neveljaven vnos: pričakovano instanceof ${issue.expected}, prejeto ${received}`;\n }\n return `Neveljaven vnos: pričakovano ${expected}, prejeto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pričakovano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna možnost: pričakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Premajhno: pričakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pričakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Neveljaven niz: mora se začeti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se končati z \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neveljavno število: mora biti večkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i ključi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven ključ v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neveljaven vnos\";\n case \"invalid_element\":\n return `Neveljavna vrednost v ${issue.origin}`;\n default:\n return \"Neveljaven vnos\";\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakov\", verb: \"imeti\" },\n file: { unit: \"bajtov\", verb: \"imeti\" },\n array: { unit: \"elementov\", verb: \"imeti\" },\n set: { unit: \"elementov\", verb: \"imeti\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"vnos\",\n email: \"e-poštni naslov\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum in čas\",\n date: \"ISO datum\",\n time: \"ISO čas\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 naslov\",\n ipv6: \"IPv6 naslov\",\n cidrv4: \"obseg IPv4\",\n cidrv6: \"obseg IPv6\",\n base64: \"base64 kodiran niz\",\n base64url: \"base64url kodiran niz\",\n json_string: \"JSON niz\",\n e164: \"E.164 številka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"število\",\n array: \"tabela\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neveljaven vnos: pričakovano instanceof ${issue.expected}, prejeto ${received}`;\n }\n return `Neveljaven vnos: pričakovano ${expected}, prejeto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pričakovano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna možnost: pričakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Premajhno: pričakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pričakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Neveljaven niz: mora se začeti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se končati z \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neveljavno število: mora biti večkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i ključi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven ključ v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neveljaven vnos\";\n case \"invalid_element\":\n return `Neveljavna vrednost v ${issue.origin}`;\n default:\n return \"Neveljaven vnos\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"tecken\", verb: \"att ha\" },\n file: { unit: \"bytes\", verb: \"att ha\" },\n array: { unit: \"objekt\", verb: \"att innehålla\" },\n set: { unit: \"objekt\", verb: \"att innehålla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"reguljärt uttryck\",\n email: \"e-postadress\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datum och tid\",\n date: \"ISO-datum\",\n time: \"ISO-tid\",\n duration: \"ISO-varaktighet\",\n ipv4: \"IPv4-intervall\",\n ipv6: \"IPv6-intervall\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodad sträng\",\n base64url: \"base64url-kodad sträng\",\n json_string: \"JSON-sträng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"mall-literal\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"antal\",\n array: \"lista\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ogiltig inmatning: förväntat instanceof ${issue.expected}, fick ${received}`;\n }\n return `Ogiltig inmatning: förväntat ${expected}, fick ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: förväntat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: förväntade en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För stor(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `För stor(t): förväntat ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ogiltig sträng: måste börja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig sträng: måste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig sträng: måste innehålla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig sträng: måste matcha mönstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: måste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Okända nycklar\" : \"Okänd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"värdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt värde i ${issue.origin ?? \"värdet\"}`;\n default:\n return `Ogiltig input`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tecken\", verb: \"att ha\" },\n file: { unit: \"bytes\", verb: \"att ha\" },\n array: { unit: \"objekt\", verb: \"att innehålla\" },\n set: { unit: \"objekt\", verb: \"att innehålla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"reguljärt uttryck\",\n email: \"e-postadress\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datum och tid\",\n date: \"ISO-datum\",\n time: \"ISO-tid\",\n duration: \"ISO-varaktighet\",\n ipv4: \"IPv4-intervall\",\n ipv6: \"IPv6-intervall\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodad sträng\",\n base64url: \"base64url-kodad sträng\",\n json_string: \"JSON-sträng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"mall-literal\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"antal\",\n array: \"lista\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ogiltig inmatning: förväntat instanceof ${issue.expected}, fick ${received}`;\n }\n return `Ogiltig inmatning: förväntat ${expected}, fick ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: förväntat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: förväntade en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För stor(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `För stor(t): förväntat ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ogiltig sträng: måste börja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig sträng: måste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig sträng: måste innehålla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig sträng: måste matcha mönstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: måste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Okända nycklar\" : \"Okänd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"värdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt värde i ${issue.origin ?? \"värdet\"}`;\n default:\n return `Ogiltig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"எழுத்துக்கள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n file: { unit: \"பைட்டுகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n array: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n set: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"உள்ளீடு\",\n email: \"மின்னஞ்சல் முகவரி\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO தேதி நேரம்\",\n date: \"ISO தேதி\",\n time: \"ISO நேரம்\",\n duration: \"ISO கால அளவு\",\n ipv4: \"IPv4 முகவரி\",\n ipv6: \"IPv6 முகவரி\",\n cidrv4: \"IPv4 வரம்பு\",\n cidrv6: \"IPv6 வரம்பு\",\n base64: \"base64-encoded சரம்\",\n base64url: \"base64url-encoded சரம்\",\n json_string: \"JSON சரம்\",\n e164: \"E.164 எண்\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"எண்\",\n array: \"அணி\",\n null: \"வெறுமை\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${issue.expected}, பெறப்பட்டது ${received}`;\n }\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${expected}, பெறப்பட்டது ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${util.stringifyPrimitive(issue.values[0])}`;\n return `தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${util.joinValues(issue.values, \"|\")} இல் ஒன்று`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"உறுப்புகள்\"} ஆக இருக்க வேண்டும்`;\n }\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`; //\n }\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `தவறான சரம்: \"${_issue.prefix}\" இல் தொடங்க வேண்டும்`;\n if (_issue.format === \"ends_with\")\n return `தவறான சரம்: \"${_issue.suffix}\" இல் முடிவடைய வேண்டும்`;\n if (_issue.format === \"includes\")\n return `தவறான சரம்: \"${_issue.includes}\" ஐ உள்ளடக்க வேண்டும்`;\n if (_issue.format === \"regex\")\n return `தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`;\n return `தவறான ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `தவறான எண்: ${issue.divisor} இன் பலமாக இருக்க வேண்டும்`;\n case \"unrecognized_keys\":\n return `அடையாளம் தெரியாத விசை${issue.keys.length > 1 ? \"கள்\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} இல் தவறான விசை`;\n case \"invalid_union\":\n return \"தவறான உள்ளீடு\";\n case \"invalid_element\":\n return `${issue.origin} இல் தவறான மதிப்பு`;\n default:\n return `தவறான உள்ளீடு`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"எழுத்துக்கள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n file: { unit: \"பைட்டுகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n array: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n set: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"உள்ளீடு\",\n email: \"மின்னஞ்சல் முகவரி\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO தேதி நேரம்\",\n date: \"ISO தேதி\",\n time: \"ISO நேரம்\",\n duration: \"ISO கால அளவு\",\n ipv4: \"IPv4 முகவரி\",\n ipv6: \"IPv6 முகவரி\",\n cidrv4: \"IPv4 வரம்பு\",\n cidrv6: \"IPv6 வரம்பு\",\n base64: \"base64-encoded சரம்\",\n base64url: \"base64url-encoded சரம்\",\n json_string: \"JSON சரம்\",\n e164: \"E.164 எண்\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"எண்\",\n array: \"அணி\",\n null: \"வெறுமை\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${issue.expected}, பெறப்பட்டது ${received}`;\n }\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${expected}, பெறப்பட்டது ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${util.stringifyPrimitive(issue.values[0])}`;\n return `தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${util.joinValues(issue.values, \"|\")} இல் ஒன்று`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"உறுப்புகள்\"} ஆக இருக்க வேண்டும்`;\n }\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`; //\n }\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `தவறான சரம்: \"${_issue.prefix}\" இல் தொடங்க வேண்டும்`;\n if (_issue.format === \"ends_with\")\n return `தவறான சரம்: \"${_issue.suffix}\" இல் முடிவடைய வேண்டும்`;\n if (_issue.format === \"includes\")\n return `தவறான சரம்: \"${_issue.includes}\" ஐ உள்ளடக்க வேண்டும்`;\n if (_issue.format === \"regex\")\n return `தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`;\n return `தவறான ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `தவறான எண்: ${issue.divisor} இன் பலமாக இருக்க வேண்டும்`;\n case \"unrecognized_keys\":\n return `அடையாளம் தெரியாத விசை${issue.keys.length > 1 ? \"கள்\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} இல் தவறான விசை`;\n case \"invalid_union\":\n return \"தவறான உள்ளீடு\";\n case \"invalid_element\":\n return `${issue.origin} இல் தவறான மதிப்பு`;\n default:\n return `தவறான உள்ளீடு`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"ตัวอักษร\", verb: \"ควรมี\" },\n file: { unit: \"ไบต์\", verb: \"ควรมี\" },\n array: { unit: \"รายการ\", verb: \"ควรมี\" },\n set: { unit: \"รายการ\", verb: \"ควรมี\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ข้อมูลที่ป้อน\",\n email: \"ที่อยู่อีเมล\",\n url: \"URL\",\n emoji: \"อิโมจิ\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"วันที่เวลาแบบ ISO\",\n date: \"วันที่แบบ ISO\",\n time: \"เวลาแบบ ISO\",\n duration: \"ช่วงเวลาแบบ ISO\",\n ipv4: \"ที่อยู่ IPv4\",\n ipv6: \"ที่อยู่ IPv6\",\n cidrv4: \"ช่วง IP แบบ IPv4\",\n cidrv6: \"ช่วง IP แบบ IPv6\",\n base64: \"ข้อความแบบ Base64\",\n base64url: \"ข้อความแบบ Base64 สำหรับ URL\",\n json_string: \"ข้อความแบบ JSON\",\n e164: \"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)\",\n jwt: \"โทเคน JWT\",\n template_literal: \"ข้อมูลที่ป้อน\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"ตัวเลข\",\n array: \"อาร์เรย์ (Array)\",\n null: \"ไม่มีค่า (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${issue.expected} แต่ได้รับ ${received}`;\n }\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${expected} แต่ได้รับ ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ค่าไม่ถูกต้อง: ควรเป็น ${util.stringifyPrimitive(issue.values[0])}`;\n return `ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"ไม่เกิน\" : \"น้อยกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"รายการ\"}`;\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"อย่างน้อย\" : \"มากกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องมี \"${_issue.includes}\" อยู่ในข้อความ`;\n if (_issue.format === \"regex\")\n return `รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`;\n return `รูปแบบไม่ถูกต้อง: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue.divisor} ได้ลงตัว`;\n case \"unrecognized_keys\":\n return `พบคีย์ที่ไม่รู้จัก: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `คีย์ไม่ถูกต้องใน ${issue.origin}`;\n case \"invalid_union\":\n return \"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้\";\n case \"invalid_element\":\n return `ข้อมูลไม่ถูกต้องใน ${issue.origin}`;\n default:\n return `ข้อมูลไม่ถูกต้อง`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ตัวอักษร\", verb: \"ควรมี\" },\n file: { unit: \"ไบต์\", verb: \"ควรมี\" },\n array: { unit: \"รายการ\", verb: \"ควรมี\" },\n set: { unit: \"รายการ\", verb: \"ควรมี\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ข้อมูลที่ป้อน\",\n email: \"ที่อยู่อีเมล\",\n url: \"URL\",\n emoji: \"อิโมจิ\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"วันที่เวลาแบบ ISO\",\n date: \"วันที่แบบ ISO\",\n time: \"เวลาแบบ ISO\",\n duration: \"ช่วงเวลาแบบ ISO\",\n ipv4: \"ที่อยู่ IPv4\",\n ipv6: \"ที่อยู่ IPv6\",\n cidrv4: \"ช่วง IP แบบ IPv4\",\n cidrv6: \"ช่วง IP แบบ IPv6\",\n base64: \"ข้อความแบบ Base64\",\n base64url: \"ข้อความแบบ Base64 สำหรับ URL\",\n json_string: \"ข้อความแบบ JSON\",\n e164: \"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)\",\n jwt: \"โทเคน JWT\",\n template_literal: \"ข้อมูลที่ป้อน\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"ตัวเลข\",\n array: \"อาร์เรย์ (Array)\",\n null: \"ไม่มีค่า (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${issue.expected} แต่ได้รับ ${received}`;\n }\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${expected} แต่ได้รับ ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ค่าไม่ถูกต้อง: ควรเป็น ${util.stringifyPrimitive(issue.values[0])}`;\n return `ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"ไม่เกิน\" : \"น้อยกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"รายการ\"}`;\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"อย่างน้อย\" : \"มากกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องมี \"${_issue.includes}\" อยู่ในข้อความ`;\n if (_issue.format === \"regex\")\n return `รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`;\n return `รูปแบบไม่ถูกต้อง: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue.divisor} ได้ลงตัว`;\n case \"unrecognized_keys\":\n return `พบคีย์ที่ไม่รู้จัก: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `คีย์ไม่ถูกต้องใน ${issue.origin}`;\n case \"invalid_union\":\n return \"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้\";\n case \"invalid_element\":\n return `ข้อมูลไม่ถูกต้องใน ${issue.origin}`;\n default:\n return `ข้อมูลไม่ถูกต้อง`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"olmalı\" },\n file: { unit: \"bayt\", verb: \"olmalı\" },\n array: { unit: \"öğe\", verb: \"olmalı\" },\n set: { unit: \"öğe\", verb: \"olmalı\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"girdi\",\n email: \"e-posta adresi\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO tarih ve saat\",\n date: \"ISO tarih\",\n time: \"ISO saat\",\n duration: \"ISO süre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aralığı\",\n cidrv6: \"IPv6 aralığı\",\n base64: \"base64 ile şifrelenmiş metin\",\n base64url: \"base64url ile şifrelenmiş metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"Şablon dizesi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Geçersiz değer: beklenen instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Geçersiz değer: beklenen ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Geçersiz değer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n return `Geçersiz seçenek: aşağıdakilerden biri olmalı: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"öğe\"}`;\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Geçersiz metin: \"${_issue.prefix}\" ile başlamalı`;\n if (_issue.format === \"ends_with\")\n return `Geçersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Geçersiz metin: \"${_issue.includes}\" içermeli`;\n if (_issue.format === \"regex\")\n return `Geçersiz metin: ${_issue.pattern} desenine uymalı`;\n return `Geçersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Geçersiz sayı: ${issue.divisor} ile tam bölünebilmeli`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} içinde geçersiz anahtar`;\n case \"invalid_union\":\n return \"Geçersiz değer\";\n case \"invalid_element\":\n return `${issue.origin} içinde geçersiz değer`;\n default:\n return `Geçersiz değer`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"olmalı\" },\n file: { unit: \"bayt\", verb: \"olmalı\" },\n array: { unit: \"öğe\", verb: \"olmalı\" },\n set: { unit: \"öğe\", verb: \"olmalı\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"girdi\",\n email: \"e-posta adresi\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO tarih ve saat\",\n date: \"ISO tarih\",\n time: \"ISO saat\",\n duration: \"ISO süre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aralığı\",\n cidrv6: \"IPv6 aralığı\",\n base64: \"base64 ile şifrelenmiş metin\",\n base64url: \"base64url ile şifrelenmiş metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"Şablon dizesi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Geçersiz değer: beklenen instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Geçersiz değer: beklenen ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Geçersiz değer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n return `Geçersiz seçenek: aşağıdakilerden biri olmalı: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"öğe\"}`;\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Geçersiz metin: \"${_issue.prefix}\" ile başlamalı`;\n if (_issue.format === \"ends_with\")\n return `Geçersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Geçersiz metin: \"${_issue.includes}\" içermeli`;\n if (_issue.format === \"regex\")\n return `Geçersiz metin: ${_issue.pattern} desenine uymalı`;\n return `Geçersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Geçersiz sayı: ${issue.divisor} ile tam bölünebilmeli`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} içinde geçersiz anahtar`;\n case \"invalid_union\":\n return \"Geçersiz değer\";\n case \"invalid_element\":\n return `${issue.origin} içinde geçersiz değer`;\n default:\n return `Geçersiz değer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst uk_js_1 = __importDefault(require(\"./uk.cjs\"));\n/** @deprecated Use `uk` instead. */\nfunction default_1() {\n return (0, uk_js_1.default)();\n}\nmodule.exports = exports.default;\nimport uk from \"./uk.js\";\n/** @deprecated Use `uk` instead. */\nexport default function () {\n return uk();\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"символів\", verb: \"матиме\" },\n file: { unit: \"байтів\", verb: \"матиме\" },\n array: { unit: \"елементів\", verb: \"матиме\" },\n set: { unit: \"елементів\", verb: \"матиме\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вхідні дані\",\n email: \"адреса електронної пошти\",\n url: \"URL\",\n emoji: \"емодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"дата та час ISO\",\n date: \"дата ISO\",\n time: \"час ISO\",\n duration: \"тривалість ISO\",\n ipv4: \"адреса IPv4\",\n ipv6: \"адреса IPv6\",\n cidrv4: \"діапазон IPv4\",\n cidrv6: \"діапазон IPv6\",\n base64: \"рядок у кодуванні base64\",\n base64url: \"рядок у кодуванні base64url\",\n json_string: \"рядок JSON\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"вхідні дані\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неправильні вхідні дані: очікується instanceof ${issue.expected}, отримано ${received}`;\n }\n return `Неправильні вхідні дані: очікується ${expected}, отримано ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неправильні вхідні дані: очікується ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неправильна опція: очікується одне з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементів\"}`;\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} буде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Занадто мале: очікується, що ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Занадто мале: очікується, що ${issue.origin} буде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неправильний рядок: повинен починатися з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неправильний рядок: повинен закінчуватися на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неправильний рядок: повинен містити \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`;\n return `Неправильний ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неправильне число: повинно бути кратним ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нерозпізнаний ключ${issue.keys.length > 1 ? \"і\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неправильний ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Неправильні вхідні дані\";\n case \"invalid_element\":\n return `Неправильне значення у ${issue.origin}`;\n default:\n return `Неправильні вхідні дані`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символів\", verb: \"матиме\" },\n file: { unit: \"байтів\", verb: \"матиме\" },\n array: { unit: \"елементів\", verb: \"матиме\" },\n set: { unit: \"елементів\", verb: \"матиме\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вхідні дані\",\n email: \"адреса електронної пошти\",\n url: \"URL\",\n emoji: \"емодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"дата та час ISO\",\n date: \"дата ISO\",\n time: \"час ISO\",\n duration: \"тривалість ISO\",\n ipv4: \"адреса IPv4\",\n ipv6: \"адреса IPv6\",\n cidrv4: \"діапазон IPv4\",\n cidrv6: \"діапазон IPv6\",\n base64: \"рядок у кодуванні base64\",\n base64url: \"рядок у кодуванні base64url\",\n json_string: \"рядок JSON\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"вхідні дані\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неправильні вхідні дані: очікується instanceof ${issue.expected}, отримано ${received}`;\n }\n return `Неправильні вхідні дані: очікується ${expected}, отримано ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неправильні вхідні дані: очікується ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неправильна опція: очікується одне з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементів\"}`;\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} буде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Занадто мале: очікується, що ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Занадто мале: очікується, що ${issue.origin} буде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неправильний рядок: повинен починатися з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неправильний рядок: повинен закінчуватися на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неправильний рядок: повинен містити \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`;\n return `Неправильний ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неправильне число: повинно бути кратним ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нерозпізнаний ключ${issue.keys.length > 1 ? \"і\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неправильний ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Неправильні вхідні дані\";\n case \"invalid_element\":\n return `Неправильне значення у ${issue.origin}`;\n default:\n return `Неправильні вхідні дані`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"حروف\", verb: \"ہونا\" },\n file: { unit: \"بائٹس\", verb: \"ہونا\" },\n array: { unit: \"آئٹمز\", verb: \"ہونا\" },\n set: { unit: \"آئٹمز\", verb: \"ہونا\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ان پٹ\",\n email: \"ای میل ایڈریس\",\n url: \"یو آر ایل\",\n emoji: \"ایموجی\",\n uuid: \"یو یو آئی ڈی\",\n uuidv4: \"یو یو آئی ڈی وی 4\",\n uuidv6: \"یو یو آئی ڈی وی 6\",\n nanoid: \"نینو آئی ڈی\",\n guid: \"جی یو آئی ڈی\",\n cuid: \"سی یو آئی ڈی\",\n cuid2: \"سی یو آئی ڈی 2\",\n ulid: \"یو ایل آئی ڈی\",\n xid: \"ایکس آئی ڈی\",\n ksuid: \"کے ایس یو آئی ڈی\",\n datetime: \"آئی ایس او ڈیٹ ٹائم\",\n date: \"آئی ایس او تاریخ\",\n time: \"آئی ایس او وقت\",\n duration: \"آئی ایس او مدت\",\n ipv4: \"آئی پی وی 4 ایڈریس\",\n ipv6: \"آئی پی وی 6 ایڈریس\",\n cidrv4: \"آئی پی وی 4 رینج\",\n cidrv6: \"آئی پی وی 6 رینج\",\n base64: \"بیس 64 ان کوڈڈ سٹرنگ\",\n base64url: \"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ\",\n json_string: \"جے ایس او این سٹرنگ\",\n e164: \"ای 164 نمبر\",\n jwt: \"جے ڈبلیو ٹی\",\n template_literal: \"ان پٹ\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"نمبر\",\n array: \"آرے\",\n null: \"نل\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `غلط ان پٹ: instanceof ${issue.expected} متوقع تھا، ${received} موصول ہوا`;\n }\n return `غلط ان پٹ: ${expected} متوقع تھا، ${received} موصول ہوا`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `غلط ان پٹ: ${util.stringifyPrimitive(issue.values[0])} متوقع تھا`;\n return `غلط آپشن: ${util.joinValues(issue.values, \"|\")} میں سے ایک متوقع تھا`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کے ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عناصر\"} ہونے متوقع تھے`;\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کا ${adj}${issue.maximum.toString()} ہونا متوقع تھا`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `بہت چھوٹا: ${issue.origin} کے ${adj}${issue.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`;\n }\n return `بہت چھوٹا: ${issue.origin} کا ${adj}${issue.minimum.toString()} ہونا متوقع تھا`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `غلط سٹرنگ: \"${_issue.prefix}\" سے شروع ہونا چاہیے`;\n }\n if (_issue.format === \"ends_with\")\n return `غلط سٹرنگ: \"${_issue.suffix}\" پر ختم ہونا چاہیے`;\n if (_issue.format === \"includes\")\n return `غلط سٹرنگ: \"${_issue.includes}\" شامل ہونا چاہیے`;\n if (_issue.format === \"regex\")\n return `غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`;\n return `غلط ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `غلط نمبر: ${issue.divisor} کا مضاعف ہونا چاہیے`;\n case \"unrecognized_keys\":\n return `غیر تسلیم شدہ کی${issue.keys.length > 1 ? \"ز\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `${issue.origin} میں غلط کی`;\n case \"invalid_union\":\n return \"غلط ان پٹ\";\n case \"invalid_element\":\n return `${issue.origin} میں غلط ویلیو`;\n default:\n return `غلط ان پٹ`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حروف\", verb: \"ہونا\" },\n file: { unit: \"بائٹس\", verb: \"ہونا\" },\n array: { unit: \"آئٹمز\", verb: \"ہونا\" },\n set: { unit: \"آئٹمز\", verb: \"ہونا\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ان پٹ\",\n email: \"ای میل ایڈریس\",\n url: \"یو آر ایل\",\n emoji: \"ایموجی\",\n uuid: \"یو یو آئی ڈی\",\n uuidv4: \"یو یو آئی ڈی وی 4\",\n uuidv6: \"یو یو آئی ڈی وی 6\",\n nanoid: \"نینو آئی ڈی\",\n guid: \"جی یو آئی ڈی\",\n cuid: \"سی یو آئی ڈی\",\n cuid2: \"سی یو آئی ڈی 2\",\n ulid: \"یو ایل آئی ڈی\",\n xid: \"ایکس آئی ڈی\",\n ksuid: \"کے ایس یو آئی ڈی\",\n datetime: \"آئی ایس او ڈیٹ ٹائم\",\n date: \"آئی ایس او تاریخ\",\n time: \"آئی ایس او وقت\",\n duration: \"آئی ایس او مدت\",\n ipv4: \"آئی پی وی 4 ایڈریس\",\n ipv6: \"آئی پی وی 6 ایڈریس\",\n cidrv4: \"آئی پی وی 4 رینج\",\n cidrv6: \"آئی پی وی 6 رینج\",\n base64: \"بیس 64 ان کوڈڈ سٹرنگ\",\n base64url: \"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ\",\n json_string: \"جے ایس او این سٹرنگ\",\n e164: \"ای 164 نمبر\",\n jwt: \"جے ڈبلیو ٹی\",\n template_literal: \"ان پٹ\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"نمبر\",\n array: \"آرے\",\n null: \"نل\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `غلط ان پٹ: instanceof ${issue.expected} متوقع تھا، ${received} موصول ہوا`;\n }\n return `غلط ان پٹ: ${expected} متوقع تھا، ${received} موصول ہوا`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `غلط ان پٹ: ${util.stringifyPrimitive(issue.values[0])} متوقع تھا`;\n return `غلط آپشن: ${util.joinValues(issue.values, \"|\")} میں سے ایک متوقع تھا`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کے ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عناصر\"} ہونے متوقع تھے`;\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کا ${adj}${issue.maximum.toString()} ہونا متوقع تھا`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `بہت چھوٹا: ${issue.origin} کے ${adj}${issue.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`;\n }\n return `بہت چھوٹا: ${issue.origin} کا ${adj}${issue.minimum.toString()} ہونا متوقع تھا`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `غلط سٹرنگ: \"${_issue.prefix}\" سے شروع ہونا چاہیے`;\n }\n if (_issue.format === \"ends_with\")\n return `غلط سٹرنگ: \"${_issue.suffix}\" پر ختم ہونا چاہیے`;\n if (_issue.format === \"includes\")\n return `غلط سٹرنگ: \"${_issue.includes}\" شامل ہونا چاہیے`;\n if (_issue.format === \"regex\")\n return `غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`;\n return `غلط ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `غلط نمبر: ${issue.divisor} کا مضاعف ہونا چاہیے`;\n case \"unrecognized_keys\":\n return `غیر تسلیم شدہ کی${issue.keys.length > 1 ? \"ز\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `${issue.origin} میں غلط کی`;\n case \"invalid_union\":\n return \"غلط ان پٹ\";\n case \"invalid_element\":\n return `${issue.origin} میں غلط ویلیو`;\n default:\n return `غلط ان پٹ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"belgi\", verb: \"bo‘lishi kerak\" },\n file: { unit: \"bayt\", verb: \"bo‘lishi kerak\" },\n array: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n set: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n map: { unit: \"yozuv\", verb: \"bo‘lishi kerak\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"kirish\",\n email: \"elektron pochta manzili\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO sana va vaqti\",\n date: \"ISO sana\",\n time: \"ISO vaqt\",\n duration: \"ISO davomiylik\",\n ipv4: \"IPv4 manzil\",\n ipv6: \"IPv6 manzil\",\n mac: \"MAC manzil\",\n cidrv4: \"IPv4 diapazon\",\n cidrv6: \"IPv6 diapazon\",\n base64: \"base64 kodlangan satr\",\n base64url: \"base64url kodlangan satr\",\n json_string: \"JSON satr\",\n e164: \"E.164 raqam\",\n jwt: \"JWT\",\n template_literal: \"kirish\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"raqam\",\n array: \"massiv\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Noto‘g‘ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n }\n return `Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Noto‘g‘ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Noto‘g‘ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Noto‘g‘ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n if (_issue.format === \"ends_with\")\n return `Noto‘g‘ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n if (_issue.format === \"includes\")\n return `Noto‘g‘ri satr: \"${_issue.includes}\" ni o‘z ichiga olishi kerak`;\n if (_issue.format === \"regex\")\n return `Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n return `Noto‘g‘ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Noto‘g‘ri raqam: ${issue.divisor} ning karralisi bo‘lishi kerak`;\n case \"unrecognized_keys\":\n return `Noma’lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} dagi kalit noto‘g‘ri`;\n case \"invalid_union\":\n return \"Noto‘g‘ri kirish\";\n case \"invalid_element\":\n return `${issue.origin} da noto‘g‘ri qiymat`;\n default:\n return `Noto‘g‘ri kirish`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"belgi\", verb: \"bo‘lishi kerak\" },\n file: { unit: \"bayt\", verb: \"bo‘lishi kerak\" },\n array: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n set: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n map: { unit: \"yozuv\", verb: \"bo‘lishi kerak\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"kirish\",\n email: \"elektron pochta manzili\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO sana va vaqti\",\n date: \"ISO sana\",\n time: \"ISO vaqt\",\n duration: \"ISO davomiylik\",\n ipv4: \"IPv4 manzil\",\n ipv6: \"IPv6 manzil\",\n mac: \"MAC manzil\",\n cidrv4: \"IPv4 diapazon\",\n cidrv6: \"IPv6 diapazon\",\n base64: \"base64 kodlangan satr\",\n base64url: \"base64url kodlangan satr\",\n json_string: \"JSON satr\",\n e164: \"E.164 raqam\",\n jwt: \"JWT\",\n template_literal: \"kirish\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"raqam\",\n array: \"massiv\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Noto‘g‘ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n }\n return `Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Noto‘g‘ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Noto‘g‘ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Noto‘g‘ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n if (_issue.format === \"ends_with\")\n return `Noto‘g‘ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n if (_issue.format === \"includes\")\n return `Noto‘g‘ri satr: \"${_issue.includes}\" ni o‘z ichiga olishi kerak`;\n if (_issue.format === \"regex\")\n return `Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n return `Noto‘g‘ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Noto‘g‘ri raqam: ${issue.divisor} ning karralisi bo‘lishi kerak`;\n case \"unrecognized_keys\":\n return `Noma’lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} dagi kalit noto‘g‘ri`;\n case \"invalid_union\":\n return \"Noto‘g‘ri kirish\";\n case \"invalid_element\":\n return `${issue.origin} da noto‘g‘ri qiymat`;\n default:\n return `Noto‘g‘ri kirish`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"ký tự\", verb: \"có\" },\n file: { unit: \"byte\", verb: \"có\" },\n array: { unit: \"phần tử\", verb: \"có\" },\n set: { unit: \"phần tử\", verb: \"có\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"đầu vào\",\n email: \"địa chỉ email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ngày giờ ISO\",\n date: \"ngày ISO\",\n time: \"giờ ISO\",\n duration: \"khoảng thời gian ISO\",\n ipv4: \"địa chỉ IPv4\",\n ipv6: \"địa chỉ IPv6\",\n cidrv4: \"dải IPv4\",\n cidrv6: \"dải IPv6\",\n base64: \"chuỗi mã hóa base64\",\n base64url: \"chuỗi mã hóa base64url\",\n json_string: \"chuỗi JSON\",\n e164: \"số E.164\",\n jwt: \"JWT\",\n template_literal: \"đầu vào\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"số\",\n array: \"mảng\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Đầu vào không hợp lệ: mong đợi instanceof ${issue.expected}, nhận được ${received}`;\n }\n return `Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Đầu vào không hợp lệ: mong đợi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"phần tử\"}`;\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Quá nhỏ: mong đợi ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Quá nhỏ: mong đợi ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chuỗi không hợp lệ: phải bắt đầu bằng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chuỗi không hợp lệ: phải kết thúc bằng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chuỗi không hợp lệ: phải bao gồm \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} không hợp lệ`;\n }\n case \"not_multiple_of\":\n return `Số không hợp lệ: phải là bội số của ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Khóa không được nhận dạng: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Khóa không hợp lệ trong ${issue.origin}`;\n case \"invalid_union\":\n return \"Đầu vào không hợp lệ\";\n case \"invalid_element\":\n return `Giá trị không hợp lệ trong ${issue.origin}`;\n default:\n return `Đầu vào không hợp lệ`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ký tự\", verb: \"có\" },\n file: { unit: \"byte\", verb: \"có\" },\n array: { unit: \"phần tử\", verb: \"có\" },\n set: { unit: \"phần tử\", verb: \"có\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"đầu vào\",\n email: \"địa chỉ email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ngày giờ ISO\",\n date: \"ngày ISO\",\n time: \"giờ ISO\",\n duration: \"khoảng thời gian ISO\",\n ipv4: \"địa chỉ IPv4\",\n ipv6: \"địa chỉ IPv6\",\n cidrv4: \"dải IPv4\",\n cidrv6: \"dải IPv6\",\n base64: \"chuỗi mã hóa base64\",\n base64url: \"chuỗi mã hóa base64url\",\n json_string: \"chuỗi JSON\",\n e164: \"số E.164\",\n jwt: \"JWT\",\n template_literal: \"đầu vào\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"số\",\n array: \"mảng\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Đầu vào không hợp lệ: mong đợi instanceof ${issue.expected}, nhận được ${received}`;\n }\n return `Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Đầu vào không hợp lệ: mong đợi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"phần tử\"}`;\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Quá nhỏ: mong đợi ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Quá nhỏ: mong đợi ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chuỗi không hợp lệ: phải bắt đầu bằng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chuỗi không hợp lệ: phải kết thúc bằng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chuỗi không hợp lệ: phải bao gồm \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} không hợp lệ`;\n }\n case \"not_multiple_of\":\n return `Số không hợp lệ: phải là bội số của ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Khóa không được nhận dạng: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Khóa không hợp lệ trong ${issue.origin}`;\n case \"invalid_union\":\n return \"Đầu vào không hợp lệ\";\n case \"invalid_element\":\n return `Giá trị không hợp lệ trong ${issue.origin}`;\n default:\n return `Đầu vào không hợp lệ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"àmi\", verb: \"ní\" },\n file: { unit: \"bytes\", verb: \"ní\" },\n array: { unit: \"nkan\", verb: \"ní\" },\n set: { unit: \"nkan\", verb: \"ní\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ẹ̀rọ ìbáwọlé\",\n email: \"àdírẹ́sì ìmẹ́lì\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"àkókò ISO\",\n date: \"ọjọ́ ISO\",\n time: \"àkókò ISO\",\n duration: \"àkókò tó pé ISO\",\n ipv4: \"àdírẹ́sì IPv4\",\n ipv6: \"àdírẹ́sì IPv6\",\n cidrv4: \"àgbègbè IPv4\",\n cidrv6: \"àgbègbè IPv6\",\n base64: \"ọ̀rọ̀ tí a kọ́ ní base64\",\n base64url: \"ọ̀rọ̀ base64url\",\n json_string: \"ọ̀rọ̀ JSON\",\n e164: \"nọ́mbà E.164\",\n jwt: \"JWT\",\n template_literal: \"ẹ̀rọ ìbáwọlé\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nọ́mbà\",\n array: \"akopọ\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue.expected}, àmọ̀ a rí ${received}`;\n }\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Àṣàyàn aṣìṣe: yan ọ̀kan lára ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tó pọ̀ jù: a ní láti jẹ́ pé ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n return `Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue.maximum}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Kéré ju: a ní láti jẹ́ pé ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n return `Kéré ju: a ní láti jẹ́ ${adj}${issue.minimum}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`;\n return `Aṣìṣe: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Bọtìnì àìmọ̀: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Bọtìnì aṣìṣe nínú ${issue.origin}`;\n case \"invalid_union\":\n return \"Ìbáwọlé aṣìṣe\";\n case \"invalid_element\":\n return `Iye aṣìṣe nínú ${issue.origin}`;\n default:\n return \"Ìbáwọlé aṣìṣe\";\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"àmi\", verb: \"ní\" },\n file: { unit: \"bytes\", verb: \"ní\" },\n array: { unit: \"nkan\", verb: \"ní\" },\n set: { unit: \"nkan\", verb: \"ní\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ẹ̀rọ ìbáwọlé\",\n email: \"àdírẹ́sì ìmẹ́lì\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"àkókò ISO\",\n date: \"ọjọ́ ISO\",\n time: \"àkókò ISO\",\n duration: \"àkókò tó pé ISO\",\n ipv4: \"àdírẹ́sì IPv4\",\n ipv6: \"àdírẹ́sì IPv6\",\n cidrv4: \"àgbègbè IPv4\",\n cidrv6: \"àgbègbè IPv6\",\n base64: \"ọ̀rọ̀ tí a kọ́ ní base64\",\n base64url: \"ọ̀rọ̀ base64url\",\n json_string: \"ọ̀rọ̀ JSON\",\n e164: \"nọ́mbà E.164\",\n jwt: \"JWT\",\n template_literal: \"ẹ̀rọ ìbáwọlé\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nọ́mbà\",\n array: \"akopọ\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue.expected}, àmọ̀ a rí ${received}`;\n }\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Àṣàyàn aṣìṣe: yan ọ̀kan lára ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tó pọ̀ jù: a ní láti jẹ́ pé ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n return `Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue.maximum}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Kéré ju: a ní láti jẹ́ pé ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n return `Kéré ju: a ní láti jẹ́ ${adj}${issue.minimum}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`;\n return `Aṣìṣe: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Bọtìnì àìmọ̀: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Bọtìnì aṣìṣe nínú ${issue.origin}`;\n case \"invalid_union\":\n return \"Ìbáwọlé aṣìṣe\";\n case \"invalid_element\":\n return `Iye aṣìṣe nínú ${issue.origin}`;\n default:\n return \"Ìbáwọlé aṣìṣe\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"字符\", verb: \"包含\" },\n file: { unit: \"字节\", verb: \"包含\" },\n array: { unit: \"项\", verb: \"包含\" },\n set: { unit: \"项\", verb: \"包含\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"输入\",\n email: \"电子邮件\",\n url: \"URL\",\n emoji: \"表情符号\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日期时间\",\n date: \"ISO日期\",\n time: \"ISO时间\",\n duration: \"ISO时长\",\n ipv4: \"IPv4地址\",\n ipv6: \"IPv6地址\",\n cidrv4: \"IPv4网段\",\n cidrv6: \"IPv6网段\",\n base64: \"base64编码字符串\",\n base64url: \"base64url编码字符串\",\n json_string: \"JSON字符串\",\n e164: \"E.164号码\",\n jwt: \"JWT\",\n template_literal: \"输入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数字\",\n array: \"数组\",\n null: \"空值(null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `无效输入:期望 instanceof ${issue.expected},实际接收 ${received}`;\n }\n return `无效输入:期望 ${expected},实际接收 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `无效输入:期望 ${util.stringifyPrimitive(issue.values[0])}`;\n return `无效选项:期望以下之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"个元素\"}`;\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `无效字符串:必须以 \"${_issue.prefix}\" 开头`;\n if (_issue.format === \"ends_with\")\n return `无效字符串:必须以 \"${_issue.suffix}\" 结尾`;\n if (_issue.format === \"includes\")\n return `无效字符串:必须包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `无效字符串:必须满足正则表达式 ${_issue.pattern}`;\n return `无效${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `无效数字:必须是 ${issue.divisor} 的倍数`;\n case \"unrecognized_keys\":\n return `出现未知的键(key): ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} 中的键(key)无效`;\n case \"invalid_union\":\n return \"无效输入\";\n case \"invalid_element\":\n return `${issue.origin} 中包含无效值(value)`;\n default:\n return `无效输入`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字符\", verb: \"包含\" },\n file: { unit: \"字节\", verb: \"包含\" },\n array: { unit: \"项\", verb: \"包含\" },\n set: { unit: \"项\", verb: \"包含\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"输入\",\n email: \"电子邮件\",\n url: \"URL\",\n emoji: \"表情符号\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日期时间\",\n date: \"ISO日期\",\n time: \"ISO时间\",\n duration: \"ISO时长\",\n ipv4: \"IPv4地址\",\n ipv6: \"IPv6地址\",\n cidrv4: \"IPv4网段\",\n cidrv6: \"IPv6网段\",\n base64: \"base64编码字符串\",\n base64url: \"base64url编码字符串\",\n json_string: \"JSON字符串\",\n e164: \"E.164号码\",\n jwt: \"JWT\",\n template_literal: \"输入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数字\",\n array: \"数组\",\n null: \"空值(null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `无效输入:期望 instanceof ${issue.expected},实际接收 ${received}`;\n }\n return `无效输入:期望 ${expected},实际接收 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `无效输入:期望 ${util.stringifyPrimitive(issue.values[0])}`;\n return `无效选项:期望以下之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"个元素\"}`;\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `无效字符串:必须以 \"${_issue.prefix}\" 开头`;\n if (_issue.format === \"ends_with\")\n return `无效字符串:必须以 \"${_issue.suffix}\" 结尾`;\n if (_issue.format === \"includes\")\n return `无效字符串:必须包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `无效字符串:必须满足正则表达式 ${_issue.pattern}`;\n return `无效${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `无效数字:必须是 ${issue.divisor} 的倍数`;\n case \"unrecognized_keys\":\n return `出现未知的键(key): ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} 中的键(key)无效`;\n case \"invalid_union\":\n return \"无效输入\";\n case \"invalid_element\":\n return `${issue.origin} 中包含无效值(value)`;\n default:\n return `无效输入`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst util = __importStar(require(\"../core/util.cjs\"));\nconst error = () => {\n const Sizable = {\n string: { unit: \"字元\", verb: \"擁有\" },\n file: { unit: \"位元組\", verb: \"擁有\" },\n array: { unit: \"項目\", verb: \"擁有\" },\n set: { unit: \"項目\", verb: \"擁有\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"輸入\",\n email: \"郵件地址\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 日期時間\",\n date: \"ISO 日期\",\n time: \"ISO 時間\",\n duration: \"ISO 期間\",\n ipv4: \"IPv4 位址\",\n ipv6: \"IPv6 位址\",\n cidrv4: \"IPv4 範圍\",\n cidrv6: \"IPv6 範圍\",\n base64: \"base64 編碼字串\",\n base64url: \"base64url 編碼字串\",\n json_string: \"JSON 字串\",\n e164: \"E.164 數值\",\n jwt: \"JWT\",\n template_literal: \"輸入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無效的輸入值:預期為 instanceof ${issue.expected},但收到 ${received}`;\n }\n return `無效的輸入值:預期為 ${expected},但收到 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無效的輸入值:預期為 ${util.stringifyPrimitive(issue.values[0])}`;\n return `無效的選項:預期為以下其中之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"個元素\"}`;\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `無效的字串:必須以 \"${_issue.prefix}\" 開頭`;\n }\n if (_issue.format === \"ends_with\")\n return `無效的字串:必須以 \"${_issue.suffix}\" 結尾`;\n if (_issue.format === \"includes\")\n return `無效的字串:必須包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `無效的字串:必須符合格式 ${_issue.pattern}`;\n return `無效的 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無效的數字:必須為 ${issue.divisor} 的倍數`;\n case \"unrecognized_keys\":\n return `無法識別的鍵值${issue.keys.length > 1 ? \"們\" : \"\"}:${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin} 中有無效的鍵值`;\n case \"invalid_union\":\n return \"無效的輸入值\";\n case \"invalid_element\":\n return `${issue.origin} 中有無效的值`;\n default:\n return `無效的輸入值`;\n }\n };\n};\nfunction default_1() {\n return {\n localeError: error(),\n };\n}\nmodule.exports = exports.default;\nimport * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字元\", verb: \"擁有\" },\n file: { unit: \"位元組\", verb: \"擁有\" },\n array: { unit: \"項目\", verb: \"擁有\" },\n set: { unit: \"項目\", verb: \"擁有\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"輸入\",\n email: \"郵件地址\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 日期時間\",\n date: \"ISO 日期\",\n time: \"ISO 時間\",\n duration: \"ISO 期間\",\n ipv4: \"IPv4 位址\",\n ipv6: \"IPv6 位址\",\n cidrv4: \"IPv4 範圍\",\n cidrv6: \"IPv6 範圍\",\n base64: \"base64 編碼字串\",\n base64url: \"base64url 編碼字串\",\n json_string: \"JSON 字串\",\n e164: \"E.164 數值\",\n jwt: \"JWT\",\n template_literal: \"輸入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無效的輸入值:預期為 instanceof ${issue.expected},但收到 ${received}`;\n }\n return `無效的輸入值:預期為 ${expected},但收到 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無效的輸入值:預期為 ${util.stringifyPrimitive(issue.values[0])}`;\n return `無效的選項:預期為以下其中之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"個元素\"}`;\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `無效的字串:必須以 \"${_issue.prefix}\" 開頭`;\n }\n if (_issue.format === \"ends_with\")\n return `無效的字串:必須以 \"${_issue.suffix}\" 結尾`;\n if (_issue.format === \"includes\")\n return `無效的字串:必須包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `無效的字串:必須符合格式 ${_issue.pattern}`;\n return `無效的 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無效的數字:必須為 ${issue.divisor} 的倍數`;\n case \"unrecognized_keys\":\n return `無法識別的鍵值${issue.keys.length > 1 ? \"們\" : \"\"}:${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin} 中有無效的鍵值`;\n case \"invalid_union\":\n return \"無效的輸入值\";\n case \"invalid_element\":\n return `${issue.origin} 中有無效的值`;\n default:\n return `無效的輸入值`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n{\n \"name\": \"peardata\",\n \"version\": \"0.1.0\",\n \"description\": \"Decentralized P2P real-time monitoring — PearMonitor agent + Pear desktop + REST v3\",\n \"type\": \"module\",\n \"license\": \"AGPL-3.0-only\",\n \"main\": \"index.js\",\n \"productName\": \"PearData\",\n \"engines\": {\n \"node\": \">=20\"\n },\n \"pear\": {\n \"pre\": \"pear-electron/pre\",\n \"name\": \"peardata\",\n \"gui\": {\n \"main\": \"index.html\",\n \"backgroundColor\": \"#0a0c10\",\n \"height\": 860,\n \"width\": 1280,\n \"minWidth\": 900,\n \"minHeight\": 560,\n \"resizable\": true,\n \"movable\": true,\n \"minimizable\": true,\n \"maximizable\": true,\n \"closable\": true,\n \"hasShadow\": true\n },\n \"links\": [\n \"http://*\",\n \"https://*\",\n \"ws://*\",\n \"wss://*\"\n ],\n \"stage\": {\n \"entrypoints\": [\n \"/qvac/worker.pear.entry.mjs\"\n ]\n }\n },\n \"scripts\": {\n \"dev\": \"pear run -d .\",\n \"start\": \"pear run -d .\",\n \"start:server\": \"node bin/peardata-server.mjs\",\n \"server\": \"node bin/peardata-server.mjs\",\n \"start:server:bin\": \"node bin/peardata-server.mjs\",\n \"test\": \"brittle-node test/*.test.js\",\n \"test:integration\": \"brittle-node test/integration.test.js\",\n \"healthcheck\": \"node scripts/healthcheck.js\",\n \"soak\": \"node scripts/soak.js\",\n \"mint-invite\": \"node scripts/mint-invite.js\",\n \"build:db\": \"node scripts/build-db.js\",\n \"build:native\": \"node scripts/build-native-helpers.cjs\",\n \"rename\": \"bash scripts/rename-template.sh\",\n \"release:notes\": \"node -e \\\"console.log('See docs/RELEASE.md')\\\"\",\n \"build:client-bundle\": \"node scripts/build-client-bundle.cjs\",\n \"build:qvac-worker\": \"node scripts/build-qvac-worker.cjs\",\n \"ensure:qvac-bare-runtimes\": \"node scripts/ensure-qvac-bare-runtimes.cjs --all\",\n \"start:client\": \"npm run build:client-bundle && electron electron/main.cjs\",\n \"package:client\": \"electron-forge package\",\n \"make\": \"node scripts/make.cjs both\",\n \"make:server\": \"node scripts/make.cjs server\",\n \"make:client\": \"node scripts/make.cjs client\",\n \"make:all\": \"node scripts/make.cjs all\",\n \"make:bin\": \"node scripts/bare-standalone.cjs\",\n \"make:server:linux-x64\": \"node scripts/bare-standalone.cjs --product server --host linux-x64\",\n \"make:server:linux-arm64\": \"node scripts/bare-standalone.cjs --product server --host linux-arm64\",\n \"make:client:linux-x64\": \"electron-forge package --platform linux --arch x64\",\n \"make:client:linux-arm64\": \"electron-forge package --platform linux --arch arm64\",\n \"make:client:darwin-arm64\": \"electron-forge package --platform darwin --arch arm64\",\n \"make:client:darwin-x64\": \"electron-forge package --platform darwin --arch x64\",\n \"make:client:win32-x64\": \"electron-forge package --platform win32 --arch x64\",\n \"make:client:win32-arm64\": \"electron-forge package --platform win32 --arch arm64\",\n \"sign:macos\": \"node scripts/sign-macos-app.cjs\",\n \"release:rolling\": \"bash scripts/gitea-rolling-release.sh\",\n \"install:help\": \"bash scripts/install.sh --help\"\n },\n \"dependencies\": {\n \"@qvac/sdk\": \"^0.16.0\",\n \"b4a\": \"^1.8.1\",\n \"bare-assert\": \"^1.1.0\",\n \"bare-buffer\": \"^3.3.1\",\n \"bare-bundle-id\": \"^1.0.0\",\n \"bare-console\": \"^6.0.1\",\n \"bare-crypto\": \"^1.15.3\",\n \"bare-dgram\": \"^1.0.1\",\n \"bare-dns\": \"^2.1.4\",\n \"bare-events\": \"^2.9.1\",\n \"bare-fs\": \"^4.7.4\",\n \"bare-http1\": \"^4.5.7\",\n \"bare-https\": \"^3.0.0\",\n \"bare-module\": \"^6.1.2\",\n \"bare-module-traverse\": \"^1.0.0\",\n \"bare-net\": \"^2.3.2\",\n \"bare-node-runtime\": \"^1.5.0\",\n \"bare-os\": \"^3.9.3\",\n \"bare-pack\": \"^1.0.0\",\n \"bare-path\": \"^3.1.1\",\n \"bare-performance\": \"^2.0.0\",\n \"bare-process\": \"^4.5.1\",\n \"bare-querystring\": \"^1.0.0\",\n \"bare-runtime\": \"^1.30.3\",\n \"bare-stream\": \"^2.7.0\",\n \"bare-string-decoder\": \"^1.0.0\",\n \"bare-subprocess\": \"^5.2.3\",\n \"bare-timers\": \"^3.0.0\",\n \"bare-tls\": \"^3.0.0\",\n \"bare-tty\": \"^5.0.0\",\n \"bare-url\": \"^2.4.5\",\n \"bare-utils\": \"^1.5.1\",\n \"bare-worker\": \"^4.0.0\",\n \"bare-zlib\": \"^1.3.1\",\n \"compact-encoding\": \"^3.3.0\",\n \"corestore\": \"^7.11.1\",\n \"dotenv\": \"^17.4.2\",\n \"graceful-goodbye\": \"^1.3.3\",\n \"hypercore-crypto\": \"^3.7.0\",\n \"hypercore-id-encoding\": \"^1.3.0\",\n \"hyperdb\": \"^6.7.0\",\n \"hyperdht\": \"^6.33.0\",\n \"hyperschema\": \"^1.21.0\",\n \"hyperswarm\": \"^4.17.0\",\n \"pear-bridge\": \"^1.2.5\",\n \"pear-electron\": \"^1.7.28\",\n \"pear-pipe\": \"^1.0.6\",\n \"pear-run\": \"^1.0.8\",\n \"protomux\": \"^3.11.0\",\n \"protomux-rpc\": \"^1.10.0\",\n \"ready-resource\": \"^1.2.0\",\n \"safety-catch\": \"^1.0.3\",\n \"which-runtime\": \"^1.4.0\",\n \"z32\": \"^1.1.0\"\n },\n \"optionalDependencies\": {\n \"bare-runtime-darwin-arm64\": \"^1.30.3\",\n \"bare-runtime-darwin-x64\": \"1.30.3\",\n \"bare-runtime-linux-arm64\": \"1.30.3\",\n \"bare-runtime-linux-x64\": \"1.30.3\",\n \"bare-runtime-win32-x64\": \"1.30.3\"\n },\n \"devDependencies\": {\n \"@electron-forge/cli\": \"^7.11.2\",\n \"@electron-forge/maker-zip\": \"^7.11.2\",\n \"@electron-forge/plugin-base\": \"^7.11.2\",\n \"@electron/get\": \"^3.1.0\",\n \"bare-build\": \"^1.0.2\",\n \"brittle\": \"^4.1.0\",\n \"electron\": \"^33.4.11\",\n \"esbuild\": \"^0.25.0\",\n \"pear-interface\": \"^1.1.0\"\n },\n \"imports\": {\n \"assert\": {\n \"bare\": \"bare-assert\",\n \"default\": \"assert\"\n },\n \"node:assert\": {\n \"bare\": \"bare-assert\",\n \"default\": \"assert\"\n },\n \"assert/strict\": {\n \"bare\": \"bare-assert/strict\",\n \"default\": \"assert/strict\"\n },\n \"node:assert/strict\": {\n \"bare\": \"bare-assert/strict\",\n \"default\": \"assert/strict\"\n },\n \"buffer\": {\n \"bare\": \"bare-buffer\",\n \"default\": \"buffer\"\n },\n \"node:buffer\": {\n \"bare\": \"bare-buffer\",\n \"default\": \"buffer\"\n },\n \"child_process\": {\n \"bare\": \"bare-subprocess\",\n \"default\": \"child_process\"\n },\n \"node:child_process\": {\n \"bare\": \"bare-subprocess\",\n \"default\": \"child_process\"\n },\n \"console\": {\n \"bare\": \"bare-console\",\n \"default\": \"console\"\n },\n \"node:console\": {\n \"bare\": \"bare-console\",\n \"default\": \"console\"\n },\n \"crypto\": {\n \"bare\": \"bare-crypto\",\n \"default\": \"crypto\"\n },\n \"node:crypto\": {\n \"bare\": \"bare-crypto\",\n \"default\": \"crypto\"\n },\n \"dgram\": {\n \"bare\": \"bare-dgram\",\n \"default\": \"dgram\"\n },\n \"node:dgram\": {\n \"bare\": \"bare-dgram\",\n \"default\": \"dgram\"\n },\n \"dns\": {\n \"bare\": \"bare-dns\",\n \"default\": \"dns\"\n },\n \"node:dns\": {\n \"bare\": \"bare-dns\",\n \"default\": \"dns\"\n },\n \"dns/promises\": {\n \"bare\": \"bare-dns/promises\",\n \"default\": \"dns/promises\"\n },\n \"node:dns/promises\": {\n \"bare\": \"bare-dns/promises\",\n \"default\": \"dns/promises\"\n },\n \"events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n },\n \"node:events\": {\n \"bare\": \"bare-events\",\n \"default\": \"events\"\n },\n \"fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"node:fs\": {\n \"bare\": \"bare-fs\",\n \"default\": \"fs\"\n },\n \"fs/promises\": {\n \"bare\": \"bare-fs/promises\",\n \"default\": \"fs/promises\"\n },\n \"node:fs/promises\": {\n \"bare\": \"bare-fs/promises\",\n \"default\": \"fs/promises\"\n },\n \"http\": {\n \"bare\": \"bare-http1\",\n \"default\": \"http\"\n },\n \"node:http\": {\n \"bare\": \"bare-http1\",\n \"default\": \"http\"\n },\n \"https\": {\n \"bare\": \"bare-https\",\n \"default\": \"https\"\n },\n \"node:https\": {\n \"bare\": \"bare-https\",\n \"default\": \"https\"\n },\n \"module\": {\n \"bare\": \"bare-module\",\n \"default\": \"module\"\n },\n \"node:module\": {\n \"bare\": \"bare-module\",\n \"default\": \"module\"\n },\n \"net\": {\n \"bare\": \"bare-net\",\n \"default\": \"net\"\n },\n \"node:net\": {\n \"bare\": \"bare-net\",\n \"default\": \"net\"\n },\n \"os\": {\n \"bare\": \"bare-os\",\n \"default\": \"os\"\n },\n \"node:os\": {\n \"bare\": \"bare-os\",\n \"default\": \"os\"\n },\n \"path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n },\n \"node:path\": {\n \"bare\": \"bare-path\",\n \"default\": \"path\"\n },\n \"path/posix\": {\n \"bare\": \"bare-path/posix\",\n \"default\": \"path/posix\"\n },\n \"node:path/posix\": {\n \"bare\": \"bare-path/posix\",\n \"default\": \"path/posix\"\n },\n \"path/win32\": {\n \"bare\": \"bare-path/win32\",\n \"default\": \"path/win32\"\n },\n \"node:path/win32\": {\n \"bare\": \"bare-path/win32\",\n \"default\": \"path/win32\"\n },\n \"perf_hooks\": {\n \"bare\": \"bare-performance\",\n \"default\": \"perf_hooks\"\n },\n \"node:perf_hooks\": {\n \"bare\": \"bare-performance\",\n \"default\": \"perf_hooks\"\n },\n \"process\": {\n \"bare\": \"bare-process\",\n \"default\": \"process\"\n },\n \"node:process\": {\n \"bare\": \"bare-process\",\n \"default\": \"process\"\n },\n \"querystring\": {\n \"bare\": \"bare-querystring\",\n \"default\": \"querystring\"\n },\n \"node:querystring\": {\n \"bare\": \"bare-querystring\",\n \"default\": \"querystring\"\n },\n \"stream\": {\n \"bare\": \"bare-stream\",\n \"default\": \"stream\"\n },\n \"node:stream\": {\n \"bare\": \"bare-stream\",\n \"default\": \"stream\"\n },\n \"stream/consumers\": {\n \"bare\": \"bare-stream/consumers\",\n \"default\": \"stream/consumers\"\n },\n \"node:stream/consumers\": {\n \"bare\": \"bare-stream/consumers\",\n \"default\": \"stream/consumers\"\n },\n \"stream/promises\": {\n \"bare\": \"bare-stream/promises\",\n \"default\": \"stream/promises\"\n },\n \"node:stream/promises\": {\n \"bare\": \"bare-stream/promises\",\n \"default\": \"stream/promises\"\n },\n \"stream/web\": {\n \"bare\": \"bare-stream/web\",\n \"default\": \"stream/web\"\n },\n \"node:stream/web\": {\n \"bare\": \"bare-stream/web\",\n \"default\": \"stream/web\"\n },\n \"string_decoder\": {\n \"bare\": \"bare-string-decoder\",\n \"default\": \"string_decoder\"\n },\n \"node:string_decoder\": {\n \"bare\": \"bare-string-decoder\",\n \"default\": \"string_decoder\"\n },\n \"timers\": {\n \"bare\": \"bare-timers\",\n \"default\": \"timers\"\n },\n \"node:timers\": {\n \"bare\": \"bare-timers\",\n \"default\": \"timers\"\n },\n \"timers/promises\": {\n \"bare\": \"bare-timers/promises\",\n \"default\": \"timers/promises\"\n },\n \"node:timers/promises\": {\n \"bare\": \"bare-timers/promises\",\n \"default\": \"timers/promises\"\n },\n \"tls\": {\n \"bare\": \"bare-tls\",\n \"default\": \"tls\"\n },\n \"node:tls\": {\n \"bare\": \"bare-tls\",\n \"default\": \"tls\"\n },\n \"tty\": {\n \"bare\": \"bare-tty\",\n \"default\": \"tty\"\n },\n \"node:tty\": {\n \"bare\": \"bare-tty\",\n \"default\": \"tty\"\n },\n \"url\": {\n \"bare\": \"bare-url\",\n \"default\": \"url\"\n },\n \"node:url\": {\n \"bare\": \"bare-url\",\n \"default\": \"url\"\n },\n \"util\": {\n \"bare\": \"bare-utils\",\n \"default\": \"util\"\n },\n \"node:util\": {\n \"bare\": \"bare-utils\",\n \"default\": \"util\"\n },\n \"util/types\": {\n \"bare\": \"bare-utils/types\",\n \"default\": \"util/types\"\n },\n \"node:util/types\": {\n \"bare\": \"bare-utils/types\",\n \"default\": \"util/types\"\n },\n \"worker_threads\": {\n \"bare\": \"bare-worker\",\n \"default\": \"worker_threads\"\n },\n \"node:worker_threads\": {\n \"bare\": \"bare-worker\",\n \"default\": \"worker_threads\"\n },\n \"zlib\": {\n \"bare\": \"bare-zlib\",\n \"default\": \"zlib\"\n },\n \"node:zlib\": {\n \"bare\": \"bare-zlib\",\n \"default\": \"zlib\"\n },\n \"cluster\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"cluster\"\n },\n \"node:cluster\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"cluster\"\n },\n \"constants\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"constants\"\n },\n \"node:constants\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"constants\"\n },\n \"domain\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"domain\"\n },\n \"node:domain\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"domain\"\n },\n \"http2\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"http2\"\n },\n \"node:http2\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"http2\"\n },\n \"sea\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"sea\"\n },\n \"node:sea\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"sea\"\n },\n \"sys\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"sys\"\n },\n \"node:sys\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"sys\"\n },\n \"test\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"test\"\n },\n \"node:test\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"test\"\n },\n \"test/reporters\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"test/reporters\"\n },\n \"node:test/reporters\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"test/reporters\"\n },\n \"trace_events\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"trace_events\"\n },\n \"node:trace_events\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"trace_events\"\n },\n \"wasi\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"wasi\"\n },\n \"node:wasi\": {\n \"bare\": \"bare-node-runtime/unsupported\",\n \"default\": \"wasi\"\n },\n \"fs/*\": {\n \"bare\": \"bare-fs/*\",\n \"default\": \"fs/*\"\n },\n \"node:fs/*\": {\n \"bare\": \"bare-fs/*\",\n \"default\": \"fs/*\"\n }\n }\n}\n/**\n * QVAC SDK Worker Entry (auto-generated)\n * Generated by: @qvac/sdk/commands bundleSdk\n * Plugins: 1\n *\n* - @qvac/sdk/llamacpp-completion/plugin\n */\n\nimport { initializeWorkerCore, ensureRPCSetup } from \"file:///Users/raven/dev/peardata/node_modules/@qvac/sdk/dist/server/worker-core.js\";\nimport { registerPlugin } from \"file:///Users/raven/dev/peardata/node_modules/@qvac/sdk/dist/server/plugins/index.js\";\nimport { getServerLogger } from \"file:///Users/raven/dev/peardata/node_modules/@qvac/sdk/dist/logging/index.js\";\n\nimport { llmPlugin } from \"file:///Users/raven/dev/peardata/node_modules/@qvac/sdk/dist/server/bare/plugins/llamacpp-completion/plugin.js\";\n\nconst { hasRPCConfig } = initializeWorkerCore();\n\nconst logger = getServerLogger();\nlogger.info(\"🐻 QVAC Worker (custom bundle)\");\nlogger.info(\"📦 Plugins: 1\");\n\nregisterPlugin(llmPlugin);\n\n// Auto-setup RPC if config present\nif (hasRPCConfig) {\n ensureRPCSetup();\n}\n"